@kepler.gl/reducers 3.3.0-alpha.6 → 3.3.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/combined-updaters.js +2 -2
- package/dist/cjs/map-state-updaters.js +8 -4
- package/dist/cjs/ui-state-updaters.js +40 -11
- package/dist/cjs/ui-state.js +2 -2
- package/dist/cjs/vis-state-updaters.js +338 -47
- package/dist/cjs/vis-state.js +2 -2
- package/dist/combined-updaters.d.ts +1 -1
- package/dist/esm/combined-updaters.js +2 -2
- package/dist/esm/map-state-updaters.js +8 -4
- package/dist/esm/ui-state-updaters.js +40 -11
- package/dist/esm/ui-state.js +2 -2
- package/dist/esm/vis-state-updaters.js +334 -49
- package/dist/esm/vis-state.js +2 -2
- package/dist/ui-state-updaters.d.ts +15 -1
- package/dist/vis-state-updaters.d.ts +27 -0
- package/package.json +18 -18
|
@@ -89,7 +89,7 @@ var defaultAddDataToMapOptions = exports.defaultAddDataToMapOptions = {
|
|
|
89
89
|
* @param {Object} action.payload `{datasets, options, config}`
|
|
90
90
|
* @param action.payload.datasets - ***required** datasets can be a dataset or an array of datasets
|
|
91
91
|
* Each dataset object needs to have `info` and `data` property.
|
|
92
|
-
* @param [action.payload.options] option object `{centerMap: true}`
|
|
92
|
+
* @param [action.payload.options] option object `{centerMap: true, padding: {left: 300}}`
|
|
93
93
|
* @param [action.payload.config] map config
|
|
94
94
|
* @param [action.payload.info] map info contains title and description
|
|
95
95
|
* @returns nextState
|
|
@@ -488,4 +488,4 @@ var replaceDataInMapUpdater = exports.replaceDataInMapUpdater = function replace
|
|
|
488
488
|
}));
|
|
489
489
|
return nextState;
|
|
490
490
|
};
|
|
491
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwiX2RlY2tnbExheWVycyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJleHBvcnRzIiwiY29uZmlnIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyIsImNlbnRlck1hcCIsImtlZXBFeGlzdGluZ0NvbmZpZyIsImF1dG9DcmVhdGVMYXllcnMiLCJhdXRvQ3JlYXRlVG9vbHRpcHMiLCJhZGREYXRhVG9NYXBVcGRhdGVyIiwic3RhdGUiLCJfcmVmIiwiX2RhdGFzZXRzJCIsIl9kYXRhc2V0cyQyIiwiX2RhdGFzZXRzJDMiLCJwYXlsb2FkIiwiZGF0YXNldHMiLCJpbmZvIiwib3B0aW9ucyIsImlzUHJvZ3Jlc3NpdmVMb2FkaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ2aXNTdGF0ZSIsImNvbXBvc2VfIiwicGlja18iLCJhcHBseV8iLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsInVuZGVmaW5lZCIsImlmXyIsIkJvb2xlYW4iLCJzZXRNYXBJbmZvVXBkYXRlciIsIndpdGhfIiwiX3JlZjIiLCJzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIiLCJwYXlsb2FkXyIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVSZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIm1lcmdlXyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlYWRPbmx5IiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJhY3Rpb24iLCJwYXlsb2FkcyIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInZhbHVlIiwidXBkYXRlRGFya0Jhc2VNYXBMYXllcnMiLCJkYXJrQmFzZU1hcEVuYWJsZWQiLCJsYXllcklkIiwibGF5ZXIiLCJ2aXNDb25maWdTZXR0aW5ncyIsInZpc0NvbmZpZyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29tYmluZWRNYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdHlsZSIsImdldENvbG9yTW9kZSIsImtleSIsIl9tYXBTdHlsZSRtYXBTdHlsZXMkayIsIm1hcFN0eWxlcyIsImNvbG9yTW9kZSIsInByZXZDb2xvck1vZGUiLCJzdHlsZVR5cGUiLCJuZXh0Q29sb3JNb2RlIiwibWFwU3RhdGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsImdsb2JlIiwiZW5hYmxlZCIsIk5PX01BUF9JRCIsImJhc2VtYXAiLCJsYWJlbHMiLCJhZG1pbkxpbmVzIiwid2F0ZXIiLCJzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMiIsIm5leHRTdHlsZU9iaiIsIm5leHRHbG9iZUNvbmZpZyIsInN1cmZhY2VDb2xvciIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJ3YXRlckNvbG9yIiwiYmFzZW1hcFdhdGVyRmlsbENvbG9yIiwiYWRtaW5MaW5lc0NvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcENvbG9ycyIsImdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSIsInN0eWxlIiwibGF5ZXJHcm91cHMiLCJjb21iaW5lZFNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9tYXBTdGF0ZSRnbG9iZTMiLCJzZXRNYXBWaWV3TW9kZVVwZGF0ZXIiLCJjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJvbGRMYXllckluZGV4IiwiZmluZEluZGV4Iiwib2xkTGF5ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3TGF5ZXIiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJfbmV3U3RhdGUkdWlTdGF0ZSRtYXAiLCJuZXdTdGF0ZSIsInZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZSIsInVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwiYWN0aXZlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiX25ld1VpU3RhdGUkbWFwQ29udHJvIiwibWFwU3BsaXRNb2RlIiwicHJldk1vZGUiLCJuZXdNYXBTdGF0ZSIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm5ld1Zpc1N0YXRlIiwiTWFwU3BsaXRNb2RlIiwiU0lOR0xFX01BUCIsIkRVQUxfTUFQIiwiU1dJUEVfQ09NUEFSRSIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImR1cGxpY2F0ZSIsIm5ld1VpU3RhdGUiLCJkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMiLCJyZXBsYWNlRGF0YUluTWFwVXBkYXRlciIsIl9yZWYzIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwiZGF0YXNldFRvVXNlIiwiX3BheWxvYWQkb3B0aW9ucyIsImFkZERhdGFUb01hcE9wdGlvbnMiLCJkYXRhSWRUb1VzZSIsInByZXBhcmVkU3RhdGUiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTLCBOT19NQVBfSUQsIE1hcFNwbGl0TW9kZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZX1gXG4gKiBAcGFyYW0gW2FjdGlvbi5wYXlsb2FkLmNvbmZpZ10gbWFwIGNvbmZpZ1xuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5pbmZvXSBtYXAgaW5mbyBjb250YWlucyB0aXRsZSBhbmQgZGVzY3JpcHRpb25cbiAqIEByZXR1cm5zIG5leHRTdGF0ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvIC1pbmZvIG9mIGEgZGF0YXNldFxuICogQHByb3BlcnR5IGluZm8uaWQgLSBpZCBvZiB0aGlzIGRhdGFzZXQuIElmIGNvbmZpZyBpcyBkZWZpbmVkLCBgaWRgIHNob3VsZCBtYXRjaGVzIHRoZSBgZGF0YUlkYCBpbiBjb25maWcuXG4gKiBAcHJvcGVydHkgaW5mby5sYWJlbCAtIEEgZGlzcGxheSBuYW1lIG9mIHRoaXMgZGF0YXNldFxuICogQHByb3BlcnR5IGRhdGEgLSAqKipyZXF1aXJlZCoqIFRoZSBkYXRhIG9iamVjdCwgaW4gYSB0YWJ1bGFyIGZvcm1hdCB3aXRoIDIgcHJvcGVydGllcyBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIGZpZWxkcyxcbiAqIEBwcm9wZXJ0eSBkYXRhLmZpZWxkcy5uYW1lIC0gKioqcmVxdWlyZWQqKiBOYW1lIG9mIHRoZSBmaWVsZCxcbiAqIEBwcm9wZXJ0eSBkYXRhLnJvd3MgLSAqKipyZXF1aXJlZCoqIEFycmF5IG9mIHJvd3MsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCBgZmllbGRzYCBhbmQgYHJvd3NgXG4gKlxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkRGF0YVRvTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IEFkZERhdGFUb01hcFBheWxvYWR9XG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge2RhdGFzZXRzLCBjb25maWcsIGluZm99ID0gcGF5bG9hZDtcblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRBZGREYXRhVG9NYXBPcHRpb25zLFxuICAgIC4uLnBheWxvYWQub3B0aW9uc1xuICB9O1xuXG4gIC8vIGNoZWNrIGlmIHByb2dyZXNzaXZlIGxvYWRpbmcgZGF0YXNldCBieSBiYXRjaGVzLCBhbmQgdXBkYXRlIHZpc1N0YXRlIGRpcmVjdGx5XG4gIGNvbnN0IGlzUHJvZ3Jlc3NpdmVMb2FkaW5nID1cbiAgICBBcnJheS5pc0FycmF5KGRhdGFzZXRzKSAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmZvcm1hdCA9PT0gJ2Fycm93JyAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkICYmXG4gICAgZGF0YXNldHNbMF0/LmluZm8uaWQgaW4gc3RhdGUudmlzU3RhdGUuZGF0YXNldHM7XG4gIGlmIChpc1Byb2dyZXNzaXZlTG9hZGluZykge1xuICAgIHJldHVybiBjb21wb3NlXzxLZXBsZXJHbFN0YXRlPihbXG4gICAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIGNvbmZpZ1xuICAgICAgICB9KVxuICAgICAgKVxuICAgIF0pKHN0YXRlKTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgbGV0IHBhcnNlZENvbmZpZzogUGFyc2VkQ29uZmlnID0gY29uZmlnO1xuXG4gIGlmIChpc1ZhbGlkQ29uZmlnKGNvbmZpZykpIHtcbiAgICAvLyBpZiBwYXNzZWQgaW4gc2F2ZWQgY29uZmlnXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBhcnNlZENvbmZpZyA9IHN0YXRlLnZpc1N0YXRlLnNjaGVtYS5wYXJzZVNhdmVkQ29uZmlnKGNvbmZpZyk7XG4gIH1cbiAgY29uc3Qgb2xkTGF5ZXJzID0gc3RhdGUudmlzU3RhdGUubGF5ZXJzO1xuICBjb25zdCBmaWx0ZXJOZXdseUFkZGVkTGF5ZXJzID0gKGxheWVyczogTGF5ZXJbXSkgPT5cbiAgICBsYXllcnMuZmlsdGVyKG5sID0+ICFvbGRMYXllcnMuZmluZChvbCA9PiBvbCA9PT0gbmwpKTtcblxuICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBub3QgZm91bmQsIHRvIG1ha2UgdHlwZXNjcmlwdCBoYXBweVxuICBjb25zdCBmaW5kTWFwQm91bmRzSWZDZW50ZXJlZCA9IChsYXllcnM6IExheWVyW10pID0+IHtcbiAgICBjb25zdCBib3VuZHMgPSBvcHRpb25zLmNlbnRlck1hcCAmJiBmaW5kTWFwQm91bmRzKGxheWVycyk7XG4gICAgcmV0dXJuIGJvdW5kcyA/IGJvdW5kcyA6IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgIHBpY2tfKCd2aXNTdGF0ZScpKFxuICAgICAgLy8gdGhpcyBwYXJ0IGNhbiBiZSBhc3luY1xuICAgICAgYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHZpc1N0YXRlVXBkYXRlVmlzRGF0YVVwZGF0ZXIsIHtcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnXG4gICAgICB9KVxuICAgICksXG5cbiAgICBpZl8oQm9vbGVhbihpbmZvKSwgcGlja18oJ3Zpc1N0YXRlJykoYXBwbHlfPFZpc1N0YXRlLCBhbnk+KHNldE1hcEluZm9VcGRhdGVyLCB7aW5mb30pKSksXG4gICAgLy8gTm90ZSB0aGF0IGZpdCBib3VuZHMgaGVyZSB3b24ndCBiZSBjYWxsZWQgaW4gY2FzZSBkYXRhc2V0cyBhcmUgY3JlYXRlZCBpbiBUYXNrcy5cbiAgICAvLyBBIHNlcGFyYXRlIFRhc2sgdG8gdXBkYXRlIGJvdW5kcyBpcyBjcmVhdGVkIG9uY2UgdGhlIGRhdGFzZXRzIGFyZSByZWFkeS5cbiAgICB3aXRoXygoe3Zpc1N0YXRlfSkgPT5cbiAgICAgIHBpY2tfKCdtYXBTdGF0ZScpKFxuICAgICAgICBhcHBseV8oXG4gICAgICAgICAgc3RhdGVNYXBDb25maWdVcGRhdGVyLFxuICAgICAgICAgIHBheWxvYWRfKHtcbiAgICAgICAgICAgIGNvbmZpZzogcGFyc2VkQ29uZmlnLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIGJvdW5kczogZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQoZmlsdGVyTmV3bHlBZGRlZExheWVycyh2aXNTdGF0ZS5sYXllcnMpKVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgICApLFxuICAgIHBpY2tfKCdtYXBTdHlsZScpKGFwcGx5XyhzdHlsZU1hcENvbmZpZ1VwZGF0ZXIsIHBheWxvYWRfKHtjb25maWc6IHBhcnNlZENvbmZpZywgb3B0aW9uc30pKSksXG4gICAgcGlja18oJ3VpU3RhdGUnKShcbiAgICAgIGFwcGx5Xyh1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIsIHBheWxvYWRfKHtjb25maWc6IHBhcnNlZENvbmZpZywgb3B0aW9uc30pKVxuICAgICksXG4gICAgcGlja18oJ3VpU3RhdGUnKShhcHBseV8odWlTdGF0ZUxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyLCBwYXlsb2FkXyhudWxsKSkpLFxuXG4gICAgcGlja18oJ3VpU3RhdGUnKShhcHBseV8odG9nZ2xlTW9kYWxVcGRhdGVyLCBwYXlsb2FkXyhudWxsKSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBtZXJnZV8oXG4gICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcHRpb25zLCAncmVhZE9ubHknKVxuICAgICAgICAgID8ge3JlYWRPbmx5OiBvcHRpb25zLnJlYWRPbmx5fVxuICAgICAgICAgIDoge31cbiAgICAgIClcbiAgICApXG4gIF0pKHN0YXRlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBsb2FkRmlsZXNTdWNjZXNzVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICAvLyBzdGlsbCBtb3JlIHRvIGxvYWRcbiAgY29uc3QgcGF5bG9hZHMgPSBmaWxlc1RvRGF0YVBheWxvYWQoYWN0aW9uLnJlc3VsdCk7XG4gIGNvbnN0IG5leHRTdGF0ZSA9IGNvbXBvc2VfKFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIG1lcmdlXyh7XG4gICAgICAgIGZpbGVMb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgZmlsZUxvYWRpbmdQcm9ncmVzczoge31cbiAgICAgIH0pXG4gICAgKVxuICBdKShzdGF0ZSk7XG4gIC8vIG1ha2UgbXVsdGlwbGUgYWRkIGRhdGEgdG8gbWFwIGNhbGxzXG4gIGNvbnN0IHN0YXRlV2l0aERhdGEgPSBjb21wb3NlXyhwYXlsb2Fkcy5tYXAocCA9PiBhcHBseV8oYWRkRGF0YVRvTWFwVXBkYXRlciwgcGF5bG9hZF8ocCkpKSkoXG4gICAgbmV4dFN0YXRlXG4gICk7XG4gIHJldHVybiBzdGF0ZVdpdGhEYXRhIGFzIEtlcGxlckdsU3RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkRGF0YVRvTWFwQ29tcG9zZWQgPSBhZGREYXRhVG9NYXBVcGRhdGVyO1xuXG4vKipcbiAqIEhlbHBlciB3aGljaCB1cGRhdGVzIG1hcCBvdmVybGF5IGJsZW5kaW5nIG1vZGUgaW4gdmlzU3RhdGUsXG4gKiBidXQgb25seSBpZiBpdCdzIG5vdCBjdXJyZW50bHkgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKi9cbmNvbnN0IHVwZGF0ZU92ZXJsYXlCbGVuZGluZyA9IG92ZXJsYXlCbGVuZGluZyA9PiB2aXNTdGF0ZSA9PiB7XG4gIGlmICh2aXNTdGF0ZS5vdmVybGF5QmxlbmRpbmcgIT09IE9WRVJMQVlfQkxFTkRJTkdTLm5vcm1hbC52YWx1ZSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi52aXNTdGF0ZSxcbiAgICAgIG92ZXJsYXlCbGVuZGluZ1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIHZpc1N0YXRlO1xufTtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBgZGFya0Jhc2VNYXBFbmFibGVkYCBpbiBhbGwgdGhlIGxheWVycyBpbiB2aXNTdGF0ZSB3aGljaFxuICogaGF2ZSB0aGlzIGNvbmZpZyBzZXR0aW5nIChvciBpbiBvbmUgc3BlY2lmaWMgbGF5ZXIgaWYgdGhlIGBsYXllcklkYCBwYXJhbSBpcyBwcm92aWRlZCkuXG4gKi9cbmNvbnN0IHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzID1cbiAgKGRhcmtCYXNlTWFwRW5hYmxlZDogYm9vbGVhbiwgbGF5ZXJJZDogc3RyaW5nIHwgbnVsbCA9IG51bGwpID0+XG4gIHZpc1N0YXRlID0+ICh7XG4gICAgLi4udmlzU3RhdGUsXG4gICAgbGF5ZXJzOiB2aXNTdGF0ZS5sYXllcnMubWFwKGxheWVyID0+IHtcbiAgICAgIGlmICghbGF5ZXJJZCB8fCBsYXllci5pZCA9PT0gbGF5ZXJJZCkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGxheWVyLnZpc0NvbmZpZ1NldHRpbmdzLCAnZGFya0Jhc2VNYXBFbmFibGVkJykpIHtcbiAgICAgICAgICBjb25zdCB7dmlzQ29uZmlnfSA9IGxheWVyLmNvbmZpZztcbiAgICAgICAgICByZXR1cm4gbGF5ZXIudXBkYXRlTGF5ZXJDb25maWcoe1xuICAgICAgICAgICAgdmlzQ29uZmlnOiB7Li4udmlzQ29uZmlnLCBkYXJrQmFzZU1hcEVuYWJsZWR9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBsYXllcjtcbiAgICB9KVxuICB9KTtcblxuLyoqXG4gKiBVcGRhdGVyIHRoYXQgY2hhbmdlcyB0aGUgbWFwIHN0eWxlIGJ5IGNhbGxpbmcgbWFwU3R5bGVDaGFuZ2VVcGRhdGVyIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaXQgZG9lcyB0aGUgZm9sbG93aW5nOlxuICpcbiAqICAgMS4gVXBkYXRlIG1hcCBvdmVybGF5IGJsZW5kaW5nIG1vZGUgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlXG4gKiAgICAgIGJhc2UgbWFwLCBidXQgb25seSBpZiBpdCdzIG5vdCBpbiB0aGUgYG5vcm1hbGAgbW9kZS5cbiAqXG4gKiAgIDIuIFVwZGF0ZSBhbGwgdGhlIGxheWVycyB3aGljaCBoYXZlIHRoZSBgZGFya0Jhc2VNYXBFbmFibGVkYCBjb25maWcgc2V0dGluZ1xuICogICAgICBhZGp1c3RpbmcgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTWFwU3R5bGVDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7cGF5bG9hZH0gPSBhY3Rpb247XG4gIGNvbnN0IHttYXBTdHlsZX0gPSBzdGF0ZTtcbiAgY29uc3QgZ2V0Q29sb3JNb2RlID0ga2V5ID0+IG1hcFN0eWxlLm1hcFN0eWxlc1trZXldPy5jb2xvck1vZGU7XG4gIGNvbnN0IHByZXZDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUobWFwU3R5bGUuc3R5bGVUeXBlKTtcbiAgY29uc3QgbmV4dENvbG9yTW9kZSA9IGdldENvbG9yTW9kZShwYXlsb2FkLnN0eWxlVHlwZSk7XG4gIGxldCB7dmlzU3RhdGUsIG1hcFN0YXRlfSA9IHN0YXRlO1xuICBpZiAobmV4dENvbG9yTW9kZSAhPT0gcHJldkNvbG9yTW9kZSkge1xuICAgIHN3aXRjaCAobmV4dENvbG9yTW9kZSkge1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5EQVJLOlxuICAgICAgICB2aXNTdGF0ZSA9IGNvbXBvc2VfKFtcbiAgICAgICAgICB1cGRhdGVPdmVybGF5QmxlbmRpbmcoT1ZFUkxBWV9CTEVORElOR1Muc2NyZWVuLnZhbHVlKSxcbiAgICAgICAgICB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLmRhcmtlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UpXG4gICAgICAgIF0pKHZpc1N0YXRlKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuXG4gIC8vIFVwZGF0ZSBnbG9iZSBjb25maWcgY29sb3JzIHdoZW4gc3R5bGUgY2hhbmdlcyBhbmQgZ2xvYmUgaXMgZW5hYmxlZFxuICBpZiAobWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICAvLyBTd2l0Y2hpbmcgZnJvbSBcIk5vIEJhc2VtYXBcIiB0byBhIGJhc2VtYXAgLSByZXN0b3JlIGJhc2VtYXAgc3ViLXRvZ2dsZXNcbiAgICBpZiAocGF5bG9hZC5zdHlsZVR5cGUgIT09IE5PX01BUF9JRCAmJiBtYXBTdHlsZS5zdHlsZVR5cGUgPT09IE5PX01BUF9JRCkge1xuICAgICAgbWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm1hcFN0YXRlLFxuICAgICAgICBnbG9iZToge1xuICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLFxuICAgICAgICAgIGNvbmZpZzoge1xuICAgICAgICAgICAgLi4ubWFwU3RhdGUuZ2xvYmUuY29uZmlnLFxuICAgICAgICAgICAgYmFzZW1hcDogdHJ1ZSxcbiAgICAgICAgICAgIGxhYmVsczogdHJ1ZSxcbiAgICAgICAgICAgIGFkbWluTGluZXM6IHRydWUsXG4gICAgICAgICAgICB3YXRlcjogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9XG4gICAgbWFwU3RhdGUgPSBzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlKG1hcFN0YXRlLCBtYXBTdHlsZSwgcGF5bG9hZC5zdHlsZVR5cGUpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZSxcbiAgICBtYXBTdGF0ZSxcbiAgICBtYXBTdHlsZTogbWFwU3R5bGVDaGFuZ2VVcGRhdGVyKG1hcFN0eWxlLCB7cGF5bG9hZDogey4uLnBheWxvYWR9fSlcbiAgfTtcbn07XG5cbi8qKlxuICogRGVyaXZlIGdsb2JlIGJhc2VtYXAgY29sb3JzIChzdXJmYWNlIC8gd2F0ZXIgLyBhZG1pbiBsaW5lcykgZnJvbSBhIG1hcCBzdHlsZSBhbmRcbiAqIHJldHVybiBhbiB1cGRhdGVkIG1hcFN0YXRlIHdpdGggdGhvc2UgY29sb3JzIHdyaXR0ZW4gaW50byBgZ2xvYmUuY29uZmlnYC4gVXNlZCBib3RoXG4gKiB3aGVuIHRoZSBiYXNlIG1hcCBzdHlsZSBjaGFuZ2VzIGFuZCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHNvIHRoZSBnbG9iZSBhbHdheXNcbiAqIHJlZmxlY3RzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgYmFzZW1hcCBpbnN0ZWFkIG9mIHRoZSBzdGF0aWMgREVGQVVMVF9HTE9CRV9DT05GSUcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlKFxuICBtYXBTdGF0ZTogTWFwU3RhdGUsXG4gIG1hcFN0eWxlOiBNYXBTdHlsZSxcbiAgc3R5bGVUeXBlOiBzdHJpbmdcbik6IE1hcFN0YXRlIHtcbiAgaWYgKCFtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIHJldHVybiBtYXBTdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5leHRTdHlsZU9iaiA9IG1hcFN0eWxlLm1hcFN0eWxlc1tzdHlsZVR5cGVdO1xuICBjb25zdCBuZXh0R2xvYmVDb25maWcgPSB7Li4ubWFwU3RhdGUuZ2xvYmUuY29uZmlnfTtcblxuICBpZiAoc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICBuZXh0R2xvYmVDb25maWcuYmFzZW1hcCA9IGZhbHNlO1xuICAgIG5leHRHbG9iZUNvbmZpZy5sYWJlbHMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lcyA9IGZhbHNlO1xuICAgIG5leHRHbG9iZUNvbmZpZy53YXRlciA9IGZhbHNlO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFja2dyb3VuZEZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXJDb2xvciA9IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwV2F0ZXJGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXNDb2xvciA9IERFRkFVTFRfQkFTRU1BUF9DT0xPUi5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYmFzZW1hcENvbG9ycyA9IG5leHRTdHlsZU9ialxuICAgICAgPyBnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUoc3R5bGVUeXBlLCB7XG4gICAgICAgICAgc3R5bGU6IG5leHRTdHlsZU9iai5zdHlsZSxcbiAgICAgICAgICBsYXllckdyb3VwczogbmV4dFN0eWxlT2JqLmxheWVyR3JvdXBzXG4gICAgICAgIH0pXG4gICAgICA6IC8vIFN0eWxlIG9iamVjdCBub3QgeWV0IGxvYWRlZCAtIHVzZSBrbm93biBwcmVzZXRzIGJ5IHN0eWxlIHR5cGVcbiAgICAgICAgZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSk7XG4gICAgbmV4dEdsb2JlQ29uZmlnLnN1cmZhY2VDb2xvciA9IGJhc2VtYXBDb2xvcnMuYmFja2dyb3VuZEZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXJDb2xvciA9IGJhc2VtYXBDb2xvcnMuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBBZG1pbkxpbmVDb2xvcjtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4ubWFwU3RhdGUsXG4gICAgZ2xvYmU6IHtcbiAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLFxuICAgICAgY29uZmlnOiBuZXh0R2xvYmVDb25maWdcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IHN3aXRjaGVzIHRoZSBtYXAgdmlldyBtb2RlICgyRCAvIDNEIC8gR2xvYmUpLiBSdW5zIHRoZSBiYXNlIG1hcC1zdGF0ZVxuICogdXBkYXRlciBhbmQsIHdoZW4gZW50ZXJpbmcgZ2xvYmUgbW9kZSwgc3luY3MgdGhlIGdsb2JlIGJhc2VtYXAgY29sb3JzIHRvIHRoZVxuICogY3VycmVudGx5IHNlbGVjdGVkIG1hcCBzdHlsZSBzbyB0aGUgZ2xvYmUgZG9lc24ndCBzaG93IHN0YWxlIGRlZmF1bHQgY29sb3JzLlxuICovXG5leHBvcnQgY29uc3QgY29tYmluZWRTZXRNYXBWaWV3TW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRNYXBWaWV3TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBsZXQgbWFwU3RhdGUgPSBzZXRNYXBWaWV3TW9kZVVwZGF0ZXIoc3RhdGUubWFwU3RhdGUsIGFjdGlvbik7XG5cbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgbWFwU3RhdGUgPSBzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlKG1hcFN0YXRlLCBzdGF0ZS5tYXBTdHlsZSwgc3RhdGUubWFwU3R5bGUuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGVcbiAgfTtcbn07XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIGxheWVyIHR5cGUgYnkgY2FsbGluZyBgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcmAgb24gdmlzU3RhdGUuXG4gKiBJbiBhZGRpdGlvbiB0byB0aGF0LCBpZiB0aGUgbmV3IGxheWVyIHR5cGUgaGFzIHRoZSBgZGFya0Jhc2VNYXBFbmFibGVkYCBjb25maWdcbiAqIHNldHRpbmcsIHdlIGFkanVzdCBpdCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbG9yTW9kZSBvZiB0aGUgYmFzZSBtYXAuc1xuICovXG5leHBvcnQgY29uc3QgY29tYmluZWRMYXllclR5cGVDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBMYXllclR5cGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IHt2aXNTdGF0ZX0gPSBzdGF0ZTtcbiAgY29uc3Qgb2xkTGF5ZXJJbmRleCA9IHZpc1N0YXRlLmxheWVycy5maW5kSW5kZXgobGF5ZXIgPT4gbGF5ZXIgPT09IGFjdGlvbi5vbGRMYXllcik7XG4gIHZpc1N0YXRlID0gbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcih2aXNTdGF0ZSwgYWN0aW9uKTtcbiAgY29uc3QgbmV3TGF5ZXIgPSB2aXNTdGF0ZS5sYXllcnNbb2xkTGF5ZXJJbmRleF07XG4gIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobmV3TGF5ZXI/LnZpc0NvbmZpZ1NldHRpbmdzLCAnZGFya0Jhc2VNYXBFbmFibGVkJykpIHtcbiAgICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gICAgY29uc3Qge2NvbG9yTW9kZX0gPSBtYXBTdHlsZS5tYXBTdHlsZXNbbWFwU3R5bGUuc3R5bGVUeXBlXTtcbiAgICBjb25zdCB7ZGFya0Jhc2VNYXBFbmFibGVkfSA9IG5ld0xheWVyLmNvbmZpZy52aXNDb25maWc7XG4gICAgc3dpdGNoIChjb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgaWYgKCFkYXJrQmFzZU1hcEVuYWJsZWQpIHtcbiAgICAgICAgICB2aXNTdGF0ZSA9IHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKHRydWUsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkxJR0hUOlxuICAgICAgICBpZiAoZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyhmYWxzZSwgbmV3TGF5ZXIuaWQpKHZpc1N0YXRlKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAvLyBkbyBub3RoaW5nXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGVcbiAgfTtcbn07XG5cbi8qKlxuICogTWFrZSBtYXBMZWdlbmQgYWN0aXZlIHdoZW4gdG9nZ2xlU3BsaXRNYXAgYWN0aW9uIGlzIGNhbGxlZFxuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBUb2dnbGVTcGxpdE1hcFVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICB2aXNTdGF0ZTogdmlzU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudmlzU3RhdGUsIGFjdGlvbiksXG4gICAgdWlTdGF0ZTogdWlTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcihzdGF0ZS51aVN0YXRlKSxcbiAgICBtYXBTdGF0ZTogbWFwU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUubWFwU3RhdGUpXG4gIH07XG5cbiAgY29uc3QgaXNTcGxpdCA9IG5ld1N0YXRlLnZpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggIT09IDA7XG4gIGNvbnN0IGlzTGVnZW5kQWN0aXZlID0gbmV3U3RhdGUudWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmU7XG4gIGlmIChpc1NwbGl0ICYmICFpc0xlZ2VuZEFjdGl2ZSkge1xuICAgIG5ld1N0YXRlLnVpU3RhdGUgPSB0b2dnbGVNYXBDb250cm9sVXBkYXRlcihuZXdTdGF0ZS51aVN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7cGFuZWxJZDogJ21hcExlZ2VuZCcsIGluZGV4OiBhY3Rpb24ucGF5bG9hZH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogU2V0IG1hcCBzcGxpdCBtb2RlIHVwZGF0ZXIgLSBjb29yZGluYXRlcyBzdGF0ZSBjaGFuZ2VzIGFjcm9zcyB2aXNTdGF0ZSwgbWFwU3RhdGUsIGFuZCB1aVN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwU3BsaXRNb2RlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHttYXBTcGxpdE1vZGV9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHByZXZNb2RlID0gc3RhdGUubWFwU3RhdGUubWFwU3BsaXRNb2RlO1xuXG4gIGlmIChtYXBTcGxpdE1vZGUgPT09IHByZXZNb2RlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgY29uc3QgbmV3TWFwU3RhdGUgPSBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIoc3RhdGUubWFwU3RhdGUsIGFjdGlvbik7XG5cbiAgbGV0IG5ld1Zpc1N0YXRlID0gey4uLnN0YXRlLnZpc1N0YXRlfTtcblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICBuZXdWaXNTdGF0ZSA9IHtcbiAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgIHNwbGl0TWFwczogW11cbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFOlxuICAgICAgaWYgKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCkge1xuICAgICAgICBuZXdWaXNTdGF0ZSA9IHtcbiAgICAgICAgICAuLi5uZXdWaXNTdGF0ZSxcbiAgICAgICAgICBzcGxpdE1hcHM6IGNvbXB1dGVTcGxpdE1hcExheWVycyhuZXdWaXNTdGF0ZS5sYXllcnMsIHtcbiAgICAgICAgICAgIGR1cGxpY2F0ZTogbWFwU3BsaXRNb2RlID09PSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRVxuICAgICAgICAgIH0pXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cblxuICBsZXQgbmV3VWlTdGF0ZSA9IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSk7XG5cbiAgY29uc3QgaXNTcGxpdCA9IG5ld1Zpc1N0YXRlLnNwbGl0TWFwcy5sZW5ndGggIT09IDA7XG4gIGNvbnN0IGlzTGVnZW5kQWN0aXZlID0gbmV3VWlTdGF0ZS5tYXBDb250cm9scz8ubWFwTGVnZW5kPy5hY3RpdmU7XG4gIGlmIChpc1NwbGl0ICYmICFpc0xlZ2VuZEFjdGl2ZSkge1xuICAgIG5ld1VpU3RhdGUgPSB0b2dnbGVNYXBDb250cm9sVXBkYXRlcihuZXdVaVN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiB7cGFuZWxJZDogJ21hcExlZ2VuZCcsIGluZGV4OiAwfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtYXBTdGF0ZTogbmV3TWFwU3RhdGUsXG4gICAgdmlzU3RhdGU6IG5ld1Zpc1N0YXRlLFxuICAgIHVpU3RhdGU6IG5ld1VpU3RhdGVcbiAgfTtcbn07XG5cbmNvbnN0IGRlZmF1bHRSZXBsYWNlRGF0YVRvTWFwT3B0aW9ucyA9IHtcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiB0cnVlLFxuICBjZW50ZXJNYXA6IHRydWUsXG4gIGF1dG9DcmVhdGVMYXllcnM6IGZhbHNlXG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgcmVwbGFjZSBhIGRhdGFzZXQgaW4gc3RhdGVcbiAqL1xuZXhwb3J0IGNvbnN0IHJlcGxhY2VEYXRhSW5NYXBVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAge3BheWxvYWR9OiB7cGF5bG9hZDogUmVwbGFjZURhdGFJbk1hcFBheWxvYWR9XG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge2RhdGFzZXRUb1JlcGxhY2VJZCwgZGF0YXNldFRvVXNlLCBvcHRpb25zID0ge319ID0gcGF5bG9hZDtcbiAgY29uc3QgYWRkRGF0YVRvTWFwT3B0aW9ucyA9IHsuLi5kZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMsIC4uLm9wdGlvbnN9O1xuXG4gIC8vIGNoZWNrIGlmIGRhdGFzZXQgaXMgdGhlcmVcbiAgaWYgKCFzdGF0ZS52aXNTdGF0ZS5kYXRhc2V0c1tkYXRhc2V0VG9SZXBsYWNlSWRdKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIC8vIGRhdGFzZXRUb1VzZSBpcyBQcm90b0RhdGFzZXRcbiAgY29uc3QgZGF0YUlkVG9Vc2UgPSBkYXRhc2V0VG9Vc2UuaW5mby5pZDtcbiAgaWYgKCFkYXRhSWRUb1VzZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyByZW1vdmUgZGF0YXNldCBhbmQgcHV0IGRlcGVuZGVuY2llcyBpbiB0b0JlTWVyZ2VkXG4gIGNvbnN0IHByZXBhcmVkU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHByZXBhcmVTdGF0ZUZvckRhdGFzZXRSZXBsYWNlKHN0YXRlLnZpc1N0YXRlLCBkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFJZFRvVXNlKVxuICB9O1xuXG4gIGNvbnN0IG5leHRTdGF0ZSA9IGFkZERhdGFUb01hcFVwZGF0ZXIoXG4gICAgcHJlcGFyZWRTdGF0ZSxcbiAgICBwYXlsb2FkXyh7XG4gICAgICBkYXRhc2V0czogZGF0YXNldFRvVXNlLFxuICAgICAgLy8gc2hvdWxkIHpvb20gdG8gbmV3IGRhdGFzZXRcbiAgICAgIG9wdGlvbnM6IGFkZERhdGFUb01hcE9wdGlvbnNcbiAgICB9KVxuICApO1xuXG4gIHJldHVybiBuZXh0U3RhdGU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBR0EsSUFBQUEsZ0JBQUEsR0FBQUMsT0FBQTtBQU9BLElBQUFDLGlC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
|
|
491
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdWlTdGF0ZVVwZGF0ZXJzIiwicmVxdWlyZSIsIl92aXNTdGF0ZVVwZGF0ZXJzIiwiX21hcFN0YXRlVXBkYXRlcnMiLCJfbWFwU3R5bGVVcGRhdGVycyIsIl9wcm9jZXNzb3JzIiwiX2NvbXBvc2VySGVscGVycyIsIl91dGlscyIsIl9kYXRhVXRpbHMiLCJfY29uc3RhbnRzIiwiX2RlY2tnbExheWVycyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiY29tYmluZWRVcGRhdGVycyIsImlzVmFsaWRDb25maWciLCJleHBvcnRzIiwiY29uZmlnIiwiaXNQbGFpbk9iamVjdCIsInZlcnNpb24iLCJkZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyIsImNlbnRlck1hcCIsImtlZXBFeGlzdGluZ0NvbmZpZyIsImF1dG9DcmVhdGVMYXllcnMiLCJhdXRvQ3JlYXRlVG9vbHRpcHMiLCJhZGREYXRhVG9NYXBVcGRhdGVyIiwic3RhdGUiLCJfcmVmIiwiX2RhdGFzZXRzJCIsIl9kYXRhc2V0cyQyIiwiX2RhdGFzZXRzJDMiLCJwYXlsb2FkIiwiZGF0YXNldHMiLCJpbmZvIiwib3B0aW9ucyIsImlzUHJvZ3Jlc3NpdmVMb2FkaW5nIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwiaWQiLCJ2aXNTdGF0ZSIsImNvbXBvc2VfIiwicGlja18iLCJhcHBseV8iLCJ2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyIiwicGFyc2VkQ29uZmlnIiwic2NoZW1hIiwicGFyc2VTYXZlZENvbmZpZyIsIm9sZExheWVycyIsImxheWVycyIsImZpbHRlck5ld2x5QWRkZWRMYXllcnMiLCJubCIsImZpbmQiLCJvbCIsImZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkIiwiYm91bmRzIiwiZmluZE1hcEJvdW5kcyIsInVuZGVmaW5lZCIsImlmXyIsIkJvb2xlYW4iLCJzZXRNYXBJbmZvVXBkYXRlciIsIndpdGhfIiwiX3JlZjIiLCJzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIiLCJwYXlsb2FkXyIsInN0eWxlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVSZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsInVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciIsInRvZ2dsZU1vZGFsVXBkYXRlciIsIm1lcmdlXyIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInJlYWRPbmx5IiwibG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIiLCJhY3Rpb24iLCJwYXlsb2FkcyIsImZpbGVzVG9EYXRhUGF5bG9hZCIsInJlc3VsdCIsIm5leHRTdGF0ZSIsImZpbGVMb2FkaW5nIiwiZmlsZUxvYWRpbmdQcm9ncmVzcyIsInN0YXRlV2l0aERhdGEiLCJtYXAiLCJwIiwiYWRkRGF0YVRvTWFwQ29tcG9zZWQiLCJ1cGRhdGVPdmVybGF5QmxlbmRpbmciLCJvdmVybGF5QmxlbmRpbmciLCJPVkVSTEFZX0JMRU5ESU5HUyIsIm5vcm1hbCIsInZhbHVlIiwidXBkYXRlRGFya0Jhc2VNYXBMYXllcnMiLCJkYXJrQmFzZU1hcEVuYWJsZWQiLCJsYXllcklkIiwibGF5ZXIiLCJ2aXNDb25maWdTZXR0aW5ncyIsInZpc0NvbmZpZyIsInVwZGF0ZUxheWVyQ29uZmlnIiwiY29tYmluZWRNYXBTdHlsZUNoYW5nZVVwZGF0ZXIiLCJfbWFwU3RhdGUkZ2xvYmUiLCJtYXBTdHlsZSIsImdldENvbG9yTW9kZSIsImtleSIsIl9tYXBTdHlsZSRtYXBTdHlsZXMkayIsIm1hcFN0eWxlcyIsImNvbG9yTW9kZSIsInByZXZDb2xvck1vZGUiLCJzdHlsZVR5cGUiLCJuZXh0Q29sb3JNb2RlIiwibWFwU3RhdGUiLCJCQVNFX01BUF9DT0xPUl9NT0RFUyIsIkRBUksiLCJzY3JlZW4iLCJMSUdIVCIsImRhcmtlbiIsImdsb2JlIiwiZW5hYmxlZCIsIk5PX01BUF9JRCIsImJhc2VtYXAiLCJsYWJlbHMiLCJhZG1pbkxpbmVzIiwid2F0ZXIiLCJzeW5jR2xvYmVDb25maWdDb2xvcnNUb1N0eWxlIiwibWFwU3R5bGVDaGFuZ2VVcGRhdGVyIiwiX21hcFN0YXRlJGdsb2JlMiIsIm5leHRTdHlsZU9iaiIsIm5leHRHbG9iZUNvbmZpZyIsInN1cmZhY2VDb2xvciIsIkRFRkFVTFRfQkFTRU1BUF9DT0xPUiIsImJhY2tncm91bmRGaWxsQ29sb3IiLCJ3YXRlckNvbG9yIiwiYmFzZW1hcFdhdGVyRmlsbENvbG9yIiwiYWRtaW5MaW5lc0NvbG9yIiwiYmFzZW1hcEFkbWluTGluZUNvbG9yIiwiYmFzZW1hcENvbG9ycyIsImdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZSIsInN0eWxlIiwibGF5ZXJHcm91cHMiLCJjb21iaW5lZFNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9tYXBTdGF0ZSRnbG9iZTMiLCJzZXRNYXBWaWV3TW9kZVVwZGF0ZXIiLCJjb21iaW5lZExheWVyVHlwZUNoYW5nZVVwZGF0ZXIiLCJvbGRMYXllckluZGV4IiwiZmluZEluZGV4Iiwib2xkTGF5ZXIiLCJsYXllclR5cGVDaGFuZ2VVcGRhdGVyIiwibmV3TGF5ZXIiLCJ0b2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJfbmV3U3RhdGUkdWlTdGF0ZSRtYXAiLCJuZXdTdGF0ZSIsInZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwidWlTdGF0ZSIsInVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIiLCJtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsImlzU3BsaXQiLCJzcGxpdE1hcHMiLCJpc0xlZ2VuZEFjdGl2ZSIsIm1hcENvbnRyb2xzIiwibWFwTGVnZW5kIiwiYWN0aXZlIiwidG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIiLCJwYW5lbElkIiwiaW5kZXgiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwiX25ld1VpU3RhdGUkbWFwQ29udHJvIiwibWFwU3BsaXRNb2RlIiwicHJldk1vZGUiLCJuZXdNYXBTdGF0ZSIsIm1hcFN0YXRlU2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsIm5ld1Zpc1N0YXRlIiwiTWFwU3BsaXRNb2RlIiwiU0lOR0xFX01BUCIsIkRVQUxfTUFQIiwiU1dJUEVfQ09NUEFSRSIsImNvbXB1dGVTcGxpdE1hcExheWVycyIsImR1cGxpY2F0ZSIsIm5ld1VpU3RhdGUiLCJkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMiLCJyZXBsYWNlRGF0YUluTWFwVXBkYXRlciIsIl9yZWYzIiwiZGF0YXNldFRvUmVwbGFjZUlkIiwiZGF0YXNldFRvVXNlIiwiX3BheWxvYWQkb3B0aW9ucyIsImFkZERhdGFUb01hcE9wdGlvbnMiLCJkYXRhSWRUb1VzZSIsInByZXBhcmVkU3RhdGUiLCJwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21iaW5lZC11cGRhdGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge1xuICB0b2dnbGVNb2RhbFVwZGF0ZXIsXG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyIGFzIHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlcixcbiAgdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyB1aVN0YXRlUmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXJcbn0gZnJvbSAnLi91aS1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICB1cGRhdGVWaXNEYXRhVXBkYXRlciBhcyB2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLFxuICBzZXRNYXBJbmZvVXBkYXRlcixcbiAgbGF5ZXJUeXBlQ2hhbmdlVXBkYXRlcixcbiAgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyIGFzIHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyLFxuICBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZVxufSBmcm9tICcuL3Zpcy1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciBhcyBzdGF0ZU1hcENvbmZpZ1VwZGF0ZXIsXG4gIHRvZ2dsZVNwbGl0TWFwVXBkYXRlciBhcyBtYXBTdGF0ZVRvZ2dsZVNwbGl0TWFwVXBkYXRlcixcbiAgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciBhcyBtYXBTdGF0ZVNldE1hcFNwbGl0TW9kZVVwZGF0ZXIsXG4gIHNldE1hcFZpZXdNb2RlVXBkYXRlclxufSBmcm9tICcuL21hcC1zdGF0ZS11cGRhdGVycyc7XG5pbXBvcnQge1xuICBtYXBTdHlsZUNoYW5nZVVwZGF0ZXIsXG4gIHJlY2VpdmVNYXBDb25maWdVcGRhdGVyIGFzIHN0eWxlTWFwQ29uZmlnVXBkYXRlclxufSBmcm9tICcuL21hcC1zdHlsZS11cGRhdGVycyc7XG5pbXBvcnQge2ZpbGVzVG9EYXRhUGF5bG9hZH0gZnJvbSAnQGtlcGxlci5nbC9wcm9jZXNzb3JzJztcbmltcG9ydCB7cGF5bG9hZF8sIGFwcGx5Xywgd2l0aF8sIGlmXywgY29tcG9zZV8sIG1lcmdlXywgcGlja199IGZyb20gJy4vY29tcG9zZXItaGVscGVycyc7XG5pbXBvcnQge01hcFN0YXRlLCBVaVN0YXRlLCBBZGREYXRhVG9NYXBQYXlsb2FkLCBQYXJzZWRDb25maWd9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTdHlsZX0gZnJvbSAnLi9tYXAtc3R5bGUtdXBkYXRlcnMnO1xuaW1wb3J0IHtQcm92aWRlclN0YXRlfSBmcm9tICcuL3Byb3ZpZGVyLXN0YXRlLXVwZGF0ZXJzJztcbmltcG9ydCB7XG4gIGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uLFxuICBNYXBTdHlsZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIExheWVyVHlwZUNoYW5nZVVwZGF0ZXJBY3Rpb24sXG4gIFRvZ2dsZVNwbGl0TWFwVXBkYXRlckFjdGlvbixcbiAgUmVwbGFjZURhdGFJbk1hcFBheWxvYWQsXG4gIE1hcFN0YXRlQWN0aW9uc1xufSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtWaXNTdGF0ZX0gZnJvbSAnQGtlcGxlci5nbC9zY2hlbWFzJztcbmltcG9ydCB7TGF5ZXJ9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdCwgY29tcHV0ZVNwbGl0TWFwTGF5ZXJzfSBmcm9tICdAa2VwbGVyLmdsL3V0aWxzJztcbmltcG9ydCB7ZmluZE1hcEJvdW5kc30gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7QkFTRV9NQVBfQ09MT1JfTU9ERVMsIE9WRVJMQVlfQkxFTkRJTkdTLCBOT19NQVBfSUQsIE1hcFNwbGl0TW9kZX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuaW1wb3J0IHtnZXRCYXNlbWFwQ29sb3JzRm9yU3R5bGUsIERFRkFVTFRfQkFTRU1BUF9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9kZWNrZ2wtbGF5ZXJzJztcblxuZXhwb3J0IHR5cGUgS2VwbGVyR2xTdGF0ZSA9IHtcbiAgdmlzU3RhdGU6IFZpc1N0YXRlO1xuICBtYXBTdGF0ZTogTWFwU3RhdGU7XG4gIG1hcFN0eWxlOiBNYXBTdHlsZTtcbiAgdWlTdGF0ZTogVWlTdGF0ZTtcbiAgcHJvdmlkZXJTdGF0ZTogUHJvdmlkZXJTdGF0ZTtcbn07XG5cbi8vIGNvbXBvc2UgYWN0aW9uIHRvIGFwcGx5IHJlc3VsdCBtdWx0aXBsZSByZWR1Y2Vycywgd2l0aCB0aGUgb3V0cHV0IG9mIG9uZVxuXG4vKipcbiAqIFNvbWUgYWN0aW9ucyB3aWxsIGFmZmVjdCB0aGUgZW50aXJlIGtlcGxlci5sZyBpbnN0YW5jZSBzdGF0ZS5cbiAqIFRoZSB1cGRhdGVycyBmb3IgdGhlc2UgYWN0aW9ucyBpcyBleHBvcnRlZCBhcyBgY29tYmluZWRVcGRhdGVyc2AuIFRoZXNlIHVwZGF0ZXIgdGFrZSB0aGUgZW50aXJlIGluc3RhbmNlIHN0YXRlXG4gKiBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7Y29tYmluZWRVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBhZGQgZGF0YSB0byBtYXAgYWZ0ZXIgcmVjZWl2aW5nIGRhdGEgZnJvbSByZW1vdGUgc291cmNlc1xuICogICAgY2FzZSAnTE9BRF9SRU1PVEVfUkVTT1VSQ0VfU1VDQ0VTUyc6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgLy8gcGFzcyBpbiBrZXBsZXIuZ2wgaW5zdGFuY2Ugc3RhdGUgdG8gY29tYmluZWRVcGRhdGVyc1xuICogICAgICAgICAgbWFwOiAgY29tYmluZWRVcGRhdGVycy5hZGREYXRhVG9NYXBVcGRhdGVyKFxuICogICAgICAgICAgIHN0YXRlLmtlcGxlckdsLm1hcCxcbiAqICAgICAgICAgICB7XG4gKiAgICAgICAgICAgICBwYXlsb2FkOiB7XG4gKiAgICAgICAgICAgICAgIGRhdGFzZXRzOiBhY3Rpb24uZGF0YXNldHMsXG4gKiAgICAgICAgICAgICAgIG9wdGlvbnM6IHtyZWFkT25seTogdHJ1ZX0sXG4gKiAgICAgICAgICAgICAgIGNvbmZpZzogYWN0aW9uLmNvbmZpZ1xuICogICAgICAgICAgICAgIH1cbiAqICAgICAgICAgICAgfVxuICogICAgICAgICAgKVxuICogICAgICAgIH1cbiAqICAgICAgfTtcbiAqICB9XG4gKiAgcmV0dXJuIHJlZHVjZXJzKHN0YXRlLCBhY3Rpb24pO1xuICogfTtcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBjb21wb3NlZFJlZHVjZXI7XG4gKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBjb21iaW5lZFVwZGF0ZXJzID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5cbmV4cG9ydCBjb25zdCBpc1ZhbGlkQ29uZmlnID0gY29uZmlnID0+XG4gIGlzUGxhaW5PYmplY3QoY29uZmlnKSAmJiBpc1BsYWluT2JqZWN0KGNvbmZpZy5jb25maWcpICYmIGNvbmZpZy52ZXJzaW9uO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEFkZERhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGNlbnRlck1hcDogdHJ1ZSxcbiAga2VlcEV4aXN0aW5nQ29uZmlnOiBmYWxzZSxcbiAgYXV0b0NyZWF0ZUxheWVyczogdHJ1ZSxcbiAgYXV0b0NyZWF0ZVRvb2x0aXBzOiB0cnVlXG59O1xuXG4vKipcbiAqIENvbWJpbmUgZGF0YSBhbmQgZnVsbCBjb25maWd1cmF0aW9uIHVwZGF0ZSBpbiBhIHNpbmdsZSBhY3Rpb25cbiAqXG4gKiBAbWVtYmVyb2YgY29tYmluZWRVcGRhdGVyc1xuICogQHBhcmFtIHtPYmplY3R9IHN0YXRlIGtlcGxlci5nbCBpbnN0YW5jZSBzdGF0ZSwgY29udGFpbmluZyBhbGwgc3VicmVkdWNlciBzdGF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvblxuICogQHBhcmFtIHtPYmplY3R9IGFjdGlvbi5wYXlsb2FkIGB7ZGF0YXNldHMsIG9wdGlvbnMsIGNvbmZpZ31gXG4gKiBAcGFyYW0gYWN0aW9uLnBheWxvYWQuZGF0YXNldHMgLSAqKipyZXF1aXJlZCoqIGRhdGFzZXRzIGNhbiBiZSBhIGRhdGFzZXQgb3IgYW4gYXJyYXkgb2YgZGF0YXNldHNcbiAqIEVhY2ggZGF0YXNldCBvYmplY3QgbmVlZHMgdG8gaGF2ZSBgaW5mb2AgYW5kIGBkYXRhYCBwcm9wZXJ0eS5cbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQub3B0aW9uc10gb3B0aW9uIG9iamVjdCBge2NlbnRlck1hcDogdHJ1ZSwgcGFkZGluZzoge2xlZnQ6IDMwMH19YFxuICogQHBhcmFtIFthY3Rpb24ucGF5bG9hZC5jb25maWddIG1hcCBjb25maWdcbiAqIEBwYXJhbSBbYWN0aW9uLnBheWxvYWQuaW5mb10gbWFwIGluZm8gY29udGFpbnMgdGl0bGUgYW5kIGRlc2NyaXB0aW9uXG4gKiBAcmV0dXJucyBuZXh0U3RhdGVcbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEYXRhc2V0XG4gKiBAcHJvcGVydHkgaW5mbyAtaW5mbyBvZiBhIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBpbmZvLmlkIC0gaWQgb2YgdGhpcyBkYXRhc2V0LiBJZiBjb25maWcgaXMgZGVmaW5lZCwgYGlkYCBzaG91bGQgbWF0Y2hlcyB0aGUgYGRhdGFJZGAgaW4gY29uZmlnLlxuICogQHByb3BlcnR5IGluZm8ubGFiZWwgLSBBIGRpc3BsYXkgbmFtZSBvZiB0aGlzIGRhdGFzZXRcbiAqIEBwcm9wZXJ0eSBkYXRhIC0gKioqcmVxdWlyZWQqKiBUaGUgZGF0YSBvYmplY3QsIGluIGEgdGFidWxhciBmb3JtYXQgd2l0aCAyIHByb3BlcnRpZXMgYGZpZWxkc2AgYW5kIGByb3dzYFxuICogQHByb3BlcnR5IGRhdGEuZmllbGRzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiBmaWVsZHMsXG4gKiBAcHJvcGVydHkgZGF0YS5maWVsZHMubmFtZSAtICoqKnJlcXVpcmVkKiogTmFtZSBvZiB0aGUgZmllbGQsXG4gKiBAcHJvcGVydHkgZGF0YS5yb3dzIC0gKioqcmVxdWlyZWQqKiBBcnJheSBvZiByb3dzLCBpbiBhIHRhYnVsYXIgZm9ybWF0IHdpdGggYGZpZWxkc2AgYW5kIGByb3dzYFxuICpcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICB7cGF5bG9hZH06IHtwYXlsb2FkOiBBZGREYXRhVG9NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0cywgY29uZmlnLCBpbmZvfSA9IHBheWxvYWQ7XG5cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0QWRkRGF0YVRvTWFwT3B0aW9ucyxcbiAgICAuLi5wYXlsb2FkLm9wdGlvbnNcbiAgfTtcblxuICAvLyBjaGVjayBpZiBwcm9ncmVzc2l2ZSBsb2FkaW5nIGRhdGFzZXQgYnkgYmF0Y2hlcywgYW5kIHVwZGF0ZSB2aXNTdGF0ZSBkaXJlY3RseVxuICBjb25zdCBpc1Byb2dyZXNzaXZlTG9hZGluZyA9XG4gICAgQXJyYXkuaXNBcnJheShkYXRhc2V0cykgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5mb3JtYXQgPT09ICdhcnJvdycgJiZcbiAgICBkYXRhc2V0c1swXT8uaW5mby5pZCAmJlxuICAgIGRhdGFzZXRzWzBdPy5pbmZvLmlkIGluIHN0YXRlLnZpc1N0YXRlLmRhdGFzZXRzO1xuICBpZiAoaXNQcm9ncmVzc2l2ZUxvYWRpbmcpIHtcbiAgICByZXR1cm4gY29tcG9zZV88S2VwbGVyR2xTdGF0ZT4oW1xuICAgICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgICAgZGF0YXNldHMsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBjb25maWdcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICBdKShzdGF0ZSk7XG4gIH1cblxuICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gIGxldCBwYXJzZWRDb25maWc6IFBhcnNlZENvbmZpZyA9IGNvbmZpZztcblxuICBpZiAoaXNWYWxpZENvbmZpZyhjb25maWcpKSB7XG4gICAgLy8gaWYgcGFzc2VkIGluIHNhdmVkIGNvbmZpZ1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwYXJzZWRDb25maWcgPSBzdGF0ZS52aXNTdGF0ZS5zY2hlbWEucGFyc2VTYXZlZENvbmZpZyhjb25maWcpO1xuICB9XG4gIGNvbnN0IG9sZExheWVycyA9IHN0YXRlLnZpc1N0YXRlLmxheWVycztcbiAgY29uc3QgZmlsdGVyTmV3bHlBZGRlZExheWVycyA9IChsYXllcnM6IExheWVyW10pID0+XG4gICAgbGF5ZXJzLmZpbHRlcihubCA9PiAhb2xkTGF5ZXJzLmZpbmQob2wgPT4gb2wgPT09IG5sKSk7XG5cbiAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgbm90IGZvdW5kLCB0byBtYWtlIHR5cGVzY3JpcHQgaGFwcHlcbiAgY29uc3QgZmluZE1hcEJvdW5kc0lmQ2VudGVyZWQgPSAobGF5ZXJzOiBMYXllcltdKSA9PiB7XG4gICAgY29uc3QgYm91bmRzID0gb3B0aW9ucy5jZW50ZXJNYXAgJiYgZmluZE1hcEJvdW5kcyhsYXllcnMpO1xuICAgIHJldHVybiBib3VuZHMgPyBib3VuZHMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgcmV0dXJuIGNvbXBvc2VfPEtlcGxlckdsU3RhdGU+KFtcbiAgICBwaWNrXygndmlzU3RhdGUnKShcbiAgICAgIC8vIHRoaXMgcGFydCBjYW4gYmUgYXN5bmNcbiAgICAgIGFwcGx5XzxWaXNTdGF0ZSwgYW55Pih2aXNTdGF0ZVVwZGF0ZVZpc0RhdGFVcGRhdGVyLCB7XG4gICAgICAgIGRhdGFzZXRzLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZ1xuICAgICAgfSlcbiAgICApLFxuXG4gICAgaWZfKEJvb2xlYW4oaW5mbyksIHBpY2tfKCd2aXNTdGF0ZScpKGFwcGx5XzxWaXNTdGF0ZSwgYW55PihzZXRNYXBJbmZvVXBkYXRlciwge2luZm99KSkpLFxuICAgIC8vIE5vdGUgdGhhdCBmaXQgYm91bmRzIGhlcmUgd29uJ3QgYmUgY2FsbGVkIGluIGNhc2UgZGF0YXNldHMgYXJlIGNyZWF0ZWQgaW4gVGFza3MuXG4gICAgLy8gQSBzZXBhcmF0ZSBUYXNrIHRvIHVwZGF0ZSBib3VuZHMgaXMgY3JlYXRlZCBvbmNlIHRoZSBkYXRhc2V0cyBhcmUgcmVhZHkuXG4gICAgd2l0aF8oKHt2aXNTdGF0ZX0pID0+XG4gICAgICBwaWNrXygnbWFwU3RhdGUnKShcbiAgICAgICAgYXBwbHlfKFxuICAgICAgICAgIHN0YXRlTWFwQ29uZmlnVXBkYXRlcixcbiAgICAgICAgICBwYXlsb2FkXyh7XG4gICAgICAgICAgICBjb25maWc6IHBhcnNlZENvbmZpZyxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBib3VuZHM6IGZpbmRNYXBCb3VuZHNJZkNlbnRlcmVkKGZpbHRlck5ld2x5QWRkZWRMYXllcnModmlzU3RhdGUubGF5ZXJzKSlcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApXG4gICAgKSxcbiAgICBwaWNrXygnbWFwU3R5bGUnKShhcHBseV8oc3R5bGVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSkpLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoXG4gICAgICBhcHBseV8odWlTdGF0ZVJlY2VpdmVNYXBDb25maWdVcGRhdGVyLCBwYXlsb2FkXyh7Y29uZmlnOiBwYXJzZWRDb25maWcsIG9wdGlvbnN9KSlcbiAgICApLFxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHVpU3RhdGVMb2FkRmlsZXNTdWNjZXNzVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcblxuICAgIHBpY2tfKCd1aVN0YXRlJykoYXBwbHlfKHRvZ2dsZU1vZGFsVXBkYXRlciwgcGF5bG9hZF8obnVsbCkpKSxcbiAgICBwaWNrXygndWlTdGF0ZScpKFxuICAgICAgbWVyZ2VfKFxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3JlYWRPbmx5JylcbiAgICAgICAgICA/IHtyZWFkT25seTogb3B0aW9ucy5yZWFkT25seX1cbiAgICAgICAgICA6IHt9XG4gICAgICApXG4gICAgKVxuICBdKShzdGF0ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgbG9hZEZpbGVzU3VjY2Vzc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBLZXBsZXJHbFN0YXRlLFxuICBhY3Rpb246IGxvYWRGaWxlc1N1Y2Nlc3NVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgLy8gc3RpbGwgbW9yZSB0byBsb2FkXG4gIGNvbnN0IHBheWxvYWRzID0gZmlsZXNUb0RhdGFQYXlsb2FkKGFjdGlvbi5yZXN1bHQpO1xuICBjb25zdCBuZXh0U3RhdGUgPSBjb21wb3NlXyhbXG4gICAgcGlja18oJ3Zpc1N0YXRlJykoXG4gICAgICBtZXJnZV8oe1xuICAgICAgICBmaWxlTG9hZGluZzogZmFsc2UsXG4gICAgICAgIGZpbGVMb2FkaW5nUHJvZ3Jlc3M6IHt9XG4gICAgICB9KVxuICAgIClcbiAgXSkoc3RhdGUpO1xuICAvLyBtYWtlIG11bHRpcGxlIGFkZCBkYXRhIHRvIG1hcCBjYWxsc1xuICBjb25zdCBzdGF0ZVdpdGhEYXRhID0gY29tcG9zZV8ocGF5bG9hZHMubWFwKHAgPT4gYXBwbHlfKGFkZERhdGFUb01hcFVwZGF0ZXIsIHBheWxvYWRfKHApKSkpKFxuICAgIG5leHRTdGF0ZVxuICApO1xuICByZXR1cm4gc3RhdGVXaXRoRGF0YSBhcyBLZXBsZXJHbFN0YXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZERhdGFUb01hcENvbXBvc2VkID0gYWRkRGF0YVRvTWFwVXBkYXRlcjtcblxuLyoqXG4gKiBIZWxwZXIgd2hpY2ggdXBkYXRlcyBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIHZpc1N0YXRlLFxuICogYnV0IG9ubHkgaWYgaXQncyBub3QgY3VycmVudGx5IGluIHRoZSBgbm9ybWFsYCBtb2RlLlxuICovXG5jb25zdCB1cGRhdGVPdmVybGF5QmxlbmRpbmcgPSBvdmVybGF5QmxlbmRpbmcgPT4gdmlzU3RhdGUgPT4ge1xuICBpZiAodmlzU3RhdGUub3ZlcmxheUJsZW5kaW5nICE9PSBPVkVSTEFZX0JMRU5ESU5HUy5ub3JtYWwudmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udmlzU3RhdGUsXG4gICAgICBvdmVybGF5QmxlbmRpbmdcbiAgICB9O1xuICB9XG4gIHJldHVybiB2aXNTdGF0ZTtcbn07XG5cbi8qKlxuICogSGVscGVyIHdoaWNoIHVwZGF0ZXMgYGRhcmtCYXNlTWFwRW5hYmxlZGAgaW4gYWxsIHRoZSBsYXllcnMgaW4gdmlzU3RhdGUgd2hpY2hcbiAqIGhhdmUgdGhpcyBjb25maWcgc2V0dGluZyAob3IgaW4gb25lIHNwZWNpZmljIGxheWVyIGlmIHRoZSBgbGF5ZXJJZGAgcGFyYW0gaXMgcHJvdmlkZWQpLlxuICovXG5jb25zdCB1cGRhdGVEYXJrQmFzZU1hcExheWVycyA9XG4gIChkYXJrQmFzZU1hcEVuYWJsZWQ6IGJvb2xlYW4sIGxheWVySWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSA9PlxuICB2aXNTdGF0ZSA9PiAoe1xuICAgIC4uLnZpc1N0YXRlLFxuICAgIGxheWVyczogdmlzU3RhdGUubGF5ZXJzLm1hcChsYXllciA9PiB7XG4gICAgICBpZiAoIWxheWVySWQgfHwgbGF5ZXIuaWQgPT09IGxheWVySWQpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChsYXllci52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgICAgICAgY29uc3Qge3Zpc0NvbmZpZ30gPSBsYXllci5jb25maWc7XG4gICAgICAgICAgcmV0dXJuIGxheWVyLnVwZGF0ZUxheWVyQ29uZmlnKHtcbiAgICAgICAgICAgIHZpc0NvbmZpZzogey4uLnZpc0NvbmZpZywgZGFya0Jhc2VNYXBFbmFibGVkfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbGF5ZXI7XG4gICAgfSlcbiAgfSk7XG5cbi8qKlxuICogVXBkYXRlciB0aGF0IGNoYW5nZXMgdGhlIG1hcCBzdHlsZSBieSBjYWxsaW5nIG1hcFN0eWxlQ2hhbmdlVXBkYXRlciBvbiB2aXNTdGF0ZS5cbiAqIEluIGFkZGl0aW9uIHRvIHRoYXQsIGl0IGRvZXMgdGhlIGZvbGxvd2luZzpcbiAqXG4gKiAgIDEuIFVwZGF0ZSBtYXAgb3ZlcmxheSBibGVuZGluZyBtb2RlIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZVxuICogICAgICBiYXNlIG1hcCwgYnV0IG9ubHkgaWYgaXQncyBub3QgaW4gdGhlIGBub3JtYWxgIG1vZGUuXG4gKlxuICogICAyLiBVcGRhdGUgYWxsIHRoZSBsYXllcnMgd2hpY2ggaGF2ZSB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnIHNldHRpbmdcbiAqICAgICAgYWRqdXN0aW5nIGl0IGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgY29sb3JNb2RlIG9mIHRoZSBiYXNlIG1hcC5cbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBjb21iaW5lZE1hcFN0eWxlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3R5bGVDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3Qge3BheWxvYWR9ID0gYWN0aW9uO1xuICBjb25zdCB7bWFwU3R5bGV9ID0gc3RhdGU7XG4gIGNvbnN0IGdldENvbG9yTW9kZSA9IGtleSA9PiBtYXBTdHlsZS5tYXBTdHlsZXNba2V5XT8uY29sb3JNb2RlO1xuICBjb25zdCBwcmV2Q29sb3JNb2RlID0gZ2V0Q29sb3JNb2RlKG1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIGNvbnN0IG5leHRDb2xvck1vZGUgPSBnZXRDb2xvck1vZGUocGF5bG9hZC5zdHlsZVR5cGUpO1xuICBsZXQge3Zpc1N0YXRlLCBtYXBTdGF0ZX0gPSBzdGF0ZTtcbiAgaWYgKG5leHRDb2xvck1vZGUgIT09IHByZXZDb2xvck1vZGUpIHtcbiAgICBzd2l0Y2ggKG5leHRDb2xvck1vZGUpIHtcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuREFSSzpcbiAgICAgICAgdmlzU3RhdGUgPSBjb21wb3NlXyhbXG4gICAgICAgICAgdXBkYXRlT3ZlcmxheUJsZW5kaW5nKE9WRVJMQVlfQkxFTkRJTkdTLnNjcmVlbi52YWx1ZSksXG4gICAgICAgICAgdXBkYXRlRGFya0Jhc2VNYXBMYXllcnModHJ1ZSlcbiAgICAgICAgXSkodmlzU3RhdGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQkFTRV9NQVBfQ09MT1JfTU9ERVMuTElHSFQ6XG4gICAgICAgIHZpc1N0YXRlID0gY29tcG9zZV8oW1xuICAgICAgICAgIHVwZGF0ZU92ZXJsYXlCbGVuZGluZyhPVkVSTEFZX0JMRU5ESU5HUy5kYXJrZW4udmFsdWUpLFxuICAgICAgICAgIHVwZGF0ZURhcmtCYXNlTWFwTGF5ZXJzKGZhbHNlKVxuICAgICAgICBdKSh2aXNTdGF0ZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICAvLyBVcGRhdGUgZ2xvYmUgY29uZmlnIGNvbG9ycyB3aGVuIHN0eWxlIGNoYW5nZXMgYW5kIGdsb2JlIGlzIGVuYWJsZWRcbiAgaWYgKG1hcFN0YXRlLmdsb2JlPy5lbmFibGVkKSB7XG4gICAgLy8gU3dpdGNoaW5nIGZyb20gXCJObyBCYXNlbWFwXCIgdG8gYSBiYXNlbWFwIC0gcmVzdG9yZSBiYXNlbWFwIHN1Yi10b2dnbGVzXG4gICAgaWYgKHBheWxvYWQuc3R5bGVUeXBlICE9PSBOT19NQVBfSUQgJiYgbWFwU3R5bGUuc3R5bGVUeXBlID09PSBOT19NQVBfSUQpIHtcbiAgICAgIG1hcFN0YXRlID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHtcbiAgICAgICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIC4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZyxcbiAgICAgICAgICAgIGJhc2VtYXA6IHRydWUsXG4gICAgICAgICAgICBsYWJlbHM6IHRydWUsXG4gICAgICAgICAgICBhZG1pbkxpbmVzOiB0cnVlLFxuICAgICAgICAgICAgd2F0ZXI6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgbWFwU3R5bGUsIHBheWxvYWQuc3R5bGVUeXBlKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGUsXG4gICAgbWFwU3RhdGUsXG4gICAgbWFwU3R5bGU6IG1hcFN0eWxlQ2hhbmdlVXBkYXRlcihtYXBTdHlsZSwge3BheWxvYWQ6IHsuLi5wYXlsb2FkfX0pXG4gIH07XG59O1xuXG4vKipcbiAqIERlcml2ZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyAoc3VyZmFjZSAvIHdhdGVyIC8gYWRtaW4gbGluZXMpIGZyb20gYSBtYXAgc3R5bGUgYW5kXG4gKiByZXR1cm4gYW4gdXBkYXRlZCBtYXBTdGF0ZSB3aXRoIHRob3NlIGNvbG9ycyB3cml0dGVuIGludG8gYGdsb2JlLmNvbmZpZ2AuIFVzZWQgYm90aFxuICogd2hlbiB0aGUgYmFzZSBtYXAgc3R5bGUgY2hhbmdlcyBhbmQgd2hlbiBlbnRlcmluZyBnbG9iZSBtb2RlLCBzbyB0aGUgZ2xvYmUgYWx3YXlzXG4gKiByZWZsZWN0cyB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGJhc2VtYXAgaW5zdGVhZCBvZiB0aGUgc3RhdGljIERFRkFVTFRfR0xPQkVfQ09ORklHLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShcbiAgbWFwU3RhdGU6IE1hcFN0YXRlLFxuICBtYXBTdHlsZTogTWFwU3R5bGUsXG4gIHN0eWxlVHlwZTogc3RyaW5nXG4pOiBNYXBTdGF0ZSB7XG4gIGlmICghbWFwU3RhdGUuZ2xvYmU/LmVuYWJsZWQpIHtcbiAgICByZXR1cm4gbWFwU3RhdGU7XG4gIH1cblxuICBjb25zdCBuZXh0U3R5bGVPYmogPSBtYXBTdHlsZS5tYXBTdHlsZXNbc3R5bGVUeXBlXTtcbiAgY29uc3QgbmV4dEdsb2JlQ29uZmlnID0gey4uLm1hcFN0YXRlLmdsb2JlLmNvbmZpZ307XG5cbiAgaWYgKHN0eWxlVHlwZSA9PT0gTk9fTUFQX0lEKSB7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmJhc2VtYXAgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcubGFiZWxzID0gZmFsc2U7XG4gICAgbmV4dEdsb2JlQ29uZmlnLmFkbWluTGluZXMgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcud2F0ZXIgPSBmYWxzZTtcbiAgICBuZXh0R2xvYmVDb25maWcuc3VyZmFjZUNvbG9yID0gREVGQVVMVF9CQVNFTUFQX0NPTE9SLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcFdhdGVyRmlsbENvbG9yO1xuICAgIG5leHRHbG9iZUNvbmZpZy5hZG1pbkxpbmVzQ29sb3IgPSBERUZBVUxUX0JBU0VNQVBfQ09MT1IuYmFzZW1hcEFkbWluTGluZUNvbG9yO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGJhc2VtYXBDb2xvcnMgPSBuZXh0U3R5bGVPYmpcbiAgICAgID8gZ2V0QmFzZW1hcENvbG9yc0ZvclN0eWxlKHN0eWxlVHlwZSwge1xuICAgICAgICAgIHN0eWxlOiBuZXh0U3R5bGVPYmouc3R5bGUsXG4gICAgICAgICAgbGF5ZXJHcm91cHM6IG5leHRTdHlsZU9iai5sYXllckdyb3Vwc1xuICAgICAgICB9KVxuICAgICAgOiAvLyBTdHlsZSBvYmplY3Qgbm90IHlldCBsb2FkZWQgLSB1c2Uga25vd24gcHJlc2V0cyBieSBzdHlsZSB0eXBlXG4gICAgICAgIGdldEJhc2VtYXBDb2xvcnNGb3JTdHlsZShzdHlsZVR5cGUpO1xuICAgIG5leHRHbG9iZUNvbmZpZy5zdXJmYWNlQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhY2tncm91bmRGaWxsQ29sb3I7XG4gICAgbmV4dEdsb2JlQ29uZmlnLndhdGVyQ29sb3IgPSBiYXNlbWFwQ29sb3JzLmJhc2VtYXBXYXRlckZpbGxDb2xvcjtcbiAgICBuZXh0R2xvYmVDb25maWcuYWRtaW5MaW5lc0NvbG9yID0gYmFzZW1hcENvbG9ycy5iYXNlbWFwQWRtaW5MaW5lQ29sb3I7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLm1hcFN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5tYXBTdGF0ZS5nbG9iZSxcbiAgICAgIGNvbmZpZzogbmV4dEdsb2JlQ29uZmlnXG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBzd2l0Y2hlcyB0aGUgbWFwIHZpZXcgbW9kZSAoMkQgLyAzRCAvIEdsb2JlKS4gUnVucyB0aGUgYmFzZSBtYXAtc3RhdGVcbiAqIHVwZGF0ZXIgYW5kLCB3aGVuIGVudGVyaW5nIGdsb2JlIG1vZGUsIHN5bmNzIHRoZSBnbG9iZSBiYXNlbWFwIGNvbG9ycyB0byB0aGVcbiAqIGN1cnJlbnRseSBzZWxlY3RlZCBtYXAgc3R5bGUgc28gdGhlIGdsb2JlIGRvZXNuJ3Qgc2hvdyBzdGFsZSBkZWZhdWx0IGNvbG9ycy5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkU2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogS2VwbGVyR2xTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgbGV0IG1hcFN0YXRlID0gc2V0TWFwVmlld01vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGlmIChtYXBTdGF0ZS5nbG9iZT8uZW5hYmxlZCkge1xuICAgIG1hcFN0YXRlID0gc3luY0dsb2JlQ29uZmlnQ29sb3JzVG9TdHlsZShtYXBTdGF0ZSwgc3RhdGUubWFwU3R5bGUsIHN0YXRlLm1hcFN0eWxlLnN0eWxlVHlwZSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1hcFN0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIFVwZGF0ZXIgdGhhdCBjaGFuZ2VzIHRoZSBsYXllciB0eXBlIGJ5IGNhbGxpbmcgYGxheWVyVHlwZUNoYW5nZVVwZGF0ZXJgIG9uIHZpc1N0YXRlLlxuICogSW4gYWRkaXRpb24gdG8gdGhhdCwgaWYgdGhlIG5ldyBsYXllciB0eXBlIGhhcyB0aGUgYGRhcmtCYXNlTWFwRW5hYmxlZGAgY29uZmlnXG4gKiBzZXR0aW5nLCB3ZSBhZGp1c3QgaXQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZSBjb2xvck1vZGUgb2YgdGhlIGJhc2UgbWFwLnNcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbWJpbmVkTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTGF5ZXJUeXBlQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGxldCB7dmlzU3RhdGV9ID0gc3RhdGU7XG4gIGNvbnN0IG9sZExheWVySW5kZXggPSB2aXNTdGF0ZS5sYXllcnMuZmluZEluZGV4KGxheWVyID0+IGxheWVyID09PSBhY3Rpb24ub2xkTGF5ZXIpO1xuICB2aXNTdGF0ZSA9IGxheWVyVHlwZUNoYW5nZVVwZGF0ZXIodmlzU3RhdGUsIGFjdGlvbik7XG4gIGNvbnN0IG5ld0xheWVyID0gdmlzU3RhdGUubGF5ZXJzW29sZExheWVySW5kZXhdO1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG5ld0xheWVyPy52aXNDb25maWdTZXR0aW5ncywgJ2RhcmtCYXNlTWFwRW5hYmxlZCcpKSB7XG4gICAgY29uc3Qge21hcFN0eWxlfSA9IHN0YXRlO1xuICAgIGNvbnN0IHtjb2xvck1vZGV9ID0gbWFwU3R5bGUubWFwU3R5bGVzW21hcFN0eWxlLnN0eWxlVHlwZV07XG4gICAgY29uc3Qge2RhcmtCYXNlTWFwRW5hYmxlZH0gPSBuZXdMYXllci5jb25maWcudmlzQ29uZmlnO1xuICAgIHN3aXRjaCAoY29sb3JNb2RlKSB7XG4gICAgICBjYXNlIEJBU0VfTUFQX0NPTE9SX01PREVTLkRBUks6XG4gICAgICAgIGlmICghZGFya0Jhc2VNYXBFbmFibGVkKSB7XG4gICAgICAgICAgdmlzU3RhdGUgPSB1cGRhdGVEYXJrQmFzZU1hcExheWVycyh0cnVlLCBuZXdMYXllci5pZCkodmlzU3RhdGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBCQVNFX01BUF9DT0xPUl9NT0RFUy5MSUdIVDpcbiAgICAgICAgaWYgKGRhcmtCYXNlTWFwRW5hYmxlZCkge1xuICAgICAgICAgIHZpc1N0YXRlID0gdXBkYXRlRGFya0Jhc2VNYXBMYXllcnMoZmFsc2UsIG5ld0xheWVyLmlkKSh2aXNTdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlXG4gIH07XG59O1xuXG4vKipcbiAqIE1ha2UgbWFwTGVnZW5kIGFjdGl2ZSB3aGVuIHRvZ2dsZVNwbGl0TWFwIGFjdGlvbiBpcyBjYWxsZWRcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogVG9nZ2xlU3BsaXRNYXBVcGRhdGVyQWN0aW9uXG4pOiBLZXBsZXJHbFN0YXRlID0+IHtcbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgdmlzU3RhdGU6IHZpc1N0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnZpc1N0YXRlLCBhY3Rpb24pLFxuICAgIHVpU3RhdGU6IHVpU3RhdGVUb2dnbGVTcGxpdE1hcFVwZGF0ZXIoc3RhdGUudWlTdGF0ZSksXG4gICAgbWFwU3RhdGU6IG1hcFN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLm1hcFN0YXRlKVxuICB9O1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdTdGF0ZS52aXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1N0YXRlLnVpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdTdGF0ZS51aVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3U3RhdGUudWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogYWN0aW9uLnBheWxvYWR9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFNldCBtYXAgc3BsaXQgbW9kZSB1cGRhdGVyIC0gY29vcmRpbmF0ZXMgc3RhdGUgY2hhbmdlcyBhY3Jvc3MgdmlzU3RhdGUsIG1hcFN0YXRlLCBhbmQgdWlTdGF0ZVxuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IEtlcGxlckdsU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwU3BsaXRNb2RlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBwcmV2TW9kZSA9IHN0YXRlLm1hcFN0YXRlLm1hcFNwbGl0TW9kZTtcblxuICBpZiAobWFwU3BsaXRNb2RlID09PSBwcmV2TW9kZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIGNvbnN0IG5ld01hcFN0YXRlID0gbWFwU3RhdGVTZXRNYXBTcGxpdE1vZGVVcGRhdGVyKHN0YXRlLm1hcFN0YXRlLCBhY3Rpb24pO1xuXG4gIGxldCBuZXdWaXNTdGF0ZSA9IHsuLi5zdGF0ZS52aXNTdGF0ZX07XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld1Zpc1N0YXRlLFxuICAgICAgICBzcGxpdE1hcHM6IFtdXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIGlmIChwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVApIHtcbiAgICAgICAgbmV3VmlzU3RhdGUgPSB7XG4gICAgICAgICAgLi4ubmV3VmlzU3RhdGUsXG4gICAgICAgICAgc3BsaXRNYXBzOiBjb21wdXRlU3BsaXRNYXBMYXllcnMobmV3VmlzU3RhdGUubGF5ZXJzLCB7XG4gICAgICAgICAgICBkdXBsaWNhdGU6IG1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkVcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgbGV0IG5ld1VpU3RhdGUgPSB1aVN0YXRlVG9nZ2xlU3BsaXRNYXBVcGRhdGVyKHN0YXRlLnVpU3RhdGUpO1xuXG4gIGNvbnN0IGlzU3BsaXQgPSBuZXdWaXNTdGF0ZS5zcGxpdE1hcHMubGVuZ3RoICE9PSAwO1xuICBjb25zdCBpc0xlZ2VuZEFjdGl2ZSA9IG5ld1VpU3RhdGUubWFwQ29udHJvbHM/Lm1hcExlZ2VuZD8uYWN0aXZlO1xuICBpZiAoaXNTcGxpdCAmJiAhaXNMZWdlbmRBY3RpdmUpIHtcbiAgICBuZXdVaVN0YXRlID0gdG9nZ2xlTWFwQ29udHJvbFVwZGF0ZXIobmV3VWlTdGF0ZSwge1xuICAgICAgcGF5bG9hZDoge3BhbmVsSWQ6ICdtYXBMZWdlbmQnLCBpbmRleDogMH1cbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgbWFwU3RhdGU6IG5ld01hcFN0YXRlLFxuICAgIHZpc1N0YXRlOiBuZXdWaXNTdGF0ZSxcbiAgICB1aVN0YXRlOiBuZXdVaVN0YXRlXG4gIH07XG59O1xuXG5jb25zdCBkZWZhdWx0UmVwbGFjZURhdGFUb01hcE9wdGlvbnMgPSB7XG4gIGtlZXBFeGlzdGluZ0NvbmZpZzogdHJ1ZSxcbiAgY2VudGVyTWFwOiB0cnVlLFxuICBhdXRvQ3JlYXRlTGF5ZXJzOiBmYWxzZVxufTtcblxuLyoqXG4gKiBVcGRhdGVyIHJlcGxhY2UgYSBkYXRhc2V0IGluIHN0YXRlXG4gKi9cbmV4cG9ydCBjb25zdCByZXBsYWNlRGF0YUluTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IEtlcGxlckdsU3RhdGUsXG4gIHtwYXlsb2FkfToge3BheWxvYWQ6IFJlcGxhY2VEYXRhSW5NYXBQYXlsb2FkfVxuKTogS2VwbGVyR2xTdGF0ZSA9PiB7XG4gIGNvbnN0IHtkYXRhc2V0VG9SZXBsYWNlSWQsIGRhdGFzZXRUb1VzZSwgb3B0aW9ucyA9IHt9fSA9IHBheWxvYWQ7XG4gIGNvbnN0IGFkZERhdGFUb01hcE9wdGlvbnMgPSB7Li4uZGVmYXVsdFJlcGxhY2VEYXRhVG9NYXBPcHRpb25zLCAuLi5vcHRpb25zfTtcblxuICAvLyBjaGVjayBpZiBkYXRhc2V0IGlzIHRoZXJlXG4gIGlmICghc3RhdGUudmlzU3RhdGUuZGF0YXNldHNbZGF0YXNldFRvUmVwbGFjZUlkXSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICAvLyBkYXRhc2V0VG9Vc2UgaXMgUHJvdG9EYXRhc2V0XG4gIGNvbnN0IGRhdGFJZFRvVXNlID0gZGF0YXNldFRvVXNlLmluZm8uaWQ7XG4gIGlmICghZGF0YUlkVG9Vc2UpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgLy8gcmVtb3ZlIGRhdGFzZXQgYW5kIHB1dCBkZXBlbmRlbmNpZXMgaW4gdG9CZU1lcmdlZFxuICBjb25zdCBwcmVwYXJlZFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIHZpc1N0YXRlOiBwcmVwYXJlU3RhdGVGb3JEYXRhc2V0UmVwbGFjZShzdGF0ZS52aXNTdGF0ZSwgZGF0YXNldFRvUmVwbGFjZUlkLCBkYXRhSWRUb1VzZSlcbiAgfTtcblxuICBjb25zdCBuZXh0U3RhdGUgPSBhZGREYXRhVG9NYXBVcGRhdGVyKFxuICAgIHByZXBhcmVkU3RhdGUsXG4gICAgcGF5bG9hZF8oe1xuICAgICAgZGF0YXNldHM6IGRhdGFzZXRUb1VzZSxcbiAgICAgIC8vIHNob3VsZCB6b29tIHRvIG5ldyBkYXRhc2V0XG4gICAgICBvcHRpb25zOiBhZGREYXRhVG9NYXBPcHRpb25zXG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUdBLElBQUFBLGdCQUFBLEdBQUFDLE9BQUE7QUFPQSxJQUFBQyxpQkFBQSxHQUFBRCxPQUFBO0FBT0EsSUFBQUUsaUJBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLGlCQUFBLEdBQUFILE9BQUE7QUFJQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBY0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsVUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsYUFBQSxHQUFBVCxPQUFBO0FBQXlGLFNBQUFVLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBLElBN0N6RjtBQUNBO0FBc0RBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQU1vQixnQkFBZ0IsR0FBRyxJQUFJO0FBQzdCOztBQUVPLElBQU1DLGFBQWEsR0FBQUMsT0FBQSxDQUFBRCxhQUFBLEdBQUcsU0FBaEJBLGFBQWFBLENBQUdFLE1BQU07RUFBQSxPQUNqQyxJQUFBQyxvQkFBYSxFQUFDRCxNQUFNLENBQUMsSUFBSSxJQUFBQyxvQkFBYSxFQUFDRCxNQUFNLENBQUNBLE1BQU0sQ0FBQyxJQUFJQSxNQUFNLENBQUNFLE9BQU87QUFBQTtBQUVsRSxJQUFNQywwQkFBMEIsR0FBQUosT0FBQSxDQUFBSSwwQkFBQSxHQUFHO0VBQ3hDQyxTQUFTLEVBQUUsSUFBSTtFQUNmQyxrQkFBa0IsRUFBRSxLQUFLO0VBQ3pCQyxnQkFBZ0IsRUFBRSxJQUFJO0VBQ3RCQyxrQkFBa0IsRUFBRTtBQUN0QixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUMsbUJBQW1CLEdBQUFULE9BQUEsQ0FBQVMsbUJBQUEsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUM5QkMsS0FBb0IsRUFBQUMsSUFBQSxFQUVGO0VBQUEsSUFBQUMsVUFBQSxFQUFBQyxXQUFBLEVBQUFDLFdBQUE7RUFBQSxJQURqQkMsT0FBTyxHQUFBSixJQUFBLENBQVBJLE9BQU87RUFFUixJQUFPQyxRQUFRLEdBQWtCRCxPQUFPLENBQWpDQyxRQUFRO0lBQUVmLE1BQU0sR0FBVWMsT0FBTyxDQUF2QmQsTUFBTTtJQUFFZ0IsSUFBSSxHQUFJRixPQUFPLENBQWZFLElBQUk7RUFFN0IsSUFBTUMsT0FBTyxHQUFBNUIsYUFBQSxDQUFBQSxhQUFBLEtBQ1JjLDBCQUEwQixHQUMxQlcsT0FBTyxDQUFDRyxPQUFPLENBQ25COztFQUVEO0VBQ0EsSUFBTUMsb0JBQW9CLEdBQ3hCQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0wsUUFBUSxDQUFDLElBQ3ZCLEVBQUFKLFVBQUEsR0FBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFBSixVQUFBLHVCQUFYQSxVQUFBLENBQWFLLElBQUksQ0FBQ0ssTUFBTSxNQUFLLE9BQU8sTUFBQVQsV0FBQSxHQUNwQ0csUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFBSCxXQUFBLHVCQUFYQSxXQUFBLENBQWFJLElBQUksQ0FBQ00sRUFBRSxLQUNwQixFQUFBVCxXQUFBLEdBQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBQUYsV0FBQSx1QkFBWEEsV0FBQSxDQUFhRyxJQUFJLENBQUNNLEVBQUUsS0FBSWIsS0FBSyxDQUFDYyxRQUFRLENBQUNSLFFBQVE7RUFDakQsSUFBSUcsb0JBQW9CLEVBQUU7SUFDeEIsT0FBTyxJQUFBTSx5QkFBUSxFQUFnQixDQUM3QixJQUFBQyxzQkFBSyxFQUFDLFVBQVUsQ0FBQyxDQUNmLElBQUFDLHVCQUFNLEVBQWdCQyxzQ0FBNEIsRUFBRTtNQUNsRFosUUFBUSxFQUFSQSxRQUFRO01BQ1JFLE9BQU8sRUFBUEEsT0FBTztNQUNQakIsTUFBTSxFQUFOQTtJQUNGLENBQUMsQ0FDSCxDQUFDLENBQ0YsQ0FBQyxDQUFDUyxLQUFLLENBQUM7RUFDWDs7RUFFQTtFQUNBLElBQUltQixZQUEwQixHQUFHNUIsTUFBTTtFQUV2QyxJQUFJRixhQUFhLENBQUNFLE1BQU0sQ0FBQyxFQUFFO0lBQ3pCO0lBQ0E7SUFDQTRCLFlBQVksR0FBR25CLEtBQUssQ0FBQ2MsUUFBUSxDQUFDTSxNQUFNLENBQUNDLGdCQUFnQixDQUFDOUIsTUFBTSxDQUFDO0VBQy9EO0VBQ0EsSUFBTStCLFNBQVMsR0FBR3RCLEtBQUssQ0FBQ2MsUUFBUSxDQUFDUyxNQUFNO0VBQ3ZDLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUlELE1BQWU7SUFBQSxPQUM3Q0EsTUFBTSxDQUFDaEQsTUFBTSxDQUFDLFVBQUFrRCxFQUFFO01BQUEsT0FBSSxDQUFDSCxTQUFTLENBQUNJLElBQUksQ0FBQyxVQUFBQyxFQUFFO1FBQUEsT0FBSUEsRUFBRSxLQUFLRixFQUFFO01BQUEsRUFBQztJQUFBLEVBQUM7RUFBQTs7RUFFdkQ7RUFDQSxJQUFNRyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFJTCxNQUFlLEVBQUs7SUFDbkQsSUFBTU0sTUFBTSxHQUFHckIsT0FBTyxDQUFDYixTQUFTLElBQUksSUFBQW1DLHdCQUFhLEVBQUNQLE1BQU0sQ0FBQztJQUN6RCxPQUFPTSxNQUFNLEdBQUdBLE1BQU0sR0FBR0UsU0FBUztFQUNwQyxDQUFDO0VBRUQsT0FBTyxJQUFBaEIseUJBQVEsRUFBZ0IsQ0FDN0IsSUFBQUMsc0JBQUssRUFBQyxVQUFVLENBQUM7RUFDZjtFQUNBLElBQUFDLHVCQUFNLEVBQWdCQyxzQ0FBNEIsRUFBRTtJQUNsRFosUUFBUSxFQUFSQSxRQUFRO0lBQ1JFLE9BQU8sRUFBUEEsT0FBTztJQUNQakIsTUFBTSxFQUFFNEI7RUFDVixDQUFDLENBQ0gsQ0FBQyxFQUVELElBQUFhLG9CQUFHLEVBQUNDLE9BQU8sQ0FBQzFCLElBQUksQ0FBQyxFQUFFLElBQUFTLHNCQUFLLEVBQUMsVUFBVSxDQUFDLENBQUMsSUFBQUMsdUJBQU0sRUFBZ0JpQixtQ0FBaUIsRUFBRTtJQUFDM0IsSUFBSSxFQUFKQTtFQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDdkY7RUFDQTtFQUNBLElBQUE0QixzQkFBSyxFQUFDLFVBQUFDLEtBQUE7SUFBQSxJQUFFdEIsUUFBUSxHQUFBc0IsS0FBQSxDQUFSdEIsUUFBUTtJQUFBLE9BQ2QsSUFBQUUsc0JBQUssRUFBQyxVQUFVLENBQUMsQ0FDZixJQUFBQyx1QkFBTSxFQUNKb0IseUNBQXFCLEVBQ3JCLElBQUFDLHlCQUFRLEVBQUM7TUFDUC9DLE1BQU0sRUFBRTRCLFlBQVk7TUFDcEJYLE9BQU8sRUFBUEEsT0FBTztNQUNQcUIsTUFBTSxFQUFFRCx1QkFBdUIsQ0FBQ0osc0JBQXNCLENBQUNWLFFBQVEsQ0FBQ1MsTUFBTSxDQUFDO0lBQ3pFLENBQUMsQ0FDSCxDQUNGLENBQUM7RUFBQSxDQUNILENBQUMsRUFDRCxJQUFBUCxzQkFBSyxFQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUFDLHVCQUFNLEVBQUNzQix5Q0FBcUIsRUFBRSxJQUFBRCx5QkFBUSxFQUFDO0lBQUMvQyxNQUFNLEVBQUU0QixZQUFZO0lBQUVYLE9BQU8sRUFBUEE7RUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNGLElBQUFRLHNCQUFLLEVBQUMsU0FBUyxDQUFDLENBQ2QsSUFBQUMsdUJBQU0sRUFBQ3VCLHdDQUE4QixFQUFFLElBQUFGLHlCQUFRLEVBQUM7SUFBQy9DLE1BQU0sRUFBRTRCLFlBQVk7SUFBRVgsT0FBTyxFQUFQQTtFQUFPLENBQUMsQ0FBQyxDQUNsRixDQUFDLEVBQ0QsSUFBQVEsc0JBQUssRUFBQyxTQUFTLENBQUMsQ0FBQyxJQUFBQyx1QkFBTSxFQUFDd0Isd0NBQThCLEVBQUUsSUFBQUgseUJBQVEsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBRXhFLElBQUF0QixzQkFBSyxFQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUFDLHVCQUFNLEVBQUN5QixtQ0FBa0IsRUFBRSxJQUFBSix5QkFBUSxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDNUQsSUFBQXRCLHNCQUFLLEVBQUMsU0FBUyxDQUFDLENBQ2QsSUFBQTJCLHVCQUFNLEVBQ0p4RSxNQUFNLENBQUN5RSxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFDdEMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxHQUNyRDtJQUFDdUMsUUFBUSxFQUFFdkMsT0FBTyxDQUFDdUM7RUFBUSxDQUFDLEdBQzVCLENBQUMsQ0FDUCxDQUNGLENBQUMsQ0FDRixDQUFDLENBQUMvQyxLQUFLLENBQUM7QUFDWCxDQUFDO0FBRU0sSUFBTWdELHVCQUF1QixHQUFBMUQsT0FBQSxDQUFBMEQsdUJBQUEsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUNsQ2hELEtBQW9CLEVBQ3BCaUQsTUFBcUMsRUFDbkI7RUFDbEI7RUFDQSxJQUFNQyxRQUFRLEdBQUcsSUFBQUMsOEJBQWtCLEVBQUNGLE1BQU0sQ0FBQ0csTUFBTSxDQUFDO0VBQ2xELElBQU1DLFNBQVMsR0FBRyxJQUFBdEMseUJBQVEsRUFBQyxDQUN6QixJQUFBQyxzQkFBSyxFQUFDLFVBQVUsQ0FBQyxDQUNmLElBQUEyQix1QkFBTSxFQUFDO0lBQ0xXLFdBQVcsRUFBRSxLQUFLO0lBQ2xCQyxtQkFBbUIsRUFBRSxDQUFDO0VBQ3hCLENBQUMsQ0FDSCxDQUFDLENBQ0YsQ0FBQyxDQUFDdkQsS0FBSyxDQUFDO0VBQ1Q7RUFDQSxJQUFNd0QsYUFBYSxHQUFHLElBQUF6Qyx5QkFBUSxFQUFDbUMsUUFBUSxDQUFDTyxHQUFHLENBQUMsVUFBQUMsQ0FBQztJQUFBLE9BQUksSUFBQXpDLHVCQUFNLEVBQUNsQixtQkFBbUIsRUFBRSxJQUFBdUMseUJBQVEsRUFBQ29CLENBQUMsQ0FBQyxDQUFDO0VBQUEsRUFBQyxDQUFDLENBQ3pGTCxTQUNGLENBQUM7RUFDRCxPQUFPRyxhQUFhO0FBQ3RCLENBQUM7QUFFTSxJQUFNRyxvQkFBb0IsR0FBQXJFLE9BQUEsQ0FBQXFFLG9CQUFBLEdBQUc1RCxtQkFBbUI7O0FBRXZEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTTZELHFCQUFxQixHQUFHLFNBQXhCQSxxQkFBcUJBLENBQUdDLGVBQWU7RUFBQSxPQUFJLFVBQUEvQyxRQUFRLEVBQUk7SUFDM0QsSUFBSUEsUUFBUSxDQUFDK0MsZUFBZSxLQUFLQyw0QkFBaUIsQ0FBQ0MsTUFBTSxDQUFDQyxLQUFLLEVBQUU7TUFDL0QsT0FBQXBGLGFBQUEsQ0FBQUEsYUFBQSxLQUNLa0MsUUFBUTtRQUNYK0MsZUFBZSxFQUFmQTtNQUFlO0lBRW5CO0lBQ0EsT0FBTy9DLFFBQVE7RUFDakIsQ0FBQztBQUFBOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTW1ELHVCQUF1QixHQUMzQixTQURJQSx1QkFBdUJBLENBQzFCQyxrQkFBMkI7RUFBQSxJQUFFQyxPQUFzQixHQUFBdEYsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQWtELFNBQUEsR0FBQWxELFNBQUEsTUFBRyxJQUFJO0VBQUEsT0FDM0QsVUFBQWlDLFFBQVE7SUFBQSxPQUFBbEMsYUFBQSxDQUFBQSxhQUFBLEtBQ0hrQyxRQUFRO01BQ1hTLE1BQU0sRUFBRVQsUUFBUSxDQUFDUyxNQUFNLENBQUNrQyxHQUFHLENBQUMsVUFBQVcsS0FBSyxFQUFJO1FBQ25DLElBQUksQ0FBQ0QsT0FBTyxJQUFJQyxLQUFLLENBQUN2RCxFQUFFLEtBQUtzRCxPQUFPLEVBQUU7VUFDcEMsSUFBSWhHLE1BQU0sQ0FBQ3lFLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNzQixLQUFLLENBQUNDLGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7WUFDdkYsSUFBT0MsU0FBUyxHQUFJRixLQUFLLENBQUM3RSxNQUFNLENBQXpCK0UsU0FBUztZQUNoQixPQUFPRixLQUFLLENBQUNHLGlCQUFpQixDQUFDO2NBQzdCRCxTQUFTLEVBQUExRixhQUFBLENBQUFBLGFBQUEsS0FBTTBGLFNBQVM7Z0JBQUVKLGtCQUFrQixFQUFsQkE7Y0FBa0I7WUFDOUMsQ0FBQyxDQUFDO1VBQ0o7UUFDRjtRQUNBLE9BQU9FLEtBQUs7TUFDZCxDQUFDO0lBQUM7RUFBQSxDQUNGO0FBQUE7O0FBRUo7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLElBQU1JLDZCQUE2QixHQUFBbEYsT0FBQSxDQUFBa0YsNkJBQUEsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUN4Q3hFLEtBQW9CLEVBQ3BCaUQsTUFBbUMsRUFDakI7RUFBQSxJQUFBd0IsZUFBQTtFQUNsQixJQUFPcEUsT0FBTyxHQUFJNEMsTUFBTSxDQUFqQjVDLE9BQU87RUFDZCxJQUFPcUUsUUFBUSxHQUFJMUUsS0FBSyxDQUFqQjBFLFFBQVE7RUFDZixJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBR0MsR0FBRztJQUFBLElBQUFDLHFCQUFBO0lBQUEsUUFBQUEscUJBQUEsR0FBSUgsUUFBUSxDQUFDSSxTQUFTLENBQUNGLEdBQUcsQ0FBQyxjQUFBQyxxQkFBQSx1QkFBdkJBLHFCQUFBLENBQXlCRSxTQUFTO0VBQUE7RUFDOUQsSUFBTUMsYUFBYSxHQUFHTCxZQUFZLENBQUNELFFBQVEsQ0FBQ08sU0FBUyxDQUFDO0VBQ3RELElBQU1DLGFBQWEsR0FBR1AsWUFBWSxDQUFDdEUsT0FBTyxDQUFDNEUsU0FBUyxDQUFDO0VBQ3JELElBQUtuRSxRQUFRLEdBQWNkLEtBQUssQ0FBM0JjLFFBQVE7SUFBRXFFLFFBQVEsR0FBSW5GLEtBQUssQ0FBakJtRixRQUFRO0VBQ3ZCLElBQUlELGFBQWEsS0FBS0YsYUFBYSxFQUFFO0lBQ25DLFFBQVFFLGFBQWE7TUFDbkIsS0FBS0UsK0JBQW9CLENBQUNDLElBQUk7UUFDNUJ2RSxRQUFRLEdBQUcsSUFBQUMseUJBQVEsRUFBQyxDQUNsQjZDLHFCQUFxQixDQUFDRSw0QkFBaUIsQ0FBQ3dCLE1BQU0sQ0FBQ3RCLEtBQUssQ0FBQyxFQUNyREMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQzlCLENBQUMsQ0FBQ25ELFFBQVEsQ0FBQztRQUNaO01BQ0YsS0FBS3NFLCtCQUFvQixDQUFDRyxLQUFLO1FBQzdCekUsUUFBUSxHQUFHLElBQUFDLHlCQUFRLEVBQUMsQ0FDbEI2QyxxQkFBcUIsQ0FBQ0UsNEJBQWlCLENBQUMwQixNQUFNLENBQUN4QixLQUFLLENBQUMsRUFDckRDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUMvQixDQUFDLENBQUNuRCxRQUFRLENBQUM7UUFDWjtNQUNGO01BQ0E7SUFDRjtFQUNGOztFQUVBO0VBQ0EsS0FBQTJELGVBQUEsR0FBSVUsUUFBUSxDQUFDTSxLQUFLLGNBQUFoQixlQUFBLGVBQWRBLGVBQUEsQ0FBZ0JpQixPQUFPLEVBQUU7SUFDM0I7SUFDQSxJQUFJckYsT0FBTyxDQUFDNEUsU0FBUyxLQUFLVSxvQkFBUyxJQUFJakIsUUFBUSxDQUFDTyxTQUFTLEtBQUtVLG9CQUFTLEVBQUU7TUFDdkVSLFFBQVEsR0FBQXZHLGFBQUEsQ0FBQUEsYUFBQSxLQUNIdUcsUUFBUTtRQUNYTSxLQUFLLEVBQUE3RyxhQUFBLENBQUFBLGFBQUEsS0FDQXVHLFFBQVEsQ0FBQ00sS0FBSztVQUNqQmxHLE1BQU0sRUFBQVgsYUFBQSxDQUFBQSxhQUFBLEtBQ0R1RyxRQUFRLENBQUNNLEtBQUssQ0FBQ2xHLE1BQU07WUFDeEJxRyxPQUFPLEVBQUUsSUFBSTtZQUNiQyxNQUFNLEVBQUUsSUFBSTtZQUNaQyxVQUFVLEVBQUUsSUFBSTtZQUNoQkMsS0FBSyxFQUFFO1VBQUk7UUFDWjtNQUNGLEVBQ0Y7SUFDSDtJQUNBWixRQUFRLEdBQUdhLDRCQUE0QixDQUFDYixRQUFRLEVBQUVULFFBQVEsRUFBRXJFLE9BQU8sQ0FBQzRFLFNBQVMsQ0FBQztFQUNoRjtFQUVBLE9BQUFyRyxhQUFBLENBQUFBLGFBQUEsS0FDS29CLEtBQUs7SUFDUmMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JxRSxRQUFRLEVBQVJBLFFBQVE7SUFDUlQsUUFBUSxFQUFFLElBQUF1Qix1Q0FBcUIsRUFBQ3ZCLFFBQVEsRUFBRTtNQUFDckUsT0FBTyxFQUFBekIsYUFBQSxLQUFNeUIsT0FBTztJQUFDLENBQUM7RUFBQztBQUV0RSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVMyRiw0QkFBNEJBLENBQzFDYixRQUFrQixFQUNsQlQsUUFBa0IsRUFDbEJPLFNBQWlCLEVBQ1A7RUFBQSxJQUFBaUIsZ0JBQUE7RUFDVixJQUFJLEdBQUFBLGdCQUFBLEdBQUNmLFFBQVEsQ0FBQ00sS0FBSyxjQUFBUyxnQkFBQSxlQUFkQSxnQkFBQSxDQUFnQlIsT0FBTyxHQUFFO0lBQzVCLE9BQU9QLFFBQVE7RUFDakI7RUFFQSxJQUFNZ0IsWUFBWSxHQUFHekIsUUFBUSxDQUFDSSxTQUFTLENBQUNHLFNBQVMsQ0FBQztFQUNsRCxJQUFNbUIsZUFBZSxHQUFBeEgsYUFBQSxLQUFPdUcsUUFBUSxDQUFDTSxLQUFLLENBQUNsRyxNQUFNLENBQUM7RUFFbEQsSUFBSTBGLFNBQVMsS0FBS1Usb0JBQVMsRUFBRTtJQUMzQlMsZUFBZSxDQUFDUixPQUFPLEdBQUcsS0FBSztJQUMvQlEsZUFBZSxDQUFDUCxNQUFNLEdBQUcsS0FBSztJQUM5Qk8sZUFBZSxDQUFDTixVQUFVLEdBQUcsS0FBSztJQUNsQ00sZUFBZSxDQUFDTCxLQUFLLEdBQUcsS0FBSztJQUM3QkssZUFBZSxDQUFDQyxZQUFZLEdBQUdDLG1DQUFxQixDQUFDQyxtQkFBbUI7SUFDeEVILGVBQWUsQ0FBQ0ksVUFBVSxHQUFHRixtQ0FBcUIsQ0FBQ0cscUJBQXFCO0lBQ3hFTCxlQUFlLENBQUNNLGVBQWUsR0FBR0osbUNBQXFCLENBQUNLLHFCQUFxQjtFQUMvRSxDQUFDLE1BQU07SUFDTCxJQUFNQyxhQUFhLEdBQUdULFlBQVksR0FDOUIsSUFBQVUsc0NBQXdCLEVBQUM1QixTQUFTLEVBQUU7TUFDbEM2QixLQUFLLEVBQUVYLFlBQVksQ0FBQ1csS0FBSztNQUN6QkMsV0FBVyxFQUFFWixZQUFZLENBQUNZO0lBQzVCLENBQUMsQ0FBQztJQUNGO0lBQ0EsSUFBQUYsc0NBQXdCLEVBQUM1QixTQUFTLENBQUM7SUFDdkNtQixlQUFlLENBQUNDLFlBQVksR0FBR08sYUFBYSxDQUFDTCxtQkFBbUI7SUFDaEVILGVBQWUsQ0FBQ0ksVUFBVSxHQUFHSSxhQUFhLENBQUNILHFCQUFxQjtJQUNoRUwsZUFBZSxDQUFDTSxlQUFlLEdBQUdFLGFBQWEsQ0FBQ0QscUJBQXFCO0VBQ3ZFO0VBRUEsT0FBQS9ILGFBQUEsQ0FBQUEsYUFBQSxLQUNLdUcsUUFBUTtJQUNYTSxLQUFLLEVBQUE3RyxhQUFBLENBQUFBLGFBQUEsS0FDQXVHLFFBQVEsQ0FBQ00sS0FBSztNQUNqQmxHLE1BQU0sRUFBRTZHO0lBQWU7RUFDeEI7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTVksNkJBQTZCLEdBQUExSCxPQUFBLENBQUEwSCw2QkFBQSxHQUFHLFNBQWhDQSw2QkFBNkJBLENBQ3hDaEgsS0FBb0IsRUFDcEJpRCxNQUFtRCxFQUNqQztFQUFBLElBQUFnRSxnQkFBQTtFQUNsQixJQUFJOUIsUUFBUSxHQUFHLElBQUErQix1Q0FBcUIsRUFBQ2xILEtBQUssQ0FBQ21GLFFBQVEsRUFBRWxDLE1BQU0sQ0FBQztFQUU1RCxLQUFBZ0UsZ0JBQUEsR0FBSTlCLFFBQVEsQ0FBQ00sS0FBSyxjQUFBd0IsZ0JBQUEsZUFBZEEsZ0JBQUEsQ0FBZ0J2QixPQUFPLEVBQUU7SUFDM0JQLFFBQVEsR0FBR2EsNEJBQTRCLENBQUNiLFFBQVEsRUFBRW5GLEtBQUssQ0FBQzBFLFFBQVEsRUFBRTFFLEtBQUssQ0FBQzBFLFFBQVEsQ0FBQ08sU0FBUyxDQUFDO0VBQzdGO0VBRUEsT0FBQXJHLGFBQUEsQ0FBQUEsYUFBQSxLQUNLb0IsS0FBSztJQUNSbUYsUUFBUSxFQUFSQTtFQUFRO0FBRVosQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTWdDLDhCQUE4QixHQUFBN0gsT0FBQSxDQUFBNkgsOEJBQUEsR0FBRyxTQUFqQ0EsOEJBQThCQSxDQUN6Q25ILEtBQW9CLEVBQ3BCaUQsTUFBb0MsRUFDbEI7RUFDbEIsSUFBS25DLFFBQVEsR0FBSWQsS0FBSyxDQUFqQmMsUUFBUTtFQUNiLElBQU1zRyxhQUFhLEdBQUd0RyxRQUFRLENBQUNTLE1BQU0sQ0FBQzhGLFNBQVMsQ0FBQyxVQUFBakQsS0FBSztJQUFBLE9BQUlBLEtBQUssS0FBS25CLE1BQU0sQ0FBQ3FFLFFBQVE7RUFBQSxFQUFDO0VBQ25GeEcsUUFBUSxHQUFHLElBQUF5Ryx3Q0FBc0IsRUFBQ3pHLFFBQVEsRUFBRW1DLE1BQU0sQ0FBQztFQUNuRCxJQUFNdUUsUUFBUSxHQUFHMUcsUUFBUSxDQUFDUyxNQUFNLENBQUM2RixhQUFhLENBQUM7RUFDL0MsSUFBSWpKLE1BQU0sQ0FBQ3lFLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUMwRSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRW5ELGlCQUFpQixFQUFFLG9CQUFvQixDQUFDLEVBQUU7SUFDM0YsSUFBT0ssUUFBUSxHQUFJMUUsS0FBSyxDQUFqQjBFLFFBQVE7SUFDZixJQUFPSyxTQUFTLEdBQUlMLFFBQVEsQ0FBQ0ksU0FBUyxDQUFDSixRQUFRLENBQUNPLFNBQVMsQ0FBQyxDQUFuREYsU0FBUztJQUNoQixJQUFPYixrQkFBa0IsR0FBSXNELFFBQVEsQ0FBQ2pJLE1BQU0sQ0FBQytFLFNBQVMsQ0FBL0NKLGtCQUFrQjtJQUN6QixRQUFRYSxTQUFTO01BQ2YsS0FBS0ssK0JBQW9CLENBQUNDLElBQUk7UUFDNUIsSUFBSSxDQUFDbkIsa0JBQWtCLEVBQUU7VUFDdkJwRCxRQUFRLEdBQUdtRCx1QkFBdUIsQ0FBQyxJQUFJLEVBQUV1RCxRQUFRLENBQUMzRyxFQUFFLENBQUMsQ0FBQ0MsUUFBUSxDQUFDO1FBQ2pFO1FBQ0E7TUFDRixLQUFLc0UsK0JBQW9CLENBQUNHLEtBQUs7UUFDN0IsSUFBSXJCLGtCQUFrQixFQUFFO1VBQ3RCcEQsUUFBUSxHQUFHbUQsdUJBQXVCLENBQUMsS0FBSyxFQUFFdUQsUUFBUSxDQUFDM0csRUFBRSxDQUFDLENBQUNDLFFBQVEsQ0FBQztRQUNsRTtRQUNBO01BQ0Y7TUFDQTtJQUNGO0VBQ0Y7RUFDQSxPQUFBbEMsYUFBQSxDQUFBQSxhQUFBLEtBQ0tvQixLQUFLO0lBQ1JjLFFBQVEsRUFBUkE7RUFBUTtBQUVaLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sSUFBTTJHLHFCQUFxQixHQUFBbkksT0FBQSxDQUFBbUkscUJBQUEsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUNoQ3pILEtBQW9CLEVBQ3BCaUQsTUFBbUMsRUFDakI7RUFBQSxJQUFBeUUscUJBQUE7RUFDbEIsSUFBTUMsUUFBUSxHQUFBL0ksYUFBQSxDQUFBQSxhQUFBLEtBQ1RvQixLQUFLO0lBQ1JjLFFBQVEsRUFBRSxJQUFBOEcsdUNBQTZCLEVBQUM1SCxLQUFLLENBQUNjLFFBQVEsRUFBRW1DLE1BQU0sQ0FBQztJQUMvRDRFLE9BQU8sRUFBRSxJQUFBQyxzQ0FBNEIsRUFBQzlILEtBQUssQ0FBQzZILE9BQU8sQ0FBQztJQUNwRDFDLFFBQVEsRUFBRSxJQUFBNEMsdUNBQTZCLEVBQUMvSCxLQUFLLENBQUNtRixRQUFRO0VBQUMsRUFDeEQ7RUFFRCxJQUFNNkMsT0FBTyxHQUFHTCxRQUFRLENBQUM3RyxRQUFRLENBQUNtSCxTQUFTLENBQUNuSixNQUFNLEtBQUssQ0FBQztFQUN4RCxJQUFNb0osY0FBYyxJQUFBUixxQkFBQSxHQUFHQyxRQUFRLENBQUNFLE9BQU8sQ0FBQ00sV0FBVyxjQUFBVCxxQkFBQSxnQkFBQUEscUJBQUEsR0FBNUJBLHFCQUFBLENBQThCVSxTQUFTLGNBQUFWLHFCQUFBLHVCQUF2Q0EscUJBQUEsQ0FBeUNXLE1BQU07RUFDdEUsSUFBSUwsT0FBTyxJQUFJLENBQUNFLGNBQWMsRUFBRTtJQUM5QlAsUUFBUSxDQUFDRSxPQUFPLEdBQUcsSUFBQVMsd0NBQXVCLEVBQUNYLFFBQVEsQ0FBQ0UsT0FBTyxFQUFFO01BQzNEeEgsT0FBTyxFQUFFO1FBQUNrSSxPQUFPLEVBQUUsV0FBVztRQUFFQyxLQUFLLEVBQUV2RixNQUFNLENBQUM1QztNQUFPO0lBQ3ZELENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBT3NILFFBQVE7QUFDakIsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDTyxJQUFNYyxzQkFBc0IsR0FBQW5KLE9BQUEsQ0FBQW1KLHNCQUFBLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FDakN6SSxLQUFvQixFQUNwQmlELE1BQW9ELEVBQ2xDO0VBQUEsSUFBQXlGLHFCQUFBO0VBQ2xCLElBQU9DLFlBQVksR0FBSTFGLE1BQU0sQ0FBQzVDLE9BQU8sQ0FBOUJzSSxZQUFZO0VBQ25CLElBQU1DLFFBQVEsR0FBRzVJLEtBQUssQ0FBQ21GLFFBQVEsQ0FBQ3dELFlBQVk7RUFFNUMsSUFBSUEsWUFBWSxLQUFLQyxRQUFRLEVBQUU7SUFDN0IsT0FBTzVJLEtBQUs7RUFDZDtFQUVBLElBQU02SSxXQUFXLEdBQUcsSUFBQUMsd0NBQThCLEVBQUM5SSxLQUFLLENBQUNtRixRQUFRLEVBQUVsQyxNQUFNLENBQUM7RUFFMUUsSUFBSThGLFdBQVcsR0FBQW5LLGFBQUEsS0FBT29CLEtBQUssQ0FBQ2MsUUFBUSxDQUFDO0VBRXJDLFFBQVE2SCxZQUFZO0lBQ2xCLEtBQUtLLHVCQUFZLENBQUNDLFVBQVU7TUFDMUJGLFdBQVcsR0FBQW5LLGFBQUEsQ0FBQUEsYUFBQSxLQUNObUssV0FBVztRQUNkZCxTQUFTLEVBQUU7TUFBRSxFQUNkO01BQ0Q7SUFDRixLQUFLZSx1QkFBWSxDQUFDRSxRQUFRO0lBQzFCLEtBQUtGLHVCQUFZLENBQUNHLGFBQWE7TUFDN0IsSUFBSVAsUUFBUSxLQUFLSSx1QkFBWSxDQUFDQyxVQUFVLEVBQUU7UUFDeENGLFdBQVcsR0FBQW5LLGFBQUEsQ0FBQUEsYUFBQSxLQUNObUssV0FBVztVQUNkZCxTQUFTLEVBQUUsSUFBQW1CLDRCQUFxQixFQUFDTCxXQUFXLENBQUN4SCxNQUFNLEVBQUU7WUFDbkQ4SCxTQUFTLEVBQUVWLFlBQVksS0FBS0ssdUJBQVksQ0FBQ0c7VUFDM0MsQ0FBQztRQUFDLEVBQ0g7TUFDSDtNQUNBO0lBQ0Y7TUFDRTtFQUNKO0VBRUEsSUFBSUcsVUFBVSxHQUFHLElBQUF4QixzQ0FBNEIsRUFBQzlILEtBQUssQ0FBQzZILE9BQU8sQ0FBQztFQUU1RCxJQUFNRyxPQUFPLEdBQUdlLFdBQVcsQ0FBQ2QsU0FBUyxDQUFDbkosTUFBTSxLQUFLLENBQUM7RUFDbEQsSUFBTW9KLGNBQWMsSUFBQVEscUJBQUEsR0FBR1ksVUFBVSxDQUFDbkIsV0FBVyxjQUFBTyxxQkFBQSxnQkFBQUEscUJBQUEsR0FBdEJBLHFCQUFBLENBQXdCTixTQUFTLGNBQUFNLHFCQUFBLHVCQUFqQ0EscUJBQUEsQ0FBbUNMLE1BQU07RUFDaEUsSUFBSUwsT0FBTyxJQUFJLENBQUNFLGNBQWMsRUFBRTtJQUM5Qm9CLFVBQVUsR0FBRyxJQUFBaEIsd0NBQXVCLEVBQUNnQixVQUFVLEVBQUU7TUFDL0NqSixPQUFPLEVBQUU7UUFBQ2tJLE9BQU8sRUFBRSxXQUFXO1FBQUVDLEtBQUssRUFBRTtNQUFDO0lBQzFDLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBQTVKLGFBQUEsQ0FBQUEsYUFBQSxLQUNLb0IsS0FBSztJQUNSbUYsUUFBUSxFQUFFMEQsV0FBVztJQUNyQi9ILFFBQVEsRUFBRWlJLFdBQVc7SUFDckJsQixPQUFPLEVBQUV5QjtFQUFVO0FBRXZCLENBQUM7QUFFRCxJQUFNQyw4QkFBOEIsR0FBRztFQUNyQzNKLGtCQUFrQixFQUFFLElBQUk7RUFDeEJELFNBQVMsRUFBRSxJQUFJO0VBQ2ZFLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ08sSUFBTTJKLHVCQUF1QixHQUFBbEssT0FBQSxDQUFBa0ssdUJBQUEsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUNsQ3hKLEtBQW9CLEVBQUF5SixLQUFBLEVBRUY7RUFBQSxJQURqQnBKLE9BQU8sR0FBQW9KLEtBQUEsQ0FBUHBKLE9BQU87RUFFUixJQUFPcUosa0JBQWtCLEdBQWdDckosT0FBTyxDQUF6RHFKLGtCQUFrQjtJQUFFQyxZQUFZLEdBQWtCdEosT0FBTyxDQUFyQ3NKLFlBQVk7SUFBQUMsZ0JBQUEsR0FBa0J2SixPQUFPLENBQXZCRyxPQUFPO0lBQVBBLE9BQU8sR0FBQW9KLGdCQUFBLGNBQUcsQ0FBQyxDQUFDLEdBQUFBLGdCQUFBO0VBQ3JELElBQU1DLG1CQUFtQixHQUFBakwsYUFBQSxDQUFBQSxhQUFBLEtBQU8ySyw4QkFBOEIsR0FBSy9JLE9BQU8sQ0FBQzs7RUFFM0U7RUFDQSxJQUFJLENBQUNSLEtBQUssQ0FBQ2MsUUFBUSxDQUFDUixRQUFRLENBQUNvSixrQkFBa0IsQ0FBQyxFQUFFO0lBQ2hELE9BQU8xSixLQUFLO0VBQ2Q7RUFDQTtFQUNBLElBQU04SixXQUFXLEdBQUdILFlBQVksQ0FBQ3BKLElBQUksQ0FBQ00sRUFBRTtFQUN4QyxJQUFJLENBQUNpSixXQUFXLEVBQUU7SUFDaEIsT0FBTzlKLEtBQUs7RUFDZDtFQUNBO0VBQ0EsSUFBTStKLGFBQWEsR0FBQW5MLGFBQUEsQ0FBQUEsYUFBQSxLQUNkb0IsS0FBSztJQUNSYyxRQUFRLEVBQUUsSUFBQWtKLCtDQUE2QixFQUFDaEssS0FBSyxDQUFDYyxRQUFRLEVBQUU0SSxrQkFBa0IsRUFBRUksV0FBVztFQUFDLEVBQ3pGO0VBRUQsSUFBTXpHLFNBQVMsR0FBR3RELG1CQUFtQixDQUNuQ2dLLGFBQWEsRUFDYixJQUFBekgseUJBQVEsRUFBQztJQUNQaEMsUUFBUSxFQUFFcUosWUFBWTtJQUN0QjtJQUNBbkosT0FBTyxFQUFFcUo7RUFDWCxDQUFDLENBQ0gsQ0FBQztFQUVELE9BQU94RyxTQUFTO0FBQ2xCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -166,10 +166,11 @@ var updateMapUpdater = exports.updateMapUpdater = function updateMapUpdater(stat
|
|
|
166
166
|
* @public
|
|
167
167
|
*/
|
|
168
168
|
var fitBoundsUpdater = exports.fitBoundsUpdater = function fitBoundsUpdater(state, action) {
|
|
169
|
-
var _state$globe;
|
|
169
|
+
var _action$meta, _state$globe;
|
|
170
170
|
var centerAndZoom = (0, _utils.getCenterAndZoomFromBounds)(action.payload, {
|
|
171
171
|
width: state.width,
|
|
172
|
-
height: state.height
|
|
172
|
+
height: state.height,
|
|
173
|
+
padding: (_action$meta = action.meta) === null || _action$meta === void 0 ? void 0 : _action$meta.padding
|
|
173
174
|
});
|
|
174
175
|
if (!centerAndZoom) {
|
|
175
176
|
// bounds is invalid
|
|
@@ -373,7 +374,10 @@ var receiveMapConfigUpdater = exports.receiveMapConfigUpdater = function receive
|
|
|
373
374
|
// center map will override mapState config
|
|
374
375
|
if (options.centerMap && bounds) {
|
|
375
376
|
mergedState = fitBoundsUpdater(mergedState, {
|
|
376
|
-
payload: bounds
|
|
377
|
+
payload: bounds,
|
|
378
|
+
meta: {
|
|
379
|
+
padding: options.padding
|
|
380
|
+
}
|
|
377
381
|
});
|
|
378
382
|
}
|
|
379
383
|
|
|
@@ -651,4 +655,4 @@ function updateViewport(originalViewport, viewportUpdates) {
|
|
|
651
655
|
}
|
|
652
656
|
return newViewport;
|
|
653
657
|
}
|
|
654
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsIl9zdGF0ZSRnbG9iZSIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsImlzR2xvYmVNb2RlIiwiQm9vbGVhbiIsIk1hdGgiLCJtaW4iLCJtYXgiLCJHTE9CRV9NSU5fWk9PTSIsIkdMT0JFX01BWF9aT09NIiwibmV3U3RhdGUiLCJjZW50ZXIiLCJ0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIiLCJfc3RhdGUkZ2xvYmUyIiwid2FzR2xvYmVFbmFibGVkIiwiTU9ERV8zRCIsInNldE1hcFZpZXdNb2RlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTMiLCJuZXh0U3RhdGUiLCJNT0RFX0dMT0JFIiwiZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyIiwicmVzZXRNYXBDb25maWdVcGRhdGVyIiwiaW5pdGlhbFN0YXRlIiwicmVjZWl2ZU1hcENvbmZpZ1VwZGF0ZXIiLCJfcmVmIiwiX3JlZiRwYXlsb2FkIiwiX3JlZiRwYXlsb2FkJGNvbmZpZyIsIl9yZWYkcGF5bG9hZCRvcHRpb25zIiwib3B0aW9ucyIsIl9yZWYkcGF5bG9hZCRib3VuZHMiLCJib3VuZHMiLCJtYXBTdGF0ZSIsIm1lcmdlZFN0YXRlIiwiZGVlcG1lcmdlIiwiYXJyYXlNZXJnZSIsIl9kZXN0aW5hdGlvbkFycmF5Iiwic291cmNlQXJyYXkiLCJjZW50ZXJNYXAiLCJnZXRNYXBEaW1Gb3JTcGxpdE1hcCIsInRvZ2dsZVNwbGl0TWFwVXBkYXRlciIsIkRVQUxfTUFQIiwic2V0TWFwU3BsaXRNb2RlVXBkYXRlciIsInByZXZNb2RlIiwiU1dJUEVfQ09NUEFSRSIsInNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyIiwicGVyY2VudGFnZSIsImNsYW1wZWQiLCJ0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciIsIm5ld01hcFN0YXRlIiwibGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4IiwiZmluZEluZGV4IiwidiIsImxlZnRWaWV3cG9ydCIsInBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIiwicmlnaHRWaWV3cG9ydCIsInVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyIsInZpZXdwb3J0Qm91bmRzIiwiZ2VvVmlld3BvcnQiLCJNQVBCT1hfVElMRV9TSVpFIiwidmlld3BvcnRCb3VuZHNQb2x5Z29uIiwiYmJveFBvbHlnb24iLCJuZXdTdGF0ZU1heEJvdW5kcyIsIm1heEJvdW5kc1BvbHlnb24iLCJoYXNNYXhCb3VuZHNDaGFuZ2VkIiwiZXZlcnkiLCJ2YWwiLCJpZHgiLCJib29sZWFuV2l0aGluIiwiX2ZpdEJvdW5kcyIsImZpdEJvdW5kcyIsInBpY2siLCJkZWZpbmVkUHJvcHMiLCJvYmoiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjdSIsIl9yZWYyIiwiX3JlZjMiLCJfc2xpY2VkVG9BcnJheTIiLCJrIiwib3JpZ2luYWxWaWV3cG9ydCIsInZpZXdwb3J0VXBkYXRlcyIsIl9nbG9iZSIsIm5ld1ZpZXdwb3J0IiwiaXNHbG9iZSIsIl9uZXdWaWV3cG9ydCRsYXRpdHVkZSIsIkdMT0JFX01BWF9MQVRJVFVERSIsInpvb21BZGp1c3RtZW50IiwibG9nMiIsImNvcyIsIlBJIiwidmFsaWRhdGVCb3VuZHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbWFwLXN0YXRlLXVwZGF0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBnZW9WaWV3cG9ydCBmcm9tICdAbWFwYm94L2dlby12aWV3cG9ydCc7XG5pbXBvcnQge2Jvb2xlYW5XaXRoaW59IGZyb20gJ0B0dXJmL2Jvb2xlYW4td2l0aGluJztcbmltcG9ydCB7YmJveFBvbHlnb259IGZyb20gJ0B0dXJmL2Jib3gtcG9seWdvbic7XG5pbXBvcnQge2ZpdEJvdW5kc30gZnJvbSAnQG1hdGguZ2wvd2ViLW1lcmNhdG9yJztcbmltcG9ydCBkZWVwbWVyZ2UgZnJvbSAnZGVlcG1lcmdlJztcbmltcG9ydCBwaWNrIGZyb20gJ2xvZGFzaC9waWNrJztcblxuaW1wb3J0IHtcbiAgZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMsXG4gIHZhbGlkYXRlQm91bmRzLFxuICBNQVBCT1hfVElMRV9TSVpFLFxuICB2YWxpZGF0ZVZpZXdQb3J0XG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuaW1wb3J0IHtNYXBTdGF0ZUFjdGlvbnMsIFJlY2VpdmVNYXBDb25maWdQYXlsb2FkLCBBY3Rpb25UeXBlc30gZnJvbSAnQGtlcGxlci5nbC9hY3Rpb25zJztcbmltcG9ydCB7TWFwU3RhdGUsIEJvdW5kcywgVmlld3BvcnR9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtNYXBTcGxpdE1vZGUsIE1hcFZpZXdNb2RlLCBERUZBVUxUX0dMT0JFX0NPTkZJRywgR0xPQkVfTUlOX1pPT00sIEdMT0JFX01BWF9aT09NLCBHTE9CRV9NQVhfTEFUSVRVREV9IGZyb20gJ0BrZXBsZXIuZ2wvY29uc3RhbnRzJztcblxuLyoqXG4gKiBVcGRhdGVycyBmb3IgYG1hcFN0YXRlYCByZWR1Y2VyLiBDYW4gYmUgdXNlZCBpbiB5b3VyIHJvb3QgcmVkdWNlciB0byBkaXJlY3RseSBtb2RpZnkga2VwbGVyLmdsJ3Mgc3RhdGUuXG4gKiBSZWFkIG1vcmUgYWJvdXQgW1VzaW5nIHVwZGF0ZXJzXSguLi9hZHZhbmNlZC11c2FnZS91c2luZy11cGRhdGVycy5tZClcbiAqIEBwdWJsaWNcbiAqIEBleGFtcGxlXG4gKlxuICogaW1wb3J0IGtlcGxlckdsUmVkdWNlciwge21hcFN0YXRlVXBkYXRlcnN9IGZyb20gJ0BrZXBsZXIuZ2wvcmVkdWNlcnMnO1xuICogLy8gUm9vdCBSZWR1Y2VyXG4gKiBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gKiAga2VwbGVyR2w6IGtlcGxlckdsUmVkdWNlcixcbiAqICBhcHA6IGFwcFJlZHVjZXJcbiAqIH0pO1xuICpcbiAqIGNvbnN0IGNvbXBvc2VkUmVkdWNlciA9IChzdGF0ZSwgYWN0aW9uKSA9PiB7XG4gKiAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICogICAgLy8gY2xpY2sgYnV0dG9uIHRvIGNsb3NlIHNpZGUgcGFuZWxcbiAqICAgIGNhc2UgJ0NMSUNLX0JVVFRPTic6XG4gKiAgICAgIHJldHVybiB7XG4gKiAgICAgICAgLi4uc3RhdGUsXG4gKiAgICAgICAga2VwbGVyR2w6IHtcbiAqICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLFxuICogICAgICAgICAgZm9vOiB7XG4gKiAgICAgICAgICAgICAuLi5zdGF0ZS5rZXBsZXJHbC5mb28sXG4gKiAgICAgICAgICAgICBtYXBTdGF0ZTogbWFwU3RhdGVVcGRhdGVycy5maXRCb3VuZHNVcGRhdGVyKFxuICogICAgICAgICAgICAgICBtYXBTdGF0ZSwge3BheWxvYWQ6IFsxMjcuMzQsIDMxLjA5LCAxMjcuNTYsIDMxLjU5XV19XG4gKiAgICAgICAgICAgICApXG4gKiAgICAgICAgICB9XG4gKiAgICAgICAgfVxuICogICAgICB9O1xuICogIH1cbiAqICByZXR1cm4gcmVkdWNlcnMoc3RhdGUsIGFjdGlvbik7XG4gKiB9O1xuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGNvbXBvc2VkUmVkdWNlcjtcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8vIEB0cy1pZ25vcmVcbmNvbnN0IG1hcFN0YXRlVXBkYXRlcnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbi8qKlxuICogRGVmYXVsdCBpbml0aWFsIGBtYXBTdGF0ZWBcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAY29uc3RhbnRcbiAqIEBwcm9wZXJ0eSBwaXRjaCBEZWZhdWx0OiBgMGBcbiAqIEBwcm9wZXJ0eSBiZWFyaW5nIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGxhdGl0dWRlIERlZmF1bHQ6IGAzNy43NTA0M2BcbiAqIEBwcm9wZXJ0eSBsb25naXR1ZGUgRGVmYXVsdDogYC0xMjIuMzQ2NzlgXG4gKiBAcHJvcGVydHkgem9vbSBEZWZhdWx0OiBgOWBcbiAqIEBwcm9wZXJ0eSBkcmFnUm90YXRlIERlZmF1bHQ6IGBmYWxzZWBcbiAqIEBwcm9wZXJ0eSB3aWR0aCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IGhlaWdodCBEZWZhdWx0OiBgODAwYFxuICogQHByb3BlcnR5IG1pblpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFpvb206IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IG1heFBpdGNoOiBgdW5kZWZpbmVkYCAoZGVmYXVsdHMgdG8gYXBwbGljYXRpb24gY29uZmlnIHZhbHVlLCBkZWNrLmdsIGRlZmF1bHQgaXMgNjApXG4gKiBAcHJvcGVydHkgbWF4Qm91bmRzOiBgdW5kZWZpbmVkYCxcbiAqIEBwcm9wZXJ0eSBpc1NwbGl0OiBgZmFsc2VgLFxuICogQHByb3BlcnR5IGlzVmlld3BvcnRTeW5jZWQ6IGB0cnVlYCxcbiAqIEBwcm9wZXJ0eSBpc1pvb21Mb2NrZWQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgc3BsaXRNYXBWaWV3cG9ydHM6IGBbXWBcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUFQX1NUQVRFOiBNYXBTdGF0ZSA9IHtcbiAgcGl0Y2g6IDAsXG4gIGJlYXJpbmc6IDAsXG4gIGxhdGl0dWRlOiAzNy43NTA0MyxcbiAgbG9uZ2l0dWRlOiAtMTIyLjM0Njc5LFxuICB6b29tOiA5LFxuICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgd2lkdGg6IDgwMCxcbiAgaGVpZ2h0OiA4MDAsXG4gIG1pblpvb206IHVuZGVmaW5lZCxcbiAgbWF4Wm9vbTogdW5kZWZpbmVkLFxuICBtYXhQaXRjaDogdW5kZWZpbmVkLFxuICBtYXhCb3VuZHM6IHVuZGVmaW5lZCxcbiAgaXNTcGxpdDogZmFsc2UsXG4gIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gIHNwbGl0TWFwVmlld3BvcnRzOiBbXSxcbiAgbWFwVmlld01vZGU6IE1hcFZpZXdNb2RlLk1PREVfMkQsXG4gIGdsb2JlOiB7XG4gICAgZW5hYmxlZDogZmFsc2UsXG4gICAgY29uZmlnOiBERUZBVUxUX0dMT0JFX0NPTkZJR1xuICB9LFxuICBtYXBTcGxpdE1vZGU6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICBzd2lwZUNvbXBhcmVQZXJjZW50YWdlOiA1MFxufTtcblxuLyogVXBkYXRlcnMgKi9cbi8qKlxuICogVXBkYXRlIG1hcCB2aWV3cG9ydFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHVwZGF0ZU1hcFVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuVXBkYXRlTWFwVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7dmlld3BvcnQ6IGlucHV0Vmlld3BvcnQsIG1hcEluZGV4ID0gMH0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3Qgdmlld3BvcnQgPSB2YWxpZGF0ZVZpZXdQb3J0KGlucHV0Vmlld3BvcnQpO1xuXG4gIGlmIChzdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gVGhlIGB1cGRhdGVWaWV3cG9ydGAgZnVuY3Rpb24gaXMgdHlwZWQgYXMgKFZpZXdwb3J0LCBWaWV3cG9ydCkgLT4gVmlld3BvcnQgYnV0IGhlcmUgdGhlXG4gICAgLy8gZXhwZWN0ZWQgdHlwaW5nIGlzIChNYXBTdGF0ZSwgVmlld3BvcnQpIC0+IE1hcFN0YXRlLlxuICAgIC8vIHRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgYnVnIGFzIHdlIHRyZWF0IFZpZXdwb3J0IGFuZCBNYXBTdGF0ZSBhcyBlcXVhbCBzZWVtaW5nbHlcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChzdGF0ZSwgdmlld3BvcnQpO1xuICB9XG5cbiAgbGV0IG90aGVyVmlld3BvcnRNYXBJbmRleCA9IC0xO1xuICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IHN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IG1hcEluZGV4KSB7XG4gICAgICAvLyB1cGRhdGUgdGhlIG1hdGNoaW5nIHZpZXdwb3J0IHdpdGggdGhlIG5ld1ZpZXdwb3J0IGluZm8gaW4gdGhlIGFjdGlvbiBwYXlsb2FkXG4gICAgICByZXR1cm4gdXBkYXRlVmlld3BvcnQoY3VycmVudFZpZXdwb3J0LCB2aWV3cG9ydCk7XG4gICAgfVxuXG4gICAgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gaTtcbiAgICAvLyBtYWtlIG5vIGNoYW5nZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0ICh5ZXQpXG4gICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgfSk7XG5cbiAgLy8gbWFrZSBjb25kaXRpb25hbCB1cGRhdGVzIHRvIHRoZSBvdGhlciB2aWV3cG9ydCBub3QgbWF0Y2hpbmcgdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICBpZiAoTnVtYmVyLmlzRmluaXRlKG90aGVyVmlld3BvcnRNYXBJbmRleCkgJiYgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID4gLTEpIHtcbiAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBhIHNwZWNpYWwgY2FzZSBhbmQgYXJlIGFsd2F5cyB1cGRhdGVkXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICB3aWR0aDogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLndpZHRoLFxuICAgICAgaGVpZ2h0OiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0uaGVpZ2h0XG4gICAgfTtcblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgb3RoZXIgdmlld3BvcnQgd2l0aCB0aGUgbmV3IHpvb20gZnJvbSB0aGUgc3BsaXQgdmlld3BvcnQgdGhhdCB3YXMgdXBkYXRlZCB3aXRoIHRoaXMgcGF5bG9hZCdzIGBtYXBJbmRleGBcbiAgICAgIHNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0gPSB7XG4gICAgICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW290aGVyVmlld3BvcnRNYXBJbmRleF0sXG4gICAgICAgIHpvb206IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS56b29tXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgLy8gdXBkYXRlIHRoZSB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2l0aCB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggc3BsaXQgdmlld3BvcnRcbiAgICAvLyBXSFk/IHRoaXMgYXZvaWRzIHpvb20gYW5kIGJvdW5kcyBcImp1bXBpbmdcIiBkdWUgdG8gYSBcInN0YWxlXCIgdG9wLWxldmVsIG1hcFN0YXRlIHZpZXdwb3J0IHdoZW46XG4gICAgLy8gIDEuIHRvZ2dsaW5nIG9mZiB0aGUgdW5zeW5jZWQgdmlld3BvcnRzIG1vZGUgdG8gc3dpdGNoIHRvIHRoZSBzeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAvLyAgMi4gdG9nZ2xpbmcgb24gdGhlIHpvb20gbG9jayBkdXJpbmcgYW4gdW5zeW5jZWQgdmlld3BvcnRzIG1vZGVcbiAgICAuLi5zdGF0ZSxcbiAgICAuLi5zcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0sXG4gICAgLy8gdXBkYXRlIHRoZSBtYXBTdGF0ZSB3aXRoIHRoZSBuZXcgYXJyYXkgb2Ygc3BsaXQgdmlld3BvcnRzXG4gICAgc3BsaXRNYXBWaWV3cG9ydHNcbiAgfTtcbn07XG5cbi8qKlxuICogRml0IG1hcCB2aWV3cG9ydCB0byBib3VuZHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBmaXRCb3VuZHNVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLkZpdEJvdW5kc1VwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3QgY2VudGVyQW5kWm9vbSA9IGdldENlbnRlckFuZFpvb21Gcm9tQm91bmRzKGFjdGlvbi5wYXlsb2FkLCB7XG4gICAgd2lkdGg6IHN0YXRlLndpZHRoLFxuICAgIGhlaWdodDogc3RhdGUuaGVpZ2h0XG4gIH0pO1xuICBpZiAoIWNlbnRlckFuZFpvb20pIHtcbiAgICAvLyBib3VuZHMgaXMgaW52YWxpZFxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8vIEluIGdsb2JlIG1vZGUsIGNsYW1wIHpvb20gdG8gZ2xvYmUncyBhbGxvd2VkIHJhbmdlXG4gIGNvbnN0IGlzR2xvYmVNb2RlID0gQm9vbGVhbihzdGF0ZS5nbG9iZT8uZW5hYmxlZCk7XG4gIGNvbnN0IHpvb20gPSBOdW1iZXIuaXNGaW5pdGUoY2VudGVyQW5kWm9vbS56b29tKVxuICAgID8gaXNHbG9iZU1vZGVcbiAgICAgID8gTWF0aC5taW4oTWF0aC5tYXgoY2VudGVyQW5kWm9vbS56b29tLCBHTE9CRV9NSU5fWk9PTSksIEdMT0JFX01BWF9aT09NKVxuICAgICAgOiBjZW50ZXJBbmRab29tLnpvb21cbiAgICA6IHVuZGVmaW5lZDtcblxuICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAuLi5zdGF0ZSxcbiAgICBsYXRpdHVkZTogY2VudGVyQW5kWm9vbS5jZW50ZXJbMV0sXG4gICAgbG9uZ2l0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclswXSxcbiAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgIC8vIHRvIGF2b2lkIGNvcnJ1cHQgc3RhdGUgYW5kIHBvdGVudGlhbCBjcmFzaGVzIGFzIHpvb20gaXMgZXhwZWN0ZWQgdG8gYmUgYSBudW1iZXJcbiAgICAuLi4oem9vbSAhPT0gdW5kZWZpbmVkID8ge3pvb219IDoge30pXG4gIH07XG5cbiAgLy8gaWYgZml0dGluZyB0byBib3VuZHMgd2hpbGUgc3BsaXQgYW5kIHVuc3luY2VkXG4gIC8vIGNvcHkgdGhlIG5ldyBsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbmQgem9vbSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBsYXRpdHVkZTogbmV3U3RhdGUubGF0aXR1ZGUsXG4gICAgICBsb25naXR1ZGU6IG5ld1N0YXRlLmxvbmdpdHVkZSxcbiAgICAgIHpvb206IG5ld1N0YXRlLnpvb21cbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV3U3RhdGU7XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIDNkIGFuZCAyZCBtYXAuXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlUGVyc3BlY3RpdmVVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+IHtcbiAgLy8gT25seSBkcm9wIG1pbi9tYXhab29tIHdoZW4gd2UncmUgYWN0dWFsbHkgbGVhdmluZyBnbG9iZSBtb2RlLCB3aGVyZSB0aG9zZVxuICAvLyBib3VuZHMgYXJlIHNldCB0byBnbG9iZS1vbmx5IHZhbHVlcy4gSWYgZ2xvYmUgd2FzIG5ldmVyIGVuYWJsZWQgdGhlc2UgYXJlXG4gIC8vIHRoZSBhcHAncyBvd24gY3VzdG9tIGJvdW5kcyBhbmQgbXVzdCBiZSBwcmVzZXJ2ZWQuXG4gIGNvbnN0IHdhc0dsb2JlRW5hYmxlZCA9IEJvb2xlYW4oc3RhdGUuZ2xvYmU/LmVuYWJsZWQpO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLntcbiAgICAgIHBpdGNoOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDUwLFxuICAgICAgYmVhcmluZzogc3RhdGUuZHJhZ1JvdGF0ZSA/IDAgOiAyNFxuICAgIH0sXG4gICAgZHJhZ1JvdGF0ZTogIXN0YXRlLmRyYWdSb3RhdGUsXG4gICAgbWFwVmlld01vZGU6IHN0YXRlLmRyYWdSb3RhdGUgPyBNYXBWaWV3TW9kZS5NT0RFXzJEIDogTWFwVmlld01vZGUuTU9ERV8zRCxcbiAgICBnbG9iZTogey4uLnN0YXRlLmdsb2JlISwgZW5hYmxlZDogZmFsc2V9LFxuICAgIC8vIExlYXZpbmcgZ2xvYmUgbW9kZTogZHJvcCBnbG9iZS1vbmx5IHpvb20gYm91bmRzIHNvIHRoZSBmbGF0IG1hcCAoYW5kXG4gICAgLy8gY29uc3VtZXJzIG9mIG1hcFN0YXRlIHN1Y2ggYXMgdmlkZW8gZXhwb3J0KSBhcmVuJ3QgbGVmdCBjbGFtcGVkLiBXaGVuXG4gICAgLy8gZ2xvYmUgd2FzIG5ldmVyIG9uLCBrZWVwIHdoYXRldmVyIG1pbi9tYXhab29tIHRoZSBhcHAgY29uZmlndXJlZC5cbiAgICAuLi4od2FzR2xvYmVFbmFibGVkID8ge21pblpvb206IHVuZGVmaW5lZCwgbWF4Wm9vbTogdW5kZWZpbmVkfSA6IHt9KVxuICB9O1xuXG4gIC8vIGlmIHRvZ2dsaW5nIDNkIGFuZCAyZCB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IHBpdGNoLCBiZWFyaW5nLCBhbmQgZHJhZ1JvdGF0ZSB2YWx1ZXMgdG8gZWFjaCBzcGxpdCB2aWV3cG9ydFxuICBpZiAobmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubGVuZ3RoKSB7XG4gICAgbmV3U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBwaXRjaDogbmV3U3RhdGUucGl0Y2gsXG4gICAgICBiZWFyaW5nOiBuZXdTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV3U3RhdGUuZHJhZ1JvdGF0ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogU2V0IG1hcCB2aWV3IG1vZGUgKDJELCAzRCwgR2xvYmUpXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwVmlld01vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFZpZXdNb2RlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7bWFwVmlld01vZGV9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGxldCBuZXh0U3RhdGU6IE1hcFN0YXRlO1xuXG4gIC8vIE9ubHkgY2xlYXIgbWluL21heFpvb20gd2hlbiBsZWF2aW5nIGdsb2JlIG1vZGUgKHdoZXJlIHRoZXkgaG9sZCBnbG9iZS1vbmx5XG4gIC8vIGJvdW5kcykuIE90aGVyd2lzZSBwcmVzZXJ2ZSB0aGUgYXBwJ3MgY3VzdG9tIGJvdW5kcy5cbiAgY29uc3Qgd2FzR2xvYmVFbmFibGVkID0gQm9vbGVhbihzdGF0ZS5nbG9iZT8uZW5hYmxlZCk7XG5cbiAgc3dpdGNoIChtYXBWaWV3TW9kZSkge1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV8yRDpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiBmYWxzZX0sXG4gICAgICAgIHBpdGNoOiAwLFxuICAgICAgICBiZWFyaW5nOiAwLFxuICAgICAgICBkcmFnUm90YXRlOiBmYWxzZSxcbiAgICAgICAgLy8gQ2xlYXIgdGhlIGdsb2JlLW9ubHkgem9vbSBib3VuZHMgc28gdGhlIGZsYXQgbWFwIChhbmQgYW55dGhpbmcgdGhhdFxuICAgICAgICAvLyByZWFkcyBtYXBTdGF0ZSwgZS5nLiB2aWRlbyBleHBvcnQpIGlzIG5vdCBsZWZ0IHdpdGggZ2xvYmUnc1xuICAgICAgICAvLyBtaW4vbWF4Wm9vbSBhZnRlciBsZWF2aW5nIGdsb2JlIG1vZGUuIE9ubHkgd2hlbiBnbG9iZSB3YXMgYWN0dWFsbHkgb24uXG4gICAgICAgIC4uLih3YXNHbG9iZUVuYWJsZWQgPyB7bWluWm9vbTogdW5kZWZpbmVkLCBtYXhab29tOiB1bmRlZmluZWR9IDoge30pLFxuICAgICAgICBtYXBWaWV3TW9kZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV8zRDpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiBmYWxzZX0sXG4gICAgICAgIHBpdGNoOiA1MCxcbiAgICAgICAgYmVhcmluZzogMjQsXG4gICAgICAgIGRyYWdSb3RhdGU6IHRydWUsXG4gICAgICAgIC4uLih3YXNHbG9iZUVuYWJsZWQgPyB7bWluWm9vbTogdW5kZWZpbmVkLCBtYXhab29tOiB1bmRlZmluZWR9IDoge30pLFxuICAgICAgICBtYXBWaWV3TW9kZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgTWFwVmlld01vZGUuTU9ERV9HTE9CRTpcbiAgICAgIG5leHRTdGF0ZSA9IHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiB0cnVlfSxcbiAgICAgICAgZHJhZ1JvdGF0ZTogdHJ1ZSxcbiAgICAgICAgcGl0Y2g6IDAsXG4gICAgICAgIGJlYXJpbmc6IDAsXG4gICAgICAgIC8vIEFsbG93IHpvb21pbmcgb3V0IGZ1cnRoZXIgdGhhbiB0aGUgZGVmYXVsdCBzbyB0aGUgd2hvbGUgZ2xvYmUgY2FuIGJlXG4gICAgICAgIC8vIHB1bGxlZCBiYWNrIG9uIHNjcmVlbi4gQ2FwIHRoZSBtYXggem9vbSBzbyB0aGUgYmFzZW1hcCB0aWxlcyBzdGF5XG4gICAgICAgIC8vIGNvaGVyZW50ICh0aGV5IGJyZWFrIGRvd24gYXQgaGlnaCBnbG9iZSB6b29tIGluIGRlY2suZ2wgOS54KS5cbiAgICAgICAgbWluWm9vbTogR0xPQkVfTUlOX1pPT00sXG4gICAgICAgIG1heFpvb206IEdMT0JFX01BWF9aT09NLFxuICAgICAgICB6b29tOiBNYXRoLm1pbihNYXRoLm1heChzdGF0ZS56b29tLCBHTE9CRV9NSU5fWk9PTSksIEdMT0JFX01BWF9aT09NKSxcbiAgICAgICAgbWFwVmlld01vZGVcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgaWYgKG5leHRTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXh0U3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKGN1cnJlbnRWaWV3cG9ydCA9PiAoe1xuICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgcGl0Y2g6IG5leHRTdGF0ZS5waXRjaCxcbiAgICAgIGJlYXJpbmc6IG5leHRTdGF0ZS5iZWFyaW5nLFxuICAgICAgZHJhZ1JvdGF0ZTogbmV4dFN0YXRlLmRyYWdSb3RhdGVcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gbmV4dFN0YXRlO1xufTtcblxuLyoqXG4gKiBVcGRhdGUgZ2xvYmUgY29uZmlnXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgZ2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLkdsb2JlQ29uZmlnQ2hhbmdlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIGdsb2JlOiB7XG4gICAgICAuLi5zdGF0ZS5nbG9iZSEsXG4gICAgICBjb25maWc6IHtcbiAgICAgICAgLi4uc3RhdGUuZ2xvYmUhLmNvbmZpZyxcbiAgICAgICAgLi4uYWN0aW9uLnBheWxvYWRcbiAgICAgIH1cbiAgICB9XG4gIH07XG59O1xuXG4vKipcbiAqIHJlc2V0IG1hcFN0YXRlIHRvIGluaXRpYWwgU3RhdGVcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE1hcENvbmZpZ1VwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4gKHtcbiAgLi4uSU5JVElBTF9NQVBfU1RBVEUsXG4gIC4uLnN0YXRlLmluaXRpYWxTdGF0ZSxcbiAgaW5pdGlhbFN0YXRlOiBzdGF0ZS5pbml0aWFsU3RhdGVcbn0pO1xuXG4vLyBjb25zaWRlciBjYXNlIHdoZXJlIHlvdSBoYXZlIGEgc3BsaXQgbWFwIGFuZCB1c2VyIHdhbnRzIHRvIHJlc2V0XG4vKipcbiAqIFVwZGF0ZSBgbWFwU3RhdGVgIHRvIHByb3BhZ2F0ZSBhIG5ldyBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZWNlaXZlTWFwQ29uZmlnVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHBheWxvYWQ6IHtjb25maWcgPSB7fSwgb3B0aW9ucyA9IHt9LCBib3VuZHMgPSBudWxsfVxuICB9OiB7XG4gICAgdHlwZT86IHR5cGVvZiBBY3Rpb25UeXBlcy5SRUNFSVZFX01BUF9DT05GSUc7XG4gICAgcGF5bG9hZDogUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQ7XG4gIH1cbik6IE1hcFN0YXRlID0+IHtcbiAgLyoqXG4gICAqIEB0eXBlIHtQYXJ0aWFsPE1hcFN0YXRlPn1cbiAgICovXG4gIGNvbnN0IG1hcFN0YXRlID0gKGNvbmZpZyB8fCB7fSkubWFwU3RhdGUgfHwge307XG4gIC8vIG1lcmdlZCByZWNlaXZlZCBtYXBTdGF0ZSB3aXRoIHByZXZpb3VzIHN0YXRlXG4gIC8vIHN0YXRlIGFsc28gbWF5IGluY2x1ZGUgcHJvcGVydGllcyB0aGF0IGFyZSBuZXcgdG8gYW4gZXhpc3RpbmcsIHNhdmVkIHByb2plY3QncyBtYXBTdGF0ZVxuXG4gIGxldCBtZXJnZWRTdGF0ZSA9IGRlZXBtZXJnZTxNYXBTdGF0ZT4oc3RhdGUsIG1hcFN0YXRlLCB7XG4gICAgLy8gbm90ZTogZGVlcG1lcmdlIGJ5IGRlZmF1bHQgd2lsbCBtZXJnZSBhcnJheXMgYnkgY29uY2F0ZW5hdGluZyB0aGVtXG4gICAgLy8gYnV0IHdlIG5lZWQgdG8gb3ZlcndyaXRlIGRlc3RpbmF0aW9uIGFycmF5cyB3aXRoIHNvdXJjZSBhcnJheXMsIGlmIHByZXNlbnRcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vVGVoU2hyaWtlL2RlZXBtZXJnZSNhcnJheW1lcmdlLWV4YW1wbGUtb3ZlcndyaXRlLXRhcmdldC1hcnJheVxuICAgIGFycmF5TWVyZ2U6IChfZGVzdGluYXRpb25BcnJheSwgc291cmNlQXJyYXkpID0+IHNvdXJjZUFycmF5XG4gIH0pO1xuXG4gIC8vIGlmIGNlbnRlciBtYXBcbiAgLy8gY2VudGVyIG1hcCB3aWxsIG92ZXJyaWRlIG1hcFN0YXRlIGNvbmZpZ1xuICBpZiAob3B0aW9ucy5jZW50ZXJNYXAgJiYgYm91bmRzKSB7XG4gICAgbWVyZ2VkU3RhdGUgPSBmaXRCb3VuZHNVcGRhdGVyKG1lcmdlZFN0YXRlLCB7XG4gICAgICBwYXlsb2FkOiBib3VuZHNcbiAgICB9KTtcbiAgfVxuXG4gIC8vIG1ha2Ugc3VyZSB3ZSB2YWxpZGF0ZSBtYXAgc3RhdGUgYmVmb3JlIHdlIG1lcmdlXG4gIG1lcmdlZFN0YXRlID0gdmFsaWRhdGVWaWV3UG9ydChtZXJnZWRTdGF0ZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5tZXJnZWRTdGF0ZSxcbiAgICAvLyB1cGRhdGUgd2lkdGggaWYgYGlzU3BsaXRgIGhhcyBjaGFuZ2VkXG4gICAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAobWVyZ2VkU3RhdGUuaXNTcGxpdCwgc3RhdGUpXG4gIH07XG59O1xuXG4vKipcbiAqIFRvZ2dsZSBiZXR3ZWVuIG9uZSBvciBzcGxpdCBtYXBzXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdG9nZ2xlU3BsaXRNYXBVcGRhdGVyID0gKHN0YXRlOiBNYXBTdGF0ZSk6IE1hcFN0YXRlID0+ICh7XG4gIC4uLnN0YXRlLFxuICAuLi5nZXRNYXBEaW1Gb3JTcGxpdE1hcCghc3RhdGUuaXNTcGxpdCwgc3RhdGUpLFxuICBpc1NwbGl0OiAhc3RhdGUuaXNTcGxpdCxcbiAgbWFwU3BsaXRNb2RlOiAhc3RhdGUuaXNTcGxpdCA/IE1hcFNwbGl0TW9kZS5EVUFMX01BUCA6IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQLFxuICAuLi4oIXN0YXRlLmlzU3BsaXQgPT09IGZhbHNlXG4gICAgPyB7XG4gICAgICAgIC8vIGlmIHRvZ2dsaW5nIHRvIG5vIGxvbmdlciBzcGxpdCAoc2luZ2xlIG1vZGUpIHRoZW4gcmVzZXQgYSBmZXcgcHJvcGVydGllc1xuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH1cbiAgICA6IHt9KVxufSk7XG5cbi8qKlxuICogU2V0IHRoZSBtYXAgc3BsaXQgbW9kZSAoc2luZ2xlLCBkdWFsLCBvciBzd2lwZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBTcGxpdE1vZGVVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldE1hcFNwbGl0TW9kZVVwZGF0ZXJBY3Rpb25cbik6IE1hcFN0YXRlID0+IHtcbiAgY29uc3Qge21hcFNwbGl0TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgcHJldk1vZGUgPSBzdGF0ZS5tYXBTcGxpdE1vZGU7XG5cbiAgaWYgKG1hcFNwbGl0TW9kZSA9PT0gcHJldk1vZGUpIHtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBzd2l0Y2ggKG1hcFNwbGl0TW9kZSkge1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiBmYWxzZSxcbiAgICAgICAgLi4uKHByZXZNb2RlID09PSBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAqIDJcbiAgICAgICAgfSksXG4gICAgICAgIGlzVmlld3BvcnRTeW5jZWQ6IHRydWUsXG4gICAgICAgIGlzWm9vbUxvY2tlZDogZmFsc2UsXG4gICAgICAgIHNwbGl0TWFwVmlld3BvcnRzOiBbXVxuICAgICAgfTtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5EVUFMX01BUDpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSksXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUgJiYge1xuICAgICAgICAgIHdpZHRoOiBzdGF0ZS53aWR0aCAvIDJcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRTpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtYXBTcGxpdE1vZGUsXG4gICAgICAgIGlzU3BsaXQ6IHRydWUsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuLyoqXG4gKiBTZXQgdGhlIHN3aXBlIGNvbXBhcmUgcGVyY2VudGFnZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlNldFN3aXBlQ29tcGFyZVBlcmNlbnRhZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHtwZXJjZW50YWdlfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5taW4oMTAwLCBNYXRoLm1heCgwLCBwZXJjZW50YWdlKSk7XG4gIGlmIChjbGFtcGVkID09PSBzdGF0ZS5zd2lwZUNvbXBhcmVQZXJjZW50YWdlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgc3dpcGVDb21wYXJlUGVyY2VudGFnZTogY2xhbXBlZFxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBsb2NrZWQgYW5kIHVubG9ja2VkIHNwbGl0IHZpZXdwb3J0c1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIGFjdGlvbjogTWFwU3RhdGVBY3Rpb25zLlRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyQWN0aW9uXG4pID0+IHtcbiAgLy8gU3dpcGUgbW9kZSBhbHdheXMgdXNlcyBzeW5jZWQgdmlld3BvcnRzXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gbmV3IG1hcCBzdGF0ZSBpbW1lZGlhdGVseSBnZXRzIHRoZSBuZXcsIG9wdGlvbmFsIHBheWxvYWQgdmFsdWVzIGZvciBpc1ZpZXdwb3J0U3luY2VkIGFuZC9vciBpc1pvb21Mb2NrZWRcbiAgY29uc3QgbmV3TWFwU3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4uKGFjdGlvbi5wYXlsb2FkIHx8IHt9KVxuICB9O1xuXG4gIGlmIChuZXdNYXBTdGF0ZS5pc1ZpZXdwb3J0U3luY2VkKSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gdW5zeW5jZWQgdG8gc3luY2VkIHZpZXdwb3J0c1xuICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gW107XG4gIH0gZWxzZSB7XG4gICAgLy8gc3dpdGNoaW5nIGZyb20gc3luY2VkIHRvIHVuc3luY2VkIHZpZXdwb3J0c1xuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgdG9nZ2xpbmcgbG9ja2VkIHpvb21cblxuICAgIGlmIChzdGF0ZS5pc1pvb21Mb2NrZWQgJiYgIW5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9mZiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gZG9uJ3QgY29weSB0aGUgbWFwU3RhdGVzIHRvIGxlZnQgYW5kIHJpZ2h0IHZpZXdwb3J0cyBiZWNhdXNlIHRoZXJlIHdpbGwgYmUgem9vbSBcImp1bXBpbmdcIlxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIGlmICghc3RhdGUuaXNab29tTG9ja2VkICYmIG5ld01hcFN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gc3dpdGNoaW5nIG9uIGxvY2tlZCB6b29tIHdoaWxlIHVuc3luY2VkXG4gICAgICAvLyBvbmx5IGNvcHkgem9vbSB2aWV3cG9ydCBwcm9wZXJ0eSBmcm9tIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCB2aWV3cG9ydCB0byB0aGUgb3RoZXJcbiAgICAgIC8vIFRPRE86IGRvIHdlIHdhbnQgdG8gY2hlY2sgZm9yIGEgbWF0Y2ggYSBkaWZmZXJlbnQgd2F5LCBzdWNoIGFzIGEgY29tYm8gb2YgYGxhdGl0dWRlYCBhbmQgYGxvbmdpdHVkZWA/XG4gICAgICBjb25zdCBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXggPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5maW5kSW5kZXgoXG4gICAgICAgIHYgPT4gbmV3TWFwU3RhdGUuem9vbSA9PT0gdi56b29tXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzcGxpdE1hcFZpZXdwb3J0cyA9IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcCgoY3VycmVudFZpZXdwb3J0LCBpKSA9PiB7XG4gICAgICAgIGlmIChpID09PSBsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgpIHtcbiAgICAgICAgICAvLyBubyB6b29tIHRvIG1vZGlmeSBoZXJlXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRWaWV3cG9ydDtcbiAgICAgICAgfVxuICAgICAgICAvLyB0aGUgb3RoZXIgdmlld3BvcnQgZ2V0cyB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQncyB6b29tXG4gICAgICAgIC8vIFdIWT8gdGhlIHZpZXdwb3J0IHRoZSB1c2VyIHdhcyBsYXN0IGludGVyYWN0aW5nIHdpdGggd2lsbCBzZXQgem9vbSBhY3Jvc3MgdGhlIGJvYXJkIGZvciBzbW9vdGggVVhcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICAgICAgem9vbTogbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHNbbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4XS56b29tXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBzcGxpdE1hcFZpZXdwb3J0cztcblxuICAgICAgcmV0dXJuIG5ld01hcFN0YXRlO1xuICAgIH1cblxuICAgIC8vIGlmIGN1cnJlbnQgdmlld3BvcnQgaXMgc3luY2VkLCBhbmQgd2UgYXJlIHVuc3luY2luZyBpdFxuICAgIC8vIG9yIGFscmVhZHkgaW4gdW5zeW5jZWQgbW9kZSBhbmQgTk9UIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG4gICAgLy8gbWFrZSBhIGZyZXNoIGNvcHkgb2YgdGhlIGN1cnJlbnQgdmlld3BvcnQgb2JqZWN0LCBhc3NpZ24gaXQgdG8gc3BsaXRNYXBWaWV3cG9ydHNbXVxuICAgIC8vIHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlIGlzIGNhbGxlZCB0d2ljZSB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBjb25mbGljdHNcbiAgICBjb25zdCBsZWZ0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgY29uc3QgcmlnaHRWaWV3cG9ydCA9IHBpY2tWaWV3cG9ydFByb3BzRnJvbU1hcFN0YXRlKG5ld01hcFN0YXRlKTtcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtsZWZ0Vmlld3BvcnQsIHJpZ2h0Vmlld3BvcnRdO1xuICB9XG5cbiAgLy8gcmV0dXJuIG5ldyBzdGF0ZVxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59O1xuXG4vLyBIZWxwZXJzXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWFwRGltRm9yU3BsaXRNYXAoaXNTcGxpdCwgc3RhdGUpIHtcbiAgLy8gY2FzZXM6XG4gIC8vIDEuIHN0YXRlIHNwbGl0OiB0cnVlIC0gaXNTcGxpdDogdHJ1ZVxuICAvLyBkbyBub3RoaW5nXG4gIC8vIDIuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IGZhbHNlXG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHN0YXRlLmlzU3BsaXQgPT09IGlzU3BsaXQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvLyBJbiBzd2lwZSBtb2RlLCBib3RoIG1hcHMgdXNlIGZ1bGwgd2lkdGggKG92ZXJsYXBwaW5nIHdpdGggY2xpcClcbiAgaWYgKHN0YXRlLm1hcFNwbGl0TW9kZSA9PT0gTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCB3aWR0aCA9XG4gICAgc3RhdGUuaXNTcGxpdCAmJiAhaXNTcGxpdFxuICAgICAgPyAvLyAzLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IGZhbHNlXG4gICAgICAgIC8vIGRvdWJsZSB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAqIDJcbiAgICAgIDogLy8gNC4gc3RhdGUgc3BsaXQ6IGZhbHNlIC0gaXNTcGxpdDogdHJ1ZVxuICAgICAgICAvLyBzcGxpdCB3aWR0aFxuICAgICAgICBzdGF0ZS53aWR0aCAvIDI7XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aFxuICB9O1xufVxuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydEJhc2VkT25Cb3VuZHMoc3RhdGU6IE1hcFN0YXRlLCBuZXdNYXBTdGF0ZTogTWFwU3RhdGUpIHtcbiAgLy8gR2V0IHRoZSBuZXcgdmlld3BvcnQgYm91bmRzXG4gIGNvbnN0IHZpZXdwb3J0Qm91bmRzID0gZ2VvVmlld3BvcnQuYm91bmRzKFxuICAgIFtuZXdNYXBTdGF0ZS5sb25naXR1ZGUsIG5ld01hcFN0YXRlLmxhdGl0dWRlXSxcbiAgICBuZXdNYXBTdGF0ZS56b29tLFxuICAgIFtuZXdNYXBTdGF0ZS53aWR0aCwgbmV3TWFwU3RhdGUuaGVpZ2h0XSxcbiAgICBNQVBCT1hfVElMRV9TSVpFXG4gICk7XG4gIC8vIEdlbmVyYXRlIHR1cmYgUG9seWdvbiBmcm9tIGJvdW5kcyBmb3IgY29tcGFyaXNvblxuICBjb25zdCB2aWV3cG9ydEJvdW5kc1BvbHlnb24gPSBiYm94UG9seWdvbih2aWV3cG9ydEJvdW5kcyk7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbmV3U3RhdGVNYXhCb3VuZHM6IEJvdW5kcyA9IG5ld01hcFN0YXRlLm1heEJvdW5kcztcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBtYXhCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24obmV3U3RhdGVNYXhCb3VuZHMpO1xuXG4gIC8vIElmIG1heEJvdW5kcyBoYXMgY2hhbmdlZCByZXNldCB0aGUgdmlld3BvcnQgdG8gc25hcCB0byBib3VuZHNcbiAgY29uc3QgaGFzTWF4Qm91bmRzQ2hhbmdlZCA9XG4gICAgIXN0YXRlLm1heEJvdW5kcyB8fCAhc3RhdGUubWF4Qm91bmRzLmV2ZXJ5KCh2YWwsIGlkeCkgPT4gdmFsID09PSBuZXdTdGF0ZU1heEJvdW5kc1tpZHhdKTtcbiAgaWYgKGhhc01heEJvdW5kc0NoYW5nZWQpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICAgIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgICBjb25zdCB7bGF0aXR1ZGUsIGxvbmdpdHVkZSwgem9vbX0gPSBmaXRCb3VuZHMoe1xuICAgICAgICB3aWR0aDogbmV3TWFwU3RhdGUud2lkdGgsXG4gICAgICAgIGhlaWdodDogbmV3TWFwU3RhdGUuaGVpZ2h0LFxuICAgICAgICBib3VuZHM6IFtcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMF0sIG5ld1N0YXRlTWF4Qm91bmRzWzFdXSxcbiAgICAgICAgICBbbmV3U3RhdGVNYXhCb3VuZHNbMl0sIG5ld1N0YXRlTWF4Qm91bmRzWzNdXVxuICAgICAgICBdXG4gICAgICB9KTtcblxuICAgICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAgIC4uLm5ld01hcFN0YXRlLFxuICAgICAgICBsYXRpdHVkZSxcbiAgICAgICAgbG9uZ2l0dWRlLFxuICAgICAgICAvLyBGb3IgbWFyZ2luYWwgb3IgaW52YWxpZCBib3VuZHMsIHpvb20gbWF5IGJlIE5hTi4gTWFrZSBzdXJlIHRvIHByb3ZpZGUgYSB2YWxpZCB2YWx1ZSBpbiBvcmRlclxuICAgICAgICAvLyB0byBhdm9pZCBjb3JydXB0IHN0YXRlIGFuZCBwb3RlbnRpYWwgY3Jhc2hlcyBhcyB6b29tIGlzIGV4cGVjdGVkIHRvIGJlIGEgbnVtYmVyXG4gICAgICAgIC4uLihOdW1iZXIuaXNGaW5pdGUoem9vbSkgPyB7em9vbX0gOiB7fSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHRoZSBuZXdNYXBTdGF0ZSB2aWV3cG9ydCBpcyB3aXRoaW4gbWF4Qm91bmRzXG4gIGlmICghYm9vbGVhbldpdGhpbih2aWV3cG9ydEJvdW5kc1BvbHlnb24sIG1heEJvdW5kc1BvbHlnb24pKSB7XG4gICAgbmV3TWFwU3RhdGUgPSB7XG4gICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgIGxvbmdpdHVkZTogc3RhdGUubG9uZ2l0dWRlLFxuICAgICAgbGF0aXR1ZGU6IHN0YXRlLmxhdGl0dWRlLFxuICAgICAgem9vbTogc3RhdGUuem9vbVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gbmV3TWFwU3RhdGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShzdGF0ZTogTWFwU3RhdGUpOiBWaWV3cG9ydCB7XG4gIHJldHVybiBwaWNrKHN0YXRlLCBbXG4gICAgJ3dpZHRoJyxcbiAgICAnaGVpZ2h0JyxcbiAgICAnem9vbScsXG4gICAgJ3BpdGNoJyxcbiAgICAnYmVhcmluZycsXG4gICAgJ2xhdGl0dWRlJyxcbiAgICAnbG9uZ2l0dWRlJyxcbiAgICAnZHJhZ1JvdGF0ZScsXG4gICAgJ21pblpvb20nLFxuICAgICdtYXhab29tJyxcbiAgICAnbWF4UGl0Y2gnLFxuICAgICdtYXhCb3VuZHMnXG4gIF0pO1xufVxuXG4vKiogU2VsZWN0IGl0ZW1zIGZyb20gb2JqZWN0IHdob3NlIHZhbHVlIGlzIG5vdCB1bmRlZmluZWQgKi9cbmNvbnN0IGRlZmluZWRQcm9wcyA9IG9iaiA9PlxuICBPYmplY3QuZW50cmllcyhvYmopLnJlZHVjZShcbiAgICAoYWNjdSwgW2ssIHZdKSA9PiAoey4uLmFjY3UsIC4uLih2ICE9PSB1bmRlZmluZWQgPyB7W2tdOiB2fSA6IHt9KX0pLFxuICAgIHt9XG4gICk7XG5cbmZ1bmN0aW9uIHVwZGF0ZVZpZXdwb3J0KG9yaWdpbmFsVmlld3BvcnQ6IFZpZXdwb3J0LCB2aWV3cG9ydFVwZGF0ZXM6IFZpZXdwb3J0KTogVmlld3BvcnQge1xuICBsZXQgbmV3Vmlld3BvcnQgPSB7XG4gICAgLi4ub3JpZ2luYWxWaWV3cG9ydCxcbiAgICAuLi4oZGVmaW5lZFByb3BzKHZpZXdwb3J0VXBkYXRlcykgfHwge30pXG4gIH07XG5cbiAgLy8gZGVjay5nbCdzIGdsb2JlIGNvbnRyb2xsZXIgYXBwbGllcyBhIGxhdGl0dWRlLWRlcGVuZGVudCBhZGp1c3RtZW50IHRvIHRoZVxuICAvLyB6b29tIHJhbmdlIChzZWUgS2VwbGVyR2xvYmVWaWV3Ll9jb25zdHJhaW5ab29tKS4gSWYgd2UgY2xhbXAgdGhlIHByb3BhZ2F0ZWRcbiAgLy8gem9vbSBoZXJlIGFnYWluc3QgdGhlIHJhdyBtaW5ab29tL21heFpvb20gKHdpdGhvdXQgdGhhdCBhZGp1c3RtZW50KSwgUmVkdXhcbiAgLy8gZW5kcyB1cCBkaXNhZ3JlZWluZyB3aXRoIHRoZSBjb250cm9sbGVyOiB0aGUgY29udHJvbGxlciBsZXRzIHRoZSB1c2VyIHB1bGxcbiAgLy8gdGhlIGdsb2JlIGZ1cnRoZXIgb3V0LCBidXQgdGhpcyBjbGFtcCBzbmFwcyB6b29tIGJhY2sgdG8gYG1pblpvb21gIHdoZW4gdGhlXG4gIC8vIGludGVyYWN0aW9uJ3MgaW5lcnRpYSB0cmFuc2l0aW9uIGVuZHMuIEFwcGx5IHRoZSBzYW1lIGFkanVzdG1lbnQgaW4gZ2xvYmVcbiAgLy8gbW9kZSBzbyBSZWR1eCBzdGF5cyBjb25zaXN0ZW50IHdpdGggdGhlIGNvbnRyb2xsZXIgYW5kIHRoZXJlJ3Mgbm8gc25hcC1iYWNrLlxuICBjb25zdCBpc0dsb2JlID0gKG5ld1ZpZXdwb3J0IGFzIGFueSkuZ2xvYmU/LmVuYWJsZWQ7XG5cbiAgaWYgKGlzR2xvYmUpIHtcbiAgICAvLyBLZWVwIHRoZSBjYW1lcmEgdGFyZ2V0IHdpdGhpbiBhIGxhdGl0dWRlIGJhbmQgYXJvdW5kIHRoZSBlcXVhdG9yIHNvIHRoZVxuICAgIC8vIHN0b3JlZCB2aWV3cG9ydCBjYW4ndCBiZSBjZW50ZXJlZCBvbiB0aGUgcG9sZXMgKG1hdGNoZXMgdGhlIGdsb2JlXG4gICAgLy8gY29udHJvbGxlcidzIGFwcGx5Q29uc3RyYWludHMgc28gZ2VvY29kZXIvcHJvZ3JhbW1hdGljIHVwZGF0ZXMgYWdyZWUpLlxuICAgIGlmICh0eXBlb2YgbmV3Vmlld3BvcnQubGF0aXR1ZGUgPT09ICdudW1iZXInKSB7XG4gICAgICBuZXdWaWV3cG9ydC5sYXRpdHVkZSA9IE1hdGgubWluKFxuICAgICAgICBHTE9CRV9NQVhfTEFUSVRVREUsXG4gICAgICAgIE1hdGgubWF4KC1HTE9CRV9NQVhfTEFUSVRVREUsIG5ld1ZpZXdwb3J0LmxhdGl0dWRlKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3Qgem9vbUFkanVzdG1lbnQgPSBNYXRoLmxvZzIoTWF0aC5jb3MoKChuZXdWaWV3cG9ydC5sYXRpdHVkZSA/PyAwKSAqIE1hdGguUEkpIC8gMTgwKSk7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lm1pblpvb20gPT09ICdudW1iZXInICYmXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQuem9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnRcbiAgICApIHtcbiAgICAgIG5ld1ZpZXdwb3J0Lnpvb20gPSBuZXdWaWV3cG9ydC5taW5ab29tICsgem9vbUFkanVzdG1lbnQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC5tYXhab29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lnpvb20gPT09ICdudW1iZXInICYmXG4gICAgICBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50XG4gICAgKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbSArIHpvb21BZGp1c3RtZW50O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBNYWtlIHN1cmUgem9vbSBsZXZlbCBkb2Vzbid0IGdvIGJlbGxvdyBtaW5ab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWluWm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPCBuZXdWaWV3cG9ydC5taW5ab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbTtcbiAgICB9XG4gICAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBhYm92ZSBtYXhab29tIGlmIGRlZmluZWRcbiAgICBpZiAobmV3Vmlld3BvcnQubWF4Wm9vbSAmJiBuZXdWaWV3cG9ydC56b29tICYmIG5ld1ZpZXdwb3J0Lnpvb20gPiBuZXdWaWV3cG9ydC5tYXhab29tKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWF4Wm9vbTtcbiAgICB9XG4gIH1cbiAgLy8gTGltaXQgdmlld3BvcnQgdXBkYXRlIGJhc2VkIG9uIG1heEJvdW5kc1xuICBpZiAobmV3Vmlld3BvcnQubWF4Qm91bmRzICYmIHZhbGlkYXRlQm91bmRzKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcykpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIFR5cGUgJ1ZpZXdwb3J0JyBpcyBtaXNzaW5nIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBmcm9tIHR5cGUgJ01hcFN0YXRlJzogaXNTcGxpdCwgaXNWaWV3cG9ydFN5bmNlZCwgaXNab29tTG9ja2VkLCBzcGxpdE1hcFZpZXdwb3J0c1xuICAgIG5ld1ZpZXdwb3J0ID0gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKG9yaWdpbmFsVmlld3BvcnQsIG5ld1ZpZXdwb3J0KTtcbiAgfVxuXG4gIHJldHVybiBu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
|
|
658
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZ2VvVmlld3BvcnQiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9ib29sZWFuV2l0aGluIiwiX2Jib3hQb2x5Z29uIiwiX3dlYk1lcmNhdG9yIiwiX2RlZXBtZXJnZSIsIl9waWNrIiwiX3V0aWxzIiwiX2NvbnN0YW50cyIsIm93bktleXMiLCJlIiwiciIsInQiLCJPYmplY3QiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwibWFwU3RhdGVVcGRhdGVycyIsIklOSVRJQUxfTUFQX1NUQVRFIiwiZXhwb3J0cyIsInBpdGNoIiwiYmVhcmluZyIsImxhdGl0dWRlIiwibG9uZ2l0dWRlIiwiem9vbSIsImRyYWdSb3RhdGUiLCJ3aWR0aCIsImhlaWdodCIsIm1pblpvb20iLCJ1bmRlZmluZWQiLCJtYXhab29tIiwibWF4UGl0Y2giLCJtYXhCb3VuZHMiLCJpc1NwbGl0IiwiaXNWaWV3cG9ydFN5bmNlZCIsImlzWm9vbUxvY2tlZCIsInNwbGl0TWFwVmlld3BvcnRzIiwibWFwVmlld01vZGUiLCJNYXBWaWV3TW9kZSIsIk1PREVfMkQiLCJnbG9iZSIsImVuYWJsZWQiLCJjb25maWciLCJERUZBVUxUX0dMT0JFX0NPTkZJRyIsIm1hcFNwbGl0TW9kZSIsIk1hcFNwbGl0TW9kZSIsIlNJTkdMRV9NQVAiLCJzd2lwZUNvbXBhcmVQZXJjZW50YWdlIiwidXBkYXRlTWFwVXBkYXRlciIsInN0YXRlIiwiYWN0aW9uIiwiX2FjdGlvbiRwYXlsb2FkIiwicGF5bG9hZCIsImlucHV0Vmlld3BvcnQiLCJ2aWV3cG9ydCIsIl9hY3Rpb24kcGF5bG9hZCRtYXBJbiIsIm1hcEluZGV4IiwidmFsaWRhdGVWaWV3UG9ydCIsInVwZGF0ZVZpZXdwb3J0Iiwib3RoZXJWaWV3cG9ydE1hcEluZGV4IiwibWFwIiwiY3VycmVudFZpZXdwb3J0IiwiaSIsIk51bWJlciIsImlzRmluaXRlIiwiZml0Qm91bmRzVXBkYXRlciIsIl9hY3Rpb24kbWV0YSIsIl9zdGF0ZSRnbG9iZSIsImNlbnRlckFuZFpvb20iLCJnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyIsInBhZGRpbmciLCJtZXRhIiwiaXNHbG9iZU1vZGUiLCJCb29sZWFuIiwiTWF0aCIsIm1pbiIsIm1heCIsIkdMT0JFX01JTl9aT09NIiwiR0xPQkVfTUFYX1pPT00iLCJuZXdTdGF0ZSIsImNlbnRlciIsInRvZ2dsZVBlcnNwZWN0aXZlVXBkYXRlciIsIl9zdGF0ZSRnbG9iZTIiLCJ3YXNHbG9iZUVuYWJsZWQiLCJNT0RFXzNEIiwic2V0TWFwVmlld01vZGVVcGRhdGVyIiwiX3N0YXRlJGdsb2JlMyIsIm5leHRTdGF0ZSIsIk1PREVfR0xPQkUiLCJnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIiLCJyZXNldE1hcENvbmZpZ1VwZGF0ZXIiLCJpbml0aWFsU3RhdGUiLCJyZWNlaXZlTWFwQ29uZmlnVXBkYXRlciIsIl9yZWYiLCJfcmVmJHBheWxvYWQiLCJfcmVmJHBheWxvYWQkY29uZmlnIiwiX3JlZiRwYXlsb2FkJG9wdGlvbnMiLCJvcHRpb25zIiwiX3JlZiRwYXlsb2FkJGJvdW5kcyIsImJvdW5kcyIsIm1hcFN0YXRlIiwibWVyZ2VkU3RhdGUiLCJkZWVwbWVyZ2UiLCJhcnJheU1lcmdlIiwiX2Rlc3RpbmF0aW9uQXJyYXkiLCJzb3VyY2VBcnJheSIsImNlbnRlck1hcCIsImdldE1hcERpbUZvclNwbGl0TWFwIiwidG9nZ2xlU3BsaXRNYXBVcGRhdGVyIiwiRFVBTF9NQVAiLCJzZXRNYXBTcGxpdE1vZGVVcGRhdGVyIiwicHJldk1vZGUiLCJTV0lQRV9DT01QQVJFIiwic2V0U3dpcGVDb21wYXJlUGVyY2VudGFnZVVwZGF0ZXIiLCJwZXJjZW50YWdlIiwiY2xhbXBlZCIsInRvZ2dsZVNwbGl0TWFwVmlld3BvcnRVcGRhdGVyIiwibmV3TWFwU3RhdGUiLCJsYXN0VXBkYXRlZFZpZXdwb3J0SW5kZXgiLCJmaW5kSW5kZXgiLCJ2IiwibGVmdFZpZXdwb3J0IiwicGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUiLCJyaWdodFZpZXdwb3J0IiwidXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzIiwidmlld3BvcnRCb3VuZHMiLCJnZW9WaWV3cG9ydCIsIk1BUEJPWF9USUxFX1NJWkUiLCJ2aWV3cG9ydEJvdW5kc1BvbHlnb24iLCJiYm94UG9seWdvbiIsIm5ld1N0YXRlTWF4Qm91bmRzIiwibWF4Qm91bmRzUG9seWdvbiIsImhhc01heEJvdW5kc0NoYW5nZWQiLCJldmVyeSIsInZhbCIsImlkeCIsImJvb2xlYW5XaXRoaW4iLCJfZml0Qm91bmRzIiwiZml0Qm91bmRzIiwicGljayIsImRlZmluZWRQcm9wcyIsIm9iaiIsImVudHJpZXMiLCJyZWR1Y2UiLCJhY2N1IiwiX3JlZjIiLCJfcmVmMyIsIl9zbGljZWRUb0FycmF5MiIsImsiLCJvcmlnaW5hbFZpZXdwb3J0Iiwidmlld3BvcnRVcGRhdGVzIiwiX2dsb2JlIiwibmV3Vmlld3BvcnQiLCJpc0dsb2JlIiwiX25ld1ZpZXdwb3J0JGxhdGl0dWRlIiwiR0xPQkVfTUFYX0xBVElUVURFIiwiem9vbUFkanVzdG1lbnQiLCJsb2cyIiwiY29zIiwiUEkiLCJ2YWxpZGF0ZUJvdW5kcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXAtc3RhdGUtdXBkYXRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IGdlb1ZpZXdwb3J0IGZyb20gJ0BtYXBib3gvZ2VvLXZpZXdwb3J0JztcbmltcG9ydCB7Ym9vbGVhbldpdGhpbn0gZnJvbSAnQHR1cmYvYm9vbGVhbi13aXRoaW4nO1xuaW1wb3J0IHtiYm94UG9seWdvbn0gZnJvbSAnQHR1cmYvYmJveC1wb2x5Z29uJztcbmltcG9ydCB7Zml0Qm91bmRzfSBmcm9tICdAbWF0aC5nbC93ZWItbWVyY2F0b3InO1xuaW1wb3J0IGRlZXBtZXJnZSBmcm9tICdkZWVwbWVyZ2UnO1xuaW1wb3J0IHBpY2sgZnJvbSAnbG9kYXNoL3BpY2snO1xuXG5pbXBvcnQge1xuICBnZXRDZW50ZXJBbmRab29tRnJvbUJvdW5kcyxcbiAgdmFsaWRhdGVCb3VuZHMsXG4gIE1BUEJPWF9USUxFX1NJWkUsXG4gIHZhbGlkYXRlVmlld1BvcnRcbn0gZnJvbSAnQGtlcGxlci5nbC91dGlscyc7XG5pbXBvcnQge01hcFN0YXRlQWN0aW9ucywgUmVjZWl2ZU1hcENvbmZpZ1BheWxvYWQsIEFjdGlvblR5cGVzfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuaW1wb3J0IHtNYXBTdGF0ZSwgQm91bmRzLCBWaWV3cG9ydH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5pbXBvcnQge01hcFNwbGl0TW9kZSwgTWFwVmlld01vZGUsIERFRkFVTFRfR0xPQkVfQ09ORklHLCBHTE9CRV9NSU5fWk9PTSwgR0xPQkVfTUFYX1pPT00sIEdMT0JFX01BWF9MQVRJVFVERX0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuXG4vKipcbiAqIFVwZGF0ZXJzIGZvciBgbWFwU3RhdGVgIHJlZHVjZXIuIENhbiBiZSB1c2VkIGluIHlvdXIgcm9vdCByZWR1Y2VyIHRvIGRpcmVjdGx5IG1vZGlmeSBrZXBsZXIuZ2wncyBzdGF0ZS5cbiAqIFJlYWQgbW9yZSBhYm91dCBbVXNpbmcgdXBkYXRlcnNdKC4uL2FkdmFuY2VkLXVzYWdlL3VzaW5nLXVwZGF0ZXJzLm1kKVxuICogQHB1YmxpY1xuICogQGV4YW1wbGVcbiAqXG4gKiBpbXBvcnQga2VwbGVyR2xSZWR1Y2VyLCB7bWFwU3RhdGVVcGRhdGVyc30gZnJvbSAnQGtlcGxlci5nbC9yZWR1Y2Vycyc7XG4gKiAvLyBSb290IFJlZHVjZXJcbiAqIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAqICBrZXBsZXJHbDoga2VwbGVyR2xSZWR1Y2VyLFxuICogIGFwcDogYXBwUmVkdWNlclxuICogfSk7XG4gKlxuICogY29uc3QgY29tcG9zZWRSZWR1Y2VyID0gKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAqICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gKiAgICAvLyBjbGljayBidXR0b24gdG8gY2xvc2Ugc2lkZSBwYW5lbFxuICogICAgY2FzZSAnQ0xJQ0tfQlVUVE9OJzpcbiAqICAgICAgcmV0dXJuIHtcbiAqICAgICAgICAuLi5zdGF0ZSxcbiAqICAgICAgICBrZXBsZXJHbDoge1xuICogICAgICAgICAgLi4uc3RhdGUua2VwbGVyR2wsXG4gKiAgICAgICAgICBmb286IHtcbiAqICAgICAgICAgICAgIC4uLnN0YXRlLmtlcGxlckdsLmZvbyxcbiAqICAgICAgICAgICAgIG1hcFN0YXRlOiBtYXBTdGF0ZVVwZGF0ZXJzLmZpdEJvdW5kc1VwZGF0ZXIoXG4gKiAgICAgICAgICAgICAgIG1hcFN0YXRlLCB7cGF5bG9hZDogWzEyNy4zNCwgMzEuMDksIDEyNy41NiwgMzEuNTldXX1cbiAqICAgICAgICAgICAgIClcbiAqICAgICAgICAgIH1cbiAqICAgICAgICB9XG4gKiAgICAgIH07XG4gKiAgfVxuICogIHJldHVybiByZWR1Y2VycyhzdGF0ZSwgYWN0aW9uKTtcbiAqIH07XG4gKlxuICogZXhwb3J0IGRlZmF1bHQgY29tcG9zZWRSZWR1Y2VyO1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3RhdGVVcGRhdGVycyA9IG51bGw7XG4vKiBlc2xpbnQtZW5hYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyoqXG4gKiBEZWZhdWx0IGluaXRpYWwgYG1hcFN0YXRlYFxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBjb25zdGFudFxuICogQHByb3BlcnR5IHBpdGNoIERlZmF1bHQ6IGAwYFxuICogQHByb3BlcnR5IGJlYXJpbmcgRGVmYXVsdDogYDBgXG4gKiBAcHJvcGVydHkgbGF0aXR1ZGUgRGVmYXVsdDogYDM3Ljc1MDQzYFxuICogQHByb3BlcnR5IGxvbmdpdHVkZSBEZWZhdWx0OiBgLTEyMi4zNDY3OWBcbiAqIEBwcm9wZXJ0eSB6b29tIERlZmF1bHQ6IGA5YFxuICogQHByb3BlcnR5IGRyYWdSb3RhdGUgRGVmYXVsdDogYGZhbHNlYFxuICogQHByb3BlcnR5IHdpZHRoIERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgaGVpZ2h0IERlZmF1bHQ6IGA4MDBgXG4gKiBAcHJvcGVydHkgbWluWm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4Wm9vbTogYHVuZGVmaW5lZGAsXG4gKiBAcHJvcGVydHkgbWF4UGl0Y2g6IGB1bmRlZmluZWRgIChkZWZhdWx0cyB0byBhcHBsaWNhdGlvbiBjb25maWcgdmFsdWUsIGRlY2suZ2wgZGVmYXVsdCBpcyA2MClcbiAqIEBwcm9wZXJ0eSBtYXhCb3VuZHM6IGB1bmRlZmluZWRgLFxuICogQHByb3BlcnR5IGlzU3BsaXQ6IGBmYWxzZWAsXG4gKiBAcHJvcGVydHkgaXNWaWV3cG9ydFN5bmNlZDogYHRydWVgLFxuICogQHByb3BlcnR5IGlzWm9vbUxvY2tlZDogYGZhbHNlYCxcbiAqIEBwcm9wZXJ0eSBzcGxpdE1hcFZpZXdwb3J0czogYFtdYFxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9NQVBfU1RBVEU6IE1hcFN0YXRlID0ge1xuICBwaXRjaDogMCxcbiAgYmVhcmluZzogMCxcbiAgbGF0aXR1ZGU6IDM3Ljc1MDQzLFxuICBsb25naXR1ZGU6IC0xMjIuMzQ2NzksXG4gIHpvb206IDksXG4gIGRyYWdSb3RhdGU6IGZhbHNlLFxuICB3aWR0aDogODAwLFxuICBoZWlnaHQ6IDgwMCxcbiAgbWluWm9vbTogdW5kZWZpbmVkLFxuICBtYXhab29tOiB1bmRlZmluZWQsXG4gIG1heFBpdGNoOiB1bmRlZmluZWQsXG4gIG1heEJvdW5kczogdW5kZWZpbmVkLFxuICBpc1NwbGl0OiBmYWxzZSxcbiAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdLFxuICBtYXBWaWV3TW9kZTogTWFwVmlld01vZGUuTU9ERV8yRCxcbiAgZ2xvYmU6IHtcbiAgICBlbmFibGVkOiBmYWxzZSxcbiAgICBjb25maWc6IERFRkFVTFRfR0xPQkVfQ09ORklHXG4gIH0sXG4gIG1hcFNwbGl0TW9kZTogTWFwU3BsaXRNb2RlLlNJTkdMRV9NQVAsXG4gIHN3aXBlQ29tcGFyZVBlcmNlbnRhZ2U6IDUwXG59O1xuXG4vKiBVcGRhdGVycyAqL1xuLyoqXG4gKiBVcGRhdGUgbWFwIHZpZXdwb3J0XG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgdXBkYXRlTWFwVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5VcGRhdGVNYXBVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHt2aWV3cG9ydDogaW5wdXRWaWV3cG9ydCwgbWFwSW5kZXggPSAwfSA9IGFjdGlvbi5wYXlsb2FkO1xuICBjb25zdCB2aWV3cG9ydCA9IHZhbGlkYXRlVmlld1BvcnQoaW5wdXRWaWV3cG9ydCk7XG5cbiAgaWYgKHN0YXRlLmlzVmlld3BvcnRTeW5jZWQpIHtcbiAgICAvLyBUaGUgYHVwZGF0ZVZpZXdwb3J0YCBmdW5jdGlvbiBpcyB0eXBlZCBhcyAoVmlld3BvcnQsIFZpZXdwb3J0KSAtPiBWaWV3cG9ydCBidXQgaGVyZSB0aGVcbiAgICAvLyBleHBlY3RlZCB0eXBpbmcgaXMgKE1hcFN0YXRlLCBWaWV3cG9ydCkgLT4gTWFwU3RhdGUuXG4gICAgLy8gdGhpcyBjb3VsZCBiZSBhIHBvdGVudGlhbCBidWcgYXMgd2UgdHJlYXQgVmlld3BvcnQgYW5kIE1hcFN0YXRlIGFzIGVxdWFsIHNlZW1pbmdseVxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3IgVHlwZSAnVmlld3BvcnQnIGlzIG1pc3NpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIGZyb20gdHlwZSAnTWFwU3RhdGUnOiBpc1NwbGl0LCBpc1ZpZXdwb3J0U3luY2VkLCBpc1pvb21Mb2NrZWQsIHNwbGl0TWFwVmlld3BvcnRzXG4gICAgcmV0dXJuIHVwZGF0ZVZpZXdwb3J0KHN0YXRlLCB2aWV3cG9ydCk7XG4gIH1cblxuICBsZXQgb3RoZXJWaWV3cG9ydE1hcEluZGV4ID0gLTE7XG4gIGNvbnN0IHNwbGl0TWFwVmlld3BvcnRzID0gc3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMubWFwKChjdXJyZW50Vmlld3BvcnQsIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gbWFwSW5kZXgpIHtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgbWF0Y2hpbmcgdmlld3BvcnQgd2l0aCB0aGUgbmV3Vmlld3BvcnQgaW5mbyBpbiB0aGUgYWN0aW9uIHBheWxvYWRcbiAgICAgIHJldHVybiB1cGRhdGVWaWV3cG9ydChjdXJyZW50Vmlld3BvcnQsIHZpZXdwb3J0KTtcbiAgICB9XG5cbiAgICBvdGhlclZpZXdwb3J0TWFwSW5kZXggPSBpO1xuICAgIC8vIG1ha2Ugbm8gY2hhbmdlcyB0byB0aGUgb3RoZXIgdmlld3BvcnQgKHlldClcbiAgICByZXR1cm4gY3VycmVudFZpZXdwb3J0O1xuICB9KTtcblxuICAvLyBtYWtlIGNvbmRpdGlvbmFsIHVwZGF0ZXMgdG8gdGhlIG90aGVyIHZpZXdwb3J0IG5vdCBtYXRjaGluZyB0aGlzIHBheWxvYWQncyBgbWFwSW5kZXhgXG4gIGlmIChOdW1iZXIuaXNGaW5pdGUob3RoZXJWaWV3cG9ydE1hcEluZGV4KSAmJiBvdGhlclZpZXdwb3J0TWFwSW5kZXggPiAtMSkge1xuICAgIC8vIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGEgc3BlY2lhbCBjYXNlIGFuZCBhcmUgYWx3YXlzIHVwZGF0ZWRcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1tvdGhlclZpZXdwb3J0TWFwSW5kZXhdID0ge1xuICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgIHdpZHRoOiBzcGxpdE1hcFZpZXdwb3J0c1ttYXBJbmRleF0ud2lkdGgsXG4gICAgICBoZWlnaHQ6IHNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XS5oZWlnaHRcbiAgICB9O1xuXG4gICAgaWYgKHN0YXRlLmlzWm9vbUxvY2tlZCkge1xuICAgICAgLy8gdXBkYXRlIHRoZSBvdGhlciB2aWV3cG9ydCB3aXRoIHRoZSBuZXcgem9vbSBmcm9tIHRoZSBzcGxpdCB2aWV3cG9ydCB0aGF0IHdhcyB1cGRhdGVkIHdpdGggdGhpcyBwYXlsb2FkJ3MgYG1hcEluZGV4YFxuICAgICAgc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSA9IHtcbiAgICAgICAgLi4uc3BsaXRNYXBWaWV3cG9ydHNbb3RoZXJWaWV3cG9ydE1hcEluZGV4XSxcbiAgICAgICAgem9vbTogc3BsaXRNYXBWaWV3cG9ydHNbbWFwSW5kZXhdLnpvb21cbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyB1cGRhdGUgdGhlIHRvcC1sZXZlbCBtYXBTdGF0ZSB2aWV3cG9ydCB3aXRoIHRoZSBtb3N0IHJlY2VudGx5IGludGVyYWN0ZWQtd2l0aCBzcGxpdCB2aWV3cG9ydFxuICAgIC8vIFdIWT8gdGhpcyBhdm9pZHMgem9vbSBhbmQgYm91bmRzIFwianVtcGluZ1wiIGR1ZSB0byBhIFwic3RhbGVcIiB0b3AtbGV2ZWwgbWFwU3RhdGUgdmlld3BvcnQgd2hlbjpcbiAgICAvLyAgMS4gdG9nZ2xpbmcgb2ZmIHRoZSB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZSB0byBzd2l0Y2ggdG8gdGhlIHN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC8vICAyLiB0b2dnbGluZyBvbiB0aGUgem9vbSBsb2NrIGR1cmluZyBhbiB1bnN5bmNlZCB2aWV3cG9ydHMgbW9kZVxuICAgIC4uLnN0YXRlLFxuICAgIC4uLnNwbGl0TWFwVmlld3BvcnRzW21hcEluZGV4XSxcbiAgICAvLyB1cGRhdGUgdGhlIG1hcFN0YXRlIHdpdGggdGhlIG5ldyBhcnJheSBvZiBzcGxpdCB2aWV3cG9ydHNcbiAgICBzcGxpdE1hcFZpZXdwb3J0c1xuICB9O1xufTtcblxuLyoqXG4gKiBGaXQgbWFwIHZpZXdwb3J0IHRvIGJvdW5kc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGZpdEJvdW5kc1VwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuRml0Qm91bmRzVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCBjZW50ZXJBbmRab29tID0gZ2V0Q2VudGVyQW5kWm9vbUZyb21Cb3VuZHMoYWN0aW9uLnBheWxvYWQsIHtcbiAgICB3aWR0aDogc3RhdGUud2lkdGgsXG4gICAgaGVpZ2h0OiBzdGF0ZS5oZWlnaHQsXG4gICAgcGFkZGluZzogYWN0aW9uLm1ldGE/LnBhZGRpbmdcbiAgfSk7XG4gIGlmICghY2VudGVyQW5kWm9vbSkge1xuICAgIC8vIGJvdW5kcyBpcyBpbnZhbGlkXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgLy8gSW4gZ2xvYmUgbW9kZSwgY2xhbXAgem9vbSB0byBnbG9iZSdzIGFsbG93ZWQgcmFuZ2VcbiAgY29uc3QgaXNHbG9iZU1vZGUgPSBCb29sZWFuKHN0YXRlLmdsb2JlPy5lbmFibGVkKTtcbiAgY29uc3Qgem9vbSA9IE51bWJlci5pc0Zpbml0ZShjZW50ZXJBbmRab29tLnpvb20pXG4gICAgPyBpc0dsb2JlTW9kZVxuICAgICAgPyBNYXRoLm1pbihNYXRoLm1heChjZW50ZXJBbmRab29tLnpvb20sIEdMT0JFX01JTl9aT09NKSwgR0xPQkVfTUFYX1pPT00pXG4gICAgICA6IGNlbnRlckFuZFpvb20uem9vbVxuICAgIDogdW5kZWZpbmVkO1xuXG4gIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIGxhdGl0dWRlOiBjZW50ZXJBbmRab29tLmNlbnRlclsxXSxcbiAgICBsb25naXR1ZGU6IGNlbnRlckFuZFpvb20uY2VudGVyWzBdLFxuICAgIC8vIEZvciBtYXJnaW5hbCBvciBpbnZhbGlkIGJvdW5kcywgem9vbSBtYXkgYmUgTmFOLiBNYWtlIHN1cmUgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIGluIG9yZGVyXG4gICAgLy8gdG8gYXZvaWQgY29ycnVwdCBzdGF0ZSBhbmQgcG90ZW50aWFsIGNyYXNoZXMgYXMgem9vbSBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlclxuICAgIC4uLih6b29tICE9PSB1bmRlZmluZWQgPyB7em9vbX0gOiB7fSlcbiAgfTtcblxuICAvLyBpZiBmaXR0aW5nIHRvIGJvdW5kcyB3aGlsZSBzcGxpdCBhbmQgdW5zeW5jZWRcbiAgLy8gY29weSB0aGUgbmV3IGxhdGl0dWRlLCBsb25naXR1ZGUsIGFuZCB6b29tIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIGxhdGl0dWRlOiBuZXdTdGF0ZS5sYXRpdHVkZSxcbiAgICAgIGxvbmdpdHVkZTogbmV3U3RhdGUubG9uZ2l0dWRlLFxuICAgICAgem9vbTogbmV3U3RhdGUuem9vbVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXdTdGF0ZTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gM2QgYW5kIDJkIG1hcC5cbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVQZXJzcGVjdGl2ZVVwZGF0ZXIgPSAoc3RhdGU6IE1hcFN0YXRlKTogTWFwU3RhdGUgPT4ge1xuICAvLyBPbmx5IGRyb3AgbWluL21heFpvb20gd2hlbiB3ZSdyZSBhY3R1YWxseSBsZWF2aW5nIGdsb2JlIG1vZGUsIHdoZXJlIHRob3NlXG4gIC8vIGJvdW5kcyBhcmUgc2V0IHRvIGdsb2JlLW9ubHkgdmFsdWVzLiBJZiBnbG9iZSB3YXMgbmV2ZXIgZW5hYmxlZCB0aGVzZSBhcmVcbiAgLy8gdGhlIGFwcCdzIG93biBjdXN0b20gYm91bmRzIGFuZCBtdXN0IGJlIHByZXNlcnZlZC5cbiAgY29uc3Qgd2FzR2xvYmVFbmFibGVkID0gQm9vbGVhbihzdGF0ZS5nbG9iZT8uZW5hYmxlZCk7XG5cbiAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgLi4uc3RhdGUsXG4gICAgLi4ue1xuICAgICAgcGl0Y2g6IHN0YXRlLmRyYWdSb3RhdGUgPyAwIDogNTAsXG4gICAgICBiZWFyaW5nOiBzdGF0ZS5kcmFnUm90YXRlID8gMCA6IDI0XG4gICAgfSxcbiAgICBkcmFnUm90YXRlOiAhc3RhdGUuZHJhZ1JvdGF0ZSxcbiAgICBtYXBWaWV3TW9kZTogc3RhdGUuZHJhZ1JvdGF0ZSA/IE1hcFZpZXdNb2RlLk1PREVfMkQgOiBNYXBWaWV3TW9kZS5NT0RFXzNELFxuICAgIGdsb2JlOiB7Li4uc3RhdGUuZ2xvYmUhLCBlbmFibGVkOiBmYWxzZX0sXG4gICAgLy8gTGVhdmluZyBnbG9iZSBtb2RlOiBkcm9wIGdsb2JlLW9ubHkgem9vbSBib3VuZHMgc28gdGhlIGZsYXQgbWFwIChhbmRcbiAgICAvLyBjb25zdW1lcnMgb2YgbWFwU3RhdGUgc3VjaCBhcyB2aWRlbyBleHBvcnQpIGFyZW4ndCBsZWZ0IGNsYW1wZWQuIFdoZW5cbiAgICAvLyBnbG9iZSB3YXMgbmV2ZXIgb24sIGtlZXAgd2hhdGV2ZXIgbWluL21heFpvb20gdGhlIGFwcCBjb25maWd1cmVkLlxuICAgIC4uLih3YXNHbG9iZUVuYWJsZWQgPyB7bWluWm9vbTogdW5kZWZpbmVkLCBtYXhab29tOiB1bmRlZmluZWR9IDoge30pXG4gIH07XG5cbiAgLy8gaWYgdG9nZ2xpbmcgM2QgYW5kIDJkIHdoaWxlIHNwbGl0IGFuZCB1bnN5bmNlZFxuICAvLyBjb3B5IHRoZSBuZXcgcGl0Y2gsIGJlYXJpbmcsIGFuZCBkcmFnUm90YXRlIHZhbHVlcyB0byBlYWNoIHNwbGl0IHZpZXdwb3J0XG4gIGlmIChuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5sZW5ndGgpIHtcbiAgICBuZXdTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5ld1N0YXRlLnNwbGl0TWFwVmlld3BvcnRzLm1hcChjdXJyZW50Vmlld3BvcnQgPT4gKHtcbiAgICAgIC4uLmN1cnJlbnRWaWV3cG9ydCxcbiAgICAgIHBpdGNoOiBuZXdTdGF0ZS5waXRjaCxcbiAgICAgIGJlYXJpbmc6IG5ld1N0YXRlLmJlYXJpbmcsXG4gICAgICBkcmFnUm90YXRlOiBuZXdTdGF0ZS5kcmFnUm90YXRlXG4gICAgfSkpO1xuICB9XG5cbiAgcmV0dXJuIG5ld1N0YXRlO1xufTtcblxuLyoqXG4gKiBTZXQgbWFwIHZpZXcgbW9kZSAoMkQsIDNELCBHbG9iZSlcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRNYXBWaWV3TW9kZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuU2V0TWFwVmlld01vZGVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHttYXBWaWV3TW9kZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgbGV0IG5leHRTdGF0ZTogTWFwU3RhdGU7XG5cbiAgLy8gT25seSBjbGVhciBtaW4vbWF4Wm9vbSB3aGVuIGxlYXZpbmcgZ2xvYmUgbW9kZSAod2hlcmUgdGhleSBob2xkIGdsb2JlLW9ubHlcbiAgLy8gYm91bmRzKS4gT3RoZXJ3aXNlIHByZXNlcnZlIHRoZSBhcHAncyBjdXN0b20gYm91bmRzLlxuICBjb25zdCB3YXNHbG9iZUVuYWJsZWQgPSBCb29sZWFuKHN0YXRlLmdsb2JlPy5lbmFibGVkKTtcblxuICBzd2l0Y2ggKG1hcFZpZXdNb2RlKSB7XG4gICAgY2FzZSBNYXBWaWV3TW9kZS5NT0RFXzJEOlxuICAgICAgbmV4dFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IGZhbHNlfSxcbiAgICAgICAgcGl0Y2g6IDAsXG4gICAgICAgIGJlYXJpbmc6IDAsXG4gICAgICAgIGRyYWdSb3RhdGU6IGZhbHNlLFxuICAgICAgICAvLyBDbGVhciB0aGUgZ2xvYmUtb25seSB6b29tIGJvdW5kcyBzbyB0aGUgZmxhdCBtYXAgKGFuZCBhbnl0aGluZyB0aGF0XG4gICAgICAgIC8vIHJlYWRzIG1hcFN0YXRlLCBlLmcuIHZpZGVvIGV4cG9ydCkgaXMgbm90IGxlZnQgd2l0aCBnbG9iZSdzXG4gICAgICAgIC8vIG1pbi9tYXhab29tIGFmdGVyIGxlYXZpbmcgZ2xvYmUgbW9kZS4gT25seSB3aGVuIGdsb2JlIHdhcyBhY3R1YWxseSBvbi5cbiAgICAgICAgLi4uKHdhc0dsb2JlRW5hYmxlZCA/IHttaW5ab29tOiB1bmRlZmluZWQsIG1heFpvb206IHVuZGVmaW5lZH0gOiB7fSksXG4gICAgICAgIG1hcFZpZXdNb2RlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBWaWV3TW9kZS5NT0RFXzNEOlxuICAgICAgbmV4dFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IGZhbHNlfSxcbiAgICAgICAgcGl0Y2g6IDUwLFxuICAgICAgICBiZWFyaW5nOiAyNCxcbiAgICAgICAgZHJhZ1JvdGF0ZTogdHJ1ZSxcbiAgICAgICAgLi4uKHdhc0dsb2JlRW5hYmxlZCA/IHttaW5ab29tOiB1bmRlZmluZWQsIG1heFpvb206IHVuZGVmaW5lZH0gOiB7fSksXG4gICAgICAgIG1hcFZpZXdNb2RlXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBNYXBWaWV3TW9kZS5NT0RFX0dMT0JFOlxuICAgICAgbmV4dFN0YXRlID0ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZ2xvYmU6IHsuLi5zdGF0ZS5nbG9iZSEsIGVuYWJsZWQ6IHRydWV9LFxuICAgICAgICBkcmFnUm90YXRlOiB0cnVlLFxuICAgICAgICBwaXRjaDogMCxcbiAgICAgICAgYmVhcmluZzogMCxcbiAgICAgICAgLy8gQWxsb3cgem9vbWluZyBvdXQgZnVydGhlciB0aGFuIHRoZSBkZWZhdWx0IHNvIHRoZSB3aG9sZSBnbG9iZSBjYW4gYmVcbiAgICAgICAgLy8gcHVsbGVkIGJhY2sgb24gc2NyZWVuLiBDYXAgdGhlIG1heCB6b29tIHNvIHRoZSBiYXNlbWFwIHRpbGVzIHN0YXlcbiAgICAgICAgLy8gY29oZXJlbnQgKHRoZXkgYnJlYWsgZG93biBhdCBoaWdoIGdsb2JlIHpvb20gaW4gZGVjay5nbCA5LngpLlxuICAgICAgICBtaW5ab29tOiBHTE9CRV9NSU5fWk9PTSxcbiAgICAgICAgbWF4Wm9vbTogR0xPQkVfTUFYX1pPT00sXG4gICAgICAgIHpvb206IE1hdGgubWluKE1hdGgubWF4KHN0YXRlLnpvb20sIEdMT0JFX01JTl9aT09NKSwgR0xPQkVfTUFYX1pPT00pLFxuICAgICAgICBtYXBWaWV3TW9kZVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cblxuICBpZiAobmV4dFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzLmxlbmd0aCkge1xuICAgIG5leHRTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IG5leHRTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoY3VycmVudFZpZXdwb3J0ID0+ICh7XG4gICAgICAuLi5jdXJyZW50Vmlld3BvcnQsXG4gICAgICBwaXRjaDogbmV4dFN0YXRlLnBpdGNoLFxuICAgICAgYmVhcmluZzogbmV4dFN0YXRlLmJlYXJpbmcsXG4gICAgICBkcmFnUm90YXRlOiBuZXh0U3RhdGUuZHJhZ1JvdGF0ZVxuICAgIH0pKTtcbiAgfVxuXG4gIHJldHVybiBuZXh0U3RhdGU7XG59O1xuXG4vKipcbiAqIFVwZGF0ZSBnbG9iZSBjb25maWdcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBnbG9iZUNvbmZpZ0NoYW5nZVVwZGF0ZXIgPSAoXG4gIHN0YXRlOiBNYXBTdGF0ZSxcbiAgYWN0aW9uOiBNYXBTdGF0ZUFjdGlvbnMuR2xvYmVDb25maWdDaGFuZ2VVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIHJldHVybiB7XG4gICAgLi4uc3RhdGUsXG4gICAgZ2xvYmU6IHtcbiAgICAgIC4uLnN0YXRlLmdsb2JlISxcbiAgICAgIGNvbmZpZzoge1xuICAgICAgICAuLi5zdGF0ZS5nbG9iZSEuY29uZmlnLFxuICAgICAgICAuLi5hY3Rpb24ucGF5bG9hZFxuICAgICAgfVxuICAgIH1cbiAgfTtcbn07XG5cbi8qKlxuICogcmVzZXQgbWFwU3RhdGUgdG8gaW5pdGlhbCBTdGF0ZVxuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlc2V0TWFwQ29uZmlnVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5JTklUSUFMX01BUF9TVEFURSxcbiAgLi4uc3RhdGUuaW5pdGlhbFN0YXRlLFxuICBpbml0aWFsU3RhdGU6IHN0YXRlLmluaXRpYWxTdGF0ZVxufSk7XG5cbi8vIGNvbnNpZGVyIGNhc2Ugd2hlcmUgeW91IGhhdmUgYSBzcGxpdCBtYXAgYW5kIHVzZXIgd2FudHMgdG8gcmVzZXRcbi8qKlxuICogVXBkYXRlIGBtYXBTdGF0ZWAgdG8gcHJvcGFnYXRlIGEgbmV3IGNvbmZpZ1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHJlY2VpdmVNYXBDb25maWdVcGRhdGVyID0gKFxuICBzdGF0ZTogTWFwU3RhdGUsXG4gIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcGF5bG9hZDoge2NvbmZpZyA9IHt9LCBvcHRpb25zID0ge30sIGJvdW5kcyA9IG51bGx9XG4gIH06IHtcbiAgICB0eXBlPzogdHlwZW9mIEFjdGlvblR5cGVzLlJFQ0VJVkVfTUFQX0NPTkZJRztcbiAgICBwYXlsb2FkOiBSZWNlaXZlTWFwQ29uZmlnUGF5bG9hZDtcbiAgfVxuKTogTWFwU3RhdGUgPT4ge1xuICAvKipcbiAgICogQHR5cGUge1BhcnRpYWw8TWFwU3RhdGU+fVxuICAgKi9cbiAgY29uc3QgbWFwU3RhdGUgPSAoY29uZmlnIHx8IHt9KS5tYXBTdGF0ZSB8fCB7fTtcbiAgLy8gbWVyZ2VkIHJlY2VpdmVkIG1hcFN0YXRlIHdpdGggcHJldmlvdXMgc3RhdGVcbiAgLy8gc3RhdGUgYWxzbyBtYXkgaW5jbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5ldyB0byBhbiBleGlzdGluZywgc2F2ZWQgcHJvamVjdCdzIG1hcFN0YXRlXG5cbiAgbGV0IG1lcmdlZFN0YXRlID0gZGVlcG1lcmdlPE1hcFN0YXRlPihzdGF0ZSwgbWFwU3RhdGUsIHtcbiAgICAvLyBub3RlOiBkZWVwbWVyZ2UgYnkgZGVmYXVsdCB3aWxsIG1lcmdlIGFycmF5cyBieSBjb25jYXRlbmF0aW5nIHRoZW1cbiAgICAvLyBidXQgd2UgbmVlZCB0byBvdmVyd3JpdGUgZGVzdGluYXRpb24gYXJyYXlzIHdpdGggc291cmNlIGFycmF5cywgaWYgcHJlc2VudFxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9UZWhTaHJpa2UvZGVlcG1lcmdlI2FycmF5bWVyZ2UtZXhhbXBsZS1vdmVyd3JpdGUtdGFyZ2V0LWFycmF5XG4gICAgYXJyYXlNZXJnZTogKF9kZXN0aW5hdGlvbkFycmF5LCBzb3VyY2VBcnJheSkgPT4gc291cmNlQXJyYXlcbiAgfSk7XG5cbiAgLy8gaWYgY2VudGVyIG1hcFxuICAvLyBjZW50ZXIgbWFwIHdpbGwgb3ZlcnJpZGUgbWFwU3RhdGUgY29uZmlnXG4gIGlmIChvcHRpb25zLmNlbnRlck1hcCAmJiBib3VuZHMpIHtcbiAgICBtZXJnZWRTdGF0ZSA9IGZpdEJvdW5kc1VwZGF0ZXIobWVyZ2VkU3RhdGUsIHtcbiAgICAgIHBheWxvYWQ6IGJvdW5kcyxcbiAgICAgIG1ldGE6IHtwYWRkaW5nOiBvcHRpb25zLnBhZGRpbmd9XG4gICAgfSk7XG4gIH1cblxuICAvLyBtYWtlIHN1cmUgd2UgdmFsaWRhdGUgbWFwIHN0YXRlIGJlZm9yZSB3ZSBtZXJnZVxuICBtZXJnZWRTdGF0ZSA9IHZhbGlkYXRlVmlld1BvcnQobWVyZ2VkU3RhdGUpO1xuXG4gIHJldHVybiB7XG4gICAgLi4ubWVyZ2VkU3RhdGUsXG4gICAgLy8gdXBkYXRlIHdpZHRoIGlmIGBpc1NwbGl0YCBoYXMgY2hhbmdlZFxuICAgIC4uLmdldE1hcERpbUZvclNwbGl0TWFwKG1lcmdlZFN0YXRlLmlzU3BsaXQsIHN0YXRlKVxuICB9O1xufTtcblxuLyoqXG4gKiBUb2dnbGUgYmV0d2VlbiBvbmUgb3Igc3BsaXQgbWFwc1xuICogQG1lbWJlcm9mIG1hcFN0YXRlVXBkYXRlcnNcbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHRvZ2dsZVNwbGl0TWFwVXBkYXRlciA9IChzdGF0ZTogTWFwU3RhdGUpOiBNYXBTdGF0ZSA9PiAoe1xuICAuLi5zdGF0ZSxcbiAgLi4uZ2V0TWFwRGltRm9yU3BsaXRNYXAoIXN0YXRlLmlzU3BsaXQsIHN0YXRlKSxcbiAgaXNTcGxpdDogIXN0YXRlLmlzU3BsaXQsXG4gIG1hcFNwbGl0TW9kZTogIXN0YXRlLmlzU3BsaXQgPyBNYXBTcGxpdE1vZGUuRFVBTF9NQVAgOiBNYXBTcGxpdE1vZGUuU0lOR0xFX01BUCxcbiAgLi4uKCFzdGF0ZS5pc1NwbGl0ID09PSBmYWxzZVxuICAgID8ge1xuICAgICAgICAvLyBpZiB0b2dnbGluZyB0byBubyBsb25nZXIgc3BsaXQgKHNpbmdsZSBtb2RlKSB0aGVuIHJlc2V0IGEgZmV3IHByb3BlcnRpZXNcbiAgICAgICAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgICAgICAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgICAgICAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG4gICAgICB9XG4gICAgOiB7fSlcbn0pO1xuXG4vKipcbiAqIFNldCB0aGUgbWFwIHNwbGl0IG1vZGUgKHNpbmdsZSwgZHVhbCwgb3Igc3dpcGUpXG4gKiBAbWVtYmVyb2YgbWFwU3RhdGVVcGRhdGVyc1xuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0TWFwU3BsaXRNb2RlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRNYXBTcGxpdE1vZGVVcGRhdGVyQWN0aW9uXG4pOiBNYXBTdGF0ZSA9PiB7XG4gIGNvbnN0IHttYXBTcGxpdE1vZGV9ID0gYWN0aW9uLnBheWxvYWQ7XG4gIGNvbnN0IHByZXZNb2RlID0gc3RhdGUubWFwU3BsaXRNb2RlO1xuXG4gIGlmIChtYXBTcGxpdE1vZGUgPT09IHByZXZNb2RlKSB7XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG5cbiAgc3dpdGNoIChtYXBTcGxpdE1vZGUpIHtcbiAgICBjYXNlIE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1hcFNwbGl0TW9kZSxcbiAgICAgICAgaXNTcGxpdDogZmFsc2UsXG4gICAgICAgIC4uLihwcmV2TW9kZSA9PT0gTWFwU3BsaXRNb2RlLkRVQUxfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggKiAyXG4gICAgICAgIH0pLFxuICAgICAgICBpc1ZpZXdwb3J0U3luY2VkOiB0cnVlLFxuICAgICAgICBpc1pvb21Mb2NrZWQ6IGZhbHNlLFxuICAgICAgICBzcGxpdE1hcFZpZXdwb3J0czogW11cbiAgICAgIH07XG4gICAgY2FzZSBNYXBTcGxpdE1vZGUuRFVBTF9NQVA6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiB0cnVlLFxuICAgICAgICAuLi4ocHJldk1vZGUgPT09IE1hcFNwbGl0TW9kZS5TSU5HTEVfTUFQICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggLyAyXG4gICAgICAgIH0pLFxuICAgICAgICAuLi4ocHJldk1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFICYmIHtcbiAgICAgICAgICB3aWR0aDogc3RhdGUud2lkdGggLyAyXG4gICAgICAgIH0pXG4gICAgICB9O1xuICAgIGNhc2UgTWFwU3BsaXRNb2RlLlNXSVBFX0NPTVBBUkU6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWFwU3BsaXRNb2RlLFxuICAgICAgICBpc1NwbGl0OiB0cnVlLFxuICAgICAgICAuLi4ocHJldk1vZGUgPT09IE1hcFNwbGl0TW9kZS5EVUFMX01BUCAmJiB7XG4gICAgICAgICAgd2lkdGg6IHN0YXRlLndpZHRoICogMlxuICAgICAgICB9KSxcbiAgICAgICAgaXNWaWV3cG9ydFN5bmNlZDogdHJ1ZSxcbiAgICAgICAgaXNab29tTG9ja2VkOiBmYWxzZSxcbiAgICAgICAgc3BsaXRNYXBWaWV3cG9ydHM6IFtdXG4gICAgICB9O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbi8qKlxuICogU2V0IHRoZSBzd2lwZSBjb21wYXJlIHBlcmNlbnRhZ2VcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlVXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5TZXRTd2lwZUNvbXBhcmVQZXJjZW50YWdlVXBkYXRlckFjdGlvblxuKTogTWFwU3RhdGUgPT4ge1xuICBjb25zdCB7cGVyY2VudGFnZX0gPSBhY3Rpb24ucGF5bG9hZDtcbiAgY29uc3QgY2xhbXBlZCA9IE1hdGgubWluKDEwMCwgTWF0aC5tYXgoMCwgcGVyY2VudGFnZSkpO1xuICBpZiAoY2xhbXBlZCA9PT0gc3RhdGUuc3dpcGVDb21wYXJlUGVyY2VudGFnZSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIHN3aXBlQ29tcGFyZVBlcmNlbnRhZ2U6IGNsYW1wZWRcbiAgfTtcbn07XG5cbi8qKlxuICogVG9nZ2xlIGJldHdlZW4gbG9ja2VkIGFuZCB1bmxvY2tlZCBzcGxpdCB2aWV3cG9ydHNcbiAqIEBtZW1iZXJvZiBtYXBTdGF0ZVVwZGF0ZXJzXG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCB0b2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlciA9IChcbiAgc3RhdGU6IE1hcFN0YXRlLFxuICBhY3Rpb246IE1hcFN0YXRlQWN0aW9ucy5Ub2dnbGVTcGxpdE1hcFZpZXdwb3J0VXBkYXRlckFjdGlvblxuKSA9PiB7XG4gIC8vIFN3aXBlIG1vZGUgYWx3YXlzIHVzZXMgc3luY2VkIHZpZXdwb3J0c1xuICBpZiAoc3RhdGUubWFwU3BsaXRNb2RlID09PSBNYXBTcGxpdE1vZGUuU1dJUEVfQ09NUEFSRSkge1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIC8vIG5ldyBtYXAgc3RhdGUgaW1tZWRpYXRlbHkgZ2V0cyB0aGUgbmV3LCBvcHRpb25hbCBwYXlsb2FkIHZhbHVlcyBmb3IgaXNWaWV3cG9ydFN5bmNlZCBhbmQvb3IgaXNab29tTG9ja2VkXG4gIGNvbnN0IG5ld01hcFN0YXRlID0ge1xuICAgIC4uLnN0YXRlLFxuICAgIC4uLihhY3Rpb24ucGF5bG9hZCB8fCB7fSlcbiAgfTtcblxuICBpZiAobmV3TWFwU3RhdGUuaXNWaWV3cG9ydFN5bmNlZCkge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHVuc3luY2VkIHRvIHN5bmNlZCB2aWV3cG9ydHNcbiAgICBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cyA9IFtdO1xuICB9IGVsc2Uge1xuICAgIC8vIHN3aXRjaGluZyBmcm9tIHN5bmNlZCB0byB1bnN5bmNlZCB2aWV3cG9ydHNcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIHRvZ2dsaW5nIGxvY2tlZCB6b29tXG5cbiAgICBpZiAoc3RhdGUuaXNab29tTG9ja2VkICYmICFuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvZmYgbG9ja2VkIHpvb20gd2hpbGUgdW5zeW5jZWRcbiAgICAgIC8vIGRvbid0IGNvcHkgdGhlIG1hcFN0YXRlcyB0byBsZWZ0IGFuZCByaWdodCB2aWV3cG9ydHMgYmVjYXVzZSB0aGVyZSB3aWxsIGJlIHpvb20gXCJqdW1waW5nXCJcbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICBpZiAoIXN0YXRlLmlzWm9vbUxvY2tlZCAmJiBuZXdNYXBTdGF0ZS5pc1pvb21Mb2NrZWQpIHtcbiAgICAgIC8vIHN3aXRjaGluZyBvbiBsb2NrZWQgem9vbSB3aGlsZSB1bnN5bmNlZFxuICAgICAgLy8gb25seSBjb3B5IHpvb20gdmlld3BvcnQgcHJvcGVydHkgZnJvbSB0aGUgbW9zdCByZWNlbnRseSBpbnRlcmFjdGVkLXdpdGggdmlld3BvcnQgdG8gdGhlIG90aGVyXG4gICAgICAvLyBUT0RPOiBkbyB3ZSB3YW50IHRvIGNoZWNrIGZvciBhIG1hdGNoIGEgZGlmZmVyZW50IHdheSwgc3VjaCBhcyBhIGNvbWJvIG9mIGBsYXRpdHVkZWAgYW5kIGBsb25naXR1ZGVgP1xuICAgICAgY29uc3QgbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4ID0gbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMuZmluZEluZGV4KFxuICAgICAgICB2ID0+IG5ld01hcFN0YXRlLnpvb20gPT09IHYuem9vbVxuICAgICAgKTtcblxuICAgICAgY29uc3Qgc3BsaXRNYXBWaWV3cG9ydHMgPSBuZXdNYXBTdGF0ZS5zcGxpdE1hcFZpZXdwb3J0cy5tYXAoKGN1cnJlbnRWaWV3cG9ydCwgaSkgPT4ge1xuICAgICAgICBpZiAoaSA9PT0gbGFzdFVwZGF0ZWRWaWV3cG9ydEluZGV4KSB7XG4gICAgICAgICAgLy8gbm8gem9vbSB0byBtb2RpZnkgaGVyZVxuICAgICAgICAgIHJldHVybiBjdXJyZW50Vmlld3BvcnQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8gdGhlIG90aGVyIHZpZXdwb3J0IGdldHMgdGhlIG1vc3QgcmVjZW50bHkgaW50ZXJhY3RlZC13aXRoIHZpZXdwb3J0J3Mgem9vbVxuICAgICAgICAvLyBXSFk/IHRoZSB2aWV3cG9ydCB0aGUgdXNlciB3YXMgbGFzdCBpbnRlcmFjdGluZyB3aXRoIHdpbGwgc2V0IHpvb20gYWNyb3NzIHRoZSBib2FyZCBmb3Igc21vb3RoIFVYXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uY3VycmVudFZpZXdwb3J0LFxuICAgICAgICAgIHpvb206IG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzW2xhc3RVcGRhdGVkVmlld3BvcnRJbmRleF0uem9vbVxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIG5ld01hcFN0YXRlLnNwbGl0TWFwVmlld3BvcnRzID0gc3BsaXRNYXBWaWV3cG9ydHM7XG5cbiAgICAgIHJldHVybiBuZXdNYXBTdGF0ZTtcbiAgICB9XG5cbiAgICAvLyBpZiBjdXJyZW50IHZpZXdwb3J0IGlzIHN5bmNlZCwgYW5kIHdlIGFyZSB1bnN5bmNpbmcgaXRcbiAgICAvLyBvciBhbHJlYWR5IGluIHVuc3luY2VkIG1vZGUgYW5kIE5PVCB0b2dnbGluZyBsb2NrZWQgem9vbVxuICAgIC8vIG1ha2UgYSBmcmVzaCBjb3B5IG9mIHRoZSBjdXJyZW50IHZpZXdwb3J0IG9iamVjdCwgYXNzaWduIGl0IHRvIHNwbGl0TWFwVmlld3BvcnRzW11cbiAgICAvLyBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZSBpcyBjYWxsZWQgdHdpY2UgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gY29uZmxpY3RzXG4gICAgY29uc3QgbGVmdFZpZXdwb3J0ID0gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUobmV3TWFwU3RhdGUpO1xuICAgIGNvbnN0IHJpZ2h0Vmlld3BvcnQgPSBwaWNrVmlld3BvcnRQcm9wc0Zyb21NYXBTdGF0ZShuZXdNYXBTdGF0ZSk7XG4gICAgbmV3TWFwU3RhdGUuc3BsaXRNYXBWaWV3cG9ydHMgPSBbbGVmdFZpZXdwb3J0LCByaWdodFZpZXdwb3J0XTtcbiAgfVxuXG4gIC8vIHJldHVybiBuZXcgc3RhdGVcbiAgcmV0dXJuIG5ld01hcFN0YXRlO1xufTtcblxuLy8gSGVscGVyc1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1hcERpbUZvclNwbGl0TWFwKGlzU3BsaXQsIHN0YXRlKSB7XG4gIC8vIGNhc2VzOlxuICAvLyAxLiBzdGF0ZSBzcGxpdDogdHJ1ZSAtIGlzU3BsaXQ6IHRydWVcbiAgLy8gZG8gbm90aGluZ1xuICAvLyAyLiBzdGF0ZSBzcGxpdDogZmFsc2UgLSBpc1NwbGl0OiBmYWxzZVxuICAvLyBkbyBub3RoaW5nXG4gIGlmIChzdGF0ZS5pc1NwbGl0ID09PSBpc1NwbGl0KSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLy8gSW4gc3dpcGUgbW9kZSwgYm90aCBtYXBzIHVzZSBmdWxsIHdpZHRoIChvdmVybGFwcGluZyB3aXRoIGNsaXApXG4gIGlmIChzdGF0ZS5tYXBTcGxpdE1vZGUgPT09IE1hcFNwbGl0TW9kZS5TV0lQRV9DT01QQVJFKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3Qgd2lkdGggPVxuICAgIHN0YXRlLmlzU3BsaXQgJiYgIWlzU3BsaXRcbiAgICAgID8gLy8gMy4gc3RhdGUgc3BsaXQ6IHRydWUgLSBpc1NwbGl0OiBmYWxzZVxuICAgICAgICAvLyBkb3VibGUgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggKiAyXG4gICAgICA6IC8vIDQuIHN0YXRlIHNwbGl0OiBmYWxzZSAtIGlzU3BsaXQ6IHRydWVcbiAgICAgICAgLy8gc3BsaXQgd2lkdGhcbiAgICAgICAgc3RhdGUud2lkdGggLyAyO1xuXG4gIHJldHVybiB7XG4gICAgd2lkdGhcbiAgfTtcbn1cblxuZnVuY3Rpb24gdXBkYXRlVmlld3BvcnRCYXNlZE9uQm91bmRzKHN0YXRlOiBNYXBTdGF0ZSwgbmV3TWFwU3RhdGU6IE1hcFN0YXRlKSB7XG4gIC8vIEdldCB0aGUgbmV3IHZpZXdwb3J0IGJvdW5kc1xuICBjb25zdCB2aWV3cG9ydEJvdW5kcyA9IGdlb1ZpZXdwb3J0LmJvdW5kcyhcbiAgICBbbmV3TWFwU3RhdGUubG9uZ2l0dWRlLCBuZXdNYXBTdGF0ZS5sYXRpdHVkZV0sXG4gICAgbmV3TWFwU3RhdGUuem9vbSxcbiAgICBbbmV3TWFwU3RhdGUud2lkdGgsIG5ld01hcFN0YXRlLmhlaWdodF0sXG4gICAgTUFQQk9YX1RJTEVfU0laRVxuICApO1xuICAvLyBHZW5lcmF0ZSB0dXJmIFBvbHlnb24gZnJvbSBib3VuZHMgZm9yIGNvbXBhcmlzb25cbiAgY29uc3Qgdmlld3BvcnRCb3VuZHNQb2x5Z29uID0gYmJveFBvbHlnb24odmlld3BvcnRCb3VuZHMpO1xuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IG5ld1N0YXRlTWF4Qm91bmRzOiBCb3VuZHMgPSBuZXdNYXBTdGF0ZS5tYXhCb3VuZHM7XG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbWF4Qm91bmRzUG9seWdvbiA9IGJib3hQb2x5Z29uKG5ld1N0YXRlTWF4Qm91bmRzKTtcblxuICAvLyBJZiBtYXhCb3VuZHMgaGFzIGNoYW5nZWQgcmVzZXQgdGhlIHZpZXdwb3J0IHRvIHNuYXAgdG8gYm91bmRzXG4gIGNvbnN0IGhhc01heEJvdW5kc0NoYW5nZWQgPVxuICAgICFzdGF0ZS5tYXhCb3VuZHMgfHwgIXN0YXRlLm1heEJvdW5kcy5ldmVyeSgodmFsLCBpZHgpID0+IHZhbCA9PT0gbmV3U3RhdGVNYXhCb3VuZHNbaWR4XSk7XG4gIGlmIChoYXNNYXhCb3VuZHNDaGFuZ2VkKSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIG5ld01hcFN0YXRlIHZpZXdwb3J0IGlzIHdpdGhpbiBtYXhCb3VuZHNcbiAgICBpZiAoIWJvb2xlYW5XaXRoaW4odmlld3BvcnRCb3VuZHNQb2x5Z29uLCBtYXhCb3VuZHNQb2x5Z29uKSkge1xuICAgICAgY29uc3Qge2xhdGl0dWRlLCBsb25naXR1ZGUsIHpvb219ID0gZml0Qm91bmRzKHtcbiAgICAgICAgd2lkdGg6IG5ld01hcFN0YXRlLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IG5ld01hcFN0YXRlLmhlaWdodCxcbiAgICAgICAgYm91bmRzOiBbXG4gICAgICAgICAgW25ld1N0YXRlTWF4Qm91bmRzWzBdLCBuZXdTdGF0ZU1heEJvdW5kc1sxXV0sXG4gICAgICAgICAgW25ld1N0YXRlTWF4Qm91bmRzWzJdLCBuZXdTdGF0ZU1heEJvdW5kc1szXV1cbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIG5ld01hcFN0YXRlID0ge1xuICAgICAgICAuLi5uZXdNYXBTdGF0ZSxcbiAgICAgICAgbGF0aXR1ZGUsXG4gICAgICAgIGxvbmdpdHVkZSxcbiAgICAgICAgLy8gRm9yIG1hcmdpbmFsIG9yIGludmFsaWQgYm91bmRzLCB6b29tIG1heSBiZSBOYU4uIE1ha2Ugc3VyZSB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgaW4gb3JkZXJcbiAgICAgICAgLy8gdG8gYXZvaWQgY29ycnVwdCBzdGF0ZSBhbmQgcG90ZW50aWFsIGNyYXNoZXMgYXMgem9vbSBpcyBleHBlY3RlZCB0byBiZSBhIG51bWJlclxuICAgICAgICAuLi4oTnVtYmVyLmlzRmluaXRlKHpvb20pID8ge3pvb219IDoge30pXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWFwU3RhdGU7XG4gIH1cblxuICAvLyBDaGVjayBpZiB0aGUgbmV3TWFwU3RhdGUgdmlld3BvcnQgaXMgd2l0aGluIG1heEJvdW5kc1xuICBpZiAoIWJvb2xlYW5XaXRoaW4odmlld3BvcnRCb3VuZHNQb2x5Z29uLCBtYXhCb3VuZHNQb2x5Z29uKSkge1xuICAgIG5ld01hcFN0YXRlID0ge1xuICAgICAgLi4ubmV3TWFwU3RhdGUsXG4gICAgICBsb25naXR1ZGU6IHN0YXRlLmxvbmdpdHVkZSxcbiAgICAgIGxhdGl0dWRlOiBzdGF0ZS5sYXRpdHVkZSxcbiAgICAgIHpvb206IHN0YXRlLnpvb21cbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIG5ld01hcFN0YXRlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGlja1ZpZXdwb3J0UHJvcHNGcm9tTWFwU3RhdGUoc3RhdGU6IE1hcFN0YXRlKTogVmlld3BvcnQge1xuICByZXR1cm4gcGljayhzdGF0ZSwgW1xuICAgICd3aWR0aCcsXG4gICAgJ2hlaWdodCcsXG4gICAgJ3pvb20nLFxuICAgICdwaXRjaCcsXG4gICAgJ2JlYXJpbmcnLFxuICAgICdsYXRpdHVkZScsXG4gICAgJ2xvbmdpdHVkZScsXG4gICAgJ2RyYWdSb3RhdGUnLFxuICAgICdtaW5ab29tJyxcbiAgICAnbWF4Wm9vbScsXG4gICAgJ21heFBpdGNoJyxcbiAgICAnbWF4Qm91bmRzJ1xuICBdKTtcbn1cblxuLyoqIFNlbGVjdCBpdGVtcyBmcm9tIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyBub3QgdW5kZWZpbmVkICovXG5jb25zdCBkZWZpbmVkUHJvcHMgPSBvYmogPT5cbiAgT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoXG4gICAgKGFjY3UsIFtrLCB2XSkgPT4gKHsuLi5hY2N1LCAuLi4odiAhPT0gdW5kZWZpbmVkID8ge1trXTogdn0gOiB7fSl9KSxcbiAgICB7fVxuICApO1xuXG5mdW5jdGlvbiB1cGRhdGVWaWV3cG9ydChvcmlnaW5hbFZpZXdwb3J0OiBWaWV3cG9ydCwgdmlld3BvcnRVcGRhdGVzOiBWaWV3cG9ydCk6IFZpZXdwb3J0IHtcbiAgbGV0IG5ld1ZpZXdwb3J0ID0ge1xuICAgIC4uLm9yaWdpbmFsVmlld3BvcnQsXG4gICAgLi4uKGRlZmluZWRQcm9wcyh2aWV3cG9ydFVwZGF0ZXMpIHx8IHt9KVxuICB9O1xuXG4gIC8vIGRlY2suZ2wncyBnbG9iZSBjb250cm9sbGVyIGFwcGxpZXMgYSBsYXRpdHVkZS1kZXBlbmRlbnQgYWRqdXN0bWVudCB0byB0aGVcbiAgLy8gem9vbSByYW5nZSAoc2VlIEtlcGxlckdsb2JlVmlldy5fY29uc3RyYWluWm9vbSkuIElmIHdlIGNsYW1wIHRoZSBwcm9wYWdhdGVkXG4gIC8vIHpvb20gaGVyZSBhZ2FpbnN0IHRoZSByYXcgbWluWm9vbS9tYXhab29tICh3aXRob3V0IHRoYXQgYWRqdXN0bWVudCksIFJlZHV4XG4gIC8vIGVuZHMgdXAgZGlzYWdyZWVpbmcgd2l0aCB0aGUgY29udHJvbGxlcjogdGhlIGNvbnRyb2xsZXIgbGV0cyB0aGUgdXNlciBwdWxsXG4gIC8vIHRoZSBnbG9iZSBmdXJ0aGVyIG91dCwgYnV0IHRoaXMgY2xhbXAgc25hcHMgem9vbSBiYWNrIHRvIGBtaW5ab29tYCB3aGVuIHRoZVxuICAvLyBpbnRlcmFjdGlvbidzIGluZXJ0aWEgdHJhbnNpdGlvbiBlbmRzLiBBcHBseSB0aGUgc2FtZSBhZGp1c3RtZW50IGluIGdsb2JlXG4gIC8vIG1vZGUgc28gUmVkdXggc3RheXMgY29uc2lzdGVudCB3aXRoIHRoZSBjb250cm9sbGVyIGFuZCB0aGVyZSdzIG5vIHNuYXAtYmFjay5cbiAgY29uc3QgaXNHbG9iZSA9IChuZXdWaWV3cG9ydCBhcyBhbnkpLmdsb2JlPy5lbmFibGVkO1xuXG4gIGlmIChpc0dsb2JlKSB7XG4gICAgLy8gS2VlcCB0aGUgY2FtZXJhIHRhcmdldCB3aXRoaW4gYSBsYXRpdHVkZSBiYW5kIGFyb3VuZCB0aGUgZXF1YXRvciBzbyB0aGVcbiAgICAvLyBzdG9yZWQgdmlld3BvcnQgY2FuJ3QgYmUgY2VudGVyZWQgb24gdGhlIHBvbGVzIChtYXRjaGVzIHRoZSBnbG9iZVxuICAgIC8vIGNvbnRyb2xsZXIncyBhcHBseUNvbnN0cmFpbnRzIHNvIGdlb2NvZGVyL3Byb2dyYW1tYXRpYyB1cGRhdGVzIGFncmVlKS5cbiAgICBpZiAodHlwZW9mIG5ld1ZpZXdwb3J0LmxhdGl0dWRlID09PSAnbnVtYmVyJykge1xuICAgICAgbmV3Vmlld3BvcnQubGF0aXR1ZGUgPSBNYXRoLm1pbihcbiAgICAgICAgR0xPQkVfTUFYX0xBVElUVURFLFxuICAgICAgICBNYXRoLm1heCgtR0xPQkVfTUFYX0xBVElUVURFLCBuZXdWaWV3cG9ydC5sYXRpdHVkZSlcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHpvb21BZGp1c3RtZW50ID0gTWF0aC5sb2cyKE1hdGguY29zKCgobmV3Vmlld3BvcnQubGF0aXR1ZGUgPz8gMCkgKiBNYXRoLlBJKSAvIDE4MCkpO1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC5taW5ab29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgdHlwZW9mIG5ld1ZpZXdwb3J0Lnpvb20gPT09ICdudW1iZXInICYmXG4gICAgICBuZXdWaWV3cG9ydC56b29tIDwgbmV3Vmlld3BvcnQubWluWm9vbSArIHpvb21BZGp1c3RtZW50XG4gICAgKSB7XG4gICAgICBuZXdWaWV3cG9ydC56b29tID0gbmV3Vmlld3BvcnQubWluWm9vbSArIHpvb21BZGp1c3RtZW50O1xuICAgIH1cbiAgICBpZiAoXG4gICAgICB0eXBlb2YgbmV3Vmlld3BvcnQubWF4Wm9vbSA9PT0gJ251bWJlcicgJiZcbiAgICAgIHR5cGVvZiBuZXdWaWV3cG9ydC56b29tID09PSAnbnVtYmVyJyAmJlxuICAgICAgbmV3Vmlld3BvcnQuem9vbSA+IG5ld1ZpZXdwb3J0Lm1heFpvb20gKyB6b29tQWRqdXN0bWVudFxuICAgICkge1xuICAgICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb20gKyB6b29tQWRqdXN0bWVudDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gTWFrZSBzdXJlIHpvb20gbGV2ZWwgZG9lc24ndCBnbyBiZWxsb3cgbWluWm9vbSBpZiBkZWZpbmVkXG4gICAgaWYgKG5ld1ZpZXdwb3J0Lm1pblpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSAmJiBuZXdWaWV3cG9ydC56b29tIDwgbmV3Vmlld3BvcnQubWluWm9vbSkge1xuICAgICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1pblpvb207XG4gICAgfVxuICAgIC8vIE1ha2Ugc3VyZSB6b29tIGxldmVsIGRvZXNuJ3QgZ28gYWJvdmUgbWF4Wm9vbSBpZiBkZWZpbmVkXG4gICAgaWYgKG5ld1ZpZXdwb3J0Lm1heFpvb20gJiYgbmV3Vmlld3BvcnQuem9vbSAmJiBuZXdWaWV3cG9ydC56b29tID4gbmV3Vmlld3BvcnQubWF4Wm9vbSkge1xuICAgICAgbmV3Vmlld3BvcnQuem9vbSA9IG5ld1ZpZXdwb3J0Lm1heFpvb207XG4gICAgfVxuICB9XG4gIC8vIExpbWl0IHZpZXdwb3J0IHVwZGF0ZSBiYXNlZCBvbiBtYXhCb3VuZHNcbiAgaWYgKG5ld1ZpZXdwb3J0Lm1heEJvdW5kcyAmJiB2YWxpZGF0ZUJvdW5kcyhuZXdWaWV3cG9ydC5tYXhCb3VuZHMpKSB7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciBUeXBlICdWaWV3cG9ydCcgaXMgbWlzc2luZyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXMgZnJvbSB0eXBlICdNYXBTdGF0ZSc6IGlzU3BsaXQsIGlzVmlld3BvcnRTeW5jZWQsIGlzWm9vbUxvY2tlZCwgc3BsaXRNYXBWaWV3cG9ydHNcbiAgICBuZXdWaWV3cG9ydCA9IHVwZGF0ZVZpZXdwb3J0QmFzZWRPbkJvdW5kcyhvcmlnaW5hbFZpZXdwb3J0LCBuZXdWaWV3cG9ydCk7XG4gIH1cblxuICByZXR1cm4gbmV3Vmlld3BvcnQ7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxZQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxjQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxZQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxVQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxLQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFRQSxJQUFBTyxVQUFBLEdBQUFQLE9BQUE7QUFBeUksU0FBQVEsUUFBQUMsQ0FBQSxFQUFBQyxDQUFBLFFBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxJQUFBLENBQUFKLENBQUEsT0FBQUcsTUFBQSxDQUFBRSxxQkFBQSxRQUFBQyxDQUFBLEdBQUFILE1BQUEsQ0FBQUUscUJBQUEsQ0FBQUwsQ0FBQSxHQUFBQyxDQUFBLEtBQUFLLENBQUEsR0FBQUEsQ0FBQSxDQUFBQyxNQUFBLFdBQUFOLENBQUEsV0FBQUUsTUFBQSxDQUFBSyx3QkFBQSxDQUFBUixDQUFBLEVBQUFDLENBQUEsRUFBQVEsVUFBQSxPQUFBUCxDQUFBLENBQUFRLElBQUEsQ0FBQUMsS0FBQSxDQUFBVCxDQUFBLEVBQUFJLENBQUEsWUFBQUosQ0FBQTtBQUFBLFNBQUFVLGNBQUFaLENBQUEsYUFBQUMsQ0FBQSxNQUFBQSxDQUFBLEdBQUFZLFNBQUEsQ0FBQUMsTUFBQSxFQUFBYixDQUFBLFVBQUFDLENBQUEsV0FBQVcsU0FBQSxDQUFBWixDQUFBLElBQUFZLFNBQUEsQ0FBQVosQ0FBQSxRQUFBQSxDQUFBLE9BQUFGLE9BQUEsQ0FBQUksTUFBQSxDQUFBRCxD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
|