@carto/kepler.gl 0.0.69-alpha.hackathon-3dtiles.7 → 0.0.69-alpha.hackathon-3dtiles.9

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.
@@ -125,7 +125,11 @@ var mapStyleChange = (0, _reduxActions.createAction)(_actionTypes["default"].MAP
125
125
  /**
126
126
  * Set Tiles3D sketch value
127
127
  * @memberof mapStyleActions
128
- * @param sketchValue - 0.0 - 1.0
128
+ * @param sketchValue
129
+ * @param sketchValue.inkStrength - 0.01 - 1.0
130
+ * @param sketchValue.hue - 0.01 - 1.0
131
+ * @param sketchValue.hueSaturation - 0.01 - 1.0
132
+ * @param sketchValue.dotScreen - true | false
129
133
  * @type {typeof import('./map-style-actions').setTiles3dSketchValue}
130
134
  * @public
131
135
  */
@@ -176,4 +180,4 @@ var set3dBuildingColor = (0, _reduxActions.createAction)(_actionTypes["default"]
176
180
  exports.set3dBuildingColor = set3dBuildingColor;
177
181
  var mapStyleActions = null;
178
182
  /* eslint-enable no-unused-vars */
179
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zLmpzIl0sIm5hbWVzIjpbImFkZEN1c3RvbU1hcFN0eWxlIiwiQWN0aW9uVHlwZXMiLCJBRERfQ1VTVE9NX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGUiLCJJTlBVVF9NQVBfU1RZTEUiLCJpbnB1dFN0eWxlIiwibWFwU3RhdGUiLCJtYXBDb25maWdDaGFuZ2UiLCJNQVBfQ09ORklHX0NIQU5HRSIsIm1hcFN0eWxlIiwicmVxdWVzdE1hcFN0eWxlcyIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsIm1hcFN0eWxlcyIsImxvYWRNYXBTdHlsZXMiLCJMT0FEX01BUF9TVFlMRVMiLCJuZXdTdHlsZXMiLCJsb2FkTWFwU3R5bGVFcnIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJlcnJvciIsIm1hcFN0eWxlQ2hhbmdlIiwiTUFQX1NUWUxFX0NIQU5HRSIsInN0eWxlVHlwZSIsInNldFRpbGVzM2RTa2V0Y2hWYWx1ZSIsIlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUiLCJza2V0Y2hWYWx1ZSIsImxvYWRDdXN0b21NYXBTdHlsZSIsIkxPQURfQ1VTVE9NX01BUF9TVFlMRSIsImN1c3RvbU1hcFN0eWxlIiwic2V0M2RCdWlsZGluZ0NvbG9yIiwiU0VUXzNEX0JVSUxESU5HX0NPTE9SIiwiY29sb3IiLCJtYXBTdHlsZUFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsaUJBQWlCLEdBQUcsZ0NBQWFDLHdCQUFZQyxvQkFBekIsQ0FBMUI7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFGLHdCQUFZRyxlQUF6QixFQUEwQyxVQUFDQyxVQUFELEVBQWFDLFFBQWI7QUFBQSxTQUEyQjtBQUNoR0QsSUFBQUEsVUFBVSxFQUFWQSxVQURnRztBQUVoR0MsSUFBQUEsUUFBUSxFQUFSQTtBQUZnRyxHQUEzQjtBQUFBLENBQTFDLENBQXRCO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYU4sd0JBQVlPLGlCQUF6QixFQUE0QyxVQUFBQyxRQUFRO0FBQUEsU0FBSUEsUUFBSjtBQUFBLENBQXBELENBQXhCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxnQ0FDOUJULHdCQUFZVSxrQkFEa0IsRUFFOUIsVUFBQUMsU0FBUztBQUFBLFNBQUlBLFNBQUo7QUFBQSxDQUZxQixDQUF6QjtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFaLHdCQUFZYSxlQUF6QixFQUEwQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQW5ELENBQXRCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYWYsd0JBQVlnQixrQkFBekIsRUFBNkMsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFsRCxDQUF4QjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsZ0NBQWFsQix3QkFBWW1CLGdCQUF6QixFQUEyQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQXBELENBQXZCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLHFCQUFxQixHQUFHLGdDQUNuQ3JCLHdCQUFZc0IseUJBRHVCLEVBRW5DLFVBQUFDLFdBQVc7QUFBQSxTQUFJQSxXQUFKO0FBQUEsQ0FGd0IsQ0FBOUI7QUFLUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsa0JBQWtCLEdBQUcsZ0NBQ2hDeEIsd0JBQVl5QixxQkFEb0IsRUFFaEMsVUFBQUMsY0FBYztBQUFBLFNBQUlBLGNBQUo7QUFBQSxDQUZrQixDQUEzQixDLENBS1A7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGtCQUFrQixHQUFHLGdDQUFhM0Isd0JBQVk0QixxQkFBekIsRUFBZ0QsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFyRCxDQUEzQjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUNBO0FBQ0E7OztBQUNBLElBQU1DLGVBQWUsR0FBRyxJQUF4QjtBQUNBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IHtjcmVhdGVBY3Rpb259IGZyb20gJ3JlZHV4LWFjdGlvbnMnO1xuaW1wb3J0IEFjdGlvblR5cGVzIGZyb20gJ2NvbnN0YW50cy9hY3Rpb24tdHlwZXMnO1xuXG4vKipcbiAqIEFkZCBtYXAgc3R5bGUgZnJvbSB1c2VyIGlucHV0IHRvIHJlZHVjZXIgYW5kIHNldCBpdCB0byBjdXJyZW50IHN0eWxlXG4gKiBUaGlzIGFjdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VyIGNsaWNrIGNvbmZpcm0gYWZ0ZXIgcHV0dGluZyBpbiBhIHZhbGlkIHN0eWxlIHVybCBpbiB0aGUgY3VzdG9tIG1hcCBzdHlsZSBkaWFsb2cuXG4gKiBJdCBzaG91bGQgbm90IGJlIGNhbGxlZCBmcm9tIG91dHNpZGUga2VwbGVyLmdsIHdpdGhvdXQgYSB2YWxpZCBgaW5wdXRTdHlsZWAgaW4gdGhlIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIHBhcmFtIHt2b2lkfVxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5hZGRDdXN0b21NYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGFkZEN1c3RvbU1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkFERF9DVVNUT01fTUFQX1NUWUxFKTtcblxuLyoqXG4gKiBJbnB1dCBhIGN1c3RvbSBtYXAgc3R5bGUgb2JqZWN0XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gaW5wdXRTdHlsZVxuICogQHBhcmFtIGlucHV0U3R5bGUudXJsIC0gc3R5bGUgdXJsIGUuZy4gYCdtYXBib3g6Ly9zdHlsZXMvaGVzaGFuL3h4eHh4eXl5eXp6eidgXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5pZCAtIHN0eWxlIGlkIGUuZy4gYCdjdXN0b21fc3R5bGVfMSdgXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5zdHlsZSAtIGFjdHVhbCBtYXBib3ggc3R5bGUganNvblxuICogQHBhcmFtIGlucHV0U3R5bGUubGFiZWwgLSBzdHlsZSBuYW1lXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5hY2Nlc3NUb2tlbiAtIG1hcGJveCBhY2Nlc3MgdG9rZW5cbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmljb24gLSBpY29uIGltYWdlIGRhdGEgdXJsXG4gKiBAcGFyYW0gW21hcFN0YXRlXSAtIG1hcFN0YXRlIGlzIG9wdGlvbmFsXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmlucHV0TWFwU3R5bGV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBpbnB1dE1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLklOUFVUX01BUF9TVFlMRSwgKGlucHV0U3R5bGUsIG1hcFN0YXRlKSA9PiAoe1xuICBpbnB1dFN0eWxlLFxuICBtYXBTdGF0ZVxufSkpO1xuXG4vKipcbiAqIFVwZGF0ZSBgdmlzaWJsZUxheWVyR3JvdXBzYHRvIGNoYW5nZSBsYXllciBncm91cCB2aXNpYmlsaXR5XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gbWFwU3R5bGUgbmV3IGNvbmZpZyBge3Zpc2libGVMYXllckdyb3Vwczoge2xhYmVsOiBmYWxzZSwgcm9hZDogdHJ1ZSwgYmFja2dyb3VuZDogdHJ1ZX19YFxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5tYXBDb25maWdDaGFuZ2V9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBDb25maWdDaGFuZ2UgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTUFQX0NPTkZJR19DSEFOR0UsIG1hcFN0eWxlID0+IG1hcFN0eWxlKTtcblxuLyoqXG4gKiBSZXF1ZXN0IG1hcCBzdHlsZSBzdHlsZSBvYmplY3QgYmFzZWQgb24gc3R5bGUudXJsLlxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5yZXF1ZXN0TWFwU3R5bGVzfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgcmVxdWVzdE1hcFN0eWxlcyA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuUkVRVUVTVF9NQVBfU1RZTEVTLFxuICBtYXBTdHlsZXMgPT4gbWFwU3R5bGVzXG4pO1xuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGxvYWQgbWFwIHN0eWxlIHN1Y2Nlc3NcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBuZXdTdHlsZXMgYSBge1tpZF06IHN0eWxlfWAgbWFwcGluZ1xuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5sb2FkTWFwU3R5bGVzfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZE1hcFN0eWxlcyA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5MT0FEX01BUF9TVFlMRVMsIG5ld1N0eWxlcyA9PiBuZXdTdHlsZXMpO1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgZXJyb3JcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBlcnJvclxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5sb2FkTWFwU3R5bGVFcnJ9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVFcnIgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTE9BRF9NQVBfU1RZTEVfRVJSLCBlcnJvciA9PiBlcnJvcik7XG5cbi8qKlxuICogQ2hhbmdlIHRvIGFub3RoZXIgbWFwIHN0eWxlLiBUaGUgc2VsZWN0ZWQgc3R5bGUgc2hvdWxkIGFscmVhZHkgYmVlbiBsb2FkZWQgaW50byBgbWFwU3R5bGUubWFwU3R5bGVzYFxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIHN0eWxlVHlwZSB0aGUgc3R5bGUgdG8gY2hhbmdlIHRvXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLm1hcFN0eWxlQ2hhbmdlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbWFwU3R5bGVDaGFuZ2UgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuTUFQX1NUWUxFX0NIQU5HRSwgc3R5bGVUeXBlID0+IHN0eWxlVHlwZSk7XG5cbi8qKlxuICogU2V0IFRpbGVzM0Qgc2tldGNoIHZhbHVlXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gc2tldGNoVmFsdWUgLSAwLjAgLSAxLjBcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuc2V0VGlsZXMzZFNrZXRjaFZhbHVlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0VGlsZXMzZFNrZXRjaFZhbHVlID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5TRVRfVElMRVNfM0RfU0tFVENIX1ZBTFVFLFxuICBza2V0Y2hWYWx1ZSA9PiBza2V0Y2hWYWx1ZVxuKTtcblxuLyoqXG4gKiBDYWxsYmFjayB3aGVuIGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3QgaXMgcmVjZWl2ZWRcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBjdXN0b21NYXBTdHlsZVxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLmljb25cbiAqIEBwYXJhbSBjdXN0b21NYXBTdHlsZS5zdHlsZVxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLmVycm9yXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRDdXN0b21NYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRDdXN0b21NYXBTdHlsZSA9IGNyZWF0ZUFjdGlvbihcbiAgQWN0aW9uVHlwZXMuTE9BRF9DVVNUT01fTUFQX1NUWUxFLFxuICBjdXN0b21NYXBTdHlsZSA9PiBjdXN0b21NYXBTdHlsZVxuKTtcblxuLy8gU0VUXzNEX0JVSUxESU5HX0NPTE9SXG4vKipcbiAqIFNldCAzZCBidWlsZGluZyBsYXllciBncm91cCBjb2xvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGNvbG9yIC0gW3IsIGcsIGJdXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLnNldDNkQnVpbGRpbmdDb2xvcn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IHNldDNkQnVpbGRpbmdDb2xvciA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5TRVRfM0RfQlVJTERJTkdfQ09MT1IsIGNvbG9yID0+IGNvbG9yKTtcblxuLyoqXG4gKiBBY3Rpb25zIGhhbmRsZWQgbW9zdGx5IGJ5ICBgbWFwU3R5bGVgIHJlZHVjZXIuXG4gKiBUaGV5IG1hbmFnZSB0aGUgZGlzcGxheSBvZiBiYXNlIG1hcCwgc3VjaCBhcyBsb2FkaW5nIGFuZCByZWNlaXZpbmcgYmFzZSBtYXAgc3R5bGVzLFxuICogaGlkaW5nIGFuZCBzaG93aW5nIG1hcCBsYXllcnMsIHVzZXIgaW5wdXQgb2YgY3VzdG9tIG1hcCBzdHlsZSB1cmwuXG4gKlxuICogQHB1YmxpY1xuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuLy8gQHRzLWlnbm9yZVxuY29uc3QgbWFwU3R5bGVBY3Rpb25zID0gbnVsbDtcbi8qIGVzbGludC1lbmFibGUgbm8tdW51c2VkLXZhcnMgKi9cbiJdfQ==
183
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL21hcC1zdHlsZS1hY3Rpb25zLmpzIl0sIm5hbWVzIjpbImFkZEN1c3RvbU1hcFN0eWxlIiwiQWN0aW9uVHlwZXMiLCJBRERfQ1VTVE9NX01BUF9TVFlMRSIsImlucHV0TWFwU3R5bGUiLCJJTlBVVF9NQVBfU1RZTEUiLCJpbnB1dFN0eWxlIiwibWFwU3RhdGUiLCJtYXBDb25maWdDaGFuZ2UiLCJNQVBfQ09ORklHX0NIQU5HRSIsIm1hcFN0eWxlIiwicmVxdWVzdE1hcFN0eWxlcyIsIlJFUVVFU1RfTUFQX1NUWUxFUyIsIm1hcFN0eWxlcyIsImxvYWRNYXBTdHlsZXMiLCJMT0FEX01BUF9TVFlMRVMiLCJuZXdTdHlsZXMiLCJsb2FkTWFwU3R5bGVFcnIiLCJMT0FEX01BUF9TVFlMRV9FUlIiLCJlcnJvciIsIm1hcFN0eWxlQ2hhbmdlIiwiTUFQX1NUWUxFX0NIQU5HRSIsInN0eWxlVHlwZSIsInNldFRpbGVzM2RTa2V0Y2hWYWx1ZSIsIlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUiLCJza2V0Y2hWYWx1ZSIsImxvYWRDdXN0b21NYXBTdHlsZSIsIkxPQURfQ1VTVE9NX01BUF9TVFlMRSIsImN1c3RvbU1hcFN0eWxlIiwic2V0M2RCdWlsZGluZ0NvbG9yIiwiU0VUXzNEX0JVSUxESU5HX0NPTE9SIiwiY29sb3IiLCJtYXBTdHlsZUFjdGlvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sSUFBTUEsaUJBQWlCLEdBQUcsZ0NBQWFDLHdCQUFZQyxvQkFBekIsQ0FBMUI7QUFFUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFGLHdCQUFZRyxlQUF6QixFQUEwQyxVQUFDQyxVQUFELEVBQWFDLFFBQWI7QUFBQSxTQUEyQjtBQUNoR0QsSUFBQUEsVUFBVSxFQUFWQSxVQURnRztBQUVoR0MsSUFBQUEsUUFBUSxFQUFSQTtBQUZnRyxHQUEzQjtBQUFBLENBQTFDLENBQXRCO0FBS1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYU4sd0JBQVlPLGlCQUF6QixFQUE0QyxVQUFBQyxRQUFRO0FBQUEsU0FBSUEsUUFBSjtBQUFBLENBQXBELENBQXhCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxnQkFBZ0IsR0FBRyxnQ0FDOUJULHdCQUFZVSxrQkFEa0IsRUFFOUIsVUFBQUMsU0FBUztBQUFBLFNBQUlBLFNBQUo7QUFBQSxDQUZxQixDQUF6QjtBQUlQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxhQUFhLEdBQUcsZ0NBQWFaLHdCQUFZYSxlQUF6QixFQUEwQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQW5ELENBQXRCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNPLElBQU1DLGVBQWUsR0FBRyxnQ0FBYWYsd0JBQVlnQixrQkFBekIsRUFBNkMsVUFBQUMsS0FBSztBQUFBLFNBQUlBLEtBQUo7QUFBQSxDQUFsRCxDQUF4QjtBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxjQUFjLEdBQUcsZ0NBQWFsQix3QkFBWW1CLGdCQUF6QixFQUEyQyxVQUFBQyxTQUFTO0FBQUEsU0FBSUEsU0FBSjtBQUFBLENBQXBELENBQXZCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMscUJBQXFCLEdBQUcsZ0NBQ25DckIsd0JBQVlzQix5QkFEdUIsRUFFbkMsVUFBQUMsV0FBVztBQUFBLFNBQUlBLFdBQUo7QUFBQSxDQUZ3QixDQUE5QjtBQUtQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDTyxJQUFNQyxrQkFBa0IsR0FBRyxnQ0FDaEN4Qix3QkFBWXlCLHFCQURvQixFQUVoQyxVQUFBQyxjQUFjO0FBQUEsU0FBSUEsY0FBSjtBQUFBLENBRmtCLENBQTNCLEMsQ0FLUDs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ08sSUFBTUMsa0JBQWtCLEdBQUcsZ0NBQWEzQix3QkFBWTRCLHFCQUF6QixFQUFnRCxVQUFBQyxLQUFLO0FBQUEsU0FBSUEsS0FBSjtBQUFBLENBQXJELENBQTNCO0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0E7QUFDQTs7O0FBQ0EsSUFBTUMsZUFBZSxHQUFHLElBQXhCO0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjIgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge2NyZWF0ZUFjdGlvbn0gZnJvbSAncmVkdXgtYWN0aW9ucyc7XG5pbXBvcnQgQWN0aW9uVHlwZXMgZnJvbSAnY29uc3RhbnRzL2FjdGlvbi10eXBlcyc7XG5cbi8qKlxuICogQWRkIG1hcCBzdHlsZSBmcm9tIHVzZXIgaW5wdXQgdG8gcmVkdWNlciBhbmQgc2V0IGl0IHRvIGN1cnJlbnQgc3R5bGVcbiAqIFRoaXMgYWN0aW9uIGlzIGNhbGxlZCB3aGVuIHVzZXIgY2xpY2sgY29uZmlybSBhZnRlciBwdXR0aW5nIGluIGEgdmFsaWQgc3R5bGUgdXJsIGluIHRoZSBjdXN0b20gbWFwIHN0eWxlIGRpYWxvZy5cbiAqIEl0IHNob3VsZCBub3QgYmUgY2FsbGVkIGZyb20gb3V0c2lkZSBrZXBsZXIuZ2wgd2l0aG91dCBhIHZhbGlkIGBpbnB1dFN0eWxlYCBpbiB0aGUgYG1hcFN0eWxlYCByZWR1Y2VyLlxuICogcGFyYW0ge3ZvaWR9XG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmFkZEN1c3RvbU1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgYWRkQ3VzdG9tTWFwU3R5bGUgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuQUREX0NVU1RPTV9NQVBfU1RZTEUpO1xuXG4vKipcbiAqIElucHV0IGEgY3VzdG9tIG1hcCBzdHlsZSBvYmplY3RcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBpbnB1dFN0eWxlXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS51cmwgLSBzdHlsZSB1cmwgZS5nLiBgJ21hcGJveDovL3N0eWxlcy9oZXNoYW4veHh4eHh5eXl5enp6J2BcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmlkIC0gc3R5bGUgaWQgZS5nLiBgJ2N1c3RvbV9zdHlsZV8xJ2BcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLnN0eWxlIC0gYWN0dWFsIG1hcGJveCBzdHlsZSBqc29uXG4gKiBAcGFyYW0gaW5wdXRTdHlsZS5sYWJlbCAtIHN0eWxlIG5hbWVcbiAqIEBwYXJhbSBpbnB1dFN0eWxlLmFjY2Vzc1Rva2VuIC0gbWFwYm94IGFjY2VzcyB0b2tlblxuICogQHBhcmFtIGlucHV0U3R5bGUuaWNvbiAtIGljb24gaW1hZ2UgZGF0YSB1cmxcbiAqIEBwYXJhbSBbbWFwU3RhdGVdIC0gbWFwU3RhdGUgaXMgb3B0aW9uYWxcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuaW5wdXRNYXBTdHlsZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGlucHV0TWFwU3R5bGUgPSBjcmVhdGVBY3Rpb24oQWN0aW9uVHlwZXMuSU5QVVRfTUFQX1NUWUxFLCAoaW5wdXRTdHlsZSwgbWFwU3RhdGUpID0+ICh7XG4gIGlucHV0U3R5bGUsXG4gIG1hcFN0YXRlXG59KSk7XG5cbi8qKlxuICogVXBkYXRlIGB2aXNpYmxlTGF5ZXJHcm91cHNgdG8gY2hhbmdlIGxheWVyIGdyb3VwIHZpc2liaWxpdHlcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBtYXBTdHlsZSBuZXcgY29uZmlnIGB7dmlzaWJsZUxheWVyR3JvdXBzOiB7bGFiZWw6IGZhbHNlLCByb2FkOiB0cnVlLCBiYWNrZ3JvdW5kOiB0cnVlfX1gXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLm1hcENvbmZpZ0NoYW5nZX1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IG1hcENvbmZpZ0NoYW5nZSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5NQVBfQ09ORklHX0NIQU5HRSwgbWFwU3R5bGUgPT4gbWFwU3R5bGUpO1xuXG4vKipcbiAqIFJlcXVlc3QgbWFwIHN0eWxlIHN0eWxlIG9iamVjdCBiYXNlZCBvbiBzdHlsZS51cmwuXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLnJlcXVlc3RNYXBTdHlsZXN9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCByZXF1ZXN0TWFwU3R5bGVzID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5SRVFVRVNUX01BUF9TVFlMRVMsXG4gIG1hcFN0eWxlcyA9PiBtYXBTdHlsZXNcbik7XG4vKipcbiAqIENhbGxiYWNrIHdoZW4gbG9hZCBtYXAgc3R5bGUgc3VjY2Vzc1xuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIG5ld1N0eWxlcyBhIGB7W2lkXTogc3R5bGV9YCBtYXBwaW5nXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRNYXBTdHlsZXN9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkTWFwU3R5bGVzID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLkxPQURfTUFQX1NUWUxFUywgbmV3U3R5bGVzID0+IG5ld1N0eWxlcyk7XG5cbi8qKlxuICogQ2FsbGJhY2sgd2hlbiBsb2FkIG1hcCBzdHlsZSBlcnJvclxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGVycm9yXG4gKiBAdHlwZSB7dHlwZW9mIGltcG9ydCgnLi9tYXAtc3R5bGUtYWN0aW9ucycpLmxvYWRNYXBTdHlsZUVycn1cbiAqIEBwdWJsaWNcbiAqL1xuZXhwb3J0IGNvbnN0IGxvYWRNYXBTdHlsZUVyciA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5MT0FEX01BUF9TVFlMRV9FUlIsIGVycm9yID0+IGVycm9yKTtcblxuLyoqXG4gKiBDaGFuZ2UgdG8gYW5vdGhlciBtYXAgc3R5bGUuIFRoZSBzZWxlY3RlZCBzdHlsZSBzaG91bGQgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIGBtYXBTdHlsZS5tYXBTdHlsZXNgXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gc3R5bGVUeXBlIHRoZSBzdHlsZSB0byBjaGFuZ2UgdG9cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykubWFwU3R5bGVDaGFuZ2V9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBtYXBTdHlsZUNoYW5nZSA9IGNyZWF0ZUFjdGlvbihBY3Rpb25UeXBlcy5NQVBfU1RZTEVfQ0hBTkdFLCBzdHlsZVR5cGUgPT4gc3R5bGVUeXBlKTtcblxuLyoqXG4gKiBTZXQgVGlsZXMzRCBza2V0Y2ggdmFsdWVcbiAqIEBtZW1iZXJvZiBtYXBTdHlsZUFjdGlvbnNcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZVxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmlua1N0cmVuZ3RoIC0gMC4wMSAtIDEuMFxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmh1ZSAtIDAuMDEgLSAxLjBcbiAqIEBwYXJhbSBza2V0Y2hWYWx1ZS5odWVTYXR1cmF0aW9uIC0gMC4wMSAtIDEuMFxuICogQHBhcmFtIHNrZXRjaFZhbHVlLmRvdFNjcmVlbiAtIHRydWUgfCBmYWxzZVxuICogQHR5cGUge3R5cGVvZiBpbXBvcnQoJy4vbWFwLXN0eWxlLWFjdGlvbnMnKS5zZXRUaWxlczNkU2tldGNoVmFsdWV9XG4gKiBAcHVibGljXG4gKi9cbmV4cG9ydCBjb25zdCBzZXRUaWxlczNkU2tldGNoVmFsdWUgPSBjcmVhdGVBY3Rpb24oXG4gIEFjdGlvblR5cGVzLlNFVF9USUxFU18zRF9TS0VUQ0hfVkFMVUUsXG4gIHNrZXRjaFZhbHVlID0+IHNrZXRjaFZhbHVlXG4pO1xuXG4vKipcbiAqIENhbGxiYWNrIHdoZW4gYSBjdXN0b20gbWFwIHN0eWxlIG9iamVjdCBpcyByZWNlaXZlZFxuICogQG1lbWJlcm9mIG1hcFN0eWxlQWN0aW9uc1xuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlXG4gKiBAcGFyYW0gY3VzdG9tTWFwU3R5bGUuaWNvblxuICogQHBhcmFtIGN1c3RvbU1hcFN0eWxlLnN0eWxlXG4gKiBAcGFyYW0gY3VzdG9tTWFwU3R5bGUuZXJyb3JcbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykubG9hZEN1c3RvbU1hcFN0eWxlfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3QgbG9hZEN1c3RvbU1hcFN0eWxlID0gY3JlYXRlQWN0aW9uKFxuICBBY3Rpb25UeXBlcy5MT0FEX0NVU1RPTV9NQVBfU1RZTEUsXG4gIGN1c3RvbU1hcFN0eWxlID0+IGN1c3RvbU1hcFN0eWxlXG4pO1xuXG4vLyBTRVRfM0RfQlVJTERJTkdfQ09MT1Jcbi8qKlxuICogU2V0IDNkIGJ1aWxkaW5nIGxheWVyIGdyb3VwIGNvbG9yXG4gKiBAbWVtYmVyb2YgbWFwU3R5bGVBY3Rpb25zXG4gKiBAcGFyYW0gY29sb3IgLSBbciwgZywgYl1cbiAqIEB0eXBlIHt0eXBlb2YgaW1wb3J0KCcuL21hcC1zdHlsZS1hY3Rpb25zJykuc2V0M2RCdWlsZGluZ0NvbG9yfVxuICogQHB1YmxpY1xuICovXG5leHBvcnQgY29uc3Qgc2V0M2RCdWlsZGluZ0NvbG9yID0gY3JlYXRlQWN0aW9uKEFjdGlvblR5cGVzLlNFVF8zRF9CVUlMRElOR19DT0xPUiwgY29sb3IgPT4gY29sb3IpO1xuXG4vKipcbiAqIEFjdGlvbnMgaGFuZGxlZCBtb3N0bHkgYnkgIGBtYXBTdHlsZWAgcmVkdWNlci5cbiAqIFRoZXkgbWFuYWdlIHRoZSBkaXNwbGF5IG9mIGJhc2UgbWFwLCBzdWNoIGFzIGxvYWRpbmcgYW5kIHJlY2VpdmluZyBiYXNlIG1hcCBzdHlsZXMsXG4gKiBoaWRpbmcgYW5kIHNob3dpbmcgbWFwIGxheWVycywgdXNlciBpbnB1dCBvZiBjdXN0b20gbWFwIHN0eWxlIHVybC5cbiAqXG4gKiBAcHVibGljXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG4vLyBAdHMtaWdub3JlXG5jb25zdCBtYXBTdHlsZUFjdGlvbnMgPSBudWxsO1xuLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtdmFycyAqL1xuIl19
@@ -193,10 +193,6 @@ var brightnessContrastEffect = new _core.PostProcessEffect(_shadertools.brightne
193
193
  contrast: 0,
194
194
  brightness: 0.2
195
195
  });
196
- var hueSaturationEffect = new _core.PostProcessEffect(_shadertools.hueSaturation, {
197
- hue: 0,
198
- saturation: 0.3
199
- });
200
196
  var vibranceEffect = new _core.PostProcessEffect(_shadertools.vibrance, {
201
197
  amount: 1
202
198
  }); // Performance debugging
@@ -288,9 +284,6 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
288
284
  }
