@ragemp-mango/webview 5.0.0 → 5.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/dist/index.js +3 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -139,10 +139,10 @@ var WebViewEventService = class {
|
|
|
139
139
|
}
|
|
140
140
|
emitServer(eventName, body) {
|
|
141
141
|
if (typeof window.mp !== "undefined") {
|
|
142
|
-
window.mp.trigger("WEBVIEW::EMIT_SERVER", {
|
|
142
|
+
window.mp.trigger("WEBVIEW::EMIT_SERVER", JSON.stringify({
|
|
143
143
|
eventName,
|
|
144
144
|
payload: body
|
|
145
|
-
});
|
|
145
|
+
}));
|
|
146
146
|
}
|
|
147
147
|
}
|
|
148
148
|
};
|
|
@@ -532,4 +532,4 @@ __name(initMango, "initMango");
|
|
|
532
532
|
export {
|
|
533
533
|
initMango
|
|
534
534
|
};
|
|
535
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctbG9nZ2VyLnNlcnZpY2UudHMiLCAiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctZXZlbnQuc2VydmljZS50cyIsICIuLi8uLi9jb3JlL3NyYy9lbnVtcy9lcnJvci1tZXNzYWdlLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvZW51bXMvaW5qZWN0YWJsZS1zY29wZS5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2VudW1zL3JwYy1yZXN1bHQtc3RhdHVzLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvYXBwL2NvbnN0YW50cy9pbmRleC50cyIsICIuLi8uLi9jb3JlL2Rpc3QvY2h1bmstN1FWWVU2M0UuanMiLCAiLi4vLi4vY29yZS9zcmMvdXRpbHMvZ2VuZXJhdGUtcmFuZG9tLWlkLnV0aWwudHMiLCAiLi4vLi4vY29yZS9zcmMvdXRpbHMvdHlwZS1jaGVjay51dGlsLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9hcHAtZW52aXJvbWVudC5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9jb3JlLW1ldGFkYXRhLWtleS5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9ldmVudC1kZXN0aW5hdGlvbi5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9leGVjdXRpb24tY29udGV4dC10eXBlLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvYXBwL2VudW1zL21ldGhvZC1wYXJhbS10eXBlLmVudW0udHMiLCAiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctcnBjLnNlcnZpY2UudHMiLCAiLi4vLi4vY29yZS9zcmMvZXJyb3JzL21hbmdvLmVycm9yLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2Vycm9ycy9ndWFyZC1jYW5jZWwuZXJyb3IudHMiLCAiLi4vLi4vY29yZS9zcmMvZXJyb3JzL2d1YXJkLWludmFsaWQtcmV0dXJuLmVycm9yLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2Vycm9ycy90b28tbWFueS1yZXF1ZXN0cy5lcnJvci50cyIsICIuLi8uLi9jb3JlL3NyYy9lcnJvcnMvdW5rbm93bi5lcnJvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFdlYlZpZXdMb2dnZXJTZXJ2aWNlIGltcGxlbWVudHMgTG9nZ2VyU2VydmljZSB7XG4gICAgcHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFvwn6WtV2ViVmlld11bTG9nXWAsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcnJvciguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW/Cfpa1XZWJWaWV3XVtFcnJvcl1gLCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2FybiguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBb8J+lrVdlYlZpZXddW1dhcm5dYCwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlYnVnKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBb8J+lrVdlYlZpZXddW0RlYnVnXWAsIC4uLmFyZ3MpO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEV2ZW50U2VydmljZSwgU2NyaXB0RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBXZWJWaWV3RXZlbnRTZXJ2aWNlIGltcGxlbWVudHMgRXZlbnRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5ICRsb2NhbEhhbmRsZXJzOiBNYXA8c3RyaW5nLCBTZXQ8U2NyaXB0RXZlbnRIYW5kbGVyPj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSAkcmVtb3RlSGFuZGxlcnM6IE1hcDxzdHJpbmcsIFNldDxTY3JpcHRFdmVudEhhbmRsZXI+PiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBvbjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICBjb25zdCBldmVudEhhbmRsZXI6IFNjcmlwdEV2ZW50SGFuZGxlciA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLiRsb2NhbEhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiBjYWxsYmFjayxcbiAgICAgICAgICAgIGxvY2FsOiB0cnVlLFxuICAgICAgICAgICAgb25seU9uY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVtb3RlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy4kbG9jYWxIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSkhLmFkZChldmVudEhhbmRsZXIpO1xuXG4gICAgICAgIHJldHVybiBldmVudEhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uY2U8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy4kbG9jYWxIYW5kbGVycy5nZXQoZXZlbnROYW1lKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVycz8uZGVsZXRlKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgaGFuZGxlcjogY2FsbGJhY2ssXG4gICAgICAgICAgICBsb2NhbDogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlPbmNlOiB0cnVlLFxuICAgICAgICAgICAgcmVtb3RlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy4kbG9jYWxIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSkhLmFkZChldmVudEhhbmRsZXIpO1xuXG4gICAgICAgIHJldHVybiA8U2NyaXB0RXZlbnRIYW5kbGVyPmV2ZW50SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdDxFIGV4dGVuZHMgc3RyaW5nPihldmVudE5hbWU6IEUsIGJvZHk/OiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICAgIGxpc3RlbmVycz8uZm9yRWFjaCgoc2NyaXB0RXZlbnRIYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICBzY3JpcHRFdmVudEhhbmRsZXIuaGFuZGxlcihib2R5KTtcbiAgICAgICAgICAgIGlmICghc2NyaXB0RXZlbnRIYW5kbGVyLm9ubHlPbmNlKSByZXR1cm47XG4gICAgICAgICAgICBzY3JpcHRFdmVudEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QbGF5ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9ICguLi5hcmdzOiBhbnlbXSkgPT4gY2FsbGJhY2soYXJnc1swXSk7XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlcjogU2NyaXB0RXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAvLyBJbiBSYWdlTVAgQ0VGLCB3ZSB1c2UgbXAudHJpZ2dlciB0byBjb21tdW5pY2F0ZVxuICAgICAgICAgICAgICAgIC8vIEV2ZW50cyBhcmUgcmVnaXN0ZXJlZCB2aWEgd2luZG93IGV2ZW50IGxpc3RlbmVycyBvciBtcC5ldmVudHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiB3cmFwcGVyLFxuICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgb25seU9uY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUmFnZU1QIENFRiB1c2VzIHdpbmRvdy1sZXZlbCBldmVudCByZWdpc3RyYXRpb25cbiAgICAgICAgaWYgKHR5cGVvZiAod2luZG93IGFzIGFueSkubXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAod2luZG93IGFzIGFueSkubXAuZXZlbnRzLmFkZChldmVudE5hbWUsIHdyYXBwZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLiRyZW1vdGVIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kcmVtb3RlSGFuZGxlcnMuc2V0KGV2ZW50TmFtZSwgbmV3IFNldCgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRyZW1vdGVIYW5kbGVycy5nZXQoZXZlbnROYW1lKSEuYWRkKGV2ZW50SGFuZGxlcik7XG5cbiAgICAgICAgcmV0dXJuIGV2ZW50SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25jZVBsYXllcjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICBjb25zdCB3cmFwcGVyID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGV2ZW50SGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlcjogU2NyaXB0RXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiB3cmFwcGVyLFxuICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgb25seU9uY2U6IHRydWUsXG4gICAgICAgICAgICByZW1vdGU6IHRydWUsXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodHlwZW9mICh3aW5kb3cgYXMgYW55KS5tcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICh3aW5kb3cgYXMgYW55KS5tcC5ldmVudHMuYWRkKGV2ZW50TmFtZSwgd3JhcHBlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuJHJlbW90ZUhhbmRsZXJzLmhhcyhldmVudE5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLiRyZW1vdGVIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpIS5hZGQoZXZlbnRIYW5kbGVyKTtcblxuICAgICAgICByZXR1cm4gZXZlbnRIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0UGxheWVyPEUgZXh0ZW5kcyBzdHJpbmc+KGV2ZW50TmFtZTogRSwgYm9keT86IHVua25vd24pIHtcbiAgICAgICAgLy8gUmFnZU1QIENFRiB1c2VzIG1wLnRyaWdnZXIgdG8gc2VuZCBldmVudHMgdG8gY2xpZW50XG4gICAgICAgIGlmICh0eXBlb2YgKHdpbmRvdyBhcyBhbnkpLm1wICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgKHdpbmRvdyBhcyBhbnkpLm1wLnRyaWdnZXIoZXZlbnROYW1lLCBib2R5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNlcnZlcjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5vblBsYXllcig8c3RyaW5nPmBXRUJWSUVXOjpPTl9TRVJWRVJfJHtldmVudE5hbWV9YCwgPGFueT5jYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uY2VTZXJ2ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApOiBTY3JpcHRFdmVudEhhbmRsZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmNlUGxheWVyKDxzdHJpbmc+YFdFQlZJRVc6Ok9OX1NFUlZFUl8ke2V2ZW50TmFtZX1gLCA8YW55PmNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdFNlcnZlcjxFIGV4dGVuZHMgc3RyaW5nPihldmVudE5hbWU6IEUsIGJvZHk/OiB1bmtub3duKSB7XG4gICAgICAgIC8vIEluIFJhZ2VNUCwgd2UgZW1pdCB0byBjbGllbnQgd2hpY2ggdGhlbiBmb3J3YXJkcyB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHR5cGVvZiAod2luZG93IGFzIGFueSkubXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAod2luZG93IGFzIGFueSkubXAudHJpZ2dlcignV0VCVklFVzo6RU1JVF9TRVJWRVInLCB7XG4gICAgICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IGJvZHksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJleHBvcnQgZW51bSBFcnJvck1lc3NhZ2Uge1xuICAgIFRvb01hbnlSZXF1ZXN0cyA9ICdUb28gbWFueSByZXF1ZXN0cy4nLFxuXG4gICAgLy8gRXZlbnRzXG4gICAgRXZlbnROYW1lTXVzdEJlU3RyaW5nID0gJ1RoZSBldmVudCBuYW1lIG11c3QgYmUgYSBzdHJpbmcuJyxcbiAgICBFdmVudE5hbWVNdXN0QmVVbmlxdWUgPSAnVGhlIGV2ZW50IG5hbWUgbXVzdCBiZSB1bmlxdWUuJyxcbiAgICBFdmVudE5vdEFsbG93ZWRJbkNsaWVudCA9ICdUaGUgZXZlbnQgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGNsaWVudCBlbnZpcm9ubWVudC4nLFxuICAgIEV2ZW50Tm90QWxsb3dlZEluU2VydmVyID0gJ1RoZSBldmVudCBpcyBub3QgYWxsb3dlZCBpbiB0aGUgc2VydmVyIGVudmlyb25tZW50LicsXG4gICAgSW52YWxpZEV2ZW50VHlwZSA9ICdJbnZhbGlkIGV2ZW50IHR5cGUuJyxcbiAgICBJbnZhbGlkSW50ZXJuYWxFdmVudE5hbWUgPSAnVGhlIG5hbWUgb2YgdGhlIGludGVybmFsIGV2ZW50IGlzIGludmFsaWQuJyxcbiAgICBJbnZhbGlkUmV0dXJuSW5FdmVudCA9ICdDYW5ub3QgcmV0dXJuIGEgdmFsdWUgZnJvbSBhbiBldmVudC4nLFxuXG4gICAgLy8gUlBDXG4gICAgUlBDTmFtZU11c3RCZVN0cmluZyA9ICdUaGUgUlBDIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4nLFxuICAgIFJQQ05hbWVNdXN0QmVVbmlxdWUgPSAnVGhlIFJQQyBuYW1lIG11c3QgYmUgdW5pcXVlLicsXG4gICAgUlBDTm90QWxsb3dlZEluQ2xpZW50ID0gJ1RoZSBSUEMgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGNsaWVudCBlbnZpcm9ubWVudC4nLFxuICAgIFJQQ05vdEFsbG93ZWRJblNlcnZlciA9ICdUaGUgUlBDIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBzZXJ2ZXIgZW52aXJvbm1lbnQuJyxcbiAgICBJbnZhbGlkUlBDVHlwZSA9ICdJbnZhbGlkIFJQQyB0eXBlLicsXG4gICAgUlBDSGFuZGxlckFscmVhZHlFeGlzdHMgPSAnVGhlIFJQQyBoYW5kbGVyIGFscmVhZHkgZXhpc3RzLiBQbGVhc2UgcHJvdmlkZSBhIHVuaXF1ZSBuYW1lIGZvciB0aGUgUlBDLicsXG4gICAgUlBDUmVzcG9uc2VBbHJlYWR5U2VudCA9ICdUaGUgUlBDIHJlc3BvbnNlIGhhcyBhbHJlYWR5IGJlZW4gc2VudC4nLFxuXG4gICAgLy8gRXJyb3IgZmlsdGVyc1xuICAgIEludmFsaWRFcnJvckZpbHRlckRlZmluaXRpb24gPSAnSW52YWxpZCBlcnJvciBmaWx0ZXIuIEVycm9yIGZpbHRlcnMgbXVzdCBiZSBhIGNsYXNzIHJlZmVyZW5jZSBvciBhbiBvYmplY3Qgd2l0aCBhIGNhdGNoIG1ldGhvZC4nLFxuICAgIEVycm9yQWxyZWFkeUhhbmRsZWRCeUZpbHRlciA9ICdUaGUgZXJyb3IgYWxyZWFkeSBwb2ludHMgdG8gYSBmaWx0ZXIuJyxcbiAgICBFeGNlcHRpb25IYW5kbGluZ0NvbmZsaWN0ID0gJ1RoZSBzYW1lIGV4Y2VwdGlvbiBjYW4gb25seSBiZSBjYXVnaHQgb25jZS4nLFxuICAgIEF0TGVhc3RPbmVGaWx0ZXJSZXF1aXJlZCA9ICdBdCBsZWFzdCBvbmUgZXJyb3IgZmlsdGVyIG11c3QgYmUgcHJvdmlkZWQuJyxcbiAgICBEdXBsaWNhdGVFcnJvckZpbHRlckRldGVjdGVkID0gJ0R1cGxpY2F0ZSBlcnJvciBmaWx0ZXIgZm91bmQuIEVuc3VyZSB0aGF0IHRoZSBzYW1lIGZpbHRlciBpcyBub3QgYXBwbGllZCBtb3JlIHRoYW4gb25jZS4nLFxuXG4gICAgLy8gV2ViVmlld1xuICAgIFdlYlZpZXdOb3RGb3VuZCA9ICdUaGUgV2ViVmlldyB3aXRoIHRoZSBzcGVjaWZpZWQgaWQgZG9lcyBub3QgZXhpc3QuJyxcbiAgICBXZWJWaWV3SWRNdXN0QmVTdHJpbmdPck51bWJlciA9ICdUaGUgV2ViVmlldyBpZCBtdXN0IGJlIGEgc3RyaW5nIG9yIG51bWJlci4nLFxuXG4gICAgLy8gR3VhcmRcbiAgICBJbnZhbGlkR3VhcmREZWZpbml0aW9uID0gJ0ludmFsaWQgZ3VhcmQuIEd1YXJkcyBtdXN0IGJlIGEgY2xhc3MgcmVmZXJlbmNlIG9yIGFuIG9iamVjdCB3aXRoIGEgY2FuQWN0aXZhdGUgbWV0aG9kLicsXG4gICAgQXRMZWFzdE9uZUd1YXJkUmVxdWlyZWQgPSAnQXQgbGVhc3Qgb25lIGd1YXJkIG11c3QgYmUgcHJvdmlkZWQuJyxcblxuICAgIC8vIEludGVyY2VwdG9yXG4gICAgSW52YWxpZEludGVyY2VwdG9yRGVmaW5pdGlvbiA9ICdJbnZhbGlkIGludGVyY2VwdG9yLiBJbnRlcmNlcHRvcnMgbXVzdCBiZSBhIGNsYXNzIHJlZmVyZW5jZSBvciBhbiBvYmplY3Qgd2l0aCBhbiBpbnRlcmNlcHQgbWV0aG9kLicsXG4gICAgQXRMZWFzdE9uZUludGVyY2VwdG9yUmVxdWlyZWQgPSAnQXQgbGVhc3Qgb25lIGludGVyY2VwdG9yIG11c3QgYmUgcHJvdmlkZWQuJyxcbiAgICBJbnZhbGlkSW50ZXJjZXB0b3JSZXR1cm5WYWx1ZSA9ICdUaGUgaW50ZXJjZXB0b3IgbXVzdCByZXR1cm4gYSBmdW5jdGlvbi4nLFxuXG4gICAgLy8gUGlwZVxuICAgIEludmFsaWRQaXBlRGVmaW5pdGlvbiA9ICdJbnZhbGlkIHBpcGUuIFBpcGVzIG11c3QgYmUgYSBjbGFzcyByZWZlcmVuY2Ugb3IgYW4gb2JqZWN0IHdpdGggYSB0cmFuc2Zvcm0gbWV0aG9kLicsXG4gICAgQXRMZWFzdE9uZVBpcGVSZXF1aXJlZCA9ICdBdCBsZWFzdCBvbmUgcGlwZSBtdXN0IGJlIHByb3ZpZGVkLicsXG5cbiAgICAvLyBBcHAgbG9hZGluZ1xuICAgIEFwcEFscmVhZHlMb2FkZWQgPSAnQXBwIGlzIGFscmVhZHkgbG9hZGVkLiBQbGVhc2UgY2FsbCB0aGUgc3RvcCBtZXRob2QgYmVmb3JlIGNhbGxpbmcgdGhlIHN0YXJ0IG1ldGhvZC4nLFxuICAgIEFwcE5vdExvYWRlZCA9ICdBcHAgaXMgbm90IGxvYWRlZC4gUGxlYXNlIGNhbGwgdGhlIHN0YXJ0IG1ldGhvZCBiZWZvcmUgY2FsbGluZyB0aGUgc3RvcCBtZXRob2QuJyxcblxuICAgIC8vIERlY29yYXRvcnNcbiAgICBJbnZhbGlkSW5qZWN0aW9uVG9rZW5TcGVjaWZpZWQgPSAnVGhlIHNwZWNpZmllZCBpbmplY3Rpb24gdG9rZW4gaXMgaW52YWxpZC4nLFxuICAgIEluamVjdGlvblRva2VuTm90Rm91bmQgPSAnVGhlIGluamVjdGlvbiB0b2tlbiBjb3VsZCBub3QgYmUgZm91bmQuJyxcbiAgICBQYXJhbUtleU11c3RCZVN0cmluZyA9ICdUaGUgcGFyYW0ga2V5IG11c3QgYmUgYSBzdHJpbmcuJyxcbiAgICBJbmRleEtleU11c3RCZU51bWJlciA9ICdUaGUgaW5kZXgga2V5IG11c3QgYmUgYSBudW1iZXIuJyxcbiAgICBEdXBsaWNhdGVEZWNvcmF0b3JVc2FnZSA9ICdUaGUgc2FtZSBkZWNvcmF0b3IgY2FuIG9ubHkgYmUgdXNlZCBvbmNlIGluIHRoZSBzYW1lIGNsYXNzLicsXG4gICAgSW52YWxpZENvbnRyb2xsZXJPcHRpb25zID0gJ0ludmFsaWQgY29udHJvbGxlciBvcHRpb25zIGZvdW5kLicsXG4gICAgSW52YWxpZEluamVjdGFibGVPcHRpb25zID0gJ0ludmFsaWQgaW5qZWN0YWJsZSBvcHRpb25zIGZvdW5kLicsXG4gICAgSW52YWxpZE1vZHVsZU9wdGlvbnMgPSAnSW52YWxpZCBtb2R1bGUgb3B0aW9ucyBmb3VuZC4nLFxuICAgIE11bHRpcGxlRGVjb3JhdG9yc09uU2luZ2xlUGFyYW1ldGVyTm90QWxsb3dlZCA9ICdDYW5ub3QgYXBwbHkgbXVsdGlwbGUgZGVjb3JhdG9ycyB0byB0aGUgc2FtZSBwYXJhbWV0ZXIuJyxcblxuICAgIC8vIEludGVybmFsIEFwcFxuICAgIENpcmN1bGFyRGVwZW5kZW5jeURldGVjdGVkID0gJ0NpcmN1bGFyIGRlcGVuZGVuY3kgZGV0ZWN0ZWQuJyxcbiAgICBJbnZhbGlkTW9kdWxlRGVmaW5pdGlvbiA9ICdUaGUgbW9kdWxlIGlzIGludmFsaWQuJyxcbiAgICBJbnZhbGlkRXhwb3J0RGVmaW5pdGlvbiA9ICdUaGUgZXhwb3J0IGlzIGludmFsaWQuJyxcbiAgICBJbnZhbGlkUHJvdmlkZXJEZWZpbml0aW9uID0gJ1RoZSBwcm92aWRlciBpcyBpbnZhbGlkLicsXG4gICAgSW52YWxpZFBhcmFtZXRlckRlY29yYXRvclVzYWdlID0gJ0VhY2ggcGFyYW1ldGVyIG11c3QgaGF2ZSB0aGVpciBpdHMgb3duIGRlY29yYXRvci4nLFxuICAgIFJlc3BvbnNlRGVjb3JhdG9yTm90QWxsb3dlZE9uRXZlbnRzID0gJ1RoZSBAUmVzcG9uc2UoKSBkZWNvcmF0b3IgaXMgbm90IGFsbG93ZWQgb24gZXZlbnRzLicsXG4gICAgUGxheWVyRGVjb3JhdG9yTm90QWxsb3dlZE9uQ2xpZW50RXZlbnRzID0gJ1RoZSBAUGxheWVyKCkgZGVjb3JhdG9yIGlzIG5vdCBhbGxvd2VkIG9uIGNsaWVudCBldmVudHMuJyxcblxuICAgIC8vIFRpbWVyc1xuICAgIFRpbWVyTmFtZU11c3RCZVN0cmluZyA9ICdUaGUgdGltZXIgbmFtZSBtdXN0IGJlIGEgc3RyaW5nLicsXG59XG4iLCAiZXhwb3J0IGVudW0gSW5qZWN0YWJsZVNjb3BlIHtcbiAgICBSZXF1ZXN0ID0gJ3JlcXVlc3QnLFxuICAgIFRyYW5zaWVudCA9ICd0cmFuc2llbnQnLFxuICAgIFNpbmdsZXRvbiA9ICdzaW5nbGV0b24nLFxufVxuIiwgImV4cG9ydCBlbnVtIFJQQ1Jlc3VsdFN0YXR1cyB7XG4gICAgU3VjY2VzcyA9IDEsXG4gICAgVGltZW91dCA9IDIsXG4gICAgSGFuZGxlck5vdEZvdW5kID0gMyxcbiAgICBVbmtub3duID0gNCxcbiAgICBDYW5jZWxsZWRCeUd1YXJkID0gNSxcbiAgICBJbnZhbGlkR3VhcmRSZXR1cm4gPSA2LFxuICAgIFRvb01hbnlSZXF1ZXN0cyA9IDcsXG4gICAgUGxheWVyRGlzY29ubmVjdGVkID0gOCxcbiAgICBQbGF5ZXJOb3RGb3VuZCA9IDksXG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vLi4vZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBSUENSZXN1bHQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IElOVEVSTkFMX0FQUF9DT05UQUlORVIgPSAnSU5URVJOQUxfQVBQX0NPTlRBSU5FUic7XG5leHBvcnQgY29uc3QgR0xPQkFMX0FQUF9DT05UQUlORVIgPSAnR0xPQkFMX0FQUF9DT05UQUlORVInO1xuZXhwb3J0IGNvbnN0IEFQUF9FTlZJUk9NRU5UID0gJ0FQUF9FTlZJUk9NRU5UJztcblxuZXhwb3J0IGNvbnN0IEdMT0JBTF9HVUFSRFMgPSAnR0xPQkFMX0dVQVJEUyc7XG5leHBvcnQgY29uc3QgR0xPQkFMX0lOVEVSQ0VQVE9SUyA9ICdHTE9CQUxfSU5URVJDRVBUT1JTJztcbmV4cG9ydCBjb25zdCBHTE9CQUxfUElQRVMgPSAnR0xPQkFMX1BJUEVTJztcbmV4cG9ydCBjb25zdCBHTE9CQUxfRVJST1JfRklMVEVSUyA9ICdHTE9CQUxfRVJST1JfRklMVEVSUyc7XG5cbmV4cG9ydCBjb25zdCBQTFVHSU5TID0gJ1BMVUdJTlMnO1xuXG5leHBvcnQgY29uc3QgRU5BQkxFX1NIVVRET1dOX0hPT0tTID0gJ0VOQUJMRV9TSFVURE9XTl9IT09LUyc7XG5leHBvcnQgY29uc3QgQ09OVEFJTkVSX09QVElPTlMgPSAnQ09OVEFJTkVSX09QVElPTlMnO1xuZXhwb3J0IGNvbnN0IExPR19FUlJPUl9TVEFDS1RSQUNFID0gJ0xPR19FUlJPUl9TVEFDS1RSQUNFJztcblxuZXhwb3J0IGNvbnN0IE1BTkdPX0xPR19QUkVGSVggPSAn8J+lrSc7XG5cbmV4cG9ydCBjb25zdCBNQU5HT19SRVFVRVNUX0ZBQ1RPUlkgPSAnTUFOR09fUkVRVUVTVF9GQUNUT1JZJztcbmV4cG9ydCBjb25zdCBNQU5HT19SRVNQT05TRV9GQUNUT1JZID0gJ01BTkdPX1JFU1BPTlNFX0ZBQ1RPUlknO1xuZXhwb3J0IGNvbnN0IEVYRUNVVElPTl9DT05URVhUX0ZBQ1RPUlkgPSAnRVhFQ1VUSU9OX0NPTlRFWFRfRkFDVE9SWSc7XG5cbmV4cG9ydCBjb25zdCBNVUxUSVBMQVlFUl9TRVJWSUNFID0gJ01VTFRJUExBWUVSX1NFUlZJQ0UnO1xuXG5leHBvcnQgY29uc3QgUlBDX1JFU1VMVF9USU1FT1VUOiBSUENSZXN1bHQgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgZXJyb3I6IHsgbWVzc2FnZTogJ1JQQyBjYWxsIHRpbWVkIG91dC4nIH0sXG4gICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuVGltZW91dCxcbn07XG5cbmV4cG9ydCBjb25zdCBSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EOiBSUENSZXN1bHQgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgZXJyb3I6IHsgbWVzc2FnZTogJ1JQQyBoYW5kbGVyIG5vdCBmb3VuZC4nIH0sXG4gICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuSGFuZGxlck5vdEZvdW5kLFxufTtcblxuZXhwb3J0IGNvbnN0IFJQQ19SRVNVTFRfVU5LTk9XTjogUlBDUmVzdWx0ID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yOiB7IG1lc3NhZ2U6ICdVbmtub3duIGVycm9yLicgfSxcbiAgICBzdGF0dXM6IFJQQ1Jlc3VsdFN0YXR1cy5Vbmtub3duLFxufTtcblxuZXhwb3J0IGNvbnN0IFJQQ19SRVNVTFRfUExBWUVSX0RJU0NPTk5FQ1RFRDogUlBDUmVzdWx0ID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yOiB7IG1lc3NhZ2U6ICdQbGF5ZXIgZGlzY29ubmVjdGVkLicgfSxcbiAgICBzdGF0dXM6IFJQQ1Jlc3VsdFN0YXR1cy5QbGF5ZXJEaXNjb25uZWN0ZWQsXG59O1xuXG5leHBvcnQgY29uc3QgUlBDX1JFU1VMVF9QTEFZRVJfTk9UX0ZPVU5EOiBSUENSZXN1bHQgPSB7XG4gICAgc3VjY2VzczogZmFsc2UsXG4gICAgZXJyb3I6IHsgbWVzc2FnZTogJ1BsYXllciBub3QgZm91bmQuJyB9LFxuICAgIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLlBsYXllck5vdEZvdW5kLFxufTtcbiIsICJ2YXIgX19kZWZQcm9wID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xudmFyIF9fbmFtZSA9ICh0YXJnZXQsIHZhbHVlKT0+X19kZWZQcm9wKHRhcmdldCwgXCJuYW1lXCIsIHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pO1xuZXhwb3J0IHsgX19uYW1lIH07IC8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXdvZ0lDSjJaWEp6YVc5dUlqb2dNeXdLSUNBaWMyOTFjbU5sY3lJNklGdGRMQW9nSUNKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2SUZ0ZExBb2dJQ0p0WVhCd2FXNW5jeUk2SUNJaUxBb2dJQ0p1WVcxbGN5STZJRnRkQ24wS1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYlhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWlKOSIsICJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVSYW5kb21JZCgpIHtcbiAgICByZXR1cm4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE1KSArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNSk7XG59XG4iLCAiZXhwb3J0IGNvbnN0IGlzVW5kZWZpbmVkID0gKG9iajogYW55KTogb2JqIGlzIHVuZGVmaW5lZCA9PiB0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJztcbmV4cG9ydCBjb25zdCBpc09iamVjdCA9IChmbjogYW55KTogZm4gaXMgb2JqZWN0ID0+ICFpc05pbChmbikgJiYgdHlwZW9mIGZuID09PSAnb2JqZWN0JztcbmV4cG9ydCBjb25zdCBpc0Z1bmN0aW9uID0gKHZhbDogYW55KTogdmFsIGlzIEZ1bmN0aW9uID0+IHR5cGVvZiB2YWwgPT09ICdmdW5jdGlvbic7XG5leHBvcnQgY29uc3QgaXNTdHJpbmcgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3RyaW5nID0+IHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnO1xuZXhwb3J0IGNvbnN0IGlzTnVtYmVyID0gKHZhbDogYW55KTogdmFsIGlzIG51bWJlciA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJztcbmV4cG9ydCBjb25zdCBpc0NvbnN0cnVjdG9yID0gKHZhbDogYW55KTogYm9vbGVhbiA9PiB2YWwgPT09ICdjb25zdHJ1Y3Rvcic7XG5leHBvcnQgY29uc3QgaXNOaWwgPSAodmFsOiBhbnkpOiB2YWwgaXMgbnVsbCB8IHVuZGVmaW5lZCA9PiBpc1VuZGVmaW5lZCh2YWwpIHx8IHZhbCA9PT0gbnVsbDtcbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKGFycmF5OiBhbnkpOiBib29sZWFuID0+ICEoYXJyYXkgJiYgYXJyYXkubGVuZ3RoID4gMCk7XG5leHBvcnQgY29uc3QgaXNTeW1ib2wgPSAodmFsOiBhbnkpOiB2YWwgaXMgc3ltYm9sID0+IHR5cGVvZiB2YWwgPT09ICdzeW1ib2wnO1xuZXhwb3J0IGNvbnN0IGlzQXN5bmNGdW5jdGlvbiA9ICh2YWw6IGFueSk6IGJvb2xlYW4gPT4gaXNGdW5jdGlvbih2YWwpICYmIHZhbC5jb25zdHJ1Y3Rvci5uYW1lID09PSAnQXN5bmNGdW5jdGlvbic7XG5leHBvcnQgY29uc3QgaXNCb29sZWFuID0gKHZhbDogYW55KTogdmFsIGlzIGJvb2xlYW4gPT4gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nO1xuZXhwb3J0IGNvbnN0IGlzUHJvbWlzZSA9IDxUID0gYW55Pih2YWw6IGFueSk6IHZhbCBpcyBQcm9taXNlPFQ+ID0+IHZhbCBpbnN0YW5jZW9mIFByb21pc2U7XG4iLCAiZXhwb3J0IGVudW0gQXBwRW52aXJvbWVudCB7XG4gICAgQ2xpZW50LFxuICAgIFNlcnZlcixcbn1cbiIsICJleHBvcnQgZW51bSBDb3JlTWV0YWRhdGFLZXkge1xuICAgIC8vIEdlbmVyYWxcbiAgICBJbmplY3RhYmxlID0gJ21hbmdvOmluamVjdGFibGUnLFxuICAgIEluamVjdCA9ICdtYW5nbzppbmplY3QnLFxuICAgIE1vZHVsZSA9ICdtYW5nbzptb2R1bGUnLFxuICAgIEdsb2JhbE1vZHVsZSA9ICdtYW5nbzpnbG9iYWwtbW9kdWxlJyxcbiAgICBDb250cm9sbGVyID0gJ21hbmdvOmNvbnRyb2xsZXItb3B0aW9ucycsXG4gICAgLy8gRXZlbnRzICYgUlBDXG4gICAgQ29udHJvbGxlckV2ZW50cyA9ICdtYW5nbzpjb250cm9sbGVyLWV2ZW50cycsXG4gICAgQ29udHJvbGxlclJQQ3MgPSAnbWFuZ286Y29udHJvbGxlci1ycGNzJyxcbiAgICBDb250cm9sbGVyUGFyYW1zID0gJ21hbmdvOmNvbnRyb2xsZXItcnBjLXBhcmFtcycsXG4gICAgLy8gUGlwZWxpbmVcbiAgICBHdWFyZHMgPSAnbWFuZ286Z3VhcmRzJyxcbiAgICBJbnRlcmNlcHRvcnMgPSAnbWFuZ286aW50ZXJjZXB0b3JzJyxcbiAgICBQaXBlcyA9ICdtYW5nbzpwaXBlcycsXG4gICAgLy8gRXJyb3JcbiAgICBDYXRjaCA9ICdtYW5nbzpjYXRjaCcsXG4gICAgRXJyb3JGaWx0ZXJzID0gJ21hbmdvOmVycm9yLWZpbHRlcnMnLFxuICAgIC8vXG4gICAgVGltZXJzID0gJ21hbmdvOnRpbWVycycsXG59XG4iLCAiZXhwb3J0IGVudW0gRXZlbnREZXN0aW5hdGlvbiB7XG4gICAgU2VydmVyID0gJ3NlcnZlcicsXG4gICAgQ2xpZW50ID0gJ2NsaWVudCcsXG4gICAgV2ViVmlldyA9ICd3ZWJ2aWV3Jyxcbn1cbiIsICJleHBvcnQgZW51bSBFeGVjdXRpb25Db250ZXh0VHlwZSB7XG4gICAgRXZlbnQgPSAnZXZlbnQnLFxuICAgIFJQQyA9ICdycGMnLFxufVxuIiwgImV4cG9ydCBlbnVtIE1ldGhvZFBhcmFtVHlwZSB7XG4gICAgQm9keSA9ICdib2R5JyxcbiAgICBDdXN0b20gPSAnY3VzdG9tJyxcbiAgICBQYXJhbSA9ICdwYXJhbScsXG4gICAgUGxheWVyID0gJ3BsYXllcicsXG4gICAgUmVxdWVzdCA9ICdyZXF1ZXN0JyxcbiAgICBSZXNwb25zZSA9ICdyZXNwb25zZScsXG4gICAgSW5kZXggPSAnaW5kZXgnLFxufVxuIiwgImltcG9ydCB7IHR5cGUgUlBDQ2FsbE9wdGlvbnMsIHR5cGUgUlBDUmVzdWx0LCB0eXBlIFNjcmlwdFJQQ0hhbmRsZXIgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5ELCBSUENfUkVTVUxUX1RJTUVPVVQgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvYXBwL2NvbnN0YW50cyc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50U2VydmljZSwgUlBDU2VydmljZSB9IGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHR5cGUgeyBXZWJWaWV3RXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi93ZWJ2aWV3LWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHR5cGUgeyBXZWJWaWV3TG9nZ2VyU2VydmljZSB9IGZyb20gJy4vd2Vidmlldy1sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUlkLCBpc05pbCB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS91dGlscyc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2UsIFJQQ1Jlc3VsdFN0YXR1cyB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS9lbnVtcyc7XG5pbXBvcnQgeyBFdmVudERlc3RpbmF0aW9uIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2FwcC9lbnVtcyc7XG5pbXBvcnQgdHlwZSB7IFJQQ1BheWxvYWQgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvYXBwL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgY2xhc3MgV2ViVmlld1JQQ1NlcnZpY2UgaW1wbGVtZW50cyBSUENTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5ICRUSU1FT1VUID0gMjAwMDtcbiAgICBwdWJsaWMgcmVhZG9ubHkgJGxvY2FsSGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2NyaXB0UlBDSGFuZGxlcj4oKTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgJGNsaWVudEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFJQQ0hhbmRsZXI+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5ICRzZXJ2ZXJIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRSUENIYW5kbGVyPigpO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgJGV2ZW50U2VydmljZTogV2ViVmlld0V2ZW50U2VydmljZSwgcHJpdmF0ZSByZWFkb25seSAkbG9nZ2VyU2VydmljZTogV2ViVmlld0xvZ2dlclNlcnZpY2UpIHt9XG5cbiAgICBwdWJsaWMgYXN5bmMgY2FsbDxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgcnBjTmFtZTogRSxcbiAgICAgICAgYm9keT86IHVua25vd24sXG4gICAgICAgIG9wdGlvbnM6IFJQQ0NhbGxPcHRpb25zID0geyB0aW1lb3V0OiB0aGlzLiRUSU1FT1VUIH0sXG4gICAgKTogUHJvbWlzZTxSUENSZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGFzeW5jIChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBycGNIYW5kbGVyID0gdGhpcy4kbG9jYWxIYW5kbGVycy5nZXQocnBjTmFtZSk7XG4gICAgICAgICAgICBpZiAoaXNOaWwocnBjSGFuZGxlcikpIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKFJQQ19SRVNVTFRfSEFORExFUl9OT1RfRk9VTkQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShSUENfUkVTVUxUX1RJTUVPVVQpO1xuICAgICAgICAgICAgfSwgb3B0aW9ucy50aW1lb3V0KTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcnBjSGFuZGxlci5oYW5kbGVyKGJvZHkpO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgICAgICByZXNvbHZlKHsgc3VjY2VzczogdHJ1ZSwgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuU3VjY2VzcywgYm9keTogcmVzdWx0LCBlcnJvcjogdW5kZWZpbmVkIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25SZXF1ZXN0PEUgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICBycGNOYW1lOiBFLFxuICAgICAgICBoYW5kbGVyOiAoYm9keTogdW5rbm93bikgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4sXG4gICAgKTogU2NyaXB0UlBDSGFuZGxlciB7XG4gICAgICAgIGlmICh0aGlzLiRsb2NhbEhhbmRsZXJzLmhhcyhycGNOYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kbG9nZ2VyU2VydmljZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVnaXN0ZXJpbmcgYSBSUEMgaGFuZGxlci4nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFcnJvck1lc3NhZ2UuUlBDSGFuZGxlckFscmVhZHlFeGlzdHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJwY0hhbmRsZXI6IFNjcmlwdFJQQ0hhbmRsZXIgPSB7XG4gICAgICAgICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHJwY0hhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2NhbEhhbmRsZXJzLmRlbGV0ZShycGNOYW1lKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBycGNOYW1lLFxuICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiRsb2NhbEhhbmRsZXJzLnNldChycGNOYW1lLCBycGNIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIHJwY0hhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxTZXJ2ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIHJwY05hbWU6IEUsXG4gICAgICAgIGJvZHk/OiB1bmtub3duLFxuICAgICAgICBvcHRpb25zOiBSUENDYWxsT3B0aW9ucyA9IHsgdGltZW91dDogdGhpcy4kVElNRU9VVCB9LFxuICAgICk6IFByb21pc2U8UlBDUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRoYW5kbGVDYWxsKHJwY05hbWUsIEV2ZW50RGVzdGluYXRpb24uU2VydmVyLCBvcHRpb25zLCBib2R5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZXJ2ZXJSZXF1ZXN0PEUgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICBycGNOYW1lOiBFLFxuICAgICAgICBoYW5kbGVyOiAoYm9keTogdW5rbm93bikgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4sXG4gICAgKTogU2NyaXB0UlBDSGFuZGxlciB7XG4gICAgICAgIGlmICh0aGlzLiRzZXJ2ZXJIYW5kbGVycy5oYXMocnBjTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvZ2dlclNlcnZpY2UuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlZ2lzdGVyaW5nIGEgUlBDIGhhbmRsZXIuJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRXJyb3JNZXNzYWdlLlJQQ0hhbmRsZXJBbHJlYWR5RXhpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBycGNIYW5kbGVyOiBTY3JpcHRSUENIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBycGNIYW5kbGVyLnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VydmVySGFuZGxlcnMuZGVsZXRlKHJwY05hbWUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHJwY05hbWUsXG4gICAgICAgICAgICBoYW5kbGVyLFxuICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuJHNlcnZlckhhbmRsZXJzLnNldChycGNOYW1lLCBycGNIYW5kbGVyKTtcbiAgICAgICAgcmV0dXJuIHJwY0hhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxQbGF5ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIHJwY05hbWU6IEUsXG4gICAgICAgIGJvZHk/OiB1bmtub3duLFxuICAgICAgICBvcHRpb25zOiBSUENDYWxsT3B0aW9ucyA9IHsgdGltZW91dDogdGhpcy4kVElNRU9VVCB9LFxuICAgICk6IFByb21pc2U8UlBDUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiB0aGlzLiRoYW5kbGVDYWxsKHJwY05hbWUsIEV2ZW50RGVzdGluYXRpb24uQ2xpZW50LCBvcHRpb25zLCBib2R5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QbGF5ZXJSZXF1ZXN0PEUgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICBycGNOYW1lOiBFLFxuICAgICAgICBoYW5kbGVyOiAoYm9keTogdW5rbm93bikgPT4gdW5rbm93biB8IFByb21pc2U8dW5rbm93bj4sXG4gICAgKTogU2NyaXB0UlBDSGFuZGxlciB7XG4gICAgICAgIGlmICh0aGlzLiRjbGllbnRIYW5kbGVycy5oYXMocnBjTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvZ2dlclNlcnZpY2UuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlZ2lzdGVyaW5nIGEgUlBDIGxpc3RlbmVyLicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVycm9yTWVzc2FnZS5SUENIYW5kbGVyQWxyZWFkeUV4aXN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnBjSGFuZGxlcjogU2NyaXB0UlBDSGFuZGxlciA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgcnBjSGFuZGxlci52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuJGNsaWVudEhhbmRsZXJzLmRlbGV0ZShycGNOYW1lKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBycGNOYW1lLFxuICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiRjbGllbnRIYW5kbGVycy5zZXQocnBjTmFtZSwgcnBjSGFuZGxlcik7XG4gICAgICAgIHJldHVybiBycGNIYW5kbGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgJGhhbmRsZUNhbGw8VFJlc3VsdD4oXG4gICAgICAgIHJwY05hbWU6IHN0cmluZyxcbiAgICAgICAgZGVzdGluYXRpb246IEV2ZW50RGVzdGluYXRpb24sIC8vICdjbGllbnQnIHwgJ3NlcnZlcicsXG4gICAgICAgIG9wdGlvbnM/OiBQYXJ0aWFsPFJQQ0NhbGxPcHRpb25zPixcbiAgICAgICAgYm9keT86IHVua25vd24sXG4gICAgKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZTxSUENSZXN1bHQ8VFJlc3VsdD4+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjYWxsSWQgPSBnZW5lcmF0ZVJhbmRvbUlkKCk7XG4gICAgICAgICAgICBsZXQgdGltZW91dElkOiBudW1iZXI7XG5cbiAgICAgICAgICAgIGNvbnN0IG9uY2VIYW5kbGUgPSAoYm9keTogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgICAgIHJlc29sdmUoPFJQQ1Jlc3VsdDxUUmVzdWx0Pj5ib2R5KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBzY3JpcHRFdmVudEhhbmRsZXIgPVxuICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID09PSBFdmVudERlc3RpbmF0aW9uLlNlcnZlclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuJGV2ZW50U2VydmljZS5vbmNlU2VydmVyKGBSUEM6OlJFVFVSTl9GUk9NX1NFUlZFUl8ke2NhbGxJZH1gLCBvbmNlSGFuZGxlKVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuJGV2ZW50U2VydmljZS5vbmNlUGxheWVyKGBSUEM6OlJFVFVSTl9GUk9NX0NMSUVOVF8ke2NhbGxJZH1gLCBvbmNlSGFuZGxlKTtcblxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZDogUlBDUGF5bG9hZCA9IHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IEV2ZW50RGVzdGluYXRpb24uV2ViVmlldyxcbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbixcbiAgICAgICAgICAgICAgICBpZDogY2FsbElkLFxuICAgICAgICAgICAgICAgIHJwY05hbWUsXG4gICAgICAgICAgICAgICAgYm9keSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkZXN0aW5hdGlvbiA9PT0gRXZlbnREZXN0aW5hdGlvbi5TZXJ2ZXJcbiAgICAgICAgICAgICAgICA/ICg8RXZlbnRTZXJ2aWNlPnRoaXMuJGV2ZW50U2VydmljZSkuZW1pdFBsYXllcignUlBDOjpDQUxMX1NFUlZFUicsIHBheWxvYWQpXG4gICAgICAgICAgICAgICAgOiAoPEV2ZW50U2VydmljZT50aGlzLiRldmVudFNlcnZpY2UpLmVtaXRQbGF5ZXIoJ1JQQzo6Q0FMTF9DTElFTlQnLCBwYXlsb2FkKTtcblxuICAgICAgICAgICAgdGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2NyaXB0RXZlbnRIYW5kbGVyLmRlc3Ryb3koKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKDxSUENSZXN1bHQ8VFJlc3VsdD4+UlBDX1JFU1VMVF9USU1FT1VUKTtcbiAgICAgICAgICAgIH0sIG9wdGlvbnM/LnRpbWVvdXQgPz8gdGhpcy4kVElNRU9VVCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBjbGFzcyBNYW5nb0Vycm9yPFREZXRhaWxzID0gdW5rbm93bj4gZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIHN0YXR1czogbnVtYmVyID0gUlBDUmVzdWx0U3RhdHVzLlVua25vd247XG4gICAgcHVibGljIGRldGFpbHM6IFREZXRhaWxzIHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgc3RhdHVzPzogbnVtYmVyLCBkZXRhaWxzPzogVERldGFpbHMpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSk7XG4gICAgICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzID8/IFJQQ1Jlc3VsdFN0YXR1cy5Vbmtub3duO1xuICAgICAgICB0aGlzLmRldGFpbHMgPSBkZXRhaWxzO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBNYW5nb0Vycm9yIH0gZnJvbSAnLi9tYW5nby5lcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBHdWFyZENhbmNlbEVycm9yIGV4dGVuZHMgTWFuZ29FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignUHJvY2VzcyBjYW5jZWxsZWQgYnkgdGhlIGd1YXJkLicsIFJQQ1Jlc3VsdFN0YXR1cy5DYW5jZWxsZWRCeUd1YXJkKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgTWFuZ29FcnJvciB9IGZyb20gJy4vbWFuZ28uZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgR3VhcmRJbnZhbGlkUmV0dXJuRXJyb3IgZXh0ZW5kcyBNYW5nb0Vycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdHdWFyZCByZXR1cm5lZCBhbiBpbnZhbGlkIHZhbHVlLiBFeHBlY3RlZCBib29sZWFuLicsIFJQQ1Jlc3VsdFN0YXR1cy5JbnZhbGlkR3VhcmRSZXR1cm4pO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBNYW5nb0Vycm9yIH0gZnJvbSAnLi9tYW5nby5lcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBUb29NYW55UmVxdWVzdHMgZXh0ZW5kcyBNYW5nb0Vycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZSA9ICdUb28gbWFueSByZXF1ZXN0cy4nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UsIFJQQ1Jlc3VsdFN0YXR1cy5Ub29NYW55UmVxdWVzdHMpO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICcuLi9lbnVtcyc7XG5pbXBvcnQgeyBNYW5nb0Vycm9yIH0gZnJvbSAnLi9tYW5nby5lcnJvcic7XG5cbmV4cG9ydCBjbGFzcyBVbmtub3duRXJyb3IgZXh0ZW5kcyBNYW5nb0Vycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCdVbmtub3duIGVycm9yLicsIFJQQ1Jlc3VsdFN0YXR1cy5Vbmtub3duKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgV2ViVmlld0V2ZW50U2VydmljZSwgV2ViVmlld0xvZ2dlclNlcnZpY2UsIFdlYlZpZXdSUENTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBpc05pbCB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS91dGlscyc7XG5pbXBvcnQgeyBSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5ELCBSUENfUkVTVUxUX1VOS05PV04gfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvYXBwL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBMb2dnZXJTZXJ2aWNlLCBSUENSZXN1bHQgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBNYW5nb0Vycm9yIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2Vycm9ycyc7XG5pbXBvcnQgdHlwZSB7IEV2ZW50U2VydmljZSwgUlBDU2VydmljZSB9IGZyb20gJy4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0TWFuZ28oKSB7XG4gICAgaWYgKCFpc05pbCh3aW5kb3cubWFuZ28pKSB7XG4gICAgICAgIHJldHVybiB3aW5kb3cubWFuZ287XG4gICAgfVxuXG4gICAgY29uc3QgZXZlbnQgPSBuZXcgV2ViVmlld0V2ZW50U2VydmljZSgpO1xuICAgIGNvbnN0IGxvZ2dlciA9IG5ldyBXZWJWaWV3TG9nZ2VyU2VydmljZSgpO1xuICAgIGNvbnN0IHJwYyA9IG5ldyBXZWJWaWV3UlBDU2VydmljZShldmVudCwgbG9nZ2VyKTtcblxuICAgICg8RXZlbnRTZXJ2aWNlPmV2ZW50KS5vblNlcnZlcignUlBDOjpDQUxMX1dFQlZJRVcnLCBhc3luYyAoYm9keSkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGJvZHkuaWQ7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBib2R5LnJwY05hbWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBib2R5LmJvZHk7XG5cbiAgICAgICAgY29uc3QgcnBjSGFuZGxlciA9IHJwYy4kc2VydmVySGFuZGxlcnMuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAoIXJwY0hhbmRsZXIpIHtcbiAgICAgICAgICAgIGV2ZW50LmVtaXRTZXJ2ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIFJQQ19SRVNVTFRfSEFORExFUl9OT1RfRk9VTkQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlcihwYXlsb2FkKTtcbiAgICAgICAgICAgIGNvbnN0IHJwY1Jlc3VsdDogUlBDUmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuU3VjY2VzcyxcbiAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZXZlbnQuZW1pdFNlcnZlcihgUlBDOjpSRVRVUk5fRlJPTV9XRUJWSUVXXyR7aWR9YCwgcnBjUmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIE1hbmdvRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBycGNSZXN1bHQ6IFJQQ1Jlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1czogZXJyb3Iuc3RhdHVzLFxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogeyBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLCBkZXRhaWxzOiBlcnJvci5kZXRhaWxzIH0sXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBldmVudC5lbWl0U2VydmVyKGBSUEM6OlJFVFVSTl9GUk9NX1dFQlZJRVdfJHtpZH1gLCBycGNSZXN1bHQpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZXZlbnQuZW1pdFNlcnZlcihgUlBDOjpSRVRVUk5fRlJPTV9XRUJWSUVXXyR7aWR9YCwgUlBDX1JFU1VMVF9VTktOT1dOKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgICg8RXZlbnRTZXJ2aWNlPmV2ZW50KS5vblBsYXllcignUlBDOjpDQUxMX1dFQlZJRVcnLCBhc3luYyAoYm9keSkgPT4ge1xuICAgICAgICBjb25zdCBpZCA9IGJvZHkuaWQ7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBib2R5LnJwY05hbWU7XG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSBib2R5LmJvZHk7XG5cbiAgICAgICAgY29uc3QgcnBjSGFuZGxlciA9IHJwYy4kY2xpZW50SGFuZGxlcnMuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAoaXNOaWwocnBjSGFuZGxlcikpIHtcbiAgICAgICAgICAgIGV2ZW50LmVtaXRQbGF5ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIFJQQ19SRVNVTFRfSEFORExFUl9OT1RfRk9VTkQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlcihwYXlsb2FkKTtcbiAgICAgICAgICAgIGNvbnN0IHJwY1Jlc3VsdDogUlBDUmVzdWx0ID0ge1xuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuU3VjY2VzcyxcbiAgICAgICAgICAgICAgICBib2R5OiByZXN1bHQsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZXZlbnQuZW1pdFBsYXllcihgUlBDOjpSRVRVUk5fRlJPTV9XRUJWSUVXXyR7aWR9YCwgcnBjUmVzdWx0KTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGV2ZW50LmVtaXRQbGF5ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIFJQQ19SRVNVTFRfVU5LTk9XTik7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IG1hbmdvID0geyBldmVudCwgcnBjLCBsb2dnZXIgfTtcblxuICAgIHdpbmRvdy5tYW5nbyA9IG1hbmdvO1xuXG4gICAgbG9nZ2VyLmxvZygnV2ViVmlldyBpbml0aWFsaXplZCcpO1xuXG4gICAgcmV0dXJuIG1hbmdvO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgZXhwb3J0IGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBtYW5nbzoge1xuICAgICAgICAgICAgZXZlbnQ6IEV2ZW50U2VydmljZTtcbiAgICAgICAgICAgIHJwYzogUlBDU2VydmljZTtcbiAgICAgICAgICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbmltcG9ydCAnLi9leHRlbnNpb24uZC50cyc7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7O0FBRU8sSUFBTUEsdUJBQU4sTUFBTUE7RUFBYixPQUFhQTs7O0VBQ0ZDLE9BQU9DLE1BQWlCO0FBQzNCQyxZQUFRRixJQUFJLDJCQUFrQixHQUFLQyxJQUFBQTtFQUN2QztFQUVPRSxTQUFTRixNQUFpQjtBQUM3QkMsWUFBUUMsTUFBTSw2QkFBb0IsR0FBS0YsSUFBQUE7RUFDM0M7RUFFT0csUUFBUUgsTUFBaUI7QUFDNUJDLFlBQVFFLEtBQUssNEJBQW1CLEdBQUtILElBQUFBO0VBQ3pDO0VBRU9JLFNBQVNKLE1BQWlCO0FBQzdCQyxZQUFRRyxNQUFNLDZCQUFvQixHQUFLSixJQUFBQTtFQUMzQztBQUNKOzs7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SUFBRUM7SUFBT0k7SUFBS0Y7RUFBTztBQUVuQ0osU0FBT0MsUUFBUUE7QUFFZkcsU0FBTzhCLElBQUkscUJBQUE7QUFFWCxTQUFPakM7QUFDWDtBQXpFZ0JIOyIsCiAgIm5hbWVzIjogWyJXZWJWaWV3TG9nZ2VyU2VydmljZSIsICJsb2ciLCAiYXJncyIsICJjb25zb2xlIiwgImVycm9yIiwgIndhcm4iLCAiZGVidWciLCAiV2ViVmlld0V2ZW50U2VydmljZSIsICIkbG9jYWxIYW5kbGVycyIsICJNYXAiLCAiJHJlbW90ZUhhbmRsZXJzIiwgIm9uIiwgImV2ZW50TmFtZSIsICJjYWxsYmFjayIsICJldmVudEhhbmRsZXIiLCAiZGVzdHJveSIsICJ2YWxpZCIsICJoYW5kbGVycyIsICJnZXQiLCAiZGVsZXRlIiwgImhhbmRsZXIiLCAibG9jYWwiLCAib25seU9uY2UiLCAicmVtb3RlIiwgImhhcyIsICJzZXQiLCAiU2V0IiwgImFkZCIsICJvbmNlIiwgImVtaXQiLCAiYm9keSIsICJsaXN0ZW5lcnMiLCAiZm9yRWFjaCIsICJzY3JpcHRFdmVudEhhbmRsZXIiLCAib25QbGF5ZXIiLCAid3JhcHBlciIsICJhcmdzIiwgIndpbmRvdyIsICJtcCIsICJldmVudHMiLCAib25jZVBsYXllciIsICJlbWl0UGxheWVyIiwgInRyaWdnZXIiLCAib25TZXJ2ZXIiLCAib25jZVNlcnZlciIsICJlbWl0U2VydmVyIiwgInBheWxvYWQiLCAiRXJyb3JNZXNzYWdlIiwgIlJQQ1Jlc3VsdFN0YXR1cyIsICJSUENfUkVTVUxUX1RJTUVPVVQiLCAic3VjY2VzcyIsICJlcnJvciIsICJtZXNzYWdlIiwgInN0YXR1cyIsICJSUENSZXN1bHRTdGF0dXMiLCAiVGltZW91dCIsICJSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EIiwgIkhhbmRsZXJOb3RGb3VuZCIsICJSUENfUkVTVUxUX1VOS05PV04iLCAiVW5rbm93biIsICJSUENfUkVTVUxUX1BMQVlFUl9ESVNDT05ORUNURUQiLCAiUGxheWVyRGlzY29ubmVjdGVkIiwgIlJQQ19SRVNVTFRfUExBWUVSX05PVF9GT1VORCIsICJQbGF5ZXJOb3RGb3VuZCIsICJfX2RlZlByb3AiLCAiX19uYW1lIiwgImdlbmVyYXRlUmFuZG9tSWQiLCAiTWF0aCIsICJyYW5kb20iLCAidG9TdHJpbmciLCAic3Vic3RyaW5nIiwgImlzVW5kZWZpbmVkIiwgIl9fbmFtZSIsICJvYmoiLCAiaXNOaWwiLCAiX19uYW1lIiwgInZhbCIsICJpc1VuZGVmaW5lZCIsICJFdmVudERlc3RpbmF0aW9uIiwgIldlYlZpZXdSUENTZXJ2aWNlIiwgIiRUSU1FT1VUIiwgIiRsb2NhbEhhbmRsZXJzIiwgIk1hcCIsICIkY2xpZW50SGFuZGxlcnMiLCAiJHNlcnZlckhhbmRsZXJzIiwgIiRldmVudFNlcnZpY2UiLCAiJGxvZ2dlclNlcnZpY2UiLCAiY2FsbCIsICJycGNOYW1lIiwgImJvZHkiLCAib3B0aW9ucyIsICJ0aW1lb3V0IiwgIlByb21pc2UiLCAicmVzb2x2ZSIsICJycGNIYW5kbGVyIiwgImdldCIsICJpc05pbCIsICJSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EIiwgInRpbWVvdXRJZCIsICJzZXRUaW1lb3V0IiwgIlJQQ19SRVNVTFRfVElNRU9VVCIsICJyZXN1bHQiLCAiaGFuZGxlciIsICJjbGVhclRpbWVvdXQiLCAic3VjY2VzcyIsICJzdGF0dXMiLCAiUlBDUmVzdWx0U3RhdHVzIiwgIlN1Y2Nlc3MiLCAiZXJyb3IiLCAidW5kZWZpbmVkIiwgIm9uUmVxdWVzdCIsICJoYXMiLCAiRXJyb3IiLCAiRXJyb3JNZXNzYWdlIiwgIlJQQ0hhbmRsZXJBbHJlYWR5RXhpc3RzIiwgImRlc3Ryb3kiLCAidmFsaWQiLCAiZGVsZXRlIiwgInNldCIsICJjYWxsU2VydmVyIiwgIiRoYW5kbGVDYWxsIiwgIkV2ZW50RGVzdGluYXRpb24iLCAiU2VydmVyIiwgIm9uU2VydmVyUmVxdWVzdCIsICJjYWxsUGxheWVyIiwgIkNsaWVudCIsICJvblBsYXllclJlcXVlc3QiLCAiZGVzdGluYXRpb24iLCAiY2FsbElkIiwgImdlbmVyYXRlUmFuZG9tSWQiLCAib25jZUhhbmRsZSIsICJzY3JpcHRFdmVudEhhbmRsZXIiLCAib25jZVNlcnZlciIsICJvbmNlUGxheWVyIiwgInBheWxvYWQiLCAic291cmNlIiwgIldlYlZpZXciLCAiaWQiLCAiZW1pdFBsYXllciIsICJNYW5nb0Vycm9yIiwgIkVycm9yIiwgInN0YXR1cyIsICJSUENSZXN1bHRTdGF0dXMiLCAiVW5rbm93biIsICJkZXRhaWxzIiwgIm1lc3NhZ2UiLCAiR3VhcmRDYW5jZWxFcnJvciIsICJDYW5jZWxsZWRCeUd1YXJkIiwgIkd1YXJkSW52YWxpZFJldHVybkVycm9yIiwgIkludmFsaWRHdWFyZFJldHVybiIsICJUb29NYW55UmVxdWVzdHMiLCAiVW5rbm93bkVycm9yIiwgImluaXRNYW5nbyIsICJpc05pbCIsICJ3aW5kb3ciLCAibWFuZ28iLCAiZXZlbnQiLCAiV2ViVmlld0V2ZW50U2VydmljZSIsICJsb2dnZXIiLCAiV2ViVmlld0xvZ2dlclNlcnZpY2UiLCAicnBjIiwgIldlYlZpZXdSUENTZXJ2aWNlIiwgIm9uU2VydmVyIiwgImJvZHkiLCAiaWQiLCAibmFtZSIsICJycGNOYW1lIiwgInBheWxvYWQiLCAicnBjSGFuZGxlciIsICIkc2VydmVySGFuZGxlcnMiLCAiZ2V0IiwgImVtaXRTZXJ2ZXIiLCAiUlBDX1JFU1VMVF9IQU5ETEVSX05PVF9GT1VORCIsICJyZXN1bHQiLCAiaGFuZGxlciIsICJycGNSZXN1bHQiLCAic3VjY2VzcyIsICJzdGF0dXMiLCAiUlBDUmVzdWx0U3RhdHVzIiwgIlN1Y2Nlc3MiLCAiZXJyb3IiLCAiTWFuZ29FcnJvciIsICJtZXNzYWdlIiwgImRldGFpbHMiLCAiUlBDX1JFU1VMVF9VTktOT1dOIiwgIm9uUGxheWVyIiwgIiRjbGllbnRIYW5kbGVycyIsICJlbWl0UGxheWVyIiwgImxvZyJdCn0K
|
|
535
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctbG9nZ2VyLnNlcnZpY2UudHMiLCAiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctZXZlbnQuc2VydmljZS50cyIsICIuLi8uLi9jb3JlL3NyYy9lbnVtcy9lcnJvci1tZXNzYWdlLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvZW51bXMvaW5qZWN0YWJsZS1zY29wZS5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2VudW1zL3JwYy1yZXN1bHQtc3RhdHVzLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvYXBwL2NvbnN0YW50cy9pbmRleC50cyIsICIuLi8uLi9jb3JlL2Rpc3QvY2h1bmstN1FWWVU2M0UuanMiLCAiLi4vLi4vY29yZS9zcmMvdXRpbHMvZ2VuZXJhdGUtcmFuZG9tLWlkLnV0aWwudHMiLCAiLi4vLi4vY29yZS9zcmMvdXRpbHMvdHlwZS1jaGVjay51dGlsLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9hcHAtZW52aXJvbWVudC5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9jb3JlLW1ldGFkYXRhLWtleS5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9ldmVudC1kZXN0aW5hdGlvbi5lbnVtLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2FwcC9lbnVtcy9leGVjdXRpb24tY29udGV4dC10eXBlLmVudW0udHMiLCAiLi4vLi4vY29yZS9zcmMvYXBwL2VudW1zL21ldGhvZC1wYXJhbS10eXBlLmVudW0udHMiLCAiLi4vc3JjL3NlcnZpY2VzL3dlYnZpZXctcnBjLnNlcnZpY2UudHMiLCAiLi4vLi4vY29yZS9zcmMvZXJyb3JzL21hbmdvLmVycm9yLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2Vycm9ycy9ndWFyZC1jYW5jZWwuZXJyb3IudHMiLCAiLi4vLi4vY29yZS9zcmMvZXJyb3JzL2d1YXJkLWludmFsaWQtcmV0dXJuLmVycm9yLnRzIiwgIi4uLy4uL2NvcmUvc3JjL2Vycm9ycy90b28tbWFueS1yZXF1ZXN0cy5lcnJvci50cyIsICIuLi8uLi9jb3JlL3NyYy9lcnJvcnMvdW5rbm93bi5lcnJvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0eXBlIHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFdlYlZpZXdMb2dnZXJTZXJ2aWNlIGltcGxlbWVudHMgTG9nZ2VyU2VydmljZSB7XG4gICAgcHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFvwn6WtV2ViVmlld11bTG9nXWAsIC4uLmFyZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlcnJvciguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgW/Cfpa1XZWJWaWV3XVtFcnJvcl1gLCAuLi5hcmdzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2FybiguLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBb8J+lrVdlYlZpZXddW1dhcm5dYCwgLi4uYXJncyk7XG4gICAgfVxuXG4gICAgcHVibGljIGRlYnVnKC4uLmFyZ3M6IHVua25vd25bXSkge1xuICAgICAgICBjb25zb2xlLmRlYnVnKGBb8J+lrVdlYlZpZXddW0RlYnVnXWAsIC4uLmFyZ3MpO1xuICAgIH1cbn1cbiIsICJpbXBvcnQgdHlwZSB7IEV2ZW50U2VydmljZSwgU2NyaXB0RXZlbnRIYW5kbGVyIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjbGFzcyBXZWJWaWV3RXZlbnRTZXJ2aWNlIGltcGxlbWVudHMgRXZlbnRTZXJ2aWNlIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5ICRsb2NhbEhhbmRsZXJzOiBNYXA8c3RyaW5nLCBTZXQ8U2NyaXB0RXZlbnRIYW5kbGVyPj4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSAkcmVtb3RlSGFuZGxlcnM6IE1hcDxzdHJpbmcsIFNldDxTY3JpcHRFdmVudEhhbmRsZXI+PiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBvbjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICBjb25zdCBldmVudEhhbmRsZXI6IFNjcmlwdEV2ZW50SGFuZGxlciA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgZXZlbnRIYW5kbGVyLnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlcnMgPSB0aGlzLiRsb2NhbEhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiBjYWxsYmFjayxcbiAgICAgICAgICAgIGxvY2FsOiB0cnVlLFxuICAgICAgICAgICAgb25seU9uY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVtb3RlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy4kbG9jYWxIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSkhLmFkZChldmVudEhhbmRsZXIpO1xuXG4gICAgICAgIHJldHVybiBldmVudEhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIG9uY2U8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50SGFuZGxlci52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhbmRsZXJzID0gdGhpcy4kbG9jYWxIYW5kbGVycy5nZXQoZXZlbnROYW1lKTtcbiAgICAgICAgICAgICAgICBoYW5kbGVycz8uZGVsZXRlKGV2ZW50SGFuZGxlcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgaGFuZGxlcjogY2FsbGJhY2ssXG4gICAgICAgICAgICBsb2NhbDogdHJ1ZSxcbiAgICAgICAgICAgIG9ubHlPbmNlOiB0cnVlLFxuICAgICAgICAgICAgcmVtb3RlOiBmYWxzZSxcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuXG4gICAgICAgIGlmICghdGhpcy4kbG9jYWxIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSkhLmFkZChldmVudEhhbmRsZXIpO1xuXG4gICAgICAgIHJldHVybiA8U2NyaXB0RXZlbnRIYW5kbGVyPmV2ZW50SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdDxFIGV4dGVuZHMgc3RyaW5nPihldmVudE5hbWU6IEUsIGJvZHk/OiB1bmtub3duKSB7XG4gICAgICAgIGNvbnN0IGxpc3RlbmVycyA9IHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICAgIGxpc3RlbmVycz8uZm9yRWFjaCgoc2NyaXB0RXZlbnRIYW5kbGVyKSA9PiB7XG4gICAgICAgICAgICBzY3JpcHRFdmVudEhhbmRsZXIuaGFuZGxlcihib2R5KTtcbiAgICAgICAgICAgIGlmICghc2NyaXB0RXZlbnRIYW5kbGVyLm9ubHlPbmNlKSByZXR1cm47XG4gICAgICAgICAgICBzY3JpcHRFdmVudEhhbmRsZXIuZGVzdHJveSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QbGF5ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApIHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9ICguLi5hcmdzOiBhbnlbXSkgPT4gY2FsbGJhY2soYXJnc1swXSk7XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlcjogU2NyaXB0RXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgICAgICAvLyBJbiBSYWdlTVAgQ0VGLCB3ZSB1c2UgbXAudHJpZ2dlciB0byBjb21tdW5pY2F0ZVxuICAgICAgICAgICAgICAgIC8vIEV2ZW50cyBhcmUgcmVnaXN0ZXJlZCB2aWEgd2luZG93IGV2ZW50IGxpc3RlbmVycyBvciBtcC5ldmVudHNcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiB3cmFwcGVyLFxuICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgb25seU9uY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVtb3RlOiB0cnVlLFxuICAgICAgICAgICAgdmFsaWQ6IHRydWUsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gUmFnZU1QIENFRiB1c2VzIHdpbmRvdy1sZXZlbCBldmVudCByZWdpc3RyYXRpb25cbiAgICAgICAgaWYgKHR5cGVvZiAod2luZG93IGFzIGFueSkubXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAod2luZG93IGFzIGFueSkubXAuZXZlbnRzLmFkZChldmVudE5hbWUsIHdyYXBwZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLiRyZW1vdGVIYW5kbGVycy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgdGhpcy4kcmVtb3RlSGFuZGxlcnMuc2V0KGV2ZW50TmFtZSwgbmV3IFNldCgpKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiRyZW1vdGVIYW5kbGVycy5nZXQoZXZlbnROYW1lKSEuYWRkKGV2ZW50SGFuZGxlcik7XG5cbiAgICAgICAgcmV0dXJuIGV2ZW50SGFuZGxlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25jZVBsYXllcjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICBjb25zdCB3cmFwcGVyID0gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGV2ZW50SGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV2ZW50SGFuZGxlcjogU2NyaXB0RXZlbnRIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBldmVudEhhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYW5kbGVycyA9IHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgICAgIGhhbmRsZXJzPy5kZWxldGUoZXZlbnRIYW5kbGVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgICBoYW5kbGVyOiB3cmFwcGVyLFxuICAgICAgICAgICAgbG9jYWw6IGZhbHNlLFxuICAgICAgICAgICAgb25seU9uY2U6IHRydWUsXG4gICAgICAgICAgICByZW1vdGU6IHRydWUsXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAodHlwZW9mICh3aW5kb3cgYXMgYW55KS5tcCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICh3aW5kb3cgYXMgYW55KS5tcC5ldmVudHMuYWRkKGV2ZW50TmFtZSwgd3JhcHBlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuJHJlbW90ZUhhbmRsZXJzLmhhcyhldmVudE5hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLiRyZW1vdGVIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBuZXcgU2V0KCkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuJHJlbW90ZUhhbmRsZXJzLmdldChldmVudE5hbWUpIS5hZGQoZXZlbnRIYW5kbGVyKTtcblxuICAgICAgICByZXR1cm4gZXZlbnRIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0UGxheWVyPEUgZXh0ZW5kcyBzdHJpbmc+KGV2ZW50TmFtZTogRSwgYm9keT86IHVua25vd24pIHtcbiAgICAgICAgLy8gUmFnZU1QIENFRiB1c2VzIG1wLnRyaWdnZXIgdG8gc2VuZCBldmVudHMgdG8gY2xpZW50XG4gICAgICAgIGlmICh0eXBlb2YgKHdpbmRvdyBhcyBhbnkpLm1wICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgKHdpbmRvdyBhcyBhbnkpLm1wLnRyaWdnZXIoZXZlbnROYW1lLCBib2R5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNlcnZlcjxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgZXZlbnROYW1lOiBFLFxuICAgICAgICBjYWxsYmFjazogKGJvZHk6IHVua25vd24pID0+IHZvaWQgfCBQcm9taXNlPHZvaWQ+LFxuICAgICkge1xuICAgICAgICByZXR1cm4gdGhpcy5vblBsYXllcig8c3RyaW5nPmBXRUJWSUVXOjpPTl9TRVJWRVJfJHtldmVudE5hbWV9YCwgPGFueT5jYWxsYmFjayk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uY2VTZXJ2ZXI8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIGV2ZW50TmFtZTogRSxcbiAgICAgICAgY2FsbGJhY2s6IChib2R5OiB1bmtub3duKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPixcbiAgICApOiBTY3JpcHRFdmVudEhhbmRsZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmNlUGxheWVyKDxzdHJpbmc+YFdFQlZJRVc6Ok9OX1NFUlZFUl8ke2V2ZW50TmFtZX1gLCA8YW55PmNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW1pdFNlcnZlcjxFIGV4dGVuZHMgc3RyaW5nPihldmVudE5hbWU6IEUsIGJvZHk/OiB1bmtub3duKSB7XG4gICAgICAgIC8vIEluIFJhZ2VNUCwgd2UgZW1pdCB0byBjbGllbnQgd2hpY2ggdGhlbiBmb3J3YXJkcyB0byBzZXJ2ZXJcbiAgICAgICAgLy8gRGF0YSBtdXN0IGJlIEpTT04gc3RyaW5naWZpZWQgYmVjYXVzZSBSQUdFOk1QIGRvZXNuJ3QgcHJvcGVybHkgc2VyaWFsaXplIG9iamVjdHMgdmlhIG1wLnRyaWdnZXJcbiAgICAgICAgaWYgKHR5cGVvZiAod2luZG93IGFzIGFueSkubXAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAod2luZG93IGFzIGFueSkubXAudHJpZ2dlcignV0VCVklFVzo6RU1JVF9TRVJWRVInLCBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgICAgICAgIHBheWxvYWQ6IGJvZHksXG4gICAgICAgICAgICB9KSk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiZXhwb3J0IGVudW0gRXJyb3JNZXNzYWdlIHtcbiAgICBUb29NYW55UmVxdWVzdHMgPSAnVG9vIG1hbnkgcmVxdWVzdHMuJyxcblxuICAgIC8vIEV2ZW50c1xuICAgIEV2ZW50TmFtZU11c3RCZVN0cmluZyA9ICdUaGUgZXZlbnQgbmFtZSBtdXN0IGJlIGEgc3RyaW5nLicsXG4gICAgRXZlbnROYW1lTXVzdEJlVW5pcXVlID0gJ1RoZSBldmVudCBuYW1lIG11c3QgYmUgdW5pcXVlLicsXG4gICAgRXZlbnROb3RBbGxvd2VkSW5DbGllbnQgPSAnVGhlIGV2ZW50IGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjbGllbnQgZW52aXJvbm1lbnQuJyxcbiAgICBFdmVudE5vdEFsbG93ZWRJblNlcnZlciA9ICdUaGUgZXZlbnQgaXMgbm90IGFsbG93ZWQgaW4gdGhlIHNlcnZlciBlbnZpcm9ubWVudC4nLFxuICAgIEludmFsaWRFdmVudFR5cGUgPSAnSW52YWxpZCBldmVudCB0eXBlLicsXG4gICAgSW52YWxpZEludGVybmFsRXZlbnROYW1lID0gJ1RoZSBuYW1lIG9mIHRoZSBpbnRlcm5hbCBldmVudCBpcyBpbnZhbGlkLicsXG4gICAgSW52YWxpZFJldHVybkluRXZlbnQgPSAnQ2Fubm90IHJldHVybiBhIHZhbHVlIGZyb20gYW4gZXZlbnQuJyxcblxuICAgIC8vIFJQQ1xuICAgIFJQQ05hbWVNdXN0QmVTdHJpbmcgPSAnVGhlIFJQQyBuYW1lIG11c3QgYmUgYSBzdHJpbmcuJyxcbiAgICBSUENOYW1lTXVzdEJlVW5pcXVlID0gJ1RoZSBSUEMgbmFtZSBtdXN0IGJlIHVuaXF1ZS4nLFxuICAgIFJQQ05vdEFsbG93ZWRJbkNsaWVudCA9ICdUaGUgUlBDIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjbGllbnQgZW52aXJvbm1lbnQuJyxcbiAgICBSUENOb3RBbGxvd2VkSW5TZXJ2ZXIgPSAnVGhlIFJQQyBpcyBub3QgYWxsb3dlZCBpbiB0aGUgc2VydmVyIGVudmlyb25tZW50LicsXG4gICAgSW52YWxpZFJQQ1R5cGUgPSAnSW52YWxpZCBSUEMgdHlwZS4nLFxuICAgIFJQQ0hhbmRsZXJBbHJlYWR5RXhpc3RzID0gJ1RoZSBSUEMgaGFuZGxlciBhbHJlYWR5IGV4aXN0cy4gUGxlYXNlIHByb3ZpZGUgYSB1bmlxdWUgbmFtZSBmb3IgdGhlIFJQQy4nLFxuICAgIFJQQ1Jlc3BvbnNlQWxyZWFkeVNlbnQgPSAnVGhlIFJQQyByZXNwb25zZSBoYXMgYWxyZWFkeSBiZWVuIHNlbnQuJyxcblxuICAgIC8vIEVycm9yIGZpbHRlcnNcbiAgICBJbnZhbGlkRXJyb3JGaWx0ZXJEZWZpbml0aW9uID0gJ0ludmFsaWQgZXJyb3IgZmlsdGVyLiBFcnJvciBmaWx0ZXJzIG11c3QgYmUgYSBjbGFzcyByZWZlcmVuY2Ugb3IgYW4gb2JqZWN0IHdpdGggYSBjYXRjaCBtZXRob2QuJyxcbiAgICBFcnJvckFscmVhZHlIYW5kbGVkQnlGaWx0ZXIgPSAnVGhlIGVycm9yIGFscmVhZHkgcG9pbnRzIHRvIGEgZmlsdGVyLicsXG4gICAgRXhjZXB0aW9uSGFuZGxpbmdDb25mbGljdCA9ICdUaGUgc2FtZSBleGNlcHRpb24gY2FuIG9ubHkgYmUgY2F1Z2h0IG9uY2UuJyxcbiAgICBBdExlYXN0T25lRmlsdGVyUmVxdWlyZWQgPSAnQXQgbGVhc3Qgb25lIGVycm9yIGZpbHRlciBtdXN0IGJlIHByb3ZpZGVkLicsXG4gICAgRHVwbGljYXRlRXJyb3JGaWx0ZXJEZXRlY3RlZCA9ICdEdXBsaWNhdGUgZXJyb3IgZmlsdGVyIGZvdW5kLiBFbnN1cmUgdGhhdCB0aGUgc2FtZSBmaWx0ZXIgaXMgbm90IGFwcGxpZWQgbW9yZSB0aGFuIG9uY2UuJyxcblxuICAgIC8vIFdlYlZpZXdcbiAgICBXZWJWaWV3Tm90Rm91bmQgPSAnVGhlIFdlYlZpZXcgd2l0aCB0aGUgc3BlY2lmaWVkIGlkIGRvZXMgbm90IGV4aXN0LicsXG4gICAgV2ViVmlld0lkTXVzdEJlU3RyaW5nT3JOdW1iZXIgPSAnVGhlIFdlYlZpZXcgaWQgbXVzdCBiZSBhIHN0cmluZyBvciBudW1iZXIuJyxcblxuICAgIC8vIEd1YXJkXG4gICAgSW52YWxpZEd1YXJkRGVmaW5pdGlvbiA9ICdJbnZhbGlkIGd1YXJkLiBHdWFyZHMgbXVzdCBiZSBhIGNsYXNzIHJlZmVyZW5jZSBvciBhbiBvYmplY3Qgd2l0aCBhIGNhbkFjdGl2YXRlIG1ldGhvZC4nLFxuICAgIEF0TGVhc3RPbmVHdWFyZFJlcXVpcmVkID0gJ0F0IGxlYXN0IG9uZSBndWFyZCBtdXN0IGJlIHByb3ZpZGVkLicsXG5cbiAgICAvLyBJbnRlcmNlcHRvclxuICAgIEludmFsaWRJbnRlcmNlcHRvckRlZmluaXRpb24gPSAnSW52YWxpZCBpbnRlcmNlcHRvci4gSW50ZXJjZXB0b3JzIG11c3QgYmUgYSBjbGFzcyByZWZlcmVuY2Ugb3IgYW4gb2JqZWN0IHdpdGggYW4gaW50ZXJjZXB0IG1ldGhvZC4nLFxuICAgIEF0TGVhc3RPbmVJbnRlcmNlcHRvclJlcXVpcmVkID0gJ0F0IGxlYXN0IG9uZSBpbnRlcmNlcHRvciBtdXN0IGJlIHByb3ZpZGVkLicsXG4gICAgSW52YWxpZEludGVyY2VwdG9yUmV0dXJuVmFsdWUgPSAnVGhlIGludGVyY2VwdG9yIG11c3QgcmV0dXJuIGEgZnVuY3Rpb24uJyxcblxuICAgIC8vIFBpcGVcbiAgICBJbnZhbGlkUGlwZURlZmluaXRpb24gPSAnSW52YWxpZCBwaXBlLiBQaXBlcyBtdXN0IGJlIGEgY2xhc3MgcmVmZXJlbmNlIG9yIGFuIG9iamVjdCB3aXRoIGEgdHJhbnNmb3JtIG1ldGhvZC4nLFxuICAgIEF0TGVhc3RPbmVQaXBlUmVxdWlyZWQgPSAnQXQgbGVhc3Qgb25lIHBpcGUgbXVzdCBiZSBwcm92aWRlZC4nLFxuXG4gICAgLy8gQXBwIGxvYWRpbmdcbiAgICBBcHBBbHJlYWR5TG9hZGVkID0gJ0FwcCBpcyBhbHJlYWR5IGxvYWRlZC4gUGxlYXNlIGNhbGwgdGhlIHN0b3AgbWV0aG9kIGJlZm9yZSBjYWxsaW5nIHRoZSBzdGFydCBtZXRob2QuJyxcbiAgICBBcHBOb3RMb2FkZWQgPSAnQXBwIGlzIG5vdCBsb2FkZWQuIFBsZWFzZSBjYWxsIHRoZSBzdGFydCBtZXRob2QgYmVmb3JlIGNhbGxpbmcgdGhlIHN0b3AgbWV0aG9kLicsXG5cbiAgICAvLyBEZWNvcmF0b3JzXG4gICAgSW52YWxpZEluamVjdGlvblRva2VuU3BlY2lmaWVkID0gJ1RoZSBzcGVjaWZpZWQgaW5qZWN0aW9uIHRva2VuIGlzIGludmFsaWQuJyxcbiAgICBJbmplY3Rpb25Ub2tlbk5vdEZvdW5kID0gJ1RoZSBpbmplY3Rpb24gdG9rZW4gY291bGQgbm90IGJlIGZvdW5kLicsXG4gICAgUGFyYW1LZXlNdXN0QmVTdHJpbmcgPSAnVGhlIHBhcmFtIGtleSBtdXN0IGJlIGEgc3RyaW5nLicsXG4gICAgSW5kZXhLZXlNdXN0QmVOdW1iZXIgPSAnVGhlIGluZGV4IGtleSBtdXN0IGJlIGEgbnVtYmVyLicsXG4gICAgRHVwbGljYXRlRGVjb3JhdG9yVXNhZ2UgPSAnVGhlIHNhbWUgZGVjb3JhdG9yIGNhbiBvbmx5IGJlIHVzZWQgb25jZSBpbiB0aGUgc2FtZSBjbGFzcy4nLFxuICAgIEludmFsaWRDb250cm9sbGVyT3B0aW9ucyA9ICdJbnZhbGlkIGNvbnRyb2xsZXIgb3B0aW9ucyBmb3VuZC4nLFxuICAgIEludmFsaWRJbmplY3RhYmxlT3B0aW9ucyA9ICdJbnZhbGlkIGluamVjdGFibGUgb3B0aW9ucyBmb3VuZC4nLFxuICAgIEludmFsaWRNb2R1bGVPcHRpb25zID0gJ0ludmFsaWQgbW9kdWxlIG9wdGlvbnMgZm91bmQuJyxcbiAgICBNdWx0aXBsZURlY29yYXRvcnNPblNpbmdsZVBhcmFtZXRlck5vdEFsbG93ZWQgPSAnQ2Fubm90IGFwcGx5IG11bHRpcGxlIGRlY29yYXRvcnMgdG8gdGhlIHNhbWUgcGFyYW1ldGVyLicsXG5cbiAgICAvLyBJbnRlcm5hbCBBcHBcbiAgICBDaXJjdWxhckRlcGVuZGVuY3lEZXRlY3RlZCA9ICdDaXJjdWxhciBkZXBlbmRlbmN5IGRldGVjdGVkLicsXG4gICAgSW52YWxpZE1vZHVsZURlZmluaXRpb24gPSAnVGhlIG1vZHVsZSBpcyBpbnZhbGlkLicsXG4gICAgSW52YWxpZEV4cG9ydERlZmluaXRpb24gPSAnVGhlIGV4cG9ydCBpcyBpbnZhbGlkLicsXG4gICAgSW52YWxpZFByb3ZpZGVyRGVmaW5pdGlvbiA9ICdUaGUgcHJvdmlkZXIgaXMgaW52YWxpZC4nLFxuICAgIEludmFsaWRQYXJhbWV0ZXJEZWNvcmF0b3JVc2FnZSA9ICdFYWNoIHBhcmFtZXRlciBtdXN0IGhhdmUgdGhlaXIgaXRzIG93biBkZWNvcmF0b3IuJyxcbiAgICBSZXNwb25zZURlY29yYXRvck5vdEFsbG93ZWRPbkV2ZW50cyA9ICdUaGUgQFJlc3BvbnNlKCkgZGVjb3JhdG9yIGlzIG5vdCBhbGxvd2VkIG9uIGV2ZW50cy4nLFxuICAgIFBsYXllckRlY29yYXRvck5vdEFsbG93ZWRPbkNsaWVudEV2ZW50cyA9ICdUaGUgQFBsYXllcigpIGRlY29yYXRvciBpcyBub3QgYWxsb3dlZCBvbiBjbGllbnQgZXZlbnRzLicsXG5cbiAgICAvLyBUaW1lcnNcbiAgICBUaW1lck5hbWVNdXN0QmVTdHJpbmcgPSAnVGhlIHRpbWVyIG5hbWUgbXVzdCBiZSBhIHN0cmluZy4nLFxufVxuIiwgImV4cG9ydCBlbnVtIEluamVjdGFibGVTY29wZSB7XG4gICAgUmVxdWVzdCA9ICdyZXF1ZXN0JyxcbiAgICBUcmFuc2llbnQgPSAndHJhbnNpZW50JyxcbiAgICBTaW5nbGV0b24gPSAnc2luZ2xldG9uJyxcbn1cbiIsICJleHBvcnQgZW51bSBSUENSZXN1bHRTdGF0dXMge1xuICAgIFN1Y2Nlc3MgPSAxLFxuICAgIFRpbWVvdXQgPSAyLFxuICAgIEhhbmRsZXJOb3RGb3VuZCA9IDMsXG4gICAgVW5rbm93biA9IDQsXG4gICAgQ2FuY2VsbGVkQnlHdWFyZCA9IDUsXG4gICAgSW52YWxpZEd1YXJkUmV0dXJuID0gNixcbiAgICBUb29NYW55UmVxdWVzdHMgPSA3LFxuICAgIFBsYXllckRpc2Nvbm5lY3RlZCA9IDgsXG4gICAgUGxheWVyTm90Rm91bmQgPSA5LFxufVxuIiwgImltcG9ydCB7IFJQQ1Jlc3VsdFN0YXR1cyB9IGZyb20gJy4uLy4uL2VudW1zJztcbmltcG9ydCB0eXBlIHsgUlBDUmVzdWx0IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbmV4cG9ydCBjb25zdCBJTlRFUk5BTF9BUFBfQ09OVEFJTkVSID0gJ0lOVEVSTkFMX0FQUF9DT05UQUlORVInO1xuZXhwb3J0IGNvbnN0IEdMT0JBTF9BUFBfQ09OVEFJTkVSID0gJ0dMT0JBTF9BUFBfQ09OVEFJTkVSJztcbmV4cG9ydCBjb25zdCBBUFBfRU5WSVJPTUVOVCA9ICdBUFBfRU5WSVJPTUVOVCc7XG5cbmV4cG9ydCBjb25zdCBHTE9CQUxfR1VBUkRTID0gJ0dMT0JBTF9HVUFSRFMnO1xuZXhwb3J0IGNvbnN0IEdMT0JBTF9JTlRFUkNFUFRPUlMgPSAnR0xPQkFMX0lOVEVSQ0VQVE9SUyc7XG5leHBvcnQgY29uc3QgR0xPQkFMX1BJUEVTID0gJ0dMT0JBTF9QSVBFUyc7XG5leHBvcnQgY29uc3QgR0xPQkFMX0VSUk9SX0ZJTFRFUlMgPSAnR0xPQkFMX0VSUk9SX0ZJTFRFUlMnO1xuXG5leHBvcnQgY29uc3QgUExVR0lOUyA9ICdQTFVHSU5TJztcblxuZXhwb3J0IGNvbnN0IEVOQUJMRV9TSFVURE9XTl9IT09LUyA9ICdFTkFCTEVfU0hVVERPV05fSE9PS1MnO1xuZXhwb3J0IGNvbnN0IENPTlRBSU5FUl9PUFRJT05TID0gJ0NPTlRBSU5FUl9PUFRJT05TJztcbmV4cG9ydCBjb25zdCBMT0dfRVJST1JfU1RBQ0tUUkFDRSA9ICdMT0dfRVJST1JfU1RBQ0tUUkFDRSc7XG5cbmV4cG9ydCBjb25zdCBNQU5HT19MT0dfUFJFRklYID0gJ/Cfpa0nO1xuXG5leHBvcnQgY29uc3QgTUFOR09fUkVRVUVTVF9GQUNUT1JZID0gJ01BTkdPX1JFUVVFU1RfRkFDVE9SWSc7XG5leHBvcnQgY29uc3QgTUFOR09fUkVTUE9OU0VfRkFDVE9SWSA9ICdNQU5HT19SRVNQT05TRV9GQUNUT1JZJztcbmV4cG9ydCBjb25zdCBFWEVDVVRJT05fQ09OVEVYVF9GQUNUT1JZID0gJ0VYRUNVVElPTl9DT05URVhUX0ZBQ1RPUlknO1xuXG5leHBvcnQgY29uc3QgTVVMVElQTEFZRVJfU0VSVklDRSA9ICdNVUxUSVBMQVlFUl9TRVJWSUNFJztcblxuZXhwb3J0IGNvbnN0IFJQQ19SRVNVTFRfVElNRU9VVDogUlBDUmVzdWx0ID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yOiB7IG1lc3NhZ2U6ICdSUEMgY2FsbCB0aW1lZCBvdXQuJyB9LFxuICAgIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLlRpbWVvdXQsXG59O1xuXG5leHBvcnQgY29uc3QgUlBDX1JFU1VMVF9IQU5ETEVSX05PVF9GT1VORDogUlBDUmVzdWx0ID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yOiB7IG1lc3NhZ2U6ICdSUEMgaGFuZGxlciBub3QgZm91bmQuJyB9LFxuICAgIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLkhhbmRsZXJOb3RGb3VuZCxcbn07XG5cbmV4cG9ydCBjb25zdCBSUENfUkVTVUxUX1VOS05PV046IFJQQ1Jlc3VsdCA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvcjogeyBtZXNzYWdlOiAnVW5rbm93biBlcnJvci4nIH0sXG4gICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuVW5rbm93bixcbn07XG5cbmV4cG9ydCBjb25zdCBSUENfUkVTVUxUX1BMQVlFUl9ESVNDT05ORUNURUQ6IFJQQ1Jlc3VsdCA9IHtcbiAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICBlcnJvcjogeyBtZXNzYWdlOiAnUGxheWVyIGRpc2Nvbm5lY3RlZC4nIH0sXG4gICAgc3RhdHVzOiBSUENSZXN1bHRTdGF0dXMuUGxheWVyRGlzY29ubmVjdGVkLFxufTtcblxuZXhwb3J0IGNvbnN0IFJQQ19SRVNVTFRfUExBWUVSX05PVF9GT1VORDogUlBDUmVzdWx0ID0ge1xuICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgIGVycm9yOiB7IG1lc3NhZ2U6ICdQbGF5ZXIgbm90IGZvdW5kLicgfSxcbiAgICBzdGF0dXM6IFJQQ1Jlc3VsdFN0YXR1cy5QbGF5ZXJOb3RGb3VuZCxcbn07XG4iLCAidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX25hbWUgPSAodGFyZ2V0LCB2YWx1ZSk9Pl9fZGVmUHJvcCh0YXJnZXQsIFwibmFtZVwiLCB7XG4gICAgICAgIHZhbHVlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KTtcbmV4cG9ydCB7IF9fbmFtZSB9OyAvLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV3b2dJQ0oyWlhKemFXOXVJam9nTXl3S0lDQWljMjkxY21ObGN5STZJRnRkTEFvZ0lDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNklGdGRMQW9nSUNKdFlYQndhVzVuY3lJNklDSWlMQW9nSUNKdVlXMWxjeUk2SUZ0ZENuMEtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklpSjkiLCAiZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUmFuZG9tSWQoKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNSkgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMiwgMTUpO1xufVxuIiwgImV4cG9ydCBjb25zdCBpc1VuZGVmaW5lZCA9IChvYmo6IGFueSk6IG9iaiBpcyB1bmRlZmluZWQgPT4gdHlwZW9mIG9iaiA9PT0gJ3VuZGVmaW5lZCc7XG5leHBvcnQgY29uc3QgaXNPYmplY3QgPSAoZm46IGFueSk6IGZuIGlzIG9iamVjdCA9PiAhaXNOaWwoZm4pICYmIHR5cGVvZiBmbiA9PT0gJ29iamVjdCc7XG5leHBvcnQgY29uc3QgaXNGdW5jdGlvbiA9ICh2YWw6IGFueSk6IHZhbCBpcyBGdW5jdGlvbiA9PiB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nO1xuZXhwb3J0IGNvbnN0IGlzU3RyaW5nID0gKHZhbDogYW55KTogdmFsIGlzIHN0cmluZyA9PiB0eXBlb2YgdmFsID09PSAnc3RyaW5nJztcbmV4cG9ydCBjb25zdCBpc051bWJlciA9ICh2YWw6IGFueSk6IHZhbCBpcyBudW1iZXIgPT4gdHlwZW9mIHZhbCA9PT0gJ251bWJlcic7XG5leHBvcnQgY29uc3QgaXNDb25zdHJ1Y3RvciA9ICh2YWw6IGFueSk6IGJvb2xlYW4gPT4gdmFsID09PSAnY29uc3RydWN0b3InO1xuZXhwb3J0IGNvbnN0IGlzTmlsID0gKHZhbDogYW55KTogdmFsIGlzIG51bGwgfCB1bmRlZmluZWQgPT4gaXNVbmRlZmluZWQodmFsKSB8fCB2YWwgPT09IG51bGw7XG5leHBvcnQgY29uc3QgaXNFbXB0eSA9IChhcnJheTogYW55KTogYm9vbGVhbiA9PiAhKGFycmF5ICYmIGFycmF5Lmxlbmd0aCA+IDApO1xuZXhwb3J0IGNvbnN0IGlzU3ltYm9sID0gKHZhbDogYW55KTogdmFsIGlzIHN5bWJvbCA9PiB0eXBlb2YgdmFsID09PSAnc3ltYm9sJztcbmV4cG9ydCBjb25zdCBpc0FzeW5jRnVuY3Rpb24gPSAodmFsOiBhbnkpOiBib29sZWFuID0+IGlzRnVuY3Rpb24odmFsKSAmJiB2YWwuY29uc3RydWN0b3IubmFtZSA9PT0gJ0FzeW5jRnVuY3Rpb24nO1xuZXhwb3J0IGNvbnN0IGlzQm9vbGVhbiA9ICh2YWw6IGFueSk6IHZhbCBpcyBib29sZWFuID0+IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJztcbmV4cG9ydCBjb25zdCBpc1Byb21pc2UgPSA8VCA9IGFueT4odmFsOiBhbnkpOiB2YWwgaXMgUHJvbWlzZTxUPiA9PiB2YWwgaW5zdGFuY2VvZiBQcm9taXNlO1xuIiwgImV4cG9ydCBlbnVtIEFwcEVudmlyb21lbnQge1xuICAgIENsaWVudCxcbiAgICBTZXJ2ZXIsXG59XG4iLCAiZXhwb3J0IGVudW0gQ29yZU1ldGFkYXRhS2V5IHtcbiAgICAvLyBHZW5lcmFsXG4gICAgSW5qZWN0YWJsZSA9ICdtYW5nbzppbmplY3RhYmxlJyxcbiAgICBJbmplY3QgPSAnbWFuZ286aW5qZWN0JyxcbiAgICBNb2R1bGUgPSAnbWFuZ286bW9kdWxlJyxcbiAgICBHbG9iYWxNb2R1bGUgPSAnbWFuZ286Z2xvYmFsLW1vZHVsZScsXG4gICAgQ29udHJvbGxlciA9ICdtYW5nbzpjb250cm9sbGVyLW9wdGlvbnMnLFxuICAgIC8vIEV2ZW50cyAmIFJQQ1xuICAgIENvbnRyb2xsZXJFdmVudHMgPSAnbWFuZ286Y29udHJvbGxlci1ldmVudHMnLFxuICAgIENvbnRyb2xsZXJSUENzID0gJ21hbmdvOmNvbnRyb2xsZXItcnBjcycsXG4gICAgQ29udHJvbGxlclBhcmFtcyA9ICdtYW5nbzpjb250cm9sbGVyLXJwYy1wYXJhbXMnLFxuICAgIC8vIFBpcGVsaW5lXG4gICAgR3VhcmRzID0gJ21hbmdvOmd1YXJkcycsXG4gICAgSW50ZXJjZXB0b3JzID0gJ21hbmdvOmludGVyY2VwdG9ycycsXG4gICAgUGlwZXMgPSAnbWFuZ286cGlwZXMnLFxuICAgIC8vIEVycm9yXG4gICAgQ2F0Y2ggPSAnbWFuZ286Y2F0Y2gnLFxuICAgIEVycm9yRmlsdGVycyA9ICdtYW5nbzplcnJvci1maWx0ZXJzJyxcbiAgICAvL1xuICAgIFRpbWVycyA9ICdtYW5nbzp0aW1lcnMnLFxufVxuIiwgImV4cG9ydCBlbnVtIEV2ZW50RGVzdGluYXRpb24ge1xuICAgIFNlcnZlciA9ICdzZXJ2ZXInLFxuICAgIENsaWVudCA9ICdjbGllbnQnLFxuICAgIFdlYlZpZXcgPSAnd2VidmlldycsXG59XG4iLCAiZXhwb3J0IGVudW0gRXhlY3V0aW9uQ29udGV4dFR5cGUge1xuICAgIEV2ZW50ID0gJ2V2ZW50JyxcbiAgICBSUEMgPSAncnBjJyxcbn1cbiIsICJleHBvcnQgZW51bSBNZXRob2RQYXJhbVR5cGUge1xuICAgIEJvZHkgPSAnYm9keScsXG4gICAgQ3VzdG9tID0gJ2N1c3RvbScsXG4gICAgUGFyYW0gPSAncGFyYW0nLFxuICAgIFBsYXllciA9ICdwbGF5ZXInLFxuICAgIFJlcXVlc3QgPSAncmVxdWVzdCcsXG4gICAgUmVzcG9uc2UgPSAncmVzcG9uc2UnLFxuICAgIEluZGV4ID0gJ2luZGV4Jyxcbn1cbiIsICJpbXBvcnQgeyB0eXBlIFJQQ0NhbGxPcHRpb25zLCB0eXBlIFJQQ1Jlc3VsdCwgdHlwZSBTY3JpcHRSUENIYW5kbGVyIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUlBDX1JFU1VMVF9IQU5ETEVSX05PVF9GT1VORCwgUlBDX1JFU1VMVF9USU1FT1VUIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2FwcC9jb25zdGFudHMnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFNlcnZpY2UsIFJQQ1NlcnZpY2UgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB0eXBlIHsgV2ViVmlld0V2ZW50U2VydmljZSB9IGZyb20gJy4vd2Vidmlldy1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB0eXBlIHsgV2ViVmlld0xvZ2dlclNlcnZpY2UgfSBmcm9tICcuL3dlYnZpZXctbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21JZCwgaXNOaWwgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlLCBSUENSZXN1bHRTdGF0dXMgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvZW51bXMnO1xuaW1wb3J0IHsgRXZlbnREZXN0aW5hdGlvbiB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS9hcHAvZW51bXMnO1xuaW1wb3J0IHR5cGUgeyBSUENQYXlsb2FkIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2FwcC9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNsYXNzIFdlYlZpZXdSUENTZXJ2aWNlIGltcGxlbWVudHMgUlBDU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSAkVElNRU9VVCA9IDIwMDA7XG4gICAgcHVibGljIHJlYWRvbmx5ICRsb2NhbEhhbmRsZXJzID0gbmV3IE1hcDxzdHJpbmcsIFNjcmlwdFJQQ0hhbmRsZXI+KCk7XG4gICAgcHVibGljIHJlYWRvbmx5ICRjbGllbnRIYW5kbGVycyA9IG5ldyBNYXA8c3RyaW5nLCBTY3JpcHRSUENIYW5kbGVyPigpO1xuICAgIHB1YmxpYyByZWFkb25seSAkc2VydmVySGFuZGxlcnMgPSBuZXcgTWFwPHN0cmluZywgU2NyaXB0UlBDSGFuZGxlcj4oKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5ICRldmVudFNlcnZpY2U6IFdlYlZpZXdFdmVudFNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgJGxvZ2dlclNlcnZpY2U6IFdlYlZpZXdMb2dnZXJTZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIGFzeW5jIGNhbGw8RSBleHRlbmRzIHN0cmluZz4oXG4gICAgICAgIHJwY05hbWU6IEUsXG4gICAgICAgIGJvZHk/OiB1bmtub3duLFxuICAgICAgICBvcHRpb25zOiBSUENDYWxsT3B0aW9ucyA9IHsgdGltZW91dDogdGhpcy4kVElNRU9VVCB9LFxuICAgICk6IFByb21pc2U8UlBDUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnBjSGFuZGxlciA9IHRoaXMuJGxvY2FsSGFuZGxlcnMuZ2V0KHJwY05hbWUpO1xuICAgICAgICAgICAgaWYgKGlzTmlsKHJwY0hhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoUlBDX1JFU1VMVF9USU1FT1VUKTtcbiAgICAgICAgICAgIH0sIG9wdGlvbnMudGltZW91dCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJwY0hhbmRsZXIuaGFuZGxlcihib2R5KTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgICAgICAgcmVzb2x2ZSh7IHN1Y2Nlc3M6IHRydWUsIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLlN1Y2Nlc3MsIGJvZHk6IHJlc3VsdCwgZXJyb3I6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUmVxdWVzdDxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgcnBjTmFtZTogRSxcbiAgICAgICAgaGFuZGxlcjogKGJvZHk6IHVua25vd24pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+LFxuICAgICk6IFNjcmlwdFJQQ0hhbmRsZXIge1xuICAgICAgICBpZiAodGhpcy4kbG9jYWxIYW5kbGVycy5oYXMocnBjTmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuJGxvZ2dlclNlcnZpY2UuZXJyb3IoJ0FuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlZ2lzdGVyaW5nIGEgUlBDIGhhbmRsZXIuJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoRXJyb3JNZXNzYWdlLlJQQ0hhbmRsZXJBbHJlYWR5RXhpc3RzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBycGNIYW5kbGVyOiBTY3JpcHRSUENIYW5kbGVyID0ge1xuICAgICAgICAgICAgZGVzdHJveTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICBycGNIYW5kbGVyLnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5kZWxldGUocnBjTmFtZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnBjTmFtZSxcbiAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4kbG9jYWxIYW5kbGVycy5zZXQocnBjTmFtZSwgcnBjSGFuZGxlcik7XG4gICAgICAgIHJldHVybiBycGNIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsU2VydmVyPEUgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICBycGNOYW1lOiBFLFxuICAgICAgICBib2R5PzogdW5rbm93bixcbiAgICAgICAgb3B0aW9uczogUlBDQ2FsbE9wdGlvbnMgPSB7IHRpbWVvdXQ6IHRoaXMuJFRJTUVPVVQgfSxcbiAgICApOiBQcm9taXNlPFJQQ1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy4kaGFuZGxlQ2FsbChycGNOYW1lLCBFdmVudERlc3RpbmF0aW9uLlNlcnZlciwgb3B0aW9ucywgYm9keSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VydmVyUmVxdWVzdDxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgcnBjTmFtZTogRSxcbiAgICAgICAgaGFuZGxlcjogKGJvZHk6IHVua25vd24pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+LFxuICAgICk6IFNjcmlwdFJQQ0hhbmRsZXIge1xuICAgICAgICBpZiAodGhpcy4kc2VydmVySGFuZGxlcnMuaGFzKHJwY05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2dnZXJTZXJ2aWNlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZWdpc3RlcmluZyBhIFJQQyBoYW5kbGVyLicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKEVycm9yTWVzc2FnZS5SUENIYW5kbGVyQWxyZWFkeUV4aXN0cyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcnBjSGFuZGxlcjogU2NyaXB0UlBDSGFuZGxlciA9IHtcbiAgICAgICAgICAgIGRlc3Ryb3k6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgcnBjSGFuZGxlci52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuJHNlcnZlckhhbmRsZXJzLmRlbGV0ZShycGNOYW1lKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBycGNOYW1lLFxuICAgICAgICAgICAgaGFuZGxlcixcbiAgICAgICAgICAgIHZhbGlkOiB0cnVlLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiRzZXJ2ZXJIYW5kbGVycy5zZXQocnBjTmFtZSwgcnBjSGFuZGxlcik7XG4gICAgICAgIHJldHVybiBycGNIYW5kbGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsUGxheWVyPEUgZXh0ZW5kcyBzdHJpbmc+KFxuICAgICAgICBycGNOYW1lOiBFLFxuICAgICAgICBib2R5PzogdW5rbm93bixcbiAgICAgICAgb3B0aW9uczogUlBDQ2FsbE9wdGlvbnMgPSB7IHRpbWVvdXQ6IHRoaXMuJFRJTUVPVVQgfSxcbiAgICApOiBQcm9taXNlPFJQQ1Jlc3VsdD4ge1xuICAgICAgICByZXR1cm4gdGhpcy4kaGFuZGxlQ2FsbChycGNOYW1lLCBFdmVudERlc3RpbmF0aW9uLkNsaWVudCwgb3B0aW9ucywgYm9keSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUGxheWVyUmVxdWVzdDxFIGV4dGVuZHMgc3RyaW5nPihcbiAgICAgICAgcnBjTmFtZTogRSxcbiAgICAgICAgaGFuZGxlcjogKGJvZHk6IHVua25vd24pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+LFxuICAgICk6IFNjcmlwdFJQQ0hhbmRsZXIge1xuICAgICAgICBpZiAodGhpcy4kY2xpZW50SGFuZGxlcnMuaGFzKHJwY05hbWUpKSB7XG4gICAgICAgICAgICB0aGlzLiRsb2dnZXJTZXJ2aWNlLmVycm9yKCdBbiBlcnJvciBvY2N1cnJlZCB3aGlsZSByZWdpc3RlcmluZyBhIFJQQyBsaXN0ZW5lci4nKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihFcnJvck1lc3NhZ2UuUlBDSGFuZGxlckFscmVhZHlFeGlzdHMpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJwY0hhbmRsZXI6IFNjcmlwdFJQQ0hhbmRsZXIgPSB7XG4gICAgICAgICAgICBkZXN0cm95OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIHJwY0hhbmRsZXIudmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLiRjbGllbnRIYW5kbGVycy5kZWxldGUocnBjTmFtZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcnBjTmFtZSxcbiAgICAgICAgICAgIGhhbmRsZXIsXG4gICAgICAgICAgICB2YWxpZDogdHJ1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4kY2xpZW50SGFuZGxlcnMuc2V0KHJwY05hbWUsIHJwY0hhbmRsZXIpO1xuICAgICAgICByZXR1cm4gcnBjSGFuZGxlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jICRoYW5kbGVDYWxsPFRSZXN1bHQ+KFxuICAgICAgICBycGNOYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlc3RpbmF0aW9uOiBFdmVudERlc3RpbmF0aW9uLCAvLyAnY2xpZW50JyB8ICdzZXJ2ZXInLFxuICAgICAgICBvcHRpb25zPzogUGFydGlhbDxSUENDYWxsT3B0aW9ucz4sXG4gICAgICAgIGJvZHk/OiB1bmtub3duLFxuICAgICkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8UlBDUmVzdWx0PFRSZXN1bHQ+PigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsbElkID0gZ2VuZXJhdGVSYW5kb21JZCgpO1xuICAgICAgICAgICAgbGV0IHRpbWVvdXRJZDogbnVtYmVyO1xuXG4gICAgICAgICAgICBjb25zdCBvbmNlSGFuZGxlID0gKGJvZHk6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKDxSUENSZXN1bHQ8VFJlc3VsdD4+Ym9keSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3Qgc2NyaXB0RXZlbnRIYW5kbGVyID1cbiAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9PT0gRXZlbnREZXN0aW5hdGlvbi5TZXJ2ZXJcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLiRldmVudFNlcnZpY2Uub25jZVNlcnZlcihgUlBDOjpSRVRVUk5fRlJPTV9TRVJWRVJfJHtjYWxsSWR9YCwgb25jZUhhbmRsZSlcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLiRldmVudFNlcnZpY2Uub25jZVBsYXllcihgUlBDOjpSRVRVUk5fRlJPTV9DTElFTlRfJHtjYWxsSWR9YCwgb25jZUhhbmRsZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHBheWxvYWQ6IFJQQ1BheWxvYWQgPSB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBFdmVudERlc3RpbmF0aW9uLldlYlZpZXcsXG4gICAgICAgICAgICAgICAgZGVzdGluYXRpb24sXG4gICAgICAgICAgICAgICAgaWQ6IGNhbGxJZCxcbiAgICAgICAgICAgICAgICBycGNOYW1lLFxuICAgICAgICAgICAgICAgIGJvZHksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVzdGluYXRpb24gPT09IEV2ZW50RGVzdGluYXRpb24uU2VydmVyXG4gICAgICAgICAgICAgICAgPyAoPEV2ZW50U2VydmljZT50aGlzLiRldmVudFNlcnZpY2UpLmVtaXRQbGF5ZXIoJ1JQQzo6Q0FMTF9TRVJWRVInLCBwYXlsb2FkKVxuICAgICAgICAgICAgICAgIDogKDxFdmVudFNlcnZpY2U+dGhpcy4kZXZlbnRTZXJ2aWNlKS5lbWl0UGxheWVyKCdSUEM6OkNBTExfQ0xJRU5UJywgcGF5bG9hZCk7XG5cbiAgICAgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNjcmlwdEV2ZW50SGFuZGxlci5kZXN0cm95KCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSg8UlBDUmVzdWx0PFRSZXN1bHQ+PlJQQ19SRVNVTFRfVElNRU9VVCk7XG4gICAgICAgICAgICB9LCBvcHRpb25zPy50aW1lb3V0ID8/IHRoaXMuJFRJTUVPVVQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgY2xhc3MgTWFuZ29FcnJvcjxURGV0YWlscyA9IHVua25vd24+IGV4dGVuZHMgRXJyb3Ige1xuICAgIHB1YmxpYyBzdGF0dXM6IG51bWJlciA9IFJQQ1Jlc3VsdFN0YXR1cy5Vbmtub3duO1xuICAgIHB1YmxpYyBkZXRhaWxzOiBURGV0YWlscyB8IHVuZGVmaW5lZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHN0YXR1cz86IG51bWJlciwgZGV0YWlscz86IFREZXRhaWxzKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLnN0YXR1cyA9IHN0YXR1cyA/PyBSUENSZXN1bHRTdGF0dXMuVW5rbm93bjtcbiAgICAgICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgTWFuZ29FcnJvciB9IGZyb20gJy4vbWFuZ28uZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgR3VhcmRDYW5jZWxFcnJvciBleHRlbmRzIE1hbmdvRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoJ1Byb2Nlc3MgY2FuY2VsbGVkIGJ5IHRoZSBndWFyZC4nLCBSUENSZXN1bHRTdGF0dXMuQ2FuY2VsbGVkQnlHdWFyZCk7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFJQQ1Jlc3VsdFN0YXR1cyB9IGZyb20gJy4uL2VudW1zJztcbmltcG9ydCB7IE1hbmdvRXJyb3IgfSBmcm9tICcuL21hbmdvLmVycm9yJztcblxuZXhwb3J0IGNsYXNzIEd1YXJkSW52YWxpZFJldHVybkVycm9yIGV4dGVuZHMgTWFuZ29FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignR3VhcmQgcmV0dXJuZWQgYW4gaW52YWxpZCB2YWx1ZS4gRXhwZWN0ZWQgYm9vbGVhbi4nLCBSUENSZXN1bHRTdGF0dXMuSW52YWxpZEd1YXJkUmV0dXJuKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgTWFuZ29FcnJvciB9IGZyb20gJy4vbWFuZ28uZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgVG9vTWFueVJlcXVlc3RzIGV4dGVuZHMgTWFuZ29FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2UgPSAnVG9vIG1hbnkgcmVxdWVzdHMuJykge1xuICAgICAgICBzdXBlcihtZXNzYWdlLCBSUENSZXN1bHRTdGF0dXMuVG9vTWFueVJlcXVlc3RzKTtcbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnLi4vZW51bXMnO1xuaW1wb3J0IHsgTWFuZ29FcnJvciB9IGZyb20gJy4vbWFuZ28uZXJyb3InO1xuXG5leHBvcnQgY2xhc3MgVW5rbm93bkVycm9yIGV4dGVuZHMgTWFuZ29FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcignVW5rbm93biBlcnJvci4nLCBSUENSZXN1bHRTdGF0dXMuVW5rbm93bik7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IFdlYlZpZXdFdmVudFNlcnZpY2UsIFdlYlZpZXdMb2dnZXJTZXJ2aWNlLCBXZWJWaWV3UlBDU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdAcmFnZW1wLW1hbmdvL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgUlBDX1JFU1VMVF9IQU5ETEVSX05PVF9GT1VORCwgUlBDX1JFU1VMVF9VTktOT1dOIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2FwcC9jb25zdGFudHMnO1xuaW1wb3J0IHsgUlBDUmVzdWx0U3RhdHVzIH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2VudW1zJztcbmltcG9ydCB0eXBlIHsgTG9nZ2VyU2VydmljZSwgUlBDUmVzdWx0IH0gZnJvbSAnQHJhZ2VtcC1tYW5nby9jb3JlL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFuZ29FcnJvciB9IGZyb20gJ0ByYWdlbXAtbWFuZ28vY29yZS9lcnJvcnMnO1xuaW1wb3J0IHR5cGUgeyBFdmVudFNlcnZpY2UsIFJQQ1NlcnZpY2UgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5pdE1hbmdvKCkge1xuICAgIGlmICghaXNOaWwod2luZG93Lm1hbmdvKSkge1xuICAgICAgICByZXR1cm4gd2luZG93Lm1hbmdvO1xuICAgIH1cblxuICAgIGNvbnN0IGV2ZW50ID0gbmV3IFdlYlZpZXdFdmVudFNlcnZpY2UoKTtcbiAgICBjb25zdCBsb2dnZXIgPSBuZXcgV2ViVmlld0xvZ2dlclNlcnZpY2UoKTtcbiAgICBjb25zdCBycGMgPSBuZXcgV2ViVmlld1JQQ1NlcnZpY2UoZXZlbnQsIGxvZ2dlcik7XG5cbiAgICAoPEV2ZW50U2VydmljZT5ldmVudCkub25TZXJ2ZXIoJ1JQQzo6Q0FMTF9XRUJWSUVXJywgYXN5bmMgKGJvZHkpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib2R5LmlkO1xuICAgICAgICBjb25zdCBuYW1lID0gYm9keS5ycGNOYW1lO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYm9keS5ib2R5O1xuXG4gICAgICAgIGNvbnN0IHJwY0hhbmRsZXIgPSBycGMuJHNlcnZlckhhbmRsZXJzLmdldChuYW1lKTtcbiAgICAgICAgaWYgKCFycGNIYW5kbGVyKSB7XG4gICAgICAgICAgICBldmVudC5lbWl0U2VydmVyKGBSUEM6OlJFVFVSTl9GUk9NX1dFQlZJRVdfJHtpZH1gLCBSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZXIocGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCBycGNSZXN1bHQ6IFJQQ1Jlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLlN1Y2Nlc3MsXG4gICAgICAgICAgICAgICAgYm9keTogcmVzdWx0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGV2ZW50LmVtaXRTZXJ2ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIHJwY1Jlc3VsdCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBNYW5nb0Vycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcnBjUmVzdWx0OiBSUENSZXN1bHQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1cyxcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6IHsgbWVzc2FnZTogZXJyb3IubWVzc2FnZSwgZGV0YWlsczogZXJyb3IuZGV0YWlscyB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZXZlbnQuZW1pdFNlcnZlcihgUlBDOjpSRVRVUk5fRlJPTV9XRUJWSUVXXyR7aWR9YCwgcnBjUmVzdWx0KTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50LmVtaXRTZXJ2ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIFJQQ19SRVNVTFRfVU5LTk9XTik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAoPEV2ZW50U2VydmljZT5ldmVudCkub25QbGF5ZXIoJ1JQQzo6Q0FMTF9XRUJWSUVXJywgYXN5bmMgKGJvZHkpID0+IHtcbiAgICAgICAgY29uc3QgaWQgPSBib2R5LmlkO1xuICAgICAgICBjb25zdCBuYW1lID0gYm9keS5ycGNOYW1lO1xuICAgICAgICBjb25zdCBwYXlsb2FkID0gYm9keS5ib2R5O1xuXG4gICAgICAgIGNvbnN0IHJwY0hhbmRsZXIgPSBycGMuJGNsaWVudEhhbmRsZXJzLmdldChuYW1lKTtcbiAgICAgICAgaWYgKGlzTmlsKHJwY0hhbmRsZXIpKSB7XG4gICAgICAgICAgICBldmVudC5lbWl0UGxheWVyKGBSUEM6OlJFVFVSTl9GUk9NX1dFQlZJRVdfJHtpZH1gLCBSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBycGNIYW5kbGVyLmhhbmRsZXIocGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCBycGNSZXN1bHQ6IFJQQ1Jlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogUlBDUmVzdWx0U3RhdHVzLlN1Y2Nlc3MsXG4gICAgICAgICAgICAgICAgYm9keTogcmVzdWx0LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGV2ZW50LmVtaXRQbGF5ZXIoYFJQQzo6UkVUVVJOX0ZST01fV0VCVklFV18ke2lkfWAsIHJwY1Jlc3VsdCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBldmVudC5lbWl0UGxheWVyKGBSUEM6OlJFVFVSTl9GUk9NX1dFQlZJRVdfJHtpZH1gLCBSUENfUkVTVUxUX1VOS05PV04pO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCBtYW5nbyA9IHsgZXZlbnQsIHJwYywgbG9nZ2VyIH07XG5cbiAgICB3aW5kb3cubWFuZ28gPSBtYW5nbztcblxuICAgIGxvZ2dlci5sb2coJ1dlYlZpZXcgaW5pdGlhbGl6ZWQnKTtcblxuICAgIHJldHVybiBtYW5nbztcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGV4cG9ydCBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgbWFuZ286IHtcbiAgICAgICAgICAgIGV2ZW50OiBFdmVudFNlcnZpY2U7XG4gICAgICAgICAgICBycGM6IFJQQ1NlcnZpY2U7XG4gICAgICAgICAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgICAgIH07XG4gICAgfVxufVxuXG5pbXBvcnQgJy4vZXh0ZW5zaW9uLmQudHMnO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7OztBQUVPLElBQU1BLHVCQUFOLE1BQU1BO0VBQWIsT0FBYUE7OztFQUNGQyxPQUFPQyxNQUFpQjtBQUMzQkMsWUFBUUYsSUFBSSwyQkFBa0IsR0FBS0MsSUFBQUE7RUFDdkM7RUFFT0UsU0FBU0YsTUFBaUI7QUFDN0JDLFlBQVFDLE1BQU0sNkJBQW9CLEdBQUtGLElBQUFBO0VBQzNDO0VBRU9H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QWpCLFlBQU0rQixXQUFXLDRCQUE0QnZCLEVBQUFBLElBQU1XLFNBQUFBO0lBQ3ZELFNBQVNLLE9BQU87QUFDWnhCLFlBQU0rQixXQUFXLDRCQUE0QnZCLEVBQUFBLElBQU1vQixrQkFBQUE7SUFDdkQ7RUFDSixDQUFBO0FBRUEsUUFBTTdCLFFBQVE7SUFBRUM7SUFBT0k7SUFBS0Y7RUFBTztBQUVuQ0osU0FBT0MsUUFBUUE7QUFFZkcsU0FBTzhCLElBQUkscUJBQUE7QUFFWCxTQUFPakM7QUFDWDtBQXpFZ0JIOyIsCiAgIm5hbWVzIjogWyJXZWJWaWV3TG9nZ2VyU2VydmljZSIsICJsb2ciLCAiYXJncyIsICJjb25zb2xlIiwgImVycm9yIiwgIndhcm4iLCAiZGVidWciLCAiV2ViVmlld0V2ZW50U2VydmljZSIsICIkbG9jYWxIYW5kbGVycyIsICJNYXAiLCAiJHJlbW90ZUhhbmRsZXJzIiwgIm9uIiwgImV2ZW50TmFtZSIsICJjYWxsYmFjayIsICJldmVudEhhbmRsZXIiLCAiZGVzdHJveSIsICJ2YWxpZCIsICJoYW5kbGVycyIsICJnZXQiLCAiZGVsZXRlIiwgImhhbmRsZXIiLCAibG9jYWwiLCAib25seU9uY2UiLCAicmVtb3RlIiwgImhhcyIsICJzZXQiLCAiU2V0IiwgImFkZCIsICJvbmNlIiwgImVtaXQiLCAiYm9keSIsICJsaXN0ZW5lcnMiLCAiZm9yRWFjaCIsICJzY3JpcHRFdmVudEhhbmRsZXIiLCAib25QbGF5ZXIiLCAid3JhcHBlciIsICJhcmdzIiwgIndpbmRvdyIsICJtcCIsICJldmVudHMiLCAib25jZVBsYXllciIsICJlbWl0UGxheWVyIiwgInRyaWdnZXIiLCAib25TZXJ2ZXIiLCAib25jZVNlcnZlciIsICJlbWl0U2VydmVyIiwgIkpTT04iLCAic3RyaW5naWZ5IiwgInBheWxvYWQiLCAiRXJyb3JNZXNzYWdlIiwgIlJQQ1Jlc3VsdFN0YXR1cyIsICJSUENfUkVTVUxUX1RJTUVPVVQiLCAic3VjY2VzcyIsICJlcnJvciIsICJtZXNzYWdlIiwgInN0YXR1cyIsICJSUENSZXN1bHRTdGF0dXMiLCAiVGltZW91dCIsICJSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EIiwgIkhhbmRsZXJOb3RGb3VuZCIsICJSUENfUkVTVUxUX1VOS05PV04iLCAiVW5rbm93biIsICJSUENfUkVTVUxUX1BMQVlFUl9ESVNDT05ORUNURUQiLCAiUGxheWVyRGlzY29ubmVjdGVkIiwgIlJQQ19SRVNVTFRfUExBWUVSX05PVF9GT1VORCIsICJQbGF5ZXJOb3RGb3VuZCIsICJfX2RlZlByb3AiLCAiX19uYW1lIiwgImdlbmVyYXRlUmFuZG9tSWQiLCAiTWF0aCIsICJyYW5kb20iLCAidG9TdHJpbmciLCAic3Vic3RyaW5nIiwgImlzVW5kZWZpbmVkIiwgIl9fbmFtZSIsICJvYmoiLCAiaXNOaWwiLCAiX19uYW1lIiwgInZhbCIsICJpc1VuZGVmaW5lZCIsICJFdmVudERlc3RpbmF0aW9uIiwgIldlYlZpZXdSUENTZXJ2aWNlIiwgIiRUSU1FT1VUIiwgIiRsb2NhbEhhbmRsZXJzIiwgIk1hcCIsICIkY2xpZW50SGFuZGxlcnMiLCAiJHNlcnZlckhhbmRsZXJzIiwgIiRldmVudFNlcnZpY2UiLCAiJGxvZ2dlclNlcnZpY2UiLCAiY2FsbCIsICJycGNOYW1lIiwgImJvZHkiLCAib3B0aW9ucyIsICJ0aW1lb3V0IiwgIlByb21pc2UiLCAicmVzb2x2ZSIsICJycGNIYW5kbGVyIiwgImdldCIsICJpc05pbCIsICJSUENfUkVTVUxUX0hBTkRMRVJfTk9UX0ZPVU5EIiwgInRpbWVvdXRJZCIsICJzZXRUaW1lb3V0IiwgIlJQQ19SRVNVTFRfVElNRU9VVCIsICJyZXN1bHQiLCAiaGFuZGxlciIsICJjbGVhclRpbWVvdXQiLCAic3VjY2VzcyIsICJzdGF0dXMiLCAiUlBDUmVzdWx0U3RhdHVzIiwgIlN1Y2Nlc3MiLCAiZXJyb3IiLCAidW5kZWZpbmVkIiwgIm9uUmVxdWVzdCIsICJoYXMiLCAiRXJyb3IiLCAiRXJyb3JNZXNzYWdlIiwgIlJQQ0hhbmRsZXJBbHJlYWR5RXhpc3RzIiwgImRlc3Ryb3kiLCAidmFsaWQiLCAiZGVsZXRlIiwgInNldCIsICJjYWxsU2VydmVyIiwgIiRoYW5kbGVDYWxsIiwgIkV2ZW50RGVzdGluYXRpb24iLCAiU2VydmVyIiwgIm9uU2VydmVyUmVxdWVzdCIsICJjYWxsUGxheWVyIiwgIkNsaWVudCIsICJvblBsYXllclJlcXVlc3QiLCAiZGVzdGluYXRpb24iLCAiY2FsbElkIiwgImdlbmVyYXRlUmFuZG9tSWQiLCAib25jZUhhbmRsZSIsICJzY3JpcHRFdmVudEhhbmRsZXIiLCAib25jZVNlcnZlciIsICJvbmNlUGxheWVyIiwgInBheWxvYWQiLCAic291cmNlIiwgIldlYlZpZXciLCAiaWQiLCAiZW1pdFBsYXllciIsICJNYW5nb0Vycm9yIiwgIkVycm9yIiwgInN0YXR1cyIsICJSUENSZXN1bHRTdGF0dXMiLCAiVW5rbm93biIsICJkZXRhaWxzIiwgIm1lc3NhZ2UiLCAiR3VhcmRDYW5jZWxFcnJvciIsICJDYW5jZWxsZWRCeUd1YXJkIiwgIkd1YXJkSW52YWxpZFJldHVybkVycm9yIiwgIkludmFsaWRHdWFyZFJldHVybiIsICJUb29NYW55UmVxdWVzdHMiLCAiVW5rbm93bkVycm9yIiwgImluaXRNYW5nbyIsICJpc05pbCIsICJ3aW5kb3ciLCAibWFuZ28iLCAiZXZlbnQiLCAiV2ViVmlld0V2ZW50U2VydmljZSIsICJsb2dnZXIiLCAiV2ViVmlld0xvZ2dlclNlcnZpY2UiLCAicnBjIiwgIldlYlZpZXdSUENTZXJ2aWNlIiwgIm9uU2VydmVyIiwgImJvZHkiLCAiaWQiLCAibmFtZSIsICJycGNOYW1lIiwgInBheWxvYWQiLCAicnBjSGFuZGxlciIsICIkc2VydmVySGFuZGxlcnMiLCAiZ2V0IiwgImVtaXRTZXJ2ZXIiLCAiUlBDX1JFU1VMVF9IQU5ETEVSX05PVF9GT1VORCIsICJyZXN1bHQiLCAiaGFuZGxlciIsICJycGNSZXN1bHQiLCAic3VjY2VzcyIsICJzdGF0dXMiLCAiUlBDUmVzdWx0U3RhdHVzIiwgIlN1Y2Nlc3MiLCAiZXJyb3IiLCAiTWFuZ29FcnJvciIsICJtZXNzYWdlIiwgImRldGFpbHMiLCAiUlBDX1JFU1VMVF9VTktOT1dOIiwgIm9uUGxheWVyIiwgIiRjbGllbnRIYW5kbGVycyIsICJlbWl0UGxheWVyIiwgImxvZyJdCn0K
|