appium-android-driver 5.2.10 → 5.3.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/README.md +0 -38
- package/build/index.js +2 -4
- package/build/lib/android-helpers.js +77 -7
- package/build/lib/bootstrap.js +24 -7
- package/build/lib/commands/actions.js +2 -4
- package/build/lib/commands/alert.js +2 -4
- package/build/lib/commands/app-management.js +55 -5
- package/build/lib/commands/context.js +2 -4
- package/build/lib/commands/coverage.js +2 -4
- package/build/lib/commands/element.js +2 -4
- package/build/lib/commands/emu-console.js +2 -4
- package/build/lib/commands/execute.js +8 -4
- package/build/lib/commands/file-actions.js +2 -4
- package/build/lib/commands/find.js +2 -4
- package/build/lib/commands/general.js +2 -4
- package/build/lib/commands/ime.js +2 -4
- package/build/lib/commands/index.js +2 -4
- package/build/lib/commands/intent.js +2 -4
- package/build/lib/commands/log.js +2 -4
- package/build/lib/commands/media-projection.js +2 -4
- package/build/lib/commands/network.js +2 -4
- package/build/lib/commands/performance.js +2 -4
- package/build/lib/commands/recordscreen.js +11 -8
- package/build/lib/commands/shell.js +2 -4
- package/build/lib/commands/streamscreen.js +2 -4
- package/build/lib/commands/system-bars.js +2 -4
- package/build/lib/commands/touch.js +2 -4
- package/build/lib/desired-caps.js +2 -4
- package/build/lib/driver.js +11 -8
- package/build/lib/logger.js +2 -4
- package/build/lib/uiautomator.js +2 -4
- package/build/lib/unlock-helpers.js +2 -4
- package/build/lib/webview-helpers.js +3 -5
- package/lib/android-helpers.js +64 -3
- package/lib/bootstrap.js +25 -3
- package/lib/commands/app-management.js +134 -2
- package/lib/commands/execute.js +6 -0
- package/lib/commands/recordscreen.js +6 -3
- package/lib/driver.js +9 -4
- package/lib/webview-helpers.js +1 -1
- package/package.json +44 -25
package/build/lib/driver.js
CHANGED
|
@@ -236,11 +236,16 @@ class AndroidDriver extends _driver.BaseDriver {
|
|
|
236
236
|
await this.initAUT();
|
|
237
237
|
this.bootstrap = new _androidHelpers.helpers.bootstrap(this.adb, this.opts.bootstrapPort, this.opts.websocket);
|
|
238
238
|
await this.bootstrap.start(this.opts.appPackage, this.opts.disableAndroidWatchers, this.opts.acceptSslCerts);
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
239
|
+
|
|
240
|
+
(async () => {
|
|
241
|
+
try {
|
|
242
|
+
await this.bootstrap.onUnexpectedShutdown;
|
|
243
|
+
} catch (err) {
|
|
244
|
+
if (!this.bootstrap.ignoreUnexpectedShutdown) {
|
|
245
|
+
await this.startUnexpectedShutdown(err);
|
|
246
|
+
}
|
|
242
247
|
}
|
|
243
|
-
});
|
|
248
|
+
})();
|
|
244
249
|
|
|
245
250
|
if (!this.opts.skipUnlock) {
|
|
246
251
|
await _androidHelpers.helpers.unlock(this, this.adb, this.caps);
|
|
@@ -503,7 +508,5 @@ class AndroidDriver extends _driver.BaseDriver {
|
|
|
503
508
|
|
|
504
509
|
exports.AndroidDriver = AndroidDriver;
|
|
505
510
|
var _default = AndroidDriver;
|
|
506
|
-
exports.default = _default;
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbIkFQUF9FWFRFTlNJT04iLCJERVZJQ0VfUE9SVCIsIk5PX1BST1hZIiwiUmVnRXhwIiwiQW5kcm9pZERyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImRlc2lyZWRDb25zdHJhaW50cyIsInNlc3Npb25DaHJvbWVkcml2ZXJzIiwiandwUHJveHlBY3RpdmUiLCJqd3BQcm94eUF2b2lkIiwiXyIsImNsb25lIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJvblNldHRpbmdzVXBkYXRlIiwiYmluZCIsImNocm9tZWRyaXZlciIsImFwa1N0cmluZ3MiLCJ1bmxvY2tlciIsImhlbHBlcnMiLCJjbWQiLCJmbiIsInRvUGFpcnMiLCJjb21tYW5kcyIsInByb3RvdHlwZSIsImN1ckNvbnRleHQiLCJkZWZhdWx0Q29udGV4dE5hbWUiLCJjcmVhdGVTZXNzaW9uIiwiYXJncyIsInNlc3Npb25JZCIsImNhcHMiLCJzZXJ2ZXJEZXRhaWxzIiwicGxhdGZvcm0iLCJ3ZWJTdG9yYWdlRW5hYmxlZCIsInRha2VzU2NyZWVuc2hvdCIsImphdmFzY3JpcHRFbmFibGVkIiwiZGF0YWJhc2VFbmFibGVkIiwibmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkIiwibG9jYXRpb25Db250ZXh0RW5hYmxlZCIsIndhcm5pbmdzIiwiZGVzaXJlZCIsIk9iamVjdCIsImFzc2lnbiIsImRlZmF1bHRPcHRzIiwiYWN0aW9uIiwiY2F0ZWdvcnkiLCJmbGFncyIsImRpc2FibGVBbmRyb2lkV2F0Y2hlcnMiLCJ0bXBEaXIiLCJ0ZW1wRGlyIiwic3RhdGljRGlyIiwiZnVsbFJlc2V0IiwiYXV0b0xhdW5jaCIsImFkYlBvcnQiLCJERUZBVUxUX0FEQl9QT1JUIiwiYm9vdHN0cmFwUG9ydCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRlZmF1bHRzIiwidXNlVW5sb2NrSGVscGVyQXBwIiwiaXNVbmRlZmluZWQiLCJ1bmxvY2tUeXBlIiwibm9SZXNldCIsImZhc3RSZXNldCIsInNraXBVbmluc3RhbGwiLCJpc0Nocm9tZVNlc3Npb24iLCJhZGp1c3RCcm93c2VyU2Vzc2lvbkNhcHMiLCJuYXRpdmVXZWJTY3JlZW5zaG90IiwicHVzaCIsInJlYm9vdCIsInNldEF2ZEZyb21DYXBhYmlsaXRpZXMiLCJ1ZGlkIiwiZW1Qb3J0IiwiZ2V0RGV2aWNlSW5mb0Zyb21DYXBzIiwiYWRiIiwiY3JlYXRlQURCIiwic3VwcHJlc3NLaWxsU2VydmVyIiwicmVtb3RlQWRiSG9zdCIsImNsZWFyRGV2aWNlTG9nc09uU3RhcnQiLCJhZGJFeGVjVGltZW91dCIsImFsbG93T2ZmbGluZURldmljZXMiLCJnZXRBcGlMZXZlbCIsImxvZyIsIndhcm4iLCJpc1BhY2thZ2VPckJ1bmRsZSIsImFwcCIsImFwcFBhY2thZ2UiLCJjb25maWd1cmVBcHAiLCJjaGVja0FwcFByZXNlbnQiLCJhcHBPbkRldmljZSIsImluZm8iLCJjaGVja1BhY2thZ2VQcmVzZW50IiwidXRpbCIsImhhc1ZhbHVlIiwibmV0d29ya1NwZWVkIiwiaXNFbXVsYXRvciIsImVuc3VyZU5ldHdvcmtTcGVlZCIsImdwc0VuYWJsZWQiLCJ0b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyIiwic3RhcnRBbmRyb2lkU2Vzc2lvbiIsImUiLCJkZWxldGVTZXNzaW9uIiwiaWduIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiaXNDaHJvbWVCcm93c2VyIiwiYnJvd3Nlck5hbWUiLCJrZXkiLCJ2YWx1ZSIsInNldENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkiLCJkZWZhdWx0SU1FIiwiaW5pdERldmljZSIsImN1ckRldmljZUlkIiwiZGV2aWNlVURJRCIsImdldFBsYXRmb3JtVmVyc2lvbiIsImRldmljZVNjcmVlblNpemUiLCJnZXRTY3JlZW5TaXplIiwiZGV2aWNlTW9kZWwiLCJnZXRNb2RlbCIsImRldmljZU1hbnVmYWN0dXJlciIsImdldE1hbnVmYWN0dXJlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0SGlkZGVuQXBpUG9saWN5IiwiaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IiLCJzZXRBbmltYXRpb25TdGF0ZSIsIl93YXNXaW5kb3dBbmltYXRpb25EaXNhYmxlZCIsImluaXRBVVQiLCJib290c3RyYXAiLCJ3ZWJzb2NrZXQiLCJzdGFydCIsImFjY2VwdFNzbENlcnRzIiwib25VbmV4cGVjdGVkU2h1dGRvd24iLCJjYXRjaCIsImVyciIsImlnbm9yZVVuZXhwZWN0ZWRTaHV0ZG93biIsInN0YXJ0VW5leHBlY3RlZFNodXRkb3duIiwic2tpcFVubG9jayIsInVubG9jayIsInVwZGF0ZSIsInN0YXJ0Q2hyb21lU2Vzc2lvbiIsInN0YXJ0QVVUIiwib3JpZW50YXRpb24iLCJkZWJ1ZyIsInNldE9yaWVudGF0aW9uIiwiaW5pdEF1dG9XZWJ2aWV3IiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsInRpbWVvdXQiLCJhdXRvV2Vidmlld1RpbWVvdXQiLCJyZXRyeUludGVydmFsIiwic2V0Q29udGV4dCIsImxhdW5jaEluZm8iLCJnZXRMYXVuY2hJbmZvIiwidW5pbnN0YWxsT3RoZXJQYWNrYWdlcyIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJwYXJzZUFycmF5IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIm90aGVyQXBwcyIsIm1lc3NhZ2UiLCJCIiwiYWxsIiwibWFwIiwiaW5zdGFsbE90aGVyQXBrcyIsInJlc2V0QXBwIiwidW5pbnN0YWxsQXBrIiwiaW5zdGFsbEFwayIsImFwa1N0cmluZ3NGb3JMYW5ndWFnZSIsInB1c2hTdHJpbmdzIiwibGFuZ3VhZ2UiLCJzaGFyZWRQcmVmZXJlbmNlcyIsInNldFNoYXJlZFByZWZlcmVuY2VzIiwiZnMiLCJleGlzdHMiLCJzaGVsbCIsImNvbXByZXNzIiwic2VuZEFjdGlvbiIsImNvbXByZXNzTGF5b3V0IiwiaXNFbXB0eSIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwic3RvcFJlY29yZGluZ1NjcmVlbiIsInJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyIsInNlcnZlciIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJzdG9wQ2hyb21lZHJpdmVyUHJveGllcyIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJzZXRJTUUiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJmb3JjZVN0b3AiLCJnb1RvSG9tZSIsInNodXRkb3duIiwic3RvcExvZ2NhdCIsInNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3kiLCJhdmROYW1lIiwia2lsbEVtdWxhdG9yIiwic2hhcmVkUHJlZnMiLCJuYW1lIiwiSlNPTiIsInN0cmluZ2lmeSIsInJlbW90ZVBhdGgiLCJyZW1vdGVGaWxlIiwibG9jYWxQYXRoIiwiYnVpbGRlciIsImdldFByZWZzQnVpbGRlciIsImJ1aWxkIiwicHJlZnMiLCJ0b0ZpbGUiLCJ1bmxpbmsiLCJTaGFyZWRQcmVmc0J1aWxkZXIiLCJwcm94eUFjdGl2ZSIsImdldFByb3h5QXZvaWRMaXN0IiwiY2FuUHJveHkiLCJpc0Z1bmN0aW9uIiwicHJveHlSZXFSZXMiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvZHJpdmVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgZGVzaXJlZENvbnN0cmFpbnRzIGZyb20gJy4vZGVzaXJlZC1jYXBzJztcbmltcG9ydCBjb21tYW5kcyBmcm9tICcuL2NvbW1hbmRzL2luZGV4JztcbmltcG9ydCB7XG4gIGhlbHBlcnMsIGVuc3VyZU5ldHdvcmtTcGVlZCxcbiAgU0VUVElOR1NfSEVMUEVSX1BLR19JRCxcbn0gZnJvbSAnLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IERFRkFVTFRfQURCX1BPUlQgfSBmcm9tICdhcHBpdW0tYWRiJztcbmltcG9ydCB7IGZzLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCB7IFNoYXJlZFByZWZzQnVpbGRlciB9IGZyb20gJ3NoYXJlZC1wcmVmZXJlbmNlcy1idWlsZGVyJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuY29uc3QgQVBQX0VYVEVOU0lPTiA9ICcuYXBrJztcbmNvbnN0IERFVklDRV9QT1JUID0gNDcyNDtcblxuLy8gVGhpcyBpcyBhIHNldCBvZiBtZXRob2RzIGFuZCBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG9cbi8vIENocm9tZWRyaXZlclxuY29uc3QgTk9fUFJPWFkgPSBbXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9vcmllbnRhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbl07XG5cbmNsYXNzIEFuZHJvaWREcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICAgIHN1cGVyKG9wdHMsIHNob3VsZFZhbGlkYXRlQ2Fwcyk7XG5cbiAgICB0aGlzLmxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ3hwYXRoJyxcbiAgICAgICdpZCcsXG4gICAgICAnY2xhc3MgbmFtZScsXG4gICAgICAnYWNjZXNzaWJpbGl0eSBpZCcsXG4gICAgICAnLWFuZHJvaWQgdWlhdXRvbWF0b3InXG4gICAgXTtcbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDb25zdHJhaW50cztcbiAgICB0aGlzLnNlc3Npb25DaHJvbWVkcml2ZXJzID0ge307XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IF8uY2xvbmUoTk9fUFJPWFkpO1xuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3Moe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IGZhbHNlfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25TZXR0aW5nc1VwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmNocm9tZWRyaXZlciA9IG51bGw7XG4gICAgdGhpcy5hcGtTdHJpbmdzID0ge307XG4gICAgdGhpcy51bmxvY2tlciA9IGhlbHBlcnMudW5sb2NrZXI7XG5cbiAgICBmb3IgKGxldCBbY21kLCBmbl0gb2YgXy50b1BhaXJzKGNvbW1hbmRzKSkge1xuICAgICAgQW5kcm9pZERyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xuICAgIH1cblxuICAgIC8vIG5lZWRzIHRvIGJlIGFmdGVyIHRoZSBsaW5lIHdoaWNoIGFzc2lnbnMgY29tbWFuZHMgdG8gQW5kcm9pZERyaXZlci5wcm90b3R5cGUsIHNvIHRoYXQgYHRoaXMuZGVmYXVsdENvbnRleHROYW1lYCBpcyBkZWZpbmVkLlxuICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgLy8gdGhlIHdob2xlIGNyZWF0ZVNlc3Npb24gZmxvdyBpcyBzdXJyb3VuZGVkIGluIGEgdHJ5LWNhdGNoIHN0YXRlbWVudFxuICAgIC8vIGlmIGNyZWF0aW5nIGEgc2Vzc2lvbiBmYWlscyBhdCBhbnkgcG9pbnQsIHdlIHRlYXJkb3duIGV2ZXJ5dGhpbmcgd2VcbiAgICAvLyBzZXQgdXAgYmVmb3JlIHRocm93aW5nIHRoZSBlcnJvci5cbiAgICB0cnkge1xuICAgICAgbGV0IFtzZXNzaW9uSWQsIGNhcHNdID0gYXdhaXQgc3VwZXIuY3JlYXRlU2Vzc2lvbiguLi5hcmdzKTtcblxuICAgICAgbGV0IHNlcnZlckRldGFpbHMgPSB7XG4gICAgICAgIHBsYXRmb3JtOiAnTElOVVgnLFxuICAgICAgICB3ZWJTdG9yYWdlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHRha2VzU2NyZWVuc2hvdDogdHJ1ZSxcbiAgICAgICAgamF2YXNjcmlwdEVuYWJsZWQ6IHRydWUsXG4gICAgICAgIGRhdGFiYXNlRW5hYmxlZDogZmFsc2UsXG4gICAgICAgIG5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgbG9jYXRpb25Db250ZXh0RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIHdhcm5pbmdzOiB7fSxcbiAgICAgICAgZGVzaXJlZDogdGhpcy5jYXBzXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNhcHMgPSBPYmplY3QuYXNzaWduKHNlcnZlckRldGFpbHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAgIC8vIGFzc2lnbmluZyBkZWZhdWx0c1xuICAgICAgbGV0IGRlZmF1bHRPcHRzID0ge1xuICAgICAgICBhY3Rpb246ICdhbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTicsXG4gICAgICAgIGNhdGVnb3J5OiAnYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVInLFxuICAgICAgICBmbGFnczogJzB4MTAyMDAwMDAnLFxuICAgICAgICBkaXNhYmxlQW5kcm9pZFdhdGNoZXJzOiBmYWxzZSxcbiAgICAgICAgdG1wRGlyOiBhd2FpdCB0ZW1wRGlyLnN0YXRpY0RpcigpLFxuICAgICAgICBmdWxsUmVzZXQ6IGZhbHNlLFxuICAgICAgICBhdXRvTGF1bmNoOiB0cnVlLFxuICAgICAgICBhZGJQb3J0OiBERUZBVUxUX0FEQl9QT1JULFxuICAgICAgICBib290c3RyYXBQb3J0OiBERVZJQ0VfUE9SVCxcbiAgICAgICAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiA5MDAwMCxcbiAgICAgIH07XG4gICAgICBfLmRlZmF1bHRzKHRoaXMub3B0cywgZGVmYXVsdE9wdHMpO1xuICAgICAgdGhpcy51c2VVbmxvY2tIZWxwZXJBcHAgPSBfLmlzVW5kZWZpbmVkKHRoaXMuY2Fwcy51bmxvY2tUeXBlKTtcblxuICAgICAgLy8gbm90IHVzZXIgdmlzaWJsZSB2aWEgY2Fwc1xuICAgICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMub3B0cy5mdWxsUmVzZXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgIHRoaXMub3B0cy5ub1Jlc2V0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLm9wdHMuZmFzdFJlc2V0ID0gIXRoaXMub3B0cy5mdWxsUmVzZXQgJiYgIXRoaXMub3B0cy5ub1Jlc2V0O1xuICAgICAgdGhpcy5vcHRzLnNraXBVbmluc3RhbGwgPSB0aGlzLm9wdHMuZmFzdFJlc2V0IHx8IHRoaXMub3B0cy5ub1Jlc2V0O1xuXG4gICAgICBpZiAodGhpcy5pc0Nocm9tZVNlc3Npb24pIHtcbiAgICAgICAgaGVscGVycy5hZGp1c3RCcm93c2VyU2Vzc2lvbkNhcHModGhpcy5vcHRzKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5uYXRpdmVXZWJTY3JlZW5zaG90KSB7XG4gICAgICAgIHRoaXMuandwUHJveHlBdm9pZC5wdXNoKFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NjcmVlbnNob3QnKV0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgICB0aGlzLnNldEF2ZEZyb21DYXBhYmlsaXRpZXMoY2Fwcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIGdldCBkZXZpY2UgdWRpZCBmb3IgdGhpcyBzZXNzaW9uXG4gICAgICBsZXQge3VkaWQsIGVtUG9ydH0gPSBhd2FpdCBoZWxwZXJzLmdldERldmljZUluZm9Gcm9tQ2Fwcyh0aGlzLm9wdHMpO1xuICAgICAgdGhpcy5vcHRzLnVkaWQgPSB1ZGlkO1xuICAgICAgdGhpcy5vcHRzLmVtUG9ydCA9IGVtUG9ydDtcblxuICAgICAgLy8gc2V0IHVwIGFuIGluc3RhbmNlIG9mIEFEQlxuICAgICAgdGhpcy5hZGIgPSBhd2FpdCBoZWxwZXJzLmNyZWF0ZUFEQih7XG4gICAgICAgIHVkaWQ6IHRoaXMub3B0cy51ZGlkLFxuICAgICAgICBlbVBvcnQ6IHRoaXMub3B0cy5lbVBvcnQsXG4gICAgICAgIGFkYlBvcnQ6IHRoaXMub3B0cy5hZGJQb3J0LFxuICAgICAgICBzdXBwcmVzc0tpbGxTZXJ2ZXI6IHRoaXMub3B0cy5zdXBwcmVzc0tpbGxTZXJ2ZXIsXG4gICAgICAgIHJlbW90ZUFkYkhvc3Q6IHRoaXMub3B0cy5yZW1vdGVBZGJIb3N0LFxuICAgICAgICBjbGVhckRldmljZUxvZ3NPblN0YXJ0OiB0aGlzLm9wdHMuY2xlYXJEZXZpY2VMb2dzT25TdGFydCxcbiAgICAgICAgYWRiRXhlY1RpbWVvdXQ6IHRoaXMub3B0cy5hZGJFeGVjVGltZW91dCxcbiAgICAgICAgYWxsb3dPZmZsaW5lRGV2aWNlczogdGhpcy5vcHRzLmFsbG93T2ZmbGluZURldmljZXMsXG4gICAgICB9KTtcblxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjMpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihcIkNvbnNpZGVyIHNldHRpbmcgJ2F1dG9tYXRpb25OYW1lJyBjYXBhYmlsaXR5IHRvIFwiICtcbiAgICAgICAgICBcIid1aWF1dG9tYXRvcjInIG9uIEFuZHJvaWQgPj0gNiwgc2luY2UgVUlBdXRvbWF0b3IgZnJhbWV3b3JrIFwiICtcbiAgICAgICAgICAnaXMgbm90IG1haW50YWluZWQgYW55bW9yZSBieSB0aGUgT1MgdmVuZG9yLicpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5oZWxwZXJzLmlzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHApKSB7XG4gICAgICAgIC8vIHVzZXIgcHJvdmlkZWQgcGFja2FnZSBpbnN0ZWFkIG9mIGFwcCBmb3IgJ2FwcCcgY2FwYWJpbGl0eSwgbWFzc2FnZSBvcHRpb25zXG4gICAgICAgIHRoaXMub3B0cy5hcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcDtcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICAgIC8vIGZpbmQgYW5kIGNvcHksIG9yIGRvd25sb2FkIGFuZCB1bnppcCBhbiBhcHAgdXJsIG9yIHBhdGhcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IGF3YWl0IHRoaXMuaGVscGVycy5jb25maWd1cmVBcHAodGhpcy5vcHRzLmFwcCwgQVBQX0VYVEVOU0lPTik7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tBcHBQcmVzZW50KCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwT25EZXZpY2UpIHtcbiAgICAgICAgLy8gdGhlIGFwcCBpc24ndCBhbiBhY3R1YWwgYXBwIGZpbGUgYnV0IHJhdGhlciBzb21ldGhpbmcgd2Ugd2FudCB0b1xuICAgICAgICAvLyBhc3N1bWUgaXMgb24gdGhlIGRldmljZSBhbmQganVzdCBsYXVuY2ggdmlhIHRoZSBhcHBQYWNrYWdlXG4gICAgICAgIHRoaXMubG9nLmluZm8oYEFwcCBmaWxlIHdhcyBub3QgbGlzdGVkLCBpbnN0ZWFkIHdlJ3JlIGdvaW5nIHRvIHJ1biBgICtcbiAgICAgICAgICBgJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0gZGlyZWN0bHkgb24gdGhlIGRldmljZWApO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrUGFja2FnZVByZXNlbnQoKTtcbiAgICAgIH1cblxuICAgICAgLy8gU29tZSBjbG91ZCBzZXJ2aWNlcyB1c2luZyBhcHBpdW0gbGF1bmNoIHRoZSBhdmQgdGhlbXNlbHZlcywgc28gd2UgZW5zdXJlIG5ldHNwZWVkXG4gICAgICAvLyBpcyBzZXQgZm9yIGVtdWxhdG9ycyBieSBjYWxsaW5nIGFkYi5uZXR3b3JrU3BlZWQgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcFxuICAgICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLm5ldHdvcmtTcGVlZCkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ1NvcnJ5LCBuZXR3b3JrU3BlZWQgY2FwYWJpbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV0d29ya1NwZWVkID0gZW5zdXJlTmV0d29ya1NwZWVkKHRoaXMuYWRiLCB0aGlzLm9wdHMubmV0d29ya1NwZWVkKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5uZXR3b3JrU3BlZWQobmV0d29ya1NwZWVkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSB0byBlbmFibGUvZGlzYWJsZSBncHMgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcGxpY2F0aW9uXG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMuZ3BzRW5hYmxlZCkpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgVHJ5aW5nIHRvICR7dGhpcy5vcHRzLmdwc0VuYWJsZWQgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ30gZ3BzIGxvY2F0aW9uIHByb3ZpZGVyYCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIudG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlcih0aGlzLm9wdHMuZ3BzRW5hYmxlZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybignU29ycnkhIGdwc0VuYWJsZWQgY2FwYWJpbGl0eSBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgZW11bGF0b3JzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5zdGFydEFuZHJvaWRTZXNzaW9uKHRoaXMub3B0cyk7XG4gICAgICByZXR1cm4gW3Nlc3Npb25JZCwgdGhpcy5jYXBzXTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmluZyBkZWxldGUgc2Vzc2lvbiBleGNlcHRpb24gaWYgYW55IGFuZCB0aHJvdyB0aGUgcmVhbCBlcnJvclxuICAgICAgLy8gdGhhdCBoYXBwZW5lZCB3aGlsZSBjcmVhdGluZyB0aGUgc2Vzc2lvbi5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfSBjYXRjaCAoaWduKSB7fVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICBnZXQgYXBwT25EZXZpY2UgKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlcnMuaXNQYWNrYWdlT3JCdW5kbGUodGhpcy5vcHRzLmFwcCkgfHwgKCF0aGlzLm9wdHMuYXBwICYmXG4gICAgICAgICAgIHRoaXMuaGVscGVycy5pc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwUGFja2FnZSkpO1xuICB9XG5cbiAgZ2V0IGlzQ2hyb21lU2Vzc2lvbiAoKSB7XG4gICAgcmV0dXJuIGhlbHBlcnMuaXNDaHJvbWVCcm93c2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSk7XG4gIH1cblxuICBhc3luYyBvblNldHRpbmdzVXBkYXRlIChrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSA9PT0gJ2lnbm9yZVVuaW1wb3J0YW50Vmlld3MnKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0QW5kcm9pZFNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIEFuZHJvaWQgc2Vzc2lvbmApO1xuICAgIC8vIHNldCB1cCB0aGUgZGV2aWNlIHRvIHJ1biBvbiAocmVhbCBvciBlbXVsYXRvciwgZXRjKVxuICAgIHRoaXMuZGVmYXVsdElNRSA9IGF3YWl0IGhlbHBlcnMuaW5pdERldmljZSh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcblxuICAgIC8vIHNldCBhY3R1YWwgZGV2aWNlIG5hbWUsIHVkaWQsIHBsYXRmb3JtIHZlcnNpb24sIHNjcmVlbiBzaXplLCBtb2RlbCBhbmQgbWFudWZhY3R1cmVyIGRldGFpbHMuXG4gICAgdGhpcy5jYXBzLmRldmljZU5hbWUgPSB0aGlzLmFkYi5jdXJEZXZpY2VJZDtcbiAgICB0aGlzLmNhcHMuZGV2aWNlVURJRCA9IHRoaXMub3B0cy51ZGlkO1xuICAgIHRoaXMuY2Fwcy5wbGF0Zm9ybVZlcnNpb24gPSBhd2FpdCB0aGlzLmFkYi5nZXRQbGF0Zm9ybVZlcnNpb24oKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuU2l6ZSA9IGF3YWl0IHRoaXMuYWRiLmdldFNjcmVlblNpemUoKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlTW9kZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRNb2RlbCgpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNYW51ZmFjdHVyZXIgPSBhd2FpdCB0aGlzLmFkYi5nZXRNYW51ZmFjdHVyZXIoKTtcblxuICAgIGlmICh0aGlzLm9wdHMuZGlzYWJsZVdpbmRvd0FuaW1hdGlvbikge1xuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmlzQW5pbWF0aW9uT24oKSkge1xuICAgICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyOCkgeyAvLyBBUEkgbGV2ZWwgMjggaXMgQW5kcm9pZCBQXG4gICAgICAgICAgLy8gRG9uJ3QgZm9yZ2V0IHRvIHJlc2V0IHRoZSByZWxheGluZyBpbiBkZWxldGUgc2Vzc2lvblxuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ1JlbGF4aW5nIGhpZGRlbiBhcGkgcG9saWN5IHRvIG1hbmFnZSBhbmltYXRpb24gc2NhbGUnKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRIaWRkZW5BcGlQb2xpY3koJzEnLCAhIXRoaXMub3B0cy5pZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmxvZy5pbmZvKCdEaXNhYmxpbmcgd2luZG93IGFuaW1hdGlvbiBhcyBpdCBpcyByZXF1ZXN0ZWQgYnkgXCJkaXNhYmxlV2luZG93QW5pbWF0aW9uXCIgY2FwYWJpbGl0eScpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1dpbmRvdyBhbmltYXRpb24gaXMgYWxyZWFkeSBkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNldCB1cCBhcHAgdW5kZXIgdGVzdFxuICAgIGF3YWl0IHRoaXMuaW5pdEFVVCgpO1xuXG4gICAgLy8gc3RhcnQgVWlBdXRvbWF0b3JcbiAgICB0aGlzLmJvb3RzdHJhcCA9IG5ldyBoZWxwZXJzLmJvb3RzdHJhcCh0aGlzLmFkYiwgdGhpcy5vcHRzLmJvb3RzdHJhcFBvcnQsIHRoaXMub3B0cy53ZWJzb2NrZXQpO1xuICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnN0YXJ0KHRoaXMub3B0cy5hcHBQYWNrYWdlLCB0aGlzLm9wdHMuZGlzYWJsZUFuZHJvaWRXYXRjaGVycywgdGhpcy5vcHRzLmFjY2VwdFNzbENlcnRzKTtcbiAgICAvLyBoYW5kbGluZyB1bmV4cGVjdGVkIHNodXRkb3duXG4gICAgdGhpcy5ib290c3RyYXAub25VbmV4cGVjdGVkU2h1dGRvd24uY2F0Y2goYXN5bmMgKGVycikgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKCF0aGlzLmJvb3RzdHJhcC5pZ25vcmVVbmV4cGVjdGVkU2h1dGRvd24pIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVubG9jaykge1xuICAgICAgLy8gTGV0J3MgdHJ5IHRvIHVubG9jayB0aGUgZGV2aWNlXG4gICAgICBhd2FpdCBoZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwgdGhpcy5jYXBzKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgQ29tcHJlc3NlZExheW91dEhpZXJhcmNoeSBvbiB0aGUgZGV2aWNlIGJhc2VkIG9uIGN1cnJlbnQgc2V0dGluZ3Mgb2JqZWN0XG4gICAgLy8gdGhpcyBoYXMgdG8gaGFwcGVuIF9hZnRlcl8gYm9vdHN0cmFwIGlzIGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMub3B0cy5pZ25vcmVVbmltcG9ydGFudFZpZXdzKSB7XG4gICAgICBhd2FpdCB0aGlzLnNldHRpbmdzLnVwZGF0ZSh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogdGhpcy5vcHRzLmlnbm9yZVVuaW1wb3J0YW50Vmlld3N9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Nocm9tZVNlc3Npb24pIHtcbiAgICAgIC8vIHN0YXJ0IGEgY2hyb21lZHJpdmVyIHNlc3Npb24gYW5kIHByb3h5IHRvIGl0XG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmF1dG9MYXVuY2gpIHtcbiAgICAgICAgLy8gc3RhcnQgYXBwXG4gICAgICAgIGF3YWl0IHRoaXMuc3RhcnRBVVQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMub3JpZW50YXRpb24pKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgU2V0dGluZyBpbml0aWFsIG9yaWVudGF0aW9uIHRvICcke3RoaXMub3B0cy5vcmllbnRhdGlvbn0nYCk7XG4gICAgICBhd2FpdCB0aGlzLnNldE9yaWVudGF0aW9uKHRoaXMub3B0cy5vcmllbnRhdGlvbik7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbml0QXV0b1dlYnZpZXcoKTtcbiAgfVxuXG4gIGFzeW5jIGluaXRBdXRvV2VidmlldyAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgbGV0IHZpZXdOYW1lID0gdGhpcy5kZWZhdWx0V2Vidmlld05hbWUoKTtcbiAgICAgIGxldCB0aW1lb3V0ID0gKHRoaXMub3B0cy5hdXRvV2Vidmlld1RpbWVvdXQpIHx8IDIwMDA7XG5cbiAgICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgYXV0byB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG5cbiAgICAgIC8vIHRyeSBldmVyeSA1MDBtcyB1bnRpbCB0aW1lb3V0IGlzIG92ZXJcbiAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwodGltZW91dCAvIDUwMCwgNTAwLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2V0Q29udGV4dCh2aWV3TmFtZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbml0QVVUICgpIHtcbiAgICAvLyBwb3B1bGF0ZSBhcHBQYWNrYWdlLCBhcHBBY3Rpdml0eSwgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSxcbiAgICAvLyBhbmQgdGhlIGRldmljZSBiZWluZyB1c2VkXG4gICAgLy8gaW4gdGhlIG9wdHMgYW5kIGNhcHMgKHNvIGl0IGdldHMgYmFjayB0byB0aGUgdXNlciBvbiBzZXNzaW9uIGNyZWF0aW9uKVxuICAgIGxldCBsYXVuY2hJbmZvID0gYXdhaXQgaGVscGVycy5nZXRMYXVuY2hJbmZvKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRzLCBsYXVuY2hJbmZvKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuY2FwcywgbGF1bmNoSW5mbyk7XG5cbiAgICAvLyBVbmluc3RhbGwgYW55IHVuaW5zdGFsbE90aGVyUGFja2FnZXMgd2hpY2ggd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcykge1xuICAgICAgaGVscGVycy52YWxpZGF0ZURlc2lyZWRDYXBzKHRoaXMub3B0cyk7XG4gICAgICAvLyBPbmx5IFNFVFRJTkdTX0hFTFBFUl9QS0dfSUQgcGFja2FnZSBpcyB1c2VkIGJ5IFVJQTFcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyhcbiAgICAgICAgdGhpcy5hZGIsXG4gICAgICAgIGhlbHBlcnMucGFyc2VBcnJheSh0aGlzLm9wdHMudW5pbnN0YWxsT3RoZXJQYWNrYWdlcyksXG4gICAgICAgIFtTRVRUSU5HU19IRUxQRVJfUEtHX0lEXVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJbnN0YWxsIGFueSBcIm90aGVyQXBwc1wiIHRoYXQgd2VyZSBzcGVjaWZpZWQgaW4gY2Fwc1xuICAgIGlmICh0aGlzLm9wdHMub3RoZXJBcHBzKSB7XG4gICAgICBsZXQgb3RoZXJBcHBzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgb3RoZXJBcHBzID0gaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy5vdGhlckFwcHMpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgXCJvdGhlckFwcHNcIiBjYXBhYmlsaXR5OiAke2UubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIG90aGVyQXBwcyA9IGF3YWl0IEIuYWxsKG90aGVyQXBwcy5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIEFQUF9FWFRFTlNJT04pKSk7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxPdGhlckFwa3Mob3RoZXJBcHBzLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICAvLyBpbnN0YWxsIGFwcFxuICAgIGlmICghdGhpcy5vcHRzLmFwcCkge1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnRnVsbCByZXNldCByZXF1aXJlcyBhbiBhcHAgY2FwYWJpbGl0eSwgdXNlIGZhc3RSZXNldCBpZiBhcHAgaXMgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gYXBwIGNhcGFiaWxpdHkuIEFzc3VtaW5nIGl0IGlzIGFscmVhZHkgb24gdGhlIGRldmljZScpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mYXN0UmVzZXQpIHtcbiAgICAgICAgYXdhaXQgaGVscGVycy5yZXNldEFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICB9XG4gICAgYXdhaXQgaGVscGVycy5pbnN0YWxsQXBrKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIGNvbnN0IGFwa1N0cmluZ3NGb3JMYW5ndWFnZSA9IGF3YWl0IGhlbHBlcnMucHVzaFN0cmluZ3ModGhpcy5vcHRzLmxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICBpZiAodGhpcy5vcHRzLmxhbmd1YWdlKSB7XG4gICAgICB0aGlzLmFwa1N0cmluZ3NbdGhpcy5vcHRzLmxhbmd1YWdlXSA9IGFwa1N0cmluZ3NGb3JMYW5ndWFnZTtcbiAgICB9XG5cbiAgICAvLyBUaGlzIG11c3QgcnVuIGFmdGVyIGluc3RhbGxpbmcgdGhlIGFwaywgb3RoZXJ3aXNlIGl0IHdvdWxkIGNhdXNlIHRoZVxuICAgIC8vIGluc3RhbGwgdG8gZmFpbC4gQW5kIGJlZm9yZSBydW5uaW5nIHRoZSBhcHAuXG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMub3B0cy5zaGFyZWRQcmVmZXJlbmNlcykpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0U2hhcmVkUHJlZmVyZW5jZXModGhpcy5vcHRzKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja0FwcFByZXNlbnQgKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdDaGVja2luZyB3aGV0aGVyIGFwcCBpcyBhY3R1YWxseSBwcmVzZW50Jyk7XG4gICAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKHRoaXMub3B0cy5hcHApKSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGZpbmQgYXBwIGFwayBhdCAke3RoaXMub3B0cy5hcHB9YCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2hlY2tQYWNrYWdlUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgcGFja2FnZSBpcyBwcmVzZW50IG9uIHRoZSBkZXZpY2UnKTtcbiAgICBpZiAoIShhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3BtJywgJ2xpc3QnLCAncGFja2FnZXMnLCB0aGlzLm9wdHMuYXBwUGFja2FnZV0pKSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ291bGQgbm90IGZpbmQgcGFja2FnZSAke3RoaXMub3B0cy5hcHBQYWNrYWdlfSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgfVxuICB9XG5cbiAgLy8gU2V0IENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkgb24gdGhlIGRldmljZVxuICBhc3luYyBzZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IChjb21wcmVzcykge1xuICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2NvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHknLCB7Y29tcHJlc3NMYXlvdXQ6IGNvbXByZXNzfSk7XG4gIH1cblxuICBhc3luYyBkZWxldGVTZXNzaW9uICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biBBbmRyb2lkIGRyaXZlcicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGlnbikge31cblxuICAgIGF3YWl0IGhlbHBlcnMucmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzKHRoaXMuc2VydmVyLCB0aGlzLnNlc3Npb25JZCk7XG5cbiAgICBhd2FpdCB0aGlzLm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmcoKTtcblxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcblxuICAgIGlmICh0aGlzLmJvb3RzdHJhcCkge1xuICAgICAgLy8gY2VydGFpbiBjbGVhbnVwIHdlIG9ubHkgY2FyZSB0byBkbyBpZiB0aGUgYm9vdHN0cmFwIHdhcyBldmVyIHJ1blxuICAgICAgYXdhaXQgdGhpcy5zdG9wQ2hyb21lZHJpdmVyUHJveGllcygpO1xuICAgICAgaWYgKHRoaXMub3B0cy51bmljb2RlS2V5Ym9hcmQgJiYgdGhpcy5vcHRzLnJlc2V0S2V5Ym9hcmQgJiYgdGhpcy5kZWZhdWx0SU1FKSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBSZXNldHRpbmcgSU1FIHRvICR7dGhpcy5kZWZhdWx0SU1FfWApO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYj8uc2V0SU1FKHRoaXMuZGVmYXVsdElNRSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uICYmICF0aGlzLm9wdHMuZG9udFN0b3BBcHBPblJlc2V0KSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy5mb3JjZVN0b3AodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGI/LmdvVG9Ib21lKCk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLnNraXBVbmluc3RhbGwgJiYgIXRoaXMuYXBwT25EZXZpY2UpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGI/LnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zaHV0ZG93bigpO1xuICAgICAgdGhpcy5ib290c3RyYXAgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhcIkNhbGxlZCBkZWxldGVTZXNzaW9uIGJ1dCBib290c3RyYXAgd2Fzbid0IGFjdGl2ZVwiKTtcbiAgICB9XG4gICAgLy8gc29tZSBjbGVhbnVwIHdlIHdhbnQgdG8gZG8gcmVnYXJkbGVzcywgaW4gY2FzZSB3ZSBhcmUgc2h1dHRpbmcgZG93blxuICAgIC8vIG1pZC1zdGFydHVwXG4gICAgYXdhaXQgdGhpcy5hZGI/LnN0b3BMb2djYXQoKTtcbiAgICBpZiAodGhpcy51c2VVbmxvY2tIZWxwZXJBcHApIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5mb3JjZVN0b3AoJ2lvLmFwcGl1bS51bmxvY2snKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3Jpbmcgd2luZG93IGFuaW1hdGlvbiBzdGF0ZScpO1xuICAgICAgYXdhaXQgdGhpcy5hZGI/LnNldEFuaW1hdGlvblN0YXRlKHRydWUpO1xuXG4gICAgICAvLyBUaGlzIHdhcyBuZWNlc3NhcnkgdG8gY2hhbmdlIGFuaW1hdGlvbiBzY2FsZSBvdmVyIEFuZHJvaWQgUC4gV2UgbXVzdCByZXNldCB0aGUgcG9saWN5IGZvciB0aGUgc2VjdXJpdHkuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGI/LmdldEFwaUxldmVsKCkgPj0gMjgpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIGhpZGRlbiBhcGkgcG9saWN5IHRvIHRoZSBkZXZpY2UgZGVmYXVsdCBjb25maWd1cmF0aW9uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlYm9vdCkge1xuICAgICAgbGV0IGF2ZE5hbWUgPSB0aGlzLm9wdHMuYXZkLnJlcGxhY2UoJ0AnLCAnJyk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgY2xvc2luZyBlbXVsYXRvciAnJHthdmROYW1lfSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiPy5raWxsRW11bGF0b3IoYXZkTmFtZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2V0U2hhcmVkUHJlZmVyZW5jZXMgKCkge1xuICAgIGxldCBzaGFyZWRQcmVmcyA9IHRoaXMub3B0cy5zaGFyZWRQcmVmZXJlbmNlcztcbiAgICB0aGlzLmxvZy5pbmZvKCdUcnlpbmcgdG8gc2V0IHNoYXJlZCBwcmVmZXJlbmNlcycpO1xuICAgIGxldCBuYW1lID0gc2hhcmVkUHJlZnMubmFtZTtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChuYW1lKSkge1xuICAgICAgdGhpcy5sb2cud2FybihgU2tpcHBpbmcgc2V0dGluZyBTaGFyZWQgcHJlZmVyZW5jZXMsIG5hbWUgaXMgdW5kZWZpbmVkOiAke0pTT04uc3RyaW5naWZ5KHNoYXJlZFByZWZzKX1gKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHJlbW90ZVBhdGggPSBgL2RhdGEvZGF0YS8ke3RoaXMub3B0cy5hcHBQYWNrYWdlfS9zaGFyZWRfcHJlZnNgO1xuICAgIGxldCByZW1vdGVGaWxlID0gYCR7cmVtb3RlUGF0aH0vJHtuYW1lfS54bWxgO1xuICAgIGxldCBsb2NhbFBhdGggPSBgL3RtcC8ke25hbWV9LnhtbGA7XG4gICAgbGV0IGJ1aWxkZXIgPSB0aGlzLmdldFByZWZzQnVpbGRlcigpO1xuICAgIGJ1aWxkZXIuYnVpbGQoc2hhcmVkUHJlZnMucHJlZnMpO1xuICAgIHRoaXMubG9nLmluZm8oYENyZWF0aW5nIHRlbXBvcmFyeSBzaGFyZWQgcHJlZmVyZW5jZXM6ICR7bG9jYWxQYXRofWApO1xuICAgIGJ1aWxkZXIudG9GaWxlKGxvY2FsUGF0aCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgQ3JlYXRpbmcgc2hhcmVkX3ByZWZzIHJlbW90ZSBmb2xkZXI6ICR7cmVtb3RlUGF0aH1gKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ21rZGlyJywgJy1wJywgcmVtb3RlUGF0aF0pO1xuICAgIHRoaXMubG9nLmluZm8oYFB1c2hpbmcgc2hhcmVkX3ByZWZzIHRvICR7cmVtb3RlRmlsZX1gKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsUGF0aCwgcmVtb3RlRmlsZSk7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9nLmluZm8oYFRyeWluZyB0byByZW1vdmUgc2hhcmVkIHByZWZlcmVuY2VzIHRlbXBvcmFyeSBmaWxlYCk7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsUGF0aCkpIHtcbiAgICAgICAgYXdhaXQgZnMudW5saW5rKGxvY2FsUGF0aCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgdHJ5aW5nIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZSAke2xvY2FsUGF0aH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcmVmc0J1aWxkZXIgKCkge1xuICAgIC8qIEFkZCB0aGlzIG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgU2hhcmVkUHJlZnNCdWlsZGVyIGluc3RlYWQgb2ZcbiAgICAgKiBkaXJlY3RseSBjcmVhdGluZyB0aGUgb2JqZWN0IG9uIHNldFNoYXJlZFByZWZlcmVuY2VzIGZvciB0ZXN0aW5nIHB1cnBvc2VzXG4gICAgKi9cbiAgICByZXR1cm4gbmV3IFNoYXJlZFByZWZzQnVpbGRlcigpO1xuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIGlmICghc3VwZXIudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoKCFjYXBzLmJyb3dzZXJOYW1lIHx8ICFoZWxwZXJzLmlzQ2hyb21lQnJvd3NlcihjYXBzLmJyb3dzZXJOYW1lKSkgJiYgIWNhcHMuYXBwICYmICFjYXBzLmFwcFBhY2thZ2UpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ1RoZSBkZXNpcmVkIGNhcGFiaWxpdGllcyBtdXN0IGluY2x1ZGUgZWl0aGVyIGFuIGFwcCwgYXBwUGFja2FnZSBvciBicm93c2VyTmFtZScpO1xuICAgIH1cbiAgICByZXR1cm4gaGVscGVycy52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpO1xuICB9XG5cbiAgcHJveHlBY3RpdmUgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLnByb3h5QWN0aXZlKHNlc3Npb25JZCk7XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5nZXRQcm94eUF2b2lkTGlzdChzZXNzaW9uSWQpO1xuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGNhblByb3h5IChzZXNzaW9uSWQpIHtcbiAgICBzdXBlci5jYW5Qcm94eShzZXNzaW9uSWQpO1xuXG4gICAgLy8gdGhpcyB3aWxsIGNoYW5nZSBkZXBlbmRpbmcgb24gQ2hyb21lRHJpdmVyIHN0YXR1c1xuICAgIHJldHVybiBfLmlzRnVuY3Rpb24odGhpcy5wcm94eVJlcVJlcyk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQW5kcm9pZERyaXZlciB9O1xuZXhwb3J0IGRlZmF1bHQgQW5kcm9pZERyaXZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxhQUFhLEdBQUcsTUFBdEI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsSUFBcEI7QUFJQSxNQUFNQyxRQUFRLEdBQUcsQ0FDZixDQUFDLE1BQUQsRUFBUyxJQUFJQyxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQURlLEVBRWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLHlCQUFYLENBQVIsQ0FGZSxFQUdmLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyx3QkFBWCxDQUFULENBSGUsRUFJZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsd0JBQVgsQ0FBUixDQUplLEVBS2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLCtCQUFYLENBQVQsQ0FMZSxFQU1mLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyxxQ0FBWCxDQUFULENBTmUsRUFPZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkJBQVgsQ0FB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
|
|
511
|
+
exports.default = _default;
|
|
512
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBUFBfRVhURU5TSU9OIiwiREVWSUNFX1BPUlQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkFuZHJvaWREcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwibG9jYXRvclN0cmF0ZWdpZXMiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJkZXNpcmVkQ29uc3RyYWludHMiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImp3cFByb3h5QWN0aXZlIiwiandwUHJveHlBdm9pZCIsIl8iLCJjbG9uZSIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJhcGtTdHJpbmdzIiwidW5sb2NrZXIiLCJoZWxwZXJzIiwiY21kIiwiZm4iLCJ0b1BhaXJzIiwiY29tbWFuZHMiLCJwcm90b3R5cGUiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJjYXBzIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJPYmplY3QiLCJhc3NpZ24iLCJkZWZhdWx0T3B0cyIsImFjdGlvbiIsImNhdGVnb3J5IiwiZmxhZ3MiLCJkaXNhYmxlQW5kcm9pZFdhdGNoZXJzIiwidG1wRGlyIiwidGVtcERpciIsInN0YXRpY0RpciIsImZ1bGxSZXNldCIsImF1dG9MYXVuY2giLCJhZGJQb3J0IiwiREVGQVVMVF9BREJfUE9SVCIsImJvb3RzdHJhcFBvcnQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsInVzZVVubG9ja0hlbHBlckFwcCIsImlzVW5kZWZpbmVkIiwidW5sb2NrVHlwZSIsIm5vUmVzZXQiLCJmYXN0UmVzZXQiLCJza2lwVW5pbnN0YWxsIiwiaXNDaHJvbWVTZXNzaW9uIiwiYWRqdXN0QnJvd3NlclNlc3Npb25DYXBzIiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsInB1c2giLCJyZWJvb3QiLCJzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImFkYiIsImNyZWF0ZUFEQiIsInN1cHByZXNzS2lsbFNlcnZlciIsInJlbW90ZUFkYkhvc3QiLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwiYWRiRXhlY1RpbWVvdXQiLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiZ2V0QXBpTGV2ZWwiLCJsb2ciLCJ3YXJuIiwiaXNQYWNrYWdlT3JCdW5kbGUiLCJhcHAiLCJhcHBQYWNrYWdlIiwiY29uZmlndXJlQXBwIiwiY2hlY2tBcHBQcmVzZW50IiwiYXBwT25EZXZpY2UiLCJpbmZvIiwiY2hlY2tQYWNrYWdlUHJlc2VudCIsInV0aWwiLCJoYXNWYWx1ZSIsIm5ldHdvcmtTcGVlZCIsImlzRW11bGF0b3IiLCJlbnN1cmVOZXR3b3JrU3BlZWQiLCJncHNFbmFibGVkIiwidG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlciIsInN0YXJ0QW5kcm9pZFNlc3Npb24iLCJlIiwiZGVsZXRlU2Vzc2lvbiIsImlnbiIsImF2ZCIsImRldmljZU5hbWUiLCJlcnJvckFuZFRocm93IiwicGxhdGZvcm1WZXJzaW9uIiwiYXZkRGV2aWNlIiwicmVwbGFjZSIsImlzQ2hyb21lQnJvd3NlciIsImJyb3dzZXJOYW1lIiwia2V5IiwidmFsdWUiLCJzZXRDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IiwiZGVmYXVsdElNRSIsImluaXREZXZpY2UiLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJnZXRQbGF0Zm9ybVZlcnNpb24iLCJkZXZpY2VTY3JlZW5TaXplIiwiZ2V0U2NyZWVuU2l6ZSIsImRldmljZU1vZGVsIiwiZ2V0TW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJnZXRNYW51ZmFjdHVyZXIiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwiaXNBbmltYXRpb25PbiIsInNldEhpZGRlbkFwaVBvbGljeSIsImlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwiYm9vdHN0cmFwIiwid2Vic29ja2V0Iiwic3RhcnQiLCJhY2NlcHRTc2xDZXJ0cyIsIm9uVW5leHBlY3RlZFNodXRkb3duIiwiZXJyIiwiaWdub3JlVW5leHBlY3RlZFNodXRkb3duIiwic3RhcnRVbmV4cGVjdGVkU2h1dGRvd24iLCJza2lwVW5sb2NrIiwidW5sb2NrIiwidXBkYXRlIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic3RhcnRBVVQiLCJvcmllbnRhdGlvbiIsImRlYnVnIiwic2V0T3JpZW50YXRpb24iLCJpbml0QXV0b1dlYnZpZXciLCJhdXRvV2VidmlldyIsInZpZXdOYW1lIiwiZGVmYXVsdFdlYnZpZXdOYW1lIiwidGltZW91dCIsImF1dG9XZWJ2aWV3VGltZW91dCIsInJldHJ5SW50ZXJ2YWwiLCJzZXRDb250ZXh0IiwibGF1bmNoSW5mbyIsImdldExhdW5jaEluZm8iLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwidmFsaWRhdGVEZXNpcmVkQ2FwcyIsInBhcnNlQXJyYXkiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwib3RoZXJBcHBzIiwibWVzc2FnZSIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwicmVzZXRBcHAiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiYXBrU3RyaW5nc0Zvckxhbmd1YWdlIiwicHVzaFN0cmluZ3MiLCJsYW5ndWFnZSIsInNoYXJlZFByZWZlcmVuY2VzIiwic2V0U2hhcmVkUHJlZmVyZW5jZXMiLCJmcyIsImV4aXN0cyIsInNoZWxsIiwiY29tcHJlc3MiLCJzZW5kQWN0aW9uIiwiY29tcHJlc3NMYXlvdXQiLCJpc0VtcHR5IiwiX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwicmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzIiwic2VydmVyIiwibW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZyIsInN0b3BDaHJvbWVkcml2ZXJQcm94aWVzIiwidW5pY29kZUtleWJvYXJkIiwicmVzZXRLZXlib2FyZCIsInNldElNRSIsImRvbnRTdG9wQXBwT25SZXNldCIsImZvcmNlU3RvcCIsImdvVG9Ib21lIiwic2h1dGRvd24iLCJzdG9wTG9nY2F0Iiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzaGFyZWRQcmVmcyIsIm5hbWUiLCJKU09OIiwic3RyaW5naWZ5IiwicmVtb3RlUGF0aCIsInJlbW90ZUZpbGUiLCJsb2NhbFBhdGgiLCJidWlsZGVyIiwiZ2V0UHJlZnNCdWlsZGVyIiwiYnVpbGQiLCJwcmVmcyIsInRvRmlsZSIsInVubGluayIsIlNoYXJlZFByZWZzQnVpbGRlciIsInByb3h5QWN0aXZlIiwiZ2V0UHJveHlBdm9pZExpc3QiLCJjYW5Qcm94eSIsImlzRnVuY3Rpb24iLCJwcm94eVJlcVJlcyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZURyaXZlciwgRGV2aWNlU2V0dGluZ3MgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBkZXNpcmVkQ29uc3RyYWludHMgZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgaGVscGVycywgZW5zdXJlTmV0d29ya1NwZWVkLFxuICBTRVRUSU5HU19IRUxQRVJfUEtHX0lELFxufSBmcm9tICcuL2FuZHJvaWQtaGVscGVycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgREVGQVVMVF9BREJfUE9SVCB9IGZyb20gJ2FwcGl1bS1hZGInO1xuaW1wb3J0IHsgZnMsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2hhcmVkUHJlZnNCdWlsZGVyIH0gZnJvbSAnc2hhcmVkLXByZWZlcmVuY2VzLWJ1aWxkZXInO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5jb25zdCBBUFBfRVhURU5TSU9OID0gJy5hcGsnO1xuY29uc3QgREVWSUNFX1BPUlQgPSA0NzI0O1xuXG4vLyBUaGlzIGlzIGEgc2V0IG9mIG1ldGhvZHMgYW5kIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0b1xuLy8gQ2hyb21lZHJpdmVyXG5jb25zdCBOT19QUk9YWSA9IFtcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2NvbnRleHQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy90b3VjaC9tdWx0aS9wZXJmb3JtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvb3JpZW50YXRpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbmV0d29ya19jb25uZWN0aW9uJyldLFxuXTtcblxuY2xhc3MgQW5kcm9pZERyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgc3VwZXIob3B0cywgc2hvdWxkVmFsaWRhdGVDYXBzKTtcblxuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICAgICctYW5kcm9pZCB1aWF1dG9tYXRvcidcbiAgICBdO1xuICAgIHRoaXMuZGVzaXJlZENhcENvbnN0cmFpbnRzID0gZGVzaXJlZENvbnN0cmFpbnRzO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gZmFsc2U7XG4gICAgdGhpcy5qd3BQcm94eUF2b2lkID0gXy5jbG9uZShOT19QUk9YWSk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyh7aWdub3JlVW5pbXBvcnRhbnRWaWV3czogZmFsc2V9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNldHRpbmdzVXBkYXRlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuY2hyb21lZHJpdmVyID0gbnVsbDtcbiAgICB0aGlzLmFwa1N0cmluZ3MgPSB7fTtcbiAgICB0aGlzLnVubG9ja2VyID0gaGVscGVycy51bmxvY2tlcjtcblxuICAgIGZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoY29tbWFuZHMpKSB7XG4gICAgICBBbmRyb2lkRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG4gICAgfVxuXG4gICAgLy8gbmVlZHMgdG8gYmUgYWZ0ZXIgdGhlIGxpbmUgd2hpY2ggYXNzaWducyBjb21tYW5kcyB0byBBbmRyb2lkRHJpdmVyLnByb3RvdHlwZSwgc28gdGhhdCBgdGhpcy5kZWZhdWx0Q29udGV4dE5hbWVgIGlzIGRlZmluZWQuXG4gICAgdGhpcy5jdXJDb250ZXh0ID0gdGhpcy5kZWZhdWx0Q29udGV4dE5hbWUoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNlc3Npb24gKC4uLmFyZ3MpIHtcbiAgICAvLyB0aGUgd2hvbGUgY3JlYXRlU2Vzc2lvbiBmbG93IGlzIHN1cnJvdW5kZWQgaW4gYSB0cnktY2F0Y2ggc3RhdGVtZW50XG4gICAgLy8gaWYgY3JlYXRpbmcgYSBzZXNzaW9uIGZhaWxzIGF0IGFueSBwb2ludCwgd2UgdGVhcmRvd24gZXZlcnl0aGluZyB3ZVxuICAgIC8vIHNldCB1cCBiZWZvcmUgdGhyb3dpbmcgdGhlIGVycm9yLlxuICAgIHRyeSB7XG4gICAgICBsZXQgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc2VydmVyRGV0YWlscyA9IHtcbiAgICAgICAgcGxhdGZvcm06ICdMSU5VWCcsXG4gICAgICAgIHdlYlN0b3JhZ2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGFrZXNTY3JlZW5zaG90OiB0cnVlLFxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZGF0YWJhc2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbkNvbnRleHRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgd2FybmluZ3M6IHt9LFxuICAgICAgICBkZXNpcmVkOiB0aGlzLmNhcHNcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuY2FwcyA9IE9iamVjdC5hc3NpZ24oc2VydmVyRGV0YWlscywgdGhpcy5jYXBzKTtcblxuICAgICAgLy8gYXNzaWduaW5nIGRlZmF1bHRzXG4gICAgICBsZXQgZGVmYXVsdE9wdHMgPSB7XG4gICAgICAgIGFjdGlvbjogJ2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUicsXG4gICAgICAgIGZsYWdzOiAnMHgxMDIwMDAwMCcsXG4gICAgICAgIGRpc2FibGVBbmRyb2lkV2F0Y2hlcnM6IGZhbHNlLFxuICAgICAgICB0bXBEaXI6IGF3YWl0IHRlbXBEaXIuc3RhdGljRGlyKCksXG4gICAgICAgIGZ1bGxSZXNldDogZmFsc2UsXG4gICAgICAgIGF1dG9MYXVuY2g6IHRydWUsXG4gICAgICAgIGFkYlBvcnQ6IERFRkFVTFRfQURCX1BPUlQsXG4gICAgICAgIGJvb3RzdHJhcFBvcnQ6IERFVklDRV9QT1JULFxuICAgICAgICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IDkwMDAwLFxuICAgICAgfTtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5vcHRzLCBkZWZhdWx0T3B0cyk7XG4gICAgICB0aGlzLnVzZVVubG9ja0hlbHBlckFwcCA9IF8uaXNVbmRlZmluZWQodGhpcy5jYXBzLnVubG9ja1R5cGUpO1xuXG4gICAgICAvLyBub3QgdXNlciB2aXNpYmxlIHZpYSBjYXBzXG4gICAgICBpZiAodGhpcy5vcHRzLm5vUmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgdGhpcy5vcHRzLm5vUmVzZXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0cy5mYXN0UmVzZXQgPSAhdGhpcy5vcHRzLmZ1bGxSZXNldCAmJiAhdGhpcy5vcHRzLm5vUmVzZXQ7XG4gICAgICB0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCA9IHRoaXMub3B0cy5mYXN0UmVzZXQgfHwgdGhpcy5vcHRzLm5vUmVzZXQ7XG5cbiAgICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgICBoZWxwZXJzLmFkanVzdEJyb3dzZXJTZXNzaW9uQ2Fwcyh0aGlzLm9wdHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLm5hdGl2ZVdlYlNjcmVlbnNob3QpIHtcbiAgICAgICAgdGhpcy5qd3BQcm94eUF2b2lkLnB1c2goWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICAgIHRoaXMuc2V0QXZkRnJvbUNhcGFiaWxpdGllcyhjYXBzKTtcbiAgICAgIH1cblxuICAgICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICAgIGxldCB7dWRpZCwgZW1Qb3J0fSA9IGF3YWl0IGhlbHBlcnMuZ2V0RGV2aWNlSW5mb0Zyb21DYXBzKHRoaXMub3B0cyk7XG4gICAgICB0aGlzLm9wdHMudWRpZCA9IHVkaWQ7XG4gICAgICB0aGlzLm9wdHMuZW1Qb3J0ID0gZW1Qb3J0O1xuXG4gICAgICAvLyBzZXQgdXAgYW4gaW5zdGFuY2Ugb2YgQURCXG4gICAgICB0aGlzLmFkYiA9IGF3YWl0IGhlbHBlcnMuY3JlYXRlQURCKHtcbiAgICAgICAgdWRpZDogdGhpcy5vcHRzLnVkaWQsXG4gICAgICAgIGVtUG9ydDogdGhpcy5vcHRzLmVtUG9ydCxcbiAgICAgICAgYWRiUG9ydDogdGhpcy5vcHRzLmFkYlBvcnQsXG4gICAgICAgIHN1cHByZXNzS2lsbFNlcnZlcjogdGhpcy5vcHRzLnN1cHByZXNzS2lsbFNlcnZlcixcbiAgICAgICAgcmVtb3RlQWRiSG9zdDogdGhpcy5vcHRzLnJlbW90ZUFkYkhvc3QsXG4gICAgICAgIGNsZWFyRGV2aWNlTG9nc09uU3RhcnQ6IHRoaXMub3B0cy5jbGVhckRldmljZUxvZ3NPblN0YXJ0LFxuICAgICAgICBhZGJFeGVjVGltZW91dDogdGhpcy5vcHRzLmFkYkV4ZWNUaW1lb3V0LFxuICAgICAgICBhbGxvd09mZmxpbmVEZXZpY2VzOiB0aGlzLm9wdHMuYWxsb3dPZmZsaW5lRGV2aWNlcyxcbiAgICAgIH0pO1xuXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA+PSAyMykge1xuICAgICAgICB0aGlzLmxvZy53YXJuKFwiQ29uc2lkZXIgc2V0dGluZyAnYXV0b21hdGlvbk5hbWUnIGNhcGFiaWxpdHkgdG8gXCIgK1xuICAgICAgICAgIFwiJ3VpYXV0b21hdG9yMicgb24gQW5kcm9pZCA+PSA2LCBzaW5jZSBVSUF1dG9tYXRvciBmcmFtZXdvcmsgXCIgK1xuICAgICAgICAgICdpcyBub3QgbWFpbnRhaW5lZCBhbnltb3JlIGJ5IHRoZSBPUyB2ZW5kb3IuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmhlbHBlcnMuaXNQYWNrYWdlT3JCdW5kbGUodGhpcy5vcHRzLmFwcCkpIHtcbiAgICAgICAgLy8gdXNlciBwcm92aWRlZCBwYWNrYWdlIGluc3RlYWQgb2YgYXBwIGZvciAnYXBwJyBjYXBhYmlsaXR5LCBtYXNzYWdlIG9wdGlvbnNcbiAgICAgICAgdGhpcy5vcHRzLmFwcFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwO1xuICAgICAgICB0aGlzLm9wdHMuYXBwID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5hcHApIHtcbiAgICAgICAgLy8gZmluZCBhbmQgY29weSwgb3IgZG93bmxvYWQgYW5kIHVuemlwIGFuIGFwcCB1cmwgb3IgcGF0aFxuICAgICAgICB0aGlzLm9wdHMuYXBwID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcCh0aGlzLm9wdHMuYXBwLCBBUFBfRVhURU5TSU9OKTtcbiAgICAgICAgYXdhaXQgdGhpcy5jaGVja0FwcFByZXNlbnQoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBPbkRldmljZSkge1xuICAgICAgICAvLyB0aGUgYXBwIGlzbid0IGFuIGFjdHVhbCBhcHAgZmlsZSBidXQgcmF0aGVyIHNvbWV0aGluZyB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGFzc3VtZSBpcyBvbiB0aGUgZGV2aWNlIGFuZCBqdXN0IGxhdW5jaCB2aWEgdGhlIGFwcFBhY2thZ2VcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQXBwIGZpbGUgd2FzIG5vdCBsaXN0ZWQsIGluc3RlYWQgd2UncmUgZ29pbmcgdG8gcnVuIGAgK1xuICAgICAgICAgIGAke3RoaXMub3B0cy5hcHBQYWNrYWdlfSBkaXJlY3RseSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgICAgIGF3YWl0IHRoaXMuY2hlY2tQYWNrYWdlUHJlc2VudCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTb21lIGNsb3VkIHNlcnZpY2VzIHVzaW5nIGFwcGl1bSBsYXVuY2ggdGhlIGF2ZCB0aGVtc2VsdmVzLCBzbyB3ZSBlbnN1cmUgbmV0c3BlZWRcbiAgICAgIC8vIGlzIHNldCBmb3IgZW11bGF0b3JzIGJ5IGNhbGxpbmcgYWRiLm5ldHdvcmtTcGVlZCBiZWZvcmUgcnVubmluZyB0aGUgYXBwXG4gICAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMubmV0d29ya1NwZWVkKSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNFbXVsYXRvcigpKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybignU29ycnksIG5ldHdvcmtTcGVlZCBjYXBhYmlsaXR5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXR3b3JrU3BlZWQgPSBlbnN1cmVOZXR3b3JrU3BlZWQodGhpcy5hZGIsIHRoaXMub3B0cy5uZXR3b3JrU3BlZWQpO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLm5ldHdvcmtTcGVlZChuZXR3b3JrU3BlZWQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIHRvIGVuYWJsZS9kaXNhYmxlIGdwcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb25cbiAgICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5ncHNFbmFibGVkKSkge1xuICAgICAgICBpZiAodGhpcy5pc0VtdWxhdG9yKCkpIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gJHt0aGlzLm9wdHMuZ3BzRW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnfSBncHMgbG9jYXRpb24gcHJvdmlkZXJgKTtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi50b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyKHRoaXMub3B0cy5ncHNFbmFibGVkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKCdTb3JyeSEgZ3BzRW5hYmxlZCBjYXBhYmlsaXR5IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBlbXVsYXRvcnMnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0QW5kcm9pZFNlc3Npb24odGhpcy5vcHRzKTtcbiAgICAgIHJldHVybiBbc2Vzc2lvbklkLCB0aGlzLmNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGlnbm9yaW5nIGRlbGV0ZSBzZXNzaW9uIGV4Y2VwdGlvbiBpZiBhbnkgYW5kIHRocm93IHRoZSByZWFsIGVycm9yXG4gICAgICAvLyB0aGF0IGhhcHBlbmVkIHdoaWxlIGNyZWF0aW5nIHRoZSBzZXNzaW9uLlxuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxuXG4gIGlzRW11bGF0b3IgKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzRW11bGF0b3IodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gIH1cblxuICBzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIChjYXBzKSB7XG4gICAgaWYgKHRoaXMub3B0cy5hdmQpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ2F2ZCBuYW1lIGRlZmluZWQsIGlnbm9yaW5nIGRldmljZSBuYW1lIGFuZCBwbGF0Zm9ybSB2ZXJzaW9uJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2Fwcy5kZXZpY2VOYW1lKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBkZXZpY2VOYW1lIHNob3VsZCBiZSBzcGVjaWZpZWQgd2hlbiByZWJvb3Qgb3B0aW9uIGlzIGVuYWJsZXMnKTtcbiAgICAgIH1cbiAgICAgIGlmICghY2Fwcy5wbGF0Zm9ybVZlcnNpb24pIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnYXZkIG9yIHBsYXRmb3JtVmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVkJyk7XG4gICAgICB9XG4gICAgICBsZXQgYXZkRGV2aWNlID0gY2Fwcy5kZXZpY2VOYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Xy5dL2csICctJyk7XG4gICAgICB0aGlzLm9wdHMuYXZkID0gYCR7YXZkRGV2aWNlfV9fJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn1gO1xuICAgIH1cbiAgfVxuXG4gIGdldCBhcHBPbkRldmljZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVycy5pc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwKSB8fCAoIXRoaXMub3B0cy5hcHAgJiZcbiAgICAgICAgICAgdGhpcy5oZWxwZXJzLmlzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHBQYWNrYWdlKSk7XG4gIH1cblxuICBnZXQgaXNDaHJvbWVTZXNzaW9uICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0Nocm9tZUJyb3dzZXIodGhpcy5vcHRzLmJyb3dzZXJOYW1lKTtcbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5ID09PSAnaWdub3JlVW5pbXBvcnRhbnRWaWV3cycpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0Q29tcHJlc3NlZExheW91dEhpZXJhcmNoeSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRBbmRyb2lkU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgQW5kcm9pZCBzZXNzaW9uYCk7XG4gICAgLy8gc2V0IHVwIHRoZSBkZXZpY2UgdG8gcnVuIG9uIChyZWFsIG9yIGVtdWxhdG9yLCBldGMpXG4gICAgdGhpcy5kZWZhdWx0SU1FID0gYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZCwgcGxhdGZvcm0gdmVyc2lvbiwgc2NyZWVuIHNpemUsIG1vZGVsIGFuZCBtYW51ZmFjdHVyZXIgZGV0YWlscy5cbiAgICB0aGlzLmNhcHMuZGV2aWNlTmFtZSA9IHRoaXMuYWRiLmN1ckRldmljZUlkO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VVRElEID0gdGhpcy5vcHRzLnVkaWQ7XG4gICAgdGhpcy5jYXBzLnBsYXRmb3JtVmVyc2lvbiA9IGF3YWl0IHRoaXMuYWRiLmdldFBsYXRmb3JtVmVyc2lvbigpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VTY3JlZW5TaXplID0gYXdhaXQgdGhpcy5hZGIuZ2V0U2NyZWVuU2l6ZSgpO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNb2RlbCA9IGF3YWl0IHRoaXMuYWRiLmdldE1vZGVsKCk7XG4gICAgdGhpcy5jYXBzLmRldmljZU1hbnVmYWN0dXJlciA9IGF3YWl0IHRoaXMuYWRiLmdldE1hbnVmYWN0dXJlcigpO1xuXG4gICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uKSB7XG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpID49IDI4KSB7IC8vIEFQSSBsZXZlbCAyOCBpcyBBbmRyb2lkIFBcbiAgICAgICAgICAvLyBEb24ndCBmb3JnZXQgdG8gcmVzZXQgdGhlIHJlbGF4aW5nIGluIGRlbGV0ZSBzZXNzaW9uXG4gICAgICAgICAgdGhpcy5sb2cud2FybignUmVsYXhpbmcgaGlkZGVuIGFwaSBwb2xpY3kgdG8gbWFuYWdlIGFuaW1hdGlvbiBzY2FsZScpO1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEhpZGRlbkFwaVBvbGljeSgnMScsICEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0Rpc2FibGluZyB3aW5kb3cgYW5pbWF0aW9uIGFzIGl0IGlzIHJlcXVlc3RlZCBieSBcImRpc2FibGVXaW5kb3dBbmltYXRpb25cIiBjYXBhYmlsaXR5Jyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEFuaW1hdGlvblN0YXRlKGZhbHNlKTtcbiAgICAgICAgdGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnV2luZG93IGFuaW1hdGlvbiBpcyBhbHJlYWR5IGRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gc2V0IHVwIGFwcCB1bmRlciB0ZXN0XG4gICAgYXdhaXQgdGhpcy5pbml0QVVUKCk7XG5cbiAgICAvLyBzdGFydCBVaUF1dG9tYXRvclxuICAgIHRoaXMuYm9vdHN0cmFwID0gbmV3IGhlbHBlcnMuYm9vdHN0cmFwKHRoaXMuYWRiLCB0aGlzLm9wdHMuYm9vdHN0cmFwUG9ydCwgdGhpcy5vcHRzLndlYnNvY2tldCk7XG4gICAgYXdhaXQgdGhpcy5ib290c3RyYXAuc3RhcnQodGhpcy5vcHRzLmFwcFBhY2thZ2UsIHRoaXMub3B0cy5kaXNhYmxlQW5kcm9pZFdhdGNoZXJzLCB0aGlzLm9wdHMuYWNjZXB0U3NsQ2VydHMpO1xuICAgIC8vIGhhbmRsaW5nIHVuZXhwZWN0ZWQgc2h1dGRvd25cbiAgICAoYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5ib290c3RyYXAub25VbmV4cGVjdGVkU2h1dGRvd247XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmJvb3RzdHJhcC5pZ25vcmVVbmV4cGVjdGVkU2h1dGRvd24pIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKGVycik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpO1xuXG5cbiAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5sb2NrKSB7XG4gICAgICAvLyBMZXQncyB0cnkgdG8gdW5sb2NrIHRoZSBkZXZpY2VcbiAgICAgIGF3YWl0IGhlbHBlcnMudW5sb2NrKHRoaXMsIHRoaXMuYWRiLCB0aGlzLmNhcHMpO1xuICAgIH1cblxuICAgIC8vIFNldCBDb21wcmVzc2VkTGF5b3V0SGllcmFyY2h5IG9uIHRoZSBkZXZpY2UgYmFzZWQgb24gY3VycmVudCBzZXR0aW5ncyBvYmplY3RcbiAgICAvLyB0aGlzIGhhcyB0byBoYXBwZW4gX2FmdGVyXyBib290c3RyYXAgaXMgaW5pdGlhbGl6ZWRcbiAgICBpZiAodGhpcy5vcHRzLmlnbm9yZVVuaW1wb3J0YW50Vmlld3MpIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0dGluZ3MudXBkYXRlKHtpZ25vcmVVbmltcG9ydGFudFZpZXdzOiB0aGlzLm9wdHMuaWdub3JlVW5pbXBvcnRhbnRWaWV3c30pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgLy8gc3RhcnQgYSBjaHJvbWVkcml2ZXIgc2Vzc2lvbiBhbmQgcHJveHkgdG8gaXRcbiAgICAgIGF3YWl0IHRoaXMuc3RhcnRDaHJvbWVTZXNzaW9uKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuYXV0b0xhdW5jaCkge1xuICAgICAgICAvLyBzdGFydCBhcHBcbiAgICAgICAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5vcmllbnRhdGlvbikpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBTZXR0aW5nIGluaXRpYWwgb3JpZW50YXRpb24gdG8gJyR7dGhpcy5vcHRzLm9yaWVudGF0aW9ufSdgKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0T3JpZW50YXRpb24odGhpcy5vcHRzLm9yaWVudGF0aW9uKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluaXRBdXRvV2VidmlldygpO1xuICB9XG5cbiAgYXN5bmMgaW5pdEF1dG9XZWJ2aWV3ICgpIHtcbiAgICBpZiAodGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBsZXQgdmlld05hbWUgPSB0aGlzLmRlZmF1bHRXZWJ2aWV3TmFtZSgpO1xuICAgICAgbGV0IHRpbWVvdXQgPSAodGhpcy5vcHRzLmF1dG9XZWJ2aWV3VGltZW91dCkgfHwgMjAwMDtcblxuICAgICAgdGhpcy5sb2cuaW5mbyhgU2V0dGluZyBhdXRvIHdlYnZpZXcgdG8gY29udGV4dCAnJHt2aWV3TmFtZX0nIHdpdGggdGltZW91dCAke3RpbWVvdXR9bXNgKTtcblxuICAgICAgLy8gdHJ5IGV2ZXJ5IDUwMG1zIHVudGlsIHRpbWVvdXQgaXMgb3ZlclxuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbCh0aW1lb3V0IC8gNTAwLCA1MDAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRDb250ZXh0KHZpZXdOYW1lKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRBVVQgKCkge1xuICAgIC8vIHBvcHVsYXRlIGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LCBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LFxuICAgIC8vIGFuZCB0aGUgZGV2aWNlIGJlaW5nIHVzZWRcbiAgICAvLyBpbiB0aGUgb3B0cyBhbmQgY2FwcyAoc28gaXQgZ2V0cyBiYWNrIHRvIHRoZSB1c2VyIG9uIHNlc3Npb24gY3JlYXRpb24pXG4gICAgbGV0IGxhdW5jaEluZm8gPSBhd2FpdCBoZWxwZXJzLmdldExhdW5jaEluZm8odGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIGxhdW5jaEluZm8pO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5jYXBzLCBsYXVuY2hJbmZvKTtcblxuICAgIC8vIFVuaW5zdGFsbCBhbnkgdW5pbnN0YWxsT3RoZXJQYWNrYWdlcyB3aGljaCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSB7XG4gICAgICBoZWxwZXJzLnZhbGlkYXRlRGVzaXJlZENhcHModGhpcy5vcHRzKTtcbiAgICAgIC8vIE9ubHkgU0VUVElOR1NfSEVMUEVSX1BLR19JRCBwYWNrYWdlIGlzIHVzZWQgYnkgVUlBMVxuICAgICAgYXdhaXQgaGVscGVycy51bmluc3RhbGxPdGhlclBhY2thZ2VzKFxuICAgICAgICB0aGlzLmFkYixcbiAgICAgICAgaGVscGVycy5wYXJzZUFycmF5KHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSxcbiAgICAgICAgW1NFVFRJTkdTX0hFTFBFUl9QS0dfSURdXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEluc3RhbGwgYW55IFwib3RoZXJBcHBzXCIgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy5vdGhlckFwcHMpIHtcbiAgICAgIGxldCBvdGhlckFwcHM7XG4gICAgICB0cnkge1xuICAgICAgICBvdGhlckFwcHMgPSBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLm90aGVyQXBwcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBcIm90aGVyQXBwc1wiIGNhcGFiaWxpdHk6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgb3RoZXJBcHBzID0gYXdhaXQgQi5hbGwob3RoZXJBcHBzLm1hcCgoYXBwKSA9PiB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKGFwcCwgQVBQX0VYVEVOU0lPTikpKTtcbiAgICAgIGF3YWl0IGhlbHBlcnMuaW5zdGFsbE90aGVyQXBrcyhvdGhlckFwcHMsIHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIH1cblxuICAgIC8vIGluc3RhbGwgYXBwXG4gICAgaWYgKCF0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmZ1bGxSZXNldCkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGdWxsIHJlc2V0IHJlcXVpcmVzIGFuIGFwcCBjYXBhYmlsaXR5LCB1c2UgZmFzdFJlc2V0IGlmIGFwcCBpcyBub3QgcHJvdmlkZWQnKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBhcHAgY2FwYWJpbGl0eS4gQXNzdW1pbmcgaXQgaXMgYWxyZWFkeSBvbiB0aGUgZGV2aWNlJyk7XG4gICAgICBpZiAodGhpcy5vcHRzLmZhc3RSZXNldCkge1xuICAgICAgICBhd2FpdCBoZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsodGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xuICAgIH1cbiAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxBcGsodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgY29uc3QgYXBrU3RyaW5nc0Zvckxhbmd1YWdlID0gYXdhaXQgaGVscGVycy5wdXNoU3RyaW5ncyh0aGlzLm9wdHMubGFuZ3VhZ2UsIHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICAgIGlmICh0aGlzLm9wdHMubGFuZ3VhZ2UpIHtcbiAgICAgIHRoaXMuYXBrU3RyaW5nc1t0aGlzLm9wdHMubGFuZ3VhZ2VdID0gYXBrU3RyaW5nc0Zvckxhbmd1YWdlO1xuICAgIH1cblxuICAgIC8vIFRoaXMgbXVzdCBydW4gYWZ0ZXIgaW5zdGFsbGluZyB0aGUgYXBrLCBvdGhlcndpc2UgaXQgd291bGQgY2F1c2UgdGhlXG4gICAgLy8gaW5zdGFsbCB0byBmYWlsLiBBbmQgYmVmb3JlIHJ1bm5pbmcgdGhlIGFwcC5cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQodGhpcy5vcHRzLnNoYXJlZFByZWZlcmVuY2VzKSkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRTaGFyZWRQcmVmZXJlbmNlcyh0aGlzLm9wdHMpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNoZWNrQXBwUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgYXBwIGlzIGFjdHVhbGx5IHByZXNlbnQnKTtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5vcHRzLmFwcCkpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgZmluZCBhcHAgYXBrIGF0ICR7dGhpcy5vcHRzLmFwcH1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjaGVja1BhY2thZ2VQcmVzZW50ICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnQ2hlY2tpbmcgd2hldGhlciBwYWNrYWdlIGlzIHByZXNlbnQgb24gdGhlIGRldmljZScpO1xuICAgIGlmICghKGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncG0nLCAnbGlzdCcsICdwYWNrYWdlcycsIHRoaXMub3B0cy5hcHBQYWNrYWdlXSkpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgZmluZCBwYWNrYWdlICR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9IG9uIHRoZSBkZXZpY2VgKTtcbiAgICB9XG4gIH1cblxuICAvLyBTZXQgQ29tcHJlc3NlZExheW91dEhpZXJhcmNoeSBvbiB0aGUgZGV2aWNlXG4gIGFzeW5jIHNldENvbXByZXNzZWRMYXlvdXRIaWVyYXJjaHkgKGNvbXByZXNzKSB7XG4gICAgYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignY29tcHJlc3NlZExheW91dEhpZXJhcmNoeScsIHtjb21wcmVzc0xheW91dDogY29tcHJlc3N9KTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdTaHV0dGluZyBkb3duIEFuZHJvaWQgZHJpdmVyJyk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKCFfLmlzRW1wdHkodGhpcy5fc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcykpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zdG9wUmVjb3JkaW5nU2NyZWVuKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuXG4gICAgYXdhaXQgaGVscGVycy5yZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnModGhpcy5zZXJ2ZXIsIHRoaXMuc2Vzc2lvbklkKTtcblxuICAgIGF3YWl0IHRoaXMubW9iaWxlU3RvcFNjcmVlblN0cmVhbWluZygpO1xuXG4gICAgYXdhaXQgc3VwZXIuZGVsZXRlU2Vzc2lvbigpO1xuXG4gICAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgICAvLyBjZXJ0YWluIGNsZWFudXAgd2Ugb25seSBjYXJlIHRvIGRvIGlmIHRoZSBib290c3RyYXAgd2FzIGV2ZXIgcnVuXG4gICAgICBhd2FpdCB0aGlzLnN0b3BDaHJvbWVkcml2ZXJQcm94aWVzKCk7XG4gICAgICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCAmJiB0aGlzLm9wdHMucmVzZXRLZXlib2FyZCAmJiB0aGlzLmRlZmF1bHRJTUUpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlc2V0dGluZyBJTUUgdG8gJHt0aGlzLmRlZmF1bHRJTUV9YCk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiPy5zZXRJTUUodGhpcy5kZWZhdWx0SU1FKTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pc0Nocm9tZVNlc3Npb24gJiYgIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGI/LmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYj8uZ29Ub0hvbWUoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCAmJiAhdGhpcy5hcHBPbkRldmljZSkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYj8udW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNodXRkb3duKCk7XG4gICAgICB0aGlzLmJvb3RzdHJhcCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKFwiQ2FsbGVkIGRlbGV0ZVNlc3Npb24gYnV0IGJvb3RzdHJhcCB3YXNuJ3QgYWN0aXZlXCIpO1xuICAgIH1cbiAgICAvLyBzb21lIGNsZWFudXAgd2Ugd2FudCB0byBkbyByZWdhcmRsZXNzLCBpbiBjYXNlIHdlIGFyZSBzaHV0dGluZyBkb3duXG4gICAgLy8gbWlkLXN0YXJ0dXBcbiAgICBhd2FpdCB0aGlzLmFkYj8uc3RvcExvZ2NhdCgpO1xuICAgIGlmICh0aGlzLnVzZVVubG9ja0hlbHBlckFwcCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGI/LmZvcmNlU3RvcCgnaW8uYXBwaXVtLnVubG9jaycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyB3aW5kb3cgYW5pbWF0aW9uIHN0YXRlJyk7XG4gICAgICBhd2FpdCB0aGlzLmFkYj8uc2V0QW5pbWF0aW9uU3RhdGUodHJ1ZSk7XG5cbiAgICAgIC8vIFRoaXMgd2FzIG5lY2Vzc2FyeSB0byBjaGFuZ2UgYW5pbWF0aW9uIHNjYWxlIG92ZXIgQW5kcm9pZCBQLiBXZSBtdXN0IHJlc2V0IHRoZSBwb2xpY3kgZm9yIHRoZSBzZWN1cml0eS5cbiAgICAgIGlmIChhd2FpdCB0aGlzLmFkYj8uZ2V0QXBpTGV2ZWwoKSA+PSAyOCkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKCdSZXN0b3JpbmcgaGlkZGVuIGFwaSBwb2xpY3kgdG8gdGhlIGRldmljZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24nKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGI/LnNldERlZmF1bHRIaWRkZW5BcGlQb2xpY3koISF0aGlzLm9wdHMuaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucmVib290KSB7XG4gICAgICBsZXQgYXZkTmFtZSA9IHRoaXMub3B0cy5hdmQucmVwbGFjZSgnQCcsICcnKTtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBjbG9zaW5nIGVtdWxhdG9yICcke2F2ZE5hbWV9J2ApO1xuICAgICAgYXdhaXQgdGhpcy5hZGI/LmtpbGxFbXVsYXRvcihhdmROYW1lKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZXRTaGFyZWRQcmVmZXJlbmNlcyAoKSB7XG4gICAgbGV0IHNoYXJlZFByZWZzID0gdGhpcy5vcHRzLnNoYXJlZFByZWZlcmVuY2VzO1xuICAgIHRoaXMubG9nLmluZm8oJ1RyeWluZyB0byBzZXQgc2hhcmVkIHByZWZlcmVuY2VzJyk7XG4gICAgbGV0IG5hbWUgPSBzaGFyZWRQcmVmcy5uYW1lO1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBTa2lwcGluZyBzZXR0aW5nIFNoYXJlZCBwcmVmZXJlbmNlcywgbmFtZSBpcyB1bmRlZmluZWQ6ICR7SlNPTi5zdHJpbmdpZnkoc2hhcmVkUHJlZnMpfWApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgcmVtb3RlUGF0aCA9IGAvZGF0YS9kYXRhLyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9L3NoYXJlZF9wcmVmc2A7XG4gICAgbGV0IHJlbW90ZUZpbGUgPSBgJHtyZW1vdGVQYXRofS8ke25hbWV9LnhtbGA7XG4gICAgbGV0IGxvY2FsUGF0aCA9IGAvdG1wLyR7bmFtZX0ueG1sYDtcbiAgICBsZXQgYnVpbGRlciA9IHRoaXMuZ2V0UHJlZnNCdWlsZGVyKCk7XG4gICAgYnVpbGRlci5idWlsZChzaGFyZWRQcmVmcy5wcmVmcyk7XG4gICAgdGhpcy5sb2cuaW5mbyhgQ3JlYXRpbmcgdGVtcG9yYXJ5IHNoYXJlZCBwcmVmZXJlbmNlczogJHtsb2NhbFBhdGh9YCk7XG4gICAgYnVpbGRlci50b0ZpbGUobG9jYWxQYXRoKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBDcmVhdGluZyBzaGFyZWRfcHJlZnMgcmVtb3RlIGZvbGRlcjogJHtyZW1vdGVQYXRofWApO1xuICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnbWtkaXInLCAnLXAnLCByZW1vdGVQYXRoXSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUHVzaGluZyBzaGFyZWRfcHJlZnMgdG8gJHtyZW1vdGVGaWxlfWApO1xuICAgIGF3YWl0IHRoaXMuYWRiLnB1c2gobG9jYWxQYXRoLCByZW1vdGVGaWxlKTtcbiAgICB0cnkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVHJ5aW5nIHRvIHJlbW92ZSBzaGFyZWQgcHJlZmVyZW5jZXMgdGVtcG9yYXJ5IGZpbGVgKTtcbiAgICAgIGlmIChhd2FpdCBmcy5leGlzdHMobG9jYWxQYXRoKSkge1xuICAgICAgICBhd2FpdCBmcy51bmxpbmsobG9jYWxQYXRoKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy53YXJuKGBFcnJvciB0cnlpbmcgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlICR7bG9jYWxQYXRofWApO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldFByZWZzQnVpbGRlciAoKSB7XG4gICAgLyogQWRkIHRoaXMgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBTaGFyZWRQcmVmc0J1aWxkZXIgaW5zdGVhZCBvZlxuICAgICAqIGRpcmVjdGx5IGNyZWF0aW5nIHRoZSBvYmplY3Qgb24gc2V0U2hhcmVkUHJlZmVyZW5jZXMgZm9yIHRlc3RpbmcgcHVycG9zZXNcbiAgICAqL1xuICAgIHJldHVybiBuZXcgU2hhcmVkUHJlZnNCdWlsZGVyKCk7XG4gIH1cblxuICB2YWxpZGF0ZURlc2lyZWRDYXBzIChjYXBzKSB7XG4gICAgaWYgKCFzdXBlci52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICgoIWNhcHMuYnJvd3Nlck5hbWUgfHwgIWhlbHBlcnMuaXNDaHJvbWVCcm93c2VyKGNhcHMuYnJvd3Nlck5hbWUpKSAmJiAhY2Fwcy5hcHAgJiYgIWNhcHMuYXBwUGFja2FnZSkge1xuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnVGhlIGRlc2lyZWQgY2FwYWJpbGl0aWVzIG11c3QgaW5jbHVkZSBlaXRoZXIgYW4gYXBwLCBhcHBQYWNrYWdlIG9yIGJyb3dzZXJOYW1lJyk7XG4gICAgfVxuICAgIHJldHVybiBoZWxwZXJzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIucHJveHlBY3RpdmUoc2Vzc2lvbklkKTtcblxuICAgIHJldHVybiB0aGlzLmp3cFByb3h5QWN0aXZlO1xuICB9XG5cbiAgZ2V0UHJveHlBdm9pZExpc3QgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmdldFByb3h5QXZvaWRMaXN0KHNlc3Npb25JZCk7XG5cbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUF2b2lkO1xuICB9XG5cbiAgY2FuUHJveHkgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmNhblByb3h5KHNlc3Npb25JZCk7XG5cbiAgICAvLyB0aGlzIHdpbGwgY2hhbmdlIGRlcGVuZGluZyBvbiBDaHJvbWVEcml2ZXIgc3RhdHVzXG4gICAgcmV0dXJuIF8uaXNGdW5jdGlvbih0aGlzLnByb3h5UmVxUmVzKTtcbiAgfVxufVxuXG5leHBvcnQgeyBBbmRyb2lkRHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBBbmRyb2lkRHJpdmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLGFBQWEsR0FBRyxNQUF0QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxJQUFwQjtBQUlBLE1BQU1DLFFBQVEsR0FBRyxDQUNmLENBQUMsTUFBRCxFQUFTLElBQUlDLE1BQUosQ0FBVyx5QkFBWCxDQUFULENBRGUsRUFFZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBUixDQUZlLEVBR2YsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLHdCQUFYLENBQVQsQ0FIZSxFQUlmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVyx3QkFBWCxDQUFSLENBSmUsRUFLZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0JBQVgsQ0FBVCxDQUxlLEVBTWYsQ0FBQyxNQUFELEVBQVMsSUFBSUEsTUFBSixDQUFXLHFDQUFYLENBQVQsQ0FOZSxFQU9mLENBQUMsTUFBRCxFQUFTLElBQUlBLE1BQUosQ0FBVyw2QkFBWCxDQUFULENBUGUsRUFRZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENB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
|
package/build/lib/logger.js
CHANGED
|
@@ -12,7 +12,5 @@ var _support = require("appium/support");
|
|
|
12
12
|
const log = _support.logger.getLogger('AndroidDriver');
|
|
13
13
|
|
|
14
14
|
var _default = log;
|
|
15
|
-
exports.default = _default;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignQW5kcm9pZERyaXZlcicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBLE1BQU1BLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLGVBQWpCLENBQVo7O2VBRWVGLEcifQ==
|
|
15
|
+
exports.default = _default;
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0FuZHJvaWREcml2ZXInKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQSxNQUFNQSxHQUFHLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQixlQUFqQixDQUFaOztlQUVlRixHIn0=
|
package/build/lib/uiautomator.js
CHANGED
|
@@ -117,7 +117,5 @@ UiAutomator.STATE_STOPPED = 'stopped';
|
|
|
117
117
|
UiAutomator.STATE_STARTING = 'starting';
|
|
118
118
|
UiAutomator.STATE_ONLINE = 'online';
|
|
119
119
|
var _default = UiAutomator;
|
|
120
|
-
exports.default = _default;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3VpYXV0b21hdG9yLmpzIiwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIiwiVWlBdXRvbWF0b3IiLCJldmVudHMiLCJFdmVudEVtaXR0ZXIiLCJjb25zdHJ1Y3RvciIsImFkYiIsImVycm9yQW5kVGhyb3ciLCJ0ZW1wUGF0aCIsInN0YXJ0IiwidWlBdXRvbWF0b3JCaW5hcnlQYXRoIiwiY2xhc3NOYW1lIiwic3RhcnREZXRlY3RvciIsImV4dHJhUGFyYW1zIiwicHJvY2Vzc0lzQWxpdmUiLCJkZWJ1ZyIsImNoYW5nZVN0YXRlIiwiU1RBVEVfU1RBUlRJTkciLCJqYXJOYW1lIiwicGFyc2VKYXJOYW1lRnJvbVBhdGgiLCJwdXNoIiwia2lsbFVpQXV0b21hdG9yT25EZXZpY2UiLCJhcmdzIiwicHJvYyIsImNyZWF0ZVN1YlByb2Nlc3MiLCJvbiIsImNvZGUiLCJzaWduYWwiLCJzdGF0ZSIsIlNUQVRFX1NUT1BQRUQiLCJTVEFURV9TVE9QUElORyIsIm1zZyIsImVycm9yIiwiU1RBVEVfT05MSU5FIiwiZSIsImVtaXQiLCJFVkVOVF9FUlJPUiIsInN0b3AiLCJzaHV0ZG93biIsImJpbmFyeVBhdGgiLCJyZVRlc3QiLCJleGVjIiwiRXJyb3IiLCJFVkVOVF9DSEFOR0VEIiwia2lsbFByb2Nlc3Nlc0J5TmFtZSIsIndhcm4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvdWlhdXRvbWF0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGV2ZW50cyBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1VpQXV0b21hdG9yJyk7XG5cbmNsYXNzIFVpQXV0b21hdG9yIGV4dGVuZHMgZXZlbnRzLkV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yIChhZGIpIHtcbiAgICBpZiAoIWFkYikge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coJ2FkYiBpcyByZXF1aXJlZCB0byBpbnN0YW50aWF0ZSBVaUF1dG9tYXRvcicpO1xuICAgIH1cbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYWRiID0gYWRiO1xuICAgIHRoaXMudGVtcFBhdGggPSAnL2RhdGEvbG9jYWwvdG1wLyc7XG4gIH1cblxuICBhc3luYyBzdGFydCAodWlBdXRvbWF0b3JCaW5hcnlQYXRoLCBjbGFzc05hbWUsIHN0YXJ0RGV0ZWN0b3IsIC4uLmV4dHJhUGFyYW1zKSB7XG4gICAgbGV0IHByb2Nlc3NJc0FsaXZlO1xuICAgIHRyeSB7XG4gICAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIFVpQXV0b21hdG9yJyk7XG4gICAgICB0aGlzLmNoYW5nZVN0YXRlKFVpQXV0b21hdG9yLlNUQVRFX1NUQVJUSU5HKTtcblxuICAgICAgbG9nLmRlYnVnKCdQYXJzaW5nIHVpYXV0b21hdG9yIGphcicpO1xuICAgICAgLy8gZXhwZWN0aW5nIGEgcGF0aCBsaWtlIC9hZHMvYWRzL2Zvby5qYXIgb3IgXFxhc2RcXGFzZFxcZm9vLmphclxuICAgICAgbGV0IGphck5hbWUgPSB0aGlzLnBhcnNlSmFyTmFtZUZyb21QYXRoKHVpQXV0b21hdG9yQmluYXJ5UGF0aCk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKHVpQXV0b21hdG9yQmluYXJ5UGF0aCwgdGhpcy50ZW1wUGF0aCk7XG5cbiAgICAgIC8vIGtpbGxpbmcgYW55IHVpYXV0b21hdG9yIGV4aXN0aW5nIHByb2Nlc3Nlc1xuICAgICAgYXdhaXQgdGhpcy5raWxsVWlBdXRvbWF0b3JPbkRldmljZSgpO1xuXG4gICAgICBsb2cuZGVidWcoJ1N0YXJ0aW5nIFVJQXV0b21hdG9yJyk7XG4gICAgICBsZXQgYXJncyA9IFsnc2hlbGwnLCAndWlhdXRvbWF0b3InLCAncnVudGVzdCcsIGphck5hbWUsICctYycsIGNsYXNzTmFtZSwgLi4uZXh0cmFQYXJhbXNdO1xuICAgICAgdGhpcy5wcm9jID0gdGhpcy5hZGIuY3JlYXRlU3ViUHJvY2VzcyhhcmdzKTtcblxuICAgICAgLy8gaGFuZGxlIG91dC1vZi1ib3VuZCBleGl0IGJ5IHNpbXBseSBlbWl0dGluZyBhIHN0b3BwZWQgc3RhdGVcbiAgICAgIHRoaXMucHJvYy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgICAgcHJvY2Vzc0lzQWxpdmUgPSBmYWxzZTtcbiAgICAgICAgLy8gY2xlYW51cFxuICAgICAgICBpZiAodGhpcy5zdGF0ZSAhPT0gVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBFRCAmJlxuICAgICAgICAgICAgdGhpcy5zdGF0ZSAhPT0gVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBJTkcpIHtcbiAgICAgICAgICBsZXQgbXNnID0gYFVpQXV0b21hdG9yIGV4aXRlZCB1bmV4cGVjdGVkbHkgd2l0aCBjb2RlICR7Y29kZX0sIGAgK1xuICAgICAgICAgICAgICAgICAgICBgc2lnbmFsICR7c2lnbmFsfWA7XG4gICAgICAgICAgbG9nLmVycm9yKG1zZyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zdGF0ZSA9PT0gVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBJTkcpIHtcbiAgICAgICAgICBsb2cuZGVidWcoJ1VpQXV0b21hdG9yIHNodXQgZG93biBub3JtYWxseScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2hhbmdlU3RhdGUoVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBFRCk7XG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0YXJ0KHN0YXJ0RGV0ZWN0b3IpO1xuICAgICAgcHJvY2Vzc0lzQWxpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShVaUF1dG9tYXRvci5TVEFURV9PTkxJTkUpO1xuICAgICAgcmV0dXJuIHRoaXMucHJvYztcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmVtaXQoVWlBdXRvbWF0b3IuRVZFTlRfRVJST1IsIGUpO1xuICAgICAgaWYgKHByb2Nlc3NJc0FsaXZlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMua2lsbFVpQXV0b21hdG9yT25EZXZpY2UoKTtcbiAgICAgICAgYXdhaXQgdGhpcy5wcm9jLnN0b3AoKTtcbiAgICAgIH1cbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGUpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNodXRkb3duICgpIHtcbiAgICBsb2cuZGVidWcoJ1NodXR0aW5nIGRvd24gVWlBdXRvbWF0b3InKTtcbiAgICBpZiAodGhpcy5zdGF0ZSAhPT0gVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBFRCkge1xuICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShVaUF1dG9tYXRvci5TVEFURV9TVE9QUElORyk7XG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmtpbGxVaUF1dG9tYXRvck9uRGV2aWNlKCk7XG4gICAgdGhpcy5jaGFuZ2VTdGF0ZShVaUF1dG9tYXRvci5TVEFURV9TVE9QUEVEKTtcbiAgfVxuXG4gIHBhcnNlSmFyTmFtZUZyb21QYXRoIChiaW5hcnlQYXRoKSB7XG4gICAgbGV0IHJlVGVzdCA9IC8uKihcXC98XFxcXCkoLipcXC5qYXIpLy5leGVjKGJpbmFyeVBhdGgpO1xuICAgIGlmICghcmVUZXN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBwYXJzZSBqYXIgbmFtZSBmcm9tICR7YmluYXJ5UGF0aH1gKTtcbiAgICB9XG4gICAgbGV0IGphck5hbWUgPSByZVRlc3RbMl07XG4gICAgbG9nLmRlYnVnKGBGb3VuZCBqYXIgbmFtZTogJyR7amFyTmFtZX0nYCk7XG4gICAgcmV0dXJuIGphck5hbWU7XG4gIH1cblxuICBjaGFuZ2VTdGF0ZSAoc3RhdGUpIHtcbiAgICBsb2cuZGVidWcoYE1vdmluZyB0byBzdGF0ZSAnJHtzdGF0ZX0nYCk7XG4gICAgdGhpcy5zdGF0ZSA9IHN0YXRlO1xuICAgIHRoaXMuZW1pdChVaUF1dG9tYXRvci5FVkVOVF9DSEFOR0VELCB7c3RhdGV9KTtcbiAgfVxuXG4gIGFzeW5jIGtpbGxVaUF1dG9tYXRvck9uRGV2aWNlICgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIua2lsbFByb2Nlc3Nlc0J5TmFtZSgndWlhdXRvbWF0b3InKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cud2FybihgRXJyb3Igd2hpbGUga2lsbGluZyB1aUF1dG9tYXRvcjogJHtlfWApO1xuICAgIH1cbiAgfVxuXG59XG5cblVpQXV0b21hdG9yLkVWRU5UX0VSUk9SID0gJ3VpYXV0b21hdG9yX2Vycm9yJztcblVpQXV0b21hdG9yLkVWRU5UX0NIQU5HRUQgPSAnc3RhdGVDaGFuZ2VkJztcblVpQXV0b21hdG9yLlNUQVRFX1NUT1BQSU5HID0gJ3N0b3BwaW5nJztcblVpQXV0b21hdG9yLlNUQVRFX1NUT1BQRUQgPSAnc3RvcHBlZCc7XG5VaUF1dG9tYXRvci5TVEFURV9TVEFSVElORyA9ICdzdGFydGluZyc7XG5VaUF1dG9tYXRvci5TVEFURV9PTkxJTkUgPSAnb25saW5lJztcblxuXG5leHBvcnQgeyBVaUF1dG9tYXRvciB9O1xuZXhwb3J0IGRlZmF1bHQgVWlBdXRvbWF0b3I7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0EsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsYUFBakIsQ0FBWjs7QUFFQSxNQUFNQyxXQUFOLFNBQTBCQyxlQUFBLENBQU9DLFlBQWpDLENBQThDO0VBQzVDQyxXQUFXLENBQUVDLEdBQUYsRUFBTztJQUNoQixJQUFJLENBQUNBLEdBQUwsRUFBVTtNQUNSUCxHQUFHLENBQUNRLGFBQUosQ0FBa0IsNENBQWxCO0lBQ0Q7O0lBQ0Q7SUFDQSxLQUFLRCxHQUFMLEdBQVdBLEdBQVg7SUFDQSxLQUFLRSxRQUFMLEdBQWdCLGtCQUFoQjtFQUNEOztFQUVVLE1BQUxDLEtBQUssQ0FBRUMscUJBQUYsRUFBeUJDLFNBQXpCLEVBQW9DQyxhQUFwQyxFQUFtRCxHQUFHQyxXQUF0RCxFQUFtRTtJQUM1RSxJQUFJQyxjQUFKOztJQUNBLElBQUk7TUFDRmYsR0FBRyxDQUFDZ0IsS0FBSixDQUFVLHNCQUFWO01BQ0EsS0FBS0MsV0FBTCxDQUFpQmQsV0FBVyxDQUFDZSxjQUE3QjtNQUVBbEIsR0FBRyxDQUFDZ0IsS0FBSixDQUFVLHlCQUFWO01BRUEsSUFBSUcsT0FBTyxHQUFHLEtBQUtDLG9CQUFMLENBQTBCVCxxQkFBMUIsQ0FBZDtNQUNBLE1BQU0sS0FBS0osR0FBTCxDQUFTYyxJQUFULENBQWNWLHFCQUFkLEVBQXFDLEtBQUtGLFFBQTFDLENBQU47TUFHQSxNQUFNLEtBQUthLHVCQUFMLEVBQU47TUFFQXRCLEdBQUcsQ0FBQ2dCLEtBQUosQ0FBVSxzQkFBVjtNQUNBLElBQUlPLElBQUksR0FBRyxDQUFDLE9BQUQsRUFBVSxhQUFWLEVBQXlCLFNBQXpCLEVBQW9DSixPQUFwQyxFQUE2QyxJQUE3QyxFQUFtRFAsU0FBbkQsRUFBOEQsR0FBR0UsV0FBakUsQ0FBWDtNQUNBLEtBQUtVLElBQUwsR0FBWSxLQUFLakIsR0FBTCxDQUFTa0IsZ0JBQVQsQ0FBMEJGLElBQTFCLENBQVo7TUFHQSxLQUFLQyxJQUFMLENBQVVFLEVBQVYsQ0FBYSxNQUFiLEVBQXFCLENBQUNDLElBQUQsRUFBT0MsTUFBUCxLQUFrQjtRQUNyQ2IsY0FBYyxHQUFHLEtBQWpCOztRQUVBLElBQUksS0FBS2MsS0FBTCxLQUFlMUIsV0FBVyxDQUFDMkIsYUFBM0IsSUFDQSxLQUFLRCxLQUFMLEtBQWUxQixXQUFXLENBQUM0QixjQUQvQixFQUMrQztVQUM3QyxJQUFJQyxHQUFHLEdBQUksNkNBQTRDTCxJQUFLLElBQWxELEdBQ0MsVUFBU0MsTUFBTyxFQUQzQjtVQUVBNUIsR0FBRyxDQUFDaUMsS0FBSixDQUFVRCxHQUFWO1FBQ0QsQ0FMRCxNQUtPLElBQUksS0FBS0gsS0FBTCxLQUFlMUIsV0FBVyxDQUFDNEIsY0FBL0IsRUFBK0M7VUFDcEQvQixHQUFHLENBQUNnQixLQUFKLENBQVUsZ0NBQVY7UUFDRDs7UUFDRCxLQUFLQyxXQUFMLENBQWlCZCxXQUFXLENBQUMyQixhQUE3QjtNQUNELENBWkQ7TUFjQSxNQUFNLEtBQUtOLElBQUwsQ0FBVWQsS0FBVixDQUFnQkcsYUFBaEIsQ0FBTjtNQUNBRSxjQUFjLEdBQUcsSUFBakI7TUFDQSxLQUFLRSxXQUFMLENBQWlCZCxXQUFXLENBQUMrQixZQUE3QjtNQUNBLE9BQU8sS0FBS1YsSUFBWjtJQUNELENBbkNELENBbUNFLE9BQU9XLENBQVAsRUFBVTtNQUNWLEtBQUtDLElBQUwsQ0FBVWpDLFdBQVcsQ0FBQ2tDLFdBQXRCLEVBQW1DRixDQUFuQzs7TUFDQSxJQUFJcEIsY0FBSixFQUFvQjtRQUNsQixNQUFNLEtBQUtPLHVCQUFMLEVBQU47UUFDQSxNQUFNLEtBQUtFLElBQUwsQ0FBVWMsSUFBVixFQUFOO01BQ0Q7O01BQ0R0QyxHQUFHLENBQUNRLGFBQUosQ0FBa0IyQixDQUFsQjtJQUNEO0VBQ0Y7O0VBRWEsTUFBUkksUUFBUSxHQUFJO0lBQ2hCdkMsR0FBRyxDQUFDZ0IsS0FBSixDQUFVLDJCQUFWOztJQUNBLElBQUksS0FBS2EsS0FBTCxLQUFlMUIsV0FBVyxDQUFDMkIsYUFBL0IsRUFBOEM7TUFDNUMsS0FBS2IsV0FBTCxDQUFpQmQsV0FBVyxDQUFDNEIsY0FBN0I7TUFDQSxNQUFNLEtBQUtQLElBQUwsQ0FBVWMsSUFBVixFQUFOO0lBQ0Q7O0lBQ0QsTUFBTSxLQUFLaEIsdUJBQUwsRUFBTjtJQUNBLEtBQUtMLFdBQUwsQ0FBaUJkLFdBQVcsQ0FBQzJCLGFBQTdCO0VBQ0Q7O0VBRURWLG9CQUFvQixDQUFFb0IsVUFBRixFQUFjO0lBQ2hDLElBQUlDLE1BQU0sR0FBRyxxQkFBcUJDLElBQXJCLENBQTBCRixVQUExQixDQUFiOztJQUNBLElBQUksQ0FBQ0MsTUFBTCxFQUFhO01BQ1gsTUFBTSxJQUFJRSxLQUFKLENBQVcsaUNBQWdDSCxVQUFXLEVBQXRELENBQU47SUFDRDs7SUFDRCxJQUFJckIsT0FBTyxHQUFHc0IsTUFBTSxDQUFDLENBQUQsQ0FBcEI7SUFDQXpDLEdBQUcsQ0FBQ2dCLEtBQUosQ0FBVyxvQkFBbUJHLE9BQVEsR0FBdEM7SUFDQSxPQUFPQSxPQUFQO0VBQ0Q7O0VBRURGLFdBQVcsQ0FBRVksS0FBRixFQUFTO0lBQ2xCN0IsR0FBRyxDQUFDZ0IsS0FBSixDQUFXLG9CQUFtQmEsS0FBTSxHQUFwQztJQUNBLEtBQUtBLEtBQUwsR0FBYUEsS0FBYjtJQUNBLEtBQUtPLElBQUwsQ0FBVWpDLFdBQVcsQ0FBQ3lDLGFBQXRCLEVBQXFDO01BQUNmO0lBQUQsQ0FBckM7RUFDRDs7RUFFNEIsTUFBdkJQLHVCQUF1QixHQUFJO0lBQy9CLElBQUk7TUFDRixNQUFNLEtBQUtmLEdBQUwsQ0FBU3NDLG1CQUFULENBQTZCLGFBQTdCLENBQU47SUFDRCxDQUZELENBRUUsT0FBT1YsQ0FBUCxFQUFVO01BQ1ZuQyxHQUFHLENBQUM4QyxJQUFKLENBQVUsb0NBQW1DWCxDQUFFLEVBQS9DO0lBQ0Q7RUFDRjs7QUF6RjJDOzs7QUE2RjlDaEMsV0FBVyxDQUFDa0MsV0FBWixHQUEwQixtQkFBMUI7QUFDQWxDLFdBQVcsQ0FBQ3lDLGFBQVosR0FBNEIsY0FBNUI7QUFDQXpDLFdBQVcsQ0FBQzRCLGNBQVosR0FBNkIsVUFBN0I7QUFDQTVCLFdBQVcsQ0FBQzJCLGFBQVosR0FBNEIsU0FBNUI7QUFDQTNCLFdBQVcsQ0FBQ2UsY0FBWixHQUE2QixVQUE3QjtBQUNBZixXQUFXLENBQUMrQixZQUFaLEdBQTJCLFFBQTNCO2VBSWUvQixXIn0=
|
|
120
|
+
exports.default = _default;
|
|
121
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJsb2dnZXIiLCJnZXRMb2dnZXIiLCJVaUF1dG9tYXRvciIsImV2ZW50cyIsIkV2ZW50RW1pdHRlciIsImNvbnN0cnVjdG9yIiwiYWRiIiwiZXJyb3JBbmRUaHJvdyIsInRlbXBQYXRoIiwic3RhcnQiLCJ1aUF1dG9tYXRvckJpbmFyeVBhdGgiLCJjbGFzc05hbWUiLCJzdGFydERldGVjdG9yIiwiZXh0cmFQYXJhbXMiLCJwcm9jZXNzSXNBbGl2ZSIsImRlYnVnIiwiY2hhbmdlU3RhdGUiLCJTVEFURV9TVEFSVElORyIsImphck5hbWUiLCJwYXJzZUphck5hbWVGcm9tUGF0aCIsInB1c2giLCJraWxsVWlBdXRvbWF0b3JPbkRldmljZSIsImFyZ3MiLCJwcm9jIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0YXRlIiwiU1RBVEVfU1RPUFBFRCIsIlNUQVRFX1NUT1BQSU5HIiwibXNnIiwiZXJyb3IiLCJTVEFURV9PTkxJTkUiLCJlIiwiZW1pdCIsIkVWRU5UX0VSUk9SIiwic3RvcCIsInNodXRkb3duIiwiYmluYXJ5UGF0aCIsInJlVGVzdCIsImV4ZWMiLCJFcnJvciIsIkVWRU5UX0NIQU5HRUQiLCJraWxsUHJvY2Vzc2VzQnlOYW1lIiwid2FybiJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi91aWF1dG9tYXRvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZXZlbnRzIGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cblxuY29uc3QgbG9nID0gbG9nZ2VyLmdldExvZ2dlcignVWlBdXRvbWF0b3InKTtcblxuY2xhc3MgVWlBdXRvbWF0b3IgZXh0ZW5kcyBldmVudHMuRXZlbnRFbWl0dGVyIHtcbiAgY29uc3RydWN0b3IgKGFkYikge1xuICAgIGlmICghYWRiKSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdygnYWRiIGlzIHJlcXVpcmVkIHRvIGluc3RhbnRpYXRlIFVpQXV0b21hdG9yJyk7XG4gICAgfVxuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5hZGIgPSBhZGI7XG4gICAgdGhpcy50ZW1wUGF0aCA9ICcvZGF0YS9sb2NhbC90bXAvJztcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0ICh1aUF1dG9tYXRvckJpbmFyeVBhdGgsIGNsYXNzTmFtZSwgc3RhcnREZXRlY3RvciwgLi4uZXh0cmFQYXJhbXMpIHtcbiAgICBsZXQgcHJvY2Vzc0lzQWxpdmU7XG4gICAgdHJ5IHtcbiAgICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgVWlBdXRvbWF0b3InKTtcbiAgICAgIHRoaXMuY2hhbmdlU3RhdGUoVWlBdXRvbWF0b3IuU1RBVEVfU1RBUlRJTkcpO1xuXG4gICAgICBsb2cuZGVidWcoJ1BhcnNpbmcgdWlhdXRvbWF0b3IgamFyJyk7XG4gICAgICAvLyBleHBlY3RpbmcgYSBwYXRoIGxpa2UgL2Fkcy9hZHMvZm9vLmphciBvciBcXGFzZFxcYXNkXFxmb28uamFyXG4gICAgICBsZXQgamFyTmFtZSA9IHRoaXMucGFyc2VKYXJOYW1lRnJvbVBhdGgodWlBdXRvbWF0b3JCaW5hcnlQYXRoKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1c2godWlBdXRvbWF0b3JCaW5hcnlQYXRoLCB0aGlzLnRlbXBQYXRoKTtcblxuICAgICAgLy8ga2lsbGluZyBhbnkgdWlhdXRvbWF0b3IgZXhpc3RpbmcgcHJvY2Vzc2VzXG4gICAgICBhd2FpdCB0aGlzLmtpbGxVaUF1dG9tYXRvck9uRGV2aWNlKCk7XG5cbiAgICAgIGxvZy5kZWJ1ZygnU3RhcnRpbmcgVUlBdXRvbWF0b3InKTtcbiAgICAgIGxldCBhcmdzID0gWydzaGVsbCcsICd1aWF1dG9tYXRvcicsICdydW50ZXN0JywgamFyTmFtZSwgJy1jJywgY2xhc3NOYW1lLCAuLi5leHRyYVBhcmFtc107XG4gICAgICB0aGlzLnByb2MgPSB0aGlzLmFkYi5jcmVhdGVTdWJQcm9jZXNzKGFyZ3MpO1xuXG4gICAgICAvLyBoYW5kbGUgb3V0LW9mLWJvdW5kIGV4aXQgYnkgc2ltcGx5IGVtaXR0aW5nIGEgc3RvcHBlZCBzdGF0ZVxuICAgICAgdGhpcy5wcm9jLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgICBwcm9jZXNzSXNBbGl2ZSA9IGZhbHNlO1xuICAgICAgICAvLyBjbGVhbnVwXG4gICAgICAgIGlmICh0aGlzLnN0YXRlICE9PSBVaUF1dG9tYXRvci5TVEFURV9TVE9QUEVEICYmXG4gICAgICAgICAgICB0aGlzLnN0YXRlICE9PSBVaUF1dG9tYXRvci5TVEFURV9TVE9QUElORykge1xuICAgICAgICAgIGxldCBtc2cgPSBgVWlBdXRvbWF0b3IgZXhpdGVkIHVuZXhwZWN0ZWRseSB3aXRoIGNvZGUgJHtjb2RlfSwgYCArXG4gICAgICAgICAgICAgICAgICAgIGBzaWduYWwgJHtzaWduYWx9YDtcbiAgICAgICAgICBsb2cuZXJyb3IobXNnKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXRlID09PSBVaUF1dG9tYXRvci5TVEFURV9TVE9QUElORykge1xuICAgICAgICAgIGxvZy5kZWJ1ZygnVWlBdXRvbWF0b3Igc2h1dCBkb3duIG5vcm1hbGx5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGFuZ2VTdGF0ZShVaUF1dG9tYXRvci5TVEFURV9TVE9QUEVEKTtcbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCB0aGlzLnByb2Muc3RhcnQoc3RhcnREZXRlY3Rvcik7XG4gICAgICBwcm9jZXNzSXNBbGl2ZSA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZVN0YXRlKFVpQXV0b21hdG9yLlNUQVRFX09OTElORSk7XG4gICAgICByZXR1cm4gdGhpcy5wcm9jO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMuZW1pdChVaUF1dG9tYXRvci5FVkVOVF9FUlJPUiwgZSk7XG4gICAgICBpZiAocHJvY2Vzc0lzQWxpdmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5raWxsVWlBdXRvbWF0b3JPbkRldmljZSgpO1xuICAgICAgICBhd2FpdCB0aGlzLnByb2Muc3RvcCgpO1xuICAgICAgfVxuICAgICAgbG9nLmVycm9yQW5kVGhyb3coZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2h1dGRvd24gKCkge1xuICAgIGxvZy5kZWJ1ZygnU2h1dHRpbmcgZG93biBVaUF1dG9tYXRvcicpO1xuICAgIGlmICh0aGlzLnN0YXRlICE9PSBVaUF1dG9tYXRvci5TVEFURV9TVE9QUEVEKSB7XG4gICAgICB0aGlzLmNoYW5nZVN0YXRlKFVpQXV0b21hdG9yLlNUQVRFX1NUT1BQSU5HKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMua2lsbFVpQXV0b21hdG9yT25EZXZpY2UoKTtcbiAgICB0aGlzLmNoYW5nZVN0YXRlKFVpQXV0b21hdG9yLlNUQVRFX1NUT1BQRUQpO1xuICB9XG5cbiAgcGFyc2VKYXJOYW1lRnJvbVBhdGggKGJpbmFyeVBhdGgpIHtcbiAgICBsZXQgcmVUZXN0ID0gLy4qKFxcL3xcXFxcKSguKlxcLmphcikvLmV4ZWMoYmluYXJ5UGF0aCk7XG4gICAgaWYgKCFyZVRlc3QpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIGphciBuYW1lIGZyb20gJHtiaW5hcnlQYXRofWApO1xuICAgIH1cbiAgICBsZXQgamFyTmFtZSA9IHJlVGVzdFsyXTtcbiAgICBsb2cuZGVidWcoYEZvdW5kIGphciBuYW1lOiAnJHtqYXJOYW1lfSdgKTtcbiAgICByZXR1cm4gamFyTmFtZTtcbiAgfVxuXG4gIGNoYW5nZVN0YXRlIChzdGF0ZSkge1xuICAgIGxvZy5kZWJ1ZyhgTW92aW5nIHRvIHN0YXRlICcke3N0YXRlfSdgKTtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5lbWl0KFVpQXV0b21hdG9yLkVWRU5UX0NIQU5HRUQsIHtzdGF0ZX0pO1xuICB9XG5cbiAgYXN5bmMga2lsbFVpQXV0b21hdG9yT25EZXZpY2UgKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5raWxsUHJvY2Vzc2VzQnlOYW1lKCd1aWF1dG9tYXRvcicpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy53YXJuKGBFcnJvciB3aGlsZSBraWxsaW5nIHVpQXV0b21hdG9yOiAke2V9YCk7XG4gICAgfVxuICB9XG5cbn1cblxuVWlBdXRvbWF0b3IuRVZFTlRfRVJST1IgPSAndWlhdXRvbWF0b3JfZXJyb3InO1xuVWlBdXRvbWF0b3IuRVZFTlRfQ0hBTkdFRCA9ICdzdGF0ZUNoYW5nZWQnO1xuVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBJTkcgPSAnc3RvcHBpbmcnO1xuVWlBdXRvbWF0b3IuU1RBVEVfU1RPUFBFRCA9ICdzdG9wcGVkJztcblVpQXV0b21hdG9yLlNUQVRFX1NUQVJUSU5HID0gJ3N0YXJ0aW5nJztcblVpQXV0b21hdG9yLlNUQVRFX09OTElORSA9ICdvbmxpbmUnO1xuXG5cbmV4cG9ydCB7IFVpQXV0b21hdG9yIH07XG5leHBvcnQgZGVmYXVsdCBVaUF1dG9tYXRvcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxHQUFHLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQixhQUFqQixDQUFaOztBQUVBLE1BQU1DLFdBQU4sU0FBMEJDLGVBQUEsQ0FBT0MsWUFBakMsQ0FBOEM7RUFDNUNDLFdBQVcsQ0FBRUMsR0FBRixFQUFPO0lBQ2hCLElBQUksQ0FBQ0EsR0FBTCxFQUFVO01BQ1JQLEdBQUcsQ0FBQ1EsYUFBSixDQUFrQiw0Q0FBbEI7SUFDRDs7SUFDRDtJQUNBLEtBQUtELEdBQUwsR0FBV0EsR0FBWDtJQUNBLEtBQUtFLFFBQUwsR0FBZ0Isa0JBQWhCO0VBQ0Q7O0VBRVUsTUFBTEMsS0FBSyxDQUFFQyxxQkFBRixFQUF5QkMsU0FBekIsRUFBb0NDLGFBQXBDLEVBQW1ELEdBQUdDLFdBQXRELEVBQW1FO0lBQzVFLElBQUlDLGNBQUo7O0lBQ0EsSUFBSTtNQUNGZixHQUFHLENBQUNnQixL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
|
|
@@ -300,7 +300,5 @@ helpers.PASSWORD_UNLOCK = PASSWORD_UNLOCK;
|
|
|
300
300
|
helpers.PATTERN_UNLOCK = PATTERN_UNLOCK;
|
|
301
301
|
helpers.FINGERPRINT_UNLOCK = FINGERPRINT_UNLOCK;
|
|
302
302
|
var _default = helpers;
|
|
303
|
-
exports.default = _default;
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3VubG9jay1oZWxwZXJzLmpzIiwibmFtZXMiOlsiUElOX1VOTE9DSyIsIlBJTl9VTkxPQ0tfS0VZX0VWRU5UIiwiUEFTU1dPUkRfVU5MT0NLIiwiUEFUVEVSTl9VTkxPQ0siLCJGSU5HRVJQUklOVF9VTkxPQ0siLCJVTkxPQ0tfVFlQRVMiLCJLRVlDT0RFX05VTVBBRF9FTlRFUiIsIlVOTE9DS19XQUlUX1RJTUUiLCJJTlBVVF9LRVlTX1dBSVRfVElNRSIsIk5VTUJFUl9aRVJPX0tFWUNPREUiLCJoZWxwZXJzIiwidmFsaWRhdGVVbmxvY2tDYXBhYmlsaXRpZXMiLCJjYXBzIiwidW5sb2NrS2V5IiwidW5sb2NrVHlwZSIsIl8iLCJpc05pbCIsIkVycm9yIiwiaW5jbHVkZXMiLCJ0ZXN0IiwidHJpbSIsImZhc3RVbmxvY2siLCJhZGIiLCJvcHRzIiwiY3JlZGVudGlhbCIsImNyZWRlbnRpYWxUeXBlIiwibG9nZ2VyIiwiaW5mbyIsIndhc0xvY2tFbmFibGVkIiwiaXNMb2NrRW5hYmxlZCIsImNsZWFyTG9ja0NyZWRlbnRpYWwiLCJjeWNsZVdha2VVcCIsImRpc21pc3NLZXlndWFyZCIsInNldExvY2tDcmVkZW50aWFsIiwiZW5jb2RlUGFzc3dvcmQiLCJrZXkiLCJyZXBsYWNlIiwic3RyaW5nS2V5VG9BcnIiLCJzcGxpdCIsImZpbmdlcnByaW50VW5sb2NrIiwiZHJpdmVyIiwiY2FwYWJpbGl0aWVzIiwiZ2V0QXBpTGV2ZWwiLCJmaW5nZXJwcmludCIsInNsZWVwIiwicGluVW5sb2NrIiwia2V5cyIsImVscyIsImZpbmRFbE9yRWxzIiwiaXNFbXB0eSIsInBpblVubG9ja1dpdGhLZXlFdmVudCIsInBpbnMiLCJlbCIsInRleHQiLCJnZXRBdHRyaWJ1dGUiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsInBpbiIsImNsaWNrIiwid2FpdEZvclVubG9jayIsImlzU2NyZWVuTG9ja2VkIiwia2V5ZXZlbnQiLCJzaGVsbCIsInBhcnNlSW50IiwicGFzc3dvcmRVbmxvY2siLCJnZXRQYXR0ZXJuS2V5UG9zaXRpb24iLCJpbml0UG9zIiwicGllY2UiLCJjb2xzIiwieFBvcyIsIngiLCJNYXRoIiwicm91bmQiLCJ5UG9zIiwieSIsImNlaWwiLCJnZXRQYXR0ZXJuQWN0aW9ucyIsImFjdGlvbnMiLCJsYXN0UG9zIiwia2V5UG9zIiwicHVzaCIsImFjdGlvbiIsIm9wdGlvbnMiLCJlbGVtZW50IiwibW92ZVRvIiwiZGlmZlgiLCJhYnMiLCJkaWZmWSIsInBhdHRlcm5VbmxvY2siLCJhcGlMZXZlbCIsImdldExvY2F0aW9uIiwic2l6ZSIsImdldFNpemUiLCJ3aWR0aCIsInBlcmZvcm1Ub3VjaCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi91bmxvY2staGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNsZWVwIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5cbmNvbnN0IFBJTl9VTkxPQ0sgPSAncGluJztcbmNvbnN0IFBJTl9VTkxPQ0tfS0VZX0VWRU5UID0gJ3BpbldpdGhLZXlFdmVudCc7XG5jb25zdCBQQVNTV09SRF9VTkxPQ0sgPSAncGFzc3dvcmQnO1xuY29uc3QgUEFUVEVSTl9VTkxPQ0sgPSAncGF0dGVybic7XG5jb25zdCBGSU5HRVJQUklOVF9VTkxPQ0sgPSAnZmluZ2VycHJpbnQnO1xuY29uc3QgVU5MT0NLX1RZUEVTID0gW1xuICBQSU5fVU5MT0NLLCBQSU5fVU5MT0NLX0tFWV9FVkVOVCwgUEFTU1dPUkRfVU5MT0NLLFxuICBQQVRURVJOX1VOTE9DSywgRklOR0VSUFJJTlRfVU5MT0NLXG5dO1xuY29uc3QgS0VZQ09ERV9OVU1QQURfRU5URVIgPSA2NjtcbmNvbnN0IFVOTE9DS19XQUlUX1RJTUUgPSAxMDA7XG5jb25zdCBJTlBVVF9LRVlTX1dBSVRfVElNRSA9IDEwMDtcbmNvbnN0IE5VTUJFUl9aRVJPX0tFWUNPREUgPSA3O1xuXG5jb25zdCBoZWxwZXJzID0ge307XG5cbmhlbHBlcnMudmFsaWRhdGVVbmxvY2tDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbiB2YWxpZGF0ZVVubG9ja0NhcGFiaWxpdGllcyAoY2FwcyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1bmxvY2tLZXksXG4gICAgdW5sb2NrVHlwZSxcbiAgfSA9IGNhcHM7XG4gIGlmIChfLmlzTmlsKHVubG9ja0tleSkgfHwgdW5sb2NrS2V5ID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcignQSBub24tZW1wdHkgdW5sb2NrIGtleSB2YWx1ZSBtdXN0IGJlIHByb3ZpZGVkJyk7XG4gIH1cblxuICBpZiAoW1BJTl9VTkxPQ0ssIFBJTl9VTkxPQ0tfS0VZX0VWRU5ULCBGSU5HRVJQUklOVF9VTkxPQ0tdLmluY2x1ZGVzKHVubG9ja1R5cGUpKSB7XG4gICAgaWYgKCEvXlswLTldKyQvLnRlc3QoXy50cmltKHVubG9ja0tleSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubG9jayBrZXkgdmFsdWUgJyR7dW5sb2NrS2V5fScgbXVzdCBvbmx5IGNvbnNpc3Qgb2YgZGlnaXRzYCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHVubG9ja1R5cGUgPT09IFBBVFRFUk5fVU5MT0NLKSB7XG4gICAgaWYgKCEvXlsxLTldezIsOX0kLy50ZXN0KF8udHJpbSh1bmxvY2tLZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmxvY2sga2V5IHZhbHVlICcke3VubG9ja0tleX0nIG11c3Qgb25seSBpbmNsdWRlIGZyb20gdHdvIHRvIG5pbmUgZGlnaXRzIGluIHJhbmdlIDEuLjlgKTtcbiAgICB9XG4gICAgaWYgKC8oWzEtOV0pLio/XFwxLy50ZXN0KF8udHJpbSh1bmxvY2tLZXkpKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmxvY2sga2V5IHZhbHVlICcke3VubG9ja0tleX0nIG11c3QgZGVmaW5lIGEgdmFsaWQgcGF0dGVybiB3aGVyZSByZXBlYXRzIGFyZSBub3QgYWxsb3dlZGApO1xuICAgIH1cbiAgfSBlbHNlIGlmICh1bmxvY2tUeXBlID09PSBQQVNTV09SRF9VTkxPQ0spIHtcbiAgICAvLyBEb250IHRyaW0gcGFzc3dvcmQga2V5LCB5b3UgY2FuIHVzZSBibGFuayBzcGFjZXMgaW4geW91ciBhbmRyb2lkIHBhc3N3b3JkXG4gICAgLy8gwq9cXF8o44OEKV8vwq9cbiAgICBpZiAoIS8uezQsfS9nLnRlc3QodW5sb2NrS2V5KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgbWluaW11bSBhbGxvd2VkIGxlbmd0aCBvZiB1bmxvY2sga2V5IHZhbHVlICcke3VubG9ja0tleX0nIGlzIDQgY2hhcmFjdGVyc2ApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgdW5sb2NrIHR5cGUgJyR7dW5sb2NrVHlwZX0nLiBgICtcbiAgICAgIGBPbmx5IHRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6ICR7VU5MT0NLX1RZUEVTfWApO1xuICB9XG4gIHJldHVybiBjYXBzO1xufTtcblxuaGVscGVycy5mYXN0VW5sb2NrID0gYXN5bmMgZnVuY3Rpb24gZmFzdFVubG9jayAoYWRiLCBvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIGNyZWRlbnRpYWwsXG4gICAgY3JlZGVudGlhbFR5cGUsXG4gIH0gPSBvcHRzO1xuICBsb2dnZXIuaW5mbyhgVW5sb2NraW5nIHRoZSBkZXZpY2UgdmlhIEFEQiB1c2luZyAke2NyZWRlbnRpYWxUeXBlfSBjcmVkZW50aWFsICcke2NyZWRlbnRpYWx9J2ApO1xuICBjb25zdCB3YXNMb2NrRW5hYmxlZCA9IGF3YWl0IGFkYi5pc0xvY2tFbmFibGVkKCk7XG4gIGlmICh3YXNMb2NrRW5hYmxlZCkge1xuICAgIGF3YWl0IGFkYi5jbGVhckxvY2tDcmVkZW50aWFsKGNyZWRlbnRpYWwpO1xuICAgIC8vIG5vdCBzdXJlIHdoeSwgYnV0IHRoZSBkZXZpY2UncyBzY3JlZW4gc3RpbGwgcmVtYWlucyBsb2NrZWRcbiAgICAvLyBpZiBhIHByZWxpbWluYXJ5IHdha2UgdXAgY3ljbGUgaGFzIG5vdCBiZWVuIHBlcmZvcm1lZFxuICAgIGF3YWl0IGFkYi5jeWNsZVdha2VVcCgpO1xuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5pbmZvKCdObyBhY3RpdmUgbG9jayBoYXMgYmVlbiBkZXRlY3RlZC4gUHJvY2VlZGluZyB0byB0aGUga2V5Z3VhcmQgZGlzbWlzc2FsJyk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBhZGIuZGlzbWlzc0tleWd1YXJkKCk7XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHdhc0xvY2tFbmFibGVkKSB7XG4gICAgICBhd2FpdCBhZGIuc2V0TG9ja0NyZWRlbnRpYWwoY3JlZGVudGlhbFR5cGUsIGNyZWRlbnRpYWwpO1xuICAgIH1cbiAgfVxufTtcblxuaGVscGVycy5lbmNvZGVQYXNzd29yZCA9IGZ1bmN0aW9uIGVuY29kZVBhc3N3b3JkIChrZXkpIHtcbiAgcmV0dXJuIGAke2tleX1gLnJlcGxhY2UoL1xccy9pZywgJyVzJyk7XG59O1xuXG5oZWxwZXJzLnN0cmluZ0tleVRvQXJyID0gZnVuY3Rpb24gc3RyaW5nS2V5VG9BcnIgKGtleSkge1xuICByZXR1cm4gYCR7a2V5fWAudHJpbSgpLnJlcGxhY2UoL1xccysvZywgJycpLnNwbGl0KC9cXHMqLyk7XG59O1xuXG5oZWxwZXJzLmZpbmdlcnByaW50VW5sb2NrID0gYXN5bmMgZnVuY3Rpb24gZmluZ2VycHJpbnRVbmxvY2sgKGFkYiwgZHJpdmVyLCBjYXBhYmlsaXRpZXMpIHtcbiAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpIDwgMjMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbmdlcnByaW50IHVubG9jayBvbmx5IHdvcmtzIGZvciBBbmRyb2lkIDYrIGVtdWxhdG9ycycpO1xuICB9XG4gIGF3YWl0IGFkYi5maW5nZXJwcmludChjYXBhYmlsaXRpZXMudW5sb2NrS2V5KTtcbiAgYXdhaXQgc2xlZXAoVU5MT0NLX1dBSVRfVElNRSk7XG59O1xuXG5oZWxwZXJzLnBpblVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHBpblVubG9jayAoYWRiLCBkcml2ZXIsIGNhcGFiaWxpdGllcykge1xuICBsb2dnZXIuaW5mbyhgVHJ5aW5nIHRvIHVubG9jayBkZXZpY2UgdXNpbmcgcGluICR7Y2FwYWJpbGl0aWVzLnVubG9ja0tleX1gKTtcbiAgYXdhaXQgYWRiLmRpc21pc3NLZXlndWFyZCgpO1xuICBjb25zdCBrZXlzID0gaGVscGVycy5zdHJpbmdLZXlUb0FycihjYXBhYmlsaXRpZXMudW5sb2NrS2V5KTtcbiAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpID49IDIxKSB7XG4gICAgY29uc3QgZWxzID0gYXdhaXQgZHJpdmVyLmZpbmRFbE9yRWxzKCdpZCcsICdjb20uYW5kcm9pZC5zeXN0ZW11aTppZC9kaWdpdF90ZXh0JywgdHJ1ZSk7XG4gICAgaWYgKF8uaXNFbXB0eShlbHMpKSB7XG4gICAgICAvLyBmYWxsYmFjayB0byBwaW4gd2l0aCBrZXkgZXZlbnRcbiAgICAgIHJldHVybiBhd2FpdCBoZWxwZXJzLnBpblVubG9ja1dpdGhLZXlFdmVudChhZGIsIGRyaXZlciwgY2FwYWJpbGl0aWVzKTtcbiAgICB9XG4gICAgY29uc3QgcGlucyA9IHt9O1xuICAgIGZvciAoY29uc3QgZWwgb2YgZWxzKSB7XG4gICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgZHJpdmVyLmdldEF0dHJpYnV0ZSgndGV4dCcsIHV0aWwudW53cmFwRWxlbWVudChlbCkpO1xuICAgICAgcGluc1t0ZXh0XSA9IGVsO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHBpbiBvZiBrZXlzKSB7XG4gICAgICBjb25zdCBlbCA9IHBpbnNbcGluXTtcbiAgICAgIGF3YWl0IGRyaXZlci5jbGljayh1dGlsLnVud3JhcEVsZW1lbnQoZWwpKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yIChjb25zdCBwaW4gb2Yga2V5cykge1xuICAgICAgY29uc3QgZWwgPSBhd2FpdCBkcml2ZXIuZmluZEVsT3JFbHMoJ2lkJywgYGNvbS5hbmRyb2lkLmtleWd1YXJkOmlkL2tleSR7cGlufWAsIGZhbHNlKTtcbiAgICAgIGlmIChlbCA9PT0gbnVsbCkge1xuICAgICAgICAvLyBmYWxsYmFjayB0byBwaW4gd2l0aCBrZXkgZXZlbnRcbiAgICAgICAgcmV0dXJuIGF3YWl0IGhlbHBlcnMucGluVW5sb2NrV2l0aEtleUV2ZW50KGFkYiwgZHJpdmVyLCBjYXBhYmlsaXRpZXMpO1xuICAgICAgfVxuICAgICAgYXdhaXQgZHJpdmVyLmNsaWNrKHV0aWwudW53cmFwRWxlbWVudChlbCkpO1xuICAgIH1cbiAgfVxuICBhd2FpdCB3YWl0Rm9yVW5sb2NrKGFkYik7XG59O1xuXG4vKipcbiAqIFdhaXQgZm9yIHRoZSBkaXNwbGF5IHRvIGJlIHVubG9ja2VkLlxuICogU29tZSBkZXZpY2VzIGF1dG9tYXRpY2FsbHkgYWNjZXB0IHR5cGVkICdwaW4nIGFuZCAncGFzc3dvcmQnIGNvZGVcbiAqIHdpdGhvdXQgcHJlc3NpbmcgdGhlIEVudGVyIGtleS4gQnV0IHNvbWUgZGV2aWNlcyBuZWVkIGl0LlxuICogVGhpcyBtZXRob2Qgd2FpdHMgYSBmZXcgc2Vjb25kcyBmaXJzdCBmb3Igc3VjaCBhdXRvbWF0aWMgYWNjZXB0YW5jZSBjYXNlLlxuICogSWYgdGhlIGRldmljZSBpcyBzdGlsbCBsb2NrZWQsIHRoZW4gdGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gc2VuZFxuICogdGhlIGVudGVyIGtleSBjb2RlLlxuICpcbiAqIEBwYXJhbSB7QURCfSBhZGIgVGhlIGluc3RhbmNlIG9mIEFEQlxuICovXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yVW5sb2NrIChhZGIpIHtcbiAgYXdhaXQgc2xlZXAoVU5MT0NLX1dBSVRfVElNRSk7XG4gIGlmICghYXdhaXQgYWRiLmlzU2NyZWVuTG9ja2VkKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBhd2FpdCBhZGIua2V5ZXZlbnQoS0VZQ09ERV9OVU1QQURfRU5URVIpO1xuICBhd2FpdCBzbGVlcChVTkxPQ0tfV0FJVF9USU1FKTtcbn1cblxuaGVscGVycy5waW5VbmxvY2tXaXRoS2V5RXZlbnQgPSBhc3luYyBmdW5jdGlvbiBwaW5VbmxvY2tXaXRoS2V5RXZlbnQgKGFkYiwgZHJpdmVyLCBjYXBhYmlsaXRpZXMpIHtcbiAgbG9nZ2VyLmluZm8oYFRyeWluZyB0byB1bmxvY2sgZGV2aWNlIHVzaW5nIHBpbiB3aXRoIGtleWNvZGUgJHtjYXBhYmlsaXRpZXMudW5sb2NrS2V5fWApO1xuICBhd2FpdCBhZGIuZGlzbWlzc0tleWd1YXJkKCk7XG4gIGNvbnN0IGtleXMgPSBoZWxwZXJzLnN0cmluZ0tleVRvQXJyKGNhcGFiaWxpdGllcy51bmxvY2tLZXkpO1xuXG4gIC8vIFNvbWUgZGV2aWNlIGRvZXMgbm90IGhhdmUgc3lzdGVtIGtleSBpZHMgbGlrZSAnY29tLmFuZHJvaWQua2V5Z3VhcmQ6aWQva2V5J1xuICAvLyBUaGVuLCBzZW5kaW5nIGtleWV2ZW50cyBhcmUgbW9yZSByZWxpYWJsZSB0byB1bmxvY2sgdGhlIHNjcmVlbi5cbiAgZm9yIChjb25zdCBwaW4gb2Yga2V5cykge1xuICAgIC8vICdwaW4nIGlzIG51bWJlciAoMC05KSBpbiBzdHJpbmcuXG4gICAgLy8gTnVtYmVyICcwJyBpcyBrZXljb2RlICc3Jy4gbnVtYmVyICc5JyBpcyBrZXljb2RlICcxNicuXG4gICAgYXdhaXQgYWRiLnNoZWxsKFsnaW5wdXQnLCAna2V5ZXZlbnQnLCBwYXJzZUludChwaW4sIDEwKSArIE5VTUJFUl9aRVJPX0tFWUNPREVdKTtcbiAgfVxuICBhd2FpdCB3YWl0Rm9yVW5sb2NrKGFkYiwgZHJpdmVyKTtcbn07XG5cbmhlbHBlcnMucGFzc3dvcmRVbmxvY2sgPSBhc3luYyBmdW5jdGlvbiBwYXNzd29yZFVubG9jayAoYWRiLCBkcml2ZXIsIGNhcGFiaWxpdGllcykge1xuICBjb25zdCB7IHVubG9ja0tleSB9ID0gY2FwYWJpbGl0aWVzO1xuICBsb2dnZXIuaW5mbyhgVHJ5aW5nIHRvIHVubG9jayBkZXZpY2UgdXNpbmcgcGFzc3dvcmQgJHt1bmxvY2tLZXl9YCk7XG4gIGF3YWl0IGFkYi5kaXNtaXNzS2V5Z3VhcmQoKTtcbiAgLy8gUmVwbGFjZSBibGFuayBzcGFjZXMgd2l0aCAlc1xuICBjb25zdCBrZXkgPSBoZWxwZXJzLmVuY29kZVBhc3N3b3JkKHVubG9ja0tleSk7XG4gIC8vIFdoeSBhZGIgPyBJdCB3YXMgbGVzcyBmbGFreVxuICBhd2FpdCBhZGIuc2hlbGwoWydpbnB1dCcsICd0ZXh0Jywga2V5XSk7XG4gIC8vIFdoeSBzbGVlcHMgPyBBdm9pZCBzb21lIGZsYWt5bmVzcyB3YWl0aW5nIGZvciB0aGUgaW5wdXQgdG8gcmVjZWl2ZSB0aGUga2V5c1xuICBhd2FpdCBzbGVlcChJTlBVVF9LRVlTX1dBSVRfVElNRSk7XG4gIGF3YWl0IGFkYi5zaGVsbChbJ2lucHV0JywgJ2tleWV2ZW50JywgS0VZQ09ERV9OVU1QQURfRU5URVJdKTtcbiAgLy8gV2FpdHMgYSBiaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgdW5sb2NrZWRcbiAgYXdhaXQgd2FpdEZvclVubG9jayhhZGIsIGRyaXZlcik7XG59O1xuXG5oZWxwZXJzLmdldFBhdHRlcm5LZXlQb3NpdGlvbiA9IGZ1bmN0aW9uIGdldFBhdHRlcm5LZXlQb3NpdGlvbiAoa2V5LCBpbml0UG9zLCBwaWVjZSkge1xuICAvKlxuICBIb3cgdGhlIG1hdGggd29ya3M6XG4gIFdlIGhhdmUgOSBidXR0b25zIGRpdmlkZWQgaW4gMyBjb2x1bW5zIGFuZCAzIHJvd3MgaW5zaWRlIHRoZSBsb2NrUGF0dGVyblZpZXcsXG4gIGV2ZXJ5IGJ1dHRvbiBoYXMgYSBwb3NpdGlvbiBvbiB0aGUgc2NyZWVuIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGxvY2tQYXR0ZXJuVmlldyBzaW5jZVxuICBpdCBpcyB0aGUgcGFyZW50IHZpZXcgcmlnaHQgYXQgdGhlIG1pZGRsZSBvZiBlYWNoIGNvbHVtbiBvciByb3cuXG4gICovXG4gIGNvbnN0IGNvbHMgPSAzO1xuICBjb25zdCBwaW5zID0gOTtcbiAgY29uc3QgeFBvcyA9IChrZXksIHgsIHBpZWNlKSA9PiBNYXRoLnJvdW5kKHggKyAoKGtleSAlIGNvbHMpIHx8IGNvbHMpICogcGllY2UgLSBwaWVjZSAvIDIpO1xuICBjb25zdCB5UG9zID0gKGtleSwgeSwgcGllY2UpID0+IE1hdGgucm91bmQoeSArIChNYXRoLmNlaWwoKChrZXkgJSBwaW5zKSB8fCBwaW5zKSAvIGNvbHMpICogcGllY2UgLSBwaWVjZSAvIDIpKTtcbiAgcmV0dXJuIHtcbiAgICB4OiB4UG9zKGtleSwgaW5pdFBvcy54LCBwaWVjZSksXG4gICAgeTogeVBvcyhrZXksIGluaXRQb3MueSwgcGllY2UpXG4gIH07XG59O1xuXG5oZWxwZXJzLmdldFBhdHRlcm5BY3Rpb25zID0gZnVuY3Rpb24gZ2V0UGF0dGVybkFjdGlvbnMgKGtleXMsIGluaXRQb3MsIHBpZWNlKSB7XG4gIGNvbnN0IGFjdGlvbnMgPSBbXTtcbiAgbGV0IGxhc3RQb3M7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzKSB7XG4gICAgY29uc3Qga2V5UG9zID0gaGVscGVycy5nZXRQYXR0ZXJuS2V5UG9zaXRpb24oa2V5LCBpbml0UG9zLCBwaWVjZSk7XG4gICAgaWYgKGtleSA9PT0ga2V5c1swXSkge1xuICAgICAgYWN0aW9ucy5wdXNoKHthY3Rpb246ICdwcmVzcycsIG9wdGlvbnM6IHtlbGVtZW50OiBudWxsLCB4OiBrZXlQb3MueCwgeToga2V5UG9zLnl9fSk7XG4gICAgICBsYXN0UG9zID0ga2V5UG9zO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IG1vdmVUbyA9IHt4OiAwLCB5OiAwfTtcbiAgICBjb25zdCBkaWZmWCA9IGtleVBvcy54IC0gbGFzdFBvcy54O1xuICAgIGlmIChkaWZmWCA+IDApIHtcbiAgICAgIG1vdmVUby54ID0gcGllY2U7XG4gICAgICBpZiAoTWF0aC5hYnMoZGlmZlgpID4gcGllY2UpIHtcbiAgICAgICAgbW92ZVRvLnggKz0gcGllY2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkaWZmWCA8IDApIHtcbiAgICAgIG1vdmVUby54ID0gLTEgKiBwaWVjZTtcbiAgICAgIGlmIChNYXRoLmFicyhkaWZmWCkgPiBwaWVjZSkge1xuICAgICAgICBtb3ZlVG8ueCAtPSBwaWVjZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGlmZlkgPSBrZXlQb3MueSAtIGxhc3RQb3MueTtcbiAgICBpZiAoZGlmZlkgPiAwKSB7XG4gICAgICBtb3ZlVG8ueSA9IHBpZWNlO1xuICAgICAgaWYgKE1hdGguYWJzKGRpZmZZKSA+IHBpZWNlKSB7XG4gICAgICAgIG1vdmVUby55ICs9IHBpZWNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZGlmZlkgPCAwKSB7XG4gICAgICBtb3ZlVG8ueSA9IC0xICogcGllY2U7XG4gICAgICBpZiAoTWF0aC5hYnMoZGlmZlkpID4gcGllY2UpIHtcbiAgICAgICAgbW92ZVRvLnkgLT0gcGllY2U7XG4gICAgICB9XG4gICAgfVxuICAgIGFjdGlvbnMucHVzaCh7XG4gICAgICBhY3Rpb246ICdtb3ZlVG8nLFxuICAgICAgb3B0aW9uczoge2VsZW1lbnQ6IG51bGwsIHg6IG1vdmVUby54ICsgbGFzdFBvcy54LCB5OiBtb3ZlVG8ueSArIGxhc3RQb3MueX1cbiAgICB9KTtcbiAgICBsYXN0UG9zID0ga2V5UG9zO1xuICB9XG4gIGFjdGlvbnMucHVzaCh7YWN0aW9uOiAncmVsZWFzZSd9KTtcbiAgcmV0dXJuIGFjdGlvbnM7XG59O1xuXG5oZWxwZXJzLnBhdHRlcm5VbmxvY2sgPSBhc3luYyBmdW5jdGlvbiBwYXR0ZXJuVW5sb2NrIChhZGIsIGRyaXZlciwgY2FwYWJpbGl0aWVzKSB7XG4gIGNvbnN0IHsgdW5sb2NrS2V5IH0gPSBjYXBhYmlsaXRpZXM7XG4gIGxvZ2dlci5pbmZvKGBUcnlpbmcgdG8gdW5sb2NrIGRldmljZSB1c2luZyBwYXR0ZXJuICR7dW5sb2NrS2V5fWApO1xuICBhd2FpdCBhZGIuZGlzbWlzc0tleWd1YXJkKCk7XG4gIGNvbnN0IGtleXMgPSBoZWxwZXJzLnN0cmluZ0tleVRvQXJyKHVubG9ja0tleSk7XG4gIC8qIFdlIHNldCB0aGUgZGV2aWNlIHBhdHRlcm4gYnV0dG9ucyBhcyBudW1iZXIgb2YgYSByZWd1bGFyIHBob25lXG4gICAqICB8IOKAoiDigKIg4oCiIHwgICAgIHwgMSAyIDMgfFxuICAgKiAgfCDigKIg4oCiIOKAoiB8IC0tPiB8IDQgNSA2IHxcbiAgICogIHwg4oCiIOKAoiDigKIgfCAgICAgfCA3IDggOSB8XG5cbiAgVGhlIHBhdHRlcm4gdmlldyBidXR0b25zIGFyZSBub3Qgc2VlaW5nIGJ5IHRoZSB1aWF1dG9tYXRvciBzaW5jZSB0aGV5IGFyZVxuICBpbmNsdWRlZCBpbnNpZGUgYSBGcmFtZUxheW91dCwgc28gd2UgYXJlIGdvaW5nIHRvIHRyeSBjbGlja2luZyBvbiB0aGUgYnV0dG9uc1xuICB1c2luZyB0aGUgcGFyZW50IHZpZXcgYm91bmRzIGFuZCBtYXRoLlxuICAqL1xuICBjb25zdCBhcGlMZXZlbCA9IGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpO1xuICBjb25zdCBlbCA9IGF3YWl0IGRyaXZlci5maW5kRWxPckVscygnaWQnLFxuICAgIGBjb20uYW5kcm9pZC4ke2FwaUxldmVsID49IDIxID8gJ3N5c3RlbXVpJyA6ICdrZXlndWFyZCd9OmlkL2xvY2tQYXR0ZXJuVmlld2AsXG4gICAgZmFsc2VcbiAgKTtcbiAgY29uc3QgaW5pdFBvcyA9IGF3YWl0IGRyaXZlci5nZXRMb2NhdGlvbih1dGlsLnVud3JhcEVsZW1lbnQoZWwpKTtcbiAgY29uc3Qgc2l6ZSA9IGF3YWl0IGRyaXZlci5nZXRTaXplKHV0aWwudW53cmFwRWxlbWVudChlbCkpO1xuICAvLyBHZXQgYWN0aW9ucyB0byBwZXJmb3JtXG4gIGNvbnN0IGFjdGlvbnMgPSBoZWxwZXJzLmdldFBhdHRlcm5BY3Rpb25zKGtleXMsIGluaXRQb3MsIHNpemUud2lkdGggLyAzKTtcbiAgLy8gUGVyZm9ybSBnZXN0dXJlXG4gIGF3YWl0IGRyaXZlci5wZXJmb3JtVG91Y2goYWN0aW9ucyk7XG4gIC8vIFdhaXRzIGEgYml0IGZvciB0aGUgZGV2aWNlIHRvIGJlIHVubG9ja2VkXG4gIGF3YWl0IHNsZWVwKFVOTE9DS19XQUlUX1RJTUUpO1xufTtcblxuaGVscGVycy5QSU5fVU5MT0NLID0gUElOX1VOTE9DSztcbmhlbHBlcnMuUElOX1VOTE9DS19LRVlfRVZFTlQgPSBQSU5fVU5MT0NLX0tFWV9FVkVOVDtcbmhlbHBlcnMuUEFTU1dPUkRfVU5MT0NLID0gUEFTU1dPUkRfVU5MT0NLO1xuaGVscGVycy5QQVRURVJOX1VOTE9DSyA9IFBBVFRFUk5fVU5MT0NLO1xuaGVscGVycy5GSU5HRVJQUklOVF9VTkxPQ0sgPSBGSU5HRVJQUklOVF9VTkxPQ0s7XG5cbmV4cG9ydCB7XG4gIFBJTl9VTkxPQ0ssIFBJTl9VTkxPQ0tfS0VZX0VWRU5ULCBQQVNTV09SRF9VTkxPQ0ssIFBBVFRFUk5fVU5MT0NLLFxuICBGSU5HRVJQUklOVF9VTkxPQ0ssIGhlbHBlcnNcbn07XG5leHBvcnQgZGVmYXVsdCBoZWxwZXJzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxLQUFuQjs7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxpQkFBN0I7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHLFVBQXhCOztBQUNBLE1BQU1DLGNBQWMsR0FBRyxTQUF2Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxhQUEzQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsQ0FDbkJMLFVBRG1CLEVBQ1BDLG9CQURPLEVBQ2VDLGVBRGYsRUFFbkJDLGNBRm1CLEVBRUhDLGtCQUZHLENBQXJCO0FBSUEsTUFBTUUsb0JBQW9CLEdBQUcsRUFBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxHQUF6QjtBQUNBLE1BQU1DLG9CQUFv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
|
|
303
|
+
exports.default = _default;
|
|
304
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQSU5fVU5MT0NLIiwiUElOX1VOTE9DS19LRVlfRVZFTlQiLCJQQVNTV09SRF9VTkxPQ0siLCJQQVRURVJOX1VOTE9DSyIsIkZJTkdFUlBSSU5UX1VOTE9DSyIsIlVOTE9DS19UWVBFUyIsIktFWUNPREVfTlVNUEFEX0VOVEVSIiwiVU5MT0NLX1dBSVRfVElNRSIsIklOUFVUX0tFWVNfV0FJVF9USU1FIiwiTlVNQkVSX1pFUk9fS0VZQ09ERSIsImhlbHBlcnMiLCJ2YWxpZGF0ZVVubG9ja0NhcGFiaWxpdGllcyIsImNhcHMiLCJ1bmxvY2tLZXkiLCJ1bmxvY2tUeXBlIiwiXyIsImlzTmlsIiwiRXJyb3IiLCJpbmNsdWRlcyIsInRlc3QiLCJ0cmltIiwiZmFzdFVubG9jayIsImFkYiIsIm9wdHMiLCJjcmVkZW50aWFsIiwiY3JlZGVudGlhbFR5cGUiLCJsb2dnZXIiLCJpbmZvIiwid2FzTG9ja0VuYWJsZWQiLCJpc0xvY2tFbmFibGVkIiwiY2xlYXJMb2NrQ3JlZGVudGlhbCIsImN5Y2xlV2FrZVVwIiwiZGlzbWlzc0tleWd1YXJkIiwic2V0TG9ja0NyZWRlbnRpYWwiLCJlbmNvZGVQYXNzd29yZCIsImtleSIsInJlcGxhY2UiLCJzdHJpbmdLZXlUb0FyciIsInNwbGl0IiwiZmluZ2VycHJpbnRVbmxvY2siLCJkcml2ZXIiLCJjYXBhYmlsaXRpZXMiLCJnZXRBcGlMZXZlbCIsImZpbmdlcnByaW50Iiwic2xlZXAiLCJwaW5VbmxvY2siLCJrZXlzIiwiZWxzIiwiZmluZEVsT3JFbHMiLCJpc0VtcHR5IiwicGluVW5sb2NrV2l0aEtleUV2ZW50IiwicGlucyIsImVsIiwidGV4dCIsImdldEF0dHJpYnV0ZSIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwicGluIiwiY2xpY2siLCJ3YWl0Rm9yVW5sb2NrIiwiaXNTY3JlZW5Mb2NrZWQiLCJrZXlldmVudCIsInNoZWxsIiwicGFyc2VJbnQiLCJwYXNzd29yZFVubG9jayIsImdldFBhdHRlcm5LZXlQb3NpdGlvbiIsImluaXRQb3MiLCJwaWVjZSIsImNvbHMiLCJ4UG9zIiwieCIsIk1hdGgiLCJyb3VuZCIsInlQb3MiLCJ5IiwiY2VpbCIsImdldFBhdHRlcm5BY3Rpb25zIiwiYWN0aW9ucyIsImxhc3RQb3MiLCJrZXlQb3MiLCJwdXNoIiwiYWN0aW9uIiwib3B0aW9ucyIsImVsZW1lbnQiLCJtb3ZlVG8iLCJkaWZmWCIsImFicyIsImRpZmZZIiwicGF0dGVyblVubG9jayIsImFwaUxldmVsIiwiZ2V0TG9jYXRpb24iLCJzaXplIiwiZ2V0U2l6ZSIsIndpZHRoIiwicGVyZm9ybVRvdWNoIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL3VubG9jay1oZWxwZXJzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHsgc2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcblxuY29uc3QgUElOX1VOTE9DSyA9ICdwaW4nO1xuY29uc3QgUElOX1VOTE9DS19LRVlfRVZFTlQgPSAncGluV2l0aEtleUV2ZW50JztcbmNvbnN0IFBBU1NXT1JEX1VOTE9DSyA9ICdwYXNzd29yZCc7XG5jb25zdCBQQVRURVJOX1VOTE9DSyA9ICdwYXR0ZXJuJztcbmNvbnN0IEZJTkdFUlBSSU5UX1VOTE9DSyA9ICdmaW5nZXJwcmludCc7XG5jb25zdCBVTkxPQ0tfVFlQRVMgPSBbXG4gIFBJTl9VTkxPQ0ssIFBJTl9VTkxPQ0tfS0VZX0VWRU5ULCBQQVNTV09SRF9VTkxPQ0ssXG4gIFBBVFRFUk5fVU5MT0NLLCBGSU5HRVJQUklOVF9VTkxPQ0tcbl07XG5jb25zdCBLRVlDT0RFX05VTVBBRF9FTlRFUiA9IDY2O1xuY29uc3QgVU5MT0NLX1dBSVRfVElNRSA9IDEwMDtcbmNvbnN0IElOUFVUX0tFWVNfV0FJVF9USU1FID0gMTAwO1xuY29uc3QgTlVNQkVSX1pFUk9fS0VZQ09ERSA9IDc7XG5cbmNvbnN0IGhlbHBlcnMgPSB7fTtcblxuaGVscGVycy52YWxpZGF0ZVVubG9ja0NhcGFiaWxpdGllcyA9IGZ1bmN0aW9uIHZhbGlkYXRlVW5sb2NrQ2FwYWJpbGl0aWVzIChjYXBzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVubG9ja0tleSxcbiAgICB1bmxvY2tUeXBlLFxuICB9ID0gY2FwcztcbiAgaWYgKF8uaXNOaWwodW5sb2NrS2V5KSB8fCB1bmxvY2tLZXkgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdBIG5vbi1lbXB0eSB1bmxvY2sga2V5IHZhbHVlIG11c3QgYmUgcHJvdmlkZWQnKTtcbiAgfVxuXG4gIGlmIChbUElOX1VOTE9DSywgUElOX1VOTE9DS19LRVlfRVZFTlQsIEZJTkdFUlBSSU5UX1VOTE9DS10uaW5jbHVkZXModW5sb2NrVHlwZSkpIHtcbiAgICBpZiAoIS9eWzAtOV0rJC8udGVzdChfLnRyaW0odW5sb2NrS2V5KSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5sb2NrIGtleSB2YWx1ZSAnJHt1bmxvY2tLZXl9JyBtdXN0IG9ubHkgY29uc2lzdCBvZiBkaWdpdHNgKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodW5sb2NrVHlwZSA9PT0gUEFUVEVSTl9VTkxPQ0spIHtcbiAgICBpZiAoIS9eWzEtOV17Miw5fSQvLnRlc3QoXy50cmltKHVubG9ja0tleSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubG9jayBrZXkgdmFsdWUgJyR7dW5sb2NrS2V5fScgbXVzdCBvbmx5IGluY2x1ZGUgZnJvbSB0d28gdG8gbmluZSBkaWdpdHMgaW4gcmFuZ2UgMS4uOWApO1xuICAgIH1cbiAgICBpZiAoLyhbMS05XSkuKj9cXDEvLnRlc3QoXy50cmltKHVubG9ja0tleSkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubG9jayBrZXkgdmFsdWUgJyR7dW5sb2NrS2V5fScgbXVzdCBkZWZpbmUgYSB2YWxpZCBwYXR0ZXJuIHdoZXJlIHJlcGVhdHMgYXJlIG5vdCBhbGxvd2VkYCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHVubG9ja1R5cGUgPT09IFBBU1NXT1JEX1VOTE9DSykge1xuICAgIC8vIERvbnQgdHJpbSBwYXNzd29yZCBrZXksIHlvdSBjYW4gdXNlIGJsYW5rIHNwYWNlcyBpbiB5b3VyIGFuZHJvaWQgcGFzc3dvcmRcbiAgICAvLyDCr1xcXyjjg4QpXy/Cr1xuICAgIGlmICghLy57NCx9L2cudGVzdCh1bmxvY2tLZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtaW5pbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIHVubG9jayBrZXkgdmFsdWUgJyR7dW5sb2NrS2V5fScgaXMgNCBjaGFyYWN0ZXJzYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB1bmxvY2sgdHlwZSAnJHt1bmxvY2tUeXBlfScuIGAgK1xuICAgICAgYE9ubHkgdGhlIGZvbGxvd2luZyB1bmxvY2sgdHlwZXMgYXJlIHN1cHBvcnRlZDogJHtVTkxPQ0tfVFlQRVN9YCk7XG4gIH1cbiAgcmV0dXJuIGNhcHM7XG59O1xuXG5oZWxwZXJzLmZhc3RVbmxvY2sgPSBhc3luYyBmdW5jdGlvbiBmYXN0VW5sb2NrIChhZGIsIG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgY3JlZGVudGlhbCxcbiAgICBjcmVkZW50aWFsVHlwZSxcbiAgfSA9IG9wdHM7XG4gIGxvZ2dlci5pbmZvKGBVbmxvY2tpbmcgdGhlIGRldmljZSB2aWEgQURCIHVzaW5nICR7Y3JlZGVudGlhbFR5cGV9IGNyZWRlbnRpYWwgJyR7Y3JlZGVudGlhbH0nYCk7XG4gIGNvbnN0IHdhc0xvY2tFbmFibGVkID0gYXdhaXQgYWRiLmlzTG9ja0VuYWJsZWQoKTtcbiAgaWYgKHdhc0xvY2tFbmFibGVkKSB7XG4gICAgYXdhaXQgYWRiLmNsZWFyTG9ja0NyZWRlbnRpYWwoY3JlZGVudGlhbCk7XG4gICAgLy8gbm90IHN1cmUgd2h5LCBidXQgdGhlIGRldmljZSdzIHNjcmVlbiBzdGlsbCByZW1haW5zIGxvY2tlZFxuICAgIC8vIGlmIGEgcHJlbGltaW5hcnkgd2FrZSB1cCBjeWNsZSBoYXMgbm90IGJlZW4gcGVyZm9ybWVkXG4gICAgYXdhaXQgYWRiLmN5Y2xlV2FrZVVwKCk7XG4gIH0gZWxzZSB7XG4gICAgbG9nZ2VyLmluZm8oJ05vIGFjdGl2ZSBsb2NrIGhhcyBiZWVuIGRldGVjdGVkLiBQcm9jZWVkaW5nIHRvIHRoZSBrZXlndWFyZCBkaXNtaXNzYWwnKTtcbiAgfVxuICB0cnkge1xuICAgIGF3YWl0IGFkYi5kaXNtaXNzS2V5Z3VhcmQoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAod2FzTG9ja0VuYWJsZWQpIHtcbiAgICAgIGF3YWl0IGFkYi5zZXRMb2NrQ3JlZGVudGlhbChjcmVkZW50aWFsVHlwZSwgY3JlZGVudGlhbCk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLmVuY29kZVBhc3N3b3JkID0gZnVuY3Rpb24gZW5jb2RlUGFzc3dvcmQgKGtleSkge1xuICByZXR1cm4gYCR7a2V5fWAucmVwbGFjZSgvXFxzL2lnLCAnJXMnKTtcbn07XG5cbmhlbHBlcnMuc3RyaW5nS2V5VG9BcnIgPSBmdW5jdGlvbiBzdHJpbmdLZXlUb0FyciAoa2V5KSB7XG4gIHJldHVybiBgJHtrZXl9YC50cmltKCkucmVwbGFjZSgvXFxzKy9nLCAnJykuc3BsaXQoL1xccyovKTtcbn07XG5cbmhlbHBlcnMuZmluZ2VycHJpbnRVbmxvY2sgPSBhc3luYyBmdW5jdGlvbiBmaW5nZXJwcmludFVubG9jayAoYWRiLCBkcml2ZXIsIGNhcGFiaWxpdGllcykge1xuICBpZiAoYXdhaXQgYWRiLmdldEFwaUxldmVsKCkgPCAyMykge1xuICAgIHRocm93IG5ldyBFcnJvcignRmluZ2VycHJpbnQgdW5sb2NrIG9ubHkgd29ya3MgZm9yIEFuZHJvaWQgNisgZW11bGF0b3JzJyk7XG4gIH1cbiAgYXdhaXQgYWRiLmZpbmdlcnByaW50KGNhcGFiaWxpdGllcy51bmxvY2tLZXkpO1xuICBhd2FpdCBzbGVlcChVTkxPQ0tfV0FJVF9USU1FKTtcbn07XG5cbmhlbHBlcnMucGluVW5sb2NrID0gYXN5bmMgZnVuY3Rpb24gcGluVW5sb2NrIChhZGIsIGRyaXZlciwgY2FwYWJpbGl0aWVzKSB7XG4gIGxvZ2dlci5pbmZvKGBUcnlpbmcgdG8gdW5sb2NrIGRldmljZSB1c2luZyBwaW4gJHtjYXBhYmlsaXRpZXMudW5sb2NrS2V5fWApO1xuICBhd2FpdCBhZGIuZGlzbWlzc0tleWd1YXJkKCk7XG4gIGNvbnN0IGtleXMgPSBoZWxwZXJzLnN0cmluZ0tleVRvQXJyKGNhcGFiaWxpdGllcy51bmxvY2tLZXkpO1xuICBpZiAoYXdhaXQgYWRiLmdldEFwaUxldmVsKCkgPj0gMjEpIHtcbiAgICBjb25zdCBlbHMgPSBhd2FpdCBkcml2ZXIuZmluZEVsT3JFbHMoJ2lkJywgJ2NvbS5hbmRyb2lkLnN5c3RlbXVpOmlkL2RpZ2l0X3RleHQnLCB0cnVlKTtcbiAgICBpZiAoXy5pc0VtcHR5KGVscykpIHtcbiAgICAgIC8vIGZhbGxiYWNrIHRvIHBpbiB3aXRoIGtleSBldmVudFxuICAgICAgcmV0dXJuIGF3YWl0IGhlbHBlcnMucGluVW5sb2NrV2l0aEtleUV2ZW50KGFkYiwgZHJpdmVyLCBjYXBhYmlsaXRpZXMpO1xuICAgIH1cbiAgICBjb25zdCBwaW5zID0ge307XG4gICAgZm9yIChjb25zdCBlbCBvZiBlbHMpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBkcml2ZXIuZ2V0QXR0cmlidXRlKCd0ZXh0JywgdXRpbC51bndyYXBFbGVtZW50KGVsKSk7XG4gICAgICBwaW5zW3RleHRdID0gZWw7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcGluIG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IGVsID0gcGluc1twaW5dO1xuICAgICAgYXdhaXQgZHJpdmVyLmNsaWNrKHV0aWwudW53cmFwRWxlbWVudChlbCkpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKGNvbnN0IHBpbiBvZiBrZXlzKSB7XG4gICAgICBjb25zdCBlbCA9IGF3YWl0IGRyaXZlci5maW5kRWxPckVscygnaWQnLCBgY29tLmFuZHJvaWQua2V5Z3VhcmQ6aWQva2V5JHtwaW59YCwgZmFsc2UpO1xuICAgICAgaWYgKGVsID09PSBudWxsKSB7XG4gICAgICAgIC8vIGZhbGxiYWNrIHRvIHBpbiB3aXRoIGtleSBldmVudFxuICAgICAgICByZXR1cm4gYXdhaXQgaGVscGVycy5waW5VbmxvY2tXaXRoS2V5RXZlbnQoYWRiLCBkcml2ZXIsIGNhcGFiaWxpdGllcyk7XG4gICAgICB9XG4gICAgICBhd2FpdCBkcml2ZXIuY2xpY2sodXRpbC51bndyYXBFbGVtZW50KGVsKSk7XG4gICAgfVxuICB9XG4gIGF3YWl0IHdhaXRGb3JVbmxvY2soYWRiKTtcbn07XG5cbi8qKlxuICogV2FpdCBmb3IgdGhlIGRpc3BsYXkgdG8gYmUgdW5sb2NrZWQuXG4gKiBTb21lIGRldmljZXMgYXV0b21hdGljYWxseSBhY2NlcHQgdHlwZWQgJ3BpbicgYW5kICdwYXNzd29yZCcgY29kZVxuICogd2l0aG91dCBwcmVzc2luZyB0aGUgRW50ZXIga2V5LiBCdXQgc29tZSBkZXZpY2VzIG5lZWQgaXQuXG4gKiBUaGlzIG1ldGhvZCB3YWl0cyBhIGZldyBzZWNvbmRzIGZpcnN0IGZvciBzdWNoIGF1dG9tYXRpYyBhY2NlcHRhbmNlIGNhc2UuXG4gKiBJZiB0aGUgZGV2aWNlIGlzIHN0aWxsIGxvY2tlZCwgdGhlbiB0aGlzIG1ldGhvZCB3aWxsIHRyeSB0byBzZW5kXG4gKiB0aGUgZW50ZXIga2V5IGNvZGUuXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBUaGUgaW5zdGFuY2Ugb2YgQURCXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JVbmxvY2sgKGFkYikge1xuICBhd2FpdCBzbGVlcChVTkxPQ0tfV0FJVF9USU1FKTtcbiAgaWYgKCFhd2FpdCBhZGIuaXNTY3JlZW5Mb2NrZWQoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGF3YWl0IGFkYi5rZXlldmVudChLRVlDT0RFX05VTVBBRF9FTlRFUik7XG4gIGF3YWl0IHNsZWVwKFVOTE9DS19XQUlUX1RJTUUpO1xufVxuXG5oZWxwZXJzLnBpblVubG9ja1dpdGhLZXlFdmVudCA9IGFzeW5jIGZ1bmN0aW9uIHBpblVubG9ja1dpdGhLZXlFdmVudCAoYWRiLCBkcml2ZXIsIGNhcGFiaWxpdGllcykge1xuICBsb2dnZXIuaW5mbyhgVHJ5aW5nIHRvIHVubG9jayBkZXZpY2UgdXNpbmcgcGluIHdpdGgga2V5Y29kZSAke2NhcGFiaWxpdGllcy51bmxvY2tLZXl9YCk7XG4gIGF3YWl0IGFkYi5kaXNtaXNzS2V5Z3VhcmQoKTtcbiAgY29uc3Qga2V5cyA9IGhlbHBlcnMuc3RyaW5nS2V5VG9BcnIoY2FwYWJpbGl0aWVzLnVubG9ja0tleSk7XG5cbiAgLy8gU29tZSBkZXZpY2UgZG9lcyBub3QgaGF2ZSBzeXN0ZW0ga2V5IGlkcyBsaWtlICdjb20uYW5kcm9pZC5rZXlndWFyZDppZC9rZXknXG4gIC8vIFRoZW4sIHNlbmRpbmcga2V5ZXZlbnRzIGFyZSBtb3JlIHJlbGlhYmxlIHRvIHVubG9jayB0aGUgc2NyZWVuLlxuICBmb3IgKGNvbnN0IHBpbiBvZiBrZXlzKSB7XG4gICAgLy8gJ3BpbicgaXMgbnVtYmVyICgwLTkpIGluIHN0cmluZy5cbiAgICAvLyBOdW1iZXIgJzAnIGlzIGtleWNvZGUgJzcnLiBudW1iZXIgJzknIGlzIGtleWNvZGUgJzE2Jy5cbiAgICBhd2FpdCBhZGIuc2hlbGwoWydpbnB1dCcsICdrZXlldmVudCcsIHBhcnNlSW50KHBpbiwgMTApICsgTlVNQkVSX1pFUk9fS0VZQ09ERV0pO1xuICB9XG4gIGF3YWl0IHdhaXRGb3JVbmxvY2soYWRiLCBkcml2ZXIpO1xufTtcblxuaGVscGVycy5wYXNzd29yZFVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHBhc3N3b3JkVW5sb2NrIChhZGIsIGRyaXZlciwgY2FwYWJpbGl0aWVzKSB7XG4gIGNvbnN0IHsgdW5sb2NrS2V5IH0gPSBjYXBhYmlsaXRpZXM7XG4gIGxvZ2dlci5pbmZvKGBUcnlpbmcgdG8gdW5sb2NrIGRldmljZSB1c2luZyBwYXNzd29yZCAke3VubG9ja0tleX1gKTtcbiAgYXdhaXQgYWRiLmRpc21pc3NLZXlndWFyZCgpO1xuICAvLyBSZXBsYWNlIGJsYW5rIHNwYWNlcyB3aXRoICVzXG4gIGNvbnN0IGtleSA9IGhlbHBlcnMuZW5jb2RlUGFzc3dvcmQodW5sb2NrS2V5KTtcbiAgLy8gV2h5IGFkYiA/IEl0IHdhcyBsZXNzIGZsYWt5XG4gIGF3YWl0IGFkYi5zaGVsbChbJ2lucHV0JywgJ3RleHQnLCBrZXldKTtcbiAgLy8gV2h5IHNsZWVwcyA/IEF2b2lkIHNvbWUgZmxha3luZXNzIHdhaXRpbmcgZm9yIHRoZSBpbnB1dCB0byByZWNlaXZlIHRoZSBrZXlzXG4gIGF3YWl0IHNsZWVwKElOUFVUX0tFWVNfV0FJVF9USU1FKTtcbiAgYXdhaXQgYWRiLnNoZWxsKFsnaW5wdXQnLCAna2V5ZXZlbnQnLCBLRVlDT0RFX05VTVBBRF9FTlRFUl0pO1xuICAvLyBXYWl0cyBhIGJpdCBmb3IgdGhlIGRldmljZSB0byBiZSB1bmxvY2tlZFxuICBhd2FpdCB3YWl0Rm9yVW5sb2NrKGFkYiwgZHJpdmVyKTtcbn07XG5cbmhlbHBlcnMuZ2V0UGF0dGVybktleVBvc2l0aW9uID0gZnVuY3Rpb24gZ2V0UGF0dGVybktleVBvc2l0aW9uIChrZXksIGluaXRQb3MsIHBpZWNlKSB7XG4gIC8qXG4gIEhvdyB0aGUgbWF0aCB3b3JrczpcbiAgV2UgaGF2ZSA5IGJ1dHRvbnMgZGl2aWRlZCBpbiAzIGNvbHVtbnMgYW5kIDMgcm93cyBpbnNpZGUgdGhlIGxvY2tQYXR0ZXJuVmlldyxcbiAgZXZlcnkgYnV0dG9uIGhhcyBhIHBvc2l0aW9uIG9uIHRoZSBzY3JlZW4gY29ycmVzcG9uZGluZyB0byB0aGUgbG9ja1BhdHRlcm5WaWV3IHNpbmNlXG4gIGl0IGlzIHRoZSBwYXJlbnQgdmlldyByaWdodCBhdCB0aGUgbWlkZGxlIG9mIGVhY2ggY29sdW1uIG9yIHJvdy5cbiAgKi9cbiAgY29uc3QgY29scyA9IDM7XG4gIGNvbnN0IHBpbnMgPSA5O1xuICBjb25zdCB4UG9zID0gKGtleSwgeCwgcGllY2UpID0+IE1hdGgucm91bmQoeCArICgoa2V5ICUgY29scykgfHwgY29scykgKiBwaWVjZSAtIHBpZWNlIC8gMik7XG4gIGNvbnN0IHlQb3MgPSAoa2V5LCB5LCBwaWVjZSkgPT4gTWF0aC5yb3VuZCh5ICsgKE1hdGguY2VpbCgoKGtleSAlIHBpbnMpIHx8IHBpbnMpIC8gY29scykgKiBwaWVjZSAtIHBpZWNlIC8gMikpO1xuICByZXR1cm4ge1xuICAgIHg6IHhQb3Moa2V5LCBpbml0UG9zLngsIHBpZWNlKSxcbiAgICB5OiB5UG9zKGtleSwgaW5pdFBvcy55LCBwaWVjZSlcbiAgfTtcbn07XG5cbmhlbHBlcnMuZ2V0UGF0dGVybkFjdGlvbnMgPSBmdW5jdGlvbiBnZXRQYXR0ZXJuQWN0aW9ucyAoa2V5cywgaW5pdFBvcywgcGllY2UpIHtcbiAgY29uc3QgYWN0aW9ucyA9IFtdO1xuICBsZXQgbGFzdFBvcztcbiAgZm9yIChsZXQga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCBrZXlQb3MgPSBoZWxwZXJzLmdldFBhdHRlcm5LZXlQb3NpdGlvbihrZXksIGluaXRQb3MsIHBpZWNlKTtcbiAgICBpZiAoa2V5ID09PSBrZXlzWzBdKSB7XG4gICAgICBhY3Rpb25zLnB1c2goe2FjdGlvbjogJ3ByZXNzJywgb3B0aW9uczoge2VsZW1lbnQ6IG51bGwsIHg6IGtleVBvcy54LCB5OiBrZXlQb3MueX19KTtcbiAgICAgIGxhc3RQb3MgPSBrZXlQb3M7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgbW92ZVRvID0ge3g6IDAsIHk6IDB9O1xuICAgIGNvbnN0IGRpZmZYID0ga2V5UG9zLnggLSBsYXN0UG9zLng7XG4gICAgaWYgKGRpZmZYID4gMCkge1xuICAgICAgbW92ZVRvLnggPSBwaWVjZTtcbiAgICAgIGlmIChNYXRoLmFicyhkaWZmWCkgPiBwaWVjZSkge1xuICAgICAgICBtb3ZlVG8ueCArPSBwaWVjZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGRpZmZYIDwgMCkge1xuICAgICAgbW92ZVRvLnggPSAtMSAqIHBpZWNlO1xuICAgICAgaWYgKE1hdGguYWJzKGRpZmZYKSA+IHBpZWNlKSB7XG4gICAgICAgIG1vdmVUby54IC09IHBpZWNlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkaWZmWSA9IGtleVBvcy55IC0gbGFzdFBvcy55O1xuICAgIGlmIChkaWZmWSA+IDApIHtcbiAgICAgIG1vdmVUby55ID0gcGllY2U7XG4gICAgICBpZiAoTWF0aC5hYnMoZGlmZlkpID4gcGllY2UpIHtcbiAgICAgICAgbW92ZVRvLnkgKz0gcGllY2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkaWZmWSA8IDApIHtcbiAgICAgIG1vdmVUby55ID0gLTEgKiBwaWVjZTtcbiAgICAgIGlmIChNYXRoLmFicyhkaWZmWSkgPiBwaWVjZSkge1xuICAgICAgICBtb3ZlVG8ueSAtPSBwaWVjZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgIGFjdGlvbjogJ21vdmVUbycsXG4gICAgICBvcHRpb25zOiB7ZWxlbWVudDogbnVsbCwgeDogbW92ZVRvLnggKyBsYXN0UG9zLngsIHk6IG1vdmVUby55ICsgbGFzdFBvcy55fVxuICAgIH0pO1xuICAgIGxhc3RQb3MgPSBrZXlQb3M7XG4gIH1cbiAgYWN0aW9ucy5wdXNoKHthY3Rpb246ICdyZWxlYXNlJ30pO1xuICByZXR1cm4gYWN0aW9ucztcbn07XG5cbmhlbHBlcnMucGF0dGVyblVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIHBhdHRlcm5VbmxvY2sgKGFkYiwgZHJpdmVyLCBjYXBhYmlsaXRpZXMpIHtcbiAgY29uc3QgeyB1bmxvY2tLZXkgfSA9IGNhcGFiaWxpdGllcztcbiAgbG9nZ2VyLmluZm8oYFRyeWluZyB0byB1bmxvY2sgZGV2aWNlIHVzaW5nIHBhdHRlcm4gJHt1bmxvY2tLZXl9YCk7XG4gIGF3YWl0IGFkYi5kaXNtaXNzS2V5Z3VhcmQoKTtcbiAgY29uc3Qga2V5cyA9IGhlbHBlcnMuc3RyaW5nS2V5VG9BcnIodW5sb2NrS2V5KTtcbiAgLyogV2Ugc2V0IHRoZSBkZXZpY2UgcGF0dGVybiBidXR0b25zIGFzIG51bWJlciBvZiBhIHJlZ3VsYXIgcGhvbmVcbiAgICogIHwg4oCiIOKAoiDigKIgfCAgICAgfCAxIDIgMyB8XG4gICAqICB8IOKAoiDigKIg4oCiIHwgLS0+IHwgNCA1IDYgfFxuICAgKiAgfCDigKIg4oCiIOKAoiB8ICAgICB8IDcgOCA5IHxcblxuICBUaGUgcGF0dGVybiB2aWV3IGJ1dHRvbnMgYXJlIG5vdCBzZWVpbmcgYnkgdGhlIHVpYXV0b21hdG9yIHNpbmNlIHRoZXkgYXJlXG4gIGluY2x1ZGVkIGluc2lkZSBhIEZyYW1lTGF5b3V0LCBzbyB3ZSBhcmUgZ29pbmcgdG8gdHJ5IGNsaWNraW5nIG9uIHRoZSBidXR0b25zXG4gIHVzaW5nIHRoZSBwYXJlbnQgdmlldyBib3VuZHMgYW5kIG1hdGguXG4gICovXG4gIGNvbnN0IGFwaUxldmVsID0gYXdhaXQgYWRiLmdldEFwaUxldmVsKCk7XG4gIGNvbnN0IGVsID0gYXdhaXQgZHJpdmVyLmZpbmRFbE9yRWxzKCdpZCcsXG4gICAgYGNvbS5hbmRyb2lkLiR7YXBpTGV2ZWwgPj0gMjEgPyAnc3lzdGVtdWknIDogJ2tleWd1YXJkJ306aWQvbG9ja1BhdHRlcm5WaWV3YCxcbiAgICBmYWxzZVxuICApO1xuICBjb25zdCBpbml0UG9zID0gYXdhaXQgZHJpdmVyLmdldExvY2F0aW9uKHV0aWwudW53cmFwRWxlbWVudChlbCkpO1xuICBjb25zdCBzaXplID0gYXdhaXQgZHJpdmVyLmdldFNpemUodXRpbC51bndyYXBFbGVtZW50KGVsKSk7XG4gIC8vIEdldCBhY3Rpb25zIHRvIHBlcmZvcm1cbiAgY29uc3QgYWN0aW9ucyA9IGhlbHBlcnMuZ2V0UGF0dGVybkFjdGlvbnMoa2V5cywgaW5pdFBvcywgc2l6ZS53aWR0aCAvIDMpO1xuICAvLyBQZXJmb3JtIGdlc3R1cmVcbiAgYXdhaXQgZHJpdmVyLnBlcmZvcm1Ub3VjaChhY3Rpb25zKTtcbiAgLy8gV2FpdHMgYSBiaXQgZm9yIHRoZSBkZXZpY2UgdG8gYmUgdW5sb2NrZWRcbiAgYXdhaXQgc2xlZXAoVU5MT0NLX1dBSVRfVElNRSk7XG59O1xuXG5oZWxwZXJzLlBJTl9VTkxPQ0sgPSBQSU5fVU5MT0NLO1xuaGVscGVycy5QSU5fVU5MT0NLX0tFWV9FVkVOVCA9IFBJTl9VTkxPQ0tfS0VZX0VWRU5UO1xuaGVscGVycy5QQVNTV09SRF9VTkxPQ0sgPSBQQVNTV09SRF9VTkxPQ0s7XG5oZWxwZXJzLlBBVFRFUk5fVU5MT0NLID0gUEFUVEVSTl9VTkxPQ0s7XG5oZWxwZXJzLkZJTkdFUlBSSU5UX1VOTE9DSyA9IEZJTkdFUlBSSU5UX1VOTE9DSztcblxuZXhwb3J0IHtcbiAgUElOX1VOTE9DSywgUElOX1VOTE9DS19LRVlfRVZFTlQsIFBBU1NXT1JEX1VOTE9DSywgUEFUVEVSTl9VTkxPQ0ssXG4gIEZJTkdFUlBSSU5UX1VOTE9DSywgaGVscGVyc1xufTtcbmV4cG9ydCBkZWZhdWx0IGhlbHBlcnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEtBQW5COztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLGlCQUE3Qjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsVUFBeEI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHLFNBQXZCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLGFBQTNCOztBQUNBLE1BQU1DLFlBQVksR0FBRyxDQUNuQkwsVUFEbUIsRUFDUEMsb0JBRE8sRUFDZUMsZUFEZixFQUVuQkMsY0FGbUIsRUFFSEMsa0JBRkcsQ0FBckI7QUFJQSxNQUFNRSxvQkFBb0IsR0FBRyxFQUE3QjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLEdBQXpCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsR0FBN0I7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxDQUE1QjtBQUVB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
|