appium-android-driver 5.0.10 → 5.0.13
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 +1 -1
- package/build/lib/android-helpers.js +1 -1
- package/build/lib/bootstrap.js +1 -1
- package/build/lib/commands/actions.js +1 -1
- package/build/lib/commands/alert.js +1 -1
- package/build/lib/commands/app-management.js +1 -1
- package/build/lib/commands/context.js +1 -1
- package/build/lib/commands/coverage.js +1 -1
- package/build/lib/commands/element.js +1 -1
- package/build/lib/commands/emu-console.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/file-actions.js +1 -1
- package/build/lib/commands/find.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/ime.js +1 -1
- package/build/lib/commands/index.js +1 -1
- package/build/lib/commands/intent.js +1 -1
- package/build/lib/commands/log.js +1 -1
- package/build/lib/commands/network.js +1 -1
- package/build/lib/commands/performance.js +1 -1
- package/build/lib/commands/recordscreen.js +1 -1
- package/build/lib/commands/shell.js +1 -1
- package/build/lib/commands/streamscreen.js +1 -1
- package/build/lib/commands/system-bars.js +1 -1
- package/build/lib/commands/touch.js +1 -1
- package/build/lib/desired-caps.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/uiautomator.js +1 -1
- package/build/lib/unlock-helpers.js +1 -1
- package/build/lib/webview-helpers.js +1 -1
- package/package.json +7 -6
|
@@ -452,4 +452,4 @@ var _default = helpers;
|
|
|
452
452
|
exports.default = _default;require('source-map-support').install();
|
|
453
453
|
|
|
454
454
|
|
|
455
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiXSwibmFtZXMiOlsiTkFUSVZFX1dJTiIsIldFQlZJRVdfV0lOIiwiQ0hST01JVU1fV0lOIiwiV0VCVklFV19CQVNFIiwiV0VCVklFV19QSURfUEFUVEVSTiIsIlJlZ0V4cCIsIldFQlZJRVdfUEtHX1BBVFRFUk4iLCJERVZUT09MU19TT0NLRVRfUEFUVEVSTiIsIkNST1NTV0FMS19TT0NLRVRfUEFUVEVSTiIsIkNIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCIsIkNIUk9NRV9QQUNLQUdFX05BTUUiLCJLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUyIsIkRFVlRPT0xTX1BPUlRTX1JBTkdFIiwiV0VCVklFV1NfREVUQUlMU19DQUNIRSIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiQ0RQX1JFUV9USU1FT1VUIiwiREVWVE9PTFNfUE9SVF9BTExPQ0FUSU9OX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiaGVscGVycyIsInRvRGV0YWlsc0NhY2hlS2V5IiwiYWRiIiwid2VidmlldyIsImN1ckRldmljZUlkIiwiZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzIiwib3V0Iiwic2hlbGwiLCJuYW1lcyIsImFsbE1hdGNoZXMiLCJsaW5lIiwic3BsaXQiLCJmbGFncyIsInN0Iiwic29ja1BhdGgiLCJ0cmltIiwic3RhcnRzV2l0aCIsInB1c2giLCJ0ZXN0IiwiXyIsImlzRW1wdHkiLCJsb2dnZXIiLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJsZW5ndGgiLCJwbHVyYWxpemUiLCJ1bmlxIiwid2Vidmlld3NGcm9tUHJvY3MiLCJkZXZpY2VTb2NrZXQiLCJzb2NrZXROYW1lcyIsIndlYnZpZXdzIiwic29ja2V0TmFtZSIsInByb2MiLCJzb2NrZXROYW1lTWF0Y2giLCJleGVjIiwiY3Jvc3N3YWxrTWF0Y2giLCJhbGxvY2F0ZURldnRvb2xzUG9ydCIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJyZW1vdGVQb3J0IiwicmVwbGFjZSIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJsb2NhbFBvcnQiLCJlIiwiRXJyb3IiLCJhZGJFeGVjIiwiY29sbGVjdFdlYnZpZXdzRGV0YWlscyIsIndlYnZpZXdzTWFwcGluZyIsIm9wdHMiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsImVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiIsImluZm8iLCJkZXRhaWxDb2xsZWN0b3JzIiwiaXRlbSIsImNkcEluZm8iLCJwYWdlcyIsImNkcExpc3QiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsIkIiLCJhbGwiLCJ1cmwiLCJkYXRhIiwicHJvY0Zyb21XZWJ2aWV3IiwicGlkTWF0Y2giLCJwaWQiLCJwa2ciLCJnZXROYW1lQnlQaWQiLCJwYXJzZVdlYnZpZXdOYW1lcyIsImlzQ2hyb21lU2Vzc2lvbiIsInJlc3VsdCIsIndlYnZpZXdOYW1lIiwiZ2V0V2ViVmlld3NNYXBwaW5nIiwiYW5kcm9pZERldmljZVNvY2tldCIsIndlYnZpZXdNYXBwaW5nIiwid3ZOYW1lIiwicHJvY2VzcyIsInVuZGVmaW5lZCIsInBrZ01hdGNoIiwibmFtZSIsImlkIiwid2FybiIsIm1lc3NhZ2UiLCJrZXkiLCJzZXQiLCJoYXMiLCJkZWwiLCJnZXRXZWJ2aWV3RGV0YWlscyIsImdldCIsImNyZWF0ZUNocm9tZWRyaXZlckNhcHMiLCJkZXZpY2VJZCIsIndlYlZpZXdEZXRhaWxzIiwiY2FwcyIsImNocm9tZU9wdGlvbnMiLCJhbmRyb2lkUGFja2FnZSIsImFwcFBhY2thZ2UiLCJpc0Jvb2xlYW4iLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiYW5kcm9pZFVzZVJ1bm5pbmdBcHAiLCJjaHJvbWVBbmRyb2lkUGFja2FnZSIsImNocm9tZUFuZHJvaWRBY3Rpdml0eSIsImFuZHJvaWRBY3Rpdml0eSIsImNocm9tZUFuZHJvaWRQcm9jZXNzIiwiYW5kcm9pZFByb2Nlc3MiLCJ0b0xvd2VyIiwiYnJvd3Nlck5hbWUiLCJhcHBBY3Rpdml0eSIsInBhZ2VMb2FkU3RyYXRlZ3kiLCJpc0Nocm9tZSIsImluY2x1ZGVzIiwiYW5kcm9pZERldmljZVNlcmlhbCIsImlzUGxhaW5PYmplY3QiLCJsb2dnaW5nUHJlZnMiLCJjaHJvbWVMb2dnaW5nUHJlZnMiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJuZXdQcmVmIiwicGVyZm9ybWFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJBcmd1bWVudHMiLCJhcmdzIiwicHJvdGVjdGVkQ2FwTmFtZXMiLCJvcHQiLCJ2YWwiLCJ0b1BhaXJzIiwiaXNVbmRlZmluZWQiLCJvcHROYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxZQUFuQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsU0FBcEI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLFVBQXJCOztBQUNBLE1BQU1DLFlBQVksR0FBSSxHQUFFRixXQUFZLEdBQXBDOztBQUNBLE1BQU1HLG1CQUFtQixHQUFHLElBQUlDLE1BQUosQ0FBWSxJQUFHRixZQUFhLFFBQTVCLENBQTVCO0FBQ0EsTUFBTUcsbUJBQW1CLEdBQUcsSUFBSUQsTUFBSixDQUFZLElBQUdGLFlBQWEsb0JBQTVCLENBQTVCO0FBQ0EsTUFBTUksdUJBQXVCLEdBQUcsbUNBQWhDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsNkJBQWpDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsd0JBQWpDO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsb0JBQTVCO0FBQ0EsTUFBTUMsMEJBQTBCLEdBQUcsQ0FDakNELG1CQURpQyxFQUVqQyxpQkFGaUMsRUFHakMsZ0JBSGlDLEVBSWpDLG1CQUppQyxDQUFuQzs7QUFNQSxNQUFNRSxvQkFBb0IsR0FBRyxDQUFDLEtBQUQsRUFBUSxLQUFSLENBQTdCO0FBQ0EsTUFB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LEVBQXdEO0FBQ3RELFFBQUkxRSxnQkFBRTBHLFdBQUYsQ0FBY2pDLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLENBQWQsQ0FBSixFQUE0QztBQUMxQzlCLE1BQUFBLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLElBQTBCQyxHQUExQjtBQUNELEtBRkQsTUFFTztBQUNMRixNQUFBQSxpQkFBaUIsQ0FBQ3hHLElBQWxCLENBQXVCeUcsR0FBdkI7QUFDRDtBQUNGOztBQUNELE1BQUksQ0FBQ3ZHLGdCQUFFQyxPQUFGLENBQVVxRyxpQkFBVixDQUFMLEVBQW1DO0FBQ2pDcEcsb0JBQU8rQixJQUFQLENBQVksa0VBQ1YsZ0NBREY7O0FBRUEsU0FBSyxNQUFNMEUsT0FBWCxJQUFzQkwsaUJBQXRCLEVBQXlDO0FBQ3ZDcEcsc0JBQU8rQixJQUFQLENBQWEsS0FBSTBFLE9BQVEsS0FBSXZHLElBQUksQ0FBQ0MsU0FBTCxDQUFleUIsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQmlDLE9BQW5CLENBQWYsQ0FBNEMsR0FBekU7QUFDRDtBQUNGOztBQUVELFNBQU9sQyxJQUFQO0FBQ0QsQ0F0RkQ7O2VBd0ZlNUYsTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGZpbmRBUG9ydE5vdEluVXNlIH0gZnJvbSAncG9ydHNjYW5uZXInO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuXG5jb25zdCBOQVRJVkVfV0lOID0gJ05BVElWRV9BUFAnO1xuY29uc3QgV0VCVklFV19XSU4gPSAnV0VCVklFVyc7XG5jb25zdCBDSFJPTUlVTV9XSU4gPSAnQ0hST01JVU0nO1xuY29uc3QgV0VCVklFV19CQVNFID0gYCR7V0VCVklFV19XSU59X2A7XG5jb25zdCBXRUJWSUVXX1BJRF9QQVRURVJOID0gbmV3IFJlZ0V4cChgXiR7V0VCVklFV19CQVNFfShcXFxcZCspYCk7XG5jb25zdCBXRUJWSUVXX1BLR19QQVRURVJOID0gbmV3IFJlZ0V4cChgXiR7V0VCVklFV19CQVNFfShbXlxcXFxkXFxcXHNdW1xcXFx3Ll0qKWApO1xuY29uc3QgREVWVE9PTFNfU09DS0VUX1BBVFRFUk4gPSAvQFtcXHcuXStfZGV2dG9vbHNfcmVtb3RlXz8oXFxkKyk/XFxiLztcbmNvbnN0IENST1NTV0FMS19TT0NLRVRfUEFUVEVSTiA9IC9AKFtcXHcuXSspX2RldnRvb2xzX3JlbW90ZVxcYi87XG5jb25zdCBDSFJPTUlVTV9ERVZUT09MU19TT0NLRVQgPSAnY2hyb21lX2RldnRvb2xzX3JlbW90ZSc7XG5jb25zdCBDSFJPTUVfUEFDS0FHRV9OQU1FID0gJ2NvbS5hbmRyb2lkLmNocm9tZSc7XG5jb25zdCBLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUyA9IFtcbiAgQ0hST01FX1BBQ0tBR0VfTkFNRSxcbiAgJ2NvbS5jaHJvbWUuYmV0YScsXG4gICdjb20uY2hyb21lLmRldicsXG4gICdjb20uY2hyb21lLmNhbmFyeScsXG5dO1xuY29uc3QgREVWVE9PTFNfUE9SVFNfUkFOR0UgPSBbMTA5MDAsIDExMDAwXTtcbmNvbnN0IFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUgPSBuZXcgTFJVKHtcbiAgbWF4OiAxMDAsXG4gIHVwZGF0ZUFnZU9uR2V0OiB0cnVlLFxufSk7XG5jb25zdCBDRFBfUkVRX1RJTUVPVVQgPSAyMDAwOyAvLyBtc1xuY29uc3QgREVWVE9PTFNfUE9SVF9BTExPQ0FUSU9OX0dVQVJEID0gdXRpbC5nZXRMb2NrRmlsZUd1YXJkKFxuICBwYXRoLnJlc29sdmUob3MudG1wZGlyKCksICdhbmRyb2lkX2RldnRvb2xzX3BvcnRfZ3VhcmQnKSxcbiAge3RpbWVvdXQ6IDcsIHRyeVJlY292ZXJ5OiB0cnVlfVxuKTtcblxuY29uc3QgaGVscGVycyA9IHt9O1xuXG5mdW5jdGlvbiB0b0RldGFpbHNDYWNoZUtleSAoYWRiLCB3ZWJ2aWV3KSB7XG4gIHJldHVybiBgJHthZGI/LmN1ckRldmljZUlkfToke3dlYnZpZXd9YDtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGdldHMgYSBsaXN0IG9mIGFuZHJvaWQgc3lzdGVtIHByb2Nlc3NlcyBhbmQgcmV0dXJucyBvbmVzXG4gKiB0aGF0IGxvb2sgbGlrZSB3ZWJ2aWV3c1xuICogU2VlIGh0dHBzOi8vY3MuY2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy9jaHJvbWUvYnJvd3Nlci9kZXZ0b29scy9kZXZpY2UvYW5kcm9pZF9kZXZpY2VfaW5mb19xdWVyeS5jY1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBhZGIgLSBhbiBBREIgaW5zdGFuY2VcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0gLSBhIGxpc3Qgb2YgbWF0Y2hpbmcgd2VidmlldyBzb2NrZXQgbmFtZXMgKGluY2x1ZGluZyB0aGUgbGVhZGluZyAnQCcpXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldFBvdGVudGlhbFdlYnZpZXdQcm9jcyAoYWRiKSB7XG4gIGNvbnN0IG91dCA9IGF3YWl0IGFkYi5zaGVsbChbJ2NhdCcsICcvcHJvYy9uZXQvdW5peCddKTtcbiAgY29uc3QgbmFtZXMgPSBbXTtcbiAgY29uc3QgYWxsTWF0Y2hlcyA9IFtdO1xuICBmb3IgKGNvbnN0IGxpbmUgb2Ygb3V0LnNwbGl0KCdcXG4nKSkge1xuICAgIC8vIE51bSBSZWZDb3VudCBQcm90b2NvbCBGbGFncyBUeXBlIFN0IElub2RlIFBhdGhcbiAgICBjb25zdCBbLCwsIGZsYWdzLCwgc3QsLCBzb2NrUGF0aF0gPSBsaW5lLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuICAgIGlmICghc29ja1BhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoc29ja1BhdGguc3RhcnRzV2l0aCgnQCcpKSB7XG4gICAgICBhbGxNYXRjaGVzLnB1c2gobGluZS50cmltKCkpO1xuICAgIH1cbiAgICBpZiAoZmxhZ3MgIT09ICcwMDAxMDAwMCcgfHwgc3QgIT09ICcwMScpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoIURFVlRPT0xTX1NPQ0tFVF9QQVRURVJOLnRlc3Qoc29ja1BhdGgpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBuYW1lcy5wdXNoKHNvY2tQYXRoKTtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KG5hbWVzKSkge1xuICAgIGxvZ2dlci5kZWJ1ZygnRm91bmQgbm8gYWN0aXZlIGRldnRvb2xzIHNvY2tldHMnKTtcbiAgICBpZiAoIV8uaXNFbXB0eShhbGxNYXRjaGVzKSkge1xuICAgICAgbG9nZ2VyLmRlYnVnKGBPdGhlciBzb2NrZXRzIGFyZTogJHtKU09OLnN0cmluZ2lmeShhbGxNYXRjaGVzLCBudWxsLCAyKX1gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBQYXJzZWQgJHtuYW1lcy5sZW5ndGh9IGFjdGl2ZSBkZXZ0b29scyAke3V0aWwucGx1cmFsaXplKCdzb2NrZXQnLCBuYW1lcy5sZW5ndGgsIGZhbHNlKX06IGAgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkobmFtZXMpKTtcbiAgfVxuICAvLyBzb21ldGltZXMgdGhlIHdlYnZpZXcgcHJvY2VzcyBzaG93cyB1cCBtdWx0aXBsZSB0aW1lcyBwZXIgYXBwXG4gIHJldHVybiBfLnVuaXEobmFtZXMpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYnZpZXdQcm9jXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvYyAtIFRoZSB3ZWJ2aWV3IHByb2Nlc3MgbmFtZSAoYXMgcmV0dXJuZWQgYnlcbiAqIGdldFBvdGVudGlhbFdlYnZpZXdQcm9jc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgLSBUaGUgYWN0dWFsIHdlYnZpZXcgY29udGV4dCBuYW1lXG4gKi9cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZXRyaWV2ZXMgYSBsaXN0IG9mIHN5c3RlbSBwcm9jZXNzZXMgdGhhdCBsb29rIGxpa2Ugd2Vidmlld3MsXG4gKiBhbmQgcmV0dXJucyB0aGVtIGFsb25nIHdpdGggdGhlIHdlYnZpZXcgY29udGV4dCBuYW1lIGFwcHJvcHJpYXRlIGZvciBpdC5cbiAqIElmIHdlIHBhc3MgaW4gYSBkZXZpY2VTb2NrZXQsIHdlIG9ubHkgYXR0ZW1wdCB0byBmaW5kIHdlYnZpZXdzIHdoaWNoIG1hdGNoXG4gKiB0aGF0IHNvY2tldCBuYW1lICh0aGlzIGlzIGZvciBhcHBzIHdoaWNoIGVtYmVkIENocm9taXVtLCB3aGljaCBpc24ndCB0aGVcbiAqIHNhbWUgYXMgY2hyb21lLWJhY2tlZCB3ZWJ2aWV3cykuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHs/c3RyaW5nfSBkZXZpY2VTb2NrZXQgLSB0aGUgZXhwbGljdGx5LW5hbWVkIGRldmljZSBzb2NrZXQgdG8gdXNlXG4gKlxuICogQHJldHVybiB7QXJyYXkuPFdlYnZpZXdQcm9jPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gd2Vidmlld3NGcm9tUHJvY3MgKGFkYiwgZGV2aWNlU29ja2V0ID0gbnVsbCkge1xuICBjb25zdCBzb2NrZXROYW1lcyA9IGF3YWl0IGdldFBvdGVudGlhbFdlYnZpZXdQcm9jcyhhZGIpO1xuICBjb25zdCB3ZWJ2aWV3cyA9IFtdO1xuICBmb3IgKGNvbnN0IHNvY2tldE5hbWUgb2Ygc29ja2V0TmFtZXMpIHtcbiAgICBpZiAoZGV2aWNlU29ja2V0ID09PSBDSFJPTUlVTV9ERVZUT09MU19TT0NLRVQgJiYgc29ja2V0TmFtZSA9PT0gYEAke2RldmljZVNvY2tldH1gKSB7XG4gICAgICB3ZWJ2aWV3cy5wdXNoKHtcbiAgICAgICAgcHJvYzogc29ja2V0TmFtZSxcbiAgICAgICAgd2VidmlldzogQ0hST01JVU1fV0lOLFxuICAgICAgfSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzb2NrZXROYW1lTWF0Y2ggPSBERVZUT09MU19TT0NLRVRfUEFUVEVSTi5leGVjKHNvY2tldE5hbWUpO1xuICAgIGlmICghc29ja2V0TmFtZU1hdGNoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgY3Jvc3N3YWxrTWF0Y2ggPSBDUk9TU1dBTEtfU09DS0VUX1BBVFRFUk4uZXhlYyhzb2NrZXROYW1lKTtcbiAgICBpZiAoIXNvY2tldE5hbWVNYXRjaFsxXSAmJiAhY3Jvc3N3YWxrTWF0Y2gpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChkZXZpY2VTb2NrZXQgJiYgc29ja2V0TmFtZSA9PT0gYEAke2RldmljZVNvY2tldH1gIHx8ICFkZXZpY2VTb2NrZXQpIHtcbiAgICAgIHdlYnZpZXdzLnB1c2goe1xuICAgICAgICBwcm9jOiBzb2NrZXROYW1lLFxuICAgICAgICB3ZWJ2aWV3OiBzb2NrZXROYW1lTWF0Y2hbMV1cbiAgICAgICAgICA/IGAke1dFQlZJRVdfQkFTRX0ke3NvY2tldE5hbWVNYXRjaFsxXX1gXG4gICAgICAgICAgOiBgJHtXRUJWSUVXX0JBU0V9JHtjcm9zc3dhbGtNYXRjaFsxXX1gLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB3ZWJ2aWV3cztcbn1cblxuLyoqXG4gKiBBbGxvY2F0ZXMgYSBsb2NhbCBwb3J0IGZvciBkZXZ0b29scyBjb21tdW5pY2F0aW9uXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBzb2NrZXROYW1lIFRoZSByZW1vdGUgVW5peCBzb2NrZXQgbmFtZVxuICogQHBhcmFtIHs/bnVtYmVyfSB3ZWJ2aWV3RGV2dG9vbHNQb3J0IFRoZSBsb2NhbCBwb3J0IG51bWJlciBvciBudWxsIHRvIGFwcGx5XG4gKiBhdXRvZGV0ZWN0aW9uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBUaGUgbG9jYWwgcG9ydCBudW1iZXIgaWYgdGhlIHJlbW90ZSBzb2NrZXQgaGFzIGJlZW4gZm9yd2FyZGVkXG4gKiBzdWNjZXNzZnVsbHkgb3IgYG51bGxgIG90aGVyd2lzZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBhbGxvY2F0aW5nIHRoZSBsb2NhbCBwb3J0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGFsbG9jYXRlRGV2dG9vbHNQb3J0IChhZGIsIHNvY2tldE5hbWUsIHdlYnZpZXdEZXZ0b29sc1BvcnQgPSBudWxsKSB7XG4gIC8vIHNvY2tldCBuYW1lcyBjb21lIHdpdGggJ0AnLCBidXQgdGhpcyBzaG91bGQgbm90IGJlIGEgcGFydCBvZiB0aGUgYWJzdHJhY3RcbiAgLy8gcmVtb3RlIHBvcnQsIHNvIHJlbW92ZSBpdFxuICBjb25zdCByZW1vdGVQb3J0ID0gc29ja2V0TmFtZS5yZXBsYWNlKC9eQC8sICcnKTtcbiAgbGV0IFtzdGFydFBvcnQsIGVuZFBvcnRdID0gREVWVE9PTFNfUE9SVFNfUkFOR0U7XG4gIGlmICh3ZWJ2aWV3RGV2dG9vbHNQb3J0KSB7XG4gICAgZW5kUG9ydCA9IHdlYnZpZXdEZXZ0b29sc1BvcnQgKyAoZW5kUG9ydCAtIHN0YXJ0UG9ydCk7XG4gICAgc3RhcnRQb3J0ID0gd2Vidmlld0RldnRvb2xzUG9ydDtcbiAgfVxuICBsb2dnZXIuZGVidWcoYEZvcndhcmRpbmcgcmVtb3RlIHBvcnQgJHtyZW1vdGVQb3J0fSB0byBhIGxvY2FsIGAgK1xuICAgIGBwb3J0IGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fWApO1xuICBpZiAoIXdlYnZpZXdEZXZ0b29sc1BvcnQpIHtcbiAgICBsb2dnZXIuZGVidWcoYFlvdSBjb3VsZCB1c2UgdGhlICd3ZWJ2aWV3RGV2dG9vbHNQb3J0JyBjYXBhYmlsaXR5IHRvIGN1c3RvbWl6ZSBgICtcbiAgICAgIGB0aGUgc3RhcnRpbmcgcG9ydCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgREVWVE9PTFNfUE9SVF9BTExPQ0FUSU9OX0dVQVJEKGFzeW5jICgpID0+IHtcbiAgICBsZXQgbG9jYWxQb3J0O1xuICAgIHRyeSB7XG4gICAgICBsb2NhbFBvcnQgPSBhd2FpdCBmaW5kQVBvcnROb3RJblVzZShzdGFydFBvcnQsIGVuZFBvcnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCB0byBmb3J3YXJkIHRoZSBEZXZ0b29scyBzb2NrZXQgYCArXG4gICAgICAgIGBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH0uIFlvdSBjb3VsZCBzZXQgdGhlIHN0YXJ0aW5nIHBvcnQgbnVtYmVyIGAgK1xuICAgICAgICBgbWFudWFsbHkgYnkgcHJvdmlkaW5nIHRoZSAnd2Vidmlld0RldnRvb2xzUG9ydCcgY2FwYWJpbGl0eWApO1xuICAgIH1cbiAgICBhd2FpdCBhZGIuYWRiRXhlYyhbJ2ZvcndhcmQnLCBgdGNwOiR7bG9jYWxQb3J0fWAsIGBsb2NhbGFic3RyYWN0OiR7cmVtb3RlUG9ydH1gXSk7XG4gICAgcmV0dXJuIGxvY2FsUG9ydDtcbiAgfSk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvYyBUaGUgbmFtZSBvZiB0aGUgRGV2dG9vbHMgVW5peCBzb2NrZXRcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWJ2aWV3IFRoZSB3ZWIgdmlldyBhbGlhcy4gTG9va3MgbGlrZSBgV0VCVklFV19gXG4gKiBwcmVmaXggcGx1cyBQSUQgb3IgcGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGluZm8gV2VidmlldyBpbmZvcm1hdGlvbiBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL3ZlcnNpb24gQ0RQIGVuZHBvaW50XG4gKiBAcHJvcGVydHkgez9BcnJheTxPYmplY3Q+fSBwYWdlcyBXZWJ2aWV3IHBhZ2VzIGxpc3QgYXMgaXQgaXMgcmV0cmlldmVkIGJ5XG4gKiAvanNvbi9saXN0IENEUCBlbmRwb2ludFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV0YWlsQ29sbGVjdGlvbk9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHdlYnZpZXdEZXZ0b29sc1BvcnQgVGhlIHN0YXJ0aW5nIHBvcnQgdG8gdXNlIGZvciB3ZWJ2aWV3IHBhZ2VcbiAqIHByZXNlbmNlIGNoZWNrIChpZiBub3QgdGhlIGRlZmF1bHQgb2YgOTIyMikuXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyBXaGV0aGVyIHRvIGNoZWNrIGZvciB3ZWJ2aWV3XG4gKiBwYWdlcyBwcmVzZW5jZVxuICogQHByb3BlcnR5IHtib29sZWFufSBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24gV2hldGhlciB0byBjb2xsZWN0XG4gKiB3ZWIgdmlldyBkZXRhaWxzIGFuZCBzZW5kIHRoZW0gdG8gQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yLCBzbyBpdCBjb3VsZFxuICogc2VsZWN0IGEgYmluYXJ5IG1vcmUgcHJlY2lzZWx5IGJhc2VkIG9uIHRoaXMgaW5mby5cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYSB3cmFwcGVyIGZvciBDaHJvbWUgRGVidWdnZXIgUHJvdG9jb2wgZGF0YSBjb2xsZWN0aW9uLlxuICogTm8gZXJyb3IgaXMgdGhyb3duIGlmIENEUCByZXF1ZXN0IGZhaWxzIC0gaW4gc3VjaCBjYXNlIG5vIGRhdGEgd2lsbCBiZVxuICogcmVjb3JkZWQgaW50byB0aGUgY29ycmVzcG9uZGluZyBgd2Vidmlld3NNYXBwaW5nYCBpdGVtLlxuICpcbiAqIEBwYXJhbSB7QURCfSBhZGIgVGhlIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtBcnJheTxXZWJ2aWV3UHJvcHM+fSB3ZWJ2aWV3c01hcHBpbmcgVGhlIGN1cnJlbnQgd2Vidmlld3MgbWFwcGluZ1xuICogISEhIEVhY2ggaXRlbSBvZiB0aGlzIGFycmF5IGdldHMgbXV0YXRlZCAoYGluZm9gL2BwYWdlc2AgcHJvcGVydGllcyBnZXQgYWRkZWRcbiAqIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBgb3B0c2ApIGlmIHRoZSByZXF1ZXN0ZWQgZGV0YWlscyBoYXZlIGJlZW5cbiAqIHN1Y2Nlc3NmdWxseSByZXRyaWV2ZWQgZm9yIGl0ICEhIVxuICogQHBhcmFtIHtEZXRhaWxDb2xsZWN0aW9uT3B0aW9uc30gb3B0cyBJZiBib3RoIGBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlc2AgYW5kXG4gKiBgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uYCBwcm9wZXJ0aWVzIGFyZSBmYWxzeSB0aGVuIG5vIGRldGFpbHMgY29sbGVjdGlvblxuICogaXMgcGVyZm9ybWVkXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RXZWJ2aWV3c0RldGFpbHMgKGFkYiwgd2Vidmlld3NNYXBwaW5nLCBvcHRzID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eSh3ZWJ2aWV3c01hcHBpbmcpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQgPSBudWxsLFxuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzID0gbnVsbCxcbiAgICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24gPSBudWxsLFxuICB9ID0gb3B0cztcblxuICBpZiAoIWVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzKSB7XG4gICAgbG9nZ2VyLmluZm8oYE5vdCBjaGVja2luZyB3aGV0aGVyIHdlYnZpZXdzIGhhdmUgYWN0aXZlIHBhZ2VzOyB1c2UgdGhlIGAgK1xuICAgICAgYCdlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcycgY2FwIHRvIHR1cm4gdGhpcyBjaGVjayBvbmApO1xuICB9XG5cbiAgaWYgKCFlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICBsb2dnZXIuaW5mbyhgTm90IGNvbGxlY3Rpbmcgd2ViIHZpZXcgZGV0YWlscy4gRGV0YWlscyBjb2xsZWN0aW9uIG1pZ2h0IGhlbHAgYCArXG4gICAgICBgdG8gbWFrZSBDaHJvbWVkcml2ZXIgaW5pdGlhbGl6YXRpb24gbW9yZSBwcmVjaXNlLiBVc2UgdGhlICdlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24nIGAgK1xuICAgICAgYGNhcCB0byB0dXJuIGl0IG9uYCk7XG4gIH1cblxuICBpZiAoIWVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzICYmICFlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBDb25uZWN0IHRvIGVhY2ggZGV2dG9vbHMgc29ja2V0IGFuZCByZXRyaWV2ZSB3ZWIgdmlldyBkZXRhaWxzXG4gIGxvZ2dlci5kZWJ1ZyhgQ29sbGVjdGluZyBDRFAgZGF0YSBvZiAke3V0aWwucGx1cmFsaXplKCd3ZWJ2aWV3Jywgd2Vidmlld3NNYXBwaW5nLmxlbmd0aCwgdHJ1ZSl9YCk7XG4gIGNvbnN0IGRldGFpbENvbGxlY3RvcnMgPSBbXTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIHdlYnZpZXdzTWFwcGluZykge1xuICAgIGRldGFpbENvbGxlY3RvcnMucHVzaCgoYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGxvY2FsUG9ydDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxvY2FsUG9ydCA9IGF3YWl0IGFsbG9jYXRlRGV2dG9vbHNQb3J0KGFkYiwgaXRlbS5wcm9jLCB3ZWJ2aWV3RGV2dG9vbHNQb3J0KTtcbiAgICAgICAgaWYgKGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgICAgICAgIGl0ZW0uaW5mbyA9IGF3YWl0IGNkcEluZm8obG9jYWxQb3J0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMpIHtcbiAgICAgICAgICBpdGVtLnBhZ2VzID0gYXdhaXQgY2RwTGlzdChsb2NhbFBvcnQpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZyhlKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChsb2NhbFBvcnQpIHtcbiAgICAgICAgICBhd2FpdCBhZGIucmVtb3ZlUG9ydEZvcndhcmQobG9jYWxQb3J0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pKCkpO1xuICB9XG4gIGF3YWl0IEIuYWxsKGRldGFpbENvbGxlY3RvcnMpO1xuICBsb2dnZXIuZGVidWcoYENEUCBkYXRhIGNvbGxlY3Rpb24gY29tcGxldGVkYCk7XG59XG5cbi8vIGh0dHBzOi8vY2hyb21lZGV2dG9vbHMuZ2l0aHViLmlvL2RldnRvb2xzLXByb3RvY29sL1xuYXN5bmMgZnVuY3Rpb24gY2RwTGlzdCAobG9jYWxQb3J0KSB7XG4gIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgIHVybDogYGh0dHA6Ly8xMjcuMC4wLjE6JHtsb2NhbFBvcnR9L2pzb24vbGlzdGAsXG4gICAgdGltZW91dDogQ0RQX1JFUV9USU1FT1VULFxuICB9KSkuZGF0YTtcbn1cblxuLy8gaHR0cHM6Ly9jaHJvbWVkZXZ0b29scy5naXRodWIuaW8vZGV2dG9vbHMtcHJvdG9jb2wvXG5hc3luYyBmdW5jdGlvbiBjZHBJbmZvIChsb2NhbFBvcnQpIHtcbiAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgdXJsOiBgaHR0cDovLzEyNy4wLjAuMToke2xvY2FsUG9ydH0vanNvbi92ZXJzaW9uYCxcbiAgICB0aW1lb3V0OiBDRFBfUkVRX1RJTUVPVVQsXG4gIH0pKS5kYXRhO1xufVxuXG4vKipcbiAqIFRha2UgYSB3ZWJ2aWV3IG5hbWUgbGlrZSBXRUJWSUVXXzQyOTYgYW5kIHVzZSAnYWRiIHNoZWxsIHBzJyB0byBmaWd1cmUgb3V0XG4gKiB3aGljaCBhcHAgcGFja2FnZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhhdCB3ZWJ2aWV3LiBPbmUgb2YgdGhlIHJlYXNvbnMgd2VcbiAqIHdhbnQgdG8gZG8gdGhpcyBpcyB0byBtYWtlIHN1cmUgd2UncmUgbGlzdGluZyB3ZWJ2aWV3cyBmb3IgdGhlIGFjdHVhbCBBVVQsXG4gKiBub3Qgc29tZSBvdGhlciBydW5uaW5nIGFwcFxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBhZGIgLSBhbiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSB3ZWJ2aWV3IC0gYSB3ZWJ2aWV3IHByb2Nlc3MgbmFtZVxuICpcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwIHJ1bm5pbmcgdGhlIHdlYnZpZXdcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIHJldHJpZXZpbmcgdGhlIHByb2Nlc3MgbmFtZVxuICovXG5oZWxwZXJzLnByb2NGcm9tV2VidmlldyA9IGFzeW5jIGZ1bmN0aW9uIHByb2NGcm9tV2VidmlldyAoYWRiLCB3ZWJ2aWV3KSB7XG4gIGNvbnN0IHBpZE1hdGNoID0gV0VCVklFV19QSURfUEFUVEVSTi5leGVjKHdlYnZpZXcpO1xuICBpZiAoIXBpZE1hdGNoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBQSUQgZm9yIHdlYnZpZXcgJyR7d2Vidmlld30nYCk7XG4gIH1cblxuICBjb25zdCBwaWQgPSBwaWRNYXRjaFsxXTtcbiAgbG9nZ2VyLmRlYnVnKGAke3dlYnZpZXd9IG1hcHBlZCB0byBwaWQgJHtwaWR9YCk7XG4gIGxvZ2dlci5kZWJ1ZyhgR2V0dGluZyBwcm9jZXNzIG5hbWUgZm9yIHdlYnZpZXcgJyR7d2Vidmlld30nYCk7XG4gIGNvbnN0IHBrZyA9IGF3YWl0IGFkYi5nZXROYW1lQnlQaWQocGlkKTtcbiAgbG9nZ2VyLmRlYnVnKGBHb3QgcHJvY2VzcyBuYW1lOiAnJHtwa2d9J2ApO1xuICByZXR1cm4gcGtnO1xufTtcblxuLyoqXG4gKiBQYXJzZSB3ZWJ2aWV3IG5hbWVzIGZvciBnZXRDb250ZXh0c1xuICpcbiAqIEBwYXJhbSB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nIFNlZSBub3RlIG9uIGdldFdlYlZpZXdzTWFwcGluZ1xuICogQHBhcmFtIHtHZXRXZWJ2aWV3c09wdHN9IG9wdHMgU2VlIG5vdGUgb24gZ2V0V2ViVmlld3NNYXBwaW5nXG4gKiBAcmV0dXJuIHtBcnJheS48c3RyaW5nPn0gLSBhIGxpc3Qgb2Ygd2VidmlldyBuYW1lc1xuICovXG5oZWxwZXJzLnBhcnNlV2Vidmlld05hbWVzID0gZnVuY3Rpb24gcGFyc2VXZWJ2aWV3TmFtZXMgKHdlYnZpZXdzTWFwcGluZywge1xuICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyA9IHRydWUsXG4gIGlzQ2hyb21lU2Vzc2lvbiA9IGZhbHNlXG59ID0ge30pIHtcbiAgaWYgKGlzQ2hyb21lU2Vzc2lvbikge1xuICAgIHJldHVybiBbQ0hST01JVU1fV0lOXTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuICBmb3IgKGNvbnN0IHt3ZWJ2aWV3LCBwYWdlcywgcHJvYywgd2Vidmlld05hbWV9IG9mIHdlYnZpZXdzTWFwcGluZykge1xuICAgIGlmIChlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyAmJiBwYWdlcz8ubGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgU2tpcHBpbmcgdGhlIHdlYnZpZXcgJyR7d2Vidmlld30nIGF0ICcke3Byb2N9JyBgICtcbiAgICAgICAgYHNpbmNlIGl0IGhhcyByZXBvcnRlZCBoYXZpbmcgemVybyBwYWdlc2ApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICh3ZWJ2aWV3TmFtZSkge1xuICAgICAgcmVzdWx0LnB1c2god2Vidmlld05hbWUpO1xuICAgIH1cbiAgfVxuICBsb2dnZXIuZGVidWcoYEZvdW5kICR7dXRpbC5wbHVyYWxpemUoJ3dlYnZpZXcnLCByZXN1bHQubGVuZ3RoLCB0cnVlKX06ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX1gKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0V2Vidmlld3NPcHRzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYW5kcm9pZERldmljZVNvY2tldCBbbnVsbF0gLSBkZXZpY2Ugc29ja2V0IG5hbWVcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgW3RydWVdIC0gd2hldGhlciB0byBjaGVjayBmb3Igd2Vidmlld1xuICogcGFnZSBwcmVzZW5jZVxuICogQHByb3BlcnR5IHtudW1iZXJ9IHdlYnZpZXdEZXZ0b29sc1BvcnQgWzkyMjJdIC0gcG9ydCB0byB1c2UgZm9yIHdlYnZpZXcgcGFnZVxuICogcHJlc2VuY2UgY2hlY2suXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBbdHJ1ZV0gLSB3aGV0aGVyIHRvIGNvbGxlY3RcbiAqIHdlYiB2aWV3IGRldGFpbHMgYW5kIHNlbmQgdGhlbSB0byBDaHJvbWVkcml2ZXIgY29uc3RydWN0b3IsIHNvIGl0IGNvdWxkXG4gKiBzZWxlY3QgYSBiaW5hcnkgbW9yZSBwcmVjaXNlbHkgYmFzZWQgb24gdGhpcyBpbmZvLlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2Vidmlld3NNYXBwaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gcHJvYyBTZWUgbm90ZSBvbiBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWJ2aWV3IFNlZSBub3RlIG9uIFdlYnZpZXdQcm9wc1xuICogQHByb3BlcnR5IHs/T2JqZWN0fSBpbmZvIFNlZSBub3RlIG9uIFdlYnZpZXdQcm9wc1xuICogQHByb3BlcnR5IHs/QXJyYXk8T2JqZWN0Pn0gcGFnZXMgU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVyeSB7P3N0cmluZ30gd2Vidmlld05hbWUgQW4gYWN0dWFsIHdlYnZpZXcgbmFtZSBmb3Igc3dpdGNoaW5nIGNvbnRleHRcbiAqL1xuXG4vKipcbiAqIEdldCBhIGxpc3Qgb2YgYXZhaWxhYmxlIHdlYnZpZXdzIG1hcHBpbmcgYnkgaW50cm9zcGVjdGluZyBwcm9jZXNzZXMgd2l0aCBhZGIsXG4gKiB3aGVyZSB3ZWJ2aWV3cyBhcmUgbGlzdGVkLiBJdCdzIHBvc3NpYmxlIHRvIHBhc3MgaW4gYSAnZGV2aWNlU29ja2V0JyBhcmcsIHdoaWNoXG4gKiBsaW1pdHMgdGhlIHdlYnZpZXcgcG9zc2liaWxpdGllcyB0byB0aGUgb25lIHJ1bm5pbmcgb24gdGhlIENocm9taXVtIGRldnRvb2xzXG4gKiBzb2NrZXQgd2UncmUgaW50ZXJlc3RlZCBpbiAoc2VlIG5vdGUgb24gd2Vidmlld3NGcm9tUHJvY3MpLiBXZSBjYW4gYWxzb1xuICogZGlyZWN0IHRoaXMgbWV0aG9kIHRvIHZlcmlmeSB3aGV0aGVyIGEgcGFydGljdWxhciB3ZWJ2aWV3IHByb2Nlc3MgYWN0dWFsbHlcbiAqIGhhcyBhbnkgcGFnZXMgKGlmIGEgcHJvY2VzcyBleGlzdHMgYnV0IG5vIHBhZ2VzIGFyZSBmb3VuZCwgQ2hyb21lZHJpdmVyIHdpbGxcbiAqIG5vdCBhY3R1YWxseSBiZSBhYmxlIHRvIGNvbm5lY3QgdG8gaXQsIHNvIHRoaXMgc2VydmVzIGFzIGEgZ3VhcmQgZm9yIHRoYXRcbiAqIHN0cmFuZ2UgZmFpbHVyZSBtb2RlKS4gVGhlIHN0cmF0ZWd5IGZvciBjaGVja2luZyB3aGV0aGVyIGFueSBwYWdlcyBhcmVcbiAqIGFjdGl2ZSBpbnZvbHZlcyBzZW5kaW5nIGEgcmVxdWVzdCB0byB0aGUgcmVtb3RlIGRlYnVnIHNlcnZlciBvbiB0aGUgZGV2aWNlLFxuICogaGVuY2UgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHRoZSBwb3J0IG9uIHRoZSBob3N0IG1hY2hpbmUgd2hpY2hcbiAqIHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIGNvbW11bmljYXRpb24uXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtHZXRXZWJ2aWV3c09wdHN9IG9wdHNcbiAqXG4gKiBAcmV0dXJuIHtBcnJheTxXZWJ2aWV3c01hcHBpbmc+fSB3ZWJ2aWV3c01hcHBpbmdcbiAqL1xuaGVscGVycy5nZXRXZWJWaWV3c01hcHBpbmcgPSBhc3luYyBmdW5jdGlvbiBnZXRXZWJWaWV3c01hcHBpbmcgKGFkYiwge1xuICBhbmRyb2lkRGV2aWNlU29ja2V0ID0gbnVsbCxcbiAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgPSB0cnVlLFxuICB3ZWJ2aWV3RGV2dG9vbHNQb3J0ID0gbnVsbCxcbiAgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uID0gdHJ1ZVxufSA9IHt9KSB7XG4gIGxvZ2dlci5kZWJ1ZygnR2V0dGluZyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHdlYnZpZXdzJyk7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdzRnJvbVByb2NzKGFkYiwgYW5kcm9pZERldmljZVNvY2tldCk7XG5cbiAgYXdhaXQgY29sbGVjdFdlYnZpZXdzRGV0YWlscyhhZGIsIHdlYnZpZXdzTWFwcGluZywge1xuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzLFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbixcbiAgICB3ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICB9KTtcblxuICBmb3IgKGNvbnN0IHdlYnZpZXdNYXBwaW5nIG9mIHdlYnZpZXdzTWFwcGluZykge1xuICAgIGNvbnN0IHt3ZWJ2aWV3LCBpbmZvfSA9IHdlYnZpZXdNYXBwaW5nO1xuICAgIHdlYnZpZXdNYXBwaW5nLndlYnZpZXdOYW1lID0gbnVsbDtcblxuICAgIGxldCB3dk5hbWUgPSB3ZWJ2aWV3O1xuICAgIGxldCBwcm9jZXNzID0gdW5kZWZpbmVkO1xuICAgIGlmICghYW5kcm9pZERldmljZVNvY2tldCkge1xuICAgICAgY29uc3QgcGtnTWF0Y2ggPSBXRUJWSUVXX1BLR19QQVRURVJOLmV4ZWMod2Vidmlldyk7XG4gICAgICB0cnkge1xuICAgICAgICAvLyB3ZWIgdmlldyBuYW1lIGNvdWxkIGVpdGhlciBiZSBzdWZmaXhlZCB3aXRoIFBJRCBvciB0aGUgcGFja2FnZSBuYW1lXG4gICAgICAgIC8vIHBhY2thZ2UgbmFtZXMgY291bGQgbm90IHN0YXJ0IHdpdGggYSBkaWdpdFxuICAgICAgICBjb25zdCBwa2cgPSBwa2dNYXRjaCA/IHBrZ01hdGNoWzFdIDogYXdhaXQgaGVscGVycy5wcm9jRnJvbVdlYnZpZXcoYWRiLCB3ZWJ2aWV3KTtcbiAgICAgICAgd3ZOYW1lID0gYCR7V0VCVklFV19CQVNFfSR7cGtnfWA7XG4gICAgICAgIGNvbnN0IHBpZE1hdGNoID0gV0VCVklFV19QSURfUEFUVEVSTi5leGVjKHdlYnZpZXcpO1xuICAgICAgICBwcm9jZXNzID0ge1xuICAgICAgICAgIG5hbWU6IHBrZyxcbiAgICAgICAgICBpZDogcGlkTWF0Y2ggPyBwaWRNYXRjaFsxXSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUubWVzc2FnZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHdlYnZpZXdNYXBwaW5nLndlYnZpZXdOYW1lID0gd3ZOYW1lO1xuICAgIGNvbnN0IGtleSA9IHRvRGV0YWlsc0NhY2hlS2V5KGFkYiwgd3ZOYW1lKTtcbiAgICBpZiAoaW5mbyB8fCBwcm9jZXNzKSB7XG4gICAgICBXRUJWSUVXU19ERVRBSUxTX0NBQ0hFLnNldChrZXksIHsgaW5mbywgcHJvY2VzcyB9KTtcbiAgICB9IGVsc2UgaWYgKFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuaGFzKGtleSkpIHtcbiAgICAgIFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuZGVsKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB3ZWJ2aWV3c01hcHBpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByb2Nlc3NJbmZvXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSBUaGUgcHJvY2VzcyBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkIFRoZSBwcm9jZXNzIGlkIChpZiBjb3VsZCBiZSByZXRyaWV2ZWQpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJWaWV3RGV0YWlsc1xuICogQHByb3BlcnR5IHs/UHJvY2Vzc0luZm99IHByb2Nlc3MgLSBXZWIgdmlldyBwcm9jZXNzIGRldGFpbHNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBpbmZvIC0gV2ViIHZpZXcgZGV0YWlscyBhcyByZXR1cm5lZCBieSAvanNvbi92ZXJzaW9uIENEUCBlbmRwb2ludCwgZm9yIGV4YW1wbGU6XG4gKiB7XG4gKiAgXCJCcm93c2VyXCI6IFwiQ2hyb21lLzcyLjAuMzYwMS4wXCIsXG4gKiAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTNfNikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcyLjAuMzYwMS4wIFNhZmFyaS81MzcuMzZcIixcbiAqICBcIlY4LVZlcnNpb25cIjogXCI3LjIuMjMzXCIsXG4gKiAgXCJXZWJLaXQtVmVyc2lvblwiOiBcIjUzNy4zNiAoQGNmZWRlOWRiMWQxNTRkZTA0NjhjYjA1Mzg0NzlmMzRjMDc1NWEwZjQpXCIsXG4gKiAgXCJ3ZWJTb2NrZXREZWJ1Z2dlclVybFwiOiBcIndzOi8vbG9jYWxob3N0OjkyMjIvZGV2dG9vbHMvYnJvd3Nlci9iMGI4YTRmYi1iYjE3LTQzNTktOTUzMy1hOGQ5ZjM5MDhiZDhcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHdlYiB2aWV3IGRldGFpbHMgcHJldmlvdXNseSBjYWNoZWQgYnkgYGdldFdlYnZpZXdzYCBjYWxsXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSB3ZWJ2aWV3IFRoZSBuYW1lIG9mIHRoZSB3ZWIgdmlld1xuICogQHJldHVybnMgez9XZWJWaWV3RGV0YWlsc30gRWl0aGVyIGB1bmRlZmluZWRgIG9yIHRoZSByZWNlbnQgd2ViIHZpZXcgZGV0YWlsc1xuICovXG5oZWxwZXJzLmdldFdlYnZpZXdEZXRhaWxzID0gZnVuY3Rpb24gZ2V0V2Vidmlld0RldGFpbHMgKGFkYiwgd2Vidmlldykge1xuICBjb25zdCBrZXkgPSB0b0RldGFpbHNDYWNoZUtleShhZGIsIHdlYnZpZXcpO1xuICByZXR1cm4gV0VCVklFV1NfREVUQUlMU19DQUNIRS5nZXQoa2V5KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIENocm9tZSBkcml2ZXIgY2FwYWJpbGl0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZFxuICogQXBwaXVtIGNhcGFiaWxpdGllc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIFVzZXItcHJvdmlkZWQgY2FwYWJpbGl0aWVzIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IGRldmljZUlkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBBbmRyb2lkIGRldmljZSB1bmRlciB0ZXN0XG4gKiBAcGFyYW0gez9XZWJWaWV3RGV0YWlsc30gd2ViVmlld0RldGFpbHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBjYXBhYmlsaXRpZXMgb2JqZWN0LlxuICogU2VlIGh0dHBzOi8vY2hyb21lZHJpdmVyLmNocm9taXVtLm9yZy9jYXBhYmlsaXRpZXMgZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuaGVscGVycy5jcmVhdGVDaHJvbWVkcml2ZXJDYXBzID0gZnVuY3Rpb24gY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyAob3B0cywgZGV2aWNlSWQsIHdlYlZpZXdEZXRhaWxzKSB7XG4gIGNvbnN0IGNhcHMgPSB7IGNocm9tZU9wdGlvbnM6IHt9IH07XG5cbiAgY29uc3QgYW5kcm9pZFBhY2thZ2UgPSBvcHRzLmNocm9tZU9wdGlvbnM/LmFuZHJvaWRQYWNrYWdlXG4gICAgfHwgb3B0cy5hcHBQYWNrYWdlXG4gICAgfHwgd2ViVmlld0RldGFpbHM/LmluZm8/LlsnQW5kcm9pZC1QYWNrYWdlJ107XG4gIGlmIChhbmRyb2lkUGFja2FnZSkge1xuICAgIC8vIGNocm9tZWRyaXZlciByYWlzZXMgYW4gaW52YWxpZCBhcmd1bWVudCBlcnJvciB3aGVuIGFuZHJvaWRQYWNrYWdlIGlzICdudWxsJ1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlO1xuICB9XG4gIGlmIChfLmlzQm9vbGVhbihvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHApKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRVc2VSdW5uaW5nQXBwID0gb3B0cy5jaHJvbWVVc2VSdW5uaW5nQXBwO1xuICB9XG4gIGlmIChvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZTtcbiAgfVxuICBpZiAob3B0cy5jaHJvbWVBbmRyb2lkQWN0aXZpdHkpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZEFjdGl2aXR5ID0gb3B0cy5jaHJvbWVBbmRyb2lkQWN0aXZpdHk7XG4gIH1cbiAgaWYgKG9wdHMuY2hyb21lQW5kcm9pZFByb2Nlc3MpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFByb2Nlc3MgPSBvcHRzLmNocm9tZUFuZHJvaWRQcm9jZXNzO1xuICB9IGVsc2UgaWYgKHdlYlZpZXdEZXRhaWxzPy5wcm9jZXNzPy5uYW1lICYmIHdlYlZpZXdEZXRhaWxzPy5wcm9jZXNzPy5pZCkge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcyA9IHdlYlZpZXdEZXRhaWxzLnByb2Nlc3MubmFtZTtcbiAgfVxuICBpZiAoXy50b0xvd2VyKG9wdHMuYnJvd3Nlck5hbWUpID09PSAnY2hyb21pdW0td2VidmlldycpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZEFjdGl2aXR5ID0gb3B0cy5hcHBBY3Rpdml0eTtcbiAgfVxuICBpZiAob3B0cy5wYWdlTG9hZFN0cmF0ZWd5KSB7XG4gICAgY2Fwcy5wYWdlTG9hZFN0cmF0ZWd5ID0gb3B0cy5wYWdlTG9hZFN0cmF0ZWd5O1xuICB9XG4gIGNvbnN0IGlzQ2hyb21lID0gXy50b0xvd2VyKGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZSkgPT09ICdjaHJvbWUnO1xuICBpZiAoXy5pbmNsdWRlcyhLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUywgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlKSB8fCBpc0Nocm9tZSkge1xuICAgIC8vIGlmIHdlIGhhdmUgZXh0cmFjdGVkIHBhY2thZ2UgZnJvbSBjb250ZXh0IG5hbWUsIGl0IGNvdWxkIGNvbWUgaW4gYXMgYmFyZVxuICAgIC8vIFwiY2hyb21lXCIsIGFuZCBzbyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoZSBkZXRhaWxzIGFyZSBjb3JyZWN0LCBpbmNsdWRpbmdcbiAgICAvLyBub3QgdXNpbmcgYW4gYWN0aXZpdHkgb3IgcHJvY2VzcyBpZFxuICAgIGlmIChpc0Nocm9tZSkge1xuICAgICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gQ0hST01FX1BBQ0tBR0VfTkFNRTtcbiAgICB9XG4gICAgZGVsZXRlIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHk7XG4gICAgZGVsZXRlIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcztcbiAgfVxuICAvLyBhZGQgZGV2aWNlIGlkIGZyb20gYWRiXG4gIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkRGV2aWNlU2VyaWFsID0gZGV2aWNlSWQ7XG5cbiAgaWYgKF8uaXNQbGFpbk9iamVjdChvcHRzLmxvZ2dpbmdQcmVmcykgfHwgXy5pc1BsYWluT2JqZWN0KG9wdHMuY2hyb21lTG9nZ2luZ1ByZWZzKSkge1xuICAgIGlmIChvcHRzLmxvZ2dpbmdQcmVmcykge1xuICAgICAgbG9nZ2VyLndhcm4oYFRoZSAnbG9nZ2luZ1ByZWZzJyBjYXAgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSAnY2hyb21lTG9nZ2luZ1ByZWZzJyBjYXAgaW5zdGVhZGApO1xuICAgIH1cbiAgICBjYXBzLmxvZ2dpbmdQcmVmcyA9IG9wdHMuY2hyb21lTG9nZ2luZ1ByZWZzIHx8IG9wdHMubG9nZ2luZ1ByZWZzO1xuICB9XG4gIGlmIChvcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZykge1xuICAgIGxvZ2dlci53YXJuKGBUaGUgJ2VuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZycgY2FwIGlzIGRlcHJlY2F0ZWQ7IHNpbXBseSB1c2UgYCArXG4gICAgICBgdGhlICdjaHJvbWVMb2dnaW5nUHJlZnMnIGNhcCBpbnN0ZWFkLCB3aXRoIGEgJ3BlcmZvcm1hbmNlJyBrZXkgc2V0IHRvICdBTEwnYCk7XG4gICAgY29uc3QgbmV3UHJlZiA9IHtwZXJmb3JtYW5jZTogJ0FMTCd9O1xuICAgIC8vIGRvbid0IG92ZXJ3cml0ZSBvdGhlciBsb2dnaW5nIHByZWZzIHRoYXQgaGF2ZSBiZWVuIHNlbnQgaW4gaWYgdGhleSBleGlzdFxuICAgIGNhcHMubG9nZ2luZ1ByZWZzID0gY2Fwcy5sb2dnaW5nUHJlZnNcbiAgICAgID8gT2JqZWN0LmFzc2lnbih7fSwgY2Fwcy5sb2dnaW5nUHJlZnMsIG5ld1ByZWYpXG4gICAgICA6IG5ld1ByZWY7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVPcHRpb25zPy5Bcmd1bWVudHMpIHtcbiAgICAvLyBtZXJnZSBgQXJndW1lbnRzYCBhbmQgYGFyZ3NgXG4gICAgb3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MgPSBbLi4uKG9wdHMuY2hyb21lT3B0aW9ucy5hcmdzIHx8IFtdKSwgLi4ub3B0cy5jaHJvbWVPcHRpb25zLkFyZ3VtZW50c107XG4gICAgZGVsZXRlIG9wdHMuY2hyb21lT3B0aW9ucy5Bcmd1bWVudHM7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoJ1ByZWNhbGN1bGF0ZWQgQ2hyb21lZHJpdmVyIGNhcGFiaWxpdGllczogJyArXG4gICAgSlNPTi5zdHJpbmdpZnkoY2Fwcy5jaHJvbWVPcHRpb25zLCBudWxsLCAyKSk7XG5cbiAgY29uc3QgcHJvdGVjdGVkQ2FwTmFtZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbb3B0LCB2YWxdIG9mIF8udG9QYWlycyhvcHRzLmNocm9tZU9wdGlvbnMpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY2Fwcy5jaHJvbWVPcHRpb25zW29wdF0pKSB7XG4gICAgICBjYXBzLmNocm9tZU9wdGlvbnNbb3B0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdGVjdGVkQ2FwTmFtZXMucHVzaChvcHQpO1xuICAgIH1cbiAgfVxuICBpZiAoIV8uaXNFbXB0eShwcm90ZWN0ZWRDYXBOYW1lcykpIHtcbiAgICBsb2dnZXIuaW5mbygnVGhlIGZvbGxvd2luZyBDaHJvbWVkcml2ZXIgY2FwYWJpbGl0aWVzIGNhbm5vdCBiZSBvdmVycmlkZGVuICcgK1xuICAgICAgJ2J5IHRoZSBwcm92aWRlZCBjaHJvbWVPcHRpb25zOicpO1xuICAgIGZvciAoY29uc3Qgb3B0TmFtZSBvZiBwcm90ZWN0ZWRDYXBOYW1lcykge1xuICAgICAgbG9nZ2VyLmluZm8oYCAgJHtvcHROYW1lfSAoJHtKU09OLnN0cmluZ2lmeShvcHRzLmNocm9tZU9wdGlvbnNbb3B0TmFtZV0pfSlgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2Fwcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcnM7XG5leHBvcnQgeyBoZWxwZXJzLCBOQVRJVkVfV0lOLCBXRUJWSUVXX1dJTiwgV0VCVklFV19CQVNFLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIH07XG4iXSwiZmlsZSI6ImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
455
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3dlYnZpZXctaGVscGVycy5qcyIsIm5hbWVzIjpbIk5BVElWRV9XSU4iLCJXRUJWSUVXX1dJTiIsIkNIUk9NSVVNX1dJTiIsIldFQlZJRVdfQkFTRSIsIldFQlZJRVdfUElEX1BBVFRFUk4iLCJSZWdFeHAiLCJXRUJWSUVXX1BLR19QQVRURVJOIiwiREVWVE9PTFNfU09DS0VUX1BBVFRFUk4iLCJDUk9TU1dBTEtfU09DS0VUX1BBVFRFUk4iLCJDSFJPTUlVTV9ERVZUT09MU19TT0NLRVQiLCJDSFJPTUVfUEFDS0FHRV9OQU1FIiwiS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVMiLCJERVZUT09MU19QT1JUU19SQU5HRSIsIldFQlZJRVdTX0RFVEFJTFNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJ1cGRhdGVBZ2VPbkdldCIsIkNEUF9SRVFfVElNRU9VVCIsIkRFVlRPT0xTX1BPUlRfQUxMT0NBVElPTl9HVUFSRCIsInV0aWwiLCJnZXRMb2NrRmlsZUd1YXJkIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInRpbWVvdXQiLCJ0cnlSZWNvdmVyeSIsImhlbHBlcnMiLCJ0b0RldGFpbHNDYWNoZUtleSIsImFkYiIsIndlYnZpZXciLCJjdXJEZXZpY2VJZCIsImdldFBvdGVudGlhbFdlYnZpZXdQcm9jcyIsIm91dCIsInNoZWxsIiwibmFtZXMiLCJhbGxNYXRjaGVzIiwibGluZSIsInNwbGl0IiwiZmxhZ3MiLCJzdCIsInNvY2tQYXRoIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJwdXNoIiwidGVzdCIsIl8iLCJpc0VtcHR5IiwibG9nZ2VyIiwiZGVidWciLCJKU09OIiwic3RyaW5naWZ5IiwibGVuZ3RoIiwicGx1cmFsaXplIiwidW5pcSIsIndlYnZpZXdzRnJvbVByb2NzIiwiZGV2aWNlU29ja2V0Iiwic29ja2V0TmFtZXMiLCJ3ZWJ2aWV3cyIsInNvY2tldE5hbWUiLCJwcm9jIiwic29ja2V0TmFtZU1hdGNoIiwiZXhlYyIsImNyb3Nzd2Fsa01hdGNoIiwiYWxsb2NhdGVEZXZ0b29sc1BvcnQiLCJ3ZWJ2aWV3RGV2dG9vbHNQb3J0IiwicmVtb3RlUG9ydCIsInJlcGxhY2UiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwibG9jYWxQb3J0IiwiZSIsIkVycm9yIiwiYWRiRXhlYyIsImNvbGxlY3RXZWJ2aWV3c0RldGFpbHMiLCJ3ZWJ2aWV3c01hcHBpbmciLCJvcHRzIiwiZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMiLCJlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24iLCJpbmZvIiwiZGV0YWlsQ29sbGVjdG9ycyIsIml0ZW0iLCJjZHBJbmZvIiwicGFnZXMiLCJjZHBMaXN0IiwicmVtb3ZlUG9ydEZvcndhcmQiLCJCIiwiYWxsIiwidXJsIiwiZGF0YSIsInByb2NGcm9tV2VidmlldyIsInBpZE1hdGNoIiwicGlkIiwicGtnIiwiZ2V0TmFtZUJ5UGlkIiwicGFyc2VXZWJ2aWV3TmFtZXMiLCJpc0Nocm9tZVNlc3Npb24iLCJyZXN1bHQiLCJ3ZWJ2aWV3TmFtZSIsImdldFdlYlZpZXdzTWFwcGluZyIsImFuZHJvaWREZXZpY2VTb2NrZXQiLCJ3ZWJ2aWV3TWFwcGluZyIsInd2TmFtZSIsInByb2Nlc3MiLCJ1bmRlZmluZWQiLCJwa2dNYXRjaCIsIm5hbWUiLCJpZCIsIndhcm4iLCJtZXNzYWdlIiwia2V5Iiwic2V0IiwiaGFzIiwiZGVsIiwiZ2V0V2Vidmlld0RldGFpbHMiLCJnZXQiLCJjcmVhdGVDaHJvbWVkcml2ZXJDYXBzIiwiZGV2aWNlSWQiLCJ3ZWJWaWV3RGV0YWlscyIsImNhcHMiLCJjaHJvbWVPcHRpb25zIiwiYW5kcm9pZFBhY2thZ2UiLCJhcHBQYWNrYWdlIiwiaXNCb29sZWFuIiwiY2hyb21lVXNlUnVubmluZ0FwcCIsImFuZHJvaWRVc2VSdW5uaW5nQXBwIiwiY2hyb21lQW5kcm9pZFBhY2thZ2UiLCJjaHJvbWVBbmRyb2lkQWN0aXZpdHkiLCJhbmRyb2lkQWN0aXZpdHkiLCJjaHJvbWVBbmRyb2lkUHJvY2VzcyIsImFuZHJvaWRQcm9jZXNzIiwidG9Mb3dlciIsImJyb3dzZXJOYW1lIiwiYXBwQWN0aXZpdHkiLCJwYWdlTG9hZFN0cmF0ZWd5IiwiaXNDaHJvbWUiLCJpbmNsdWRlcyIsImFuZHJvaWREZXZpY2VTZXJpYWwiLCJpc1BsYWluT2JqZWN0IiwibG9nZ2luZ1ByZWZzIiwiY2hyb21lTG9nZ2luZ1ByZWZzIiwiZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nIiwibmV3UHJlZiIsInBlcmZvcm1hbmNlIiwiT2JqZWN0IiwiYXNzaWduIiwiQXJndW1lbnRzIiwiYXJncyIsInByb3RlY3RlZENhcE5hbWVzIiwib3B0IiwidmFsIiwidG9QYWlycyIsImlzVW5kZWZpbmVkIiwib3B0TmFtZSJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgTFJVIGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5cbmNvbnN0IE5BVElWRV9XSU4gPSAnTkFUSVZFX0FQUCc7XG5jb25zdCBXRUJWSUVXX1dJTiA9ICdXRUJWSUVXJztcbmNvbnN0IENIUk9NSVVNX1dJTiA9ICdDSFJPTUlVTSc7XG5jb25zdCBXRUJWSUVXX0JBU0UgPSBgJHtXRUJWSUVXX1dJTn1fYDtcbmNvbnN0IFdFQlZJRVdfUElEX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtXRUJWSUVXX0JBU0V9KFxcXFxkKylgKTtcbmNvbnN0IFdFQlZJRVdfUEtHX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtXRUJWSUVXX0JBU0V9KFteXFxcXGRcXFxcc11bXFxcXHcuXSopYCk7XG5jb25zdCBERVZUT09MU19TT0NLRVRfUEFUVEVSTiA9IC9AW1xcdy5dK19kZXZ0b29sc19yZW1vdGVfPyhcXGQrKT9cXGIvO1xuY29uc3QgQ1JPU1NXQUxLX1NPQ0tFVF9QQVRURVJOID0gL0AoW1xcdy5dKylfZGV2dG9vbHNfcmVtb3RlXFxiLztcbmNvbnN0IENIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCA9ICdjaHJvbWVfZGV2dG9vbHNfcmVtb3RlJztcbmNvbnN0IENIUk9NRV9QQUNLQUdFX05BTUUgPSAnY29tLmFuZHJvaWQuY2hyb21lJztcbmNvbnN0IEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTID0gW1xuICBDSFJPTUVfUEFDS0FHRV9OQU1FLFxuICAnY29tLmNocm9tZS5iZXRhJyxcbiAgJ2NvbS5jaHJvbWUuZGV2JyxcbiAgJ2NvbS5jaHJvbWUuY2FuYXJ5Jyxcbl07XG5jb25zdCBERVZUT09MU19QT1JUU19SQU5HRSA9IFsxMDkwMCwgMTEwMDBdO1xuY29uc3QgV0VCVklFV1NfREVUQUlMU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IDEwMCxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG59KTtcbmNvbnN0IENEUF9SRVFfVElNRU9VVCA9IDIwMDA7IC8vIG1zXG5jb25zdCBERVZUT09MU19QT1JUX0FMTE9DQVRJT05fR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ2FuZHJvaWRfZGV2dG9vbHNfcG9ydF9ndWFyZCcpLFxuICB7dGltZW91dDogNywgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuXG5jb25zdCBoZWxwZXJzID0ge307XG5cbmZ1bmN0aW9uIHRvRGV0YWlsc0NhY2hlS2V5IChhZGIsIHdlYnZpZXcpIHtcbiAgcmV0dXJuIGAke2FkYj8uY3VyRGV2aWNlSWR9OiR7d2Vidmlld31gO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBhIGxpc3Qgb2YgYW5kcm9pZCBzeXN0ZW0gcHJvY2Vzc2VzIGFuZCByZXR1cm5zIG9uZXNcbiAqIHRoYXQgbG9vayBsaWtlIHdlYnZpZXdzXG4gKiBTZWUgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2Nocm9tZS9icm93c2VyL2RldnRvb2xzL2RldmljZS9hbmRyb2lkX2RldmljZV9pbmZvX3F1ZXJ5LmNjXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fSAtIGEgbGlzdCBvZiBtYXRjaGluZyB3ZWJ2aWV3IHNvY2tldCBuYW1lcyAoaW5jbHVkaW5nIHRoZSBsZWFkaW5nICdAJylcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzIChhZGIpIHtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgYWRiLnNoZWxsKFsnY2F0JywgJy9wcm9jL25ldC91bml4J10pO1xuICBjb25zdCBuYW1lcyA9IFtdO1xuICBjb25zdCBhbGxNYXRjaGVzID0gW107XG4gIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgLy8gTnVtIFJlZkNvdW50IFByb3RvY29sIEZsYWdzIFR5cGUgU3QgSW5vZGUgUGF0aFxuICAgIGNvbnN0IFssLCwgZmxhZ3MsLCBzdCwsIHNvY2tQYXRoXSA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgaWYgKCFzb2NrUGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzb2NrUGF0aC5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgIGFsbE1hdGNoZXMucHVzaChsaW5lLnRyaW0oKSk7XG4gICAgfVxuICAgIGlmIChmbGFncyAhPT0gJzAwMDEwMDAwJyB8fCBzdCAhPT0gJzAxJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghREVWVE9PTFNfU09DS0VUX1BBVFRFUk4udGVzdChzb2NrUGF0aCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG5hbWVzLnB1c2goc29ja1BhdGgpO1xuICB9XG4gIGlmIChfLmlzRW1wdHkobmFtZXMpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCBubyBhY3RpdmUgZGV2dG9vbHMgc29ja2V0cycpO1xuICAgIGlmICghXy5pc0VtcHR5KGFsbE1hdGNoZXMpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYE90aGVyIHNvY2tldHMgYXJlOiAke0pTT04uc3RyaW5naWZ5KGFsbE1hdGNoZXMsIG51bGwsIDIpfWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuZGVidWcoYFBhcnNlZCAke25hbWVzLmxlbmd0aH0gYWN0aXZlIGRldnRvb2xzICR7dXRpbC5wbHVyYWxpemUoJ3NvY2tldCcsIG5hbWVzLmxlbmd0aCwgZmFsc2UpfTogYCArXG4gICAgICBKU09OLnN0cmluZ2lmeShuYW1lcykpO1xuICB9XG4gIC8vIHNvbWV0aW1lcyB0aGUgd2VidmlldyBwcm9jZXNzIHNob3dzIHVwIG11bHRpcGxlIHRpbWVzIHBlciBhcHBcbiAgcmV0dXJuIF8udW5pcShuYW1lcyk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2Vidmlld1Byb2NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIC0gVGhlIHdlYnZpZXcgcHJvY2VzcyBuYW1lIChhcyByZXR1cm5lZCBieVxuICogZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2VidmlldyAtIFRoZSBhY3R1YWwgd2VidmlldyBjb250ZXh0IG5hbWVcbiAqL1xuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyBhIGxpc3Qgb2Ygc3lzdGVtIHByb2Nlc3NlcyB0aGF0IGxvb2sgbGlrZSB3ZWJ2aWV3cyxcbiAqIGFuZCByZXR1cm5zIHRoZW0gYWxvbmcgd2l0aCB0aGUgd2VidmlldyBjb250ZXh0IG5hbWUgYXBwcm9wcmlhdGUgZm9yIGl0LlxuICogSWYgd2UgcGFzcyBpbiBhIGRldmljZVNvY2tldCwgd2Ugb25seSBhdHRlbXB0IHRvIGZpbmQgd2Vidmlld3Mgd2hpY2ggbWF0Y2hcbiAqIHRoYXQgc29ja2V0IG5hbWUgKHRoaXMgaXMgZm9yIGFwcHMgd2hpY2ggZW1iZWQgQ2hyb21pdW0sIHdoaWNoIGlzbid0IHRoZVxuICogc2FtZSBhcyBjaHJvbWUtYmFja2VkIHdlYnZpZXdzKS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKiBAcGFyYW0gez9zdHJpbmd9IGRldmljZVNvY2tldCAtIHRoZSBleHBsaWN0bHktbmFtZWQgZGV2aWNlIHNvY2tldCB0byB1c2VcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48V2Vidmlld1Byb2M+fVxuICovXG5hc3luYyBmdW5jdGlvbiB3ZWJ2aWV3c0Zyb21Qcm9jcyAoYWRiLCBkZXZpY2VTb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHNvY2tldE5hbWVzID0gYXdhaXQgZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzKGFkYik7XG4gIGNvbnN0IHdlYnZpZXdzID0gW107XG4gIGZvciAoY29uc3Qgc29ja2V0TmFtZSBvZiBzb2NrZXROYW1lcykge1xuICAgIGlmIChkZXZpY2VTb2NrZXQgPT09IENIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCAmJiBzb2NrZXROYW1lID09PSBgQCR7ZGV2aWNlU29ja2V0fWApIHtcbiAgICAgIHdlYnZpZXdzLnB1c2goe1xuICAgICAgICBwcm9jOiBzb2NrZXROYW1lLFxuICAgICAgICB3ZWJ2aWV3OiBDSFJPTUlVTV9XSU4sXG4gICAgICB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNvY2tldE5hbWVNYXRjaCA9IERFVlRPT0xTX1NPQ0tFVF9QQVRURVJOLmV4ZWMoc29ja2V0TmFtZSk7XG4gICAgaWYgKCFzb2NrZXROYW1lTWF0Y2gpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBjcm9zc3dhbGtNYXRjaCA9IENST1NTV0FMS19TT0NLRVRfUEFUVEVSTi5leGVjKHNvY2tldE5hbWUpO1xuICAgIGlmICghc29ja2V0TmFtZU1hdGNoWzFdICYmICFjcm9zc3dhbGtNYXRjaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGRldmljZVNvY2tldCAmJiBzb2NrZXROYW1lID09PSBgQCR7ZGV2aWNlU29ja2V0fWAgfHwgIWRldmljZVNvY2tldCkge1xuICAgICAgd2Vidmlld3MucHVzaCh7XG4gICAgICAgIHByb2M6IHNvY2tldE5hbWUsXG4gICAgICAgIHdlYnZpZXc6IHNvY2tldE5hbWVNYXRjaFsxXVxuICAgICAgICAgID8gYCR7V0VCVklFV19CQVNFfSR7c29ja2V0TmFtZU1hdGNoWzFdfWBcbiAgICAgICAgICA6IGAke1dFQlZJRVdfQkFTRX0ke2Nyb3Nzd2Fsa01hdGNoWzFdfWAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdlYnZpZXdzO1xufVxuXG4vKipcbiAqIEFsbG9jYXRlcyBhIGxvY2FsIHBvcnQgZm9yIGRldnRvb2xzIGNvbW11bmljYXRpb25cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHNvY2tldE5hbWUgVGhlIHJlbW90ZSBVbml4IHNvY2tldCBuYW1lXG4gKiBAcGFyYW0gez9udW1iZXJ9IHdlYnZpZXdEZXZ0b29sc1BvcnQgVGhlIGxvY2FsIHBvcnQgbnVtYmVyIG9yIG51bGwgdG8gYXBwbHlcbiAqIGF1dG9kZXRlY3Rpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBsb2NhbCBwb3J0IG51bWJlciBpZiB0aGUgcmVtb3RlIHNvY2tldCBoYXMgYmVlbiBmb3J3YXJkZWRcbiAqIHN1Y2Nlc3NmdWxseSBvciBgbnVsbGAgb3RoZXJ3aXNlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGFsbG9jYXRpbmcgdGhlIGxvY2FsIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWxsb2NhdGVEZXZ0b29sc1BvcnQgKGFkYiwgc29ja2V0TmFtZSwgd2Vidmlld0RldnRvb2xzUG9ydCA9IG51bGwpIHtcbiAgLy8gc29ja2V0IG5hbWVzIGNvbWUgd2l0aCAnQCcsIGJ1dCB0aGlzIHNob3VsZCBub3QgYmUgYSBwYXJ0IG9mIHRoZSBhYnN0cmFjdFxuICAvLyByZW1vdGUgcG9ydCwgc28gcmVtb3ZlIGl0XG4gIGNvbnN0IHJlbW90ZVBvcnQgPSBzb2NrZXROYW1lLnJlcGxhY2UoL15ALywgJycpO1xuICBsZXQgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBERVZUT09MU19QT1JUU19SQU5HRTtcbiAgaWYgKHdlYnZpZXdEZXZ0b29sc1BvcnQpIHtcbiAgICBlbmRQb3J0ID0gd2Vidmlld0RldnRvb2xzUG9ydCArIChlbmRQb3J0IC0gc3RhcnRQb3J0KTtcbiAgICBzdGFydFBvcnQgPSB3ZWJ2aWV3RGV2dG9vbHNQb3J0O1xuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgRm9yd2FyZGluZyByZW1vdGUgcG9ydCAke3JlbW90ZVBvcnR9IHRvIGEgbG9jYWwgYCArXG4gICAgYHBvcnQgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9YCk7XG4gIGlmICghd2Vidmlld0RldnRvb2xzUG9ydCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgWW91IGNvdWxkIHVzZSB0aGUgJ3dlYnZpZXdEZXZ0b29sc1BvcnQnIGNhcGFiaWxpdHkgdG8gY3VzdG9taXplIGAgK1xuICAgICAgYHRoZSBzdGFydGluZyBwb3J0IG51bWJlcmApO1xuICB9XG4gIHJldHVybiBhd2FpdCBERVZUT09MU19QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBsb2NhbFBvcnQ7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IHRvIGZvcndhcmQgdGhlIERldnRvb2xzIHNvY2tldCBgICtcbiAgICAgICAgYGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fS4gWW91IGNvdWxkIHNldCB0aGUgc3RhcnRpbmcgcG9ydCBudW1iZXIgYCArXG4gICAgICAgIGBtYW51YWxseSBieSBwcm92aWRpbmcgdGhlICd3ZWJ2aWV3RGV2dG9vbHNQb3J0JyBjYXBhYmlsaXR5YCk7XG4gICAgfVxuICAgIGF3YWl0IGFkYi5hZGJFeGVjKFsnZm9yd2FyZCcsIGB0Y3A6JHtsb2NhbFBvcnR9YCwgYGxvY2FsYWJzdHJhY3Q6JHtyZW1vdGVQb3J0fWBdKTtcbiAgICByZXR1cm4gbG9jYWxQb3J0O1xuICB9KTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXRhaWxDb2xsZWN0aW9uT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gd2Vidmlld0RldnRvb2xzUG9ydCBUaGUgc3RhcnRpbmcgcG9ydCB0byB1c2UgZm9yIHdlYnZpZXcgcGFnZVxuICogcHJlc2VuY2UgY2hlY2sgKGlmIG5vdCB0aGUgZGVmYXVsdCBvZiA5MjIyKS5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIFdoZXRoZXIgdG8gY2hlY2sgZm9yIHdlYnZpZXdcbiAqIHBhZ2VzIHByZXNlbmNlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBXaGV0aGVyIHRvIGNvbGxlY3RcbiAqIHdlYiB2aWV3IGRldGFpbHMgYW5kIHNlbmQgdGhlbSB0byBDaHJvbWVkcml2ZXIgY29uc3RydWN0b3IsIHNvIGl0IGNvdWxkXG4gKiBzZWxlY3QgYSBiaW5hcnkgbW9yZSBwcmVjaXNlbHkgYmFzZWQgb24gdGhpcyBpbmZvLlxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIHdyYXBwZXIgZm9yIENocm9tZSBEZWJ1Z2dlciBQcm90b2NvbCBkYXRhIGNvbGxlY3Rpb24uXG4gKiBObyBlcnJvciBpcyB0aHJvd24gaWYgQ0RQIHJlcXVlc3QgZmFpbHMgLSBpbiBzdWNoIGNhc2Ugbm8gZGF0YSB3aWxsIGJlXG4gKiByZWNvcmRlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGB3ZWJ2aWV3c01hcHBpbmdgIGl0ZW0uXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBUaGUgQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge0FycmF5PFdlYnZpZXdQcm9wcz59IHdlYnZpZXdzTWFwcGluZyBUaGUgY3VycmVudCB3ZWJ2aWV3cyBtYXBwaW5nXG4gKiAhISEgRWFjaCBpdGVtIG9mIHRoaXMgYXJyYXkgZ2V0cyBtdXRhdGVkIChgaW5mb2AvYHBhZ2VzYCBwcm9wZXJ0aWVzIGdldCBhZGRlZFxuICogYmFzZWQgb24gdGhlIHByb3ZpZGVkIGBvcHRzYCkgaWYgdGhlIHJlcXVlc3RlZCBkZXRhaWxzIGhhdmUgYmVlblxuICogc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBmb3IgaXQgISEhXG4gKiBAcGFyYW0ge0RldGFpbENvbGxlY3Rpb25PcHRpb25zfSBvcHRzIElmIGJvdGggYGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzYCBhbmRcbiAqIGBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb25gIHByb3BlcnRpZXMgYXJlIGZhbHN5IHRoZW4gbm8gZGV0YWlscyBjb2xsZWN0aW9uXG4gKiBpcyBwZXJmb3JtZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFdlYnZpZXdzRGV0YWlscyAoYWRiLCB3ZWJ2aWV3c01hcHBpbmcsIG9wdHMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHdlYnZpZXdzTWFwcGluZykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgd2Vidmlld0RldnRvb2xzUG9ydCA9IG51bGwsXG4gICAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgPSBudWxsLFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiA9IG51bGwsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMpIHtcbiAgICBsb2dnZXIuaW5mbyhgTm90IGNoZWNraW5nIHdoZXRoZXIgd2Vidmlld3MgaGF2ZSBhY3RpdmUgcGFnZXM7IHVzZSB0aGUgYCArXG4gICAgICBgJ2Vuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzJyBjYXAgdG8gdHVybiB0aGlzIGNoZWNrIG9uYCk7XG4gIH1cblxuICBpZiAoIWVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgIGxvZ2dlci5pbmZvKGBOb3QgY29sbGVjdGluZyB3ZWIgdmlldyBkZXRhaWxzLiBEZXRhaWxzIGNvbGxlY3Rpb24gbWlnaHQgaGVscCBgICtcbiAgICAgIGB0byBtYWtlIENocm9tZWRyaXZlciBpbml0aWFsaXphdGlvbiBtb3JlIHByZWNpc2UuIFVzZSB0aGUgJ2VuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbicgYCArXG4gICAgICBgY2FwIHRvIHR1cm4gaXQgb25gKTtcbiAgfVxuXG4gIGlmICghZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgJiYgIWVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbm5lY3QgdG8gZWFjaCBkZXZ0b29scyBzb2NrZXQgYW5kIHJldHJpZXZlIHdlYiB2aWV3IGRldGFpbHNcbiAgbG9nZ2VyLmRlYnVnKGBDb2xsZWN0aW5nIENEUCBkYXRhIG9mICR7dXRpbC5wbHVyYWxpemUoJ3dlYnZpZXcnLCB3ZWJ2aWV3c01hcHBpbmcubGVuZ3RoLCB0cnVlKX1gKTtcbiAgY29uc3QgZGV0YWlsQ29sbGVjdG9ycyA9IFtdO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgZGV0YWlsQ29sbGVjdG9ycy5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgbG9jYWxQb3J0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9jYWxQb3J0ID0gYXdhaXQgYWxsb2NhdGVEZXZ0b29sc1BvcnQoYWRiLCBpdGVtLnByb2MsIHdlYnZpZXdEZXZ0b29sc1BvcnQpO1xuICAgICAgICBpZiAoZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgaXRlbS5pbmZvID0gYXdhaXQgY2RwSW5mbyhsb2NhbFBvcnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcykge1xuICAgICAgICAgIGl0ZW0ucGFnZXMgPSBhd2FpdCBjZHBMaXN0KGxvY2FsUG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGxvY2FsUG9ydCkge1xuICAgICAgICAgIGF3YWl0IGFkYi5yZW1vdmVQb3J0Rm9yd2FyZChsb2NhbFBvcnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKSk7XG4gIH1cbiAgYXdhaXQgQi5hbGwoZGV0YWlsQ29sbGVjdG9ycyk7XG4gIGxvZ2dlci5kZWJ1ZyhgQ0RQIGRhdGEgY29sbGVjdGlvbiBjb21wbGV0ZWRgKTtcbn1cblxuLy8gaHR0cHM6Ly9jaHJvbWVkZXZ0b29scy5naXRodWIuaW8vZGV2dG9vbHMtcHJvdG9jb2wvXG5hc3luYyBmdW5jdGlvbiBjZHBMaXN0IChsb2NhbFBvcnQpIHtcbiAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgdXJsOiBgaHR0cDovLzEyNy4wLjAuMToke2xvY2FsUG9ydH0vanNvbi9saXN0YCxcbiAgICB0aW1lb3V0OiBDRFBfUkVRX1RJTUVPVVQsXG4gIH0pKS5kYXRhO1xufVxuXG4vLyBodHRwczovL2Nocm9tZWRldnRvb2xzLmdpdGh1Yi5pby9kZXZ0b29scy1wcm90b2NvbC9cbmFzeW5jIGZ1bmN0aW9uIGNkcEluZm8gKGxvY2FsUG9ydCkge1xuICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICB1cmw6IGBodHRwOi8vMTI3LjAuMC4xOiR7bG9jYWxQb3J0fS9qc29uL3ZlcnNpb25gLFxuICAgIHRpbWVvdXQ6IENEUF9SRVFfVElNRU9VVCxcbiAgfSkpLmRhdGE7XG59XG5cbi8qKlxuICogVGFrZSBhIHdlYnZpZXcgbmFtZSBsaWtlIFdFQlZJRVdfNDI5NiBhbmQgdXNlICdhZGIgc2hlbGwgcHMnIHRvIGZpZ3VyZSBvdXRcbiAqIHdoaWNoIGFwcCBwYWNrYWdlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHdlYnZpZXcuIE9uZSBvZiB0aGUgcmVhc29ucyB3ZVxuICogd2FudCB0byBkbyB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB3ZSdyZSBsaXN0aW5nIHdlYnZpZXdzIGZvciB0aGUgYWN0dWFsIEFVVCxcbiAqIG5vdCBzb21lIG90aGVyIHJ1bm5pbmcgYXBwXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHdlYnZpZXcgLSBhIHdlYnZpZXcgcHJvY2VzcyBuYW1lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBhcHAgcnVubmluZyB0aGUgd2Vidmlld1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgcmV0cmlldmluZyB0aGUgcHJvY2VzcyBuYW1lXG4gKi9cbmhlbHBlcnMucHJvY0Zyb21XZWJ2aWV3ID0gYXN5bmMgZnVuY3Rpb24gcHJvY0Zyb21XZWJ2aWV3IChhZGIsIHdlYnZpZXcpIHtcbiAgY29uc3QgcGlkTWF0Y2ggPSBXRUJWSUVXX1BJRF9QQVRURVJOLmV4ZWMod2Vidmlldyk7XG4gIGlmICghcGlkTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIFBJRCBmb3Igd2VidmlldyAnJHt3ZWJ2aWV3fSdgKTtcbiAgfVxuXG4gIGNvbnN0IHBpZCA9IHBpZE1hdGNoWzFdO1xuICBsb2dnZXIuZGVidWcoYCR7d2Vidmlld30gbWFwcGVkIHRvIHBpZCAke3BpZH1gKTtcbiAgbG9nZ2VyLmRlYnVnKGBHZXR0aW5nIHByb2Nlc3MgbmFtZSBmb3Igd2VidmlldyAnJHt3ZWJ2aWV3fSdgKTtcbiAgY29uc3QgcGtnID0gYXdhaXQgYWRiLmdldE5hbWVCeVBpZChwaWQpO1xuICBsb2dnZXIuZGVidWcoYEdvdCBwcm9jZXNzIG5hbWU6ICcke3BrZ30nYCk7XG4gIHJldHVybiBwa2c7XG59O1xuXG4vKipcbiAqIFBhcnNlIHdlYnZpZXcgbmFtZXMgZm9yIGdldENvbnRleHRzXG4gKlxuICogQHBhcmFtIHtBcnJheTxXZWJ2aWV3c01hcHBpbmc+fSB3ZWJ2aWV3c01hcHBpbmcgU2VlIG5vdGUgb24gZ2V0V2ViVmlld3NNYXBwaW5nXG4gKiBAcGFyYW0ge0dldFdlYnZpZXdzT3B0c30gb3B0cyBTZWUgbm90ZSBvbiBnZXRXZWJWaWV3c01hcHBpbmdcbiAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fSAtIGEgbGlzdCBvZiB3ZWJ2aWV3IG5hbWVzXG4gKi9cbmhlbHBlcnMucGFyc2VXZWJ2aWV3TmFtZXMgPSBmdW5jdGlvbiBwYXJzZVdlYnZpZXdOYW1lcyAod2Vidmlld3NNYXBwaW5nLCB7XG4gIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzID0gdHJ1ZSxcbiAgaXNDaHJvbWVTZXNzaW9uID0gZmFsc2Vcbn0gPSB7fSkge1xuICBpZiAoaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgcmV0dXJuIFtDSFJPTUlVTV9XSU5dO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoY29uc3Qge3dlYnZpZXcsIHBhZ2VzLCBwcm9jLCB3ZWJ2aWV3TmFtZX0gb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgaWYgKGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzICYmIHBhZ2VzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBTa2lwcGluZyB0aGUgd2VidmlldyAnJHt3ZWJ2aWV3fScgYXQgJyR7cHJvY30nIGAgK1xuICAgICAgICBgc2luY2UgaXQgaGFzIHJlcG9ydGVkIGhhdmluZyB6ZXJvIHBhZ2VzYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHdlYnZpZXdOYW1lKSB7XG4gICAgICByZXN1bHQucHVzaCh3ZWJ2aWV3TmFtZSk7XG4gICAgfVxuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgRm91bmQgJHt1dGlsLnBsdXJhbGl6ZSgnd2VidmlldycsIHJlc3VsdC5sZW5ndGgsIHRydWUpfTogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXRXZWJ2aWV3c09wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhbmRyb2lkRGV2aWNlU29ja2V0IFtudWxsXSAtIGRldmljZSBzb2NrZXQgbmFtZVxuICogQHByb3BlcnR5IHtib29sZWFufSBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyBbdHJ1ZV0gLSB3aGV0aGVyIHRvIGNoZWNrIGZvciB3ZWJ2aWV3XG4gKiBwYWdlIHByZXNlbmNlXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2Vidmlld0RldnRvb2xzUG9ydCBbOTIyMl0gLSBwb3J0IHRvIHVzZSBmb3Igd2VidmlldyBwYWdlXG4gKiBwcmVzZW5jZSBjaGVjay5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIFt0cnVlXSAtIHdoZXRoZXIgdG8gY29sbGVjdFxuICogd2ViIHZpZXcgZGV0YWlscyBhbmQgc2VuZCB0aGVtIHRvIENocm9tZWRyaXZlciBjb25zdHJ1Y3Rvciwgc28gaXQgY291bGRcbiAqIHNlbGVjdCBhIGJpbmFyeSBtb3JlIHByZWNpc2VseSBiYXNlZCBvbiB0aGlzIGluZm8uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFNlZSBub3RlIG9uIFdlYnZpZXdQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGluZm8gU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkgez9BcnJheTxPYmplY3Q+fSBwYWdlcyBTZWUgbm90ZSBvbiBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ5IHs/c3RyaW5nfSB3ZWJ2aWV3TmFtZSBBbiBhY3R1YWwgd2VidmlldyBuYW1lIGZvciBzd2l0Y2hpbmcgY29udGV4dFxuICovXG5cbi8qKlxuICogR2V0IGEgbGlzdCBvZiBhdmFpbGFibGUgd2Vidmlld3MgbWFwcGluZyBieSBpbnRyb3NwZWN0aW5nIHByb2Nlc3NlcyB3aXRoIGFkYixcbiAqIHdoZXJlIHdlYnZpZXdzIGFyZSBsaXN0ZWQuIEl0J3MgcG9zc2libGUgdG8gcGFzcyBpbiBhICdkZXZpY2VTb2NrZXQnIGFyZywgd2hpY2hcbiAqIGxpbWl0cyB0aGUgd2VidmlldyBwb3NzaWJpbGl0aWVzIHRvIHRoZSBvbmUgcnVubmluZyBvbiB0aGUgQ2hyb21pdW0gZGV2dG9vbHNcbiAqIHNvY2tldCB3ZSdyZSBpbnRlcmVzdGVkIGluIChzZWUgbm90ZSBvbiB3ZWJ2aWV3c0Zyb21Qcm9jcykuIFdlIGNhbiBhbHNvXG4gKiBkaXJlY3QgdGhpcyBtZXRob2QgdG8gdmVyaWZ5IHdoZXRoZXIgYSBwYXJ0aWN1bGFyIHdlYnZpZXcgcHJvY2VzcyBhY3R1YWxseVxuICogaGFzIGFueSBwYWdlcyAoaWYgYSBwcm9jZXNzIGV4aXN0cyBidXQgbm8gcGFnZXMgYXJlIGZvdW5kLCBDaHJvbWVkcml2ZXIgd2lsbFxuICogbm90IGFjdHVhbGx5IGJlIGFibGUgdG8gY29ubmVjdCB0byBpdCwgc28gdGhpcyBzZXJ2ZXMgYXMgYSBndWFyZCBmb3IgdGhhdFxuICogc3RyYW5nZSBmYWlsdXJlIG1vZGUpLiBUaGUgc3RyYXRlZ3kgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW55IHBhZ2VzIGFyZVxuICogYWN0aXZlIGludm9sdmVzIHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSByZW1vdGUgZGVidWcgc2VydmVyIG9uIHRoZSBkZXZpY2UsXG4gKiBoZW5jZSBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIHBvcnQgb24gdGhlIGhvc3QgbWFjaGluZSB3aGljaFxuICogc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgY29tbXVuaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge0dldFdlYnZpZXdzT3B0c30gb3B0c1xuICpcbiAqIEByZXR1cm4ge0FycmF5PFdlYnZpZXdzTWFwcGluZz59IHdlYnZpZXdzTWFwcGluZ1xuICovXG5oZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyA9IGFzeW5jIGZ1bmN0aW9uIGdldFdlYlZpZXdzTWFwcGluZyAoYWRiLCB7XG4gIGFuZHJvaWREZXZpY2VTb2NrZXQgPSBudWxsLFxuICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyA9IHRydWUsXG4gIHdlYnZpZXdEZXZ0b29sc1BvcnQgPSBudWxsLFxuICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24gPSB0cnVlXG59ID0ge30pIHtcbiAgbG9nZ2VyLmRlYnVnKCdHZXR0aW5nIGEgbGlzdCBvZiBhdmFpbGFibGUgd2Vidmlld3MnKTtcbiAgY29uc3Qgd2Vidmlld3NNYXBwaW5nID0gYXdhaXQgd2Vidmlld3NGcm9tUHJvY3MoYWRiLCBhbmRyb2lkRGV2aWNlU29ja2V0KTtcblxuICBhd2FpdCBjb2xsZWN0V2Vidmlld3NEZXRhaWxzKGFkYiwgd2Vidmlld3NNYXBwaW5nLCB7XG4gICAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMsXG4gICAgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uLFxuICAgIHdlYnZpZXdEZXZ0b29sc1BvcnQsXG4gIH0pO1xuXG4gIGZvciAoY29uc3Qgd2Vidmlld01hcHBpbmcgb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgY29uc3Qge3dlYnZpZXcsIGluZm99ID0gd2Vidmlld01hcHBpbmc7XG4gICAgd2Vidmlld01hcHBpbmcud2Vidmlld05hbWUgPSBudWxsO1xuXG4gICAgbGV0IHd2TmFtZSA9IHdlYnZpZXc7XG4gICAgbGV0IHByb2Nlc3MgPSB1bmRlZmluZWQ7XG4gICAgaWYgKCFhbmRyb2lkRGV2aWNlU29ja2V0KSB7XG4gICAgICBjb25zdCBwa2dNYXRjaCA9IFdFQlZJRVdfUEtHX1BBVFRFUk4uZXhlYyh3ZWJ2aWV3KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIHdlYiB2aWV3IG5hbWUgY291bGQgZWl0aGVyIGJlIHN1ZmZpeGVkIHdpdGggUElEIG9yIHRoZSBwYWNrYWdlIG5hbWVcbiAgICAgICAgLy8gcGFja2FnZSBuYW1lcyBjb3VsZCBub3Qgc3RhcnQgd2l0aCBhIGRpZ2l0XG4gICAgICAgIGNvbnN0IHBrZyA9IHBrZ01hdGNoID8gcGtnTWF0Y2hbMV0gOiBhd2FpdCBoZWxwZXJzLnByb2NGcm9tV2VidmlldyhhZGIsIHdlYnZpZXcpO1xuICAgICAgICB3dk5hbWUgPSBgJHtXRUJWSUVXX0JBU0V9JHtwa2d9YDtcbiAgICAgICAgY29uc3QgcGlkTWF0Y2ggPSBXRUJWSUVXX1BJRF9QQVRURVJOLmV4ZWMod2Vidmlldyk7XG4gICAgICAgIHByb2Nlc3MgPSB7XG4gICAgICAgICAgbmFtZTogcGtnLFxuICAgICAgICAgIGlkOiBwaWRNYXRjaCA/IHBpZE1hdGNoWzFdIDogbnVsbCxcbiAgICAgICAgfTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oZS5tZXNzYWdlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgd2Vidmlld01hcHBpbmcud2Vidmlld05hbWUgPSB3dk5hbWU7XG4gICAgY29uc3Qga2V5ID0gdG9EZXRhaWxzQ2FjaGVLZXkoYWRiLCB3dk5hbWUpO1xuICAgIGlmIChpbmZvIHx8IHByb2Nlc3MpIHtcbiAgICAgIFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuc2V0KGtleSwgeyBpbmZvLCBwcm9jZXNzIH0pO1xuICAgIH0gZWxzZSBpZiAoV0VCVklFV1NfREVUQUlMU19DQUNIRS5oYXMoa2V5KSkge1xuICAgICAgV0VCVklFV1NfREVUQUlMU19DQUNIRS5kZWwoa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdlYnZpZXdzTWFwcGluZztcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJvY2Vzc0luZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIFRoZSBwcm9jZXNzIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgVGhlIHByb2Nlc3MgaWQgKGlmIGNvdWxkIGJlIHJldHJpZXZlZClcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYlZpZXdEZXRhaWxzXG4gKiBAcHJvcGVydHkgez9Qcm9jZXNzSW5mb30gcHJvY2VzcyAtIFdlYiB2aWV3IHByb2Nlc3MgZGV0YWlsc1xuICogQHByb3BlcnR5IHtPYmplY3R9IGluZm8gLSBXZWIgdmlldyBkZXRhaWxzIGFzIHJldHVybmVkIGJ5IC9qc29uL3ZlcnNpb24gQ0RQIGVuZHBvaW50LCBmb3IgZXhhbXBsZTpcbiAqIHtcbiAqICBcIkJyb3dzZXJcIjogXCJDaHJvbWUvNzIuMC4zNjAxLjBcIixcbiAqICBcIlByb3RvY29sLVZlcnNpb25cIjogXCIxLjNcIixcbiAqICBcIlVzZXItQWdlbnRcIjogXCJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xM182KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzIuMC4zNjAxLjAgU2FmYXJpLzUzNy4zNlwiLFxuICogIFwiVjgtVmVyc2lvblwiOiBcIjcuMi4yMzNcIixcbiAqICBcIldlYktpdC1WZXJzaW9uXCI6IFwiNTM3LjM2IChAY2ZlZGU5ZGIxZDE1NGRlMDQ2OGNiMDUzODQ3OWYzNGMwNzU1YTBmNClcIixcbiAqICBcIndlYlNvY2tldERlYnVnZ2VyVXJsXCI6IFwid3M6Ly9sb2NhbGhvc3Q6OTIyMi9kZXZ0b29scy9icm93c2VyL2IwYjhhNGZiLWJiMTctNDM1OS05NTMzLWE4ZDlmMzkwOGJkOFwiXG4gKiB9XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgd2ViIHZpZXcgZGV0YWlscyBwcmV2aW91c2x5IGNhY2hlZCBieSBgZ2V0V2Vidmlld3NgIGNhbGxcbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHdlYnZpZXcgVGhlIG5hbWUgb2YgdGhlIHdlYiB2aWV3XG4gKiBAcmV0dXJucyB7P1dlYlZpZXdEZXRhaWxzfSBFaXRoZXIgYHVuZGVmaW5lZGAgb3IgdGhlIHJlY2VudCB3ZWIgdmlldyBkZXRhaWxzXG4gKi9cbmhlbHBlcnMuZ2V0V2Vidmlld0RldGFpbHMgPSBmdW5jdGlvbiBnZXRXZWJ2aWV3RGV0YWlscyAoYWRiLCB3ZWJ2aWV3KSB7XG4gIGNvbnN0IGtleSA9IHRvRGV0YWlsc0NhY2hlS2V5KGFkYiwgd2Vidmlldyk7XG4gIHJldHVybiBXRUJWSUVXU19ERVRBSUxTX0NBQ0hFLmdldChrZXkpO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgQ2hyb21lIGRyaXZlciBjYXBhYmlsaXRpZXMgYmFzZWQgb24gdGhlIHByb3ZpZGVkXG4gKiBBcHBpdW0gY2FwYWJpbGl0aWVzXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9wdHMgVXNlci1wcm92aWRlZCBjYXBhYmlsaXRpZXMgb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gZGV2aWNlSWQgVGhlIGlkZW50aWZpZXIgb2YgdGhlIEFuZHJvaWQgZGV2aWNlIHVuZGVyIHRlc3RcbiAqIEBwYXJhbSB7P1dlYlZpZXdEZXRhaWxzfSB3ZWJWaWV3RGV0YWlsc1xuICogQHJldHVybnMge09iamVjdH0gVGhlIGNhcGFiaWxpdGllcyBvYmplY3QuXG4gKiBTZWUgaHR0cHM6Ly9jaHJvbWVkcml2ZXIuY2hyb21pdW0ub3JnL2NhcGFiaWxpdGllcyBmb3IgbW9yZSBkZXRhaWxzLlxuICovXG5oZWxwZXJzLmNyZWF0ZUNocm9tZWRyaXZlckNhcHMgPSBmdW5jdGlvbiBjcmVhdGVDaHJvbWVkcml2ZXJDYXBzIChvcHRzLCBkZXZpY2VJZCwgd2ViVmlld0RldGFpbHMpIHtcbiAgY29uc3QgY2FwcyA9IHsgY2hyb21lT3B0aW9uczoge30gfTtcblxuICBjb25zdCBhbmRyb2lkUGFja2FnZSA9IG9wdHMuY2hyb21lT3B0aW9ucz8uYW5kcm9pZFBhY2thZ2VcbiAgICB8fCBvcHRzLmFwcFBhY2thZ2VcbiAgICB8fCB3ZWJWaWV3RGV0YWlscz8uaW5mbz8uWydBbmRyb2lkLVBhY2thZ2UnXTtcbiAgaWYgKGFuZHJvaWRQYWNrYWdlKSB7XG4gICAgLy8gY2hyb21lZHJpdmVyIHJhaXNlcyBhbiBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIHdoZW4gYW5kcm9pZFBhY2thZ2UgaXMgJ251bGwnXG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gYW5kcm9pZFBhY2thZ2U7XG4gIH1cbiAgaWYgKF8uaXNCb29sZWFuKG9wdHMuY2hyb21lVXNlUnVubmluZ0FwcCkpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFVzZVJ1bm5pbmdBcHAgPSBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHA7XG4gIH1cbiAgaWYgKG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UgPSBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlO1xuICB9XG4gIGlmIChvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eSkge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHkgPSBvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eTtcbiAgfVxuICBpZiAob3B0cy5jaHJvbWVBbmRyb2lkUHJvY2Vzcykge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcyA9IG9wdHMuY2hyb21lQW5kcm9pZFByb2Nlc3M7XG4gIH0gZWxzZSBpZiAod2ViVmlld0RldGFpbHM/LnByb2Nlc3M/Lm5hbWUgJiYgd2ViVmlld0RldGFpbHM/LnByb2Nlc3M/LmlkKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQcm9jZXNzID0gd2ViVmlld0RldGFpbHMucHJvY2Vzcy5uYW1lO1xuICB9XG4gIGlmIChfLnRvTG93ZXIob3B0cy5icm93c2VyTmFtZSkgPT09ICdjaHJvbWl1bS13ZWJ2aWV3Jykge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHkgPSBvcHRzLmFwcEFjdGl2aXR5O1xuICB9XG4gIGlmIChvcHRzLnBhZ2VMb2FkU3RyYXRlZ3kpIHtcbiAgICBjYXBzLnBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRzLnBhZ2VMb2FkU3RyYXRlZ3k7XG4gIH1cbiAgY29uc3QgaXNDaHJvbWUgPSBfLnRvTG93ZXIoY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlKSA9PT0gJ2Nocm9tZSc7XG4gIGlmIChfLmluY2x1ZGVzKEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTLCBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UpIHx8IGlzQ2hyb21lKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBleHRyYWN0ZWQgcGFja2FnZSBmcm9tIGNvbnRleHQgbmFtZSwgaXQgY291bGQgY29tZSBpbiBhcyBiYXJlXG4gICAgLy8gXCJjaHJvbWVcIiwgYW5kIHNvIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIGRldGFpbHMgYXJlIGNvcnJlY3QsIGluY2x1ZGluZ1xuICAgIC8vIG5vdCB1c2luZyBhbiBhY3Rpdml0eSBvciBwcm9jZXNzIGlkXG4gICAgaWYgKGlzQ2hyb21lKSB7XG4gICAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UgPSBDSFJPTUVfUEFDS0FHRV9OQU1FO1xuICAgIH1cbiAgICBkZWxldGUgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRBY3Rpdml0eTtcbiAgICBkZWxldGUgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQcm9jZXNzO1xuICB9XG4gIC8vIGFkZCBkZXZpY2UgaWQgZnJvbSBhZGJcbiAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWREZXZpY2VTZXJpYWwgPSBkZXZpY2VJZDtcblxuICBpZiAoXy5pc1BsYWluT2JqZWN0KG9wdHMubG9nZ2luZ1ByZWZzKSB8fCBfLmlzUGxhaW5PYmplY3Qob3B0cy5jaHJvbWVMb2dnaW5nUHJlZnMpKSB7XG4gICAgaWYgKG9wdHMubG9nZ2luZ1ByZWZzKSB7XG4gICAgICBsb2dnZXIud2FybihgVGhlICdsb2dnaW5nUHJlZnMnIGNhcCBpcyBkZXByZWNhdGVkOyB1c2UgdGhlICdjaHJvbWVMb2dnaW5nUHJlZnMnIGNhcCBpbnN0ZWFkYCk7XG4gICAgfVxuICAgIGNhcHMubG9nZ2luZ1ByZWZzID0gb3B0cy5jaHJvbWVMb2dnaW5nUHJlZnMgfHwgb3B0cy5sb2dnaW5nUHJlZnM7XG4gIH1cbiAgaWYgKG9wdHMuZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nKSB7XG4gICAgbG9nZ2VyLndhcm4oYFRoZSAnZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nJyBjYXAgaXMgZGVwcmVjYXRlZDsgc2ltcGx5IHVzZSBgICtcbiAgICAgIGB0aGUgJ2Nocm9tZUxvZ2dpbmdQcmVmcycgY2FwIGluc3RlYWQsIHdpdGggYSAncGVyZm9ybWFuY2UnIGtleSBzZXQgdG8gJ0FMTCdgKTtcbiAgICBjb25zdCBuZXdQcmVmID0ge3BlcmZvcm1hbmNlOiAnQUxMJ307XG4gICAgLy8gZG9uJ3Qgb3ZlcndyaXRlIG90aGVyIGxvZ2dpbmcgcHJlZnMgdGhhdCBoYXZlIGJlZW4gc2VudCBpbiBpZiB0aGV5IGV4aXN0XG4gICAgY2Fwcy5sb2dnaW5nUHJlZnMgPSBjYXBzLmxvZ2dpbmdQcmVmc1xuICAgICAgPyBPYmplY3QuYXNzaWduKHt9LCBjYXBzLmxvZ2dpbmdQcmVmcywgbmV3UHJlZilcbiAgICAgIDogbmV3UHJlZjtcbiAgfVxuXG4gIGlmIChvcHRzLmNocm9tZU9wdGlvbnM/LkFyZ3VtZW50cykge1xuICAgIC8vIG1lcmdlIGBBcmd1bWVudHNgIGFuZCBgYXJnc2BcbiAgICBvcHRzLmNocm9tZU9wdGlvbnMuYXJncyA9IFsuLi4ob3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MgfHwgW10pLCAuLi5vcHRzLmNocm9tZU9wdGlvbnMuQXJndW1lbnRzXTtcbiAgICBkZWxldGUgb3B0cy5jaHJvbWVPcHRpb25zLkFyZ3VtZW50cztcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZygnUHJlY2FsY3VsYXRlZCBDaHJvbWVkcml2ZXIgY2FwYWJpbGl0aWVzOiAnICtcbiAgICBKU09OLnN0cmluZ2lmeShjYXBzLmNocm9tZU9wdGlvbnMsIG51bGwsIDIpKTtcblxuICBjb25zdCBwcm90ZWN0ZWRDYXBOYW1lcyA9IFtdO1xuICBmb3IgKGNvbnN0IFtvcHQsIHZhbF0gb2YgXy50b1BhaXJzKG9wdHMuY2hyb21lT3B0aW9ucykpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChjYXBzLmNocm9tZU9wdGlvbnNbb3B0XSkpIHtcbiAgICAgIGNhcHMuY2hyb21lT3B0aW9uc1tvcHRdID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm90ZWN0ZWRDYXBOYW1lcy5wdXNoKG9wdCk7XG4gICAgfVxuICB9XG4gIGlmICghXy5pc0VtcHR5KHByb3RlY3RlZENhcE5hbWVzKSkge1xuICAgIGxvZ2dlci5pbmZvKCdUaGUgZm9sbG93aW5nIENocm9tZWRyaXZlciBjYXBhYmlsaXRpZXMgY2Fubm90IGJlIG92ZXJyaWRkZW4gJyArXG4gICAgICAnYnkgdGhlIHByb3ZpZGVkIGNocm9tZU9wdGlvbnM6Jyk7XG4gICAgZm9yIChjb25zdCBvcHROYW1lIG9mIHByb3RlY3RlZENhcE5hbWVzKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgICAke29wdE5hbWV9ICgke0pTT04uc3RyaW5naWZ5KG9wdHMuY2hyb21lT3B0aW9uc1tvcHROYW1lXSl9KWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjYXBzO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaGVscGVycztcbmV4cG9ydCB7IGhlbHBlcnMsIE5BVElWRV9XSU4sIFdFQlZJRVdfV0lOLCBXRUJWSUVXX0JBU0UsIENIUk9NSVVNX1dJTiwgS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUcsWUFBbkI7O0FBQ0EsTUFBTUMsV0FBVyxHQUFHLFNBQXBCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxVQUFyQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUksR0FBRUYsV0FBWSxHQUFwQzs7QUFDQSxNQUFNRyxtQkFBbUIsR0FBRyxJQUFJQyxNQUFKLENBQVksSUFBR0YsWUFBYSxRQUE1QixDQUE1QjtBQUNBLE1BQU1HLG1CQUFtQixHQUFHLElBQUlELE1BQUosQ0FBWSxJQUFHRixZQUFhLG9CQUE1QixDQUE1QjtBQUNBLE1BQU1JLHVCQUF1QixHQUFHLG1DQUFoQztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLDZCQUFqQztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLHdCQUFqQztBQUNBLE1BQU1DLG1CQUFtQixHQUFHLG9CQUE1QjtBQUNBLE1BQU1DLDBCQUEwQixHQUFHLENBQ2pDRCxtQkFEaUMsRUFFakMsaUJBRmlDLEVBR2pDLGdCQUhpQyxFQUlqQyxtQkFKaUMsQ0FBbkM7O0FBTUEsTUFBTUUsb0JBQW9CLEdBQUcsQ0FBQyxLQUFELEVBQVEsS0FBUixDQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLElBQUlDLGlCQUFKLENBQVE7RUFDckNDLEdBQUcsRUFBRSxHQURnQztFQUVyQ0MsY0FBYyxFQUFFO0FBRnFCLENBQVIsQ0FBL0I7QUFJQSxNQUFNQyxlQUFlLEdBQUcsSUFBeEI7O0FBQ0EsTUFBTUMsOEJBQThCLEdBQUdDLGNBQUtDLGdCQUFMLENBQ3JDQyxjQUFLQyxPQUFMLENBQWFDLFlBQUdDLE1BQUgsRUFBYixFQUEwQiw2QkFBMUIsQ0FEcUMsRUFFckM7RUFBQ0MsT0FBTyxFQUFFLENBQVY7RUFBYUMsV0FBVyxFQUFFO0FBQTFCLENBRnFDLENBQXZDOztBQUtBLE1BQU1DLE9BQU8sR0FBRyxFQUFoQjs7O0FBRUEsU0FBU0MsaUJBQVQsQ0FBNEJDLEdBQTVCLEVBQWlDQyxPQUFqQyxFQUEwQztFQUN4QyxPQUFRLEdBQUVELEdBQUgsYUFBR0EsR0FBSCx1QkFBR0EsR0FBRyxDQUFFRSxXQUFZLElBQUdELE9BQVEsRUFBdEM7QUFDRDs7QUFZRCxlQUFlRSx3QkFBZixDQUF5Q0gsR0FBekMsRUFBOEM7RUFDNUMsTUFBTUksR0FBRyxHQUFHLE1BQU1KLEdBQUcsQ0FBQ0ssS0FBSixDQUFVLENBQUMsS0FBRCxFQUFRLGdCQUFSLENBQVYsQ0FBbEI7RUFDQSxNQUFNQyxLQUFLLEdBQUcsRUFBZDtFQUNBLE1BQU1DLFVBQVUsR0FBRyxFQUFuQjs7RUFDQSxLQUFLLE1BQU1DLElBQVgsSUFBbUJKLEdBQUcsQ0FBQ0ssS0FBSixDQUFVLElBQVYsQ0FBbkIsRUFBb0M7SUFFbEMsTUFBTSxLQUFLQyxLQUFMLEdBQWFDLEVBQWIsR0FBa0JDLFFBQWxCLElBQThCSixJQUFJLENBQUNLLElBQUwsR0FBWUosS0FBWixDQUFrQixLQUFsQixDQUFwQzs7SUFDQSxJQUFJLENBQUNHLFFBQUwsRUFBZTtNQUNiO0lBQ0Q7O0lBQ0QsSUFBSUEsUUFBUSxDQUFDRSxVQUFULENBQW9CLEdBQXBCLENBQUosRUFBOEI7TUFDNUJQLFVBQVUsQ0FBQ1EsSUFBWCxDQUFnQlAsSUFBSSxDQUFDSyxJQUFMLEVBQWhCO0lBQ0Q7O0lBQ0QsSUFBSUgsS0FBSyxLQUFLLFVBQVYsSUFBd0JDLEVBQUUsS0FBSyxJQUFuQyxFQUF5QztNQUN2QztJQUNEOztJQUNELElBQUksQ0FBQ2pDLHVCQUF1QixDQUFDc0MsSUFBeEIsQ0FBNkJKLFFBQTdCLENBQUwsRUFBNkM7TUFDM0M7SUFDRDs7SUFFRE4sS0FBSyxDQUFDUyxJQUFOLENBQVdILFFBQVg7RUFDRDs7RUFDRCxJQUFJSyxnQkFBRUMsT0FBRixDQUFVWixLQUFWLENBQUosRUFBc0I7SUFDcEJhLGdCQUFPQyxLQUFQLENBQWEsa0NBQWI7O0lBQ0EsSUFBSSxDQUFDSCxnQkFBRUMsT0FBRixDQUFVWCxVQUFWLENBQUwsRUFBNEI7TUFDMUJZLGdCQUFPQyxLQUFQLENBQWMsc0JBQXFCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZWYsVUFBZixFQUEyQixJQUEzQixFQUFpQyxDQUFqQyxDQUFvQyxFQUF2RTtJQUNEO0VBQ0YsQ0FMRCxNQUtPO0lBQ0xZLGdCQUFPQyxLQUFQLENBQWMsVUFBU2QsS0FBSyxDQUFDaUIsTUFBTyxvQkFBbUJqQyxjQUFLa0MsU0FBTCxDQUFlLFFBQWYsRUFBeUJsQixLQUFLLENBQUNpQixNQUEvQixFQUF1QyxLQUF2QyxDQUE4QyxJQUF4RixHQUNYRixJQUFJLENBQUNDLFNBQUwsQ0FBZWhCLEtBQWYsQ0FERjtFQUVEOztFQUVELE9BQU9XLGdCQUFFUSxJQUFGLENBQU9uQixLQUFQLENBQVA7QUFDRDs7QUFvQkQsZUFBZW9CLGlCQUFmLENBQWtDMUIsR0FBbEMsRUFBdUMyQixZQUFZLEdBQUcsSUFBdEQsRUFBNEQ7RUFDMUQsTUFBTUMsV0FBVyxHQUFHLE1BQU16Qix3QkFBd0IsQ0FBQ0gsR0FBRCxDQUFsRDtFQUNBLE1BQU02QixRQUFRLEdBQUcsRUFBakI7O0VBQ0EsS0FBSyxNQUFNQyxVQUFYLElBQXlCRixXQUF6QixFQUFzQztJQUNwQyxJQUFJRCxZQUFZLEtBQUsvQyx3QkFBakIsSUFBNkNrRCxVQUFVLEtBQU0sSUFBR0gsWUFBYSxFQUFqRixFQUFvRjtNQUNsRkUsUUFBUSxDQUFDZCxJQUFULENBQWM7UUFDWmdCLElBQUksRUFBRUQsVUFETTtRQUVaN0IsT0FBTyxFQUFFNUI7TUFGRyxDQUFkO01BSUE7SUFDRDs7SUFFRCxNQUFNMkQsZUFBZSxHQUFHdEQsdUJBQXVCLENBQUN1RCxJQUF4QixDQUE2QkgsVUFBN0IsQ0FBeEI7O0lBQ0EsSUFBSSxDQUFDRSxlQUFMLEVBQXNCO01BQ3BCO0lBQ0Q7O0lBQ0QsTUFBTUUsY0FBYyxHQUFHdkQsd0JBQXdCLENBQUNzRCxJQUF6QixDQUE4QkgsVUFBOUIsQ0FBdkI7O0lBQ0EsSUFBSSxDQUFDRSxlQUFlLENBQUMsQ0FBRCxDQUFoQixJQUF1QixDQUFDRSxjQUE1QixFQUE0QztNQUMxQztJQUNEOztJQUVELElBQUlQLFlBQVksSUFBSUcsVUFBVSxLQUFNLElBQUdILFlBQWEsRUFBaEQsSUFBcUQsQ0FBQ0EsWUFBMUQsRUFBd0U7TUFDdEVFLFFBQVEsQ0FBQ2QsSUFBVCxDQUFjO1FBQ1pnQixJQUFJLEVBQUVELFVBRE07UUFFWjdCLE9BQU8sRUFBRStCLGVBQWUsQ0FBQyxDQUFELENBQWYsR0FDSixHQUFFMUQsWUFBYSxHQUFFMEQsZUFBZSxDQUFDLENBQUQsQ0FBSSxFQURoQyxHQUVKLEdBQUUxRCxZQUFhLEdBQUU0RCxjQUFjLENBQUMsQ0FBRCxDQUFJO01BSjVCLENBQWQ7SUFNRDtFQUNGOztFQUNELE9BQU9MLFFBQVA7QUFDRDs7QUFhRCxlQUFlTSxvQkFBZixDQUFxQ25DLEdBQXJDLEVBQTBDOEIsVUFBMUMsRUFBc0RNLG1CQUFtQixHQUFHLElBQTVFLEVBQWtGO0VBR2hGLE1BQU1DLFVBQVUsR0FBR1AsVUFBVSxDQUFDUSxPQUFYLENBQW1CLElBQW5CLEVBQXlCLEVBQXpCLENBQW5CO0VBQ0EsSUFBSSxDQUFDQyxTQUFELEVBQVlDLE9BQVosSUFBdUJ6RCxvQkFBM0I7O0VBQ0EsSUFBSXFELG1CQUFKLEVBQXlCO0lBQ3ZCSSxPQUFPLEdBQUdKLG1CQUFtQixJQUFJSSxPQUFPLEdBQUdELFNBQWQsQ0FBN0I7SUFDQUEsU0FBUyxHQUFHSCxtQkFBWjtFQUNEOztFQUNEakIsZ0JBQU9DLEtBQVAsQ0FBYywwQkFBeUJpQixVQUFXLGNBQXJDLEdBQ1YsaUJBQWdCRSxTQUFVLEtBQUlDLE9BQVEsRUFEekM7O0VBRUEsSUFBSSxDQUFDSixtQkFBTCxFQUEwQjtJQUN4QmpCLGdCQUFPQyxLQUFQLENBQWMsa0VBQUQsR0FDViwwQkFESDtFQUVEOztFQUNELE9BQU8sTUFBTS9CLDhCQUE4QixDQUFDLFlBQVk7SUFDdEQsSUFBSW9ELFNBQUo7O0lBQ0EsSUFBSTtNQUNGQSxTQUFTLEdBQUcsTUFBTSxvQ0FBa0JGLFNBQWxCLEVBQTZCQyxPQUE3QixDQUFsQjtJQUNELENBRkQsQ0FFRSxPQUFPRSxDQUFQLEVBQVU7TUFDVixNQUFNLElBQUlDLEtBQUosQ0FBVywyREFBRCxHQUNiLFlBQVdKLFNBQVUsS0FBSUMsT0FBUSwyQ0FEcEIsR0FFYiw0REFGRyxDQUFOO0lBR0Q7O0lBQ0QsTUFBTXhDLEdBQUcsQ0FBQzRDLE9BQUosQ0FBWSxDQUFDLFNBQUQsRUFBYSxPQUFNSCxTQUFVLEVBQTdCLEVBQWlDLGlCQUFnQkosVUFBVyxFQUE1RCxDQUFaLENBQU47SUFDQSxPQUFPSSxTQUFQO0VBQ0QsQ0FYMEMsQ0FBM0M7QUFZRDs7QUFzQ0QsZUFBZUksc0JBQWYsQ0FBdUM3QyxHQUF2QyxFQUE0QzhDLGVBQTVDLEVBQTZEQyxJQUFJLEdBQUcsRUFBcEUsRUFBd0U7RUFDdEUsSUFBSTlCLGdCQUFFQyxPQUFGLENBQVU0QixlQUFWLENBQUosRUFBZ0M7SUFDOUI7RUFDRDs7RUFFRCxNQUFNO0lBQ0pWLG1CQUFtQixHQUFHLElBRGxCO0lBRUpZLHVCQUF1QixHQUFHLElBRnRCO0lBR0pDLDhCQUE4QixHQUFHO0VBSDdCLElBSUZGLElBSko7O0VBTUEsSUFBSSxDQUFDQyx1QkFBTCxFQUE4QjtJQUM1QjdCLGdCQUFPK0IsSUFBUCxDQUFhLDJEQUFELEdBQ1QscURBREg7RUFFRDs7RUFFRCxJQUFJLENBQUNELDhCQUFMLEVBQXFDO0lBQ25DOUIsZ0JBQU8rQixJQUFQLENBQWEsaUVBQUQsR0FDVCw2RkFEUyxHQUVULG1CQUZIO0VBR0Q7O0VBRUQsSUFBSSxDQUFDRix1QkFBRCxJQUE0QixDQUFDQyw4QkFBakMsRUFBaUU7SUFDL0Q7RUFDRDs7RUFHRDlCLGdCQUFPQyxLQUFQLENBQWMsMEJBQXlCOUIsY0FBS2tDLFNBQUwsQ0FBZSxTQUFmLEVBQTBCc0IsZUFBZSxDQUFDdkIsTUFBMUMsRUFBa0QsSUFBbEQsQ0FBd0QsRUFBL0Y7O0VBQ0EsTUFBTTRCLGdCQUFnQixHQUFHLEVBQXpCOztFQUNBLEtBQUssTUFBTUMsSUFBWCxJQUFtQk4sZUFBbkIsRUFBb0M7SUFDbENLLGdCQUFnQixDQUFDcEMsSUFBakIsQ0FBc0IsQ0FBQyxZQUFZO01BQ2pDLElBQUkwQixTQUFKOztNQUNBLElBQUk7UUFDRkEsU0FBUyxHQUFHLE1BQU1OLG9CQUFvQixDQUFDbkMsR0FBRCxFQUFNb0QsSUFBSSxDQUFDckIsSUFBWCxFQUFpQkssbUJBQWpCLENBQXRDOztRQUNBLElBQUlhLDhCQUFKLEVBQW9DO1VBQ2xDRyxJQUFJLENBQUNGLElBQUwsR0FBWSxNQUFNRyxPQUFPLENBQUNaLFNBQUQsQ0FBekI7UUFDRDs7UUFDRCxJQUFJTyx1QkFBSixFQUE2QjtVQUMzQkksSUFBSSxDQUFDRSxLQUFMLEdBQWEsTUFBTUMsT0FBTyxDQUFDZCxTQUFELENBQTFCO1FBQ0Q7TUFDRixDQVJELENBUUUsT0FBT0MsQ0FBUCxFQUFVO1FBQ1Z2QixnQkFBT0MsS0FBUCxDQUFhc0IsQ0FBYjtNQUNELENBVkQsU0FVVTtRQUNSLElBQUlELFNBQUosRUFBZTtVQUNiLE1BQU16QyxHQUFHLENBQUN3RCxpQkFBSixDQUFzQmYsU0FBdEIsQ0FBTjtRQUNEO01BQ0Y7SUFDRixDQWpCcUIsR0FBdEI7RUFrQkQ7O0VBQ0QsTUFBTWdCLGtCQUFFQyxHQUFGLENBQU1QLGdCQUFOLENBQU47O0VBQ0FoQyxnQkFBT0MsS0FBUCxDQUFjLCtCQUFkO0FBQ0Q7O0FBR0QsZUFBZW1DLE9BQWYsQ0FBd0JkLFNBQXhCLEVBQW1DO0VBQ2pDLE9BQU8sQ0FBQyxNQUFNLG9CQUFNO0lBQ2xCa0IsR0FBRyxFQUFHLG9CQUFtQmxCLFNBQVUsWUFEakI7SUFFbEI3QyxPQUFPLEVBQUVSO0VBRlMsQ0FBTixDQUFQLEVBR0h3RSxJQUhKO0FBSUQ7O0FBR0QsZUFBZVAsT0FBZixDQUF3QlosU0FBeEIsRUFBbUM7RUFDakMsT0FBTyxDQUFDLE1BQU0sb0JBQU07SUFDbEJrQixHQUFHLEVBQUcsb0JBQW1CbEIsU0FBVSxlQURqQjtJQUVsQjdDLE9BQU8sRUFBRVI7RUFGUyxDQUFOLENBQVAsRUFHSHdFLElBSEo7QUFJRDs7QUFjRDlELE9BQU8sQ0FBQytELGVBQVIsR0FBMEIsZUFBZUEsZUFBZixDQUFnQzdELEdBQWhDLEVBQXFDQyxPQUFyQyxFQUE4QztFQUN0RSxNQUFNNkQsUUFBUSxHQUFHdkYsbUJBQW1CLENBQUMwRCxJQUFwQixDQUF5QmhDLE9BQXpCLENBQWpCOztFQUNBLElBQUksQ0FBQzZELFFBQUwsRUFBZTtJQUNiLE1BQU0sSUFBSW5CLEtBQUosQ0FBVyxtQ0FBa0MxQyxPQUFRLEdBQXJELENBQU47RUFDRDs7RUFFRCxNQUFNOEQsR0FBRyxHQUFHRCxRQUFRLENBQUMsQ0FBRCxDQUFwQjs7RUFDQTNDLGdCQUFPQyxLQUFQLENBQWMsR0FBRW5CLE9BQVEsa0JBQWlCOEQsR0FBSSxFQUE3Qzs7RUFDQTVDLGdCQUFPQyxLQUFQLENBQWMscUNBQW9DbkIsT0FBUSxHQUExRDs7RUFDQSxNQUFNK0QsR0FBRyxHQUFHLE1BQU1oRSxHQUFHLENBQUNpRSxZQUFKLENBQWlCRixHQUFqQixDQUFsQjs7RUFDQTVDLGdCQUFPQyxLQUFQLENBQWMsc0JBQXFCNEMsR0FBSSxHQUF2Qzs7RUFDQSxPQUFPQSxHQUFQO0FBQ0QsQ0FaRDs7QUFxQkFsRSxPQUFPLENBQUNvRSxpQkFBUixHQUE0QixTQUFTQSxpQkFBVCxDQUE0QnBCLGVBQTVCLEVBQTZDO0VBQ3ZFRSx1QkFBdUIsR0FBRyxJQUQ2QztFQUV2RW1CLGVBQWUsR0FBRztBQUZxRCxJQUdyRSxFQUh3QixFQUdwQjtFQUNOLElBQUlBLGVBQUosRUFBcUI7SUFDbkIsT0FBTyxDQUFDOUYsWUFBRCxDQUFQO0VBQ0Q7O0VBRUQsTUFBTStGLE1BQU0sR0FBRyxFQUFmOztFQUNBLEtBQUssTUFBTTtJQUFDbkUsT0FBRDtJQUFVcUQsS0FBVjtJQUFpQnZCLElBQWpCO0lBQXVCc0M7RUFBdkIsQ0FBWCxJQUFrRHZCLGVBQWxELEVBQW1FO0lBQ2pFLElBQUlFLHVCQUF1QixJQUFJLENBQUFNLEtBQUssU0FBTCxJQUFBQSxLQUFLLFdBQUwsWUFBQUEsS0FBSyxDQUFFL0IsTUFBUCxNQUFrQixDQUFqRCxFQUFvRDtNQUNsREosZ0JBQU8rQixJQUFQLENBQWEseUJBQXdCakQsT0FBUSxTQUFROEIsSUFBSyxJQUE5QyxHQUNULHlDQURIOztNQUVBO0lBQ0Q7O0lBQ0QsSUFBSXNDLFdBQUosRUFBaUI7TUFDZkQsTUFBTSxDQUFDckQsSUFBUCxDQUFZc0QsV0FBWjtJQUNEO0VBQ0Y7O0VBQ0RsRCxnQkFBT0MsS0FBUCxDQUFjLFNBQVE5QixjQUFLa0MsU0FBTCxDQUFlLFNBQWYsRUFBMEI0QyxNQUFNLENBQUM3QyxNQUFqQyxFQUF5QyxJQUF6QyxDQUErQyxLQUFJRixJQUFJLENBQUNDLFNBQUwsQ0FBZThDLE1BQWYsQ0FBdUIsRUFBaEc7O0VBQ0EsT0FBT0EsTUFBUDtBQUNELENBckJEOztBQThEQXRFLE9BQU8sQ0FBQ3dFLGtCQUFSLEdBQTZCLGVBQWVBLGtCQUFmLENBQW1DdEUsR0FBbkMsRUFBd0M7RUFDbkV1RSxtQkFBbUIsR0FBRyxJQUQ2QztFQUVuRXZCLHVCQUF1QixHQUFHLElBRnlDO0VBR25FWixtQkFBbUIsR0FBRyxJQUg2QztFQUluRWEsOEJBQThCLEdBQUc7QUFKa0MsSUFLakUsRUFMeUIsRUFLckI7RUFDTjlCLGdCQUFPQyxLQUFQLENBQWEsc0NBQWI7O0VBQ0EsTUFBTTBCLGVBQWUsR0FBRyxNQUFNcEIsaUJBQWlCLENBQUMxQixHQUFELEVBQU11RSxtQkFBTixDQUEvQztFQUVBLE1BQU0xQixzQkFBc0IsQ0FBQzdDLEdBQUQsRUFBTThDLGVBQU4sRUFBdUI7SUFDakRFLHVCQURpRDtJQUVqREMsOEJBRmlEO0lBR2pEYjtFQUhpRCxDQUF2QixDQUE1Qjs7RUFNQSxLQUFLLE1BQU1vQyxjQUFYLElBQTZCMUIsZUFBN0IsRUFBOEM7SUFDNUMsTUFBTTtNQUFDN0MsT0FBRDtNQUFVaUQ7SUFBVixJQUFrQnNCLGNBQXhCO0lBQ0FBLGNBQWMsQ0FBQ0gsV0FBZixHQUE2QixJQUE3QjtJQUVBLElBQUlJLE1BQU0sR0FBR3hFLE9BQWI7SUFDQSxJQUFJeUUsT0FBTyxHQUFHQyxTQUFkOztJQUNBLElBQUksQ0FBQ0osbUJBQUwsRUFBMEI7TUFDeEIsTUFBTUssUUFBUSxHQUFHbkcsbUJBQW1CLENBQUN3RCxJQUFwQixDQUF5QmhDLE9BQXpCLENBQWpCOztNQUNBLElBQUk7UUFHRixNQUFNK0QsR0FBRyxHQUFHWSxRQUFRLEdBQUdBLFFBQVEsQ0FBQyxDQUFELENBQVgsR0FBaUIsTUFBTTlFLE9BQU8sQ0FBQytELGVBQVIsQ0FBd0I3RCxHQUF4QixFQUE2QkMsT0FBN0IsQ0FBM0M7UUFDQXdFLE1BQU0sR0FBSSxHQUFFbkcsWUFBYSxHQUFFMEYsR0FBSSxFQUEvQjtRQUNBLE1BQU1GLFFBQVEsR0FBR3ZGLG1CQUFtQixDQUFDMEQsSUFBcEIsQ0FBeUJoQyxPQUF6QixDQUFqQjtRQUNBeUUsT0FBTyxHQUFHO1VBQ1JHLElBQUksRUFBRWIsR0FERTtVQUVSYyxFQUFFLEVBQUVoQixRQUFRLEdBQUdBLFFBQVEsQ0FBQyxDQUFELENBQVgsR0FBaUI7UUFGckIsQ0FBVjtNQUlELENBVkQsQ0FVRSxPQUFPcEIsQ0FBUCxFQUFVO1FBQ1Z2QixnQkFBTzRELElBQVAsQ0FBWXJDLENBQUMsQ0FBQ3NDLE9BQWQ7O1FBQ0E7TUFDRDtJQUNGOztJQUVEUixjQUFjLENBQUNILFdBQWYsR0FBNkJJLE1BQTdCO0lBQ0EsTUFBTVEsR0FBRyxHQUFHbEYsaUJBQWlCLENBQUNDLEdBQUQsRUFBTXlFLE1BQU4sQ0FBN0I7O0lBQ0EsSUFBSXZCLElBQUksSUFBSXdCLE9BQVosRUFBcUI7TUFDbkIxRixzQkFBc0IsQ0FBQ2tHLEdBQXZCLENBQTJCRCxHQUEzQixFQUFnQztRQUFFL0IsSUFBRjtRQUFRd0I7TUFBUixDQUFoQztJQUNELENBRkQsTUFFTyxJQUFJMUYsc0JBQXNCLENBQUNtRyxHQUF2QixDQUEyQkYsR0FBM0IsQ0FBSixFQUFxQztNQUMxQ2pHLHNCQUFzQixDQUFDb0csR0FBdkIsQ0FBMkJILEdBQTNCO0lBQ0Q7RUFDRjs7RUFDRCxPQUFPbkMsZUFBUDtBQUNELENBaEREOztBQTZFQWhELE9BQU8sQ0FBQ3VGLGlCQUFSLEdBQTRCLFNBQVNBLGlCQUFULENBQTRCckYsR0FBNUIsRUFBaUNDLE9BQWpDLEVBQTBDO0VBQ3BFLE1BQU1nRixHQUFHLEdBQUdsRixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLENBQTdCO0VBQ0EsT0FBT2pCLHNCQUFzQixDQUFDc0csR0FBdkIsQ0FBMkJMLEdBQTNCLENBQVA7QUFDRCxDQUhEOztBQWVBbkYsT0FBTyxDQUFDeUYsc0JBQVIsR0FBaUMsU0FBU0Esc0JBQVQsQ0FBaUN4QyxJQUFqQyxFQUF1Q3lDLFFBQXZDLEVBQWlEQyxjQUFqRCxFQUFpRTtFQUFBOztFQUNoRyxNQUFNQyxJQUFJLEdBQUc7SUFBRUMsYUFBYSxFQUFFO0VBQWpCLENBQWI7RUFFQSxNQUFNQyxjQUFjLEdBQUcsd0JBQUE3QyxJQUFJLENBQUM0QyxhQUFMLDRFQUFvQkMsY0FBcEIsS0FDbEI3QyxJQUFJLENBQUM4QyxVQURhLEtBRWxCSixjQUZrQixhQUVsQkEsY0FGa0IsK0NBRWxCQSxjQUFjLENBQUV2QyxJQUZFLHlEQUVsQixxQkFBdUIsaUJBQXZCLENBRmtCLENBQXZCOztFQUdBLElBQUkwQyxjQUFKLEVBQW9CO0lBRWxCRixJQUFJLENBQUNDLGFBQUwsQ0FBbUJDLGNBQW5CLEdBQW9DQSxjQUFwQztFQUNEOztFQUNELElBQUkzRSxnQkFBRTZFLFNBQUYsQ0FBWS9DLElBQUksQ0FBQ2dELG1CQUFqQixDQUFKLEVBQTJDO0lBQ3pDTCxJQUFJLENBQUNDLGFBQUwsQ0FBbUJLLG9CQUFuQixHQUEwQ2pELElBQUksQ0FBQ2dELG1CQUEvQztFQUNEOztFQUNELElBQUloRCxJQUFJLENBQUNrRCxvQkFBVCxFQUErQjtJQUM3QlAsSUFBSSxDQUFDQyxhQUFMLENBQW1CQyxjQUFuQixHQUFvQzdDLElBQUksQ0FBQ2tELG9CQUF6QztFQUNEOztFQUNELElBQUlsRCxJQUFJLENBQUNtRCxxQkFBVCxFQUFnQztJQUM5QlIsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUFuQixHQUFxQ3BELElBQUksQ0FBQ21ELHFCQUExQztFQUNEOztFQUNELElBQUluRCxJQUFJLENBQUNxRCxvQkFBVCxFQUErQjtJQUM3QlYsSUFBSSxDQUFDQyxhQUFMLENBQW1CVSxjQUFuQixHQUFvQ3RELElBQUksQ0FBQ3FELG9CQUF6QztFQUNELENBRkQsTUFFTyxJQUFJWCxjQUFjLFNBQWQsSUFBQUEsY0FBYyxXQUFkLDZCQUFBQSxjQUFjLENBQUVmLE9BQWhCLHdFQUF5QkcsSUFBekIsSUFBaUNZLGNBQWpDLGFBQWlDQSxjQUFqQyx5Q0FBaUNBLGNBQWMsQ0FBRWYsT0FBakQsbURBQWlDLHVCQUF5QkksRUFBOUQsRUFBa0U7SUFDdkVZLElBQUksQ0FBQ0MsYUFBTCxDQUFtQlUsY0FBbkIsR0FBb0NaLGNBQWMsQ0FBQ2YsT0FBZixDQUF1QkcsSUFBM0Q7RUFDRDs7RUFDRCxJQUFJNUQsZ0JBQUVxRixPQUFGLENBQVV2RCxJQUFJLENBQUN3RCxXQUFmLE1BQWdDLGtCQUFwQyxFQUF3RDtJQUN0RGIsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUFuQixHQUFxQ3BELElBQUksQ0FBQ3lELFdBQTFDO0VBQ0Q7O0VBQ0QsSUFBSXpELElBQUksQ0FBQzBELGdCQUFULEVBQTJCO0lBQ3pCZixJQUFJLENBQUNlLGdCQUFMLEdBQXdCMUQsSUFBSSxDQUFDMEQsZ0JBQTdCO0VBQ0Q7O0VBQ0QsTUFBTUMsUUFBUSxHQUFHekYsZ0JBQUVxRixPQUFGLENBQVVaLElBQUksQ0FBQ0MsYUFBTCxDQUFtQkMsY0FBN0IsTUFBaUQsUUFBbEU7O0VBQ0EsSUFBSTNFLGdCQUFFMEYsUUFBRixDQUFXN0gsMEJBQVgsRUFBdUM0RyxJQUFJLENBQUNDLGFBQUwsQ0FBbUJDLGNBQTFELEtBQTZFYyxRQUFqRixFQUEyRjtJQUl6RixJQUFJQSxRQUFKLEVBQWM7TUFDWmhCLElBQUksQ0FBQ0MsYUFBTCxDQUFtQkMsY0FBbkIsR0FBb0MvRyxtQkFBcEM7SUFDRDs7SUFDRCxPQUFPNkcsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUExQjtJQUNBLE9BQU9ULElBQUksQ0FBQ0MsYUFBTCxDQUFtQlUsY0FBMUI7RUFDRDs7RUFFRFgsSUFBSSxDQUFDQyxhQUFMLENBQW1CaUIsbUJBQW5CLEdBQXlDcEIsUUFBekM7O0VBRUEsSUFBSXZFLGdCQUFFNEYsYUFBRixDQUFnQjlELElBQUksQ0FBQytELFlBQXJCLEtBQXNDN0YsZ0JBQUU0RixhQUFGLENBQWdCOUQsSUFBSSxDQUFDZ0Usa0JBQXJCLENBQTFDLEVBQW9GO0lBQ2xGLElBQUloRSxJQUFJLENBQUMrRCxZQUFULEVBQXVCO01BQ3JCM0YsZ0JBQU80RCxJQUFQLENBQWEsZ0ZBQWI7SUFDRDs7SUFDRFcsSUFBSSxDQUFDb0IsWUFBTCxHQUFvQi9ELElBQUksQ0FBQ2dFLGtCQUFMLElBQTJCaEUsSUFBSSxDQUFDK0QsWUFBcEQ7RUFDRDs7RUFDRCxJQUFJL0QsSUFBSSxDQUFDaUUsd0JBQVQsRUFBbUM7SUFDakM3RixnQkFBTzRELElBQVAsQ0FBYSwrREFBRCxHQUNULDZFQURIOztJQUVBLE1BQU1rQyxPQUFPLEdBQUc7TUFBQ0MsV0FBVyxFQUFFO0lBQWQsQ0FBaEI7SUFFQXhCLElBQUksQ0FBQ29CLFlBQUwsR0FBb0JwQixJQUFJLENBQUNvQixZQUFMLEdBQ2hCSyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCMUIsSUFBSSxDQUFDb0IsWUFBdkIsRUFBcUNHLE9BQXJDLENBRGdCLEdBRWhCQSxPQUZKO0VBR0Q7O0VBRUQsNEJBQUlsRSxJQUFJLENBQUM0QyxhQUFULGlEQUFJLHFCQUFvQjBCLFNBQXhCLEVBQW1DO0lBRWpDdEUsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQjJCLElBQW5CLEdBQTBCLENBQUMsSUFBSXZFLElBQUksQ0FBQzRDLGFBQUwsQ0FBbUIyQixJQUFuQixJQUEyQixFQUEvQixDQUFELEVBQXFDLEdBQUd2RSxJQUFJLENBQUM0QyxhQUFMLENBQW1CMEIsU0FBM0QsQ0FBMUI7SUFDQSxPQUFPdEUsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQjBCLFNBQTFCO0VBQ0Q7O0VBRURsRyxnQkFBT0MsS0FBUCxDQUFhLDhDQUNYQyxJQUFJLENBQUNDLFNBQUwsQ0FBZW9FLElBQUksQ0FBQ0MsYUFBcEIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBekMsQ0FERjs7RUFHQSxNQUFNNEIsaUJBQWlCLEdBQUcsRUFBMUI7O0VBQ0EsS0FBSyxNQUFNLENBQUNDLEdBQUQsRUFBTUMsR0FBTixDQUFYLElBQXlCeEcsZ0JBQUV5RyxPQUFGLENBQVUzRSxJQUFJLENBQUM0QyxhQUFmLENBQXpCLEVBQXdEO0lBQ3RELElBQUkxRSxnQkFBRTBHLFdBQUYsQ0FBY2pDLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLENBQWQsQ0FBSixFQUE0QztNQUMxQzlCLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLElBQTBCQyxHQUExQjtJQUNELENBRkQsTUFFTztNQUNMRixpQkFBaUIsQ0FBQ3hHLElBQWxCLENBQXVCeUcsR0FBdkI7SUFDRDtFQUNGOztFQUNELElBQUksQ0FBQ3ZHLGdCQUFFQyxPQUFGLENBQVVxRyxpQkFBVixDQUFMLEVBQW1DO0lBQ2pDcEcsZ0JBQU8rQixJQUFQLENBQVksa0VBQ1YsZ0NBREY7O0lBRUEsS0FBSyxNQUFNMEUsT0FBWCxJQUFzQkwsaUJBQXRCLEVBQXlDO01BQ3ZDcEcsZ0JBQU8rQixJQUFQLENBQWEsS0FBSTBFLE9BQVEsS0FBSXZHLElBQUksQ0FBQ0MsU0FBTCxDQUFleUIsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQmlDLE9BQW5CLENBQWYsQ0FBNEMsR0FBekU7SUFDRDtFQUNGOztFQUVELE9BQU9sQyxJQUFQO0FBQ0QsQ0F0RkQ7O2VBd0ZlNUYsTyJ9
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"mobile",
|
|
10
10
|
"mobile testing"
|
|
11
11
|
],
|
|
12
|
-
"version": "5.0.
|
|
12
|
+
"version": "5.0.13",
|
|
13
13
|
"author": "appium",
|
|
14
14
|
"license": "Apache-2.0",
|
|
15
15
|
"repository": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@appium/base-driver": "^8.5.2",
|
|
39
|
-
"@appium/support": "^2.
|
|
39
|
+
"@appium/support": "^2.58.0",
|
|
40
40
|
"@babel/runtime": "^7.0.0",
|
|
41
41
|
"appium-adb": "^9.0.0",
|
|
42
42
|
"appium-chromedriver": "^5.0.1",
|
|
@@ -77,8 +77,8 @@
|
|
|
77
77
|
"precommit-test"
|
|
78
78
|
],
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@appium/gulp-plugins": "^
|
|
81
|
-
"@appium/eslint-config-appium": "^
|
|
80
|
+
"@appium/gulp-plugins": "^7.0.0",
|
|
81
|
+
"@appium/eslint-config-appium": "^6.0.0",
|
|
82
82
|
"@appium/test-support": "^1.0.0",
|
|
83
83
|
"@babel/core": "^7.16.0",
|
|
84
84
|
"@babel/eslint-parser": "^7.16.3",
|
|
@@ -87,12 +87,13 @@
|
|
|
87
87
|
"android-apidemos": "^4.0.0",
|
|
88
88
|
"chai": "^4.1.2",
|
|
89
89
|
"chai-as-promised": "^7.1.1",
|
|
90
|
+
"eslint-config-prettier": "^8.5.0",
|
|
90
91
|
"gulp": "^4.0.0",
|
|
91
|
-
"mocha": "^
|
|
92
|
+
"mocha": "^10.0.0",
|
|
92
93
|
"mock-fs": "^5.0.0",
|
|
93
94
|
"pre-commit": "^1.1.3",
|
|
94
95
|
"semantic-release": "^19.0.2",
|
|
95
|
-
"sinon": "^
|
|
96
|
+
"sinon": "^14.0.0",
|
|
96
97
|
"xpath": "^0.x"
|
|
97
98
|
}
|
|
98
99
|
}
|