appium-adb 9.9.0 → 9.10.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/build/index.js CHANGED
@@ -27,4 +27,4 @@ var _default = ADB;
27
27
  exports.default = _default;require('source-map-support').install();
28
28
 
29
29
 
30
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJBREIiLCJERUZBVUxUX0FEQl9QT1JUIiwiZ2V0QW5kcm9pZEJpbmFyeVBhdGgiLCJnZXRTZGtSb290RnJvbUVudiIsImFkYiJdLCJzb3VyY2VSb290IjoiLi4iLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCAqIGFzIGFkYiBmcm9tICcuL2xpYi9hZGInO1xuXG5jb25zdCB7XG4gIEFEQixcbiAgREVGQVVMVF9BREJfUE9SVCxcbiAgZ2V0QW5kcm9pZEJpbmFyeVBhdGgsXG4gIGdldFNka1Jvb3RGcm9tRW52XG59ID0gYWRiO1xuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7O0FBRUEsTUFBTTtFQUNKQSxHQURJO0VBRUpDLGdCQUZJO0VBR0pDLG9CQUhJO0VBSUpDO0FBSkksSUFLRkMsR0FMSjs7Ozs7ZUFPZUosRyJ9
30
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIkFEQiIsIkRFRkFVTFRfQURCX1BPUlQiLCJnZXRBbmRyb2lkQmluYXJ5UGF0aCIsImdldFNka1Jvb3RGcm9tRW52IiwiYWRiIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFQTs7Ozs7O0FBRUEsTUFBTTtBQUNKQSxFQUFBQSxHQURJO0FBRUpDLEVBQUFBLGdCQUZJO0FBR0pDLEVBQUFBLG9CQUhJO0FBSUpDLEVBQUFBO0FBSkksSUFLRkMsR0FMSjs7Ozs7ZUFPZUosRyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptYWluXG5cbmltcG9ydCAqIGFzIGFkYiBmcm9tICcuL2xpYi9hZGInO1xuXG5jb25zdCB7XG4gIEFEQixcbiAgREVGQVVMVF9BREJfUE9SVCxcbiAgZ2V0QW5kcm9pZEJpbmFyeVBhdGgsXG4gIGdldFNka1Jvb3RGcm9tRW52XG59ID0gYWRiO1xuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLiJ9
package/build/lib/adb.js CHANGED
@@ -129,4 +129,4 @@ var _default = ADB;
129
129
  exports.default = _default;require('source-map-support').install();
130
130
 
131
131
 
132
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2FkYi5qcyIsIm5hbWVzIjpbIkRFRkFVTFRfQURCX1BPUlQiLCJERUZBVUxUX09QVFMiLCJzZGtSb290IiwiZ2V0U2RrUm9vdEZyb21FbnYiLCJ1ZGlkIiwiYXBwRGV2aWNlUmVhZHlUaW1lb3V0IiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsImV4ZWN1dGFibGUiLCJwYXRoIiwiZGVmYXVsdEFyZ3MiLCJ0bXBEaXIiLCJvcyIsInRtcGRpciIsImN1ckRldmljZUlkIiwiZW11bGF0b3JQb3J0IiwibG9nY2F0IiwiYmluYXJpZXMiLCJpbnN0cnVtZW50UHJvYyIsInN1cHByZXNzS2lsbFNlcnZlciIsImphcnMiLCJhZGJQb3J0IiwiYWRiSG9zdCIsImFkYkV4ZWNUaW1lb3V0IiwiREVGQVVMVF9BREJfRVhFQ19USU1FT1VUIiwicmVtb3RlQXBwc0NhY2hlTGltaXQiLCJidWlsZFRvb2xzVmVyc2lvbiIsImFsbG93T2ZmbGluZURldmljZXMiLCJhbGxvd0RlbGF5QWRiIiwiQURCIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwiXyIsImRlZmF1bHRzRGVlcCIsImNsb25lRGVlcCIsInJlbW90ZUFkYkhvc3QiLCJwdXNoIiwicmVtb3RlQWRiUG9ydCIsImNsb25lIiwib3JpZ2luYWxPcHRpb25zIiwicGljayIsImtleXMiLCJjbG9uZU9wdGlvbnMiLCJpbmNsdWRlcyIsInNwbGljZSIsImluZGV4T2YiLCJjcmVhdGVBREIiLCJhZGIiLCJyZXF1aXJlU2RrUm9vdCIsImdldEFkYldpdGhDb3JyZWN0QWRiUGF0aCIsImFkYkV4ZWMiLCJlIiwibG9nIiwid2FybiIsInN0ZGVyciIsIm1lc3NhZ2UiLCJmbk5hbWUiLCJmbiIsInRvUGFpcnMiLCJtZXRob2RzIiwicHJvdG90eXBlIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2FkYi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcbmltcG9ydCBtZXRob2RzLCB7IGdldEFuZHJvaWRCaW5hcnlQYXRoIH0gZnJvbSAnLi90b29scy9pbmRleC5qcyc7XG5pbXBvcnQge1xuICBERUZBVUxUX0FEQl9FWEVDX1RJTUVPVVQsIHJlcXVpcmVTZGtSb290LCBnZXRTZGtSb290RnJvbUVudlxufSBmcm9tICcuL2hlbHBlcnMnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlci5qcyc7XG5cbmNvbnN0IERFRkFVTFRfQURCX1BPUlQgPSA1MDM3O1xuY29uc3QgREVGQVVMVF9PUFRTID0ge1xuICBzZGtSb290OiBnZXRTZGtSb290RnJvbUVudigpIHx8IG51bGwsXG4gIHVkaWQ6IG51bGwsXG4gIGFwcERldmljZVJlYWR5VGltZW91dDogbnVsbCxcbiAgdXNlS2V5c3RvcmU6IG51bGwsXG4gIGtleXN0b3JlUGF0aDogbnVsbCxcbiAga2V5c3RvcmVQYXNzd29yZDogbnVsbCxcbiAga2V5QWxpYXM6IG51bGwsXG4gIGtleVBhc3N3b3JkOiBudWxsLFxuICBleGVjdXRhYmxlOiB7cGF0aDogJ2FkYicsIGRlZmF1bHRBcmdzOiBbXX0sXG4gIHRtcERpcjogb3MudG1wZGlyKCksXG4gIGN1ckRldmljZUlkOiBudWxsLFxuICBlbXVsYXRvclBvcnQ6IG51bGwsXG4gIGxvZ2NhdDogbnVsbCxcbiAgYmluYXJpZXM6IHt9LFxuICBpbnN0cnVtZW50UHJvYzogbnVsbCxcbiAgc3VwcHJlc3NLaWxsU2VydmVyOiBudWxsLFxuICBqYXJzOiB7fSxcbiAgYWRiUG9ydDogREVGQVVMVF9BREJfUE9SVCxcbiAgYWRiSG9zdDogbnVsbCxcbiAgYWRiRXhlY1RpbWVvdXQ6IERFRkFVTFRfQURCX0VYRUNfVElNRU9VVCxcbiAgcmVtb3RlQXBwc0NhY2hlTGltaXQ6IDEwLFxuICBidWlsZFRvb2xzVmVyc2lvbjogbnVsbCxcbiAgYWxsb3dPZmZsaW5lRGV2aWNlczogZmFsc2UsXG4gIGFsbG93RGVsYXlBZGI6IHRydWUsXG59O1xuXG5jbGFzcyBBREIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBvcHRzKTtcbiAgICBfLmRlZmF1bHRzRGVlcCh0aGlzLCBfLmNsb25lRGVlcChERUZBVUxUX09QVFMpKTtcblxuICAgIGlmIChvcHRzLnJlbW90ZUFkYkhvc3QpIHtcbiAgICAgIHRoaXMuZXhlY3V0YWJsZS5kZWZhdWx0QXJncy5wdXNoKCctSCcsIG9wdHMucmVtb3RlQWRiSG9zdCk7XG4gICAgICB0aGlzLmFkYkhvc3QgPSBvcHRzLnJlbW90ZUFkYkhvc3Q7XG4gICAgfVxuICAgIC8vIFRPRE8gZmlndXJlIG91dCB3aHkgd2UgaGF2ZSB0aGlzIG9wdGlvbiBhcyBpdCBkb2VzIG5vdCBhcHBlYXIgdG8gYmVcbiAgICAvLyB1c2VkIGFueXdoZXJlLiBQcm9iYWJseSBkZXByZWNhdGUgaW4gZmF2b3Igb2Ygc2ltcGxlIG9wdHMuYWRiUG9ydFxuICAgIGlmIChvcHRzLnJlbW90ZUFkYlBvcnQpIHtcbiAgICAgIHRoaXMuYWRiUG9ydCA9IG9wdHMucmVtb3RlQWRiUG9ydDtcbiAgICB9XG4gICAgdGhpcy5leGVjdXRhYmxlLmRlZmF1bHRBcmdzLnB1c2goJy1QJywgdGhpcy5hZGJQb3J0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYEFEQmAgdGhhdCBpbmhlcml0cyBjb25maWd1cmF0aW9uIGZyb20gdGhpcyBgQURCYCBpbnN0YW5jZS5cbiAgICogVGhpcyBhdm9pZHMgdGhlIG5lZWQgdG8gY2FsbCBgQURCLmNyZWF0ZUFEQigpYCBtdWx0aXBsZSB0aW1lcy5cbiAgICogQHBhcmFtIHtvYmplY3R9IG9wdHMgLSBBZGRpdGlvbmFsIG9wdGlvbnMgbWFwcGluZyB0byBwYXNzIHRvIHRoZSBgQURCYCBjb25zdHJ1Y3Rvci5cbiAgICogQHJldHVybnMge0FEQn0gVGhlIHJlc3VsdGluZyBjbGFzcyBpbnN0YW5jZS5cbiAgICovXG4gIGNsb25lIChvcHRzID0ge30pIHtcbiAgICBjb25zdCBvcmlnaW5hbE9wdGlvbnMgPSBfLmNsb25lRGVlcChfLnBpY2sodGhpcywgT2JqZWN0LmtleXMoREVGQVVMVF9PUFRTKSkpO1xuICAgIGNvbnN0IGNsb25lT3B0aW9ucyA9IF8uZGVmYXVsdHNEZWVwKG9wdHMsIG9yaWdpbmFsT3B0aW9ucyk7XG5cbiAgICAvLyBSZXNldCBkZWZhdWx0IGFyZ3VtZW50cyBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAvLyBXaXRob3V0IHRoaXMgY29kZSwgLUggYW5kIC1QIGNhbiBiZSBpbmplY3RlZCBpbnRvIGRlZmF1bHRBcmdzIG11bHRpcGxlIHRpbWVzLlxuICAgIGNvbnN0IGRlZmF1bHRBcmdzID0gY2xvbmVPcHRpb25zLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3M7XG4gICAgaWYgKGNsb25lT3B0aW9ucy5yZW1vdGVBZGJIb3N0ICYmIGRlZmF1bHRBcmdzLmluY2x1ZGVzKCctSCcpKSB7XG4gICAgICBkZWZhdWx0QXJncy5zcGxpY2UoZGVmYXVsdEFyZ3MuaW5kZXhPZignLUgnKSwgMik7XG4gICAgfVxuICAgIGlmIChkZWZhdWx0QXJncy5pbmNsdWRlcygnLVAnKSkge1xuICAgICAgZGVmYXVsdEFyZ3Muc3BsaWNlKGRlZmF1bHRBcmdzLmluZGV4T2YoJy1QJyksIDIpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQURCKGNsb25lT3B0aW9ucyk7XG4gIH1cbn1cblxuQURCLmNyZWF0ZUFEQiA9IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUFEQiAob3B0cykge1xuICBjb25zdCBhZGIgPSBuZXcgQURCKG9wdHMpO1xuICBhZGIuc2RrUm9vdCA9IGF3YWl0IHJlcXVpcmVTZGtSb290KGFkYi5zZGtSb290KTtcbiAgYXdhaXQgYWRiLmdldEFkYldpdGhDb3JyZWN0QWRiUGF0aCgpO1xuICB0cnkge1xuICAgIGF3YWl0IGFkYi5hZGJFeGVjKFsnc3RhcnQtc2VydmVyJ10pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLndhcm4oZS5zdGRlcnIgfHwgZS5tZXNzYWdlKTtcbiAgfVxuICByZXR1cm4gYWRiO1xufTtcblxuLy8gYWRkIGFsbCB0aGUgbWV0aG9kcyB0byB0aGUgQURCIHByb3RvdHlwZVxuZm9yIChjb25zdCBbZm5OYW1lLCBmbl0gb2YgXy50b1BhaXJzKG1ldGhvZHMpKSB7XG4gIEFEQi5wcm90b3R5cGVbZm5OYW1lXSA9IGZuO1xufVxuXG5leHBvcnQgZGVmYXVsdCBBREI7XG5leHBvcnQgeyBBREIsIERFRkFVTFRfQURCX1BPUlQsIGdldEFuZHJvaWRCaW5hcnlQYXRoLCBnZXRTZGtSb290RnJvbUVudiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRyxJQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUc7RUFDbkJDLE9BQU8sRUFBRSxJQUFBQywwQkFBQSxPQUF1QixJQURiO0VBRW5CQyxJQUFJLEVBQUUsSUFGYTtFQUduQkMscUJBQXFCLEVBQUUsSUFISjtFQUluQkMsV0FBVyxFQUFFLElBSk07RUFLbkJDLFlBQVksRUFBRSxJQUxLO0VBTW5CQyxnQkFBZ0IsRUFBRSxJQU5DO0VBT25CQyxRQUFRLEVBQUUsSUFQUztFQVFuQkMsV0FBVyxFQUFFLElBUk07RUFTbkJDLFVBQVUsRUFBRTtJQUFDQyxJQUFJLEVBQUUsS0FBUDtJQUFjQyxXQUFXLEVBQUU7RUFBM0IsQ0FUTztFQVVuQkMsTUFBTSxFQUFFQyxXQUFBLENBQUdDLE1BQUgsRUFWVztFQVduQkMsV0FBVyxFQUFFLElBWE07RUFZbkJDLFlBQVksRUFBRSxJQVpLO0VBYW5CQyxNQUFNLEVBQUUsSUFiVztFQWNuQkMsUUFBUSxFQUFFLEVBZFM7RUFlbkJDLGNBQWMsRUFBRSxJQWZHO0VBZ0JuQkMsa0JBQWtCLEVBQUUsSUFoQkQ7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
132
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9hZGIuanMiXSwibmFtZXMiOlsiREVGQVVMVF9BREJfUE9SVCIsIkRFRkFVTFRfT1BUUyIsInNka1Jvb3QiLCJ1ZGlkIiwiYXBwRGV2aWNlUmVhZHlUaW1lb3V0IiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsImV4ZWN1dGFibGUiLCJwYXRoIiwiZGVmYXVsdEFyZ3MiLCJ0bXBEaXIiLCJvcyIsInRtcGRpciIsImN1ckRldmljZUlkIiwiZW11bGF0b3JQb3J0IiwibG9nY2F0IiwiYmluYXJpZXMiLCJpbnN0cnVtZW50UHJvYyIsInN1cHByZXNzS2lsbFNlcnZlciIsImphcnMiLCJhZGJQb3J0IiwiYWRiSG9zdCIsImFkYkV4ZWNUaW1lb3V0IiwiREVGQVVMVF9BREJfRVhFQ19USU1FT1VUIiwicmVtb3RlQXBwc0NhY2hlTGltaXQiLCJidWlsZFRvb2xzVmVyc2lvbiIsImFsbG93T2ZmbGluZURldmljZXMiLCJhbGxvd0RlbGF5QWRiIiwiQURCIiwiY29uc3RydWN0b3IiLCJvcHRzIiwiT2JqZWN0IiwiYXNzaWduIiwiXyIsImRlZmF1bHRzRGVlcCIsImNsb25lRGVlcCIsInJlbW90ZUFkYkhvc3QiLCJwdXNoIiwicmVtb3RlQWRiUG9ydCIsImNsb25lIiwib3JpZ2luYWxPcHRpb25zIiwicGljayIsImtleXMiLCJjbG9uZU9wdGlvbnMiLCJpbmNsdWRlcyIsInNwbGljZSIsImluZGV4T2YiLCJjcmVhdGVBREIiLCJhZGIiLCJnZXRBZGJXaXRoQ29ycmVjdEFkYlBhdGgiLCJhZGJFeGVjIiwiZSIsImxvZyIsIndhcm4iLCJzdGRlcnIiLCJtZXNzYWdlIiwiZm5OYW1lIiwiZm4iLCJ0b1BhaXJzIiwibWV0aG9kcyIsInByb3RvdHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7Ozs7O0FB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ckMsV0FBVyxDQUFDbUMsUUFBWixDQUFxQixJQUFyQixDQUFKLEVBQWdDO0FBQzlCbkMsTUFBQUEsV0FBVyxDQUFDb0MsTUFBWixDQUFtQnBDLFdBQVcsQ0FBQ3FDLE9BQVosQ0FBb0IsSUFBcEIsQ0FBbkIsRUFBOEMsQ0FBOUM7QUFDRDs7QUFFRCxXQUFPLElBQUlsQixHQUFKLENBQVFlLFlBQVIsQ0FBUDtBQUNEOztBQXRDTzs7OztBQXlDVmYsR0FBRyxDQUFDbUIsU0FBSixHQUFnQixlQUFlQSxTQUFmLENBQTBCakIsSUFBMUIsRUFBZ0M7QUFDOUMsUUFBTWtCLEdBQUcsR0FBRyxJQUFJcEIsR0FBSixDQUFRRSxJQUFSLENBQVo7QUFDQWtCLEVBQUFBLEdBQUcsQ0FBQ2pELE9BQUosR0FBYyxNQUFNLDZCQUFlaUQsR0FBRyxDQUFDakQsT0FBbkIsQ0FBcEI7QUFDQSxRQUFNaUQsR0FBRyxDQUFDQyx3QkFBSixFQUFOOztBQUNBLE1BQUk7QUFDRixVQUFNRCxHQUFHLENBQUNFLE9BQUosQ0FBWSxDQUFDLGNBQUQsQ0FBWixDQUFOO0FBQ0QsR0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNWQyxvQkFBSUMsSUFBSixDQUFTRixDQUFDLENBQUNHLE1BQUYsSUFBWUgsQ0FBQyxDQUFDSSxPQUF2QjtBQUNEOztBQUNELFNBQU9QLEdBQVA7QUFDRCxDQVZEOztBQWFBLEtBQUssTUFBTSxDQUFDUSxNQUFELEVBQVNDLEVBQVQsQ0FBWCxJQUEyQnhCLGdCQUFFeUIsT0FBRixDQUFVQyxjQUFWLENBQTNCLEVBQStDO0FBQzdDL0IsRUFBQUEsR0FBRyxDQUFDZ0MsU0FBSixDQUFjSixNQUFkLElBQXdCQyxFQUF4QjtBQUNEOztlQUVjN0IsRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IG1ldGhvZHMsIHsgZ2V0QW5kcm9pZEJpbmFyeVBhdGggfSBmcm9tICcuL3Rvb2xzL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIERFRkFVTFRfQURCX0VYRUNfVElNRU9VVCwgcmVxdWlyZVNka1Jvb3QsIGdldFNka1Jvb3RGcm9tRW52XG59IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyLmpzJztcblxuY29uc3QgREVGQVVMVF9BREJfUE9SVCA9IDUwMzc7XG5jb25zdCBERUZBVUxUX09QVFMgPSB7XG4gIHNka1Jvb3Q6IGdldFNka1Jvb3RGcm9tRW52KCkgfHwgbnVsbCxcbiAgdWRpZDogbnVsbCxcbiAgYXBwRGV2aWNlUmVhZHlUaW1lb3V0OiBudWxsLFxuICB1c2VLZXlzdG9yZTogbnVsbCxcbiAga2V5c3RvcmVQYXRoOiBudWxsLFxuICBrZXlzdG9yZVBhc3N3b3JkOiBudWxsLFxuICBrZXlBbGlhczogbnVsbCxcbiAga2V5UGFzc3dvcmQ6IG51bGwsXG4gIGV4ZWN1dGFibGU6IHtwYXRoOiAnYWRiJywgZGVmYXVsdEFyZ3M6IFtdfSxcbiAgdG1wRGlyOiBvcy50bXBkaXIoKSxcbiAgY3VyRGV2aWNlSWQ6IG51bGwsXG4gIGVtdWxhdG9yUG9ydDogbnVsbCxcbiAgbG9nY2F0OiBudWxsLFxuICBiaW5hcmllczoge30sXG4gIGluc3RydW1lbnRQcm9jOiBudWxsLFxuICBzdXBwcmVzc0tpbGxTZXJ2ZXI6IG51bGwsXG4gIGphcnM6IHt9LFxuICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICBhZGJIb3N0OiBudWxsLFxuICBhZGJFeGVjVGltZW91dDogREVGQVVMVF9BREJfRVhFQ19USU1FT1VULFxuICByZW1vdGVBcHBzQ2FjaGVMaW1pdDogMTAsXG4gIGJ1aWxkVG9vbHNWZXJzaW9uOiBudWxsLFxuICBhbGxvd09mZmxpbmVEZXZpY2VzOiBmYWxzZSxcbiAgYWxsb3dEZWxheUFkYjogdHJ1ZSxcbn07XG5cbmNsYXNzIEFEQiB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdHMpO1xuICAgIF8uZGVmYXVsdHNEZWVwKHRoaXMsIF8uY2xvbmVEZWVwKERFRkFVTFRfT1BUUykpO1xuXG4gICAgaWYgKG9wdHMucmVtb3RlQWRiSG9zdCkge1xuICAgICAgdGhpcy5leGVjdXRhYmxlLmRlZmF1bHRBcmdzLnB1c2goJy1IJywgb3B0cy5yZW1vdGVBZGJIb3N0KTtcbiAgICAgIHRoaXMuYWRiSG9zdCA9IG9wdHMucmVtb3RlQWRiSG9zdDtcbiAgICB9XG4gICAgLy8gVE9ETyBmaWd1cmUgb3V0IHdoeSB3ZSBoYXZlIHRoaXMgb3B0aW9uIGFzIGl0IGRvZXMgbm90IGFwcGVhciB0byBiZVxuICAgIC8vIHVzZWQgYW55d2hlcmUuIFByb2JhYmx5IGRlcHJlY2F0ZSBpbiBmYXZvciBvZiBzaW1wbGUgb3B0cy5hZGJQb3J0XG4gICAgaWYgKG9wdHMucmVtb3RlQWRiUG9ydCkge1xuICAgICAgdGhpcy5hZGJQb3J0ID0gb3B0cy5yZW1vdGVBZGJQb3J0O1xuICAgIH1cbiAgICB0aGlzLmV4ZWN1dGFibGUuZGVmYXVsdEFyZ3MucHVzaCgnLVAnLCB0aGlzLmFkYlBvcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBgQURCYCB0aGF0IGluaGVyaXRzIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGlzIGBBREJgIGluc3RhbmNlLlxuICAgKiBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byBjYWxsIGBBREIuY3JlYXRlQURCKClgIG11bHRpcGxlIHRpbWVzLlxuICAgKiBAcGFyYW0ge29iamVjdH0gb3B0cyAtIEFkZGl0aW9uYWwgb3B0aW9ucyBtYXBwaW5nIHRvIHBhc3MgdG8gdGhlIGBBREJgIGNvbnN0cnVjdG9yLlxuICAgKiBAcmV0dXJucyB7QURCfSBUaGUgcmVzdWx0aW5nIGNsYXNzIGluc3RhbmNlLlxuICAgKi9cbiAgY2xvbmUgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IG9yaWdpbmFsT3B0aW9ucyA9IF8uY2xvbmVEZWVwKF8ucGljayh0aGlzLCBPYmplY3Qua2V5cyhERUZBVUxUX09QVFMpKSk7XG4gICAgY29uc3QgY2xvbmVPcHRpb25zID0gXy5kZWZhdWx0c0RlZXAob3B0cywgb3JpZ2luYWxPcHRpb25zKTtcblxuICAgIC8vIFJlc2V0IGRlZmF1bHQgYXJndW1lbnRzIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLlxuICAgIC8vIFdpdGhvdXQgdGhpcyBjb2RlLCAtSCBhbmQgLVAgY2FuIGJlIGluamVjdGVkIGludG8gZGVmYXVsdEFyZ3MgbXVsdGlwbGUgdGltZXMuXG4gICAgY29uc3QgZGVmYXVsdEFyZ3MgPSBjbG9uZU9wdGlvbnMuZXhlY3V0YWJsZS5kZWZhdWx0QXJncztcbiAgICBpZiAoY2xvbmVPcHRpb25zLnJlbW90ZUFkYkhvc3QgJiYgZGVmYXVsdEFyZ3MuaW5jbHVkZXMoJy1IJykpIHtcbiAgICAgIGRlZmF1bHRBcmdzLnNwbGljZShkZWZhdWx0QXJncy5pbmRleE9mKCctSCcpLCAyKTtcbiAgICB9XG4gICAgaWYgKGRlZmF1bHRBcmdzLmluY2x1ZGVzKCctUCcpKSB7XG4gICAgICBkZWZhdWx0QXJncy5zcGxpY2UoZGVmYXVsdEFyZ3MuaW5kZXhPZignLVAnKSwgMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBBREIoY2xvbmVPcHRpb25zKTtcbiAgfVxufVxuXG5BREIuY3JlYXRlQURCID0gYXN5bmMgZnVuY3Rpb24gY3JlYXRlQURCIChvcHRzKSB7XG4gIGNvbnN0IGFkYiA9IG5ldyBBREIob3B0cyk7XG4gIGFkYi5zZGtSb290ID0gYXdhaXQgcmVxdWlyZVNka1Jvb3QoYWRiLnNka1Jvb3QpO1xuICBhd2FpdCBhZGIuZ2V0QWRiV2l0aENvcnJlY3RBZGJQYXRoKCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgYWRiLmFkYkV4ZWMoWydzdGFydC1zZXJ2ZXInXSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cud2FybihlLnN0ZGVyciB8fCBlLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiBhZGI7XG59O1xuXG4vLyBhZGQgYWxsIHRoZSBtZXRob2RzIHRvIHRoZSBBREIgcHJvdG90eXBlXG5mb3IgKGNvbnN0IFtmbk5hbWUsIGZuXSBvZiBfLnRvUGFpcnMobWV0aG9kcykpIHtcbiAgQURCLnByb3RvdHlwZVtmbk5hbWVdID0gZm47XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFEQjtcbmV4cG9ydCB7IEFEQiwgREVGQVVMVF9BREJfUE9SVCwgZ2V0QW5kcm9pZEJpbmFyeVBhdGgsIGdldFNka1Jvb3RGcm9tRW52IH07XG4iXSwiZmlsZSI6ImxpYi9hZGIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -954,4 +954,4 @@ function matchComponentName(classString) {
954
954
  }require('source-map-support').install();
955
955
 
956
956
 
