@wertzui/ngx-restworld-client 4.0.0 → 4.1.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.
- package/esm2020/lib/services/restworld-client.mjs +1 -1
- package/esm2020/lib/views/restworld-list-view/restworld-list-view.component.mjs +1 -1
- package/fesm2015/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/fesm2020/wertzui-ngx-restworld-client.mjs.map +1 -1
- package/lib/services/restworld-client.d.ts +5 -5
- package/lib/views/restworld-list-view/restworld-list-view.component.d.ts +5 -5
- package/package.json +2 -2
|
@@ -211,4 +211,4 @@ export class RESTworldClient {
|
|
|
211
211
|
return combinedHeaders;
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBQ2hILE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFHM0QsTUFBTSxPQUFPLGVBQWU7SUFRMUIsWUFDVSxVQUFxQixFQUNyQixRQUEwQjtRQUQxQixlQUFVLEdBQVYsVUFBVSxDQUFXO1FBQ3JCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBQ2hDLENBQUM7SUFQTCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFPTSxLQUFLLENBQUMsdUJBQXVCO1FBQ2xDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVDLElBQUksY0FBYyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLGlCQUFpQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUM7YUFDaEo7WUFDRCxJQUFJLENBQUMsUUFBUSxD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dCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgRm9ybXNSZXNvdXJjZSwgSGFsQ2xpZW50LCBMaW5rLCBQYWdlZExpc3RSZXNvdXJjZSwgUmVzb3VyY2UsIFRlbXBsYXRlIH0gZnJvbSBcIkB3ZXJ0enVpL25neC1oYWwtY2xpZW50XCI7XHJcbmltcG9ydCB7IExpbmtOYW1lcyB9IGZyb20gXCIuLi9jb25zdGFudHMvbGluay1uYW1lc1wiO1xyXG5pbXBvcnQgeyBQcm9ibGVtRGV0YWlscyB9IGZyb20gXCIuLi9tb2RlbHMvcHJvYmxlbS1kZXRhaWxzXCI7XHJcbmltcG9ydCB7IFJFU1R3b3JsZE9wdGlvbnMgfSBmcm9tIFwiLi4vbW9kZWxzL3Jlc3R3b3JsZC1vcHRpb25zXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgUkVTVHdvcmxkQ2xpZW50IHtcclxuXHJcbiAgcHJpdmF0ZSBfaG9tZVJlc291cmNlPzogUmVzb3VyY2U7XHJcbiAgcHJpdmF0ZSBfZGVmYXVsdEN1cmllPzogc3RyaW5nO1xyXG4gIHB1YmxpYyBnZXQgaGFsQ2xpZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hhbENsaWVudDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfaGFsQ2xpZW50OiBIYWxDbGllbnQsXHJcbiAgICBwcml2YXRlIF9vcHRpb25zOiBSRVNUd29ybGRPcHRpb25zXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpIHtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldEhvbWVGb3JjZWQoKTtcclxuICAgICAgaWYgKFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzOiAke3Jlc3BvbnNlfWApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghcmVzcG9uc2UuYm9keSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhvbWUgcmVzb3VyY2UgZnJvbSAke3RoaXMuX29wdGlvbnMuQmFzZVVybH0gd2l0aCBWZXJzaW9uICR7dGhpcy5fb3B0aW9ucy5WZXJzaW9ufS4gUmVzcG9uc2Ugd2FzIGVtcHR5LmApO1xyXG4gICAgICB0aGlzLl9ob21lUmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnNldERlZmF1bHRDdXJpZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRIb21lRm9yY2VkKCk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodGhpcy5fb3B0aW9ucy5CYXNlVXJsLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldERlZmF1bHRDdXJpZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cmllcyA9IHRoaXMuX2hvbWVSZXNvdXJjZT8uX2xpbmtzPy5jdXJpZXM7XHJcbiAgICBpZiAoIWN1cmllcyB8fCBjdXJpZXMubGVuZ3RoID09PSAwIHx8ICFjdXJpZXNbMF0pXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IHVuZGVmaW5lZDtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5fZGVmYXVsdEN1cmllID0gY3VyaWVzWzBdLm5hbWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdChyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldExpc3QsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuaHJlZlxyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRMaXN0QnlVcmkodXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEJ5VXJpKHVyaTogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IGxpbmsgPSBuZXcgTGluaygpO1xyXG4gICAgbGluay5ocmVmID0gdXJpO1xyXG4gICAgY29uc3QgZmlsbGVkVXJpID0gbGluay5maWxsVGVtcGxhdGUocGFyYW1ldGVycyk7XHJcbiAgICBjb25zdCBkZWZhdWx0SGVhZGVycyA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBjb21iaW5lZEhlYWRlcnMgPSBSRVNUd29ybGRDbGllbnQuY29tYmluZUhlYWRlcnMoaGVhZGVycywgZGVmYXVsdEhlYWRlcnMsIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldChmaWxsZWRVcmksIFBhZ2VkTGlzdFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGFnZXNGcm9tTGlzdChyZWw6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycywgY3VyaWU/OiBzdHJpbmcpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxQYWdlZExpc3RSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbCwgTGlua05hbWVzLmdldExpc3QsIGN1cmllKTtcclxuICAgIGNvbnN0IHVyaSA9IGxpbmsuaHJlZjtcclxuXHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0QWxsUGFnZXNGcm9tTGlzdEJ5VXJpKHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaSh1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpKHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgaWYgKCFyZXNwb25zZS5vayB8fCBQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpIHx8ICFyZXNwb25zZS5ib2R5Py5fZW1iZWRkZWQ/Lml0ZW1zKVxyXG4gICAgICByZXR1cm4gcmVzcG9uc2U7XHJcblxyXG5cclxuICAgIGNvbnN0IGl0ZW1zID0gcmVzcG9uc2UuYm9keS5fZW1iZWRkZWQuaXRlbXM7XHJcbiAgICBsZXQgbGFzdFJlc3BvbnNlID0gcmVzcG9uc2U7XHJcblxyXG4gICAgd2hpbGUgKChsYXN0UmVzcG9uc2U/LmJvZHk/Ll9saW5rcz8ubmV4dD8ubGVuZ3RoID8/IDApID4gMCkge1xyXG4gICAgICAvLyBHZXQgdGhlIG5leHQgcmVzcG9uc2VcclxuICAgICAgY29uc3QgbmV4dExpbmtzID0gbGFzdFJlc3BvbnNlLmJvZHk/Ll9saW5rcy5uZXh0O1xyXG4gICAgICBjb25zdCBuZXh0TGluayA9IG5leHRMaW5rcyA/IG5leHRMaW5rc1swXTogdW5kZWZpbmVkO1xyXG4gICAgICBjb25zdCBuZXh0SHJlZiA9IG5leHRMaW5rPy5ocmVmO1xyXG4gICAgICBpZiAobmV4dEhyZWYpIHtcclxuICAgICAgICBsYXN0UmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaShuZXh0SHJlZiwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgICAgIGlmICghbGFzdFJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMobGFzdFJlc3BvbnNlLmJvZHkpIHx8ICFsYXN0UmVzcG9uc2UuYm9keSlcclxuICAgICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgIC8vIENvbWJpbmUgdGhlIGVtYmVkZGVkIGl0ZW1zXHJcbiAgICAgICAgbGFzdFJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXM/LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNvbWJpbmVkIGV2ZXJ5dGhpbmcsIHNvIHRoZXJlIGlzIGp1c3Qgb25lIGJpZyBwYWdlXHJcbiAgICByZXNwb25zZS5ib2R5LnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgcmVzcG9uc2UuYm9keS5fbGlua3MubmV4dCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlKHJlbE9yVXJpOiBzdHJpbmcsIGlkPzogbnVtYmVyLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGxldCB1cmk7XHJcbiAgICBpZiAocmVsT3JVcmkuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSBVUkksIGFuIElEIGNhbm5vdCBiZSBzdXBwbGllZCB0b28uJyk7XHJcbiAgICAgIGlmIChjdXJpZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgVVJJLCBhIGN1cmllIGNhbm5vdCBiZSBzdXBwbGllZCB0b28uJyk7XHJcblxyXG4gICAgICB1cmkgPSByZWxPclVyaTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoIV8uaXNOdW1iZXIoaWQpKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSByZWwsIGFuIElEIG11c3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG5cclxuICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbE9yVXJpLCBMaW5rTmFtZXMuZ2V0LCBjdXJpZSk7XHJcbiAgICAgIHVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHsgaWQ6IGlkLnRvU3RyaW5nKCkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUkVTVHdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2R9JyBpcyBub3QgYWxsb3dlZCBhcyBsaW5rIG5hbWUgZm9yIHRoZSBzYXZlIGxpbmsuIE9ubHkgJ1BPU1QnIGFuZCAnUFVUJyBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybXMocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8Rm9ybXNSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPltdPiB7XHJcbiAgICBjb25zdCB1cmxzID0gcmVzb3VyY2UuZ2V0Rm9ybUxpbmtIcmVmcygpO1xyXG4gICAgY29uc3QgaGVhZGVyID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBmb3Jtc1Byb21pc2VzID0gdXJscy5tYXAodXJsID0+IHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKSk7XHJcbiAgICBjb25zdCBmb3Jtc0FuZFByb2JsZW1zID0gYXdhaXQgUHJvbWlzZS5hbGwoZm9ybXNQcm9taXNlcyk7XHJcbiAgICByZXR1cm4gZm9ybXNBbmRQcm9ibGVtcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQodGVtcGxhdGU6IFRlbXBsYXRlLCBmb3JtVmFsdWVzOiB7fSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVyaSA9IHRlbXBsYXRlLnRhcmdldCB8fCAnJztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRlbXBsYXRlLm1ldGhvZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGxldCByZXNwb25zZTtcclxuICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgIGNhc2UgJ3B1dCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wdXQodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgZm9ybVZhbHVlcywgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodXJpLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWxldGVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFkZWxldGVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgZGVsZXRlIGxpbmsuYCk7XHJcbiAgICBjb25zdCB1cmkgPSBkZWxldGVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVyaSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbExpbmtzRnJvbUhvbWUoKTogeyBbcmVsOiBzdHJpbmddOiBMaW5rW10gfCB1bmRlZmluZWQ7IH0ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9tZSByZXNvdXJjZSBpcyBub3Qgc2V0LiBDYWxsIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCkgZmlyc3QuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua0Zyb21Ib21lKHJlbDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmsge1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLmdldExpbmtzRnJvbUhvbWUocmVsLCBjdXJpZSk7XHJcblxyXG4gICAgY29uc3QgbGluayA9IG5hbWUgPyBsaW5rcy5maW5kKGwgPT4gbC5uYW1lID09PSBuYW1lKSA6IGxpbmtzWzBdO1xyXG5cclxuICAgIGlmICghbGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7dGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpfScgYW5kIHRoZSBuYW1lICcke25hbWV9Jy5gKTtcclxuXHJcbiAgICByZXR1cm4gbGluaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rc0Zyb21Ib21lKHJlbDogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmtbXSB7XHJcbiAgICBpZiAoIXRoaXMuX2hvbWVSZXNvdXJjZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIb21lIHJlc291cmNlIGlzIG5vdCBzZXQuIENhbGwgZW5zdXJlSG9tZVJlc291cmNlSXNTZXQoKSBmaXJzdC4nKTtcclxuXHJcbiAgICBjb25zdCBmdWxsUmVsID0gdGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpO1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzW2Z1bGxSZWxdO1xyXG4gICAgaWYgKCFsaW5rcyB8fCBsaW5rcy5sZW5ndGggPT09IDApXHJcbiAgICAgIHRocm93IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7ZnVsbFJlbH0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbFJlbChyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gcmVsIGFscmVhZHkgaW5jbHVkZXMgYSBjdXJpZSA9PiBqdXN0IHJldHVybiBpdFxyXG4gICAgaWYgKHJlbC5pbmNsdWRlcygnOicpKVxyXG4gICAgICByZXR1cm4gcmVsO1xyXG5cclxuICAgIC8vIE5vIGN1cmllIGdpdmVuID0+IHVzZSBkZWZhdWx0IGN1cmllLlxyXG4gICAgaWYgKCFjdXJpZSlcclxuICAgICAgY3VyaWUgPSB0aGlzLl9kZWZhdWx0Q3VyaWU7XHJcblxyXG4gICAgLy8gQ29tYmluZSBjdXJpZSBhbmQgcmVsXHJcbiAgICBjb25zdCBmdWxsUmVsID0gYCR7Y3VyaWV9OiR7cmVsfWA7XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxSZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzKG1lZGlhVHlwZT86ICdhcHBsaWNhdGlvbi9oYWwranNvbicgfCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJywgdmVyc2lvbj86IG51bWJlcik6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHttZWRpYVR5cGUgfHwgJ2FwcGxpY2F0aW9uL2hhbCtqc29uJ307IHY9JHt2ZXJzaW9ufWBcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21iaW5lSGVhZGVycyhvcmlnaW5hbEhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBoZWFkZXJzVG9BZGQ6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBvdmVyd3JpdGVFeGlzdGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFoZWFkZXJzVG9BZGQpXHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEhlYWRlcnM7XHJcbiAgICBpZiAoIW9yaWdpbmFsSGVhZGVycylcclxuICAgICAgcmV0dXJuIGhlYWRlcnNUb0FkZDtcclxuXHJcbiAgICBsZXQgY29tYmluZWRIZWFkZXJzID0gb3JpZ2luYWxIZWFkZXJzO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGhlYWRlcnNUb0FkZC5rZXlzKSB7XHJcbiAgICAgIGlmICghY29tYmluZWRIZWFkZXJzLmhhcyhrZXkpIHx8IG92ZXJ3cml0ZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWVzVG9BZGQgPSBoZWFkZXJzVG9BZGQuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlc1RvQWRkKVxyXG4gICAgICAgICAgY29tYmluZWRIZWFkZXJzID0gY29tYmluZWRIZWFkZXJzLnNldChrZXksIGhlYWRlclZhbHVlc1RvQWRkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lZEhlYWRlcnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWNsaWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXN0d29ybGQtY2xpZW50L3NyYy9saWIvc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFnQixNQUFNLHNCQUFzQixDQUFDO0FBQ2pFLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxhQUFhLEVBQWEsSUFBSSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBeUIsTUFBTSx5QkFBeUIsQ0FBQztBQUM3SCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzNELE1BQU0sT0FBTyxlQUFlO0lBUTFCLFlBQ1UsVUFBcUIsRUFDckIsUUFBMEI7UUFEMUIsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFrQjtJQUNoQyxDQUFDO0lBUEwsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBT00sS0FBSyxDQUFDLHVCQUF1QjtRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN2QixNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM1QyxJQUFJLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ2xELE1BQU0sSUFBSSxLQUFLLENBQUMscUNBQXFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxpQkFBaUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLG1CQUFtQixRQUFRLEVBQUUsQ0FBQyxDQUFDO2FBQ2hKO1lBQ0QsSUFBSSxDQUFDLFFBQVEs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Q29udGVudCI6WyJpbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IHsgRm9ybXNSZXNvdXJjZSwgSGFsQ2xpZW50LCBMaW5rLCBQYWdlZExpc3RSZXNvdXJjZSwgUmVzb3VyY2UsIFJlc291cmNlRHRvLCBUZW1wbGF0ZSB9IGZyb20gXCJAd2VydHp1aS9uZ3gtaGFsLWNsaWVudFwiO1xyXG5pbXBvcnQgeyBMaW5rTmFtZXMgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2xpbmstbmFtZXNcIjtcclxuaW1wb3J0IHsgUHJvYmxlbURldGFpbHMgfSBmcm9tIFwiLi4vbW9kZWxzL3Byb2JsZW0tZGV0YWlsc1wiO1xyXG5pbXBvcnQgeyBSRVNUd29ybGRPcHRpb25zIH0gZnJvbSBcIi4uL21vZGVscy9yZXN0d29ybGQtb3B0aW9uc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFJFU1R3b3JsZENsaWVudCB7XHJcblxyXG4gIHByaXZhdGUgX2hvbWVSZXNvdXJjZT86IFJlc291cmNlO1xyXG4gIHByaXZhdGUgX2RlZmF1bHRDdXJpZT86IHN0cmluZztcclxuICBwdWJsaWMgZ2V0IGhhbENsaWVudCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9oYWxDbGllbnQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2hhbENsaWVudDogSGFsQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSBfb3B0aW9uczogUkVTVHdvcmxkT3B0aW9uc1xyXG4gICkgeyB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBlbnN1cmVIb21lUmVzb3VyY2VJc1NldCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICghdGhpcy5faG9tZVJlc291cmNlKSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRIb21lRm9yY2VkKCk7XHJcbiAgICAgIGlmIChQcm9ibGVtRGV0YWlscy5pc1Byb2JsZW1EZXRhaWxzKHJlc3BvbnNlLmJvZHkpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhczogJHtyZXNwb25zZX1gKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXJlc3BvbnNlLmJvZHkpXHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZ2V0IHRoZSBob21lIHJlc291cmNlIGZyb20gJHt0aGlzLl9vcHRpb25zLkJhc2VVcmx9IHdpdGggVmVyc2lvbiAke3RoaXMuX29wdGlvbnMuVmVyc2lvbn0uIFJlc3BvbnNlIHdhcyBlbXB0eS5gKTtcclxuICAgICAgdGhpcy5faG9tZVJlc291cmNlID0gcmVzcG9uc2UuYm9keTtcclxuICAgICAgdGhpcy5zZXREZWZhdWx0Q3VyaWUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0SG9tZUZvcmNlZCgpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL2hhbCtqc29uJywgdGhpcy5fb3B0aW9ucy5WZXJzaW9uKTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZ2V0KHRoaXMuX29wdGlvbnMuQmFzZVVybCwgUmVzb3VyY2UsIFByb2JsZW1EZXRhaWxzLCBoZWFkZXIpO1xyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXREZWZhdWx0Q3VyaWUoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjdXJpZXMgPSB0aGlzLl9ob21lUmVzb3VyY2U/Ll9saW5rcz8uY3VyaWVzO1xyXG4gICAgaWYgKCFjdXJpZXMgfHwgY3VyaWVzLmxlbmd0aCA9PT0gMCB8fCAhY3VyaWVzWzBdKVxyXG4gICAgICB0aGlzLl9kZWZhdWx0Q3VyaWUgPSB1bmRlZmluZWQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuX2RlZmF1bHRDdXJpZSA9IGN1cmllc1swXS5uYW1lO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldExpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmXHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvIGV4dGVuZHMgUmVzb3VyY2VEdG8+KHVyaTogc3RyaW5nLCBwYXJhbWV0ZXJzOiB7fSwgaGVhZGVycz86IEh0dHBIZWFkZXJzKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gbmV3IExpbmsoKTtcclxuICAgIGxpbmsuaHJlZiA9IHVyaTtcclxuICAgIGNvbnN0IGZpbGxlZFVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHBhcmFtZXRlcnMpO1xyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUkVTVHdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQ8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+LCBQcm9ibGVtRGV0YWlscz4oZmlsbGVkVXJpLCBQYWdlZExpc3RSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGNvbWJpbmVkSGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3Q8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ocmVsOiBzdHJpbmcsIHBhcmFtZXRlcnM6IHt9LCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UGFnZWRMaXN0UmVzb3VyY2U8VExpc3REdG8+IHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBsaW5rID0gdGhpcy5nZXRMaW5rRnJvbUhvbWUocmVsLCBMaW5rTmFtZXMuZ2V0TGlzdCwgY3VyaWUpO1xyXG4gICAgY29uc3QgdXJpID0gbGluay5ocmVmO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRBbGxQYWdlc0Zyb21MaXN0QnlVcmk8VExpc3REdG8+KHVyaSwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEFsbFBhZ2VzRnJvbUxpc3RCeVVyaTxUTGlzdER0byBleHRlbmRzIFJlc291cmNlRHRvPih1cmk6IHN0cmluZywgcGFyYW1ldGVyczoge30sIGhlYWRlcnM/OiBIdHRwSGVhZGVycyk6IFByb21pc2U8SHR0cFJlc3BvbnNlPFBhZ2VkTGlzdFJlc291cmNlPFRMaXN0RHRvPiB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldExpc3RCeVVyaTxUTGlzdER0bz4odXJpLCBwYXJhbWV0ZXJzLCBoZWFkZXJzKTtcclxuXHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXMpXHJcbiAgICAgIHJldHVybiByZXNwb25zZTtcclxuXHJcblxyXG4gICAgY29uc3QgaXRlbXMgPSByZXNwb25zZS5ib2R5Ll9lbWJlZGRlZC5pdGVtcztcclxuICAgIGxldCBsYXN0UmVzcG9uc2UgPSByZXNwb25zZTtcclxuXHJcbiAgICB3aGlsZSAoKGxhc3RSZXNwb25zZT8uYm9keT8uX2xpbmtzPy5uZXh0Py5sZW5ndGggPz8gMCkgPiAwKSB7XHJcbiAgICAgIC8vIEdldCB0aGUgbmV4dCByZXNwb25zZVxyXG4gICAgICBjb25zdCBuZXh0TGlua3MgPSBsYXN0UmVzcG9uc2UuYm9keT8uX2xpbmtzLm5leHQ7XHJcbiAgICAgIGNvbnN0IG5leHRMaW5rID0gbmV4dExpbmtzID8gbmV4dExpbmtzWzBdOiB1bmRlZmluZWQ7XHJcbiAgICAgIGNvbnN0IG5leHRIcmVmID0gbmV4dExpbms/LmhyZWY7XHJcbiAgICAgIGlmIChuZXh0SHJlZikge1xyXG4gICAgICAgIGxhc3RSZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0TGlzdEJ5VXJpPFRMaXN0RHRvPihuZXh0SHJlZiwgcGFyYW1ldGVycywgaGVhZGVycyk7XHJcblxyXG4gICAgICAgIGlmICghbGFzdFJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMobGFzdFJlc3BvbnNlLmJvZHkpIHx8ICFsYXN0UmVzcG9uc2UuYm9keSlcclxuICAgICAgICAgIHJldHVybiBsYXN0UmVzcG9uc2U7XHJcblxyXG4gICAgICAgIC8vIENvbWJpbmUgdGhlIGVtYmVkZGVkIGl0ZW1zXHJcbiAgICAgICAgbGFzdFJlc3BvbnNlLmJvZHk/Ll9lbWJlZGRlZD8uaXRlbXM/LmZvckVhY2gociA9PiBpdGVtcy5wdXNoKHIpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFdlIGNvbWJpbmVkIGV2ZXJ5dGhpbmcsIHNvIHRoZXJlIGlzIGp1c3Qgb25lIGJpZyBwYWdlXHJcbiAgICByZXNwb25zZS5ib2R5LnRvdGFsUGFnZXMgPSAxO1xyXG4gICAgcmVzcG9uc2UuYm9keS5fbGlua3MubmV4dCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0U2luZ2xlKHJlbE9yVXJpOiBzdHJpbmcsIGlkPzogbnVtYmVyLCBoZWFkZXJzPzogSHR0cEhlYWRlcnMsIGN1cmllPzogc3RyaW5nKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8UmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGxldCB1cmk7XHJcbiAgICBpZiAocmVsT3JVcmkuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgIGlmIChpZCAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSBVUkksIGFuIElEIGNhbm5vdCBiZSBzdXBwbGllZCB0b28uJyk7XHJcbiAgICAgIGlmIChjdXJpZSlcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1doZW4gc3VwcGx5aW5nIGEgVVJJLCBhIGN1cmllIGNhbm5vdCBiZSBzdXBwbGllZCB0b28uJyk7XHJcblxyXG4gICAgICB1cmkgPSByZWxPclVyaTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoIV8uaXNOdW1iZXIoaWQpKVxyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignV2hlbiBzdXBwbHlpbmcgYSByZWwsIGFuIElEIG11c3QgYmUgc3VwcGxpZWQgdG9vLicpO1xyXG5cclxuICAgICAgY29uc3QgbGluayA9IHRoaXMuZ2V0TGlua0Zyb21Ib21lKHJlbE9yVXJpLCBMaW5rTmFtZXMuZ2V0LCBjdXJpZSk7XHJcbiAgICAgIHVyaSA9IGxpbmsuZmlsbFRlbXBsYXRlKHsgaWQ6IGlkLnRvU3RyaW5nKCkgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdEhlYWRlcnMgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG4gICAgY29uc3QgY29tYmluZWRIZWFkZXJzID0gUkVTVHdvcmxkQ2xpZW50LmNvbWJpbmVIZWFkZXJzKGhlYWRlcnMsIGRlZmF1bHRIZWFkZXJzLCBmYWxzZSk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LmdldCh1cmksIFJlc291cmNlLCBQcm9ibGVtRGV0YWlscywgY29tYmluZWRIZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgc2F2ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTxSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPj4ge1xyXG4gICAgY29uc3Qgc2F2ZUxpbmsgPSByZXNvdXJjZS5maW5kTGluaygnc2F2ZScpO1xyXG4gICAgaWYgKCFzYXZlTGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcmVzb3VyY2UgJHtyZXNvdXJjZX0gZG9lcyBub3QgaGF2ZSBhIHNhdmUgbGluay5gKTtcclxuICAgIGlmICghc2F2ZUxpbmsubmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgc2F2ZSBsaW5rICR7c2F2ZUxpbmt9IGRvZXMgbm90IGhhdmUgYSBzYXZlIG5hbWUuYCk7XHJcblxyXG4gICAgY29uc3QgdXJpID0gc2F2ZUxpbmsuaHJlZjtcclxuICAgIGNvbnN0IG1ldGhvZCA9IHNhdmVMaW5rLm5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9oYWwranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcblxyXG4gICAgbGV0IHJlc3BvbnNlO1xyXG4gICAgc3dpdGNoIChtZXRob2QpIHtcclxuICAgICAgY2FzZSAncHV0JzpcclxuICAgICAgICByZXNwb25zZSA9IGF3YWl0IHRoaXMuaGFsQ2xpZW50LnB1dCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3Bvc3QnOlxyXG4gICAgICAgIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQucG9zdCh1cmksIHJlc291cmNlLCBSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHttZXRob2R9JyBpcyBub3QgYWxsb3dlZCBhcyBsaW5rIG5hbWUgZm9yIHRoZSBzYXZlIGxpbmsuIE9ubHkgJ1BPU1QnIGFuZCAnUFVUJyBhcmUgYWxsb3dlZC5gKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybXMocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTxIdHRwUmVzcG9uc2U8Rm9ybXNSZXNvdXJjZSB8IFByb2JsZW1EZXRhaWxzPltdPiB7XHJcbiAgICBjb25zdCB1cmxzID0gcmVzb3VyY2UuZ2V0Rm9ybUxpbmtIcmVmcygpO1xyXG4gICAgY29uc3QgaGVhZGVyID0gUkVTVHdvcmxkQ2xpZW50LmNyZWF0ZUhlYWRlcnMoJ2FwcGxpY2F0aW9uL3Bycy5oYWwtZm9ybXMranNvbicsIHRoaXMuX29wdGlvbnMuVmVyc2lvbik7XHJcbiAgICBjb25zdCBmb3Jtc1Byb21pc2VzID0gdXJscy5tYXAodXJsID0+IHRoaXMuX2hhbENsaWVudC5nZXQodXJsLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKSk7XHJcbiAgICBjb25zdCBmb3Jtc0FuZFByb2JsZW1zID0gYXdhaXQgUHJvbWlzZS5hbGwoZm9ybXNQcm9taXNlcyk7XHJcbiAgICByZXR1cm4gZm9ybXNBbmRQcm9ibGVtcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzdWJtaXQodGVtcGxhdGU6IFRlbXBsYXRlLCBmb3JtVmFsdWVzOiB7fSk6IFByb21pc2U8SHR0cFJlc3BvbnNlPEZvcm1zUmVzb3VyY2UgfCBQcm9ibGVtRGV0YWlscz4+IHtcclxuICAgIGNvbnN0IHVyaSA9IHRlbXBsYXRlLnRhcmdldCB8fCAnJztcclxuICAgIGNvbnN0IG1ldGhvZCA9IHRlbXBsYXRlLm1ldGhvZD8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IGhlYWRlciA9IFJFU1R3b3JsZENsaWVudC5jcmVhdGVIZWFkZXJzKCdhcHBsaWNhdGlvbi9wcnMuaGFsLWZvcm1zK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGxldCByZXNwb25zZTtcclxuICAgIHN3aXRjaCAobWV0aG9kKSB7XHJcbiAgICAgIGNhc2UgJ3B1dCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wdXQodXJpLCBmb3JtVmFsdWVzLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncG9zdCc6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5wb3N0KHVyaSwgZm9ybVZhbHVlcywgRm9ybXNSZXNvdXJjZSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmhhbENsaWVudC5nZXQodXJpLCBGb3Jtc1Jlc291cmNlLCBQcm9ibGVtRGV0YWlscywgaGVhZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcmVzcG9uc2U7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGRlbGV0ZShyZXNvdXJjZTogUmVzb3VyY2UpOiBQcm9taXNlPEh0dHBSZXNwb25zZTx2b2lkIHwgUHJvYmxlbURldGFpbHM+PiB7XHJcbiAgICBjb25zdCBkZWxldGVMaW5rID0gcmVzb3VyY2UuZmluZExpbmsoJ2RlbGV0ZScpO1xyXG4gICAgaWYgKCFkZWxldGVMaW5rKVxyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSByZXNvdXJjZSAke3Jlc291cmNlfSBkb2VzIG5vdCBoYXZlIGEgZGVsZXRlIGxpbmsuYCk7XHJcbiAgICBjb25zdCB1cmkgPSBkZWxldGVMaW5rLmhyZWY7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBSRVNUd29ybGRDbGllbnQuY3JlYXRlSGVhZGVycygnYXBwbGljYXRpb24vaGFsK2pzb24nLCB0aGlzLl9vcHRpb25zLlZlcnNpb24pO1xyXG5cclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5oYWxDbGllbnQuZGVsZXRlKHVyaSwgUHJvYmxlbURldGFpbHMsIGhlYWRlcik7XHJcblxyXG4gICAgcmV0dXJuIHJlc3BvbnNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEFsbExpbmtzRnJvbUhvbWUoKTogeyBbcmVsOiBzdHJpbmddOiBMaW5rW10gfCB1bmRlZmluZWQ7IH0ge1xyXG4gICAgaWYgKCF0aGlzLl9ob21lUmVzb3VyY2UpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignSG9tZSByZXNvdXJjZSBpcyBub3Qgc2V0LiBDYWxsIGVuc3VyZUhvbWVSZXNvdXJjZUlzU2V0KCkgZmlyc3QuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2hvbWVSZXNvdXJjZS5fbGlua3M7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TGlua0Zyb21Ib21lKHJlbDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmsge1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLmdldExpbmtzRnJvbUhvbWUocmVsLCBjdXJpZSk7XHJcblxyXG4gICAgY29uc3QgbGluayA9IG5hbWUgPyBsaW5rcy5maW5kKGwgPT4gbC5uYW1lID09PSBuYW1lKSA6IGxpbmtzWzBdO1xyXG5cclxuICAgIGlmICghbGluaylcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7dGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpfScgYW5kIHRoZSBuYW1lICcke25hbWV9Jy5gKTtcclxuXHJcbiAgICByZXR1cm4gbGluaztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRMaW5rc0Zyb21Ib21lKHJlbDogc3RyaW5nLCBjdXJpZT86IHN0cmluZyk6IExpbmtbXSB7XHJcbiAgICBpZiAoIXRoaXMuX2hvbWVSZXNvdXJjZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIb21lIHJlc291cmNlIGlzIG5vdCBzZXQuIENhbGwgZW5zdXJlSG9tZVJlc291cmNlSXNTZXQoKSBmaXJzdC4nKTtcclxuXHJcbiAgICBjb25zdCBmdWxsUmVsID0gdGhpcy5nZXRGdWxsUmVsKHJlbCwgY3VyaWUpO1xyXG4gICAgY29uc3QgbGlua3MgPSB0aGlzLl9ob21lUmVzb3VyY2UuX2xpbmtzW2Z1bGxSZWxdO1xyXG4gICAgaWYgKCFsaW5rcyB8fCBsaW5rcy5sZW5ndGggPT09IDApXHJcbiAgICAgIHRocm93IEVycm9yKGBUaGUgaG9tZSByZXNvdXJjZSBkb2VzIG5vdCBoYXZlIGEgbGluayB3aXRoIHRoZSByZWwgJyR7ZnVsbFJlbH0nLmApO1xyXG5cclxuICAgIHJldHVybiBsaW5rcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0RnVsbFJlbChyZWw6IHN0cmluZywgY3VyaWU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gcmVsIGFscmVhZHkgaW5jbHVkZXMgYSBjdXJpZSA9PiBqdXN0IHJldHVybiBpdFxyXG4gICAgaWYgKHJlbC5pbmNsdWRlcygnOicpKVxyXG4gICAgICByZXR1cm4gcmVsO1xyXG5cclxuICAgIC8vIE5vIGN1cmllIGdpdmVuID0+IHVzZSBkZWZhdWx0IGN1cmllLlxyXG4gICAgaWYgKCFjdXJpZSlcclxuICAgICAgY3VyaWUgPSB0aGlzLl9kZWZhdWx0Q3VyaWU7XHJcblxyXG4gICAgLy8gQ29tYmluZSBjdXJpZSBhbmQgcmVsXHJcbiAgICBjb25zdCBmdWxsUmVsID0gYCR7Y3VyaWV9OiR7cmVsfWA7XHJcblxyXG4gICAgcmV0dXJuIGZ1bGxSZWw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjcmVhdGVIZWFkZXJzKG1lZGlhVHlwZT86ICdhcHBsaWNhdGlvbi9oYWwranNvbicgfCAnYXBwbGljYXRpb24vcHJzLmhhbC1mb3Jtcytqc29uJywgdmVyc2lvbj86IG51bWJlcik6IEh0dHBIZWFkZXJzIHtcclxuICAgIGlmICh2ZXJzaW9uKVxyXG4gICAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAnQWNjZXB0JzogYCR7bWVkaWFUeXBlIHx8ICdhcHBsaWNhdGlvbi9oYWwranNvbid9OyB2PSR7dmVyc2lvbn1gLFxyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBgJHttZWRpYVR5cGUgfHwgJ2FwcGxpY2F0aW9uL2hhbCtqc29uJ307IHY9JHt2ZXJzaW9ufWBcclxuICAgICAgfSk7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjb21iaW5lSGVhZGVycyhvcmlnaW5hbEhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBoZWFkZXJzVG9BZGQ6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkLCBvdmVyd3JpdGVFeGlzdGluZzogYm9vbGVhbikge1xyXG4gICAgaWYgKCFoZWFkZXJzVG9BZGQpXHJcbiAgICAgIHJldHVybiBvcmlnaW5hbEhlYWRlcnM7XHJcbiAgICBpZiAoIW9yaWdpbmFsSGVhZGVycylcclxuICAgICAgcmV0dXJuIGhlYWRlcnNUb0FkZDtcclxuXHJcbiAgICBsZXQgY29tYmluZWRIZWFkZXJzID0gb3JpZ2luYWxIZWFkZXJzO1xyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IGluIGhlYWRlcnNUb0FkZC5rZXlzKSB7XHJcbiAgICAgIGlmICghY29tYmluZWRIZWFkZXJzLmhhcyhrZXkpIHx8IG92ZXJ3cml0ZUV4aXN0aW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyVmFsdWVzVG9BZGQgPSBoZWFkZXJzVG9BZGQuZ2V0QWxsKGtleSk7XHJcbiAgICAgICAgaWYgKGhlYWRlclZhbHVlc1RvQWRkKVxyXG4gICAgICAgICAgY29tYmluZWRIZWFkZXJzID0gY29tYmluZWRIZWFkZXJzLnNldChrZXksIGhlYWRlclZhbHVlc1RvQWRkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjb21iaW5lZEhlYWRlcnM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -369,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.5", ngImpor
|
|
|
369
369
|
}], createButtonMenu: [{
|
|
370
370
|
type: Input
|
|
371
371
|
}] } });
|
|
372
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1saXN0LXZpZXcvcmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1saXN0LXZpZXcvcmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQXVCLGVBQWUsRUFBMkQsTUFBTSxhQUFhLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBSTlELE1BQU0sQ0FBTixJQUFZLFVBT1g7QUFQRCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0lBQ25CLDJCQUFhLENBQUE7SUFDYiw2QkFBZSxDQUFBO0lBQ2YsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLFVBQVUsS0FBVixVQUFVLFFBT3JCO0FBYUQsTUFBTSxPQUFPLDBCQUEwQjtJQWdHckMsWUFDVSxRQUFtQyxFQUNuQyxvQkFBeUMsRUFDekMsZUFBK0IsRUFDaEMsZUFBZ0MsRUFDdEIsT0FBZTtRQUp4QixhQUFRLEdBQVIsUUFBUSxDQUEyQjtRQUNuQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUNoQyxvQkFBZSxHQUFm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UztzQkFEbkIsS0FBSztnQkFZQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZWRMaXN0UmVzb3VyY2UsIFJlc291cmNlIH0gZnJvbSAnQHdlcnR6dWkvbmd4LWhhbC1jbGllbnQnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIEZpbHRlck1hdGNoTW9kZSwgRmlsdGVyTWV0YWRhdGEsIExhenlMb2FkRXZlbnQsIE1lbnVJdGVtLCBNZXNzYWdlU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgUkVTVHdvcmxkQ2xpZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudCc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZENsaWVudENvbGxlY3Rpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0d29ybGQtY2xpZW50LWNvbGxlY3Rpb24nO1xyXG5pbXBvcnQgeyBQcm9ibGVtRGV0YWlscyB9IGZyb20gJy4uLy4uL21vZGVscy9wcm9ibGVtLWRldGFpbHMnO1xyXG5pbXBvcnQgeyBBdmF0YXJHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hdmF0YXItZ2VuZXJhdG9yJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmV4cG9ydCBlbnVtIENvbHVtblR5cGUge1xyXG4gIHRleHQgPSAndGV4dCcsXHJcbiAgbnVtZXJpYyA9ICdudW1lcmljJyxcclxuICBib29sZWFuID0gJ2Jvb2xlYW4nLFxyXG4gIGRhdGUgPSAnZGF0ZScsXHJcbiAgYXJyYXkgPSAnYXJyYXknLFxyXG4gIG9iamVjdCA9ICdvYmplY3QnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29sdW1uIHtcclxuICBoZWFkZXI6IHN0cmluZztcclxuICBmaWVsZDogc3RyaW5nO1xyXG4gIHR5cGU6IENvbHVtblR5cGU7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAncnctbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Jlc3R3b3JsZC1saXN0LXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3Jlc3R3b3JsZC1saXN0LXZpZXcuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudCB7XHJcblxyXG4gIHB1YmxpYyBnZXQgY29sdW1ucygpOiBDb2x1bW5bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29sdW1ucztcclxuICB9XHJcbiAgcHJpdmF0ZSBfY29sdW1uczogQ29sdW1uW10gPSBbXTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZWRpdExpbmsodmFsdWU6IHN0cmluZykge1xyXG4gICAgaWYgKHZhbHVlKVxyXG4gICAgICB0aGlzLl9lZGl0TGluayA9IHZhbHVlO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGVkaXRMaW5rKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VkaXRMaW5rO1xyXG4gIH1cclxuICBwcml2YXRlIF9lZGl0TGluayA9ICcvZWRpdCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBhcGlOYW1lKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2FwaU5hbWUgPSB2YWx1ZTtcclxuICAgIHRoaXMubG9hZCh0aGlzLl9sYXN0RXZlbnQpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGFwaU5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9hcGlOYW1lO1xyXG4gIH1cclxuICBwcml2YXRlIF9hcGlOYW1lPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgcmVsKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3JlbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2FkKHRoaXMuX2xhc3RFdmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcmVsKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVsO1xyXG4gIH1cclxuICBwcml2YXRlIF9yZWw/OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzb3J0RmllbGQodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fc29ydEZpZWxkID0gdmFsdWUgPz8gJyc7XHJcbiAgICB0aGlzLl9sYXN0RXZlbnQuc29ydEZpZWxkID0gdmFsdWU7XHJcbiAgICB0aGlzLmxvYWQodGhpcy5fbGFzdEV2ZW50KTtcclxuICB9XHJcbiAgcHVibGljIGdldCBzb3J0RmllbGQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0RmllbGQ7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NvcnRGaWVsZCA9ICcnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc29ydE9yZGVyKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3NvcnRPcmRlciA9IHZhbHVlID8/IDE7XHJcbiAgICB0aGlzLl9sYXN0RXZlbnQuc29ydE9yZGVyID0gdmFsdWU7XHJcbiAgICB0aGlzLmxvYWQodGhpcy5fbGFzdEV2ZW50KTtcclxuICB9XHJcbiAgcHVibGljIGdldCBzb3J0T3JkZXIoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3J0T3JkZXI7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3NvcnRPcmRlciA9IDE7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJvd3NQZXJQYWdlOiBudW1iZXJbXTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3JlYXRlQnV0dG9uTWVudT86IE1lbnVJdGVtW107XHJcblxyXG4gIHB1YmxpYyByZXNvdXJjZT86IFBhZ2VkTGlzdFJlc291cmNlO1xyXG4gIHB1YmxpYyBpc0xvYWRpbmcgPSBmYWxzZTtcclxuICBwcml2YXRlIF90b3RhbFJlY29yZHMgPSAwO1xyXG4gIHByaXZhdGUgX2xhc3RFdmVudDogTGF6eUxvYWRFdmVudDtcclxuICBwdWJsaWMgZ2V0IHZhbHVlKCk6IFJlc291cmNlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2U/Ll9lbWJlZGRlZD8uaXRlbXMgfHwgW107XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgcm93cygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3RFdmVudD8ucm93cyB8fCAwO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHRvdGFsUmVjb3JkcygpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RvdGFsUmVjb3JkcztcclxuICB9XHJcbiAgcHJpdmF0ZSBzZXQgdG90YWxSZWNvcmRzKHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3RvdGFsUmVjb3JkcyA9IHZhbHVlIHx8IDA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IG5ld0hyZWYoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLnJlc291cmNlPy5maW5kTGluaygnbmV3Jyk/LmhyZWY7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBfZGF0ZUZvcm1hdCA9IG5ldyBEYXRlKDMzMzMsIDEwLCAyMilcclxuICAgIC50b0xvY2FsZURhdGVTdHJpbmcoKVxyXG4gICAgLnJlcGxhY2UoXCIyMlwiLCBcImRkXCIpXHJcbiAgICAucmVwbGFjZShcIjExXCIsIFwiTU1cIilcclxuICAgIC5yZXBsYWNlKFwiMzMzM1wiLCBcInlcIilcclxuICAgIC5yZXBsYWNlKFwiMzNcIiwgXCJ5eVwiKTtcclxuXHJcbiAgcHVibGljIGdldCBkYXRlRm9ybWF0KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQuX2RhdGVGb3JtYXQ7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NsaWVudHM6IFJFU1R3b3JsZENsaWVudENvbGxlY3Rpb24sXHJcbiAgICBwcml2YXRlIF9jb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHVibGljIGF2YXRhckdlbmVyYXRvcjogQXZhdGFyR2VuZXJhdG9yLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBfcm91dGVyOiBSb3V0ZXIpIHtcclxuICAgIHRoaXMucm93c1BlclBhZ2UgPSBbMTAsIDI1LCA1MF07XHJcblxyXG4gICAgdGhpcy5fbGFzdEV2ZW50ID0ge1xyXG4gICAgICByb3dzOiB0aGlzLnJvd3NQZXJQYWdlWzBdXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNyZWF0ZU5ldygpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9yb3V0ZXIubmF2aWdhdGUoW3RoaXMuZWRpdExpbmssIHRoaXMuYXBpTmFtZSwgdGhpcy5uZXdIcmVmXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENsaWVudCgpOiBSRVNUd29ybGRDbGllbnQge1xyXG4gICAgaWYgKCF0aGlzLmFwaU5hbWUpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGdldCBhIGNsaWVudCwgYmVjYXVzZSB0aGUgYXBpTmFtZSBpcyBub3Qgc2V0LicpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLl9jbGllbnRzLmdldENsaWVudCh0aGlzLmFwaU5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWQgPSBfLmRlYm91bmNlKHRoaXMubG9hZDIsIDEwMCk7XHJcblxyXG4gIHB1YmxpYyBhc3luYyBsb2FkMihldmVudDogTGF6eUxvYWRFdmVudCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKCF0aGlzLmFwaU5hbWUgfHwgIXRoaXMucmVsKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy5fbGFzdEV2ZW50ID0gZXZlbnQ7XHJcblxyXG4gICAgY29uc3QgcGFyYW1ldGVycyA9IHRoaXMuY3JlYXRlUGFyYW1ldGVyc0Zyb21FdmVudChldmVudCk7XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuZ2V0Q2xpZW50KCkuZ2V0TGlzdCh0aGlzLnJlbCwgcGFyYW1ldGVycyk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ0Vycm9yIHdoaWxlIGxvYWRpbmcgdGhlIHJlc291cmNlcyBmcm9tIHRoZSBBUEkuJywgZGF0YTogcmVzcG9uc2UgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXNwb25zZS5ib2R5KSB7XHJcbiAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucmVzb3VyY2UudG90YWxQYWdlcyAmJiBwYXJhbWV0ZXJzLiR0b3AgPyB0aGlzLnJlc291cmNlLnRvdGFsUGFnZXMgKiBwYXJhbWV0ZXJzLiR0b3AgOiB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzaG93RGVsZXRlQ29uZmlybWF0aW9Nb2RhbChyZXNvdXJjZTogUmVzb3VyY2UpIHtcclxuICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIG1lc3NhZ2U6ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVzb3VyY2U/JyxcclxuICAgICAgaGVhZGVyOiAnQ29uZmlybSBkZWxldGUnLFxyXG4gICAgICBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4gdGhpcy5kZWxldGUocmVzb3VyY2UpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxldGUocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSB8fCAhdGhpcy5yZWwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmdldENsaWVudCgpLmRlbGV0ZShyZXNvdXJjZSk7XHJcblxyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0RlbGV0ZWQnLCBkZXRhaWw6ICdUaGUgcmVzb3VyY2UgaGFzIGJlZW4gZGVsZXRlZC4nIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZCh0aGlzLl9sYXN0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5zKCk6IENvbHVtbltdIHtcclxuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucztcclxuXHJcbiAgICAvLyBHZXQgYWxsIGRpc3RpbmN0IHByb3BlcnRpZXMgZnJvbSBhbGwgcm93c1xyXG4gICAgLy8gV2UgbG9vayBhdCBhbGwgcm93cyB0byBlbGltaW5hdGUgcG9zc2libGUgdW5kZWZpbmVkIHZhbHVlc1xyXG4gICAgY29uc3Qgcm93c1dpdGhQcm9wZXJ0aWVzID0gdGhpcy52YWx1ZVxyXG4gICAgICAubWFwKHJlc291cmNlID0+XHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzb3VyY2UpXHJcbiAgICAgICAgICAuZmlsdGVyKHAgPT5cclxuICAgICAgICAgICAgcFswXSAhPT0gJ19saW5rcycgJiZcclxuICAgICAgICAgICAgcFswXSAhPT0gJ19lbWJlZGRlZCcgJiZcclxuICAgICAgICAgICAgcFswXSAhPT0gJ2lkJyAmJlxyXG4gICAgICAgICAgICBwWzBdICE9PSAndGltZXN0YW1wJykpO1xyXG5cclxuICAgIGNvbnN0IGRpc3RpbmN0UHJvcGVydGllcyA9IHJvd3NXaXRoUHJvcGVydGllc1swXTtcclxuICAgIGZvciAoY29uc3QgcHJvcGVydGllc09mUm93IG9mIHJvd3NXaXRoUHJvcGVydGllcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNPZlJvdykge1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5WzBdO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVsxXTtcclxuICAgICAgICBjb25zdCBhbHJlYWR5Rm91bmRQcm9wZXJ0eVdpdGhTYW1lTmFtZSA9IGRpc3RpbmN0UHJvcGVydGllcy5maW5kKHAgPT4gcFswXSA9PT0gcHJvcGVydHlOYW1lKTtcclxuICAgICAgICBpZiAoIWFscmVhZHlGb3VuZFByb3BlcnR5V2l0aFNhbWVOYW1lKSAvLyBBZGQgbmV3IHByb3BlcnR5XHJcbiAgICAgICAgICBkaXN0aW5jdFByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XHJcbiAgICAgICAgZWxzZSBpZiAoIWFscmVhZHlGb3VuZFByb3BlcnR5V2l0aFNhbWVOYW1lWzFdICYmIHByb3BlcnR5VmFsdWUpIC8vIFVzZSBkZWZpbmVkIHZhbHVlIGluc3RlYWQgb2YgZXhpc3RpbmcgdW5kZWZpbmVkIHZhbHVlXHJcbiAgICAgICAgICBhbHJlYWR5Rm91bmRQcm9wZXJ0eVdpdGhTYW1lTmFtZVsxXSA9IHByb3BlcnR5VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgcm93cyBhcmUgZW50aXRpZXMgd2l0aCBjaGFuZ2UgdHJhY2tpbmdcclxuICAgIGNvbnN0IHdpdGhvdXRDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMgPSBkaXN0aW5jdFByb3BlcnRpZXMuZmlsdGVyKHAgPT5cclxuICAgICAgcFswXSAhPT0gJ2NyZWF0ZWRBdCcgJiZcclxuICAgICAgcFswXSAhPT0gJ2NyZWF0ZWRCeScgJiZcclxuICAgICAgcFswXSAhPT0gJ2xhc3RDaGFuZ2VkQXQnICYmXHJcbiAgICAgIHBbMF0gIT09ICdsYXN0Q2hhbmdlZEJ5Jyk7XHJcbiAgICBjb25zdCBoYXNDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMgPSB3aXRob3V0Q2hhbmdlVHJhY2tpbmdQcm9wZXJ0aWVzLmxlbmd0aCA8IGRpc3RpbmN0UHJvcGVydGllcy5sZW5ndGg7XHJcblxyXG4gICAgLy8gRmlyc3QgdGhlIGlkLCB0aGVuIGFsbCBvdGhlciBwcm9wZXJ0aWVzXHJcbiAgICBjb25zdCBzb3J0ZWRQcm9wZXJ0aWVzOiBbc3RyaW5nLCB1bmtub3duXVtdID0gW1xyXG4gICAgICBbJ2lkJywgMF0sXHJcbiAgICAgIC4uLndpdGhvdXRDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXNcclxuICAgIF07XHJcblxyXG4gICAgLy8gQW5kIGNoYW5nZSB0cmFja2luZyBwcm9wZXJ0aWVzIGF0IHRoZSBlbmRcclxuICAgIGlmIChoYXNDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMpIHtcclxuICAgICAgc29ydGVkUHJvcGVydGllcy5wdXNoKFsnY3JlYXRlZEF0JywgbmV3IERhdGUoKV0pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydjcmVhdGVkQnknLCAnJ10pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydsYXN0Q2hhbmdlZEF0JywgbmV3IERhdGUoKV0pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydsYXN0Q2hhbmdlZEJ5JywgJyddKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb2x1bW5zID0gc29ydGVkUHJvcGVydGllc1xyXG4gICAgICAubWFwKHAgPT4gKHtcclxuICAgICAgICBoZWFkZXI6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LnRvVGl0bGVDYXNlKHBbMF0pLFxyXG4gICAgICAgIGZpZWxkOiBwWzBdLFxyXG4gICAgICAgIHR5cGU6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmdldENvbHVtblR5cGUocFsxXSksXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbHVtblR5cGUodmFsdWU6IHVua25vd24pOiBDb2x1bW5UeXBlIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS50ZXh0O1xyXG5cclxuICAgIGlmIChfLmlzTnVtYmVyKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUubnVtZXJpYztcclxuXHJcbiAgICBpZiAoXy5pc0RhdGUodmFsdWUpKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS5kYXRlO1xyXG5cclxuICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUudGV4dDtcclxuXHJcbiAgICBpZiAoXy5pc0Jvb2xlYW4odmFsdWUpKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS5ib29sZWFuO1xyXG5cclxuICAgIGlmIChfLmlzQXJyYXlMaWtlKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUuYXJyYXk7XHJcblxyXG4gICAgaWYgKF8uaXNPYmplY3RMaWtlKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUub2JqZWN0O1xyXG5cclxuICAgIHJldHVybiBDb2x1bW5UeXBlLnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyB0b1RpdGxlQ2FzZShhbnlDYXNlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBhbnlDYXNlXHJcbiAgICAgIC5yZXBsYWNlKC8oXykrL2csICcgJykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmRlcnNjb3JlIHRvIHdoaXRlc3BhY2VcclxuICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl1bYS16XSkvZywgXCIkMSAkMlwiKSAgICAgICAgICAgLy8gaW5zZXJ0IHNwYWNlIGJlZm9yZSBlYWNoIG5ldyB3b3JkIGlmIHRoZXJlIGlzIG5vbmVcclxuICAgICAgLnJlcGxhY2UoLyhbQS1aXVthLXpdKShbQS1aXSkvZywgXCIkMSAkMlwiKSAgICAgICAgICAgLy8gaW5zZXJ0IHNwYWNlIGFmdGVyIGVhY2ggd29yZCBpZiB0aGVyZSBpcyBub25lXHJcbiAgICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdK1thLXpdKS9nLCBcIiQxICQyXCIpICAgICAgICAgIC8vIGluc2VydCBzcGFjZSBhZnRlciBzaW5nbGUgbGV0dGVyIHdvcmQgaWYgdGhlcmUgaXMgbm9uZVxyXG4gICAgICAucmVwbGFjZSgvKFtBLVpdKykoW0EtWl1bYS16XVthLXpdKS9nLCBcIiQxICQyXCIpICAgICAvLyBpbnNlcnQgc3BhY2UgYmVmb3JlIHNpbmdsZSBsZXR0ZXIgd29yZCBpZiB0aGVyZSBpcyBub25lXHJcbiAgICAgIC5yZXBsYWNlKC8oW2Etel0rKShbQS1aMC05XSspL2csIFwiJDEgJDJcIikgICAgICAgICAgIC8vIGluc2VydCBzcGFjZSBhZnRlciBudW1iZXJzXHJcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChtYXRjaCkgPT4gbWF0Y2gudG9VcHBlckNhc2UoKSk7ICAgICAvLyBjaGFuZ2UgZmlyc3QgbGV0dGVyIHRvIGJlIHVwcGVyIGNhc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUGFyYW1ldGVyc0Zyb21FdmVudChldmVudDogTGF6eUxvYWRFdmVudCkge1xyXG4gICAgY29uc3Qgb0RhdGFQYXJhbWV0ZXJzID0ge1xyXG4gICAgICAkZmlsdGVyOiB0aGlzLmNyZWF0ZUZpbHRlckZyb21FdmVudChldmVudCksXHJcbiAgICAgICRvcmRlcmJ5OiBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudC5jcmVhdGVPcmRlckJ5RnJvbUV2ZW50KGV2ZW50KSxcclxuICAgICAgJHRvcDogUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQuY3JlYXRlVG9wRnJvbUV2ZW50KGV2ZW50KSxcclxuICAgICAgJHNraXA6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmNyZWF0ZVNraXBGcm9tRXZlbnQoZXZlbnQpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBvRGF0YVBhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlU2tpcEZyb21FdmVudChldmVudDogTGF6eUxvYWRFdmVudCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gZXZlbnQuZmlyc3Q7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlVG9wRnJvbUV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBldmVudC5yb3dzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU9yZGVyQnlGcm9tRXZlbnQoZXZlbnQ6IExhenlMb2FkRXZlbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKGV2ZW50LnNvcnRGaWVsZCkge1xyXG4gICAgICBjb25zdCBvcmRlciA9ICFldmVudC5zb3J0T3JkZXIgfHwgZXZlbnQuc29ydE9yZGVyID4gMCA/ICdhc2MnIDogJ2Rlc2MnO1xyXG4gICAgICByZXR1cm4gYCR7ZXZlbnQuc29ydEZpZWxkfSAke29yZGVyfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRnJvbUV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghZXZlbnQuZmlsdGVycylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSBPYmplY3QuZW50cmllcyhldmVudC5maWx0ZXJzKVxyXG4gICAgICAvLyBUaGUgdHlwZSBkZWZpbml0aW9uIGlzIHdyb25nLCBldmVudC5maWx0ZXJzIGhhcyB2YWx1ZXMgb2YgdHlwZSBGaWx0ZXJNZXRhZGF0YVtdIGFuZCBub3QgRmlsdGVyTWV0YWRhdGEuXHJcbiAgICAgIC5tYXAoKFtwcm9wZXJ0eSwgZmlsdGVyXSkgPT4gKHsgcHJvcGVydHk6IHByb3BlcnR5LCBmaWx0ZXJzOiBmaWx0ZXIgYXMgRmlsdGVyTWV0YWRhdGFbXSB9KSlcclxuICAgICAgLm1hcChmID0+IHRoaXMuY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShmLnByb3BlcnR5LCBmLmZpbHRlcnMpKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxyXG4gICAgICAuam9pbignIGFuZCAnKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyID09PSAnJylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gYCgke2ZpbHRlcn0pYDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJzOiBGaWx0ZXJNZXRhZGF0YVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHRoaXMuY3JlYXRlRmlsdGVyRm9yUHJvcGVydHkocHJvcGVydHksIGYpKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxyXG4gICAgICAuam9pbihgICR7ZmlsdGVyc1swXS5vcGVyYXRvcn0gYCk7XHJcblxyXG4gICAgaWYgKGZpbHRlciA9PT0gJycpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgcmV0dXJuIGAoJHtmaWx0ZXJ9KWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlckZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyTWV0YWRhdGEpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFmaWx0ZXIudmFsdWUpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3Qgb0RhdGFPcGVyYXRvciA9IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmNyZWF0ZU9EYXRhT3BlcmF0b3IoXHJcbiAgICAgIGZpbHRlci5tYXRjaE1vZGUsXHJcbiAgICApO1xyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlID0gdGhpcy5jcmVhdGVDb21wYXJpc29uVmFsdWUocHJvcGVydHksIGZpbHRlci52YWx1ZSk7XHJcblxyXG4gICAgc3dpdGNoIChvRGF0YU9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnbm90IGNvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnc3RhcnRzd2l0aCc6XHJcbiAgICAgIGNhc2UgJ2VuZHN3aXRoJzpcclxuICAgICAgICByZXR1cm4gYCR7b0RhdGFPcGVyYXRvcn0oJHtwcm9wZXJ0eX0sICR7Y29tcGFyaXNvblZhbHVlfSlgO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHtwcm9wZXJ0eX0gJHtvRGF0YU9wZXJhdG9yfSAke2NvbXBhcmlzb25WYWx1ZX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlT0RhdGFPcGVyYXRvcihtYXRjaE1vZGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChtYXRjaE1vZGUpIHtcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuU1RBUlRTX1dJVEg6XHJcbiAgICAgICAgcmV0dXJuICdzdGFydHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQ09OVEFJTlM6XHJcbiAgICAgICAgcmV0dXJuICdjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLk5PVF9DT05UQUlOUzpcclxuICAgICAgICByZXR1cm4gJ25vdCBjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkVORFNfV0lUSDpcclxuICAgICAgICByZXR1cm4gJ2VuZHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnZXEnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JTjpcclxuICAgICAgICByZXR1cm4gJ2luJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTEVTU19USEFOOlxyXG4gICAgICAgIHJldHVybiAnbHQnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU5fT1JfRVFVQUxfVE86XHJcbiAgICAgICAgcmV0dXJuICdsZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTjpcclxuICAgICAgICByZXR1cm4gJ2d0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuSVNfTk9UOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5CRUZPUkU6XHJcbiAgICAgICAgcmV0dXJuICdsdCc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkFGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ3QnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0FGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0JFRk9SRTpcclxuICAgICAgICByZXR1cm4gJ2x0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1Q6XHJcbiAgICAgICAgcmV0dXJuICduZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYFVua25vd24gbWF0Y2hNb2RlICR7bWF0Y2hNb2RlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb21wYXJpc29uVmFsdWUocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHJldHVybiAnbnVsbCc7XHJcblxyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSBwcm9wZXJ0eSk7XHJcbiAgICBpZiAoY29sdW1ucy5sZW5ndGggIT09IDEpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGNvbHVtbiBmb3IgdGhlIHByb3BlcnR5ICR7cHJvcGVydHl9IHdoaWNoIGlzIHNwZWNpZmllZCBpbiB0aGUgZmlsdGVyLmApO1xyXG5cclxuICAgIGNvbnN0IHR5cGUgPSBjb2x1bW5zWzBdLnR5cGU7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29sdW1uVHlwZS5ib29sZWFuOlxyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgICBjYXNlIENvbHVtblR5cGUuZGF0ZTpcclxuICAgICAgICByZXR1cm4gYGNhc3QoJHsodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKX0sIEVkbS5EYXRlVGltZU9mZnNldClgO1xyXG4gICAgICBjYXNlIENvbHVtblR5cGUubnVtZXJpYzpcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICAgICAgY2FzZSBDb2x1bW5UeXBlLnRleHQ6XHJcbiAgICAgICAgcmV0dXJuIGAnJHt2YWx1ZX0nYDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29sdW1uIHR5cGUgJyR7dHlwZX0nYCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxwLXRhYmxlIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgICBbbGF6eUxvYWRPbkluaXRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAob25MYXp5TG9hZCk9XCJsb2FkKCRldmVudClcIlxyXG4gICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcclxuICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgIFtzaG93SW5pdGlhbFNvcnRCYWRnZV09XCJ0cnVlXCJcclxuICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgIFtzb3J0RmllbGRdPVwic29ydEZpZWxkXCJcclxuICAgICAgICAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXJcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWQtZmxleCBwLWpjLWJldHdlZW4gcC1haS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbC5oZWFkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIFt0eXBlXT1cImNvbC50eXBlXCIgW2ZpZWxkXT1cImNvbC5maWVsZFwiIGRpc3BsYXk9XCJtZW51XCI+PC9wLWNvbHVtbkZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY3JlYXRlQnV0dG9uTWVudVwiIGNsYXNzPVwicC1idXR0b24tc3VjY2Vzc1wiIGljb249XCJmYXMgZmEtcGx1c1wiIHBCdXR0b24gW3JvdXRlckxpbmtdPVwiW2VkaXRMaW5rLCBhcGlOYW1lLCBuZXdIcmVmXVwiIHBUb29sdGlwPVwiQ3JlYXRlIG5ld1wiIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNwbGl0QnV0dG9uICpuZ0lmPVwiY3JlYXRlQnV0dG9uTWVudVwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzXCIgaWNvbj1cImZhcyBmYS1wbHVzXCIgcFRvb2x0aXA9XCJDcmVhdGUgbmV3XCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIChvbkNsaWNrKT1cImNyZWF0ZU5ldygpXCIgW21vZGVsXT1cImNyZWF0ZUJ1dHRvbk1lbnVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3Atc3BsaXRCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRpdHkgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgW25nU3dpdGNoXT1cImNvbC50eXBlXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1hdmF0YXIgKm5nSWY9XCJjb2wuZmllbGQgPT09ICdjcmVhdGVkQnknIHx8IGNvbC5maWVsZCA9PT0gJ2xhc3RDaGFuZ2VkQnknXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wuZmllbGRdXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgW2ltYWdlXT1cImF2YXRhckdlbmVyYXRvci5nZXRJbWFnZShlbnRpdHlbY29sLmZpZWxkXSlcIiBbbGFiZWxdPVwiYXZhdGFyR2VuZXJhdG9yLmdldExhYmVsKGVudGl0eVtjb2wuZmllbGRdKVwiIFtzdHlsZV09XCJhdmF0YXJHZW5lcmF0b3IuZ2V0U3R5bGUoZW50aXR5W2NvbC5maWVsZF0pXCIgc2hhcGU9XCJjaXJjbGVcIj48L3AtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sLmZpZWxkICE9PSAnY3JlYXRlZEJ5JyAmJiBjb2wuZmllbGQgIT09ICdsYXN0Q2hhbmdlZEJ5J1wiPnt7ZW50aXR5W2NvbC5maWVsZF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1lcmljJ1wiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+e3tlbnRpdHlbY29sLmZpZWxkXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PHAtdHJpU3RhdGVDaGVja2JveCBbKG5nTW9kZWwpXT1cImVudGl0eVtjb2wuZmllbGRdXCIgW3JlYWRvbmx5XT1cInRydWVcIj48L3AtdHJpU3RhdGVDaGVja2JveD48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wuZmllbGRdXCI+e3tlbnRpdHlbY29sLmZpZWxkXSB8IGRhdGU6ZGF0ZUZvcm1hdH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxwICpuZ0Zvcj1cImxldCBhcnJheUVsZW1lbnQgb2YgZW50aXR5W2NvbC5maWVsZF1cIj57e2FycmF5RWxlbWVudCB8IGpzb259fTwvcD48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ29iamVjdCdcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPnt7ZW50aXR5W2NvbC5maWVsZF0gfCBqc29ufX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBwQnV0dG9uIHBUb29sdGlwPVwiVmlldy9FZGl0XCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIFtyb3V0ZXJMaW5rXT1cIltlZGl0TGluaywgYXBpTmFtZSwgZW50aXR5Ll9saW5rcz8uc2VsZlswXS5ocmVmXVwiIGljb249XCJmYXMgZmEtZWRpdFwiPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBUb29sdGlwPVwiRGVsZXRlXCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIHBCdXR0b24gKm5nSWY9XCJlbnRpdHkuX2xpbmtzLmRlbGV0ZVwiIChjbGljayk9XCJzaG93RGVsZXRlQ29uZmlybWF0aW9Nb2RhbChlbnRpdHkpXCIgaWNvbj1cImZhcyBmYS10cmFzaC1hbHRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJteC0yIHAtYnV0dG9uLWRhbmdlclwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI4XCI+Tm8gZW50cmllcyBmb3VuZC48L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9wLXRhYmxlPlxyXG5cclxuPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG48cC1jb25maXJtRGlhbG9nPjwvcC1jb25maXJtRGlhbG9nPlxyXG4iXX0=
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1saXN0LXZpZXcvcmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVzdHdvcmxkLWNsaWVudC9zcmMvbGliL3ZpZXdzL3Jlc3R3b3JsZC1saXN0LXZpZXcvcmVzdHdvcmxkLWxpc3Qtdmlldy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEtBQUssQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUM1QixPQUFPLEVBQXVCLGVBQWUsRUFBMkQsTUFBTSxhQUFhLENBQUM7QUFHNUgsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBSTlELE1BQU0sQ0FBTixJQUFZLFVBT1g7QUFQRCxXQUFZLFVBQVU7SUFDcEIsMkJBQWEsQ0FBQTtJQUNiLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0lBQ25CLDJCQUFhLENBQUE7SUFDYiw2QkFBZSxDQUFBO0lBQ2YsK0JBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVBXLFVBQVUsS0FBVixVQUFVLFFBT3JCO0FBYUQsTUFBTSxPQUFPLDBCQUEwQjtJQWdHckMsWUFDVSxRQUFtQyxFQUNuQyxvQkFBeUMsRUFDekMsZUFBK0IsRUFDaEMsZUFBZ0MsRUFDdEIsT0FBZTtRQUp4QixhQUFRLEdBQVIsUUFBUSxDQUEyQjtRQUNuQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXFCO1FBQ3pDLG9CQUFlLEdBQWYsZUFBZSxDQUFnQjtRQUNoQyxvQkFBZSxHQUFm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UztzQkFEbkIsS0FBSztnQkFZQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLGdCQUFnQjtzQkFEdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUGFnZWRMaXN0UmVzb3VyY2UsIFJlc291cmNlLCBSZXNvdXJjZUR0byB9IGZyb20gJ0B3ZXJ0enVpL25neC1oYWwtY2xpZW50JztcclxuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBGaWx0ZXJNYXRjaE1vZGUsIEZpbHRlck1ldGFkYXRhLCBMYXp5TG9hZEV2ZW50LCBNZW51SXRlbSwgTWVzc2FnZVNlcnZpY2UgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IFJFU1R3b3JsZENsaWVudCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3R3b3JsZC1jbGllbnQnO1xyXG5pbXBvcnQgeyBSRVNUd29ybGRDbGllbnRDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdHdvcmxkLWNsaWVudC1jb2xsZWN0aW9uJztcclxuaW1wb3J0IHsgUHJvYmxlbURldGFpbHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvcHJvYmxlbS1kZXRhaWxzJztcclxuaW1wb3J0IHsgQXZhdGFyR2VuZXJhdG9yIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXZhdGFyLWdlbmVyYXRvcic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcblxyXG5leHBvcnQgZW51bSBDb2x1bW5UeXBlIHtcclxuICB0ZXh0ID0gJ3RleHQnLFxyXG4gIG51bWVyaWMgPSAnbnVtZXJpYycsXHJcbiAgYm9vbGVhbiA9ICdib29sZWFuJyxcclxuICBkYXRlID0gJ2RhdGUnLFxyXG4gIGFycmF5ID0gJ2FycmF5JyxcclxuICBvYmplY3QgPSAnb2JqZWN0J1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbHVtbiB7XHJcbiAgaGVhZGVyOiBzdHJpbmc7XHJcbiAgZmllbGQ6IHN0cmluZztcclxuICB0eXBlOiBDb2x1bW5UeXBlO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3J3LWxpc3QnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXN0d29ybGQtbGlzdC12aWV3LmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQ8VExpc3REdG8gZXh0ZW5kcyBSZXNvdXJjZUR0bz4ge1xyXG5cclxuICBwdWJsaWMgZ2V0IGNvbHVtbnMoKTogQ29sdW1uW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbnM7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NvbHVtbnM6IENvbHVtbltdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IGVkaXRMaW5rKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGlmICh2YWx1ZSlcclxuICAgICAgdGhpcy5fZWRpdExpbmsgPSB2YWx1ZTtcclxuICB9XHJcbiAgcHVibGljIGdldCBlZGl0TGluaygpIHtcclxuICAgIHJldHVybiB0aGlzLl9lZGl0TGluaztcclxuICB9XHJcbiAgcHJpdmF0ZSBfZWRpdExpbmsgPSAnL2VkaXQnO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgYXBpTmFtZSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9hcGlOYW1lID0gdmFsdWU7XHJcbiAgICB0aGlzLmxvYWQodGhpcy5fbGFzdEV2ZW50KTtcclxuICB9XHJcbiAgcHVibGljIGdldCBhcGlOYW1lKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fYXBpTmFtZTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYXBpTmFtZT86IHN0cmluZztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHJlbCh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9yZWwgPSB2YWx1ZTtcclxuICAgIHRoaXMubG9hZCh0aGlzLl9sYXN0RXZlbnQpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHJlbCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JlbDtcclxuICB9XHJcbiAgcHJpdmF0ZSBfcmVsPzogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc29ydEZpZWxkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3NvcnRGaWVsZCA9IHZhbHVlID8/ICcnO1xyXG4gICAgdGhpcy5fbGFzdEV2ZW50LnNvcnRGaWVsZCA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2FkKHRoaXMuX2xhc3RFdmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc29ydEZpZWxkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydEZpZWxkO1xyXG4gIH1cclxuICBwcml2YXRlIF9zb3J0RmllbGQgPSAnJztcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNvcnRPcmRlcih2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLl9zb3J0T3JkZXIgPSB2YWx1ZSA/PyAxO1xyXG4gICAgdGhpcy5fbGFzdEV2ZW50LnNvcnRPcmRlciA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2FkKHRoaXMuX2xhc3RFdmVudCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc29ydE9yZGVyKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fc29ydE9yZGVyO1xyXG4gIH1cclxuICBwcml2YXRlIF9zb3J0T3JkZXIgPSAxO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyByb3dzUGVyUGFnZTogbnVtYmVyW107XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGNyZWF0ZUJ1dHRvbk1lbnU/OiBNZW51SXRlbVtdO1xyXG5cclxuICBwdWJsaWMgcmVzb3VyY2U/OiBQYWdlZExpc3RSZXNvdXJjZTxUTGlzdER0bz47XHJcbiAgcHVibGljIGlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3RvdGFsUmVjb3JkcyA9IDA7XHJcbiAgcHJpdmF0ZSBfbGFzdEV2ZW50OiBMYXp5TG9hZEV2ZW50O1xyXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogUmVzb3VyY2VbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZT8uX2VtYmVkZGVkPy5pdGVtcyB8fCBbXTtcclxuICB9XHJcbiAgcHVibGljIGdldCByb3dzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFzdEV2ZW50Py5yb3dzIHx8IDA7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgdG90YWxSZWNvcmRzKCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gdGhpcy5fdG90YWxSZWNvcmRzO1xyXG4gIH1cclxuICBwcml2YXRlIHNldCB0b3RhbFJlY29yZHModmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCkge1xyXG4gICAgdGhpcy5fdG90YWxSZWNvcmRzID0gdmFsdWUgfHwgMDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgbmV3SHJlZigpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2U/LmZpbmRMaW5rKCduZXcnKT8uaHJlZjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIF9kYXRlRm9ybWF0ID0gbmV3IERhdGUoMzMzMywgMTAsIDIyKVxyXG4gICAgLnRvTG9jYWxlRGF0ZVN0cmluZygpXHJcbiAgICAucmVwbGFjZShcIjIyXCIsIFwiZGRcIilcclxuICAgIC5yZXBsYWNlKFwiMTFcIiwgXCJNTVwiKVxyXG4gICAgLnJlcGxhY2UoXCIzMzMzXCIsIFwieVwiKVxyXG4gICAgLnJlcGxhY2UoXCIzM1wiLCBcInl5XCIpO1xyXG5cclxuICBwdWJsaWMgZ2V0IGRhdGVGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudC5fZGF0ZUZvcm1hdDtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfY2xpZW50czogUkVTVHdvcmxkQ2xpZW50Q29sbGVjdGlvbixcclxuICAgIHByaXZhdGUgX2NvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9tZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgYXZhdGFyR2VuZXJhdG9yOiBBdmF0YXJHZW5lcmF0b3IsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9yb3V0ZXI6IFJvdXRlcikge1xyXG4gICAgdGhpcy5yb3dzUGVyUGFnZSA9IFsxMCwgMjUsIDUwXTtcclxuXHJcbiAgICB0aGlzLl9sYXN0RXZlbnQgPSB7XHJcbiAgICAgIHJvd3M6IHRoaXMucm93c1BlclBhZ2VbMF1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY3JlYXRlTmV3KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbdGhpcy5lZGl0TGluaywgdGhpcy5hcGlOYW1lLCB0aGlzLm5ld0hyZWZdKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Q2xpZW50KCk6IFJFU1R3b3JsZENsaWVudCB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSlcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZ2V0IGEgY2xpZW50LCBiZWNhdXNlIHRoZSBhcGlOYW1lIGlzIG5vdCBzZXQuJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2NsaWVudHMuZ2V0Q2xpZW50KHRoaXMuYXBpTmFtZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZCA9IF8uZGVib3VuY2UodGhpcy5sb2FkMiwgMTAwKTtcclxuXHJcbiAgcHVibGljIGFzeW5jIGxvYWQyKGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSB8fCAhdGhpcy5yZWwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLl9sYXN0RXZlbnQgPSBldmVudDtcclxuXHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gdGhpcy5jcmVhdGVQYXJhbWV0ZXJzRnJvbUV2ZW50KGV2ZW50KTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5nZXRDbGllbnQoKS5nZXRMaXN0PFRMaXN0RHRvPih0aGlzLnJlbCwgcGFyYW1ldGVycyk7XHJcbiAgICBpZiAoIXJlc3BvbnNlLm9rIHx8IFByb2JsZW1EZXRhaWxzLmlzUHJvYmxlbURldGFpbHMocmVzcG9uc2UuYm9keSkgfHwgIXJlc3BvbnNlLmJvZHkpIHtcclxuICAgICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6ICdFcnJvcicsIGRldGFpbDogJ0Vycm9yIHdoaWxlIGxvYWRpbmcgdGhlIHJlc291cmNlcyBmcm9tIHRoZSBBUEkuJywgZGF0YTogcmVzcG9uc2UgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChyZXNwb25zZS5ib2R5KSB7XHJcbiAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNwb25zZS5ib2R5O1xyXG4gICAgICB0aGlzLnRvdGFsUmVjb3JkcyA9IHRoaXMucmVzb3VyY2UudG90YWxQYWdlcyAmJiBwYXJhbWV0ZXJzLiR0b3AgPyB0aGlzLnJlc291cmNlLnRvdGFsUGFnZXMgKiBwYXJhbWV0ZXJzLiR0b3AgOiB1bmRlZmluZWQ7XHJcbiAgICAgIHRoaXMuX2NvbHVtbnMgPSB0aGlzLmNyZWF0ZUNvbHVtbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBzaG93RGVsZXRlQ29uZmlybWF0aW9Nb2RhbChyZXNvdXJjZTogUmVzb3VyY2UpIHtcclxuICAgIHRoaXMuX2NvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgIG1lc3NhZ2U6ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVzb3VyY2U/JyxcclxuICAgICAgaGVhZGVyOiAnQ29uZmlybSBkZWxldGUnLFxyXG4gICAgICBpY29uOiAnZmFyIGZhLXRyYXNoLWFsdCcsXHJcbiAgICAgIGFjY2VwdDogKCkgPT4gdGhpcy5kZWxldGUocmVzb3VyY2UpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWxldGUocmVzb3VyY2U6IFJlc291cmNlKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoIXRoaXMuYXBpTmFtZSB8fCAhdGhpcy5yZWwpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmdldENsaWVudCgpLmRlbGV0ZShyZXNvdXJjZSk7XHJcblxyXG4gICAgdGhpcy5fbWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdzdWNjZXNzJywgc3VtbWFyeTogJ0RlbGV0ZWQnLCBkZXRhaWw6ICdUaGUgcmVzb3VyY2UgaGFzIGJlZW4gZGVsZXRlZC4nIH0pO1xyXG5cclxuICAgIHRoaXMubG9hZCh0aGlzLl9sYXN0RXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb2x1bW5zKCk6IENvbHVtbltdIHtcclxuICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCA9PT0gMClcclxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucztcclxuXHJcbiAgICAvLyBHZXQgYWxsIGRpc3RpbmN0IHByb3BlcnRpZXMgZnJvbSBhbGwgcm93c1xyXG4gICAgLy8gV2UgbG9vayBhdCBhbGwgcm93cyB0byBlbGltaW5hdGUgcG9zc2libGUgdW5kZWZpbmVkIHZhbHVlc1xyXG4gICAgY29uc3Qgcm93c1dpdGhQcm9wZXJ0aWVzID0gdGhpcy52YWx1ZVxyXG4gICAgICAubWFwKHJlc291cmNlID0+XHJcbiAgICAgICAgT2JqZWN0LmVudHJpZXMocmVzb3VyY2UpXHJcbiAgICAgICAgICAuZmlsdGVyKHAgPT5cclxuICAgICAgICAgICAgcFswXSAhPT0gJ19saW5rcycgJiZcclxuICAgICAgICAgICAgcFswXSAhPT0gJ19lbWJlZGRlZCcgJiZcclxuICAgICAgICAgICAgcFswXSAhPT0gJ2lkJyAmJlxyXG4gICAgICAgICAgICBwWzBdICE9PSAndGltZXN0YW1wJykpO1xyXG5cclxuICAgIGNvbnN0IGRpc3RpbmN0UHJvcGVydGllcyA9IHJvd3NXaXRoUHJvcGVydGllc1swXTtcclxuICAgIGZvciAoY29uc3QgcHJvcGVydGllc09mUm93IG9mIHJvd3NXaXRoUHJvcGVydGllcykge1xyXG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IG9mIHByb3BlcnRpZXNPZlJvdykge1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5TmFtZSA9IHByb3BlcnR5WzBdO1xyXG4gICAgICAgIGNvbnN0IHByb3BlcnR5VmFsdWUgPSBwcm9wZXJ0eVsxXTtcclxuICAgICAgICBjb25zdCBhbHJlYWR5Rm91bmRQcm9wZXJ0eVdpdGhTYW1lTmFtZSA9IGRpc3RpbmN0UHJvcGVydGllcy5maW5kKHAgPT4gcFswXSA9PT0gcHJvcGVydHlOYW1lKTtcclxuICAgICAgICBpZiAoIWFscmVhZHlGb3VuZFByb3BlcnR5V2l0aFNhbWVOYW1lKSAvLyBBZGQgbmV3IHByb3BlcnR5XHJcbiAgICAgICAgICBkaXN0aW5jdFByb3BlcnRpZXMucHVzaChwcm9wZXJ0eSk7XHJcbiAgICAgICAgZWxzZSBpZiAoIWFscmVhZHlGb3VuZFByb3BlcnR5V2l0aFNhbWVOYW1lWzFdICYmIHByb3BlcnR5VmFsdWUpIC8vIFVzZSBkZWZpbmVkIHZhbHVlIGluc3RlYWQgb2YgZXhpc3RpbmcgdW5kZWZpbmVkIHZhbHVlXHJcbiAgICAgICAgICBhbHJlYWR5Rm91bmRQcm9wZXJ0eVdpdGhTYW1lTmFtZVsxXSA9IHByb3BlcnR5VmFsdWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiB0aGUgcm93cyBhcmUgZW50aXRpZXMgd2l0aCBjaGFuZ2UgdHJhY2tpbmdcclxuICAgIGNvbnN0IHdpdGhvdXRDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMgPSBkaXN0aW5jdFByb3BlcnRpZXMuZmlsdGVyKHAgPT5cclxuICAgICAgcFswXSAhPT0gJ2NyZWF0ZWRBdCcgJiZcclxuICAgICAgcFswXSAhPT0gJ2NyZWF0ZWRCeScgJiZcclxuICAgICAgcFswXSAhPT0gJ2xhc3RDaGFuZ2VkQXQnICYmXHJcbiAgICAgIHBbMF0gIT09ICdsYXN0Q2hhbmdlZEJ5Jyk7XHJcbiAgICBjb25zdCBoYXNDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMgPSB3aXRob3V0Q2hhbmdlVHJhY2tpbmdQcm9wZXJ0aWVzLmxlbmd0aCA8IGRpc3RpbmN0UHJvcGVydGllcy5sZW5ndGg7XHJcblxyXG4gICAgLy8gRmlyc3QgdGhlIGlkLCB0aGVuIGFsbCBvdGhlciBwcm9wZXJ0aWVzXHJcbiAgICBjb25zdCBzb3J0ZWRQcm9wZXJ0aWVzOiBbc3RyaW5nLCB1bmtub3duXVtdID0gW1xyXG4gICAgICBbJ2lkJywgMF0sXHJcbiAgICAgIC4uLndpdGhvdXRDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXNcclxuICAgIF07XHJcblxyXG4gICAgLy8gQW5kIGNoYW5nZSB0cmFja2luZyBwcm9wZXJ0aWVzIGF0IHRoZSBlbmRcclxuICAgIGlmIChoYXNDaGFuZ2VUcmFja2luZ1Byb3BlcnRpZXMpIHtcclxuICAgICAgc29ydGVkUHJvcGVydGllcy5wdXNoKFsnY3JlYXRlZEF0JywgbmV3IERhdGUoKV0pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydjcmVhdGVkQnknLCAnJ10pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydsYXN0Q2hhbmdlZEF0JywgbmV3IERhdGUoKV0pO1xyXG4gICAgICBzb3J0ZWRQcm9wZXJ0aWVzLnB1c2goWydsYXN0Q2hhbmdlZEJ5JywgJyddKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb2x1bW5zID0gc29ydGVkUHJvcGVydGllc1xyXG4gICAgICAubWFwKHAgPT4gKHtcclxuICAgICAgICBoZWFkZXI6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LnRvVGl0bGVDYXNlKHBbMF0pLFxyXG4gICAgICAgIGZpZWxkOiBwWzBdLFxyXG4gICAgICAgIHR5cGU6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmdldENvbHVtblR5cGUocFsxXSksXHJcbiAgICAgIH0pKTtcclxuXHJcbiAgICByZXR1cm4gY29sdW1ucztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIGdldENvbHVtblR5cGUodmFsdWU6IHVua25vd24pOiBDb2x1bW5UeXBlIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS50ZXh0O1xyXG5cclxuICAgIGlmIChfLmlzTnVtYmVyKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUubnVtZXJpYztcclxuXHJcbiAgICBpZiAoXy5pc0RhdGUodmFsdWUpKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS5kYXRlO1xyXG5cclxuICAgIGlmIChfLmlzU3RyaW5nKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUudGV4dDtcclxuXHJcbiAgICBpZiAoXy5pc0Jvb2xlYW4odmFsdWUpKVxyXG4gICAgICByZXR1cm4gQ29sdW1uVHlwZS5ib29sZWFuO1xyXG5cclxuICAgIGlmIChfLmlzQXJyYXlMaWtlKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUuYXJyYXk7XHJcblxyXG4gICAgaWYgKF8uaXNPYmplY3RMaWtlKHZhbHVlKSlcclxuICAgICAgcmV0dXJuIENvbHVtblR5cGUub2JqZWN0O1xyXG5cclxuICAgIHJldHVybiBDb2x1bW5UeXBlLnRleHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyB0b1RpdGxlQ2FzZShhbnlDYXNlOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBhbnlDYXNlXHJcbiAgICAgIC5yZXBsYWNlKC8oXykrL2csICcgJykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmRlcnNjb3JlIHRvIHdoaXRlc3BhY2VcclxuICAgICAgLnJlcGxhY2UoLyhbYS16XSkoW0EtWl1bYS16XSkvZywgXCIkMSAkMlwiKSAgICAgICAgICAgLy8gaW5zZXJ0IHNwYWNlIGJlZm9yZSBlYWNoIG5ldyB3b3JkIGlmIHRoZXJlIGlzIG5vbmVcclxuICAgICAgLnJlcGxhY2UoLyhbQS1aXVthLXpdKShbQS1aXSkvZywgXCIkMSAkMlwiKSAgICAgICAgICAgLy8gaW5zZXJ0IHNwYWNlIGFmdGVyIGVhY2ggd29yZCBpZiB0aGVyZSBpcyBub25lXHJcbiAgICAgIC5yZXBsYWNlKC8oW2Etel0pKFtBLVpdK1thLXpdKS9nLCBcIiQxICQyXCIpICAgICAgICAgIC8vIGluc2VydCBzcGFjZSBhZnRlciBzaW5nbGUgbGV0dGVyIHdvcmQgaWYgdGhlcmUgaXMgbm9uZVxyXG4gICAgICAucmVwbGFjZSgvKFtBLVpdKykoW0EtWl1bYS16XVthLXpdKS9nLCBcIiQxICQyXCIpICAgICAvLyBpbnNlcnQgc3BhY2UgYmVmb3JlIHNpbmdsZSBsZXR0ZXIgd29yZCBpZiB0aGVyZSBpcyBub25lXHJcbiAgICAgIC5yZXBsYWNlKC8oW2Etel0rKShbQS1aMC05XSspL2csIFwiJDEgJDJcIikgICAgICAgICAgIC8vIGluc2VydCBzcGFjZSBhZnRlciBudW1iZXJzXHJcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChtYXRjaCkgPT4gbWF0Y2gudG9VcHBlckNhc2UoKSk7ICAgICAvLyBjaGFuZ2UgZmlyc3QgbGV0dGVyIHRvIGJlIHVwcGVyIGNhc2VcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUGFyYW1ldGVyc0Zyb21FdmVudChldmVudDogTGF6eUxvYWRFdmVudCkge1xyXG4gICAgY29uc3Qgb0RhdGFQYXJhbWV0ZXJzID0ge1xyXG4gICAgICAkZmlsdGVyOiB0aGlzLmNyZWF0ZUZpbHRlckZyb21FdmVudChldmVudCksXHJcbiAgICAgICRvcmRlcmJ5OiBSRVNUd29ybGRMaXN0Vmlld0NvbXBvbmVudC5jcmVhdGVPcmRlckJ5RnJvbUV2ZW50KGV2ZW50KSxcclxuICAgICAgJHRvcDogUkVTVHdvcmxkTGlzdFZpZXdDb21wb25lbnQuY3JlYXRlVG9wRnJvbUV2ZW50KGV2ZW50KSxcclxuICAgICAgJHNraXA6IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmNyZWF0ZVNraXBGcm9tRXZlbnQoZXZlbnQpXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBvRGF0YVBhcmFtZXRlcnM7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlU2tpcEZyb21FdmVudChldmVudDogTGF6eUxvYWRFdmVudCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gZXZlbnQuZmlyc3Q7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY3JlYXRlVG9wRnJvbUV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiBldmVudC5yb3dzO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNyZWF0ZU9yZGVyQnlGcm9tRXZlbnQoZXZlbnQ6IExhenlMb2FkRXZlbnQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKGV2ZW50LnNvcnRGaWVsZCkge1xyXG4gICAgICBjb25zdCBvcmRlciA9ICFldmVudC5zb3J0T3JkZXIgfHwgZXZlbnQuc29ydE9yZGVyID4gMCA/ICdhc2MnIDogJ2Rlc2MnO1xyXG4gICAgICByZXR1cm4gYCR7ZXZlbnQuc29ydEZpZWxkfSAke29yZGVyfWA7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRnJvbUV2ZW50KGV2ZW50OiBMYXp5TG9hZEV2ZW50KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGlmICghZXZlbnQuZmlsdGVycylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICBjb25zdCBmaWx0ZXIgPSBPYmplY3QuZW50cmllcyhldmVudC5maWx0ZXJzKVxyXG4gICAgICAvLyBUaGUgdHlwZSBkZWZpbml0aW9uIGlzIHdyb25nLCBldmVudC5maWx0ZXJzIGhhcyB2YWx1ZXMgb2YgdHlwZSBGaWx0ZXJNZXRhZGF0YVtdIGFuZCBub3QgRmlsdGVyTWV0YWRhdGEuXHJcbiAgICAgIC5tYXAoKFtwcm9wZXJ0eSwgZmlsdGVyXSkgPT4gKHsgcHJvcGVydHk6IHByb3BlcnR5LCBmaWx0ZXJzOiBmaWx0ZXIgYXMgRmlsdGVyTWV0YWRhdGFbXSB9KSlcclxuICAgICAgLm1hcChmID0+IHRoaXMuY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShmLnByb3BlcnR5LCBmLmZpbHRlcnMpKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxyXG4gICAgICAuam9pbignIGFuZCAnKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyID09PSAnJylcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgICByZXR1cm4gYCgke2ZpbHRlcn0pYDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlRmlsdGVyRm9yUHJvcGVydHlBcnJheShwcm9wZXJ0eTogc3RyaW5nLCBmaWx0ZXJzOiBGaWx0ZXJNZXRhZGF0YVtdKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGZpbHRlciA9IGZpbHRlcnNcclxuICAgICAgLm1hcChmID0+IHRoaXMuY3JlYXRlRmlsdGVyRm9yUHJvcGVydHkocHJvcGVydHksIGYpKVxyXG4gICAgICAuZmlsdGVyKGYgPT4gISFmKVxyXG4gICAgICAuam9pbihgICR7ZmlsdGVyc1swXS5vcGVyYXRvcn0gYCk7XHJcblxyXG4gICAgaWYgKGZpbHRlciA9PT0gJycpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgcmV0dXJuIGAoJHtmaWx0ZXJ9KWA7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNyZWF0ZUZpbHRlckZvclByb3BlcnR5KHByb3BlcnR5OiBzdHJpbmcsIGZpbHRlcjogRmlsdGVyTWV0YWRhdGEpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgaWYgKCFmaWx0ZXIudmFsdWUpXHJcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcblxyXG4gICAgY29uc3Qgb0RhdGFPcGVyYXRvciA9IFJFU1R3b3JsZExpc3RWaWV3Q29tcG9uZW50LmNyZWF0ZU9EYXRhT3BlcmF0b3IoXHJcbiAgICAgIGZpbHRlci5tYXRjaE1vZGUsXHJcbiAgICApO1xyXG4gICAgY29uc3QgY29tcGFyaXNvblZhbHVlID0gdGhpcy5jcmVhdGVDb21wYXJpc29uVmFsdWUocHJvcGVydHksIGZpbHRlci52YWx1ZSk7XHJcblxyXG4gICAgc3dpdGNoIChvRGF0YU9wZXJhdG9yKSB7XHJcbiAgICAgIGNhc2UgJ2NvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnbm90IGNvbnRhaW5zJzpcclxuICAgICAgY2FzZSAnc3RhcnRzd2l0aCc6XHJcbiAgICAgIGNhc2UgJ2VuZHN3aXRoJzpcclxuICAgICAgICByZXR1cm4gYCR7b0RhdGFPcGVyYXRvcn0oJHtwcm9wZXJ0eX0sICR7Y29tcGFyaXNvblZhbHVlfSlgO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBgJHtwcm9wZXJ0eX0gJHtvRGF0YU9wZXJhdG9yfSAke2NvbXBhcmlzb25WYWx1ZX1gO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlT0RhdGFPcGVyYXRvcihtYXRjaE1vZGU/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChtYXRjaE1vZGUpIHtcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuU1RBUlRTX1dJVEg6XHJcbiAgICAgICAgcmV0dXJuICdzdGFydHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuQ09OVEFJTlM6XHJcbiAgICAgICAgcmV0dXJuICdjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLk5PVF9DT05UQUlOUzpcclxuICAgICAgICByZXR1cm4gJ25vdCBjb250YWlucyc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkVORFNfV0lUSDpcclxuICAgICAgICByZXR1cm4gJ2VuZHN3aXRoJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnZXEnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5OT1RfRVFVQUxTOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JTjpcclxuICAgICAgICByZXR1cm4gJ2luJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuTEVTU19USEFOOlxyXG4gICAgICAgIHJldHVybiAnbHQnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5MRVNTX1RIQU5fT1JfRVFVQUxfVE86XHJcbiAgICAgICAgcmV0dXJuICdsZSc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkdSRUFURVJfVEhBTjpcclxuICAgICAgICByZXR1cm4gJ2d0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuSVNfTk9UOlxyXG4gICAgICAgIHJldHVybiAnbmUnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5CRUZPUkU6XHJcbiAgICAgICAgcmV0dXJuICdsdCc7XHJcbiAgICAgIGNhc2UgRmlsdGVyTWF0Y2hNb2RlLkFGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ3QnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0FGVEVSOlxyXG4gICAgICAgIHJldHVybiAnZ2UnO1xyXG4gICAgICBjYXNlIEZpbHRlck1hdGNoTW9kZS5EQVRFX0JFRk9SRTpcclxuICAgICAgICByZXR1cm4gJ2x0JztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JUzpcclxuICAgICAgICByZXR1cm4gJ2VxJztcclxuICAgICAgY2FzZSBGaWx0ZXJNYXRjaE1vZGUuREFURV9JU19OT1Q6XHJcbiAgICAgICAgcmV0dXJuICduZSc7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoYFVua25vd24gbWF0Y2hNb2RlICR7bWF0Y2hNb2RlfWApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVDb21wYXJpc29uVmFsdWUocHJvcGVydHk6IHN0cmluZywgdmFsdWU6IHVua25vd24pOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQpXHJcbiAgICAgIHJldHVybiAnbnVsbCc7XHJcblxyXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiBjLmZpZWxkID09PSBwcm9wZXJ0eSk7XHJcbiAgICBpZiAoY29sdW1ucy5sZW5ndGggIT09IDEpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGhlIGNvbHVtbiBmb3IgdGhlIHByb3BlcnR5ICR7cHJvcGVydHl9IHdoaWNoIGlzIHNwZWNpZmllZCBpbiB0aGUgZmlsdGVyLmApO1xyXG5cclxuICAgIGNvbnN0IHR5cGUgPSBjb2x1bW5zWzBdLnR5cGU7XHJcblxyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgQ29sdW1uVHlwZS5ib29sZWFuOlxyXG4gICAgICAgIHJldHVybiBgJHt2YWx1ZX1gO1xyXG4gICAgICBjYXNlIENvbHVtblR5cGUuZGF0ZTpcclxuICAgICAgICByZXR1cm4gYGNhc3QoJHsodmFsdWUgYXMgRGF0ZSkudG9JU09TdHJpbmcoKX0sIEVkbS5EYXRlVGltZU9mZnNldClgO1xyXG4gICAgICBjYXNlIENvbHVtblR5cGUubnVtZXJpYzpcclxuICAgICAgICByZXR1cm4gYCR7dmFsdWV9YDtcclxuICAgICAgY2FzZSBDb2x1bW5UeXBlLnRleHQ6XHJcbiAgICAgICAgcmV0dXJuIGAnJHt2YWx1ZX0nYDtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gY29sdW1uIHR5cGUgJyR7dHlwZX0nYCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxwLXRhYmxlIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgIFtsYXp5XT1cInRydWVcIlxyXG4gICAgICAgICBbbGF6eUxvYWRPbkluaXRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAob25MYXp5TG9hZCk9XCJsb2FkKCRldmVudClcIlxyXG4gICAgICAgICByZXNwb25zaXZlTGF5b3V0PVwic2Nyb2xsXCJcclxuICAgICAgICAgW3BhZ2luYXRvcl09XCJ0cnVlXCJcclxuICAgICAgICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICAgICAgIFtyb3dzUGVyUGFnZU9wdGlvbnNdPVwicm93c1BlclBhZ2VcIlxyXG4gICAgICAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICAgICAgIFtsb2FkaW5nXT1cImlzTG9hZGluZ1wiXHJcbiAgICAgICAgIFtzaG93SW5pdGlhbFNvcnRCYWRnZV09XCJ0cnVlXCJcclxuICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgIFtzb3J0RmllbGRdPVwic29ydEZpZWxkXCJcclxuICAgICAgICAgW3NvcnRPcmRlcl09XCJzb3J0T3JkZXJcIj5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCIgW3BTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWQtZmxleCBwLWpjLWJldHdlZW4gcC1haS1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICB7e2NvbC5oZWFkZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIj48L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtY29sdW1uRmlsdGVyIFt0eXBlXT1cImNvbC50eXBlXCIgW2ZpZWxkXT1cImNvbC5maWVsZFwiIGRpc3BsYXk9XCJtZW51XCI+PC9wLWNvbHVtbkZpbHRlcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCIhY3JlYXRlQnV0dG9uTWVudVwiIGNsYXNzPVwicC1idXR0b24tc3VjY2Vzc1wiIGljb249XCJmYXMgZmEtcGx1c1wiIHBCdXR0b24gW3JvdXRlckxpbmtdPVwiW2VkaXRMaW5rLCBhcGlOYW1lLCBuZXdIcmVmXVwiIHBUb29sdGlwPVwiQ3JlYXRlIG5ld1wiIHRvb2x0aXBQb3NpdGlvbj1cImxlZnRcIj48L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNwbGl0QnV0dG9uICpuZ0lmPVwiY3JlYXRlQnV0dG9uTWVudVwiIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzXCIgaWNvbj1cImZhcyBmYS1wbHVzXCIgcFRvb2x0aXA9XCJDcmVhdGUgbmV3XCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIChvbkNsaWNrKT1cImNyZWF0ZU5ldygpXCIgW21vZGVsXT1cImNyZWF0ZUJ1dHRvbk1lbnVcIiBhcHBlbmRUbz1cImJvZHlcIj48L3Atc3BsaXRCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90aD5cclxuICAgICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiIGxldC1lbnRpdHkgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGQgW25nU3dpdGNoXT1cImNvbC50eXBlXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIndGV4dCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cC1hdmF0YXIgKm5nSWY9XCJjb2wuZmllbGQgPT09ICdjcmVhdGVkQnknIHx8IGNvbC5maWVsZCA9PT0gJ2xhc3RDaGFuZ2VkQnknXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wuZmllbGRdXCIgdG9vbHRpcFBvc2l0aW9uPVwidG9wXCIgW2ltYWdlXT1cImF2YXRhckdlbmVyYXRvci5nZXRJbWFnZShlbnRpdHlbY29sLmZpZWxkXSlcIiBbbGFiZWxdPVwiYXZhdGFyR2VuZXJhdG9yLmdldExhYmVsKGVudGl0eVtjb2wuZmllbGRdKVwiIFtzdHlsZV09XCJhdmF0YXJHZW5lcmF0b3IuZ2V0U3R5bGUoZW50aXR5W2NvbC5maWVsZF0pXCIgc2hhcGU9XCJjaXJjbGVcIj48L3AtYXZhdGFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29sLmZpZWxkICE9PSAnY3JlYXRlZEJ5JyAmJiBjb2wuZmllbGQgIT09ICdsYXN0Q2hhbmdlZEJ5J1wiPnt7ZW50aXR5W2NvbC5maWVsZF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidudW1lcmljJ1wiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+e3tlbnRpdHlbY29sLmZpZWxkXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidib29sZWFuJ1wiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+PHAtdHJpU3RhdGVDaGVja2JveCBbKG5nTW9kZWwpXT1cImVudGl0eVtjb2wuZmllbGRdXCIgW3JlYWRvbmx5XT1cInRydWVcIj48L3AtdHJpU3RhdGVDaGVja2JveD48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ2RhdGUnXCIgW3BUb29sdGlwXT1cImVudGl0eVtjb2wuZmllbGRdXCI+e3tlbnRpdHlbY29sLmZpZWxkXSB8IGRhdGU6ZGF0ZUZvcm1hdH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nU3dpdGNoQ2FzZT1cIidhcnJheSdcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPjxwICpuZ0Zvcj1cImxldCBhcnJheUVsZW1lbnQgb2YgZW50aXR5W2NvbC5maWVsZF1cIj57e2FycmF5RWxlbWVudCB8IGpzb259fTwvcD48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ29iamVjdCdcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPnt7ZW50aXR5W2NvbC5maWVsZF0gfCBqc29ufX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBwQnV0dG9uIHBUb29sdGlwPVwiVmlldy9FZGl0XCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIFtyb3V0ZXJMaW5rXT1cIltlZGl0TGluaywgYXBpTmFtZSwgZW50aXR5Ll9saW5rcz8uc2VsZlswXS5ocmVmXVwiIGljb249XCJmYXMgZmEtZWRpdFwiPjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBUb29sdGlwPVwiRGVsZXRlXCIgdG9vbHRpcFBvc2l0aW9uPVwibGVmdFwiIHBCdXR0b24gKm5nSWY9XCJlbnRpdHkuX2xpbmtzLmRlbGV0ZVwiIChjbGljayk9XCJzaG93RGVsZXRlQ29uZmlybWF0aW9Nb2RhbChlbnRpdHkpXCIgaWNvbj1cImZhcyBmYS10cmFzaC1hbHRcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJteC0yIHAtYnV0dG9uLWRhbmdlclwiPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI4XCI+Tm8gZW50cmllcyBmb3VuZC48L3RkPlxyXG4gICAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuPC9wLXRhYmxlPlxyXG5cclxuPHAtdG9hc3Q+PC9wLXRvYXN0PlxyXG48cC1jb25maXJtRGlhbG9nPjwvcC1jb25maXJtRGlhbG9nPlxyXG4iXX0=
|