@kepler.gl/utils 3.1.0 → 3.1.1

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.
@@ -13,7 +13,7 @@ export declare type BaseMapLibraryConfig = {
13
13
  * A mechanism to override default Kepler values/settings so that we
14
14
  * without having to make application-specific changes to the kepler repo.
15
15
  */
16
- export declare type KeplerApplicationConfig<Map> = {
16
+ export declare type KeplerApplicationConfig = {
17
17
  /** Default name of export HTML file, can be overridden by user */
18
18
  defaultHtmlName?: string;
19
19
  defaultImageName?: string;
@@ -27,6 +27,7 @@ export declare type KeplerApplicationConfig<Map> = {
27
27
  table?: any;
28
28
  useArrowProgressiveLoading?: boolean;
29
29
  showReleaseBanner?: boolean;
30
+ useOnFilteredItemsChange?: boolean;
30
31
  };
31
- export declare const getApplicationConfig: () => Required<KeplerApplicationConfig<mapboxgl.Map>>;
32
- export declare function initApplicationConfig<M>(appConfig?: KeplerApplicationConfig<M>): void;
32
+ export declare const getApplicationConfig: () => Required<KeplerApplicationConfig>;
33
+ export declare function initApplicationConfig(appConfig?: KeplerApplicationConfig): void;
@@ -54,7 +54,8 @@ var DEFAULT_APPLICATION_CONFIG = {
54
54
  // TODO include KeplerTable here when the circular dependency with @kepler.gl/table and @kepler.gl/utils are resolved.
55
55
  table: null,
56
56
  useArrowProgressiveLoading: true,
57
- showReleaseBanner: true
57
+ showReleaseBanner: true,
58
+ useOnFilteredItemsChange: false
58
59
  };
59
60
  var applicationConfig = DEFAULT_APPLICATION_CONFIG;
60
61
  var getApplicationConfig = exports.getApplicationConfig = function getApplicationConfig() {
@@ -64,4 +65,4 @@ function initApplicationConfig() {
64
65
  var appConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
65
66
  Object.assign(applicationConfig, appConfig);
66
67
  }
67
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRyIsImRlZmF1bHRIdG1sTmFtZSIsImRlZmF1bHRJbWFnZU5hbWUiLCJkZWZhdWx0SnNvbk5hbWUiLCJkZWZhdWx0RGF0YU5hbWUiLCJkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzIiwiaGFzRGF0YSIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwbGlicmUiLCJnZXRNYXBMaWIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJtYXBMaWJDc3NDbGFzcyIsIm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3MiLCJtYXBMaWJOYW1lIiwibWFwTGliVXJsIiwibWFwYm94IiwicGx1Z2lucyIsInRhYmxlIiwidXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmciLCJzaG93UmVsZWFzZUJhbm5lciIsImFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJleHBvcnRzIiwiaW5pdEFwcGxpY2F0aW9uQ29uZmlnIiwiYXBwQ29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uLWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcExpYiwgTWFwUmVmfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuXG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIE1hcExpYkluc3RhbmNlID0gTWFwTGliPGFueT47XG5leHBvcnQgdHlwZSBHZXRNYXBSZWYgPSBSZXR1cm5UeXBlPE1hcFJlZlsnZ2V0TWFwJ10+O1xuXG5leHBvcnQgdHlwZSBCYXNlTWFwTGlicmFyeUNvbmZpZyA9IHtcbiAgZ2V0TWFwTGliOiAoKSA9PiBQcm9taXNlPE1hcExpYkluc3RhbmNlPjtcbiAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJOYW1lOiBzdHJpbmc7XG4gIG1hcExpYlVybDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBIG1lY2hhbmlzbSB0byBvdmVycmlkZSBkZWZhdWx0IEtlcGxlciB2YWx1ZXMvc2V0dGluZ3Mgc28gdGhhdCB3ZVxuICogd2l0aG91dCBoYXZpbmcgdG8gbWFrZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXBsZXIgcmVwby5cbiAqL1xuZXhwb3J0IHR5cGUgS2VwbGVyQXBwbGljYXRpb25Db25maWc8TWFwPiA9IHtcbiAgLyoqIERlZmF1bHQgbmFtZSBvZiBleHBvcnQgSFRNTCBmaWxlLCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB1c2VyICovXG4gIGRlZmF1bHRIdG1sTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEltYWdlTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdEpzb25OYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RGF0YU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M/OiB7XG4gICAgaGFzRGF0YT86IGJvb2xlYW47XG4gIH07XG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnPzogUmVjb3JkPEJhc2VNYXBMaWJyYXJ5VHlwZSwgQmFzZU1hcExpYnJhcnlDb25maWc+O1xuICBwbHVnaW5zPzogYW55W107XG4gIC8vIEtlcGxlclRhYmxlIGFsdGVybmF0aXZlXG4gIC8vIFRPRE8gaW1wcm92ZSB0eXBpbmcgYnkgZXhwb3J0aW5nIEtlcGxlclRhYmxlIGludGVyZmFjZSB0byBAa2VwbGVyLmdsL3R5cGVzXG4gIHRhYmxlPzogYW55O1xuXG4gIC8vIERpc2FibGUgcHJvZ3Jlc3NpdmUgbG9hZGluZyBmb3IgYXJyb3cgZmlsZXNcbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc/OiBib29sZWFuO1xuICAvLyBTaG93IGJ1aWx0LWluIGJhbm5lciBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBLZXBsZXIuZ2xcbiAgc2hvd1JlbGVhc2VCYW5uZXI/OiBib29sZWFuO1xufTtcblxuY29uc3QgREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPG1hcGJveGdsLk1hcD4+ID0ge1xuICBkZWZhdWx0SHRtbE5hbWU6ICdrZXBsZXIuZ2wuaHRtbCcsXG4gIGRlZmF1bHRJbWFnZU5hbWU6ICdrZXBsZXIuZ2wucG5nJyxcbiAgZGVmYXVsdEpzb25OYW1lOiAna2VwbGVyLmdsLmpzb24nLFxuICBkZWZhdWx0RGF0YU5hbWU6ICdrZXBsZXIuZ2wnLFxuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzOiB7XG4gICAgaGFzRGF0YTogdHJ1ZVxuICB9LFxuXG4gIGJhc2VNYXBMaWJyYXJ5Q29uZmlnOiB7XG4gICAgbWFwbGlicmU6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBsaWJyZS1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBsaWJyZWdsJyxcbiAgICAgIG1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3M6ICdtYXBsaWJyZS1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcExpYnJlJyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGxpYnJlLm9yZy8nXG4gICAgfSxcbiAgICBtYXBib3g6IHtcbiAgICAgIGdldE1hcExpYjogKCkgPT4gaW1wb3J0KCdtYXBib3gtZ2wnKSxcbiAgICAgIG1hcExpYkNzc0NsYXNzOiAnbWFwYm94Z2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGJveC1hdHRyaWJ1dGlvbi1jb250YWluZXInLFxuICAgICAgbWFwTGliTmFtZTogJ01hcGJveCcsXG4gICAgICBtYXBMaWJVcmw6ICdodHRwczovL3d3dy5tYXBib3guY29tLydcbiAgICB9XG4gIH0sXG5cbiAgcGx1Z2luczogW10sXG4gIC8vIFRoZSBkZWZhdWx0IHRhYmxlIGNsYXNzIGlzIEtlcGxlclRhYmxlLlxuICAvLyBUT0RPIGluY2x1ZGUgS2VwbGVyVGFibGUgaGVyZSB3aGVuIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IHdpdGggQGtlcGxlci5nbC90YWJsZSBhbmQgQGtlcGxlci5nbC91dGlscyBhcmUgcmVzb2x2ZWQuXG4gIHRhYmxlOiBudWxsLFxuXG4gIHVzZUFycm93UHJvZ3Jlc3NpdmVMb2FkaW5nOiB0cnVlLFxuICBzaG93UmVsZWFzZUJhbm5lcjogdHJ1ZVxufTtcblxuY29uc3QgYXBwbGljYXRpb25Db25maWc6IFJlcXVpcmVkPEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPG1hcGJveGdsLk1hcD4+ID1cbiAgREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc7XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbkNvbmZpZyA9ICgpOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZzxtYXBib3hnbC5NYXA+PiA9PlxuICBhcHBsaWNhdGlvbkNvbmZpZztcblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRBcHBsaWNhdGlvbkNvbmZpZzxNPihhcHBDb25maWc6IEtlcGxlckFwcGxpY2F0aW9uQ29uZmlnPE0+ID0ge30pIHtcbiAgT2JqZWN0LmFzc2lnbihhcHBsaWNhdGlvbkNvbmZpZywgYXBwQ29uZmlnKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUNBOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTs7QUFzQkEsSUFBTUEsMEJBQTJFLEdBQUc7RUFDbEZDLGVBQWUsRUFBRSxnQkFBZ0I7RUFDakNDLGdCQUFnQixFQUFFLGVBQWU7RUFDakNDLGVBQWUsRUFBRSxnQkFBZ0I7RUFDakNDLGVBQWUsRUFBRSxXQUFXO0VBQzVCQyx5QkFBeUIsRUFBRTtJQUN6QkMsT0FBTyxFQUFFO0VBQ1gsQ0FBQztFQUVEQyxvQkFBb0IsRUFBRTtJQUNwQkMsUUFBUSxFQUFFO01BQ1JDLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1FBQUEsT0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBQUFDLElBQUE7VUFBQSxPQUFBQyx1QkFBQSxDQUFBQyxPQUFBLENBQWUsYUFBYTtRQUFBO01BQUEsQ0FBQztNQUN0Q0MsY0FBYyxFQUFFLFlBQVk7TUFDNUJDLHlCQUF5QixFQUFFLGdDQUFnQztNQUMzREMsVUFBVSxFQUFFLFVBQVU7TUFDdEJDLFNBQVMsRUFBRTtJQUNiLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05WLFNBQVMsRUFBRSxTQUFYQSxTQUFTQSxDQUFBO1FBQUEsT0FBQUMsT0FBQSxDQUFBQyxPQUFBLEdBQUFDLElBQUE7VUFBQSxPQUFBQyx1QkFBQSxDQUFBQyxPQUFBLENBQWUsV0FBVztRQUFBO01BQUEsQ0FBQztNQUNwQ0MsY0FBYyxFQUFFLFVBQVU7TUFDMUJDLHlCQUF5QixFQUFFLDhCQUE4QjtNQUN6REMsVUFBVSxFQUFFLFFBQVE7TUFDcEJDLFNBQVMsRUFBRTtJQUNiO0VBQ0YsQ0FBQztFQUVERSxPQUFPLEVBQUUsRUFBRTtFQUNYO0VBQ0E7RUFDQUMsS0FBSyxFQUFFLElBQUk7RUFFWEMsMEJBQTBCLEVBQUUsSUFBSTtFQUNoQ0MsaUJBQWlCLEVBQUU7QUFDckIsQ0FBQztBQUVELElBQU1DLGlCQUFrRSxHQUN0RXhCLDBCQUEwQjtBQUVyQixJQUFNeUIsb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBO0VBQUEsT0FDL0JELGlCQUFpQjtBQUFBO0FBRVosU0FBU0cscUJBQXFCQSxDQUFBLEVBQWdEO0VBQUEsSUFBNUNDLFNBQXFDLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxNQUFHLENBQUMsQ0FBQztFQUNqRkcsTUFBTSxDQUFDQyxNQUFNLENBQUNULGlCQUFpQixFQUFFSSxTQUFTLENBQUM7QUFDN0MiLCJpZ25vcmVMaXN0IjpbXX0=
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJERUZBVUxUX0FQUExJQ0FUSU9OX0NPTkZJRyIsImRlZmF1bHRIdG1sTmFtZSIsImRlZmF1bHRJbWFnZU5hbWUiLCJkZWZhdWx0SnNvbk5hbWUiLCJkZWZhdWx0RGF0YU5hbWUiLCJkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzIiwiaGFzRGF0YSIsImJhc2VNYXBMaWJyYXJ5Q29uZmlnIiwibWFwbGlicmUiLCJnZXRNYXBMaWIiLCJQcm9taXNlIiwicmVzb2x2ZSIsInRoZW4iLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJtYXBMaWJDc3NDbGFzcyIsIm1hcExpYkF0dHJpYnV0aW9uQ3NzQ2xhc3MiLCJtYXBMaWJOYW1lIiwibWFwTGliVXJsIiwibWFwYm94IiwicGx1Z2lucyIsInRhYmxlIiwidXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmciLCJzaG93UmVsZWFzZUJhbm5lciIsInVzZU9uRmlsdGVyZWRJdGVtc0NoYW5nZSIsImFwcGxpY2F0aW9uQ29uZmlnIiwiZ2V0QXBwbGljYXRpb25Db25maWciLCJleHBvcnRzIiwiaW5pdEFwcGxpY2F0aW9uQ29uZmlnIiwiYXBwQ29uZmlnIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZXMiOlsiLi4vc3JjL2FwcGxpY2F0aW9uLWNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge01hcExpYiwgTWFwUmVmfSBmcm9tICdyZWFjdC1tYXAtZ2wnO1xuXG5pbXBvcnQgdHlwZSB7QmFzZU1hcExpYnJhcnlUeXBlfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5cbmV4cG9ydCB0eXBlIE1hcExpYkluc3RhbmNlID0gTWFwTGliPGFueT47XG5leHBvcnQgdHlwZSBHZXRNYXBSZWYgPSBSZXR1cm5UeXBlPE1hcFJlZlsnZ2V0TWFwJ10+O1xuXG5leHBvcnQgdHlwZSBCYXNlTWFwTGlicmFyeUNvbmZpZyA9IHtcbiAgZ2V0TWFwTGliOiAoKSA9PiBQcm9taXNlPE1hcExpYkluc3RhbmNlPjtcbiAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJDc3NDbGFzczogc3RyaW5nO1xuICBtYXBMaWJOYW1lOiBzdHJpbmc7XG4gIG1hcExpYlVybDogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBBIG1lY2hhbmlzbSB0byBvdmVycmlkZSBkZWZhdWx0IEtlcGxlciB2YWx1ZXMvc2V0dGluZ3Mgc28gdGhhdCB3ZVxuICogd2l0aG91dCBoYXZpbmcgdG8gbWFrZSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBjaGFuZ2VzIHRvIHRoZSBrZXBsZXIgcmVwby5cbiAqL1xuZXhwb3J0IHR5cGUgS2VwbGVyQXBwbGljYXRpb25Db25maWcgPSB7XG4gIC8qKiBEZWZhdWx0IG5hbWUgb2YgZXhwb3J0IEhUTUwgZmlsZSwgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdXNlciAqL1xuICBkZWZhdWx0SHRtbE5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRJbWFnZU5hbWU/OiBzdHJpbmc7XG4gIGRlZmF1bHRKc29uTmFtZT86IHN0cmluZztcbiAgZGVmYXVsdERhdGFOYW1lPzogc3RyaW5nO1xuICBkZWZhdWx0RXhwb3J0SnNvblNldHRpbmdzPzoge1xuICAgIGhhc0RhdGE/OiBib29sZWFuO1xuICB9O1xuICBiYXNlTWFwTGlicmFyeUNvbmZpZz86IFJlY29yZDxCYXNlTWFwTGlicmFyeVR5cGUsIEJhc2VNYXBMaWJyYXJ5Q29uZmlnPjtcbiAgcGx1Z2lucz86IGFueVtdO1xuICAvLyBLZXBsZXJUYWJsZSBhbHRlcm5hdGl2ZVxuICAvLyBUT0RPIGltcHJvdmUgdHlwaW5nIGJ5IGV4cG9ydGluZyBLZXBsZXJUYWJsZSBpbnRlcmZhY2UgdG8gQGtlcGxlci5nbC90eXBlc1xuICB0YWJsZT86IGFueTtcblxuICAvLyBEaXNhYmxlIHByb2dyZXNzaXZlIGxvYWRpbmcgZm9yIGFycm93IGZpbGVzXG4gIHVzZUFycm93UHJvZ3Jlc3NpdmVMb2FkaW5nPzogYm9vbGVhbjtcbiAgLy8gU2hvdyBidWlsdC1pbiBiYW5uZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgS2VwbGVyLmdsXG4gIHNob3dSZWxlYXNlQmFubmVyPzogYm9vbGVhbjtcbiAgLy8gVXNlIHRoZSBvbkZpbHRlcmVkSXRlbXNDaGFuZ2UgY2FsbGJhY2sgZm9yIERhdGFGaWx0ZXJFeHRlbnNpb24uXG4gIC8vIEVuYWJsaW5nIHRoaXMgb3B0aW9uIG1heSBjYXVzZSBwZXJmb3JtYW5jZSBpc3N1ZXMgd2hlbiBkZWFsaW5nIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgbGF5ZXJzIG9yIHN1YmxheWVycyxcbiAgLy8gZXNwZWNpYWxseSBpZiBsYXJnZSBBcnJvdyBmaWxlcyBhcmUgc3BsaXQgaW50byByZWxhdGl2ZWx5IHNtYWxsIGJhdGNoZXMgKHNob3VsZCBiZSBmaXhlZCBpbiB0aGUgZnV0dXJlKS5cbiAgdXNlT25GaWx0ZXJlZEl0ZW1zQ2hhbmdlPzogYm9vbGVhbjtcbn07XG5cbmNvbnN0IERFRkFVTFRfQVBQTElDQVRJT05fQ09ORklHOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZz4gPSB7XG4gIGRlZmF1bHRIdG1sTmFtZTogJ2tlcGxlci5nbC5odG1sJyxcbiAgZGVmYXVsdEltYWdlTmFtZTogJ2tlcGxlci5nbC5wbmcnLFxuICBkZWZhdWx0SnNvbk5hbWU6ICdrZXBsZXIuZ2wuanNvbicsXG4gIGRlZmF1bHREYXRhTmFtZTogJ2tlcGxlci5nbCcsXG4gIGRlZmF1bHRFeHBvcnRKc29uU2V0dGluZ3M6IHtcbiAgICBoYXNEYXRhOiB0cnVlXG4gIH0sXG5cbiAgYmFzZU1hcExpYnJhcnlDb25maWc6IHtcbiAgICBtYXBsaWJyZToge1xuICAgICAgZ2V0TWFwTGliOiAoKSA9PiBpbXBvcnQoJ21hcGxpYnJlLWdsJyksXG4gICAgICBtYXBMaWJDc3NDbGFzczogJ21hcGxpYnJlZ2wnLFxuICAgICAgbWFwTGliQXR0cmlidXRpb25Dc3NDbGFzczogJ21hcGxpYnJlLWF0dHJpYnV0aW9uLWNvbnRhaW5lcicsXG4gICAgICBtYXBMaWJOYW1lOiAnTWFwTGlicmUnLFxuICAgICAgbWFwTGliVXJsOiAnaHR0cHM6Ly93d3cubWFwbGlicmUub3JnLydcbiAgICB9LFxuICAgIG1hcGJveDoge1xuICAgICAgZ2V0TWFwTGliOiAoKSA9PiBpbXBvcnQoJ21hcGJveC1nbCcpLFxuICAgICAgbWFwTGliQ3NzQ2xhc3M6ICdtYXBib3hnbCcsXG4gICAgICBtYXBMaWJBdHRyaWJ1dGlvbkNzc0NsYXNzOiAnbWFwYm94LWF0dHJpYnV0aW9uLWNvbnRhaW5lcicsXG4gICAgICBtYXBMaWJOYW1lOiAnTWFwYm94JyxcbiAgICAgIG1hcExpYlVybDogJ2h0dHBzOi8vd3d3Lm1hcGJveC5jb20vJ1xuICAgIH1cbiAgfSxcblxuICBwbHVnaW5zOiBbXSxcbiAgLy8gVGhlIGRlZmF1bHQgdGFibGUgY2xhc3MgaXMgS2VwbGVyVGFibGUuXG4gIC8vIFRPRE8gaW5jbHVkZSBLZXBsZXJUYWJsZSBoZXJlIHdoZW4gdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgd2l0aCBAa2VwbGVyLmdsL3RhYmxlIGFuZCBAa2VwbGVyLmdsL3V0aWxzIGFyZSByZXNvbHZlZC5cbiAgdGFibGU6IG51bGwsXG5cbiAgdXNlQXJyb3dQcm9ncmVzc2l2ZUxvYWRpbmc6IHRydWUsXG4gIHNob3dSZWxlYXNlQmFubmVyOiB0cnVlLFxuICB1c2VPbkZpbHRlcmVkSXRlbXNDaGFuZ2U6IGZhbHNlXG59O1xuXG5jb25zdCBhcHBsaWNhdGlvbkNvbmZpZzogUmVxdWlyZWQ8S2VwbGVyQXBwbGljYXRpb25Db25maWc+ID0gREVGQVVMVF9BUFBMSUNBVElPTl9DT05GSUc7XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBsaWNhdGlvbkNvbmZpZyA9ICgpOiBSZXF1aXJlZDxLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZz4gPT4gYXBwbGljYXRpb25Db25maWc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0QXBwbGljYXRpb25Db25maWcoYXBwQ29uZmlnOiBLZXBsZXJBcHBsaWNhdGlvbkNvbmZpZyA9IHt9KSB7XG4gIE9iamVjdC5hc3NpZ24oYXBwbGljYXRpb25Db25maWcsIGFwcENvbmZpZyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTs7QUFpQkE7QUFDQTtBQUNBO0FBQ0E7O0FBMEJBLElBQU1BLDBCQUE2RCxHQUFHO0VBQ3BFQyxlQUFlLEVBQUUsZ0JBQWdCO0VBQ2pDQyxnQkFBZ0IsRUFBRSxlQUFlO0VBQ2pDQyxlQUFlLEVBQUUsZ0JBQWdCO0VBQ2pDQyxlQUFlLEVBQUUsV0FBVztFQUM1QkMseUJBQXlCLEVBQUU7SUFDekJDLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFREMsb0JBQW9CLEVBQUU7SUFDcEJDLFFBQVEsRUFBRTtNQUNSQyxTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBQTtRQUFBLE9BQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUFBQyxJQUFBO1VBQUEsT0FBQUMsdUJBQUEsQ0FBQUMsT0FBQSxDQUFlLGFBQWE7UUFBQTtNQUFBLENBQUM7TUFDdENDLGNBQWMsRUFBRSxZQUFZO01BQzVCQyx5QkFBeUIsRUFBRSxnQ0FBZ0M7TUFDM0RDLFVBQVUsRUFBRSxVQUFVO01BQ3RCQyxTQUFTLEVBQUU7SUFDYixDQUFDO0lBQ0RDLE1BQU0sRUFBRTtNQUNOVixTQUFTLEVBQUUsU0FBWEEsU0FBU0EsQ0FBQTtRQUFBLE9BQUFDLE9BQUEsQ0FBQUMsT0FBQSxHQUFBQyxJQUFBO1VBQUEsT0FBQUMsdUJBQUEsQ0FBQUMsT0FBQSxDQUFlLFdBQVc7UUFBQTtNQUFBLENBQUM7TUFDcENDLGNBQWMsRUFBRSxVQUFVO01BQzFCQyx5QkFBeUIsRUFBRSw4QkFBOEI7TUFDekRDLFVBQVUsRUFBRSxRQUFRO01BQ3BCQyxTQUFTLEVBQUU7SUFDYjtFQUNGLENBQUM7RUFFREUsT0FBTyxFQUFFLEVBQUU7RUFDWDtFQUNBO0VBQ0FDLEtBQUssRUFBRSxJQUFJO0VBRVhDLDBCQUEwQixFQUFFLElBQUk7RUFDaENDLGlCQUFpQixFQUFFLElBQUk7RUFDdkJDLHdCQUF3QixFQUFFO0FBQzVCLENBQUM7QUFFRCxJQUFNQyxpQkFBb0QsR0FBR3pCLDBCQUEwQjtBQUVoRixJQUFNMEIsb0JBQW9CLEdBQUFDLE9BQUEsQ0FBQUQsb0JBQUEsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFBO0VBQUEsT0FBNENELGlCQUFpQjtBQUFBO0FBRXZGLFNBQVNHLHFCQUFxQkEsQ0FBQSxFQUEwQztFQUFBLElBQXpDQyxTQUFrQyxHQUFBQyxTQUFBLENBQUFDLE1BQUEsUUFBQUQsU0FBQSxRQUFBRSxTQUFBLEdBQUFGLFNBQUEsTUFBRyxDQUFDLENBQUM7RUFDM0VHLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDVCxpQkFBaUIsRUFBRUksU0FBUyxDQUFDO0FBQzdDIiwiaWdub3JlTGlzdCI6W119
@@ -161,7 +161,7 @@ function getThresholdLabels(scale, labelFormat) {
161
161
  * Get linear / quant scale color labels
162
162
  */
163
163
  function getScaleLabels(scale, labelFormat) {
164
- return scale.range().map(function (d, i) {
164
+ return scale.range().map(function (d) {
165
165
  // @ts-ignore
166
166
  var invert = scale.invertExtent(d);
167
167
  var inputs = [(0, _dataUtils.reverseFormatNumber)(labelFormat(invert[0])), (0, _dataUtils.reverseFormatNumber)(labelFormat(invert[1]))];
@@ -328,7 +328,7 @@ function colorMapToCategoricalColorBreaks(colorMap) {
328
328
  if (!colorMap) {
329
329
  return null;
330
330
  }
331
- var colorBreaks = colorMap.map(function (_ref4, i) {
331
+ var colorBreaks = colorMap.map(function (_ref4) {
332
332
  var _ref5 = (0, _slicedToArray2["default"])(_ref4, 2),
333
333
  value = _ref5[0],
334
334
  color = _ref5[1];
@@ -435,7 +435,7 @@ function getHistogramDomain(_ref8) {
435
435
  return [columnStats.quantiles[0].value, columnStats.quantiles[columnStats.quantiles.length - 1].value, columnStats.mean];
436
436
  }
437
437
  if (dataset && fieldValueAccessor) {
438
- dataset.allIndexes.forEach(function (x, i) {
438
+ dataset.allIndexes.forEach(function (x) {
439
439
  var val = fieldValueAccessor(x);
440
440
  if ((0, _dataUtils.isNumber)(val)) {
441
441
  if (val < domainMin) domainMin = val;
@@ -598,4 +598,4 @@ function initCustomPaletteByCustomScale(_ref9) {
598
598
  };
599
599
  return customPalette;
600
600
  }
601
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tb21lbnQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX2NvbG9yVXRpbHMiLCJfZGF0YVV0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRRdWFudGlsZURvbWFpbiIsImRhdGEiLCJ2YWx1ZUFjY2Vzc29yIiwic29ydEZ1bmMiLCJ2YWx1ZXMiLCJtYXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJzb3J0IiwiZ2V0T3JkaW5hbERvbWFpbiIsImRhdGFDb250YWluZXIiLCJtYXBJbmRleCIsInVuaXF1ZSIsImdldExpbmVhckRvbWFpbiIsInJhbmdlIiwiZXh0ZW50IiwiZCIsImkiLCJ1bmRlZmluZWQiLCJnZXRMb2dEb21haW4iLCJfZ2V0TGluZWFyRG9tYWluIiwiX2dldExpbmVhckRvbWFpbjIiLCJfc2xpY2VkVG9BcnJheTIiLCJkMCIsImQxIiwiaXNEb21haW5TdG9wcyIsImRvbWFpbiIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJzdG9wcyIsInoiLCJpc0RvbWFpblF1YW50aWxlIiwicXVhbnRpbGVzIiwiZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMiLCJidWNrZXRzIiwidGhyZXNob2xkcyIsIk51bWJlciIsImlzRmluaXRlIiwicG9zaXRpb24iLCJkM1F1YW50aWxlIiwiZ2V0RG9tYWluU3RlcHNieVpvb20iLCJzdGVwcyIsImJpc2VjdExlZnQiLCJNYXRoIiwibWF4IiwiZ2V0U2NhbGVGdW5jdGlvbiIsInNjYWxlIiwiZml4ZWQiLCJzY2FsZUZ1bmN0aW9uIiwiU0NBTEVfRlVOQyIsInNjYWxlVHlwZSIsImdldFRocmVzaG9sZExhYmVscyIsImxhYmVsRm9ybWF0IiwiZ2VuTGVuZ3RoIiwiaW52ZXJ0IiwiaW52ZXJ0RXh0ZW50IiwiaW5wdXRzIiwicmV2ZXJzZUZvcm1hdE51bWJlciIsImxhYmVsIiwiY29uY2F0IiwiZ2V0U2NhbGVMYWJlbHMiLCJjdXN0b21TY2FsZUxhYmVsRm9ybWF0IiwibiIsImZvcm1hdE51bWJlciIsImdldFF1YW50TGVnZW5kcyIsInRocmVzaG9sZExhYmVsRm9ybWF0IiwidHlwZSIsImxhYmVscyIsImluZGV4IiwicmdiVG9IZXgiLCJnZXRPcmRpbmFsTGVnZW5kcyIsImRhdHVtIiwiaXNSZ2JDb2xvciIsImRlZmF1bHRGb3JtYXQiLCJnZXRUaW1lTGFiZWxGb3JtYXQiLCJmb3JtYXR0ZXIiLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInZhbCIsIm1vbWVudCIsInV0YyIsImZvcm1hdCIsImdldFF1YW50TGFiZWxGb3JtYXQiLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJpc051bWJlciIsImdldExlZ2VuZE9mU2NhbGUiLCJfcmVmIiwiYnlab29tIiwiU0NBTEVfVFlQRVMiLCJvcmRpbmFsIiwiY3VzdG9tT3JkaW5hbCIsInN0cmluZyIsImZvcm1hdExhYmVsIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiX3JlZjIiLCJsYXllciIsImdldENvbG9yU2NhbGUiLCJpbml0aWFsaXplTGF5ZXJDb2xvck1hcCIsInZpc3VhbENoYW5uZWwiLCJjb25maWciLCJ2aXNDb25maWciLCJmaWVsZCIsImNvbG9yQnJlYWtzIiwiY29sb3JCcmVha3NUb0NvbG9yTWFwIiwiZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tIiwiX3JlZjMiLCJfc2NhbGUiLCJtYXBTdGF0ZSIsIl9sYXllciRtZXRhIiwibWV0YSIsImdldFpvb20iLCJ6b29tIiwiZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcCIsImNvbG9ycyIsImNvbG9yVG9VbmlxdWVWYWx1ZXMiLCJ1bmlxdWVWYWx1ZXMiLCJsYXN0Q29sb3IiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY29sb3JNYXAiLCJjb2xvciIsImNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzIiwiX3JlZjQiLCJfcmVmNSIsInZhbHVlIiwiY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAiLCJ1bmlxIiwiY2IiLCJjb2xvckJyZWFrIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiX3JlZjYiLCJfcmVmNyIsIkluZmluaXR5IiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJCb29sZWFuIiwiZ2V0SGlzdG9ncmFtRG9tYWluIiwiX3JlZjgiLCJhZ2dyZWdhdGVkQmlucyIsImNvbHVtblN0YXRzIiwiZGF0YXNldCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImRvbWFpbk1pbiIsIlBPU0lUSVZFX0lORklOSVRZIiwiZG9tYWluTWF4IiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJuVmFsaWQiLCJkb21haW5TdW0iLCJiaW4iLCJtZWFuIiwiYWxsSW5kZXhlcyIsIngiLCJoaXN0b2dyYW1NZWFuIiwicmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIm5ld0NvbG9yTWFwIiwiY20iLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJ1bmlxVmFsdWVEaWN0IiwiZnJvbUVudHJpZXMiLCJ0b0FycmF5IiwidiIsInJlc3QiLCJyZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwIiwiaXRlbSIsImN1cnJlbnRVbmlxdWVWYWx1ZXMiLCJ1cGRhdGVkVW5pcXVlVmFsdWVzIiwiYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwIiwiaXRlbXMiLCJpbmNsdWRlcyIsImdldENhdGVnb3JpY2FsQ29sb3JTY2FsZSIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsInVzZVJnYiIsImNNYXAiLCJoZXhUb1JnYiIsInVua25vd24iLCJOT19WQUxVRV9DT0xPUiIsImluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSIsIl9yZWY5Iiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGVOYW1lIiwibmFtZSIsInJldXNlQ29sb3JNYXAiLCJjdXN0b21QYWxldHRlIiwiY2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS1zY2FsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIHF1YW50aWxlU29ydGVkIGFzIGQzUXVhbnRpbGUsIGV4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIFNDQUxFX0ZVTkMsIFNDQUxFX1RZUEVTLCBOT19WQUxVRV9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuLy8gaW1wb3J0IHtGaWx0ZXJQcm9wcywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIENvbG9yTWFwLFxuICBDb2xvclJhbmdlLFxuICBIZXhDb2xvcixcbiAgS2VwbGVyTGF5ZXIgYXMgTGF5ZXIsXG4gIE1hcFN0YXRlLFxuICBWaXN1YWxDaGFubmVsLFxuICBWaXN1YWxDaGFubmVsRG9tYWluLFxuICBSR0JDb2xvcixcbiAgUkdCQUNvbG9yLFxuICBDb2xvclVJLFxuICBGaWVsZFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtpc1JnYkNvbG9yLCByZ2JUb0hleCwgaGV4VG9SZ2J9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge2Zvcm1hdE51bWJlciwgaXNOdW1iZXIsIHJldmVyc2VGb3JtYXROdW1iZXIsIHVuaXF1ZX0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXJ9IGZyb20gJy4vZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIENvbG9yQnJlYWsgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nO1xuICByYW5nZTogbnVtYmVyW107XG4gIGlucHV0czogbnVtYmVyW107XG59O1xuZXhwb3J0IHR5cGUgQ29sb3JCcmVha09yZGluYWwgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBEM1NjYWxlRnVuY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgKCh4OiBhbnkpID0+IGFueSk7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9sYXllcnNcbnR5cGUgRmlsdGVyUHJvcHMgPSBhbnk7XG50eXBlIEtlcGxlclRhYmxlID0gYW55O1xuXG5leHBvcnQgdHlwZSBMYWJlbEZvcm1hdCA9IChuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpID0+IHN0cmluZztcbnR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSA8VD4ocGFyYW06IFQpID0+IFQ7XG50eXBlIGRhdGFDb250YWluZXJWYWx1ZUFjY2Vzc29yID0gKGQ6IHtpbmRleDogbnVtYmVyfSwgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbnR5cGUgc29ydCA9IChhOiBhbnksIGI6IGFueSkgPT4gYW55O1xuLyoqXG4gKiByZXR1cm4gcXVhbnRpbGUgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudGlsZURvbWFpbihcbiAgZGF0YTogYW55W10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvcixcbiAgc29ydEZ1bmM/OiBzb3J0XG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZGF0YS5tYXAodmFsdWVBY2Nlc3NvcikgOiBkYXRhO1xuXG4gIHJldHVybiB2YWx1ZXMuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydChzb3J0RnVuYyk7XG59XG5cbi8qKlxuICogcmV0dXJuIG9yZGluYWwgZG9tYWluIGZvciBhIGRhdGEgY29udGFpbmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsRG9tYWluKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICB2YWx1ZUFjY2Vzc29yOiBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvclxuKTogc3RyaW5nW10ge1xuICBjb25zdCB2YWx1ZXMgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiB1bmlxdWUodmFsdWVzKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KCk7XG59XG5cbi8qKlxuICogcmV0dXJuIGxpbmVhciBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVhckRvbWFpbihcbiAgZGF0YTogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvclxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHJhbmdlID0gdHlwZW9mIHZhbHVlQWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBleHRlbnQoZGF0YSwgdmFsdWVBY2Nlc3NvcikgOiBleHRlbnQoZGF0YSk7XG4gIHJldHVybiByYW5nZS5tYXAoKGQ6IHVuZGVmaW5lZCB8IG51bWJlciwgaTogbnVtYmVyKSA9PiAoZCA9PT0gdW5kZWZpbmVkID8gaSA6IGQpKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhLiBBIGxvZyBzY2FsZSBkb21haW4gY2Fubm90IGNvbnRhaW4gMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nRG9tYWluKGRhdGE6IGFueVtdLCB2YWx1ZUFjY2Vzc29yOiBkYXRhVmFsdWVBY2Nlc3Nvcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBbZDAsIGQxXSA9IGdldExpbmVhckRvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKTtcbiAgcmV0dXJuIFtkMCA9PT0gMCA/IDFlLTUgOiBkMCwgZDFdO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5TdG9wcyA9IHtcbiAgc3RvcHM6IG51bWJlcltdO1xuICB6OiBudW1iZXJbXTtcbn07XG5cbi8qKlxuICogd2hldGhlciBmaWVsZCBkb21haW4gaXMgc3RvcHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3RvcHMoZG9tYWluOiB1bmtub3duKTogZG9tYWluIGlzIERvbWFpblN0b3BzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5zdG9wcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbmV4cG9ydCB0eXBlIERvbWFpblF1YW50aWxlcyA9IHtcbiAgcXVhbnRpbGVzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHF1YW50aWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb21haW5RdWFudGlsZShkb21haW46IGFueSk6IGRvbWFpbiBpcyBEb21haW5RdWFudGlsZXMge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChkb21haW4pICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnF1YW50aWxlcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMoXG4gIHF1YW50aWxlczogbnVtYmVyW10sXG4gIGJ1Y2tldHM6IG51bWJlclxuKTogKG51bWJlciB8IHVuZGVmaW5lZClbXSB7XG4gIGNvbnN0IHRocmVzaG9sZHMgPSBbXTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoYnVja2V0cykgfHwgYnVja2V0cyA8IDEpIHtcbiAgICByZXR1cm4gW3F1YW50aWxlc1swXSwgcXVhbnRpbGVzW3F1YW50aWxlcy5sZW5ndGggLSAxXV07XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBidWNrZXRzOyBpKyspIHtcbiAgICAvLyBwb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXlcbiAgICBjb25zdCBwb3NpdGlvbiA9IGkgLyBidWNrZXRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aHJlc2hvbGRzLnB1c2goZDNRdWFudGlsZShxdWFudGlsZXMsIHBvc2l0aW9uKSk7XG4gIH1cblxuICByZXR1cm4gdGhyZXNob2xkcztcbn1cblxuLyoqXG4gKiBnZXQgdGhlIGRvbWFpbiBhdCB6b29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5TdGVwc2J5Wm9vbShkb21haW46IGFueVtdLCBzdGVwczogbnVtYmVyW10sIHo6IG51bWJlcik6IGFueSB7XG4gIGNvbnN0IGkgPSBiaXNlY3RMZWZ0KHN0ZXBzLCB6KTtcblxuICBpZiAoc3RlcHNbaV0gPT09IHopIHtcbiAgICAvLyBJZiB6IGlzIGFuIGludGVnZXIgdmFsdWUgZXhhY3RseSBtYXRjaGluZyBhIHN0ZXAsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBkb21haW5cbiAgICByZXR1cm4gZG9tYWluW2ldO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBuZXh0IGNvYXJzZXN0IGRvbWFpblxuICByZXR1cm4gZG9tYWluW01hdGgubWF4KGkgLSAxLCAwKV07XG59XG5cbi8qKlxuICogR2V0IGQzIHNjYWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZ1bmN0aW9uKFxuICBzY2FsZTogc3RyaW5nLFxuICByYW5nZTogYW55W10gfCBJdGVyYWJsZUl0ZXJhdG9yPGFueT4sXG4gIGRvbWFpbjogKG51bWJlciB8IHVuZGVmaW5lZClbXSB8IHN0cmluZ1tdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBmaXhlZD86IGJvb2xlYW5cbik6IEQzU2NhbGVGdW5jdGlvbiB7XG4gIGNvbnN0IHNjYWxlRnVuY3Rpb24gPSBTQ0FMRV9GVU5DW2ZpeGVkID8gJ2xpbmVhcicgOiBzY2FsZV0oKVxuICAgIC5kb21haW4oZG9tYWluKVxuICAgIC5yYW5nZShmaXhlZCA/IGRvbWFpbiA6IHJhbmdlKTtcbiAgc2NhbGVGdW5jdGlvbi5zY2FsZVR5cGUgPSBmaXhlZCA/ICdsaW5lYXInIDogc2NhbGU7XG4gIHJldHVybiBzY2FsZUZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIEdldCB0aHJlc2hvbGQgc2NhbGUgY29sb3IgbGFiZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFRocmVzaG9sZExhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIGNvbnN0IGdlbkxlbmd0aCA9IHNjYWxlLnJhbmdlKCkubGVuZ3RoO1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoKGQsIGkpID0+IHtcbiAgICBjb25zdCBpbnZlcnQgPSBzY2FsZS5pbnZlcnRFeHRlbnQoZCk7XG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAgaSA9PT0gMCA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgaSA9PT0gZ2VuTGVuZ3RoIC0gMSA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHMsXG4gICAgICBsYWJlbDpcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgICAgICAgIDogaSA9PT0gZ2VuTGVuZ3RoIC0gMVxuICAgICAgICAgID8gYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGxpbmVhciAvIHF1YW50IHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRTY2FsZUxhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIHJldHVybiBzY2FsZS5yYW5nZSgpLm1hcCgoZCwgaSkgPT4ge1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCBpbnZlcnQgPSBzY2FsZS5pbnZlcnRFeHRlbnQoZCk7XG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAgcmV2ZXJzZUZvcm1hdE51bWJlcihsYWJlbEZvcm1hdChpbnZlcnRbMF0pKSxcbiAgICAgIHJldmVyc2VGb3JtYXROdW1iZXIobGFiZWxGb3JtYXQoaW52ZXJ0WzFdKSlcbiAgICBdO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxhYmVsOiBgJHtsYWJlbEZvcm1hdChpbnZlcnRbMF0pfSB0byAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YCxcbiAgICAgIC8vIHJhdyB2YWx1ZVxuICAgICAgcmFuZ2U6IGludmVydCxcbiAgICAgIC8vIGZvcm1hdHRlZCB2YWx1ZVxuICAgICAgaW5wdXRzXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGN1c3RvbVNjYWxlTGFiZWxGb3JtYXQgPSBuID0+IChuID8gZm9ybWF0TnVtYmVyKG4sICdyZWFsJykgOiAnbm8gdmFsdWUnKTtcbi8qKlxuICogR2V0IGxpbmVhciAvIHF1YW50IHNjYWxlIGNvbG9yIGJyZWFrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UXVhbnRMZWdlbmRzKHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24sIGxhYmVsRm9ybWF0OiBMYWJlbEZvcm1hdCk6IENvbG9yQnJlYWtbXSB7XG4gIGlmICh0eXBlb2Ygc2NhbGUuaW52ZXJ0RXh0ZW50ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IHRocmVzaG9sZExhYmVsRm9ybWF0ID0gKG4sIHR5cGUpID0+XG4gICAgbiAmJiBsYWJlbEZvcm1hdCA/IGxhYmVsRm9ybWF0KG4pIDogbiA/IGZvcm1hdE51bWJlcihuLCB0eXBlKSA6ICdubyB2YWx1ZSc7XG4gIGNvbnN0IGxhYmVscyA9XG4gICAgc2NhbGUuc2NhbGVUeXBlID09PSAndGhyZXNob2xkJ1xuICAgICAgPyBnZXRUaHJlc2hvbGRMYWJlbHMoc2NhbGUsIHRocmVzaG9sZExhYmVsRm9ybWF0KVxuICAgICAgOiBzY2FsZS5zY2FsZVR5cGUgPT09ICdjdXN0b20nXG4gICAgICA/IGdldFRocmVzaG9sZExhYmVscyhzY2FsZSwgY3VzdG9tU2NhbGVMYWJlbEZvcm1hdClcbiAgICAgIDogZ2V0U2NhbGVMYWJlbHMoc2NhbGUsIGxhYmVsRm9ybWF0KTtcblxuICBjb25zdCBkYXRhID0gc2NhbGUucmFuZ2UoKTtcblxuICByZXR1cm4gbGFiZWxzLm1hcCgobGFiZWwsIGluZGV4KSA9PiAoe1xuICAgIGRhdGE6IEFycmF5LmlzQXJyYXkoZGF0YVtpbmRleF0pID8gcmdiVG9IZXgoZGF0YVtpbmRleF0pIDogZGF0YVtpbmRleF0sXG4gICAgLi4ubGFiZWxcbiAgfSkpO1xufVxuXG4vKipcbiAqIEdldCBvcmRpbmFsIGNvbG9yIHNjYWxlIGxlZ2VuZHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9yZGluYWxMZWdlbmRzKHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24pOiBDb2xvckJyZWFrT3JkaW5hbFtdIHtcbiAgY29uc3QgZG9tYWluID0gc2NhbGUuZG9tYWluKCk7XG4gIGNvbnN0IGxhYmVscyA9IHNjYWxlLmRvbWFpbigpO1xuICBjb25zdCBkYXRhID0gZG9tYWluLm1hcChzY2FsZSk7XG5cbiAgcmV0dXJuIGRhdGEubWFwKChkYXR1bSwgaW5kZXgpID0+ICh7XG4gICAgZGF0YTogaXNSZ2JDb2xvcihkYXR1bSkgPyByZ2JUb0hleChkYXR1bSkgOiBkYXR1bSxcbiAgICBsYWJlbDogbGFiZWxzW2luZGV4XVxuICB9KSk7XG59XG5cbmNvbnN0IGRlZmF1bHRGb3JtYXQgPSBkID0+IGQ7XG5cbmNvbnN0IGdldFRpbWVMYWJlbEZvcm1hdCA9IGRvbWFpbiA9PiB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IGdldFRpbWVXaWRnZXRIaW50Rm9ybWF0dGVyKGRvbWFpbik7XG4gIHJldHVybiB2YWwgPT4gbW9tZW50LnV0Yyh2YWwpLmZvcm1hdChmb3JtYXR0ZXIpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YW50TGFiZWxGb3JtYXQoZG9tYWluLCBmaWVsZFR5cGUpIHtcbiAgLy8gcXVhbnQgc2NhbGUgY2FuIG9ubHkgYmUgYXNzaWduZWQgdG8gbGluZWFyIEZpZWxkczogcmVhbCwgdGltZXN0YW1wLCBpbnRlZ2VyXG4gIHJldHVybiBmaWVsZFR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy50aW1lc3RhbXBcbiAgICA/IGdldFRpbWVMYWJlbEZvcm1hdChkb21haW4pXG4gICAgOiAhZmllbGRUeXBlXG4gICAgPyBkZWZhdWx0Rm9ybWF0XG4gICAgOiBuID0+IChpc051bWJlcihuKSA/IGZvcm1hdE51bWJlcihuLCBmaWVsZFR5cGUpIDogJ25vIHZhbHVlJyk7XG59XG5cbi8qKlxuICogR2V0IGxlZ2VuZHMgZm9yIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMZWdlbmRPZlNjYWxlKHtcbiAgc2NhbGUsXG4gIHNjYWxlVHlwZSxcbiAgbGFiZWxGb3JtYXQsXG4gIGZpZWxkVHlwZVxufToge1xuICBzY2FsZT86IEQzU2NhbGVGdW5jdGlvbiB8IG51bGw7XG4gIHNjYWxlVHlwZTogc3RyaW5nO1xuICBsYWJlbEZvcm1hdD86IExhYmVsRm9ybWF0O1xuICBmaWVsZFR5cGU6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG59KTogQ29sb3JCcmVha1tdIHwgQ29sb3JCcmVha09yZGluYWxbXSB7XG4gIGlmICghc2NhbGUgfHwgc2NhbGUuYnlab29tKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmIChcbiAgICBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLm9yZGluYWwgfHxcbiAgICBzY2FsZVR5cGUgPT09IFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwgfHxcbiAgICBmaWVsZFR5cGUgPT09IEFMTF9GSUVMRF9UWVBFUy5zdHJpbmdcbiAgKSB7XG4gICAgcmV0dXJuIGdldE9yZGluYWxMZWdlbmRzKHNjYWxlKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdExhYmVsID0gbGFiZWxGb3JtYXQgfHwgZ2V0UXVhbnRMYWJlbEZvcm1hdChzY2FsZS5kb21haW4oKSwgZmllbGRUeXBlKTtcblxuICByZXR1cm4gZ2V0UXVhbnRMZWdlbmRzKHNjYWxlLCBmb3JtYXRMYWJlbCk7XG59XG5cbi8qKlxuICogR2V0IGNvbG9yIHNjYWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXllckNvbG9yU2NhbGUoe1xuICByYW5nZSxcbiAgZG9tYWluLFxuICBzY2FsZVR5cGUsXG4gIGxheWVyXG59OiB7XG4gIHJhbmdlOiBDb2xvclJhbmdlIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgZG9tYWluOiBWaXN1YWxDaGFubmVsRG9tYWluO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgbGF5ZXI6IExheWVyO1xuICBpc0ZpeGVkPzogYm9vbGVhbjtcbn0pOiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsIHtcbiAgaWYgKHJhbmdlICYmIGRvbWFpbiAmJiBzY2FsZVR5cGUpIHtcbiAgICByZXR1cm4gbGF5ZXIuZ2V0Q29sb3JTY2FsZShzY2FsZVR5cGUsIGRvbWFpbiwgcmFuZ2UpO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY29sb3JSYW5nZS5jb2xvck1hcCBpbnRvIGNvbG9yIGJyZWFrcyBVSSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGl6ZUxheWVyQ29sb3JNYXAobGF5ZXI6IExheWVyLCB2aXN1YWxDaGFubmVsOiBWaXN1YWxDaGFubmVsKTogQ29sb3JNYXAge1xuICBjb25zdCBkb21haW4gPSBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbC5kb21haW5dO1xuICBjb25zdCByYW5nZSA9IGxheWVyLmNvbmZpZy52aXNDb25maWdbdmlzdWFsQ2hhbm5lbC5yYW5nZV07XG4gIGNvbnN0IHNjYWxlVHlwZSA9IGxheWVyLmNvbmZpZ1t2aXN1YWxDaGFubmVsLnNjYWxlXTtcbiAgY29uc3QgZmllbGQgPSBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbC5maWVsZF07XG5cbiAgY29uc3Qgc2NhbGUgPSBnZXRMYXllckNvbG9yU2NhbGUoe1xuICAgIHJhbmdlLFxuICAgIGRvbWFpbixcbiAgICBzY2FsZVR5cGUsXG4gICAgbGF5ZXJcbiAgfSk7XG5cbiAgY29uc3QgY29sb3JCcmVha3MgPSBnZXRMZWdlbmRPZlNjYWxlKHtcbiAgICBzY2FsZTogc2NhbGU/LmJ5Wm9vbSA/IHNjYWxlKDApIDogc2NhbGUsXG4gICAgc2NhbGVUeXBlLFxuICAgIGZpZWxkVHlwZTogZmllbGQudHlwZVxuICB9KTtcbiAgcmV0dXJuIGNvbG9yQnJlYWtzVG9Db2xvck1hcChjb2xvckJyZWFrcyk7XG59XG5cbi8qKlxuICogR2V0IHZpc3VhbCBjaGFuZWwgc2NhbGUgZnVuY3Rpb24gaWYgaXQncyBiYXNlZCBvbiB6b29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWaXN1YWxDaGFubmVsU2NhbGVCeVpvb20oe1xuICBzY2FsZSxcbiAgbGF5ZXIsXG4gIG1hcFN0YXRlXG59OiB7XG4gIHNjYWxlOiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsO1xuICBsYXllcjogTGF5ZXI7XG4gIG1hcFN0YXRlPzogTWFwU3RhdGU7XG59KTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbCB7XG4gIGlmIChzY2FsZT8uYnlab29tKSB7XG4gICAgY29uc3QgeiA9IGxheWVyLm1ldGE/LmdldFpvb20gPyBsYXllci5tZXRhLmdldFpvb20obWFwU3RhdGUpIDogbWFwU3RhdGU/Lnpvb207XG4gICAgc2NhbGUgPSBOdW1iZXIuaXNGaW5pdGUoeikgPyBzY2FsZSh6KSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG4vKipcbiAqIEdldCBjYXRlZ29yaWNhbCBjb2xvck1hcCBmcm9tIGNvbG9ycyBhbmQgZG9tYWluICh1bmlxdWUgdmFsdWVzKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChcbiAgY29sb3JzOiBzdHJpbmdbXSxcbiAgZG9tYWluOiAoc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGwpW11cbik6IGFueSB7XG4gIC8vIGNvbG9yTWFwOiBbc3RyaW5nIHwgc3RyaW5nW10sIGhleHN0cmluZ11cbiAgY29uc3QgY29sb3JUb1VuaXF1ZVZhbHVlcyA9IHt9O1xuICBjb25zdCB1bmlxdWVWYWx1ZXMgPSB1bmlxdWUoZG9tYWluKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KCk7XG4gIC8vIGVhY2ggdW5pcXVlIHZhbHVlIGFzc2lnbiB0byBhIGNvbG9yLCB0aGUgcmVzdCB1bmlxdWUgdmFsdWVzIGFzc2lnbiB0byBsYXN0IGNvbG9yXG4gIGNvbnN0IGxhc3RDb2xvciA9IGNvbG9yc1tjb2xvcnMubGVuZ3RoIC0gMV07XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdW5pcXVlVmFsdWVzLmxlbmd0aDsgKytpKSB7XG4gICAgaWYgKGkgPCBjb2xvcnMubGVuZ3RoKSB7XG4gICAgICBjb2xvclRvVW5pcXVlVmFsdWVzW2NvbG9yc1tpXV0gPSB1bmlxdWVWYWx1ZXNbaV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXSA9IFtcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkoY29sb3JUb1VuaXF1ZVZhbHVlc1tsYXN0Q29sb3JdKVxuICAgICAgICAgID8gY29sb3JUb1VuaXF1ZVZhbHVlc1tsYXN0Q29sb3JdXG4gICAgICAgICAgOiBbY29sb3JUb1VuaXF1ZVZhbHVlc1tsYXN0Q29sb3JdXSksXG4gICAgICAgIHVuaXF1ZVZhbHVlc1tpXVxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBjb2xvck1hcCA9IGNvbG9ycy5tYXAoY29sb3IgPT4ge1xuICAgIGlmIChjb2xvciBpbiBjb2xvclRvVW5pcXVlVmFsdWVzKSB7XG4gICAgICByZXR1cm4gW2NvbG9yVG9VbmlxdWVWYWx1ZXNbY29sb3JdLCBjb2xvcl07XG4gICAgfVxuICAgIHJldHVybiBbbnVsbCwgY29sb3JdO1xuICB9KTtcblxuICByZXR1cm4gY29sb3JNYXA7XG59XG5cbi8qKlxuICogR2V0IGNhdGVnb3JpY2FsIGNvbG9yQnJlYWtzIGZyb20gY29sb3JNYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzKFxuICBjb2xvck1hcD86IENvbG9yTWFwIHwgbnVsbFxuKTogQ29sb3JCcmVha09yZGluYWxbXSB8IG51bGwge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgY29sb3JCcmVha3MgPSBjb2xvck1hcC5tYXAoKFt2YWx1ZSwgY29sb3JdLCBpKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGNvbG9yLFxuICAgICAgbGFiZWw6IHZhbHVlXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbG9yQnJlYWtzO1xufVxuXG4vKipcbiAqIGNyZWF0ZSBjYXRlZ29yaWNhbCBjb2xvck1hcCBmcm9tIGNvbG9yQnJlYWtzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvckJyZWFrc1RvQ2F0ZWdvcmljYWxDb2xvck1hcChjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSk6IENvbG9yTWFwIHtcbiAgLy8gY29sb3JNYXA6IFtzdHJpbmcgfCBzdHJpbmdbXSwgaGV4c3RyaW5nXVxuICBjb25zdCBjb2xvcnMgPSB1bmlxKGNvbG9yQnJlYWtzLm1hcChjYiA9PiBjYi5kYXRhKSk7XG4gIGNvbnN0IHZhbHVlcyA9IHVuaXEoY29sb3JCcmVha3MubWFwKGNiID0+IGNiLmxhYmVsKSk7XG5cbiAgcmV0dXJuIGdldENhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JzLCB2YWx1ZXMpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY29sb3IgYnJlYWtzIFVJIGlucHV0IGludG8gY29sb3JSYW5nZS5jb2xvck1hcFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzOiBDb2xvckJyZWFrW10gfCBDb2xvckJyZWFrT3JkaW5hbFtdKTogQ29sb3JNYXAge1xuICBjb25zdCBjb2xvck1hcCA9IGNvbG9yQnJlYWtzLm1hcCgoY29sb3JCcmVhaywgaSkgPT4ge1xuICAgIC8vIFt2YWx1ZSwgaGV4XVxuICAgIHJldHVybiBbXG4gICAgICBjb2xvckJyZWFrLmlucHV0c1xuICAgICAgICA/IGkgPT09IGNvbG9yQnJlYWtzLmxlbmd0aCAtIDFcbiAgICAgICAgICA/IG51bGwgLy8gbGFzdFxuICAgICAgICAgIDogY29sb3JCcmVhay5pbnB1dHNbMV1cbiAgICAgICAgOiBjb2xvckJyZWFrLmxhYmVsLFxuICAgICAgY29sb3JCcmVhay5kYXRhXG4gICAgXTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZSB0dXBsZVxuICByZXR1cm4gY29sb3JNYXA7XG59XG5cbi8qKlxuICogQ29udmVydCBjb2xvclJhbmdlLmNvbG9yTWFwIGludG8gY29sb3IgYnJlYWtzIFVJIGlucHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvck1hcFRvQ29sb3JCcmVha3MoY29sb3JNYXA/OiBDb2xvck1hcCB8IG51bGwpOiBDb2xvckJyZWFrW10gfCBudWxsIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gY29sb3JNYXAubWFwKChbdmFsdWUsIGNvbG9yXSwgaSkgPT4ge1xuICAgIGNvbnN0IHJhbmdlID1cbiAgICAgIGkgPT09IDBcbiAgICAgICAgPyAvLyBmaXJzdFxuICAgICAgICAgIFstSW5maW5pdHksIHZhbHVlXVxuICAgICAgICA6IC8vIGxhc3RcbiAgICAgICAgaSA9PT0gY29sb3JNYXAubGVuZ3RoIC0gMVxuICAgICAgICA/IFtjb2xvck1hcFtpIC0gMV1bMF0sIEluZmluaXR5XVxuICAgICAgICA6IC8vIGVsc2VcbiAgICAgICAgICBbY29sb3JNYXBbaSAtIDFdWzBdLCB2YWx1ZV07XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGE6IGNvbG9yLFxuICAgICAgcmFuZ2UsXG4gICAgICBpbnB1dHM6IHJhbmdlLFxuICAgICAgbGFiZWw6XG4gICAgICAgIC8vIGZpcnN0XG4gICAgICAgIGkgPT09IDBcbiAgICAgICAgICA/IGBMZXNzIHRoYW4gJHt2YWx1ZX1gXG4gICAgICAgICAgOiAvLyBsYXN0XG4gICAgICAgICAgaSA9PT0gY29sb3JNYXAubGVuZ3RoIC0gMVxuICAgICAgICAgID8gYCR7Y29sb3JNYXBbaSAtIDFdWzBdfSBvciBtb3JlYFxuICAgICAgICAgIDogYCR7Y29sb3JNYXBbaSAtIDFdWzBdfSB0byAke3ZhbHVlfWBcbiAgICB9O1xuICB9KTtcblxuICAvLyBAdHMtaWdub3JlIGltcGxlbWVudCBjb252ZXJzaW9uIGZvciBvcmRpbmFsXG4gIHJldHVybiBjb2xvckJyZWFrcztcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGNvbG9yIGJyZWFrcyBpcyBmb3IgbnVtZXJpYyBmaWVsZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljQ29sb3JCcmVha3MoY29sb3JCcmVha3M6IHVua25vd24pOiBjb2xvckJyZWFrcyBpcyBDb2xvckJyZWFrW10ge1xuICByZXR1cm4gQm9vbGVhbihBcnJheS5pc0FycmF5KGNvbG9yQnJlYWtzKSAmJiBjb2xvckJyZWFrcy5sZW5ndGggJiYgY29sb3JCcmVha3NbMF0uaW5wdXRzKTtcbn1cblxuLy8gcmV0dXJuIGRvbWFpbk1pbiwgZG9tYWluTWF4LCBoaXN0b2dyYW1NZWFuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGlzdG9ncmFtRG9tYWluKHtcbiAgYWdncmVnYXRlZEJpbnMsXG4gIGNvbHVtblN0YXRzLFxuICBkYXRhc2V0LFxuICBmaWVsZFZhbHVlQWNjZXNzb3Jcbn06IHtcbiAgYWdncmVnYXRlZEJpbnM/OiBBZ2dyZWdhdGVkQmluW107XG4gIGNvbHVtblN0YXRzPzogRmlsdGVyUHJvcHNbJ2NvbHVtblN0YXRzJ107XG4gIGRhdGFzZXQ/OiBLZXBsZXJUYWJsZTtcbiAgZmllbGRWYWx1ZUFjY2Vzc29yOiAoaWR4OiB1bmtub3duKSA9PiBudW1iZXI7XG59KSB7XG4gIGxldCBkb21haW5NaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIGxldCBkb21haW5NYXggPSBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFk7XG4gIGxldCBuVmFsaWQgPSAwO1xuICBsZXQgZG9tYWluU3VtID0gMDtcblxuICBpZiAoYWdncmVnYXRlZEJpbnMpIHtcbiAgICBPYmplY3QudmFsdWVzKGFnZ3JlZ2F0ZWRCaW5zKS5mb3JFYWNoKGJpbiA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBiaW4udmFsdWU7XG4gICAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgICBpZiAodmFsIDwgZG9tYWluTWluKSBkb21haW5NaW4gPSB2YWw7XG4gICAgICAgIGlmICh2YWwgPiBkb21haW5NYXgpIGRvbWFpbk1heCA9IHZhbDtcbiAgICAgICAgZG9tYWluU3VtICs9IHZhbDtcbiAgICAgICAgblZhbGlkICs9IDE7XG4gICAgICB9XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGNvbHVtblN0YXRzICYmIGNvbHVtblN0YXRzLnF1YW50aWxlcyAmJiBjb2x1bW5TdGF0cy5tZWFuKSB7XG4gICAgICAvLyBubyBuZWVkIHRvIHJlY2FsY3VhdGUgbWluL21heC9tZWFuIGlmIGl0cyBhbHJlYWR5IGluIGNvbHVtblN0YXRzXG4gICAgICByZXR1cm4gW1xuICAgICAgICBjb2x1bW5TdGF0cy5xdWFudGlsZXNbMF0udmFsdWUsXG4gICAgICAgIGNvbHVtblN0YXRzLnF1YW50aWxlc1tjb2x1bW5TdGF0cy5xdWFudGlsZXMubGVuZ3RoIC0gMV0udmFsdWUsXG4gICAgICAgIGNvbHVtblN0YXRzLm1lYW5cbiAgICAgIF07XG4gICAgfVxuICAgIGlmIChkYXRhc2V0ICYmIGZpZWxkVmFsdWVBY2Nlc3Nvcikge1xuICAgICAgZGF0YXNldC5hbGxJbmRleGVzLmZvckVhY2goKHgsIGkpID0+IHtcbiAgICAgICAgY29uc3QgdmFsID0gZmllbGRWYWx1ZUFjY2Vzc29yKHgpO1xuICAgICAgICBpZiAoaXNOdW1iZXIodmFsKSkge1xuICAgICAgICAgIGlmICh2YWwgPCBkb21haW5NaW4pIGRvbWFpbk1pbiA9IHZhbDtcbiAgICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgICAgZG9tYWluU3VtICs9IHZhbDtcbiAgICAgICAgICBuVmFsaWQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhpc3RvZ3JhbU1lYW4gPSBuVmFsaWQgPiAwID8gZG9tYWluU3VtIC8gblZhbGlkIDogMDtcbiAgcmV0dXJuIFtuVmFsaWQgPiAwID8gZG9tYWluTWluIDogMCwgblZhbGlkID4gMCA/IGRvbWFpbk1heCA6IDAsIGhpc3RvZ3JhbU1lYW5dO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChjb2xvck1hcDogQ29sb3JNYXAsIGluZGV4OiBudW1iZXIpOiBhbnkge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSk7XG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiBzZWxlY3QgcmVzdCBjYXRlZ29yaWNhbCB2YWx1ZXMgZm9yIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCB8IG51bGwsXG4gIGluZGV4OiBudW1iZXIsXG4gIHVuaXF1ZVZhbHVlcz86IG51bWJlcltdIHwgc3RyaW5nW11cbik6IENvbG9yTWFwIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXAgfHwgIXVuaXF1ZVZhbHVlcykge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIC8vIGZpbmQgdW5pcXVlIHZhbHVlcyB0aGF0IGhhcyBub3QgYmVlbiB1c2VkIGluIGN1cnJlbnQgY29sb3JNYXBcbiAgY29uc3QgdW5pcVZhbHVlRGljdCA9IE9iamVjdC5mcm9tRW50cmllcyh1bmlxdWVWYWx1ZXMubWFwKHZhbCA9PiBbdmFsLCBmYWxzZV0pKTtcbiAgY29sb3JNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgdG9BcnJheShjbVswXSkuZm9yRWFjaCh2ID0+IHtcbiAgICAgIGlmICh2KSB1bmlxVmFsdWVEaWN0W3ZdID0gdHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG4gIGNvbnN0IHJlc3QgPSBPYmplY3Qua2V5cyh1bmlxVmFsdWVEaWN0KS5maWx0ZXIodiA9PiAhdW5pcVZhbHVlRGljdFt2XSk7XG5cbiAgLy8gdXNlIHRoZSBub3QgdXNlZCB1bmlxdWUgdmFsdWVzIGluIHRoZSBzZWxlY3RlZCBjb2xvciBtYXBcbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW1suLi5yZXN0LCAuLi50b0FycmF5KGNtWzBdKV0sIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogcmVtb3ZlIGEgY2F0ZWdvcmljYWwgdmFsdWUgZnJvbSBhIGNvbG9yTWFwIGJ5IGl0cyBpbmRleFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQ2F0ZWdvcmljYWxWYWx1ZUZyb21Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgaXRlbTogbnVtYmVyIHwgc3RyaW5nLFxuICBpbmRleDogbnVtYmVyXG4pOiBDb2xvck1hcCB8IG51bGwgfCB1bmRlZmluZWQge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSBjdXJyZW50VW5pcXVlVmFsdWVzLmZpbHRlcih2ID0+IHYgIT09IGl0ZW0pO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGFkZCBjYXRlZ29yaWNhbCB2YWx1ZXMgKGZyb20gbXVsdGlzZWwgZHJvcGRvd24pIHRvIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRDYXRlZ29yaWNhbFZhbHVlc1RvQ29sb3JNYXAoXG4gIGNvbG9yTWFwOiBDb2xvck1hcCxcbiAgaXRlbXM6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBjb2xvck1hcDtcbiAgfVxuXG4gIGNvbnN0IG5ld0NvbG9yTWFwID0gY29sb3JNYXAubWFwKChjbSwgaSkgPT4ge1xuICAgIGlmIChpID09PSBpbmRleCkge1xuICAgICAgaWYgKCFjbVswXSkge1xuICAgICAgICByZXR1cm4gW2l0ZW1zLCBjbVsxXV07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gdG9BcnJheShjbVswXSk7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzID0gdW5pcShjdXJyZW50VW5pcXVlVmFsdWVzLmNvbmNhdChpdGVtcykpO1xuICAgICAgcmV0dXJuIFt1cGRhdGVkVW5pcXVlVmFsdWVzLCBjbVsxXV07XG4gICAgfVxuICAgIC8vIHJlbW92ZSB2YWx1ZSBmcm9tIG90aGVyIGNvbG9yTWFwXG4gICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IGNtWzBdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnRVbmlxdWVWYWx1ZXMpKSB7XG4gICAgICBjb25zdCB1cGRhdGVkVW5pcXVlVmFsdWVzOiBzdHJpbmdbXSB8IG51bWJlcltdID0gKGN1cnJlbnRVbmlxdWVWYWx1ZXMgYXMgYW55W10pLmZpbHRlcihcbiAgICAgICAgdiA9PiAhaXRlbXMuaW5jbHVkZXModilcbiAgICAgICk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9IGVsc2UgaWYgKGN1cnJlbnRVbmlxdWVWYWx1ZXMgJiYgaXRlbXMuaW5jbHVkZXMoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgIH1cblxuICAgIHJldHVybiBjbTtcbiAgfSkgYXMgQ29sb3JNYXA7XG5cbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIGdldCBhIGNvbG9yIHNjYWxlIGZ1bmMgZm9yIGNhdGVnb3JpY2FsIChjdXN0b20gb3JkaW5hbCkgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JTY2FsZShcbiAgY29sb3JEb21haW46IG51bWJlcltdIHwgc3RyaW5nW10sXG4gIGNvbG9yUmFuZ2U6IENvbG9yUmFuZ2UsXG4gIHVzZVJnYiA9IHRydWVcbik6IChjYXRlZ29yeVZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IFJHQkNvbG9yIHwgUkdCQUNvbG9yIHtcbiAgY29uc3QgY01hcCA9IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA/IGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAgICA6IGdldENhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JSYW5nZS5jb2xvcnMsIGNvbG9yRG9tYWluKTtcblxuICBjb25zdCByYW5nZTogbnVtYmVyW11bXSA9IFtdO1xuICBjb25zdCBkb21haW46IHN0cmluZ1tdID0gW107XG4gIGNNYXAuZm9yRWFjaChjbSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY21bMF0pKSB7XG4gICAgICBjbVswXS5mb3JFYWNoKHZhbCA9PiB7XG4gICAgICAgIGRvbWFpbi5wdXNoKHZhbCk7XG4gICAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRvbWFpbi5wdXNoKGNtWzBdKTtcbiAgICAgIHJhbmdlLnB1c2godXNlUmdiID8gaGV4VG9SZ2IoY21bMV0pIDogY21bMV0pO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgc2NhbGUgPSBnZXRTY2FsZUZ1bmN0aW9uKFNDQUxFX1RZUEVTLmN1c3RvbU9yZGluYWwsIHJhbmdlLCBkb21haW4sIGZhbHNlKTtcbiAgc2NhbGUudW5rbm93bihOT19WQUxVRV9DT0xPUik7XG4gIHJldHVybiBzY2FsZSBhcyBhbnk7XG59XG5cbi8qKlxuICogaW5pdGlhbGl6ZSBjdXN0b21QYWxldHRlIGJ5IGN1c3RvbSBzY2FsZSBvciBjdXN0b21PcmRpbmFsIHNjYWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q3VzdG9tUGFsZXR0ZUJ5Q3VzdG9tU2NhbGUoe1xuICBzY2FsZSxcbiAgZmllbGQsXG4gIG9yZGluYWxEb21haW4sXG4gIHJhbmdlLFxuICBjb2xvckJyZWFrc1xufToge1xuICBzY2FsZTogc3RyaW5nO1xuICBmaWVsZDogRmllbGQ7XG4gIG9yZGluYWxEb21haW4/OiBudW1iZXJbXSB8IHN0cmluZ1tdO1xuICByYW5nZTogQ29sb3JSYW5nZTtcbiAgY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBudWxsO1xufSk6IENvbG9yVUlbJ2N1c3RvbVBhbGV0dGUnXSB7XG4gIGNvbnN0IGN1c3RvbVBhbGV0dGVOYW1lID0gYGNvbG9yLmN1c3RvbVBhbGV0dGUuJHtzY2FsZX0uJHtmaWVsZC5uYW1lfWA7XG4gIC8vIHJldXNlIHJhbmdlLmNvbG9yTWFwIGlmIHRoZSBmaWVsZCBhbmQgc2NhbGUgbm90IGNoYW5nZWRcbiAgY29uc3QgcmV1c2VDb2xvck1hcCA9IHJhbmdlLmNvbG9yTWFwICYmIHJhbmdlLm5hbWUgPT09IGN1c3RvbVBhbGV0dGVOYW1lICYmIHJhbmdlLnR5cGUgPT09IHNjYWxlO1xuICBjb25zdCBjb2xvck1hcCA9IHJldXNlQ29sb3JNYXBcbiAgICA/IHJhbmdlLmNvbG9yTWFwXG4gICAgOiBzY2FsZSA9PT0gU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCAmJiBvcmRpbmFsRG9tYWluXG4gICAgPyBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKHJhbmdlLmNvbG9ycywgb3JkaW5hbERvbWFpbilcbiAgICA6IGNvbG9yQnJlYWtzICYmIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzKVxuICAgID8gY29sb3JCcmVha3NUb0NvbG9yTWFwKGNvbG9yQnJlYWtzKVxuICAgIDogbnVsbDtcbiAgY29uc3QgY29sb3JzID0gcmV1c2VDb2xvck1hcCA/IHJhbmdlLmNvbG9ycyA6IGNvbG9yTWFwID8gY29sb3JNYXAubWFwKGNtID0+IGNtWzFdKSA6IHJhbmdlLmNvbG9ycztcblxuICAvLyB1cGRhdGUgY3VzdG9tIGJyZWFrc1xuICBjb25zdCBjdXN0b21QYWxldHRlOiBDb2xvclVJWydjdXN0b21QYWxldHRlJ10gPSB7XG4gICAgY2F0ZWdvcnk6ICdDdXN0b20nLFxuICAgIG5hbWU6IGN1c3RvbVBhbGV0dGVOYW1lLFxuICAgIHR5cGU6IHNjYWxlLFxuICAgIGNvbG9yTWFwLFxuICAgIGNvbG9yczogY29sb3JzIHx8IFtdXG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbVBhbGV0dGU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsUUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBRUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBaUJBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUVBLElBQUFPLFVBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFlBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLE1BQUEsR0FBQVQsT0FBQTtBQUFzQyxTQUFBVSxRQUFBQyxDQUFBLEVBQUFDLENBQUEsUUFBQUMsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLElBQUEsQ0FBQUosQ0FBQSxPQUFBRyxNQUFBLENBQUFFLHFCQUFBLFFBQUFDLENBQUEsR0FBQUgsTUFBQSxDQUFBRSxxQkFBQSxDQUFBTCxDQUFBLEdBQUFDLENBQUEsS0FBQUssQ0FBQSxHQUFBQSxDQUFBLENBQUFDLE1BQUEsV0FBQU4sQ0FBQSxXQUFBRSxNQUFBLENBQUFLLHdCQUFBLENBQUFSLENBQUEsRUFBQUMsQ0FBQSxFQUFBUSxVQUFBLE9BQUFQLENBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULENBQUEsRUFBQUksQ0FBQSxZQUFBSixDQUFBO0FBQUEsU0FBQVUsY0FBQVosQ0FBQSxhQUFBQyxDQUFBLE1BQUFBLENBQUEsR0FBQVksU0FBQSxDQUFBQyxNQUFBLEVBQUFiLENBQUEsVUFBQUMsQ0FBQSxXQUFBVyxTQUFBLENBQUFaLENBQUEsSUFBQVksU0FBQSxDQUFBWixDQUFBLFFBQUFBLENBQUEsT0FBQUYsT0FBQSxDQUFB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
601
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZDNBcnJheSIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9tb21lbnQiLCJfY29tbW9uVXRpbHMiLCJfY29uc3RhbnRzIiwiX2NvbG9yVXRpbHMiLCJfZGF0YVV0aWxzIiwiX2ZpbHRlclV0aWxzIiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJnZXRRdWFudGlsZURvbWFpbiIsImRhdGEiLCJ2YWx1ZUFjY2Vzc29yIiwic29ydEZ1bmMiLCJ2YWx1ZXMiLCJtYXAiLCJub3ROdWxsb3JVbmRlZmluZWQiLCJzb3J0IiwiZ2V0T3JkaW5hbERvbWFpbiIsImRhdGFDb250YWluZXIiLCJtYXBJbmRleCIsInVuaXF1ZSIsImdldExpbmVhckRvbWFpbiIsInJhbmdlIiwiZXh0ZW50IiwiZCIsImkiLCJ1bmRlZmluZWQiLCJnZXRMb2dEb21haW4iLCJfZ2V0TGluZWFyRG9tYWluIiwiX2dldExpbmVhckRvbWFpbjIiLCJfc2xpY2VkVG9BcnJheTIiLCJkMCIsImQxIiwiaXNEb21haW5TdG9wcyIsImRvbWFpbiIsImlzUGxhaW5PYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJzdG9wcyIsInoiLCJpc0RvbWFpblF1YW50aWxlIiwicXVhbnRpbGVzIiwiZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMiLCJidWNrZXRzIiwidGhyZXNob2xkcyIsIk51bWJlciIsImlzRmluaXRlIiwicG9zaXRpb24iLCJkM1F1YW50aWxlIiwiZ2V0RG9tYWluU3RlcHNieVpvb20iLCJzdGVwcyIsImJpc2VjdExlZnQiLCJNYXRoIiwibWF4IiwiZ2V0U2NhbGVGdW5jdGlvbiIsInNjYWxlIiwiZml4ZWQiLCJzY2FsZUZ1bmN0aW9uIiwiU0NBTEVfRlVOQyIsInNjYWxlVHlwZSIsImdldFRocmVzaG9sZExhYmVscyIsImxhYmVsRm9ybWF0IiwiZ2VuTGVuZ3RoIiwiaW52ZXJ0IiwiaW52ZXJ0RXh0ZW50IiwiaW5wdXRzIiwicmV2ZXJzZUZvcm1hdE51bWJlciIsImxhYmVsIiwiY29uY2F0IiwiZ2V0U2NhbGVMYWJlbHMiLCJjdXN0b21TY2FsZUxhYmVsRm9ybWF0IiwibiIsImZvcm1hdE51bWJlciIsImdldFF1YW50TGVnZW5kcyIsInRocmVzaG9sZExhYmVsRm9ybWF0IiwidHlwZSIsImxhYmVscyIsImluZGV4IiwicmdiVG9IZXgiLCJnZXRPcmRpbmFsTGVnZW5kcyIsImRhdHVtIiwiaXNSZ2JDb2xvciIsImRlZmF1bHRGb3JtYXQiLCJnZXRUaW1lTGFiZWxGb3JtYXQiLCJmb3JtYXR0ZXIiLCJnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlciIsInZhbCIsIm1vbWVudCIsInV0YyIsImZvcm1hdCIsImdldFF1YW50TGFiZWxGb3JtYXQiLCJmaWVsZFR5cGUiLCJBTExfRklFTERfVFlQRVMiLCJ0aW1lc3RhbXAiLCJpc051bWJlciIsImdldExlZ2VuZE9mU2NhbGUiLCJfcmVmIiwiYnlab29tIiwiU0NBTEVfVFlQRVMiLCJvcmRpbmFsIiwiY3VzdG9tT3JkaW5hbCIsInN0cmluZyIsImZvcm1hdExhYmVsIiwiZ2V0TGF5ZXJDb2xvclNjYWxlIiwiX3JlZjIiLCJsYXllciIsImdldENvbG9yU2NhbGUiLCJpbml0aWFsaXplTGF5ZXJDb2xvck1hcCIsInZpc3VhbENoYW5uZWwiLCJjb25maWciLCJ2aXNDb25maWciLCJmaWVsZCIsImNvbG9yQnJlYWtzIiwiY29sb3JCcmVha3NUb0NvbG9yTWFwIiwiZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tIiwiX3JlZjMiLCJfc2NhbGUiLCJtYXBTdGF0ZSIsIl9sYXllciRtZXRhIiwibWV0YSIsImdldFpvb20iLCJ6b29tIiwiZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcCIsImNvbG9ycyIsImNvbG9yVG9VbmlxdWVWYWx1ZXMiLCJ1bmlxdWVWYWx1ZXMiLCJsYXN0Q29sb3IiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY29sb3JNYXAiLCJjb2xvciIsImNvbG9yTWFwVG9DYXRlZ29yaWNhbENvbG9yQnJlYWtzIiwiX3JlZjQiLCJfcmVmNSIsInZhbHVlIiwiY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAiLCJ1bmlxIiwiY2IiLCJjb2xvckJyZWFrIiwiY29sb3JNYXBUb0NvbG9yQnJlYWtzIiwiX3JlZjYiLCJfcmVmNyIsIkluZmluaXR5IiwiaXNOdW1lcmljQ29sb3JCcmVha3MiLCJCb29sZWFuIiwiZ2V0SGlzdG9ncmFtRG9tYWluIiwiX3JlZjgiLCJhZ2dyZWdhdGVkQmlucyIsImNvbHVtblN0YXRzIiwiZGF0YXNldCIsImZpZWxkVmFsdWVBY2Nlc3NvciIsImRvbWFpbk1pbiIsIlBPU0lUSVZFX0lORklOSVRZIiwiZG9tYWluTWF4IiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJuVmFsaWQiLCJkb21haW5TdW0iLCJiaW4iLCJtZWFuIiwiYWxsSW5kZXhlcyIsIngiLCJoaXN0b2dyYW1NZWFuIiwicmVzZXRDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleCIsIm5ld0NvbG9yTWFwIiwiY20iLCJzZWxlY3RSZXN0Q2F0ZWdvcmljYWxDb2xvck1hcEJ5SW5kZXgiLCJ1bmlxVmFsdWVEaWN0IiwiZnJvbUVudHJpZXMiLCJ0b0FycmF5IiwidiIsInJlc3QiLCJyZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwIiwiaXRlbSIsImN1cnJlbnRVbmlxdWVWYWx1ZXMiLCJ1cGRhdGVkVW5pcXVlVmFsdWVzIiwiYWRkQ2F0ZWdvcmljYWxWYWx1ZXNUb0NvbG9yTWFwIiwiaXRlbXMiLCJpbmNsdWRlcyIsImdldENhdGVnb3JpY2FsQ29sb3JTY2FsZSIsImNvbG9yRG9tYWluIiwiY29sb3JSYW5nZSIsInVzZVJnYiIsImNNYXAiLCJoZXhUb1JnYiIsInVua25vd24iLCJOT19WQUxVRV9DT0xPUiIsImluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSIsIl9yZWY5Iiwib3JkaW5hbERvbWFpbiIsImN1c3RvbVBhbGV0dGVOYW1lIiwibmFtZSIsInJldXNlQ29sb3JNYXAiLCJjdXN0b21QYWxldHRlIiwiY2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS1zY2FsZS11dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge2Jpc2VjdExlZnQsIHF1YW50aWxlU29ydGVkIGFzIGQzUXVhbnRpbGUsIGV4dGVudH0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHVuaXEgZnJvbSAnbG9kYXNoLnVuaXEnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5pbXBvcnQge25vdE51bGxvclVuZGVmaW5lZCwgdG9BcnJheX0gZnJvbSAnQGtlcGxlci5nbC9jb21tb24tdXRpbHMnO1xuaW1wb3J0IHtBTExfRklFTERfVFlQRVMsIFNDQUxFX0ZVTkMsIFNDQUxFX1RZUEVTLCBOT19WQUxVRV9DT0xPUn0gZnJvbSAnQGtlcGxlci5nbC9jb25zdGFudHMnO1xuLy8gaW1wb3J0IHtGaWx0ZXJQcm9wcywgS2VwbGVyVGFibGV9IGZyb20gJ0BrZXBsZXIuZ2wvbGF5ZXJzJztcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0ZWRCaW4sXG4gIENvbG9yTWFwLFxuICBDb2xvclJhbmdlLFxuICBIZXhDb2xvcixcbiAgS2VwbGVyTGF5ZXIgYXMgTGF5ZXIsXG4gIE1hcFN0YXRlLFxuICBWaXN1YWxDaGFubmVsLFxuICBWaXN1YWxDaGFubmVsRG9tYWluLFxuICBSR0JDb2xvcixcbiAgUkdCQUNvbG9yLFxuICBDb2xvclVJLFxuICBGaWVsZFxufSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuaW1wb3J0IHtpc1JnYkNvbG9yLCByZ2JUb0hleCwgaGV4VG9SZ2J9IGZyb20gJy4vY29sb3ItdXRpbHMnO1xuaW1wb3J0IHtEYXRhQ29udGFpbmVySW50ZXJmYWNlfSBmcm9tICcuL2RhdGEtY29udGFpbmVyLWludGVyZmFjZSc7XG5pbXBvcnQge2Zvcm1hdE51bWJlciwgaXNOdW1iZXIsIHJldmVyc2VGb3JtYXROdW1iZXIsIHVuaXF1ZX0gZnJvbSAnLi9kYXRhLXV0aWxzJztcbmltcG9ydCB7Z2V0VGltZVdpZGdldEhpbnRGb3JtYXR0ZXJ9IGZyb20gJy4vZmlsdGVyLXV0aWxzJztcbmltcG9ydCB7aXNQbGFpbk9iamVjdH0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB0eXBlIENvbG9yQnJlYWsgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nO1xuICByYW5nZTogbnVtYmVyW107XG4gIGlucHV0czogbnVtYmVyW107XG59O1xuZXhwb3J0IHR5cGUgQ29sb3JCcmVha09yZGluYWwgPSB7XG4gIGRhdGE6IEhleENvbG9yO1xuICBsYWJlbDogc3RyaW5nIHwgbnVtYmVyIHwgc3RyaW5nW10gfCBudW1iZXJbXSB8IG51bGw7XG59O1xuXG5leHBvcnQgdHlwZSBEM1NjYWxlRnVuY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgKCh4OiBhbnkpID0+IGFueSk7XG5cbi8vIFRPRE8gaXNvbGF0ZSB0eXBlcyAtIGRlcGVuZHMgb24gQGtlcGxlci5nbC9sYXllcnNcbnR5cGUgRmlsdGVyUHJvcHMgPSBhbnk7XG50eXBlIEtlcGxlclRhYmxlID0gYW55O1xuXG5leHBvcnQgdHlwZSBMYWJlbEZvcm1hdCA9IChuOiBudW1iZXIsIHR5cGU/OiBzdHJpbmcpID0+IHN0cmluZztcbnR5cGUgZGF0YVZhbHVlQWNjZXNzb3IgPSA8VD4ocGFyYW06IFQpID0+IFQ7XG50eXBlIGRhdGFDb250YWluZXJWYWx1ZUFjY2Vzc29yID0gKGQ6IHtpbmRleDogbnVtYmVyfSwgZGM6IERhdGFDb250YWluZXJJbnRlcmZhY2UpID0+IGFueTtcbnR5cGUgc29ydCA9IChhOiBhbnksIGI6IGFueSkgPT4gYW55O1xuLyoqXG4gKiByZXR1cm4gcXVhbnRpbGUgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudGlsZURvbWFpbihcbiAgZGF0YTogYW55W10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvcixcbiAgc29ydEZ1bmM/OiBzb3J0XG4pOiBudW1iZXJbXSB7XG4gIGNvbnN0IHZhbHVlcyA9IHR5cGVvZiB2YWx1ZUFjY2Vzc29yID09PSAnZnVuY3Rpb24nID8gZGF0YS5tYXAodmFsdWVBY2Nlc3NvcikgOiBkYXRhO1xuXG4gIHJldHVybiB2YWx1ZXMuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydChzb3J0RnVuYyk7XG59XG5cbi8qKlxuICogcmV0dXJuIG9yZGluYWwgZG9tYWluIGZvciBhIGRhdGEgY29udGFpbmVyXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsRG9tYWluKFxuICBkYXRhQ29udGFpbmVyOiBEYXRhQ29udGFpbmVySW50ZXJmYWNlLFxuICB2YWx1ZUFjY2Vzc29yOiBkYXRhQ29udGFpbmVyVmFsdWVBY2Nlc3NvclxuKTogc3RyaW5nW10ge1xuICBjb25zdCB2YWx1ZXMgPSBkYXRhQ29udGFpbmVyLm1hcEluZGV4KHZhbHVlQWNjZXNzb3IpO1xuXG4gIHJldHVybiB1bmlxdWUodmFsdWVzKS5maWx0ZXIobm90TnVsbG9yVW5kZWZpbmVkKS5zb3J0KCk7XG59XG5cbi8qKlxuICogcmV0dXJuIGxpbmVhciBkb21haW4gZm9yIGFuIGFycmF5IG9mIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVhckRvbWFpbihcbiAgZGF0YTogbnVtYmVyW10sXG4gIHZhbHVlQWNjZXNzb3I/OiBkYXRhVmFsdWVBY2Nlc3NvclxuKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHJhbmdlID0gdHlwZW9mIHZhbHVlQWNjZXNzb3IgPT09ICdmdW5jdGlvbicgPyBleHRlbnQoZGF0YSwgdmFsdWVBY2Nlc3NvcikgOiBleHRlbnQoZGF0YSk7XG4gIHJldHVybiByYW5nZS5tYXAoKGQ6IHVuZGVmaW5lZCB8IG51bWJlciwgaTogbnVtYmVyKSA9PiAoZCA9PT0gdW5kZWZpbmVkID8gaSA6IGQpKSBhcyBbXG4gICAgbnVtYmVyLFxuICAgIG51bWJlclxuICBdO1xufVxuXG4vKipcbiAqIHJldHVybiBsaW5lYXIgZG9tYWluIGZvciBhbiBhcnJheSBvZiBkYXRhLiBBIGxvZyBzY2FsZSBkb21haW4gY2Fubm90IGNvbnRhaW4gMFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nRG9tYWluKGRhdGE6IGFueVtdLCB2YWx1ZUFjY2Vzc29yOiBkYXRhVmFsdWVBY2Nlc3Nvcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICBjb25zdCBbZDAsIGQxXSA9IGdldExpbmVhckRvbWFpbihkYXRhLCB2YWx1ZUFjY2Vzc29yKTtcbiAgcmV0dXJuIFtkMCA9PT0gMCA/IDFlLTUgOiBkMCwgZDFdO1xufVxuXG5leHBvcnQgdHlwZSBEb21haW5TdG9wcyA9IHtcbiAgc3RvcHM6IG51bWJlcltdO1xuICB6OiBudW1iZXJbXTtcbn07XG5cbi8qKlxuICogd2hldGhlciBmaWVsZCBkb21haW4gaXMgc3RvcHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRG9tYWluU3RvcHMoZG9tYWluOiB1bmtub3duKTogZG9tYWluIGlzIERvbWFpblN0b3BzIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3QoZG9tYWluKSAmJiBBcnJheS5pc0FycmF5KGRvbWFpbi5zdG9wcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbmV4cG9ydCB0eXBlIERvbWFpblF1YW50aWxlcyA9IHtcbiAgcXVhbnRpbGVzOiBudW1iZXJbXTtcbiAgejogbnVtYmVyW107XG59O1xuXG4vKipcbiAqIHdoZXRoZXIgZmllbGQgZG9tYWluIGlzIHF1YW50aWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb21haW5RdWFudGlsZShkb21haW46IGFueSk6IGRvbWFpbiBpcyBEb21haW5RdWFudGlsZXMge1xuICByZXR1cm4gaXNQbGFpbk9iamVjdChkb21haW4pICYmIEFycmF5LmlzQXJyYXkoZG9tYWluLnF1YW50aWxlcykgJiYgQXJyYXkuaXNBcnJheShkb21haW4ueik7XG59XG5cbi8qKlxuICogZ2V0IHRoZSBkb21haW4gYXQgem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGhyZXNob2xkc0Zyb21RdWFudGlsZXMoXG4gIHF1YW50aWxlczogbnVtYmVyW10sXG4gIGJ1Y2tldHM6IG51bWJlclxuKTogKG51bWJlciB8IHVuZGVmaW5lZClbXSB7XG4gIGNvbnN0IHRocmVzaG9sZHMgPSBbXTtcbiAgaWYgKCFOdW1iZXIuaXNGaW5pdGUoYnVja2V0cykgfHwgYnVja2V0cyA8IDEpIHtcbiAgICByZXR1cm4gW3F1YW50aWxlc1swXSwgcXVhbnRpbGVzW3F1YW50aWxlcy5sZW5ndGggLSAxXV07XG4gIH1cbiAgZm9yIChsZXQgaSA9IDE7IGkgPCBidWNrZXRzOyBpKyspIHtcbiAgICAvLyBwb3NpdGlvbiBpbiBzb3J0ZWQgYXJyYXlcbiAgICBjb25zdCBwb3NpdGlvbiA9IGkgLyBidWNrZXRzO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICB0aHJlc2hvbGRzLnB1c2goZDNRdWFudGlsZShxdWFudGlsZXMsIHBvc2l0aW9uKSk7XG4gIH1cblxuICByZXR1cm4gdGhyZXNob2xkcztcbn1cblxuLyoqXG4gKiBnZXQgdGhlIGRvbWFpbiBhdCB6b29tXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREb21haW5TdGVwc2J5Wm9vbShkb21haW46IGFueVtdLCBzdGVwczogbnVtYmVyW10sIHo6IG51bWJlcik6IGFueSB7XG4gIGNvbnN0IGkgPSBiaXNlY3RMZWZ0KHN0ZXBzLCB6KTtcblxuICBpZiAoc3RlcHNbaV0gPT09IHopIHtcbiAgICAvLyBJZiB6IGlzIGFuIGludGVnZXIgdmFsdWUgZXhhY3RseSBtYXRjaGluZyBhIHN0ZXAsIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBkb21haW5cbiAgICByZXR1cm4gZG9tYWluW2ldO1xuICB9XG4gIC8vIE90aGVyd2lzZSwgcmV0dXJuIHRoZSBuZXh0IGNvYXJzZXN0IGRvbWFpblxuICByZXR1cm4gZG9tYWluW01hdGgubWF4KGkgLSAxLCAwKV07XG59XG5cbi8qKlxuICogR2V0IGQzIHNjYWxlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY2FsZUZ1bmN0aW9uKFxuICBzY2FsZTogc3RyaW5nLFxuICByYW5nZTogYW55W10gfCBJdGVyYWJsZUl0ZXJhdG9yPGFueT4sXG4gIGRvbWFpbjogKG51bWJlciB8IHVuZGVmaW5lZClbXSB8IHN0cmluZ1tdIHwgSXRlcmFibGVJdGVyYXRvcjxhbnk+LFxuICBmaXhlZD86IGJvb2xlYW5cbik6IEQzU2NhbGVGdW5jdGlvbiB7XG4gIGNvbnN0IHNjYWxlRnVuY3Rpb24gPSBTQ0FMRV9GVU5DW2ZpeGVkID8gJ2xpbmVhcicgOiBzY2FsZV0oKVxuICAgIC5kb21haW4oZG9tYWluKVxuICAgIC5yYW5nZShmaXhlZCA/IGRvbWFpbiA6IHJhbmdlKTtcbiAgc2NhbGVGdW5jdGlvbi5zY2FsZVR5cGUgPSBmaXhlZCA/ICdsaW5lYXInIDogc2NhbGU7XG4gIHJldHVybiBzY2FsZUZ1bmN0aW9uO1xufVxuXG4vKipcbiAqIEdldCB0aHJlc2hvbGQgc2NhbGUgY29sb3IgbGFiZWxzXG4gKi9cbmZ1bmN0aW9uIGdldFRocmVzaG9sZExhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIGNvbnN0IGdlbkxlbmd0aCA9IHNjYWxlLnJhbmdlKCkubGVuZ3RoO1xuICByZXR1cm4gc2NhbGUucmFuZ2UoKS5tYXAoKGQsIGkpID0+IHtcbiAgICBjb25zdCBpbnZlcnQgPSBzY2FsZS5pbnZlcnRFeHRlbnQoZCk7XG4gICAgY29uc3QgaW5wdXRzID0gW1xuICAgICAgaSA9PT0gMCA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFswXSkpLFxuICAgICAgaSA9PT0gZ2VuTGVuZ3RoIC0gMSA/IG51bGwgOiByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcbiAgICByZXR1cm4ge1xuICAgICAgLy8gcmF3IHZhbHVlXG4gICAgICByYW5nZTogaW52ZXJ0LFxuICAgICAgLy8gZm9ybWF0dGVkIHZhbHVlXG4gICAgICBpbnB1dHMsXG4gICAgICBsYWJlbDpcbiAgICAgICAgaSA9PT0gMFxuICAgICAgICAgID8gYExlc3MgdGhhbiAke2xhYmVsRm9ybWF0KGludmVydFsxXSl9YFxuICAgICAgICAgIDogaSA9PT0gZ2VuTGVuZ3RoIC0gMVxuICAgICAgICAgID8gYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2xhYmVsRm9ybWF0KGludmVydFswXSl9IHRvICR7bGFiZWxGb3JtYXQoaW52ZXJ0WzFdKX1gXG4gICAgfTtcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGxpbmVhciAvIHF1YW50IHNjYWxlIGNvbG9yIGxhYmVsc1xuICovXG5mdW5jdGlvbiBnZXRTY2FsZUxhYmVscyhcbiAgc2NhbGU6IEQzU2NhbGVGdW5jdGlvbixcbiAgbGFiZWxGb3JtYXQ6IExhYmVsRm9ybWF0XG4pOiBPbWl0PENvbG9yQnJlYWssICdkYXRhJz5bXSB7XG4gIHJldHVybiBzY2FsZS5yYW5nZSgpLm1hcChkID0+IHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgaW52ZXJ0ID0gc2NhbGUuaW52ZXJ0RXh0ZW50KGQpO1xuICAgIGNvbnN0IGlucHV0cyA9IFtcbiAgICAgIHJldmVyc2VGb3JtYXROdW1iZXIobGFiZWxGb3JtYXQoaW52ZXJ0WzBdKSksXG4gICAgICByZXZlcnNlRm9ybWF0TnVtYmVyKGxhYmVsRm9ybWF0KGludmVydFsxXSkpXG4gICAgXTtcblxuICAgIHJldHVybiB7XG4gICAgICBsYWJlbDogYCR7bGFiZWxGb3JtYXQoaW52ZXJ0WzBdKX0gdG8gJHtsYWJlbEZvcm1hdChpbnZlcnRbMV0pfWAsXG4gICAgICAvLyByYXcgdmFsdWVcbiAgICAgIHJhbmdlOiBpbnZlcnQsXG4gICAgICAvLyBmb3JtYXR0ZWQgdmFsdWVcbiAgICAgIGlucHV0c1xuICAgIH07XG4gIH0pO1xufVxuXG5jb25zdCBjdXN0b21TY2FsZUxhYmVsRm9ybWF0ID0gbiA9PiAobiA/IGZvcm1hdE51bWJlcihuLCAncmVhbCcpIDogJ25vIHZhbHVlJyk7XG4vKipcbiAqIEdldCBsaW5lYXIgLyBxdWFudCBzY2FsZSBjb2xvciBicmVha3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFF1YW50TGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uLCBsYWJlbEZvcm1hdDogTGFiZWxGb3JtYXQpOiBDb2xvckJyZWFrW10ge1xuICBpZiAodHlwZW9mIHNjYWxlLmludmVydEV4dGVudCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCB0aHJlc2hvbGRMYWJlbEZvcm1hdCA9IChuLCB0eXBlKSA9PlxuICAgIG4gJiYgbGFiZWxGb3JtYXQgPyBsYWJlbEZvcm1hdChuKSA6IG4gPyBmb3JtYXROdW1iZXIobiwgdHlwZSkgOiAnbm8gdmFsdWUnO1xuICBjb25zdCBsYWJlbHMgPVxuICAgIHNjYWxlLnNjYWxlVHlwZSA9PT0gJ3RocmVzaG9sZCdcbiAgICAgID8gZ2V0VGhyZXNob2xkTGFiZWxzKHNjYWxlLCB0aHJlc2hvbGRMYWJlbEZvcm1hdClcbiAgICAgIDogc2NhbGUuc2NhbGVUeXBlID09PSAnY3VzdG9tJ1xuICAgICAgPyBnZXRUaHJlc2hvbGRMYWJlbHMoc2NhbGUsIGN1c3RvbVNjYWxlTGFiZWxGb3JtYXQpXG4gICAgICA6IGdldFNjYWxlTGFiZWxzKHNjYWxlLCBsYWJlbEZvcm1hdCk7XG5cbiAgY29uc3QgZGF0YSA9IHNjYWxlLnJhbmdlKCk7XG5cbiAgcmV0dXJuIGxhYmVscy5tYXAoKGxhYmVsLCBpbmRleCkgPT4gKHtcbiAgICBkYXRhOiBBcnJheS5pc0FycmF5KGRhdGFbaW5kZXhdKSA/IHJnYlRvSGV4KGRhdGFbaW5kZXhdKSA6IGRhdGFbaW5kZXhdLFxuICAgIC4uLmxhYmVsXG4gIH0pKTtcbn1cblxuLyoqXG4gKiBHZXQgb3JkaW5hbCBjb2xvciBzY2FsZSBsZWdlbmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZTogRDNTY2FsZUZ1bmN0aW9uKTogQ29sb3JCcmVha09yZGluYWxbXSB7XG4gIGNvbnN0IGRvbWFpbiA9IHNjYWxlLmRvbWFpbigpO1xuICBjb25zdCBsYWJlbHMgPSBzY2FsZS5kb21haW4oKTtcbiAgY29uc3QgZGF0YSA9IGRvbWFpbi5tYXAoc2NhbGUpO1xuXG4gIHJldHVybiBkYXRhLm1hcCgoZGF0dW0sIGluZGV4KSA9PiAoe1xuICAgIGRhdGE6IGlzUmdiQ29sb3IoZGF0dW0pID8gcmdiVG9IZXgoZGF0dW0pIDogZGF0dW0sXG4gICAgbGFiZWw6IGxhYmVsc1tpbmRleF1cbiAgfSkpO1xufVxuXG5jb25zdCBkZWZhdWx0Rm9ybWF0ID0gZCA9PiBkO1xuXG5jb25zdCBnZXRUaW1lTGFiZWxGb3JtYXQgPSBkb21haW4gPT4ge1xuICBjb25zdCBmb3JtYXR0ZXIgPSBnZXRUaW1lV2lkZ2V0SGludEZvcm1hdHRlcihkb21haW4pO1xuICByZXR1cm4gdmFsID0+IG1vbWVudC51dGModmFsKS5mb3JtYXQoZm9ybWF0dGVyKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWFudExhYmVsRm9ybWF0KGRvbWFpbiwgZmllbGRUeXBlKSB7XG4gIC8vIHF1YW50IHNjYWxlIGNhbiBvbmx5IGJlIGFzc2lnbmVkIHRvIGxpbmVhciBGaWVsZHM6IHJlYWwsIHRpbWVzdGFtcCwgaW50ZWdlclxuICByZXR1cm4gZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMudGltZXN0YW1wXG4gICAgPyBnZXRUaW1lTGFiZWxGb3JtYXQoZG9tYWluKVxuICAgIDogIWZpZWxkVHlwZVxuICAgID8gZGVmYXVsdEZvcm1hdFxuICAgIDogbiA9PiAoaXNOdW1iZXIobikgPyBmb3JtYXROdW1iZXIobiwgZmllbGRUeXBlKSA6ICdubyB2YWx1ZScpO1xufVxuXG4vKipcbiAqIEdldCBsZWdlbmRzIGZvciBzY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gIHNjYWxlLFxuICBzY2FsZVR5cGUsXG4gIGxhYmVsRm9ybWF0LFxuICBmaWVsZFR5cGVcbn06IHtcbiAgc2NhbGU/OiBEM1NjYWxlRnVuY3Rpb24gfCBudWxsO1xuICBzY2FsZVR5cGU6IHN0cmluZztcbiAgbGFiZWxGb3JtYXQ/OiBMYWJlbEZvcm1hdDtcbiAgZmllbGRUeXBlOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkO1xufSk6IENvbG9yQnJlYWtbXSB8IENvbG9yQnJlYWtPcmRpbmFsW10ge1xuICBpZiAoIXNjYWxlIHx8IHNjYWxlLmJ5Wm9vbSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBpZiAoXG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5vcmRpbmFsIHx8XG4gICAgc2NhbGVUeXBlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsIHx8XG4gICAgZmllbGRUeXBlID09PSBBTExfRklFTERfVFlQRVMuc3RyaW5nXG4gICkge1xuICAgIHJldHVybiBnZXRPcmRpbmFsTGVnZW5kcyhzY2FsZSk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRMYWJlbCA9IGxhYmVsRm9ybWF0IHx8IGdldFF1YW50TGFiZWxGb3JtYXQoc2NhbGUuZG9tYWluKCksIGZpZWxkVHlwZSk7XG5cbiAgcmV0dXJuIGdldFF1YW50TGVnZW5kcyhzY2FsZSwgZm9ybWF0TGFiZWwpO1xufVxuXG4vKipcbiAqIEdldCBjb2xvciBzY2FsZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgcmFuZ2UsXG4gIGRvbWFpbixcbiAgc2NhbGVUeXBlLFxuICBsYXllclxufToge1xuICByYW5nZTogQ29sb3JSYW5nZSB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRvbWFpbjogVmlzdWFsQ2hhbm5lbERvbWFpbjtcbiAgc2NhbGVUeXBlOiBzdHJpbmc7XG4gIGxheWVyOiBMYXllcjtcbiAgaXNGaXhlZD86IGJvb2xlYW47XG59KTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbCB7XG4gIGlmIChyYW5nZSAmJiBkb21haW4gJiYgc2NhbGVUeXBlKSB7XG4gICAgcmV0dXJuIGxheWVyLmdldENvbG9yU2NhbGUoc2NhbGVUeXBlLCBkb21haW4sIHJhbmdlKTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yUmFuZ2UuY29sb3JNYXAgaW50byBjb2xvciBicmVha3MgVUkgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRpYWxpemVMYXllckNvbG9yTWFwKGxheWVyOiBMYXllciwgdmlzdWFsQ2hhbm5lbDogVmlzdWFsQ2hhbm5lbCk6IENvbG9yTWFwIHtcbiAgY29uc3QgZG9tYWluID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZG9tYWluXTtcbiAgY29uc3QgcmFuZ2UgPSBsYXllci5jb25maWcudmlzQ29uZmlnW3Zpc3VhbENoYW5uZWwucmFuZ2VdO1xuICBjb25zdCBzY2FsZVR5cGUgPSBsYXllci5jb25maWdbdmlzdWFsQ2hhbm5lbC5zY2FsZV07XG4gIGNvbnN0IGZpZWxkID0gbGF5ZXIuY29uZmlnW3Zpc3VhbENoYW5uZWwuZmllbGRdO1xuXG4gIGNvbnN0IHNjYWxlID0gZ2V0TGF5ZXJDb2xvclNjYWxlKHtcbiAgICByYW5nZSxcbiAgICBkb21haW4sXG4gICAgc2NhbGVUeXBlLFxuICAgIGxheWVyXG4gIH0pO1xuXG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gZ2V0TGVnZW5kT2ZTY2FsZSh7XG4gICAgc2NhbGU6IHNjYWxlPy5ieVpvb20gPyBzY2FsZSgwKSA6IHNjYWxlLFxuICAgIHNjYWxlVHlwZSxcbiAgICBmaWVsZFR5cGU6IGZpZWxkLnR5cGVcbiAgfSk7XG4gIHJldHVybiBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3MpO1xufVxuXG4vKipcbiAqIEdldCB2aXN1YWwgY2hhbmVsIHNjYWxlIGZ1bmN0aW9uIGlmIGl0J3MgYmFzZWQgb24gem9vbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmlzdWFsQ2hhbm5lbFNjYWxlQnlab29tKHtcbiAgc2NhbGUsXG4gIGxheWVyLFxuICBtYXBTdGF0ZVxufToge1xuICBzY2FsZTogRDNTY2FsZUZ1bmN0aW9uIHwgbnVsbDtcbiAgbGF5ZXI6IExheWVyO1xuICBtYXBTdGF0ZT86IE1hcFN0YXRlO1xufSk6IEQzU2NhbGVGdW5jdGlvbiB8IG51bGwge1xuICBpZiAoc2NhbGU/LmJ5Wm9vbSkge1xuICAgIGNvbnN0IHogPSBsYXllci5tZXRhPy5nZXRab29tID8gbGF5ZXIubWV0YS5nZXRab29tKG1hcFN0YXRlKSA6IG1hcFN0YXRlPy56b29tO1xuICAgIHNjYWxlID0gTnVtYmVyLmlzRmluaXRlKHopID8gc2NhbGUoeikgOiBudWxsO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuLyoqXG4gKiBHZXQgY2F0ZWdvcmljYWwgY29sb3JNYXAgZnJvbSBjb2xvcnMgYW5kIGRvbWFpbiAodW5pcXVlIHZhbHVlcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENhdGVnb3JpY2FsQ29sb3JNYXAoXG4gIGNvbG9yczogc3RyaW5nW10sXG4gIGRvbWFpbjogKHN0cmluZyB8IG51bWJlciB8IHN0cmluZ1tdIHwgbnVtYmVyW10gfCBudWxsKVtdXG4pOiBhbnkge1xuICAvLyBjb2xvck1hcDogW3N0cmluZyB8IHN0cmluZ1tdLCBoZXhzdHJpbmddXG4gIGNvbnN0IGNvbG9yVG9VbmlxdWVWYWx1ZXMgPSB7fTtcbiAgY29uc3QgdW5pcXVlVmFsdWVzID0gdW5pcXVlKGRvbWFpbikuZmlsdGVyKG5vdE51bGxvclVuZGVmaW5lZCkuc29ydCgpO1xuICAvLyBlYWNoIHVuaXF1ZSB2YWx1ZSBhc3NpZ24gdG8gYSBjb2xvciwgdGhlIHJlc3QgdW5pcXVlIHZhbHVlcyBhc3NpZ24gdG8gbGFzdCBjb2xvclxuICBjb25zdCBsYXN0Q29sb3IgPSBjb2xvcnNbY29sb3JzLmxlbmd0aCAtIDFdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHVuaXF1ZVZhbHVlcy5sZW5ndGg7ICsraSkge1xuICAgIGlmIChpIDwgY29sb3JzLmxlbmd0aCkge1xuICAgICAgY29sb3JUb1VuaXF1ZVZhbHVlc1tjb2xvcnNbaV1dID0gdW5pcXVlVmFsdWVzW2ldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb2xvclRvVW5pcXVlVmFsdWVzW2xhc3RDb2xvcl0gPSBbXG4gICAgICAgIC4uLihBcnJheS5pc0FycmF5KGNvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXSlcbiAgICAgICAgICA/IGNvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXVxuICAgICAgICAgIDogW2NvbG9yVG9VbmlxdWVWYWx1ZXNbbGFzdENvbG9yXV0pLFxuICAgICAgICB1bmlxdWVWYWx1ZXNbaV1cbiAgICAgIF07XG4gICAgfVxuICB9XG5cbiAgY29uc3QgY29sb3JNYXAgPSBjb2xvcnMubWFwKGNvbG9yID0+IHtcbiAgICBpZiAoY29sb3IgaW4gY29sb3JUb1VuaXF1ZVZhbHVlcykge1xuICAgICAgcmV0dXJuIFtjb2xvclRvVW5pcXVlVmFsdWVzW2NvbG9yXSwgY29sb3JdO1xuICAgIH1cbiAgICByZXR1cm4gW251bGwsIGNvbG9yXTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbG9yTWFwO1xufVxuXG4vKipcbiAqIEdldCBjYXRlZ29yaWNhbCBjb2xvckJyZWFrcyBmcm9tIGNvbG9yTWFwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb2xvck1hcFRvQ2F0ZWdvcmljYWxDb2xvckJyZWFrcyhcbiAgY29sb3JNYXA/OiBDb2xvck1hcCB8IG51bGxcbik6IENvbG9yQnJlYWtPcmRpbmFsW10gfCBudWxsIHtcbiAgaWYgKCFjb2xvck1hcCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IGNvbG9yQnJlYWtzID0gY29sb3JNYXAubWFwKChbdmFsdWUsIGNvbG9yXSkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBjb2xvcixcbiAgICAgIGxhYmVsOiB2YWx1ZVxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiBjb2xvckJyZWFrcztcbn1cblxuLyoqXG4gKiBjcmVhdGUgY2F0ZWdvcmljYWwgY29sb3JNYXAgZnJvbSBjb2xvckJyZWFrc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JCcmVha3NUb0NhdGVnb3JpY2FsQ29sb3JNYXAoY29sb3JCcmVha3M6IENvbG9yQnJlYWtPcmRpbmFsW10pOiBDb2xvck1hcCB7XG4gIC8vIGNvbG9yTWFwOiBbc3RyaW5nIHwgc3RyaW5nW10sIGhleHN0cmluZ11cbiAgY29uc3QgY29sb3JzID0gdW5pcShjb2xvckJyZWFrcy5tYXAoY2IgPT4gY2IuZGF0YSkpO1xuICBjb25zdCB2YWx1ZXMgPSB1bmlxKGNvbG9yQnJlYWtzLm1hcChjYiA9PiBjYi5sYWJlbCkpO1xuXG4gIHJldHVybiBnZXRDYXRlZ29yaWNhbENvbG9yTWFwKGNvbG9ycywgdmFsdWVzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbG9yIGJyZWFrcyBVSSBpbnB1dCBpbnRvIGNvbG9yUmFuZ2UuY29sb3JNYXBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbG9yQnJlYWtzVG9Db2xvck1hcChjb2xvckJyZWFrczogQ29sb3JCcmVha1tdIHwgQ29sb3JCcmVha09yZGluYWxbXSk6IENvbG9yTWFwIHtcbiAgY29uc3QgY29sb3JNYXAgPSBjb2xvckJyZWFrcy5tYXAoKGNvbG9yQnJlYWssIGkpID0+IHtcbiAgICAvLyBbdmFsdWUsIGhleF1cbiAgICByZXR1cm4gW1xuICAgICAgY29sb3JCcmVhay5pbnB1dHNcbiAgICAgICAgPyBpID09PSBjb2xvckJyZWFrcy5sZW5ndGggLSAxXG4gICAgICAgICAgPyBudWxsIC8vIGxhc3RcbiAgICAgICAgICA6IGNvbG9yQnJlYWsuaW5wdXRzWzFdXG4gICAgICAgIDogY29sb3JCcmVhay5sYWJlbCxcbiAgICAgIGNvbG9yQnJlYWsuZGF0YVxuICAgIF07XG4gIH0pO1xuXG4gIC8vIEB0cy1pZ25vcmUgdHVwbGVcbiAgcmV0dXJuIGNvbG9yTWFwO1xufVxuXG4vKipcbiAqIENvbnZlcnQgY29sb3JSYW5nZS5jb2xvck1hcCBpbnRvIGNvbG9yIGJyZWFrcyBVSSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29sb3JNYXBUb0NvbG9yQnJlYWtzKGNvbG9yTWFwPzogQ29sb3JNYXAgfCBudWxsKTogQ29sb3JCcmVha1tdIHwgbnVsbCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBjb2xvckJyZWFrcyA9IGNvbG9yTWFwLm1hcCgoW3ZhbHVlLCBjb2xvcl0sIGkpID0+IHtcbiAgICBjb25zdCByYW5nZSA9XG4gICAgICBpID09PSAwXG4gICAgICAgID8gLy8gZmlyc3RcbiAgICAgICAgICBbLUluZmluaXR5LCB2YWx1ZV1cbiAgICAgICAgOiAvLyBsYXN0XG4gICAgICAgIGkgPT09IGNvbG9yTWFwLmxlbmd0aCAtIDFcbiAgICAgICAgPyBbY29sb3JNYXBbaSAtIDFdWzBdLCBJbmZpbml0eV1cbiAgICAgICAgOiAvLyBlbHNlXG4gICAgICAgICAgW2NvbG9yTWFwW2kgLSAxXVswXSwgdmFsdWVdO1xuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBjb2xvcixcbiAgICAgIHJhbmdlLFxuICAgICAgaW5wdXRzOiByYW5nZSxcbiAgICAgIGxhYmVsOlxuICAgICAgICAvLyBmaXJzdFxuICAgICAgICBpID09PSAwXG4gICAgICAgICAgPyBgTGVzcyB0aGFuICR7dmFsdWV9YFxuICAgICAgICAgIDogLy8gbGFzdFxuICAgICAgICAgIGkgPT09IGNvbG9yTWFwLmxlbmd0aCAtIDFcbiAgICAgICAgICA/IGAke2NvbG9yTWFwW2kgLSAxXVswXX0gb3IgbW9yZWBcbiAgICAgICAgICA6IGAke2NvbG9yTWFwW2kgLSAxXVswXX0gdG8gJHt2YWx1ZX1gXG4gICAgfTtcbiAgfSk7XG5cbiAgLy8gQHRzLWlnbm9yZSBpbXBsZW1lbnQgY29udmVyc2lvbiBmb3Igb3JkaW5hbFxuICByZXR1cm4gY29sb3JCcmVha3M7XG59XG5cbi8qKlxuICogV2hldGhlciBjb2xvciBicmVha3MgaXMgZm9yIG51bWVyaWMgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY0NvbG9yQnJlYWtzKGNvbG9yQnJlYWtzOiB1bmtub3duKTogY29sb3JCcmVha3MgaXMgQ29sb3JCcmVha1tdIHtcbiAgcmV0dXJuIEJvb2xlYW4oQXJyYXkuaXNBcnJheShjb2xvckJyZWFrcykgJiYgY29sb3JCcmVha3MubGVuZ3RoICYmIGNvbG9yQnJlYWtzWzBdLmlucHV0cyk7XG59XG5cbi8vIHJldHVybiBkb21haW5NaW4sIGRvbWFpbk1heCwgaGlzdG9ncmFtTWVhblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhpc3RvZ3JhbURvbWFpbih7XG4gIGFnZ3JlZ2F0ZWRCaW5zLFxuICBjb2x1bW5TdGF0cyxcbiAgZGF0YXNldCxcbiAgZmllbGRWYWx1ZUFjY2Vzc29yXG59OiB7XG4gIGFnZ3JlZ2F0ZWRCaW5zPzogQWdncmVnYXRlZEJpbltdO1xuICBjb2x1bW5TdGF0cz86IEZpbHRlclByb3BzWydjb2x1bW5TdGF0cyddO1xuICBkYXRhc2V0PzogS2VwbGVyVGFibGU7XG4gIGZpZWxkVmFsdWVBY2Nlc3NvcjogKGlkeDogdW5rbm93bikgPT4gbnVtYmVyO1xufSkge1xuICBsZXQgZG9tYWluTWluID0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICBsZXQgZG9tYWluTWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICBsZXQgblZhbGlkID0gMDtcbiAgbGV0IGRvbWFpblN1bSA9IDA7XG5cbiAgaWYgKGFnZ3JlZ2F0ZWRCaW5zKSB7XG4gICAgT2JqZWN0LnZhbHVlcyhhZ2dyZWdhdGVkQmlucykuZm9yRWFjaChiaW4gPT4ge1xuICAgICAgY29uc3QgdmFsID0gYmluLnZhbHVlO1xuICAgICAgaWYgKGlzTnVtYmVyKHZhbCkpIHtcbiAgICAgICAgaWYgKHZhbCA8IGRvbWFpbk1pbikgZG9tYWluTWluID0gdmFsO1xuICAgICAgICBpZiAodmFsID4gZG9tYWluTWF4KSBkb21haW5NYXggPSB2YWw7XG4gICAgICAgIGRvbWFpblN1bSArPSB2YWw7XG4gICAgICAgIG5WYWxpZCArPSAxO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGlmIChjb2x1bW5TdGF0cyAmJiBjb2x1bW5TdGF0cy5xdWFudGlsZXMgJiYgY29sdW1uU3RhdHMubWVhbikge1xuICAgICAgLy8gbm8gbmVlZCB0byByZWNhbGN1YXRlIG1pbi9tYXgvbWVhbiBpZiBpdHMgYWxyZWFkeSBpbiBjb2x1bW5TdGF0c1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAgY29sdW1uU3RhdHMucXVhbnRpbGVzWzBdLnZhbHVlLFxuICAgICAgICBjb2x1bW5TdGF0cy5xdWFudGlsZXNbY29sdW1uU3RhdHMucXVhbnRpbGVzLmxlbmd0aCAtIDFdLnZhbHVlLFxuICAgICAgICBjb2x1bW5TdGF0cy5tZWFuXG4gICAgICBdO1xuICAgIH1cbiAgICBpZiAoZGF0YXNldCAmJiBmaWVsZFZhbHVlQWNjZXNzb3IpIHtcbiAgICAgIGRhdGFzZXQuYWxsSW5kZXhlcy5mb3JFYWNoKHggPT4ge1xuICAgICAgICBjb25zdCB2YWwgPSBmaWVsZFZhbHVlQWNjZXNzb3IoeCk7XG4gICAgICAgIGlmIChpc051bWJlcih2YWwpKSB7XG4gICAgICAgICAgaWYgKHZhbCA8IGRvbWFpbk1pbikgZG9tYWluTWluID0gdmFsO1xuICAgICAgICAgIGlmICh2YWwgPiBkb21haW5NYXgpIGRvbWFpbk1heCA9IHZhbDtcbiAgICAgICAgICBkb21haW5TdW0gKz0gdmFsO1xuICAgICAgICAgIG5WYWxpZCArPSAxO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgaGlzdG9ncmFtTWVhbiA9IG5WYWxpZCA+IDAgPyBkb21haW5TdW0gLyBuVmFsaWQgOiAwO1xuICByZXR1cm4gW25WYWxpZCA+IDAgPyBkb21haW5NaW4gOiAwLCBuVmFsaWQgPiAwID8gZG9tYWluTWF4IDogMCwgaGlzdG9ncmFtTWVhbl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZXNldENhdGVnb3JpY2FsQ29sb3JNYXBCeUluZGV4KGNvbG9yTWFwOiBDb2xvck1hcCwgaW5kZXg6IG51bWJlcik6IGFueSB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gY29sb3JNYXA7XG4gIH1cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICByZXR1cm4gW251bGwsIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KTtcbiAgcmV0dXJuIG5ld0NvbG9yTWFwO1xufVxuXG4vKipcbiAqIHNlbGVjdCByZXN0IGNhdGVnb3JpY2FsIHZhbHVlcyBmb3IgYSBjb2xvck1hcCBieSBpdHMgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdFJlc3RDYXRlZ29yaWNhbENvbG9yTWFwQnlJbmRleChcbiAgY29sb3JNYXA6IENvbG9yTWFwIHwgbnVsbCxcbiAgaW5kZXg6IG51bWJlcixcbiAgdW5pcXVlVmFsdWVzPzogbnVtYmVyW10gfCBzdHJpbmdbXVxuKTogQ29sb3JNYXAgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgaWYgKCFjb2xvck1hcCB8fCAhdW5pcXVlVmFsdWVzKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgLy8gZmluZCB1bmlxdWUgdmFsdWVzIHRoYXQgaGFzIG5vdCBiZWVuIHVzZWQgaW4gY3VycmVudCBjb2xvck1hcFxuICBjb25zdCB1bmlxVmFsdWVEaWN0ID0gT2JqZWN0LmZyb21FbnRyaWVzKHVuaXF1ZVZhbHVlcy5tYXAodmFsID0+IFt2YWwsIGZhbHNlXSkpO1xuICBjb2xvck1hcC5mb3JFYWNoKGNtID0+IHtcbiAgICB0b0FycmF5KGNtWzBdKS5mb3JFYWNoKHYgPT4ge1xuICAgICAgaWYgKHYpIHVuaXFWYWx1ZURpY3Rbdl0gPSB0cnVlO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgcmVzdCA9IE9iamVjdC5rZXlzKHVuaXFWYWx1ZURpY3QpLmZpbHRlcih2ID0+ICF1bmlxVmFsdWVEaWN0W3ZdKTtcblxuICAvLyB1c2UgdGhlIG5vdCB1c2VkIHVuaXF1ZSB2YWx1ZXMgaW4gdGhlIHNlbGVjdGVkIGNvbG9yIG1hcFxuICBjb25zdCBuZXdDb2xvck1hcCA9IGNvbG9yTWFwLm1hcCgoY20sIGkpID0+IHtcbiAgICBpZiAoaSA9PT0gaW5kZXgpIHtcbiAgICAgIHJldHVybiBbWy4uLnJlc3QsIC4uLnRvQXJyYXkoY21bMF0pXSwgY21bMV1dO1xuICAgIH1cbiAgICByZXR1cm4gY207XG4gIH0pIGFzIENvbG9yTWFwO1xuXG4gIHJldHVybiBuZXdDb2xvck1hcDtcbn1cblxuLyoqXG4gKiByZW1vdmUgYSBjYXRlZ29yaWNhbCB2YWx1ZSBmcm9tIGEgY29sb3JNYXAgYnkgaXRzIGluZGV4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDYXRlZ29yaWNhbFZhbHVlRnJvbUNvbG9yTWFwKFxuICBjb2xvck1hcDogQ29sb3JNYXAgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBpdGVtOiBudW1iZXIgfCBzdHJpbmcsXG4gIGluZGV4OiBudW1iZXJcbik6IENvbG9yTWFwIHwgbnVsbCB8IHVuZGVmaW5lZCB7XG4gIGlmICghY29sb3JNYXApIHtcbiAgICByZXR1cm4gY29sb3JNYXA7XG4gIH1cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICBpZiAoIWNtWzBdKSB7XG4gICAgICAgIHJldHVybiBbbnVsbCwgY21bMV1dO1xuICAgICAgfVxuICAgICAgY29uc3QgY3VycmVudFVuaXF1ZVZhbHVlcyA9IHRvQXJyYXkoY21bMF0pO1xuICAgICAgY29uc3QgdXBkYXRlZFVuaXF1ZVZhbHVlcyA9IGN1cnJlbnRVbmlxdWVWYWx1ZXMuZmlsdGVyKHYgPT4gdiAhPT0gaXRlbSk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9XG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogYWRkIGNhdGVnb3JpY2FsIHZhbHVlcyAoZnJvbSBtdWx0aXNlbCBkcm9wZG93bikgdG8gYSBjb2xvck1hcCBieSBpdHMgaW5kZXhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZENhdGVnb3JpY2FsVmFsdWVzVG9Db2xvck1hcChcbiAgY29sb3JNYXA6IENvbG9yTWFwLFxuICBpdGVtczogKHN0cmluZyB8IG51bWJlcilbXSxcbiAgaW5kZXg6IG51bWJlclxuKTogQ29sb3JNYXAge1xuICBpZiAoIWNvbG9yTWFwKSB7XG4gICAgcmV0dXJuIGNvbG9yTWFwO1xuICB9XG5cbiAgY29uc3QgbmV3Q29sb3JNYXAgPSBjb2xvck1hcC5tYXAoKGNtLCBpKSA9PiB7XG4gICAgaWYgKGkgPT09IGluZGV4KSB7XG4gICAgICBpZiAoIWNtWzBdKSB7XG4gICAgICAgIHJldHVybiBbaXRlbXMsIGNtWzFdXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGN1cnJlbnRVbmlxdWVWYWx1ZXMgPSB0b0FycmF5KGNtWzBdKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXMgPSB1bmlxKGN1cnJlbnRVbmlxdWVWYWx1ZXMuY29uY2F0KGl0ZW1zKSk7XG4gICAgICByZXR1cm4gW3VwZGF0ZWRVbmlxdWVWYWx1ZXMsIGNtWzFdXTtcbiAgICB9XG4gICAgLy8gcmVtb3ZlIHZhbHVlIGZyb20gb3RoZXIgY29sb3JNYXBcbiAgICBjb25zdCBjdXJyZW50VW5pcXVlVmFsdWVzID0gY21bMF07XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFVuaXF1ZVZhbHVlcykpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWRVbmlxdWVWYWx1ZXM6IHN0cmluZ1tdIHwgbnVtYmVyW10gPSAoY3VycmVudFVuaXF1ZVZhbHVlcyBhcyBhbnlbXSkuZmlsdGVyKFxuICAgICAgICB2ID0+ICFpdGVtcy5pbmNsdWRlcyh2KVxuICAgICAgKTtcbiAgICAgIHJldHVybiBbdXBkYXRlZFVuaXF1ZVZhbHVlcywgY21bMV1dO1xuICAgIH0gZWxzZSBpZiAoY3VycmVudFVuaXF1ZVZhbHVlcyAmJiBpdGVtcy5pbmNsdWRlcyhjdXJyZW50VW5pcXVlVmFsdWVzKSkge1xuICAgICAgcmV0dXJuIFtudWxsLCBjbVsxXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGNtO1xuICB9KSBhcyBDb2xvck1hcDtcblxuICByZXR1cm4gbmV3Q29sb3JNYXA7XG59XG5cbi8qKlxuICogZ2V0IGEgY29sb3Igc2NhbGUgZnVuYyBmb3IgY2F0ZWdvcmljYWwgKGN1c3RvbSBvcmRpbmFsKSBzY2FsZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2F0ZWdvcmljYWxDb2xvclNjYWxlKFxuICBjb2xvckRvbWFpbjogbnVtYmVyW10gfCBzdHJpbmdbXSxcbiAgY29sb3JSYW5nZTogQ29sb3JSYW5nZSxcbiAgdXNlUmdiID0gdHJ1ZVxuKTogKGNhdGVnb3J5VmFsdWU6IHN0cmluZyB8IG51bWJlcikgPT4gUkdCQ29sb3IgfCBSR0JBQ29sb3Ige1xuICBjb25zdCBjTWFwID0gY29sb3JSYW5nZS5jb2xvck1hcFxuICAgID8gY29sb3JSYW5nZS5jb2xvck1hcFxuICAgIDogZ2V0Q2F0ZWdvcmljYWxDb2xvck1hcChjb2xvclJhbmdlLmNvbG9ycywgY29sb3JEb21haW4pO1xuXG4gIGNvbnN0IHJhbmdlOiBudW1iZXJbXVtdID0gW107XG4gIGNvbnN0IGRvbWFpbjogc3RyaW5nW10gPSBbXTtcbiAgY01hcC5mb3JFYWNoKGNtID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjbVswXSkpIHtcbiAgICAgIGNtWzBdLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgZG9tYWluLnB1c2godmFsKTtcbiAgICAgICAgcmFuZ2UucHVzaCh1c2VSZ2IgPyBoZXhUb1JnYihjbVsxXSkgOiBjbVsxXSk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZG9tYWluLnB1c2goY21bMF0pO1xuICAgICAgcmFuZ2UucHVzaCh1c2VSZ2IgPyBoZXhUb1JnYihjbVsxXSkgOiBjbVsxXSk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBzY2FsZSA9IGdldFNjYWxlRnVuY3Rpb24oU0NBTEVfVFlQRVMuY3VzdG9tT3JkaW5hbCwgcmFuZ2UsIGRvbWFpbiwgZmFsc2UpO1xuICBzY2FsZS51bmtub3duKE5PX1ZBTFVFX0NPTE9SKTtcbiAgcmV0dXJuIHNjYWxlIGFzIGFueTtcbn1cblxuLyoqXG4gKiBpbml0aWFsaXplIGN1c3RvbVBhbGV0dGUgYnkgY3VzdG9tIHNjYWxlIG9yIGN1c3RvbU9yZGluYWwgc2NhbGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluaXRDdXN0b21QYWxldHRlQnlDdXN0b21TY2FsZSh7XG4gIHNjYWxlLFxuICBmaWVsZCxcbiAgb3JkaW5hbERvbWFpbixcbiAgcmFuZ2UsXG4gIGNvbG9yQnJlYWtzXG59OiB7XG4gIHNjYWxlOiBzdHJpbmc7XG4gIGZpZWxkOiBGaWVsZDtcbiAgb3JkaW5hbERvbWFpbj86IG51bWJlcltdIHwgc3RyaW5nW107XG4gIHJhbmdlOiBDb2xvclJhbmdlO1xuICBjb2xvckJyZWFrczogQ29sb3JCcmVha09yZGluYWxbXSB8IG51bGw7XG59KTogQ29sb3JVSVsnY3VzdG9tUGFsZXR0ZSddIHtcbiAgY29uc3QgY3VzdG9tUGFsZXR0ZU5hbWUgPSBgY29sb3IuY3VzdG9tUGFsZXR0ZS4ke3NjYWxlfS4ke2ZpZWxkLm5hbWV9YDtcbiAgLy8gcmV1c2UgcmFuZ2UuY29sb3JNYXAgaWYgdGhlIGZpZWxkIGFuZCBzY2FsZSBub3QgY2hhbmdlZFxuICBjb25zdCByZXVzZUNvbG9yTWFwID0gcmFuZ2UuY29sb3JNYXAgJiYgcmFuZ2UubmFtZSA9PT0gY3VzdG9tUGFsZXR0ZU5hbWUgJiYgcmFuZ2UudHlwZSA9PT0gc2NhbGU7XG4gIGNvbnN0IGNvbG9yTWFwID0gcmV1c2VDb2xvck1hcFxuICAgID8gcmFuZ2UuY29sb3JNYXBcbiAgICA6IHNjYWxlID09PSBTQ0FMRV9UWVBFUy5jdXN0b21PcmRpbmFsICYmIG9yZGluYWxEb21haW5cbiAgICA/IGdldENhdGVnb3JpY2FsQ29sb3JNYXAocmFuZ2UuY29sb3JzLCBvcmRpbmFsRG9tYWluKVxuICAgIDogY29sb3JCcmVha3MgJiYgaXNOdW1lcmljQ29sb3JCcmVha3MoY29sb3JCcmVha3MpXG4gICAgPyBjb2xvckJyZWFrc1RvQ29sb3JNYXAoY29sb3JCcmVha3MpXG4gICAgOiBudWxsO1xuICBjb25zdCBjb2xvcnMgPSByZXVzZUNvbG9yTWFwID8gcmFuZ2UuY29sb3JzIDogY29sb3JNYXAgPyBjb2xvck1hcC5tYXAoY20gPT4gY21bMV0pIDogcmFuZ2UuY29sb3JzO1xuXG4gIC8vIHVwZGF0ZSBjdXN0b20gYnJlYWtzXG4gIGNvbnN0IGN1c3RvbVBhbGV0dGU6IENvbG9yVUlbJ2N1c3RvbVBhbGV0dGUnXSA9IHtcbiAgICBjYXRlZ29yeTogJ0N1c3RvbScsXG4gICAgbmFtZTogY3VzdG9tUGFsZXR0ZU5hbWUsXG4gICAgdHlwZTogc2NhbGUsXG4gICAgY29sb3JNYXAsXG4gICAgY29sb3JzOiBjb2xvcnMgfHwgW11cbiAgfTtcblxuICByZXR1cm4gY3VzdG9tUGFsZXR0ZTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxPQUFBLEdBQUFELHNCQUFBLENBQUFGLE9BQUE7QUFFQSxJQUFBSSxZQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFpQkEsSUFBQU0sV0FBQSxHQUFBTixPQUFBO0FBRUEsSUFBQU8sVUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsWUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsTUFBQSxHQUFBVCxPQUFBO0FBQXNDLFNBQUFVLFFBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSixDQUFBLE9BQUFHLE1BQUEsQ0FBQUUscUJBQUEsUUFBQUMsQ0FBQSxHQUFBSCxNQUFBLENBQUFFLHFCQUFBLENBQUFMLENBQUEsR0FBQUMsQ0FBQSxLQUFBSyxDQUFBLEdBQUFBLENBQUEsQ0FBQUMsTUFBQSxXQUFBTixDQUFBLFdBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQVIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFRLFVBQUEsT0FBQVAsQ0FBQSxDQUFBUSxJQUFBLENBQUFDLEtBQUEsQ0FBQVQsQ0FBQSxFQUFBSSxDQUFBLFlBQUFKLENBQUE7QUFBQSxTQUFBVSxjQUFBWixDQUFBLGFBQUFDLENBQUEsTUFBQUEsQ0FBQSxHQUFBWSxTQUFBLENBQUFDLE1BQUEsRUFBQWIsQ0FBQSxVQUFBQyxDQUFBLFdBQUFXLFNBQUEsQ0FBQVosQ0FBQSxJQUFBWSxTQUFBLENBQUFaLENBQUEsUUFBQUEsQ0FBQSxPQUFBRixPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxPQUFBYSxPQUFBLFdBQUFkLENBQUEsUUFBQWUsZ0JBQUEsYUFBQWhCLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBLENBQUFELENBQUEsU0FBQUUsTUFBQSxDQUFBYyx5QkFBQSxHQUFBZCxNQUFBLENBQUFlLGdCQUFBLENBQUFsQixDQUFBLEVBQUFHLE1BQUEsQ0FBQWMseUJBQUEsQ0FBQWYsQ0FBQSxLQUFBSCxPQUFBLENBQUFJLE1BQUEsQ0FBQUQsQ0FBQSxHQUFBYSxPQUFBLFdBQUFkLENBQUEsSUFBQUUsTUFBQSxDQUFBZ0IsY0FBQSxDQUFBbkIsQ0FBQSxFQUFBQyxDQUFBLEVBQUFFLE1BQUEsQ0FBQUssd0JBQUEsQ0FBQU4sQ0FBQSxFQUFBRCxDQUFBLGlCQUFBRCxDQUFBLElBN0J0QztBQUNBO0FBUUE7QUFtQ0E7O0FBUUE7QUFDQTtBQUNBO0FBQ08sU0FBU29CLGlCQUFpQkEsQ0FDL0JDLElBQVcsRUFDWEMsYUFBaUMsRUFDakNDLFFBQWUsRUFDTDtFQUNWLElBQU1DLE1BQU0sR0FBRyxPQUFPRixhQUFhLEtBQUssVUFBVSxHQUFHRCxJQUFJLENBQUNJLEdBQUcsQ0FBQ0gsYUFBYSxDQUFDLEdBQUdELElBQUk7RUFFbkYsT0FBT0csTUFBTSxDQUFDakIsTUFBTSxDQUFDbUIsK0JBQWtCLENBQUMsQ0FBQ0MsSUFBSSxDQUFDSixRQUFRLENBQUM7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0ssZ0JBQWdCQSxDQUM5QkMsYUFBcUMsRUFDckNQLGFBQXlDLEVBQy9CO0VBQ1YsSUFBTUUsTUFBTSxHQUFHSyxhQUFhLENBQUNDLFFBQVEsQ0FBQ1IsYUFBYSxDQUFDO0VBRXBELE9BQU8sSUFBQVMsaUJBQU0sRUFBQ1AsTUFBTSxDQUFDLENBQUNqQixNQUFNLENBQUNtQiwrQkFBa0IsQ0FBQyxDQUFDQyxJQUFJLENBQUMsQ0FBQztBQUN6RDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxlQUFlQSxDQUM3QlgsSUFBYyxFQUNkQyxhQUFpQyxFQUNmO0VBQ2xCLElBQU1XLEtBQUssR0FBRyxPQUFPWCxhQUFhLEtBQUssVUFBVSxHQUFHLElBQUFZLGVBQU0sRUFBQ2IsSUFBSSxFQUFFQyxhQUFhLENBQUMsR0FBRyxJQUFBWSxlQUFNLEVBQUNiLElBQUksQ0FBQztFQUM5RixPQUFPWSxLQUFLLENBQUNSLEdBQUcsQ0FBQyxVQUFDVSxDQUFxQixFQUFFQyxDQUFTO0lBQUEsT0FBTUQsQ0FBQyxLQUFLRSxTQUFTLEdBQUdELENBQUMsR0FBR0QsQ0FBQztFQUFBLENBQUMsQ0FBQztBQUluRjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxZQUFZQSxDQUFDakIsSUFBVyxFQUFFQyxhQUFnQyxFQUFvQjtFQUM1RixJQUFBaUIsZ0JBQUEsR0FBaUJQLGVBQWUsQ0FBQ1gsSUFBSSxFQUFFQyxhQUFhLENBQUM7SUFBQWtCLGlCQUFBLE9BQUFDLGVBQUEsYUFBQUYsZ0JBQUE7SUFBOUNHLEVBQUUsR0FBQUYsaUJBQUE7SUFBRUcsRUFBRSxHQUFBSCxpQkFBQTtFQUNiLE9BQU8sQ0FBQ0UsRUFBRSxLQUFLLENBQUMsR0FBRyxJQUFJLEdBQUdBLEVBQUUsRUFBRUMsRUFBRSxDQUFDO0FBQ25DO0FBT0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsYUFBYUEsQ0FBQ0MsTUFBZSxFQUF5QjtFQUNwRSxPQUFPLElBQUFDLG9CQUFhLEVBQUNELE1BQU0sQ0FBQyxJQUFJRSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsTUFBTSxDQUFDSSxLQUFLLENBQUMsSUFBSUYsS0FBSyxDQUFDQyxPQUFPLENBQUNILE1BQU0sQ0FBQ0ssQ0FBQyxDQUFDO0FBQ3hGO0FBT0E7QUFDQTtBQUNBO0FBQ08sU0FBU0MsZ0JBQWdCQSxDQUFDTixNQUFXLEVBQTZCO0VBQ3ZFLE9BQU8sSUFBQUMsb0JBQWEsRUFBQ0QsTUFBTSxDQUFDLElBQUlFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxNQUFNLENBQUNPLFNBQVMsQ0FBQyxJQUFJTCxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsTUFBTSxDQUFDSyxDQUFDLENBQUM7QUFDNUY7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0csMEJBQTBCQSxDQUN4Q0QsU0FBbUIsRUFDbkJFLE9BQWUsRUFDUztFQUN4QixJQUFNQyxVQUFVLEdBQUcsRUFBRTtFQUNyQixJQUFJLENBQUNDLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDSCxPQUFPLENBQUMsSUFBSUEsT0FBTyxHQUFHLENBQUMsRUFBRTtJQUM1QyxPQUFPLENBQUNGLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRUEsU0FBUyxDQUFDQSxTQUFTLENBQUN0QyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7RUFDeEQ7RUFDQSxLQUFLLElBQUlzQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdrQixPQUFPLEVBQUVsQixDQUFDLEVBQUUsRUFBRTtJQUNoQztJQUNBLElBQU1zQixRQUFRLEdBQUd0QixDQUFDLEdBQUdrQixPQUFPO0lBQzVCO0lBQ0FDLFVBQVUsQ0FBQzdDLElBQUksQ0FBQyxJQUFBaUQsdUJBQVUsRUFBQ1AsU0FBUyxFQUFFTSxRQUFRLENBQUMsQ0FBQztFQUNsRDtFQUVBLE9BQU9ILFVBQVU7QUFDbkI7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0ssb0JBQW9CQSxDQUFDZixNQUFhLEVBQUVnQixLQUFlLEVBQUVYLENBQVMsRUFBTztFQUNuRixJQUFNZCxDQUFDLEdBQUcsSUFBQTBCLG1CQUFVLEVBQUNELEtBQUssRUFBRVgsQ0FBQyxDQUFDO0VBRTlCLElBQUlXLEtBQUssQ0FBQ3pCLENBQUMsQ0FBQyxLQUFLYyxDQUFDLEVBQUU7SUFDbEI7SUFDQSxPQUFPTCxNQUFNLENBQUNULENBQUMsQ0FBQztFQUNsQjtFQUNBO0VBQ0EsT0FBT1MsTUFBTSxDQUFDa0IsSUFBSSxDQUFDQyxHQUFHLENBQUM1QixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVM2QixnQkFBZ0JBLENBQzlCQyxLQUFhLEVBQ2JqQyxLQUFvQyxFQUNwQ1ksTUFBaUUsRUFDakVzQixLQUFlLEVBQ0U7RUFDakIsSUFBTUMsYUFBYSxHQUFHQyxxQkFBVSxDQUFDRixLQUFLLEdBQUcsUUFBUSxHQUFHRCxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3pEckIsTUFBTSxDQUFDQSxNQUFNLENBQUMsQ0FDZFosS0FBSyxDQUFDa0MsS0FBSyxHQUFHdEIsTUFBTSxHQUFHWixLQUFLLENBQUM7RUFDaENtQyxhQUFhLENBQUNFLFNBQVMsR0FBR0gsS0FBSyxHQUFHLFFBQVEsR0FBR0QsS0FBSztFQUNsRCxPQUFPRSxhQUFhO0FBQ3RCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVNHLGtCQUFrQkEsQ0FDekJMLEtBQXNCLEVBQ3RCTSxXQUF3QixFQUNJO0VBQzVCLElBQU1DLFNBQVMsR0FBR1AsS0FBSyxDQUFDakMsS0FBSyxDQUFDLENBQUMsQ0FBQ25CLE1BQU07RUFDdEMsT0FBT29ELEtBQUssQ0FBQ2pDLEtBQUssQ0FBQyxDQUFDLENBQUNSLEdBQUcsQ0FBQyxVQUFDVSxDQUFDLEVBQUVDLENBQUMsRUFBSztJQUNqQyxJQUFNc0MsTUFBTSxHQUFHUixLQUFLLENBQUNTLFlBQVksQ0FBQ3hDLENBQUMsQ0FBQztJQUNwQyxJQUFNeUMsTUFBTSxHQUFHLENBQ2J4QyxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFBeUMsOEJBQW1CLEVBQUNMLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDNUR0QyxDQUFDLEtBQUtxQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFBSSw4QkFBbUIsRUFBQ0wsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUN6RTtJQUNELE9BQU87TUFDTDtNQUNBekMsS0FBSyxFQUFFeUMsTUFBTTtNQUNiO01BQ0FFLE1BQU0sRUFBTkEsTUFBTTtNQUNORSxLQUFLLEVBQ0gxQyxDQUFDLEtBQUssQ0FBQyxnQkFBQTJDLE1BQUEsQ0FDVVAsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFDbkN0QyxDQUFDLEtBQUtxQyxTQUFTLEdBQUcsQ0FBQyxNQUFBTSxNQUFBLENBQ2hCUCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBQUssTUFBQSxDQUN0QlAsV0FBVyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBQUssTUFBQSxDQUFPUCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0VBQ0gsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsU0FBU00sY0FBY0EsQ0FDckJkLEtBQXNCLEVBQ3RCTSxXQUF3QixFQUNJO0VBQzVCLE9BQU9OLEtBQUssQ0FBQ2pDLEtBQUssQ0FBQyxDQUFDLENBQUNSLEdBQUcsQ0FBQyxVQUFBVSxDQUFDLEVBQUk7SUFDNUI7SUFDQSxJQUFNdUMsTUFBTSxHQUFHUixLQUFLLENBQUNTLFlBQVksQ0FBQ3hDLENBQUMsQ0FBQztJQUNwQyxJQUFNeUMsTUFBTSxHQUFHLENBQ2IsSUFBQUMsOEJBQW1CLEVBQUNMLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFDM0MsSUFBQUcsOEJBQW1CLEVBQUNMLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUM7SUFFRCxPQUFPO01BQ0xJLEtBQUssS0FBQUMsTUFBQSxDQUFLUCxXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFBSyxNQUFBLENBQU9QLFdBQVcsQ0FBQ0UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUU7TUFDL0Q7TUFDQXpDLEtBQUssRUFBRXlDLE1BQU07TUFDYjtNQUNBRSxNQUFNLEVBQU5BO0lBQ0YsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKO0FBRUEsSUFBTUssc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBR0MsQ0FBQztFQUFBLE9BQUtBLENBQUMsR0FBRyxJQUFBQyx1QkFBWSxFQUFDRCxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsVUFBVTtBQUFBLENBQUM7QUFDOUU7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZUFBZUEsQ0FBQ2xCLEtBQXNCLEVBQUVNLFdBQXdCLEVBQWdCO0VBQzlGLElBQUksT0FBT04sS0FBSyxDQUFDUyxZQUFZLEtBQUssVUFBVSxFQUFFO0lBQzVDLE9BQU8sRUFBRTtFQUNYO0VBQ0EsSUFBTVUsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUgsQ0FBQyxFQUFFSSxJQUFJO0lBQUEsT0FDbkNKLENBQUMsSUFBSVYsV0FBVyxHQUFHQSxXQUFXLENBQUNVLENBQUMsQ0FBQyxHQUFHQSxDQUFDLEdBQUcsSUFBQUMsdUJBQVksRUFBQ0QsQ0FBQyxFQUFFSSxJQUFJLENBQUMsR0FBRyxVQUFVO0VBQUE7RUFDNUUsSUFBTUMsTUFBTSxHQUNWckIsS0FBSyxDQUFDSSxTQUFTLEtBQUssV0FBVyxHQUMzQkMsa0JBQWtCLENBQUNMLEtBQUssRUFBRW1CLG9CQUFvQixDQUFDLEdBQy9DbkIsS0FBSyxDQUFDSSxTQUFTLEtBQUssUUFBUSxHQUM1QkMsa0JBQWtCLENBQUNMLEtBQUssRUFBRWUsc0JBQXNCLENBQUMsR0FDakRELGNBQWMsQ0FBQ2QsS0FBSyxFQUFFTSxXQUFXLENBQUM7RUFFeEMsSUFBTW5ELElBQUksR0FBRzZDLEtBQUssQ0FBQ2pDLEtBQUssQ0FBQyxDQUFDO0VBRTFCLE9BQU9zRCxNQUFNLENBQUM5RCxHQUFHLENBQUMsVUFBQ3FELEtBQUssRUFBRVUsS0FBSztJQUFBLE9BQUE1RSxhQUFBO01BQzdCUyxJQUFJLEVBQUUwQixLQUFLLENBQUNDLE9BQU8sQ0FBQzNCLElBQUksQ0FBQ21FLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBQUMsb0JBQVEsRUFBQ3BFLElBQUksQ0FBQ21FLEtBQUssQ0FBQyxDQUFDLEdBQUduRSxJQUFJLENBQUNtRSxLQUFLO0lBQUMsR0FDbkVWLEtBQUs7RUFBQSxDQUNSLENBQUM7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTWSxpQkFBaUJBLENBQUN4QixLQUFzQixFQUF1QjtFQUM3RSxJQUFNckIsTUFBTSxHQUFHcUIsS0FBSyxDQUFDckIsTUFBTSxDQUFDLENBQUM7RUFDN0IsSUFBTTBDLE1BQU0sR0FBR3JCLEtBQUssQ0FBQ3JCLE1BQU0sQ0FBQyxDQUFDO0VBQzdCLElBQU14QixJQUFJLEdBQUd3QixNQUFNLENBQUNwQixHQUFHLENBQUN5QyxLQUFLLENBQUM7RUFFOUIsT0FBTzdDLElBQUksQ0FBQ0ksR0FBRyxDQUFDLFVBQUNrRSxLQUFLLEVBQUVILEtBQUs7SUFBQSxPQUFNO01BQ2pDbkUsSUFBSSxFQUFFLElBQUF1RSxzQkFBVSxFQUFDRCxLQUFLLENBQUMsR0FBRyxJQUFBRixvQkFBUSxFQUFDRSxLQUFLLENBQUMsR0FBR0EsS0FBSztNQUNqRGIsS0FBSyxFQUFFUyxNQUFNLENBQUNDLEtBQUs7SUFDckIsQ0FBQztFQUFBLENBQUMsQ0FBQztBQUNMO0FBRUEsSUFBTUssYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFHMUQsQ0FBQztFQUFBLE9BQUlBLENBQUM7QUFBQTtBQUU1QixJQUFNMkQsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFrQkEsQ0FBR2pELE1BQU0sRUFBSTtFQUNuQyxJQUFNa0QsU0FBUyxHQUFHLElBQUFDLHVDQUEwQixFQUFDbkQsTUFBTSxDQUFDO0VBQ3BELE9BQU8sVUFBQW9ELEdBQUc7SUFBQSxPQUFJQyxrQkFBTSxDQUFDQyxHQUFHLENBQUNGLEdBQUcsQ0FBQyxDQUFDRyxNQUFNLENBQUNMLFNBQVMsQ0FBQztFQUFBO0FBQ2pELENBQUM7QUFFTSxTQUFTTSxtQkFBbUJBLENBQUN4RCxNQUFNLEVBQUV5RCxTQUFTLEVBQUU7RUFDckQ7RUFDQSxPQUFPQSxTQUFTLEtBQUtDLDBCQUFlLENBQUNDLFNBQVMsR0FDMUNWLGtCQUFrQixDQUFDakQsTUFBTSxDQUFDLEdBQzFCLENBQUN5RCxTQUFTLEdBQ1ZULGFBQWEsR0FDYixVQUFBWCxDQUFDO0lBQUEsT0FBSyxJQUFBdUIsbUJBQVEsRUFBQ3ZCLENBQUMsQ0FBQyxHQUFHLElBQUFDLHVCQUFZLEVBQUNELENBQUMsRUFBRW9CLFNBQVMsQ0FBQyxHQUFHLFVBQVU7RUFBQSxDQUFDO0FBQ2xFOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNJLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQVVPO0VBQUEsSUFUckN6QyxLQUFLLEdBQUF5QyxJQUFBLENBQUx6QyxLQUFLO0lBQ0xJLFNBQVMsR0FBQXFDLElBQUEsQ0FBVHJDLFNBQVM7SUFDVEUsV0FBVyxHQUFBbUMsSUFBQSxDQUFYbkMsV0FBVztJQUNYOEIsU0FBUyxHQUFBSyxJQUFBLENBQVRMLFNBQVM7RUFPVCxJQUFJLENBQUNwQyxLQUFLLElBQUlBLEtBQUssQ0FBQzBDLE1BQU0sRUFBRTtJQUMxQixPQUFPLEVBQUU7RUFDWDtFQUNBLElBQ0V0QyxTQUFTLEtBQUt1QyxzQkFBVyxDQUFDQyxPQUFPLElBQ2pDeEMsU0FBUyxLQUFLdUMsc0JBQVcsQ0FBQ0UsYUFBYSxJQUN2Q1QsU0FBUyxLQUFLQywwQkFBZSxDQUFDUyxNQUFNLEVBQ3BDO0lBQ0EsT0FBT3RCLGlCQUFpQixDQUFDeEIsS0FBSyxDQUFDO0VBQ2pDO0VBRUEsSUFBTStDLFdBQVcsR0FBR3pDLFdBQVcsSUFBSTZCLG1CQUFtQixDQUFDbkMsS0FBSyxDQUFDckIsTUFBTSxDQUFDLENBQUMsRUFBRXlELFNBQVMsQ0FBQztFQUVqRixPQUFPbEIsZUFBZSxDQUFDbEIsS0FBSyxFQUFFK0MsV0FBVyxDQUFDO0FBQzVDOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGtCQUFrQkEsQ0FBQUMsS0FBQSxFQVdQO0VBQUEsSUFWekJsRixLQUFLLEdBQUFrRixLQUFBLENBQUxsRixLQUFLO0lBQ0xZLE1BQU0sR0FBQXNFLEtBQUEsQ0FBTnRFLE1BQU07SUFDTnlCLFNBQVMsR0FBQTZDLEtBQUEsQ0FBVDdDLFNBQVM7SUFDVDhDLEtBQUssR0FBQUQsS0FBQSxDQUFMQyxLQUFLO0VBUUwsSUFBSW5GLEtBQUssSUFBSVksTUFBTSxJQUFJeUIsU0FBUyxFQUFFO0lBQ2hDLE9BQU84QyxLQUFLLENBQUNDLGFBQWEsQ0FBQy9DLFNBQVMsRUFBRXpCLE1BQU0sRUFBRVosS0FBSyxDQUFDO0VBQ3REO0VBQ0EsT0FBTyxJQUFJO0FBQ2I7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU3FGLHVCQUF1QkEsQ0FBQ0YsS0FBWSxFQUFFRyxhQUE0QixFQUFZO0VBQzVGLElBQU0xRSxNQUFNLEdBQUd1RSxLQUFLLENBQUNJLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDMUUsTUFBTSxDQUFDO0VBQ2pELElBQU1aLEtBQUssR0FBR21GLEtBQUssQ0FBQ0ksTUFBTSxDQUFDQyxTQUFTLENBQUNGLGFBQWEsQ0FBQ3RGLEtBQUssQ0FBQztFQUN6RCxJQUFNcUMsU0FBUyxHQUFHOEMsS0FBSyxDQUFDSSxNQUFNLENBQUNELGFBQWEsQ0FBQ3JELEtBQUssQ0FBQztFQUNuRCxJQUFNd0QsS0FBSyxHQUFHTixLQUFLLENBQUNJLE1BQU0sQ0FBQ0QsYUFBYSxDQUFDRyxLQUFLLENBQUM7RUFFL0MsSUFBTXhELEtBQUssR0FBR2dELGtCQUFrQixDQUFDO0lBQy9CakYsS0FBSyxFQUFMQSxLQUFLO0lBQ0xZLE1BQU0sRUFBTkEsTUFBTTtJQUNOeUIsU0FBUyxFQUFUQSxTQUFTO0lBQ1Q4QyxLQUFLLEVBQUxBO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBTU8sV0FBVyxHQUFHakIsZ0JBQWdCLENBQUM7SUFDbkN4QyxLQUFLLEVBQUVBLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUUwQyxNQUFNLEdBQUcxQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUdBLEtBQUs7SUFDdkNJLFNBQVMsRUFBVEEsU0FBUztJQUNUZ0MsU0FBUyxFQUFFb0IsS0FBSyxDQUFDcEM7RUFDbkIsQ0FBQyxDQUFDO0VBQ0YsT0FBT3NDLHFCQUFxQixDQUFDRCxXQUFXLENBQUM7QUFDM0M7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU0UsMkJBQTJCQSxDQUFBQyxLQUFBLEVBUWhCO0VBQUEsSUFBQUMsTUFBQTtFQUFBLElBUHpCN0QsS0FBSyxHQUFBNEQsS0FBQSxDQUFMNUQsS0FBSztJQUNMa0QsS0FBSyxHQUFBVSxLQUFBLENBQUxWLEtBQUs7SUFDTFksUUFBUSxHQUFBRixLQUFBLENBQVJFLFFBQVE7RUFNUixLQUFBRCxNQUFBLEdBQUk3RCxLQUFLLGNBQUE2RCxNQUFBLGVBQUxBLE1BQUEsQ0FBT25CLE1BQU0sRUFBRTtJQUFBLElBQUFxQixXQUFBO0lBQ2pCLElBQU0vRSxDQUFDLEdBQUcsQ0FBQStFLFdBQUEsR0FBQWIsS0FBSyxDQUFDYyxJQUFJLGNBQUFELFdBQUEsZUFBVkEsV0FBQSxDQUFZRSxPQUFPLEdBQUdmLEtBQUssQ0FBQ2MsSUFBSSxDQUFDQyxPQUFPLENBQUNILFFBQVEsQ0FBQyxHQUFHQSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRUksSUFBSTtJQUM3RWxFLEtBQUssR0FBR1YsTUFBTSxDQUFDQyxRQUFRLENBQUNQLENBQUMsQ0FBQyxHQUFHZ0IsS0FBSyxDQUFDaEIsQ0FBQyxDQUFDLEdBQUcsSUFBSTtFQUM5QztFQUNBLE9BQU9nQixLQUFLO0FBQ2Q7O0FBRUE7QUFDQTtBQUNBO0FBQ08sU0FBU21FLHNCQUFzQkEsQ0FDcENDLE1BQWdCLEVBQ2hCekYsTUFBd0QsRUFDbkQ7RUFDTDtFQUNBLElBQU0wRixtQkFBbUIsR0FBRyxDQUFDLENBQUM7RUFDOUIsSUFBTUMsWUFBWSxHQUFHLElBQUF6RyxpQkFBTSxFQUFDYyxNQUFNLENBQUMsQ0FBQ3RDLE1BQU0sQ0FBQ21CLCtCQUFrQixDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDO0VBQ3JFO0VBQ0EsSUFBTThHLFNBQVMsR0FBR0gsTUFBTSxDQUFDQSxNQUFNLENBQUN4SCxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzNDLEtBQUssSUFBSXNCLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR29HLFlBQVksQ0FBQzFILE1BQU0sRUFBRSxFQUFFc0IsQ0FBQyxFQUFFO0lBQzVDLElBQUlBLENBQUMsR0FBR2tHLE1BQU0sQ0FBQ3hILE1BQU0sRUFBRTtNQUNyQnlILG1CQUFtQixDQUFDRCxNQUFNLENBQUNsRyxDQUFDLENBQUMsQ0FBQyxHQUFHb0csWUFBWSxDQUFDcEcsQ0FBQyxDQUFDO0lBQ2xELENBQUMsTUFBTTtNQUNMbUcsbUJBQW1CLENBQUNFLFNBQVMsQ0FBQyxNQUFBMUQsTUFBQSxLQUFBMkQsbUJBQUEsYUFDeEIzRixLQUFLLENBQUNDLE9BQU8sQ0FBQ3VGLG1CQUFtQixDQUFDRSxTQUFTLENBQUMsQ0FBQyxHQUM3Q0YsbUJBQW1CLENBQUNFLFNBQVMsQ0FBQyxHQUM5QixDQUFDRixtQkFBbUIsQ0FBQ0UsU0FBUyxDQUFDLENBQUMsSUFDcENELFlBQVksQ0FBQ3BHLENBQUMsQ0FBQyxFQUNoQjtJQUNIO0VBQ0Y7RUFFQSxJQUFNdUcsUUFBUSxHQUFHTCxNQUFNLENBQUM3RyxHQUFHLENBQUMsVUFBQW1ILEtBQUssRUFBSTtJQUNuQyxJQUFJQSxLQUFLLElBQUlMLG1CQUFtQixFQUFFO01BQ2hDLE9BQU8sQ0FBQ0EsbUJBQW1CLENBQUNLLEtBQUssQ0FBQyxFQUFFQSxLQUFLLENBQUM7SUFDNUM7SUFDQSxPQUFPLENBQUMsSUFBSSxFQUFFQSxLQUFLLENBQUM7RUFDdEIsQ0FBQyxDQUFDO0VBRUYsT0FBT0QsUUFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRSxnQ0FBZ0NBLENBQzlDRixRQUEwQixFQUNFO0VBQzVCLElBQUksQ0FBQ0EsUUFBUSxFQUFFO0lBQ2IsT0FBTyxJQUFJO0VBQ2I7RUFDQSxJQUFNaEIsV0FBVyxHQUFHZ0IsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUFxSCxLQUFBLEVBQW9CO0lBQUEsSUFBQUMsS0FBQSxPQUFBdEcsZUFBQSxhQUFBcUcsS0FBQTtNQUFsQkUsS0FBSyxHQUFBRCxLQUFBO01BQUVILEtBQUssR0FBQUcsS0FBQTtJQUM3QyxPQUFPO01BQ0wxSCxJQUFJLEVBQUV1SCxLQUFLO01BQ1g5RCxLQUFLLEVBQUVrRTtJQUNULENBQUM7RUFDSCxDQUFDLENBQUM7RUFFRixPQUFPckIsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTc0IsZ0NBQWdDQSxDQUFDdEIsV0FBZ0MsRUFBWTtFQUMzRjtFQUNBLElBQU1XLE1BQU0sR0FBRyxJQUFBWSxrQkFBSSxFQUFDdkIsV0FBVyxDQUFDbEcsR0FBRyxDQUFDLFVBQUEwSCxFQUFFO0lBQUEsT0FBSUEsRUFBRSxDQUFDOUgsSUFBSTtFQUFBLEVBQUMsQ0FBQztFQUNuRCxJQUFNRyxNQUFNLEdBQUcsSUFBQTBILGtCQUFJLEVBQUN2QixXQUFXLENBQUNsRyxHQUFHLENBQUMsVUFBQTBILEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUNyRSxLQUFLO0VBQUEsRUFBQyxDQUFDO0VBRXBELE9BQU91RCxzQkFBc0IsQ0FBQ0MsTUFBTSxFQUFFOUcsTUFBTSxDQUFDO0FBQy9DOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNvRyxxQkFBcUJBLENBQUNELFdBQStDLEVBQVk7RUFDL0YsSUFBTWdCLFFBQVEsR0FBR2hCLFdBQVcsQ0FBQ2xHLEdBQUcsQ0FBQyxVQUFDMkgsVUFBVSxFQUFFaEgsQ0FBQyxFQUFLO0lBQ2xEO0lBQ0EsT0FBTyxDQUNMZ0gsVUFBVSxDQUFDeEUsTUFBTSxHQUNieEMsQ0FBQyxLQUFLdUYsV0FBVyxDQUFDN0csTUFBTSxHQUFHLENBQUMsR0FDMUIsSUFBSSxDQUFDO0lBQUEsRUFDTHNJLFVBQVUsQ0FBQ3hFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FDdEJ3RSxVQUFVLENBQUN0RSxLQUFLLEVBQ3BCc0UsVUFBVSxDQUFDL0gsSUFBSSxDQUNoQjtFQUNILENBQUMsQ0FBQzs7RUFFRjtFQUNBLE9BQU9zSCxRQUFRO0FBQ2pCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNVLHFCQUFxQkEsQ0FBQ1YsUUFBMEIsRUFBdUI7RUFDckYsSUFBSSxDQUFDQSxRQUFRLEVBQUU7SUFDYixPQUFPLElBQUk7RUFDYjtFQUNBLElBQU1oQixXQUFXLEdBQUdnQixRQUFRLENBQUNsSCxHQUFHLENBQUMsVUFBQTZILEtBQUEsRUFBaUJsSCxDQUFDLEVBQUs7SUFBQSxJQUFBbUgsS0FBQSxPQUFBOUcsZUFBQSxhQUFBNkcsS0FBQTtNQUFyQk4sS0FBSyxHQUFBTyxLQUFBO01BQUVYLEtBQUssR0FBQVcsS0FBQTtJQUM3QyxJQUFNdEgsS0FBSyxHQUNURyxDQUFDLEtBQUssQ0FBQztJQUNIO0lBQ0EsQ0FBQyxDQUFDb0gsUUFBUSxFQUFFUixLQUFLLENBQUM7SUFDbEI7SUFDRjVHLENBQUMsS0FBS3VHLFFBQVEsQ0FBQzdILE1BQU0sR0FBRyxDQUFDLEdBQ3ZCLENBQUM2SCxRQUFRLENBQUN2RyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUVvSCxRQUFRLENBQUM7SUFDOUI7SUFDQSxDQUFDYixRQUFRLENBQUN2RyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU0RyxLQUFLLENBQUM7SUFDakMsT0FBTztNQUNMM0gsSUFBSSxFQUFFdUgsS0FBSztNQUNYM0csS0FBSyxFQUFMQSxLQUFLO01BQ0wyQyxNQUFNLEVBQUUzQyxLQUFLO01BQ2I2QyxLQUFLO01BQ0g7TUFDQTFDLENBQUMsS0FBSyxDQUFDLGdCQUFBMkMsTUFBQSxDQUNVaUUsS0FBSztNQUNsQjtNQUNGNUcsQ0FBQyxLQUFLdUcsUUFBUSxDQUFDN0gsTUFBTSxHQUFHLENBQUMsTUFBQWlFLE1BQUEsQ0FDcEI0RCxRQUFRLENBQUN2RyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFBMkMsTUFBQSxDQUNsQjRELFFBQVEsQ0FBQ3ZHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBQTJDLE1BQUEsQ0FBT2lFLEtBQUs7SUFDekMsQ0FBQztFQUNILENBQUMsQ0FBQzs7RUFFRjtFQUNBLE9BQU9yQixXQUFXO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVM4QixvQkFBb0JBLENBQUM5QixXQUFvQixFQUErQjtFQUN0RixPQUFPK0IsT0FBTyxDQUFDM0csS0FBSyxDQUFDQyxPQUFPLENBQUMyRSxXQUFXLENBQUMsSUFBSUEsV0FBVyxDQUFDN0csTUFBTSxJQUFJNkcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDL0MsTUFBTSxDQUFDO0FBQzNGOztBQUVBO0FBQ08sU0FBUytFLGtCQUFrQkEsQ0FBQUMsS0FBQSxFQVUvQjtFQUFBLElBVERDLGNBQWMsR0FBQUQsS0FBQSxDQUFkQyxjQUFjO0lBQ2RDLFdBQVcsR0FBQUYsS0FBQSxDQUFYRSxXQUFXO0lBQ1hDLE9BQU8sR0FBQUgsS0FBQSxDQUFQRyxPQUFPO0lBQ1BDLGtCQUFrQixHQUFBSixLQUFBLENBQWxCSSxrQkFBa0I7RUFPbEIsSUFBSUMsU0FBUyxHQUFHekcsTUFBTSxDQUFDMEcsaUJBQWlCO0VBQ3hDLElBQUlDLFNBQVMsR0FBRzNHLE1BQU0sQ0FBQzRHLGlCQUFpQjtFQUN4QyxJQUFJQyxNQUFNLEdBQUcsQ0FBQztFQUNkLElBQUlDLFNBQVMsR0FBRyxDQUFDO0VBRWpCLElBQUlULGNBQWMsRUFBRTtJQUNsQjFKLE1BQU0sQ0FBQ3FCLE1BQU0sQ0FBQ3FJLGNBQWMsQ0FBQyxDQUFDOUksT0FBTyxDQUFDLFVBQUF3SixHQUFHLEVBQUk7TUFDM0MsSUFBTXRFLEdBQUcsR0FBR3NFLEdBQUcsQ0FBQ3ZCLEtBQUs7TUFDckIsSUFBSSxJQUFBdkMsbUJBQVEsRUFBQ1IsR0FBRyxDQUFDLEVBQUU7UUFDakIsSUFBSUEsR0FBRyxHQUFHZ0UsU0FBUyxFQUFFQSxTQUFTLEdBQUdoRSxHQUFHO1FBQ3BDLElBQUlBLEdBQUcsR0FBR2tFLFNBQVMsRUFBRUEsU0FBUyxHQUFHbEUsR0FBRztRQUNwQ3FFLFNBQVMsSUFBSXJFLEdBQUc7UUFDaEJvRSxNQUFNLElBQUksQ0FBQztNQUNiO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxNQUFNO0lBQ0wsSUFBSVAsV0FBVyxJQUFJQSxXQUFXLENBQUMxRyxTQUFTLElBQUkwRyxXQUFXLENBQUNVLElBQUksRUFBRTtNQUM1RDtNQUNBLE9BQU8sQ0FDTFYsV0FBVyxDQUFDMUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDNEYsS0FBSyxFQUM5QmMsV0FBVyxDQUFDMUcsU0FBUyxDQUFDMEcsV0FBVyxDQUFDMUcsU0FBUyxDQUFDdEMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDa0ksS0FBSyxFQUM3RGMsV0FBVyxDQUFDVSxJQUFJLENBQ2pCO0lBQ0g7SUFDQSxJQUFJVCxPQUFPLElBQUlDLGtCQUFrQixFQUFFO01BQ2pDRCxPQUFPLENBQUNVLFVBQVUsQ0FBQzFKLE9BQU8sQ0FBQyxVQUFBMkosQ0FBQyxFQUFJO1FBQzlCLElBQU16RSxHQUFHLEdBQUcrRCxrQkFBa0IsQ0FBQ1UsQ0FBQyxDQUFDO1FBQ2pDLElBQUksSUFBQWpFLG1CQUFRLEVBQUNSLEdBQUcsQ0FBQyxFQUFFO1VBQ2pCLElBQUlBLEdBQUcsR0FBR2dFLFNBQVMsRUFBRUEsU0FBUyxHQUFHaEUsR0FBRztVQUNwQyxJQUFJQSxHQUFHLEdBQUdrRSxTQUFTLEVBQUVBLFNBQVMsR0FBR2xFLEdBQUc7VUFDcENxRSxTQUFTLElBQUlyRSxHQUFHO1VBQ2hCb0UsTUFBTSxJQUFJLENBQUM7UUFDYjtNQUNGLENBQUMsQ0FBQztJQUNKO0VBQ0Y7RUFDQSxJQUFNTSxhQUFhLEdBQUdOLE1BQU0sR0FBRyxDQUFDLEdBQUdDLFNBQVMsR0FBR0QsTUFBTSxHQUFHLENBQUM7RUFDekQsT0FBTyxDQUFDQSxNQUFNLEdBQUcsQ0FBQyxHQUFHSixTQUFTLEdBQUcsQ0FBQyxFQUFFSSxNQUFNLEdBQUcsQ0FBQyxHQUFHRixTQUFTLEdBQUcsQ0FBQyxFQUFFUSxhQUFhLENBQUM7QUFDaEY7QUFFTyxTQUFTQywrQkFBK0JBLENBQUNqQyxRQUFrQixFQUFFbkQsS0FBYSxFQUFPO0VBQ3RGLElBQUksQ0FBQ21ELFFBQVEsRUFBRTtJQUNiLE9BQU9BLFFBQVE7RUFDakI7RUFDQSxJQUFNa0MsV0FBVyxHQUFHbEMsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUNxSixFQUFFLEVBQUUxSSxDQUFDLEVBQUs7SUFDMUMsSUFBSUEsQ0FBQyxLQUFLb0QsS0FBSyxFQUFFO01BQ2YsT0FBTyxDQUFDLElBQUksRUFBRXNGLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QjtJQUNBLE9BQU9BLEVBQUU7RUFDWCxDQUFDLENBQUM7RUFDRixPQUFPRCxXQUFXO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNFLG9DQUFvQ0EsQ0FDbERwQyxRQUF5QixFQUN6Qm5ELEtBQWEsRUFDYmdELFlBQWtDLEVBQ0w7RUFDN0IsSUFBSSxDQUFDRyxRQUFRLElBQUksQ0FBQ0gsWUFBWSxFQUFFO0lBQzlCLE9BQU9HLFFBQVE7RUFDakI7O0VBRUE7RUFDQSxJQUFNcUMsYUFBYSxHQUFHN0ssTUFBTSxDQUFDOEssV0FBVyxDQUFDekMsWUFBWSxDQUFDL0csR0FBRyxDQUFDLFVBQUF3RSxHQUFHO0lBQUEsT0FBSSxDQUFDQSxHQUFHLEVBQUUsS0FBSyxDQUFDO0VBQUEsRUFBQyxDQUFDO0VBQy9FMEMsUUFBUSxDQUFDNUgsT0FBTyxDQUFDLFVBQUErSixFQUFFLEVBQUk7SUFDckIsSUFBQUksb0JBQU8sRUFBQ0osRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMvSixPQUFPLENBQUMsVUFBQW9LLENBQUMsRUFBSTtNQUMxQixJQUFJQSxDQUFDLEVBQUVILGFBQWEsQ0FBQ0csQ0FBQyxDQUFDLEdBQUcsSUFBSTtJQUNoQyxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7RUFDRixJQUFNQyxJQUFJLEdBQUdqTCxNQUFNLENBQUNDLElBQUksQ0FBQzRLLGFBQWEsQ0FBQyxDQUFDekssTUFBTSxDQUFDLFVBQUE0SyxDQUFDO0lBQUEsT0FBSSxDQUFDSCxhQUFhLENBQUNHLENBQUMsQ0FBQztFQUFBLEVBQUM7O0VBRXRFO0VBQ0EsSUFBTU4sV0FBVyxHQUFHbEMsUUFBUSxDQUFDbEgsR0FBRyxDQUFDLFVBQUNxSixFQUFFLEVBQUUxSSxDQUFDLEVBQUs7SUFDMUMsSUFBSUEsQ0FBQyxLQUFLb0QsS0FBSyxFQUFFO01BQ2YsT0FBTyxJQUFBVCxNQUFBLEtBQUEyRCxtQkFBQSxhQUFLMEMsSUFBSSxPQUFBMUMsbUJBQUEsYUFBSyxJQUFBd0Msb0JBQU8sRUFBQ0osRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUdBLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QztJQUNBLE9BQU9BLEVBQUU7RUFDWCxDQUFDLENBQWE7RUFFZCxPQUFPRCxXQUFXO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNRLGtDQUFrQ0EsQ0FDaEQxQyxRQUFxQyxFQUNyQzJDLElBQXFCLEVBQ3JCOUYsS0FBYSxFQUNnQjtFQUM3QixJQUFJLENBQUNtRCxRQUFRLEVBQUU7SUFDYixPQUFPQSxRQUFRO0VBQ2pCO0VBQ0EsSUFBTWtDLFdBQVcsR0FBR2xDLFFBQVEsQ0FBQ2xILEdBQUcsQ0FBQyxVQUFDcUosRUFBRSxFQUFFMUksQ0FBQyxFQUFLO0lBQzFDLElBQUlBLENBQUMsS0FBS29ELEtBQUssRUFBRTtNQUNmLElBQUksQ0FBQ3NGLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxJQUFJLEVBQUVBLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUN0QjtNQUNBLElBQU1TLG1CQUFtQixHQUFHLElBQUFMLG9CQUFPLEVBQUNKLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUMxQyxJQUFNVSxtQkFBbUIsR0FBR0QsbUJBQW1CLENBQUNoTCxNQUFNLENBQUMsVUFBQTRLLENBQUM7UUFBQSxPQUFJQSxDQUFDLEtBQUtHLElBQUk7TUFBQSxFQUFDO01BQ3ZFLE9BQU8sQ0FBQ0UsbUJBQW1CLEVBQUVWLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNyQztJQUNBLE9BQU9BLEVBQUU7RUFDWCxDQUFDLENBQWE7RUFFZCxPQUFPRCxXQUFXO0FBQ3BCOztBQUVBO0FBQ0E7QUFDQTtBQUNPLFNBQVNZLDhCQUE4QkEsQ0FDNUM5QyxRQUFrQixFQUNsQitDLEtBQTBCLEVBQzFCbEcsS0FBYSxFQUNIO0VBQ1YsSUFBSSxDQUFDbUQsUUFBUSxFQUFFO0lBQ2IsT0FBT0EsUUFBUTtFQUNqQjtFQUVBLElBQU1rQyxXQUFXLEdBQUdsQyxRQUFRLENBQUNsSCxHQUFHLENBQUMsVUFBQ3FKLEVBQUUsRUFBRTFJLENBQUMsRUFBSztJQUMxQyxJQUFJQSxDQUFDLEtBQUtvRCxLQUFLLEVBQUU7TUFDZixJQUFJLENBQUNzRixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUNZLEtBQUssRUFBRVosRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3ZCO01BQ0EsSUFBTVMsb0JBQW1CLEdBQUcsSUFBQUwsb0JBQU8sRUFBQ0osRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzFDLElBQU1VLG1CQUFtQixHQUFHLElBQUF0QyxrQkFBSSxFQUFDcUMsb0JBQW1CLENBQUN4RyxNQUFNLENBQUMyRyxLQUFLLENBQUMsQ0FBQztNQUNuRSxPQUFPLENBQUNGLG1CQUFtQixFQUFFVixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckM7SUFDQTtJQUNBLElBQU1TLG1CQUFtQixHQUFHVCxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLElBQUkvSCxLQUFLLENBQUNDLE9BQU8sQ0FBQ3VJLG1CQUFtQixDQUFDLEVBQUU7TUFDdEMsSUFBTUMsb0JBQXdDLEdBQUlELG1CQUFtQixDQUFXaEwsTUFBTSxDQUNwRixVQUFBNEssQ0FBQztRQUFBLE9BQUksQ0FBQ08sS0FBSyxDQUFDQyxRQUFRLENBQUNSLENBQUMsQ0FBQztNQUFBLENBQ3pCLENBQUM7TUFDRCxPQUFPLENBQUNLLG9CQUFtQixFQUFFVixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQyxNQUFNLElBQUlTLG1CQUFtQixJQUFJRyxLQUFLLENBQUNDLFFBQVEsQ0FBQ0osbUJBQW1CLENBQUMsRUFBRTtNQUNyRSxPQUFPLENBQUMsSUFBSSxFQUFFVCxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEI7SUFFQSxPQUFPQSxFQUFFO0VBQ1gsQ0FBQyxDQUFhO0VBRWQsT0FBT0QsV0FBVztBQUNwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTZSx3QkFBd0JBLENBQ3RDQyxXQUFnQyxFQUNoQ0MsVUFBc0IsRUFFb0M7RUFBQSxJQUQxREMsTUFBTSxHQUFBbEwsU0FBQSxDQUFBQyxNQUFBLFFBQUFELFNBQUEsUUFBQXdCLFNBQUEsR0FBQXhCLFNBQUEsTUFBRyxJQUFJO0VBRWIsSUFBTW1MLElBQUksR0FBR0YsVUFBVSxDQUFDbkQsUUFBUSxHQUM1Qm1ELFVBQVUsQ0FBQ25ELFFBQVEsR0FDbkJOLHNCQUFzQixDQUFDeUQsVUFBVSxDQUFDeEQsTUFBTSxFQUFFdUQsV0FBVyxDQUFDO0VBRTFELElBQU01SixLQUFpQixHQUFHLEVBQUU7RUFDNUIsSUFBTVksTUFBZ0IsR0FBRyxFQUFFO0VBQzNCbUosSUFBSSxDQUFDakwsT0FBTyxDQUFDLFVBQUErSixFQUFFLEVBQUk7SUFDakIsSUFBSS9ILEtBQUssQ0FBQ0MsT0FBTyxDQUFDOEgsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7TUFDeEJBLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQy9KLE9BQU8sQ0FBQyxVQUFBa0YsR0FBRyxFQUFJO1FBQ25CcEQsTUFBTSxDQUFDbkMsSUFBSSxDQUFDdUYsR0FBRyxDQUFDO1FBQ2hCaEUsS0FBSyxDQUFDdkIsSUFBSSxDQUFDcUwsTUFBTSxHQUFHLElBQUFFLG9CQUFRLEVBQUNuQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQzlDLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTTtNQUNMakksTUFBTSxDQUFDbkMsSUFBSSxDQUFDb0ssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ2xCN0ksS0FBSyxDQUFDdkIsSUFBSSxDQUFDcUwsTUFBTSxHQUFHLElBQUFFLG9CQUFRLEVBQUNuQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBR0EsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlDO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsSUFBTTVHLEtBQUssR0FBR0QsZ0JBQWdCLENBQUM0QyxzQkFBVyxDQUFDRSxhQUFhLEVBQUU5RSxLQUFLLEVBQUVZLE1BQU0sRUFBRSxLQUFLLENBQUM7RUFDL0VxQixLQUFLLENBQUNnSSxPQUFPLENBQUNDLHlCQUFjLENBQUM7RUFDN0IsT0FBT2pJLEtBQUs7QUFDZDs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTa0ksOEJBQThCQSxDQUFBQyxLQUFBLEVBWWpCO0VBQUEsSUFYM0JuSSxLQUFLLEdBQUFtSSxLQUFBLENBQUxuSSxLQUFLO0lBQ0x3RCxLQUFLLEdBQUEyRSxLQUFBLENBQUwzRSxLQUFLO0lBQ0w0RSxhQUFhLEdBQUFELEtBQUEsQ0FBYkMsYUFBYTtJQUNickssS0FBSyxHQUFBb0ssS0FBQSxDQUFMcEssS0FBSztJQUNMMEYsV0FBVyxHQUFBMEUsS0FBQSxDQUFYMUUsV0FBVztFQVFYLElBQU00RSxpQkFBaUIsMEJBQUF4SCxNQUFBLENBQTBCYixLQUFLLE9BQUFhLE1BQUEsQ0FBSTJDLEtBQUssQ0FBQzhFLElBQUksQ0FBRTtFQUN0RTtFQUNBLElBQU1DLGFBQWEsR0FBR3hLLEtBQUssQ0FBQzBHLFFBQVEsSUFBSTFHLEtBQUssQ0FBQ3VLLElBQUksS0FBS0QsaUJBQWlCLElBQUl0SyxLQUFLLENBQUNxRCxJQUFJLEtBQUtwQixLQUFLO0VBQ2hHLElBQU15RSxRQUFRLEdBQUc4RCxhQUFhLEdBQzFCeEssS0FBSyxDQUFDMEcsUUFBUSxHQUNkekUsS0FBSyxLQUFLMkMsc0JBQVcsQ0FBQ0UsYUFBYSxJQUFJdUYsYUFBYSxHQUNwRGpFLHNCQUFzQixDQUFDcEcsS0FBSyxDQUFDcUcsTUFBTSxFQUFFZ0UsYUFBYSxDQUFDLEdBQ25EM0UsV0FBVyxJQUFJOEIsb0JBQW9CLENBQUM5QixXQUFXLENBQUMsR0FDaERDLHFCQUFxQixDQUFDRCxXQUFXLENBQUMsR0FDbEMsSUFBSTtFQUNSLElBQU1XLE1BQU0sR0FBR21FLGFBQWEsR0FBR3hLLEtBQUssQ0FBQ3FHLE1BQU0sR0FBR0ssUUFBUSxHQUFHQSxRQUFRLENBQUNsSCxHQUFHLENBQUMsVUFBQXFKLEVBQUU7SUFBQSxPQUFJQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQUEsRUFBQyxHQUFHN0ksS0FBSyxDQUFDcUcsTUFBTTs7RUFFakc7RUFDQSxJQUFNb0UsYUFBdUMsR0FBRztJQUM5Q0MsUUFBUSxFQUFFLFFBQVE7SUFDbEJILElBQUksRUFBRUQsaUJBQWlCO0lBQ3ZCakgsSUFBSSxFQUFFcEIsS0FBSztJQUNYeUUsUUFBUSxFQUFSQSxRQUFRO0lBQ1JMLE1BQU0sRUFBRUEsTUFBTSxJQUFJO0VBQ3BCLENBQUM7RUFFRCxPQUFPb0UsYUFBYTtBQUN0QiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1,6 +1,6 @@
1
1
  import { TooltipFormat } from '@kepler.gl/constants';
2
- import { Field, Millisecond } from '@kepler.gl/types';
3
- export declare type FieldFormatter = (value: any) => string;
2
+ import { Field, Millisecond, ProtoDatasetField } from '@kepler.gl/types';
3
+ export declare type FieldFormatter = (value: any, field?: ProtoDatasetField) => string;
4
4
  export declare const MAX_LATITUDE = 89.9;
5
5
  export declare const MIN_LATITUDE = -89.9;
6
6
  export declare const MAX_LONGITUDE = 180;
@@ -95,13 +95,19 @@ export declare function roundValToStep(minValue: number | undefined, step: numbe
95
95
  */
96
96
  export declare const defaultFormatter: FieldFormatter;
97
97
  export declare const floatFormatter: (v: any) => string;
98
+ /**
99
+ * Transforms a WKB in Uint8Array form into a hex WKB string.
100
+ * @param uint8Array WKB in Uint8Array form.
101
+ * @returns hex WKB string.
102
+ */
103
+ export declare function uint8ArrayToHex(data: Uint8Array): string;
98
104
  export declare const FIELD_DISPLAY_FORMAT: {
99
105
  [key: string]: FieldFormatter;
100
106
  };
101
107
  /**
102
108
  * Parse field value and type and return a string representation
103
109
  */
104
- export declare const parseFieldValue: (value: any, type: string) => string;
110
+ export declare const parseFieldValue: (value: any, type: string, field?: Field) => string;
105
111
  /**
106
112
  * Get the value format based on field and format options
107
113
  * Used in render tooltip value