957
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2hlbHBlcnMuanMiLCJuYW1lcyI6WyJyb290RGlyIiwicGF0aCIsInJlc29sdmUiLCJfX2Rpcm5hbWUiLCJwcm9jZXNzIiwiZW52IiwiTk9fUFJFQ09NUElMRSIsIkFQS1NfRVhURU5TSU9OIiwiQVBLX0VYVEVOU0lPTiIsIkFQS19JTlNUQUxMX1RJTUVPVVQiLCJBUEtTX0lOU1RBTExfVElNRU9VVCIsIkRFRkFVTFRfQURCX0VYRUNfVElNRU9VVCIsIk1BSU5fQUNUSU9OIiwiTEFVTkNIRVJfQ0FURUdPUlkiLCJnZXRTZGtSb290RnJvbUVudiIsIkFORFJPSURfSE9NRSIsIkFORFJPSURfU0RLX1JPT1QiLCJyZXF1aXJlU2RrUm9vdCIsImN1c3RvbVJvb3QiLCJzZGtSb290IiwiZG9jTXNnIiwiXyIsImlzRW1wdHkiLCJFcnJvciIsImZzIiwiZXhpc3RzIiwic3RhdHMiLCJzdGF0IiwiaXNEaXJlY3RvcnkiLCJnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoIiwicHJvcHNQYXRocyIsImdsb2IiLCJjd2QiLCJhYnNvbHV0ZSIsInBsYXRmb3Jtc01hcHBpbmciLCJwcm9wc1BhdGgiLCJwcm9wc0NvbnRlbnQiLCJyZWFkRmlsZSIsInBsYXRmb3JtUGF0aCIsImRpcm5hbWUiLCJwbGF0Zm9ybSIsImJhc2VuYW1lIiwibWF0Y2giLCJleGVjIiwibG9nIiwid2FybiIsInBhcnNlSW50IiwicmVjZW50U2RrVmVyc2lvbiIsImtleXMiLCJzb3J0IiwicmV2ZXJzZSIsInJlc3VsdCIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuemlwRmlsZSIsInppcFBhdGgiLCJkc3RSb290IiwiemlwIiwiYXNzZXJ0VmFsaWRaaXAiLCJleHRyYWN0QWxsVG8iLCJ1bnNpZ25BcGsiLCJhcGtQYXRoIiwidG1wUm9vdCIsInRlbXBEaXIiLCJvcGVuRGlyIiwibWV0YUluZkZvbGRlck5hbWUiLCJoYXNNZXRhSW5mIiwicmVhZEVudHJpZXMiLCJlbnRyeSIsImZpbGVOYW1lIiwic3RhcnRzV2l0aCIsInRtcFppcFJvb3QiLCJyaW1yYWYiLCJ0bXBSZXN1bHRQYXRoIiwidG9BcmNoaXZlIiwidW5saW5rIiwibXYiLCJnZXRJTUVMaXN0RnJvbU91dHB1dCIsInN0ZG91dCIsImVuZ2luZXMiLCJsaW5lIiwic3BsaXQiLCJsZW5ndGgiLCJwdXNoIiwidHJpbSIsInJlcGxhY2UiLCJnZXRKYXZhSG9tZSIsIm1lbW9pemUiLCJKQVZBX0hPTUUiLCJnZXRKYXZhRm9yT3MiLCJqYXZhSG9tZSIsImVyck1zZyIsImVyciIsIm1lc3NhZ2UiLCJleGVjdXRhYmxlTmFtZSIsInN5c3RlbSIsImlzV2luZG93cyIsInJlc3VsdFBhdGgiLCJ3aGljaCIsImlnbiIsImdldE9wZW5Tc2xGb3JPcyIsImJpbmFyeU5hbWUiLCJnZXRBcGtzaWduZXJGb3JPcyIsInN5c0hlbHBlcnMiLCJnZXRCaW5hcnlGcm9tU2RrUm9vdCIsImdldEFwa2FuYWx5emVyRm9yT3MiLCJpc1Nob3dpbmdMb2Nrc2NyZWVuIiwiZHVtcHN5cyIsInNvbWUiLCJ4IiwiaW5jbHVkZXMiLCJldmVyeSIsInRlc3QiLCJpc0N1cnJlbnRGb2N1c09uS2V5Z3VhcmQiLCJtIiwiZ2V0U3VyZmFjZU9yaWVudGF0aW9uIiwiaXNTY3JlZW5PbkZ1bGx5IiwiYnVpbGRTdGFydENtZCIsInN0YXJ0QXBwT3B0aW9ucyIsImFwaUxldmVsIiwidXNlciIsIndhaXRGb3JMYXVuY2giLCJwa2ciLCJhY3Rpdml0eSIsImFjdGlvbiIsImNhdGVnb3J5Iiwic3RvcEFwcCIsImZsYWdzIiwiY21kIiwidXRpbCIsImhhc1ZhbHVlIiwib3B0aW9uYWxJbnRlbnRBcmd1bWVudHMiLCJwYXJzZUtleVZhbHVlIiwic3RyIiwic3BhY2UiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwicmUiLCJhcmdzIiwiYXBwbHkiLCJmbGFnIiwiZmxhZ1BvcyIsInByZXZBcmdzIiwiZ2V0U2RrVG9vbHNWZXJzaW9uIiwiYW5kcm9pZEhvbWUiLCJwcm9wZXJ0aWVzUGF0aCIsInByb3BlcnRpZXNDb250ZW50IiwidmVyc2lvbk1hdGNoZXIiLCJSZWdFeHAiLCJtYWpvciIsIm1pbm9yIiwiYnVpbGQiLCJnZXRCdWlsZFRvb2xzRGlycyIsImJ1aWxkVG9vbHNEaXJzIiwibWFwIiwiZGlyIiwiYSIsImIiLCJzZW12ZXIiLCJyY29tcGFyZSIsInBhaXIiLCJwYWlycyIsIkIiLCJtdGltZSIsInZhbHVlT2YiLCJpbmZvIiwiZXh0cmFjdE1hdGNoaW5nUGVybWlzc2lvbnMiLCJkdW1wc3lzT3V0cHV0IiwiZ3JvdXBOYW1lcyIsImdyYW50ZWRTdGF0ZSIsImdyb3VwUGF0dGVybkJ5TmFtZSIsImdyb3VwTmFtZSIsImVzY2FwZVJlZ0V4cCIsImluZGVudFBhdHRlcm4iLCJwZXJtaXNzaW9uTmFtZVBhdHRlcm4iLCJncmFudGVkU3RhdGVQYXR0ZXJuIiwiZ3JvdXBNYXRjaCIsImxpbmVzIiwidGl0bGVJbmRlbnQiLCJzZWFyY2giLCJzbGljZSIsImN1cnJlbnRJbmRlbnQiLCJwZXJtaXNzaW9uTmFtZU1hdGNoIiwiaXRlbSIsInBlcm1pc3Npb24iLCJncmFudGVkU3RhdGVNYXRjaCIsImdyYW50ZWQiLCJmaWx0ZXJlZFJlc3VsdCIsImZpbHRlciIsImlzQm9vbGVhbiIsInBsdXJhbGl6ZSIsImJ1aWxkSW5zdGFsbEFyZ3MiLCJvcHRpb25zIiwiYWxsb3dUZXN0UGFja2FnZXMiLCJ1c2VTZGNhcmQiLCJncmFudFBlcm1pc3Npb25zIiwicGFydGlhbEluc3RhbGwiLCJwYXJzZU1hbmlmZXN0IiwibWFuaWZlc3QiLCJwYWNrYWdlIiwidmVyc2lvbkNvZGUiLCJ2ZXJzaW9uTmFtZSIsImFwcGxpY2F0aW9uIiwiYWN0aXZpdGllcyIsImFjdGl2aXR5QWxpYXNlcyIsImVuYWJsZWQiLCJpbnRlbnRGaWx0ZXJzIiwiYWN0aW9ucyIsImNhdGVnb3JpZXMiLCJpc01haW5BY3Rpb24iLCJuYW1lIiwiaXNMYXVuY2hlckNhdGVnb3J5IiwicGFyc2VBYXB0U3RyaW5ncyIsInJhd091dHB1dCIsImNvbmZpZ01hcmtlciIsIm5vcm1hbGl6ZVN0cmluZ01hdGNoIiwicyIsImFwa1N0cmluZ3MiLCJpc0luQ29uZmlnIiwiY3VycmVudFJlc291cmNlSWQiLCJpc0luUGx1cmFsR3JvdXAiLCJxdW90ZWRTdHJpbmdQYXR0ZXJuIiwib3MiLCJFT0wiLCJ0cmltbWVkTGluZSIsInBhcnNlQWFwdDJTdHJpbmdzIiwiYWxsTGluZXMiLCJleHRyYWN0Q29udGVudCIsInN0YXJ0SWR4IiwiaWR4Iiwic3RhcnRDaGFyUG9zIiwidGVybWluYXRpb25DaGFyTWF0Y2giLCJ0ZXJtaW5hdGlvbkNoYXJQb3MiLCJpbmRleCIsInRyaW1TdGFydCIsImlzSW5DdXJyZW50Q29uZmlnIiwibGluZUluZGV4IiwiY29udGVudCIsImlzU3RyaW5nIiwiZm9ybWF0Q29uZmlnTWFya2VyIiwiY29uZmlnc0dldHRlciIsImRlc2lyZWRNYXJrZXIiLCJkZWZhdWx0TWFya2VyIiwiY29uZmlncyIsInRvTG93ZXJDYXNlIiwicGFyc2VKc29uRGF0YSIsIm91dHB1dCIsImVudGl0eU5hbWUiLCJqc29uU3RyIiwicGFyc2UiLCJlIiwidG9BdmRMb2NhbGVBcmdzIiwibGFuZ3VhZ2UiLCJjb3VudHJ5IiwidG9VcHBlckNhc2UiLCJsb2NhbGUiLCJnZXRBbmRyb2lkUHJlZnNSb290IiwibG9jYXRpb24iLCJBTkRST0lEX0VNVUxBVE9SX0hPTUUiLCJkaXJFeGlzdHMiLCJob21lIiwiSE9NRSIsIlVTRVJQUk9GSUxFIiwiZXNjYXBlU2hlbGxBcmciLCJhcmciLCJwYXJzZUxhdW5jaGFibGVBY3Rpdml0eU5hbWVzIiwibWFpbkFjdGl2aXR5TmFtZVJlIiwiY2F0ZWdvcnlOYW1lUmUiLCJibG9ja3MiLCJibG9ja1N0YXJ0SW5kZW50IiwiYmxvY2siLCJ0cmltRW5kIiwiaXNOaWwiLCJoYXNDYXRlZ29yeSIsImFjdGl2aXR5TmFtZVN0ciIsIkJvb2xlYW4iLCJmcUFjdGl2aXR5TmFtZSIsIm1hdGNoQ29tcG9uZW50TmFtZSIsImNsYXNzU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2hlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCB6aXAsIHV0aWwsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcblxuY29uc3Qgcm9vdERpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIHByb2Nlc3MuZW52Lk5PX1BSRUNPTVBJTEUgPyAnLi4nIDogJy4uLy4uJyk7XG5jb25zdCBBUEtTX0VYVEVOU0lPTiA9ICcuYXBrcyc7XG5jb25zdCBBUEtfRVhURU5TSU9OID0gJy5hcGsnO1xuY29uc3QgQVBLX0lOU1RBTExfVElNRU9VVCA9IDYwMDAwO1xuY29uc3QgQVBLU19JTlNUQUxMX1RJTUVPVVQgPSBBUEtfSU5TVEFMTF9USU1FT1VUICogMjtcbmNvbnN0IERFRkFVTFRfQURCX0VYRUNfVElNRU9VVCA9IDIwMDAwOyAvLyBpbiBtaWxsaXNlY29uZHNcbmNvbnN0IE1BSU5fQUNUSU9OID0gJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJztcbmNvbnN0IExBVU5DSEVSX0NBVEVHT1JZID0gJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFjdHVhbCBwYXRoIHRvIFNESyByb290IGZvbGRlciBmcm9tIHRoZSBzeXN0ZW0gZW52aXJvbm1lbnRcbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBTREsgcm9vdCBmb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0U2RrUm9vdEZyb21FbnYgKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FIHx8IHByb2Nlc3MuZW52LkFORFJPSURfU0RLX1JPT1Q7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhY3R1YWwgcGF0aCB0byBTREsgcm9vdCBmb2xkZXJcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmdWxsIHBhdGggdG8gdGhlIFNESyByb290IGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyaWFibGUgaXMgdW5zZXQgb3IgaXNcbiAqIHBvaW50aW5nIHRvIGFuIGludmFsaWQgZmlsZSBzeXN0ZW0gZW50cnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWlyZVNka1Jvb3QgKGN1c3RvbVJvb3QgPSBudWxsKSB7XG4gIGNvbnN0IHNka1Jvb3QgPSBjdXN0b21Sb290IHx8IGdldFNka1Jvb3RGcm9tRW52KCk7XG4gIGNvbnN0IGRvY01zZyA9ICdSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9jb21tYW5kLWxpbmUvdmFyaWFibGVzIGZvciBtb3JlIGRldGFpbHMnO1xuICBpZiAoXy5pc0VtcHR5KHNka1Jvb3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOZWl0aGVyIEFORFJPSURfSE9NRSBub3IgQU5EUk9JRF9TREtfUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgZXhwb3J0ZWQuICR7ZG9jTXNnfWApO1xuICB9XG5cbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc2RrUm9vdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBBbmRyb2lkIFNESyByb290IGZvbGRlciAnJHtzZGtSb290fScgZG9lcyBub3QgZXhpc3Qgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLiAke2RvY01zZ31gKTtcbiAgfVxuICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQoc2RrUm9vdCk7XG4gIGlmICghc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIEFuZHJvaWQgU0RLIHJvb3QgJyR7c2RrUm9vdH0nIG11c3QgYmUgYSBmb2xkZXIuICR7ZG9jTXNnfWApO1xuICB9XG4gIHJldHVybiBzZGtSb290O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBsYXRmb3JtSW5mb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSBgYW5kcm9pZC0yNGBcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBgbnVsbGAgaWYgaXQgY2Fubm90IGJlIGZvdW5kXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBsYXRmb3JtUGF0aCAtIEZ1bGwgcGF0aCB0byB0aGUgcGxhdGZvcm0gU0RLIGZvbGRlclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBgbnVsbGAgaWYgaXQgY2Fubm90IGJlIGZvdW5kXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgcGF0aCB0byB0aGUgcmVjZW50IGluc3RhbGxlZCBBbmRyb2lkIHBsYXRmb3JtLlxuICpcbiAqIEByZXR1cm4ge1BsYXRmb3JtSW5mb30gVGhlIHJlc3VsdGluZyBwYXRoIHRvIHRoZSBuZXdlc3QgaW5zdGFsbGVkIHBsYXRmb3JtLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoIChzZGtSb290KSB7XG4gIGNvbnN0IHByb3BzUGF0aHMgPSBhd2FpdCBmcy5nbG9iKCcqL2J1aWxkLnByb3AnLCB7XG4gICAgY3dkOiBwYXRoLnJlc29sdmUoc2RrUm9vdCwgJ3BsYXRmb3JtcycpLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICB9KTtcbiAgY29uc3QgcGxhdGZvcm1zTWFwcGluZyA9IHt9O1xuICBmb3IgKGNvbnN0IHByb3BzUGF0aCBvZiBwcm9wc1BhdGhzKSB7XG4gICAgY29uc3QgcHJvcHNDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocHJvcHNQYXRoLCAndXRmLTgnKTtcbiAgICBjb25zdCBwbGF0Zm9ybVBhdGggPSBwYXRoLmRpcm5hbWUocHJvcHNQYXRoKTtcbiAgICBjb25zdCBwbGF0Zm9ybSA9IHBhdGguYmFzZW5hbWUocGxhdGZvcm1QYXRoKTtcbiAgICBjb25zdCBtYXRjaCA9IC9yb1xcLmJ1aWxkXFwudmVyc2lvblxcLnNkaz0oXFxkKykvLmV4ZWMocHJvcHNDb250ZW50KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICBsb2cud2FybihgQ2Fubm90IHJlYWQgdGhlIFNESyB2ZXJzaW9uIGZyb20gJyR7cHJvcHNQYXRofScuIFNraXBwaW5nICcke3BsYXRmb3JtfSdgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwbGF0Zm9ybXNNYXBwaW5nW3BhcnNlSW50KG1hdGNoWzFdLCAxMCldID0ge1xuICAgICAgcGxhdGZvcm0sXG4gICAgICBwbGF0Zm9ybVBhdGgsXG4gICAgfTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KHBsYXRmb3Jtc01hcHBpbmcpKSB7XG4gICAgbG9nLndhcm4oYEZvdW5kIHplcm8gcGxhdGZvcm0gZm9sZGVycyBhdCAnJHtwYXRoLnJlc29sdmUoc2RrUm9vdCwgJ3BsYXRmb3JtcycpfScuIGAgK1xuICAgICAgYERvIHlvdSBoYXZlIGFueSBBbmRyb2lkIFNES3MgaW5zdGFsbGVkP2ApO1xuICAgIHJldHVybiB7XG4gICAgICBwbGF0Zm9ybTogbnVsbCxcbiAgICAgIHBsYXRmb3JtUGF0aDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVjZW50U2RrVmVyc2lvbiA9IF8ua2V5cyhwbGF0Zm9ybXNNYXBwaW5nKS5zb3J0KCkucmV2ZXJzZSgpWzBdO1xuICBjb25zdCByZXN1bHQgPSBwbGF0Zm9ybXNNYXBwaW5nW3JlY2VudFNka1ZlcnNpb25dO1xuICBsb2cuZGVidWcoYEZvdW5kIHRoZSBtb3N0IHJlY2VudCBBbmRyb2lkIHBsYXRmb3JtOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuemlwRmlsZSAoemlwUGF0aCwgZHN0Um9vdCA9IHBhdGguZGlybmFtZSh6aXBQYXRoKSkge1xuICBsb2cuZGVidWcoYFVuemlwcGluZyAnJHt6aXBQYXRofScgdG8gJyR7ZHN0Um9vdH0nYCk7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcbiAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyh6aXBQYXRoLCBkc3RSb290KTtcbiAgbG9nLmRlYnVnKCdVbnppcCBzdWNjZXNzZnVsJyk7XG59XG5cbi8qKlxuICogVW5zaWducyB0aGUgZ2l2ZW4gYXBrIGJ5IHJlbW92aW5nIHRoZVxuICogTUVUQS1JTkYgZm9sZGVyIHJlY3Vyc2l2ZWx5IGZyb20gdGhlIGFyY2hpdmUuXG4gKiAhISEgVGhlIGZ1bmN0aW9uIG92ZXJ3cml0ZXMgdGhlIGdpdmVuIGFwayBhZnRlciBzdWNjZXNzZnVsIHVuc2lnbmluZyAhISFcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrUGF0aCBUaGUgcGF0aCB0byB0aGUgYXBrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBhcGsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG4gKiB1bnNpZ25lZCBhbmQgb3ZlcndyaXR0ZW5cbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSB1bnNpZ24gb3BlcmF0aW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVuc2lnbkFwayAoYXBrUGF0aCkge1xuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IG1ldGFJbmZGb2xkZXJOYW1lID0gJ01FVEEtSU5GJztcbiAgdHJ5IHtcbiAgICBsZXQgaGFzTWV0YUluZiA9IGZhbHNlO1xuICAgIGF3YWl0IHppcC5yZWFkRW50cmllcyhhcGtQYXRoLCAoe2VudHJ5fSkgPT4ge1xuICAgICAgaGFzTWV0YUluZiA9IGVudHJ5LmZpbGVOYW1lLnN0YXJ0c1dpdGgoYCR7bWV0YUluZkZvbGRlck5hbWV9L2ApO1xuICAgICAgLy8gZW50cmllcyBpdGVyYXRpb24gc3RvcHMgYWZ0ZXIgYGZhbHNlYCBpcyByZXR1cm5lZFxuICAgICAgcmV0dXJuICFoYXNNZXRhSW5mO1xuICAgIH0pO1xuICAgIGlmICghaGFzTWV0YUluZikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0bXBaaXBSb290ID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsICdhcGsnKTtcbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFwa1BhdGgsIHRtcFppcFJvb3QpO1xuICAgIGF3YWl0IGZzLnJpbXJhZihwYXRoLnJlc29sdmUodG1wWmlwUm9vdCwgbWV0YUluZkZvbGRlck5hbWUpKTtcbiAgICBjb25zdCB0bXBSZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIHBhdGguYmFzZW5hbWUoYXBrUGF0aCkpO1xuICAgIGF3YWl0IHppcC50b0FyY2hpdmUodG1wUmVzdWx0UGF0aCwge1xuICAgICAgY3dkOiB0bXBaaXBSb290LFxuICAgIH0pO1xuICAgIGF3YWl0IGZzLnVubGluayhhcGtQYXRoKTtcbiAgICBhd2FpdCBmcy5tdih0bXBSZXN1bHRQYXRoLCBhcGtQYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SU1FTGlzdEZyb21PdXRwdXQgKHN0ZG91dCkge1xuICBsZXQgZW5naW5lcyA9IFtdO1xuICBmb3IgKGxldCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAobGluZS5sZW5ndGggPiAwICYmIGxpbmVbMF0gIT09ICcgJykge1xuICAgICAgLy8gcmVtb3ZlIG5ld2xpbmUgYW5kIHRyYWlsaW5nIGNvbG9uLCBhbmQgYWRkIHRvIHRoZSBsaXN0XG4gICAgICBlbmdpbmVzLnB1c2gobGluZS50cmltKCkucmVwbGFjZSgvOiQvLCAnJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZW5naW5lcztcbn1cblxuY29uc3QgZ2V0SmF2YUhvbWUgPSBfLm1lbW9pemUoYXN5bmMgZnVuY3Rpb24gZ2V0SmF2YUhvbWUgKCkge1xuICBjb25zdCByZXN1bHQgPSBwcm9jZXNzLmVudi5KQVZBX0hPTUU7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgSkFWQV9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MnKTtcbiAgfVxuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgSkFWQV9IT01FIGxvY2F0aW9uICcke3Jlc3VsdH0nIG11c3QgZXhpc3RgKTtcbiAgfVxuICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQocmVzdWx0KTtcbiAgaWYgKCFzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgSkFWQV9IT01FIGxvY2F0aW9uICcke3Jlc3VsdH0nIG11c3QgYmUgYSB2YWxpZCBmb2xkZXJgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmNvbnN0IGdldEphdmFGb3JPcyA9IF8ubWVtb2l6ZShhc3luYyBmdW5jdGlvbiBnZXRKYXZhRm9yT3MgKCkge1xuICBsZXQgamF2YUhvbWU7XG4gIGxldCBlcnJNc2c7XG4gIHRyeSB7XG4gICAgamF2YUhvbWUgPSBhd2FpdCBnZXRKYXZhSG9tZSgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJNc2cgPSBlcnIubWVzc2FnZTtcbiAgfVxuICBjb25zdCBleGVjdXRhYmxlTmFtZSA9IGBqYXZhJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuICBpZiAoamF2YUhvbWUpIHtcbiAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKGphdmFIb21lLCAnYmluJywgZXhlY3V0YWJsZU5hbWUpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMocmVzdWx0UGF0aCkpIHtcbiAgICAgIHJldHVybiByZXN1bHRQYXRoO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy53aGljaChleGVjdXRhYmxlTmFtZSk7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJyR7ZXhlY3V0YWJsZU5hbWV9JyBiaW5hcnkgY291bGQgbm90IGJlIGZvdW5kIGAgK1xuICAgIGBuZWl0aGVyIGluIFBBVEggbm9yIHVuZGVyIEpBVkFfSE9NRSAoJHtlcnJNc2cgfHwgcGF0aC5yZXNvbHZlKGphdmFIb21lLCAnYmluJyl9KWApO1xufSk7XG5cbmNvbnN0IGdldE9wZW5Tc2xGb3JPcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYmluYXJ5TmFtZSA9IGBvcGVuc3NsJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy53aGljaChiaW5hcnlOYW1lKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgb3BlbnNzbCB0b29sIG11c3QgYmUgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0gYW5kIGF2YWlsYWJsZSBvbiB0aGUgcGF0aCcpO1xuICB9XG59O1xuXG4vKipcbiAqIEdldCB0aGUgYWJzb2x1dGUgcGF0aCB0byBhcGtzaWduZXIgdG9vbFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeXNIZWxwZXJzIC0gQW4gaW5zdGFuY2UgY29udGFpbmluZyBzeXN0ZW1DYWxsTWV0aG9kcyBoZWxwZXIgbWV0aG9kc1xuICogQHJldHVybnMge3N0cmluZ30gQW4gYWJzb2x1dGUgcGF0aCB0byBhcGtzaWduZXIgdG9vbC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdG9vbCBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwa3NpZ25lckZvck9zIChzeXNIZWxwZXJzKSB7XG4gIHJldHVybiBhd2FpdCBzeXNIZWxwZXJzLmdldEJpbmFyeUZyb21TZGtSb290KCdhcGtzaWduZXIuamFyJyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIGFwa2FuYWx5emVyIHRvb2wuXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vY29tbWFuZC1saW5lL2Fwa2FuYWx5emVyLmh0bWxcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3lzSGVscGVycyAtIEFuIGluc3RhbmNlIGNvbnRhaW5pbmcgc3lzdGVtQ2FsbE1ldGhvZHMgaGVscGVyIG1ldGhvZHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGFic29sdXRlIHBhdGggdG8gYXBrYW5hbHl6ZXIgdG9vbC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdG9vbCBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwa2FuYWx5emVyRm9yT3MgKHN5c0hlbHBlcnMpIHtcbiAgcmV0dXJuIGF3YWl0IHN5c0hlbHBlcnMuZ2V0QmluYXJ5RnJvbVNka1Jvb3QoJ2Fwa2FuYWx5emVyJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIG1TaG93aW5nTG9ja3NjcmVlbiBvciBtRHJlYW1pbmdMb2Nrc2NyZWVuIGluIGR1bXBzeXMgb3V0cHV0IHRvIGRldGVybWluZVxuICogaWYgbG9jayBzY3JlZW4gaXMgc2hvd2luZ1xuICpcbiAqIEEgbm90ZTogYGFkYiBzaGVsbCBkdW1wc3lzIHRydXN0YCBwZXJmb3JtcyBiZXR0ZXIgd2hpbGUgZGV0ZWN0aW5nIHRoZSBsb2NrZWQgc2NyZWVuIHN0YXRlXG4gKiBpbiBjb21wYXJpc29uIHRvIGBhZGIgZHVtcHN5cyB3aW5kb3dgIG91dHB1dCBwYXJzaW5nLlxuICogQnV0IHRoZSB0cnVzdCBjb21tYW5kIGRvZXMgbm90IHdvcmsgZm9yIGBTd2lwZWAgdW5sb2NrIHBhdHRlcm4uXG4gKlxuICogSW4gc29tZSBBbmRyb2lkIGRldmljZXMgKFByb2JhYmx5IGFyb3VuZCBBbmRyb2lkIDEwKyksIGBtU2hvd2luZ0xvY2tzY3JlZW5gIGFuZCBgbURyZWFtaW5nTG9ja3NjcmVlbmBcbiAqIGRvIG5vdCB3b3JrIHRvIGRldGVjdCBsb2NrIHN0YXR1cy4gSW5zdGVhZCwga2V5Z3VhcmQgcHJlZmVyZW5jZXMgaGVscHMgdG8gZGV0ZWN0IHRoZSBsb2NrIGNvbmRpdGlvbi5cbiAqIFNvbWUgZGV2aWNlcyBzdWNoIGFzIEFuZHJvaWQgVFYgZG8gbm90IGhhdmUga2V5Z3VhcmQsIHNvIHdlIHNob3VsZCBrZWVwXG4gKiBzY3JlZW4gY29uZGl0aW9uIGFzIHRoaXMgcHJpbWFyeSBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGR1bXBzeXMgLSBUaGUgb3V0cHV0IG9mIGR1bXBzeXMgd2luZG93IGNvbW1hbmQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGxvY2sgc2NyZWVuIGlzIHNob3dpbmcuXG4gKi9cbmZ1bmN0aW9uIGlzU2hvd2luZ0xvY2tzY3JlZW4gKGR1bXBzeXMpIHtcbiAgcmV0dXJuIF8uc29tZShbJ21TaG93aW5nTG9ja3NjcmVlbj10cnVlJywgJ21EcmVhbWluZ0xvY2tzY3JlZW49dHJ1ZSddLCAoeCkgPT4gZHVtcHN5cy5pbmNsdWRlcyh4KSlcbiAgICAvLyBgbUlzU2hvd2luZ2AgYW5kIGBtSW5wdXRSZXN0cmljdGVkYCBhcmUgYHRydWVgIGluIGxvY2sgY29uZGl0aW9uLiBgZmFsc2VgIGlzIHVubG9jayBjb25kaXRpb24uXG4gICAgfHwgXy5ldmVyeShbL0tleWd1YXJkU3RhdGVNb25pdG9yW1xcblxcc10rbUlzU2hvd2luZz10cnVlLywgL1xccyttSW5wdXRSZXN0cmljdGVkPXRydWUvXSwgKHgpID0+IHgudGVzdChkdW1wc3lzKSk7XG59XG5cbi8qXG4gKiBDaGVja3MgbUN1cnJlbnRGb2N1cyBpbiBkdW1wc3lzIG91dHB1dCB0byBkZXRlcm1pbmUgaWYgS2V5Z3VhcmQgaXMgYWN0aXZhdGVkXG4gKi9cbmZ1bmN0aW9uIGlzQ3VycmVudEZvY3VzT25LZXlndWFyZCAoZHVtcHN5cykge1xuICBsZXQgbSA9IC9tQ3VycmVudEZvY3VzLitLZXlndWFyZC9naS5leGVjKGR1bXBzeXMpO1xuICByZXR1cm4gKG0gJiYgbS5sZW5ndGggJiYgbVswXSkgPyB0cnVlIDogZmFsc2U7XG59XG5cbi8qXG4gKiBSZWFkcyBTdXJmYWNlT3JpZW50YXRpb24gaW4gZHVtcHN5cyBvdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0U3VyZmFjZU9yaWVudGF0aW9uIChkdW1wc3lzKSB7XG4gIGxldCBtID0gL1N1cmZhY2VPcmllbnRhdGlvbjogXFxkL2dpLmV4ZWMoZHVtcHN5cyk7XG4gIHJldHVybiBtICYmIHBhcnNlSW50KG1bMF0uc3BsaXQoJzonKVsxXSwgMTApO1xufVxuXG4vKlxuICogQ2hlY2tzIG1TY3JlZW5PbkZ1bGx5IGluIGR1bXBzeXMgb3V0cHV0IHRvIGRldGVybWluZSBpZiBzY3JlZW4gaXMgc2hvd2luZ1xuICogRGVmYXVsdCBpcyB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzU2NyZWVuT25GdWxseSAoZHVtcHN5cykge1xuICBsZXQgbSA9IC9tU2NyZWVuT25GdWxseT1cXHcrL2dpLmV4ZWMoZHVtcHN5cyk7XG4gIHJldHVybiAhbSB8fCAvLyBpZiBpbmZvcm1hdGlvbiBpcyBtaXNzaW5nIHdlIGFzc3VtZSBzY3JlZW4gaXMgZnVsbHkgb25cbiAgICAgICAgIChtICYmIG0ubGVuZ3RoID4gMCAmJiBtWzBdLnNwbGl0KCc9JylbMV0gPT09ICd0cnVlJykgfHwgZmFsc2U7XG59XG5cbi8qKlxuICogQnVpbGRzIGNvbW1hbmQgbGluZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuXG4gKiBhcHBsaWNhdGlvbiBzdGFydHVwIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YXJ0QXBwT3B0aW9uc30gc3RhcnRBcHBPcHRpb25zIC0gQXBwbGljYXRpb24gb3B0aW9ucyBtYXBwaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gYXBpTGV2ZWwgLSBUaGUgYWN0dWFsIE9TIEFQSSBsZXZlbFxuICogQHJldHVybnMge0FycmF5PFN0cmluZz59IFRoZSBhY3R1YWwgY29tbWFuZCBsaW5lIGFycmF5XG4gKi9cbmZ1bmN0aW9uIGJ1aWxkU3RhcnRDbWQgKHN0YXJ0QXBwT3B0aW9ucywgYXBpTGV2ZWwpIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgd2FpdEZvckxhdW5jaCxcbiAgICBwa2csXG4gICAgYWN0aXZpdHksXG4gICAgYWN0aW9uLFxuICAgIGNhdGVnb3J5LFxuICAgIHN0b3BBcHAsXG4gICAgZmxhZ3MsXG4gIH0gPSBzdGFydEFwcE9wdGlvbnM7XG4gIGNvbnN0IGNtZCA9IFsnYW0nLCAnc3RhcnQnXTtcbiAgaWYgKHV0aWwuaGFzVmFsdWUodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgaWYgKHdhaXRGb3JMYXVuY2gpIHtcbiAgICBjbWQucHVzaCgnLVcnKTtcbiAgfVxuICBpZiAoYWN0aXZpdHkgJiYgcGtnKSB7XG4gICAgY21kLnB1c2goJy1uJywgYCR7cGtnfS8ke2FjdGl2aXR5fWApO1xuICB9XG4gIGlmIChzdG9wQXBwICYmIGFwaUxldmVsID49IDE1KSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKGFjdGlvbikge1xuICAgIGNtZC5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKGNhdGVnb3J5KSB7XG4gICAgY21kLnB1c2goJy1jJywgY2F0ZWdvcnkpO1xuICB9XG4gIGlmIChmbGFncykge1xuICAgIGNtZC5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICBpZiAoc3RhcnRBcHBPcHRpb25zLm9wdGlvbmFsSW50ZW50QXJndW1lbnRzKSB7XG4gICAgLy8gZXhwZWN0IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzIHRvIGJlIGEgc2luZ2xlIHN0cmluZyBvZiB0aGUgZm9ybTpcbiAgICAvLyAgICAgXCItZmxhZyBrZXlcIlxuICAgIC8vICAgICBcIi1mbGFnIGtleSB2YWx1ZVwiXG4gICAgLy8gb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZSAoZS5nLiwgXCItZmxhZzEga2V5MSAtZmxhZzIga2V5MiB2YWx1ZTJcIilcblxuICAgIC8vIHRha2UgYSBzdHJpbmcgYW5kIHBhcnNlIG91dCB0aGUgcGFydCBiZWZvcmUgYW55IHNwYWNlcywgYW5kIGFueXRoaW5nIGFmdGVyXG4gICAgLy8gdGhlIGZpcnN0IHNwYWNlXG4gICAgbGV0IHBhcnNlS2V5VmFsdWUgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICBzdHIgPSBzdHIudHJpbSgpO1xuICAgICAgbGV0IHNwYWNlID0gc3RyLmluZGV4T2YoJyAnKTtcbiAgICAgIGlmIChzcGFjZSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPyBbc3RyXSA6IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtzdHIuc3Vic3RyaW5nKDAsIHNwYWNlKS50cmltKCksIHN0ci5zdWJzdHJpbmcoc3BhY2UgKyAxKS50cmltKCldO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBjeWNsZSB0aHJvdWdoIHRoZSBvcHRpb25hbEludGVudEFyZ3VtZW50cyBhbmQgcHVsbCBvdXQgdGhlIGFyZ3VtZW50c1xuICAgIC8vIGFkZCBhIHNwYWNlIGluaXRpYWxseSBzbyBmbGFncyBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tIGFyZ3VtZW50cyB0aGF0XG4gICAgLy8gaGF2ZSBpbnRlcm5hbCBoeXBoZW5zXG4gICAgbGV0IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzID0gYCAke3N0YXJ0QXBwT3B0aW9ucy5vcHRpb25hbEludGVudEFyZ3VtZW50c31gO1xuICAgIGxldCByZSA9IC8gKC1bXlxcc10rKSAoLispLztcbiAgICB3aGlsZSAodHJ1ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgICAgbGV0IGFyZ3MgPSByZS5leGVjKG9wdGlvbmFsSW50ZW50QXJndW1lbnRzKTtcbiAgICAgIGlmICghYXJncykge1xuICAgICAgICBpZiAob3B0aW9uYWxJbnRlbnRBcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gbm8gbW9yZSBmbGFncywgc28gdGhlIHJlbWFpbmRlciBjYW4gYmUgdHJlYXRlZCBhcyAna2V5JyBvciAna2V5IHZhbHVlJ1xuICAgICAgICAgIGNtZC5wdXNoLmFwcGx5KGNtZCwgcGFyc2VLZXlWYWx1ZShvcHRpb25hbEludGVudEFyZ3VtZW50cykpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdlIGFyZSBkb25lXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWtlIHRoZSBmbGFnIGFuZCBzZWUgaWYgaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nXG4gICAgICAvLyBpZiBpdCBpcyBub3QsIHRoZW4gaXQgbWVhbnMgd2UgaGF2ZSBiZWVuIHRocm91Z2ggYWxyZWFkeSwgYW5kXG4gICAgICAvLyB3aGF0IGlzIGJlZm9yZSB0aGUgZmxhZyBpcyB0aGUgYXJndW1lbnQgZm9yIHRoZSBwcmV2aW91cyBmbGFnXG4gICAgICBsZXQgZmxhZyA9IGFyZ3NbMV07XG4gICAgICBsZXQgZmxhZ1BvcyA9IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzLmluZGV4T2YoZmxhZyk7XG4gICAgICBpZiAoZmxhZ1BvcyAhPT0gMCkge1xuICAgICAgICBsZXQgcHJldkFyZ3MgPSBvcHRpb25hbEludGVudEFyZ3VtZW50cy5zdWJzdHJpbmcoMCwgZmxhZ1Bvcyk7XG4gICAgICAgIGNtZC5wdXNoLmFwcGx5KGNtZCwgcGFyc2VLZXlWYWx1ZShwcmV2QXJncykpO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIGZsYWcsIGFzIHRoZXJlIGFyZSBubyBtb3JlIGVhcmxpZXIgYXJndW1lbnRzXG4gICAgICBjbWQucHVzaChmbGFnKTtcblxuICAgICAgLy8gbWFrZSBvcHRpb25hbEludGVudEFyZ3VtZW50cyBob2xkIHRoZSByZW1haW5kZXJcbiAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzID0gYXJnc1syXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNtZDtcbn1cblxuY29uc3QgZ2V0U2RrVG9vbHNWZXJzaW9uID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldFNka1Rvb2xzVmVyc2lvbiAoKSB7XG4gIGNvbnN0IGFuZHJvaWRIb21lID0gcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FO1xuICBpZiAoIWFuZHJvaWRIb21lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBTkRST0lEX0hPTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0Jyk7XG4gIH1cbiAgY29uc3QgcHJvcGVydGllc1BhdGggPSBwYXRoLnJlc29sdmUoYW5kcm9pZEhvbWUsICd0b29scycsICdzb3VyY2UucHJvcGVydGllcycpO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhwcm9wZXJ0aWVzUGF0aCkpIHtcbiAgICBsb2cud2FybihgQ2Fubm90IGZpbmQgJHtwcm9wZXJ0aWVzUGF0aH0gZmlsZSB0byByZWFkIFNESyB2ZXJzaW9uIGZyb21gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcHJvcGVydGllc0NvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwcm9wZXJ0aWVzUGF0aCwgJ3V0ZjgnKTtcbiAgY29uc3QgdmVyc2lvbk1hdGNoZXIgPSBuZXcgUmVnRXhwKC9Qa2dcXC5SZXZpc2lvbj0oXFxkKylcXC4/KFxcZCspP1xcLj8oXFxkKyk/Lyk7XG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvbk1hdGNoZXIuZXhlYyhwcm9wZXJ0aWVzQ29udGVudCk7XG4gIGlmIChtYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBtYWpvcjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSxcbiAgICAgIG1pbm9yOiBtYXRjaFsyXSA/IHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgOiAwLFxuICAgICAgYnVpbGQ6IG1hdGNoWzNdID8gcGFyc2VJbnQobWF0Y2hbM10sIDEwKSA6IDBcbiAgICB9O1xuICB9XG4gIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgXCJQa2cuUmV2aXNpb25cIiB2YWx1ZSBmcm9tICR7cHJvcGVydGllc1BhdGh9YCk7XG59KTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgZnVsbCBwYXRocyB0byBhbGwgJ2J1aWxkLXRvb2xzJyBzdWJmb2xkZXJzIHVuZGVyIHRoZSBwYXJ0aWN1bGFyXG4gKiBTREsgcm9vdCBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RrUm9vdCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIEFuZHJvaWQgU0RLIHJvb3QgZm9sZGVyXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gVGhlIGZ1bGwgcGF0aHMgdG8gdGhlIHJlc3VsdGluZyBmb2xkZXJzIHNvcnRlZCBieVxuICogbW9kaWZpY2F0aW9uIGRhdGUgKHRoZSBuZXdlc3QgY29tZXMgZmlyc3QpIG9yIGFuIGVtcHR5IGxpc3QgaWYgbm8gbWFjdGhlcyB3ZXJlIGZvdW5kXG4gKi9cbmNvbnN0IGdldEJ1aWxkVG9vbHNEaXJzID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldEJ1aWxkVG9vbHNEaXJzIChzZGtSb290KSB7XG4gIGxldCBidWlsZFRvb2xzRGlycyA9IGF3YWl0IGZzLmdsb2IoJyovJywge1xuICAgIGN3ZDogcGF0aC5yZXNvbHZlKHNka1Jvb3QsICdidWlsZC10b29scycpLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICB9KTtcbiAgdHJ5IHtcbiAgICBidWlsZFRvb2xzRGlycyA9IGJ1aWxkVG9vbHNEaXJzXG4gICAgICAubWFwKChkaXIpID0+IFtwYXRoLmJhc2VuYW1lKGRpciksIGRpcl0pXG4gICAgICAuc29ydCgoYSwgYikgPT4gc2VtdmVyLnJjb21wYXJlKGFbMF0sIGJbMF0pKVxuICAgICAgLm1hcCgocGFpcikgPT4gcGFpclsxXSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBDYW5ub3Qgc29ydCBidWlsZC10b29scyBmb2xkZXJzICR7SlNPTi5zdHJpbmdpZnkoYnVpbGRUb29sc0RpcnMubWFwKChkaXIpID0+IHBhdGguYmFzZW5hbWUoZGlyKSkpfSBgICtcbiAgICAgIGBieSBzZW1hbnRpYyB2ZXJzaW9uIG5hbWVzLmApO1xuICAgIGxvZy53YXJuKGBGYWxsaW5nIGJhY2sgdG8gc29ydGluZyBieSBtb2RpZmljYXRpb24gZGF0ZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgY29uc3QgcGFpcnMgPSBhd2FpdCBCLm1hcChidWlsZFRvb2xzRGlycywgYXN5bmMgKGRpcikgPT4gWyhhd2FpdCBmcy5zdGF0KGRpcikpLm10aW1lLnZhbHVlT2YoKSwgZGlyXSk7XG4gICAgYnVpbGRUb29sc0RpcnMgPSBwYWlyc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGFbMF0gPCBiWzBdKVxuICAgICAgLm1hcCgocGFpcikgPT4gcGFpclsxXSk7XG4gIH1cbiAgbG9nLmluZm8oYEZvdW5kICR7YnVpbGRUb29sc0RpcnMubGVuZ3RofSAnYnVpbGQtdG9vbHMnIGZvbGRlcnMgdW5kZXIgJyR7c2RrUm9vdH0nIChuZXdlc3QgZmlyc3QpOmApO1xuICBmb3IgKGxldCBkaXIgb2YgYnVpbGRUb29sc0RpcnMpIHtcbiAgICBsb2cuaW5mbyhgICAgICR7ZGlyfWApO1xuICB9XG4gIHJldHVybiBidWlsZFRvb2xzRGlycztcbn0pO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBwZXJtaXNzaW9uIG5hbWVzIGVuY29kZWQgaW4gYGR1bXBzeXMgcGFja2FnZWAgY29tbWFuZCBvdXRwdXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGR1bXBzeXNPdXRwdXQgLSBUaGUgYWN0dWFsIGNvbW1hbmQgb3V0cHV0LlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBncm91cE5hbWVzIC0gVGhlIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdG8gbGlzdCBwZXJtaXNzaW9ucyBmb3IuXG4gKiBAcGFyYW0gez9ib29sZWFufSBncmFudGVkU3RhdGUgLSBUaGUgZXhwZWN0ZWQgc3RhdGUgb2YgYGdyYW50ZWRgIGF0dHJpYnV0ZSB0byBmaWx0ZXIgd2l0aC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcmluZyBpcyBkb25lIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNldC5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiBtYXRjaGVkIHBlcm1pc3Npb24gbmFtZXMgb3IgYW4gZW1wdHkgbGlzdCBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQuXG4gKi9cbmNvbnN0IGV4dHJhY3RNYXRjaGluZ1Blcm1pc3Npb25zID0gZnVuY3Rpb24gKGR1bXBzeXNPdXRwdXQsIGdyb3VwTmFtZXMsIGdyYW50ZWRTdGF0ZSA9IG51bGwpIHtcbiAgY29uc3QgZ3JvdXBQYXR0ZXJuQnlOYW1lID0gKGdyb3VwTmFtZSkgPT4gbmV3IFJlZ0V4cChgXihcXFxccyoke18uZXNjYXBlUmVnRXhwKGdyb3VwTmFtZSl9IHBlcm1pc3Npb25zOltcXFxcc1xcXFxTXSspYCwgJ20nKTtcbiAgY29uc3QgaW5kZW50UGF0dGVybiA9IC9cXFN8JC87XG4gIGNvbnN0IHBlcm1pc3Npb25OYW1lUGF0dGVybiA9IC9hbmRyb2lkXFwuXFx3KlxcLj9wZXJtaXNzaW9uXFwuXFx3Ky87XG4gIGNvbnN0IGdyYW50ZWRTdGF0ZVBhdHRlcm4gPSAvXFxiZ3JhbnRlZD0oXFx3KykvO1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgZm9yIChjb25zdCBncm91cE5hbWUgb2YgZ3JvdXBOYW1lcykge1xuICAgIGNvbnN0IGdyb3VwTWF0Y2ggPSBncm91cFBhdHRlcm5CeU5hbWUoZ3JvdXBOYW1lKS5leGVjKGR1bXBzeXNPdXRwdXQpO1xuICAgIGlmICghZ3JvdXBNYXRjaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBncm91cE1hdGNoWzFdLnNwbGl0KCdcXG4nKTtcbiAgICBpZiAobGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgdGl0bGVJbmRlbnQgPSBsaW5lc1swXS5zZWFyY2goaW5kZW50UGF0dGVybik7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZW50ID0gbGluZS5zZWFyY2goaW5kZW50UGF0dGVybik7XG4gICAgICBpZiAoY3VycmVudEluZGVudCA8PSB0aXRsZUluZGVudCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGVybWlzc2lvbk5hbWVNYXRjaCA9IHBlcm1pc3Npb25OYW1lUGF0dGVybi5leGVjKGxpbmUpO1xuICAgICAgaWYgKCFwZXJtaXNzaW9uTmFtZU1hdGNoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAgcGVybWlzc2lvbjogcGVybWlzc2lvbk5hbWVNYXRjaFswXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBncmFudGVkU3RhdGVNYXRjaCA9IGdyYW50ZWRTdGF0ZVBhdHRlcm4uZXhlYyhsaW5lKTtcbiAgICAgIGlmIChncmFudGVkU3RhdGVNYXRjaCkge1xuICAgICAgICBpdGVtLmdyYW50ZWQgPSBncmFudGVkU3RhdGVNYXRjaFsxXSA9PT0gJ3RydWUnO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRSZXN1bHQgPSByZXN1bHRcbiAgICAuZmlsdGVyKChpdGVtKSA9PiAhXy5pc0Jvb2xlYW4oZ3JhbnRlZFN0YXRlKSB8fCBpdGVtLmdyYW50ZWQgPT09IGdyYW50ZWRTdGF0ZSlcbiAgICAubWFwKChpdGVtKSA9PiBpdGVtLnBlcm1pc3Npb24pO1xuICBsb2cuZGVidWcoYFJldHJpZXZlZCAke3V0aWwucGx1cmFsaXplKCdwZXJtaXNzaW9uJywgZmlsdGVyZWRSZXN1bHQubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgYGZyb20gJHtncm91cE5hbWVzfSAke3V0aWwucGx1cmFsaXplKCdncm91cCcsIGdyb3VwTmFtZXMubGVuZ3RoLCBmYWxzZSl9YCk7XG4gIHJldHVybiBmaWx0ZXJlZFJlc3VsdDtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYWxsb3dUZXN0UGFja2FnZXMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGFsbG93IHRlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGluc3RhbGxhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXNlU2RjYXJkIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBpbnN0YWxsIHRoZSBhcHAgb24gc2RjYXJkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB0aGUgZGV2aWNlIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZ3JhbnRQZXJtaXNzaW9ucyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gZ3JhbnQgYWxsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbWFuaWZlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhZnRlciB0aGUgaW5zdGFsbGF0aW9uIGlzIGNvbXBsZXRlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBBbmRyb2lkIDYrLlxuICogQHByb3BlcnR5IHtib29sZWFufSByZXBsYWNlIFt0cnVlXSAtIFNldCBpdCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhcHBsaWNhdGlvbiB0byBiZSB1cGdyYWRlZC9yZWluc3RhbGxlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudCBvbiB0aGUgZGV2aWNlLlxuICogQHByb3BlcnR5IHtib29sZWFufSBwYXJ0aWFsSW5zdGFsbCBbZmFsc2VdIC0gSW5zdGFsbCBhcGtzIHBhcnRpYWxseS4gSXQgaXMgdXNlZCBmb3IgJ2luc3RhbGwtbXVsdGlwbGUnLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2FuZHJvaWQuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzExMTA2NC93aGF0LWlzLWEtcGFydGlhbC1hcHBsaWNhdGlvbi1pbnN0YWxsLXZpYS1hZGJcbiAqL1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgZ2l2ZW4gb3B0aW9ucyBpbnRvIHRoZSBsaXN0IG9mIGBhZGIgaW5zdGFsbC5pbnN0YWxsLW11bHRpcGxlYCBjb21tYW5kIGFyZ3VtZW50c1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhcGlMZXZlbCAtIFRoZSBjdXJyZW50IEFQSSBsZXZlbFxuICogQHBhcmFtIHs/SW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBtYXBwaW5nIHRvIHRyYW5zZm9ybVxuICogQHJldHVybnMge0FycmF5PFN0cmluZz59IFRoZSBhcnJheSBvZiBhcmd1bWVudHNcbiAqL1xuZnVuY3Rpb24gYnVpbGRJbnN0YWxsQXJncyAoYXBpTGV2ZWwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICBpZiAoIXV0aWwuaGFzVmFsdWUob3B0aW9ucy5yZXBsYWNlKSB8fCBvcHRpb25zLnJlcGxhY2UpIHtcbiAgICByZXN1bHQucHVzaCgnLXInKTtcbiAgfVxuICBpZiAob3B0aW9ucy5hbGxvd1Rlc3RQYWNrYWdlcykge1xuICAgIHJlc3VsdC5wdXNoKCctdCcpO1xuICB9XG4gIGlmIChvcHRpb25zLnVzZVNkY2FyZCkge1xuICAgIHJlc3VsdC5wdXNoKCctcycpO1xuICB9XG4gIGlmIChvcHRpb25zLmdyYW50UGVybWlzc2lvbnMpIHtcbiAgICBpZiAoYXBpTGV2ZWwgPCAyMykge1xuICAgICAgbG9nLmRlYnVnKGBTa2lwcGluZyBwZXJtaXNzaW9ucyBncmFudCBvcHRpb24sIHNpbmNlIGAgK1xuICAgICAgICAgICAgICAgIGB0aGUgY3VycmVudCBBUEkgbGV2ZWwgJHthcGlMZXZlbH0gZG9lcyBub3Qgc3VwcG9ydCBhcHBsaWNhdGlvbnMgYCArXG4gICAgICAgICAgICAgICAgYHBlcm1pc3Npb25zIGN1c3RvbWl6YXRpb25gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goJy1nJyk7XG4gICAgfVxuICB9XG4gIC8vIEZvciBtdWx0aXBsZS1pbnN0YWxsXG4gIGlmIChvcHRpb25zLnBhcnRpYWxJbnN0YWxsKSB7XG4gICAgcmVzdWx0LnB1c2goJy1wJyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1hbmlmZXN0SW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZyAtIFRoZSBhcHBsaWNhdGlvbiBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aXZpdHkgLSBUaGUgbmFtZSBvZiB0aGUgbWFpbiBwYWNrYWdlIGFjdGl2aXR5XG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlcnNpb25Db2RlIC0gVGhlIHZlcnNpb24gY29kZSBudW1iZXIgKG1pZ2h0IGJlIGBOYU5gKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2ZXJzaW9uTmFtZSAtIFRoZSB2ZXJzaW9uIG5hbWUgKG1pZ2h0IGJlIGBudWxsYClcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcGFyc2luZyBvZiB0aGUgbWFuaWZlc3Qgb2JqZWN0IGluIG9yZGVyXG4gKiB0byBleHRyYWN0IHNvbWUgdml0YWwgdmFsdWVzIGZyb20gaXRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbWFuaWZlc3QgVGhlIG1hbmlmZXN0IGNvbnRlbnQgZm9ybWF0dGVkIGFzIEpTT05cbiAqIFNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hZGJraXQtYXBrcmVhZGVyIGZvciBkZXRhaWxlZCBmb3JtYXQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIHtNYW5pZmVzdEluZm99XG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWFuaWZlc3QgKG1hbmlmZXN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBwa2c6IG1hbmlmZXN0LnBhY2thZ2UsXG4gICAgdmVyc2lvbkNvZGU6IHBhcnNlSW50KG1hbmlmZXN0LnZlcnNpb25Db2RlLCAxMCksXG4gICAgdmVyc2lvbk5hbWU6IG1hbmlmZXN0LnZlcnNpb25OYW1lIHx8IG51bGwsXG4gIH07XG4gIGlmICghbWFuaWZlc3QuYXBwbGljYXRpb24pIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gTG9vayBmb3IgZW5hYmxlZCBhY3Rpdml0eSBvciBhY3Rpdml0eS1hbGlhcyB3aXRoXG4gIC8vIGFjdGlvbiA9PSBhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiBhbmRcbiAgLy8gY2F0ZWdvcnkgPT0gYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVJcbiAgZm9yIChjb25zdCBhY3Rpdml0eSBvZiBbXG4gICAgLi4ubWFuaWZlc3QuYXBwbGljYXRpb24uYWN0aXZpdGllcyxcbiAgICAuLi5tYW5pZmVzdC5hcHBsaWNhdGlvbi5hY3Rpdml0eUFsaWFzZXMsXG4gIF0pIHtcbiAgICBpZiAoYWN0aXZpdHkuZW5hYmxlZCA9PT0gZmFsc2UgfHwgXy5pc0VtcHR5KGFjdGl2aXR5LmludGVudEZpbHRlcnMpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHthY3Rpb25zLCBjYXRlZ29yaWVzfSBvZiBhY3Rpdml0eS5pbnRlbnRGaWx0ZXJzKSB7XG4gICAgICBpZiAoXy5pc0VtcHR5KGFjdGlvbnMpIHx8IF8uaXNFbXB0eShjYXRlZ29yaWVzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNNYWluQWN0aW9uID0gYWN0aW9ucy5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09IE1BSU5fQUNUSU9OKTtcbiAgICAgIGNvbnN0IGlzTGF1bmNoZXJDYXRlZ29yeSA9IGNhdGVnb3JpZXMuc29tZSgoe25hbWV9KSA9PiBuYW1lID09PSBMQVVOQ0hFUl9DQVRFR09SWSk7XG4gICAgICBpZiAoaXNNYWluQWN0aW9uICYmIGlzTGF1bmNoZXJDYXRlZ29yeSkge1xuICAgICAgICByZXN1bHQuYWN0aXZpdHkgPSBhY3Rpdml0eS5uYW1lO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhcGsgc3RyaW5ncyBmcm9tIGFhcHQgdG9vbCBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3T3V0cHV0IFRoZSBhY3R1YWwgdG9vbCBvdXRwdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWdNYXJrZXIgVGhlIGNvbmZpZyBtYXJrZXIuIFVzdWFsbHlcbiAqIGEgbGFuZ3VhZ2UgYWJicmV2aWF0aW9uIG9yIGAoZGVmYXVsdClgXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBTdHJpbmdzIGlkcyB0byB2YWx1ZXMgbWFwcGluZy4gUGx1cmFsXG4gKiB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGFzIGFycmF5cy4gSWYgbm8gY29uZmlnIGZvdW5kIGZvciB0aGVcbiAqIGdpdmVuIG1hcmtlciB0aGVuIGFuIGVtcHR5IG1hcHBpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQWFwdFN0cmluZ3MgKHJhd091dHB1dCwgY29uZmlnTWFya2VyKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZVN0cmluZ01hdGNoID0gZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9cIiQvLCAnJykucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKTtcbiAgfTtcblxuICBjb25zdCBhcGtTdHJpbmdzID0ge307XG4gIGxldCBpc0luQ29uZmlnID0gZmFsc2U7XG4gIGxldCBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG4gIGxldCBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgLy8gVGhlIHBhdHRlcm4gbWF0Y2hlcyBhbnkgcXVvdGVkIGNvbnRlbnQgaW5jbHVkaW5nIGVzY2FwZWQgcXVvdGVzXG4gIGNvbnN0IHF1b3RlZFN0cmluZ1BhdHRlcm4gPSAvXCJbXlwiXFxcXF0qKD86XFxcXC5bXlwiXFxcXF0qKSpcIi87XG4gIGZvciAoY29uc3QgbGluZSBvZiByYXdPdXRwdXQuc3BsaXQob3MuRU9MKSkge1xuICAgIGNvbnN0IHRyaW1tZWRMaW5lID0gbGluZS50cmltKCk7XG4gICAgaWYgKF8uaXNFbXB0eSh0cmltbWVkTGluZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChbJ2NvbmZpZycsICd0eXBlJywgJ3NwZWMnLCAnUGFja2FnZSddLnNvbWUoKHgpID0+IHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoeCkpKSB7XG4gICAgICBpc0luQ29uZmlnID0gdHJpbW1lZExpbmUuc3RhcnRzV2l0aChgY29uZmlnICR7Y29uZmlnTWFya2VyfTpgKTtcbiAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIGlzSW5QbHVyYWxHcm91cCA9IGZhbHNlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0luQ29uZmlnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgncmVzb3VyY2UnKSkge1xuICAgICAgaXNJblBsdXJhbEdyb3VwID0gZmFsc2U7XG4gICAgICBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG5cbiAgICAgIGlmICh0cmltbWVkTGluZS5pbmNsdWRlcygnOnN0cmluZy8nKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IC86c3RyaW5nXFwvKFxcUyspOi8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuaW5jbHVkZXMoJzpwbHVyYWxzLycpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gLzpwbHVyYWxzXFwvKFxcUyspOi8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgICAgaXNJblBsdXJhbEdyb3VwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRSZXNvdXJjZUlkICYmIHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJyhzdHJpbmcnKSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBxdW90ZWRTdHJpbmdQYXR0ZXJuLmV4ZWModHJpbW1lZExpbmUpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGFwa1N0cmluZ3NbY3VycmVudFJlc291cmNlSWRdID0gbm9ybWFsaXplU3RyaW5nTWF0Y2gobWF0Y2hbMF0pO1xuICAgICAgfVxuICAgICAgY3VycmVudFJlc291cmNlSWQgPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRSZXNvdXJjZUlkICYmIGlzSW5QbHVyYWxHcm91cCAmJiB0cmltbWVkTGluZS5pbmNsdWRlcygnOiAoc3RyaW5nJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcXVvdGVkU3RyaW5nUGF0dGVybi5leGVjKHRyaW1tZWRMaW5lKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBhcGtTdHJpbmdzW2N1cnJlbnRSZXNvdXJjZUlkXSA9IFtcbiAgICAgICAgICAuLi4oYXBrU3RyaW5nc1tjdXJyZW50UmVzb3VyY2VJZF0gfHwgW10pLFxuICAgICAgICAgIG5vcm1hbGl6ZVN0cmluZ01hdGNoKG1hdGNoWzBdKSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXBrU3RyaW5ncztcbn1cblxuLyoqXG4gKiBQYXJzZXMgYXBrIHN0cmluZ3MgZnJvbSBhYXB0MiB0b29sIG91dHB1dFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdPdXRwdXQgVGhlIGFjdHVhbCB0b29sIG91dHB1dFxuICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZ01hcmtlciBUaGUgY29uZmlnIG1hcmtlci4gVXN1YWxseVxuICogYSBsYW5ndWFnZSBhYmJyZXZpYXRpb24gb3IgYW4gZW1wdHkgc3RyaW5nIGZvciB0aGUgZGVmYXVsdCBvbmVcbiAqIEByZXR1cm5zIHtPYmplY3R9IFN0cmluZ3MgaWRzIHRvIHZhbHVlcyBtYXBwaW5nLiBQbHVyYWxcbiAqIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYXMgYXJyYXlzLiBJZiBubyBjb25maWcgZm91bmQgZm9yIHRoZVxuICogZ2l2ZW4gbWFya2VyIHRoZW4gYW4gZW1wdHkgbWFwcGluZyBpcyByZXR1cm5lZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VBYXB0MlN0cmluZ3MgKHJhd091dHB1dCwgY29uZmlnTWFya2VyKSB7XG4gIGNvbnN0IGFsbExpbmVzID0gcmF3T3V0cHV0LnNwbGl0KG9zLkVPTCk7XG4gIGZ1bmN0aW9uIGV4dHJhY3RDb250ZW50IChzdGFydElkeCkge1xuICAgIGxldCBpZHggPSBzdGFydElkeDtcbiAgICBjb25zdCBzdGFydENoYXJQb3MgPSBhbGxMaW5lc1tzdGFydElkeF0uaW5kZXhPZignXCInKTtcbiAgICBpZiAoc3RhcnRDaGFyUG9zIDwgMCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBpZHhdO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKGlkeCA8IGFsbExpbmVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdGVybWluYXRpb25DaGFyTWF0Y2ggPSAvXCIkLy5leGVjKGFsbExpbmVzW2lkeF0pO1xuICAgICAgaWYgKHRlcm1pbmF0aW9uQ2hhck1hdGNoKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmF0aW9uQ2hhclBvcyA9IHRlcm1pbmF0aW9uQ2hhck1hdGNoLmluZGV4O1xuICAgICAgICBpZiAoc3RhcnRJZHggPT09IGlkeCkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBhbGxMaW5lc1tpZHhdLnN1YnN0cmluZyhzdGFydENoYXJQb3MgKyAxLCB0ZXJtaW5hdGlvbkNoYXJQb3MpLFxuICAgICAgICAgICAgaWR4XG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGAke3Jlc3VsdH1cXFxcbiR7Xy50cmltU3RhcnQoYWxsTGluZXNbaWR4XS5zdWJzdHJpbmcoMCwgdGVybWluYXRpb25DaGFyUG9zKSl9YCxcbiAgICAgICAgICBpZHgsXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICBpZiAoaWR4ID4gc3RhcnRJZHgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGBcXFxcbiR7Xy50cmltU3RhcnQoYWxsTGluZXNbaWR4XSl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBhbGxMaW5lc1tpZHhdLnN1YnN0cmluZyhzdGFydENoYXJQb3MgKyAxKTtcbiAgICAgIH1cbiAgICAgICsraWR4O1xuICAgIH1cbiAgICByZXR1cm4gW3Jlc3VsdCwgaWR4XTtcbiAgfVxuXG4gIGNvbnN0IGFwa1N0cmluZ3MgPSB7fTtcbiAgbGV0IGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgbGV0IGlzSW5QbHVyYWxHcm91cCA9IGZhbHNlO1xuICBsZXQgaXNJbkN1cnJlbnRDb25maWcgPSBmYWxzZTtcbiAgbGV0IGxpbmVJbmRleCA9IDA7XG4gIHdoaWxlIChsaW5lSW5kZXggPCBhbGxMaW5lcy5sZW5ndGgpIHtcbiAgICBjb25zdCB0cmltbWVkTGluZSA9IGFsbExpbmVzW2xpbmVJbmRleF0udHJpbSgpO1xuICAgIGlmIChfLmlzRW1wdHkodHJpbW1lZExpbmUpKSB7XG4gICAgICArK2xpbmVJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChbJ3R5cGUnLCAnUGFja2FnZSddLnNvbWUoKHgpID0+IHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoeCkpKSB7XG4gICAgICBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG4gICAgICBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gZmFsc2U7XG4gICAgICArK2xpbmVJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCdyZXNvdXJjZScpKSB7XG4gICAgICBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gZmFsc2U7XG5cbiAgICAgIGlmICh0cmltbWVkTGluZS5pbmNsdWRlcygnc3RyaW5nLycpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL3N0cmluZ1xcLyhcXFMrKS8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuaW5jbHVkZXMoJ3BsdXJhbHMvJykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvcGx1cmFsc1xcLyhcXFMrKS8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgICAgaXNJblBsdXJhbEdyb3VwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKytsaW5lSW5kZXg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFJlc291cmNlSWQpIHtcbiAgICAgIGlmIChpc0luUGx1cmFsR3JvdXApIHtcbiAgICAgICAgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJygnKSkge1xuICAgICAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gdHJpbW1lZExpbmUuc3RhcnRzV2l0aChgKCR7Y29uZmlnTWFya2VyfSlgKTtcbiAgICAgICAgICArK2xpbmVJbmRleDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJbkN1cnJlbnRDb25maWcpIHtcbiAgICAgICAgICBjb25zdCBbY29udGVudCwgaWR4XSA9IGV4dHJhY3RDb250ZW50KGxpbmVJbmRleCk7XG4gICAgICAgICAgbGluZUluZGV4ID0gaWR4O1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBhcGtTdHJpbmdzW2N1cnJlbnRSZXNvdXJjZUlkXSA9IFtcbiAgICAgICAgICAgICAgLi4uKGFwa1N0cmluZ3NbY3VycmVudFJlc291cmNlSWRdIHx8IFtdKSxcbiAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoYCgke2NvbmZpZ01hcmtlcn0pYCkpIHtcbiAgICAgICAgY29uc3QgW2NvbnRlbnQsIGlkeF0gPSBleHRyYWN0Q29udGVudChsaW5lSW5kZXgpO1xuICAgICAgICBsaW5lSW5kZXggPSBpZHg7XG4gICAgICAgIGlmIChfLmlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICAgICAgYXBrU3RyaW5nc1tjdXJyZW50UmVzb3VyY2VJZF0gPSBjb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgKytsaW5lSW5kZXg7XG4gIH1cbiAgcmV0dXJuIGFwa1N0cmluZ3M7XG59XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgY29uZmlnIG1hcmtlciwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gcGFyc2UuLiBtZXRob2RzXG4gKiB0byBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aCByZXNvdXJjZSBmb3JtYXRzIGdlbmVyYXRlZCBieSBhYXB0KDIpIHRvb2xcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maWdzR2V0dGVyIFRoZSBmdW5jdGlvbiB3aG9zZSByZXN1bHQgaXMgYSBsaXN0XG4gKiBvZiBhcGsgY29uZmlnc1xuICogQHBhcmFtIHtzdHJpbmd9IGRlc2lyZWRNYXJrZXIgVGhlIGRlc2lyZWQgY29uZmlnIG1hcmtlciB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlZmF1bHRNYXJrZXIgVGhlIGRlZmF1bHQgY29uZmlnIG1hcmtlciB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIGNvbmZpZyBtYXJrZXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZm9ybWF0Q29uZmlnTWFya2VyIChjb25maWdzR2V0dGVyLCBkZXNpcmVkTWFya2VyLCBkZWZhdWx0TWFya2VyKSB7XG4gIGxldCBjb25maWdNYXJrZXIgPSBkZXNpcmVkTWFya2VyIHx8IGRlZmF1bHRNYXJrZXI7XG4gIGlmIChjb25maWdNYXJrZXIuaW5jbHVkZXMoJy0nKSAmJiAhY29uZmlnTWFya2VyLmluY2x1ZGVzKCctcicpKSB7XG4gICAgY29uZmlnTWFya2VyID0gY29uZmlnTWFya2VyLnJlcGxhY2UoJy0nLCAnLXInKTtcbiAgfVxuICBjb25zdCBjb25maWdzID0gYXdhaXQgY29uZmlnc0dldHRlcigpO1xuICBsb2cuZGVidWcoYFJlc291cmNlIGNvbmZpZ3VyYXRpb25zOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZ3MpfWApO1xuICAvLyBBc3N1bWUgdGhlICdlbicgY29uZmlndXJhdGlvbiBpcyB0aGUgZGVmYXVsdCBvbmVcbiAgaWYgKGNvbmZpZ01hcmtlci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2VuJylcbiAgICAmJiAhY29uZmlncy5zb21lKCh4KSA9PiB4LnRyaW0oKSA9PT0gY29uZmlnTWFya2VyKSkge1xuICAgIGxvZy5kZWJ1ZyhgUmVzb3VyY2UgY29uZmlndXJhdGlvbiBuYW1lICcke2NvbmZpZ01hcmtlcn0nIGlzIHVua25vd24uIGAgK1xuICAgICAgYFJlcGxhY2luZyBpdCB3aXRoICcke2RlZmF1bHRNYXJrZXJ9J2ApO1xuICAgIGNvbmZpZ01hcmtlciA9IGRlZmF1bHRNYXJrZXI7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmRlYnVnKGBTZWxlY3RlZCBjb25maWd1cmF0aW9uOiAnJHtjb25maWdNYXJrZXJ9J2ApO1xuICB9XG4gIHJldHVybiBjb25maWdNYXJrZXI7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBvdXRwdXQgaW4gSlNPTiBmb3JtYXQgcmV0cmlldmVkIGZyb21cbiAqIHRoZSBjb3JyZXNwb25kaW5nIEFwcGl1bSBTZXR0aW5ncyBicm9hZGNhc3QgY2FsbHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0IFRoZSBhY3R1YWwgY29tbWFuZCBvdXRwdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgd2hpY2ggaXNcbiAqIGdvaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gVGhlIHBhcnNlZCBKU09OIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBvdXRwdXQgY2Fubm90IGJlIHBhcnNlZFxuICogYXMgYSB2YWxpZCBKU09OXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbkRhdGEgKG91dHB1dCwgZW50aXR5TmFtZSkge1xuICBpZiAoIS9cXGJyZXN1bHQ9LTFcXGIvLnRlc3Qob3V0cHV0KSB8fCAhL1xcYmRhdGE9XCIvLnRlc3Qob3V0cHV0KSkge1xuICAgIGxvZy5kZWJ1ZyhvdXRwdXQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJldHJpZXZlICR7ZW50aXR5TmFtZX0gZnJvbSB0aGUgZGV2aWNlLiBgICtcbiAgICAgICdDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSAvXFxiZGF0YT0oXCIuKykvLmV4ZWMob3V0cHV0KTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIGxvZy5kZWJ1ZyhvdXRwdXQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlICR7ZW50aXR5TmFtZX0gZnJvbSB0aGUgY29tbWFuZCBvdXRwdXQuIGAgK1xuICAgICAgJ0NoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgfVxuICBjb25zdCBqc29uU3RyID0gXy50cmltKG1hdGNoWzFdKS5yZXBsYWNlKC8oXlwiKXwoXCIkKS9nLCAnJyk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblN0cik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoanNvblN0cik7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgJHtlbnRpdHlOYW1lfSBmcm9tIHRoZSByZXN1bHRpbmcgZGF0YSBzdHJpbmcuIGAgK1xuICAgICAgJ0NoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIGxhbmd1YWdlIGFuZCBjb3VudHJ5IGFiYnJldmlhdGlvbnNcbiAqIHRvIEFWRCBhcmd1bWVudHMgYXJyYXlcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGxhbmd1YWdlIExhbmd1YWdlIG5hbWUsIGZvciBleGFtcGxlICdmcidcbiAqIEBwYXJhbSB7P3N0cmluZ30gY291bnRyeSBDb3VudHJ5IG5hbWUsIGZvciBleGFtcGxlICdDQSdcbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgZ2VuZXJhdGVkIGFyZ3VtZW50cy4gVGhlXG4gKiByZXN1bHRpbmcgYXJyYXkgbWlnaHQgYmUgZW1wdHkgaWYgYm90aCBhcmd1bWVudHMgYXJlIGVtcHR5XG4gKi9cbmZ1bmN0aW9uIHRvQXZkTG9jYWxlQXJncyAobGFuZ3VhZ2UsIGNvdW50cnkpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGlmIChsYW5ndWFnZSAmJiBfLmlzU3RyaW5nKGxhbmd1YWdlKSkge1xuICAgIHJlc3VsdC5wdXNoKCctcHJvcCcsIGBwZXJzaXN0LnN5cy5sYW5ndWFnZT0ke2xhbmd1YWdlLnRvTG93ZXJDYXNlKCl9YCk7XG4gIH1cbiAgaWYgKGNvdW50cnkgJiYgXy5pc1N0cmluZyhjb3VudHJ5KSkge1xuICAgIHJlc3VsdC5wdXNoKCctcHJvcCcsIGBwZXJzaXN0LnN5cy5jb3VudHJ5PSR7Y291bnRyeS50b1VwcGVyQ2FzZSgpfWApO1xuICB9XG4gIGxldCBsb2NhbGU7XG4gIGlmIChfLmlzU3RyaW5nKGxhbmd1YWdlKSAmJiBfLmlzU3RyaW5nKGNvdW50cnkpICYmIGxhbmd1YWdlICYmIGNvdW50cnkpIHtcbiAgICBsb2NhbGUgPSBsYW5ndWFnZS50b0xvd2VyQ2FzZSgpICsgJy0nICsgY291bnRyeS50b1VwcGVyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKGxhbmd1YWdlICYmIF8uaXNTdHJpbmcobGFuZ3VhZ2UpKSB7XG4gICAgbG9jYWxlID0gbGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmIChjb3VudHJ5ICYmIF8uaXNTdHJpbmcoY291bnRyeSkpIHtcbiAgICBsb2NhbGUgPSBjb3VudHJ5O1xuICB9XG4gIGlmIChsb2NhbGUpIHtcbiAgICByZXN1bHQucHVzaCgnLXByb3AnLCBgcGVyc2lzdC5zeXMubG9jYWxlPSR7bG9jYWxlfWApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmdWxsIHBhdGggdG8gdGhlIEFuZHJvaWQgcHJlZmVyZW5jZXMgcm9vdFxuICpcbiAqIEByZXR1cm5zIHs/c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgb3IgYG51bGxgIGlmIHRoZSBmb2xkZXIgY2Fubm90IGJlIGZvdW5kXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFuZHJvaWRQcmVmc1Jvb3QgKCkge1xuICBsZXQgbG9jYXRpb24gPSBwcm9jZXNzLmVudi5BTkRST0lEX0VNVUxBVE9SX0hPTUU7XG4gIGlmIChhd2FpdCBkaXJFeGlzdHMobG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG5cbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgbG9nLndhcm4oYFRoZSB2YWx1ZSBvZiB0aGUgQU5EUk9JRF9FTVVMQVRPUl9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlICcke2xvY2F0aW9ufScgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeWApO1xuICB9XG5cbiAgY29uc3QgaG9tZSA9IHByb2Nlc3MuZW52LkhPTUUgfHwgcHJvY2Vzcy5lbnYuVVNFUlBST0ZJTEU7XG4gIGlmIChob21lKSB7XG4gICAgbG9jYXRpb24gPSBwYXRoLnJlc29sdmUoaG9tZSwgJy5hbmRyb2lkJyk7XG4gIH1cblxuICBpZiAoIWF3YWl0IGRpckV4aXN0cyhsb2NhdGlvbikpIHtcbiAgICBsb2cuZGVidWcoYEFuZHJvaWQgY29uZmlnIHJvb3QgJyR7bG9jYXRpb259JyBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbG9jYXRpb247XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIGV4aXN0cyBvbiB0aGUgZmlsZXN5c3RlbSBhbmQgaXMgYSBkaXJlY3RvcnlcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGxvY2F0aW9uIFRoZSBmdWxsIHBhdGggdG8gdGhlIGRpcmVjdG9yeVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRpckV4aXN0cyAobG9jYXRpb24pIHtcbiAgcmV0dXJuIGxvY2F0aW9uXG4gICAgJiYgYXdhaXQgZnMuZXhpc3RzKGxvY2F0aW9uKVxuICAgICYmIChhd2FpdCBmcy5zdGF0KGxvY2F0aW9uKSkuaXNEaXJlY3RvcnkoKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLlxuICogVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgcG9zc2libGUgaXNzdWVzIHdpdGggaG93IHN5c3RlbSBgc3Bhd25gXG4gKiBjYWxsIGhhbmRsZXMgdGhlbS5cbiAqIFNlZSBodHRwczovL2Rpc2N1c3MuYXBwaXVtLmlvL3QvaG93LXRvLW1vZGlmeS13ZC1wcm94eS1hbmQtdWlhdXRvbWF0b3IyLXNvdXJjZS1jb2RlLXRvLXN1cHBvcnQtdW5pY29kZS8zMzQ2NlxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJnIE5vbi1lc2NhcGVkIGFyZ3VtZW50IHN0cmluZ1xuICogQHJldHVybnMgVGhlIGVzY2FwZWQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gZXNjYXBlU2hlbGxBcmcgKGFyZykge1xuICBhcmcgPSBgJHthcmd9YDtcbiAgaWYgKHN5c3RlbS5pc1dpbmRvd3MoKSkge1xuICAgIHJldHVybiAvWyZ8Xlxcc10vLnRlc3QoYXJnKSA/IGBcIiR7YXJnLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgIDogYXJnO1xuICB9XG4gIHJldHVybiBhcmcucmVwbGFjZSgvJi9nLCAnXFxcXCYnKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG5hbWUgb2YgbGF1bmNoYWJsZSBwYWNrYWdlIGFjdGl2aXR5XG4gKiBmcm9tIGR1bXBzeXMgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkdW1wc3lzIHRoZSBhY3R1YWwgZHVtcHN5cyBvdXRwdXRcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gRWl0aGVyIHRoZSBmdWxseSBxdWFsaWZpZWRcbiAqIGFjdGl2aXR5IG5hbWUgYXMgYSBzaW5nbGUgbGlzdCBpdGVtIG9yIGFuIGVtcHR5IGxpc3QgaWYgbm90aGluZyBjb3VsZCBiZSBwYXJzZWQuXG4gKiBJbiBBbmRyb2lkIDYgYW5kIG9sZGVyIHRoZXJlIGlzIG5vIHJlbGlhYmxlIHdheSB0byBkZXRlcm1pbmVcbiAqIHRoZSBjYXRlZ29yeSBuYW1lIGZvciB0aGUgZ2l2ZW4gYWN0aXZpdHksIHNvIHRoaXMgQVBJIGp1c3RcbiAqIHJldHVybnMgYWxsIGFjdGl2aXR5IG5hbWVzIGJlbG9uZ2luZyB0byAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4nXG4gKiB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZSBhcHAgbWFuaWZlc3QgY291bGQgYmUgcGFyc2VkIG5leHRcbiAqIGluIG9yZGVyIHRvIGRldGVybWluZSBjYXRlZ29yeSBuYW1lcyBmb3IgdGhlc2UuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTGF1bmNoYWJsZUFjdGl2aXR5TmFtZXMgKGR1bXBzeXMpIHtcbiAgY29uc3QgbWFpbkFjdGl2aXR5TmFtZVJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKiR7Xy5lc2NhcGVSZWdFeHAoTUFJTl9BQ1RJT04pfTokYCk7XG4gIGNvbnN0IGNhdGVnb3J5TmFtZVJlID0gL15cXHMqQ2F0ZWdvcnk6XFxzK1wiKFthLXpBLVowLTkuXy8tXSspXCIkLztcbiAgY29uc3QgYmxvY2tzID0gW107XG4gIGxldCBibG9ja1N0YXJ0SW5kZW50O1xuICBsZXQgYmxvY2sgPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGR1bXBzeXMuc3BsaXQoJ1xcbicpLm1hcChfLnRyaW1FbmQpKSB7XG4gICAgY29uc3QgY3VycmVudEluZGVudCA9IGxpbmUubGVuZ3RoIC0gXy50cmltU3RhcnQobGluZSkubGVuZ3RoO1xuICAgIGlmIChtYWluQWN0aXZpdHlOYW1lUmUudGVzdChsaW5lKSkge1xuICAgICAgYmxvY2tTdGFydEluZGVudCA9IGN1cnJlbnRJbmRlbnQ7XG4gICAgICBpZiAoIV8uaXNFbXB0eShibG9jaykpIHtcbiAgICAgICAgYmxvY2tzLnB1c2goYmxvY2spO1xuICAgICAgICBibG9jayA9IFtdO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChfLmlzTmlsKGJsb2NrU3RhcnRJbmRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEluZGVudCA+IGJsb2NrU3RhcnRJbmRlbnQpIHtcbiAgICAgIGJsb2NrLnB1c2gobGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghXy5pc0VtcHR5KGJsb2NrKSkge1xuICAgICAgICBibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIGJsb2NrID0gW107XG4gICAgICB9XG4gICAgICBibG9ja1N0YXJ0SW5kZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYmxvY2spKSB7XG4gICAgYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBibG9ja3MpIHtcbiAgICBsZXQgaGFzQ2F0ZWdvcnkgPSBmYWxzZTtcbiAgICBsZXQgaXNMYXVuY2hlckNhdGVnb3J5ID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGl0ZW0pIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2F0ZWdvcnlOYW1lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGhhc0NhdGVnb3J5ID0gdHJ1ZTtcbiAgICAgIGlzTGF1bmNoZXJDYXRlZ29yeSA9IG1hdGNoWzFdID09PSBMQVVOQ0hFUl9DQVRFR09SWTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBPbiBvbGRlciBBbmRyb2lkIHZlcnNpb25zIHRoZSBjYXRlZ29yeSBuYW1lXG4gICAgLy8gbWlnaHQgbm90IGJlIGxpc3RlZCwgc28gd2UganVzdCB0cnkgdG8gZmV0Y2hcbiAgICAvLyBhbGwgbWF0Y2hlcyBpbnN0ZWFkXG4gICAgaWYgKGhhc0NhdGVnb3J5ICYmICFpc0xhdW5jaGVyQ2F0ZWdvcnkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWN0aXZpdHlOYW1lU3RyIG9mIGl0ZW0ubWFwKF8udHJpbSkuZmlsdGVyKEJvb2xlYW4pKSB7XG4gICAgICBjb25zdCBmcUFjdGl2aXR5TmFtZSA9IGFjdGl2aXR5TmFtZVN0ci5zcGxpdCgvXFxzKy8pWzFdO1xuICAgICAgaWYgKCFtYXRjaENvbXBvbmVudE5hbWUoZnFBY3Rpdml0eU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNMYXVuY2hlckNhdGVnb3J5KSB7XG4gICAgICAgIHJldHVybiBbZnFBY3Rpdml0eU5hbWVdO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goZnFBY3Rpdml0eU5hbWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBjb21wb25lbnQgbmFtZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc1N0cmluZyBUaGUgc3RyaW5nIHRvIHZlcmlmeVxuICogQHJldHVybiB7P0FycmF5PE1hdGNoPn0gVGhlIHJlc3VsdCBvZiBSZWdleHAuZXhlYyBvcGVyYXRpb25cbiAqIG9yIF9udWxsXyBpZiBubyBtYXRjaGVzIGFyZSBmb3VuZFxuICovXG5mdW5jdGlvbiBtYXRjaENvbXBvbmVudE5hbWUgKGNsYXNzU3RyaW5nKSB7XG4gIC8vIHNvbWUucGFja2FnZS9zb21lLnBhY2thZ2UuQWN0aXZpdHlcbiAgcmV0dXJuIC9eW2EtejAtOS4vX10rJC9pLmV4ZWMoY2xhc3NTdHJpbmcpO1xufVxuXG5leHBvcnQge1xuICBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoLCB1bnppcEZpbGUsXG4gIGdldElNRUxpc3RGcm9tT3V0cHV0LCBnZXRKYXZhRm9yT3MsIGlzU2hvd2luZ0xvY2tzY3JlZW4sIGlzQ3VycmVudEZvY3VzT25LZXlndWFyZCxcbiAgZ2V0U3VyZmFjZU9yaWVudGF0aW9uLCBpc1NjcmVlbk9uRnVsbHksIGJ1aWxkU3RhcnRDbWQsIGdldEphdmFIb21lLFxuICByb290RGlyLCBnZXRTZGtUb29sc1ZlcnNpb24sIGdldEFwa3NpZ25lckZvck9zLCBnZXRCdWlsZFRvb2xzRGlycyxcbiAgZ2V0QXBrYW5hbHl6ZXJGb3JPcywgZ2V0T3BlblNzbEZvck9zLCBleHRyYWN0TWF0Y2hpbmdQZXJtaXNzaW9ucywgQVBLU19FWFRFTlNJT04sXG4gIEFQS19JTlNUQUxMX1RJTUVPVVQsIEFQS1NfSU5TVEFMTF9USU1FT1VULCBidWlsZEluc3RhbGxBcmdzLCBBUEtfRVhURU5TSU9OLFxuICBERUZBVUxUX0FEQl9FWEVDX1RJTUVPVVQsIHBhcnNlTWFuaWZlc3QsIHBhcnNlQWFwdFN0cmluZ3MsIHBhcnNlQWFwdDJTdHJpbmdzLFxuICBmb3JtYXRDb25maWdNYXJrZXIsIHBhcnNlSnNvbkRhdGEsIHVuc2lnbkFwaywgdG9BdmRMb2NhbGVBcmdzLCByZXF1aXJlU2RrUm9vdCxcbiAgZ2V0U2RrUm9vdEZyb21FbnYsIGdldEFuZHJvaWRQcmVmc1Jvb3QsIGRpckV4aXN0cywgZXNjYXBlU2hlbGxBcmcsXG4gIHBhcnNlTGF1bmNoYWJsZUFjdGl2aXR5TmFtZXMsIG1hdGNoQ29tcG9uZW50TmFtZSxcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QkMsT0FBTyxDQUFDQyxHQUFSLENBQVlDLGFBQVosR0FBNEIsSUFBNUIsR0FBbUMsT0FBM0QsQ0FBaEI7OztBQUNBLE1BQU1DLGNBQWMsR0FBRyxPQUF2Qjs7QUFDQSxNQUFNQyxhQUFhLEdBQUcsTUFBdEI7O0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsS0FBNUI7O0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUdELG1CQUFtQixHQUFHLENBQW5EOztBQUNBLE1BQU1FLHdCQUF3QixHQUFHLEtBQWpDOztBQUNBLE1BQU1DLFdBQVcsR0FBRyw0QkFBcEI7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxrQ0FBMUI7O0FBT0EsU0FBU0MsaUJBQVQsR0FBOEI7RUFDNUIsT0FBT1YsT0FBTyxDQUFDQyxHQUFSLENBQVlVLFlBQVosSUFBNEJYLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxnQkFBL0M7QUFDRDs7QUFTRCxlQUFlQyxjQUFmLENBQStCQyxVQUFVLEdBQUcsSUFBNUMsRUFBa0Q7RUFDaEQsTUFBTUMsT0FBTyxHQUFHRCxVQUFVLElBQUlKLGlCQUFpQixFQUEvQztFQUNBLE1BQU1NLE1BQU0sR0FBRyxtRkFBZjs7RUFDQSxJQUFJQyxlQUFBLENBQUVDLE9BQUYsQ0FBVUgsT0FBVixDQUFKLEVBQXdCO0lBQ3RCLE1BQU0sSUFBSUksS0FBSixDQUFXLGdGQUErRUgsTUFBTyxFQUFqRyxDQUFOO0VBQ0Q7O0VBRUQsSUFBSSxFQUFDLE1BQU1JLFdBQUEsQ0FBR0MsTUFBSCxDQUFVTixP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
957
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbInJvb3REaXIiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInByb2Nlc3MiLCJlbnYiLCJOT19QUkVDT01QSUxFIiwiQVBLU19FWFRFTlNJT04iLCJBUEtfRVhURU5TSU9OIiwiQVBLX0lOU1RBTExfVElNRU9VVCIsIkFQS1NfSU5TVEFMTF9USU1FT1VUIiwiREVGQVVMVF9BREJfRVhFQ19USU1FT1VUIiwiTUFJTl9BQ1RJT04iLCJMQVVOQ0hFUl9DQVRFR09SWSIsImdldFNka1Jvb3RGcm9tRW52IiwiQU5EUk9JRF9IT01FIiwiQU5EUk9JRF9TREtfUk9PVCIsInJlcXVpcmVTZGtSb290IiwiY3VzdG9tUm9vdCIsInNka1Jvb3QiLCJkb2NNc2ciLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiZnMiLCJleGlzdHMiLCJzdGF0cyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsImdldEFuZHJvaWRQbGF0Zm9ybUFuZFBhdGgiLCJwcm9wc1BhdGhzIiwiZ2xvYiIsImN3ZCIsImFic29sdXRlIiwicGxhdGZvcm1zTWFwcGluZyIsInByb3BzUGF0aCIsInByb3BzQ29udGVudCIsInJlYWRGaWxlIiwicGxhdGZvcm1QYXRoIiwiZGlybmFtZSIsInBsYXRmb3JtIiwiYmFzZW5hbWUiLCJtYXRjaCIsImV4ZWMiLCJsb2ciLCJ3YXJuIiwicGFyc2VJbnQiLCJyZWNlbnRTZGtWZXJzaW9uIiwia2V5cyIsInNvcnQiLCJyZXZlcnNlIiwicmVzdWx0IiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwidW56aXBGaWxlIiwiemlwUGF0aCIsImRzdFJvb3QiLCJ6aXAiLCJhc3NlcnRWYWxpZFppcCIsImV4dHJhY3RBbGxUbyIsInVuc2lnbkFwayIsImFwa1BhdGgiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJtZXRhSW5mRm9sZGVyTmFtZSIsImhhc01ldGFJbmYiLCJyZWFkRW50cmllcyIsImVudHJ5IiwiZmlsZU5hbWUiLCJzdGFydHNXaXRoIiwidG1wWmlwUm9vdCIsInJpbXJhZiIsInRtcFJlc3VsdFBhdGgiLCJ0b0FyY2hpdmUiLCJ1bmxpbmsiLCJtdiIsImdldElNRUxpc3RGcm9tT3V0cHV0Iiwic3Rkb3V0IiwiZW5naW5lcyIsImxpbmUiLCJzcGxpdCIsImxlbmd0aCIsInB1c2giLCJ0cmltIiwicmVwbGFjZSIsImdldEphdmFIb21lIiwibWVtb2l6ZSIsIkpBVkFfSE9NRSIsImdldEphdmFGb3JPcyIsImphdmFIb21lIiwiZXJyTXNnIiwiZXJyIiwibWVzc2FnZSIsImV4ZWN1dGFibGVOYW1lIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwicmVzdWx0UGF0aCIsIndoaWNoIiwiaWduIiwiZ2V0T3BlblNzbEZvck9zIiwiYmluYXJ5TmFtZSIsImdldEFwa3NpZ25lckZvck9zIiwic3lzSGVscGVycyIsImdldEJpbmFyeUZyb21TZGtSb290IiwiZ2V0QXBrYW5hbHl6ZXJGb3JPcyIsImlzU2hvd2luZ0xvY2tzY3JlZW4iLCJkdW1wc3lzIiwic29tZSIsIngiLCJpbmNsdWRlcyIsImV2ZXJ5IiwidGVzdCIsImlzQ3VycmVudEZvY3VzT25LZXlndWFyZCIsIm0iLCJnZXRTdXJmYWNlT3JpZW50YXRpb24iLCJpc1NjcmVlbk9uRnVsbHkiLCJidWlsZFN0YXJ0Q21kIiwic3RhcnRBcHBPcHRpb25zIiwiYXBpTGV2ZWwiLCJ1c2VyIiwid2FpdEZvckxhdW5jaCIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJzdG9wQXBwIiwiZmxhZ3MiLCJjbWQiLCJ1dGlsIiwiaGFzVmFsdWUiLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInBhcnNlS2V5VmFsdWUiLCJzdHIiLCJzcGFjZSIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJyZSIsImFyZ3MiLCJhcHBseSIsImZsYWciLCJmbGFnUG9zIiwicHJldkFyZ3MiLCJnZXRTZGtUb29sc1ZlcnNpb24iLCJhbmRyb2lkSG9tZSIsInByb3BlcnRpZXNQYXRoIiwicHJvcGVydGllc0NvbnRlbnQiLCJ2ZXJzaW9uTWF0Y2hlciIsIlJlZ0V4cCIsIm1ham9yIiwibWlub3IiLCJidWlsZCIsImdldEJ1aWxkVG9vbHNEaXJzIiwiYnVpbGRUb29sc0RpcnMiLCJtYXAiLCJkaXIiLCJhIiwiYiIsInNlbXZlciIsInJjb21wYXJlIiwicGFpciIsInBhaXJzIiwiQiIsIm10aW1lIiwidmFsdWVPZiIsImluZm8iLCJleHRyYWN0TWF0Y2hpbmdQZXJtaXNzaW9ucyIsImR1bXBzeXNPdXRwdXQiLCJncm91cE5hbWVzIiwiZ3JhbnRlZFN0YXRlIiwiZ3JvdXBQYXR0ZXJuQnlOYW1lIiwiZ3JvdXBOYW1lIiwiZXNjYXBlUmVnRXhwIiwiaW5kZW50UGF0dGVybiIsInBlcm1pc3Npb25OYW1lUGF0dGVybiIsImdyYW50ZWRTdGF0ZVBhdHRlcm4iLCJncm91cE1hdGNoIiwibGluZXMiLCJ0aXRsZUluZGVudCIsInNlYXJjaCIsInNsaWNlIiwiY3VycmVudEluZGVudCIsInBlcm1pc3Npb25OYW1lTWF0Y2giLCJpdGVtIiwicGVybWlzc2lvbiIsImdyYW50ZWRTdGF0ZU1hdGNoIiwiZ3JhbnRlZCIsImZpbHRlcmVkUmVzdWx0IiwiZmlsdGVyIiwiaXNCb29sZWFuIiwicGx1cmFsaXplIiwiYnVpbGRJbnN0YWxsQXJncyIsIm9wdGlvbnMiLCJhbGxvd1Rlc3RQYWNrYWdlcyIsInVzZVNkY2FyZCIsImdyYW50UGVybWlzc2lvbnMiLCJwYXJ0aWFsSW5zdGFsbCIsInBhcnNlTWFuaWZlc3QiLCJtYW5pZmVzdCIsInBhY2thZ2UiLCJ2ZXJzaW9uQ29kZSIsInZlcnNpb25OYW1lIiwiYXBwbGljYXRpb24iLCJhY3Rpdml0aWVzIiwiYWN0aXZpdHlBbGlhc2VzIiwiZW5hYmxlZCIsImludGVudEZpbHRlcnMiLCJhY3Rpb25zIiwiY2F0ZWdvcmllcyIsImlzTWFpbkFjdGlvbiIsIm5hbWUiLCJpc0xhdW5jaGVyQ2F0ZWdvcnkiLCJwYXJzZUFhcHRTdHJpbmdzIiwicmF3T3V0cHV0IiwiY29uZmlnTWFya2VyIiwibm9ybWFsaXplU3RyaW5nTWF0Y2giLCJzIiwiYXBrU3RyaW5ncyIsImlzSW5Db25maWciLCJjdXJyZW50UmVzb3VyY2VJZCIsImlzSW5QbHVyYWxHcm91cCIsInF1b3RlZFN0cmluZ1BhdHRlcm4iLCJvcyIsIkVPTCIsInRyaW1tZWRMaW5lIiwicGFyc2VBYXB0MlN0cmluZ3MiLCJhbGxMaW5lcyIsImV4dHJhY3RDb250ZW50Iiwic3RhcnRJZHgiLCJpZHgiLCJzdGFydENoYXJQb3MiLCJ0ZXJtaW5hdGlvbkNoYXJNYXRjaCIsInRlcm1pbmF0aW9uQ2hhclBvcyIsImluZGV4IiwidHJpbVN0YXJ0IiwiaXNJbkN1cnJlbnRDb25maWciLCJsaW5lSW5kZXgiLCJjb250ZW50IiwiaXNTdHJpbmciLCJmb3JtYXRDb25maWdNYXJrZXIiLCJjb25maWdzR2V0dGVyIiwiZGVzaXJlZE1hcmtlciIsImRlZmF1bHRNYXJrZXIiLCJjb25maWdzIiwidG9Mb3dlckNhc2UiLCJwYXJzZUpzb25EYXRhIiwib3V0cHV0IiwiZW50aXR5TmFtZSIsImpzb25TdHIiLCJwYXJzZSIsImUiLCJ0b0F2ZExvY2FsZUFyZ3MiLCJsYW5ndWFnZSIsImNvdW50cnkiLCJ0b1VwcGVyQ2FzZSIsImxvY2FsZSIsImdldEFuZHJvaWRQcmVmc1Jvb3QiLCJsb2NhdGlvbiIsIkFORFJPSURfRU1VTEFUT1JfSE9NRSIsImRpckV4aXN0cyIsImhvbWUiLCJIT01FIiwiVVNFUlBST0ZJTEUiLCJlc2NhcGVTaGVsbEFyZyIsImFyZyIsInBhcnNlTGF1bmNoYWJsZUFjdGl2aXR5TmFtZXMiLCJtYWluQWN0aXZpdHlOYW1lUmUiLCJjYXRlZ29yeU5hbWVSZSIsImJsb2NrcyIsImJsb2NrU3RhcnRJbmRlbnQiLCJibG9jayIsInRyaW1FbmQiLCJpc05pbCIsImhhc0NhdGVnb3J5IiwiYWN0aXZpdHlOYW1lU3RyIiwiQm9vbGVhbiIsImZxQWN0aXZpdHlOYW1lIiwibWF0Y2hDb21wb25lbnROYW1lIiwiY2xhc3NTdHJpbmciXSwibWFw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QkFBa0IsQ0FBQ0QsY0FBRCxDQUF2QixFQUF5QztBQUN2QztBQUNEOztBQUVELFVBQUlqRSxrQkFBSixFQUF3QjtBQUN0QixlQUFPLENBQUNpRSxjQUFELENBQVA7QUFDRDs7QUFDRGxPLE1BQUFBLE1BQU0sQ0FBQ2lDLElBQVAsQ0FBWWlNLGNBQVo7QUFDRDtBQUNGOztBQUNELFNBQU9sTyxNQUFQO0FBQ0Q7O0FBU0QsU0FBU21PLGtCQUFULENBQTZCQyxXQUE3QixFQUEwQztBQUV4QyxTQUFPLGtCQUFrQjVPLElBQWxCLENBQXVCNE8sV0FBdkIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzLCB6aXAsIHV0aWwsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlci5qcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcblxuY29uc3Qgcm9vdERpciA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsIHByb2Nlc3MuZW52Lk5PX1BSRUNPTVBJTEUgPyAnLi4nIDogJy4uLy4uJyk7XG5jb25zdCBBUEtTX0VYVEVOU0lPTiA9ICcuYXBrcyc7XG5jb25zdCBBUEtfRVhURU5TSU9OID0gJy5hcGsnO1xuY29uc3QgQVBLX0lOU1RBTExfVElNRU9VVCA9IDYwMDAwO1xuY29uc3QgQVBLU19JTlNUQUxMX1RJTUVPVVQgPSBBUEtfSU5TVEFMTF9USU1FT1VUICogMjtcbmNvbnN0IERFRkFVTFRfQURCX0VYRUNfVElNRU9VVCA9IDIwMDAwOyAvLyBpbiBtaWxsaXNlY29uZHNcbmNvbnN0IE1BSU5fQUNUSU9OID0gJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJztcbmNvbnN0IExBVU5DSEVSX0NBVEVHT1JZID0gJ2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkxBVU5DSEVSJztcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFjdHVhbCBwYXRoIHRvIFNESyByb290IGZvbGRlciBmcm9tIHRoZSBzeXN0ZW0gZW52aXJvbm1lbnRcbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBTREsgcm9vdCBmb2xkZXJcbiAqL1xuZnVuY3Rpb24gZ2V0U2RrUm9vdEZyb21FbnYgKCkge1xuICByZXR1cm4gcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FIHx8IHByb2Nlc3MuZW52LkFORFJPSURfU0RLX1JPT1Q7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBhY3R1YWwgcGF0aCB0byBTREsgcm9vdCBmb2xkZXJcbiAqXG4gKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBmdWxsIHBhdGggdG8gdGhlIFNESyByb290IGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIGVpdGhlciB0aGUgY29ycmVzcG9uZGluZyBlbnYgdmFyaWFibGUgaXMgdW5zZXQgb3IgaXNcbiAqIHBvaW50aW5nIHRvIGFuIGludmFsaWQgZmlsZSBzeXN0ZW0gZW50cnlcbiAqL1xuYXN5bmMgZnVuY3Rpb24gcmVxdWlyZVNka1Jvb3QgKGN1c3RvbVJvb3QgPSBudWxsKSB7XG4gIGNvbnN0IHNka1Jvb3QgPSBjdXN0b21Sb290IHx8IGdldFNka1Jvb3RGcm9tRW52KCk7XG4gIGNvbnN0IGRvY01zZyA9ICdSZWFkIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9jb21tYW5kLWxpbmUvdmFyaWFibGVzIGZvciBtb3JlIGRldGFpbHMnO1xuICBpZiAoXy5pc0VtcHR5KHNka1Jvb3QpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBOZWl0aGVyIEFORFJPSURfSE9NRSBub3IgQU5EUk9JRF9TREtfUk9PVCBlbnZpcm9ubWVudCB2YXJpYWJsZSB3YXMgZXhwb3J0ZWQuICR7ZG9jTXNnfWApO1xuICB9XG5cbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoc2RrUm9vdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBBbmRyb2lkIFNESyByb290IGZvbGRlciAnJHtzZGtSb290fScgZG9lcyBub3QgZXhpc3Qgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtLiAke2RvY01zZ31gKTtcbiAgfVxuICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQoc2RrUm9vdCk7XG4gIGlmICghc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIEFuZHJvaWQgU0RLIHJvb3QgJyR7c2RrUm9vdH0nIG11c3QgYmUgYSBmb2xkZXIuICR7ZG9jTXNnfWApO1xuICB9XG4gIHJldHVybiBzZGtSb290O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFBsYXRmb3JtSW5mb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwbGF0Zm9ybSAtIFRoZSBwbGF0Zm9ybSBuYW1lLCBmb3IgZXhhbXBsZSBgYW5kcm9pZC0yNGBcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBgbnVsbGAgaWYgaXQgY2Fubm90IGJlIGZvdW5kXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBsYXRmb3JtUGF0aCAtIEZ1bGwgcGF0aCB0byB0aGUgcGxhdGZvcm0gU0RLIGZvbGRlclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBgbnVsbGAgaWYgaXQgY2Fubm90IGJlIGZvdW5kXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgcGF0aCB0byB0aGUgcmVjZW50IGluc3RhbGxlZCBBbmRyb2lkIHBsYXRmb3JtLlxuICpcbiAqIEByZXR1cm4ge1BsYXRmb3JtSW5mb30gVGhlIHJlc3VsdGluZyBwYXRoIHRvIHRoZSBuZXdlc3QgaW5zdGFsbGVkIHBsYXRmb3JtLlxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoIChzZGtSb290KSB7XG4gIGNvbnN0IHByb3BzUGF0aHMgPSBhd2FpdCBmcy5nbG9iKCcqL2J1aWxkLnByb3AnLCB7XG4gICAgY3dkOiBwYXRoLnJlc29sdmUoc2RrUm9vdCwgJ3BsYXRmb3JtcycpLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICB9KTtcbiAgY29uc3QgcGxhdGZvcm1zTWFwcGluZyA9IHt9O1xuICBmb3IgKGNvbnN0IHByb3BzUGF0aCBvZiBwcm9wc1BhdGhzKSB7XG4gICAgY29uc3QgcHJvcHNDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocHJvcHNQYXRoLCAndXRmLTgnKTtcbiAgICBjb25zdCBwbGF0Zm9ybVBhdGggPSBwYXRoLmRpcm5hbWUocHJvcHNQYXRoKTtcbiAgICBjb25zdCBwbGF0Zm9ybSA9IHBhdGguYmFzZW5hbWUocGxhdGZvcm1QYXRoKTtcbiAgICBjb25zdCBtYXRjaCA9IC9yb1xcLmJ1aWxkXFwudmVyc2lvblxcLnNkaz0oXFxkKykvLmV4ZWMocHJvcHNDb250ZW50KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICBsb2cud2FybihgQ2Fubm90IHJlYWQgdGhlIFNESyB2ZXJzaW9uIGZyb20gJyR7cHJvcHNQYXRofScuIFNraXBwaW5nICcke3BsYXRmb3JtfSdgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBwbGF0Zm9ybXNNYXBwaW5nW3BhcnNlSW50KG1hdGNoWzFdLCAxMCldID0ge1xuICAgICAgcGxhdGZvcm0sXG4gICAgICBwbGF0Zm9ybVBhdGgsXG4gICAgfTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KHBsYXRmb3Jtc01hcHBpbmcpKSB7XG4gICAgbG9nLndhcm4oYEZvdW5kIHplcm8gcGxhdGZvcm0gZm9sZGVycyBhdCAnJHtwYXRoLnJlc29sdmUoc2RrUm9vdCwgJ3BsYXRmb3JtcycpfScuIGAgK1xuICAgICAgYERvIHlvdSBoYXZlIGFueSBBbmRyb2lkIFNES3MgaW5zdGFsbGVkP2ApO1xuICAgIHJldHVybiB7XG4gICAgICBwbGF0Zm9ybTogbnVsbCxcbiAgICAgIHBsYXRmb3JtUGF0aDogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVjZW50U2RrVmVyc2lvbiA9IF8ua2V5cyhwbGF0Zm9ybXNNYXBwaW5nKS5zb3J0KCkucmV2ZXJzZSgpWzBdO1xuICBjb25zdCByZXN1bHQgPSBwbGF0Zm9ybXNNYXBwaW5nW3JlY2VudFNka1ZlcnNpb25dO1xuICBsb2cuZGVidWcoYEZvdW5kIHRoZSBtb3N0IHJlY2VudCBBbmRyb2lkIHBsYXRmb3JtOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuemlwRmlsZSAoemlwUGF0aCwgZHN0Um9vdCA9IHBhdGguZGlybmFtZSh6aXBQYXRoKSkge1xuICBsb2cuZGVidWcoYFVuemlwcGluZyAnJHt6aXBQYXRofScgdG8gJyR7ZHN0Um9vdH0nYCk7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcCh6aXBQYXRoKTtcbiAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyh6aXBQYXRoLCBkc3RSb290KTtcbiAgbG9nLmRlYnVnKCdVbnppcCBzdWNjZXNzZnVsJyk7XG59XG5cbi8qKlxuICogVW5zaWducyB0aGUgZ2l2ZW4gYXBrIGJ5IHJlbW92aW5nIHRoZVxuICogTUVUQS1JTkYgZm9sZGVyIHJlY3Vyc2l2ZWx5IGZyb20gdGhlIGFyY2hpdmUuXG4gKiAhISEgVGhlIGZ1bmN0aW9uIG92ZXJ3cml0ZXMgdGhlIGdpdmVuIGFwayBhZnRlciBzdWNjZXNzZnVsIHVuc2lnbmluZyAhISFcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrUGF0aCBUaGUgcGF0aCB0byB0aGUgYXBrXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSBhcGsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5XG4gKiB1bnNpZ25lZCBhbmQgb3ZlcndyaXR0ZW5cbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSB1bnNpZ24gb3BlcmF0aW9uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHVuc2lnbkFwayAoYXBrUGF0aCkge1xuICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gIGNvbnN0IG1ldGFJbmZGb2xkZXJOYW1lID0gJ01FVEEtSU5GJztcbiAgdHJ5IHtcbiAgICBsZXQgaGFzTWV0YUluZiA9IGZhbHNlO1xuICAgIGF3YWl0IHppcC5yZWFkRW50cmllcyhhcGtQYXRoLCAoe2VudHJ5fSkgPT4ge1xuICAgICAgaGFzTWV0YUluZiA9IGVudHJ5LmZpbGVOYW1lLnN0YXJ0c1dpdGgoYCR7bWV0YUluZkZvbGRlck5hbWV9L2ApO1xuICAgICAgLy8gZW50cmllcyBpdGVyYXRpb24gc3RvcHMgYWZ0ZXIgYGZhbHNlYCBpcyByZXR1cm5lZFxuICAgICAgcmV0dXJuICFoYXNNZXRhSW5mO1xuICAgIH0pO1xuICAgIGlmICghaGFzTWV0YUluZikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCB0bXBaaXBSb290ID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsICdhcGsnKTtcbiAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKGFwa1BhdGgsIHRtcFppcFJvb3QpO1xuICAgIGF3YWl0IGZzLnJpbXJhZihwYXRoLnJlc29sdmUodG1wWmlwUm9vdCwgbWV0YUluZkZvbGRlck5hbWUpKTtcbiAgICBjb25zdCB0bXBSZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsIHBhdGguYmFzZW5hbWUoYXBrUGF0aCkpO1xuICAgIGF3YWl0IHppcC50b0FyY2hpdmUodG1wUmVzdWx0UGF0aCwge1xuICAgICAgY3dkOiB0bXBaaXBSb290LFxuICAgIH0pO1xuICAgIGF3YWl0IGZzLnVubGluayhhcGtQYXRoKTtcbiAgICBhd2FpdCBmcy5tdih0bXBSZXN1bHRQYXRoLCBhcGtQYXRoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0SU1FTGlzdEZyb21PdXRwdXQgKHN0ZG91dCkge1xuICBsZXQgZW5naW5lcyA9IFtdO1xuICBmb3IgKGxldCBsaW5lIG9mIHN0ZG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICBpZiAobGluZS5sZW5ndGggPiAwICYmIGxpbmVbMF0gIT09ICcgJykge1xuICAgICAgLy8gcmVtb3ZlIG5ld2xpbmUgYW5kIHRyYWlsaW5nIGNvbG9uLCBhbmQgYWRkIHRvIHRoZSBsaXN0XG4gICAgICBlbmdpbmVzLnB1c2gobGluZS50cmltKCkucmVwbGFjZSgvOiQvLCAnJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZW5naW5lcztcbn1cblxuY29uc3QgZ2V0SmF2YUhvbWUgPSBfLm1lbW9pemUoYXN5bmMgZnVuY3Rpb24gZ2V0SmF2YUhvbWUgKCkge1xuICBjb25zdCByZXN1bHQgPSBwcm9jZXNzLmVudi5KQVZBX0hPTUU7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgSkFWQV9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgZm9yIHRoZSBjdXJyZW50IHByb2Nlc3MnKTtcbiAgfVxuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhyZXN1bHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgSkFWQV9IT01FIGxvY2F0aW9uICcke3Jlc3VsdH0nIG11c3QgZXhpc3RgKTtcbiAgfVxuICBjb25zdCBzdGF0cyA9IGF3YWl0IGZzLnN0YXQocmVzdWx0KTtcbiAgaWYgKCFzdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgSkFWQV9IT01FIGxvY2F0aW9uICcke3Jlc3VsdH0nIG11c3QgYmUgYSB2YWxpZCBmb2xkZXJgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbmNvbnN0IGdldEphdmFGb3JPcyA9IF8ubWVtb2l6ZShhc3luYyBmdW5jdGlvbiBnZXRKYXZhRm9yT3MgKCkge1xuICBsZXQgamF2YUhvbWU7XG4gIGxldCBlcnJNc2c7XG4gIHRyeSB7XG4gICAgamF2YUhvbWUgPSBhd2FpdCBnZXRKYXZhSG9tZSgpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJNc2cgPSBlcnIubWVzc2FnZTtcbiAgfVxuICBjb25zdCBleGVjdXRhYmxlTmFtZSA9IGBqYXZhJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuICBpZiAoamF2YUhvbWUpIHtcbiAgICBjb25zdCByZXN1bHRQYXRoID0gcGF0aC5yZXNvbHZlKGphdmFIb21lLCAnYmluJywgZXhlY3V0YWJsZU5hbWUpO1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMocmVzdWx0UGF0aCkpIHtcbiAgICAgIHJldHVybiByZXN1bHRQYXRoO1xuICAgIH1cbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy53aGljaChleGVjdXRhYmxlTmFtZSk7XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgdGhyb3cgbmV3IEVycm9yKGBUaGUgJyR7ZXhlY3V0YWJsZU5hbWV9JyBiaW5hcnkgY291bGQgbm90IGJlIGZvdW5kIGAgK1xuICAgIGBuZWl0aGVyIGluIFBBVEggbm9yIHVuZGVyIEpBVkFfSE9NRSAoJHtlcnJNc2cgfHwgcGF0aC5yZXNvbHZlKGphdmFIb21lLCAnYmluJyl9KWApO1xufSk7XG5cbmNvbnN0IGdldE9wZW5Tc2xGb3JPcyA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgYmluYXJ5TmFtZSA9IGBvcGVuc3NsJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy53aGljaChiaW5hcnlOYW1lKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgb3BlbnNzbCB0b29sIG11c3QgYmUgaW5zdGFsbGVkIG9uIHRoZSBzeXN0ZW0gYW5kIGF2YWlsYWJsZSBvbiB0aGUgcGF0aCcpO1xuICB9XG59O1xuXG4vKipcbiAqIEdldCB0aGUgYWJzb2x1dGUgcGF0aCB0byBhcGtzaWduZXIgdG9vbFxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeXNIZWxwZXJzIC0gQW4gaW5zdGFuY2UgY29udGFpbmluZyBzeXN0ZW1DYWxsTWV0aG9kcyBoZWxwZXIgbWV0aG9kc1xuICogQHJldHVybnMge3N0cmluZ30gQW4gYWJzb2x1dGUgcGF0aCB0byBhcGtzaWduZXIgdG9vbC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdG9vbCBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwa3NpZ25lckZvck9zIChzeXNIZWxwZXJzKSB7XG4gIHJldHVybiBhd2FpdCBzeXNIZWxwZXJzLmdldEJpbmFyeUZyb21TZGtSb290KCdhcGtzaWduZXIuamFyJyk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIGFwa2FuYWx5emVyIHRvb2wuXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vY29tbWFuZC1saW5lL2Fwa2FuYWx5emVyLmh0bWxcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gc3lzSGVscGVycyAtIEFuIGluc3RhbmNlIGNvbnRhaW5pbmcgc3lzdGVtQ2FsbE1ldGhvZHMgaGVscGVyIG1ldGhvZHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEFuIGFic29sdXRlIHBhdGggdG8gYXBrYW5hbHl6ZXIgdG9vbC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdG9vbCBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0uXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFwa2FuYWx5emVyRm9yT3MgKHN5c0hlbHBlcnMpIHtcbiAgcmV0dXJuIGF3YWl0IHN5c0hlbHBlcnMuZ2V0QmluYXJ5RnJvbVNka1Jvb3QoJ2Fwa2FuYWx5emVyJyk7XG59XG5cbi8qKlxuICogQ2hlY2tzIG1TaG93aW5nTG9ja3NjcmVlbiBvciBtRHJlYW1pbmdMb2Nrc2NyZWVuIGluIGR1bXBzeXMgb3V0cHV0IHRvIGRldGVybWluZVxuICogaWYgbG9jayBzY3JlZW4gaXMgc2hvd2luZ1xuICpcbiAqIEEgbm90ZTogYGFkYiBzaGVsbCBkdW1wc3lzIHRydXN0YCBwZXJmb3JtcyBiZXR0ZXIgd2hpbGUgZGV0ZWN0aW5nIHRoZSBsb2NrZWQgc2NyZWVuIHN0YXRlXG4gKiBpbiBjb21wYXJpc29uIHRvIGBhZGIgZHVtcHN5cyB3aW5kb3dgIG91dHB1dCBwYXJzaW5nLlxuICogQnV0IHRoZSB0cnVzdCBjb21tYW5kIGRvZXMgbm90IHdvcmsgZm9yIGBTd2lwZWAgdW5sb2NrIHBhdHRlcm4uXG4gKlxuICogSW4gc29tZSBBbmRyb2lkIGRldmljZXMgKFByb2JhYmx5IGFyb3VuZCBBbmRyb2lkIDEwKyksIGBtU2hvd2luZ0xvY2tzY3JlZW5gIGFuZCBgbURyZWFtaW5nTG9ja3NjcmVlbmBcbiAqIGRvIG5vdCB3b3JrIHRvIGRldGVjdCBsb2NrIHN0YXR1cy4gSW5zdGVhZCwga2V5Z3VhcmQgcHJlZmVyZW5jZXMgaGVscHMgdG8gZGV0ZWN0IHRoZSBsb2NrIGNvbmRpdGlvbi5cbiAqIFNvbWUgZGV2aWNlcyBzdWNoIGFzIEFuZHJvaWQgVFYgZG8gbm90IGhhdmUga2V5Z3VhcmQsIHNvIHdlIHNob3VsZCBrZWVwXG4gKiBzY3JlZW4gY29uZGl0aW9uIGFzIHRoaXMgcHJpbWFyeSBtZXRob2QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGR1bXBzeXMgLSBUaGUgb3V0cHV0IG9mIGR1bXBzeXMgd2luZG93IGNvbW1hbmQuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGxvY2sgc2NyZWVuIGlzIHNob3dpbmcuXG4gKi9cbmZ1bmN0aW9uIGlzU2hvd2luZ0xvY2tzY3JlZW4gKGR1bXBzeXMpIHtcbiAgcmV0dXJuIF8uc29tZShbJ21TaG93aW5nTG9ja3NjcmVlbj10cnVlJywgJ21EcmVhbWluZ0xvY2tzY3JlZW49dHJ1ZSddLCAoeCkgPT4gZHVtcHN5cy5pbmNsdWRlcyh4KSlcbiAgICAvLyBgbUlzU2hvd2luZ2AgYW5kIGBtSW5wdXRSZXN0cmljdGVkYCBhcmUgYHRydWVgIGluIGxvY2sgY29uZGl0aW9uLiBgZmFsc2VgIGlzIHVubG9jayBjb25kaXRpb24uXG4gICAgfHwgXy5ldmVyeShbL0tleWd1YXJkU3RhdGVNb25pdG9yW1xcblxcc10rbUlzU2hvd2luZz10cnVlLywgL1xccyttSW5wdXRSZXN0cmljdGVkPXRydWUvXSwgKHgpID0+IHgudGVzdChkdW1wc3lzKSk7XG59XG5cbi8qXG4gKiBDaGVja3MgbUN1cnJlbnRGb2N1cyBpbiBkdW1wc3lzIG91dHB1dCB0byBkZXRlcm1pbmUgaWYgS2V5Z3VhcmQgaXMgYWN0aXZhdGVkXG4gKi9cbmZ1bmN0aW9uIGlzQ3VycmVudEZvY3VzT25LZXlndWFyZCAoZHVtcHN5cykge1xuICBsZXQgbSA9IC9tQ3VycmVudEZvY3VzLitLZXlndWFyZC9naS5leGVjKGR1bXBzeXMpO1xuICByZXR1cm4gKG0gJiYgbS5sZW5ndGggJiYgbVswXSkgPyB0cnVlIDogZmFsc2U7XG59XG5cbi8qXG4gKiBSZWFkcyBTdXJmYWNlT3JpZW50YXRpb24gaW4gZHVtcHN5cyBvdXRwdXRcbiAqL1xuZnVuY3Rpb24gZ2V0U3VyZmFjZU9yaWVudGF0aW9uIChkdW1wc3lzKSB7XG4gIGxldCBtID0gL1N1cmZhY2VPcmllbnRhdGlvbjogXFxkL2dpLmV4ZWMoZHVtcHN5cyk7XG4gIHJldHVybiBtICYmIHBhcnNlSW50KG1bMF0uc3BsaXQoJzonKVsxXSwgMTApO1xufVxuXG4vKlxuICogQ2hlY2tzIG1TY3JlZW5PbkZ1bGx5IGluIGR1bXBzeXMgb3V0cHV0IHRvIGRldGVybWluZSBpZiBzY3JlZW4gaXMgc2hvd2luZ1xuICogRGVmYXVsdCBpcyB0cnVlXG4gKi9cbmZ1bmN0aW9uIGlzU2NyZWVuT25GdWxseSAoZHVtcHN5cykge1xuICBsZXQgbSA9IC9tU2NyZWVuT25GdWxseT1cXHcrL2dpLmV4ZWMoZHVtcHN5cyk7XG4gIHJldHVybiAhbSB8fCAvLyBpZiBpbmZvcm1hdGlvbiBpcyBtaXNzaW5nIHdlIGFzc3VtZSBzY3JlZW4gaXMgZnVsbHkgb25cbiAgICAgICAgIChtICYmIG0ubGVuZ3RoID4gMCAmJiBtWzBdLnNwbGl0KCc9JylbMV0gPT09ICd0cnVlJykgfHwgZmFsc2U7XG59XG5cbi8qKlxuICogQnVpbGRzIGNvbW1hbmQgbGluZSByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGdpdmVuXG4gKiBhcHBsaWNhdGlvbiBzdGFydHVwIG9wdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YXJ0QXBwT3B0aW9uc30gc3RhcnRBcHBPcHRpb25zIC0gQXBwbGljYXRpb24gb3B0aW9ucyBtYXBwaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gYXBpTGV2ZWwgLSBUaGUgYWN0dWFsIE9TIEFQSSBsZXZlbFxuICogQHJldHVybnMge0FycmF5PFN0cmluZz59IFRoZSBhY3R1YWwgY29tbWFuZCBsaW5lIGFycmF5XG4gKi9cbmZ1bmN0aW9uIGJ1aWxkU3RhcnRDbWQgKHN0YXJ0QXBwT3B0aW9ucywgYXBpTGV2ZWwpIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgd2FpdEZvckxhdW5jaCxcbiAgICBwa2csXG4gICAgYWN0aXZpdHksXG4gICAgYWN0aW9uLFxuICAgIGNhdGVnb3J5LFxuICAgIHN0b3BBcHAsXG4gICAgZmxhZ3MsXG4gIH0gPSBzdGFydEFwcE9wdGlvbnM7XG4gIGNvbnN0IGNtZCA9IFsnYW0nLCAnc3RhcnQnXTtcbiAgaWYgKHV0aWwuaGFzVmFsdWUodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgaWYgKHdhaXRGb3JMYXVuY2gpIHtcbiAgICBjbWQucHVzaCgnLVcnKTtcbiAgfVxuICBpZiAoYWN0aXZpdHkgJiYgcGtnKSB7XG4gICAgY21kLnB1c2goJy1uJywgYCR7cGtnfS8ke2FjdGl2aXR5fWApO1xuICB9XG4gIGlmIChzdG9wQXBwICYmIGFwaUxldmVsID49IDE1KSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKGFjdGlvbikge1xuICAgIGNtZC5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKGNhdGVnb3J5KSB7XG4gICAgY21kLnB1c2goJy1jJywgY2F0ZWdvcnkpO1xuICB9XG4gIGlmIChmbGFncykge1xuICAgIGNtZC5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICBpZiAoc3RhcnRBcHBPcHRpb25zLm9wdGlvbmFsSW50ZW50QXJndW1lbnRzKSB7XG4gICAgLy8gZXhwZWN0IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzIHRvIGJlIGEgc2luZ2xlIHN0cmluZyBvZiB0aGUgZm9ybTpcbiAgICAvLyAgICAgXCItZmxhZyBrZXlcIlxuICAgIC8vICAgICBcIi1mbGFnIGtleSB2YWx1ZVwiXG4gICAgLy8gb3IgYSBjb21iaW5hdGlvbiBvZiB0aGVzZSAoZS5nLiwgXCItZmxhZzEga2V5MSAtZmxhZzIga2V5MiB2YWx1ZTJcIilcblxuICAgIC8vIHRha2UgYSBzdHJpbmcgYW5kIHBhcnNlIG91dCB0aGUgcGFydCBiZWZvcmUgYW55IHNwYWNlcywgYW5kIGFueXRoaW5nIGFmdGVyXG4gICAgLy8gdGhlIGZpcnN0IHNwYWNlXG4gICAgbGV0IHBhcnNlS2V5VmFsdWUgPSBmdW5jdGlvbiAoc3RyKSB7XG4gICAgICBzdHIgPSBzdHIudHJpbSgpO1xuICAgICAgbGV0IHNwYWNlID0gc3RyLmluZGV4T2YoJyAnKTtcbiAgICAgIGlmIChzcGFjZSA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHN0ci5sZW5ndGggPyBbc3RyXSA6IFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtzdHIuc3Vic3RyaW5nKDAsIHNwYWNlKS50cmltKCksIHN0ci5zdWJzdHJpbmcoc3BhY2UgKyAxKS50cmltKCldO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBjeWNsZSB0aHJvdWdoIHRoZSBvcHRpb25hbEludGVudEFyZ3VtZW50cyBhbmQgcHVsbCBvdXQgdGhlIGFyZ3VtZW50c1xuICAgIC8vIGFkZCBhIHNwYWNlIGluaXRpYWxseSBzbyBmbGFncyBjYW4gYmUgZGlzdGluZ3Vpc2hlZCBmcm9tIGFyZ3VtZW50cyB0aGF0XG4gICAgLy8gaGF2ZSBpbnRlcm5hbCBoeXBoZW5zXG4gICAgbGV0IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzID0gYCAke3N0YXJ0QXBwT3B0aW9ucy5vcHRpb25hbEludGVudEFyZ3VtZW50c31gO1xuICAgIGxldCByZSA9IC8gKC1bXlxcc10rKSAoLispLztcbiAgICB3aGlsZSAodHJ1ZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnN0YW50LWNvbmRpdGlvblxuICAgICAgbGV0IGFyZ3MgPSByZS5leGVjKG9wdGlvbmFsSW50ZW50QXJndW1lbnRzKTtcbiAgICAgIGlmICghYXJncykge1xuICAgICAgICBpZiAob3B0aW9uYWxJbnRlbnRBcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgLy8gbm8gbW9yZSBmbGFncywgc28gdGhlIHJlbWFpbmRlciBjYW4gYmUgdHJlYXRlZCBhcyAna2V5JyBvciAna2V5IHZhbHVlJ1xuICAgICAgICAgIGNtZC5wdXNoLmFwcGx5KGNtZCwgcGFyc2VLZXlWYWx1ZShvcHRpb25hbEludGVudEFyZ3VtZW50cykpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHdlIGFyZSBkb25lXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyB0YWtlIHRoZSBmbGFnIGFuZCBzZWUgaWYgaXQgaXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nXG4gICAgICAvLyBpZiBpdCBpcyBub3QsIHRoZW4gaXQgbWVhbnMgd2UgaGF2ZSBiZWVuIHRocm91Z2ggYWxyZWFkeSwgYW5kXG4gICAgICAvLyB3aGF0IGlzIGJlZm9yZSB0aGUgZmxhZyBpcyB0aGUgYXJndW1lbnQgZm9yIHRoZSBwcmV2aW91cyBmbGFnXG4gICAgICBsZXQgZmxhZyA9IGFyZ3NbMV07XG4gICAgICBsZXQgZmxhZ1BvcyA9IG9wdGlvbmFsSW50ZW50QXJndW1lbnRzLmluZGV4T2YoZmxhZyk7XG4gICAgICBpZiAoZmxhZ1BvcyAhPT0gMCkge1xuICAgICAgICBsZXQgcHJldkFyZ3MgPSBvcHRpb25hbEludGVudEFyZ3VtZW50cy5zdWJzdHJpbmcoMCwgZmxhZ1Bvcyk7XG4gICAgICAgIGNtZC5wdXNoLmFwcGx5KGNtZCwgcGFyc2VLZXlWYWx1ZShwcmV2QXJncykpO1xuICAgICAgfVxuXG4gICAgICAvLyBhZGQgdGhlIGZsYWcsIGFzIHRoZXJlIGFyZSBubyBtb3JlIGVhcmxpZXIgYXJndW1lbnRzXG4gICAgICBjbWQucHVzaChmbGFnKTtcblxuICAgICAgLy8gbWFrZSBvcHRpb25hbEludGVudEFyZ3VtZW50cyBob2xkIHRoZSByZW1haW5kZXJcbiAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzID0gYXJnc1syXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNtZDtcbn1cblxuY29uc3QgZ2V0U2RrVG9vbHNWZXJzaW9uID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldFNka1Rvb2xzVmVyc2lvbiAoKSB7XG4gIGNvbnN0IGFuZHJvaWRIb21lID0gcHJvY2Vzcy5lbnYuQU5EUk9JRF9IT01FO1xuICBpZiAoIWFuZHJvaWRIb21lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBTkRST0lEX0hPTUUgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0Jyk7XG4gIH1cbiAgY29uc3QgcHJvcGVydGllc1BhdGggPSBwYXRoLnJlc29sdmUoYW5kcm9pZEhvbWUsICd0b29scycsICdzb3VyY2UucHJvcGVydGllcycpO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhwcm9wZXJ0aWVzUGF0aCkpIHtcbiAgICBsb2cud2FybihgQ2Fubm90IGZpbmQgJHtwcm9wZXJ0aWVzUGF0aH0gZmlsZSB0byByZWFkIFNESyB2ZXJzaW9uIGZyb21gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgcHJvcGVydGllc0NvbnRlbnQgPSBhd2FpdCBmcy5yZWFkRmlsZShwcm9wZXJ0aWVzUGF0aCwgJ3V0ZjgnKTtcbiAgY29uc3QgdmVyc2lvbk1hdGNoZXIgPSBuZXcgUmVnRXhwKC9Qa2dcXC5SZXZpc2lvbj0oXFxkKylcXC4/KFxcZCspP1xcLj8oXFxkKyk/Lyk7XG4gIGNvbnN0IG1hdGNoID0gdmVyc2lvbk1hdGNoZXIuZXhlYyhwcm9wZXJ0aWVzQ29udGVudCk7XG4gIGlmIChtYXRjaCkge1xuICAgIHJldHVybiB7XG4gICAgICBtYWpvcjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSxcbiAgICAgIG1pbm9yOiBtYXRjaFsyXSA/IHBhcnNlSW50KG1hdGNoWzJdLCAxMCkgOiAwLFxuICAgICAgYnVpbGQ6IG1hdGNoWzNdID8gcGFyc2VJbnQobWF0Y2hbM10sIDEwKSA6IDBcbiAgICB9O1xuICB9XG4gIGxvZy53YXJuKGBDYW5ub3QgcGFyc2UgXCJQa2cuUmV2aXNpb25cIiB2YWx1ZSBmcm9tICR7cHJvcGVydGllc1BhdGh9YCk7XG59KTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgZnVsbCBwYXRocyB0byBhbGwgJ2J1aWxkLXRvb2xzJyBzdWJmb2xkZXJzIHVuZGVyIHRoZSBwYXJ0aWN1bGFyXG4gKiBTREsgcm9vdCBmb2xkZXJcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc2RrUm9vdCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIEFuZHJvaWQgU0RLIHJvb3QgZm9sZGVyXG4gKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gVGhlIGZ1bGwgcGF0aHMgdG8gdGhlIHJlc3VsdGluZyBmb2xkZXJzIHNvcnRlZCBieVxuICogbW9kaWZpY2F0aW9uIGRhdGUgKHRoZSBuZXdlc3QgY29tZXMgZmlyc3QpIG9yIGFuIGVtcHR5IGxpc3QgaWYgbm8gbWFjdGhlcyB3ZXJlIGZvdW5kXG4gKi9cbmNvbnN0IGdldEJ1aWxkVG9vbHNEaXJzID0gXy5tZW1vaXplKGFzeW5jIGZ1bmN0aW9uIGdldEJ1aWxkVG9vbHNEaXJzIChzZGtSb290KSB7XG4gIGxldCBidWlsZFRvb2xzRGlycyA9IGF3YWl0IGZzLmdsb2IoJyovJywge1xuICAgIGN3ZDogcGF0aC5yZXNvbHZlKHNka1Jvb3QsICdidWlsZC10b29scycpLFxuICAgIGFic29sdXRlOiB0cnVlLFxuICB9KTtcbiAgdHJ5IHtcbiAgICBidWlsZFRvb2xzRGlycyA9IGJ1aWxkVG9vbHNEaXJzXG4gICAgICAubWFwKChkaXIpID0+IFtwYXRoLmJhc2VuYW1lKGRpciksIGRpcl0pXG4gICAgICAuc29ydCgoYSwgYikgPT4gc2VtdmVyLnJjb21wYXJlKGFbMF0sIGJbMF0pKVxuICAgICAgLm1hcCgocGFpcikgPT4gcGFpclsxXSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBDYW5ub3Qgc29ydCBidWlsZC10b29scyBmb2xkZXJzICR7SlNPTi5zdHJpbmdpZnkoYnVpbGRUb29sc0RpcnMubWFwKChkaXIpID0+IHBhdGguYmFzZW5hbWUoZGlyKSkpfSBgICtcbiAgICAgIGBieSBzZW1hbnRpYyB2ZXJzaW9uIG5hbWVzLmApO1xuICAgIGxvZy53YXJuKGBGYWxsaW5nIGJhY2sgdG8gc29ydGluZyBieSBtb2RpZmljYXRpb24gZGF0ZS4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgY29uc3QgcGFpcnMgPSBhd2FpdCBCLm1hcChidWlsZFRvb2xzRGlycywgYXN5bmMgKGRpcikgPT4gWyhhd2FpdCBmcy5zdGF0KGRpcikpLm10aW1lLnZhbHVlT2YoKSwgZGlyXSk7XG4gICAgYnVpbGRUb29sc0RpcnMgPSBwYWlyc1xuICAgICAgLnNvcnQoKGEsIGIpID0+IGFbMF0gPCBiWzBdKVxuICAgICAgLm1hcCgocGFpcikgPT4gcGFpclsxXSk7XG4gIH1cbiAgbG9nLmluZm8oYEZvdW5kICR7YnVpbGRUb29sc0RpcnMubGVuZ3RofSAnYnVpbGQtdG9vbHMnIGZvbGRlcnMgdW5kZXIgJyR7c2RrUm9vdH0nIChuZXdlc3QgZmlyc3QpOmApO1xuICBmb3IgKGxldCBkaXIgb2YgYnVpbGRUb29sc0RpcnMpIHtcbiAgICBsb2cuaW5mbyhgICAgICR7ZGlyfWApO1xuICB9XG4gIHJldHVybiBidWlsZFRvb2xzRGlycztcbn0pO1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBwZXJtaXNzaW9uIG5hbWVzIGVuY29kZWQgaW4gYGR1bXBzeXMgcGFja2FnZWAgY29tbWFuZCBvdXRwdXQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGR1bXBzeXNPdXRwdXQgLSBUaGUgYWN0dWFsIGNvbW1hbmQgb3V0cHV0LlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBncm91cE5hbWVzIC0gVGhlIGxpc3Qgb2YgZ3JvdXAgbmFtZXMgdG8gbGlzdCBwZXJtaXNzaW9ucyBmb3IuXG4gKiBAcGFyYW0gez9ib29sZWFufSBncmFudGVkU3RhdGUgLSBUaGUgZXhwZWN0ZWQgc3RhdGUgb2YgYGdyYW50ZWRgIGF0dHJpYnV0ZSB0byBmaWx0ZXIgd2l0aC5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIGZpbHRlcmluZyBpcyBkb25lIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHNldC5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiBtYXRjaGVkIHBlcm1pc3Npb24gbmFtZXMgb3IgYW4gZW1wdHkgbGlzdCBpZiBubyBtYXRjaGVzIHdlcmUgZm91bmQuXG4gKi9cbmNvbnN0IGV4dHJhY3RNYXRjaGluZ1Blcm1pc3Npb25zID0gZnVuY3Rpb24gKGR1bXBzeXNPdXRwdXQsIGdyb3VwTmFtZXMsIGdyYW50ZWRTdGF0ZSA9IG51bGwpIHtcbiAgY29uc3QgZ3JvdXBQYXR0ZXJuQnlOYW1lID0gKGdyb3VwTmFtZSkgPT4gbmV3IFJlZ0V4cChgXihcXFxccyoke18uZXNjYXBlUmVnRXhwKGdyb3VwTmFtZSl9IHBlcm1pc3Npb25zOltcXFxcc1xcXFxTXSspYCwgJ20nKTtcbiAgY29uc3QgaW5kZW50UGF0dGVybiA9IC9cXFN8JC87XG4gIGNvbnN0IHBlcm1pc3Npb25OYW1lUGF0dGVybiA9IC9hbmRyb2lkXFwuXFx3KlxcLj9wZXJtaXNzaW9uXFwuXFx3Ky87XG4gIGNvbnN0IGdyYW50ZWRTdGF0ZVBhdHRlcm4gPSAvXFxiZ3JhbnRlZD0oXFx3KykvO1xuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgZm9yIChjb25zdCBncm91cE5hbWUgb2YgZ3JvdXBOYW1lcykge1xuICAgIGNvbnN0IGdyb3VwTWF0Y2ggPSBncm91cFBhdHRlcm5CeU5hbWUoZ3JvdXBOYW1lKS5leGVjKGR1bXBzeXNPdXRwdXQpO1xuICAgIGlmICghZ3JvdXBNYXRjaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZXMgPSBncm91cE1hdGNoWzFdLnNwbGl0KCdcXG4nKTtcbiAgICBpZiAobGluZXMubGVuZ3RoIDwgMikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgdGl0bGVJbmRlbnQgPSBsaW5lc1swXS5zZWFyY2goaW5kZW50UGF0dGVybik7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzLnNsaWNlKDEpKSB7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZW50ID0gbGluZS5zZWFyY2goaW5kZW50UGF0dGVybik7XG4gICAgICBpZiAoY3VycmVudEluZGVudCA8PSB0aXRsZUluZGVudCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGVybWlzc2lvbk5hbWVNYXRjaCA9IHBlcm1pc3Npb25OYW1lUGF0dGVybi5leGVjKGxpbmUpO1xuICAgICAgaWYgKCFwZXJtaXNzaW9uTmFtZU1hdGNoKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXRlbSA9IHtcbiAgICAgICAgcGVybWlzc2lvbjogcGVybWlzc2lvbk5hbWVNYXRjaFswXSxcbiAgICAgIH07XG4gICAgICBjb25zdCBncmFudGVkU3RhdGVNYXRjaCA9IGdyYW50ZWRTdGF0ZVBhdHRlcm4uZXhlYyhsaW5lKTtcbiAgICAgIGlmIChncmFudGVkU3RhdGVNYXRjaCkge1xuICAgICAgICBpdGVtLmdyYW50ZWQgPSBncmFudGVkU3RhdGVNYXRjaFsxXSA9PT0gJ3RydWUnO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZmlsdGVyZWRSZXN1bHQgPSByZXN1bHRcbiAgICAuZmlsdGVyKChpdGVtKSA9PiAhXy5pc0Jvb2xlYW4oZ3JhbnRlZFN0YXRlKSB8fCBpdGVtLmdyYW50ZWQgPT09IGdyYW50ZWRTdGF0ZSlcbiAgICAubWFwKChpdGVtKSA9PiBpdGVtLnBlcm1pc3Npb24pO1xuICBsb2cuZGVidWcoYFJldHJpZXZlZCAke3V0aWwucGx1cmFsaXplKCdwZXJtaXNzaW9uJywgZmlsdGVyZWRSZXN1bHQubGVuZ3RoLCB0cnVlKX0gYCArXG4gICAgYGZyb20gJHtncm91cE5hbWVzfSAke3V0aWwucGx1cmFsaXplKCdncm91cCcsIGdyb3VwTmFtZXMubGVuZ3RoLCBmYWxzZSl9YCk7XG4gIHJldHVybiBmaWx0ZXJlZFJlc3VsdDtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSW5zdGFsbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gYWxsb3dUZXN0UGFja2FnZXMgW2ZhbHNlXSAtIFNldCB0byB0cnVlIGluIG9yZGVyIHRvIGFsbG93IHRlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2VzIGluc3RhbGxhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gdXNlU2RjYXJkIFtmYWxzZV0gLSBTZXQgdG8gdHJ1ZSB0byBpbnN0YWxsIHRoZSBhcHAgb24gc2RjYXJkXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGVhZCBvZiB0aGUgZGV2aWNlIG1lbW9yeS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZ3JhbnRQZXJtaXNzaW9ucyBbZmFsc2VdIC0gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gZ3JhbnQgYWxsIHRoZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyByZXF1ZXN0ZWQgaW4gdGhlIGFwcGxpY2F0aW9uJ3MgbWFuaWZlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBhZnRlciB0aGUgaW5zdGFsbGF0aW9uIGlzIGNvbXBsZXRlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlciBBbmRyb2lkIDYrLlxuICogQHByb3BlcnR5IHtib29sZWFufSByZXBsYWNlIFt0cnVlXSAtIFNldCBpdCB0byBmYWxzZSBpZiB5b3UgZG9uJ3Qgd2FudFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhcHBsaWNhdGlvbiB0byBiZSB1cGdyYWRlZC9yZWluc3RhbGxlZFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0IGlzIGFscmVhZHkgcHJlc2VudCBvbiB0aGUgZGV2aWNlLlxuICogQHByb3BlcnR5IHtib29sZWFufSBwYXJ0aWFsSW5zdGFsbCBbZmFsc2VdIC0gSW5zdGFsbCBhcGtzIHBhcnRpYWxseS4gSXQgaXMgdXNlZCBmb3IgJ2luc3RhbGwtbXVsdGlwbGUnLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2FuZHJvaWQuc3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzExMTA2NC93aGF0LWlzLWEtcGFydGlhbC1hcHBsaWNhdGlvbi1pbnN0YWxsLXZpYS1hZGJcbiAqL1xuXG4vKipcbiAqIFRyYW5zZm9ybXMgZ2l2ZW4gb3B0aW9ucyBpbnRvIHRoZSBsaXN0IG9mIGBhZGIgaW5zdGFsbC5pbnN0YWxsLW11bHRpcGxlYCBjb21tYW5kIGFyZ3VtZW50c1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBhcGlMZXZlbCAtIFRoZSBjdXJyZW50IEFQSSBsZXZlbFxuICogQHBhcmFtIHs/SW5zdGFsbE9wdGlvbnN9IG9wdGlvbnMgLSBUaGUgb3B0aW9ucyBtYXBwaW5nIHRvIHRyYW5zZm9ybVxuICogQHJldHVybnMge0FycmF5PFN0cmluZz59IFRoZSBhcnJheSBvZiBhcmd1bWVudHNcbiAqL1xuZnVuY3Rpb24gYnVpbGRJbnN0YWxsQXJncyAoYXBpTGV2ZWwsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCByZXN1bHQgPSBbXTtcblxuICBpZiAoIXV0aWwuaGFzVmFsdWUob3B0aW9ucy5yZXBsYWNlKSB8fCBvcHRpb25zLnJlcGxhY2UpIHtcbiAgICByZXN1bHQucHVzaCgnLXInKTtcbiAgfVxuICBpZiAob3B0aW9ucy5hbGxvd1Rlc3RQYWNrYWdlcykge1xuICAgIHJlc3VsdC5wdXNoKCctdCcpO1xuICB9XG4gIGlmIChvcHRpb25zLnVzZVNkY2FyZCkge1xuICAgIHJlc3VsdC5wdXNoKCctcycpO1xuICB9XG4gIGlmIChvcHRpb25zLmdyYW50UGVybWlzc2lvbnMpIHtcbiAgICBpZiAoYXBpTGV2ZWwgPCAyMykge1xuICAgICAgbG9nLmRlYnVnKGBTa2lwcGluZyBwZXJtaXNzaW9ucyBncmFudCBvcHRpb24sIHNpbmNlIGAgK1xuICAgICAgICAgICAgICAgIGB0aGUgY3VycmVudCBBUEkgbGV2ZWwgJHthcGlMZXZlbH0gZG9lcyBub3Qgc3VwcG9ydCBhcHBsaWNhdGlvbnMgYCArXG4gICAgICAgICAgICAgICAgYHBlcm1pc3Npb25zIGN1c3RvbWl6YXRpb25gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0LnB1c2goJy1nJyk7XG4gICAgfVxuICB9XG4gIC8vIEZvciBtdWx0aXBsZS1pbnN0YWxsXG4gIGlmIChvcHRpb25zLnBhcnRpYWxJbnN0YWxsKSB7XG4gICAgcmVzdWx0LnB1c2goJy1wJyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IE1hbmlmZXN0SW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHBrZyAtIFRoZSBhcHBsaWNhdGlvbiBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYWN0aXZpdHkgLSBUaGUgbmFtZSBvZiB0aGUgbWFpbiBwYWNrYWdlIGFjdGl2aXR5XG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlcnNpb25Db2RlIC0gVGhlIHZlcnNpb24gY29kZSBudW1iZXIgKG1pZ2h0IGJlIGBOYU5gKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2ZXJzaW9uTmFtZSAtIFRoZSB2ZXJzaW9uIG5hbWUgKG1pZ2h0IGJlIGBudWxsYClcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcGFyc2luZyBvZiB0aGUgbWFuaWZlc3Qgb2JqZWN0IGluIG9yZGVyXG4gKiB0byBleHRyYWN0IHNvbWUgdml0YWwgdmFsdWVzIGZyb20gaXRcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbWFuaWZlc3QgVGhlIG1hbmlmZXN0IGNvbnRlbnQgZm9ybWF0dGVkIGFzIEpTT05cbiAqIFNlZSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9hZGJraXQtYXBrcmVhZGVyIGZvciBkZXRhaWxlZCBmb3JtYXQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIHtNYW5pZmVzdEluZm99XG4gKi9cbmZ1bmN0aW9uIHBhcnNlTWFuaWZlc3QgKG1hbmlmZXN0KSB7XG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBwa2c6IG1hbmlmZXN0LnBhY2thZ2UsXG4gICAgdmVyc2lvbkNvZGU6IHBhcnNlSW50KG1hbmlmZXN0LnZlcnNpb25Db2RlLCAxMCksXG4gICAgdmVyc2lvbk5hbWU6IG1hbmlmZXN0LnZlcnNpb25OYW1lIHx8IG51bGwsXG4gIH07XG4gIGlmICghbWFuaWZlc3QuYXBwbGljYXRpb24pIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gTG9vayBmb3IgZW5hYmxlZCBhY3Rpdml0eSBvciBhY3Rpdml0eS1hbGlhcyB3aXRoXG4gIC8vIGFjdGlvbiA9PSBhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiBhbmRcbiAgLy8gY2F0ZWdvcnkgPT0gYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVJcbiAgZm9yIChjb25zdCBhY3Rpdml0eSBvZiBbXG4gICAgLi4ubWFuaWZlc3QuYXBwbGljYXRpb24uYWN0aXZpdGllcyxcbiAgICAuLi5tYW5pZmVzdC5hcHBsaWNhdGlvbi5hY3Rpdml0eUFsaWFzZXMsXG4gIF0pIHtcbiAgICBpZiAoYWN0aXZpdHkuZW5hYmxlZCA9PT0gZmFsc2UgfHwgXy5pc0VtcHR5KGFjdGl2aXR5LmludGVudEZpbHRlcnMpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHthY3Rpb25zLCBjYXRlZ29yaWVzfSBvZiBhY3Rpdml0eS5pbnRlbnRGaWx0ZXJzKSB7XG4gICAgICBpZiAoXy5pc0VtcHR5KGFjdGlvbnMpIHx8IF8uaXNFbXB0eShjYXRlZ29yaWVzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNNYWluQWN0aW9uID0gYWN0aW9ucy5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09IE1BSU5fQUNUSU9OKTtcbiAgICAgIGNvbnN0IGlzTGF1bmNoZXJDYXRlZ29yeSA9IGNhdGVnb3JpZXMuc29tZSgoe25hbWV9KSA9PiBuYW1lID09PSBMQVVOQ0hFUl9DQVRFR09SWSk7XG4gICAgICBpZiAoaXNNYWluQWN0aW9uICYmIGlzTGF1bmNoZXJDYXRlZ29yeSkge1xuICAgICAgICByZXN1bHQuYWN0aXZpdHkgPSBhY3Rpdml0eS5uYW1lO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIFBhcnNlcyBhcGsgc3RyaW5ncyBmcm9tIGFhcHQgdG9vbCBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmF3T3V0cHV0IFRoZSBhY3R1YWwgdG9vbCBvdXRwdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWdNYXJrZXIgVGhlIGNvbmZpZyBtYXJrZXIuIFVzdWFsbHlcbiAqIGEgbGFuZ3VhZ2UgYWJicmV2aWF0aW9uIG9yIGAoZGVmYXVsdClgXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBTdHJpbmdzIGlkcyB0byB2YWx1ZXMgbWFwcGluZy4gUGx1cmFsXG4gKiB2YWx1ZXMgYXJlIHJlcHJlc2VudGVkIGFzIGFycmF5cy4gSWYgbm8gY29uZmlnIGZvdW5kIGZvciB0aGVcbiAqIGdpdmVuIG1hcmtlciB0aGVuIGFuIGVtcHR5IG1hcHBpbmcgaXMgcmV0dXJuZWQuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQWFwdFN0cmluZ3MgKHJhd091dHB1dCwgY29uZmlnTWFya2VyKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZVN0cmluZ01hdGNoID0gZnVuY3Rpb24gKHMpIHtcbiAgICByZXR1cm4gcy5yZXBsYWNlKC9cIiQvLCAnJykucmVwbGFjZSgvXlwiLywgJycpLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKTtcbiAgfTtcblxuICBjb25zdCBhcGtTdHJpbmdzID0ge307XG4gIGxldCBpc0luQ29uZmlnID0gZmFsc2U7XG4gIGxldCBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG4gIGxldCBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgLy8gVGhlIHBhdHRlcm4gbWF0Y2hlcyBhbnkgcXVvdGVkIGNvbnRlbnQgaW5jbHVkaW5nIGVzY2FwZWQgcXVvdGVzXG4gIGNvbnN0IHF1b3RlZFN0cmluZ1BhdHRlcm4gPSAvXCJbXlwiXFxcXF0qKD86XFxcXC5bXlwiXFxcXF0qKSpcIi87XG4gIGZvciAoY29uc3QgbGluZSBvZiByYXdPdXRwdXQuc3BsaXQob3MuRU9MKSkge1xuICAgIGNvbnN0IHRyaW1tZWRMaW5lID0gbGluZS50cmltKCk7XG4gICAgaWYgKF8uaXNFbXB0eSh0cmltbWVkTGluZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChbJ2NvbmZpZycsICd0eXBlJywgJ3NwZWMnLCAnUGFja2FnZSddLnNvbWUoKHgpID0+IHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoeCkpKSB7XG4gICAgICBpc0luQ29uZmlnID0gdHJpbW1lZExpbmUuc3RhcnRzV2l0aChgY29uZmlnICR7Y29uZmlnTWFya2VyfTpgKTtcbiAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIGlzSW5QbHVyYWxHcm91cCA9IGZhbHNlO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKCFpc0luQ29uZmlnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodHJpbW1lZExpbmUuc3RhcnRzV2l0aCgncmVzb3VyY2UnKSkge1xuICAgICAgaXNJblBsdXJhbEdyb3VwID0gZmFsc2U7XG4gICAgICBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG5cbiAgICAgIGlmICh0cmltbWVkTGluZS5pbmNsdWRlcygnOnN0cmluZy8nKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IC86c3RyaW5nXFwvKFxcUyspOi8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuaW5jbHVkZXMoJzpwbHVyYWxzLycpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gLzpwbHVyYWxzXFwvKFxcUyspOi8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgICAgaXNJblBsdXJhbEdyb3VwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRSZXNvdXJjZUlkICYmIHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJyhzdHJpbmcnKSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBxdW90ZWRTdHJpbmdQYXR0ZXJuLmV4ZWModHJpbW1lZExpbmUpO1xuICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgIGFwa1N0cmluZ3NbY3VycmVudFJlc291cmNlSWRdID0gbm9ybWFsaXplU3RyaW5nTWF0Y2gobWF0Y2hbMF0pO1xuICAgICAgfVxuICAgICAgY3VycmVudFJlc291cmNlSWQgPSBudWxsO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRSZXNvdXJjZUlkICYmIGlzSW5QbHVyYWxHcm91cCAmJiB0cmltbWVkTGluZS5pbmNsdWRlcygnOiAoc3RyaW5nJykpIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gcXVvdGVkU3RyaW5nUGF0dGVybi5leGVjKHRyaW1tZWRMaW5lKTtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBhcGtTdHJpbmdzW2N1cnJlbnRSZXNvdXJjZUlkXSA9IFtcbiAgICAgICAgICAuLi4oYXBrU3RyaW5nc1tjdXJyZW50UmVzb3VyY2VJZF0gfHwgW10pLFxuICAgICAgICAgIG5vcm1hbGl6ZVN0cmluZ01hdGNoKG1hdGNoWzBdKSxcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXBrU3RyaW5ncztcbn1cblxuLyoqXG4gKiBQYXJzZXMgYXBrIHN0cmluZ3MgZnJvbSBhYXB0MiB0b29sIG91dHB1dFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSByYXdPdXRwdXQgVGhlIGFjdHVhbCB0b29sIG91dHB1dFxuICogQHBhcmFtIHtzdHJpbmd9IGNvbmZpZ01hcmtlciBUaGUgY29uZmlnIG1hcmtlci4gVXN1YWxseVxuICogYSBsYW5ndWFnZSBhYmJyZXZpYXRpb24gb3IgYW4gZW1wdHkgc3RyaW5nIGZvciB0aGUgZGVmYXVsdCBvbmVcbiAqIEByZXR1cm5zIHtPYmplY3R9IFN0cmluZ3MgaWRzIHRvIHZhbHVlcyBtYXBwaW5nLiBQbHVyYWxcbiAqIHZhbHVlcyBhcmUgcmVwcmVzZW50ZWQgYXMgYXJyYXlzLiBJZiBubyBjb25maWcgZm91bmQgZm9yIHRoZVxuICogZ2l2ZW4gbWFya2VyIHRoZW4gYW4gZW1wdHkgbWFwcGluZyBpcyByZXR1cm5lZC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VBYXB0MlN0cmluZ3MgKHJhd091dHB1dCwgY29uZmlnTWFya2VyKSB7XG4gIGNvbnN0IGFsbExpbmVzID0gcmF3T3V0cHV0LnNwbGl0KG9zLkVPTCk7XG4gIGZ1bmN0aW9uIGV4dHJhY3RDb250ZW50IChzdGFydElkeCkge1xuICAgIGxldCBpZHggPSBzdGFydElkeDtcbiAgICBjb25zdCBzdGFydENoYXJQb3MgPSBhbGxMaW5lc1tzdGFydElkeF0uaW5kZXhPZignXCInKTtcbiAgICBpZiAoc3RhcnRDaGFyUG9zIDwgMCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBpZHhdO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gJyc7XG4gICAgd2hpbGUgKGlkeCA8IGFsbExpbmVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgdGVybWluYXRpb25DaGFyTWF0Y2ggPSAvXCIkLy5leGVjKGFsbExpbmVzW2lkeF0pO1xuICAgICAgaWYgKHRlcm1pbmF0aW9uQ2hhck1hdGNoKSB7XG4gICAgICAgIGNvbnN0IHRlcm1pbmF0aW9uQ2hhclBvcyA9IHRlcm1pbmF0aW9uQ2hhck1hdGNoLmluZGV4O1xuICAgICAgICBpZiAoc3RhcnRJZHggPT09IGlkeCkge1xuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBhbGxMaW5lc1tpZHhdLnN1YnN0cmluZyhzdGFydENoYXJQb3MgKyAxLCB0ZXJtaW5hdGlvbkNoYXJQb3MpLFxuICAgICAgICAgICAgaWR4XG4gICAgICAgICAgXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIGAke3Jlc3VsdH1cXFxcbiR7Xy50cmltU3RhcnQoYWxsTGluZXNbaWR4XS5zdWJzdHJpbmcoMCwgdGVybWluYXRpb25DaGFyUG9zKSl9YCxcbiAgICAgICAgICBpZHgsXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgICBpZiAoaWR4ID4gc3RhcnRJZHgpIHtcbiAgICAgICAgcmVzdWx0ICs9IGBcXFxcbiR7Xy50cmltU3RhcnQoYWxsTGluZXNbaWR4XSl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCArPSBhbGxMaW5lc1tpZHhdLnN1YnN0cmluZyhzdGFydENoYXJQb3MgKyAxKTtcbiAgICAgIH1cbiAgICAgICsraWR4O1xuICAgIH1cbiAgICByZXR1cm4gW3Jlc3VsdCwgaWR4XTtcbiAgfVxuXG4gIGNvbnN0IGFwa1N0cmluZ3MgPSB7fTtcbiAgbGV0IGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgbGV0IGlzSW5QbHVyYWxHcm91cCA9IGZhbHNlO1xuICBsZXQgaXNJbkN1cnJlbnRDb25maWcgPSBmYWxzZTtcbiAgbGV0IGxpbmVJbmRleCA9IDA7XG4gIHdoaWxlIChsaW5lSW5kZXggPCBhbGxMaW5lcy5sZW5ndGgpIHtcbiAgICBjb25zdCB0cmltbWVkTGluZSA9IGFsbExpbmVzW2xpbmVJbmRleF0udHJpbSgpO1xuICAgIGlmIChfLmlzRW1wdHkodHJpbW1lZExpbmUpKSB7XG4gICAgICArK2xpbmVJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChbJ3R5cGUnLCAnUGFja2FnZSddLnNvbWUoKHgpID0+IHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoeCkpKSB7XG4gICAgICBjdXJyZW50UmVzb3VyY2VJZCA9IG51bGw7XG4gICAgICBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gZmFsc2U7XG4gICAgICArK2xpbmVJbmRleDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0cmltbWVkTGluZS5zdGFydHNXaXRoKCdyZXNvdXJjZScpKSB7XG4gICAgICBpc0luUGx1cmFsR3JvdXAgPSBmYWxzZTtcbiAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gZmFsc2U7XG5cbiAgICAgIGlmICh0cmltbWVkTGluZS5pbmNsdWRlcygnc3RyaW5nLycpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gL3N0cmluZ1xcLyhcXFMrKS8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHJpbW1lZExpbmUuaW5jbHVkZXMoJ3BsdXJhbHMvJykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSAvcGx1cmFsc1xcLyhcXFMrKS8uZXhlYyh0cmltbWVkTGluZSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbWF0Y2hbMV07XG4gICAgICAgICAgaXNJblBsdXJhbEdyb3VwID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgKytsaW5lSW5kZXg7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudFJlc291cmNlSWQpIHtcbiAgICAgIGlmIChpc0luUGx1cmFsR3JvdXApIHtcbiAgICAgICAgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoJygnKSkge1xuICAgICAgICAgIGlzSW5DdXJyZW50Q29uZmlnID0gdHJpbW1lZExpbmUuc3RhcnRzV2l0aChgKCR7Y29uZmlnTWFya2VyfSlgKTtcbiAgICAgICAgICArK2xpbmVJbmRleDtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNJbkN1cnJlbnRDb25maWcpIHtcbiAgICAgICAgICBjb25zdCBbY29udGVudCwgaWR4XSA9IGV4dHJhY3RDb250ZW50KGxpbmVJbmRleCk7XG4gICAgICAgICAgbGluZUluZGV4ID0gaWR4O1xuICAgICAgICAgIGlmIChfLmlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICAgICAgICBhcGtTdHJpbmdzW2N1cnJlbnRSZXNvdXJjZUlkXSA9IFtcbiAgICAgICAgICAgICAgLi4uKGFwa1N0cmluZ3NbY3VycmVudFJlc291cmNlSWRdIHx8IFtdKSxcbiAgICAgICAgICAgICAgY29udGVudCxcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHRyaW1tZWRMaW5lLnN0YXJ0c1dpdGgoYCgke2NvbmZpZ01hcmtlcn0pYCkpIHtcbiAgICAgICAgY29uc3QgW2NvbnRlbnQsIGlkeF0gPSBleHRyYWN0Q29udGVudChsaW5lSW5kZXgpO1xuICAgICAgICBsaW5lSW5kZXggPSBpZHg7XG4gICAgICAgIGlmIChfLmlzU3RyaW5nKGNvbnRlbnQpKSB7XG4gICAgICAgICAgYXBrU3RyaW5nc1tjdXJyZW50UmVzb3VyY2VJZF0gPSBjb250ZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRSZXNvdXJjZUlkID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgKytsaW5lSW5kZXg7XG4gIH1cbiAgcmV0dXJuIGFwa1N0cmluZ3M7XG59XG5cbi8qKlxuICogRm9ybWF0cyB0aGUgY29uZmlnIG1hcmtlciwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gcGFyc2UuLiBtZXRob2RzXG4gKiB0byBtYWtlIGl0IGNvbXBhdGlibGUgd2l0aCByZXNvdXJjZSBmb3JtYXRzIGdlbmVyYXRlZCBieSBhYXB0KDIpIHRvb2xcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25maWdzR2V0dGVyIFRoZSBmdW5jdGlvbiB3aG9zZSByZXN1bHQgaXMgYSBsaXN0XG4gKiBvZiBhcGsgY29uZmlnc1xuICogQHBhcmFtIHtzdHJpbmd9IGRlc2lyZWRNYXJrZXIgVGhlIGRlc2lyZWQgY29uZmlnIG1hcmtlciB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IGRlZmF1bHRNYXJrZXIgVGhlIGRlZmF1bHQgY29uZmlnIG1hcmtlciB2YWx1ZVxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIGNvbmZpZyBtYXJrZXJcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZm9ybWF0Q29uZmlnTWFya2VyIChjb25maWdzR2V0dGVyLCBkZXNpcmVkTWFya2VyLCBkZWZhdWx0TWFya2VyKSB7XG4gIGxldCBjb25maWdNYXJrZXIgPSBkZXNpcmVkTWFya2VyIHx8IGRlZmF1bHRNYXJrZXI7XG4gIGlmIChjb25maWdNYXJrZXIuaW5jbHVkZXMoJy0nKSAmJiAhY29uZmlnTWFya2VyLmluY2x1ZGVzKCctcicpKSB7XG4gICAgY29uZmlnTWFya2VyID0gY29uZmlnTWFya2VyLnJlcGxhY2UoJy0nLCAnLXInKTtcbiAgfVxuICBjb25zdCBjb25maWdzID0gYXdhaXQgY29uZmlnc0dldHRlcigpO1xuICBsb2cuZGVidWcoYFJlc291cmNlIGNvbmZpZ3VyYXRpb25zOiAke0pTT04uc3RyaW5naWZ5KGNvbmZpZ3MpfWApO1xuICAvLyBBc3N1bWUgdGhlICdlbicgY29uZmlndXJhdGlvbiBpcyB0aGUgZGVmYXVsdCBvbmVcbiAgaWYgKGNvbmZpZ01hcmtlci50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoJ2VuJylcbiAgICAmJiAhY29uZmlncy5zb21lKCh4KSA9PiB4LnRyaW0oKSA9PT0gY29uZmlnTWFya2VyKSkge1xuICAgIGxvZy5kZWJ1ZyhgUmVzb3VyY2UgY29uZmlndXJhdGlvbiBuYW1lICcke2NvbmZpZ01hcmtlcn0nIGlzIHVua25vd24uIGAgK1xuICAgICAgYFJlcGxhY2luZyBpdCB3aXRoICcke2RlZmF1bHRNYXJrZXJ9J2ApO1xuICAgIGNvbmZpZ01hcmtlciA9IGRlZmF1bHRNYXJrZXI7XG4gIH0gZWxzZSB7XG4gICAgbG9nLmRlYnVnKGBTZWxlY3RlZCBjb25maWd1cmF0aW9uOiAnJHtjb25maWdNYXJrZXJ9J2ApO1xuICB9XG4gIHJldHVybiBjb25maWdNYXJrZXI7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBvdXRwdXQgaW4gSlNPTiBmb3JtYXQgcmV0cmlldmVkIGZyb21cbiAqIHRoZSBjb3JyZXNwb25kaW5nIEFwcGl1bSBTZXR0aW5ncyBicm9hZGNhc3QgY2FsbHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gb3V0cHV0IFRoZSBhY3R1YWwgY29tbWFuZCBvdXRwdXRcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgd2hpY2ggaXNcbiAqIGdvaW5nIHRvIGJlIHBhcnNlZFxuICogQHJldHVybnMge09iamVjdH0gVGhlIHBhcnNlZCBKU09OIG9iamVjdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBvdXRwdXQgY2Fubm90IGJlIHBhcnNlZFxuICogYXMgYSB2YWxpZCBKU09OXG4gKi9cbmZ1bmN0aW9uIHBhcnNlSnNvbkRhdGEgKG91dHB1dCwgZW50aXR5TmFtZSkge1xuICBpZiAoIS9cXGJyZXN1bHQ9LTFcXGIvLnRlc3Qob3V0cHV0KSB8fCAhL1xcYmRhdGE9XCIvLnRlc3Qob3V0cHV0KSkge1xuICAgIGxvZy5kZWJ1ZyhvdXRwdXQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHJldHJpZXZlICR7ZW50aXR5TmFtZX0gZnJvbSB0aGUgZGV2aWNlLiBgICtcbiAgICAgICdDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzJyk7XG4gIH1cbiAgY29uc3QgbWF0Y2ggPSAvXFxiZGF0YT0oXCIuKykvLmV4ZWMob3V0cHV0KTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIGxvZy5kZWJ1ZyhvdXRwdXQpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHBhcnNlICR7ZW50aXR5TmFtZX0gZnJvbSB0aGUgY29tbWFuZCBvdXRwdXQuIGAgK1xuICAgICAgJ0NoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgfVxuICBjb25zdCBqc29uU3RyID0gXy50cmltKG1hdGNoWzFdKS5yZXBsYWNlKC8oXlwiKXwoXCIkKS9nLCAnJyk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoanNvblN0cik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoanNvblN0cik7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgJHtlbnRpdHlOYW1lfSBmcm9tIHRoZSByZXN1bHRpbmcgZGF0YSBzdHJpbmcuIGAgK1xuICAgICAgJ0NoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHMnKTtcbiAgfVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybXMgdGhlIGdpdmVuIGxhbmd1YWdlIGFuZCBjb3VudHJ5IGFiYnJldmlhdGlvbnNcbiAqIHRvIEFWRCBhcmd1bWVudHMgYXJyYXlcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGxhbmd1YWdlIExhbmd1YWdlIG5hbWUsIGZvciBleGFtcGxlICdmcidcbiAqIEBwYXJhbSB7P3N0cmluZ30gY291bnRyeSBDb3VudHJ5IG5hbWUsIGZvciBleGFtcGxlICdDQSdcbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgZ2VuZXJhdGVkIGFyZ3VtZW50cy4gVGhlXG4gKiByZXN1bHRpbmcgYXJyYXkgbWlnaHQgYmUgZW1wdHkgaWYgYm90aCBhcmd1bWVudHMgYXJlIGVtcHR5XG4gKi9cbmZ1bmN0aW9uIHRvQXZkTG9jYWxlQXJncyAobGFuZ3VhZ2UsIGNvdW50cnkpIHtcbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGlmIChsYW5ndWFnZSAmJiBfLmlzU3RyaW5nKGxhbmd1YWdlKSkge1xuICAgIHJlc3VsdC5wdXNoKCctcHJvcCcsIGBwZXJzaXN0LnN5cy5sYW5ndWFnZT0ke2xhbmd1YWdlLnRvTG93ZXJDYXNlKCl9YCk7XG4gIH1cbiAgaWYgKGNvdW50cnkgJiYgXy5pc1N0cmluZyhjb3VudHJ5KSkge1xuICAgIHJlc3VsdC5wdXNoKCctcHJvcCcsIGBwZXJzaXN0LnN5cy5jb3VudHJ5PSR7Y291bnRyeS50b1VwcGVyQ2FzZSgpfWApO1xuICB9XG4gIGxldCBsb2NhbGU7XG4gIGlmIChfLmlzU3RyaW5nKGxhbmd1YWdlKSAmJiBfLmlzU3RyaW5nKGNvdW50cnkpICYmIGxhbmd1YWdlICYmIGNvdW50cnkpIHtcbiAgICBsb2NhbGUgPSBsYW5ndWFnZS50b0xvd2VyQ2FzZSgpICsgJy0nICsgY291bnRyeS50b1VwcGVyQ2FzZSgpO1xuICB9IGVsc2UgaWYgKGxhbmd1YWdlICYmIF8uaXNTdHJpbmcobGFuZ3VhZ2UpKSB7XG4gICAgbG9jYWxlID0gbGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcbiAgfSBlbHNlIGlmIChjb3VudHJ5ICYmIF8uaXNTdHJpbmcoY291bnRyeSkpIHtcbiAgICBsb2NhbGUgPSBjb3VudHJ5O1xuICB9XG4gIGlmIChsb2NhbGUpIHtcbiAgICByZXN1bHQucHVzaCgnLXByb3AnLCBgcGVyc2lzdC5zeXMubG9jYWxlPSR7bG9jYWxlfWApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBmdWxsIHBhdGggdG8gdGhlIEFuZHJvaWQgcHJlZmVyZW5jZXMgcm9vdFxuICpcbiAqIEByZXR1cm5zIHs/c3RyaW5nfSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBmb2xkZXIgb3IgYG51bGxgIGlmIHRoZSBmb2xkZXIgY2Fubm90IGJlIGZvdW5kXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEFuZHJvaWRQcmVmc1Jvb3QgKCkge1xuICBsZXQgbG9jYXRpb24gPSBwcm9jZXNzLmVudi5BTkRST0lEX0VNVUxBVE9SX0hPTUU7XG4gIGlmIChhd2FpdCBkaXJFeGlzdHMobG9jYXRpb24pKSB7XG4gICAgcmV0dXJuIGxvY2F0aW9uO1xuICB9XG5cbiAgaWYgKGxvY2F0aW9uKSB7XG4gICAgbG9nLndhcm4oYFRoZSB2YWx1ZSBvZiB0aGUgQU5EUk9JRF9FTVVMQVRPUl9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlICcke2xvY2F0aW9ufScgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeWApO1xuICB9XG5cbiAgY29uc3QgaG9tZSA9IHByb2Nlc3MuZW52LkhPTUUgfHwgcHJvY2Vzcy5lbnYuVVNFUlBST0ZJTEU7XG4gIGlmIChob21lKSB7XG4gICAgbG9jYXRpb24gPSBwYXRoLnJlc29sdmUoaG9tZSwgJy5hbmRyb2lkJyk7XG4gIH1cblxuICBpZiAoIWF3YWl0IGRpckV4aXN0cyhsb2NhdGlvbikpIHtcbiAgICBsb2cuZGVidWcoYEFuZHJvaWQgY29uZmlnIHJvb3QgJyR7bG9jYXRpb259JyBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5YCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gbG9jYXRpb247XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBwYXRoIGV4aXN0cyBvbiB0aGUgZmlsZXN5c3RlbSBhbmQgaXMgYSBkaXJlY3RvcnlcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IGxvY2F0aW9uIFRoZSBmdWxsIHBhdGggdG8gdGhlIGRpcmVjdG9yeVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGRpckV4aXN0cyAobG9jYXRpb24pIHtcbiAgcmV0dXJuIGxvY2F0aW9uXG4gICAgJiYgYXdhaXQgZnMuZXhpc3RzKGxvY2F0aW9uKVxuICAgICYmIChhd2FpdCBmcy5zdGF0KGxvY2F0aW9uKSkuaXNEaXJlY3RvcnkoKTtcbn1cblxuLyoqXG4gKiBFc2NhcGVzIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzLlxuICogVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgcG9zc2libGUgaXNzdWVzIHdpdGggaG93IHN5c3RlbSBgc3Bhd25gXG4gKiBjYWxsIGhhbmRsZXMgdGhlbS5cbiAqIFNlZSBodHRwczovL2Rpc2N1c3MuYXBwaXVtLmlvL3QvaG93LXRvLW1vZGlmeS13ZC1wcm94eS1hbmQtdWlhdXRvbWF0b3IyLXNvdXJjZS1jb2RlLXRvLXN1cHBvcnQtdW5pY29kZS8zMzQ2NlxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXJnIE5vbi1lc2NhcGVkIGFyZ3VtZW50IHN0cmluZ1xuICogQHJldHVybnMgVGhlIGVzY2FwZWQgYXJndW1lbnRcbiAqL1xuZnVuY3Rpb24gZXNjYXBlU2hlbGxBcmcgKGFyZykge1xuICBhcmcgPSBgJHthcmd9YDtcbiAgaWYgKHN5c3RlbS5pc1dpbmRvd3MoKSkge1xuICAgIHJldHVybiAvWyZ8Xlxcc10vLnRlc3QoYXJnKSA/IGBcIiR7YXJnLnJlcGxhY2UoL1wiL2csICdcIlwiJyl9XCJgIDogYXJnO1xuICB9XG4gIHJldHVybiBhcmcucmVwbGFjZSgvJi9nLCAnXFxcXCYnKTtcbn1cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG5hbWUgb2YgbGF1bmNoYWJsZSBwYWNrYWdlIGFjdGl2aXR5XG4gKiBmcm9tIGR1bXBzeXMgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBkdW1wc3lzIHRoZSBhY3R1YWwgZHVtcHN5cyBvdXRwdXRcbiAqIEByZXR1cm5zIHtzdHJpbmdbXX0gRWl0aGVyIHRoZSBmdWxseSBxdWFsaWZpZWRcbiAqIGFjdGl2aXR5IG5hbWUgYXMgYSBzaW5nbGUgbGlzdCBpdGVtIG9yIGFuIGVtcHR5IGxpc3QgaWYgbm90aGluZyBjb3VsZCBiZSBwYXJzZWQuXG4gKiBJbiBBbmRyb2lkIDYgYW5kIG9sZGVyIHRoZXJlIGlzIG5vIHJlbGlhYmxlIHdheSB0byBkZXRlcm1pbmVcbiAqIHRoZSBjYXRlZ29yeSBuYW1lIGZvciB0aGUgZ2l2ZW4gYWN0aXZpdHksIHNvIHRoaXMgQVBJIGp1c3RcbiAqIHJldHVybnMgYWxsIGFjdGl2aXR5IG5hbWVzIGJlbG9uZ2luZyB0byAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4nXG4gKiB3aXRoIHRoZSBleHBlY3RhdGlvbiB0aGF0IHRoZSBhcHAgbWFuaWZlc3QgY291bGQgYmUgcGFyc2VkIG5leHRcbiAqIGluIG9yZGVyIHRvIGRldGVybWluZSBjYXRlZ29yeSBuYW1lcyBmb3IgdGhlc2UuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlTGF1bmNoYWJsZUFjdGl2aXR5TmFtZXMgKGR1bXBzeXMpIHtcbiAgY29uc3QgbWFpbkFjdGl2aXR5TmFtZVJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKiR7Xy5lc2NhcGVSZWdFeHAoTUFJTl9BQ1RJT04pfTokYCk7XG4gIGNvbnN0IGNhdGVnb3J5TmFtZVJlID0gL15cXHMqQ2F0ZWdvcnk6XFxzK1wiKFthLXpBLVowLTkuXy8tXSspXCIkLztcbiAgY29uc3QgYmxvY2tzID0gW107XG4gIGxldCBibG9ja1N0YXJ0SW5kZW50O1xuICBsZXQgYmxvY2sgPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGR1bXBzeXMuc3BsaXQoJ1xcbicpLm1hcChfLnRyaW1FbmQpKSB7XG4gICAgY29uc3QgY3VycmVudEluZGVudCA9IGxpbmUubGVuZ3RoIC0gXy50cmltU3RhcnQobGluZSkubGVuZ3RoO1xuICAgIGlmIChtYWluQWN0aXZpdHlOYW1lUmUudGVzdChsaW5lKSkge1xuICAgICAgYmxvY2tTdGFydEluZGVudCA9IGN1cnJlbnRJbmRlbnQ7XG4gICAgICBpZiAoIV8uaXNFbXB0eShibG9jaykpIHtcbiAgICAgICAgYmxvY2tzLnB1c2goYmxvY2spO1xuICAgICAgICBibG9jayA9IFtdO1xuICAgICAgfVxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChfLmlzTmlsKGJsb2NrU3RhcnRJbmRlbnQpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudEluZGVudCA+IGJsb2NrU3RhcnRJbmRlbnQpIHtcbiAgICAgIGJsb2NrLnB1c2gobGluZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghXy5pc0VtcHR5KGJsb2NrKSkge1xuICAgICAgICBibG9ja3MucHVzaChibG9jayk7XG4gICAgICAgIGJsb2NrID0gW107XG4gICAgICB9XG4gICAgICBibG9ja1N0YXJ0SW5kZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYmxvY2spKSB7XG4gICAgYmxvY2tzLnB1c2goYmxvY2spO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBibG9ja3MpIHtcbiAgICBsZXQgaGFzQ2F0ZWdvcnkgPSBmYWxzZTtcbiAgICBsZXQgaXNMYXVuY2hlckNhdGVnb3J5ID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGl0ZW0pIHtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2F0ZWdvcnlOYW1lUmUuZXhlYyhsaW5lKTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGhhc0NhdGVnb3J5ID0gdHJ1ZTtcbiAgICAgIGlzTGF1bmNoZXJDYXRlZ29yeSA9IG1hdGNoWzFdID09PSBMQVVOQ0hFUl9DQVRFR09SWTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBPbiBvbGRlciBBbmRyb2lkIHZlcnNpb25zIHRoZSBjYXRlZ29yeSBuYW1lXG4gICAgLy8gbWlnaHQgbm90IGJlIGxpc3RlZCwgc28gd2UganVzdCB0cnkgdG8gZmV0Y2hcbiAgICAvLyBhbGwgbWF0Y2hlcyBpbnN0ZWFkXG4gICAgaWYgKGhhc0NhdGVnb3J5ICYmICFpc0xhdW5jaGVyQ2F0ZWdvcnkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWN0aXZpdHlOYW1lU3RyIG9mIGl0ZW0ubWFwKF8udHJpbSkuZmlsdGVyKEJvb2xlYW4pKSB7XG4gICAgICBjb25zdCBmcUFjdGl2aXR5TmFtZSA9IGFjdGl2aXR5TmFtZVN0ci5zcGxpdCgvXFxzKy8pWzFdO1xuICAgICAgaWYgKCFtYXRjaENvbXBvbmVudE5hbWUoZnFBY3Rpdml0eU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNMYXVuY2hlckNhdGVnb3J5KSB7XG4gICAgICAgIHJldHVybiBbZnFBY3Rpdml0eU5hbWVdO1xuICAgICAgfVxuICAgICAgcmVzdWx0LnB1c2goZnFBY3Rpdml0eU5hbWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBjb21wb25lbnQgbmFtZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBjbGFzc1N0cmluZyBUaGUgc3RyaW5nIHRvIHZlcmlmeVxuICogQHJldHVybiB7P0FycmF5PE1hdGNoPn0gVGhlIHJlc3VsdCBvZiBSZWdleHAuZXhlYyBvcGVyYXRpb25cbiAqIG9yIF9udWxsXyBpZiBubyBtYXRjaGVzIGFyZSBmb3VuZFxuICovXG5mdW5jdGlvbiBtYXRjaENvbXBvbmVudE5hbWUgKGNsYXNzU3RyaW5nKSB7XG4gIC8vIHNvbWUucGFja2FnZS9zb21lLnBhY2thZ2UuQWN0aXZpdHlcbiAgcmV0dXJuIC9eW2EtejAtOS4vX10rJC9pLmV4ZWMoY2xhc3NTdHJpbmcpO1xufVxuXG5leHBvcnQge1xuICBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoLCB1bnppcEZpbGUsXG4gIGdldElNRUxpc3RGcm9tT3V0cHV0LCBnZXRKYXZhRm9yT3MsIGlzU2hvd2luZ0xvY2tzY3JlZW4sIGlzQ3VycmVudEZvY3VzT25LZXlndWFyZCxcbiAgZ2V0U3VyZmFjZU9yaWVudGF0aW9uLCBpc1NjcmVlbk9uRnVsbHksIGJ1aWxkU3RhcnRDbWQsIGdldEphdmFIb21lLFxuICByb290RGlyLCBnZXRTZGtUb29sc1ZlcnNpb24sIGdldEFwa3NpZ25lckZvck9zLCBnZXRCdWlsZFRvb2xzRGlycyxcbiAgZ2V0QXBrYW5hbHl6ZXJGb3JPcywgZ2V0T3BlblNzbEZvck9zLCBleHRyYWN0TWF0Y2hpbmdQZXJtaXNzaW9ucywgQVBLU19FWFRFTlNJT04sXG4gIEFQS19JTlNUQUxMX1RJTUVPVVQsIEFQS1NfSU5TVEFMTF9USU1FT1VULCBidWlsZEluc3RhbGxBcmdzLCBBUEtfRVhURU5TSU9OLFxuICBERUZBVUxUX0FEQl9FWEVDX1RJTUVPVVQsIHBhcnNlTWFuaWZlc3QsIHBhcnNlQWFwdFN0cmluZ3MsIHBhcnNlQWFwdDJTdHJpbmdzLFxuICBmb3JtYXRDb25maWdNYXJrZXIsIHBhcnNlSnNvbkRhdGEsIHVuc2lnbkFwaywgdG9BdmRMb2NhbGVBcmdzLCByZXF1aXJlU2RrUm9vdCxcbiAgZ2V0U2RrUm9vdEZyb21FbnYsIGdldEFuZHJvaWRQcmVmc1Jvb3QsIGRpckV4aXN0cywgZXNjYXBlU2hlbGxBcmcsXG4gIHBhcnNlTGF1bmNoYWJsZUFjdGl2aXR5TmFtZXMsIG1hdGNoQ29tcG9uZW50TmFtZSxcbn07XG4iXSwiZmlsZSI6ImxpYi9oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -218,4 +218,4 @@ var _default = Logcat;
218
218
  exports.default = _default;require('source-map-support').install();
