@firestitch/report 18.17.3 → 18.18.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 (34) hide show
  1. package/app/reports/api-error-message.d.ts +1 -0
  2. package/app/reports/data/report.data.d.ts +8 -0
  3. package/app/reports/dialogs/report-package-import/report-package-import.component.d.ts +37 -0
  4. package/app/reports/dialogs/report-settings/report-settings.component.d.ts +2 -0
  5. package/app/reports/interfaces/report-package-check.interface.d.ts +21 -0
  6. package/app/reports/interfaces/report-package-finding-severity.type.d.ts +1 -0
  7. package/app/reports/interfaces/report-package-finding.interface.d.ts +7 -0
  8. package/app/reports/interfaces/report-package-import-response.interface.d.ts +6 -0
  9. package/app/reports/interfaces/report-package-imported-report.interface.d.ts +4 -0
  10. package/app/reports/interfaces/report.interface.d.ts +1 -0
  11. package/app/reports/views/report/fs-ai-report.component.d.ts +2 -1
  12. package/app/reports/views/reports/fs-ai-reports.component.d.ts +4 -0
  13. package/esm2022/app/reports/api-error-message.mjs +8 -0
  14. package/esm2022/app/reports/data/report.data.mjs +37 -1
  15. package/esm2022/app/reports/dialogs/report-package-import/report-package-import.component.mjs +144 -0
  16. package/esm2022/app/reports/dialogs/report-settings/report-settings.component.mjs +13 -11
  17. package/esm2022/app/reports/interfaces/report-package-check.interface.mjs +2 -0
  18. package/esm2022/app/reports/interfaces/report-package-finding-severity.type.mjs +2 -0
  19. package/esm2022/app/reports/interfaces/report-package-finding.interface.mjs +2 -0
  20. package/esm2022/app/reports/interfaces/report-package-import-response.interface.mjs +2 -0
  21. package/esm2022/app/reports/interfaces/report-package-imported-report.interface.mjs +2 -0
  22. package/esm2022/app/reports/interfaces/report.interface.mjs +1 -1
  23. package/esm2022/app/reports/tile-loads.mjs +6 -9
  24. package/esm2022/app/reports/views/report/fs-ai-report.component.mjs +18 -10
  25. package/esm2022/app/reports/views/reports/fs-ai-reports.component.mjs +56 -9
  26. package/esm2022/public_api.mjs +6 -1
  27. package/fesm2022/{firestitch-report-echarts-z76sZHp7.mjs → firestitch-report-echarts-qh_mqik9.mjs} +2 -2
  28. package/fesm2022/{firestitch-report-echarts-z76sZHp7.mjs.map → firestitch-report-echarts-qh_mqik9.mjs.map} +1 -1
  29. package/fesm2022/{firestitch-report-firestitch-report-DYs6aHtD.mjs → firestitch-report-firestitch-report-D-WG_G5d.mjs} +279 -66
  30. package/fesm2022/firestitch-report-firestitch-report-D-WG_G5d.mjs.map +1 -0
  31. package/fesm2022/firestitch-report.mjs +1 -1
  32. package/package.json +1 -1
  33. package/public_api.d.ts +5 -0
  34. package/fesm2022/firestitch-report-firestitch-report-DYs6aHtD.mjs.map +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhY2thZ2UtY2hlY2suaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2ludGVyZmFjZXMvcmVwb3J0LXBhY2thZ2UtY2hlY2suaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXBvcnRQYWNrYWdlRmluZGluZyB9IGZyb20gJy4vcmVwb3J0LXBhY2thZ2UtZmluZGluZy5pbnRlcmZhY2UnO1xuXG5cbi8vIFdoYXQgdGhlIHNlcnZlciBmb3VuZCBpbiBhIHJlcG9ydCBwYWNrYWdlIGJlZm9yZSBhbnl0aGluZyBpcyB3cml0dGVuLCBhbmRcbi8vIGFnYWluIG9uIHRoZSBpbXBvcnQuIGB2YWxpZGAgaXMgdHJ1ZSB3aGVuIG5vIGZpbmRpbmcgaXMgYW4gZXJyb3IuIGBuYW1lYCxcbi8vIGBmb2xkZXJQYXRoYCwgYHNvdXJjZWAgYW5kIGBjb3VudHNgIGFyZSBudWxsIChvciBlbXB0eSkgd2hlbiB0aGUgYXJjaGl2ZVxuLy8gY291bGQgbm90IGJlIHJlYWQuXG4vL1xuLy8gYGZvbGRlclBhdGhgIGlzIHRoZSBmb2xkZXIgdGhlIHJlcG9ydCB3YXMgZmlsZWQgaW4gd2hlcmUgaXQgd2FzIGV4cG9ydGVkLFxuLy8gZnJvbSB0aGUgdG9wLiBgcmVwb3J0Rm9sZGVySWRgIGlzIHdoZXJlIHRoZSBpbXBvcnQgcHV0cyBpdCBoZXJlOiB0aGUgZm9sZGVyXG4vLyBvbiB0aGlzIHNlcnZlciBhdCB0aGF0IHBhdGgsIG9yIG51bGwgZm9yIHRoZSB0b3AgbGV2ZWwgd2hlbiBhbnkgbGV2ZWwgb2YgaXRcbi8vIGlzIG1pc3NpbmcgKGFuIGluZm8gZmluZGluZyB0aGVuIHNheXMgc28pLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWNrYWdlQ2hlY2sge1xuICB2YWxpZDogYm9vbGVhbjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgZm9sZGVyUGF0aDogc3RyaW5nW10gfCBudWxsO1xuICByZXBvcnRGb2xkZXJJZDogbnVtYmVyIHwgbnVsbDtcbiAgLy8gVGhlIHNlcnZlciB0aGUgcGFja2FnZSB3YXMgZXhwb3J0ZWQgZnJvbS4gZXhwb3J0ZWRBdCBpcyBJU08gODYwMSBhbmRcbiAgLy8gZXhwb3J0ZWRCeSBpcyB0aGUgYWNjb3VudCdzIGRpc3BsYXkgbmFtZS5cbiAgc291cmNlOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgZW52aXJvbm1lbnQ6IHN0cmluZztcbiAgICBleHBvcnRlZEF0OiBzdHJpbmc7XG4gICAgZXhwb3J0ZWRCeTogc3RyaW5nO1xuICB9IHwgbnVsbDtcbiAgY291bnRzOiB7XG4gICAgcGFnZXM6IG51bWJlcjtcbiAgICBjb21wb25lbnRzOiBudW1iZXI7XG4gICAgZmlsdGVyR3JvdXBzOiBudW1iZXI7XG4gICAgZmlsdGVyczogbnVtYmVyO1xuICAgIGFzc2V0czogbnVtYmVyO1xuICB9IHwgbnVsbDtcbiAgZmluZGluZ3M6IFJlcG9ydFBhY2thZ2VGaW5kaW5nW107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhY2thZ2UtZmluZGluZy1zZXZlcml0eS50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9yZXBvcnRzL2ludGVyZmFjZXMvcmVwb3J0LXBhY2thZ2UtZmluZGluZy1zZXZlcml0eS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBIb3cgbXVjaCBhIHJlcG9ydCBwYWNrYWdlIGNoZWNrIGZpbmRpbmcgbWF0dGVyczogYW4gJ2Vycm9yJyBibG9ja3MgdGhlXG4vLyBpbXBvcnQsIGEgJ3dhcm5pbmcnIGhhcyB0byBiZSBhY2NlcHRlZCBiZWZvcmUgaXQsIGFuZCAnaW5mbycgaXMgb25seSBzaG93bi5cbmV4cG9ydCB0eXBlIFJlcG9ydFBhY2thZ2VGaW5kaW5nU2V2ZXJpdHkgPSAnZXJyb3InIHwgJ3dhcm5pbmcnIHwgJ2luZm8nO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhY2thZ2UtZmluZGluZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3JlcG9ydHMvaW50ZXJmYWNlcy9yZXBvcnQtcGFja2FnZS1maW5kaW5nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3J0UGFja2FnZUZpbmRpbmdTZXZlcml0eSB9IGZyb20gJy4vcmVwb3J0LXBhY2thZ2UtZmluZGluZy1zZXZlcml0eS50eXBlJztcblxuXG4vLyBPbmUgdGhpbmcgYSByZXBvcnQgcGFja2FnZSBjaGVjayBmb3VuZC4gYGNvZGVgIGlzIGEgc3RhYmxlIGRvdHRlZCBuYW1lXG4vLyAoJ2NvbXBvbmVudC5jb25maWdfaW52YWxpZCcpLCBgbG9jYXRpb25gIHNheXMgd2hlcmUgaW4gdGhlIHJlcG9ydCBpdCBpc1xuLy8gKCdQYWdlIDIg4oC6IFJldmVudWUgYnkgbW9udGgnLCBvciBudWxsIGZvciB0aGUgcGFja2FnZSBhcyBhIHdob2xlKSBhbmRcbi8vIGBtZXNzYWdlYCBzYXlzIHdoYXQgaXMgd3JvbmcgaW4gcGxhaW4gbGFuZ3VhZ2UuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhY2thZ2VGaW5kaW5nIHtcbiAgc2V2ZXJpdHk6IFJlcG9ydFBhY2thZ2VGaW5kaW5nU2V2ZXJpdHk7XG4gIGNvZGU6IHN0cmluZztcbiAgbG9jYXRpb246IHN0cmluZyB8IG51bGw7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhY2thZ2UtaW1wb3J0LXJlc3BvbnNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC1wYWNrYWdlLWltcG9ydC1yZXNwb25zZS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydFBhY2thZ2VDaGVjayB9IGZyb20gJy4vcmVwb3J0LXBhY2thZ2UtY2hlY2suaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydFBhY2thZ2VJbXBvcnRlZFJlcG9ydCB9IGZyb20gJy4vcmVwb3J0LXBhY2thZ2UtaW1wb3J0ZWQtcmVwb3J0LmludGVyZmFjZSc7XG5cblxuLy8gV2hhdCBhbiBpbXBvcnQgYW5zd2VyczogdGhlIHJlcG9ydCBpdCBjcmVhdGVkLCBhbmQgdGhlIGNoZWNrIGl0IHJlcGVhdGVkXG4vLyBiZWZvcmUgd3JpdGluZyBhbnl0aGluZy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0UGFja2FnZUltcG9ydFJlc3BvbnNlIHtcbiAgcmVwb3J0OiBSZXBvcnRQYWNrYWdlSW1wb3J0ZWRSZXBvcnQ7XG4gIGNoZWNrOiBSZXBvcnRQYWNrYWdlQ2hlY2s7XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXBhY2thZ2UtaW1wb3J0ZWQtcmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC1wYWNrYWdlLWltcG9ydGVkLXJlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBuZXcgcmVwb3J0IGFuIGltcG9ydCBjcmVhdGVkLiBBbiBpbXBvcnQgbmV2ZXIgdXBkYXRlcyBvciByZXBsYWNlcyBhXG4vLyByZXBvcnQsIHNvIHRoaXMgaXMgYWx3YXlzIGEgcmVwb3J0IHRoYXQgZGlkIG5vdCBleGlzdCBiZWZvcmUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhY2thZ2VJbXBvcnRlZFJlcG9ydCB7XG4gIHJlcG9ydElkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbn1cbiJdfQ==
@@ -27,4 +27,4 @@ export var ReportState;
27
27
  ReportState["Active"] = "active";
28
28
  ReportState["Deleted"] = "deleted";
29
29
  })(ReportState || (ReportState = {}));
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQTJUbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFtdEJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBHcmlkTGF5b3V0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5cbmltcG9ydCB7IFJlcG9ydENoYW5nZVBvbGFyaXR5IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYW5nZS1wb2xhcml0eS5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0Q29sb3IgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtY29sb3IuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydERhdGFMYWJlbHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0YS1sYWJlbHMuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydERhdGVMYWJlbCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFydC1kYXRlLWxhYmVsLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnRMaW5lU3R5bGUgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtbGluZS1zdHlsZS5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TWFya1N0YXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtbWFyay1zdGF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TGlzdENvbHVtbkZvcm1hdCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1saXN0LWNvbHVtbi1mb3JtYXQuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnROdW1iZXJVbml0cyB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1udW1iZXItdW5pdHMuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRWYWx1ZUZvcm1hdCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC12YWx1ZS1mb3JtYXQuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRWYWx1ZUZvcm11bGEgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybXVsYS5lbnVtJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RGF0YUFwcGxpZWQgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWFwcGxpZWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFEcmlsbCB9IGZyb20gJy4vY29tcG9uZW50LWRhdGEtZHJpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydERyaWxsU3RlcCB9IGZyb20gJy4vcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb25maWcgfSBmcm9tICcuL3JlcG9ydC1ncmlkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Vmlld2VyRmVhdHVyZSB9IGZyb20gJy4vcmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUnO1xuXG4vLyBBIEJDUCA0NyBsYW5ndWFnZSB0YWcgbmFtaW5nIGhvdyBudW1iZXJzIGFuZCBkYXRlcyBhcmUgd3JpdHRlbiwgZS5nLiAnZnItQ0EnLlxuLy8gVGhlIHNldCBpcyBvcGVuICh0aGUgc2VydmVyJ3MgcHJvdmlkZXIgZGVjaWRlcyB3aGljaCBpdCBvZmZlcnMpLCBzbyB0aGlzIGlzIGFcbi8vIG5hbWVkIGFsaWFzIHJhdGhlciB0aGFuIGEgdW5pb24uXG5leHBvcnQgdHlwZSBSZXBvcnRMb2NhbGVUYWcgPSBzdHJpbmc7XG5cbi8vIEFuIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUsIGUuZy4gJ0NBRCcuIE9wZW4gZm9yIHRoZSBzYW1lIHJlYXNvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydEN1cnJlbmN5Q29kZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIElBTkEgem9uZSAoZS5nLiBBbWVyaWNhL05ld19Zb3JrKS4gbnVsbCA9IHRoZVxuICAvLyByZXBvcnQgZm9sbG93cyB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0IHJlcG9ydGluZyB6b25lLlxuICB0aW1lem9uZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHpvbmUgZXZlcnkgZGF0ZSBmaWx0ZXIsIHRpbWUgYnVja2V0IGFuZCBkYXRlIGNlbGwgb2YgdGhpcyByZXBvcnQgdXNlcy5cbiAgLy8gUmVzb2x2ZWQgc2VydmVyLXNpZGU7IHRoZSBzYW1lIGZvciBldmVyeSB2aWV3ZXIsIGV4cG9ydCBhbmQgdGhlIGFzc2lzdGFudC5cbiAgLy8gT3B0aW9uYWwgb25seSBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgdGhlblxuICAvLyBmYWxscyBiYWNrIHRvIHRoZSByZXBvcnQncyBvd24gYHRpbWV6b25lYCwgdGhlbiB0aGUgYnJvd3NlcidzIHpvbmUuIFJlc29sdmVcbiAgLy8gdGhlIHpvbmUgZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVSZXBvcnRUaW1lem9uZSgpIChmb3JtYXQudHMpOyByZWFkIHRoZVxuICAvLyBmaWVsZCBkaXJlY3RseSBvbmx5IHRvIGNoZWNrIHdoZXRoZXIgdGhlIHNlcnZlciBzZW50IGl0LlxuICBlZmZlY3RpdmVUaW1lem9uZT86IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgbG9jYWxlLiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBsb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWcgfCBudWxsO1xuICAvLyBUaGUgbG9jYWxlIGV2ZXJ5IG51bWJlciBhbmQgZGF0ZSBvZiB0aGlzIHJlcG9ydCBpcyB3cml0dGVuIGluLCByZXNvbHZlZFxuICAvLyBzZXJ2ZXItc2lkZSAodGhlIHJlcG9ydCdzIG93biwgZWxzZSB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0LCBlbHNlXG4gIC8vIGVuLVVTKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMsIHdob3NlIHJlcG9ydHMgdGhlbiByZWFkIGVuLVVTLiBSZXNvbHZlIGl0XG4gIC8vIGZvciByZW5kZXJpbmcgdGhyb3VnaCByZXNvbHZlRm9ybWF0Q29udGV4dCgpIChmb3JtYXQudHMpLCBuZXZlciBkaXJlY3RseS5cbiAgZWZmZWN0aXZlTG9jYWxlPzogUmVwb3J0TG9jYWxlVGFnO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBjdXJyZW5jeS4gbnVsbCA9IHRoZSByZXBvcnQgZm9sbG93cyB0aGUgZGVmYXVsdC5cbiAgY3VycmVuY3k/OiBSZXBvcnRDdXJyZW5jeUNvZGUgfCBudWxsO1xuICAvLyBUaGUgY3VycmVuY3kgbW9uZXkgYW1vdW50cyBhcmUgbGFiZWxlZCBpbiwgcmVzb2x2ZWQgbGlrZSBlZmZlY3RpdmVMb2NhbGVcbiAgLy8gKGZhbGxpbmcgYmFjayB0byB0aGUgbG9jYWxlJ3Mgb3duIGN1cnJlbmN5LCB0aGVuIFVTRCkuIEEgbGFiZWwgb25seTpcbiAgLy8gYW1vdW50cyBhcmUgbmV2ZXIgY29udmVydGVkLlxuICBlZmZlY3RpdmVDdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gSG93IHRoZSBzZXJ2ZXIgc2VuZHMgYSBwZXJjZW50IG1lYXN1cmU6ICdyYXRpbycgPSBhIDAtMSByYXRpbyAoMC4zODUgcmVhZHNcbiAgLy8gMzguNSUpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcGVyY2VudCB2YWx1ZXMgYXJlIGFscmVhZHkgeDEwMFxuICAvLyAoMzguNSByZWFkcyAzOC41JSkuXG4gIHBlcmNlbnRGb3JtYXQ/OiAncmF0aW8nO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbiAgLy8gVGhlIHZpZXdlciBmZWF0dXJlcyB0aGlzIHNlcnZlciBzZXJ2ZXMgZm9yIHRoZSByZXBvcnQuIFRoZSB2aWV3ZXIgb2ZmZXJzXG4gIC8vIGEgY29udHJvbCBvbmx5IHdoZW4gaXRzIGZlYXR1cmUgaXMgbGlzdGVkLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hpY2hcbiAgLy8gc2VydmUgbm9uZS5cbiAgdmlld2VyRmVhdHVyZXM/OiBSZXBvcnRWaWV3ZXJGZWF0dXJlW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TWFzdGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29tcG9uZW50czogUmVwb3J0Q29tcG9uZW50W107XG4gIC8vIFRoZSB2YWx1ZXMgdGhlIGhlYWRlciBhbmQgZm9vdGVyIHRleHQgc2hvd3MsIGFzIFJlcG9ydFBhZ2UudmFsdWVzLlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gSG93IHRoZSBvcGVuIHJlcG9ydCB3cml0ZXMgaXRzIG51bWJlcnMgYW5kIGRhdGVzLCByZXNvbHZlZCBvbmNlIHBlciByZXBvcnRcbi8vIChyZXNvbHZlRm9ybWF0Q29udGV4dCkgYW5kIHJlYWQgYnkgdGhlIHZpZXdlciwgdGhlIFBERiBhbmQgUG93ZXJQb2ludCBhbGlrZS5cbi8vIE5ldmVyIHRoZSBicm93c2VyJ3MgbG9jYWxlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb3JtYXRDb250ZXh0IHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG4gIC8vIFdoZXRoZXIgYSBwZXJjZW50IG1lYXN1cmUgYXJyaXZlcyBhcyBhIDAtMSByYXRpbyAodGhlIHJlcG9ydCdzXG4gIC8vIHBlcmNlbnRGb3JtYXQpLiBBbiBvbGRlciBzZXJ2ZXIgc2VuZHMgaXQgYWxyZWFkeSB4MTAwLlxuICByYXRpb1BlcmNlbnQ6IGJvb2xlYW47XG59XG5cbi8vIE9uZSBsb2NhbGUgdGhlIHNlcnZlciBvZmZlcnMsIHdpdGggdGhlIGN1cnJlbmN5IGEgcmVwb3J0IGluIGl0IHVzZXMgd2hlbiBpdFxuLy8gbmFtZXMgbm9uZSBvZiBpdHMgb3duLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRMb2NhbGVPcHRpb24ge1xuICBsb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgZGVmYXVsdEN1cnJlbmN5OiBSZXBvcnRDdXJyZW5jeUNvZGU7XG59XG5cbi8vIEdFVCByZXBvcnRzL2xvY2FsZXM6IHdoYXQgdGhlIHJlcG9ydCBzZXR0aW5ncycgTG9jYWxlIGFuZCBDdXJyZW5jeSBzZWxlY3RzXG4vLyBvZmZlci5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlcyB7XG4gIGRlZmF1bHRMb2NhbGU6IFJlcG9ydExvY2FsZVRhZztcbiAgb3B0aW9uczogUmVwb3J0TG9jYWxlT3B0aW9uW107XG4gIGN1cnJlbmNpZXM6IFJlcG9ydEN1cnJlbmN5Q29kZVtdO1xufVxuXG4vLyBUaGUgZGVwdGggb2YgdGhlIGhlYWRlciBiYW5kICh0b3Agb2YgZXZlcnkgcGFnZSkgYW5kIHRoZSBmb290ZXIgYmFuZCAoYm90dG9tXG4vLyBvZiBldmVyeSBwYWdlKSwgaW4gSU5DSEVTLiBUaGUgYmFuZHMgaG9sZCBubyBjb250ZW50IG9mIHRoZWlyIG93biDigJQgdGhlXG4vLyBtYXN0ZXIncyBjb21wb25lbnRzIHNpdCBpbiB0aGVtIOKAlCB0aGV5IGFyZSB0aGUgcmVzZXJ2ZWQgbWFyZ2lucyB0aGUgZWRpdG9yXG4vLyBkcmF3cyBhcyBndWlkZXMgYW5kIHNuYXBzIHRvLiBBbHdheXMgYXJyaXZlcyByZXNvbHZlZCAoMCA9IG5vIGJhbmQpLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRIZWFkZXJGb290ZXIge1xuICBoZWFkZXJIZWlnaHQ6IG51bWJlcjtcbiAgZm9vdGVySGVpZ2h0OiBudW1iZXI7XG59XG5cbi8vIFJlcG9ydC1sZXZlbCBzdHlsaW5nLiBTaXplcyBhcmUgaW4gUE9JTlRTICgxLzcyXCIpIOKAlCB0aGUgcmVwb3J0J3MgdHlwb2dyYXBoeVxuLy8gbWFwcyAxOjEgdG8gUERGICg3MnB0L2luKSBhbmQgUG93ZXJQb2ludCAocG9pbnQgZm9udCBzaXplcyksIHNvIGEgcG9pbnRcbi8vIHZhbHVlIGlzIGRpbWVuc2lvbmFsbHkgZXhhY3Qgb24gc2NyZWVuIGFuZCBpbiBldmVyeSBleHBvcnQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbmZpZyB7XG4gIHN0eWxlcz86IFJlcG9ydFN0eWxlcztcbiAgLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wuIE9wdGlvbmFsIG9uIHRoZSB0eXBlIGJlY2F1c2UgYSBSZXBvcnRDb25maWdcbiAgLy8gbGl0ZXJhbCBuZWVkIG5vdCBjYXJyeSBpdDsgdGhlIEFQSSBhbHdheXMgc2VuZHMgaXQsIHJlc29sdmVkLlxuICBncm91cEJ5PzogUmVwb3J0R3JvdXBCeTtcbiAgLy8gUmVzb2x2ZWQgYnkgdGhlIEFQSSBsaWtlIGdyb3VwQnkuXG4gIGhlYWRlckZvb3Rlcj86IFJlcG9ydEhlYWRlckZvb3Rlcjtcbn1cblxuLy8gVGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wg4oCUIHRoZSBvbmUgc3dpdGNoIHRoYXQgcmUtYnVja2V0cyBldmVyeVxuLy8gdGltZS1zZXJpZXMgY2hhcnQgYW5kIGV2ZXJ5IHRhYmxlIHRoYXQgZm9sbG93cyBpdCAoZm9sbG93c0dyb3VwQnkpIG9uIHRoZVxuLy8gcmVwb3J0IGJldHdlZW4gZGF5LCB3ZWVrLCBtb250aCwgcXVhcnRlciBhbmQgeWVhci5cbi8vXG4vLyBJdCBpcyBOT1QgYSBmaWx0ZXI6IGEgZmlsdGVyIG5hcnJvd3Mgd2hpY2ggcm93cyBhcmUgY291bnRlZCwgdGhpcyBjaGFuZ2VzIGhvd1xuLy8gdGhlIHN1cnZpdmluZyByb3dzIGFyZSBidWNrZXRlZC4gSXQgc2hhcmVzIHRoZSByZXBvcnQncyBmaWx0ZXIgYmFyIGJlY2F1c2Vcbi8vIHRoYXQgaXMgdGhlIG9uZSByb3cgb2YgY29udHJvbHMgYSB2aWV3ZXIgcmVhZHMgYSByZXBvcnQgdGhyb3VnaCDigJQgdGhlXG4vLyBzZXBhcmF0aW9uIHRoYXQgbWF0dGVycyBpcyBpbiB0aGUgbW9kZWwsIG5vdCBpbiB3aGVyZSB0aGUgY29udHJvbCBpcyBwYWludGVkLlxuLy9cbi8vIEFsd2F5cyBhcnJpdmVzIFJFU09MVkVEICh0aGUgYmFja2VuZCBmaWxscyBhbiBhYnNlbnQgb3IgcGFydGlhbCBzdG9yZWQgYmxvY2tcbi8vIGluIGZyb20gaXRzIG93biBkZWZhdWx0cyksIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gZGVmYXVsdCBoZXJlIOKAlCByZW5kZXIgd2hhdFxuLy8geW91IGFyZSBnaXZlbi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0R3JvdXBCeSB7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGdyYW51bGFyaXRpZXM6IENoYXJ0R3JhbnVsYXJpdHlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTdHlsZXMge1xuICBoZWFkaW5nPzogeyBzaXplPzogbnVtYmVyIH07XG59XG5cbi8vIENvbnRlbnQgcGFkZGluZyBhcm91bmQgYSBjb21wb25lbnQncyBib2R5LCBpbiBJTkNIRVMgKHRoZSBnZW9tZXRyeSB1bml0KS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50UGFkZGluZyB7XG4gIHRvcD86IG51bWJlcjtcbiAgcmlnaHQ/OiBudW1iZXI7XG4gIGJvdHRvbT86IG51bWJlcjtcbiAgbGVmdD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRQYWdlIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgLy8gVGhlIHBhZ2Ugb3B0cyBvdXQgb2YgdGhlIHJlcG9ydCdzIGhlYWRlciBhbmQgZm9vdGVyIChhIHRpdGxlIHBhZ2UpLlxuICBtYXN0ZXJIaWRkZW46IGJvb2xlYW47XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBFdmVyeSBhY3RpdmUgdmFsdWUgb2YgdGhlIHBhZ2UsIGluIGlkIG9yZGVyOiB0aG9zZSBpdHMgdGV4dCBzaG93cyBhbmRcbiAgLy8gdGhvc2Ugbm8gdGV4dCBzaG93cyBhbnkgbW9yZSAoa2VwdCB1bnRpbCBhIHRleHQsIHZhbHVlIG9yIHBhZ2UgZGVsZXRlLCBzb1xuICAvLyBhIGNoaXAgcGFzdGVkIGJhY2sgc3RpbGwgbmFtZXMgb25lKS4gTmV2ZXIgZHJhd24sIGFuZCBuZXZlciBpblxuICAvLyBgY29tcG9uZW50c2AuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0LlxuICB2YWx1ZXM/OiBSZXBvcnRDb21wb25lbnRbXTtcbn1cblxuLy8gJ3RleHQnIGlzIGF1dGhvcmVkIHJpY2ggdGV4dCB3aXRoIG5vIHF1ZXJ5IGJlaGluZCBpdCDigJQgaXQgbmV2ZXIgZmV0Y2hlcyBkYXRhLlxuLy8gJ3ZhbHVlJyBpcyBvbmUgbnVtYmVyIHNob3duIGluc2lkZSBhIHRleHQgYmxvY2sncyB3b3JkcyAoe3t2YWx1ZS5rZXl9fSk7IGl0XG4vLyBoYXMgYSBxdWVyeSBidXQgbm8gcGxhY2Ugb2YgaXRzIG93biBvbiB0aGUgcGFnZS4gJ2dyaWQnIGlzIGEgdGFibGUgZHJhd24gYnlcbi8vIGZzLWdyaWQsIHdoaWNoIHJlYWRzIGl0cyBvd24gcm93cyB0aHJvdWdoIFJlcG9ydEdyaWRTb3VyY2UuXG5leHBvcnQgdHlwZSBSZXBvcnRDb21wb25lbnRUeXBlID0gJ2NoYXJ0JyB8ICdsaXN0JyB8ICdncmlkJyB8ICdrcGknIHwgJ3RleHQnIHwgJ3ZhbHVlJztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnQge1xuICBpZDogbnVtYmVyO1xuICB0eXBlOiBSZXBvcnRDb21wb25lbnRUeXBlO1xuICB0aXRsZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gR2VvbWV0cnkgaW4gSU5DSEVTOiBhYnNvbHV0ZSBwb3NpdGlvbiBvbiB0aGUgcGFnZSBjYW52YXMuXG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICB3OiBudW1iZXI7XG4gIGg6IG51bWJlcjtcbiAgLy8gSGVpZ2h0IG1vZGUsIERFUklWRUQgZnJvbSB0eXBlIHNlcnZlci1zaWRlIChub3Qgc3RvcmVkLCByZWFkLW9ubHkpOiBsaXN0c1xuICAvLyBhbmQgS1BJIHRpbGVzIGFyZSBhdXRvICh0aGUgYm94IHNpemVzIHRvIGl0cyBjb250ZW50LCBgaGAgaWdub3JlZCk7IGNoYXJ0c1xuICAvLyBhcmUgYWx3YXlzIGZpeGVkICh1c2UgYGhgKSBzbyB0aGV5IGZpdCB0aGUgYm94IGFuZCBuZXZlciBvdmVyZmxvdy5cbiAgYXV0b0hlaWdodDogYm9vbGVhbjtcbiAgLy8gVGhlIHN0b3JlZCBTUUwgb2YgYSBsZWdhY3kgc3FsLW1vZGUgY29tcG9uZW50LiBOVUxMIGZvciBhIGRlcml2ZWQgb25lLFxuICAvLyB3aG9zZSBzdGF0ZW1lbnQgZG9lcyBub3QgZXhpc3QgdW50aWwgaXRzIGRvY3VtZW50IGlzIGNvbXBpbGVkIOKAlCB0aGUgU1FMIHRhYlxuICAvLyBmZXRjaGVzIHRoYXQgc2VwYXJhdGVseSAoc2VlIFJlcG9ydENvbXBvbmVudFNxbCkuXG4gIHNxbDogc3RyaW5nIHwgbnVsbDtcbiAgY29uZmlnOiBDaGFydENvbmZpZyAmIExpc3RDb25maWcgJiBHcmlkQ29uZmlnICYgS3BpQ29uZmlnICYgVGV4dENvbmZpZyAmIFZhbHVlQ29uZmlnICYgQ29tcG9uZW50TGF5b3V0Q29uZmlnXG4gICAgJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZmlsdGVyczogUmVwb3J0RmlsdGVyW107XG4gIC8vIFRoZSBmaWVsZCB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgcmUtYnVja2V0cyBvbiB0aGlzIHRpbGUsIG5hbWVkIGJ5IHRoZVxuICAvLyBzZXJ2ZXI7IG51bGwgb24gYSB0aWxlIHRoYXQga2VlcHMgaXRzIG93biBncmFpbi4gQWJzZW50IGZyb20gYSBzZXJ2ZXIgdGhhdFxuICAvLyBwcmVkYXRlcyB0YWJsZXMgZm9sbG93aW5nIHRoZSBncm91cC1ieSAoZm9sbG93c0dyb3VwQnkoKSkuXG4gIGZvbGxvd3NHcm91cEJ5PzogUmVwb3J0R3JvdXBCeUZpZWxkIHwgbnVsbDtcbn1cblxuLy8gVGhlIGZpZWxkIHRoZSByZXBvcnQncyBncm91cC1ieSByZS1idWNrZXRzIG9uIGEgdGlsZSDigJQgYSB0aW1lLXNlcmllc1xuLy8gY2hhcnQncyB4LWF4aXMsIGEgdGFibGUncyB0aW1lIGF4aXMgYXMgaXRzIGZpZWxkcyBuYW1lIGl0IOKAlCBhbmQgdGhlIGdyYWluXG4vLyB0aGUgdGlsZSBpcyBhdXRob3JlZCBhdCwgd2hpY2ggaXQgcmVhZHMgYXQgd2hpbGUgdGhlIGdyb3VwLWJ5IHBpY2tzIG5vbmUuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyb3VwQnlGaWVsZCB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGdyYW51bGFyaXR5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbn1cblxuLy8gV2hhdCB0aGUgU1FMIHRhYiBmZXRjaGVzOiB0aGUgc3RhdGVtZW50IGEgY29tcG9uZW50IHJ1bnMuXG4vL1xuLy8gRm9yIGEgZGVyaXZlZCBjb21wb25lbnQgYGJhc2VsaW5lYCBpcyB0cnVlIGFuZCBgc3FsYCBpcyB3aGF0IGl0cyBkb2N1bWVudFxuLy8gY29tcGlsZXMgdG8gd2l0aCBOTyB2aWV3ZXIgc3RhdGUg4oCUIG5vIGZpbHRlcnMsIHRoZSBhdXRob3JlZCBncmFpbi4gVGhlXG4vLyBudW1iZXJzIG9uIHNjcmVlbiBjb21lIGZyb20gdGhhdCBzdGF0ZW1lbnQgcGx1cyB3aGF0ZXZlciB0aGUgdmlld2VyIHBpY2tlZCxcbi8vIHNvIHRoZSB0d28gY2FuIGxlZ2l0aW1hdGVseSBkaWZmZXIgYW5kIHRoZSB0YWIgc2F5cyBzbyByYXRoZXIgdGhhbiBpbXBseWluZ1xuLy8gdGhleSBtYXRjaC5cbi8vXG4vLyBgdGltZXpvbmVgIGlzIHRoZSBJQU5BIHpvbmUgdGhlIHN0YXRlbWVudCB3YXMgY29tcGlsZWQgaW46IHRoZSByZXBvcnQnc1xuLy8gZWZmZWN0aXZlIHpvbmUuIE9wdGlvbmFsIGJlY2F1c2Ugb2xkZXIgc2VydmVycyBvbWl0IGl0OyB0aGV5IGNvbXBpbGVkIGluIFVUQy5cbi8vXG4vLyBgZXJyb3JgIGlzIG5vdCBhIGZhaWx1cmUgb2YgdGhlIHJlcXVlc3Q6IGEgZG9jdW1lbnQgdGhhdCBubyBsb25nZXIgY29tcGlsZXNcbi8vIGlzIHByZWNpc2VseSB3aGF0IHNvbWVvbmUgb3BlbnMgdGhpcyB0YWIgdG8gZGlzY292ZXIsIHNvIGl0IGFycml2ZXMgYXMgYVxuLy8gbWVzc2FnZSB0byByZW5kZXIgd2l0aCBgZXJyb3JUeXBlYCBuYW1pbmcgd2hpY2gga2luZCAoJ3N0YWxlLXF1ZXJ5JyBvclxuLy8gJ3NlbnNpdGl2ZS1jb2x1bW4nKSwgYW5kIGBzcWxgIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENvbXBvbmVudFNxbCB7XG4gIHNxbDogc3RyaW5nIHwgbnVsbDtcbiAgb3JpZ2luOiAnc3FsJyB8ICdkYnEnIHwgJ2Rlcml2ZWQnO1xuICBiYXNlbGluZTogYm9vbGVhbjtcbiAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIGVycm9yOiBzdHJpbmcgfCBudWxsO1xuICBlcnJvclR5cGU6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEEgdGV4dCBibG9jaydzIGNvbnRlbnQ6IGFuIGh0bWwgZnJhZ21lbnQgdGhlIHNlcnZlciBoYXMgYWxyZWFkeSByZWJ1aWx0IGZyb21cbi8vIGFuIGFsbG93bGlzdCwgd2hpY2ggbWF5IGNhcnJ5IHt7cGFnZS5udW1iZXJ9fSwge3twYWdlLm5hbWV9fSBhbmRcbi8vIHt7cmVwb3J0Lm5hbWV9fSB0b2tlbnMgKHNlZSB0ZXh0LnRzKS5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dENvbmZpZyB7XG4gIGh0bWw/OiBzdHJpbmc7XG59XG5cbi8vIEEgdmFsdWUncyBrZXk6IHdoYXQgaXRzIHRva2VuIGluIGEgdGV4dCBibG9jaydzIGh0bWwgbmFtZXMsIHVuaXF1ZSB3aXRoaW5cbi8vIHRoZSBwYWdlLiBJdHMgbnVtYmVyIGlzIGZvcm1hdHRlZCBieSBjb25maWcubWVhc3VyZSAoS3BpQ29uZmlnKSwgYXMgb24gYSBLUEkuXG4vLyBBIGZvcm11bGEgdmFsdWUgaGFzIG5vIHF1ZXJ5OiBgZm9ybXVsYWAgbmFtZXMgd2hhdCBpdCB3b3JrcyBvdXQgb2YgdGhlXG4vLyBwYWdlJ3MgcXVlcnkgdmFsdWVzLCBhbmQgaXRzIG1lYXN1cmUgaG9sZHMgb25seSB0aGUgZm9ybWF0IGtleXMgaXRzIGF1dGhvclxuLy8gZ2F2ZSAoZm9ybWF0LCBwcmVjaXNpb24sIHVuaXRzKS5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdWVDb25maWcge1xuICBrZXk/OiBzdHJpbmc7XG4gIGZvcm11bGE/OiBWYWx1ZUZvcm11bGFDb25maWcgfCBudWxsO1xufVxuXG4vLyBBIGZvcm11bGEgdmFsdWUncyBvcGVyYXRpb24gYW5kIG9wZXJhbmRzOiBgb2ZgIG5hbWVzIHF1ZXJ5IHZhbHVlcyBvbiB0aGVcbi8vIHNhbWUgcGFnZSAodGhlIG1hc3RlciBmb3IgYSBoZWFkZXIgb3IgZm9vdGVyKSBieSBrZXksIDIgb2YgdGhlbSwgb3IgMiB0byAxMFxuLy8gZm9yIGEgc3VtLiBgc2lnbmVkYCBhYnNlbnQgcmVhZHMgdHJ1ZSBmb3IgYSBjaGFuZ2UgYW5kIGEgcGVyY2VudCBjaGFuZ2UsXG4vLyBmYWxzZSBmb3IgYSByYXRpbyBhbmQgYSBzdW0uXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlRm9ybXVsYUNvbmZpZyB7XG4gIG9wOiBSZXBvcnRWYWx1ZUZvcm11bGE7XG4gIG9mOiBzdHJpbmdbXTtcbiAgc2lnbmVkPzogYm9vbGVhbiB8IG51bGw7XG59XG5cbi8vIE9uZSByb3cgb2YgUE9TVCBwYWdlcy86aWQvdmFsdWVzOiBhIHZhbHVlJ3MgbnVtYmVyIGZvciB0aGUgZmlsdGVycyBzZW50LlxuLy8gVGhlcmUgaXMgb25lIHJvdyBwZXIgdmFsdWUgdGhlIGxheWVyIHJlYWRzLCBpbiBpZCBvcmRlcjogb25lIHNvbWUgdGV4dCBvblxuLy8gdGhhdCBwYWdlIHNob3dzLCBvciBhbiBvcGVyYW5kIG9mIGEgZm9ybXVsYSBzb21lIHRleHQgc2hvd3MuIGB2YWx1ZWAgaXNcbi8vIHJhdywgYXMgdGhlIHF1ZXJ5IHJldHVybmVkIGl0IG9yIHRoZSBzZXJ2ZXIgd29ya2VkIGl0IG91dCAobnVsbCB3aGVuIHRoZXJlXG4vLyBpcyBubyByb3cgb3IgdGhlIHJlc3VsdCBpcyBudWxsKTsgZm9ybWF0dGluZyBpcyB0aGUgdmlld2VyJ3MsIHRocm91Z2ggdGhlXG4vLyB2YWx1ZSdzIG1lYXN1cmUuIGBlcnJvcmAgaXMgdGhhdCB2YWx1ZSdzIG93biBmYWlsdXJlLCBhbmQgdGhlIHBhZ2UncyBvdGhlclxuLy8gdmFsdWVzIGFyZSByZWFkIHJlZ2FyZGxlc3MuXG4vLyBgcm9sZWAgaXMgdGhlIGNvbXBhcmlzb24gcm9sZSB0aGUgbnVtYmVyIHBsYXlzOiBhIHF1ZXJ5IHZhbHVlJ3MgY29tcGFyaXNvblxuLy8gb3V0cHV0J3MsIGNoYW5nZSBvciBwZXJjZW50X2NoYW5nZSBmb3IgdGhvc2UgZm9ybXVsYXMsIGVsc2UgbnVsbC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0UGFnZVZhbHVlIHtcbiAgaWQ6IG51bWJlcjtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZT86IE91dHB1dFJvbGUgfCBudWxsO1xufVxuXG4vLyBDcm9zcy10eXBlIGxheW91dC9zdHlsZSBrZXlzIGNhcnJpZWQgaW4gYSBjb21wb25lbnQncyBjb25maWcgKGFsb25nc2lkZSB0aGVcbi8vIHR5cGUtc3BlY2lmaWMgY2hhcnQvbGlzdC9rcGkga2V5cykuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudExheW91dENvbmZpZyB7XG4gIHBhZGRpbmc/OiBDb21wb25lbnRQYWRkaW5nO1xufVxuXG4vLyBUaGUgcHJlc2VudGF0aW9uIHNldHRpbmdzIGEgY29tcG9uZW50J3Mgc2V0dGluZ3MgZGlhbG9nIGVkaXRzLiBUaXRsZSBhbmRcbi8vIHBhZGRpbmcgYXJlIG5vdCBwYXJ0IG9mIHdoYXQgdGhlIGNvbXBvbmVudCBxdWVyaWVzLCBzbyBhIGNoYW5nZSB0byB0aGVtXG4vLyByZXBhaW50cyB3aXRob3V0IHJlLXJ1bm5pbmcgYW55dGhpbmcuIEEgZGVyaXZlZCBLUEkncyBjYXJkIGtleXMgYXJlIHNlbnRcbi8vIHRvbzogdGhlIHNlcnZlciBjb21wdXRlcyB0aGUgdGFyZ2V0J3MgcHJvZ3Jlc3MgYW5kIHRoZSBzcGFya2xpbmUncyBwb2ludHNcbi8vIHdpdGggdGhlIGRhdGEsIHNvIGEgY2hhbmdlIHRvIHRoZW0gcmVsb2FkcyBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50U2V0dGluZ3Mge1xuICB0aXRsZTogc3RyaW5nO1xuICBwYWRkaW5nOiBDb21wb25lbnRQYWRkaW5nO1xuICBrcGk/OiBLcGlDYXJkU2V0dGluZ3M7XG59XG5cbi8vIEEgS1BJJ3MgY2FyZCBrZXlzLiBUaGUgZGlhbG9nIHNlbmRzIHRoZW0gKG51bGwgcmVtb3ZlcyBhIGtleSwgaW5jcmVhc2VJc1xuLy8gbnVsbCByZWFkcyBnb29kKSwgYW5kIENvbXBvbmVudFNldHRpbmdzLmtwaSBjYXJyaWVzIHRoZW0gYXMgdGhlIHNlcnZlclxuLy8gc2F2ZWQgdGhlbSwgcmVhZCBiYWNrIGZyb20gdGhlIGNvbmZpZyBpdCByZXR1cm5zLlxuZXhwb3J0IGludGVyZmFjZSBLcGlDYXJkU2V0dGluZ3Mge1xuICBpbmNyZWFzZUlzOiBSZXBvcnRDaGFuZ2VQb2xhcml0eSB8IG51bGw7XG4gIHRhcmdldDogS3BpVGFyZ2V0Q29uZmlnIHwgbnVsbDtcbiAgc3BhcmtsaW5lOiBLcGlTcGFya2xpbmVDb25maWcgfCBudWxsO1xufVxuXG4vLyBXaGVyZSBhIGNoYXJ0J3MgbGVnZW5kIHNpdHMgcmVsYXRpdmUgdG8gdGhlIHBsb3QsIG9yICdoaWRkZW4nIHRvIGRyb3AgaXQuXG5leHBvcnQgdHlwZSBMZWdlbmRQb3NpdGlvbiA9ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2hpZGRlbic7XG5cbmV4cG9ydCB0eXBlIENoYXJ0R3JhbnVsYXJpdHkgPSAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAneWVhcic7XG5cbi8vIEhvdyBlYWNoIGdyYW51bGFyaXR5IHJlYWRzIGluIHRoZSBncm91cC1ieSBjb250cm9sIGFuZCBvbiBhbiBleHBvcnQgY292ZXJcbi8vIHNoZWV0LiBXSElDSCBvZiB0aGVtIGEgZ2l2ZW4gcmVwb3J0IG9mZmVycyBjb21lcyBmcm9tIGl0cyBSZXBvcnRHcm91cEJ5O1xuLy8gdGhpcyBpcyBvbmx5IHRoZSBuYW1pbmcuICd5ZWFyJyByZWFkcyBhcyBcIkFubnVhbGx5XCIuXG5leHBvcnQgY29uc3QgR1JBTlVMQVJJVFlfT1BUSU9OUzogeyB2YWx1ZTogQ2hhcnRHcmFudWxhcml0eTsgbmFtZTogc3RyaW5nIH1bXSA9IFtcbiAgeyB2YWx1ZTogJ2RheScsIG5hbWU6ICdEYXknIH0sXG4gIHsgdmFsdWU6ICd3ZWVrJywgbmFtZTogJ1dlZWsnIH0sXG4gIHsgdmFsdWU6ICdtb250aCcsIG5hbWU6ICdNb250aCcgfSxcbiAgeyB2YWx1ZTogJ3F1YXJ0ZXInLCBuYW1lOiAnUXVhcnRlcicgfSxcbiAgeyB2YWx1ZTogJ3llYXInLCBuYW1lOiAnQW5udWFsbHknIH0sXG5dO1xuXG4vLyBUaGUgY2hhcnQgdHlwZXMgdGhhdCBwbG90IHNlcmllcyBhZ2FpbnN0IGEgY2F0ZWdvcnkgYW5kIGEgdmFsdWUgYXhpcywgYW5kIHNvXG4vLyB0aGUgdHlwZXMgYSBtZWFzdXJlJ3Mgb3duIHNlcmllcyBjYW4gYmUgZHJhd24gYXMuIEEgd2F0ZXJmYWxsIGhhcyB0aGUgc2FtZVxuLy8gYXhlcyBidXQgaXMgbm90IG9uZSBvZiB0aGVtOiBpdCBkcmF3cyBpdHMgb25lIG1lYXN1cmUgYXMgZmxvYXRpbmcgc3RlcHMuXG5leHBvcnQgdHlwZSBBeGlzQ2hhcnRUeXBlID0gJ2JhcicgfCAnbGluZScgfCAnYXJlYSc7XG5cbi8vIFdoYXQgb25lIGJhciBvZiBhIHdhdGVyZmFsbCBkb2VzIHRvIHRoZSBydW5uaW5nIHRvdGFsIOKAlCBlYWNoIGlzIGRyYXduIGluIGl0c1xuLy8gb3duIGNvbG9yLiBUaGUgY2xvc2luZyB0b3RhbCBpcyB0aGUgbGFzdCBiYXIsIHN0YW5kaW5nIG9uIHplcm8uXG5leHBvcnQgdHlwZSBXYXRlcmZhbGxTdGVwS2luZCA9ICdyaXNlJyB8ICdmYWxsJyB8ICd0b3RhbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRDb25maWcge1xuICAvLyBBIHdhdGVyZmFsbCB0YWtlcyBPTkUgbWVhc3VyZSB3aG9zZSB2YWx1ZSBwZXIgY2F0ZWdvcnkgaXMgaG93IGZhciB0aGVcbiAgLy8gcnVubmluZyB0b3RhbCBtb3ZlcyB0aGVyZTogZWFjaCBiYXIgc3RhcnRzIHdoZXJlIHRoZSBvbmUgYmVmb3JlIGl0IGVuZGVkLFxuICAvLyBhbmQgYSBjbG9zaW5nIFRvdGFsIGJhciBzaG93cyB0aGUgc3VtLlxuICBjaGFydFR5cGU/OiBBeGlzQ2hhcnRUeXBlIHwgJ3dhdGVyZmFsbCcgfCAncGllJyB8ICdkb251dCc7XG4gIC8vIEZvciBraW5kICd0aW1lJywgdGhlIHNlcnZlciBidWNrZXRzIHRoZSByYXcgZGF0ZXRpbWUgY29sdW1uIHRvIGBncmFudWxhcml0eWBcbiAgLy8gaW4gdGhlIHJlcG9ydCdzIHRpbWV6b25lICh0aGUgU1FMIGV4cG9zZXMgdGhlIHJhdyBjb2x1bW4sIHVuYnVja2V0ZWQpLlxuICAvLyBkYXRlTGFiZWwgd3JpdGVzIGEgdGltZSBheGlzJ3MgcGVyaW9kIGxhYmVscyBzaG9ydCAoJ01heScsIHRoZSBkZWZhdWx0KSxcbiAgLy8gbG9uZyAoJ01heSAyMDI2Jykgb3IgbnVtZXJpYyAoJzIwMjYtMDUnKTsgYSBjYXRlZ29yeSBheGlzIGlnbm9yZXMgaXQuXG4gIHhBeGlzPzoge1xuICAgIGNvbHVtbjogc3RyaW5nO1xuICAgIGtpbmQ/OiAnY2F0ZWdvcnknIHwgJ3RpbWUnO1xuICAgIGdyYW51bGFyaXR5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBkYXRlTGFiZWw/OiBSZXBvcnRDaGFydERhdGVMYWJlbDtcbiAgfTtcbiAgbWVhc3VyZXM/OiBDaGFydE1lYXN1cmVbXTtcbiAgLy8gRWFjaCB2YWx1ZSBvZiB0aGlzIGNvbHVtbiBiZWNvbWVzIGl0cyBvd24gc2VyaWVzLiBJdCBjYXJyaWVzIG5vIGxhYmVsOiB0aGVcbiAgLy8gbGVnZW5kIG5hbWVzIHRoZSB2YWx1ZXMgdGhlbXNlbHZlcy5cbiAgc3BsaXRCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gU2luZ2xlLWRpbWVuc2lvbiBiYXIgY2hhcnRzIG9ubHk6IGNvbG9yIGVhY2ggYmFyIGJ5IGl0cyBvd24gY2F0ZWdvcnkgYW5kXG4gIC8vIHNob3cgYSBsZWdlbmQsIFdJVEhPVVQgc3BsaXR0aW5nIGludG8gbXVsdGlwbGUgc2VyaWVzICh3aGljaCBzbGl2ZXJzIHRoZVxuICAvLyBiYXJzKS4gdjEgZXhwZWN0cyBjb2xvckJ5LmNvbHVtbiA9PT0geEF4aXMuY29sdW1uLiBJZ25vcmVkIHdoZW4gc3BsaXRCeSBpc1xuICAvLyBzZXQgb3IgdGhlIGNoYXJ0IGlzbid0IGEgYmFyIGNoYXJ0LlxuICBjb2xvckJ5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgb3JpZW50YXRpb24/OiAndmVydGljYWwnIHwgJ2hvcml6b250YWwnO1xuICBzdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gU3RhY2tzIHRoZSBwcmltYXJ5IGF4aXMncyBiYXIgYW5kIGFyZWEgc2VyaWVzIGFzIHNoYXJlcyBvZiBlYWNoXG4gIC8vIGNhdGVnb3J5J3MgdG90YWwsIHNvIGV2ZXJ5IHN0YWNrIHJlYWNoZXMgMTAwJS4gVGhlIHZpZXdlciBjb21wdXRlcyB0aGVcbiAgLy8gc2hhcmVzIGZyb20gdGhlIHJvd3MgaXQgcmVjZWl2ZXMsIGFmdGVyIHRoZSBmaWx0ZXJzIHJhbjsgdGhlIHJvd3MgYW5kIHRoZVxuICAvLyBDU1Yga2VlcCB0aGUgcmF3IHZhbHVlcy4gVGhlIHZhbHVlIGF4aXMgdGhlbiBhbHdheXMgcnVucyAwIHRvIDEwMCUgKGZyb21cbiAgLy8gLTEwMCUgd2hlbiBhIHNoYXJlIGlzIG5lZ2F0aXZlKS5cbiAgcGVyY2VudFN0YWNrZWQ/OiBib29sZWFuO1xuICAvLyBWYWx1ZXMgcHJpbnRlZCBiZXNpZGUgdGhlIHBvaW50cyBvZiBhIGJhciwgbGluZSBvciBhcmVhIHNlcmllczogZXZlcnlcbiAgLy8gcG9pbnQgKGFsbCksIGVhY2ggc2VyaWVzJyBsYXRlc3QgcG9pbnQgKGxhc3QpLCBvciBldmVyeSBwb2ludCB3aG9zZSBsYWJlbFxuICAvLyBmaXRzIHdpdGhvdXQgb3ZlcmxhcHBpbmcgYW5vdGhlciAoYXV0bykuIE9taXR0ZWQgb3Igbm9uZSwgbm8gbGFiZWxzLiBBXG4gIC8vIHBpZSwgYSBkb251dCBhbmQgYSB3YXRlcmZhbGwgbmV2ZXIgcHJpbnQgdGhlbS5cbiAgZGF0YUxhYmVscz86IFJlcG9ydENoYXJ0RGF0YUxhYmVscztcbiAgLy8gVGhlIHByaW1hcnkgdmFsdWUgYXhpcydzIHRpdGxlIGFuZCByYW5nZS4gRXZlcnkgc2VyaWVzIGlzIHBsb3R0ZWQgYWdhaW5zdFxuICAvLyBpdCB1bmxlc3MgaXRzIG1lYXN1cmUgaXMgc2Vjb25kYXJ5LlxuICB2YWx1ZUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gVGhlIHNlY29uZCB2YWx1ZSBheGlzLCBvbiB0aGUgcmlnaHQsIHRoYXQgc2Vjb25kYXJ5IG1lYXN1cmVzIHBsb3QgYWdhaW5zdC5cbiAgc2Vjb25kYXJ5QXhpcz86IENoYXJ0VmFsdWVBeGlzO1xuICAvLyBMYWJlbGVkIGxpbmVzIGFjcm9zcyB0aGUgcGxvdCBhdCBhIGNvbnN0YW50IHZhbHVlLCBvciBiYW5kcyBiZXR3ZWVuIHR3b1xuICAvLyB2YWx1ZXMsIGF0IG1vc3QgNS4gVmVydGljYWwgYXhpcyBjaGFydHMgYW5kIHdhdGVyZmFsbHMgb25seS5cbiAgcmVmZXJlbmNlcz86IENoYXJ0UmVmZXJlbmNlW107XG4gIGxlZ2VuZD86IExlZ2VuZFBvc2l0aW9uO1xuICBzb3J0PzogUmVwb3J0U29ydDtcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbi8vIEEgdmFsdWUgYXhpcydzIHRpdGxlIGFuZCByYW5nZS4gRWFjaCBib3VuZCBsZWZ0IG91dCBpcyBwaWNrZWQgZnJvbSB0aGUgZGF0YSxcbi8vIGFuZCB0aGUgdGljayBzdGVwIHdpdGhvdXQgYW4gaW50ZXJ2YWwuIEl0cyB0aWNrcyB0YWtlIHRoZSBudW1iZXIgZm9ybWF0IG9mXG4vLyB0aGUgbWVhc3VyZXMgcGxvdHRlZCBhZ2FpbnN0IGl0LlxuZXhwb3J0IGludGVyZmFjZSBDaGFydFZhbHVlQXhpcyB7XG4gIGxhYmVsPzogc3RyaW5nO1xuICBtaW4/OiBudW1iZXI7XG4gIG1heD86IG51bWJlcjtcbiAgaW50ZXJ2YWw/OiBudW1iZXI7XG59XG5cbi8vIEEgcmVmZXJlbmNlIGRyYXduIGFjcm9zcyBhIGNoYXJ0J3MgcGxvdDogYSBsaW5lIGF0IGB2YWx1ZWAsIG9yIHdpdGggYHRvYCBhXG4vLyBiYW5kIGJldHdlZW4gdGhlIHR3bywgbGFiZWxlZCB3aXRoIGBsYWJlbGAuIFRoZSB2YWx1ZSBpcyBvbmUgdGhlIHVzZXIgb3Jcbi8vIHRoZSBtb2RlbCBzdGF0ZXMsIG5ldmVyIG9uZSByZWFkIG9mZiB0aGUgZGF0YS4gc2Vjb25kYXJ5IHBsb3RzIGl0IGFnYWluc3Rcbi8vIHRoZSBzZWNvbmQgdmFsdWUgYXhpcywgd2hlbiB0aGUgY2hhcnQgaGFzIG9uZS5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRSZWZlcmVuY2Uge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbDogc3RyaW5nO1xuICB0bz86IG51bWJlcjtcbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbn1cblxuLy8gSG93IG9uZSBudW1lcmljIHNsb3QgaXMgc2hvd246IGEgY2hhcnQgbWVhc3VyZSwgYSBLUEkgbWVhc3VyZSwgYSBsaXN0IGNvbHVtblxuLy8gb3IgYSBjcm9zcy10YWIncyBjZWxscy4gVGhlIGRhdGEgc3RheXMgcmF3IChpdCBzb3J0cyBhbmQgZXhwb3J0cyBhcyBhXG4vLyBudW1iZXIpOyBvbmx5IHRoZSByZW5kZXJlcnMgZm9ybWF0IGl0LCB0aGUgc2FtZSB3YXkgb24gc2NyZWVuLCBpbiB0aGUgUERGXG4vLyBhbmQgaW4gUG93ZXJQb2ludCAoZm9ybWF0LnRzKS4gQWxsIHRocmVlIGtleXMgYXJlIG9wdGlvbmFsLCBhbmQgcHJlY2lzaW9uIG9yXG4vLyB1bml0cyB3aXRob3V0IGEgZm9ybWF0IG1lYW4gbnVtYmVyLlxuLy9cbi8vIEZvcm1hdHRpbmcgaXMgb3B0LWluOiBhIGxpc3QgY29sdW1uIG9yIGNyb3NzLXRhYiBjZWxsIHdpdGhvdXQgdGhlc2Uga2V5c1xuLy8gcHJpbnRzIGl0cyB2YWx1ZSBhcyBpdCBjYW1lLCBhbmQgYSBjaGFydCB3aXRob3V0IHRoZW0ga2VlcHMgaXRzIHBsYWluXG4vLyBsb2NhbGUtZ3JvdXBlZCBheGlzIGFuZCB0b29sdGlwcy4gQSBLUEkgd2l0aG91dCB0aGVtIHByaW50cyBhIHBsYWluIG51bWJlci5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIC8vIHBlcmNlbnQgdGFrZXMgYSAwLTEgcmF0aW8gKDAuMyByZWFkcyAzMCUpIHdoZW4gdGhlIHJlcG9ydCdzIHBlcmNlbnRGb3JtYXRcbiAgLy8gaXMgJ3JhdGlvJzsgYW4gb2xkZXIgc2VydmVyIGxlYXZlcyBpdCBvdXQgYW5kIHNlbmRzIHgxMDAuIGN1cnJlbmN5IGxhYmVsc1xuICAvLyB0aGUgYW1vdW50IGluIHRoZSByZXBvcnQncyBjdXJyZW5jeSwgd3JpdHRlbiBpbiBpdHMgbG9jYWxlLlxuICBmb3JtYXQ/OiBSZXBvcnRWYWx1ZUZvcm1hdCB8IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQ7XG4gIC8vIEhvdyBtYW55IGRlY2ltYWwgcGxhY2VzIHRoZSB2YWx1ZSBpcyBzaG93biB0byAoMC02KS4gRml4ZWQgcmF0aGVyIHRoYW5cbiAgLy8gbWF4aW11bTogYSBjb2x1bW4gb2YgcmF0ZXMgaXMgdW5yZWFkYWJsZSB3aGVuIGVhY2ggb25lIHNob3dzIGEgZGlmZmVyZW50XG4gIC8vIG51bWJlciBvZiBkZWNpbWFscy4gRm9yIHBlcmNlbnQgaXQgY291bnRzIHRoZSBkZWNpbWFscyBvZiB0aGUgcGVyY2VudGFnZVxuICAvLyAocHJlY2lzaW9uIDEgc2hvd3MgMC4zIGFzIDMwLjAlKS4gT21pdHRlZCBsZWF2ZXMgdGhlIGZvcm1hdCdzIG93biBkZWZhdWx0OlxuICAvLyBhdCBtb3N0IG9uZSBkZWNpbWFsIGZvciBwZXJjZW50IChhbmQgZm9yIGFuIGFiYnJldmlhdGVkIDEuMkspLCB3aG9sZSB1bml0c1xuICAvLyBmb3IgY3VycmVuY3ksIHRoZSBsb2NhbGUncyBkZWZhdWx0IGZvciBhIG51bWJlci5cbiAgLy9cbiAgLy8gSXQgY2Fubm90IGJlIGFwcGxpZWQgaW4gdGhlIFNRTDogdGhlIHZhbHVlIGlzIGFnZ3JlZ2F0ZWQgYWZ0ZXIgdGhlIHJlcG9ydCdzXG4gIC8vIGZpbHRlcnMgcnVuLCBzbyBwcmUtcm91bmRpbmcgd291bGQgYnJlYWsgbGl2ZSByZS1maWx0ZXJpbmcuXG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgLy8gQWJicmV2aWF0ZXMgdG8gdGhvdXNhbmRzICgxLjJLKSBvciBtaWxsaW9ucyAoMy40TSksIG9yIHBpY2tzIGJ5IHNpemUuXG4gIHVuaXRzPzogUmVwb3J0TnVtYmVyVW5pdHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRNZWFzdXJlIGV4dGVuZHMgTnVtYmVyRm9ybWF0U3BlYyB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBhZ2dyZWdhdGlvbj86ICdzdW0nIHwgJ2NvdW50JyB8ICdhdmcnIHwgJ21pbicgfCAnbWF4JztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8vIERyYXdzIHRoaXMgbWVhc3VyZSdzIHNlcmllcyBhcyBhIGRpZmZlcmVudCB0eXBlIGZyb20gdGhlIGNoYXJ0J3Mgb3duXG4gIC8vIGNoYXJ0VHlwZSDigJQgY291bnRzIGFzIGJhcnMgd2l0aCBhIHJhdGUgYXMgYSBsaW5lIG92ZXIgdGhlbSBpcyBhIGNvbWJvXG4gIC8vIGNoYXJ0LiBPbWl0dGVkLCB0aGUgc2VyaWVzIHRha2VzIHRoZSBjaGFydCdzIHR5cGUuIEF4aXMgY2hhcnRzIG9ubHkgKGEgcGllXG4gIC8vIGlnbm9yZXMgaXQpLlxuICB0eXBlPzogQXhpc0NoYXJ0VHlwZTtcbiAgLy8gQSBjaGFydCBtZWFzdXJlJ3MgZm9ybWF0IHNob3dzIG9uIGl0cyB0b29sdGlwcywgYW5kIG9uIHRoZSB2YWx1ZSBheGlzXG4gIC8vIHdoZW4gZXZlcnkgbWVhc3VyZSBzaGFyaW5nIHRoZSBheGlzIGFncmVlcyBvbiBpdC4gQSBLUEkncyBtZWFzdXJlIGZvcm1hdHNcbiAgLy8gaXRzIG9uZSB2YWx1ZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQ7XG4gIC8vIFBsb3RzIHRoaXMgbWVhc3VyZSBhZ2FpbnN0IHRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCBmb3IgYVxuICAvLyBxdWFudGl0eSBvbiBhbm90aGVyIHNjYWxlLiBPbWl0dGVkIG9yIGZhbHNlLCBpdCBzaGFyZXMgdGhlIHByaW1hcnkgYXhpcy5cbiAgLy8gQSB2ZXJ0aWNhbCBheGlzIGNoYXJ0IG9ubHksIHdpdGggYXQgbGVhc3Qgb25lIG1lYXN1cmUgbGVmdCBvbiB0aGUgcHJpbWFyeVxuICAvLyBheGlzLlxuICBzZWNvbmRhcnk/OiBib29sZWFuO1xuICAvLyBUaGUgcGFsZXR0ZSBjb2xvciB0aGlzIG1lYXN1cmUncyBzZXJpZXMgaXMgZHJhd24gaW4uIE9taXR0ZWQsIHRoZSBzZXJpZXNcbiAgLy8gdGFrZXMgdGhlIHBhbGV0dGUgY29sb3Igb2YgaXRzIHBvc2l0aW9uLiBBIGNvbG9yIG9uIHRoZSBmaXJzdCBtZWFzdXJlXG4gIC8vIHR1cm5zIG9mZiBhIGNhdGVnb3J5IGJhciBjaGFydCdzIGRlZmF1bHQgY29sb3IgcGVyIGJhciAoaXNDb2xvckJ5KS5cbiAgY29sb3I/OiBSZXBvcnRDaGFydENvbG9yO1xuICAvLyBIb3cgYSBsaW5lIHNlcmllcycgbGluZSBpcyBkcmF3bi4gT21pdHRlZCwgc29saWQuXG4gIGxpbmU/OiBSZXBvcnRDaGFydExpbmVTdHlsZTtcbiAgLy8gV2hldGhlciBhIGxpbmUgb3IgYXJlYSBzZXJpZXMgZHJhd3MgYSBkb3Qgb24gZWFjaCBwb2ludC4gT21pdHRlZCwgdHJ1ZS5cbiAgbWFya2Vycz86IGJvb2xlYW47XG4gIC8vIEEgbGluZSBhY3Jvc3MgdGhlIHBsb3QgYXQgdGhpcyBzZXJpZXMnIGF2ZXJhZ2UsIG1lZGlhbiwgbG93ZXN0IG9yIGhpZ2hlc3RcbiAgLy8gdmFsdWUgb3ZlciB0aGUgcG9pbnRzIG9uIHNjcmVlbi4gVmVydGljYWwgYXhpcyBjaGFydHMgb25seS5cbiAgbWFya0xpbmU/OiBSZXBvcnRDaGFydE1hcmtTdGF0O1xufVxuXG4vLyBPbmUgYXV0aG9yZWQgY29sdW1uIG9mIGEgcGxhaW4gbGlzdC5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENvbHVtbiBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8vIGRhdGUga2VlcHMgdGhlIGNvbHVtbiBhIFJBVyB0aW1lc3RhbXAsIHNvIHRoZSByZXBvcnQgdGltZXpvbmUgYW5kIGl0c1xuICAvLyBkYXRlUmFuZ2UgZmlsdGVycyBrZWVwIHdvcmtpbmcsIGFuZCB0aGUgdmlld2VyIHJlbmRlcnMgaXQgYXMgYSBkYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIHpvbmUgYW5kIGxvY2FsZS4gbnVtYmVyLCBwZXJjZW50IGFuZCBjdXJyZW5jeSBmb3JtYXQgdGhlIHZhbHVlIGFzXG4gIC8vIGEgS1BJIG1lYXN1cmUgZG9lcy4gV2l0aG91dCBhIGZvcm1hdCB0aGUgdmFsdWUgcHJpbnRzIGFzIGl0IGNhbWUuXG4gIGZvcm1hdD86IFJlcG9ydExpc3RDb2x1bW5Gb3JtYXQ7XG4gIC8vIEEgY29sdW1uIHRoZSBTUUwgYWxyZWFkeSBmb3JtYXR0ZWQgaXMgdGV4dCwgc28gaXQgbmFtZXMgYHNvcnRDb2x1bW5gOiB0aGVcbiAgLy8gcmF3IG51bWVyaWMgYWxpYXMgdGhlIHF1ZXJ5IGFsc28gb3V0cHV0cywgd2hpY2ggdGhlIHNlcnZlciBvcmRlcnMgYnlcbiAgLy8gaW5zdGVhZC5cbiAgc29ydENvbHVtbj86IHN0cmluZztcbiAgLy8gZmFsc2Uga2VlcHMgdGhlIGNlbGwgb24gb25lIGxpbmUuIE9taXR0ZWQsIGEgbG9uZyB2YWx1ZSB3cmFwcy5cbiAgd3JhcD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdENvbmZpZyB7XG4gIGNvbHVtbnM/OiBMaXN0Q29sdW1uW107XG4gIC8vIEEgY3Jvc3MtdGFiOiBgcm93QnlgIHN0YXlzIGRvd24gdGhlIHNpZGUgYW5kIGV2ZXJ5IHZhbHVlIG9mIGBwaXZvdEJ5YFxuICAvLyBiZWNvbWVzIGEgY29sdW1uLiBUaGUgdHdvIGFyZSBzZXQgdG9nZXRoZXIsIGBjb2x1bW5zYCBpcyBvbWl0dGVkICh0aGVcbiAgLy8gYmFja2VuZCByZWplY3RzIGF1dGhvcmluZyBib3RoKSwgYW5kIHRoZSBjb2x1bW4gc2V0IGFycml2ZXMgd2l0aCB0aGUgcm93c1xuICAvLyBpbiBDb21wb25lbnREYXRhLmNvbHVtbnMgYmVjYXVzZSBvbmx5IHRoZSByZXN1bHQga25vd3MgdGhlIHBpdm90IHZhbHVlcy5cbiAgLy8gcm93QnkubGFiZWwgaGVhZHMgdGhlIHNpZGUgY29sdW1uIG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LCBhbmRcbiAgLy8gZGVmYXVsdHMgdG8gdGhlIGNvbHVtbiBuYW1lLiBwaXZvdEJ5IGNhcnJpZXMgbm8gbGFiZWw6IGl0cyB2YWx1ZXMgYXJlIHRoZVxuICAvLyBoZWFkaW5ncy5cbiAgcm93Qnk/OiB7IGNvbHVtbjogc3RyaW5nOyBsYWJlbD86IHN0cmluZyB9O1xuICBwaXZvdEJ5PzogeyBjb2x1bW46IHN0cmluZyB9O1xuICAvLyBUaGUgYXV0aG9yZWQgb3JkZXIsIG1vc3QgaW1wb3J0YW50IGZpcnN0LiBBIGxpc3Qgc2F2ZWQgYmVmb3JlIG11bHRpLWtleVxuICAvLyBzb3J0aW5nIHN0b3JlcyBvbmUgb2JqZWN0LCBzbyByZWFkIGl0IHRocm91Z2ggbGlzdFNvcnRUZXJtcygpIG9ubHkuXG4gIHNvcnQ/OiBSZXBvcnRTb3J0IHwgUmVwb3J0U29ydFtdO1xuICAvLyBIb3cgbWFueSBsZWFkaW5nIGNvbHVtbnMgc3RheSBpbiB2aWV3IHdoaWxlIHRoZSBsaXN0IHNjcm9sbHMgc2lkZXdheXNcbiAgLy8gKDAtMykuIFVuc2V0LCBhIGNyb3NzLXRhYiBwaW5zIGl0cyByb3cta2V5IGNvbHVtbiBhbmQgYSBwbGFpbiBsaXN0IG5vbmUuXG4gIHBpbm5lZENvbHVtbnM/OiBudW1iZXIgfCBudWxsO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgLy8gdHJ1ZSBhZGRzIGEgdG90YWxzIHJvdyB1bmRlciB0aGUgbGlzdDogdGhlIHNlcnZlciBydW5zIHRoZSBtZWFzdXJlcyBhZ2FpblxuICAvLyBvdmVyIGV2ZXJ5IHJvdyB0aGUgZmlsdGVycyBrZWVwLCB3aXRob3V0IGdyb3VwaW5nLCBhbmQgYSBjcm9zcy10YWIgdG90YWxzXG4gIC8vIGVhY2ggY29sdW1uLlxuICB0b3RhbHM/OiBib29sZWFuO1xuICAvLyBBIGNyb3NzLXRhYiBvbmx5OiBob3cgZXZlcnkgY2VsbCBvZiB0aGUgZ3JpZCBpcyBmb3JtYXR0ZWQsIHdpdGggYSBLUElcbiAgLy8gbWVhc3VyZSdzIGtleXMuIFRoZSByb3cga2V5IGNvbHVtbiBzdGF5cyBhcyBpdCBjYW1lLlxuICBjZWxsRm9ybWF0PzogTnVtYmVyRm9ybWF0U3BlYyAmIHsgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBLcGlDb25maWcge1xuICBtZWFzdXJlPzogQ2hhcnRNZWFzdXJlO1xuICAvLyBXaGV0aGVyIGEgcmlzZSBpbiB0aGUgdmFsdWUgaXMgZ29vZCBuZXdzLCBiYWQgbmV3cyBvciBuZWl0aGVyOiBpdCBwaWNrc1xuICAvLyB0aGUgZGVsdGEncyBjb2xvciBhbmQgZGVjaWRlcyB3aGVuIGEgdGFyZ2V0IGlzIG1ldCAoZ29vZDogYXQgb3IgYWJvdmUgaXQ7XG4gIC8vIGJhZDogYXQgb3IgYmVsb3cgaXQ7IG5ldXRyYWw6IG5ldmVyIGp1ZGdlZCkuIE9taXR0ZWQgb3IgbnVsbCByZWFkcyBnb29kLlxuICBpbmNyZWFzZUlzPzogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICAvLyBBIG51bWJlciB0aGUgdXNlciBnYXZlIGZvciB0aGUgdmFsdWUgdG8gcmVhY2gsIG5ldmVyIG9uZSByZWFkIG9mZiB0aGVcbiAgLy8gZGF0YS4gVGhlIHNlcnZlciBzZW5kcyB0aGUgcHJvZ3Jlc3MgdG93YXJkIGl0IHdpdGggdGhlIGRhdGEuXG4gIHRhcmdldD86IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIC8vIEEgc21hbGwgdHJlbmQgbGluZSBvZiB0aGUgdmFsdWUgb3ZlciBpdHMgbGFzdCBwZXJpb2RzLCBkcmF3biB1bmRlciBpdC5cbiAgc3BhcmtsaW5lPzogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyB0YXJnZXQ6IHRoZSB2YWx1ZSwgYW5kIGFuIG9wdGlvbmFsIGNhcHRpb24gZm9yIGl0ICgnR29hbCcpLlxuZXhwb3J0IGludGVyZmFjZSBLcGlUYXJnZXRDb25maWcge1xuICB2YWx1ZTogbnVtYmVyO1xuICBsYWJlbD86IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3Mgc3BhcmtsaW5lOiBob3cgd2lkZSBlYWNoIHBvaW50J3MgcGVyaW9kIGlzIChudWxsIHJlYWRzIG1vbnRoKSBhbmRcbi8vIGhvdyBtYW55IHBlcmlvZHMgaXQgZHJhd3MsIDIgdG8gNjAgKG51bGwgcmVhZHMgMTIpLlxuZXhwb3J0IGludGVyZmFjZSBLcGlTcGFya2xpbmVDb25maWcge1xuICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBwZXJpb2RzPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTb3J0IHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGRpcmVjdGlvbj86ICdhc2MnIHwgJ2Rlc2MnO1xufVxuXG5leHBvcnQgdHlwZSBSZXBvcnRGaWx0ZXJUeXBlID0gJ2RhdGVSYW5nZScgfCAnc2VsZWN0JyB8ICdrZXl3b3JkJyB8ICdudW1iZXJSYW5nZSc7XG5cbi8vIFdoZXJlIGEgZmlsdGVyIGdyb3VwJ3MgY29udHJvbCBpcyBleHBvc2VkLiBBIGdyb3VwIGNhbiBiZSBzaG93biBvbiBpdHNcbi8vIGNvbXBvbmVudHMsIGluIHRoZSByZXBvcnQgYmFyLCBvciBCT1RIIGF0IG9uY2UgKHRoZSB0d28gYXJlIGluZGVwZW5kZW50XG4vLyB0b2dnbGVzIGluIHRoZSBVSSk7IGEgY29sdW1uIHdpdGggbmVpdGhlciBleHBvc2VkIHNpbXBseSBoYXMgbm8gZmlsdGVyLlxuLy8gJ3BhZ2UnIHNob3dzIGl0IGluIHRoZSByZXBvcnQgYmFyIG9mIG9uZSBwYWdlIG9ubHkgKFJlcG9ydEZpbHRlckdyb3VwLnBhZ2VJZCkuXG5leHBvcnQgdHlwZSBSZXBvcnRGaWx0ZXJMZXZlbCA9ICdjb21wb25lbnQnIHwgJ3JlcG9ydCcgfCAnYm90aCcgfCAncGFnZSc7XG5cbi8vIE9uZSBmaWx0ZXJhYmxlIG91dHB1dCBjb2x1bW4gb2YgYSBjb21wb25lbnQncyBTUUwsIHdpdGggdGhlIGZpbHRlciBpbnRlcmZhY2Vcbi8vIElORkVSUkVEIGZyb20gaXRzIGRhdGEgKHRoZSBodW1hbiBuZXZlciBwaWNrcyB0aGUgaW50ZXJmYWNlIOKAlCBpdCBmb2xsb3dzIHRoZVxuLy8gY29sdW1uJ3MgdHlwZSkuIERyaXZlcyB0aGUgRmlsdGVycyB0YWIgbGlzdGluZy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyYWJsZUNvbHVtbiB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnRGaWx0ZXJUeXBlO1xuICAvLyBFdmVyeSBpbnRlcmZhY2UgdGhlIGNvbHVtbiBjYW4gdGFrZSwgdGhlIGluZmVycmVkIG9uZSAodHlwZSkgZmlyc3Q6IGFcbiAgLy8gbnVtZXJpYyBjb2x1bW4gdGFrZXMgWydzZWxlY3QnLCAnbnVtYmVyUmFuZ2UnXS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIHR5cGVzPzogUmVwb3J0RmlsdGVyVHlwZVtdO1xufVxuXG4vLyBHcm91bmQgdHJ1dGg6IG9uZSBmaWx0ZXJhYmxlIG91dHB1dCBjb2x1bW4gT04gb25lIGNvbXBvbmVudCdzIFNRTC4gQWx3YXlzIGFcbi8vIG1lbWJlciBvZiBhIGZpbHRlciBncm91cCDigJQgdGhlIHVuaXQgdGhhdCBsaW5rcyBlcXVpdmFsZW50IGZpbHRlcnMgYWNyb3NzXG4vLyBjb21wb25lbnRzIGFuZCBkZWNpZGVzIHdoZXJlIHRoZSBjb250cm9sIHJlbmRlcnMgKGNvbXBvbmVudCB2cyByZXBvcnQgYmFyKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyIHtcbiAgaWQ6IG51bWJlcjtcbiAgY29tcG9uZW50SWQ6IG51bWJlcjtcbiAgZmlsdGVyR3JvdXBJZDogbnVtYmVyO1xuICBmaWx0ZXJDb2x1bW46IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIGhhc09wdGlvbnM6IGJvb2xlYW47XG4gIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vIE9uZSBjaG9pY2UgaW4gYSBzZWxlY3QgZmlsdGVyJ3Mgb3B0aW9uIGxpc3QuIFRoZSB2YWx1ZSBpcyB3aGF0IHRoZSBmaWx0ZXJcbi8vIG1hdGNoZXMgb24gYW5kIGdldHMgc3RvcmVkIGluIGEgc2F2ZWQgZGVmYXVsdCDigJQgZm9yIGFuIGVudGl0eSB0aGF0IGlzIGl0c1xuLy8gc3RhYmxlIGlkLCBuZXZlciBpdHMgbmFtZSwgc28gcmVuYW1pbmcgdGhlIGVudGl0eSBtb3ZlcyB0aGUgbGFiZWwgd2l0aG91dFxuLy8gYnJlYWtpbmcgdGhlIGRlZmF1bHQuIFRoZSBsYWJlbCBpcyBvbmx5IGV2ZXIgd2hhdCB0aGUgdmlld2VyIHJlYWRzLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJPcHRpb24ge1xuICB2YWx1ZTogdW5rbm93bjtcbiAgbGFiZWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGaWx0ZXJHcm91cCB7XG4gIGlkOiBudW1iZXI7XG4gIC8vIFRoZSBncm91cCdzIGlkZW50aWZpZXIsIHVuaXF1ZSBpbiB0aGUgcmVwb3J0OiBjYW1lbENhc2UsIGEgbGV0dGVyIGZpcnN0LFxuICAvLyB0aGVuIGxldHRlcnMgYW5kIGRpZ2l0cy4gU2V0IGFwYXJ0IGZyb20gdGhlIGxhYmVsOiBhIG5ldyBsYWJlbCBuZXZlclxuICAvLyBjaGFuZ2VzIGl0LCBhbmQgaXQgaXMgZWRpdGVkIG9uIGl0cyBvd24gKFJlcG9ydCBzZXR0aW5ncyA+IEZpbHRlcnMpLlxuICAvLyBUaWxlcyBhbmQgc2F2ZWQgZmlsdGVycyBiaW5kIHRoZSBncm91cCBieSBpZCwgbmV2ZXIgYnkgbmFtZS4gT3B0aW9uYWxcbiAgLy8gYmVjYXVzZSBhbiBvbGRlciBzZXJ2ZXIgc2VuZHMgbm9uZS5cbiAgbmFtZT86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHR5cGU6IFJlcG9ydEZpbHRlclR5cGU7XG4gIGxldmVsOiBSZXBvcnRGaWx0ZXJMZXZlbDtcbiAgb3JkZXI6IG51bWJlcjtcbiAgY29uZmlnOiB7IGRlZmF1bHQ/OiBGaWx0ZXJHcm91cERlZmF1bHQgfSAmIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBmaWx0ZXJzOiBSZXBvcnRGaWx0ZXJbXTtcbiAgLy8gVGhlIHBhZ2Ugd2hvc2UgcmVwb3J0IGJhciBzaG93cyB0aGUgZ3JvdXA6IHNldCBvbmx5IHdoZW4gbGV2ZWwgaXMgJ3BhZ2UnLFxuICAvLyBudWxsIG90aGVyd2lzZS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIHBhZ2VJZD86IG51bWJlciB8IG51bGw7XG4gIC8vIFRoZSBjb21wb25lbnRzIG9mIHRoZSBncm91cCdzIGFjdGl2ZSwgZW5hYmxlZCBtZW1iZXJzIHRoYXQgYXJlIHRpbGVzXG4gIC8vIChjaGFydCwgbGlzdCwgS1BJKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMuXG4gIGNvbXBvbmVudElkcz86IG51bWJlcltdO1xuICAvLyBUcnVlIHdoZW4gYW4gZW5hYmxlZCBtZW1iZXIgYmluZHMgc2V2ZXJhbCBjb2x1bW5zLCB3aGVyZSB2YWx1ZXMgY2Fubm90XG4gIC8vIGJlIGxlZnQgb3V0OiB0aGUgZ3JvdXAgb2ZmZXJzIG5vICdFeGNsdWRlIHRoZXNlJyAob2ZmZXJzRXhjbHVkZSkuIEFic2VudFxuICAvLyBvbiBvbGRlciBzZXJ2ZXJzLlxuICBtdWx0aUNvbHVtbj86IGJvb2xlYW47XG4gIC8vIEEgc2VsZWN0IGdyb3VwJ3MgbGFiZWwgZm9yIGEgYmxhbmsgcm93LCBudWxsIHdoZW4gYmxhbmsgcm93cyBoYXZlIG5vbmU6XG4gIC8vIGFuIGV4Y2x1ZGUgbGluZSBzYXlzIHdoZXRoZXIgdGhlIGJsYW5rIHJvd3MgYXJlIGtlcHQuIFNlbnQgZm9yIHNlbGVjdFxuICAvLyBncm91cHMgb25seSwgYW5kIGFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBibGFua0xhYmVsPzogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gQSBmaWx0ZXIgZ3JvdXAncyB2YWx1ZSBpbiBpdHMgc3RvcmVkIHNoYXBlOiBpdHMgYXV0aG9yZWQgZGVmYXVsdCAodGhlIHZhbHVlXG4vLyB0aGF0IHNlZWRzIHRoZSByZXBvcnQgYmFyIG9uIGV2ZXJ5IG9wZW4pLCBhbmQgYSB2YWx1ZSB0aGUgYXNzaXN0YW50IHJ1bnMgaXQgYXQuIFNoYXBlIGZvbGxvd3MgdGhlIGdyb3VwJ3MgdHlwZTogZGF0ZVJhbmdlXG4vLyB1c2VzIHN0YXJ0L2VuZCAoYSBmaXhlZCBjYWxlbmRhci1kYXkgcmFuZ2UpIG9yIGEgcmVsYXRpdmUgcHJlc2V0OyBzZWxlY3Rcbi8vIHVzZXMgdmFsdWVzIG9yIGV4Y2x1ZGVWYWx1ZXMsIG5ldmVyIGJvdGg7IGtleXdvcmQgdXNlcyB2YWx1ZTsgbnVtYmVyUmFuZ2Vcbi8vIHVzZXMgbWluIGFuZCBtYXguXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwRGVmYXVsdCB7XG4gIC8vIGRhdGVSYW5nZSByZWxhdGl2ZSBwcmVzZXQsIHJlc29sdmVkIG9uIGV2ZXJ5IG9wZW4gYWdhaW5zdCB0b2RheSBpbiB0aGVcbiAgLy8gcmVwb3J0J3MgZWZmZWN0aXZlIHpvbmUgKFJlcG9ydC5lZmZlY3RpdmVUaW1lem9uZSkuIE9uZSBvZjogdGhpc1dlZWssXG4gIC8vIGxhc3RXZWVrLCBsYXN0N0RheXMsIGxhc3QzMERheXMsIGxhc3QzTW9udGhzLCBsYXN0Nk1vbnRocywgbGFzdDEyTW9udGhzLFxuICAvLyB0aGlzTW9udGgsIHRoaXNRdWFydGVyLCB0aGlzWWVhci95ZWFyVG9EYXRlLiBXZWVrcyBydW4gTW9uZGF5IHRvIFN1bmRheSxcbiAgLy8gdGhlIHNhbWUgd2Vla3MgdGhlIHNlcnZlcidzIHdlZWtseSB0aW1lIGJ1Y2tldHMgdXNlLlxuICByZWxhdGl2ZT86IHN0cmluZztcbiAgc3RhcnQ/OiBzdHJpbmc7IC8vIGRhdGVSYW5nZSBmaXhlZCBzdGFydCAoeXl5eS1NTS1kZClcbiAgZW5kPzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgZW5kICh5eXl5LU1NLWRkKVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdCBkZWZhdWx0IHBpY2tlZCB2YWx1ZXNcbiAgdmFsdWU/OiBzdHJpbmc7IC8vIGtleXdvcmQgZGVmYXVsdCB0ZXh0XG4gIC8vIHNlbGVjdDogdGhlIHZhbHVlcyB0byBsZWF2ZSBvdXQgKHJvd3Mgd2l0aCBhIGJsYW5rIHZhbHVlIGFyZSBrZXB0KS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kcywgZWl0aGVyIG9uZSBvcGVuIChhYnNlbnQpLiAwIGlzIGFuXG4gIC8vIGVuZCBsaWtlIGFueSBvdGhlci5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFRoZSBzZXNzaW9uIHZhbHVlIG9mIGEgZmlsdGVyIGdyb3VwOiBzaGFwZSBkZXBlbmRzIG9uIHRoZSBncm91cCdzIHR5cGUuIE5vdFxuLy8gc3RvcmVkIG9uIHRoZSBzZXJ2ZXI6IGl0IGxpdmVzIGluIHRoZSBvcGVuIHJlcG9ydCdzIHN0YXRlXG4vLyAoUmVwb3J0RmlsdGVyU3RhdGVTZXJ2aWNlKS5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyR3JvdXBWYWx1ZSB7XG4gIHN0YXJ0PzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICBlbmQ/OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDsgLy8gZGF0ZVJhbmdlXG4gIHZhbHVlcz86IHVua25vd25bXTsgLy8gc2VsZWN0XG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkXG4gIC8vIGRhdGVSYW5nZSBvbmx5OiB0aGUgcmVsYXRpdmUgcHJlc2V0IG5hbWUgdGhlc2UgZGF0ZXMgd2VyZSByZXNvbHZlZCBmcm9tXG4gIC8vIChhIEZpbHRlckdyb3VwRGVmYXVsdC5yZWxhdGl2ZSBuYW1lKS4gU2V0IG9ubHkgd2hlbiB0aGUgdmFsdWUgd2FzIHNlZWRlZFxuICAvLyBmcm9tIHRoZSBncm91cCdzIHJlbGF0aXZlIGRlZmF1bHQsIHNvIHRoZSByYW5nZSBrZWVwcyByb2xsaW5nXG4gIC8vICgnbGFzdDMwRGF5cycpIGluc3RlYWQgb2YgZnJlZXppbmcgdHdvIGRhdGVzLCBhbmQgdGhlIGRhdGEgcmVxdWVzdCBuYW1lcyB0aGVcbiAgLy8gcGVyaW9kIGl0IGNvdmVycyAoc2VlXG4gIC8vIFJlc29sdmVkRmlsdGVyVmFsdWUucHJlc2V0KS4gQW55IGRhdGUgcGlja2VkIGJ5IHRoZSB2aWV3ZXIsIGEgZGF0ZSBwaWNrZXJcbiAgLy8gcHJlc2V0IGluY2x1ZGVkLCBpcyBzdG9yZWQgd2l0aG91dCBpdC5cbiAgcHJlc2V0Pzogc3RyaW5nO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0LiBTd2l0Y2hpbmcgYSBzZWxlY3QgYmV0d2VlbiBrZWVwaW5nIGFuZFxuICAvLyBsZWF2aW5nIG91dCBtb3ZlcyBpdHMgbGlzdCBmcm9tIHZhbHVlcyB0byBleGNsdWRlVmFsdWVzLlxuICBleGNsdWRlVmFsdWVzPzogdW5rbm93bltdO1xuICAvLyBudW1iZXJSYW5nZTogdGhlIGxvdyBhbmQgaGlnaCBlbmRzOyBudWxsIG9yIGFic2VudCA9IG9wZW4uXG4gIG1pbj86IG51bWJlciB8IG51bGw7XG4gIG1heD86IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgcmVsYXRpdmUgZGF0ZSByYW5nZSB0aGUgc2VydmVyIHJlc29sdmVzIGFnYWluc3QgdG9kYXkgaW4gdGhlIHJlcG9ydCdzXG4vLyB6b25lOiB0aGUgbmFtZXMgYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgYW5kIGEgdGltZWZyYW1lJ3MgcmFuZ2UgdGFrZS5cbi8vIE1pcnJvcnMgdGhlIHNlcnZlcidzIFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtIHZhbHVlIGZvciB2YWx1ZVxuLy8gKFJlcG9ydFJlbGF0aXZlUmFuZ2VFbnVtVGVzdCBwaW5zIHRoZSBkYXlzIGVhY2ggb25lIGNvdmVycykuXG5leHBvcnQgdHlwZSBSZXBvcnRSZWxhdGl2ZVJhbmdlID1cbiAgfCAndGhpc1dlZWsnXG4gIHwgJ2xhc3RXZWVrJ1xuICB8ICdsYXN0N0RheXMnXG4gIHwgJ2xhc3QzMERheXMnXG4gIHwgJ2xhc3QzTW9udGhzJ1xuICB8ICdsYXN0Nk1vbnRocydcbiAgfCAnbGFzdDEyTW9udGhzJ1xuICB8ICd0aGlzTW9udGgnXG4gIHwgJ3RoaXNRdWFydGVyJ1xuICB8ICd0aGlzWWVhcidcbiAgfCAneWVhclRvRGF0ZSc7XG5cbi8vIE9uZSByZXNvbHZlZCBmaWx0ZXIgc2VudCB3aXRoIGEgY29tcG9uZW50J3MgZGF0YSByZXF1ZXN0LlxuZXhwb3J0IGludGVyZmFjZSBSZXNvbHZlZEZpbHRlclZhbHVlIHtcbiAgZmlsdGVySWQ6IG51bWJlcjtcbiAgc3RhcnQ/OiBzdHJpbmc7XG4gIGVuZD86IHN0cmluZztcbiAgdmFsdWVzPzogdW5rbm93bltdO1xuICB2YWx1ZT86IHN0cmluZztcbiAgLy8gZGF0ZVJhbmdlIG9ubHk6IHRoZSByZWxhdGl2ZSByYW5nZSBzdGFydCBhbmQgZW5kIHN0aWxsIGFyZSwgc2VudCBvbmx5XG4gIC8vIHdoaWxlIHRoZXkgYXJlIGV4YWN0bHkgdGhhdCByYW5nZSByZXNvbHZlZCB0b2RheSBpbiB0aGUgcmVwb3J0J3Mgem9uZS4gSXRcbiAgLy8gdGVsbHMgdGhlIHNlcnZlciB3aGljaCBwZXJpb2QgdGhlIGRheXMgY292ZXIgKG9uIHRoZSBmaXJzdCBkYXlzIG9mIGFcbiAgLy8gcXVhcnRlciwgdGhpc01vbnRoIGFuZCB0aGlzUXVhcnRlciBhcmUgdGhlIHNhbWUgZGF5cyksIHNvIGEgY29tcGFyaXNvblxuICAvLyBzaGlmdHMgYnkgdGhlIHJpZ2h0IHVuaXQuIHN0YXJ0IGFuZCBlbmQgc3RheSB0aGUgd2luZG93OyBhIHNlcnZlciB0aGF0XG4gIC8vIGRvZXMgbm90IGtub3cgdGhlIGtleSBpZ25vcmVzIGl0LlxuICBwcmVzZXQ/OiBSZXBvcnRSZWxhdGl2ZVJhbmdlO1xuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0IChzZW50IGluc3RlYWQgb2YgdmFsdWVzKS5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kczsgYW4gb3BlbiBlbmQgaXMgbGVmdCBvdXQsIDAgaXMgc2VudC5cbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG59XG5cbi8vIFBlci1jb21wb25lbnQgaW50ZXJhY3Rpb24gc3RhdGUgc2VudCB3aXRoIHRoZSBkYXRhIHJlcXVlc3Q6IGxpc3RzIHNlbmRcbi8vIHNvcnQvcGFnaW5nIGFuZCB0aGUgdGV4dCBpbiB0aGVpciBzZWFyY2ggYm94OyB0aGUgdGlsZXMgdGhhdCBmb2xsb3cgdGhlXG4vLyBncm91cC1ieSAoZm9sbG93c0dyb3VwQnkpIHNlbmQgdGhlIGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgY29udHJvbCwgd2hpY2ggb3ZlcnJpZGVzIHRoZSBhdXRob3JlZFxuLy8gZ3JhbnVsYXJpdHkgZm9yIHRoYXQgcmVxdWVzdCBvbmx5LiBUaGUgd2lyZSBrZXkgc3RheXMgYGZyZXF1ZW5jeWAg4oCUIGl0IGlzIHRoZVxuLy8gYnVja2V0aW5nIGZyZXF1ZW5jeSB0aGUgc2VydmVyIGFwcGxpZXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGFTdGF0ZSB7XG4gIHNvcnQ/OiBSZXBvcnRTb3J0O1xuICBwYWdlPzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbiAgZnJlcXVlbmN5PzogQ2hhcnRHcmFudWxhcml0eTtcbiAgLy8gQSBsaXN0J3Mgc2VhcmNoIGJveCB0ZXh0LiBUaGUgc2VydmVyIHRyaW1zIGl0LCBjdXRzIGl0IHRvIGl0cyBvd24gbWF4aW11bVxuICAvLyBsZW5ndGggYW5kIG1hdGNoZXMgaXQgYWdhaW5zdCBldmVyeSB0ZXh0IGNvbHVtbiB0aGUgbGlzdCBzaG93cy5cbiAgc2VhcmNoPzogc3RyaW5nO1xuICAvLyBUaGUgY29uZmlnIGNvbHVtbiBuYW1lcyBhIHZpZXdlciBoaWQgb24gYSBwbGFpbiBsaXN0LiBTZW50IHdpdGggYSBDU1ZcbiAgLy8gZXhwb3J0IG9ubHkgKHRoZSBzY3JlZW4gaGlkZXMgdGhlbSBpdHNlbGYpOiB0aGUgZmlsZSBsZWF2ZXMgdGhlbSBvdXQuIFRoZVxuICAvLyBzZXJ2ZXIgaWdub3JlcyBpdCBvbiBhIGNyb3NzLXRhYiwgYW5kIHdoZW4gaXQgd291bGQgaGlkZSBldmVyeSBjb2x1bW4uXG4gIGhpZGRlbkNvbHVtbnM/OiBzdHJpbmdbXTtcbiAgLy8gQSBjaGFydCdzIGRyaWxsIHBhdGgsIHRvcCBmaXJzdC4gVGhlIGRyaWxsZWQgbGV2ZWwgd2lucyBvdmVyIGZyZXF1ZW5jeVxuICAvLyBmb3IgdGhpcyB0aWxlLlxuICBkcmlsbD86IFJlcG9ydERyaWxsU3RlcFtdO1xuICAvLyBXaGlsZSBtYXRjaCBpcyBhbnk6IHRoZSBlbGlnaWJsZSBncm91cHMgdGhhdCBoYXZlIGEgdmFsdWUuXG4gIG1hdGNoQW55R3JvdXBJZHM/OiBudW1iZXJbXTtcbiAgLy8gQSB0YWJsZSdzIGxheW91dCBhcyB0aGUgdmlld2VyIGNoYW5nZWQgaXQsIHNlbnQgd2l0aCBhIGZpbGUgKHRoZSBDU1YsXG4gIC8vIHRoZSB6aXApIHNvIGl0IGhvbGRzIHdoYXQgdGhlIHNjcmVlbiBzaG93cy4gQWJzZW50OiB0aGUgc3RvcmVkIGxheW91dC5cbiAgbGF5b3V0PzogR3JpZExheW91dDtcbiAgLy8gU2V0IG9ubHkgb24gYSByZXF1ZXN0IHNlbnQgYmVjYXVzZSB0aGUgY3Jvc3MtZmlsdGVyIGNoYW5nZWQsIGZvciBhIHRpbGVcbiAgLy8gd2hvc2UgbGFzdCByZWFkIGFwcGxpZWQgbm8gY3Jvc3MgZW50cnk6IHRoZSBzZXJ2ZXIgbWF5IGFuc3dlclxuICAvLyB1bmNoYW5nZWQgaW5zdGVhZCBvZiByZWFkaW5nIHRoZSByb3dzIGFnYWluLiBFeHBvcnRzIG5ldmVyIHNldCBpdC5cbiAgdW5jaGFuZ2VkSWZVbnJlYWNoZWQ/OiB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudERhdGEge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgcm93czogUmVjb3JkPHN0cmluZywgdW5rbm93bj5bXTtcbiAgcGFnaW5nPzogeyB0b3RhbDogbnVtYmVyOyBwYWdlOiBudW1iZXI7IHBhZ2VTaXplOiBudW1iZXIgfTtcbiAgdHJ1bmNhdGVkOiBib29sZWFuO1xuICAvLyBUaGUgZWZmZWN0aXZlIHRpbWUgYnVja2V0IHRoZSByb3dzIHdlcmUgZ3JvdXBlZCBpbnRvIChhZnRlciBhbnkgZ3JvdXAtYnlcbiAgLy8gb3ZlcnJpZGUpLCBvciBudWxsIGZvciBhIG5vbi10aW1lIGF4aXMuIERyaXZlcyB0aGUgY29tcGFjdCB4LWF4aXMgbGFiZWxzLlxuICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBzZWFyY2hlZCBsaXN0IHdob3NlIHNlYXJjaCBjb3VsZCBub3QgYXBwbHkgKHRoZSBsaXN0IGhhcyBub1xuICAvLyB0ZXh0IGNvbHVtbiB0byBzZWFyY2gpOiB3aHkgdGhlIHJvd3MgYXJlIG5vdCBuYXJyb3dlZC4gQWJzZW50IG90aGVyd2lzZS5cbiAgc2VhcmNoTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFBhZ2UgMSBvZiBhIGxpc3Qgd2l0aCBjb25maWcudG90YWxzIG9uOiBpdHMgdG90YWxzIHJvdywgYXMgcmF3IHZhbHVlc1xuICAvLyBrZXllZCBsaWtlIHRoZSBjb2x1bW5zIChhIHBsYWluIGxpc3QncyBtZWFzdXJlIGFsaWFzZXM7IGEgY3Jvc3MtdGFiJ3NcbiAgLy8gcGl2b3QgY2VsbCBjb2x1bW5zLCB0aGUgcm93LWtleSBjb2x1bW4gYWJzZW50KSwgb3IgbnVsbCB3aXRoIHRvdGFsc05vdGVcbiAgLy8gc2F5aW5nIHdoeSB0aGVyZSBpcyBub25lLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgcGFnZSBhbmQgbGlzdC5cbiAgdG90YWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCBudWxsO1xuICB0b3RhbHNOb3RlPzogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHdpbmRvdyBvZiBkYXlzIHRoZSBjb21wb25lbnQgcmVhZHMsIHdoZW4gaXRzIHF1ZXJ5IGhhcyBhIHRpbWVmcmFtZS5cbiAgLy8gQWJzZW50IG90aGVyd2lzZSwgYW5kIGZyb20gb2xkZXIgc2VydmVycy5cbiAgdGltZWZyYW1lPzogQ29tcG9uZW50VGltZWZyYW1lIHwgbnVsbDtcbiAgLy8gVGhlIGN1cnJlbnQgYW5kIHByaW9yIHdpbmRvd3Mgb2YgYSBjb21wb25lbnQgd2hvc2UgbWVhc3VyZXMgY29tcGFyZVxuICAvLyBhZ2FpbnN0IGFuIGVhcmxpZXIgcGVyaW9kLiBBYnNlbnQgd2hlbiBubyBtZWFzdXJlIGNvbXBhcmVzLiBTZW50IG9uIGV2ZXJ5XG4gIC8vIGxpc3QgcGFnZSBhbmQgb24gY2hhcnQgYW5kIEtQSSBkYXRhLlxuICBjb21wYXJpc29uPzogQ29tcG9uZW50Q29tcGFyaXNvbiB8IG51bGw7XG4gIC8vIFdoYXQgZWFjaCBjb21wYXJlZCwgd2luZG93ZWQsIHJhbmtlZCBvciBzaGFyZWQgb3V0cHV0IGNvbHVtbiBpcywgYnkgYWxpYXMuXG4gIC8vIFBsYWluIG1lYXN1cmUgY29sdW1ucyBhcmUgbGVmdCBvdXQuXG4gIG91dHB1dHM/OiBSZWNvcmQ8c3RyaW5nLCBPdXRwdXRNZXRhPjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogdGhlIG1lYXN1cmUgYWxpYXMgZWFjaCBwaXZvdCBjZWxsIGNvbHVtbiBob2xkcywgc28gYVxuICAvLyBjZWxsIHRha2VzIGl0cyBtZWFzdXJlJ3Mgb3V0cHV0IG1lYW5pbmcuIE5ldmVyIHNlbnQgZm9yIGEgc3FsLW1vZGUgbGlzdC5cbiAgY2VsbE1lYXN1cmVzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLy8gSG93IGVhY2ggd2luZG93ZWQgb3V0cHV0IGNvbHVtbiAocnVubmluZywgdG8tZGF0ZSBvciByb2xsaW5nKSB3YXNcbiAgLy8gY29tcHV0ZWQsIGJ5IGFsaWFzLlxuICB3aW5kb3dzPzogUmVjb3JkPHN0cmluZywgV2luZG93TWV0YT47XG4gIC8vIEEgS1BJIHdpdGggYSBjb21wYXJpc29uLCBhIHRhcmdldCBvciBhIHNwYXJrbGluZTogZXZlcnkgbnVtYmVyIHRoZSBjYXJkXG4gIC8vIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUsIGRlY2lkZWQgYnkgdGhlIHNlcnZlci5cbiAga3BpPzogQ29tcG9uZW50S3BpIHwgbnVsbDtcbiAgLy8gVGhlIHRpbWUtYXhpcyB2YWx1ZSBvZiB0aGUgYnVja2V0IGNvbnRhaW5pbmcgdG9kYXksIHdyaXR0ZW4gYXMgdGhlIHJvd3NcbiAgLy8gd3JpdGUgaXQsIHdoZW4gdGhhdCBidWNrZXQgaXMgbm90IGZpbmlzaGVkIHlldDsgbnVsbCBvdGhlcndpc2UuIEEgY2hhcnRcbiAgLy8gbWFya3MgaXQgYXMgcGFydGlhbC5cbiAgcGFydGlhbFBlcmlvZD86IHN0cmluZyB8IG51bGw7XG4gIC8vIFdoaWNoIGZpbHRlcnMgdGhlIHJlYWQgYXBwbGllZC4gQWJzZW50IGZyb20gb2xkZXIgc2VydmVycy5cbiAgYXBwbGllZD86IENvbXBvbmVudERhdGFBcHBsaWVkO1xuICAvLyBBIGRyaWxsYWJsZSBjaGFydCdzIGRyaWxsIHN0YXRlLiBBYnNlbnQgb24gZXZlcnkgb3RoZXIgdGlsZSBhbmQgZnJvbVxuICAvLyBvbGRlciBzZXJ2ZXJzLlxuICBkcmlsbD86IENvbXBvbmVudERhdGFEcmlsbDtcbn1cblxuLy8gV2hlcmUgYSBjb21wb25lbnQncyB0aW1lZnJhbWUgd2luZG93IGNhbWUgZnJvbTogYSB2aWV3ZXIgZGF0ZVJhbmdlIGJvdW5kIHRvXG4vLyB0aGUgdGltZWZyYW1lIGNvbHVtbiAod2hpY2ggcmVwbGFjZXMgdGhlIGF1dGhvcmVkIHJhbmdlLCBuZXZlciBuYXJyb3dzXG4vLyBpdCksIHRoZSBhdXRob3JlZCByZWxhdGl2ZSByYW5nZSwgdGhlIGF1dGhvcmVkIGZpeGVkIGRheXMsIG9yIG5vdGhpbmcgKGFuXG4vLyBvcGVuIHdpbmRvdykuXG5leHBvcnQgdHlwZSBUaW1lZnJhbWVTb3VyY2UgPSAnZmlsdGVyJyB8ICdyYW5nZScgfCAnZml4ZWQnIHwgJ25vbmUnO1xuXG4vLyBUaGUgd2luZG93IGEgY29tcG9uZW50J3MgdGltZWZyYW1lIHJlc29sdmVkIHRvLiBzdGFydCBhbmQgZW5kIGFyZVxuLy8gaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLCB3cml0dGVuIHdpdGhvdXQgYSB6b25lLlxuLy8gdGhyb3VnaCBpcyB0aGUgVVRDICd5eXl5LU1NLWRkIEhIOm1tOnNzJyBpbnN0YW50IGEgd2luZG93IG9uIGEgZGF0ZXRpbWVcbi8vIGNvbHVtbiBpcyBjdXQgYXQ7IGl0IHJlYWRzIGFzIGEgdGltZSBpbiB0aGUgcmVwb3J0IHpvbmUuIEl0IGlzIHNldCBvbmx5IHdoZW5cbi8vIGEgY29tcGFyaXNvbiBjdXRzIGEgd2luZG93IHRoYXQgZW5kcyB0b2RheTogYSB0aW1lZnJhbWUgb24gaXRzIG93biByZWFkc1xuLy8gd2hvbGUgZGF5cywgc28gYSB3aW5kb3cgZW5kaW5nIHRvZGF5IHdpdGhvdXQgYSBjb21wYXJpc29uIHNlbmRzIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFRpbWVmcmFtZSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xuICByYW5nZTogUmVwb3J0UmVsYXRpdmVSYW5nZSB8IG51bGw7XG4gIHNvdXJjZTogVGltZWZyYW1lU291cmNlO1xufVxuXG4vLyBIb3cgYSBjb21wYXJpc29uIGlzIGxhaWQgb3V0OiBvbmUgdmFsdWUgcGVyIHdpbmRvdyAocmFuZ2UpLCBhIHByaW9yIHNlcmllc1xuLy8gYmVzaWRlIGEgdGltZSBheGlzIChzZXJpZXMpLCBvciBlYWNoIHBlcmlvZCdzIHZhbHVlIHJlYWQgYXQgaXRzIGVuZCwgc2V0XG4vLyBhZ2FpbnN0IHRoZSB2YWx1ZSBhdCB0aGUgZW5kIG9mIGFuIGVhcmxpZXIgcGVyaW9kIChwZXJpb2RfZW5kKS5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25Nb2RlID0gJ3JhbmdlJyB8ICdzZXJpZXMnIHwgJ3BlcmlvZF9lbmQnO1xuXG4vLyB0b19kYXRlIGNvbXBhcmVzIGxpa2Ugd2l0aCBsaWtlICh0aGUgZmlyc3QgMiBkYXlzIG9mIGEgbW9udGggYWdhaW5zdCB0aGVcbi8vIGZpcnN0IDIgZGF5cyBvZiB0aGUgb25lIGJlZm9yZSk7IGZ1bGwgY29tcGFyZXMgd2hvbGUgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIENvbXBhcmlzb25BbGlnbiA9ICd0b19kYXRlJyB8ICdmdWxsJztcblxuLy8gV2hhdCBhIG1lYXN1cmUgaXMgY29tcGFyZWQgYWdhaW5zdC4gTWlycm9ycyB0aGUgc2VydmVyJ3Ncbi8vIENvbXBhcmlzb25BZ2FpbnN0RW51bSB2YWx1ZSBmb3IgdmFsdWUuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uQWdhaW5zdCA9XG4gIHwgJ3ByZXZpb3VzX3BlcmlvZCdcbiAgfCAncHJldmlvdXNfd2VlaydcbiAgfCAncHJldmlvdXNfbW9udGgnXG4gIHwgJ3ByZXZpb3VzX3F1YXJ0ZXInXG4gIHwgJ3ByZXZpb3VzX3llYXInXG4gIHwgJ3JhbmdlJztcblxuLy8gV2h5IGEgY29tcGFyaXNvbiByZWFkcyBhcyBpdCBkb2VzLiBUaGUgc2VydmVyIHNlbmRzIGNvZGVzLCBuZXZlclxuLy8gc2VudGVuY2VzOyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG4vLyAtIG5vX3dpbmRvdzogbm8gZGF0ZSByYW5nZSB0byBjb21wYXJlIHlldDtcbi8vIC0gdW5pdF9pbmZlcnJlZDogdGhlIHBlcmlvZCB1bml0IHdhcyBpbmZlcnJlZCBmcm9tIHRoZSBkYXlzLCBub3QgbmFtZWQ7XG4vLyAtIHdpbmRvd19pbl9mdXR1cmU6IHRoZSB3aW5kb3cgc3RhcnRzIGFmdGVyIHRvZGF5O1xuLy8gLSBvdGhlcl9kYXRlX2ZpbHRlcjogYSBkYXRlIGZpbHRlciBvbiBhbm90aGVyIGNvbHVtbiBhbHNvIGFwcGxpZXM7XG4vLyAtIGdyYWluX2ZvbGxvd2VkOiB0aGUgcHJpb3IgZm9sbG93cyB0aGUgZ3JvdXAtYnkgZ3JhaW4gcGlja2VkIG9uIHRoZSByZXBvcnQuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTm90ZUNvZGUgPVxuICB8ICdub193aW5kb3cnXG4gIHwgJ3VuaXRfaW5mZXJyZWQnXG4gIHwgJ3dpbmRvd19pbl9mdXR1cmUnXG4gIHwgJ290aGVyX2RhdGVfZmlsdGVyJ1xuICB8ICdncmFpbl9mb2xsb3dlZCc7XG5cbi8vIE9uZSBjb21wYXJpc29uIHdpbmRvdzogaW5jbHVzaXZlICd5eXl5LU1NLWRkJyBkYXlzIGluIHRoZSByZXBvcnQncyB6b25lLFxuLy8gYW5kIHRoZSBVVEMgaW5zdGFudCBpdCBpcyBjdXQgYXQgd2hlbiBpdCBlbmRzIHRvZGF5IG9uIGEgZGF0ZXRpbWUgY29sdW1uLlxuLy8gSW4gc2VyaWVzIG1vZGUgaXQgaXMgdGhlIHNwYW4gdGhlIGNoYXJ0IHNob3dzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wYXJpc29uV2luZG93IHtcbiAgc3RhcnQ6IHN0cmluZztcbiAgZW5kOiBzdHJpbmc7XG4gIHRocm91Z2g6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEhvdyBmYXIgYmFjayBvbmUgcHJpb3IgbGFuZSBzaXRzLiBBIGN1c3RvbSByYW5nZSBoYXMgbm8gdW5pdCBvciBjb3VudCwgYW5kXG4vLyBuZWl0aGVyIGRvZXMgcHJldmlvdXNfcGVyaW9kIHdoZW4gdGhlcmUgaXMgbm8gY3VycmVudCB3aW5kb3cgdG8gbWVhc3VyZVxuLy8gKG5vX3dpbmRvdywgd2luZG93X2luX2Z1dHVyZSk7IGEgc2hpZnQgYnkgdGhlIHdpbmRvdydzIGxlbmd0aCBpcyB1bml0IGRheVxuLy8gd2l0aCB0aGUgbGVuZ3RoIGFzIHRoZSBjb3VudDsgYSBwcmV2aW91cyB5ZWFyIGlzIDM2NCBkYXlzIG9uIGEgZGF5IGF4aXMgYW5kXG4vLyA1MiB3ZWVrcyBvbiBhIHdlZWsgYXhpcy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvbk9mZnNldCB7XG4gIGFnYWluc3Q6IENvbXBhcmlzb25BZ2FpbnN0O1xuICB1bml0OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgY291bnQ6IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgY29tcG9uZW50J3MgY29tcGFyaXNvbjogdGhlIHpvbmUgaXRzIGRheXMgYXJlIGluLCB0aGUgY3VycmVudCB3aW5kb3dcbi8vIChudWxsIHdoZW4gdGhlcmUgaXMgbm8gd2luZG93IHRvIGNvbXBhcmUgeWV0LCBvciB3aGVuIGEgdGltZSBheGlzIHJ1bnNcbi8vIG92ZXIgYWxsIHRoZSBkYXRhLCB3aGljaCBoYXMgbm8gZmlyc3QgZGF5IHRvIG5hbWUpIGFuZCB1cCB0byAyIHByaW9yXG4vLyBsYW5lczogb2Zmc2V0c1tpXSBkZXNjcmliZXMgbGFuZSBpICsgMSwgYW5kIHByaW9yc1tpXSBpdHMgd2luZG93LiBXaXRoIG5vXG4vLyBjdXJyZW50IHdpbmRvdyBwcmlvcnMgaXMgZW1wdHksIHdoaWxlIG9mZnNldHMgc3RpbGwgbmFtZXMgZXZlcnkgbGFuZS5cbi8vIGZsb29yIGlzIHRoZSAneXl5eS1NTS1kZCcgZGF5IG9mIHRoZSBmaXJzdCByb3cgdGhlIHF1ZXJ5J3Mgb3duIGNvbmRpdGlvbnNcbi8vIGtlZXAgKHZpZXdlciBmaWx0ZXJzIGFzaWRlKTogYSBwcmlvciB3aW5kb3cgd2hvbGx5IGJlZm9yZSBpdCBoYXMgbm8gZGF0YVxuLy8gcmF0aGVyIHRoYW4gYSB6ZXJvLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRDb21wYXJpc29uIHtcbiAgbW9kZTogQ29tcGFyaXNvbk1vZGU7XG4gIHRpbWV6b25lOiBzdHJpbmc7XG4gIGFsaWduOiBDb21wYXJpc29uQWxpZ247XG4gIGN1cnJlbnQ6IENvbXBhcmlzb25XaW5kb3cgfCBudWxsO1xuICBwcmlvcnM6IENvbXBhcmlzb25XaW5kb3dbXTtcbiAgb2Zmc2V0czogQ29tcGFyaXNvbk9mZnNldFtdO1xuICBmbG9vcjogc3RyaW5nIHwgbnVsbDtcbiAgbm90ZXM6IENvbXBhcmlzb25Ob3RlQ29kZVtdO1xufVxuXG4vLyBXaGF0IGFuIG91dHB1dCBjb2x1bW4gaG9sZHM6IGEgbWVhc3VyZSdzIHZhbHVlLCBpdHMgcmFuayBvciBpdHMgc2hhcmUuXG5leHBvcnQgdHlwZSBPdXRwdXRLaW5kID0gJ3ZhbHVlJyB8ICdyYW5rJyB8ICdzaGFyZSc7XG5cbi8vIFdoaWNoIHNpZGUgb2YgYSBjb21wYXJpc29uIGFuIG91dHB1dCBjb2x1bW4gaXM6IHRoZSBjdXJyZW50IHZhbHVlLCB0aGVcbi8vIHByaW9yIG9uZSwgdGhlaXIgZGlmZmVyZW5jZSwgb3IgdGhlIGRpZmZlcmVuY2UgYXMgYSAwLTEgZnJhY3Rpb24gb2YgdGhlXG4vLyBwcmlvci4gbnVsbCBmb3IgYW4gb3V0cHV0IHRoYXQgaXMgbm90IGNvbXBhcmVkLlxuZXhwb3J0IHR5cGUgT3V0cHV0Um9sZSA9ICdjdXJyZW50JyB8ICdwcmlvcicgfCAnY2hhbmdlJyB8ICdwZXJjZW50X2NoYW5nZSc7XG5cbi8vIEhvdyB0aWVkIHZhbHVlcyByYW5rOiAxLCAxLCAzIChjb21wZXRpdGlvbikgb3IgMSwgMSwgMiAoZGVuc2UpLlxuZXhwb3J0IHR5cGUgT3V0cHV0UmFua01ldGhvZCA9ICdjb21wZXRpdGlvbicgfCAnZGVuc2UnO1xuXG4vLyBBIHJhbmsgb3V0cHV0OiBob3cgdGllcyByYW5rLCB3aGljaCBlbmQgcmFua3MgMSAoZGVzYzogdGhlIGxhcmdlc3QpLCBhbmRcbi8vIHRoZSBkaW1lbnNpb24gb3V0cHV0cyBpdCByZXN0YXJ0cyB3aXRoaW4gKG5vbmU6IHRoZSB3aG9sZSByZXN1bHQpLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRSYW5rIHtcbiAgbWV0aG9kOiBPdXRwdXRSYW5rTWV0aG9kO1xuICBkaXJlY3Rpb246ICdhc2MnIHwgJ2Rlc2MnO1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBBIHNoYXJlIG91dHB1dDogdGhlIGRpbWVuc2lvbiBvdXRwdXRzIHdob3NlIHRvdGFsIGl0IGlzIGEgc2hhcmUgb2YgKG5vbmU6XG4vLyB0aGUgd2hvbGUgcmVzdWx0KS5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0U2hhcmUge1xuICB3aXRoaW46IHN0cmluZ1tdO1xufVxuXG4vLyBUaGUgbWVhbmluZyBvZiBvbmUgY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4uXG4vLyBtZWFzdXJlIGlzIHRoZSBzb3VyY2UgbWVhc3VyZSdzIGFsaWFzLCB3aG9zZSBmb3JtYXQgdGhlIGNvbHVtbiBpbmhlcml0cztcbi8vIG9mZnNldCBpcyB0aGUgcHJpb3IgbGFuZSBhIHByaW9yLCBjaGFuZ2Ugb3IgcGVyY2VudCBjaGFuZ2UgYmVsb25ncyB0byAoaXRzXG4vLyB3aW5kb3cgaXMgY29tcGFyaXNvbi5wcmlvcnNbb2Zmc2V0IC0gMV0pLiBVbmxlc3MgdGhlIGNvbmZpZyBmb3JtYXRzIGl0LCBhXG4vLyBzaGFyZSBwcmludHMgYXMgYSBwZXJjZW50IHRvIDEgZGVjaW1hbCBhbmQgYSByYW5rIGFzIGEgd2hvbGUgbnVtYmVyLlxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXRNZXRhIHtcbiAgbWVhc3VyZTogc3RyaW5nO1xuICBraW5kOiBPdXRwdXRLaW5kO1xuICByb2xlOiBPdXRwdXRSb2xlIHwgbnVsbDtcbiAgb2Zmc2V0OiBudW1iZXIgfCBudWxsO1xuICB3aW5kb3c6IGJvb2xlYW47XG4gIHJhbms6IE91dHB1dFJhbmsgfCBudWxsO1xuICBzaGFyZTogT3V0cHV0U2hhcmUgfCBudWxsO1xufVxuXG4vLyBBIHdpbmRvdyBvdmVyIHRoZSByb3dzOiBhIHJ1bm5pbmcgdG90YWwsIGEgdG90YWwgdG8gZGF0ZSB3aXRoaW4gZWFjaFxuLy8gcGVyaW9kIChtb250aCB0byBkYXRlKSwgb3IgYSByb2xsaW5nIHNwYW4gb2YgcGVyaW9kcy5cbmV4cG9ydCB0eXBlIFdpbmRvd0tpbmQgPSAncnVubmluZycgfCAndG9fZGF0ZScgfCAncm9sbGluZyc7XG5cbi8vIFdoeSBhIHdpbmRvdyByZWFkcyBhcyBpdCBkb2VzLiBDb2RlcyBvbmx5OyB0aGUgdmlld2VyIHdvcmRzIHRoZW0uXG5leHBvcnQgdHlwZSBXaW5kb3dOb3RlQ29kZSA9XG4gIHwgJ3NuYXBwZWRfc3RhcnQnXG4gIHwgJ3NwYW5fY29udmVydGVkJ1xuICB8ICdncmFpbl90b29fY29hcnNlJ1xuICB8ICdlcXVhbF9ncmFpbl9wbGFpbidcbiAgfCAnb3duX2ZpbHRlcl9jYXBzX2xlYWRfaW4nXG4gIHwgJ3dlZWtfYnlfbW9uZGF5J1xuICB8ICdpbmNvbXBsZXRlX2hlYWQnO1xuXG4vLyBIb3cgb25lIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gd2FzIGNvbXB1dGVkLiBwZXJpb2RzIGFuZCB1bml0IHNpemUgYVxuLy8gcm9sbGluZyB3aW5kb3cgKGRyYXduUGVyaW9kcyBpcyB0aGF0IHNwYW4gY291bnRlZCBpbiB0aGUgZ3JhaW4gdGhlIHJvd3Ncbi8vIGFyZSBkcmF3biBhdCk7IHJlc2V0RXZlcnkgcmVzdGFydHMgYSB0by1kYXRlIHdpbmRvdzsgYXZlcmFnZSBtYWtlcyB0aGVcbi8vIHdpbmRvdyBhbiBhdmVyYWdlIHJhdGhlciB0aGFuIGEgdG90YWw7IGZyb21CZWdpbm5pbmdcbi8vIHJ1bnMgYSB0b3RhbCBmcm9tIHRoZSBmaXJzdCByb3cgZXZlciByYXRoZXIgdGhhbiBmcm9tIHRoZSBmaXJzdCByb3cgc2hvd24uXG4vLyBzdGFydCwgZW5kIGFuZCBsZWFkSW4gYXJlICd5eXl5LU1NLWRkJyByZXBvcnQtem9uZSBkYXlzOiB0aGUgcm93cyBzaG93bixcbi8vIGFuZCB0aGUgZWFybGllciBkYXkgdGhlIHdpbmRvdyByZWFkcyBmcm9tIHNvIGl0cyBmaXJzdCByb3dzIGFyZSB3aG9sZS5cbi8vIGRlc2NyaXB0aW9uIGlzIHRoZSBzZXJ2ZXIncyBFbmdsaXNoIGZvciB0aGUgYWdlbnQgYW5kIHRoZSBleHBvcnRzOyB0aGVcbi8vIHZpZXdlciBjb21wb3NlcyBpdHMgb3duIHdvcmRzIGZyb20gdGhlIGZpZWxkcy5cbmV4cG9ydCBpbnRlcmZhY2UgV2luZG93TWV0YSB7XG4gIGtpbmQ6IFdpbmRvd0tpbmQ7XG4gIHBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHVuaXQ6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBkcmF3blBlcmlvZHM6IG51bWJlciB8IG51bGw7XG4gIHJlc2V0RXZlcnk6IENoYXJ0R3JhbnVsYXJpdHkgfCBudWxsO1xuICBhdmVyYWdlOiBib29sZWFuO1xuICBmcm9tQmVnaW5uaW5nOiBib29sZWFuO1xuICBkYXRlQ29sdW1uOiBzdHJpbmcgfCBudWxsO1xuICBzdGFydDogc3RyaW5nIHwgbnVsbDtcbiAgZW5kOiBzdHJpbmcgfCBudWxsO1xuICBsZWFkSW46IHN0cmluZyB8IG51bGw7XG4gIG5vdGVzOiBXaW5kb3dOb3RlQ29kZVtdO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vLyBXaGljaCBkZWx0YSBhIEtQSSBjYXJkIHNob3dzOiB0aGUgZGlmZmVyZW5jZSwgb3IgdGhlIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpRGVsdGFTaG93ID0gJ2NoYW5nZScgfCAncGVyY2VudF9jaGFuZ2UnO1xuXG4vLyBXaHkgYSBLUEkncyBkZWx0YSByZWFkcyBhcyBpdCBkb2VzOlxuLy8gLSBub19wcmlvcl9kYXRhOiB0aGUgcHJpb3Igd2luZG93IGhhcyBubyB2YWx1ZTtcbi8vIC0gdXBfZnJvbV96ZXJvOiB0aGUgcHJpb3Igd2FzIDAsIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlO1xuLy8gLSBub19jaGFuZ2U6IGJvdGggYXJlIDA7XG4vLyAtIG5vX2RhdGFfZWl0aGVyOiBuZWl0aGVyIHdpbmRvdyBoYXMgYSB2YWx1ZTtcbi8vIC0gc2lnbl9jaGFuZ2U6IHRoZSB2YWx1ZSBjcm9zc2VkIHplcm8sIHNvIHRoZXJlIGlzIG5vIHBlcmNlbnQgY2hhbmdlLlxuZXhwb3J0IHR5cGUgS3BpTm90ZUNvZGUgPVxuICB8ICdub19wcmlvcl9kYXRhJ1xuICB8ICd1cF9mcm9tX3plcm8nXG4gIHwgJ25vX2NoYW5nZSdcbiAgfCAnbm9fZGF0YV9laXRoZXInXG4gIHwgJ3NpZ25fY2hhbmdlJztcblxuLy8gQSBLUEkncyBwcm9ncmVzcyB0b3dhcmQgaXRzIGNvbmZpZ3VyZWQgdGFyZ2V0LiBwcm9ncmVzcyBpcyB2YWx1ZSAvIHRhcmdldFxuLy8gKG51bGwgd2hlbiB0aGUgdGFyZ2V0IGlzIDApOyBtZXQgZm9sbG93cyB0aGUgY29uZmlnJ3MgaW5jcmVhc2VJcyAobnVsbFxuLy8gd2hlbiBpdCBpcyBuZXV0cmFsKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpVGFyZ2V0IHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIHByb2dyZXNzOiBudW1iZXIgfCBudWxsO1xuICBtZXQ6IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgc3BhcmtsaW5lIHBvaW50OiB0aGUgcGVyaW9kLCB3cml0dGVuIGFzIGEgdGltZS1heGlzIHZhbHVlLCBhbmQgdGhlXG4vLyB2YWx1ZSBpbiBpdCAobnVsbCB3aGVuIGEgbm9uLWFkZGl0aXZlIG1lYXN1cmUgaGFzIG5vIHJvd3MgdGhlcmUpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlTcGFya2xpbmVQb2ludCB7XG4gIHBlcmlvZDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gQSBLUEkncyBzcGFya2xpbmUgcG9pbnRzLCBvbGRlc3QgZmlyc3QuIHBhcnRpYWwgc2F5cyB0aGUgbGFzdCBwZXJpb2QgaXNcbi8vIG5vdCBmaW5pc2hlZCB5ZXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVNwYXJrbGluZSB7XG4gIGdyYW51bGFyaXR5OiBDaGFydEdyYW51bGFyaXR5O1xuICBwYXJ0aWFsOiBib29sZWFuO1xuICBwb2ludHM6IENvbXBvbmVudEtwaVNwYXJrbGluZVBvaW50W107XG59XG5cbi8vIEV2ZXJ5IG51bWJlciBhIEtQSSBjYXJkIHNob3dzIGJlc2lkZSBpdHMgdmFsdWUuIHNob3cgbmFtZXMgdGhlIGRlbHRhIHRvXG4vLyBwcmludCwgZGVjaWRlZCBieSB0aGUgc2VydmVyLiBXaGVuIHZhbHVlIGlzIG51bGwgdGhlIGNhcmQgc2hvd3MgYSBkYXNoIGFuZFxuLy8gbm8gY29tcGFyaXNvbi5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpIHtcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG4gIHByaW9yOiBudW1iZXIgfCBudWxsO1xuICBjaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHBlcmNlbnRDaGFuZ2U6IG51bWJlciB8IG51bGw7XG4gIHNob3c6IEtwaURlbHRhU2hvdztcbiAgbm90ZTogS3BpTm90ZUNvZGUgfCBudWxsO1xuICB0YXJnZXQ6IENvbXBvbmVudEtwaVRhcmdldCB8IG51bGw7XG4gIHNwYXJrbGluZTogQ29tcG9uZW50S3BpU3BhcmtsaW5lIHwgbnVsbDtcbn1cblxuLy8gQSBjb21wb25lbnQncyBDU1YgZXhwb3J0OiB0aGUgcHJlc2lnbmVkIGRvd25sb2FkIFVSTCwgcGx1cyBvbmUgc2VudGVuY2UgcGVyXG4vLyB3YXkgdGhlIGZpbGUgZmFsbHMgc2hvcnQgb2YgdGhlIGZ1bGwgcmVzdWx0IChjdXQgYXQgdGhlIGV4cG9ydCBjZWlsaW5nLCBvclxuLy8gY3V0IGFzIHRoZSBjaGFydCBpdHNlbGYgaXMpLiBFbXB0eSB3aGVuIHRoZSBmaWxlIGlzIGNvbXBsZXRlLiBPcHRpb25hbFxuLy8gYmVjYXVzZSBhIHNlcnZlciBvbiBhbiBvbGRlciBmcmFtZXdvcmsgYW5zd2VycyB3aXRoIHRoZSB1cmwgYWxvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEV4cG9ydFJlc3BvbnNlIHtcbiAgdXJsOiBzdHJpbmc7XG4gIG5vdGVzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TGlzdEl0ZW0ge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZGlmeURhdGU6IHN0cmluZztcbiAgc3RhdGU/OiBSZXBvcnRTdGF0ZTtcbiAgLy8gVGhlIGZvbGRlciB0aGUgcmVwb3J0IGlzIGZpbGVkIHVuZGVyLiBudWxsIGlzIGEgcmVhbCwgY29tbW9uIHZhbHVlIOKAlCB0aGVcbiAgLy8gcmVwb3J0IHNpdHMgYXQgdGhlIHJvb3Qgb2YgdGhlIGxpc3RpbmcgdHJlZSBhbG9uZ3NpZGUgdGhlIGZvbGRlcnMuXG4gIC8vXG4gIC8vIE9wdGlvbmFsIGxpa2UgYHN0YXRlYCBiZXNpZGUgaXQ6IHRoZSBiYWNrZW5kIGFsd2F5cyBzZW5kcyBpdCwgYnV0IG1ha2luZyBpdFxuICAvLyByZXF1aXJlZCBpcyBhIGJyZWFraW5nIHR5cGUgY2hhbmdlIGZvciBldmVyeSBjb25zdW1lciBob2xkaW5nIGFcbiAgLy8gUmVwb3J0TGlzdEl0ZW0gbGl0ZXJhbCAoZml4dHVyZXMsIG1vY2tzKSBhbmQgYnV5cyBub3RoaW5nIOKAlCB0aGUgbGlzdGluZ1xuICAvLyByZWFkcyBpdCBhcyBgPz8gbnVsbGAgZWl0aGVyIHdheS5cbiAgcmVwb3J0Rm9sZGVySWQ/OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBPbmUgZm9sZGVyIGluIHRoZSBsaXN0aW5nIHRyZWUg4oCUIGFuIGF1ZGllbmNlIGJ1Y2tldCAoXCJNYW5hZ2VtZW50XCIsXG4vLyBcIk9wZXJhdGlvbnNcIikgcmVwb3J0cyBhcmUgZmlsZWQgaW50by4gRm9sZGVycyBuZXN0IHZpYSBwYXJlbnRSZXBvcnRGb2xkZXJJZDtcbi8vIHJlcG9ydHMgbmV2ZXIgZG8sIHNvIHRoZSB0cmVlJ3Mgb25seSBicmFuY2ggbm9kZXMgYXJlIGZvbGRlcnMuXG4vL1xuLy8gYHN0YXRlYCBpcyB0aGUgZm9sZGVyJ3MgT1dOIHN0YXRlLiBEZWxldGluZyBhIGZvbGRlciB3cml0ZXMgb25seSB0aGF0LCBhbmRcbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaXQgY291bnRzIGFzIGRlbGV0ZWQgYnkgcG9zaXRpb24g4oCUIHNlZSBSZXBvcnROb2RlLmRlbGV0ZWQuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZvbGRlciB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyZW50UmVwb3J0Rm9sZGVySWQ6IG51bWJlciB8IG51bGw7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG59XG5cbi8vIEdFVCAvYXBpL3JlcG9ydHMgcmV0dXJucyBib3RoIGhhbHZlcyBmbGF0OyB0aGUgbGlzdGluZyBuZXN0cyB0aGVtIGl0c2VsZi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0VHJlZSB7XG4gIHJlcG9ydHM6IFJlcG9ydExpc3RJdGVtW107XG4gIGZvbGRlcnM6IFJlcG9ydEZvbGRlcltdO1xufVxuXG5leHBvcnQgZW51bSBSZXBvcnROb2RlVHlwZSB7XG4gIEZvbGRlciA9ICdmb2xkZXInLFxuICBSZXBvcnQgPSAncmVwb3J0Jyxcbn1cblxuLy8gT25lIG5vZGUgYXMgZnMtdHJlZSBzZWVzIGl0LiBGb2xkZXJzIGFuZCByZXBvcnRzIHNoYXJlIG9uZSBpZCBzcGFjZSBpbiB0aGVcbi8vIHZpZXcsIHNvIHRoZSBpZHMgYXJlIHByZWZpeGVkICgnZjoxMicgLyAncjozNCcpIOKAlCBgaWRgIGlzIHRoZSBvcmlnaW5hbCxcbi8vIHBlci10YWJsZSBpZCB0aGF0IHRoZSBBUEkgZW5kcG9pbnRzIHRha2UuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE5vZGUge1xuICBrZXk6IHN0cmluZztcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBSZXBvcnROb2RlVHlwZTtcbiAgLy8gT25seSBldmVyIHBvcHVsYXRlZCBvbiBhIGZvbGRlcjsgYSByZXBvcnQgaXMgYWx3YXlzIGEgbGVhZi5cbiAgY2hpbGRyZW46IFJlcG9ydE5vZGVbXTtcbiAgLy8gUHJlc2VudCBvbiByZXBvcnQgbm9kZXMgb25seS5cbiAgcmVwb3J0PzogUmVwb3J0TGlzdEl0ZW07XG4gIC8vIFRoZSBub2RlJ3Mgb3duIHJvdyBpcyBkZWxldGVkLiBXaGF0IGVhcm5zIHRoZSBcIkRlbGV0ZWRcIiBjaGlwIOKAlCB0aGlzIGlzXG4gIC8vIHdoYXQgc29tZWJvZHkgYWN0dWFsbHkgZGVsZXRlZC5cbiAgc3RhdGVEZWxldGVkOiBib29sZWFuO1xuICAvLyBEZWxldGVkIGl0c2VsZiBPUiBhbnl3aGVyZSBiZWxvdyBhIGRlbGV0ZWQgZm9sZGVyLiBPbmx5IGV2ZXIgdHJ1ZSBpbiBTaG93XG4gIC8vIERlbGV0ZWQgbW9kZSAodGhlIGRlZmF1bHQgbGlzdGluZyBuZXZlciByZXR1cm5zIHN1Y2ggYSBub2RlKSwgYW5kIGl0IGlzIHdoYXRcbiAgLy8gc3dhcHMgdGhlIHJvdydzIGFjdGlvbnMgZm9yIFJlc3RvcmUuXG4gIGRlbGV0ZWQ6IGJvb2xlYW47XG59XG5cbi8vIFJlcG9ydHMgYW5kIGZvbGRlcnMgYXJlIGJvdGggc29mdC1kZWxldGFibGUuIEEgZGVsZXRlZCByZXBvcnQga2VlcHMgaXRzIHBhZ2VzXG4vLyBhbmQgY29tcG9uZW50czsgYSBkZWxldGVkIGZvbGRlciBrZWVwcyBldmVyeXRoaW5nIGZpbGVkIHVuZGVyIGl0LCB3aGljaCBsZWF2ZXNcbi8vIHRoZSBsaXN0aW5nIHdpdGggaXQgYW5kIGNvbWVzIGJhY2sgd2l0aCBpdC4gXCJTaG93IERlbGV0ZWRcIiBzaG93cyB0aGUgd2hvbGVcbi8vIHRyZWUsIGxpdmUgYW5kIGRlbGV0ZWQgdG9nZXRoZXIsIHNvIGFueSBvZiBpdCBjYW4gYmUgcmVzdG9yZWQgaW4gcGxhY2UuXG5leHBvcnQgZW51bSBSZXBvcnRTdGF0ZSB7XG4gIEFjdGl2ZSA9ICdhY3RpdmUnLFxuICBEZWxldGVkID0gJ2RlbGV0ZWQnLFxufVxuXG4vLyBUaGUgY2hhdCB0dXJuIGZsYWdzIHRoaXMgY29udGV4dCdzIGJhY2tlbmQgYWRkcyAoUmVwb3J0c1xcQWlWaWV3KS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q2hhdFJlc3BvbnNlIHtcbiAgcmVwb3J0Q2hhbmdlZD86IGJvb2xlYW47XG4gIHJlcG9ydFJlbmFtZWQ/OiBib29sZWFuO1xufVxuXG4vLyBPbmUgdmVyc2lvbiBvZiB0aGUgZ2xvYmFsIEFJIGtub3dsZWRnZSBkb2N1bWVudCDigJQgdGhlIG9wZXJhdG9yLWF1dGhvcmVkXG4vLyBtYXJrZG93biBhcHBlbmRlZCB0byB0aGUgcmVwb3J0IGFnZW50J3Mgc3lzdGVtIGluc3RydWN0aW9ucyBvbiBldmVyeSB0dXJuLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRJbnN0cnVjdGlvbiB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbiAgY3VycmVudDogYm9vbGVhbjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgbW9kaWZ5RGF0ZTogRGF0ZTtcbiAgYWNjb3VudElkOiBudW1iZXIgfCBudWxsO1xuICBhY2NvdW50TmFtZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gR0VUL1BVVCBpbnN0cnVjdGlvbnMgcGF5bG9hZDogdGhlIGN1cnJlbnQgdmVyc2lvbiAobnVsbCB1bnRpbCBvbmUgaXNcbi8vIGF1dGhvcmVkKSBwbHVzIHRoZSBmdWxsIGhpc3RvcnksIG5ld2VzdCBmaXJzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb25zIHtcbiAgaW5zdHJ1Y3Rpb25zOiBSZXBvcnRJbnN0cnVjdGlvbiB8IG51bGw7XG4gIHZlcnNpb25zOiBSZXBvcnRJbnN0cnVjdGlvbltdO1xufVxuXG4vLyBUaGUgbGF0ZXN0IHNlbWFudGljLWRhdGFiYXNlIGJ1aWxkIChhbiBmZl9wcm9jZXNzZXMgcm93KSDigJQgZW5vdWdoIGZvciB0aGVcbi8vIHNldHRpbmdzIGRpYWxvZyB0byBzYXkgd2hhdCBzdGF0ZSB0aGUgYnVpbGQgaXMgaW4gYW5kIHdoZW4gaXQgbGFzdCByYW4uXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGQge1xuICBpZDogbnVtYmVyO1xuICBzdGF0ZTogc3RyaW5nO1xuICBwZXJjZW50OiBudW1iZXIgfCBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZHVyYXRpb246IG51bWJlcjtcbiAgY3JlYXRlRGF0ZTogRGF0ZTtcbiAgc3RhcnREYXRlOiBEYXRlO1xuICBlbmREYXRlOiBEYXRlO1xufVxuXG4vLyBBIGJ1aWxkIHN0YWdlJ3Mgc3RhdGUgb24gdGhlIGVudGl0eSBzY29yZWJvYXJkOiAnZG9uZScgPSBidWlsdCwgJ21pc3NpbmcnID1cbi8vIHN0aWxsIG5lZWRzIGJ1aWxkaW5nIChhIG1pc3Npbmcgc3RhZ2UgaXMgdW5idWlsdCBjb250ZW50LCBuZXZlciBhbiBlcnJvcikuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0J1aWxkU3RhZ2UgPSAnZG9uZScgfCAnbWlzc2luZyc7XG5cbi8vIE9uZSBlbnVtIGNvbHVtbiBvZiBhbiBlbnRpdHksIHdpdGggdGhlIGFsbG93ZWQgdmFsdWVzIHRoZSBidWlsZCBpbmxpbmVkLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW51bSB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vLyBPbmUgZW50aXR5IHJvdyBvZiB0aGUgc2NvcmVib2FyZCAoYW4gZW50aXR5ID0gYSB0YWJsZSArIGEgbW9kZWwgKyBhXG4vLyBoYW5kbGVyKTogaXRzIHRhYmxlL3NoYXBlIGNvdW50cywgaW5saW5lZCBlbnVtIHZhbHVlcywgY29tcHV0ZWQgZmllbGRzLCBob3dcbi8vIG1hbnkgY29kZSBmdW5jdGlvbnMgd2VyZSBjYWNoZWQgKHNwbGl0IG1vZGVsIHZzIGhhbmRsZXIpLCBhbmQgdGhlIHBlci1zdGFnZVxuLy8gYnVpbHQvbWlzc2luZyBzdGF0ZS5cbi8vXG4vLyBgbW9kZWxgL2BoYW5kbGVyYCBhcmUgdGhlIGNsYXNzZXMgdGhlIGZ1bmN0aW9ucyB3ZXJlIHJlYWQgZnJvbSDigJQgd2hhdCBhXG4vLyByZWFkZXIgcmVjb2duaXplcyB0aGUgcm93IGJ5LCB3aGVyZSBga2V5YCBpcyB3aGF0IHRoZSByZXBvcnQgQUkgYWRkcmVzc2VzIGl0XG4vLyBieSBpbiBkZXNjcmliZV9lbnRpdHkgLyBjb21waWxlX3F1ZXJ5LlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkRW50aXR5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyOiBzdHJpbmcgfCBudWxsO1xuICBjb2x1bW5zOiBudW1iZXI7XG4gIHJlbGF0aW9uc2hpcHM6IG51bWJlcjtcbiAgZW51bXM6IFNlbWFudGljQnVpbGRFbnVtW107XG4gIGNvbXB1dGVkRmllbGRzOiBzdHJpbmdbXTtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBtb2RlbEZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgaGFuZGxlckZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgc3RhZ2VzOiBSZWNvcmQ8c3RyaW5nLCBTZW1hbnRpY0J1aWxkU3RhZ2U+O1xufVxuXG4vLyBPbmUgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIHRoZSBidWlsZCByZWFkOiBkb21haW4gbG9naWMgd2l0aCBubyB0YWJsZSBvZiBpdHNcbi8vIG93biAoYSBzdW1tYXJ5IG1vZGVsLCBhIGNhbGN1bGF0aW9uIHNlcnZpY2UpLiBUaGUgcmVwb3J0IEFJIHJlYWRzIGl0cyBjb2RlXG4vLyBleGFjdGx5IGxpa2UgYW4gZW50aXR5J3MsIGJ1dCBpdCBjYW4gbmV2ZXIgYmUgcXVlcmllZCDigJQgdGhlcmUgaXMgbm90aGluZyB0b1xuLy8gc2VsZWN0IGZyb20g4oCUIHNvIGl0IGNhcnJpZXMgbm8gdGFibGUsIGNvbHVtbnMgb3IgcmVsYXRpb25zaGlwcy5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZENsYXNzIHtcbiAga2V5OiBzdHJpbmc7XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbkNvdW50OiBudW1iZXI7XG59XG5cbi8vIFdoYXQgdGhlIGJ1aWxkIGRlY2lkZWQgYSBwaHlzaWNhbCB0YWJsZSBpcy4gRW50aXR5IGFuZCBqdW5jdGlvbiBhcmUgYm90aFxuLy8gcmVhY2hhYmxlIGJ5IHRoZSByZXBvcnQgQUkg4oCUIGFuIGVudGl0eSBkaXJlY3RseSwgYSBqdW5jdGlvbiB0aHJvdWdoIHRoZVxuLy8gbWFueS10by1tYW55IGl0IGJyaWRnZXMuIEV4Y2x1ZGVkIGlzIG5vdCByZWFjaGFibGUgYXQgYWxsLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNUYWJsZUNsYXNzaWZpY2F0aW9uID0gJ2VudGl0eScgfCAnanVuY3Rpb24nIHwgJ2V4Y2x1ZGVkJztcblxuLy8gT25lIHBoeXNpY2FsIHRhYmxlIGFzIHRoZSBidWlsZCBjbGFzc2lmaWVkIGl0LiBgcmVhc29uYCBhbnN3ZXJzIGEgc2luZ2xlXG4vLyBxdWVzdGlvbiDigJQgd2h5IGNhbid0IHRoZSByZXBvcnQgQUkgc2VlIHRoaXMgdGFibGU/IOKAlCBhbmQgaXMgbnVsbCB3aGVuIGl0IGNhbi5cbi8vIEEganVuY3Rpb24gd2l0aCBhIHJlYXNvbiBicmlkZ2VkIG5vdGhpbmcsIHNvIGl0IGlzIGp1c3QgYXMgaW52aXNpYmxlIGFzIGFuXG4vLyBleGNsdWRlZCB0YWJsZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZFRhYmxlIHtcbiAgdGFibGU6IHN0cmluZztcbiAgY2xhc3NpZmljYXRpb246IFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbjtcbiAgbW9kZWw6IHN0cmluZyB8IG51bGw7XG4gIHJlYXNvbjogc3RyaW5nIHwgbnVsbDtcbn1cblxuLy8gVGhlIGJ1aWxkIHNjb3JlYm9hcmQgc2hpcHBlZCBhbG9uZ3NpZGUgdGhlIGJ1aWxkIHN0YXR1czogdGhlIHN1bW1hcnkgY291bnRzLFxuLy8gdGhlIGZ1bGwgYnJlYWtkb3duIHRoZSBzZXR0aW5ncyBkaWFsb2cgZHJpbGxzIGludG8g4oCUIEJPVEgga2luZHMgb2YgdW5pdCB0aGVcbi8vIGJ1aWxkIGNhY2hlcywgdGFibGUtYmFja2VkIGVudGl0aWVzIGFuZCBzdGFuZGFsb25lIGNvZGUgY2xhc3NlcyDigJQgYW5kIHRoZVxuLy8gY2F0YWxvZyBvZiBldmVyeSB0YWJsZSB0aGUgYnVpbGQgc2F3LCBzbyB0aGUgdGFiIGNhbiBzaG93IHdoYXQgdGhlIHJlcG9ydCBBSVxuLy8gY2FuJ3Qgc2VlLCBub3QganVzdCB3aGF0IGl0IGNhbi5cbi8vXG4vLyBgZnVuY3Rpb25Db3VudGAgc3BhbnMgZW50aXRpZXMgYW5kIGNsYXNzZXMgYWxpa2U6IGl0IGlzIHRoZSBzYW1lIHRvdGFsIHRoZVxuLy8gYnVpbGQgaXRzZWxmIHJlcG9ydHMgd2hlbiBpdCBmaW5pc2hlcy5cbi8vXG4vLyBgdGFibGVzYCBpcyBlbXB0eSBmb3IgYW4gYXJ0aWZhY3QgYnVpbHQgYmVmb3JlIHRoZSBjYXRhbG9nIGV4aXN0ZWQuIFJlYWQgdGhhdFxuLy8gYXMgXCJubyBjYXRhbG9nXCIsIG5ldmVyIGFzIFwibm90aGluZyB3YXMgZXhjbHVkZWRcIi5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZERldGFpbCB7XG4gIC8vIFdoZXRoZXIgdGhlIGFydGlmYWN0IHdhcyBwcm9kdWNlZCBieSBhIGJ1aWxkIHRoYXQgcmFuIHRvIHRoZSBlbmQuIFJlYWQgaXRcbiAgLy8gYmVzaWRlIGBnZW5lcmF0ZWRBdGAsIG5ldmVyIGluc3RlYWQgb2YgaXQ6IHRoZSBzdHJ1Y3R1cmFsIGFydGlmYWN0IGlzXG4gIC8vIHB1Ymxpc2hlZCBCRUZPUkUgdGhlIEFJIGZ1bmN0aW9uIHBhc3MsIHNvIGEgYnVpbGQgd2hvc2UgQUkgcGFzcyBmYWlsZWQgc3RpbGxcbiAgLy8gY2FycmllcyBhIGRhdGUgYW5kIGEgZnVsbCBzZXQgb2YgY291bnRzLiBUaGUgZGF0ZSBzYXlzIHNvbWV0aGluZyB3YXNcbiAgLy8gd3JpdHRlbjsgb25seSB0aGlzIHNheXMgdGhlIGJ1aWxkIGZpbmlzaGVkIHdyaXRpbmcgaXQuXG4gIGNvbXBsZXRlOiBib29sZWFuO1xuICBnZW5lcmF0ZWRBdDogRGF0ZSB8IG51bGw7XG4gIGVudGl0eUNvdW50OiBudW1iZXI7XG4gIGNsYXNzQ291bnQ6IG51bWJlcjtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBlbnRpdGllczogU2VtYW50aWNCdWlsZEVudGl0eVtdO1xuICBjbGFzc2VzOiBTZW1hbnRpY0J1aWxkQ2xhc3NbXTtcbiAgdGFibGVDb3VudDogbnVtYmVyO1xuICBqdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHVubGlua2VkSnVuY3Rpb25Db3VudDogbnVtYmVyO1xuICBleGNsdWRlZENvdW50OiBudW1iZXI7XG4gIHRhYmxlczogU2VtYW50aWNCdWlsZFRhYmxlW107XG59XG5cbi8vIFdoaWNoIGNsYXNzIGEgY2FjaGVkIGZ1bmN0aW9uIHdhcyByZWFkIGZyb20uIEFuIGVudGl0eSdzIGNhY2hlIHNwbGl0cyBpbnRvXG4vLyAnbW9kZWwnIGFuZCAnaGFuZGxlcic7IGEgc3RhbmRhbG9uZSBjb2RlIGNsYXNzIGhhcyBvbmUgZ3JvdXAsICdjbGFzcycuXG5leHBvcnQgdHlwZSBTZW1hbnRpY0Z1bmN0aW9uU291cmNlID0gJ21vZGVsJyB8ICdoYW5kbGVyJyB8ICdjbGFzcyc7XG5cbi8vIE9uZSBBSS1jbGFzc2lmaWVkIGNvZGUgZnVuY3Rpb24gZnJvbSBhIG1vZGVsLCBoYW5kbGVyIG9yIHN0YW5kYWxvbmUgY2xhc3M6XG4vLyB3aGF0IGtpbmQgb2YgbG9naWMgaXQgaXMsIHdoYXQgaXQgZG9lcywgYW5kIHdoYXQgaXQgcHJvZHVjZXMg4oCUIHRoZSBidWlsZCdzXG4vLyBjYWNoZWQgXCJ3aGF0IHRoZSBjb2RlIGRvZXNcIiBrbm93bGVkZ2Ugc2hvd24gaW4gdGhlIGZ1bmN0aW9ucyBkaWFsb2cuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb24ge1xuICBjbGFzczogc3RyaW5nO1xuICBtZXRob2Q6IHN0cmluZztcbiAgc2lnbmF0dXJlOiBzdHJpbmc7XG4gIGtpbmQ6IHN0cmluZztcbiAgc3VtbWFyeTogc3RyaW5nO1xuICBwcm9kdWNlczogc3RyaW5nO1xuICBzb3VyY2U6IFNlbWFudGljRnVuY3Rpb25Tb3VyY2U7XG59XG5cbi8vIE9uZSBlbnRpdHkncyBjYWNoZWQgY29kZS1mdW5jdGlvbiBrbm93bGVkZ2UsIGZldGNoZWQgd2hlbiBhIGZ1bmN0aW9ucyBkaWFsb2dcbi8vIG9wZW5zICh0aGUgZnVsbCBzZXQgYWNyb3NzIGFsbCBlbnRpdGllcyBpcyB0b28gYmlnIHRvIHNoaXAgd2l0aCB0aGVcbi8vIHNjb3JlYm9hcmQpLiBPbmUgcGF5bG9hZCBzZXJ2ZXMgYm90aCBkaWFsb2dzIOKAlCBjb25zdW1lcnMgZmlsdGVyIGJ5IHNvdXJjZS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNFbnRpdHlGdW5jdGlvbnMge1xuICBlbnRpdHk6IHN0cmluZztcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBtb2RlbENsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBoYW5kbGVyQ2xhc3M6IHN0cmluZyB8IG51bGw7XG4gIGZ1bmN0aW9uczogU2VtYW50aWNFbnRpdHlGdW5jdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRTdGF0dXMge1xuICBidWlsZDogU2VtYW50aWNCdWlsZCB8IG51bGw7XG4gIGRldGFpbDogU2VtYW50aWNCdWlsZERldGFpbDtcbn1cblxuLy8gVGhlIHJlcG9ydCBtb2R1bGUncyBHZW5lcmFsIHNldHRpbmdzIChhIHNtYWxsIGdsb2JhbCBrZXkvdmFsdWUgc3RvcmUsIHRoZVxuLy8gcmVwb3J0aW5nIGNvdW50ZXJwYXJ0IG9mIHRoZSBhcHAtd2lkZSBzZXR0aW5ncykuIEVhY2ggdmFsdWUgc2hpcHMgd2l0aCB0aGVcbi8vIHNhZmUgYmFuZCBpdHMgZWRpdG9yIGZpZWxkIGlzIGJvdW5kZWQgdG8uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFNldHRpbmdzIHtcbiAgLy8gSG93IG1hbnkgc3VtbWFyeSBjYWxscyB0aGUgc2VtYW50aWMgYnVpbGQgcnVucyBhdCBvbmNlLlxuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3k6IG51bWJlcjtcbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5TWluOiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1heDogbnVtYmVyO1xufVxuIl19
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy9pbnRlcmZhY2VzL3JlcG9ydC5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBQzdFLG1FQUFtRTtBQUNuRSwrRUFBK0U7QUFDL0UsNEVBQTRFO0FBQzVFLG1DQUFtQztBQThUbkMsNEVBQTRFO0FBQzVFLDJFQUEyRTtBQUMzRSx1REFBdUQ7QUFDdkQsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQWdEO0lBQzlFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO0lBQzdCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQy9CLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQ2pDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ3JDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO0NBQ3BDLENBQUM7QUFtdEJGLE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsbUNBQWlCLENBQUE7SUFDakIsbUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBdUJELGdGQUFnRjtBQUNoRixpRkFBaUY7QUFDakYsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBhc3NlbWJsZWQgcmVwb3J0IHN0cnVjdHVyZSByZXR1cm5lZCBieSBHRVQgL2FwaS9yZXBvcnRzLzppZCDigJQgY29tcG9zZWRcbi8vIHNlcnZlci1zaWRlIGZyb20gdGhlIG5vcm1hbGl6ZWQgdGFibGVzIChyZXBvcnRzIOKGkiByZXBvcnRfcGFnZXMg4oaSXG4vLyByZXBvcnRfY29tcG9uZW50cyArIHJlcG9ydF9maWx0ZXJzLCBwbHVzIHJlcG9ydF9maWx0ZXJfZ3JvdXBzKS4gQWxsIGtleXMgYXJlXG4vLyBjYW1lbENhc2U7IGNvbXBvbmVudCBgY29uZmlnYCBpcyB0aGUgc3RhbmRhcmQgZm9ybWF0IHRoZSByZW5kZXJlciBtYXBzIHRvXG4vLyBFQ2hhcnRzIG9wdGlvbnMgLyBGc0xpc3QgY29uZmlnLlxuXG5pbXBvcnQgeyBHcmlkTGF5b3V0IH0gZnJvbSAnQGZpcmVzdGl0Y2gvZ3JpZCc7XG5cbmltcG9ydCB7IFJlcG9ydENoYW5nZVBvbGFyaXR5IH0gZnJvbSAnLi4vZW51bXMvcmVwb3J0LWNoYW5nZS1wb2xhcml0eS5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0Q29sb3IgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtY29sb3IuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydERhdGFMYWJlbHMgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtZGF0YS1sYWJlbHMuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRDaGFydERhdGVMYWJlbCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1jaGFydC1kYXRlLWxhYmVsLmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0Q2hhcnRMaW5lU3R5bGUgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtbGluZS1zdHlsZS5lbnVtJztcbmltcG9ydCB7IFJlcG9ydENoYXJ0TWFya1N0YXQgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtY2hhcnQtbWFyay1zdGF0LmVudW0nO1xuaW1wb3J0IHsgUmVwb3J0TGlzdENvbHVtbkZvcm1hdCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1saXN0LWNvbHVtbi1mb3JtYXQuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnROdW1iZXJVbml0cyB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC1udW1iZXItdW5pdHMuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRWYWx1ZUZvcm1hdCB9IGZyb20gJy4uL2VudW1zL3JlcG9ydC12YWx1ZS1mb3JtYXQuZW51bSc7XG5pbXBvcnQgeyBSZXBvcnRWYWx1ZUZvcm11bGEgfSBmcm9tICcuLi9lbnVtcy9yZXBvcnQtdmFsdWUtZm9ybXVsYS5lbnVtJztcblxuaW1wb3J0IHsgQ29tcG9uZW50RGF0YUFwcGxpZWQgfSBmcm9tICcuL2NvbXBvbmVudC1kYXRhLWFwcGxpZWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IENvbXBvbmVudERhdGFEcmlsbCB9IGZyb20gJy4vY29tcG9uZW50LWRhdGEtZHJpbGwuaW50ZXJmYWNlJztcbmltcG9ydCB7IFJlcG9ydERyaWxsU3RlcCB9IGZyb20gJy4vcmVwb3J0LWRyaWxsLXN0ZXAuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRDb25maWcgfSBmcm9tICcuL3JlcG9ydC1ncmlkLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUmVwb3J0Vmlld2VyRmVhdHVyZSB9IGZyb20gJy4vcmVwb3J0LXZpZXdlci1mZWF0dXJlLnR5cGUnO1xuXG4vLyBBIEJDUCA0NyBsYW5ndWFnZSB0YWcgbmFtaW5nIGhvdyBudW1iZXJzIGFuZCBkYXRlcyBhcmUgd3JpdHRlbiwgZS5nLiAnZnItQ0EnLlxuLy8gVGhlIHNldCBpcyBvcGVuICh0aGUgc2VydmVyJ3MgcHJvdmlkZXIgZGVjaWRlcyB3aGljaCBpdCBvZmZlcnMpLCBzbyB0aGlzIGlzIGFcbi8vIG5hbWVkIGFsaWFzIHJhdGhlciB0aGFuIGEgdW5pb24uXG5leHBvcnQgdHlwZSBSZXBvcnRMb2NhbGVUYWcgPSBzdHJpbmc7XG5cbi8vIEFuIElTTyA0MjE3IGN1cnJlbmN5IGNvZGUsIGUuZy4gJ0NBRCcuIE9wZW4gZm9yIHRoZSBzYW1lIHJlYXNvbi5cbmV4cG9ydCB0eXBlIFJlcG9ydEN1cnJlbmN5Q29kZSA9IHN0cmluZztcblxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnQge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIC8vIFRoZSByZXBvcnQncyBvd24gc3RvcmVkIElBTkEgem9uZSAoZS5nLiBBbWVyaWNhL05ld19Zb3JrKS4gbnVsbCA9IHRoZVxuICAvLyByZXBvcnQgZm9sbG93cyB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0IHJlcG9ydGluZyB6b25lLlxuICB0aW1lem9uZTogc3RyaW5nIHwgbnVsbDtcbiAgLy8gVGhlIHpvbmUgZXZlcnkgZGF0ZSBmaWx0ZXIsIHRpbWUgYnVja2V0IGFuZCBkYXRlIGNlbGwgb2YgdGhpcyByZXBvcnQgdXNlcy5cbiAgLy8gUmVzb2x2ZWQgc2VydmVyLXNpZGU7IHRoZSBzYW1lIGZvciBldmVyeSB2aWV3ZXIsIGV4cG9ydCBhbmQgdGhlIGFzc2lzdGFudC5cbiAgLy8gT3B0aW9uYWwgb25seSBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgcmVzb2x2ZVJlcG9ydFRpbWV6b25lKCkgdGhlblxuICAvLyBmYWxscyBiYWNrIHRvIHRoZSByZXBvcnQncyBvd24gYHRpbWV6b25lYCwgdGhlbiB0aGUgYnJvd3NlcidzIHpvbmUuIFJlc29sdmVcbiAgLy8gdGhlIHpvbmUgZm9yIHJlbmRlcmluZyB0aHJvdWdoIHJlc29sdmVSZXBvcnRUaW1lem9uZSgpIChmb3JtYXQudHMpOyByZWFkIHRoZVxuICAvLyBmaWVsZCBkaXJlY3RseSBvbmx5IHRvIGNoZWNrIHdoZXRoZXIgdGhlIHNlcnZlciBzZW50IGl0LlxuICBlZmZlY3RpdmVUaW1lem9uZT86IHN0cmluZztcbiAgLy8gVGhlIHJlcG9ydCdzIG93biBzdG9yZWQgbG9jYWxlLiBudWxsID0gdGhlIHJlcG9ydCBmb2xsb3dzIHRoZSBkZWZhdWx0LlxuICBsb2NhbGU/OiBSZXBvcnRMb2NhbGVUYWcgfCBudWxsO1xuICAvLyBUaGUgbG9jYWxlIGV2ZXJ5IG51bWJlciBhbmQgZGF0ZSBvZiB0aGlzIHJlcG9ydCBpcyB3cml0dGVuIGluLCByZXNvbHZlZFxuICAvLyBzZXJ2ZXItc2lkZSAodGhlIHJlcG9ydCdzIG93biwgZWxzZSB0aGUgYXBwbGljYXRpb24ncyBkZWZhdWx0LCBlbHNlXG4gIC8vIGVuLVVTKS4gQWJzZW50IG9uIG9sZGVyIHNlcnZlcnMsIHdob3NlIHJlcG9ydHMgdGhlbiByZWFkIGVuLVVTLiBSZXNvbHZlIGl0XG4gIC8vIGZvciByZW5kZXJpbmcgdGhyb3VnaCByZXNvbHZlRm9ybWF0Q29udGV4dCgpIChmb3JtYXQudHMpLCBuZXZlciBkaXJlY3RseS5cbiAgZWZmZWN0aXZlTG9jYWxlPzogUmVwb3J0TG9jYWxlVGFnO1xuICAvLyBUaGUgcmVwb3J0J3Mgb3duIHN0b3JlZCBjdXJyZW5jeS4gbnVsbCA9IHRoZSByZXBvcnQgZm9sbG93cyB0aGUgZGVmYXVsdC5cbiAgY3VycmVuY3k/OiBSZXBvcnRDdXJyZW5jeUNvZGUgfCBudWxsO1xuICAvLyBUaGUgY3VycmVuY3kgbW9uZXkgYW1vdW50cyBhcmUgbGFiZWxlZCBpbiwgcmVzb2x2ZWQgbGlrZSBlZmZlY3RpdmVMb2NhbGVcbiAgLy8gKGZhbGxpbmcgYmFjayB0byB0aGUgbG9jYWxlJ3Mgb3duIGN1cnJlbmN5LCB0aGVuIFVTRCkuIEEgbGFiZWwgb25seTpcbiAgLy8gYW1vdW50cyBhcmUgbmV2ZXIgY29udmVydGVkLlxuICBlZmZlY3RpdmVDdXJyZW5jeT86IFJlcG9ydEN1cnJlbmN5Q29kZTtcbiAgLy8gSG93IHRoZSBzZXJ2ZXIgc2VuZHMgYSBwZXJjZW50IG1lYXN1cmU6ICdyYXRpbycgPSBhIDAtMSByYXRpbyAoMC4zODUgcmVhZHNcbiAgLy8gMzguNSUpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hvc2UgcGVyY2VudCB2YWx1ZXMgYXJlIGFscmVhZHkgeDEwMFxuICAvLyAoMzguNSByZWFkcyAzOC41JSkuXG4gIHBlcmNlbnRGb3JtYXQ/OiAncmF0aW8nO1xuICAvLyBSZXBvcnQtbGV2ZWwgY29uZmlnOiB0eXBvZ3JhcGhpYyBzdHlsZXMsIGV0Yy4gKGNhbWVsQ2FzZSBKU09OIGNvbHVtbikuXG4gIGNvbmZpZzogUmVwb3J0Q29uZmlnO1xuICAvLyBUaGUgcGFnZSBpbiBJTkNIRVMgKHRoZSByZXBvcnQncyBuYXRpdmUgdW5pdCDigJQgUERGcyBhbmQgUG93ZXJQb2ludCBhcmVcbiAgLy8gaW5jaC1iYXNlZCwgc28gZXhwb3J0cyBhcmUgZGltZW5zaW9uYWxseSBleGFjdCkuIE9yaWVudGF0aW9uIGlzIG5vdCBhIGZpZWxkXG4gIC8vIG9mIGl0cyBvd246IGEgcGFnZSB3aWRlciB0aGFuIGl0IGlzIHRhbGwgSVMgbGFuZHNjYXBlLlxuICBwYWdlV2lkdGg6IG51bWJlcjtcbiAgcGFnZUhlaWdodDogbnVtYmVyO1xuICBwYWdlczogUmVwb3J0UGFnZVtdO1xuICAvLyBUaGUgaGVhZGVyIGFuZCBmb290ZXI6IHRoZSByZXBvcnQncyBtYXN0ZXIgcGFnZSwgd2hvc2UgY29tcG9uZW50cyBkcmF3XG4gIC8vIHVuZGVyIGV2ZXJ5IHBhZ2UgdGhhdCBkb2VzIG5vdCBoaWRlIHRoZW0gKFBvd2VyUG9pbnQncyBzbGlkZSBtYXN0ZXIpLiBOdWxsXG4gIC8vIHVudGlsIGFueXRoaW5nIGhhcyBiZWVuIHBsYWNlZCBpbiB0aGVtLlxuICBtYXN0ZXI6IFJlcG9ydE1hc3RlciB8IG51bGw7XG4gIGZpbHRlckdyb3VwczogUmVwb3J0RmlsdGVyR3JvdXBbXTtcbiAgLy8gVGhlIHZpZXdlciBmZWF0dXJlcyB0aGlzIHNlcnZlciBzZXJ2ZXMgZm9yIHRoZSByZXBvcnQuIFRoZSB2aWV3ZXIgb2ZmZXJzXG4gIC8vIGEgY29udHJvbCBvbmx5IHdoZW4gaXRzIGZlYXR1cmUgaXMgbGlzdGVkLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hpY2hcbiAgLy8gc2VydmUgbm9uZS5cbiAgdmlld2VyRmVhdHVyZXM/OiBSZXBvcnRWaWV3ZXJGZWF0dXJlW107XG4gIC8vIFdoZXRoZXIgdGhlIHZpZXdlciBzaG93cyB0aGUgQUkgY2hhdCBiZXNpZGUgdGhlIHJlcG9ydCAodGhlIHNlcnZlcidzXG4gIC8vIFJlcG9ydHMgPiBBSSBjaGF0IHNldHRpbmcpLiBBYnNlbnQgb24gb2xkZXIgc2VydmVycywgd2hpY2gga2VlcCB0aGUgY2hhdC5cbiAgY2hhdEVuYWJsZWQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydE1hc3RlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudHM6IFJlcG9ydENvbXBvbmVudFtdO1xuICAvLyBUaGUgdmFsdWVzIHRoZSBoZWFkZXIgYW5kIGZvb3RlciB0ZXh0IHNob3dzLCBhcyBSZXBvcnRQYWdlLnZhbHVlcy5cbiAgdmFsdWVzPzogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vIEhvdyB0aGUgb3BlbiByZXBvcnQgd3JpdGVzIGl0cyBudW1iZXJzIGFuZCBkYXRlcywgcmVzb2x2ZWQgb25jZSBwZXIgcmVwb3J0XG4vLyAocmVzb2x2ZUZvcm1hdENvbnRleHQpIGFuZCByZWFkIGJ5IHRoZSB2aWV3ZXIsIHRoZSBQREYgYW5kIFBvd2VyUG9pbnQgYWxpa2UuXG4vLyBOZXZlciB0aGUgYnJvd3NlcidzIGxvY2FsZS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Rm9ybWF0Q29udGV4dCB7XG4gIGxvY2FsZTogUmVwb3J0TG9jYWxlVGFnO1xuICBjdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xuICAvLyBXaGV0aGVyIGEgcGVyY2VudCBtZWFzdXJlIGFycml2ZXMgYXMgYSAwLTEgcmF0aW8gKHRoZSByZXBvcnQnc1xuICAvLyBwZXJjZW50Rm9ybWF0KS4gQW4gb2xkZXIgc2VydmVyIHNlbmRzIGl0IGFscmVhZHkgeDEwMC5cbiAgcmF0aW9QZXJjZW50OiBib29sZWFuO1xufVxuXG4vLyBPbmUgbG9jYWxlIHRoZSBzZXJ2ZXIgb2ZmZXJzLCB3aXRoIHRoZSBjdXJyZW5jeSBhIHJlcG9ydCBpbiBpdCB1c2VzIHdoZW4gaXRcbi8vIG5hbWVzIG5vbmUgb2YgaXRzIG93bi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0TG9jYWxlT3B0aW9uIHtcbiAgbG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIGRlZmF1bHRDdXJyZW5jeTogUmVwb3J0Q3VycmVuY3lDb2RlO1xufVxuXG4vLyBHRVQgcmVwb3J0cy9sb2NhbGVzOiB3aGF0IHRoZSByZXBvcnQgc2V0dGluZ3MnIExvY2FsZSBhbmQgQ3VycmVuY3kgc2VsZWN0c1xuLy8gb2ZmZXIuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExvY2FsZXMge1xuICBkZWZhdWx0TG9jYWxlOiBSZXBvcnRMb2NhbGVUYWc7XG4gIG9wdGlvbnM6IFJlcG9ydExvY2FsZU9wdGlvbltdO1xuICBjdXJyZW5jaWVzOiBSZXBvcnRDdXJyZW5jeUNvZGVbXTtcbn1cblxuLy8gVGhlIGRlcHRoIG9mIHRoZSBoZWFkZXIgYmFuZCAodG9wIG9mIGV2ZXJ5IHBhZ2UpIGFuZCB0aGUgZm9vdGVyIGJhbmQgKGJvdHRvbVxuLy8gb2YgZXZlcnkgcGFnZSksIGluIElOQ0hFUy4gVGhlIGJhbmRzIGhvbGQgbm8gY29udGVudCBvZiB0aGVpciBvd24g4oCUIHRoZVxuLy8gbWFzdGVyJ3MgY29tcG9uZW50cyBzaXQgaW4gdGhlbSDigJQgdGhleSBhcmUgdGhlIHJlc2VydmVkIG1hcmdpbnMgdGhlIGVkaXRvclxuLy8gZHJhd3MgYXMgZ3VpZGVzIGFuZCBzbmFwcyB0by4gQWx3YXlzIGFycml2ZXMgcmVzb2x2ZWQgKDAgPSBubyBiYW5kKS5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SGVhZGVyRm9vdGVyIHtcbiAgaGVhZGVySGVpZ2h0OiBudW1iZXI7XG4gIGZvb3RlckhlaWdodDogbnVtYmVyO1xufVxuXG4vLyBSZXBvcnQtbGV2ZWwgc3R5bGluZy4gU2l6ZXMgYXJlIGluIFBPSU5UUyAoMS83MlwiKSDigJQgdGhlIHJlcG9ydCdzIHR5cG9ncmFwaHlcbi8vIG1hcHMgMToxIHRvIFBERiAoNzJwdC9pbikgYW5kIFBvd2VyUG9pbnQgKHBvaW50IGZvbnQgc2l6ZXMpLCBzbyBhIHBvaW50XG4vLyB2YWx1ZSBpcyBkaW1lbnNpb25hbGx5IGV4YWN0IG9uIHNjcmVlbiBhbmQgaW4gZXZlcnkgZXhwb3J0LlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb25maWcge1xuICBzdHlsZXM/OiBSZXBvcnRTdHlsZXM7XG4gIC8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sLiBPcHRpb25hbCBvbiB0aGUgdHlwZSBiZWNhdXNlIGEgUmVwb3J0Q29uZmlnXG4gIC8vIGxpdGVyYWwgbmVlZCBub3QgY2FycnkgaXQ7IHRoZSBBUEkgYWx3YXlzIHNlbmRzIGl0LCByZXNvbHZlZC5cbiAgZ3JvdXBCeT86IFJlcG9ydEdyb3VwQnk7XG4gIC8vIFJlc29sdmVkIGJ5IHRoZSBBUEkgbGlrZSBncm91cEJ5LlxuICBoZWFkZXJGb290ZXI/OiBSZXBvcnRIZWFkZXJGb290ZXI7XG59XG5cbi8vIFRoZSByZXBvcnQncyBncm91cC1ieSBjb250cm9sIOKAlCB0aGUgb25lIHN3aXRjaCB0aGF0IHJlLWJ1Y2tldHMgZXZlcnlcbi8vIHRpbWUtc2VyaWVzIGNoYXJ0IGFuZCBldmVyeSB0YWJsZSB0aGF0IGZvbGxvd3MgaXQgKGZvbGxvd3NHcm91cEJ5KSBvbiB0aGVcbi8vIHJlcG9ydCBiZXR3ZWVuIGRheSwgd2VlaywgbW9udGgsIHF1YXJ0ZXIgYW5kIHllYXIuXG4vL1xuLy8gSXQgaXMgTk9UIGEgZmlsdGVyOiBhIGZpbHRlciBuYXJyb3dzIHdoaWNoIHJvd3MgYXJlIGNvdW50ZWQsIHRoaXMgY2hhbmdlcyBob3dcbi8vIHRoZSBzdXJ2aXZpbmcgcm93cyBhcmUgYnVja2V0ZWQuIEl0IHNoYXJlcyB0aGUgcmVwb3J0J3MgZmlsdGVyIGJhciBiZWNhdXNlXG4vLyB0aGF0IGlzIHRoZSBvbmUgcm93IG9mIGNvbnRyb2xzIGEgdmlld2VyIHJlYWRzIGEgcmVwb3J0IHRocm91Z2gg4oCUIHRoZVxuLy8gc2VwYXJhdGlvbiB0aGF0IG1hdHRlcnMgaXMgaW4gdGhlIG1vZGVsLCBub3QgaW4gd2hlcmUgdGhlIGNvbnRyb2wgaXMgcGFpbnRlZC5cbi8vXG4vLyBBbHdheXMgYXJyaXZlcyBSRVNPTFZFRCAodGhlIGJhY2tlbmQgZmlsbHMgYW4gYWJzZW50IG9yIHBhcnRpYWwgc3RvcmVkIGJsb2NrXG4vLyBpbiBmcm9tIGl0cyBvd24gZGVmYXVsdHMpLCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIGRlZmF1bHQgaGVyZSDigJQgcmVuZGVyIHdoYXRcbi8vIHlvdSBhcmUgZ2l2ZW4uXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEdyb3VwQnkge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBsYWJlbDogc3RyaW5nO1xuICBncmFudWxhcml0aWVzOiBDaGFydEdyYW51bGFyaXR5W107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U3R5bGVzIHtcbiAgaGVhZGluZz86IHsgc2l6ZT86IG51bWJlciB9O1xufVxuXG4vLyBDb250ZW50IHBhZGRpbmcgYXJvdW5kIGEgY29tcG9uZW50J3MgYm9keSwgaW4gSU5DSEVTICh0aGUgZ2VvbWV0cnkgdW5pdCkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFBhZGRpbmcge1xuICB0b3A/OiBudW1iZXI7XG4gIHJpZ2h0PzogbnVtYmVyO1xuICBib3R0b20/OiBudW1iZXI7XG4gIGxlZnQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0UGFnZSB7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIC8vIFRoZSBwYWdlIG9wdHMgb3V0IG9mIHRoZSByZXBvcnQncyBoZWFkZXIgYW5kIGZvb3RlciAoYSB0aXRsZSBwYWdlKS5cbiAgbWFzdGVySGlkZGVuOiBib29sZWFuO1xuICBjb21wb25lbnRzOiBSZXBvcnRDb21wb25lbnRbXTtcbiAgLy8gRXZlcnkgYWN0aXZlIHZhbHVlIG9mIHRoZSBwYWdlLCBpbiBpZCBvcmRlcjogdGhvc2UgaXRzIHRleHQgc2hvd3MgYW5kXG4gIC8vIHRob3NlIG5vIHRleHQgc2hvd3MgYW55IG1vcmUgKGtlcHQgdW50aWwgYSB0ZXh0LCB2YWx1ZSBvciBwYWdlIGRlbGV0ZSwgc29cbiAgLy8gYSBjaGlwIHBhc3RlZCBiYWNrIHN0aWxsIG5hbWVzIG9uZSkuIE5ldmVyIGRyYXduLCBhbmQgbmV2ZXIgaW5cbiAgLy8gYGNvbXBvbmVudHNgLiBPcHRpb25hbCBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdC5cbiAgdmFsdWVzPzogUmVwb3J0Q29tcG9uZW50W107XG59XG5cbi8vICd0ZXh0JyBpcyBhdXRob3JlZCByaWNoIHRleHQgd2l0aCBubyBxdWVyeSBiZWhpbmQgaXQg4oCUIGl0IG5ldmVyIGZldGNoZXMgZGF0YS5cbi8vICd2YWx1ZScgaXMgb25lIG51bWJlciBzaG93biBpbnNpZGUgYSB0ZXh0IGJsb2NrJ3Mgd29yZHMgKHt7dmFsdWUua2V5fX0pOyBpdFxuLy8gaGFzIGEgcXVlcnkgYnV0IG5vIHBsYWNlIG9mIGl0cyBvd24gb24gdGhlIHBhZ2UuICdncmlkJyBpcyBhIHRhYmxlIGRyYXduIGJ5XG4vLyBmcy1ncmlkLCB3aGljaCByZWFkcyBpdHMgb3duIHJvd3MgdGhyb3VnaCBSZXBvcnRHcmlkU291cmNlLlxuZXhwb3J0IHR5cGUgUmVwb3J0Q29tcG9uZW50VHlwZSA9ICdjaGFydCcgfCAnbGlzdCcgfCAnZ3JpZCcgfCAna3BpJyB8ICd0ZXh0JyB8ICd2YWx1ZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Q29tcG9uZW50IHtcbiAgaWQ6IG51bWJlcjtcbiAgdHlwZTogUmVwb3J0Q29tcG9uZW50VHlwZTtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIC8vIEdlb21ldHJ5IGluIElOQ0hFUzogYWJzb2x1dGUgcG9zaXRpb24gb24gdGhlIHBhZ2UgY2FudmFzLlxuICB4OiBudW1iZXI7XG4gIHk6IG51bWJlcjtcbiAgdzogbnVtYmVyO1xuICBoOiBudW1iZXI7XG4gIC8vIEhlaWdodCBtb2RlLCBERVJJVkVEIGZyb20gdHlwZSBzZXJ2ZXItc2lkZSAobm90IHN0b3JlZCwgcmVhZC1vbmx5KTogbGlzdHNcbiAgLy8gYW5kIEtQSSB0aWxlcyBhcmUgYXV0byAodGhlIGJveCBzaXplcyB0byBpdHMgY29udGVudCwgYGhgIGlnbm9yZWQpOyBjaGFydHNcbiAgLy8gYXJlIGFsd2F5cyBmaXhlZCAodXNlIGBoYCkgc28gdGhleSBmaXQgdGhlIGJveCBhbmQgbmV2ZXIgb3ZlcmZsb3cuXG4gIGF1dG9IZWlnaHQ6IGJvb2xlYW47XG4gIC8vIFRoZSBzdG9yZWQgU1FMIG9mIGEgbGVnYWN5IHNxbC1tb2RlIGNvbXBvbmVudC4gTlVMTCBmb3IgYSBkZXJpdmVkIG9uZSxcbiAgLy8gd2hvc2Ugc3RhdGVtZW50IGRvZXMgbm90IGV4aXN0IHVudGlsIGl0cyBkb2N1bWVudCBpcyBjb21waWxlZCDigJQgdGhlIFNRTCB0YWJcbiAgLy8gZmV0Y2hlcyB0aGF0IHNlcGFyYXRlbHkgKHNlZSBSZXBvcnRDb21wb25lbnRTcWwpLlxuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIGNvbmZpZzogQ2hhcnRDb25maWcgJiBMaXN0Q29uZmlnICYgR3JpZENvbmZpZyAmIEtwaUNvbmZpZyAmIFRleHRDb25maWcgJiBWYWx1ZUNvbmZpZyAmIENvbXBvbmVudExheW91dENvbmZpZ1xuICAgICYgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGZpbHRlcnM6IFJlcG9ydEZpbHRlcltdO1xuICAvLyBUaGUgZmllbGQgdGhlIHJlcG9ydCdzIGdyb3VwLWJ5IHJlLWJ1Y2tldHMgb24gdGhpcyB0aWxlLCBuYW1lZCBieSB0aGVcbiAgLy8gc2VydmVyOyBudWxsIG9uIGEgdGlsZSB0aGF0IGtlZXBzIGl0cyBvd24gZ3JhaW4uIEFic2VudCBmcm9tIGEgc2VydmVyIHRoYXRcbiAgLy8gcHJlZGF0ZXMgdGFibGVzIGZvbGxvd2luZyB0aGUgZ3JvdXAtYnkgKGZvbGxvd3NHcm91cEJ5KCkpLlxuICBmb2xsb3dzR3JvdXBCeT86IFJlcG9ydEdyb3VwQnlGaWVsZCB8IG51bGw7XG59XG5cbi8vIFRoZSBmaWVsZCB0aGUgcmVwb3J0J3MgZ3JvdXAtYnkgcmUtYnVja2V0cyBvbiBhIHRpbGUg4oCUIGEgdGltZS1zZXJpZXNcbi8vIGNoYXJ0J3MgeC1heGlzLCBhIHRhYmxlJ3MgdGltZSBheGlzIGFzIGl0cyBmaWVsZHMgbmFtZSBpdCDigJQgYW5kIHRoZSBncmFpblxuLy8gdGhlIHRpbGUgaXMgYXV0aG9yZWQgYXQsIHdoaWNoIGl0IHJlYWRzIGF0IHdoaWxlIHRoZSBncm91cC1ieSBwaWNrcyBub25lLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRHcm91cEJ5RmllbGQge1xuICBmaWVsZDogc3RyaW5nO1xuICBncmFudWxhcml0eTogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG59XG5cbi8vIFdoYXQgdGhlIFNRTCB0YWIgZmV0Y2hlczogdGhlIHN0YXRlbWVudCBhIGNvbXBvbmVudCBydW5zLlxuLy9cbi8vIEZvciBhIGRlcml2ZWQgY29tcG9uZW50IGBiYXNlbGluZWAgaXMgdHJ1ZSBhbmQgYHNxbGAgaXMgd2hhdCBpdHMgZG9jdW1lbnRcbi8vIGNvbXBpbGVzIHRvIHdpdGggTk8gdmlld2VyIHN0YXRlIOKAlCBubyBmaWx0ZXJzLCB0aGUgYXV0aG9yZWQgZ3JhaW4uIFRoZVxuLy8gbnVtYmVycyBvbiBzY3JlZW4gY29tZSBmcm9tIHRoYXQgc3RhdGVtZW50IHBsdXMgd2hhdGV2ZXIgdGhlIHZpZXdlciBwaWNrZWQsXG4vLyBzbyB0aGUgdHdvIGNhbiBsZWdpdGltYXRlbHkgZGlmZmVyIGFuZCB0aGUgdGFiIHNheXMgc28gcmF0aGVyIHRoYW4gaW1wbHlpbmdcbi8vIHRoZXkgbWF0Y2guXG4vL1xuLy8gYHRpbWV6b25lYCBpcyB0aGUgSUFOQSB6b25lIHRoZSBzdGF0ZW1lbnQgd2FzIGNvbXBpbGVkIGluOiB0aGUgcmVwb3J0J3Ncbi8vIGVmZmVjdGl2ZSB6b25lLiBPcHRpb25hbCBiZWNhdXNlIG9sZGVyIHNlcnZlcnMgb21pdCBpdDsgdGhleSBjb21waWxlZCBpbiBVVEMuXG4vL1xuLy8gYGVycm9yYCBpcyBub3QgYSBmYWlsdXJlIG9mIHRoZSByZXF1ZXN0OiBhIGRvY3VtZW50IHRoYXQgbm8gbG9uZ2VyIGNvbXBpbGVzXG4vLyBpcyBwcmVjaXNlbHkgd2hhdCBzb21lb25lIG9wZW5zIHRoaXMgdGFiIHRvIGRpc2NvdmVyLCBzbyBpdCBhcnJpdmVzIGFzIGFcbi8vIG1lc3NhZ2UgdG8gcmVuZGVyIHdpdGggYGVycm9yVHlwZWAgbmFtaW5nIHdoaWNoIGtpbmQgKCdzdGFsZS1xdWVyeScgb3Jcbi8vICdzZW5zaXRpdmUtY29sdW1uJyksIGFuZCBgc3FsYCBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRDb21wb25lbnRTcWwge1xuICBzcWw6IHN0cmluZyB8IG51bGw7XG4gIG9yaWdpbjogJ3NxbCcgfCAnZGJxJyB8ICdkZXJpdmVkJztcbiAgYmFzZWxpbmU6IGJvb2xlYW47XG4gIHRpbWV6b25lPzogc3RyaW5nO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3JUeXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIHRleHQgYmxvY2sncyBjb250ZW50OiBhbiBodG1sIGZyYWdtZW50IHRoZSBzZXJ2ZXIgaGFzIGFscmVhZHkgcmVidWlsdCBmcm9tXG4vLyBhbiBhbGxvd2xpc3QsIHdoaWNoIG1heSBjYXJyeSB7e3BhZ2UubnVtYmVyfX0sIHt7cGFnZS5uYW1lfX0gYW5kXG4vLyB7e3JlcG9ydC5uYW1lfX0gdG9rZW5zIChzZWUgdGV4dC50cykuXG5leHBvcnQgaW50ZXJmYWNlIFRleHRDb25maWcge1xuICBodG1sPzogc3RyaW5nO1xufVxuXG4vLyBBIHZhbHVlJ3Mga2V5OiB3aGF0IGl0cyB0b2tlbiBpbiBhIHRleHQgYmxvY2sncyBodG1sIG5hbWVzLCB1bmlxdWUgd2l0aGluXG4vLyB0aGUgcGFnZS4gSXRzIG51bWJlciBpcyBmb3JtYXR0ZWQgYnkgY29uZmlnLm1lYXN1cmUgKEtwaUNvbmZpZyksIGFzIG9uIGEgS1BJLlxuLy8gQSBmb3JtdWxhIHZhbHVlIGhhcyBubyBxdWVyeTogYGZvcm11bGFgIG5hbWVzIHdoYXQgaXQgd29ya3Mgb3V0IG9mIHRoZVxuLy8gcGFnZSdzIHF1ZXJ5IHZhbHVlcywgYW5kIGl0cyBtZWFzdXJlIGhvbGRzIG9ubHkgdGhlIGZvcm1hdCBrZXlzIGl0cyBhdXRob3Jcbi8vIGdhdmUgKGZvcm1hdCwgcHJlY2lzaW9uLCB1bml0cykuXG5leHBvcnQgaW50ZXJmYWNlIFZhbHVlQ29uZmlnIHtcbiAga2V5Pzogc3RyaW5nO1xuICBmb3JtdWxhPzogVmFsdWVGb3JtdWxhQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gQSBmb3JtdWxhIHZhbHVlJ3Mgb3BlcmF0aW9uIGFuZCBvcGVyYW5kczogYG9mYCBuYW1lcyBxdWVyeSB2YWx1ZXMgb24gdGhlXG4vLyBzYW1lIHBhZ2UgKHRoZSBtYXN0ZXIgZm9yIGEgaGVhZGVyIG9yIGZvb3RlcikgYnkga2V5LCAyIG9mIHRoZW0sIG9yIDIgdG8gMTBcbi8vIGZvciBhIHN1bS4gYHNpZ25lZGAgYWJzZW50IHJlYWRzIHRydWUgZm9yIGEgY2hhbmdlIGFuZCBhIHBlcmNlbnQgY2hhbmdlLFxuLy8gZmFsc2UgZm9yIGEgcmF0aW8gYW5kIGEgc3VtLlxuZXhwb3J0IGludGVyZmFjZSBWYWx1ZUZvcm11bGFDb25maWcge1xuICBvcDogUmVwb3J0VmFsdWVGb3JtdWxhO1xuICBvZjogc3RyaW5nW107XG4gIHNpZ25lZD86IGJvb2xlYW4gfCBudWxsO1xufVxuXG4vLyBPbmUgcm93IG9mIFBPU1QgcGFnZXMvOmlkL3ZhbHVlczogYSB2YWx1ZSdzIG51bWJlciBmb3IgdGhlIGZpbHRlcnMgc2VudC5cbi8vIFRoZXJlIGlzIG9uZSByb3cgcGVyIHZhbHVlIHRoZSBsYXllciByZWFkcywgaW4gaWQgb3JkZXI6IG9uZSBzb21lIHRleHQgb25cbi8vIHRoYXQgcGFnZSBzaG93cywgb3IgYW4gb3BlcmFuZCBvZiBhIGZvcm11bGEgc29tZSB0ZXh0IHNob3dzLiBgdmFsdWVgIGlzXG4vLyByYXcsIGFzIHRoZSBxdWVyeSByZXR1cm5lZCBpdCBvciB0aGUgc2VydmVyIHdvcmtlZCBpdCBvdXQgKG51bGwgd2hlbiB0aGVyZVxuLy8gaXMgbm8gcm93IG9yIHRoZSByZXN1bHQgaXMgbnVsbCk7IGZvcm1hdHRpbmcgaXMgdGhlIHZpZXdlcidzLCB0aHJvdWdoIHRoZVxuLy8gdmFsdWUncyBtZWFzdXJlLiBgZXJyb3JgIGlzIHRoYXQgdmFsdWUncyBvd24gZmFpbHVyZSwgYW5kIHRoZSBwYWdlJ3Mgb3RoZXJcbi8vIHZhbHVlcyBhcmUgcmVhZCByZWdhcmRsZXNzLlxuLy8gYHJvbGVgIGlzIHRoZSBjb21wYXJpc29uIHJvbGUgdGhlIG51bWJlciBwbGF5czogYSBxdWVyeSB2YWx1ZSdzIGNvbXBhcmlzb25cbi8vIG91dHB1dCdzLCBjaGFuZ2Ugb3IgcGVyY2VudF9jaGFuZ2UgZm9yIHRob3NlIGZvcm11bGFzLCBlbHNlIG51bGwuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFBhZ2VWYWx1ZSB7XG4gIGlkOiBudW1iZXI7XG4gIGtleTogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbDtcbiAgZXJyb3I6IHN0cmluZyB8IG51bGw7XG4gIHJvbGU/OiBPdXRwdXRSb2xlIHwgbnVsbDtcbn1cblxuLy8gQ3Jvc3MtdHlwZSBsYXlvdXQvc3R5bGUga2V5cyBjYXJyaWVkIGluIGEgY29tcG9uZW50J3MgY29uZmlnIChhbG9uZ3NpZGUgdGhlXG4vLyB0eXBlLXNwZWNpZmljIGNoYXJ0L2xpc3Qva3BpIGtleXMpLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRMYXlvdXRDb25maWcge1xuICBwYWRkaW5nPzogQ29tcG9uZW50UGFkZGluZztcbn1cblxuLy8gVGhlIHByZXNlbnRhdGlvbiBzZXR0aW5ncyBhIGNvbXBvbmVudCdzIHNldHRpbmdzIGRpYWxvZyBlZGl0cy4gVGl0bGUgYW5kXG4vLyBwYWRkaW5nIGFyZSBub3QgcGFydCBvZiB3aGF0IHRoZSBjb21wb25lbnQgcXVlcmllcywgc28gYSBjaGFuZ2UgdG8gdGhlbVxuLy8gcmVwYWludHMgd2l0aG91dCByZS1ydW5uaW5nIGFueXRoaW5nLiBBIGRlcml2ZWQgS1BJJ3MgY2FyZCBrZXlzIGFyZSBzZW50XG4vLyB0b286IHRoZSBzZXJ2ZXIgY29tcHV0ZXMgdGhlIHRhcmdldCdzIHByb2dyZXNzIGFuZCB0aGUgc3BhcmtsaW5lJ3MgcG9pbnRzXG4vLyB3aXRoIHRoZSBkYXRhLCBzbyBhIGNoYW5nZSB0byB0aGVtIHJlbG9hZHMgaXQuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudFNldHRpbmdzIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgcGFkZGluZzogQ29tcG9uZW50UGFkZGluZztcbiAga3BpPzogS3BpQ2FyZFNldHRpbmdzO1xufVxuXG4vLyBBIEtQSSdzIGNhcmQga2V5cy4gVGhlIGRpYWxvZyBzZW5kcyB0aGVtIChudWxsIHJlbW92ZXMgYSBrZXksIGluY3JlYXNlSXNcbi8vIG51bGwgcmVhZHMgZ29vZCksIGFuZCBDb21wb25lbnRTZXR0aW5ncy5rcGkgY2FycmllcyB0aGVtIGFzIHRoZSBzZXJ2ZXJcbi8vIHNhdmVkIHRoZW0sIHJlYWQgYmFjayBmcm9tIHRoZSBjb25maWcgaXQgcmV0dXJucy5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ2FyZFNldHRpbmdzIHtcbiAgaW5jcmVhc2VJczogUmVwb3J0Q2hhbmdlUG9sYXJpdHkgfCBudWxsO1xuICB0YXJnZXQ6IEtwaVRhcmdldENvbmZpZyB8IG51bGw7XG4gIHNwYXJrbGluZTogS3BpU3BhcmtsaW5lQ29uZmlnIHwgbnVsbDtcbn1cblxuLy8gV2hlcmUgYSBjaGFydCdzIGxlZ2VuZCBzaXRzIHJlbGF0aXZlIHRvIHRoZSBwbG90LCBvciAnaGlkZGVuJyB0byBkcm9wIGl0LlxuZXhwb3J0IHR5cGUgTGVnZW5kUG9zaXRpb24gPSAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyB8ICdoaWRkZW4nO1xuXG5leHBvcnQgdHlwZSBDaGFydEdyYW51bGFyaXR5ID0gJ2RheScgfCAnd2VlaycgfCAnbW9udGgnIHwgJ3F1YXJ0ZXInIHwgJ3llYXInO1xuXG4vLyBIb3cgZWFjaCBncmFudWxhcml0eSByZWFkcyBpbiB0aGUgZ3JvdXAtYnkgY29udHJvbCBhbmQgb24gYW4gZXhwb3J0IGNvdmVyXG4vLyBzaGVldC4gV0hJQ0ggb2YgdGhlbSBhIGdpdmVuIHJlcG9ydCBvZmZlcnMgY29tZXMgZnJvbSBpdHMgUmVwb3J0R3JvdXBCeTtcbi8vIHRoaXMgaXMgb25seSB0aGUgbmFtaW5nLiAneWVhcicgcmVhZHMgYXMgXCJBbm51YWxseVwiLlxuZXhwb3J0IGNvbnN0IEdSQU5VTEFSSVRZX09QVElPTlM6IHsgdmFsdWU6IENoYXJ0R3JhbnVsYXJpdHk7IG5hbWU6IHN0cmluZyB9W10gPSBbXG4gIHsgdmFsdWU6ICdkYXknLCBuYW1lOiAnRGF5JyB9LFxuICB7IHZhbHVlOiAnd2VlaycsIG5hbWU6ICdXZWVrJyB9LFxuICB7IHZhbHVlOiAnbW9udGgnLCBuYW1lOiAnTW9udGgnIH0sXG4gIHsgdmFsdWU6ICdxdWFydGVyJywgbmFtZTogJ1F1YXJ0ZXInIH0sXG4gIHsgdmFsdWU6ICd5ZWFyJywgbmFtZTogJ0FubnVhbGx5JyB9LFxuXTtcblxuLy8gVGhlIGNoYXJ0IHR5cGVzIHRoYXQgcGxvdCBzZXJpZXMgYWdhaW5zdCBhIGNhdGVnb3J5IGFuZCBhIHZhbHVlIGF4aXMsIGFuZCBzb1xuLy8gdGhlIHR5cGVzIGEgbWVhc3VyZSdzIG93biBzZXJpZXMgY2FuIGJlIGRyYXduIGFzLiBBIHdhdGVyZmFsbCBoYXMgdGhlIHNhbWVcbi8vIGF4ZXMgYnV0IGlzIG5vdCBvbmUgb2YgdGhlbTogaXQgZHJhd3MgaXRzIG9uZSBtZWFzdXJlIGFzIGZsb2F0aW5nIHN0ZXBzLlxuZXhwb3J0IHR5cGUgQXhpc0NoYXJ0VHlwZSA9ICdiYXInIHwgJ2xpbmUnIHwgJ2FyZWEnO1xuXG4vLyBXaGF0IG9uZSBiYXIgb2YgYSB3YXRlcmZhbGwgZG9lcyB0byB0aGUgcnVubmluZyB0b3RhbCDigJQgZWFjaCBpcyBkcmF3biBpbiBpdHNcbi8vIG93biBjb2xvci4gVGhlIGNsb3NpbmcgdG90YWwgaXMgdGhlIGxhc3QgYmFyLCBzdGFuZGluZyBvbiB6ZXJvLlxuZXhwb3J0IHR5cGUgV2F0ZXJmYWxsU3RlcEtpbmQgPSAncmlzZScgfCAnZmFsbCcgfCAndG90YWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0Q29uZmlnIHtcbiAgLy8gQSB3YXRlcmZhbGwgdGFrZXMgT05FIG1lYXN1cmUgd2hvc2UgdmFsdWUgcGVyIGNhdGVnb3J5IGlzIGhvdyBmYXIgdGhlXG4gIC8vIHJ1bm5pbmcgdG90YWwgbW92ZXMgdGhlcmU6IGVhY2ggYmFyIHN0YXJ0cyB3aGVyZSB0aGUgb25lIGJlZm9yZSBpdCBlbmRlZCxcbiAgLy8gYW5kIGEgY2xvc2luZyBUb3RhbCBiYXIgc2hvd3MgdGhlIHN1bS5cbiAgY2hhcnRUeXBlPzogQXhpc0NoYXJ0VHlwZSB8ICd3YXRlcmZhbGwnIHwgJ3BpZScgfCAnZG9udXQnO1xuICAvLyBGb3Iga2luZCAndGltZScsIHRoZSBzZXJ2ZXIgYnVja2V0cyB0aGUgcmF3IGRhdGV0aW1lIGNvbHVtbiB0byBgZ3JhbnVsYXJpdHlgXG4gIC8vIGluIHRoZSByZXBvcnQncyB0aW1lem9uZSAodGhlIFNRTCBleHBvc2VzIHRoZSByYXcgY29sdW1uLCB1bmJ1Y2tldGVkKS5cbiAgLy8gZGF0ZUxhYmVsIHdyaXRlcyBhIHRpbWUgYXhpcydzIHBlcmlvZCBsYWJlbHMgc2hvcnQgKCdNYXknLCB0aGUgZGVmYXVsdCksXG4gIC8vIGxvbmcgKCdNYXkgMjAyNicpIG9yIG51bWVyaWMgKCcyMDI2LTA1Jyk7IGEgY2F0ZWdvcnkgYXhpcyBpZ25vcmVzIGl0LlxuICB4QXhpcz86IHtcbiAgICBjb2x1bW46IHN0cmluZztcbiAgICBraW5kPzogJ2NhdGVnb3J5JyB8ICd0aW1lJztcbiAgICBncmFudWxhcml0eT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgZGF0ZUxhYmVsPzogUmVwb3J0Q2hhcnREYXRlTGFiZWw7XG4gIH07XG4gIG1lYXN1cmVzPzogQ2hhcnRNZWFzdXJlW107XG4gIC8vIEVhY2ggdmFsdWUgb2YgdGhpcyBjb2x1bW4gYmVjb21lcyBpdHMgb3duIHNlcmllcy4gSXQgY2FycmllcyBubyBsYWJlbDogdGhlXG4gIC8vIGxlZ2VuZCBuYW1lcyB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMuXG4gIHNwbGl0Qnk/OiB7IGNvbHVtbjogc3RyaW5nIH07XG4gIC8vIFNpbmdsZS1kaW1lbnNpb24gYmFyIGNoYXJ0cyBvbmx5OiBjb2xvciBlYWNoIGJhciBieSBpdHMgb3duIGNhdGVnb3J5IGFuZFxuICAvLyBzaG93IGEgbGVnZW5kLCBXSVRIT1VUIHNwbGl0dGluZyBpbnRvIG11bHRpcGxlIHNlcmllcyAod2hpY2ggc2xpdmVycyB0aGVcbiAgLy8gYmFycykuIHYxIGV4cGVjdHMgY29sb3JCeS5jb2x1bW4gPT09IHhBeGlzLmNvbHVtbi4gSWdub3JlZCB3aGVuIHNwbGl0QnkgaXNcbiAgLy8gc2V0IG9yIHRoZSBjaGFydCBpc24ndCBhIGJhciBjaGFydC5cbiAgY29sb3JCeT86IHsgY29sdW1uOiBzdHJpbmc7IGxhYmVsPzogc3RyaW5nIH07XG4gIG9yaWVudGF0aW9uPzogJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcbiAgc3RhY2tlZD86IGJvb2xlYW47XG4gIC8vIFN0YWNrcyB0aGUgcHJpbWFyeSBheGlzJ3MgYmFyIGFuZCBhcmVhIHNlcmllcyBhcyBzaGFyZXMgb2YgZWFjaFxuICAvLyBjYXRlZ29yeSdzIHRvdGFsLCBzbyBldmVyeSBzdGFjayByZWFjaGVzIDEwMCUuIFRoZSB2aWV3ZXIgY29tcHV0ZXMgdGhlXG4gIC8vIHNoYXJlcyBmcm9tIHRoZSByb3dzIGl0IHJlY2VpdmVzLCBhZnRlciB0aGUgZmlsdGVycyByYW47IHRoZSByb3dzIGFuZCB0aGVcbiAgLy8gQ1NWIGtlZXAgdGhlIHJhdyB2YWx1ZXMuIFRoZSB2YWx1ZSBheGlzIHRoZW4gYWx3YXlzIHJ1bnMgMCB0byAxMDAlIChmcm9tXG4gIC8vIC0xMDAlIHdoZW4gYSBzaGFyZSBpcyBuZWdhdGl2ZSkuXG4gIHBlcmNlbnRTdGFja2VkPzogYm9vbGVhbjtcbiAgLy8gVmFsdWVzIHByaW50ZWQgYmVzaWRlIHRoZSBwb2ludHMgb2YgYSBiYXIsIGxpbmUgb3IgYXJlYSBzZXJpZXM6IGV2ZXJ5XG4gIC8vIHBvaW50IChhbGwpLCBlYWNoIHNlcmllcycgbGF0ZXN0IHBvaW50IChsYXN0KSwgb3IgZXZlcnkgcG9pbnQgd2hvc2UgbGFiZWxcbiAgLy8gZml0cyB3aXRob3V0IG92ZXJsYXBwaW5nIGFub3RoZXIgKGF1dG8pLiBPbWl0dGVkIG9yIG5vbmUsIG5vIGxhYmVscy4gQVxuICAvLyBwaWUsIGEgZG9udXQgYW5kIGEgd2F0ZXJmYWxsIG5ldmVyIHByaW50IHRoZW0uXG4gIGRhdGFMYWJlbHM/OiBSZXBvcnRDaGFydERhdGFMYWJlbHM7XG4gIC8vIFRoZSBwcmltYXJ5IHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEV2ZXJ5IHNlcmllcyBpcyBwbG90dGVkIGFnYWluc3RcbiAgLy8gaXQgdW5sZXNzIGl0cyBtZWFzdXJlIGlzIHNlY29uZGFyeS5cbiAgdmFsdWVBeGlzPzogQ2hhcnRWYWx1ZUF4aXM7XG4gIC8vIFRoZSBzZWNvbmQgdmFsdWUgYXhpcywgb24gdGhlIHJpZ2h0LCB0aGF0IHNlY29uZGFyeSBtZWFzdXJlcyBwbG90IGFnYWluc3QuXG4gIHNlY29uZGFyeUF4aXM/OiBDaGFydFZhbHVlQXhpcztcbiAgLy8gTGFiZWxlZCBsaW5lcyBhY3Jvc3MgdGhlIHBsb3QgYXQgYSBjb25zdGFudCB2YWx1ZSwgb3IgYmFuZHMgYmV0d2VlbiB0d29cbiAgLy8gdmFsdWVzLCBhdCBtb3N0IDUuIFZlcnRpY2FsIGF4aXMgY2hhcnRzIGFuZCB3YXRlcmZhbGxzIG9ubHkuXG4gIHJlZmVyZW5jZXM/OiBDaGFydFJlZmVyZW5jZVtdO1xuICBsZWdlbmQ/OiBMZWdlbmRQb3NpdGlvbjtcbiAgc29ydD86IFJlcG9ydFNvcnQ7XG4gIGxpbWl0PzogbnVtYmVyO1xufVxuXG4vLyBBIHZhbHVlIGF4aXMncyB0aXRsZSBhbmQgcmFuZ2UuIEVhY2ggYm91bmQgbGVmdCBvdXQgaXMgcGlja2VkIGZyb20gdGhlIGRhdGEsXG4vLyBhbmQgdGhlIHRpY2sgc3RlcCB3aXRob3V0IGFuIGludGVydmFsLiBJdHMgdGlja3MgdGFrZSB0aGUgbnVtYmVyIGZvcm1hdCBvZlxuLy8gdGhlIG1lYXN1cmVzIHBsb3R0ZWQgYWdhaW5zdCBpdC5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhcnRWYWx1ZUF4aXMge1xuICBsYWJlbD86IHN0cmluZztcbiAgbWluPzogbnVtYmVyO1xuICBtYXg/OiBudW1iZXI7XG4gIGludGVydmFsPzogbnVtYmVyO1xufVxuXG4vLyBBIHJlZmVyZW5jZSBkcmF3biBhY3Jvc3MgYSBjaGFydCdzIHBsb3Q6IGEgbGluZSBhdCBgdmFsdWVgLCBvciB3aXRoIGB0b2AgYVxuLy8gYmFuZCBiZXR3ZWVuIHRoZSB0d28sIGxhYmVsZWQgd2l0aCBgbGFiZWxgLiBUaGUgdmFsdWUgaXMgb25lIHRoZSB1c2VyIG9yXG4vLyB0aGUgbW9kZWwgc3RhdGVzLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlIGRhdGEuIHNlY29uZGFyeSBwbG90cyBpdCBhZ2FpbnN0XG4vLyB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIHdoZW4gdGhlIGNoYXJ0IGhhcyBvbmUuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0UmVmZXJlbmNlIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw6IHN0cmluZztcbiAgdG8/OiBudW1iZXI7XG4gIHNlY29uZGFyeT86IGJvb2xlYW47XG59XG5cbi8vIEhvdyBvbmUgbnVtZXJpYyBzbG90IGlzIHNob3duOiBhIGNoYXJ0IG1lYXN1cmUsIGEgS1BJIG1lYXN1cmUsIGEgbGlzdCBjb2x1bW5cbi8vIG9yIGEgY3Jvc3MtdGFiJ3MgY2VsbHMuIFRoZSBkYXRhIHN0YXlzIHJhdyAoaXQgc29ydHMgYW5kIGV4cG9ydHMgYXMgYVxuLy8gbnVtYmVyKTsgb25seSB0aGUgcmVuZGVyZXJzIGZvcm1hdCBpdCwgdGhlIHNhbWUgd2F5IG9uIHNjcmVlbiwgaW4gdGhlIFBERlxuLy8gYW5kIGluIFBvd2VyUG9pbnQgKGZvcm1hdC50cykuIEFsbCB0aHJlZSBrZXlzIGFyZSBvcHRpb25hbCwgYW5kIHByZWNpc2lvbiBvclxuLy8gdW5pdHMgd2l0aG91dCBhIGZvcm1hdCBtZWFuIG51bWJlci5cbi8vXG4vLyBGb3JtYXR0aW5nIGlzIG9wdC1pbjogYSBsaXN0IGNvbHVtbiBvciBjcm9zcy10YWIgY2VsbCB3aXRob3V0IHRoZXNlIGtleXNcbi8vIHByaW50cyBpdHMgdmFsdWUgYXMgaXQgY2FtZSwgYW5kIGEgY2hhcnQgd2l0aG91dCB0aGVtIGtlZXBzIGl0cyBwbGFpblxuLy8gbG9jYWxlLWdyb3VwZWQgYXhpcyBhbmQgdG9vbHRpcHMuIEEgS1BJIHdpdGhvdXQgdGhlbSBwcmludHMgYSBwbGFpbiBudW1iZXIuXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlckZvcm1hdFNwZWMge1xuICAvLyBwZXJjZW50IHRha2VzIGEgMC0xIHJhdGlvICgwLjMgcmVhZHMgMzAlKSB3aGVuIHRoZSByZXBvcnQncyBwZXJjZW50Rm9ybWF0XG4gIC8vIGlzICdyYXRpbyc7IGFuIG9sZGVyIHNlcnZlciBsZWF2ZXMgaXQgb3V0IGFuZCBzZW5kcyB4MTAwLiBjdXJyZW5jeSBsYWJlbHNcbiAgLy8gdGhlIGFtb3VudCBpbiB0aGUgcmVwb3J0J3MgY3VycmVuY3ksIHdyaXR0ZW4gaW4gaXRzIGxvY2FsZS5cbiAgZm9ybWF0PzogUmVwb3J0VmFsdWVGb3JtYXQgfCBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBIb3cgbWFueSBkZWNpbWFsIHBsYWNlcyB0aGUgdmFsdWUgaXMgc2hvd24gdG8gKDAtNikuIEZpeGVkIHJhdGhlciB0aGFuXG4gIC8vIG1heGltdW06IGEgY29sdW1uIG9mIHJhdGVzIGlzIHVucmVhZGFibGUgd2hlbiBlYWNoIG9uZSBzaG93cyBhIGRpZmZlcmVudFxuICAvLyBudW1iZXIgb2YgZGVjaW1hbHMuIEZvciBwZXJjZW50IGl0IGNvdW50cyB0aGUgZGVjaW1hbHMgb2YgdGhlIHBlcmNlbnRhZ2VcbiAgLy8gKHByZWNpc2lvbiAxIHNob3dzIDAuMyBhcyAzMC4wJSkuIE9taXR0ZWQgbGVhdmVzIHRoZSBmb3JtYXQncyBvd24gZGVmYXVsdDpcbiAgLy8gYXQgbW9zdCBvbmUgZGVjaW1hbCBmb3IgcGVyY2VudCAoYW5kIGZvciBhbiBhYmJyZXZpYXRlZCAxLjJLKSwgd2hvbGUgdW5pdHNcbiAgLy8gZm9yIGN1cnJlbmN5LCB0aGUgbG9jYWxlJ3MgZGVmYXVsdCBmb3IgYSBudW1iZXIuXG4gIC8vXG4gIC8vIEl0IGNhbm5vdCBiZSBhcHBsaWVkIGluIHRoZSBTUUw6IHRoZSB2YWx1ZSBpcyBhZ2dyZWdhdGVkIGFmdGVyIHRoZSByZXBvcnQnc1xuICAvLyBmaWx0ZXJzIHJ1biwgc28gcHJlLXJvdW5kaW5nIHdvdWxkIGJyZWFrIGxpdmUgcmUtZmlsdGVyaW5nLlxuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIC8vIEFiYnJldmlhdGVzIHRvIHRob3VzYW5kcyAoMS4ySykgb3IgbWlsbGlvbnMgKDMuNE0pLCBvciBwaWNrcyBieSBzaXplLlxuICB1bml0cz86IFJlcG9ydE51bWJlclVuaXRzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0TWVhc3VyZSBleHRlbmRzIE51bWJlckZvcm1hdFNwZWMge1xuICBjb2x1bW46IHN0cmluZztcbiAgYWdncmVnYXRpb24/OiAnc3VtJyB8ICdjb3VudCcgfCAnYXZnJyB8ICdtaW4nIHwgJ21heCc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBEcmF3cyB0aGlzIG1lYXN1cmUncyBzZXJpZXMgYXMgYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHRoZSBjaGFydCdzIG93blxuICAvLyBjaGFydFR5cGUg4oCUIGNvdW50cyBhcyBiYXJzIHdpdGggYSByYXRlIGFzIGEgbGluZSBvdmVyIHRoZW0gaXMgYSBjb21ib1xuICAvLyBjaGFydC4gT21pdHRlZCwgdGhlIHNlcmllcyB0YWtlcyB0aGUgY2hhcnQncyB0eXBlLiBBeGlzIGNoYXJ0cyBvbmx5IChhIHBpZVxuICAvLyBpZ25vcmVzIGl0KS5cbiAgdHlwZT86IEF4aXNDaGFydFR5cGU7XG4gIC8vIEEgY2hhcnQgbWVhc3VyZSdzIGZvcm1hdCBzaG93cyBvbiBpdHMgdG9vbHRpcHMsIGFuZCBvbiB0aGUgdmFsdWUgYXhpc1xuICAvLyB3aGVuIGV2ZXJ5IG1lYXN1cmUgc2hhcmluZyB0aGUgYXhpcyBhZ3JlZXMgb24gaXQuIEEgS1BJJ3MgbWVhc3VyZSBmb3JtYXRzXG4gIC8vIGl0cyBvbmUgdmFsdWUuXG4gIGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0O1xuICAvLyBQbG90cyB0aGlzIG1lYXN1cmUgYWdhaW5zdCB0aGUgc2Vjb25kIHZhbHVlIGF4aXMsIG9uIHRoZSByaWdodCwgZm9yIGFcbiAgLy8gcXVhbnRpdHkgb24gYW5vdGhlciBzY2FsZS4gT21pdHRlZCBvciBmYWxzZSwgaXQgc2hhcmVzIHRoZSBwcmltYXJ5IGF4aXMuXG4gIC8vIEEgdmVydGljYWwgYXhpcyBjaGFydCBvbmx5LCB3aXRoIGF0IGxlYXN0IG9uZSBtZWFzdXJlIGxlZnQgb24gdGhlIHByaW1hcnlcbiAgLy8gYXhpcy5cbiAgc2Vjb25kYXJ5PzogYm9vbGVhbjtcbiAgLy8gVGhlIHBhbGV0dGUgY29sb3IgdGhpcyBtZWFzdXJlJ3Mgc2VyaWVzIGlzIGRyYXduIGluLiBPbWl0dGVkLCB0aGUgc2VyaWVzXG4gIC8vIHRha2VzIHRoZSBwYWxldHRlIGNvbG9yIG9mIGl0cyBwb3NpdGlvbi4gQSBjb2xvciBvbiB0aGUgZmlyc3QgbWVhc3VyZVxuICAvLyB0dXJucyBvZmYgYSBjYXRlZ29yeSBiYXIgY2hhcnQncyBkZWZhdWx0IGNvbG9yIHBlciBiYXIgKGlzQ29sb3JCeSkuXG4gIGNvbG9yPzogUmVwb3J0Q2hhcnRDb2xvcjtcbiAgLy8gSG93IGEgbGluZSBzZXJpZXMnIGxpbmUgaXMgZHJhd24uIE9taXR0ZWQsIHNvbGlkLlxuICBsaW5lPzogUmVwb3J0Q2hhcnRMaW5lU3R5bGU7XG4gIC8vIFdoZXRoZXIgYSBsaW5lIG9yIGFyZWEgc2VyaWVzIGRyYXdzIGEgZG90IG9uIGVhY2ggcG9pbnQuIE9taXR0ZWQsIHRydWUuXG4gIG1hcmtlcnM/OiBib29sZWFuO1xuICAvLyBBIGxpbmUgYWNyb3NzIHRoZSBwbG90IGF0IHRoaXMgc2VyaWVzJyBhdmVyYWdlLCBtZWRpYW4sIGxvd2VzdCBvciBoaWdoZXN0XG4gIC8vIHZhbHVlIG92ZXIgdGhlIHBvaW50cyBvbiBzY3JlZW4uIFZlcnRpY2FsIGF4aXMgY2hhcnRzIG9ubHkuXG4gIG1hcmtMaW5lPzogUmVwb3J0Q2hhcnRNYXJrU3RhdDtcbn1cblxuLy8gT25lIGF1dGhvcmVkIGNvbHVtbiBvZiBhIHBsYWluIGxpc3QuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb2x1bW4gZXh0ZW5kcyBOdW1iZXJGb3JtYXRTcGVjIHtcbiAgY29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsPzogc3RyaW5nO1xuICAvLyBkYXRlIGtlZXBzIHRoZSBjb2x1bW4gYSBSQVcgdGltZXN0YW1wLCBzbyB0aGUgcmVwb3J0IHRpbWV6b25lIGFuZCBpdHNcbiAgLy8gZGF0ZVJhbmdlIGZpbHRlcnMga2VlcCB3b3JraW5nLCBhbmQgdGhlIHZpZXdlciByZW5kZXJzIGl0IGFzIGEgZGF5IGluIHRoZVxuICAvLyByZXBvcnQncyB6b25lIGFuZCBsb2NhbGUuIG51bWJlciwgcGVyY2VudCBhbmQgY3VycmVuY3kgZm9ybWF0IHRoZSB2YWx1ZSBhc1xuICAvLyBhIEtQSSBtZWFzdXJlIGRvZXMuIFdpdGhvdXQgYSBmb3JtYXQgdGhlIHZhbHVlIHByaW50cyBhcyBpdCBjYW1lLlxuICBmb3JtYXQ/OiBSZXBvcnRMaXN0Q29sdW1uRm9ybWF0O1xuICAvLyBBIGNvbHVtbiB0aGUgU1FMIGFscmVhZHkgZm9ybWF0dGVkIGlzIHRleHQsIHNvIGl0IG5hbWVzIGBzb3J0Q29sdW1uYDogdGhlXG4gIC8vIHJhdyBudW1lcmljIGFsaWFzIHRoZSBxdWVyeSBhbHNvIG91dHB1dHMsIHdoaWNoIHRoZSBzZXJ2ZXIgb3JkZXJzIGJ5XG4gIC8vIGluc3RlYWQuXG4gIHNvcnRDb2x1bW4/OiBzdHJpbmc7XG4gIC8vIGZhbHNlIGtlZXBzIHRoZSBjZWxsIG9uIG9uZSBsaW5lLiBPbWl0dGVkLCBhIGxvbmcgdmFsdWUgd3JhcHMuXG4gIHdyYXA/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3RDb25maWcge1xuICBjb2x1bW5zPzogTGlzdENvbHVtbltdO1xuICAvLyBBIGNyb3NzLXRhYjogYHJvd0J5YCBzdGF5cyBkb3duIHRoZSBzaWRlIGFuZCBldmVyeSB2YWx1ZSBvZiBgcGl2b3RCeWBcbiAgLy8gYmVjb21lcyBhIGNvbHVtbi4gVGhlIHR3byBhcmUgc2V0IHRvZ2V0aGVyLCBgY29sdW1uc2AgaXMgb21pdHRlZCAodGhlXG4gIC8vIGJhY2tlbmQgcmVqZWN0cyBhdXRob3JpbmcgYm90aCksIGFuZCB0aGUgY29sdW1uIHNldCBhcnJpdmVzIHdpdGggdGhlIHJvd3NcbiAgLy8gaW4gQ29tcG9uZW50RGF0YS5jb2x1bW5zIGJlY2F1c2Ugb25seSB0aGUgcmVzdWx0IGtub3dzIHRoZSBwaXZvdCB2YWx1ZXMuXG4gIC8vIHJvd0J5LmxhYmVsIGhlYWRzIHRoZSBzaWRlIGNvbHVtbiBvbiBzY3JlZW4gYW5kIGluIGV2ZXJ5IGV4cG9ydCwgYW5kXG4gIC8vIGRlZmF1bHRzIHRvIHRoZSBjb2x1bW4gbmFtZS4gcGl2b3RCeSBjYXJyaWVzIG5vIGxhYmVsOiBpdHMgdmFsdWVzIGFyZSB0aGVcbiAgLy8gaGVhZGluZ3MuXG4gIHJvd0J5PzogeyBjb2x1bW46IHN0cmluZzsgbGFiZWw/OiBzdHJpbmcgfTtcbiAgcGl2b3RCeT86IHsgY29sdW1uOiBzdHJpbmcgfTtcbiAgLy8gVGhlIGF1dGhvcmVkIG9yZGVyLCBtb3N0IGltcG9ydGFudCBmaXJzdC4gQSBsaXN0IHNhdmVkIGJlZm9yZSBtdWx0aS1rZXlcbiAgLy8gc29ydGluZyBzdG9yZXMgb25lIG9iamVjdCwgc28gcmVhZCBpdCB0aHJvdWdoIGxpc3RTb3J0VGVybXMoKSBvbmx5LlxuICBzb3J0PzogUmVwb3J0U29ydCB8IFJlcG9ydFNvcnRbXTtcbiAgLy8gSG93IG1hbnkgbGVhZGluZyBjb2x1bW5zIHN0YXkgaW4gdmlldyB3aGlsZSB0aGUgbGlzdCBzY3JvbGxzIHNpZGV3YXlzXG4gIC8vICgwLTMpLiBVbnNldCwgYSBjcm9zcy10YWIgcGlucyBpdHMgcm93LWtleSBjb2x1bW4gYW5kIGEgcGxhaW4gbGlzdCBub25lLlxuICBwaW5uZWRDb2x1bW5zPzogbnVtYmVyIHwgbnVsbDtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIC8vIHRydWUgYWRkcyBhIHRvdGFscyByb3cgdW5kZXIgdGhlIGxpc3Q6IHRoZSBzZXJ2ZXIgcnVucyB0aGUgbWVhc3VyZXMgYWdhaW5cbiAgLy8gb3ZlciBldmVyeSByb3cgdGhlIGZpbHRlcnMga2VlcCwgd2l0aG91dCBncm91cGluZywgYW5kIGEgY3Jvc3MtdGFiIHRvdGFsc1xuICAvLyBlYWNoIGNvbHVtbi5cbiAgdG90YWxzPzogYm9vbGVhbjtcbiAgLy8gQSBjcm9zcy10YWIgb25seTogaG93IGV2ZXJ5IGNlbGwgb2YgdGhlIGdyaWQgaXMgZm9ybWF0dGVkLCB3aXRoIGEgS1BJXG4gIC8vIG1lYXN1cmUncyBrZXlzLiBUaGUgcm93IGtleSBjb2x1bW4gc3RheXMgYXMgaXQgY2FtZS5cbiAgY2VsbEZvcm1hdD86IE51bWJlckZvcm1hdFNwZWMgJiB7IGZvcm1hdD86IFJlcG9ydFZhbHVlRm9ybWF0IH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpQ29uZmlnIHtcbiAgbWVhc3VyZT86IENoYXJ0TWVhc3VyZTtcbiAgLy8gV2hldGhlciBhIHJpc2UgaW4gdGhlIHZhbHVlIGlzIGdvb2QgbmV3cywgYmFkIG5ld3Mgb3IgbmVpdGhlcjogaXQgcGlja3NcbiAgLy8gdGhlIGRlbHRhJ3MgY29sb3IgYW5kIGRlY2lkZXMgd2hlbiBhIHRhcmdldCBpcyBtZXQgKGdvb2Q6IGF0IG9yIGFib3ZlIGl0O1xuICAvLyBiYWQ6IGF0IG9yIGJlbG93IGl0OyBuZXV0cmFsOiBuZXZlciBqdWRnZWQpLiBPbWl0dGVkIG9yIG51bGwgcmVhZHMgZ29vZC5cbiAgaW5jcmVhc2VJcz86IFJlcG9ydENoYW5nZVBvbGFyaXR5IHwgbnVsbDtcbiAgLy8gQSBudW1iZXIgdGhlIHVzZXIgZ2F2ZSBmb3IgdGhlIHZhbHVlIHRvIHJlYWNoLCBuZXZlciBvbmUgcmVhZCBvZmYgdGhlXG4gIC8vIGRhdGEuIFRoZSBzZXJ2ZXIgc2VuZHMgdGhlIHByb2dyZXNzIHRvd2FyZCBpdCB3aXRoIHRoZSBkYXRhLlxuICB0YXJnZXQ/OiBLcGlUYXJnZXRDb25maWcgfCBudWxsO1xuICAvLyBBIHNtYWxsIHRyZW5kIGxpbmUgb2YgdGhlIHZhbHVlIG92ZXIgaXRzIGxhc3QgcGVyaW9kcywgZHJhd24gdW5kZXIgaXQuXG4gIHNwYXJrbGluZT86IEtwaVNwYXJrbGluZUNvbmZpZyB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3MgdGFyZ2V0OiB0aGUgdmFsdWUsIGFuZCBhbiBvcHRpb25hbCBjYXB0aW9uIGZvciBpdCAoJ0dvYWwnKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpVGFyZ2V0Q29uZmlnIHtcbiAgdmFsdWU6IG51bWJlcjtcbiAgbGFiZWw/OiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBBIEtQSSdzIHNwYXJrbGluZTogaG93IHdpZGUgZWFjaCBwb2ludCdzIHBlcmlvZCBpcyAobnVsbCByZWFkcyBtb250aCkgYW5kXG4vLyBob3cgbWFueSBwZXJpb2RzIGl0IGRyYXdzLCAyIHRvIDYwIChudWxsIHJlYWRzIDEyKS5cbmV4cG9ydCBpbnRlcmZhY2UgS3BpU3BhcmtsaW5lQ29uZmlnIHtcbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgcGVyaW9kcz86IG51bWJlciB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0U29ydCB7XG4gIGNvbHVtbjogc3RyaW5nO1xuICBkaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyVHlwZSA9ICdkYXRlUmFuZ2UnIHwgJ3NlbGVjdCcgfCAna2V5d29yZCcgfCAnbnVtYmVyUmFuZ2UnO1xuXG4vLyBXaGVyZSBhIGZpbHRlciBncm91cCdzIGNvbnRyb2wgaXMgZXhwb3NlZC4gQSBncm91cCBjYW4gYmUgc2hvd24gb24gaXRzXG4vLyBjb21wb25lbnRzLCBpbiB0aGUgcmVwb3J0IGJhciwgb3IgQk9USCBhdCBvbmNlICh0aGUgdHdvIGFyZSBpbmRlcGVuZGVudFxuLy8gdG9nZ2xlcyBpbiB0aGUgVUkpOyBhIGNvbHVtbiB3aXRoIG5laXRoZXIgZXhwb3NlZCBzaW1wbHkgaGFzIG5vIGZpbHRlci5cbi8vICdwYWdlJyBzaG93cyBpdCBpbiB0aGUgcmVwb3J0IGJhciBvZiBvbmUgcGFnZSBvbmx5IChSZXBvcnRGaWx0ZXJHcm91cC5wYWdlSWQpLlxuZXhwb3J0IHR5cGUgUmVwb3J0RmlsdGVyTGV2ZWwgPSAnY29tcG9uZW50JyB8ICdyZXBvcnQnIHwgJ2JvdGgnIHwgJ3BhZ2UnO1xuXG4vLyBPbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIG9mIGEgY29tcG9uZW50J3MgU1FMLCB3aXRoIHRoZSBmaWx0ZXIgaW50ZXJmYWNlXG4vLyBJTkZFUlJFRCBmcm9tIGl0cyBkYXRhICh0aGUgaHVtYW4gbmV2ZXIgcGlja3MgdGhlIGludGVyZmFjZSDigJQgaXQgZm9sbG93cyB0aGVcbi8vIGNvbHVtbidzIHR5cGUpLiBEcml2ZXMgdGhlIEZpbHRlcnMgdGFiIGxpc3RpbmcuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlcmFibGVDb2x1bW4ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdHlwZTogUmVwb3J0RmlsdGVyVHlwZTtcbiAgLy8gRXZlcnkgaW50ZXJmYWNlIHRoZSBjb2x1bW4gY2FuIHRha2UsIHRoZSBpbmZlcnJlZCBvbmUgKHR5cGUpIGZpcnN0OiBhXG4gIC8vIG51bWVyaWMgY29sdW1uIHRha2VzIFsnc2VsZWN0JywgJ251bWJlclJhbmdlJ10uIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICB0eXBlcz86IFJlcG9ydEZpbHRlclR5cGVbXTtcbn1cblxuLy8gR3JvdW5kIHRydXRoOiBvbmUgZmlsdGVyYWJsZSBvdXRwdXQgY29sdW1uIE9OIG9uZSBjb21wb25lbnQncyBTUUwuIEFsd2F5cyBhXG4vLyBtZW1iZXIgb2YgYSBmaWx0ZXIgZ3JvdXAg4oCUIHRoZSB1bml0IHRoYXQgbGlua3MgZXF1aXZhbGVudCBmaWx0ZXJzIGFjcm9zc1xuLy8gY29tcG9uZW50cyBhbmQgZGVjaWRlcyB3aGVyZSB0aGUgY29udHJvbCByZW5kZXJzIChjb21wb25lbnQgdnMgcmVwb3J0IGJhcikuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEZpbHRlciB7XG4gIGlkOiBudW1iZXI7XG4gIGNvbXBvbmVudElkOiBudW1iZXI7XG4gIGZpbHRlckdyb3VwSWQ6IG51bWJlcjtcbiAgZmlsdGVyQ29sdW1uOiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBlbmFibGVkOiBib29sZWFuO1xuICBoYXNPcHRpb25zOiBib29sZWFuO1xuICBjb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vLyBPbmUgY2hvaWNlIGluIGEgc2VsZWN0IGZpbHRlcidzIG9wdGlvbiBsaXN0LiBUaGUgdmFsdWUgaXMgd2hhdCB0aGUgZmlsdGVyXG4vLyBtYXRjaGVzIG9uIGFuZCBnZXRzIHN0b3JlZCBpbiBhIHNhdmVkIGRlZmF1bHQg4oCUIGZvciBhbiBlbnRpdHkgdGhhdCBpcyBpdHNcbi8vIHN0YWJsZSBpZCwgbmV2ZXIgaXRzIG5hbWUsIHNvIHJlbmFtaW5nIHRoZSBlbnRpdHkgbW92ZXMgdGhlIGxhYmVsIHdpdGhvdXRcbi8vIGJyZWFraW5nIHRoZSBkZWZhdWx0LiBUaGUgbGFiZWwgaXMgb25seSBldmVyIHdoYXQgdGhlIHZpZXdlciByZWFkcy5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyT3B0aW9uIHtcbiAgdmFsdWU6IHVua25vd247XG4gIGxhYmVsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0RmlsdGVyR3JvdXAge1xuICBpZDogbnVtYmVyO1xuICAvLyBUaGUgZ3JvdXAncyBpZGVudGlmaWVyLCB1bmlxdWUgaW4gdGhlIHJlcG9ydDogY2FtZWxDYXNlLCBhIGxldHRlciBmaXJzdCxcbiAgLy8gdGhlbiBsZXR0ZXJzIGFuZCBkaWdpdHMuIFNldCBhcGFydCBmcm9tIHRoZSBsYWJlbDogYSBuZXcgbGFiZWwgbmV2ZXJcbiAgLy8gY2hhbmdlcyBpdCwgYW5kIGl0IGlzIGVkaXRlZCBvbiBpdHMgb3duIChSZXBvcnQgc2V0dGluZ3MgPiBGaWx0ZXJzKS5cbiAgLy8gVGlsZXMgYW5kIHNhdmVkIGZpbHRlcnMgYmluZCB0aGUgZ3JvdXAgYnkgaWQsIG5ldmVyIGJ5IG5hbWUuIE9wdGlvbmFsXG4gIC8vIGJlY2F1c2UgYW4gb2xkZXIgc2VydmVyIHNlbmRzIG5vbmUuXG4gIG5hbWU/OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICB0eXBlOiBSZXBvcnRGaWx0ZXJUeXBlO1xuICBsZXZlbDogUmVwb3J0RmlsdGVyTGV2ZWw7XG4gIG9yZGVyOiBudW1iZXI7XG4gIGNvbmZpZzogeyBkZWZhdWx0PzogRmlsdGVyR3JvdXBEZWZhdWx0IH0gJiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZmlsdGVyczogUmVwb3J0RmlsdGVyW107XG4gIC8vIFRoZSBwYWdlIHdob3NlIHJlcG9ydCBiYXIgc2hvd3MgdGhlIGdyb3VwOiBzZXQgb25seSB3aGVuIGxldmVsIGlzICdwYWdlJyxcbiAgLy8gbnVsbCBvdGhlcndpc2UuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBwYWdlSWQ/OiBudW1iZXIgfCBudWxsO1xuICAvLyBUaGUgY29tcG9uZW50cyBvZiB0aGUgZ3JvdXAncyBhY3RpdmUsIGVuYWJsZWQgbWVtYmVycyB0aGF0IGFyZSB0aWxlc1xuICAvLyAoY2hhcnQsIGxpc3QsIEtQSSkuIEFic2VudCBvbiBvbGRlciBzZXJ2ZXJzLlxuICBjb21wb25lbnRJZHM/OiBudW1iZXJbXTtcbiAgLy8gVHJ1ZSB3aGVuIGFuIGVuYWJsZWQgbWVtYmVyIGJpbmRzIHNldmVyYWwgY29sdW1ucywgd2hlcmUgdmFsdWVzIGNhbm5vdFxuICAvLyBiZSBsZWZ0IG91dDogdGhlIGdyb3VwIG9mZmVycyBubyAnRXhjbHVkZSB0aGVzZScgKG9mZmVyc0V4Y2x1ZGUpLiBBYnNlbnRcbiAgLy8gb24gb2xkZXIgc2VydmVycy5cbiAgbXVsdGlDb2x1bW4/OiBib29sZWFuO1xuICAvLyBBIHNlbGVjdCBncm91cCdzIGxhYmVsIGZvciBhIGJsYW5rIHJvdywgbnVsbCB3aGVuIGJsYW5rIHJvd3MgaGF2ZSBub25lOlxuICAvLyBhbiBleGNsdWRlIGxpbmUgc2F5cyB3aGV0aGVyIHRoZSBibGFuayByb3dzIGFyZSBrZXB0LiBTZW50IGZvciBzZWxlY3RcbiAgLy8gZ3JvdXBzIG9ubHksIGFuZCBhYnNlbnQgb24gb2xkZXIgc2VydmVycy5cbiAgYmxhbmtMYWJlbD86IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEEgZmlsdGVyIGdyb3VwJ3MgdmFsdWUgaW4gaXRzIHN0b3JlZCBzaGFwZTogaXRzIGF1dGhvcmVkIGRlZmF1bHQgKHRoZSB2YWx1ZVxuLy8gdGhhdCBzZWVkcyB0aGUgcmVwb3J0IGJhciBvbiBldmVyeSBvcGVuKSwgYW5kIGEgdmFsdWUgdGhlIGFzc2lzdGFudCBydW5zIGl0IGF0LiBTaGFwZSBmb2xsb3dzIHRoZSBncm91cCdzIHR5cGU6IGRhdGVSYW5nZVxuLy8gdXNlcyBzdGFydC9lbmQgKGEgZml4ZWQgY2FsZW5kYXItZGF5IHJhbmdlKSBvciBhIHJlbGF0aXZlIHByZXNldDsgc2VsZWN0XG4vLyB1c2VzIHZhbHVlcyBvciBleGNsdWRlVmFsdWVzLCBuZXZlciBib3RoOyBrZXl3b3JkIHVzZXMgdmFsdWU7IG51bWJlclJhbmdlXG4vLyB1c2VzIG1pbiBhbmQgbWF4LlxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJHcm91cERlZmF1bHQge1xuICAvLyBkYXRlUmFuZ2UgcmVsYXRpdmUgcHJlc2V0LCByZXNvbHZlZCBvbiBldmVyeSBvcGVuIGFnYWluc3QgdG9kYXkgaW4gdGhlXG4gIC8vIHJlcG9ydCdzIGVmZmVjdGl2ZSB6b25lIChSZXBvcnQuZWZmZWN0aXZlVGltZXpvbmUpLiBPbmUgb2Y6IHRoaXNXZWVrLFxuICAvLyBsYXN0V2VlaywgbGFzdDdEYXlzLCBsYXN0MzBEYXlzLCBsYXN0M01vbnRocywgbGFzdDZNb250aHMsIGxhc3QxMk1vbnRocyxcbiAgLy8gdGhpc01vbnRoLCB0aGlzUXVhcnRlciwgdGhpc1llYXIveWVhclRvRGF0ZS4gV2Vla3MgcnVuIE1vbmRheSB0byBTdW5kYXksXG4gIC8vIHRoZSBzYW1lIHdlZWtzIHRoZSBzZXJ2ZXIncyB3ZWVrbHkgdGltZSBidWNrZXRzIHVzZS5cbiAgcmVsYXRpdmU/OiBzdHJpbmc7XG4gIHN0YXJ0Pzogc3RyaW5nOyAvLyBkYXRlUmFuZ2UgZml4ZWQgc3RhcnQgKHl5eXktTU0tZGQpXG4gIGVuZD86IHN0cmluZzsgLy8gZGF0ZVJhbmdlIGZpeGVkIGVuZCAoeXl5eS1NTS1kZClcbiAgdmFsdWVzPzogdW5rbm93bltdOyAvLyBzZWxlY3QgZGVmYXVsdCBwaWNrZWQgdmFsdWVzXG4gIHZhbHVlPzogc3RyaW5nOyAvLyBrZXl3b3JkIGRlZmF1bHQgdGV4dFxuICAvLyBzZWxlY3Q6IHRoZSB2YWx1ZXMgdG8gbGVhdmUgb3V0IChyb3dzIHdpdGggYSBibGFuayB2YWx1ZSBhcmUga2VwdCkuXG4gIGV4Y2x1ZGVWYWx1ZXM/OiB1bmtub3duW107XG4gIC8vIG51bWJlclJhbmdlOiB0aGUgbG93IGFuZCBoaWdoIGVuZHMsIGVpdGhlciBvbmUgb3BlbiAoYWJzZW50KS4gMCBpcyBhblxuICAvLyBlbmQgbGlrZSBhbnkgb3RoZXIuXG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufVxuXG4vLyBUaGUgc2Vzc2lvbiB2YWx1ZSBvZiBhIGZpbHRlciBncm91cDogc2hhcGUgZGVwZW5kcyBvbiB0aGUgZ3JvdXAncyB0eXBlLiBOb3Rcbi8vIHN0b3JlZCBvbiB0aGUgc2VydmVyOiBpdCBsaXZlcyBpbiB0aGUgb3BlbiByZXBvcnQncyBzdGF0ZVxuLy8gKFJlcG9ydEZpbHRlclN0YXRlU2VydmljZSkuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckdyb3VwVmFsdWUge1xuICBzdGFydD86IERhdGUgfCBzdHJpbmcgfCBudWxsOyAvLyBkYXRlUmFuZ2VcbiAgZW5kPzogRGF0ZSB8IHN0cmluZyB8IG51bGw7IC8vIGRhdGVSYW5nZVxuICB2YWx1ZXM/OiB1bmtub3duW107IC8vIHNlbGVjdFxuICB2YWx1ZT86IHN0cmluZzsgLy8ga2V5d29yZFxuICAvLyBkYXRlUmFuZ2Ugb25seTogdGhlIHJlbGF0aXZlIHByZXNldCBuYW1lIHRoZXNlIGRhdGVzIHdlcmUgcmVzb2x2ZWQgZnJvbVxuICAvLyAoYSBGaWx0ZXJHcm91cERlZmF1bHQucmVsYXRpdmUgbmFtZSkuIFNldCBvbmx5IHdoZW4gdGhlIHZhbHVlIHdhcyBzZWVkZWRcbiAgLy8gZnJvbSB0aGUgZ3JvdXAncyByZWxhdGl2ZSBkZWZhdWx0LCBzbyB0aGUgcmFuZ2Uga2VlcHMgcm9sbGluZ1xuICAvLyAoJ2xhc3QzMERheXMnKSBpbnN0ZWFkIG9mIGZyZWV6aW5nIHR3byBkYXRlcywgYW5kIHRoZSBkYXRhIHJlcXVlc3QgbmFtZXMgdGhlXG4gIC8vIHBlcmlvZCBpdCBjb3ZlcnMgKHNlZVxuICAvLyBSZXNvbHZlZEZpbHRlclZhbHVlLnByZXNldCkuIEFueSBkYXRlIHBpY2tlZCBieSB0aGUgdmlld2VyLCBhIGRhdGUgcGlja2VyXG4gIC8vIHByZXNldCBpbmNsdWRlZCwgaXMgc3RvcmVkIHdpdGhvdXQgaXQuXG4gIHByZXNldD86IHN0cmluZztcbiAgLy8gc2VsZWN0OiB0aGUgdmFsdWVzIHRvIGxlYXZlIG91dC4gU3dpdGNoaW5nIGEgc2VsZWN0IGJldHdlZW4ga2VlcGluZyBhbmRcbiAgLy8gbGVhdmluZyBvdXQgbW92ZXMgaXRzIGxpc3QgZnJvbSB2YWx1ZXMgdG8gZXhjbHVkZVZhbHVlcy5cbiAgZXhjbHVkZVZhbHVlcz86IHVua25vd25bXTtcbiAgLy8gbnVtYmVyUmFuZ2U6IHRoZSBsb3cgYW5kIGhpZ2ggZW5kczsgbnVsbCBvciBhYnNlbnQgPSBvcGVuLlxuICBtaW4/OiBudW1iZXIgfCBudWxsO1xuICBtYXg/OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIHJlbGF0aXZlIGRhdGUgcmFuZ2UgdGhlIHNlcnZlciByZXNvbHZlcyBhZ2FpbnN0IHRvZGF5IGluIHRoZSByZXBvcnQnc1xuLy8gem9uZTogdGhlIG5hbWVzIGEgRmlsdGVyR3JvdXBEZWZhdWx0LnJlbGF0aXZlIGFuZCBhIHRpbWVmcmFtZSdzIHJhbmdlIHRha2UuXG4vLyBNaXJyb3JzIHRoZSBzZXJ2ZXIncyBSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bSB2YWx1ZSBmb3IgdmFsdWVcbi8vIChSZXBvcnRSZWxhdGl2ZVJhbmdlRW51bVRlc3QgcGlucyB0aGUgZGF5cyBlYWNoIG9uZSBjb3ZlcnMpLlxuZXhwb3J0IHR5cGUgUmVwb3J0UmVsYXRpdmVSYW5nZSA9XG4gIHwgJ3RoaXNXZWVrJ1xuICB8ICdsYXN0V2VlaydcbiAgfCAnbGFzdDdEYXlzJ1xuICB8ICdsYXN0MzBEYXlzJ1xuICB8ICdsYXN0M01vbnRocydcbiAgfCAnbGFzdDZNb250aHMnXG4gIHwgJ2xhc3QxMk1vbnRocydcbiAgfCAndGhpc01vbnRoJ1xuICB8ICd0aGlzUXVhcnRlcidcbiAgfCAndGhpc1llYXInXG4gIHwgJ3llYXJUb0RhdGUnO1xuXG4vLyBPbmUgcmVzb2x2ZWQgZmlsdGVyIHNlbnQgd2l0aCBhIGNvbXBvbmVudCdzIGRhdGEgcmVxdWVzdC5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRGaWx0ZXJWYWx1ZSB7XG4gIGZpbHRlcklkOiBudW1iZXI7XG4gIHN0YXJ0Pzogc3RyaW5nO1xuICBlbmQ/OiBzdHJpbmc7XG4gIHZhbHVlcz86IHVua25vd25bXTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIC8vIGRhdGVSYW5nZSBvbmx5OiB0aGUgcmVsYXRpdmUgcmFuZ2Ugc3RhcnQgYW5kIGVuZCBzdGlsbCBhcmUsIHNlbnQgb25seVxuICAvLyB3aGlsZSB0aGV5IGFyZSBleGFjdGx5IHRoYXQgcmFuZ2UgcmVzb2x2ZWQgdG9kYXkgaW4gdGhlIHJlcG9ydCdzIHpvbmUuIEl0XG4gIC8vIHRlbGxzIHRoZSBzZXJ2ZXIgd2hpY2ggcGVyaW9kIHRoZSBkYXlzIGNvdmVyIChvbiB0aGUgZmlyc3QgZGF5cyBvZiBhXG4gIC8vIHF1YXJ0ZXIsIHRoaXNNb250aCBhbmQgdGhpc1F1YXJ0ZXIgYXJlIHRoZSBzYW1lIGRheXMpLCBzbyBhIGNvbXBhcmlzb25cbiAgLy8gc2hpZnRzIGJ5IHRoZSByaWdodCB1bml0LiBzdGFydCBhbmQgZW5kIHN0YXkgdGhlIHdpbmRvdzsgYSBzZXJ2ZXIgdGhhdFxuICAvLyBkb2VzIG5vdCBrbm93IHRoZSBrZXkgaWdub3JlcyBpdC5cbiAgcHJlc2V0PzogUmVwb3J0UmVsYXRpdmVSYW5nZTtcbiAgLy8gc2VsZWN0OiB0aGUgdmFsdWVzIHRvIGxlYXZlIG91dCAoc2VudCBpbnN0ZWFkIG9mIHZhbHVlcykuXG4gIGV4Y2x1ZGVWYWx1ZXM/OiB1bmtub3duW107XG4gIC8vIG51bWJlclJhbmdlOiB0aGUgbG93IGFuZCBoaWdoIGVuZHM7IGFuIG9wZW4gZW5kIGlzIGxlZnQgb3V0LCAwIGlzIHNlbnQuXG4gIG1pbj86IG51bWJlcjtcbiAgbWF4PzogbnVtYmVyO1xufVxuXG4vLyBQZXItY29tcG9uZW50IGludGVyYWN0aW9uIHN0YXRlIHNlbnQgd2l0aCB0aGUgZGF0YSByZXF1ZXN0OiBsaXN0cyBzZW5kXG4vLyBzb3J0L3BhZ2luZyBhbmQgdGhlIHRleHQgaW4gdGhlaXIgc2VhcmNoIGJveDsgdGhlIHRpbGVzIHRoYXQgZm9sbG93IHRoZVxuLy8gZ3JvdXAtYnkgKGZvbGxvd3NHcm91cEJ5KSBzZW5kIHRoZSBncmFpbiBwaWNrZWQgb24gdGhlIHJlcG9ydCdzIGdyb3VwLWJ5IGNvbnRyb2wsIHdoaWNoIG92ZXJyaWRlcyB0aGUgYXV0aG9yZWRcbi8vIGdyYW51bGFyaXR5IGZvciB0aGF0IHJlcXVlc3Qgb25seS4gVGhlIHdpcmUga2V5IHN0YXlzIGBmcmVxdWVuY3lgIOKAlCBpdCBpcyB0aGVcbi8vIGJ1Y2tldGluZyBmcmVxdWVuY3kgdGhlIHNlcnZlciBhcHBsaWVzLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhU3RhdGUge1xuICBzb3J0PzogUmVwb3J0U29ydDtcbiAgcGFnZT86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG4gIGZyZXF1ZW5jeT86IENoYXJ0R3JhbnVsYXJpdHk7XG4gIC8vIEEgbGlzdCdzIHNlYXJjaCBib3ggdGV4dC4gVGhlIHNlcnZlciB0cmltcyBpdCwgY3V0cyBpdCB0byBpdHMgb3duIG1heGltdW1cbiAgLy8gbGVuZ3RoIGFuZCBtYXRjaGVzIGl0IGFnYWluc3QgZXZlcnkgdGV4dCBjb2x1bW4gdGhlIGxpc3Qgc2hvd3MuXG4gIHNlYXJjaD86IHN0cmluZztcbiAgLy8gVGhlIGNvbmZpZyBjb2x1bW4gbmFtZXMgYSB2aWV3ZXIgaGlkIG9uIGEgcGxhaW4gbGlzdC4gU2VudCB3aXRoIGEgQ1NWXG4gIC8vIGV4cG9ydCBvbmx5ICh0aGUgc2NyZWVuIGhpZGVzIHRoZW0gaXRzZWxmKTogdGhlIGZpbGUgbGVhdmVzIHRoZW0gb3V0LiBUaGVcbiAgLy8gc2VydmVyIGlnbm9yZXMgaXQgb24gYSBjcm9zcy10YWIsIGFuZCB3aGVuIGl0IHdvdWxkIGhpZGUgZXZlcnkgY29sdW1uLlxuICBoaWRkZW5Db2x1bW5zPzogc3RyaW5nW107XG4gIC8vIEEgY2hhcnQncyBkcmlsbCBwYXRoLCB0b3AgZmlyc3QuIFRoZSBkcmlsbGVkIGxldmVsIHdpbnMgb3ZlciBmcmVxdWVuY3lcbiAgLy8gZm9yIHRoaXMgdGlsZS5cbiAgZHJpbGw/OiBSZXBvcnREcmlsbFN0ZXBbXTtcbiAgLy8gV2hpbGUgbWF0Y2ggaXMgYW55OiB0aGUgZWxpZ2libGUgZ3JvdXBzIHRoYXQgaGF2ZSBhIHZhbHVlLlxuICBtYXRjaEFueUdyb3VwSWRzPzogbnVtYmVyW107XG4gIC8vIEEgdGFibGUncyBsYXlvdXQgYXMgdGhlIHZpZXdlciBjaGFuZ2VkIGl0LCBzZW50IHdpdGggYSBmaWxlICh0aGUgQ1NWLFxuICAvLyB0aGUgemlwKSBzbyBpdCBob2xkcyB3aGF0IHRoZSBzY3JlZW4gc2hvd3MuIEFic2VudDogdGhlIHN0b3JlZCBsYXlvdXQuXG4gIGxheW91dD86IEdyaWRMYXlvdXQ7XG4gIC8vIFNldCBvbmx5IG9uIGEgcmVxdWVzdCBzZW50IGJlY2F1c2UgdGhlIGNyb3NzLWZpbHRlciBjaGFuZ2VkLCBmb3IgYSB0aWxlXG4gIC8vIHdob3NlIGxhc3QgcmVhZCBhcHBsaWVkIG5vIGNyb3NzIGVudHJ5OiB0aGUgc2VydmVyIG1heSBhbnN3ZXJcbiAgLy8gdW5jaGFuZ2VkIGluc3RlYWQgb2YgcmVhZGluZyB0aGUgcm93cyBhZ2Fpbi4gRXhwb3J0cyBuZXZlciBzZXQgaXQuXG4gIHVuY2hhbmdlZElmVW5yZWFjaGVkPzogdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnREYXRhIHtcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHJvd3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+W107XG4gIHBhZ2luZz86IHsgdG90YWw6IG51bWJlcjsgcGFnZTogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH07XG4gIHRydW5jYXRlZDogYm9vbGVhbjtcbiAgLy8gVGhlIGVmZmVjdGl2ZSB0aW1lIGJ1Y2tldCB0aGUgcm93cyB3ZXJlIGdyb3VwZWQgaW50byAoYWZ0ZXIgYW55IGdyb3VwLWJ5XG4gIC8vIG92ZXJyaWRlKSwgb3IgbnVsbCBmb3IgYSBub24tdGltZSBheGlzLiBEcml2ZXMgdGhlIGNvbXBhY3QgeC1heGlzIGxhYmVscy5cbiAgZ3JhbnVsYXJpdHk/OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgLy8gUGFnZSAxIG9mIGEgc2VhcmNoZWQgbGlzdCB3aG9zZSBzZWFyY2ggY291bGQgbm90IGFwcGx5ICh0aGUgbGlzdCBoYXMgbm9cbiAgLy8gdGV4dCBjb2x1bW4gdG8gc2VhcmNoKTogd2h5IHRoZSByb3dzIGFyZSBub3QgbmFycm93ZWQuIEFic2VudCBvdGhlcndpc2UuXG4gIHNlYXJjaE5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBQYWdlIDEgb2YgYSBsaXN0IHdpdGggY29uZmlnLnRvdGFscyBvbjogaXRzIHRvdGFscyByb3csIGFzIHJhdyB2YWx1ZXNcbiAgLy8ga2V5ZWQgbGlrZSB0aGUgY29sdW1ucyAoYSBwbGFpbiBsaXN0J3MgbWVhc3VyZSBhbGlhc2VzOyBhIGNyb3NzLXRhYidzXG4gIC8vIHBpdm90IGNlbGwgY29sdW1ucywgdGhlIHJvdy1rZXkgY29sdW1uIGFic2VudCksIG9yIG51bGwgd2l0aCB0b3RhbHNOb3RlXG4gIC8vIHNheWluZyB3aHkgdGhlcmUgaXMgbm9uZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHBhZ2UgYW5kIGxpc3QuXG4gIHRvdGFscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgbnVsbDtcbiAgdG90YWxzTm90ZT86IHN0cmluZyB8IG51bGw7XG4gIC8vIFRoZSB3aW5kb3cgb2YgZGF5cyB0aGUgY29tcG9uZW50IHJlYWRzLCB3aGVuIGl0cyBxdWVyeSBoYXMgYSB0aW1lZnJhbWUuXG4gIC8vIEFic2VudCBvdGhlcndpc2UsIGFuZCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIHRpbWVmcmFtZT86IENvbXBvbmVudFRpbWVmcmFtZSB8IG51bGw7XG4gIC8vIFRoZSBjdXJyZW50IGFuZCBwcmlvciB3aW5kb3dzIG9mIGEgY29tcG9uZW50IHdob3NlIG1lYXN1cmVzIGNvbXBhcmVcbiAgLy8gYWdhaW5zdCBhbiBlYXJsaWVyIHBlcmlvZC4gQWJzZW50IHdoZW4gbm8gbWVhc3VyZSBjb21wYXJlcy4gU2VudCBvbiBldmVyeVxuICAvLyBsaXN0IHBhZ2UgYW5kIG9uIGNoYXJ0IGFuZCBLUEkgZGF0YS5cbiAgY29tcGFyaXNvbj86IENvbXBvbmVudENvbXBhcmlzb24gfCBudWxsO1xuICAvLyBXaGF0IGVhY2ggY29tcGFyZWQsIHdpbmRvd2VkLCByYW5rZWQgb3Igc2hhcmVkIG91dHB1dCBjb2x1bW4gaXMsIGJ5IGFsaWFzLlxuICAvLyBQbGFpbiBtZWFzdXJlIGNvbHVtbnMgYXJlIGxlZnQgb3V0LlxuICBvdXRwdXRzPzogUmVjb3JkPHN0cmluZywgT3V0cHV0TWV0YT47XG4gIC8vIEEgY3Jvc3MtdGFiIG9ubHk6IHRoZSBtZWFzdXJlIGFsaWFzIGVhY2ggcGl2b3QgY2VsbCBjb2x1bW4gaG9sZHMsIHNvIGFcbiAgLy8gY2VsbCB0YWtlcyBpdHMgbWVhc3VyZSdzIG91dHB1dCBtZWFuaW5nLiBOZXZlciBzZW50IGZvciBhIHNxbC1tb2RlIGxpc3QuXG4gIGNlbGxNZWFzdXJlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8vIEhvdyBlYWNoIHdpbmRvd2VkIG91dHB1dCBjb2x1bW4gKHJ1bm5pbmcsIHRvLWRhdGUgb3Igcm9sbGluZykgd2FzXG4gIC8vIGNvbXB1dGVkLCBieSBhbGlhcy5cbiAgd2luZG93cz86IFJlY29yZDxzdHJpbmcsIFdpbmRvd01ldGE+O1xuICAvLyBBIEtQSSB3aXRoIGEgY29tcGFyaXNvbiwgYSB0YXJnZXQgb3IgYSBzcGFya2xpbmU6IGV2ZXJ5IG51bWJlciB0aGUgY2FyZFxuICAvLyBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLCBkZWNpZGVkIGJ5IHRoZSBzZXJ2ZXIuXG4gIGtwaT86IENvbXBvbmVudEtwaSB8IG51bGw7XG4gIC8vIFRoZSB0aW1lLWF4aXMgdmFsdWUgb2YgdGhlIGJ1Y2tldCBjb250YWluaW5nIHRvZGF5LCB3cml0dGVuIGFzIHRoZSByb3dzXG4gIC8vIHdyaXRlIGl0LCB3aGVuIHRoYXQgYnVja2V0IGlzIG5vdCBmaW5pc2hlZCB5ZXQ7IG51bGwgb3RoZXJ3aXNlLiBBIGNoYXJ0XG4gIC8vIG1hcmtzIGl0IGFzIHBhcnRpYWwuXG4gIHBhcnRpYWxQZXJpb2Q/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBXaGljaCBmaWx0ZXJzIHRoZSByZWFkIGFwcGxpZWQuIEFic2VudCBmcm9tIG9sZGVyIHNlcnZlcnMuXG4gIGFwcGxpZWQ/OiBDb21wb25lbnREYXRhQXBwbGllZDtcbiAgLy8gQSBkcmlsbGFibGUgY2hhcnQncyBkcmlsbCBzdGF0ZS4gQWJzZW50IG9uIGV2ZXJ5IG90aGVyIHRpbGUgYW5kIGZyb21cbiAgLy8gb2xkZXIgc2VydmVycy5cbiAgZHJpbGw/OiBDb21wb25lbnREYXRhRHJpbGw7XG59XG5cbi8vIFdoZXJlIGEgY29tcG9uZW50J3MgdGltZWZyYW1lIHdpbmRvdyBjYW1lIGZyb206IGEgdmlld2VyIGRhdGVSYW5nZSBib3VuZCB0b1xuLy8gdGhlIHRpbWVmcmFtZSBjb2x1bW4gKHdoaWNoIHJlcGxhY2VzIHRoZSBhdXRob3JlZCByYW5nZSwgbmV2ZXIgbmFycm93c1xuLy8gaXQpLCB0aGUgYXV0aG9yZWQgcmVsYXRpdmUgcmFuZ2UsIHRoZSBhdXRob3JlZCBmaXhlZCBkYXlzLCBvciBub3RoaW5nIChhblxuLy8gb3BlbiB3aW5kb3cpLlxuZXhwb3J0IHR5cGUgVGltZWZyYW1lU291cmNlID0gJ2ZpbHRlcicgfCAncmFuZ2UnIHwgJ2ZpeGVkJyB8ICdub25lJztcblxuLy8gVGhlIHdpbmRvdyBhIGNvbXBvbmVudCdzIHRpbWVmcmFtZSByZXNvbHZlZCB0by4gc3RhcnQgYW5kIGVuZCBhcmVcbi8vIGluY2x1c2l2ZSAneXl5eS1NTS1kZCcgZGF5cyBpbiB0aGUgcmVwb3J0J3Mgem9uZSwgd3JpdHRlbiB3aXRob3V0IGEgem9uZS5cbi8vIHRocm91Z2ggaXMgdGhlIFVUQyAneXl5eS1NTS1kZCBISDptbTpzcycgaW5zdGFudCBhIHdpbmRvdyBvbiBhIGRhdGV0aW1lXG4vLyBjb2x1bW4gaXMgY3V0IGF0OyBpdCByZWFkcyBhcyBhIHRpbWUgaW4gdGhlIHJlcG9ydCB6b25lLiBJdCBpcyBzZXQgb25seSB3aGVuXG4vLyBhIGNvbXBhcmlzb24gY3V0cyBhIHdpbmRvdyB0aGF0IGVuZHMgdG9kYXk6IGEgdGltZWZyYW1lIG9uIGl0cyBvd24gcmVhZHNcbi8vIHdob2xlIGRheXMsIHNvIGEgd2luZG93IGVuZGluZyB0b2RheSB3aXRob3V0IGEgY29tcGFyaXNvbiBzZW5kcyBudWxsLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRUaW1lZnJhbWUge1xuICBjb2x1bW46IHN0cmluZztcbiAgc3RhcnQ6IHN0cmluZyB8IG51bGw7XG4gIGVuZDogc3RyaW5nIHwgbnVsbDtcbiAgdGhyb3VnaDogc3RyaW5nIHwgbnVsbDtcbiAgcmFuZ2U6IFJlcG9ydFJlbGF0aXZlUmFuZ2UgfCBudWxsO1xuICBzb3VyY2U6IFRpbWVmcmFtZVNvdXJjZTtcbn1cblxuLy8gSG93IGEgY29tcGFyaXNvbiBpcyBsYWlkIG91dDogb25lIHZhbHVlIHBlciB3aW5kb3cgKHJhbmdlKSwgYSBwcmlvciBzZXJpZXNcbi8vIGJlc2lkZSBhIHRpbWUgYXhpcyAoc2VyaWVzKSwgb3IgZWFjaCBwZXJpb2QncyB2YWx1ZSByZWFkIGF0IGl0cyBlbmQsIHNldFxuLy8gYWdhaW5zdCB0aGUgdmFsdWUgYXQgdGhlIGVuZCBvZiBhbiBlYXJsaWVyIHBlcmlvZCAocGVyaW9kX2VuZCkuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uTW9kZSA9ICdyYW5nZScgfCAnc2VyaWVzJyB8ICdwZXJpb2RfZW5kJztcblxuLy8gdG9fZGF0ZSBjb21wYXJlcyBsaWtlIHdpdGggbGlrZSAodGhlIGZpcnN0IDIgZGF5cyBvZiBhIG1vbnRoIGFnYWluc3QgdGhlXG4vLyBmaXJzdCAyIGRheXMgb2YgdGhlIG9uZSBiZWZvcmUpOyBmdWxsIGNvbXBhcmVzIHdob2xlIHBlcmlvZHMuXG5leHBvcnQgdHlwZSBDb21wYXJpc29uQWxpZ24gPSAndG9fZGF0ZScgfCAnZnVsbCc7XG5cbi8vIFdoYXQgYSBtZWFzdXJlIGlzIGNvbXBhcmVkIGFnYWluc3QuIE1pcnJvcnMgdGhlIHNlcnZlcidzXG4vLyBDb21wYXJpc29uQWdhaW5zdEVudW0gdmFsdWUgZm9yIHZhbHVlLlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbkFnYWluc3QgPVxuICB8ICdwcmV2aW91c19wZXJpb2QnXG4gIHwgJ3ByZXZpb3VzX3dlZWsnXG4gIHwgJ3ByZXZpb3VzX21vbnRoJ1xuICB8ICdwcmV2aW91c19xdWFydGVyJ1xuICB8ICdwcmV2aW91c195ZWFyJ1xuICB8ICdyYW5nZSc7XG5cbi8vIFdoeSBhIGNvbXBhcmlzb24gcmVhZHMgYXMgaXQgZG9lcy4gVGhlIHNlcnZlciBzZW5kcyBjb2RlcywgbmV2ZXJcbi8vIHNlbnRlbmNlczsgdGhlIHZpZXdlciB3b3JkcyB0aGVtLlxuLy8gLSBub193aW5kb3c6IG5vIGRhdGUgcmFuZ2UgdG8gY29tcGFyZSB5ZXQ7XG4vLyAtIHVuaXRfaW5mZXJyZWQ6IHRoZSBwZXJpb2QgdW5pdCB3YXMgaW5mZXJyZWQgZnJvbSB0aGUgZGF5cywgbm90IG5hbWVkO1xuLy8gLSB3aW5kb3dfaW5fZnV0dXJlOiB0aGUgd2luZG93IHN0YXJ0cyBhZnRlciB0b2RheTtcbi8vIC0gb3RoZXJfZGF0ZV9maWx0ZXI6IGEgZGF0ZSBmaWx0ZXIgb24gYW5vdGhlciBjb2x1bW4gYWxzbyBhcHBsaWVzO1xuLy8gLSBncmFpbl9mb2xsb3dlZDogdGhlIHByaW9yIGZvbGxvd3MgdGhlIGdyb3VwLWJ5IGdyYWluIHBpY2tlZCBvbiB0aGUgcmVwb3J0LlxuZXhwb3J0IHR5cGUgQ29tcGFyaXNvbk5vdGVDb2RlID1cbiAgfCAnbm9fd2luZG93J1xuICB8ICd1bml0X2luZmVycmVkJ1xuICB8ICd3aW5kb3dfaW5fZnV0dXJlJ1xuICB8ICdvdGhlcl9kYXRlX2ZpbHRlcidcbiAgfCAnZ3JhaW5fZm9sbG93ZWQnO1xuXG4vLyBPbmUgY29tcGFyaXNvbiB3aW5kb3c6IGluY2x1c2l2ZSAneXl5eS1NTS1kZCcgZGF5cyBpbiB0aGUgcmVwb3J0J3Mgem9uZSxcbi8vIGFuZCB0aGUgVVRDIGluc3RhbnQgaXQgaXMgY3V0IGF0IHdoZW4gaXQgZW5kcyB0b2RheSBvbiBhIGRhdGV0aW1lIGNvbHVtbi5cbi8vIEluIHNlcmllcyBtb2RlIGl0IGlzIHRoZSBzcGFuIHRoZSBjaGFydCBzaG93cy5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGFyaXNvbldpbmRvdyB7XG4gIHN0YXJ0OiBzdHJpbmc7XG4gIGVuZDogc3RyaW5nO1xuICB0aHJvdWdoOiBzdHJpbmcgfCBudWxsO1xufVxuXG4vLyBIb3cgZmFyIGJhY2sgb25lIHByaW9yIGxhbmUgc2l0cy4gQSBjdXN0b20gcmFuZ2UgaGFzIG5vIHVuaXQgb3IgY291bnQsIGFuZFxuLy8gbmVpdGhlciBkb2VzIHByZXZpb3VzX3BlcmlvZCB3aGVuIHRoZXJlIGlzIG5vIGN1cnJlbnQgd2luZG93IHRvIG1lYXN1cmVcbi8vIChub193aW5kb3csIHdpbmRvd19pbl9mdXR1cmUpOyBhIHNoaWZ0IGJ5IHRoZSB3aW5kb3cncyBsZW5ndGggaXMgdW5pdCBkYXlcbi8vIHdpdGggdGhlIGxlbmd0aCBhcyB0aGUgY291bnQ7IGEgcHJldmlvdXMgeWVhciBpcyAzNjQgZGF5cyBvbiBhIGRheSBheGlzIGFuZFxuLy8gNTIgd2Vla3Mgb24gYSB3ZWVrIGF4aXMuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmlzb25PZmZzZXQge1xuICBhZ2FpbnN0OiBDb21wYXJpc29uQWdhaW5zdDtcbiAgdW5pdDogQ2hhcnRHcmFudWxhcml0eSB8IG51bGw7XG4gIGNvdW50OiBudW1iZXIgfCBudWxsO1xufVxuXG4vLyBBIGNvbXBvbmVudCdzIGNvbXBhcmlzb246IHRoZSB6b25lIGl0cyBkYXlzIGFyZSBpbiwgdGhlIGN1cnJlbnQgd2luZG93XG4vLyAobnVsbCB3aGVuIHRoZXJlIGlzIG5vIHdpbmRvdyB0byBjb21wYXJlIHlldCwgb3Igd2hlbiBhIHRpbWUgYXhpcyBydW5zXG4vLyBvdmVyIGFsbCB0aGUgZGF0YSwgd2hpY2ggaGFzIG5vIGZpcnN0IGRheSB0byBuYW1lKSBhbmQgdXAgdG8gMiBwcmlvclxuLy8gbGFuZXM6IG9mZnNldHNbaV0gZGVzY3JpYmVzIGxhbmUgaSArIDEsIGFuZCBwcmlvcnNbaV0gaXRzIHdpbmRvdy4gV2l0aCBub1xuLy8gY3VycmVudCB3aW5kb3cgcHJpb3JzIGlzIGVtcHR5LCB3aGlsZSBvZmZzZXRzIHN0aWxsIG5hbWVzIGV2ZXJ5IGxhbmUuXG4vLyBmbG9vciBpcyB0aGUgJ3l5eXktTU0tZGQnIGRheSBvZiB0aGUgZmlyc3Qgcm93IHRoZSBxdWVyeSdzIG93biBjb25kaXRpb25zXG4vLyBrZWVwICh2aWV3ZXIgZmlsdGVycyBhc2lkZSk6IGEgcHJpb3Igd2luZG93IHdob2xseSBiZWZvcmUgaXQgaGFzIG5vIGRhdGFcbi8vIHJhdGhlciB0aGFuIGEgemVyby5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50Q29tcGFyaXNvbiB7XG4gIG1vZGU6IENvbXBhcmlzb25Nb2RlO1xuICB0aW1lem9uZTogc3RyaW5nO1xuICBhbGlnbjogQ29tcGFyaXNvbkFsaWduO1xuICBjdXJyZW50OiBDb21wYXJpc29uV2luZG93IHwgbnVsbDtcbiAgcHJpb3JzOiBDb21wYXJpc29uV2luZG93W107XG4gIG9mZnNldHM6IENvbXBhcmlzb25PZmZzZXRbXTtcbiAgZmxvb3I6IHN0cmluZyB8IG51bGw7XG4gIG5vdGVzOiBDb21wYXJpc29uTm90ZUNvZGVbXTtcbn1cblxuLy8gV2hhdCBhbiBvdXRwdXQgY29sdW1uIGhvbGRzOiBhIG1lYXN1cmUncyB2YWx1ZSwgaXRzIHJhbmsgb3IgaXRzIHNoYXJlLlxuZXhwb3J0IHR5cGUgT3V0cHV0S2luZCA9ICd2YWx1ZScgfCAncmFuaycgfCAnc2hhcmUnO1xuXG4vLyBXaGljaCBzaWRlIG9mIGEgY29tcGFyaXNvbiBhbiBvdXRwdXQgY29sdW1uIGlzOiB0aGUgY3VycmVudCB2YWx1ZSwgdGhlXG4vLyBwcmlvciBvbmUsIHRoZWlyIGRpZmZlcmVuY2UsIG9yIHRoZSBkaWZmZXJlbmNlIGFzIGEgMC0xIGZyYWN0aW9uIG9mIHRoZVxuLy8gcHJpb3IuIG51bGwgZm9yIGFuIG91dHB1dCB0aGF0IGlzIG5vdCBjb21wYXJlZC5cbmV4cG9ydCB0eXBlIE91dHB1dFJvbGUgPSAnY3VycmVudCcgfCAncHJpb3InIHwgJ2NoYW5nZScgfCAncGVyY2VudF9jaGFuZ2UnO1xuXG4vLyBIb3cgdGllZCB2YWx1ZXMgcmFuazogMSwgMSwgMyAoY29tcGV0aXRpb24pIG9yIDEsIDEsIDIgKGRlbnNlKS5cbmV4cG9ydCB0eXBlIE91dHB1dFJhbmtNZXRob2QgPSAnY29tcGV0aXRpb24nIHwgJ2RlbnNlJztcblxuLy8gQSByYW5rIG91dHB1dDogaG93IHRpZXMgcmFuaywgd2hpY2ggZW5kIHJhbmtzIDEgKGRlc2M6IHRoZSBsYXJnZXN0KSwgYW5kXG4vLyB0aGUgZGltZW5zaW9uIG91dHB1dHMgaXQgcmVzdGFydHMgd2l0aGluIChub25lOiB0aGUgd2hvbGUgcmVzdWx0KS5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0UmFuayB7XG4gIG1ldGhvZDogT3V0cHV0UmFua01ldGhvZDtcbiAgZGlyZWN0aW9uOiAnYXNjJyB8ICdkZXNjJztcbiAgd2l0aGluOiBzdHJpbmdbXTtcbn1cblxuLy8gQSBzaGFyZSBvdXRwdXQ6IHRoZSBkaW1lbnNpb24gb3V0cHV0cyB3aG9zZSB0b3RhbCBpdCBpcyBhIHNoYXJlIG9mIChub25lOlxuLy8gdGhlIHdob2xlIHJlc3VsdCkuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dFNoYXJlIHtcbiAgd2l0aGluOiBzdHJpbmdbXTtcbn1cblxuLy8gVGhlIG1lYW5pbmcgb2Ygb25lIGNvbXBhcmVkLCB3aW5kb3dlZCwgcmFua2VkIG9yIHNoYXJlZCBvdXRwdXQgY29sdW1uLlxuLy8gbWVhc3VyZSBpcyB0aGUgc291cmNlIG1lYXN1cmUncyBhbGlhcywgd2hvc2UgZm9ybWF0IHRoZSBjb2x1bW4gaW5oZXJpdHM7XG4vLyBvZmZzZXQgaXMgdGhlIHByaW9yIGxhbmUgYSBwcmlvciwgY2hhbmdlIG9yIHBlcmNlbnQgY2hhbmdlIGJlbG9uZ3MgdG8gKGl0c1xuLy8gd2luZG93IGlzIGNvbXBhcmlzb24ucHJpb3JzW29mZnNldCAtIDFdKS4gVW5sZXNzIHRoZSBjb25maWcgZm9ybWF0cyBpdCwgYVxuLy8gc2hhcmUgcHJpbnRzIGFzIGEgcGVyY2VudCB0byAxIGRlY2ltYWwgYW5kIGEgcmFuayBhcyBhIHdob2xlIG51bWJlci5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0TWV0YSB7XG4gIG1lYXN1cmU6IHN0cmluZztcbiAga2luZDogT3V0cHV0S2luZDtcbiAgcm9sZTogT3V0cHV0Um9sZSB8IG51bGw7XG4gIG9mZnNldDogbnVtYmVyIHwgbnVsbDtcbiAgd2luZG93OiBib29sZWFuO1xuICByYW5rOiBPdXRwdXRSYW5rIHwgbnVsbDtcbiAgc2hhcmU6IE91dHB1dFNoYXJlIHwgbnVsbDtcbn1cblxuLy8gQSB3aW5kb3cgb3ZlciB0aGUgcm93czogYSBydW5uaW5nIHRvdGFsLCBhIHRvdGFsIHRvIGRhdGUgd2l0aGluIGVhY2hcbi8vIHBlcmlvZCAobW9udGggdG8gZGF0ZSksIG9yIGEgcm9sbGluZyBzcGFuIG9mIHBlcmlvZHMuXG5leHBvcnQgdHlwZSBXaW5kb3dLaW5kID0gJ3J1bm5pbmcnIHwgJ3RvX2RhdGUnIHwgJ3JvbGxpbmcnO1xuXG4vLyBXaHkgYSB3aW5kb3cgcmVhZHMgYXMgaXQgZG9lcy4gQ29kZXMgb25seTsgdGhlIHZpZXdlciB3b3JkcyB0aGVtLlxuZXhwb3J0IHR5cGUgV2luZG93Tm90ZUNvZGUgPVxuICB8ICdzbmFwcGVkX3N0YXJ0J1xuICB8ICdzcGFuX2NvbnZlcnRlZCdcbiAgfCAnZ3JhaW5fdG9vX2NvYXJzZSdcbiAgfCAnZXF1YWxfZ3JhaW5fcGxhaW4nXG4gIHwgJ293bl9maWx0ZXJfY2Fwc19sZWFkX2luJ1xuICB8ICd3ZWVrX2J5X21vbmRheSdcbiAgfCAnaW5jb21wbGV0ZV9oZWFkJztcblxuLy8gSG93IG9uZSB3aW5kb3dlZCBvdXRwdXQgY29sdW1uIHdhcyBjb21wdXRlZC4gcGVyaW9kcyBhbmQgdW5pdCBzaXplIGFcbi8vIHJvbGxpbmcgd2luZG93IChkcmF3blBlcmlvZHMgaXMgdGhhdCBzcGFuIGNvdW50ZWQgaW4gdGhlIGdyYWluIHRoZSByb3dzXG4vLyBhcmUgZHJhd24gYXQpOyByZXNldEV2ZXJ5IHJlc3RhcnRzIGEgdG8tZGF0ZSB3aW5kb3c7IGF2ZXJhZ2UgbWFrZXMgdGhlXG4vLyB3aW5kb3cgYW4gYXZlcmFnZSByYXRoZXIgdGhhbiBhIHRvdGFsOyBmcm9tQmVnaW5uaW5nXG4vLyBydW5zIGEgdG90YWwgZnJvbSB0aGUgZmlyc3Qgcm93IGV2ZXIgcmF0aGVyIHRoYW4gZnJvbSB0aGUgZmlyc3Qgcm93IHNob3duLlxuLy8gc3RhcnQsIGVuZCBhbmQgbGVhZEluIGFyZSAneXl5eS1NTS1kZCcgcmVwb3J0LXpvbmUgZGF5czogdGhlIHJvd3Mgc2hvd24sXG4vLyBhbmQgdGhlIGVhcmxpZXIgZGF5IHRoZSB3aW5kb3cgcmVhZHMgZnJvbSBzbyBpdHMgZmlyc3Qgcm93cyBhcmUgd2hvbGUuXG4vLyBkZXNjcmlwdGlvbiBpcyB0aGUgc2VydmVyJ3MgRW5nbGlzaCBmb3IgdGhlIGFnZW50IGFuZCB0aGUgZXhwb3J0czsgdGhlXG4vLyB2aWV3ZXIgY29tcG9zZXMgaXRzIG93biB3b3JkcyBmcm9tIHRoZSBmaWVsZHMuXG5leHBvcnQgaW50ZXJmYWNlIFdpbmRvd01ldGEge1xuICBraW5kOiBXaW5kb3dLaW5kO1xuICBwZXJpb2RzOiBudW1iZXIgfCBudWxsO1xuICB1bml0OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgZHJhd25QZXJpb2RzOiBudW1iZXIgfCBudWxsO1xuICByZXNldEV2ZXJ5OiBDaGFydEdyYW51bGFyaXR5IHwgbnVsbDtcbiAgYXZlcmFnZTogYm9vbGVhbjtcbiAgZnJvbUJlZ2lubmluZzogYm9vbGVhbjtcbiAgZGF0ZUNvbHVtbjogc3RyaW5nIHwgbnVsbDtcbiAgc3RhcnQ6IHN0cmluZyB8IG51bGw7XG4gIGVuZDogc3RyaW5nIHwgbnVsbDtcbiAgbGVhZEluOiBzdHJpbmcgfCBudWxsO1xuICBub3RlczogV2luZG93Tm90ZUNvZGVbXTtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLy8gV2hpY2ggZGVsdGEgYSBLUEkgY2FyZCBzaG93czogdGhlIGRpZmZlcmVuY2UsIG9yIHRoZSBwZXJjZW50IGNoYW5nZS5cbmV4cG9ydCB0eXBlIEtwaURlbHRhU2hvdyA9ICdjaGFuZ2UnIHwgJ3BlcmNlbnRfY2hhbmdlJztcblxuLy8gV2h5IGEgS1BJJ3MgZGVsdGEgcmVhZHMgYXMgaXQgZG9lczpcbi8vIC0gbm9fcHJpb3JfZGF0YTogdGhlIHByaW9yIHdpbmRvdyBoYXMgbm8gdmFsdWU7XG4vLyAtIHVwX2Zyb21femVybzogdGhlIHByaW9yIHdhcyAwLCBzbyB0aGVyZSBpcyBubyBwZXJjZW50IGNoYW5nZTtcbi8vIC0gbm9fY2hhbmdlOiBib3RoIGFyZSAwO1xuLy8gLSBub19kYXRhX2VpdGhlcjogbmVpdGhlciB3aW5kb3cgaGFzIGEgdmFsdWU7XG4vLyAtIHNpZ25fY2hhbmdlOiB0aGUgdmFsdWUgY3Jvc3NlZCB6ZXJvLCBzbyB0aGVyZSBpcyBubyBwZXJjZW50IGNoYW5nZS5cbmV4cG9ydCB0eXBlIEtwaU5vdGVDb2RlID1cbiAgfCAnbm9fcHJpb3JfZGF0YSdcbiAgfCAndXBfZnJvbV96ZXJvJ1xuICB8ICdub19jaGFuZ2UnXG4gIHwgJ25vX2RhdGFfZWl0aGVyJ1xuICB8ICdzaWduX2NoYW5nZSc7XG5cbi8vIEEgS1BJJ3MgcHJvZ3Jlc3MgdG93YXJkIGl0cyBjb25maWd1cmVkIHRhcmdldC4gcHJvZ3Jlc3MgaXMgdmFsdWUgLyB0YXJnZXRcbi8vIChudWxsIHdoZW4gdGhlIHRhcmdldCBpcyAwKTsgbWV0IGZvbGxvd3MgdGhlIGNvbmZpZydzIGluY3JlYXNlSXMgKG51bGxcbi8vIHdoZW4gaXQgaXMgbmV1dHJhbCkuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaVRhcmdldCB7XG4gIHZhbHVlOiBudW1iZXI7XG4gIGxhYmVsOiBzdHJpbmcgfCBudWxsO1xuICBwcm9ncmVzczogbnVtYmVyIHwgbnVsbDtcbiAgbWV0OiBib29sZWFuIHwgbnVsbDtcbn1cblxuLy8gT25lIHNwYXJrbGluZSBwb2ludDogdGhlIHBlcmlvZCwgd3JpdHRlbiBhcyBhIHRpbWUtYXhpcyB2YWx1ZSwgYW5kIHRoZVxuLy8gdmFsdWUgaW4gaXQgKG51bGwgd2hlbiBhIG5vbi1hZGRpdGl2ZSBtZWFzdXJlIGhhcyBubyByb3dzIHRoZXJlKS5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcG9uZW50S3BpU3BhcmtsaW5lUG9pbnQge1xuICBwZXJpb2Q6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlciB8IG51bGw7XG59XG5cbi8vIEEgS1BJJ3Mgc3BhcmtsaW5lIHBvaW50cywgb2xkZXN0IGZpcnN0LiBwYXJ0aWFsIHNheXMgdGhlIGxhc3QgcGVyaW9kIGlzXG4vLyBub3QgZmluaXNoZWQgeWV0LlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRLcGlTcGFya2xpbmUge1xuICBncmFudWxhcml0eTogQ2hhcnRHcmFudWxhcml0eTtcbiAgcGFydGlhbDogYm9vbGVhbjtcbiAgcG9pbnRzOiBDb21wb25lbnRLcGlTcGFya2xpbmVQb2ludFtdO1xufVxuXG4vLyBFdmVyeSBudW1iZXIgYSBLUEkgY2FyZCBzaG93cyBiZXNpZGUgaXRzIHZhbHVlLiBzaG93IG5hbWVzIHRoZSBkZWx0YSB0b1xuLy8gcHJpbnQsIGRlY2lkZWQgYnkgdGhlIHNlcnZlci4gV2hlbiB2YWx1ZSBpcyBudWxsIHRoZSBjYXJkIHNob3dzIGEgZGFzaCBhbmRcbi8vIG5vIGNvbXBhcmlzb24uXG5leHBvcnQgaW50ZXJmYWNlIENvbXBvbmVudEtwaSB7XG4gIHZhbHVlOiBudW1iZXIgfCBudWxsO1xuICBwcmlvcjogbnVtYmVyIHwgbnVsbDtcbiAgY2hhbmdlOiBudW1iZXIgfCBudWxsO1xuICBwZXJjZW50Q2hhbmdlOiBudW1iZXIgfCBudWxsO1xuICBzaG93OiBLcGlEZWx0YVNob3c7XG4gIG5vdGU6IEtwaU5vdGVDb2RlIHwgbnVsbDtcbiAgdGFyZ2V0OiBDb21wb25lbnRLcGlUYXJnZXQgfCBudWxsO1xuICBzcGFya2xpbmU6IENvbXBvbmVudEtwaVNwYXJrbGluZSB8IG51bGw7XG59XG5cbi8vIEEgY29tcG9uZW50J3MgQ1NWIGV4cG9ydDogdGhlIHByZXNpZ25lZCBkb3dubG9hZCBVUkwsIHBsdXMgb25lIHNlbnRlbmNlIHBlclxuLy8gd2F5IHRoZSBmaWxlIGZhbGxzIHNob3J0IG9mIHRoZSBmdWxsIHJlc3VsdCAoY3V0IGF0IHRoZSBleHBvcnQgY2VpbGluZywgb3Jcbi8vIGN1dCBhcyB0aGUgY2hhcnQgaXRzZWxmIGlzKS4gRW1wdHkgd2hlbiB0aGUgZmlsZSBpcyBjb21wbGV0ZS4gT3B0aW9uYWxcbi8vIGJlY2F1c2UgYSBzZXJ2ZXIgb24gYW4gb2xkZXIgZnJhbWV3b3JrIGFuc3dlcnMgd2l0aCB0aGUgdXJsIGFsb25lLlxuZXhwb3J0IGludGVyZmFjZSBDb21wb25lbnRFeHBvcnRSZXNwb25zZSB7XG4gIHVybDogc3RyaW5nO1xuICBub3Rlcz86IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydExpc3RJdGVtIHtcbiAgaWQ6IG51bWJlcjtcbiAgbmFtZTogc3RyaW5nO1xuICBtb2RpZnlEYXRlOiBzdHJpbmc7XG4gIHN0YXRlPzogUmVwb3J0U3RhdGU7XG4gIC8vIFRoZSBmb2xkZXIgdGhlIHJlcG9ydCBpcyBmaWxlZCB1bmRlci4gbnVsbCBpcyBhIHJlYWwsIGNvbW1vbiB2YWx1ZSDigJQgdGhlXG4gIC8vIHJlcG9ydCBzaXRzIGF0IHRoZSByb290IG9mIHRoZSBsaXN0aW5nIHRyZWUgYWxvbmdzaWRlIHRoZSBmb2xkZXJzLlxuICAvL1xuICAvLyBPcHRpb25hbCBsaWtlIGBzdGF0ZWAgYmVzaWRlIGl0OiB0aGUgYmFja2VuZCBhbHdheXMgc2VuZHMgaXQsIGJ1dCBtYWtpbmcgaXRcbiAgLy8gcmVxdWlyZWQgaXMgYSBicmVha2luZyB0eXBlIGNoYW5nZSBmb3IgZXZlcnkgY29uc3VtZXIgaG9sZGluZyBhXG4gIC8vIFJlcG9ydExpc3RJdGVtIGxpdGVyYWwgKGZpeHR1cmVzLCBtb2NrcykgYW5kIGJ1eXMgbm90aGluZyDigJQgdGhlIGxpc3RpbmdcbiAgLy8gcmVhZHMgaXQgYXMgYD8/IG51bGxgIGVpdGhlciB3YXkuXG4gIHJlcG9ydEZvbGRlcklkPzogbnVtYmVyIHwgbnVsbDtcbn1cblxuLy8gT25lIGZvbGRlciBpbiB0aGUgbGlzdGluZyB0cmVlIOKAlCBhbiBhdWRpZW5jZSBidWNrZXQgKFwiTWFuYWdlbWVudFwiLFxuLy8gXCJPcGVyYXRpb25zXCIpIHJlcG9ydHMgYXJlIGZpbGVkIGludG8uIEZvbGRlcnMgbmVzdCB2aWEgcGFyZW50UmVwb3J0Rm9sZGVySWQ7XG4vLyByZXBvcnRzIG5ldmVyIGRvLCBzbyB0aGUgdHJlZSdzIG9ubHkgYnJhbmNoIG5vZGVzIGFyZSBmb2xkZXJzLlxuLy9cbi8vIGBzdGF0ZWAgaXMgdGhlIGZvbGRlcidzIE9XTiBzdGF0ZS4gRGVsZXRpbmcgYSBmb2xkZXIgd3JpdGVzIG9ubHkgdGhhdCwgYW5kXG4vLyBldmVyeXRoaW5nIGJlbG93IGl0IGNvdW50cyBhcyBkZWxldGVkIGJ5IHBvc2l0aW9uIOKAlCBzZWUgUmVwb3J0Tm9kZS5kZWxldGVkLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRGb2xkZXIge1xuICBpZDogbnVtYmVyO1xuICBuYW1lOiBzdHJpbmc7XG4gIHBhcmVudFJlcG9ydEZvbGRlcklkOiBudW1iZXIgfCBudWxsO1xuICBzdGF0ZT86IFJlcG9ydFN0YXRlO1xufVxuXG4vLyBHRVQgL2FwaS9yZXBvcnRzIHJldHVybnMgYm90aCBoYWx2ZXMgZmxhdDsgdGhlIGxpc3RpbmcgbmVzdHMgdGhlbSBpdHNlbGYuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydFRyZWUge1xuICByZXBvcnRzOiBSZXBvcnRMaXN0SXRlbVtdO1xuICBmb2xkZXJzOiBSZXBvcnRGb2xkZXJbXTtcbn1cblxuZXhwb3J0IGVudW0gUmVwb3J0Tm9kZVR5cGUge1xuICBGb2xkZXIgPSAnZm9sZGVyJyxcbiAgUmVwb3J0ID0gJ3JlcG9ydCcsXG59XG5cbi8vIE9uZSBub2RlIGFzIGZzLXRyZWUgc2VlcyBpdC4gRm9sZGVycyBhbmQgcmVwb3J0cyBzaGFyZSBvbmUgaWQgc3BhY2UgaW4gdGhlXG4vLyB2aWV3LCBzbyB0aGUgaWRzIGFyZSBwcmVmaXhlZCAoJ2Y6MTInIC8gJ3I6MzQnKSDigJQgYGlkYCBpcyB0aGUgb3JpZ2luYWwsXG4vLyBwZXItdGFibGUgaWQgdGhhdCB0aGUgQVBJIGVuZHBvaW50cyB0YWtlLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnROb2RlIHtcbiAga2V5OiBzdHJpbmc7XG4gIGlkOiBudW1iZXI7XG4gIG5hbWU6IHN0cmluZztcbiAgdHlwZTogUmVwb3J0Tm9kZVR5cGU7XG4gIC8vIE9ubHkgZXZlciBwb3B1bGF0ZWQgb24gYSBmb2xkZXI7IGEgcmVwb3J0IGlzIGFsd2F5cyBhIGxlYWYuXG4gIGNoaWxkcmVuOiBSZXBvcnROb2RlW107XG4gIC8vIFByZXNlbnQgb24gcmVwb3J0IG5vZGVzIG9ubHkuXG4gIHJlcG9ydD86IFJlcG9ydExpc3RJdGVtO1xuICAvLyBUaGUgbm9kZSdzIG93biByb3cgaXMgZGVsZXRlZC4gV2hhdCBlYXJucyB0aGUgXCJEZWxldGVkXCIgY2hpcCDigJQgdGhpcyBpc1xuICAvLyB3aGF0IHNvbWVib2R5IGFjdHVhbGx5IGRlbGV0ZWQuXG4gIHN0YXRlRGVsZXRlZDogYm9vbGVhbjtcbiAgLy8gRGVsZXRlZCBpdHNlbGYgT1IgYW55d2hlcmUgYmVsb3cgYSBkZWxldGVkIGZvbGRlci4gT25seSBldmVyIHRydWUgaW4gU2hvd1xuICAvLyBEZWxldGVkIG1vZGUgKHRoZSBkZWZhdWx0IGxpc3RpbmcgbmV2ZXIgcmV0dXJucyBzdWNoIGEgbm9kZSksIGFuZCBpdCBpcyB3aGF0XG4gIC8vIHN3YXBzIHRoZSByb3cncyBhY3Rpb25zIGZvciBSZXN0b3JlLlxuICBkZWxldGVkOiBib29sZWFuO1xufVxuXG4vLyBSZXBvcnRzIGFuZCBmb2xkZXJzIGFyZSBib3RoIHNvZnQtZGVsZXRhYmxlLiBBIGRlbGV0ZWQgcmVwb3J0IGtlZXBzIGl0cyBwYWdlc1xuLy8gYW5kIGNvbXBvbmVudHM7IGEgZGVsZXRlZCBmb2xkZXIga2VlcHMgZXZlcnl0aGluZyBmaWxlZCB1bmRlciBpdCwgd2hpY2ggbGVhdmVzXG4vLyB0aGUgbGlzdGluZyB3aXRoIGl0IGFuZCBjb21lcyBiYWNrIHdpdGggaXQuIFwiU2hvdyBEZWxldGVkXCIgc2hvd3MgdGhlIHdob2xlXG4vLyB0cmVlLCBsaXZlIGFuZCBkZWxldGVkIHRvZ2V0aGVyLCBzbyBhbnkgb2YgaXQgY2FuIGJlIHJlc3RvcmVkIGluIHBsYWNlLlxuZXhwb3J0IGVudW0gUmVwb3J0U3RhdGUge1xuICBBY3RpdmUgPSAnYWN0aXZlJyxcbiAgRGVsZXRlZCA9ICdkZWxldGVkJyxcbn1cblxuLy8gVGhlIGNoYXQgdHVybiBmbGFncyB0aGlzIGNvbnRleHQncyBiYWNrZW5kIGFkZHMgKFJlcG9ydHNcXEFpVmlldykuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydENoYXRSZXNwb25zZSB7XG4gIHJlcG9ydENoYW5nZWQ/OiBib29sZWFuO1xuICByZXBvcnRSZW5hbWVkPzogYm9vbGVhbjtcbn1cblxuLy8gT25lIHZlcnNpb24gb2YgdGhlIGdsb2JhbCBBSSBrbm93bGVkZ2UgZG9jdW1lbnQg4oCUIHRoZSBvcGVyYXRvci1hdXRob3JlZFxuLy8gbWFya2Rvd24gYXBwZW5kZWQgdG8gdGhlIHJlcG9ydCBhZ2VudCdzIHN5c3RlbSBpbnN0cnVjdGlvbnMgb24gZXZlcnkgdHVybi5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0SW5zdHJ1Y3Rpb24ge1xuICBpZDogbnVtYmVyO1xuICBjb250ZW50OiBzdHJpbmc7XG4gIGN1cnJlbnQ6IGJvb2xlYW47XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIG1vZGlmeURhdGU6IERhdGU7XG4gIGFjY291bnRJZDogbnVtYmVyIHwgbnVsbDtcbiAgYWNjb3VudE5hbWU6IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIEdFVC9QVVQgaW5zdHJ1Y3Rpb25zIHBheWxvYWQ6IHRoZSBjdXJyZW50IHZlcnNpb24gKG51bGwgdW50aWwgb25lIGlzXG4vLyBhdXRob3JlZCkgcGx1cyB0aGUgZnVsbCBoaXN0b3J5LCBuZXdlc3QgZmlyc3QuXG5leHBvcnQgaW50ZXJmYWNlIFJlcG9ydEluc3RydWN0aW9ucyB7XG4gIGluc3RydWN0aW9uczogUmVwb3J0SW5zdHJ1Y3Rpb24gfCBudWxsO1xuICB2ZXJzaW9uczogUmVwb3J0SW5zdHJ1Y3Rpb25bXTtcbn1cblxuLy8gVGhlIGxhdGVzdCBzZW1hbnRpYy1kYXRhYmFzZSBidWlsZCAoYW4gZmZfcHJvY2Vzc2VzIHJvdykg4oCUIGVub3VnaCBmb3IgdGhlXG4vLyBzZXR0aW5ncyBkaWFsb2cgdG8gc2F5IHdoYXQgc3RhdGUgdGhlIGJ1aWxkIGlzIGluIGFuZCB3aGVuIGl0IGxhc3QgcmFuLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkIHtcbiAgaWQ6IG51bWJlcjtcbiAgc3RhdGU6IHN0cmluZztcbiAgcGVyY2VudDogbnVtYmVyIHwgc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGR1cmF0aW9uOiBudW1iZXI7XG4gIGNyZWF0ZURhdGU6IERhdGU7XG4gIHN0YXJ0RGF0ZTogRGF0ZTtcbiAgZW5kRGF0ZTogRGF0ZTtcbn1cblxuLy8gQSBidWlsZCBzdGFnZSdzIHN0YXRlIG9uIHRoZSBlbnRpdHkgc2NvcmVib2FyZDogJ2RvbmUnID0gYnVpbHQsICdtaXNzaW5nJyA9XG4vLyBzdGlsbCBuZWVkcyBidWlsZGluZyAoYSBtaXNzaW5nIHN0YWdlIGlzIHVuYnVpbHQgY29udGVudCwgbmV2ZXIgYW4gZXJyb3IpLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNCdWlsZFN0YWdlID0gJ2RvbmUnIHwgJ21pc3NpbmcnO1xuXG4vLyBPbmUgZW51bSBjb2x1bW4gb2YgYW4gZW50aXR5LCB3aXRoIHRoZSBhbGxvd2VkIHZhbHVlcyB0aGUgYnVpbGQgaW5saW5lZC5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudW0ge1xuICBjb2x1bW46IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuLy8gT25lIGVudGl0eSByb3cgb2YgdGhlIHNjb3JlYm9hcmQgKGFuIGVudGl0eSA9IGEgdGFibGUgKyBhIG1vZGVsICsgYVxuLy8gaGFuZGxlcik6IGl0cyB0YWJsZS9zaGFwZSBjb3VudHMsIGlubGluZWQgZW51bSB2YWx1ZXMsIGNvbXB1dGVkIGZpZWxkcywgaG93XG4vLyBtYW55IGNvZGUgZnVuY3Rpb25zIHdlcmUgY2FjaGVkIChzcGxpdCBtb2RlbCB2cyBoYW5kbGVyKSwgYW5kIHRoZSBwZXItc3RhZ2Vcbi8vIGJ1aWx0L21pc3Npbmcgc3RhdGUuXG4vL1xuLy8gYG1vZGVsYC9gaGFuZGxlcmAgYXJlIHRoZSBjbGFzc2VzIHRoZSBmdW5jdGlvbnMgd2VyZSByZWFkIGZyb20g4oCUIHdoYXQgYVxuLy8gcmVhZGVyIHJlY29nbml6ZXMgdGhlIHJvdyBieSwgd2hlcmUgYGtleWAgaXMgd2hhdCB0aGUgcmVwb3J0IEFJIGFkZHJlc3NlcyBpdFxuLy8gYnkgaW4gZGVzY3JpYmVfZW50aXR5IC8gY29tcGlsZV9xdWVyeS5cbmV4cG9ydCBpbnRlcmZhY2UgU2VtYW50aWNCdWlsZEVudGl0eSB7XG4gIGtleTogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlcjogc3RyaW5nIHwgbnVsbDtcbiAgY29sdW1uczogbnVtYmVyO1xuICByZWxhdGlvbnNoaXBzOiBudW1iZXI7XG4gIGVudW1zOiBTZW1hbnRpY0J1aWxkRW51bVtdO1xuICBjb21wdXRlZEZpZWxkczogc3RyaW5nW107XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgbW9kZWxGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIGhhbmRsZXJGdW5jdGlvbkNvdW50OiBudW1iZXI7XG4gIHN0YWdlczogUmVjb3JkPHN0cmluZywgU2VtYW50aWNCdWlsZFN0YWdlPjtcbn1cblxuLy8gT25lIHN0YW5kYWxvbmUgY29kZSBjbGFzcyB0aGUgYnVpbGQgcmVhZDogZG9tYWluIGxvZ2ljIHdpdGggbm8gdGFibGUgb2YgaXRzXG4vLyBvd24gKGEgc3VtbWFyeSBtb2RlbCwgYSBjYWxjdWxhdGlvbiBzZXJ2aWNlKS4gVGhlIHJlcG9ydCBBSSByZWFkcyBpdHMgY29kZVxuLy8gZXhhY3RseSBsaWtlIGFuIGVudGl0eSdzLCBidXQgaXQgY2FuIG5ldmVyIGJlIHF1ZXJpZWQg4oCUIHRoZXJlIGlzIG5vdGhpbmcgdG9cbi8vIHNlbGVjdCBmcm9tIOKAlCBzbyBpdCBjYXJyaWVzIG5vIHRhYmxlLCBjb2x1bW5zIG9yIHJlbGF0aW9uc2hpcHMuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRDbGFzcyB7XG4gIGtleTogc3RyaW5nO1xuICBtb2RlbDogc3RyaW5nIHwgbnVsbDtcbiAgZnVuY3Rpb25Db3VudDogbnVtYmVyO1xufVxuXG4vLyBXaGF0IHRoZSBidWlsZCBkZWNpZGVkIGEgcGh5c2ljYWwgdGFibGUgaXMuIEVudGl0eSBhbmQganVuY3Rpb24gYXJlIGJvdGhcbi8vIHJlYWNoYWJsZSBieSB0aGUgcmVwb3J0IEFJIOKAlCBhbiBlbnRpdHkgZGlyZWN0bHksIGEganVuY3Rpb24gdGhyb3VnaCB0aGVcbi8vIG1hbnktdG8tbWFueSBpdCBicmlkZ2VzLiBFeGNsdWRlZCBpcyBub3QgcmVhY2hhYmxlIGF0IGFsbC5cbmV4cG9ydCB0eXBlIFNlbWFudGljVGFibGVDbGFzc2lmaWNhdGlvbiA9ICdlbnRpdHknIHwgJ2p1bmN0aW9uJyB8ICdleGNsdWRlZCc7XG5cbi8vIE9uZSBwaHlzaWNhbCB0YWJsZSBhcyB0aGUgYnVpbGQgY2xhc3NpZmllZCBpdC4gYHJlYXNvbmAgYW5zd2VycyBhIHNpbmdsZVxuLy8gcXVlc3Rpb24g4oCUIHdoeSBjYW4ndCB0aGUgcmVwb3J0IEFJIHNlZSB0aGlzIHRhYmxlPyDigJQgYW5kIGlzIG51bGwgd2hlbiBpdCBjYW4uXG4vLyBBIGp1bmN0aW9uIHdpdGggYSByZWFzb24gYnJpZGdlZCBub3RoaW5nLCBzbyBpdCBpcyBqdXN0IGFzIGludmlzaWJsZSBhcyBhblxuLy8gZXhjbHVkZWQgdGFibGUuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGRUYWJsZSB7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIGNsYXNzaWZpY2F0aW9uOiBTZW1hbnRpY1RhYmxlQ2xhc3NpZmljYXRpb247XG4gIG1vZGVsOiBzdHJpbmcgfCBudWxsO1xuICByZWFzb246IHN0cmluZyB8IG51bGw7XG59XG5cbi8vIFRoZSBidWlsZCBzY29yZWJvYXJkIHNoaXBwZWQgYWxvbmdzaWRlIHRoZSBidWlsZCBzdGF0dXM6IHRoZSBzdW1tYXJ5IGNvdW50cyxcbi8vIHRoZSBmdWxsIGJyZWFrZG93biB0aGUgc2V0dGluZ3MgZGlhbG9nIGRyaWxscyBpbnRvIOKAlCBCT1RIIGtpbmRzIG9mIHVuaXQgdGhlXG4vLyBidWlsZCBjYWNoZXMsIHRhYmxlLWJhY2tlZCBlbnRpdGllcyBhbmQgc3RhbmRhbG9uZSBjb2RlIGNsYXNzZXMg4oCUIGFuZCB0aGVcbi8vIGNhdGFsb2cgb2YgZXZlcnkgdGFibGUgdGhlIGJ1aWxkIHNhdywgc28gdGhlIHRhYiBjYW4gc2hvdyB3aGF0IHRoZSByZXBvcnQgQUlcbi8vIGNhbid0IHNlZSwgbm90IGp1c3Qgd2hhdCBpdCBjYW4uXG4vL1xuLy8gYGZ1bmN0aW9uQ291bnRgIHNwYW5zIGVudGl0aWVzIGFuZCBjbGFzc2VzIGFsaWtlOiBpdCBpcyB0aGUgc2FtZSB0b3RhbCB0aGVcbi8vIGJ1aWxkIGl0c2VsZiByZXBvcnRzIHdoZW4gaXQgZmluaXNoZXMuXG4vL1xuLy8gYHRhYmxlc2AgaXMgZW1wdHkgZm9yIGFuIGFydGlmYWN0IGJ1aWx0IGJlZm9yZSB0aGUgY2F0YWxvZyBleGlzdGVkLiBSZWFkIHRoYXRcbi8vIGFzIFwibm8gY2F0YWxvZ1wiLCBuZXZlciBhcyBcIm5vdGhpbmcgd2FzIGV4Y2x1ZGVkXCIuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljQnVpbGREZXRhaWwge1xuICAvLyBXaGV0aGVyIHRoZSBhcnRpZmFjdCB3YXMgcHJvZHVjZWQgYnkgYSBidWlsZCB0aGF0IHJhbiB0byB0aGUgZW5kLiBSZWFkIGl0XG4gIC8vIGJlc2lkZSBgZ2VuZXJhdGVkQXRgLCBuZXZlciBpbnN0ZWFkIG9mIGl0OiB0aGUgc3RydWN0dXJhbCBhcnRpZmFjdCBpc1xuICAvLyBwdWJsaXNoZWQgQkVGT1JFIHRoZSBBSSBmdW5jdGlvbiBwYXNzLCBzbyBhIGJ1aWxkIHdob3NlIEFJIHBhc3MgZmFpbGVkIHN0aWxsXG4gIC8vIGNhcnJpZXMgYSBkYXRlIGFuZCBhIGZ1bGwgc2V0IG9mIGNvdW50cy4gVGhlIGRhdGUgc2F5cyBzb21ldGhpbmcgd2FzXG4gIC8vIHdyaXR0ZW47IG9ubHkgdGhpcyBzYXlzIHRoZSBidWlsZCBmaW5pc2hlZCB3cml0aW5nIGl0LlxuICBjb21wbGV0ZTogYm9vbGVhbjtcbiAgZ2VuZXJhdGVkQXQ6IERhdGUgfCBudWxsO1xuICBlbnRpdHlDb3VudDogbnVtYmVyO1xuICBjbGFzc0NvdW50OiBudW1iZXI7XG4gIGZ1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZW50aXRpZXM6IFNlbWFudGljQnVpbGRFbnRpdHlbXTtcbiAgY2xhc3NlczogU2VtYW50aWNCdWlsZENsYXNzW107XG4gIHRhYmxlQ291bnQ6IG51bWJlcjtcbiAganVuY3Rpb25Db3VudDogbnVtYmVyO1xuICB1bmxpbmtlZEp1bmN0aW9uQ291bnQ6IG51bWJlcjtcbiAgZXhjbHVkZWRDb3VudDogbnVtYmVyO1xuICB0YWJsZXM6IFNlbWFudGljQnVpbGRUYWJsZVtdO1xufVxuXG4vLyBXaGljaCBjbGFzcyBhIGNhY2hlZCBmdW5jdGlvbiB3YXMgcmVhZCBmcm9tLiBBbiBlbnRpdHkncyBjYWNoZSBzcGxpdHMgaW50b1xuLy8gJ21vZGVsJyBhbmQgJ2hhbmRsZXInOyBhIHN0YW5kYWxvbmUgY29kZSBjbGFzcyBoYXMgb25lIGdyb3VwLCAnY2xhc3MnLlxuZXhwb3J0IHR5cGUgU2VtYW50aWNGdW5jdGlvblNvdXJjZSA9ICdtb2RlbCcgfCAnaGFuZGxlcicgfCAnY2xhc3MnO1xuXG4vLyBPbmUgQUktY2xhc3NpZmllZCBjb2RlIGZ1bmN0aW9uIGZyb20gYSBtb2RlbCwgaGFuZGxlciBvciBzdGFuZGFsb25lIGNsYXNzOlxuLy8gd2hhdCBraW5kIG9mIGxvZ2ljIGl0IGlzLCB3aGF0IGl0IGRvZXMsIGFuZCB3aGF0IGl0IHByb2R1Y2VzIOKAlCB0aGUgYnVpbGQnc1xuLy8gY2FjaGVkIFwid2hhdCB0aGUgY29kZSBkb2VzXCIga25vd2xlZGdlIHNob3duIGluIHRoZSBmdW5jdGlvbnMgZGlhbG9nLlxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0VudGl0eUZ1bmN0aW9uIHtcbiAgY2xhc3M6IHN0cmluZztcbiAgbWV0aG9kOiBzdHJpbmc7XG4gIHNpZ25hdHVyZTogc3RyaW5nO1xuICBraW5kOiBzdHJpbmc7XG4gIHN1bW1hcnk6IHN0cmluZztcbiAgcHJvZHVjZXM6IHN0cmluZztcbiAgc291cmNlOiBTZW1hbnRpY0Z1bmN0aW9uU291cmNlO1xufVxuXG4vLyBPbmUgZW50aXR5J3MgY2FjaGVkIGNvZGUtZnVuY3Rpb24ga25vd2xlZGdlLCBmZXRjaGVkIHdoZW4gYSBmdW5jdGlvbnMgZGlhbG9nXG4vLyBvcGVucyAodGhlIGZ1bGwgc2V0IGFjcm9zcyBhbGwgZW50aXRpZXMgaXMgdG9vIGJpZyB0byBzaGlwIHdpdGggdGhlXG4vLyBzY29yZWJvYXJkKS4gT25lIHBheWxvYWQgc2VydmVzIGJvdGggZGlhbG9ncyDigJQgY29uc3VtZXJzIGZpbHRlciBieSBzb3VyY2UuXG5leHBvcnQgaW50ZXJmYWNlIFNlbWFudGljRW50aXR5RnVuY3Rpb25zIHtcbiAgZW50aXR5OiBzdHJpbmc7XG4gIGdlbmVyYXRlZEF0OiBEYXRlIHwgbnVsbDtcbiAgbW9kZWxDbGFzczogc3RyaW5nIHwgbnVsbDtcbiAgaGFuZGxlckNsYXNzOiBzdHJpbmcgfCBudWxsO1xuICBmdW5jdGlvbnM6IFNlbWFudGljRW50aXR5RnVuY3Rpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZW1hbnRpY0J1aWxkU3RhdHVzIHtcbiAgYnVpbGQ6IFNlbWFudGljQnVpbGQgfCBudWxsO1xuICBkZXRhaWw6IFNlbWFudGljQnVpbGREZXRhaWw7XG59XG5cbi8vIFRoZSByZXBvcnQgbW9kdWxlJ3MgR2VuZXJhbCBzZXR0aW5ncyAoYSBzbWFsbCBnbG9iYWwga2V5L3ZhbHVlIHN0b3JlLCB0aGVcbi8vIHJlcG9ydGluZyBjb3VudGVycGFydCBvZiB0aGUgYXBwLXdpZGUgc2V0dGluZ3MpLiBFYWNoIHZhbHVlIHNoaXBzIHdpdGggdGhlXG4vLyBzYWZlIGJhbmQgaXRzIGVkaXRvciBmaWVsZCBpcyBib3VuZGVkIHRvLlxuZXhwb3J0IGludGVyZmFjZSBSZXBvcnRTZXR0aW5ncyB7XG4gIC8vIEhvdyBtYW55IHN1bW1hcnkgY2FsbHMgdGhlIHNlbWFudGljIGJ1aWxkIHJ1bnMgYXQgb25jZS5cbiAgc2VtYW50aWNCdWlsZENvbmN1cnJlbmN5OiBudW1iZXI7XG4gIHNlbWFudGljQnVpbGRDb25jdXJyZW5jeU1pbjogbnVtYmVyO1xuICBzZW1hbnRpY0J1aWxkQ29uY3VycmVuY3lNYXg6IG51bWJlcjtcbn1cbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import { catchError, filter, map, merge, of, switchMap, timer } from 'rxjs';
2
+ import { apiErrorMessage } from './api-error-message';
2
3
  // A sweep of changes (a few filters set in a row, every value of a picked
3
4
  // saved filter) settles for this long before a tile refetches, so the sweep costs one
4
5
  // request, not one per change.
@@ -25,13 +26,9 @@ export function tileLoads(refresh$, load, version) {
25
26
  function oneLoad(load, version) {
26
27
  const sentAt = version();
27
28
  return load()
28
- .pipe(map((data) => ({ data, error: null })), catchError((error) => of({ data: null, error: loadErrorMessage(error) })), filter(() => version() === sentAt));
29
+ .pipe(map((data) => ({ data, error: null })), catchError((error) => of({
30
+ data: null,
31
+ error: apiErrorMessage(error, 'Failed to load data'),
32
+ })), filter(() => version() === sentAt));
29
33
  }
30
- // What a failed request says: the server's message, else the error's own,
31
- // else a plain fallback.
32
- function loadErrorMessage(error) {
33
- const failure = error;
34
- const message = failure?.error?.message ?? failure?.message;
35
- return typeof message === 'string' && message ? message : 'Failed to load data';
36
- }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1sb2Fkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy90aWxlLWxvYWRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFLeEYsMEVBQTBFO0FBQzFFLHNGQUFzRjtBQUN0RiwrQkFBK0I7QUFDL0IsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsR0FBRyxDQUFDO0FBRTVDLHlFQUF5RTtBQUN6RSxxQ0FBcUM7QUFDckMsRUFBRTtBQUNGLDBFQUEwRTtBQUMxRSw2RUFBNkU7QUFDN0UsMEVBQTBFO0FBQzFFLDJFQUEyRTtBQUMzRSw0RUFBNEU7QUFDNUUsOEVBQThFO0FBQzlFLGlIQUFpSDtBQUNqSCw2RUFBNkU7QUFDN0Usc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxTQUFTLENBQ3ZCLFFBQTZCLEVBQzdCLElBQXlCLEVBQ3pCLE9BQXFCO0lBRXJCLE9BQU8sS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7U0FDcEUsSUFBSSxDQUNILFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdDLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUN4QyxDQUFDLENBQ0wsQ0FBQztBQUNOLENBQUM7QUFFRCx5RUFBeUU7QUFDekUsd0NBQXdDO0FBQ3hDLFNBQVMsT0FBTyxDQUFJLElBQXlCLEVBQUUsT0FBcUI7SUFDbEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxFQUFFLENBQUM7SUFFekIsT0FBTyxJQUFJLEVBQUU7U0FDVixJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFxQixFQUFFLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUN6RCxVQUFVLENBQUMsQ0FBQyxLQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBb0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDckcsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUNuQyxDQUFDO0FBQ04sQ0FBQztBQUVELDBFQUEwRTtBQUMxRSx5QkFBeUI7QUFDekIsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFjO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLEtBQW9FLENBQUM7SUFDckYsTUFBTSxPQUFPLEdBQUcsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksT0FBTyxFQUFFLE9BQU8sQ0FBQztJQUU1RCxPQUFPLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUM7QUFDbEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2YsIHN3aXRjaE1hcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgVGlsZUxvYWRSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZXMvdGlsZS1sb2FkLXJlc3VsdC5pbnRlcmZhY2UnO1xuXG5cbi8vIEEgc3dlZXAgb2YgY2hhbmdlcyAoYSBmZXcgZmlsdGVycyBzZXQgaW4gYSByb3csIGV2ZXJ5IHZhbHVlIG9mIGEgcGlja2VkXG4vLyBzYXZlZCBmaWx0ZXIpIHNldHRsZXMgZm9yIHRoaXMgbG9uZyBiZWZvcmUgYSB0aWxlIHJlZmV0Y2hlcywgc28gdGhlIHN3ZWVwIGNvc3RzIG9uZVxuLy8gcmVxdWVzdCwgbm90IG9uZSBwZXIgY2hhbmdlLlxuZXhwb3J0IGNvbnN0IFRJTEVfUkVGUkVTSF9ERUJPVU5DRV9NUyA9IDMwMDtcblxuLy8gQSB0aWxlJ3MgZGF0YSBhcyBvbmUgc3RyZWFtOiB0aGUgZmlyc3QgbG9hZCBhdCBvbmNlLCB0aGVuIG9uZSBsb2FkIHBlclxuLy8gc2V0dGxlZCBidXJzdCBvZiByZWZyZXNoIHRyaWdnZXJzLlxuLy9cbi8vIC0gRWFjaCB0cmlnZ2VyIHN0YXJ0cyBvdmVyIChzd2l0Y2hNYXApOiBpdCBjYW5jZWxzIHRoZSB3YWl0IGZvciB0aGUgb25lXG4vLyAgIGJlZm9yZSBpdCBhbmQgdGhlIHJlcXVlc3QgaW4gZmxpZ2h0LCB0aGVuIHdhaXRzIGZvciB0aGUgc3dlZXAgdG8gc2V0dGxlLlxuLy8gICBTbyBhbiBhbnN3ZXIgdG8gYW4gb2xkZXIgcmVxdWVzdCBuZXZlciBsYW5kcywgbm90IGV2ZW4gd2hpbGUgdGhlIG5leHRcbi8vICAgbG9hZCBzdGlsbCB3YWl0cywgYW5kIHRoZSBiYXIgc3RheXMgb24gdW50aWwgdGhlIHNldHRsZWQgbG9hZCBhbnN3ZXJzLlxuLy8gLSBFYWNoIGxvYWQgbm90ZXMgdGhlIHN0YXRlIHZlcnNpb24gaXQgd2FzIHNlbnQgdW5kZXIgKHN0YXRlVmVyc2lvbiksIGFuZFxuLy8gICBpdHMgYW5zd2VyIGlzIGRyb3BwZWQgd2hlbiB0aGUgdmVyc2lvbiBoYXMgbW92ZWQgc2luY2UuIHJlc2V0VG9EZWZhdWx0cygpXG4vLyAgIG1vdmVzIHRoZSB2ZXJzaW9uIGFuZCBhbm5vdW5jZXMgYSBmdWxsIGNoYW5nZSB0b2dldGhlciwgc28gdGhlIGxvYWQgZm9yIHRoZSBuZXcgc3RhdGUgaXMgYWxyZWFkeSBvbiBpdHMgd2F5LlxuLy8gLSBBIGZhaWxlZCBsb2FkIGVuZHMgb25seSBpdHNlbGY6IGl0cyBtZXNzYWdlIGNvbWVzIHRocm91Z2ggYXMgdGhlIGFuc3dlcixcbi8vICAgYW5kIHRoZSBuZXh0IHRyaWdnZXIgbG9hZHMgYWdhaW4uXG5leHBvcnQgZnVuY3Rpb24gdGlsZUxvYWRzPFQ+KFxuICByZWZyZXNoJDogT2JzZXJ2YWJsZTx1bmtub3duPixcbiAgbG9hZDogKCkgPT4gT2JzZXJ2YWJsZTxUPixcbiAgdmVyc2lvbjogKCkgPT4gbnVtYmVyLFxuKTogT2JzZXJ2YWJsZTxUaWxlTG9hZFJlc3VsdDxUPj4ge1xuICByZXR1cm4gbWVyZ2Uob2YoMCksIHJlZnJlc2gkLnBpcGUobWFwKCgpID0+IFRJTEVfUkVGUkVTSF9ERUJPVU5DRV9NUykpKVxuICAgIC5waXBlKFxuICAgICAgc3dpdGNoTWFwKCh3YWl0KSA9PiAod2FpdCA/IHRpbWVyKHdhaXQpIDogb2YoMCkpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiBvbmVMb2FkKGxvYWQsIHZlcnNpb24pKSxcbiAgICAgICAgKSksXG4gICAgKTtcbn1cblxuLy8gT25lIHJlcXVlc3Q6IGl0cyBhbnN3ZXIsIG9yIGl0cyBmYWlsdXJlIGFzIGEgbWVzc2FnZSwgZHJvcHBlZCB3aGVuIHRoZVxuLy8gc3RhdGUgdmVyc2lvbiBtb3ZlZCB3aGlsZSBpdCB3YXMgb3V0LlxuZnVuY3Rpb24gb25lTG9hZDxUPihsb2FkOiAoKSA9PiBPYnNlcnZhYmxlPFQ+LCB2ZXJzaW9uOiAoKSA9PiBudW1iZXIpOiBPYnNlcnZhYmxlPFRpbGVMb2FkUmVzdWx0PFQ+PiB7XG4gIGNvbnN0IHNlbnRBdCA9IHZlcnNpb24oKTtcblxuICByZXR1cm4gbG9hZCgpXG4gICAgLnBpcGUoXG4gICAgICBtYXAoKGRhdGEpOiBUaWxlTG9hZFJlc3VsdDxUPiA9PiAoeyBkYXRhLCBlcnJvcjogbnVsbCB9KSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4gb2Y8VGlsZUxvYWRSZXN1bHQ8VD4+KHsgZGF0YTogbnVsbCwgZXJyb3I6IGxvYWRFcnJvck1lc3NhZ2UoZXJyb3IpIH0pKSxcbiAgICAgIGZpbHRlcigoKSA9PiB2ZXJzaW9uKCkgPT09IHNlbnRBdCksXG4gICAgKTtcbn1cblxuLy8gV2hhdCBhIGZhaWxlZCByZXF1ZXN0IHNheXM6IHRoZSBzZXJ2ZXIncyBtZXNzYWdlLCBlbHNlIHRoZSBlcnJvcidzIG93bixcbi8vIGVsc2UgYSBwbGFpbiBmYWxsYmFjay5cbmZ1bmN0aW9uIGxvYWRFcnJvck1lc3NhZ2UoZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICBjb25zdCBmYWlsdXJlID0gZXJyb3IgYXMgeyBlcnJvcj86IHsgbWVzc2FnZT86IHVua25vd24gfTsgbWVzc2FnZT86IHVua25vd24gfSB8IG51bGw7XG4gIGNvbnN0IG1lc3NhZ2UgPSBmYWlsdXJlPy5lcnJvcj8ubWVzc2FnZSA/PyBmYWlsdXJlPy5tZXNzYWdlO1xuXG4gIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZSA/IG1lc3NhZ2UgOiAnRmFpbGVkIHRvIGxvYWQgZGF0YSc7XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGlsZS1sb2Fkcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvcmVwb3J0cy90aWxlLWxvYWRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFeEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSXRELDBFQUEwRTtBQUMxRSxzRkFBc0Y7QUFDdEYsK0JBQStCO0FBQy9CLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLEdBQUcsQ0FBQztBQUU1Qyx5RUFBeUU7QUFDekUscUNBQXFDO0FBQ3JDLEVBQUU7QUFDRiwwRUFBMEU7QUFDMUUsNkVBQTZFO0FBQzdFLDBFQUEwRTtBQUMxRSwyRUFBMkU7QUFDM0UsNEVBQTRFO0FBQzVFLDhFQUE4RTtBQUM5RSxpSEFBaUg7QUFDakgsNkVBQTZFO0FBQzdFLHNDQUFzQztBQUN0QyxNQUFNLFVBQVUsU0FBUyxDQUN2QixRQUE2QixFQUM3QixJQUF5QixFQUN6QixPQUFxQjtJQUVyQixPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDO1NBQ3BFLElBQUksQ0FDSCxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3QyxJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FDeEMsQ0FBQyxDQUNMLENBQUM7QUFDTixDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLHdDQUF3QztBQUN4QyxTQUFTLE9BQU8sQ0FBSSxJQUF5QixFQUFFLE9BQXFCO0lBQ2xFLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXpCLE9BQU8sSUFBSSxFQUFFO1NBQ1YsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBcUIsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFDekQsVUFBVSxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQW9CO1FBQ25ELElBQUksRUFBRSxJQUFJO1FBQ1YsS0FBSyxFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUscUJBQXFCLENBQUM7S0FDckQsQ0FBQyxDQUFDLEVBQ0gsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUNuQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUsIGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZSwgb2YsIHN3aXRjaE1hcCwgdGltZXIgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgYXBpRXJyb3JNZXNzYWdlIH0gZnJvbSAnLi9hcGktZXJyb3ItbWVzc2FnZSc7XG5pbXBvcnQgeyBUaWxlTG9hZFJlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlcy90aWxlLWxvYWQtcmVzdWx0LmludGVyZmFjZSc7XG5cblxuLy8gQSBzd2VlcCBvZiBjaGFuZ2VzIChhIGZldyBmaWx0ZXJzIHNldCBpbiBhIHJvdywgZXZlcnkgdmFsdWUgb2YgYSBwaWNrZWRcbi8vIHNhdmVkIGZpbHRlcikgc2V0dGxlcyBmb3IgdGhpcyBsb25nIGJlZm9yZSBhIHRpbGUgcmVmZXRjaGVzLCBzbyB0aGUgc3dlZXAgY29zdHMgb25lXG4vLyByZXF1ZXN0LCBub3Qgb25lIHBlciBjaGFuZ2UuXG5leHBvcnQgY29uc3QgVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TID0gMzAwO1xuXG4vLyBBIHRpbGUncyBkYXRhIGFzIG9uZSBzdHJlYW06IHRoZSBmaXJzdCBsb2FkIGF0IG9uY2UsIHRoZW4gb25lIGxvYWQgcGVyXG4vLyBzZXR0bGVkIGJ1cnN0IG9mIHJlZnJlc2ggdHJpZ2dlcnMuXG4vL1xuLy8gLSBFYWNoIHRyaWdnZXIgc3RhcnRzIG92ZXIgKHN3aXRjaE1hcCk6IGl0IGNhbmNlbHMgdGhlIHdhaXQgZm9yIHRoZSBvbmVcbi8vICAgYmVmb3JlIGl0IGFuZCB0aGUgcmVxdWVzdCBpbiBmbGlnaHQsIHRoZW4gd2FpdHMgZm9yIHRoZSBzd2VlcCB0byBzZXR0bGUuXG4vLyAgIFNvIGFuIGFuc3dlciB0byBhbiBvbGRlciByZXF1ZXN0IG5ldmVyIGxhbmRzLCBub3QgZXZlbiB3aGlsZSB0aGUgbmV4dFxuLy8gICBsb2FkIHN0aWxsIHdhaXRzLCBhbmQgdGhlIGJhciBzdGF5cyBvbiB1bnRpbCB0aGUgc2V0dGxlZCBsb2FkIGFuc3dlcnMuXG4vLyAtIEVhY2ggbG9hZCBub3RlcyB0aGUgc3RhdGUgdmVyc2lvbiBpdCB3YXMgc2VudCB1bmRlciAoc3RhdGVWZXJzaW9uKSwgYW5kXG4vLyAgIGl0cyBhbnN3ZXIgaXMgZHJvcHBlZCB3aGVuIHRoZSB2ZXJzaW9uIGhhcyBtb3ZlZCBzaW5jZS4gcmVzZXRUb0RlZmF1bHRzKClcbi8vICAgbW92ZXMgdGhlIHZlcnNpb24gYW5kIGFubm91bmNlcyBhIGZ1bGwgY2hhbmdlIHRvZ2V0aGVyLCBzbyB0aGUgbG9hZCBmb3IgdGhlIG5ldyBzdGF0ZSBpcyBhbHJlYWR5IG9uIGl0cyB3YXkuXG4vLyAtIEEgZmFpbGVkIGxvYWQgZW5kcyBvbmx5IGl0c2VsZjogaXRzIG1lc3NhZ2UgY29tZXMgdGhyb3VnaCBhcyB0aGUgYW5zd2VyLFxuLy8gICBhbmQgdGhlIG5leHQgdHJpZ2dlciBsb2FkcyBhZ2Fpbi5cbmV4cG9ydCBmdW5jdGlvbiB0aWxlTG9hZHM8VD4oXG4gIHJlZnJlc2gkOiBPYnNlcnZhYmxlPHVua25vd24+LFxuICBsb2FkOiAoKSA9PiBPYnNlcnZhYmxlPFQ+LFxuICB2ZXJzaW9uOiAoKSA9PiBudW1iZXIsXG4pOiBPYnNlcnZhYmxlPFRpbGVMb2FkUmVzdWx0PFQ+PiB7XG4gIHJldHVybiBtZXJnZShvZigwKSwgcmVmcmVzaCQucGlwZShtYXAoKCkgPT4gVElMRV9SRUZSRVNIX0RFQk9VTkNFX01TKSkpXG4gICAgLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHdhaXQpID0+ICh3YWl0ID8gdGltZXIod2FpdCkgOiBvZigwKSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+IG9uZUxvYWQobG9hZCwgdmVyc2lvbikpLFxuICAgICAgICApKSxcbiAgICApO1xufVxuXG4vLyBPbmUgcmVxdWVzdDogaXRzIGFuc3dlciwgb3IgaXRzIGZhaWx1cmUgYXMgYSBtZXNzYWdlLCBkcm9wcGVkIHdoZW4gdGhlXG4vLyBzdGF0ZSB2ZXJzaW9uIG1vdmVkIHdoaWxlIGl0IHdhcyBvdXQuXG5mdW5jdGlvbiBvbmVMb2FkPFQ+KGxvYWQ6ICgpID0+IE9ic2VydmFibGU8VD4sIHZlcnNpb246ICgpID0+IG51bWJlcik6IE9ic2VydmFibGU8VGlsZUxvYWRSZXN1bHQ8VD4+IHtcbiAgY29uc3Qgc2VudEF0ID0gdmVyc2lvbigpO1xuXG4gIHJldHVybiBsb2FkKClcbiAgICAucGlwZShcbiAgICAgIG1hcCgoZGF0YSk6IFRpbGVMb2FkUmVzdWx0PFQ+ID0+ICh7IGRhdGEsIGVycm9yOiBudWxsIH0pKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiB1bmtub3duKSA9PiBvZjxUaWxlTG9hZFJlc3VsdDxUPj4oe1xuICAgICAgICBkYXRhOiBudWxsLFxuICAgICAgICBlcnJvcjogYXBpRXJyb3JNZXNzYWdlKGVycm9yLCAnRmFpbGVkIHRvIGxvYWQgZGF0YScpLFxuICAgICAgfSkpLFxuICAgICAgZmlsdGVyKCgpID0+IHZlcnNpb24oKSA9PT0gc2VudEF0KSxcbiAgICApO1xufVxuIl19