289
285
  }
290
286
  });
291
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "sketchValue", function (props) {
292
- return props === null || props === void 0 ? void 0 : props.sketchValue;
293
- });
294
287
  (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "layersSelector", function (props) {
295
288
  return props.layers;
296
289
  });
@@ -496,6 +489,35 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
496
489
  y: screenCoord[1]
497
490
  };
498
491
  }
492
+ }, {
493
+ key: "_getEffectsValues",
494
+ value: function _getEffectsValues(mapStyle) {
495
+ var _mapStyle$sketchValue, _mapStyle$sketchValue2, _mapStyle$sketchValue3, _mapStyle$sketchValue4;
496
+
497
+ var inkStrength = ((_mapStyle$sketchValue = mapStyle.sketchValue) === null || _mapStyle$sketchValue === void 0 ? void 0 : _mapStyle$sketchValue.inkStrength) || 0.2;
498
+ var hue = ((_mapStyle$sketchValue2 = mapStyle.sketchValue) === null || _mapStyle$sketchValue2 === void 0 ? void 0 : _mapStyle$sketchValue2.hue) || 0;
499
+ var hueValueSaturation = ((_mapStyle$sketchValue3 = mapStyle.sketchValue) === null || _mapStyle$sketchValue3 === void 0 ? void 0 : _mapStyle$sketchValue3.hueSaturation) || 0.3;
500
+ var inkEffect = new _core.PostProcessEffect(_shadertools.ink, {
501
+ strength: inkStrength
502
+ });
503
+ var hueSaturationEffect = new _core.PostProcessEffect(_shadertools.hueSaturation, {
504
+ hue: hue,
505
+ saturation: hueValueSaturation
506
+ });
507
+ var allEffects = [lightingEffect, hueSaturationEffect, brightnessContrastEffect, vibranceEffect, inkEffect];
508
+ var dotScreenValue = ((_mapStyle$sketchValue4 = mapStyle.sketchValue) === null || _mapStyle$sketchValue4 === void 0 ? void 0 : _mapStyle$sketchValue4.dotScreen) || false;
509
+
510
+ if (dotScreenValue) {
511
+ var dotScreenEffect = new _core.PostProcessEffect(_shadertools.dotScreen, {
512
+ center: [0.5, 0.5],
513
+ angle: Math.PI * 0.5,
514
+ size: 1
515
+ });
516
+ allEffects.push(dotScreenEffect);
517
+ }
518
+
519
+ return allEffects;
520
+ }
499
521
  }, {
500
522
  key: "_renderDeckOverlay",
501
523
  value: function _renderDeckOverlay(layersForDeck) {
@@ -580,11 +602,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
580
602
  deckGlLayers.push(tiles3d.clone());
581
603
 
582
604
  if (mapStyle.styleType === 'google-3d-sketch') {
583
- var inkEffect = new _core.PostProcessEffect(_shadertools.ink, {
584
- strength: mapStyle.sketchValue || 0.2
585
- });
586
- var allEffects = [lightingEffect, hueSaturationEffect, brightnessContrastEffect, vibranceEffect, inkEffect];
587
- effects = allEffects;
605
+ effects = this._getEffectsValues(mapStyle);
588
606
  }
589
607
  } // Limit renders
590
608
 
@@ -809,7 +827,7 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
809
827
  mapState: _propTypes["default"].object.isRequired,
810
828
  mapControls: _propTypes["default"].object.isRequired,
811
829
  mapStyle: _propTypes["default"].object.isRequired,
812
- sketchValue: _propTypes["default"].number,
830
+ sketchValue: _propTypes["default"].object,
813
831
  mapboxApiAccessToken: _propTypes["default"].string.isRequired,
814
832
  mapboxApiUrl: _propTypes["default"].string,
815
833
  visStateActions: _propTypes["default"].object.isRequired,
@@ -839,4 +857,4 @@ function MapContainerFactory(MapPopover, MapControl, Editor) {
839
857
  MapContainer.displayName = 'MapContainer';
840
858
  return MapContainer;
841
859
  }
842
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJodWVTYXR1cmF0aW9uRWZmZWN0IiwiaHVlU2F0dXJhdGlvbiIsImh1ZSIsInNhdHVyYXRpb24iLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJza2V0Y2hWYWx1ZSIsImxheWVycyIsImxheWVyRGF0YSIsIm1hcExheWVycyIsImxheWVyT3JkZXIiLCJwb3B1cFNldHRpbmdzIiwibGF5ZXJzU2VsZWN0b3IiLCJsYXllckRhdGFTZWxlY3RvciIsIm1hcExheWVyc1NlbGVjdG9yIiwicG9wdXBTZXR0aW5nc1NlbGVjdG9yIiwicHJlcGFyZUxheWVyc1RvUmVuZGVyIiwicHJlcGFyZUxheWVyc0ZvckRlY2siLCJmaWx0ZXJzIiwiZmlsdGVyc1NlbGVjdG9yIiwiZiIsInR5cGUiLCJGSUxURVJfVFlQRVMiLCJwb2x5Z29uIiwibGF5ZXJPcmRlclNlbGVjdG9yIiwibGF5ZXJzVG9SZW5kZXJTZWxlY3RvciIsImdlbmVyYXRlTWFwYm94TGF5ZXJzIiwidmlzU3RhdGVBY3Rpb25zIiwib25MYXllckNsaWNrIiwiaWR4IiwiY29sb3JEb21haW4iLCJsYXllckNvbmZpZ0NoYW5nZSIsImxheWVySWQiLCJpbmRleCIsIm1hcEluZGV4IiwidG9nZ2xlTGF5ZXJGb3JNYXAiLCJwcmV2aW91c0xheWVycyIsIl91cGRhdGVNYXBib3hMYXllcnMiLCJvbk1hcFN0eWxlTG9hZGVkIiwiX21hcCIsIm1hcGJveCIsImdldE1hcCIsIm9uIiwiX29uTWFwYm94U3R5bGVVcGRhdGUiLCJvbk1hcFJlbmRlciIsImdldE1hcGJveFJlZiIsImdsIiwibGF5ZXJCbGVuZGluZyIsImVycm9yIiwibWVzc2FnZSIsInNldFN0YXRlIiwiY29udGV4dExvc3QiLCJlcnJvck1lc3NhZ2UiLCJub3RpZmljYXRpb25JZCIsIl9kZWNrR0xFcnJvcnNFbGFwc2VkIiwibGFzdFNob3duIiwiRGF0ZSIsIm5vdyIsIlRIUk9UVExFX05PVElGSUNBVElPTl9USU1FIiwidWlTdGF0ZUFjdGlvbnMiLCJhZGROb3RpZmljYXRpb24iLCJ2aWV3U3RhdGUiLCJpbnRlcmFjdGlvblN0YXRlIiwiaW5jcmVtZW50IiwicmVzdFZpZXdTdGF0ZSIsIm5leHQiLCJpblRyYW5zaXRpb24iLCJvblZpZXdTdGF0ZUNoYW5nZSIsInBhbmVsSWQiLCJ0b2dnbGVNYXBDb250cm9sIiwiX2RlY2siLCJfcmVmIiwiX2hhc1JlbmRlcmVkIiwiX21vdXNlUG9zaXRpb24iLCJjdXJyZW50IiwiX2hhbmRsZVJlc2l6ZSIsInN0YXRlIiwib2ZmIiwib25EZWNrSW5pdGlhbGl6ZWQiLCJsYXllcnNUb1JlbmRlciIsImxuZ0xhdCIsInNjcmVlbkNvb3JkIiwicHJvamVjdCIsIngiLCJ5IiwibGF5ZXJzRm9yRGVjayIsIm1hcFN0YXRlIiwibWFwU3R5bGUiLCJtYXBib3hBcGlBY2Nlc3NUb2tlbiIsIm1hcGJveEFwaVVybCIsIm1hc2tQb2x5Z29uIiwiZGVja0dsTGF5ZXJzIiwiZGVja0dsUHJvcHMiLCJkYXRhTGF5ZXJzIiwic2xpY2UiLCJyZXZlcnNlIiwib3ZlcmxheXMiLCJsYXllckNhbGxiYWNrcyIsIm9uU2V0TGF5ZXJEb21haW4iLCJ2YWwiLCJfb25MYXllclNldERvbWFpbiIsImxheWVyT3ZlcmxheSIsImNvbmNhdCIsImxheWVyc09uVG9wIiwicHVzaCIsIlNvbGlkUG9seWdvbkxheWVyIiwiTUFTS19MQVlFUl9JRCIsIk9QRVJBVElPTiIsIk1BU0siLCJkYXRhQ29tcGFyYXRvciIsIm9sZERhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJlZmZlY3RzIiwiYm90dG9tTWFwU3R5bGUiLCJsIiwiQm9vbGVhbiIsImNsb25lIiwiZXh0ZW5zaW9ucyIsInN0eWxlVHlwZSIsImlua0VmZmVjdCIsImluayIsInN0cmVuZ3RoIiwiYWxsRWZmZWN0cyIsImhhc1JlbmRlcmVkIiwicmVzZXRIYXNSZW5kZXJlZCIsIl9vblZpZXdwb3J0Q2hhbmdlIiwib3B0cyIsIl9vbkJlZm9yZVJlbmRlciIsIm9uTGF5ZXJIb3ZlciIsImUiLCJfb25EZWNrRXJyb3IiLCJjb21wIiwiZGVjayIsIl9vbkRlY2tJbml0aWFsaXplZCIsImlzTmFOIiwidmlzaWJpbGl0eUJ5Wm9vbSIsIm1pbiIsIm1heCIsImN1cnJlbnRab29tUmFuZ2UiLCJyb3VuZCIsIm1hcGJveExheWVycyIsIm1hcGJveExheWVyc1NlbGVjdG9yIiwiT2JqZWN0Iiwia2V5cyIsImlzU3R5bGVMb2FkZWQiLCJNYXBDb21wb25lbnQiLCJkYXRhc2V0cyIsIm1hcENvbnRyb2xzIiwibG9jYWxlIiwiaW50ZXJhY3Rpb25Db25maWciLCJlZGl0b3IiLCJsYXllcnNGb3JEZWNrU2VsZWN0b3IiLCJtYXBQcm9wcyIsInByZXNlcnZlRHJhd2luZ0J1ZmZlciIsInRyYW5zZm9ybVJlcXVlc3QiLCJpc0VkaXQiLCJtYXBEcmF3IiwiYWN0aXZlIiwiaGFzR2VvY29kZXJMYXllciIsImZpbmQiLCJHRU9DT0RFUl9MQVlFUl9JRCIsImlzU3BsaXQiLCJtb3VzZVBvc2l0aW9uIiwibmVlZHNCYXNlbWFwIiwiTE9DQUxFX0NPREVTIiwiZHJhZ1JvdGF0ZSIsInJlYWRPbmx5Iiwic2NhbGUiLCJnZW9jb2RlciIsImVuYWJsZWQiLCJ0b2dnbGVQZXJzcGVjdGl2ZSIsInRvZ2dsZVNwbGl0TWFwIiwiX2hhbmRsZU1hcFRvZ2dsZUxheWVyIiwiX3RvZ2dsZU1hcENvbnRyb2wiLCJzZXRFZGl0b3JNb2RlIiwic2V0TG9jYWxlIiwidG9nZ2xlRWRpdG9yVmlzaWJpbGl0eSIsIl9zZXRNYXBib3hNYXAiLCJob3ZlckluZm8iLCJ1bmRlZmluZWQiLCJldnQiLCJwb2ludCIsIl9yZW5kZXJEZWNrT3ZlcmxheSIsIl9yZW5kZXJNYXBib3hPdmVybGF5cyIsInBvbHlnb25GaWx0ZXJzIiwiZGVsZXRlRmVhdHVyZSIsInNldFNlbGVjdGVkRmVhdHVyZSIsInNldEZlYXR1cmVzIiwic2V0UG9seWdvbkZpbHRlckxheWVyIiwidmlzaWJsZSIsInRvcE1hcFN0eWxlIiwiX3JlbmRlck1hcFBvcG92ZXIiLCJnbG9iZSIsIl9yZW5kZXJNYXAiLCJDb21wb25lbnQiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiYXJyYXlPZiIsImFueSIsIm51bWJlciIsImJvb2wiLCJjbGlja2VkIiwib25NYXBUb2dnbGVMYXllciIsImZ1bmMiLCJNYXBib3hHTE1hcCIsImRpc3BsYXlOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXFCQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFRQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFPQTs7QUFDQTs7QUFHQTs7QUFxRUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWxFQSxJQUFNQSxtQkFBbUIsR0FBRyx5Q0FBNUI7O0lBRU1DLGlCOzs7Ozs7Ozs7Ozs7V0FHSiw4QkFBa0M7QUFBQSxVQUFsQkMsS0FBa0IsUUFBbEJBLEtBQWtCO0FBQUEsVUFBWEMsUUFB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QVVDLE1BeEJKO0FBeUJqQmpNLElBQUFBLFNBQVMsRUFBRWdNLHNCQUFVQyxNQXpCSjtBQTBCakJRLElBQUFBLGdCQUFnQixFQUFFVCxzQkFBVVUsSUExQlg7QUEyQmpCN0ssSUFBQUEsZ0JBQWdCLEVBQUVtSyxzQkFBVVUsSUEzQlg7QUE0QmpCdkssSUFBQUEsV0FBVyxFQUFFNkosc0JBQVVVLElBNUJOO0FBNkJqQnRLLElBQUFBLFlBQVksRUFBRTRKLHNCQUFVVSxJQTdCUDtBQThCakJsTCxJQUFBQSxLQUFLLEVBQUV3SyxzQkFBVU0sTUE5QkE7QUErQmpCcE0sSUFBQUEsYUFBYSxFQUFFOEwsc0JBQVVDO0FBL0JSLEdBRnFEO0FBQUEsbUNBQ3BFMU0sWUFEb0Usa0JBb0NsRDtBQUNwQnVKLElBQUFBLFlBQVksRUFBRTZELHNCQURNO0FBRXBCeEgsSUFBQUEsV0FBVyxFQUFFLEVBRk87QUFHcEIzRCxJQUFBQSxLQUFLLEVBQUUsQ0FIYTtBQUlwQi9CLElBQUFBLE9BQU8sRUFBRTtBQUpXLEdBcENrRDtBQXdpQjFFRixFQUFBQSxZQUFZLENBQUNxTixXQUFiLEdBQTJCLGNBQTNCO0FBRUEsU0FBT3JOLFlBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMiBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbi8vIGxpYnJhcmllc1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBjcmVhdGVSZWZ9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgTWFwYm94R0xNYXAgZnJvbSAncmVhY3QtbWFwLWdsJztcbmltcG9ydCBEZWNrR0wgZnJvbSAnQGRlY2suZ2wvcmVhY3QnO1xuaW1wb3J0IHtjcmVhdGVTZWxlY3Rvcn0gZnJvbSAncmVzZWxlY3QnO1xuaW1wb3J0IHtcbiAgT1BFUkFUSU9OLFxuICBMYXllcixcbiAgQW1iaWVudExpZ2h0LFxuICBMaWdodGluZ0VmZmVjdCxcbiAgUG9zdFByb2Nlc3NFZmZlY3QsXG4gIF9TdW5MaWdodFxufSBmcm9tICdAZGVjay5nbC9jb3JlJztcbmltcG9ydCB7YnJpZ2h0bmVzc0NvbnRyYXN0LCBodWVTYXR1cmF0aW9uLCBpbmssIHZpYnJhbmNlfSBmcm9tICdAbHVtYS5nbC9zaGFkZXJ0b29scyc7XG5pbXBvcnQge1NvbGlkUG9seWdvbkxheWVyfSBmcm9tICdAZGVjay5nbC9sYXllcnMnO1xuaW1wb3J0IHtUaWxlTGF5ZXJ9IGZyb20gJ0BkZWNrLmdsL2dlby1sYXllcnMnO1xuaW1wb3J0IHtlcnJvck5vdGlmaWNhdGlvbn0gZnJvbSAndXRpbHMvbm90aWZpY2F0aW9ucy11dGlscyc7XG5cbi8vIGNvbXBvbmVudHNcbmltcG9ydCBNYXBQb3BvdmVyRmFjdG9yeSBmcm9tICdjb21wb25lbnRzL21hcC9tYXAtcG9wb3Zlcic7XG5pbXBvcnQgTWFwQ29udHJvbEZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLWNvbnRyb2wnO1xuaW1wb3J0IHtTdHlsZWRNYXBDb250YWluZXIsIFN0eWxlZEF0dHJidXRpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuaW1wb3J0IEVkaXRvckZhY3RvcnkgZnJvbSAnLi9lZGl0b3IvZWRpdG9yJztcblxuLy8gdXRpbHNcbmltcG9ydCB7Z2VuZXJhdGVNYXBib3hMYXllcnMsIHVwZGF0ZU1hcGJveExheWVyc30gZnJvbSAnbGF5ZXJzL21hcGJveC11dGlscyc7XG5pbXBvcnQge3NldExheWVyQmxlbmRpbmd9IGZyb20gJ3V0aWxzL2dsLXV0aWxzJztcbmltcG9ydCB7dHJhbnNmb3JtUmVxdWVzdH0gZnJvbSAndXRpbHMvbWFwLXN0eWxlLXV0aWxzL21hcGJveC11dGlscyc7XG5pbXBvcnQge3JlbmRlckRlY2tHbExheWVyLCBwcmVwYXJlTGF5ZXJzVG9SZW5kZXIsIHByZXBhcmVMYXllcnNGb3JEZWNrfSBmcm9tICd1dGlscy9sYXllci11dGlscyc7XG5cbi8vIGRlZmF1bHQtc2V0dGluZ3NcbmltcG9ydCBUaHJlZURCdWlsZGluZ0xheWVyIGZyb20gJ2RlY2tnbC1sYXllcnMvM2QtYnVpbGRpbmctbGF5ZXIvM2QtYnVpbGRpbmctbGF5ZXInO1xuaW1wb3J0IHtcbiAgRklMVEVSX1RZUEVTLFxuICBHRU9DT0RFUl9MQVlFUl9JRCxcbiAgTUFTS19MQVlFUl9JRCxcbiAgVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUVcbn0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQge29ic2VydmVEaW1lbnNpb25zLCB1bm9ic2VydmVEaW1lbnNpb25zfSBmcm9tICcuLi91dGlscy9vYnNlcnZlLWRpbWVuc2lvbnMnO1xuaW1wb3J0IHtMT0NBTEVfQ09ERVN9IGZyb20gJ2xvY2FsaXphdGlvbi9sb2NhbGVzJztcblxuLy8gM0QgdGlsZXNcbmltcG9ydCB7X1RlcnJhaW5FeHRlbnNpb24gYXMgVGVycmFpbkV4dGVuc2lvbn0gZnJvbSAnQGRlY2suZ2wvZXh0ZW5zaW9ucyc7XG5pbXBvcnQge1RpbGUzRExheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcblxuY29uc3QgR09PR0xFX01BUFNfQVBJX0tFWSA9ICdBSXphU3lDcHZReW1jNXdqU1lJc3h5M1JWMXdpZE0zcDNoNzhDQWsnO1xuXG5jbGFzcyBDdXN0b21UaWxlM0RMYXllciBleHRlbmRzIFRpbGUzRExheWVyIHtcbiAgc3RhdGljIGxheWVyTmFtZSA9ICdDdXN0b21UaWxlM0RMYXllcic7XG5cbiAgZmlsdGVyU3ViTGF5ZXIoe2xheWVyLCB2aWV3cG9ydH0pIHtcbiAgICAvLyBEbyBub3Qgc2hvdyB0aWxlcyB3aGljaCBhcmUgbWFueSBsYXllcnMgdG9vIGxvdyBpbiByZXNvbHV0aW9uIChhdm9pZHMgYXJ0aWZhY3RzKVxuICAgIGNvbnN0IGxvZFpvb20gPSAyMiAtIE1hdGgubG9nMihsYXllci5wcm9wcy50aWxlLmxvZE1ldHJpY1ZhbHVlKTtcbiAgICByZXR1cm4gbG9kWm9vbSA+IHZpZXdwb3J0Py56b29tO1xuICB9XG59XG5cbmxldCBoID0gMDtcbmNvbnN0IHRpbGVzM2QgPSBuZXcgQ3VzdG9tVGlsZTNETGF5ZXIoe1xuICBpZDogJ2dvb2dsZS0zZC10aWxlcycsXG4gIGRhdGE6ICdodHRwczovL3RpbGUuZ29vZ2xlYXBpcy5jb20vdjEvM2R0aWxlcy9yb290Lmpzb24nLFxuICBvblRpbGVzZXRMb2FkOiB0aWxlc2V0M2QgPT4ge1xuICAgIHRpbGVzZXQzZC5vcHRpb25zLm1heGltdW1TY3JlZW5TcGFjZUVycm9yID0gNTtcbiAgICB0aWxlc2V0M2QuX29uVGlsZUxvYWRFcnJvciA9ICgpID0+IHt9O1xuICAgIHRpbGVzZXQzZC5vcHRpb25zLm9uVHJhdmVyc2FsQ29tcGxldGUgPSBzZWxlY3RlZFRpbGVzID0+IHtcbiAgICAgIGxldCBtaW5Mb2QgPSBJbmZpbml0eTtcbiAgICAgIGZvciAoY29uc3Qge2xvZE1ldHJpY1ZhbHVlfSBvZiBzZWxlY3RlZFRpbGVzKSB7XG4gICAgICAgIGlmIChsb2RNZXRyaWNWYWx1ZSA8IG1pbkxvZCkgbWluTG9kID0gbG9kTWV0cmljVmFsdWU7XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJlZCA9IHNlbGVjdGVkVGlsZXMuZmlsdGVyKHQgPT4gdC5sb2RNZXRyaWNWYWx1ZSA8IDQgKiBtaW5Mb2QpO1xuXG4gICAgICAvLyBIYWNreSB3YXkgdG8gb2J0YWluIGhlaWdodCBhYm92ZSBzZWEgbGV2ZWwgdG8gaW1wcm92ZSBjb250cm9sc1xuICAgICAgaWYgKGZpbHRlcmVkLmxlbmd0aCkge1xuICAgICAgICBoID0gZmlsdGVyZWQubWFwKHQgPT4gdC5ib3VuZGluZ0JveFswXVsyXSkucmVkdWNlKChhLCBuKSA9PiBhICsgbikgLyBmaWx0ZXJlZC5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxlY3RlZFRpbGVzO1xuICAgIH07XG4gIH0sXG4gIGxvYWRPcHRpb25zOiB7XG4gICAgZmV0Y2g6IHtoZWFkZXJzOiB7J1gtR09PRy1BUEktS0VZJzogR09PR0xFX01BUFNfQVBJX0tFWX19XG4gIH0sXG4gIC8vIEB0cy1pZ25vcmVcbiAgb3BlcmF0aW9uOiAndGVycmFpbitkcmF3JyAvLyBSZXF1aXJlZCB0byBlbmFibGUgZHJhcGluZyBvZiBvdGhlciBsYXllcnNcbn0pO1xuY29uc3QgdGVycmFpbkV4dGVuc2lvbiA9IG5ldyBUZXJyYWluRXh0ZW5zaW9uKCk7XG5cbi8vIEVmZmVjdHNcbmNvbnN0IGFtYmllbnRMaWdodCA9IG5ldyBBbWJpZW50TGlnaHQoe2NvbG9yOiBbMjU1LCAyNTUsIDI1NV0sIGludGVuc2l0eTogMX0pO1xuY29uc3Qgc3VuTGlnaHQgPSBuZXcgX1N1bkxpZ2h0KHtcbiAgdGltZXN0YW1wOiAxNjgzODY5OTE1Nzc3LFxuICBjb2xvcjogWzI1NSwgMjU1LCAyNTVdLFxuICBpbnRlbnNpdHk6IDEsXG4gIF9zaGFkb3c6IHRydWVcbn0pO1xuY29uc3QgbGlnaHRpbmdFZmZlY3QgPSBuZXcgTGlnaHRpbmdFZmZlY3Qoe1xuICBhbWJpZW50TGlnaHQsXG4gIHN1bkxpZ2h0XG59KTtcbmxpZ2h0aW5nRWZmZWN0LnNoYWRvd0NvbG9yID0gWzAsIDAsIDAsIDBdO1xuXG5jb25zdCBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoYnJpZ2h0bmVzc0NvbnRyYXN0LCB7XG4gIGNvbnRyYXN0OiAwLFxuICBicmlnaHRuZXNzOiAwLjJcbn0pO1xuXG5jb25zdCBodWVTYXR1cmF0aW9uRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGh1ZVNhdHVyYXRpb24sIHtodWU6IDAsIHNhdHVyYXRpb246IDAuM30pO1xuXG5jb25zdCB2aWJyYW5jZUVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdCh2aWJyYW5jZSwge2Ftb3VudDogMX0pO1xuXG4vLyBQZXJmb3JtYW5jZSBkZWJ1Z2dpbmdcbmltcG9ydCB7Y3JlYXRlVHJhY2tlciwgY3JlYXRlTGF5ZXJVcGRhdGVUcmFja2VyLCByZW5kZXJQZXJmb3JtYW5jZVN0YXRzfSBmcm9tICcuL3BlcmZvcm1hbmNlJztcbmNvbnN0IHRyYWNrZXJzID0ge307XG5jb25zdCBQRVJGX0RFQlVHID0gd2luZG93Py5sb2NhdGlvbj8uc2VhcmNoPy5pbmNsdWRlcygnUEVSRl9ERUJVRycpO1xuaWYgKFBFUkZfREVCVUcpIHtcbiAgdHJhY2tlcnMuZHJhd0NvdW50ID0gY3JlYXRlVHJhY2tlcignZHJhd3MnKTtcbiAgdHJhY2tlcnMudmlld3BvcnRDaGFuZ2VDb3VudCA9IGNyZWF0ZVRyYWNrZXIoJ3ZpZXdwb3J0IGNoYW5nZXMnKTtcbiAgY3JlYXRlTGF5ZXJVcGRhdGVUcmFja2VyKCdzdGF0ZSB1cGRhdGVzJywgW0xheWVyLCBUaWxlTGF5ZXJdKTtcbn1cblxuLyoqIEB0eXBlIHt7W2tleTogc3RyaW5nXTogUmVhY3QuQ1NTUHJvcGVydGllc319ICovXG5jb25zdCBNQVBfU1RZTEUgPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfSxcbiAgdG9wOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnMHB4JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICcxMDAlJ1xuICB9XG59O1xuXG5jb25zdCBNQVBCT1hHTF9TVFlMRV9VUERBVEUgPSAnc3R5bGUubG9hZCc7XG5jb25zdCBNQVBCT1hHTF9SRU5ERVIgPSAncmVuZGVyJztcbmNvbnN0IFRSQU5TSVRJT05fRFVSQVRJT04gPSAwO1xuXG5leHBvcnQgY29uc3QgQXR0cmlidXRpb24gPSAoKSA9PiAoXG4gIDxTdHlsZWRBdHRyYnV0aW9uPlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxvZ29cIj5cbiAgICAgIEJhc2VtYXAgYnk6XG4gICAgICA8YVxuICAgICAgICBjbGFzc05hbWU9XCJtYXBib3hnbC1jdHJsLWxvZ29cIlxuICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vXCJcbiAgICAgICAgYXJpYS1sYWJlbD1cIk1hcGJveCBsb2dvXCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzc05hbWU9XCJhdHRyaXRpb24tbGlua1wiPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8va2VwbGVyLmdsL3BvbGljeS9cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIGtlcGxlci5nbCB8eycgJ31cbiAgICAgIDwvYT5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL2Fib3V0L21hcHMvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBNYXBib3ggfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCI+XG4gICAgICAgIMKpIE9wZW5TdHJlZXRNYXAgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9tYXAtZmVlZGJhY2svXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICA8c3Ryb25nPkltcHJvdmUgdGhpcyBtYXA8L3N0cm9uZz5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9TdHlsZWRBdHRyYnV0aW9uPlxuKTtcblxuTWFwQ29udGFpbmVyRmFjdG9yeS5kZXBzID0gW01hcFBvcG92ZXJGYWN0b3J5LCBNYXBDb250cm9sRmFjdG9yeSwgRWRpdG9yRmFjdG9yeV07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hcENvbnRhaW5lckZhY3RvcnkoTWFwUG9wb3ZlciwgTWFwQ29udHJvbCwgRWRpdG9yKSB7XG4gIGNsYXNzIE1hcENvbnRhaW5lciBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIC8vIHJlcXVpcmVkXG4gICAgICBkYXRhc2V0czogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGludGVyYWN0aW9uQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBsYXllckJsZW5kaW5nOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBsYXllck9yZGVyOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJEYXRhOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJzOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuYW55KS5pc1JlcXVpcmVkLFxuICAgICAgZmlsdGVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBtYXBDb250cm9sczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3R5bGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIHNrZXRjaFZhbHVlOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW46IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIG1hcGJveEFwaVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHZpc1N0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwU3RhdGVBY3Rpb25zOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICB1aVN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuXG4gICAgICAvLyBvcHRpb25hbFxuICAgICAgcHJpbWFyeTogUHJvcFR5cGVzLmJvb2wsIC8vIHByaW1hcnkgb25lIHdpbGwgYmUgcmVwb3J0aW5nIGl0cyBzaXplIHRvIGFwcFN0YXRlXG4gICAgICByZWFkT25seTogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBpc0V4cG9ydDogUHJvcFR5cGVzLmJvb2wsXG4gICAgICBjbGlja2VkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgaG92ZXJJbmZvOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgbWFwTGF5ZXJzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgICAgb25NYXBUb2dnbGVMYXllcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFN0eWxlTG9hZGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIG9uTWFwUmVuZGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICAgIGdldE1hcGJveFJlZjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBpbmRleDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIHBvcHVwU2V0dGluZ3M6IFByb3BUeXBlcy5vYmplY3RcbiAgICB9O1xuXG4gICAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgIE1hcENvbXBvbmVudDogTWFwYm94R0xNYXAsXG4gICAgICBkZWNrR2xQcm9wczoge30sXG4gICAgICBpbmRleDogMCxcbiAgICAgIHByaW1hcnk6IHRydWVcbiAgICB9O1xuXG4gICAgY29uc3RydWN0b3IocHJvcHMpIHtcbiAgICAgIHN1cGVyKHByb3BzKTtcblxuICAgICAgdGhpcy5wcmV2aW91c0xheWVycyA9IHtcbiAgICAgICAgLy8gW2xheWVycy5pZF06IG1hcGJveExheWVyQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLl9kZWNrID0gbnVsbDtcbiAgICAgIHRoaXMuX3JlZiA9IGNyZWF0ZVJlZigpO1xuXG4gICAgICAvLyBSZW5kZXIgbGltaXRpbmcgbWVjaGFuaXNtXG4gICAgICB0aGlzLl9oYXNSZW5kZXJlZCA9IGNyZWF0ZVJlZigpO1xuICAgICAgdGhpcy5fbW91c2VQb3NpdGlvbiA9IGNyZWF0ZVJlZigpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgb2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQsIHRoaXMuX2hhbmRsZVJlc2l6ZSk7XG4gICAgfVxuXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1kaWQtdXBkYXRlLXNldC1zdGF0ZVxuICAgICAgICB0aGlzLnNldFN0YXRlKHtjb250ZXh0TG9zdDogZmFsc2V9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcbiAgICAgIC8vIHVuYmluZCBtYXBib3hnbCBldmVudCBsaXN0ZW5lclxuICAgICAgaWYgKHRoaXMuX21hcCkge1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1NUWUxFX1VQREFURSk7XG4gICAgICAgIHRoaXMuX21hcC5vZmYoTUFQQk9YR0xfUkVOREVSKTtcbiAgICAgIH1cbiAgICAgIHVub2JzZXJ2ZURpbWVuc2lvbnModGhpcy5fcmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIF9oYW5kbGVSZXNpemUgPSBkaW1lbnNpb25zID0+IHtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgaWYgKHByaW1hcnkpIHtcbiAgICAgICAgY29uc3Qge21hcFN0YXRlQWN0aW9uc30gPSB0aGlzLnByb3BzO1xuICAgICAgICBpZiAoIWlzRXhwb3J0ICYmIGRpbWVuc2lvbnMgJiYgZGltZW5zaW9ucy53aWR0aCA+IDAgJiYgZGltZW5zaW9ucy5oZWlnaHQgPiAwKSB7XG4gICAgICAgICAgbWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChkaW1lbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBza2V0Y2hWYWx1ZSA9IHByb3BzID0+IHByb3BzPy5za2V0Y2hWYWx1ZTtcbiAgICBsYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVycztcbiAgICBsYXllckRhdGFTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLmxheWVyRGF0YTtcbiAgICBtYXBMYXllcnNTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLm1hcExheWVycztcbiAgICBsYXllck9yZGVyU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllck9yZGVyO1xuICAgIHBvcHVwU2V0dGluZ3NTZWxlY3RvciA9IHByb3BzID0+IHByb3BzLnBvcHVwU2V0dGluZ3M7XG5cbiAgICBsYXllcnNUb1JlbmRlclNlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubWFwTGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLnBvcHVwU2V0dGluZ3NTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNUb1JlbmRlclxuICAgICk7XG4gICAgbGF5ZXJzRm9yRGVja1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHByZXBhcmVMYXllcnNGb3JEZWNrXG4gICAgKTtcbiAgICBmaWx0ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5maWx0ZXJzO1xuICAgIHBvbHlnb25GaWx0ZXJzID0gY3JlYXRlU2VsZWN0b3IodGhpcy5maWx0ZXJzU2VsZWN0b3IsIGZpbHRlcnMgPT5cbiAgICAgIGZpbHRlcnMuZmlsdGVyKGYgPT4gZi50eXBlID09PSBGSUxURVJfVFlQRVMucG9seWdvbilcbiAgICApO1xuXG4gICAgbWFwYm94TGF5ZXJzU2VsZWN0b3IgPSBjcmVhdGVTZWxlY3RvcihcbiAgICAgIHRoaXMubGF5ZXJzU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyRGF0YVNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllck9yZGVyU2VsZWN0b3IsXG4gICAgICB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IsXG4gICAgICBnZW5lcmF0ZU1hcGJveExheWVyc1xuICAgICk7XG5cbiAgICAvKiBjb21wb25lbnQgcHJpdmF0ZSBmdW5jdGlvbnMgKi9cbiAgICBfb25DbG9zZU1hcFBvcG92ZXIgPSAoKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5vbkxheWVyQ2xpY2sobnVsbCk7XG4gICAgfTtcblxuICAgIF9vbkxheWVyU2V0RG9tYWluID0gKGlkeCwgY29sb3JEb21haW4pID0+IHtcbiAgICAgIHRoaXMucHJvcHMudmlzU3RhdGVBY3Rpb25zLmxheWVyQ29uZmlnQ2hhbmdlKHRoaXMucHJvcHMubGF5ZXJzW2lkeF0sIHtcbiAgICAgICAgY29sb3JEb21haW5cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIgPSBsYXllcklkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleDogbWFwSW5kZXggPSAwLCB2aXNTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgIHZpc1N0YXRlQWN0aW9ucy50b2dnbGVMYXllckZvck1hcChtYXBJbmRleCwgbGF5ZXJJZCk7XG4gICAgfTtcblxuICAgIF9vbk1hcGJveFN0eWxlVXBkYXRlID0gKCkgPT4ge1xuICAgICAgLy8gZm9yY2UgcmVmcmVzaCBtYXBib3hnbCBsYXllcnNcbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7fTtcbiAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuXG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBTdHlsZUxvYWRlZCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQodGhpcy5fbWFwKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3NldE1hcGJveE1hcCA9IG1hcGJveCA9PiB7XG4gICAgICBpZiAoIXRoaXMuX21hcCAmJiBtYXBib3gpIHtcbiAgICAgICAgdGhpcy5fbWFwID0gbWFwYm94LmdldE1hcCgpO1xuICAgICAgICAvLyBpIG5vdGljZWQgaW4gY2VydGFpbiBjb250ZXh0IHdlIGRvbid0IGFjY2VzcyB0aGUgYWN0dWFsIG1hcCBlbGVtZW50XG4gICAgICAgIGlmICghdGhpcy5fbWFwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIGJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1NUWUxFX1VQREFURSwgdGhpcy5fb25NYXBib3hTdHlsZVVwZGF0ZSk7XG5cbiAgICAgICAgdGhpcy5fbWFwLm9uKE1BUEJPWEdMX1JFTkRFUiwgKCkgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vbk1hcFJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFJlbmRlcih0aGlzLl9tYXApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmdldE1hcGJveFJlZikge1xuICAgICAgICAvLyBUaGUgcGFyZW50IGNvbXBvbmVudCBjYW4gZ2FpbiBhY2Nlc3MgdG8gb3VyIE1hcGJveEdsTWFwIGJ5XG4gICAgICAgIC8vIHByb3ZpZGluZyB0aGlzIGNhbGxiYWNrLiBOb3RlIHRoYXQgJ21hcGJveCcgd2lsbCBiZSBudWxsIHdoZW4gdGhlXG4gICAgICAgIC8vIHJlZiBpcyB1bnNldCAoZS5nLiB3aGVuIGEgc3BsaXQgbWFwIGlzIGNsb3NlZCkuXG4gICAgICAgIHRoaXMucHJvcHMuZ2V0TWFwYm94UmVmKG1hcGJveCwgdGhpcy5wcm9wcy5pbmRleCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9vbkRlY2tJbml0aWFsaXplZChnbCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbkRlY2tJbml0aWFsaXplZCh0aGlzLl9kZWNrLCBnbCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgX29uQmVmb3JlUmVuZGVyID0gKHtnbH0pID0+IHtcbiAgICAgIHNldExheWVyQmxlbmRpbmcoZ2wsIHRoaXMucHJvcHMubGF5ZXJCbGVuZGluZyk7XG4gICAgfTtcblxuICAgIF9vbkRlY2tFcnJvciA9IChlcnJvciwgbGF5ZXIpID0+IHtcbiAgICAgIGlmIChlcnJvcj8ubWVzc2FnZSA9PT0gJ1dlYkdMIGNvbnRleHQgaXMgbG9zdCcpIHtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IHRydWV9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBgQW4gZXJyb3IgaW4gZGVjay5nbDogJHtlcnJvcj8ubWVzc2FnZX0gaW4gJHtsYXllcj8uaWR9YDtcbiAgICAgIGNvbnN0IG5vdGlmaWNhdGlvbklkID0gYCR7bGF5ZXI/LmlkfS0ke2Vycm9yPy5tZXNzYWdlfWA7XG5cbiAgICAgIC8vIFRocm90dGxlIGVycm9yIG5vdGlmaWNhdGlvbnMsIGFzIFJlYWN0IGRvZXNuJ3QgbGlrZSB0b28gbWFueSBzdGF0ZSBjaGFuZ2VzIGZyb20gaGVyZS5cbiAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWQgPSB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkIHx8IHt9O1xuICAgICAgY29uc3QgbGFzdFNob3duID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF07XG4gICAgICBpZiAoIWxhc3RTaG93biB8fCBsYXN0U2hvd24gPCBEYXRlLm5vdygpIC0gVEhST1RUTEVfTk9USUZJQ0FUSU9OX1RJTUUpIHtcbiAgICAgICAgdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZFtub3RpZmljYXRpb25JZF0gPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBuZXcgZXJyb3Igbm90aWZpY2F0aW9uIG9yIHVwZGF0ZSBleGlzdGluZyBvbmUgd2l0aCBzYW1lIGlkLlxuICAgICAgICAvLyBVcGRhdGUgaXMgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9yZGVyIG9mIG5vdGlmaWNhdGlvbnMgYXMgdGhleSBwcm9iYWJseSBhcmUgZ29pbmcgdG8gXCJqdW1wXCIgYmFzZWQgb24gb3JkZXIgb2YgZXJyb3JzLlxuICAgICAgICBjb25zdCB7dWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgdWlTdGF0ZUFjdGlvbnMuYWRkTm90aWZpY2F0aW9uKFxuICAgICAgICAgIGVycm9yTm90aWZpY2F0aW9uKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGlkOiBub3RpZmljYXRpb25JZFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qIGNvbXBvbmVudCByZW5kZXIgZnVuY3Rpb25zICovXG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcFBvcG92ZXIobGF5ZXJzVG9SZW5kZXIpIHtcbiAgICAgIC8vIE92ZXJyaWRlbiBpbiBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKiBlc2xpbnQtZW5hYmxlIGNvbXBsZXhpdHkgKi9cblxuICAgIF9nZXRIb3ZlclhZKHZpZXdwb3J0LCBsbmdMYXQpIHtcbiAgICAgIGNvbnN0IHNjcmVlbkNvb3JkID0gIXZpZXdwb3J0IHx8ICFsbmdMYXQgPyBudWxsIDogdmlld3BvcnQucHJvamVjdChsbmdMYXQpO1xuICAgICAgcmV0dXJuIHNjcmVlbkNvb3JkICYmIHt4OiBzY3JlZW5Db29yZFswXSwgeTogc2NyZWVuQ29vcmRbMV19O1xuICAgIH1cblxuICAgIF9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1hcFN0YXRlLFxuICAgICAgICBtYXBTdHlsZSxcbiAgICAgICAgbGF5ZXJEYXRhLFxuICAgICAgICBsYXllck9yZGVyLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIHZpc1N0YXRlQWN0aW9ucyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFza1BvbHlnb25cbiAgICAgIH0gPSB0aGlzLnByb3BzO1xuICAgICAgdHJhY2tlcnMuZHJhd0NvdW50Py5pbmNyZW1lbnQoKTtcblxuICAgICAgLy8gaW5pdGlhbGlzZSBsYXllcnMgZnJvbSBwcm9wcyBpZiBleGlzdHNcbiAgICAgIGxldCBkZWNrR2xMYXllcnMgPSB0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnMgfHwgW107XG5cbiAgICAgIC8vIHdhaXQgdW50aWwgZGF0YSBpcyByZWFkeSBiZWZvcmUgcmVuZGVyIGRhdGEgbGF5ZXJzXG4gICAgICBpZiAobGF5ZXJEYXRhICYmIGxheWVyRGF0YS5sZW5ndGgpIHtcbiAgICAgICAgLy8gbGFzdCBsYXllciByZW5kZXIgZmlyc3RcbiAgICAgICAgY29uc3QgZGF0YUxheWVycyA9IGxheWVyT3JkZXJcbiAgICAgICAgICAuc2xpY2UoKVxuICAgICAgICAgIC5yZXZlcnNlKClcbiAgICAgICAgICAuZmlsdGVyKGlkeCA9PiBsYXllcnNGb3JEZWNrW2xheWVyc1tpZHhdLmlkXSlcbiAgICAgICAgICAucmVkdWNlKChvdmVybGF5cywgaWR4KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBsYXllckNhbGxiYWNrcyA9IHtcbiAgICAgICAgICAgICAgb25TZXRMYXllckRvbWFpbjogdmFsID0+IHRoaXMuX29uTGF5ZXJTZXREb21haW4oaWR4LCB2YWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgbGF5ZXJPdmVybGF5ID0gcmVuZGVyRGVja0dsTGF5ZXIodGhpcy5wcm9wcywgbGF5ZXJDYWxsYmFja3MsIGlkeCk7XG4gICAgICAgICAgICByZXR1cm4gb3ZlcmxheXMuY29uY2F0KGxheWVyT3ZlcmxheSB8fCBbXSk7XG4gICAgICAgICAgfSwgW10pO1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KGRhdGFMYXllcnMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5kZWNrR2xQcm9wcz8ubGF5ZXJzT25Ub3ApIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzID0gZGVja0dsTGF5ZXJzLmNvbmNhdCh0aGlzLnByb3BzLmRlY2tHbFByb3BzLmxheWVyc09uVG9wKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hc2tQb2x5Z29uKSB7XG4gICAgICAgIGRlY2tHbExheWVycy5wdXNoKFxuICAgICAgICAgIG5ldyBTb2xpZFBvbHlnb25MYXllcih7XG4gICAgICAgICAgICBpZDogTUFTS19MQVlFUl9JRCxcbiAgICAgICAgICAgIG9wZXJhdGlvbjogT1BFUkFUSU9OLk1BU0ssXG4gICAgICAgICAgICBkYXRhOiBbbWFza1BvbHlnb25dLFxuICAgICAgICAgICAgZGF0YUNvbXBhcmF0b3I6IChkYXRhLCBvbGREYXRhKSA9PiBkYXRhWzBdID09PSBvbGREYXRhWzBdLFxuICAgICAgICAgICAgZ2V0UG9seWdvbjogZCA9PiBkLFxuICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBbMjU1LCAyNTUsIDI1NSwgMjU1XVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtYXBTdHlsZS52aXNpYmxlTGF5ZXJHcm91cHNbJzNkIGJ1aWxkaW5nJ10pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFRocmVlREJ1aWxkaW5nTGF5ZXIoe1xuICAgICAgICAgICAgaWQ6ICdfa2VwbGVyZ2xfM2QtYnVpbGRpbmcnLFxuICAgICAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgICAgICB0aHJlZURCdWlsZGluZ0NvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yLFxuICAgICAgICAgICAgdXBkYXRlVHJpZ2dlcnM6IHtcbiAgICAgICAgICAgICAgZ2V0RmlsbENvbG9yOiBtYXBTdHlsZS50aHJlZURCdWlsZGluZ0NvbG9yXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGVmZmVjdHMgPSBbXTtcbiAgICAgIGlmIChtYXBTdHlsZS5ib3R0b21NYXBTdHlsZT8udHlwZSA9PT0gJ2dtYXBzXzNkJykge1xuICAgICAgICAvLyBJbmplY3QgM0QgdGlsZXMgd2hlbiBtYXAgc3R5bGUgaXMgVm95YWdlciB3aXRob3V0IGxheWVyc1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnNcbiAgICAgICAgICAuZmlsdGVyKGwgPT4gQm9vbGVhbihsICYmIGwuY2xvbmUpKVxuICAgICAgICAgIC5tYXAobCA9PiBsLmNsb25lKHtleHRlbnNpb25zOiBbLi4ubC5wcm9wcy5leHRlbnNpb25zLCB0ZXJyYWluRXh0ZW5zaW9uXX0pKTtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2godGlsZXMzZC5jbG9uZSgpKTtcblxuICAgICAgICBpZiAobWFwU3R5bGUuc3R5bGVUeXBlID09PSAnZ29vZ2xlLTNkLXNrZXRjaCcpIHtcbiAgICAgICAgICBjb25zdCBpbmtFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QoaW5rLCB7c3RyZW5ndGg6IG1hcFN0eWxlLnNrZXRjaFZhbHVlIHx8IDAuMn0pO1xuICAgICAgICAgIGNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gICAgICAgICAgICBsaWdodGluZ0VmZmVjdCxcbiAgICAgICAgICAgIGh1ZVNhdHVyYXRpb25FZmZlY3QsXG4gICAgICAgICAgICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gICAgICAgICAgICB2aWJyYW5jZUVmZmVjdCxcbiAgICAgICAgICAgIGlua0VmZmVjdFxuICAgICAgICAgIF07XG4gICAgICAgICAgZWZmZWN0cyA9IGFsbEVmZmVjdHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGltaXQgcmVuZGVyc1xuICAgICAgY29uc3QgaGFzUmVuZGVyZWQgPSB0aGlzLl9oYXNSZW5kZXJlZDtcbiAgICAgIGNvbnN0IHJlc2V0SGFzUmVuZGVyZWQgPSAoKSA9PiAoaGFzUmVuZGVyZWQuY3VycmVudCA9IGZhbHNlKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxEZWNrR0xcbiAgICAgICAgICBjb250cm9sbGVyPXt0cnVlfVxuICAgICAgICAgIHsuLi50aGlzLnByb3BzLmRlY2tHbFByb3BzfVxuICAgICAgICAgIHZpZXdTdGF0ZT17bWFwU3RhdGV9XG4gICAgICAgICAgb25WaWV3U3RhdGVDaGFuZ2U9eyh7dmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlfSkgPT4ge1xuICAgICAgICAgICAgLy8gTGltaXQgdXBkYXRlcyAocHJldmVudHMgZnJlZXplcyB3aGVuIGRldiB0b29scyBvcGVuKVxuICAgICAgICAgICAgaWYgKCFoYXNSZW5kZXJlZC5jdXJyZW50ICYmIHZpZXdTdGF0ZS53aWR0aCA+IDEgJiYgdmlld1N0YXRlLmhlaWdodCA+IDEpIHtcbiAgICAgICAgICAgICAgaGFzUmVuZGVyZWQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuX29uVmlld3BvcnRDaGFuZ2Uodmlld1N0YXRlLCBpbnRlcmFjdGlvblN0YXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIGlkPVwiZGVmYXVsdC1kZWNrZ2wtb3ZlcmxheVwiXG4gICAgICAgICAgbGF5ZXJzPXtkZWNrR2xMYXllcnN9XG4gICAgICAgICAgZWZmZWN0cz17ZWZmZWN0c31cbiAgICAgICAgICBvbkJlZm9yZVJlbmRlcj17b3B0cyA9PiB7XG4gICAgICAgICAgICByZXNldEhhc1JlbmRlcmVkKCk7XG4gICAgICAgICAgICB0aGlzLl9vbkJlZm9yZVJlbmRlcihvcHRzKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uSG92ZXI9e3Zpc1N0YXRlQWN0aW9ucy5vbkxheWVySG92ZXJ9XG4gICAgICAgICAgb25DbGljaz17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJDbGlja31cbiAgICAgICAgICBvbkVycm9yPXtlID0+IHtcbiAgICAgICAgICAgIGRlYnVnZ2VyO1xuICAgICAgICAgICAgdGhpcy5fb25EZWNrRXJyb3IoZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICByZWY9e2NvbXAgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbXAgJiYgY29tcC5kZWNrICYmIGNvbXAuZGVjayAhPT0gdGhpcy5fZGVjaykge1xuICAgICAgICAgICAgICB0aGlzLl9kZWNrID0gY29tcC5kZWNrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgb25XZWJHTEluaXRpYWxpemVkPXtnbCA9PiB0aGlzLl9vbkRlY2tJbml0aWFsaXplZChnbCl9XG4gICAgICAgICAgbGF5ZXJGaWx0ZXI9eyh7bGF5ZXIsIHZpZXdwb3J0fSkgPT4ge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpc05hTihsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tPy5taW4pIHx8XG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1heClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRab29tUmFuZ2UgPSBNYXRoLnJvdW5kKG1hcFN0YXRlLnpvb20pO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICBsYXllci5wcm9wcy52aXNpYmlsaXR5Qnlab29tLm1pbiA8PSBjdXJyZW50Wm9vbVJhbmdlICYmXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWF4ID49IGN1cnJlbnRab29tUmFuZ2VcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgX3VwZGF0ZU1hcGJveExheWVycygpIHtcbiAgICAgIGNvbnN0IG1hcGJveExheWVycyA9IHRoaXMubWFwYm94TGF5ZXJzU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBpZiAoIU9iamVjdC5rZXlzKG1hcGJveExheWVycykubGVuZ3RoICYmICFPYmplY3Qua2V5cyh0aGlzLnByZXZpb3VzTGF5ZXJzKS5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB1cGRhdGVNYXBib3hMYXllcnModGhpcy5fbWFwLCBtYXBib3hMYXllcnMsIHRoaXMucHJldmlvdXNMYXllcnMpO1xuXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0gbWFwYm94TGF5ZXJzO1xuICAgIH1cblxuICAgIF9yZW5kZXJNYXBib3hPdmVybGF5cygpIHtcbiAgICAgIGlmICh0aGlzLl9tYXAgJiYgdGhpcy5fbWFwLmlzU3R5bGVMb2FkZWQoKSkge1xuICAgICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfb25WaWV3cG9ydENoYW5nZSA9ICh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpID0+IHtcbiAgICAgIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgLi4ucmVzdFZpZXdTdGF0ZX0gPSB2aWV3U3RhdGU7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIC8vIHJlYWN0LW1hcC1nbCBzZW5kcyAwLDAgZGltZW5zaW9ucyBkdXJpbmcgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGFmdGVyIHdlIGhhdmUgcmVjZWl2ZWQgcHJvcGVyIGRpbWVuc2lvbnMgZnJvbSBvYnNlcnZlRGltZW5zaW9uc1xuICAgICAgY29uc3QgbmV4dCA9IHtcbiAgICAgICAgLi4uKHdpZHRoID4gMCAmJiBoZWlnaHQgPiAwID8gdmlld1N0YXRlIDogcmVzdFZpZXdTdGF0ZSksXG5cbiAgICAgICAgLy8gQXV0by11cGRhdGUgdGhlIGNhbWVyYSBoZWlnaHQgYWNjb3JkaW5nIHRvIDNEIHRpbGVzLCBleGNlcHQgd2hlbiB0cmFuc2l0aW9uaW5nXG4gICAgICAgIC4uLihpbnRlcmFjdGlvblN0YXRlICYmICFpbnRlcmFjdGlvblN0YXRlLmluVHJhbnNpdGlvbiAmJiB7cG9zaXRpb246IFswLCAwLCBoXX0pXG4gICAgICAgIC8vIGVuYWJsaW5nIHRyYW5zaXRpb24gaW4gdHdvIG1hcHMgbWF5IGxlYWQgdG8gZW5kbGVzcyB1cGRhdGUgbG9vcHNcbiAgICAgICAgLy8gdHJhbnNpdGlvbkR1cmF0aW9uOiBwcmltYXJ5ID8gVFJBTlNJVElPTl9EVVJBVElPTiA6IDAgLy8gRGlzYWJsZSBmb3IgM0QgdGlsZXMgdHJhbnNpdGlvbnNcbiAgICAgIH07XG4gICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25WaWV3U3RhdGVDaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZShuZXh0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc0V4cG9ydCkge1xuICAgICAgICB0aGlzLnByb3BzLm1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAobmV4dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF90b2dnbGVNYXBDb250cm9sID0gcGFuZWxJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXgsIHVpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIHVpU3RhdGVBY3Rpb25zLnRvZ2dsZU1hcENvbnRyb2wocGFuZWxJZCwgaW5kZXgpO1xuICAgIH07XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBjb21wbGV4aXR5ICovXG4gICAgX3JlbmRlck1hcCgpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBtYXBTdGF0ZUFjdGlvbnMsXG4gICAgICAgIHNrZXRjaFZhbHVlLFxuICAgICAgICBsYXllcnMsXG4gICAgICAgIE1hcENvbXBvbmVudCxcbiAgICAgICAgZGF0YXNldHMsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIG1hcENvbnRyb2xzLFxuICAgICAgICBpc0V4cG9ydCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICB1aVN0YXRlQWN0aW9ucyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBpbnRlcmFjdGlvbkNvbmZpZyxcbiAgICAgICAgZWRpdG9yLFxuICAgICAgICBpbmRleCxcbiAgICAgICAgcHJpbWFyeVxuICAgICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgIGNvbnN0IGxheWVyc1RvUmVuZGVyID0gdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yKHRoaXMucHJvcHMpO1xuICAgICAgY29uc3QgbGF5ZXJzRm9yRGVjayA9IHRoaXMubGF5ZXJzRm9yRGVja1NlbGVjdG9yKHRoaXMucHJvcHMpO1xuXG4gICAgICBjb25zdCBtYXBQcm9wcyA9IHtcbiAgICAgICAgLi4ubWFwU3RhdGUsXG4gICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgIGhlaWdodDogJzEwMCUnLFxuICAgICAgICBwcmVzZXJ2ZURyYXdpbmdCdWZmZXI6IHRydWUsXG4gICAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuLFxuICAgICAgICBtYXBib3hBcGlVcmwsXG4gICAgICAgIHRyYW5zZm9ybVJlcXVlc3RcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGlzRWRpdCA9IChtYXBDb250cm9scy5tYXBEcmF3IHx8IHt9KS5hY3RpdmU7XG5cbiAgICAgIGNvbnN0IGhhc0dlb2NvZGVyTGF5ZXIgPSBsYXllcnMuZmluZChsID0+IGwuaWQgPT09IEdFT0NPREVSX0xBWUVSX0lEKTtcbiAgICAgIGNvbnN0IGlzU3BsaXQgPSBCb29sZWFuKG1hcFN0YXRlLmlzU3BsaXQpO1xuICAgICAgY29uc3QgbW91c2VQb3NpdGlvbiA9IHRoaXMuX21vdXNlUG9zaXRpb247XG5cbiAgICAgIGNvbnN0IG5lZWRzQmFzZW1hcCA9IG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlLnR5cGUgIT09ICdnbWFwc18zZCc7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPE1hcENvbnRyb2xcbiAgICAgICAgICAgIGRhdGFzZXRzPXtkYXRhc2V0c31cbiAgICAgICAgICAgIGF2YWlsYWJsZUxvY2FsZXM9e09iamVjdC5rZXlzKExPQ0FMRV9DT0RFUyl9XG4gICAgICAgICAgICBkcmFnUm90YXRlPXttYXBTdGF0ZS5kcmFnUm90YXRlfVxuICAgICAgICAgICAgaXNTcGxpdD17aXNTcGxpdH1cbiAgICAgICAgICAgIHByaW1hcnk9e3ByaW1hcnl9XG4gICAgICAgICAgICBpc0V4cG9ydD17aXNFeHBvcnR9XG4gICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgIGxheWVyc1RvUmVuZGVyPXtsYXllcnNUb1JlbmRlcn1cbiAgICAgICAgICAgIG1hcEluZGV4PXtpbmRleH1cbiAgICAgICAgICAgIG1hcENvbnRyb2xzPXttYXBDb250cm9sc31cbiAgICAgICAgICAgIHJlYWRPbmx5PXt0aGlzLnByb3BzLnJlYWRPbmx5fVxuICAgICAgICAgICAgc2NhbGU9e21hcFN0YXRlLnNjYWxlIHx8IDF9XG4gICAgICAgICAgICB0b3A9e2ludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyICYmIGludGVyYWN0aW9uQ29uZmlnLmdlb2NvZGVyLmVuYWJsZWQgPyA1MiA6IDB9XG4gICAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICAgIGxvY2FsZT17bG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVQZXJzcGVjdGl2ZT17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVBlcnNwZWN0aXZlfVxuICAgICAgICAgICAgb25Ub2dnbGVTcGxpdE1hcD17bWFwU3RhdGVBY3Rpb25zLnRvZ2dsZVNwbGl0TWFwfVxuICAgICAgICAgICAgb25NYXBUb2dnbGVMYXllcj17dGhpcy5faGFuZGxlTWFwVG9nZ2xlTGF5ZXJ9XG4gICAgICAgICAgICBvblRvZ2dsZU1hcENvbnRyb2w9e3RoaXMuX3RvZ2dsZU1hcENvbnRyb2x9XG4gICAgICAgICAgICBvblNldEVkaXRvck1vZGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRFZGl0b3JNb2RlfVxuICAgICAgICAgICAgb25TZXRMb2NhbGU9e3VpU3RhdGVBY3Rpb25zLnNldExvY2FsZX1cbiAgICAgICAgICAgIG9uVG9nZ2xlRWRpdG9yVmlzaWJpbGl0eT17dmlzU3RhdGVBY3Rpb25zLnRvZ2dsZUVkaXRvclZpc2liaWxpdHl9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7bmVlZHNCYXNlbWFwID8gKFxuICAgICAgICAgICAgPE1hcENvbXBvbmVudFxuICAgICAgICAgICAgICB7Li4ubWFwUHJvcHN9XG4gICAgICAgICAgICAgIGtleT1cImJvdHRvbVwiXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5fc2V0TWFwYm94TWFwfVxuICAgICAgICAgICAgICBtYXBTdHlsZT17bWFwU3R5bGUuYm90dG9tTWFwU3R5bGV9XG4gICAgICAgICAgICAgIHNrZXRjaFZhbHVlPXtza2V0Y2hWYWx1ZX1cbiAgICAgICAgICAgICAgZ2V0Q3Vyc29yPXt0aGlzLnByb3BzLmhvdmVySW5mbyA/ICgpID0+ICdwb2ludGVyJyA6IHVuZGVmaW5lZH1cbiAgICAgICAgICAgICAgb25Nb3VzZU1vdmU9e2V2dCA9PiB7XG4gICAgICAgICAgICAgICAgLy8gU2VuZGluZyBtb3VzZSBtb3ZlIHVwZGF0ZXMgdmlhIFJlZHV4IGlzIGV4cGVuc2l2ZS4gU3RvcmVcbiAgICAgICAgICAgICAgICAvLyBsb2NhbGx5IGFuZCByZWx5IG9uIGRlY2suZ2wgdG8gZHJpdmUgcmVuZGVyIHVwZGF0ZXNcbiAgICAgICAgICAgICAgICAvLyBTZWUgQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgICAgICAgICAgIG1vdXNlUG9zaXRpb24uY3VycmVudCA9IHttb3VzZVBvc2l0aW9uOiBldnQucG9pbnR9O1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7UEVSRl9ERUJVRyAmJiByZW5kZXJQZXJmb3JtYW5jZVN0YXRzKCl9XG4gICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheShsYXllcnNGb3JEZWNrKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlck1hcGJveE92ZXJsYXlzKCl9XG4gICAgICAgICAgICAgIDxFZGl0b3JcbiAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgICAgIGZpbHRlcnM9e3RoaXMucG9seWdvbkZpbHRlcnModGhpcy5wcm9wcyl9XG4gICAgICAgICAgICAgICAgaXNFbmFibGVkPXtpc0VkaXR9XG4gICAgICAgICAgICAgICAgbGF5ZXJzPXtsYXllcnN9XG4gICAgICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgICAgIG9uRGVsZXRlRmVhdHVyZT17dmlzU3RhdGVBY3Rpb25zLmRlbGV0ZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25TZWxlY3Q9e3Zpc1N0YXRlQWN0aW9ucy5zZXRTZWxlY3RlZEZlYXR1cmV9XG4gICAgICAgICAgICAgICAgb25VcGRhdGU9e3Zpc1N0YXRlQWN0aW9ucy5zZXRGZWF0dXJlc31cbiAgICAgICAgICAgICAgICBvblRvZ2dsZVBvbHlnb25GaWx0ZXI9e3Zpc1N0YXRlQWN0aW9ucy5zZXRQb2x5Z29uRmlsdGVyTGF5ZXJ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzRWRpdCA/ICdhbGwnIDogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBlZGl0b3IudmlzaWJsZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7bWFwU3R5bGUudG9wTWFwU3R5bGUgfHwgaGFzR2VvY29kZXJMYXllciA/IChcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e01BUF9TVFlMRS50b3B9PlxuICAgICAgICAgICAgICA8TWFwQ29tcG9uZW50IHsuLi5tYXBQcm9wc30ga2V5PVwidG9wXCIgbWFwU3R5bGU9e21hcFN0eWxlLnRvcE1hcFN0eWxlfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkoe1tHRU9DT0RFUl9MQVlFUl9JRF06IHRydWV9KX1cbiAgICAgICAgICAgICAgPC9NYXBDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwUG9wb3ZlcihsYXllcnNUb1JlbmRlcil9XG4gICAgICAgICAgeyFpc1NwbGl0IHx8IGluZGV4ID09PSAxID8gPEF0dHJpYnV0aW9uIC8+IDogbnVsbH1cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHttYXBTdGF0ZSwgbWFwU3R5bGV9ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFN0eWxlZE1hcENvbnRhaW5lciByZWY9e3RoaXMuX3JlZn0gc3R5bGU9e01BUF9TVFlMRS5jb250YWluZXJ9IGdsb2JlPXttYXBTdGF0ZS5nbG9iZX0+XG4gICAgICAgICAge21hcFN0eWxlLmJvdHRvbU1hcFN0eWxlICYmIHRoaXMuX3JlbmRlck1hcCgpfVxuICAgICAgICA8L1N0eWxlZE1hcENvbnRhaW5lcj5cbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgTWFwQ29udGFpbmVyLmRpc3BsYXlOYW1lID0gJ01hcENvbnRhaW5lcic7XG5cbiAgcmV0dXJuIE1hcENvbnRhaW5lcjtcbn1cbiJdfQ==
860
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21wb25lbnRzL21hcC1jb250YWluZXIuanMiXSwibmFtZXMiOlsiR09PR0xFX01BUFNfQVBJX0tFWSIsIkN1c3RvbVRpbGUzRExheWVyIiwibGF5ZXIiLCJ2aWV3cG9ydCIsImxvZFpvb20iLCJNYXRoIiwibG9nMiIsInByb3BzIiwidGlsZSIsImxvZE1ldHJpY1ZhbHVlIiwiem9vbSIsIlRpbGUzRExheWVyIiwiaCIsInRpbGVzM2QiLCJpZCIsImRhdGEiLCJvblRpbGVzZXRMb2FkIiwidGlsZXNldDNkIiwib3B0aW9ucyIsIm1heGltdW1TY3JlZW5TcGFjZUVycm9yIiwiX29uVGlsZUxvYWRFcnJvciIsIm9uVHJhdmVyc2FsQ29tcGxldGUiLCJzZWxlY3RlZFRpbGVzIiwibWluTG9kIiwiSW5maW5pdHkiLCJmaWx0ZXJlZCIsImZpbHRlciIsInQiLCJsZW5ndGgiLCJtYXAiLCJib3VuZGluZ0JveCIsInJlZHVjZSIsImEiLCJuIiwibG9hZE9wdGlvbnMiLCJmZXRjaCIsImhlYWRlcnMiLCJvcGVyYXRpb24iLCJ0ZXJyYWluRXh0ZW5zaW9uIiwiVGVycmFpbkV4dGVuc2lvbiIsImFtYmllbnRMaWdodCIsIkFtYmllbnRMaWdodCIsImNvbG9yIiwiaW50ZW5zaXR5Iiwic3VuTGlnaHQiLCJfU3VuTGlnaHQiLCJ0aW1lc3RhbXAiLCJfc2hhZG93IiwibGlnaHRpbmdFZmZlY3QiLCJMaWdodGluZ0VmZmVjdCIsInNoYWRvd0NvbG9yIiwiYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0IiwiUG9zdFByb2Nlc3NFZmZlY3QiLCJicmlnaHRuZXNzQ29udHJhc3QiLCJjb250cmFzdCIsImJyaWdodG5lc3MiLCJ2aWJyYW5jZUVmZmVjdCIsInZpYnJhbmNlIiwiYW1vdW50IiwidHJhY2tlcnMiLCJQRVJGX0RFQlVHIiwid2luZG93IiwibG9jYXRpb24iLCJzZWFyY2giLCJpbmNsdWRlcyIsImRyYXdDb3VudCIsInZpZXdwb3J0Q2hhbmdlQ291bnQiLCJMYXllciIsIlRpbGVMYXllciIsIk1BUF9TVFlMRSIsImNvbnRhaW5lciIsImRpc3BsYXkiLCJwb3NpdGlvbiIsIndpZHRoIiwiaGVpZ2h0IiwidG9wIiwicG9pbnRlckV2ZW50cyIsIk1BUEJPWEdMX1NUWUxFX1VQREFURSIsIk1BUEJPWEdMX1JFTkRFUiIsIlRSQU5TSVRJT05fRFVSQVRJT04iLCJBdHRyaWJ1dGlvbiIsIk1hcENvbnRhaW5lckZhY3RvcnkiLCJkZXBzIiwiTWFwUG9wb3ZlckZhY3RvcnkiLCJNYXBDb250cm9sRmFjdG9yeSIsIkVkaXRvckZhY3RvcnkiLCJNYXBQb3BvdmVyIiwiTWFwQ29udHJvbCIsIkVkaXRvciIsIk1hcENvbnRhaW5lciIsImRpbWVuc2lvbnMiLCJwcmltYXJ5IiwiaXNFeHBvcnQiLCJtYXBTdGF0ZUFjdGlvbnMiLCJ1cGRhdGVNYXAiLCJsYXllcnMiLCJsYXllckRhdGEiLCJtYXBMYXllcnMiLCJsYXllck9yZGVyIiwicG9wdXBTZXR0aW5ncyIsImxheWVyc1NlbGVjdG9yIiwibGF5ZXJEYXRhU2VsZWN0b3IiLCJtYXBMYXllcnNTZWxlY3RvciIsInBvcHVwU2V0dGluZ3NTZWxlY3RvciIsInByZXBhcmVMYXllcnNUb1JlbmRlciIsInByZXBhcmVMYXllcnNGb3JEZWNrIiwiZmlsdGVycyIsImZpbHRlcnNTZWxlY3RvciIsImYiLCJ0eXBlIiwiRklMVEVSX1RZUEVTIiwicG9seWdvbiIsImxheWVyT3JkZXJTZWxlY3RvciIsImxheWVyc1RvUmVuZGVyU2VsZWN0b3IiLCJnZW5lcmF0ZU1hcGJveExheWVycyIsInZpc1N0YXRlQWN0aW9ucyIsIm9uTGF5ZXJDbGljayIsImlkeCIsImNvbG9yRG9tYWluIiwibGF5ZXJDb25maWdDaGFuZ2UiLCJsYXllcklkIiwiaW5kZXgiLCJtYXBJbmRleCIsInRvZ2dsZUxheWVyRm9yTWFwIiwicHJldmlvdXNMYXllcnMiLCJfdXBkYXRlTWFwYm94TGF5ZXJzIiwib25NYXBTdHlsZUxvYWRlZCIsIl9tYXAiLCJtYXBib3giLCJnZXRNYXAiLCJvbiIsIl9vbk1hcGJveFN0eWxlVXBkYXRlIiwib25NYXBSZW5kZXIiLCJnZXRNYXBib3hSZWYiLCJnbCIsImxheWVyQmxlbmRpbmciLCJlcnJvciIsIm1lc3NhZ2UiLCJzZXRTdGF0ZSIsImNvbnRleHRMb3N0IiwiZXJyb3JNZXNzYWdlIiwibm90aWZpY2F0aW9uSWQiLCJfZGVja0dMRXJyb3JzRWxhcHNlZCIsImxhc3RTaG93biIsIkRhdGUiLCJub3ciLCJUSFJPVFRMRV9OT1RJRklDQVRJT05fVElNRSIsInVpU3RhdGVBY3Rpb25zIiwiYWRkTm90aWZpY2F0aW9uIiwidmlld1N0YXRlIiwiaW50ZXJhY3Rpb25TdGF0ZSIsImluY3JlbWVudCIsInJlc3RWaWV3U3RhdGUiLCJuZXh0IiwiaW5UcmFuc2l0aW9uIiwib25WaWV3U3RhdGVDaGFuZ2UiLCJwYW5lbElkIiwidG9nZ2xlTWFwQ29udHJvbCIsIl9kZWNrIiwiX3JlZiIsIl9oYXNSZW5kZXJlZCIsIl9tb3VzZVBvc2l0aW9uIiwiY3VycmVudCIsIl9oYW5kbGVSZXNpemUiLCJzdGF0ZSIsIm9mZiIsIm9uRGVja0luaXRpYWxpemVkIiwibGF5ZXJzVG9SZW5kZXIiLCJsbmdMYXQiLCJzY3JlZW5Db29yZCIsInByb2plY3QiLCJ4IiwieSIsIm1hcFN0eWxlIiwiaW5rU3RyZW5ndGgiLCJza2V0Y2hWYWx1ZSIsImh1ZSIsImh1ZVZhbHVlU2F0dXJhdGlvbiIsImh1ZVNhdHVyYXRpb24iLCJpbmtFZmZlY3QiLCJpbmsiLCJzdHJlbmd0aCIsImh1ZVNhdHVyYXRpb25FZmZlY3QiLCJzYXR1cmF0aW9uIiwiYWxsRWZmZWN0cyIsImRvdFNjcmVlblZhbHVlIiwiZG90U2NyZWVuIiwiZG90U2NyZWVuRWZmZWN0IiwiY2VudGVyIiwiYW5nbGUiLCJQSSIsInNpemUiLCJwdXNoIiwibGF5ZXJzRm9yRGVjayIsIm1hcFN0YXRlIiwibWFwYm94QXBpQWNjZXNzVG9rZW4iLCJtYXBib3hBcGlVcmwiLCJtYXNrUG9seWdvbiIsImRlY2tHbExheWVycyIsImRlY2tHbFByb3BzIiwiZGF0YUxheWVycyIsInNsaWNlIiwicmV2ZXJzZSIsIm92ZXJsYXlzIiwibGF5ZXJDYWxsYmFja3MiLCJvblNldExheWVyRG9tYWluIiwidmFsIiwiX29uTGF5ZXJTZXREb21haW4iLCJsYXllck92ZXJsYXkiLCJjb25jYXQiLCJsYXllcnNPblRvcCIsIlNvbGlkUG9seWdvbkxheWVyIiwiTUFTS19MQVlFUl9JRCIsIk9QRVJBVElPTiIsIk1BU0siLCJkYXRhQ29tcGFyYXRvciIsIm9sZERhdGEiLCJnZXRQb2x5Z29uIiwiZCIsImdldEZpbGxDb2xvciIsInZpc2libGVMYXllckdyb3VwcyIsIlRocmVlREJ1aWxkaW5nTGF5ZXIiLCJ0aHJlZURCdWlsZGluZ0NvbG9yIiwidXBkYXRlVHJpZ2dlcnMiLCJlZmZlY3RzIiwiYm90dG9tTWFwU3R5bGUiLCJsIiwiQm9vbGVhbiIsImNsb25lIiwiZXh0ZW5zaW9ucyIsInN0eWxlVHlwZSIsIl9nZXRFZmZlY3RzVmFsdWVzIiwiaGFzUmVuZGVyZWQiLCJyZXNldEhhc1JlbmRlcmVkIiwiX29uVmlld3BvcnRDaGFuZ2UiLCJvcHRzIiwiX29uQmVmb3JlUmVuZGVyIiwib25MYXllckhvdmVyIiwiZSIsIl9vbkRlY2tFcnJvciIsImNvbXAiLCJkZWNrIiwiX29uRGVja0luaXRpYWxpemVkIiwiaXNOYU4iLCJ2aXNpYmlsaXR5Qnlab29tIiwibWluIiwibWF4IiwiY3VycmVudFpvb21SYW5nZSIsInJvdW5kIiwibWFwYm94TGF5ZXJzIiwibWFwYm94TGF5ZXJzU2VsZWN0b3IiLCJPYmplY3QiLCJrZXlzIiwiaXNTdHlsZUxvYWRlZCIsIk1hcENvbXBvbmVudCIsImRhdGFzZXRzIiwibWFwQ29udHJvbHMiLCJsb2NhbGUiLCJpbnRlcmFjdGlvbkNvbmZpZyIsImVkaXRvciIsImxheWVyc0ZvckRlY2tTZWxlY3RvciIsIm1hcFByb3BzIiwicHJlc2VydmVEcmF3aW5nQnVmZmVyIiwidHJhbnNmb3JtUmVxdWVzdCIsImlzRWRpdCIsIm1hcERyYXciLCJhY3RpdmUiLCJoYXNHZW9jb2RlckxheWVyIiwiZmluZCIsIkdFT0NPREVSX0xBWUVSX0lEIiwiaXNTcGxpdCIsIm1vdXNlUG9zaXRpb24iLCJuZWVkc0Jhc2VtYXAiLCJMT0NBTEVfQ09ERVMiLCJkcmFnUm90YXRlIiwicmVhZE9ubHkiLCJzY2FsZSIsImdlb2NvZGVyIiwiZW5hYmxlZCIsInRvZ2dsZVBlcnNwZWN0aXZlIiwidG9nZ2xlU3BsaXRNYXAiLCJfaGFuZGxlTWFwVG9nZ2xlTGF5ZXIiLCJfdG9nZ2xlTWFwQ29udHJvbCIsInNldEVkaXRvck1vZGUiLCJzZXRMb2NhbGUiLCJ0b2dnbGVFZGl0b3JWaXNpYmlsaXR5IiwiX3NldE1hcGJveE1hcCIsImhvdmVySW5mbyIsInVuZGVmaW5lZCIsImV2dCIsInBvaW50IiwiX3JlbmRlckRlY2tPdmVybGF5IiwiX3JlbmRlck1hcGJveE92ZXJsYXlzIiwicG9seWdvbkZpbHRlcnMiLCJkZWxldGVGZWF0dXJlIiwic2V0U2VsZWN0ZWRGZWF0dXJlIiwic2V0RmVhdHVyZXMiLCJzZXRQb2x5Z29uRmlsdGVyTGF5ZXIiLCJ2aXNpYmxlIiwidG9wTWFwU3R5bGUiLCJfcmVuZGVyTWFwUG9wb3ZlciIsImdsb2JlIiwiX3JlbmRlck1hcCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJzdHJpbmciLCJhcnJheU9mIiwiYW55IiwiYm9vbCIsImNsaWNrZWQiLCJvbk1hcFRvZ2dsZUxheWVyIiwiZnVuYyIsIm51bWJlciIsIk1hcGJveEdMTWFwIiwiZGlzcGxheU5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcUJBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVFBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUVBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQU9BOztBQUNBOztBQUdBOztB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QmhNLElBQUFBLEtBQUssRUFBRXVMLHNCQUFVVSxNQTlCQTtBQStCakJ2TixJQUFBQSxhQUFhLEVBQUU2TSxzQkFBVUM7QUEvQlIsR0FGcUQ7QUFBQSxtQ0FDcEV4TixZQURvRSxrQkFvQ2xEO0FBQ3BCcUssSUFBQUEsWUFBWSxFQUFFNkQsc0JBRE07QUFFcEJwSCxJQUFBQSxXQUFXLEVBQUUsRUFGTztBQUdwQjlFLElBQUFBLEtBQUssRUFBRSxDQUhhO0FBSXBCOUIsSUFBQUEsT0FBTyxFQUFFO0FBSlcsR0FwQ2tEO0FBNGpCMUVGLEVBQUFBLFlBQVksQ0FBQ21PLFdBQWIsR0FBMkIsY0FBM0I7QUFFQSxTQUFPbk8sWUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIyIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuLy8gbGlicmFyaWVzXG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIGNyZWF0ZVJlZn0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBNYXBib3hHTE1hcCBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuaW1wb3J0IERlY2tHTCBmcm9tICdAZGVjay5nbC9yZWFjdCc7XG5pbXBvcnQge2NyZWF0ZVNlbGVjdG9yfSBmcm9tICdyZXNlbGVjdCc7XG5pbXBvcnQge1xuICBPUEVSQVRJT04sXG4gIExheWVyLFxuICBBbWJpZW50TGlnaHQsXG4gIExpZ2h0aW5nRWZmZWN0LFxuICBQb3N0UHJvY2Vzc0VmZmVjdCxcbiAgX1N1bkxpZ2h0XG59IGZyb20gJ0BkZWNrLmdsL2NvcmUnO1xuaW1wb3J0IHticmlnaHRuZXNzQ29udHJhc3QsIGh1ZVNhdHVyYXRpb24sIGluaywgZG90U2NyZWVuLCB2aWJyYW5jZX0gZnJvbSAnQGx1bWEuZ2wvc2hhZGVydG9vbHMnO1xuaW1wb3J0IHtTb2xpZFBvbHlnb25MYXllcn0gZnJvbSAnQGRlY2suZ2wvbGF5ZXJzJztcbmltcG9ydCB7VGlsZUxheWVyfSBmcm9tICdAZGVjay5nbC9nZW8tbGF5ZXJzJztcbmltcG9ydCB7ZXJyb3JOb3RpZmljYXRpb259IGZyb20gJ3V0aWxzL25vdGlmaWNhdGlvbnMtdXRpbHMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgTWFwUG9wb3ZlckZhY3RvcnkgZnJvbSAnY29tcG9uZW50cy9tYXAvbWFwLXBvcG92ZXInO1xuaW1wb3J0IE1hcENvbnRyb2xGYWN0b3J5IGZyb20gJ2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9sJztcbmltcG9ydCB7U3R5bGVkTWFwQ29udGFpbmVyLCBTdHlsZWRBdHRyYnV0aW9ufSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9zdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCBFZGl0b3JGYWN0b3J5IGZyb20gJy4vZWRpdG9yL2VkaXRvcic7XG5cbi8vIHV0aWxzXG5pbXBvcnQge2dlbmVyYXRlTWFwYm94TGF5ZXJzLCB1cGRhdGVNYXBib3hMYXllcnN9IGZyb20gJ2xheWVycy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtzZXRMYXllckJsZW5kaW5nfSBmcm9tICd1dGlscy9nbC11dGlscyc7XG5pbXBvcnQge3RyYW5zZm9ybVJlcXVlc3R9IGZyb20gJ3V0aWxzL21hcC1zdHlsZS11dGlscy9tYXBib3gtdXRpbHMnO1xuaW1wb3J0IHtyZW5kZXJEZWNrR2xMYXllciwgcHJlcGFyZUxheWVyc1RvUmVuZGVyLCBwcmVwYXJlTGF5ZXJzRm9yRGVja30gZnJvbSAndXRpbHMvbGF5ZXItdXRpbHMnO1xuXG4vLyBkZWZhdWx0LXNldHRpbmdzXG5pbXBvcnQgVGhyZWVEQnVpbGRpbmdMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzLzNkLWJ1aWxkaW5nLWxheWVyLzNkLWJ1aWxkaW5nLWxheWVyJztcbmltcG9ydCB7XG4gIEZJTFRFUl9UWVBFUyxcbiAgR0VPQ09ERVJfTEFZRVJfSUQsXG4gIE1BU0tfTEFZRVJfSUQsXG4gIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FXG59IGZyb20gJ2NvbnN0YW50cy9kZWZhdWx0LXNldHRpbmdzJztcblxuaW1wb3J0IHtvYnNlcnZlRGltZW5zaW9ucywgdW5vYnNlcnZlRGltZW5zaW9uc30gZnJvbSAnLi4vdXRpbHMvb2JzZXJ2ZS1kaW1lbnNpb25zJztcbmltcG9ydCB7TE9DQUxFX0NPREVTfSBmcm9tICdsb2NhbGl6YXRpb24vbG9jYWxlcyc7XG5cbi8vIDNEIHRpbGVzXG5pbXBvcnQge19UZXJyYWluRXh0ZW5zaW9uIGFzIFRlcnJhaW5FeHRlbnNpb259IGZyb20gJ0BkZWNrLmdsL2V4dGVuc2lvbnMnO1xuaW1wb3J0IHtUaWxlM0RMYXllcn0gZnJvbSAnQGRlY2suZ2wvZ2VvLWxheWVycyc7XG5cbmNvbnN0IEdPT0dMRV9NQVBTX0FQSV9LRVkgPSAnQUl6YVN5Q3B2UXltYzV3alNZSXN4eTNSVjF3aWRNM3AzaDc4Q0FrJztcblxuY2xhc3MgQ3VzdG9tVGlsZTNETGF5ZXIgZXh0ZW5kcyBUaWxlM0RMYXllciB7XG4gIHN0YXRpYyBsYXllck5hbWUgPSAnQ3VzdG9tVGlsZTNETGF5ZXInO1xuXG4gIGZpbHRlclN1YkxheWVyKHtsYXllciwgdmlld3BvcnR9KSB7XG4gICAgLy8gRG8gbm90IHNob3cgdGlsZXMgd2hpY2ggYXJlIG1hbnkgbGF5ZXJzIHRvbyBsb3cgaW4gcmVzb2x1dGlvbiAoYXZvaWRzIGFydGlmYWN0cylcbiAgICBjb25zdCBsb2Rab29tID0gMjIgLSBNYXRoLmxvZzIobGF5ZXIucHJvcHMudGlsZS5sb2RNZXRyaWNWYWx1ZSk7XG4gICAgcmV0dXJuIGxvZFpvb20gPiB2aWV3cG9ydD8uem9vbTtcbiAgfVxufVxuXG5sZXQgaCA9IDA7XG5jb25zdCB0aWxlczNkID0gbmV3IEN1c3RvbVRpbGUzRExheWVyKHtcbiAgaWQ6ICdnb29nbGUtM2QtdGlsZXMnLFxuICBkYXRhOiAnaHR0cHM6Ly90aWxlLmdvb2dsZWFwaXMuY29tL3YxLzNkdGlsZXMvcm9vdC5qc29uJyxcbiAgb25UaWxlc2V0TG9hZDogdGlsZXNldDNkID0+IHtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5tYXhpbXVtU2NyZWVuU3BhY2VFcnJvciA9IDU7XG4gICAgdGlsZXNldDNkLl9vblRpbGVMb2FkRXJyb3IgPSAoKSA9PiB7fTtcbiAgICB0aWxlc2V0M2Qub3B0aW9ucy5vblRyYXZlcnNhbENvbXBsZXRlID0gc2VsZWN0ZWRUaWxlcyA9PiB7XG4gICAgICBsZXQgbWluTG9kID0gSW5maW5pdHk7XG4gICAgICBmb3IgKGNvbnN0IHtsb2RNZXRyaWNWYWx1ZX0gb2Ygc2VsZWN0ZWRUaWxlcykge1xuICAgICAgICBpZiAobG9kTWV0cmljVmFsdWUgPCBtaW5Mb2QpIG1pbkxvZCA9IGxvZE1ldHJpY1ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZmlsdGVyZWQgPSBzZWxlY3RlZFRpbGVzLmZpbHRlcih0ID0+IHQubG9kTWV0cmljVmFsdWUgPCA0ICogbWluTG9kKTtcblxuICAgICAgLy8gSGFja3kgd2F5IHRvIG9idGFpbiBoZWlnaHQgYWJvdmUgc2VhIGxldmVsIHRvIGltcHJvdmUgY29udHJvbHNcbiAgICAgIGlmIChmaWx0ZXJlZC5sZW5ndGgpIHtcbiAgICAgICAgaCA9IGZpbHRlcmVkLm1hcCh0ID0+IHQuYm91bmRpbmdCb3hbMF1bMl0pLnJlZHVjZSgoYSwgbikgPT4gYSArIG4pIC8gZmlsdGVyZWQubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VsZWN0ZWRUaWxlcztcbiAgICB9O1xuICB9LFxuICBsb2FkT3B0aW9uczoge1xuICAgIGZldGNoOiB7aGVhZGVyczogeydYLUdPT0ctQVBJLUtFWSc6IEdPT0dMRV9NQVBTX0FQSV9LRVl9fVxuICB9LFxuICAvLyBAdHMtaWdub3JlXG4gIG9wZXJhdGlvbjogJ3RlcnJhaW4rZHJhdycgLy8gUmVxdWlyZWQgdG8gZW5hYmxlIGRyYXBpbmcgb2Ygb3RoZXIgbGF5ZXJzXG59KTtcbmNvbnN0IHRlcnJhaW5FeHRlbnNpb24gPSBuZXcgVGVycmFpbkV4dGVuc2lvbigpO1xuXG4vLyBFZmZlY3RzXG5jb25zdCBhbWJpZW50TGlnaHQgPSBuZXcgQW1iaWVudExpZ2h0KHtjb2xvcjogWzI1NSwgMjU1LCAyNTVdLCBpbnRlbnNpdHk6IDF9KTtcbmNvbnN0IHN1bkxpZ2h0ID0gbmV3IF9TdW5MaWdodCh7XG4gIHRpbWVzdGFtcDogMTY4Mzg2OTkxNTc3NyxcbiAgY29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgaW50ZW5zaXR5OiAxLFxuICBfc2hhZG93OiB0cnVlXG59KTtcbmNvbnN0IGxpZ2h0aW5nRWZmZWN0ID0gbmV3IExpZ2h0aW5nRWZmZWN0KHtcbiAgYW1iaWVudExpZ2h0LFxuICBzdW5MaWdodFxufSk7XG5saWdodGluZ0VmZmVjdC5zaGFkb3dDb2xvciA9IFswLCAwLCAwLCAwXTtcblxuY29uc3QgYnJpZ2h0bmVzc0NvbnRyYXN0RWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGJyaWdodG5lc3NDb250cmFzdCwge1xuICBjb250cmFzdDogMCxcbiAgYnJpZ2h0bmVzczogMC4yXG59KTtcblxuY29uc3QgdmlicmFuY2VFZmZlY3QgPSBuZXcgUG9zdFByb2Nlc3NFZmZlY3QodmlicmFuY2UsIHthbW91bnQ6IDF9KTtcblxuLy8gUGVyZm9ybWFuY2UgZGVidWdnaW5nXG5pbXBvcnQge2NyZWF0ZVRyYWNrZXIsIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlciwgcmVuZGVyUGVyZm9ybWFuY2VTdGF0c30gZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5jb25zdCB0cmFja2VycyA9IHt9O1xuY29uc3QgUEVSRl9ERUJVRyA9IHdpbmRvdz8ubG9jYXRpb24/LnNlYXJjaD8uaW5jbHVkZXMoJ1BFUkZfREVCVUcnKTtcbmlmIChQRVJGX0RFQlVHKSB7XG4gIHRyYWNrZXJzLmRyYXdDb3VudCA9IGNyZWF0ZVRyYWNrZXIoJ2RyYXdzJyk7XG4gIHRyYWNrZXJzLnZpZXdwb3J0Q2hhbmdlQ291bnQgPSBjcmVhdGVUcmFja2VyKCd2aWV3cG9ydCBjaGFuZ2VzJyk7XG4gIGNyZWF0ZUxheWVyVXBkYXRlVHJhY2tlcignc3RhdGUgdXBkYXRlcycsIFtMYXllciwgVGlsZUxheWVyXSk7XG59XG5cbi8qKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IFJlYWN0LkNTU1Byb3BlcnRpZXN9fSAqL1xuY29uc3QgTUFQX1NUWUxFID0ge1xuICBjb250YWluZXI6IHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWJsb2NrJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICAgIGhlaWdodDogJzEwMCUnXG4gIH0sXG4gIHRvcDoge1xuICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgIHRvcDogJzBweCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgaGVpZ2h0OiAnMTAwJSdcbiAgfVxufTtcblxuY29uc3QgTUFQQk9YR0xfU1RZTEVfVVBEQVRFID0gJ3N0eWxlLmxvYWQnO1xuY29uc3QgTUFQQk9YR0xfUkVOREVSID0gJ3JlbmRlcic7XG5jb25zdCBUUkFOU0lUSU9OX0RVUkFUSU9OID0gMDtcblxuZXhwb3J0IGNvbnN0IEF0dHJpYnV0aW9uID0gKCkgPT4gKFxuICA8U3R5bGVkQXR0cmJ1dGlvbj5cbiAgICA8ZGl2IGNsYXNzTmFtZT1cImF0dHJpdGlvbi1sb2dvXCI+XG4gICAgICBCYXNlbWFwIGJ5OlxuICAgICAgPGFcbiAgICAgICAgY2xhc3NOYW1lPVwibWFwYm94Z2wtY3RybC1sb2dvXCJcbiAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5tYXBib3guY29tL1wiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJNYXBib3ggbG9nb1wiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYXR0cml0aW9uLWxpbmtcIj5cbiAgICAgIDxhIGhyZWY9XCJodHRwczovL2tlcGxlci5nbC9wb2xpY3kvXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBrZXBsZXIuZ2wgfHsnICd9XG4gICAgICA8L2E+XG4gICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubWFwYm94LmNvbS9hYm91dC9tYXBzL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgwqkgTWFwYm94IHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5vcmcvY29weXJpZ2h0XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAgICDCqSBPcGVuU3RyZWV0TWFwIHx7JyAnfVxuICAgICAgPC9hPlxuICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm1hcGJveC5jb20vbWFwLWZlZWRiYWNrL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIj5cbiAgICAgICAgPHN0cm9uZz5JbXByb3ZlIHRoaXMgbWFwPC9zdHJvbmc+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG4gIDwvU3R5bGVkQXR0cmJ1dGlvbj5cbik7XG5cbk1hcENvbnRhaW5lckZhY3RvcnkuZGVwcyA9IFtNYXBQb3BvdmVyRmFjdG9yeSwgTWFwQ29udHJvbEZhY3RvcnksIEVkaXRvckZhY3RvcnldO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYXBDb250YWluZXJGYWN0b3J5KE1hcFBvcG92ZXIsIE1hcENvbnRyb2wsIEVkaXRvcikge1xuICBjbGFzcyBNYXBDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICAgIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgICAvLyByZXF1aXJlZFxuICAgICAgZGF0YXNldHM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgICBpbnRlcmFjdGlvbkNvbmZpZzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJCbGVuZGluZzogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbGF5ZXJPcmRlcjogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyRGF0YTogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGxheWVyczogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLmFueSkuaXNSZXF1aXJlZCxcbiAgICAgIGZpbHRlcnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5hbnkpLmlzUmVxdWlyZWQsXG4gICAgICBtYXBTdGF0ZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgbWFwQ29udHJvbHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgICBza2V0Y2hWYWx1ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcGJveEFwaUFjY2Vzc1Rva2VuOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBtYXBib3hBcGlVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB2aXNTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICAgIG1hcFN0YXRlQWN0aW9uczogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgICAgdWlTdGF0ZUFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcblxuICAgICAgLy8gb3B0aW9uYWxcbiAgICAgIHByaW1hcnk6IFByb3BUeXBlcy5ib29sLCAvLyBwcmltYXJ5IG9uZSB3aWxsIGJlIHJlcG9ydGluZyBpdHMgc2l6ZSB0byBhcHBTdGF0ZVxuICAgICAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sLFxuICAgICAgaXNFeHBvcnQ6IFByb3BUeXBlcy5ib29sLFxuICAgICAgY2xpY2tlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIGhvdmVySW5mbzogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG1hcExheWVyczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgIG9uTWFwVG9nZ2xlTGF5ZXI6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgb25NYXBTdHlsZUxvYWRlZDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBvbk1hcFJlbmRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgICBnZXRNYXBib3hSZWY6IFByb3BUeXBlcy5mdW5jLFxuICAgICAgaW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBwb3B1cFNldHRpbmdzOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfTtcblxuICAgIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICBNYXBDb21wb25lbnQ6IE1hcGJveEdMTWFwLFxuICAgICAgZGVja0dsUHJvcHM6IHt9LFxuICAgICAgaW5kZXg6IDAsXG4gICAgICBwcmltYXJ5OiB0cnVlXG4gICAgfTtcblxuICAgIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSB7XG4gICAgICAgIC8vIFtsYXllcnMuaWRdOiBtYXBib3hMYXllckNvbmZpZ1xuICAgICAgfTtcblxuICAgICAgdGhpcy5fZGVjayA9IG51bGw7XG4gICAgICB0aGlzLl9yZWYgPSBjcmVhdGVSZWYoKTtcblxuICAgICAgLy8gUmVuZGVyIGxpbWl0aW5nIG1lY2hhbmlzbVxuICAgICAgdGhpcy5faGFzUmVuZGVyZWQgPSBjcmVhdGVSZWYoKTtcbiAgICAgIHRoaXMuX21vdXNlUG9zaXRpb24gPSBjcmVhdGVSZWYoKTtcbiAgICB9XG5cbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcbiAgICAgIG9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50LCB0aGlzLl9oYW5kbGVSZXNpemUpO1xuICAgIH1cblxuICAgIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICAgIGNvbnN0IGNvbnRleHRMb3N0ID0gdGhpcy5zdGF0ZT8uY29udGV4dExvc3Q7XG5cbiAgICAgIGlmIChjb250ZXh0TG9zdCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tZGlkLXVwZGF0ZS1zZXQtc3RhdGVcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7Y29udGV4dExvc3Q6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XG4gICAgICAvLyB1bmJpbmQgbWFwYm94Z2wgZXZlbnQgbGlzdGVuZXJcbiAgICAgIGlmICh0aGlzLl9tYXApIHtcbiAgICAgICAgdGhpcy5fbWFwLm9mZihNQVBCT1hHTF9TVFlMRV9VUERBVEUpO1xuICAgICAgICB0aGlzLl9tYXAub2ZmKE1BUEJPWEdMX1JFTkRFUik7XG4gICAgICB9XG4gICAgICB1bm9ic2VydmVEaW1lbnNpb25zKHRoaXMuX3JlZi5jdXJyZW50KTtcbiAgICB9XG5cbiAgICBfaGFuZGxlUmVzaXplID0gZGltZW5zaW9ucyA9PiB7XG4gICAgICBjb25zdCB7cHJpbWFyeSwgaXNFeHBvcnR9ID0gdGhpcy5wcm9wcztcbiAgICAgIGlmIChwcmltYXJ5KSB7XG4gICAgICAgIGNvbnN0IHttYXBTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgaWYgKCFpc0V4cG9ydCAmJiBkaW1lbnNpb25zICYmIGRpbWVuc2lvbnMud2lkdGggPiAwICYmIGRpbWVuc2lvbnMuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgIG1hcFN0YXRlQWN0aW9ucy51cGRhdGVNYXAoZGltZW5zaW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllcnM7XG4gICAgbGF5ZXJEYXRhU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5sYXllckRhdGE7XG4gICAgbWFwTGF5ZXJzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5tYXBMYXllcnM7XG4gICAgbGF5ZXJPcmRlclNlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMubGF5ZXJPcmRlcjtcbiAgICBwb3B1cFNldHRpbmdzU2VsZWN0b3IgPSBwcm9wcyA9PiBwcm9wcy5wb3B1cFNldHRpbmdzO1xuXG4gICAgbGF5ZXJzVG9SZW5kZXJTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICB0aGlzLm1hcExheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5wb3B1cFNldHRpbmdzU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzVG9SZW5kZXJcbiAgICApO1xuICAgIGxheWVyc0ZvckRlY2tTZWxlY3RvciA9IGNyZWF0ZVNlbGVjdG9yKFxuICAgICAgdGhpcy5sYXllcnNTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJEYXRhU2VsZWN0b3IsXG4gICAgICBwcmVwYXJlTGF5ZXJzRm9yRGVja1xuICAgICk7XG4gICAgZmlsdGVyc1NlbGVjdG9yID0gcHJvcHMgPT4gcHJvcHMuZmlsdGVycztcbiAgICBwb2x5Z29uRmlsdGVycyA9IGNyZWF0ZVNlbGVjdG9yKHRoaXMuZmlsdGVyc1NlbGVjdG9yLCBmaWx0ZXJzID0+XG4gICAgICBmaWx0ZXJzLmZpbHRlcihmID0+IGYudHlwZSA9PT0gRklMVEVSX1RZUEVTLnBvbHlnb24pXG4gICAgKTtcblxuICAgIG1hcGJveExheWVyc1NlbGVjdG9yID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICB0aGlzLmxheWVyc1NlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllckRhdGFTZWxlY3RvcixcbiAgICAgIHRoaXMubGF5ZXJPcmRlclNlbGVjdG9yLFxuICAgICAgdGhpcy5sYXllcnNUb1JlbmRlclNlbGVjdG9yLFxuICAgICAgZ2VuZXJhdGVNYXBib3hMYXllcnNcbiAgICApO1xuXG4gICAgLyogY29tcG9uZW50IHByaXZhdGUgZnVuY3Rpb25zICovXG4gICAgX29uQ2xvc2VNYXBQb3BvdmVyID0gKCkgPT4ge1xuICAgICAgdGhpcy5wcm9wcy52aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrKG51bGwpO1xuICAgIH07XG5cbiAgICBfb25MYXllclNldERvbWFpbiA9IChpZHgsIGNvbG9yRG9tYWluKSA9PiB7XG4gICAgICB0aGlzLnByb3BzLnZpc1N0YXRlQWN0aW9ucy5sYXllckNvbmZpZ0NoYW5nZSh0aGlzLnByb3BzLmxheWVyc1tpZHhdLCB7XG4gICAgICAgIGNvbG9yRG9tYWluXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgX2hhbmRsZU1hcFRvZ2dsZUxheWVyID0gbGF5ZXJJZCA9PiB7XG4gICAgICBjb25zdCB7aW5kZXg6IG1hcEluZGV4ID0gMCwgdmlzU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICB2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlTGF5ZXJGb3JNYXAobWFwSW5kZXgsIGxheWVySWQpO1xuICAgIH07XG5cbiAgICBfb25NYXBib3hTdHlsZVVwZGF0ZSA9ICgpID0+IHtcbiAgICAgIC8vIGZvcmNlIHJlZnJlc2ggbWFwYm94Z2wgbGF5ZXJzXG4gICAgICB0aGlzLnByZXZpb3VzTGF5ZXJzID0ge307XG4gICAgICB0aGlzLl91cGRhdGVNYXBib3hMYXllcnMoKTtcblxuICAgICAgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9uTWFwU3R5bGVMb2FkZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpcy5wcm9wcy5vbk1hcFN0eWxlTG9hZGVkKHRoaXMuX21hcCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9zZXRNYXBib3hNYXAgPSBtYXBib3ggPT4ge1xuICAgICAgaWYgKCF0aGlzLl9tYXAgJiYgbWFwYm94KSB7XG4gICAgICAgIHRoaXMuX21hcCA9IG1hcGJveC5nZXRNYXAoKTtcbiAgICAgICAgLy8gaSBub3RpY2VkIGluIGNlcnRhaW4gY29udGV4dCB3ZSBkb24ndCBhY2Nlc3MgdGhlIGFjdHVhbCBtYXAgZWxlbWVudFxuICAgICAgICBpZiAoIXRoaXMuX21hcCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBiaW5kIG1hcGJveGdsIGV2ZW50IGxpc3RlbmVyXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9TVFlMRV9VUERBVEUsIHRoaXMuX29uTWFwYm94U3R5bGVVcGRhdGUpO1xuXG4gICAgICAgIHRoaXMuX21hcC5vbihNQVBCT1hHTF9SRU5ERVIsICgpID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMub25NYXBSZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMucHJvcHMub25NYXBSZW5kZXIodGhpcy5fbWFwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wcm9wcy5nZXRNYXBib3hSZWYpIHtcbiAgICAgICAgLy8gVGhlIHBhcmVudCBjb21wb25lbnQgY2FuIGdhaW4gYWNjZXNzIHRvIG91ciBNYXBib3hHbE1hcCBieVxuICAgICAgICAvLyBwcm92aWRpbmcgdGhpcyBjYWxsYmFjay4gTm90ZSB0aGF0ICdtYXBib3gnIHdpbGwgYmUgbnVsbCB3aGVuIHRoZVxuICAgICAgICAvLyByZWYgaXMgdW5zZXQgKGUuZy4gd2hlbiBhIHNwbGl0IG1hcCBpcyBjbG9zZWQpLlxuICAgICAgICB0aGlzLnByb3BzLmdldE1hcGJveFJlZihtYXBib3gsIHRoaXMucHJvcHMuaW5kZXgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfb25EZWNrSW5pdGlhbGl6ZWQoZ2wpIHtcbiAgICAgIGlmICh0aGlzLnByb3BzLm9uRGVja0luaXRpYWxpemVkKSB7XG4gICAgICAgIHRoaXMucHJvcHMub25EZWNrSW5pdGlhbGl6ZWQodGhpcy5fZGVjaywgZ2wpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vbkJlZm9yZVJlbmRlciA9ICh7Z2x9KSA9PiB7XG4gICAgICBzZXRMYXllckJsZW5kaW5nKGdsLCB0aGlzLnByb3BzLmxheWVyQmxlbmRpbmcpO1xuICAgIH07XG5cbiAgICBfb25EZWNrRXJyb3IgPSAoZXJyb3IsIGxheWVyKSA9PiB7XG4gICAgICBpZiAoZXJyb3I/Lm1lc3NhZ2UgPT09ICdXZWJHTCBjb250ZXh0IGlzIGxvc3QnKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2NvbnRleHRMb3N0OiB0cnVlfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYEFuIGVycm9yIGluIGRlY2suZ2w6ICR7ZXJyb3I/Lm1lc3NhZ2V9IGluICR7bGF5ZXI/LmlkfWA7XG4gICAgICBjb25zdCBub3RpZmljYXRpb25JZCA9IGAke2xheWVyPy5pZH0tJHtlcnJvcj8ubWVzc2FnZX1gO1xuXG4gICAgICAvLyBUaHJvdHRsZSBlcnJvciBub3RpZmljYXRpb25zLCBhcyBSZWFjdCBkb2Vzbid0IGxpa2UgdG9vIG1hbnkgc3RhdGUgY2hhbmdlcyBmcm9tIGhlcmUuXG4gICAgICB0aGlzLl9kZWNrR0xFcnJvcnNFbGFwc2VkID0gdGhpcy5fZGVja0dMRXJyb3JzRWxhcHNlZCB8fCB7fTtcbiAgICAgIGNvbnN0IGxhc3RTaG93biA9IHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdO1xuICAgICAgaWYgKCFsYXN0U2hvd24gfHwgbGFzdFNob3duIDwgRGF0ZS5ub3coKSAtIFRIUk9UVExFX05PVElGSUNBVElPTl9USU1FKSB7XG4gICAgICAgIHRoaXMuX2RlY2tHTEVycm9yc0VsYXBzZWRbbm90aWZpY2F0aW9uSWRdID0gRGF0ZS5ub3coKTtcblxuICAgICAgICAvLyBDcmVhdGUgbmV3IGVycm9yIG5vdGlmaWNhdGlvbiBvciB1cGRhdGUgZXhpc3Rpbmcgb25lIHdpdGggc2FtZSBpZC5cbiAgICAgICAgLy8gVXBkYXRlIGlzIHJlcXVpcmVkIHRvIHByZXNlcnZlIHRoZSBvcmRlciBvZiBub3RpZmljYXRpb25zIGFzIHRoZXkgcHJvYmFibHkgYXJlIGdvaW5nIHRvIFwianVtcFwiIGJhc2VkIG9uIG9yZGVyIG9mIGVycm9ycy5cbiAgICAgICAgY29uc3Qge3VpU3RhdGVBY3Rpb25zfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLmFkZE5vdGlmaWNhdGlvbihcbiAgICAgICAgICBlcnJvck5vdGlmaWNhdGlvbih7XG4gICAgICAgICAgICBtZXNzYWdlOiBlcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICBpZDogbm90aWZpY2F0aW9uSWRcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvKiBjb21wb25lbnQgcmVuZGVyIGZ1bmN0aW9ucyAqL1xuXG4gICAgLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuICAgIF9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKSB7XG4gICAgICAvLyBPdmVycmlkZW4gaW4gQnVpbGRlcjogZmVhdHVyZXMvYnVpbGRlci91aS9LZXBsZXJHbC9NYXBDb250YWluZXIvTWFwQ29udGFpbmVyLnRzeFxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyogZXNsaW50LWVuYWJsZSBjb21wbGV4aXR5ICovXG5cbiAgICBfZ2V0SG92ZXJYWSh2aWV3cG9ydCwgbG5nTGF0KSB7XG4gICAgICBjb25zdCBzY3JlZW5Db29yZCA9ICF2aWV3cG9ydCB8fCAhbG5nTGF0ID8gbnVsbCA6IHZpZXdwb3J0LnByb2plY3QobG5nTGF0KTtcbiAgICAgIHJldHVybiBzY3JlZW5Db29yZCAmJiB7eDogc2NyZWVuQ29vcmRbMF0sIHk6IHNjcmVlbkNvb3JkWzFdfTtcbiAgICB9XG5cbiAgICBfZ2V0RWZmZWN0c1ZhbHVlcyhtYXBTdHlsZSkge1xuICAgICAgY29uc3QgaW5rU3RyZW5ndGggPSBtYXBTdHlsZS5za2V0Y2hWYWx1ZT8uaW5rU3RyZW5ndGggfHwgMC4yO1xuICAgICAgY29uc3QgaHVlID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZSB8fCAwO1xuICAgICAgY29uc3QgaHVlVmFsdWVTYXR1cmF0aW9uID0gbWFwU3R5bGUuc2tldGNoVmFsdWU/Lmh1ZVNhdHVyYXRpb24gfHwgMC4zO1xuICAgICAgY29uc3QgaW5rRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGluaywge3N0cmVuZ3RoOiBpbmtTdHJlbmd0aH0pO1xuICAgICAgY29uc3QgaHVlU2F0dXJhdGlvbkVmZmVjdCA9IG5ldyBQb3N0UHJvY2Vzc0VmZmVjdChodWVTYXR1cmF0aW9uLCB7XG4gICAgICAgIGh1ZSxcbiAgICAgICAgc2F0dXJhdGlvbjogaHVlVmFsdWVTYXR1cmF0aW9uXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGFsbEVmZmVjdHMgPSBbXG4gICAgICAgIGxpZ2h0aW5nRWZmZWN0LFxuICAgICAgICBodWVTYXR1cmF0aW9uRWZmZWN0LFxuICAgICAgICBicmlnaHRuZXNzQ29udHJhc3RFZmZlY3QsXG4gICAgICAgIHZpYnJhbmNlRWZmZWN0LFxuICAgICAgICBpbmtFZmZlY3RcbiAgICAgIF07XG4gICAgICBjb25zdCBkb3RTY3JlZW5WYWx1ZSA9IG1hcFN0eWxlLnNrZXRjaFZhbHVlPy5kb3RTY3JlZW4gfHwgZmFsc2U7XG4gICAgICBpZiAoZG90U2NyZWVuVmFsdWUpIHtcbiAgICAgICAgY29uc3QgZG90U2NyZWVuRWZmZWN0ID0gbmV3IFBvc3RQcm9jZXNzRWZmZWN0KGRvdFNjcmVlbiwge1xuICAgICAgICAgIGNlbnRlcjogWzAuNSwgMC41XSxcbiAgICAgICAgICBhbmdsZTogTWF0aC5QSSAqIDAuNSxcbiAgICAgICAgICBzaXplOiAxXG4gICAgICAgIH0pO1xuICAgICAgICBhbGxFZmZlY3RzLnB1c2goZG90U2NyZWVuRWZmZWN0KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGFsbEVmZmVjdHM7XG4gICAgfVxuXG4gICAgX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFwU3RhdGUsXG4gICAgICAgIG1hcFN0eWxlLFxuICAgICAgICBsYXllckRhdGEsXG4gICAgICAgIGxheWVyT3JkZXIsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgdmlzU3RhdGVBY3Rpb25zLFxuICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgbWFwYm94QXBpVXJsLFxuICAgICAgICBtYXNrUG9seWdvblxuICAgICAgfSA9IHRoaXMucHJvcHM7XG4gICAgICB0cmFja2Vycy5kcmF3Q291bnQ/LmluY3JlbWVudCgpO1xuXG4gICAgICAvLyBpbml0aWFsaXNlIGxheWVycyBmcm9tIHByb3BzIGlmIGV4aXN0c1xuICAgICAgbGV0IGRlY2tHbExheWVycyA9IHRoaXMucHJvcHMuZGVja0dsUHJvcHM/LmxheWVycyB8fCBbXTtcblxuICAgICAgLy8gd2FpdCB1bnRpbCBkYXRhIGlzIHJlYWR5IGJlZm9yZSByZW5kZXIgZGF0YSBsYXllcnNcbiAgICAgIGlmIChsYXllckRhdGEgJiYgbGF5ZXJEYXRhLmxlbmd0aCkge1xuICAgICAgICAvLyBsYXN0IGxheWVyIHJlbmRlciBmaXJzdFxuICAgICAgICBjb25zdCBkYXRhTGF5ZXJzID0gbGF5ZXJPcmRlclxuICAgICAgICAgIC5zbGljZSgpXG4gICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgIC5maWx0ZXIoaWR4ID0+IGxheWVyc0ZvckRlY2tbbGF5ZXJzW2lkeF0uaWRdKVxuICAgICAgICAgIC5yZWR1Y2UoKG92ZXJsYXlzLCBpZHgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxheWVyQ2FsbGJhY2tzID0ge1xuICAgICAgICAgICAgICBvblNldExheWVyRG9tYWluOiB2YWwgPT4gdGhpcy5fb25MYXllclNldERvbWFpbihpZHgsIHZhbClcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBsYXllck92ZXJsYXkgPSByZW5kZXJEZWNrR2xMYXllcih0aGlzLnByb3BzLCBsYXllckNhbGxiYWNrcywgaWR4KTtcbiAgICAgICAgICAgIHJldHVybiBvdmVybGF5cy5jb25jYXQobGF5ZXJPdmVybGF5IHx8IFtdKTtcbiAgICAgICAgICB9LCBbXSk7XG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVycy5jb25jYXQoZGF0YUxheWVycyk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnByb3BzLmRlY2tHbFByb3BzPy5sYXllcnNPblRvcCkge1xuICAgICAgICBkZWNrR2xMYXllcnMgPSBkZWNrR2xMYXllcnMuY29uY2F0KHRoaXMucHJvcHMuZGVja0dsUHJvcHMubGF5ZXJzT25Ub3ApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWFza1BvbHlnb24pIHtcbiAgICAgICAgZGVja0dsTGF5ZXJzLnB1c2goXG4gICAgICAgICAgbmV3IFNvbGlkUG9seWdvbkxheWVyKHtcbiAgICAgICAgICAgIGlkOiBNQVNLX0xBWUVSX0lELFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBPUEVSQVRJT04uTUFTSyxcbiAgICAgICAgICAgIGRhdGE6IFttYXNrUG9seWdvbl0sXG4gICAgICAgICAgICBkYXRhQ29tcGFyYXRvcjogKGRhdGEsIG9sZERhdGEpID0+IGRhdGFbMF0gPT09IG9sZERhdGFbMF0sXG4gICAgICAgICAgICBnZXRQb2x5Z29uOiBkID0+IGQsXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IFsyNTUsIDI1NSwgMjU1LCAyNTVdXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1hcFN0eWxlLnZpc2libGVMYXllckdyb3Vwc1snM2QgYnVpbGRpbmcnXSkge1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaChcbiAgICAgICAgICBuZXcgVGhyZWVEQnVpbGRpbmdMYXllcih7XG4gICAgICAgICAgICBpZDogJ19rZXBsZXJnbF8zZC1idWlsZGluZycsXG4gICAgICAgICAgICBtYXBib3hBcGlBY2Nlc3NUb2tlbixcbiAgICAgICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgICAgIHRocmVlREJ1aWxkaW5nQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3IsXG4gICAgICAgICAgICB1cGRhdGVUcmlnZ2Vyczoge1xuICAgICAgICAgICAgICBnZXRGaWxsQ29sb3I6IG1hcFN0eWxlLnRocmVlREJ1aWxkaW5nQ29sb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBsZXQgZWZmZWN0cyA9IFtdO1xuICAgICAgaWYgKG1hcFN0eWxlLmJvdHRvbU1hcFN0eWxlPy50eXBlID09PSAnZ21hcHNfM2QnKSB7XG4gICAgICAgIC8vIEluamVjdCAzRCB0aWxlcyB3aGVuIG1hcCBzdHlsZSBpcyBWb3lhZ2VyIHdpdGhvdXQgbGF5ZXJzXG4gICAgICAgIGRlY2tHbExheWVycyA9IGRlY2tHbExheWVyc1xuICAgICAgICAgIC5maWx0ZXIobCA9PiBCb29sZWFuKGwgJiYgbC5jbG9uZSkpXG4gICAgICAgICAgLm1hcChsID0+IGwuY2xvbmUoe2V4dGVuc2lvbnM6IFsuLi5sLnByb3BzLmV4dGVuc2lvbnMsIHRlcnJhaW5FeHRlbnNpb25dfSkpO1xuICAgICAgICBkZWNrR2xMYXllcnMucHVzaCh0aWxlczNkLmNsb25lKCkpO1xuXG4gICAgICAgIGlmIChtYXBTdHlsZS5zdHlsZVR5cGUgPT09ICdnb29nbGUtM2Qtc2tldGNoJykge1xuICAgICAgICAgIGVmZmVjdHMgPSB0aGlzLl9nZXRFZmZlY3RzVmFsdWVzKG1hcFN0eWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBMaW1pdCByZW5kZXJzXG4gICAgICBjb25zdCBoYXNSZW5kZXJlZCA9IHRoaXMuX2hhc1JlbmRlcmVkO1xuICAgICAgY29uc3QgcmVzZXRIYXNSZW5kZXJlZCA9ICgpID0+IChoYXNSZW5kZXJlZC5jdXJyZW50ID0gZmFsc2UpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPERlY2tHTFxuICAgICAgICAgIGNvbnRyb2xsZXI9e3RydWV9XG4gICAgICAgICAgey4uLnRoaXMucHJvcHMuZGVja0dsUHJvcHN9XG4gICAgICAgICAgdmlld1N0YXRlPXttYXBTdGF0ZX1cbiAgICAgICAgICBvblZpZXdTdGF0ZUNoYW5nZT17KHt2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGV9KSA9PiB7XG4gICAgICAgICAgICAvLyBMaW1pdCB1cGRhdGVzIChwcmV2ZW50cyBmcmVlemVzIHdoZW4gZGV2IHRvb2xzIG9wZW4pXG4gICAgICAgICAgICBpZiAoIWhhc1JlbmRlcmVkLmN1cnJlbnQgJiYgdmlld1N0YXRlLndpZHRoID4gMSAmJiB2aWV3U3RhdGUuaGVpZ2h0ID4gMSkge1xuICAgICAgICAgICAgICBoYXNSZW5kZXJlZC5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgdGhpcy5fb25WaWV3cG9ydENoYW5nZSh2aWV3U3RhdGUsIGludGVyYWN0aW9uU3RhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgICAgaWQ9XCJkZWZhdWx0LWRlY2tnbC1vdmVybGF5XCJcbiAgICAgICAgICBsYXllcnM9e2RlY2tHbExheWVyc31cbiAgICAgICAgICBlZmZlY3RzPXtlZmZlY3RzfVxuICAgICAgICAgIG9uQmVmb3JlUmVuZGVyPXtvcHRzID0+IHtcbiAgICAgICAgICAgIHJlc2V0SGFzUmVuZGVyZWQoKTtcbiAgICAgICAgICAgIHRoaXMuX29uQmVmb3JlUmVuZGVyKG9wdHMpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25Ib3Zlcj17dmlzU3RhdGVBY3Rpb25zLm9uTGF5ZXJIb3Zlcn1cbiAgICAgICAgICBvbkNsaWNrPXt2aXNTdGF0ZUFjdGlvbnMub25MYXllckNsaWNrfVxuICAgICAgICAgIG9uRXJyb3I9e2UgPT4ge1xuICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICB0aGlzLl9vbkRlY2tFcnJvcihlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlZj17Y29tcCA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcCAmJiBjb21wLmRlY2sgJiYgY29tcC5kZWNrICE9PSB0aGlzLl9kZWNrKSB7XG4gICAgICAgICAgICAgIHRoaXMuX2RlY2sgPSBjb21wLmRlY2s7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbldlYkdMSW5pdGlhbGl6ZWQ9e2dsID0+IHRoaXMuX29uRGVja0luaXRpYWxpemVkKGdsKX1cbiAgICAgICAgICBsYXllckZpbHRlcj17KHtsYXllciwgdmlld3BvcnR9KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGlzTmFOKGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20/Lm1pbikgfHxcbiAgICAgICAgICAgICAgaXNOYU4obGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbT8ubWF4KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY3VycmVudFpvb21SYW5nZSA9IE1hdGgucm91bmQobWFwU3RhdGUuem9vbSk7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIGxheWVyLnByb3BzLnZpc2liaWxpdHlCeVpvb20ubWluIDw9IGN1cnJlbnRab29tUmFuZ2UgJiZcbiAgICAgICAgICAgICAgbGF5ZXIucHJvcHMudmlzaWJpbGl0eUJ5Wm9vbS5tYXggPj0gY3VycmVudFpvb21SYW5nZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICBfdXBkYXRlTWFwYm94TGF5ZXJzKCkge1xuICAgICAgY29uc3QgbWFwYm94TGF5ZXJzID0gdGhpcy5tYXBib3hMYXllcnNTZWxlY3Rvcih0aGlzLnByb3BzKTtcbiAgICAgIGlmICghT2JqZWN0LmtleXMobWFwYm94TGF5ZXJzKS5sZW5ndGggJiYgIU9iamVjdC5rZXlzKHRoaXMucHJldmlvdXNMYXllcnMpLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZU1hcGJveExheWVycyh0aGlzLl9tYXAsIG1hcGJveExheWVycywgdGhpcy5wcmV2aW91c0xheWVycyk7XG5cbiAgICAgIHRoaXMucHJldmlvdXNMYXllcnMgPSBtYXBib3hMYXllcnM7XG4gICAgfVxuXG4gICAgX3JlbmRlck1hcGJveE92ZXJsYXlzKCkge1xuICAgICAgaWYgKHRoaXMuX21hcCAmJiB0aGlzLl9tYXAuaXNTdHlsZUxvYWRlZCgpKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZU1hcGJveExheWVycygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIF9vblZpZXdwb3J0Q2hhbmdlID0gKHZpZXdTdGF0ZSwgaW50ZXJhY3Rpb25TdGF0ZSkgPT4ge1xuICAgICAgdHJhY2tlcnMudmlld3BvcnRDaGFuZ2VDb3VudD8uaW5jcmVtZW50KCk7XG5cbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0LCAuLi5yZXN0Vmlld1N0YXRlfSA9IHZpZXdTdGF0ZTtcbiAgICAgIGNvbnN0IHtwcmltYXJ5LCBpc0V4cG9ydH0gPSB0aGlzLnByb3BzO1xuICAgICAgLy8gcmVhY3QtbWFwLWdsIHNlbmRzIDAsMCBkaW1lbnNpb25zIGR1cmluZyBpbml0aWFsaXphdGlvblxuICAgICAgLy8gYWZ0ZXIgd2UgaGF2ZSByZWNlaXZlZCBwcm9wZXIgZGltZW5zaW9ucyBmcm9tIG9ic2VydmVEaW1lbnNpb25zXG4gICAgICBjb25zdCBuZXh0ID0ge1xuICAgICAgICAuLi4od2lkdGggPiAwICYmIGhlaWdodCA+IDAgPyB2aWV3U3RhdGUgOiByZXN0Vmlld1N0YXRlKSxcblxuICAgICAgICAvLyBBdXRvLXVwZGF0ZSB0aGUgY2FtZXJhIGhlaWdodCBhY2NvcmRpbmcgdG8gM0QgdGlsZXMsIGV4Y2VwdCB3aGVuIHRyYW5zaXRpb25pbmdcbiAgICAgICAgLi4uKGludGVyYWN0aW9uU3RhdGUgJiYgIWludGVyYWN0aW9uU3RhdGUuaW5UcmFuc2l0aW9uICYmIHtwb3NpdGlvbjogWzAsIDAsIGhdfSlcbiAgICAgICAgLy8gZW5hYmxpbmcgdHJhbnNpdGlvbiBpbiB0d28gbWFwcyBtYXkgbGVhZCB0byBlbmRsZXNzIHVwZGF0ZSBsb29wc1xuICAgICAgICAvLyB0cmFuc2l0aW9uRHVyYXRpb246IHByaW1hcnkgPyBUUkFOU0lUSU9OX0RVUkFUSU9OIDogMCAvLyBEaXNhYmxlIGZvciAzRCB0aWxlcyB0cmFuc2l0aW9uc1xuICAgICAgfTtcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5wcm9wcy5vblZpZXdTdGF0ZUNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnByb3BzLm9uVmlld1N0YXRlQ2hhbmdlKG5leHQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXhwb3J0KSB7XG4gICAgICAgIHRoaXMucHJvcHMubWFwU3RhdGVBY3Rpb25zLnVwZGF0ZU1hcChuZXh0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgX3RvZ2dsZU1hcENvbnRyb2wgPSBwYW5lbElkID0+IHtcbiAgICAgIGNvbnN0IHtpbmRleCwgdWlTdGF0ZUFjdGlvbnN9ID0gdGhpcy5wcm9wcztcblxuICAgICAgdWlTdGF0ZUFjdGlvbnMudG9nZ2xlTWFwQ29udHJvbChwYW5lbElkLCBpbmRleCk7XG4gICAgfTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbiAgICBfcmVuZGVyTWFwKCkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXBTdGF0ZSxcbiAgICAgICAgbWFwU3R5bGUsXG4gICAgICAgIG1hcFN0YXRlQWN0aW9ucyxcbiAgICAgICAgc2tldGNoVmFsdWUsXG4gICAgICAgIGxheWVycyxcbiAgICAgICAgTWFwQ29tcG9uZW50LFxuICAgICAgICBkYXRhc2V0cyxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgbWFwQ29udHJvbHMsXG4gICAgICAgIGlzRXhwb3J0LFxuICAgICAgICBsb2NhbGUsXG4gICAgICAgIHVpU3RhdGVBY3Rpb25zLFxuICAgICAgICB2aXNTdGF0ZUFjdGlvbnMsXG4gICAgICAgIGludGVyYWN0aW9uQ29uZmlnLFxuICAgICAgICBlZGl0b3IsXG4gICAgICAgIGluZGV4LFxuICAgICAgICBwcmltYXJ5XG4gICAgICB9ID0gdGhpcy5wcm9wcztcblxuICAgICAgY29uc3QgbGF5ZXJzVG9SZW5kZXIgPSB0aGlzLmxheWVyc1RvUmVuZGVyU2VsZWN0b3IodGhpcy5wcm9wcyk7XG4gICAgICBjb25zdCBsYXllcnNGb3JEZWNrID0gdGhpcy5sYXllcnNGb3JEZWNrU2VsZWN0b3IodGhpcy5wcm9wcyk7XG5cbiAgICAgIGNvbnN0IG1hcFByb3BzID0ge1xuICAgICAgICAuLi5tYXBTdGF0ZSxcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICAgIHByZXNlcnZlRHJhd2luZ0J1ZmZlcjogdHJ1ZSxcbiAgICAgICAgbWFwYm94QXBpQWNjZXNzVG9rZW4sXG4gICAgICAgIG1hcGJveEFwaVVybCxcbiAgICAgICAgdHJhbnNmb3JtUmVxdWVzdFxuICAgICAgfTtcblxuICAgICAgY29uc3QgaXNFZGl0ID0gKG1hcENvbnRyb2xzLm1hcERyYXcgfHwge30pLmFjdGl2ZTtcblxuICAgICAgY29uc3QgaGFzR2VvY29kZXJMYXllciA9IGxheWVycy5maW5kKGwgPT4gbC5pZCA9PT0gR0VPQ09ERVJfTEFZRVJfSUQpO1xuICAgICAgY29uc3QgaXNTcGxpdCA9IEJvb2xlYW4obWFwU3RhdGUuaXNTcGxpdCk7XG4gICAgICBjb25zdCBtb3VzZVBvc2l0aW9uID0gdGhpcy5fbW91c2VQb3NpdGlvbjtcblxuICAgICAgY29uc3QgbmVlZHNCYXNlbWFwID0gbWFwU3R5bGUuYm90dG9tTWFwU3R5bGUudHlwZSAhPT0gJ2dtYXBzXzNkJztcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8TWFwQ29udHJvbFxuICAgICAgICAgICAgZGF0YXNldHM9e2RhdGFzZXRzfVxuICAgICAgICAgICAgYXZhaWxhYmxlTG9jYWxlcz17T2JqZWN0LmtleXMoTE9DQUxFX0NPREVTKX1cbiAgICAgICAgICAgIGRyYWdSb3RhdGU9e21hcFN0YXRlLmRyYWdSb3RhdGV9XG4gICAgICAgICAgICBpc1NwbGl0PXtpc1NwbGl0fVxuICAgICAgICAgICAgcHJpbWFyeT17cHJpbWFyeX1cbiAgICAgICAgICAgIGlzRXhwb3J0PXtpc0V4cG9ydH1cbiAgICAgICAgICAgIGxheWVycz17bGF5ZXJzfVxuICAgICAgICAgICAgbGF5ZXJzVG9SZW5kZXI9e2xheWVyc1RvUmVuZGVyfVxuICAgICAgICAgICAgbWFwSW5kZXg9e2luZGV4fVxuICAgICAgICAgICAgbWFwQ29udHJvbHM9e21hcENvbnRyb2xzfVxuICAgICAgICAgICAgcmVhZE9ubHk9e3RoaXMucHJvcHMucmVhZE9ubHl9XG4gICAgICAgICAgICBzY2FsZT17bWFwU3RhdGUuc2NhbGUgfHwgMX1cbiAgICAgICAgICAgIHRvcD17aW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIgJiYgaW50ZXJhY3Rpb25Db25maWcuZ2VvY29kZXIuZW5hYmxlZCA/IDUyIDogMH1cbiAgICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgICAgbG9jYWxlPXtsb2NhbGV9XG4gICAgICAgICAgICBvblRvZ2dsZVBlcnNwZWN0aXZlPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlUGVyc3BlY3RpdmV9XG4gICAgICAgICAgICBvblRvZ2dsZVNwbGl0TWFwPXttYXBTdGF0ZUFjdGlvbnMudG9nZ2xlU3BsaXRNYXB9XG4gICAgICAgICAgICBvbk1hcFRvZ2dsZUxheWVyPXt0aGlzLl9oYW5kbGVNYXBUb2dnbGVMYXllcn1cbiAgICAgICAgICAgIG9uVG9nZ2xlTWFwQ29udHJvbD17dGhpcy5fdG9nZ2xlTWFwQ29udHJvbH1cbiAgICAgICAgICAgIG9uU2V0RWRpdG9yTW9kZT17dmlzU3RhdGVBY3Rpb25zLnNldEVkaXRvck1vZGV9XG4gICAgICAgICAgICBvblNldExvY2FsZT17dWlTdGF0ZUFjdGlvbnMuc2V0TG9jYWxlfVxuICAgICAgICAgICAgb25Ub2dnbGVFZGl0b3JWaXNpYmlsaXR5PXt2aXNTdGF0ZUFjdGlvbnMudG9nZ2xlRWRpdG9yVmlzaWJpbGl0eX1cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtuZWVkc0Jhc2VtYXAgPyAoXG4gICAgICAgICAgICA8TWFwQ29tcG9uZW50XG4gICAgICAgICAgICAgIHsuLi5tYXBQcm9wc31cbiAgICAgICAgICAgICAga2V5PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLl9zZXRNYXBib3hNYXB9XG4gICAgICAgICAgICAgIG1hcFN0eWxlPXttYXBTdHlsZS5ib3R0b21NYXBTdHlsZX1cbiAgICAgICAgICAgICAgc2tldGNoVmFsdWU9e3NrZXRjaFZhbHVlfVxuICAgICAgICAgICAgICBnZXRDdXJzb3I9e3RoaXMucHJvcHMuaG92ZXJJbmZvID8gKCkgPT4gJ3BvaW50ZXInIDogdW5kZWZpbmVkfVxuICAgICAgICAgICAgICBvbk1vdXNlTW92ZT17ZXZ0ID0+IHtcbiAgICAgICAgICAgICAgICAvLyBTZW5kaW5nIG1vdXNlIG1vdmUgdXBkYXRlcyB2aWEgUmVkdXggaXMgZXhwZW5zaXZlLiBTdG9yZVxuICAgICAgICAgICAgICAgIC8vIGxvY2FsbHkgYW5kIHJlbHkgb24gZGVjay5nbCB0byBkcml2ZSByZW5kZXIgdXBkYXRlc1xuICAgICAgICAgICAgICAgIC8vIFNlZSBCdWlsZGVyOiBmZWF0dXJlcy9idWlsZGVyL3VpL0tlcGxlckdsL01hcENvbnRhaW5lci9NYXBDb250YWluZXIudHN4XG4gICAgICAgICAgICAgICAgbW91c2VQb3NpdGlvbi5jdXJyZW50ID0ge21vdXNlUG9zaXRpb246IGV2dC5wb2ludH07XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtQRVJGX0RFQlVHICYmIHJlbmRlclBlcmZvcm1hbmNlU3RhdHMoKX1cbiAgICAgICAgICAgICAge3RoaXMuX3JlbmRlckRlY2tPdmVybGF5KGxheWVyc0ZvckRlY2spfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyTWFwYm94T3ZlcmxheXMoKX1cbiAgICAgICAgICAgICAgPEVkaXRvclxuICAgICAgICAgICAgICAgIGluZGV4PXtpbmRleH1cbiAgICAgICAgICAgICAgICBkYXRhc2V0cz17ZGF0YXNldHN9XG4gICAgICAgICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgICAgICAgICAgZmlsdGVycz17dGhpcy5wb2x5Z29uRmlsdGVycyh0aGlzLnByb3BzKX1cbiAgICAgICAgICAgICAgICBpc0VuYWJsZWQ9e2lzRWRpdH1cbiAgICAgICAgICAgICAgICBsYXllcnM9e2xheWVyc31cbiAgICAgICAgICAgICAgICBsYXllcnNUb1JlbmRlcj17bGF5ZXJzVG9SZW5kZXJ9XG4gICAgICAgICAgICAgICAgb25EZWxldGVGZWF0dXJlPXt2aXNTdGF0ZUFjdGlvbnMuZGVsZXRlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblNlbGVjdD17dmlzU3RhdGVBY3Rpb25zLnNldFNlbGVjdGVkRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBvblVwZGF0ZT17dmlzU3RhdGVBY3Rpb25zLnNldEZlYXR1cmVzfVxuICAgICAgICAgICAgICAgIG9uVG9nZ2xlUG9seWdvbkZpbHRlcj17dmlzU3RhdGVBY3Rpb25zLnNldFBvbHlnb25GaWx0ZXJMYXllcn1cbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgcG9pbnRlckV2ZW50czogaXNFZGl0ID8gJ2FsbCcgOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGVkaXRvci52aXNpYmxlID8gJ2Jsb2NrJyA6ICdub25lJ1xuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge1BFUkZfREVCVUcgJiYgcmVuZGVyUGVyZm9ybWFuY2VTdGF0cygpfVxuICAgICAgICAgICAgICB7dGhpcy5fcmVuZGVyRGVja092ZXJsYXkobGF5ZXJzRm9yRGVjayl9XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICAgIHttYXBTdHlsZS50b3BNYXBTdHlsZSB8fCBoYXNHZW9jb2RlckxheWVyID8gKFxuICAgICAgICAgICAgPGRpdiBzdHlsZT17TUFQX1NUWUxFLnRvcH0+XG4gICAgICAgICAgICAgIDxNYXBDb21wb25lbnQgey4uLm1hcFByb3BzfSBrZXk9XCJ0b3BcIiBtYXBTdHlsZT17bWFwU3R5bGUudG9wTWFwU3R5bGV9PlxuICAgICAgICAgICAgICAgIHt0aGlzLl9yZW5kZXJEZWNrT3ZlcmxheSh7W0dFT0NPREVSX0xBWUVSX0lEXTogdHJ1ZX0pfVxuICAgICAgICAgICAgICA8L01hcENvbXBvbmVudD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHt0aGlzLl9yZW5kZXJNYXBQb3BvdmVyKGxheWVyc1RvUmVuZGVyKX1cbiAgICAgICAgICB7IWlzU3BsaXQgfHwgaW5kZXggPT09IDEgPyA8QXR0cmlidXRpb24gLz4gOiBudWxsfVxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge21hcFN0YXRlLCBtYXBTdHlsZX0gPSB0aGlzLnByb3BzO1xuICAgICAgY29uc3QgY29udGV4dExvc3QgPSB0aGlzLnN0YXRlPy5jb250ZXh0TG9zdDtcblxuICAgICAgaWYgKGNvbnRleHRMb3N0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8U3R5bGVkTWFwQ29udGFpbmVyIHJlZj17dGhpcy5fcmVmfSBzdHlsZT17TUFQX1NUWUxFLmNvbnRhaW5lcn0gZ2xvYmU9e21hcFN0YXRlLmdsb2JlfT5cbiAgICAgICAgICB7bWFwU3R5bGUuYm90dG9tTWFwU3R5bGUgJiYgdGhpcy5fcmVuZGVyTWFwKCl9XG4gICAgICAgIDwvU3R5bGVkTWFwQ29udGFpbmVyPlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBNYXBDb250YWluZXIuZGlzcGxheU5hbWUgPSAnTWFwQ29udGFpbmVyJztcblxuICByZXR1cm4gTWFwQ29udGFpbmVyO1xufVxuIl19
@@ -134,7 +134,7 @@ var KEPLER_GL_NAME = 'kepler.gl'; // __PACKAGE_VERSION__ is automatically inject
134
134
  // an empty string which will allow us to retrieve the latest umd version
135
135
 
136
136
  exports.KEPLER_GL_NAME = KEPLER_GL_NAME;
137
- var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.7";
137
+ var KEPLER_GL_VERSION = "0.0.69-alpha.hackathon-3dtiles.9";
138
138
  exports.KEPLER_GL_VERSION = KEPLER_GL_VERSION;
139
139
  var KEPLER_GL_WEBSITE = 'http://kepler.gl/';
140
140
  exports.KEPLER_GL_WEBSITE = KEPLER_GL_WEBSITE;