219
219
 
220
220
 
221
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2NhdC5qcyIsIm5hbWVzIjpbIkV2ZW50RW1pdHRlciIsImV2ZW50cyIsImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIk1BWF9CVUZGRVJfU0laRSIsIkxPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCIsIlNVUFBPUlRFRF9GT1JNQVRTIiwiU1VQUE9SVEVEX1BSSU9SSVRJRVMiLCJERUZBVUxUX1BSSU9SSVRZIiwiREVGQVVMVF9UQUciLCJERUZBVUxUX0ZPUk1BVCIsInJlcXVpcmVGb3JtYXQiLCJmb3JtYXQiLCJpbmNsdWRlcyIsImluZm8iLCJyZXF1aXJlU3BlYyIsInNwZWMiLCJ0YWciLCJwcmlvcml0eSIsInNwbGl0IiwicmVzdWx0VGFnIiwic29tZSIsInAiLCJfIiwidG9Mb3dlciIsImZvcm1hdEZpbHRlclNwZWNzIiwiZmlsdGVyU3BlY3MiLCJpc0FycmF5IiwiZmlsdGVyIiwiaXNTdHJpbmciLCJzdGFydHNXaXRoIiwibWFwIiwiTG9nY2F0IiwiY29uc3RydWN0b3IiLCJvcHRzIiwiYWRiIiwiY2xlYXJMb2dzIiwiY2xlYXJEZXZpY2VMb2dzT25TdGFydCIsImRlYnVnIiwiZGVidWdUcmFjZSIsIm1heEJ1ZmZlclNpemUiLCJsb2dzIiwibG9nSWR4U2luY2VMYXN0UmVxdWVzdCIsInN0YXJ0Q2FwdHVyZSIsInN0YXJ0ZWQiLCJCIiwiX3Jlc29sdmUiLCJfcmVqZWN0IiwicmVzb2x2ZSIsImFyZ3MiLCJyZWplY3QiLCJjbGVhciIsImNtZCIsImRlZmF1bHRBcmdzIiwidXRpbCIsInF1b3RlIiwicGF0aCIsInByb2MiLCJTdWJQcm9jZXNzIiwib24iLCJjb2RlIiwic2lnbmFsIiwiZXJyb3IiLCJ3YXJuIiwibGluZXMiLCJsaW5lIiwidGVzdCIsIkVycm9yIiwib3V0cHV0SGFuZGxlciIsInRyaW0iLCJzdGFydCIsInNldFRpbWVvdXQiLCJvdXRwdXQiLCJwcmVmaXgiLCJsZW5ndGgiLCJzaGlmdCIsIm91dHB1dE9iaiIsInRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJsZXZlbCIsIm1lc3NhZ2UiLCJwdXNoIiwiZW1pdCIsImlzVHJhY2UiLCJzdG9wQ2FwdHVyZSIsImlzUnVubmluZyIsInJlbW92ZUFsbExpc3RlbmVycyIsInN0b3AiLCJnZXRMb2dzIiwicmVzdWx0Iiwic2xpY2UiLCJnZXRBbGxMb2dzIiwiZXhlYyIsImVyciIsInN0ZGVyciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2djYXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGxvZ2dlciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5jb25zdCB7IEV2ZW50RW1pdHRlciB9ID0gZXZlbnRzO1xuaW1wb3J0IHsgU3ViUHJvY2VzcywgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0xvZ2NhdCcpO1xuY29uc3QgTUFYX0JVRkZFUl9TSVpFID0gMTAwMDA7XG5jb25zdCBMT0dDQVRfUFJPQ19TVEFSVFVQX1RJTUVPVVQgPSAxMDAwMDtcbmNvbnN0IFNVUFBPUlRFRF9GT1JNQVRTID0gWydicmllZicsICdwcm9jZXNzJywgJ3RhZycsICd0aHJlYWQnLCAncmF3JywgJ3RpbWUnLCAndGhyZWFkdGltZScsICdsb25nJ107XG5jb25zdCBTVVBQT1JURURfUFJJT1JJVElFUyA9IFsndicsICdkJywgJ2knLCAndycsICdlJywgJ2YnLCAncyddO1xuY29uc3QgREVGQVVMVF9QUklPUklUWSA9ICd2JztcbmNvbnN0IERFRkFVTFRfVEFHID0gJyonO1xuY29uc3QgREVGQVVMVF9GT1JNQVQgPSAndGhyZWFkdGltZSc7XG5cbmZ1bmN0aW9uIHJlcXVpcmVGb3JtYXQgKGZvcm1hdCkge1xuICBpZiAoIVNVUFBPUlRFRF9GT1JNQVRTLmluY2x1ZGVzKGZvcm1hdCkpIHtcbiAgICBsb2cuaW5mbyhgVGhlIGZvcm1hdCB2YWx1ZSAnJHtmb3JtYXR9JyBpcyB1bmtub3duLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTogJHtTVVBQT1JURURfRk9STUFUU31gKTtcbiAgICBsb2cuaW5mbyhgRGVmYXVsdGluZyB0byAnJHtERUZBVUxUX0ZPUk1BVH0nYCk7XG4gICAgcmV0dXJuIERFRkFVTFRfRk9STUFUO1xuICB9XG4gIHJldHVybiBmb3JtYXQ7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVTcGVjIChzcGVjKSB7XG4gIGNvbnN0IFt0YWcsIHByaW9yaXR5XSA9IHNwZWMuc3BsaXQoJzonKTtcbiAgbGV0IHJlc3VsdFRhZyA9IHRhZztcbiAgaWYgKCFyZXN1bHRUYWcpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHRhZyB2YWx1ZSBpbiBzcGVjICcke3NwZWN9JyBjYW5ub3QgYmUgZW1wdHlgKTtcbiAgICBsb2cuaW5mbyhgRGVmYXVsdGluZyB0byAnJHtERUZBVUxUX1RBR30nYCk7XG4gICAgcmVzdWx0VGFnID0gREVGQVVMVF9UQUc7XG4gIH1cbiAgaWYgKCFwcmlvcml0eSkge1xuICAgIGxvZy5pbmZvKGBUaGUgcHJpb3JpdHkgdmFsdWUgaW4gc3BlYyAnJHtzcGVjfScgaXMgZW1wdHkuIERlZmF1bHRpbmcgdG8gVmVyYm9zZSAoJHtERUZBVUxUX1BSSU9SSVRZfSlgKTtcbiAgICByZXR1cm4gYCR7cmVzdWx0VGFnfToke0RFRkFVTFRfUFJJT1JJVFl9YDtcbiAgfVxuICBpZiAoIVNVUFBPUlRFRF9QUklPUklUSUVTLnNvbWUoKHApID0+IF8udG9Mb3dlcihwcmlvcml0eSkgPT09IF8udG9Mb3dlcihwKSkpIHtcbiAgICBsb2cuaW5mbyhgVGhlIHByaW9yaXR5IHZhbHVlIGluIHNwZWMgJyR7c3BlY30nIGlzIHVua25vd24uIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAke1NVUFBPUlRFRF9QUklPUklUSUVTfWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvIFZlcmJvc2UgKCR7REVGQVVMVF9QUklPUklUWX0pYCk7XG4gICAgcmV0dXJuIGAke3Jlc3VsdFRhZ306JHtERUZBVUxUX1BSSU9SSVRZfWA7XG4gIH1cbiAgcmV0dXJuIHNwZWM7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZpbHRlclNwZWNzIChmaWx0ZXJTcGVjcykge1xuICBpZiAoIV8uaXNBcnJheShmaWx0ZXJTcGVjcykpIHtcbiAgICBmaWx0ZXJTcGVjcyA9IFtmaWx0ZXJTcGVjc107XG4gIH1cbiAgcmV0dXJuIGZpbHRlclNwZWNzXG4gICAgLmZpbHRlcigoc3BlYykgPT4gc3BlYyAmJiBfLmlzU3RyaW5nKHNwZWMpICYmICFzcGVjLnN0YXJ0c1dpdGgoJy0nKSlcbiAgICAubWFwKChzcGVjKSA9PiBzcGVjLmluY2x1ZGVzKCc6JykgPyByZXF1aXJlU3BlYyhzcGVjKSA6IHNwZWMpO1xufVxuXG5cbmNsYXNzIExvZ2NhdCBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRiID0gb3B0cy5hZGI7XG4gICAgdGhpcy5jbGVhckxvZ3MgPSBvcHRzLmNsZWFyRGV2aWNlTG9nc09uU3RhcnQgfHwgZmFsc2U7XG4gICAgdGhpcy5kZWJ1ZyA9IG9wdHMuZGVidWc7XG4gICAgdGhpcy5kZWJ1Z1RyYWNlID0gb3B0cy5kZWJ1Z1RyYWNlO1xuICAgIHRoaXMubWF4QnVmZmVyU2l6ZSA9IG9wdHMubWF4QnVmZmVyU2l6ZSB8fCBNQVhfQlVGRkVSX1NJWkU7XG4gICAgdGhpcy5sb2dzID0gW107XG4gICAgdGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0ID0gMDtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0Q2FwdHVyZSAob3B0cyA9IHt9KSB7XG4gICAgbGV0IHN0YXJ0ZWQgPSBmYWxzZTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKF9yZXNvbHZlLCBfcmVqZWN0KSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgICAgY29uc3QgcmVzb2x2ZSA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBfcmVzb2x2ZSguLi5hcmdzKTtcbiAgICAgIH07XG4gICAgICBjb25zdCByZWplY3QgPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICBzdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgX3JlamVjdCguLi5hcmdzKTtcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLmNsZWFyTG9ncykge1xuICAgICAgICBhd2FpdCB0aGlzLmNsZWFyKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgZm9ybWF0ID0gREVGQVVMVF9GT1JNQVQsXG4gICAgICAgIGZpbHRlclNwZWNzID0gW10sXG4gICAgICB9ID0gb3B0cztcbiAgICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICAgLi4udGhpcy5hZGIuZGVmYXVsdEFyZ3MsXG4gICAgICAgICdsb2djYXQnLFxuICAgICAgICAnLXYnLCByZXF1aXJlRm9ybWF0KGZvcm1hdCksXG4gICAgICAgIC4uLmZvcm1hdEZpbHRlclNwZWNzKGZpbHRlclNwZWNzKSxcbiAgICAgIF07XG4gICAgICBsb2cuZGVidWcoYFN0YXJ0aW5nIGxvZ3MgY2FwdHVyZSB3aXRoIGNvbW1hbmQ6ICR7dXRpbC5xdW90ZShbdGhpcy5hZGIucGF0aCwgLi4uY21kXSl9YCk7XG4gICAgICB0aGlzLnByb2MgPSBuZXcgU3ViUHJvY2Vzcyh0aGlzLmFkYi5wYXRoLCBjbWQpO1xuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBsb2cuZXJyb3IoYExvZ2NhdCB0ZXJtaW5hdGVkIHdpdGggY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICAgIHRoaXMucHJvYyA9IG51bGw7XG4gICAgICAgIGlmICghc3RhcnRlZCkge1xuICAgICAgICAgIGxvZy53YXJuKCdMb2djYXQgbm90IHN0YXJ0ZWQuIENvbnRpbnVpbmcnKTtcbiAgICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdsaW5lcy1zdGRlcnInLCAobGluZXMpID0+IHtcbiAgICAgICAgZm9yIChsZXQgbGluZSBvZiBsaW5lcykge1xuICAgICAgICAgIGlmICgvZXhlY3ZwXFwoXFwpLy50ZXN0KGxpbmUpKSB7XG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0xvZ2NhdCBwcm9jZXNzIGZhaWxlZCB0byBzdGFydCcpO1xuICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgTG9nY2F0IHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0LiBzdGRlcnI6ICR7bGluZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMub3V0cHV0SGFuZGxlcihfLnRyaW0obGluZSksICdTVERFUlI6ICcpO1xuICAgICAgICB9XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5wcm9jLm9uKCdsaW5lcy1zdGRvdXQnLCAobGluZXMpID0+IHtcbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgdGhpcy5vdXRwdXRIYW5kbGVyKF8udHJpbShsaW5lKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0YXJ0KDApO1xuICAgICAgLy8gcmVzb2x2ZSBhZnRlciBhIHRpbWVvdXQsIGV2ZW4gaWYgbm8gb3V0cHV0IHdhcyByZWNvcmRlZFxuICAgICAgc2V0VGltZW91dChyZXNvbHZlLCBMT0dDQVRfUFJPQ19TVEFSVFVQX1RJTUVPVVQpO1xuICAgIH0pO1xuICB9XG5cbiAgb3V0cHV0SGFuZGxlciAob3V0cHV0LCBwcmVmaXggPSAnJykge1xuICAgIGlmICghb3V0cHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubG9ncy5sZW5ndGggPj0gdGhpcy5tYXhCdWZmZXJTaXplKSB7XG4gICAgICB0aGlzLmxvZ3Muc2hpZnQoKTtcbiAgICAgIGlmICh0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPiAwKSB7XG4gICAgICAgIC0tdGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0O1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBvdXRwdXRPYmogPSB7XG4gICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICBsZXZlbDogJ0FMTCcsXG4gICAgICBtZXNzYWdlOiBvdXRwdXQsXG4gICAgfTtcbiAgICB0aGlzLmxvZ3MucHVzaChvdXRwdXRPYmopO1xuICAgIHRoaXMuZW1pdCgnb3V0cHV0Jywgb3V0cHV0T2JqKTtcbiAgICBjb25zdCBpc1RyYWNlID0gL1dcXC9UcmFjZS8udGVzdChvdXRwdXQpO1xuICAgIGlmICh0aGlzLmRlYnVnICYmICghaXNUcmFjZSB8fCB0aGlzLmRlYnVnVHJhY2UpKSB7XG4gICAgICBsb2cuZGVidWcocHJlZml4ICsgb3V0cHV0KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzdG9wQ2FwdHVyZSAoKSB7XG4gICAgbG9nLmRlYnVnKCdTdG9wcGluZyBsb2djYXQgY2FwdHVyZScpO1xuICAgIGlmICghdGhpcy5wcm9jIHx8ICF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICBsb2cuZGVidWcoJ0xvZ2NhdCBhbHJlYWR5IHN0b3BwZWQnKTtcbiAgICAgIHRoaXMucHJvYyA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvYy5yZW1vdmVBbGxMaXN0ZW5lcnMoJ2V4aXQnKTtcbiAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgpO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBnZXRMb2dzICgpIHtcbiAgICBpZiAodGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0IDwgdGhpcy5sb2dzLmxlbmd0aCkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5sb2dzLnNsaWNlKHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCk7XG4gICAgICB0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPSB0aGlzLmxvZ3MubGVuZ3RoO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgZ2V0QWxsTG9ncyAoKSB7XG4gICAgcmV0dXJuIHRoaXMubG9ncztcbiAgfVxuXG4gIGFzeW5jIGNsZWFyICgpIHtcbiAgICBsb2cuZGVidWcoJ0NsZWFyaW5nIGxvZ2NhdCBsb2dzIGZyb20gZGV2aWNlJyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBbLi4udGhpcy5hZGIuZGVmYXVsdEFyZ3MsICdsb2djYXQnLCAnLWMnXTtcbiAgICAgIGF3YWl0IGV4ZWModGhpcy5hZGIucGF0aCwgYXJncyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgRmFpbGVkIHRvIGNsZWFyIGxvZ2NhdCBsb2dzOiAke2Vyci5zdGRlcnIgfHwgZXJyLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IExvZ2NhdDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFEQSxNQUFNO0VBQUVBO0FBQUYsSUFBbUJDLGVBQXpCOztBQUdBLE1BQU1DLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsS0FBcEM7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLEtBQXJCLEVBQTRCLFFBQTVCLEVBQXNDLEtBQXRDLEVBQTZDLE1BQTdDLEVBQXFELFlBQXJELEVBQW1FLE1BQW5FLENBQTFCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcs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
221
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2djYXQuanMiXSwibmFtZXMiOlsiRXZlbnRFbWl0dGVyIiwiZXZlbnRzIiwibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiTUFYX0JVRkZFUl9TSVpFIiwiTE9HQ0FUX1BST0NfU1RBUlRVUF9USU1FT1VUIiwiU1VQUE9SVEVEX0ZPUk1BVFMiLCJTVVBQT1JURURfUFJJT1JJVElFUyIsIkRFRkFVTFRfUFJJT1JJVFkiLCJERUZBVUxUX1RBRyIsIkRFRkFVTFRfRk9STUFUIiwicmVxdWlyZUZvcm1hdCIsImZvcm1hdCIsImluY2x1ZGVzIiwiaW5mbyIsInJlcXVpcmVTcGVjIiwic3BlYyIsInRhZyIsInByaW9yaXR5Iiwic3BsaXQiLCJyZXN1bHRUYWciLCJzb21lIiwicCIsIl8iLCJ0b0xvd2VyIiwiZm9ybWF0RmlsdGVyU3BlY3MiLCJmaWx0ZXJTcGVjcyIsImlzQXJyYXkiLCJmaWx0ZXIiLCJpc1N0cmluZyIsInN0YXJ0c1dpdGgiLCJtYXAiLCJMb2djYXQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJhZGIiLCJjbGVhckxvZ3MiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiZGVidWciLCJkZWJ1Z1RyYWNlIiwibWF4QnVmZmVyU2l6ZSIsImxvZ3MiLCJsb2dJZHhTaW5jZUxhc3RSZXF1ZXN0Iiwic3RhcnRDYXB0dXJlIiwic3RhcnRlZCIsIkIiLCJfcmVzb2x2ZSIsIl9yZWplY3QiLCJyZXNvbHZlIiwiYXJncyIsInJlamVjdCIsImNsZWFyIiwiY21kIiwiZGVmYXVsdEFyZ3MiLCJ1dGlsIiwicXVvdGUiLCJwYXRoIiwicHJvYyIsIlN1YlByb2Nlc3MiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJlcnJvciIsIndhcm4iLCJsaW5lcyIsImxpbmUiLCJ0ZXN0IiwiRXJyb3IiLCJvdXRwdXRIYW5kbGVyIiwidHJpbSIsInN0YXJ0Iiwic2V0VGltZW91dCIsIm91dHB1dCIsInByZWZpeCIsImxlbmd0aCIsInNoaWZ0Iiwib3V0cHV0T2JqIiwidGltZXN0YW1wIiwiRGF0ZSIsIm5vdyIsImxldmVsIiwibWVzc2FnZSIsInB1c2giLCJlbWl0IiwiaXNUcmFjZSIsInN0b3BDYXB0dXJlIiwiaXNSdW5uaW5nIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwic3RvcCIsImdldExvZ3MiLCJyZXN1bHQiLCJzbGljZSIsImdldEFsbExvZ3MiLCJlcnIiLCJzdGRlcnIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBREEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQW1CQyxlQUF6Qjs7QUFHQSxNQUFNQyxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLFFBQWpCLENBQVo7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCO0FBQ0EsTUFBTUMsMkJBQTJCLEdBQUcsS0FBcEM7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLEtBQXJCLEVBQTRCLFFBQTVCLEVBQXNDLEtBQXRDLEVBQTZDLE1BQTdDLEVBQXFELFlBQXJELEVBQW1FLE1BQW5FLENBQTFCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsQ0FBQyxHQUFELEVBQU0sR0FBTixFQUFXLEdBQVgsRUFBZ0IsR0FBaEIsRUFBcUIsR0FBckIsRUFBMEIsR0FBMUIsRUFBK0IsR0FBL0IsQ0FBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxHQUF6QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxHQUFwQjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxZQUF2Qjs7QUFFQSxTQUFTQyxhQUFULENBQXdCQyxNQUF4QixFQUFnQztBQUM5QixNQUFJLENBQUNOLGlCQUFpQixDQUFDTyxRQUFsQixDQUEyQkQsTUFBM0IsQ0FBTCxFQUF5QztBQUN2Q1gsSUFBQUEsR0FBRyxDQUFDYSxJQUFKLENBQVUscUJBQW9CRixNQUFPLHVDQUFzQ04saUJBQWtCLEVBQTdGO0FBQ0FMLElBQUFBLEdBQUcsQ0FBQ2EsSUFBSixDQUFVLGtCQUFpQkosY0FBZSxHQUEx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VWlDLE1BQXhDO0FBQ0EsYUFBT2dCLE1BQVA7QUFDRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFFREUsRUFBQUEsVUFBVSxHQUFJO0FBQ1osV0FBTyxLQUFLbkQsSUFBWjtBQUNEOztBQUVVLFFBQUxVLEtBQUssR0FBSTtBQUNibEQsSUFBQUEsR0FBRyxDQUFDcUMsS0FBSixDQUFVLGtDQUFWOztBQUNBLFFBQUk7QUFDRixZQUFNVyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEtBQUtkLEdBQUwsQ0FBU2tCLFdBQWIsRUFBMEIsUUFBMUIsRUFBb0MsSUFBcEMsQ0FBYjtBQUNBLFlBQU0sd0JBQUssS0FBS2xCLEdBQUwsQ0FBU3FCLElBQWQsRUFBb0JQLElBQXBCLENBQU47QUFDRCxLQUhELENBR0UsT0FBTzRDLEdBQVAsRUFBWTtBQUNaNUYsTUFBQUEsR0FBRyxDQUFDOEQsSUFBSixDQUFVLGdDQUErQjhCLEdBQUcsQ0FBQ0MsTUFBSixJQUFjRCxHQUFHLENBQUNaLE9BQVEsRUFBbkU7QUFDRDtBQUNGOztBQS9IK0I7O2VBa0luQmpELE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgbG9nZ2VyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBldmVudHMgZnJvbSAnZXZlbnRzJztcbmNvbnN0IHsgRXZlbnRFbWl0dGVyIH0gPSBldmVudHM7XG5pbXBvcnQgeyBTdWJQcm9jZXNzLCBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignTG9nY2F0Jyk7XG5jb25zdCBNQVhfQlVGRkVSX1NJWkUgPSAxMDAwMDtcbmNvbnN0IExPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCA9IDEwMDAwO1xuY29uc3QgU1VQUE9SVEVEX0ZPUk1BVFMgPSBbJ2JyaWVmJywgJ3Byb2Nlc3MnLCAndGFnJywgJ3RocmVhZCcsICdyYXcnLCAndGltZScsICd0aHJlYWR0aW1lJywgJ2xvbmcnXTtcbmNvbnN0IFNVUFBPUlRFRF9QUklPUklUSUVTID0gWyd2JywgJ2QnLCAnaScsICd3JywgJ2UnLCAnZicsICdzJ107XG5jb25zdCBERUZBVUxUX1BSSU9SSVRZID0gJ3YnO1xuY29uc3QgREVGQVVMVF9UQUcgPSAnKic7XG5jb25zdCBERUZBVUxUX0ZPUk1BVCA9ICd0aHJlYWR0aW1lJztcblxuZnVuY3Rpb24gcmVxdWlyZUZvcm1hdCAoZm9ybWF0KSB7XG4gIGlmICghU1VQUE9SVEVEX0ZPUk1BVFMuaW5jbHVkZXMoZm9ybWF0KSkge1xuICAgIGxvZy5pbmZvKGBUaGUgZm9ybWF0IHZhbHVlICcke2Zvcm1hdH0nIGlzIHVua25vd24uIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAke1NVUFBPUlRFRF9GT1JNQVRTfWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvICcke0RFRkFVTFRfRk9STUFUfSdgKTtcbiAgICByZXR1cm4gREVGQVVMVF9GT1JNQVQ7XG4gIH1cbiAgcmV0dXJuIGZvcm1hdDtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZVNwZWMgKHNwZWMpIHtcbiAgY29uc3QgW3RhZywgcHJpb3JpdHldID0gc3BlYy5zcGxpdCgnOicpO1xuICBsZXQgcmVzdWx0VGFnID0gdGFnO1xuICBpZiAoIXJlc3VsdFRhZykge1xuICAgIGxvZy5pbmZvKGBUaGUgdGFnIHZhbHVlIGluIHNwZWMgJyR7c3BlY30nIGNhbm5vdCBiZSBlbXB0eWApO1xuICAgIGxvZy5pbmZvKGBEZWZhdWx0aW5nIHRvICcke0RFRkFVTFRfVEFHfSdgKTtcbiAgICByZXN1bHRUYWcgPSBERUZBVUxUX1RBRztcbiAgfVxuICBpZiAoIXByaW9yaXR5KSB7XG4gICAgbG9nLmluZm8oYFRoZSBwcmlvcml0eSB2YWx1ZSBpbiBzcGVjICcke3NwZWN9JyBpcyBlbXB0eS4gRGVmYXVsdGluZyB0byBWZXJib3NlICgke0RFRkFVTFRfUFJJT1JJVFl9KWApO1xuICAgIHJldHVybiBgJHtyZXN1bHRUYWd9OiR7REVGQVVMVF9QUklPUklUWX1gO1xuICB9XG4gIGlmICghU1VQUE9SVEVEX1BSSU9SSVRJRVMuc29tZSgocCkgPT4gXy50b0xvd2VyKHByaW9yaXR5KSA9PT0gXy50b0xvd2VyKHApKSkge1xuICAgIGxvZy5pbmZvKGBUaGUgcHJpb3JpdHkgdmFsdWUgaW4gc3BlYyAnJHtzcGVjfScgaXMgdW5rbm93bi4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6ICR7U1VQUE9SVEVEX1BSSU9SSVRJRVN9YCk7XG4gICAgbG9nLmluZm8oYERlZmF1bHRpbmcgdG8gVmVyYm9zZSAoJHtERUZBVUxUX1BSSU9SSVRZfSlgKTtcbiAgICByZXR1cm4gYCR7cmVzdWx0VGFnfToke0RFRkFVTFRfUFJJT1JJVFl9YDtcbiAgfVxuICByZXR1cm4gc3BlYztcbn1cblxuZnVuY3Rpb24gZm9ybWF0RmlsdGVyU3BlY3MgKGZpbHRlclNwZWNzKSB7XG4gIGlmICghXy5pc0FycmF5KGZpbHRlclNwZWNzKSkge1xuICAgIGZpbHRlclNwZWNzID0gW2ZpbHRlclNwZWNzXTtcbiAgfVxuICByZXR1cm4gZmlsdGVyU3BlY3NcbiAgICAuZmlsdGVyKChzcGVjKSA9PiBzcGVjICYmIF8uaXNTdHJpbmcoc3BlYykgJiYgIXNwZWMuc3RhcnRzV2l0aCgnLScpKVxuICAgIC5tYXAoKHNwZWMpID0+IHNwZWMuaW5jbHVkZXMoJzonKSA/IHJlcXVpcmVTcGVjKHNwZWMpIDogc3BlYyk7XG59XG5cblxuY2xhc3MgTG9nY2F0IGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGIgPSBvcHRzLmFkYjtcbiAgICB0aGlzLmNsZWFyTG9ncyA9IG9wdHMuY2xlYXJEZXZpY2VMb2dzT25TdGFydCB8fCBmYWxzZTtcbiAgICB0aGlzLmRlYnVnID0gb3B0cy5kZWJ1ZztcbiAgICB0aGlzLmRlYnVnVHJhY2UgPSBvcHRzLmRlYnVnVHJhY2U7XG4gICAgdGhpcy5tYXhCdWZmZXJTaXplID0gb3B0cy5tYXhCdWZmZXJTaXplIHx8IE1BWF9CVUZGRVJfU0laRTtcbiAgICB0aGlzLmxvZ3MgPSBbXTtcbiAgICB0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPSAwO1xuICB9XG5cbiAgYXN5bmMgc3RhcnRDYXB0dXJlIChvcHRzID0ge30pIHtcbiAgICBsZXQgc3RhcnRlZCA9IGZhbHNlO1xuICAgIHJldHVybiBhd2FpdCBuZXcgQihhc3luYyAoX3Jlc29sdmUsIF9yZWplY3QpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3BhcmFtLW5hbWVzXG4gICAgICBjb25zdCByZXNvbHZlID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgICAgc3RhcnRlZCA9IHRydWU7XG4gICAgICAgIF9yZXNvbHZlKC4uLmFyZ3MpO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IHJlamVjdCA9IGZ1bmN0aW9uICguLi5hcmdzKSB7XG4gICAgICAgIHN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICBfcmVqZWN0KC4uLmFyZ3MpO1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMuY2xlYXJMb2dzKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuY2xlYXIoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge1xuICAgICAgICBmb3JtYXQgPSBERUZBVUxUX0ZPUk1BVCxcbiAgICAgICAgZmlsdGVyU3BlY3MgPSBbXSxcbiAgICAgIH0gPSBvcHRzO1xuICAgICAgY29uc3QgY21kID0gW1xuICAgICAgICAuLi50aGlzLmFkYi5kZWZhdWx0QXJncyxcbiAgICAgICAgJ2xvZ2NhdCcsXG4gICAgICAgICctdicsIHJlcXVpcmVGb3JtYXQoZm9ybWF0KSxcbiAgICAgICAgLi4uZm9ybWF0RmlsdGVyU3BlY3MoZmlsdGVyU3BlY3MpLFxuICAgICAgXTtcbiAgICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgbG9ncyBjYXB0dXJlIHdpdGggY29tbWFuZDogJHt1dGlsLnF1b3RlKFt0aGlzLmFkYi5wYXRoLCAuLi5jbWRdKX1gKTtcbiAgICAgIHRoaXMucHJvYyA9IG5ldyBTdWJQcm9jZXNzKHRoaXMuYWRiLnBhdGgsIGNtZCk7XG4gICAgICB0aGlzLnByb2Mub24oJ2V4aXQnLCAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGxvZy5lcnJvcihgTG9nY2F0IHRlcm1pbmF0ZWQgd2l0aCBjb2RlICR7Y29kZX0sIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICAgICAgaWYgKCFzdGFydGVkKSB7XG4gICAgICAgICAgbG9nLndhcm4oJ0xvZ2NhdCBub3Qgc3RhcnRlZC4gQ29udGludWluZycpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2xpbmVzLXN0ZGVycicsIChsaW5lcykgPT4ge1xuICAgICAgICBmb3IgKGxldCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICAgICAgaWYgKC9leGVjdnBcXChcXCkvLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignTG9nY2F0IHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0Jyk7XG4gICAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBMb2djYXQgcHJvY2VzcyBmYWlsZWQgdG8gc3RhcnQuIHN0ZGVycjogJHtsaW5lfWApKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5vdXRwdXRIYW5kbGVyKF8udHJpbShsaW5lKSwgJ1NUREVSUjogJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLnByb2Mub24oJ2xpbmVzLXN0ZG91dCcsIChsaW5lcykgPT4ge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICAgIGZvciAobGV0IGxpbmUgb2YgbGluZXMpIHtcbiAgICAgICAgICB0aGlzLm91dHB1dEhhbmRsZXIoXy50cmltKGxpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoMCk7XG4gICAgICAvLyByZXNvbHZlIGFmdGVyIGEgdGltZW91dCwgZXZlbiBpZiBubyBvdXRwdXQgd2FzIHJlY29yZGVkXG4gICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIExPR0NBVF9QUk9DX1NUQVJUVVBfVElNRU9VVCk7XG4gICAgfSk7XG4gIH1cblxuICBvdXRwdXRIYW5kbGVyIChvdXRwdXQsIHByZWZpeCA9ICcnKSB7XG4gICAgaWYgKCFvdXRwdXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sb2dzLmxlbmd0aCA+PSB0aGlzLm1heEJ1ZmZlclNpemUpIHtcbiAgICAgIHRoaXMubG9ncy5zaGlmdCgpO1xuICAgICAgaWYgKHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA+IDApIHtcbiAgICAgICAgLS10aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3Q7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IG91dHB1dE9iaiA9IHtcbiAgICAgIHRpbWVzdGFtcDogRGF0ZS5ub3coKSxcbiAgICAgIGxldmVsOiAnQUxMJyxcbiAgICAgIG1lc3NhZ2U6IG91dHB1dCxcbiAgICB9O1xuICAgIHRoaXMubG9ncy5wdXNoKG91dHB1dE9iaik7XG4gICAgdGhpcy5lbWl0KCdvdXRwdXQnLCBvdXRwdXRPYmopO1xuICAgIGNvbnN0IGlzVHJhY2UgPSAvV1xcL1RyYWNlLy50ZXN0KG91dHB1dCk7XG4gICAgaWYgKHRoaXMuZGVidWcgJiYgKCFpc1RyYWNlIHx8IHRoaXMuZGVidWdUcmFjZSkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhwcmVmaXggKyBvdXRwdXQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0b3BDYXB0dXJlICgpIHtcbiAgICBsb2cuZGVidWcoJ1N0b3BwaW5nIGxvZ2NhdCBjYXB0dXJlJyk7XG4gICAgaWYgKCF0aGlzLnByb2MgfHwgIXRoaXMucHJvYy5pc1J1bm5pbmcpIHtcbiAgICAgIGxvZy5kZWJ1ZygnTG9nY2F0IGFscmVhZHkgc3RvcHBlZCcpO1xuICAgICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5wcm9jLnJlbW92ZUFsbExpc3RlbmVycygnZXhpdCcpO1xuICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCk7XG4gICAgdGhpcy5wcm9jID0gbnVsbDtcbiAgfVxuXG4gIGdldExvZ3MgKCkge1xuICAgIGlmICh0aGlzLmxvZ0lkeFNpbmNlTGFzdFJlcXVlc3QgPCB0aGlzLmxvZ3MubGVuZ3RoKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmxvZ3Muc2xpY2UodGhpcy5sb2dJZHhTaW5jZUxhc3RSZXF1ZXN0KTtcbiAgICAgIHRoaXMubG9nSWR4U2luY2VMYXN0UmVxdWVzdCA9IHRoaXMubG9ncy5sZW5ndGg7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gW107XG4gIH1cblxuICBnZXRBbGxMb2dzICgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2dzO1xuICB9XG5cbiAgYXN5bmMgY2xlYXIgKCkge1xuICAgIGxvZy5kZWJ1ZygnQ2xlYXJpbmcgbG9nY2F0IGxvZ3MgZnJvbSBkZXZpY2UnKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYXJncyA9IFsuLi50aGlzLmFkYi5kZWZhdWx0QXJncywgJ2xvZ2NhdCcsICctYyddO1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmFkYi5wYXRoLCBhcmdzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKGBGYWlsZWQgdG8gY2xlYXIgbG9nY2F0IGxvZ3M6ICR7ZXJyLnN0ZGVyciB8fCBlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTG9nY2F0O1xuIl0sImZpbGUiOiJsaWIvbG9nY2F0LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -15,4 +15,4 @@ var _default = log;
15
15
  exports.default = _default;require('source-map-support').install();
16
16
 
17
17
 
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQURCJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsS0FBakIsQ0FBWjs7ZUFFZUYsRyJ9
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLEtBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdBREInKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sImZpbGUiOiJsaWIvbG9nZ2VyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=