@sapui5/sap.fe.controls 1.130.1 → 1.130.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.controls",
3
- "version": "1.130.1",
3
+ "version": "1.130.3",
4
4
  "description": "SAPUI5 Library sap.fe.controls",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2024 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.130.1</version>
9
+ <version>1.130.3</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.controls</documentation>
12
12
 
@@ -16,6 +16,7 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
16
16
  function AINotice(props) {
17
17
  return _jsx(Button, {
18
18
  text: props.resourceBundle.getText("M_EASY_FILTER_FILTER_SET_AI"),
19
+ icon: "sap-icon://ai",
19
20
  type: ButtonType.Transparent,
20
21
  press: e => {
21
22
  const $disclaimerPopover = _jsx(Popover, {
@@ -54,4 +55,4 @@ sap.ui.define(["sap/m/Button", "sap/m/OverflowToolbar", "sap/m/Popover", "sap/m/
54
55
  }
55
56
  return AINotice;
56
57
  }, false);
57
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSU5vdGljZSIsInByb3BzIiwiX2pzeCIsIkJ1dHRvbiIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJ0eXBlIiwiQnV0dG9uVHlwZSIsIlRyYW5zcGFyZW50IiwicHJlc3MiLCJlIiwiJGRpc2NsYWltZXJQb3BvdmVyIiwiUG9wb3ZlciIsImNvbnRlbnRXaWR0aCIsInNob3dBcnJvdyIsInNob3dIZWFkZXIiLCJwbGFjZW1lbnQiLCJQbGFjZW1lbnRUeXBlIiwiQm90dG9tIiwidGl0bGUiLCJjaGlsZHJlbiIsImNvbnRlbnQiLCJfanN4cyIsIlZCb3giLCJUZXh0IiwiY2xhc3MiLCJmb290ZXIiLCJPdmVyZmxvd1Rvb2xiYXIiLCJfRnJhZ21lbnQiLCJUb29sYmFyU3BhY2VyIiwiY2xvc2UiLCJvcGVuQnkiLCJnZXRTb3VyY2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkFJTm90aWNlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSBSZXNvdXJjZUJ1bmRsZSBmcm9tIFwic2FwL2Jhc2UvaTE4bi9SZXNvdXJjZUJ1bmRsZVwiO1xuaW1wb3J0IHR5cGUgeyBCdXR0b24kUHJlc3NFdmVudCB9IGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE92ZXJmbG93VG9vbGJhciBmcm9tIFwic2FwL20vT3ZlcmZsb3dUb29sYmFyXCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRleHQgZnJvbSBcInNhcC9tL1RleHRcIjtcbmltcG9ydCBUb29sYmFyU3BhY2VyIGZyb20gXCJzYXAvbS9Ub29sYmFyU3BhY2VyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgUGxhY2VtZW50VHlwZSB9IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5cbi8qKlxuICogVGlueSBjb21wb25lbnQgdG8gZGlzcGxheSBhIGxpbmsgdGhhdCBvcGVucyBhIHBvcG92ZXIgd2l0aCB0aGUgQUkgbm90aWNlLlxuICogQHBhcmFtIHByb3BzXG4gKiBAcGFyYW0gcHJvcHMucmVzb3VyY2VCdW5kbGVcbiAqIEByZXR1cm5zIFRoZSBBSSBOb3RpY2UgY29tcG9uZW50XG4gKi9cbmZ1bmN0aW9uIEFJTm90aWNlKHByb3BzOiB7IHJlc291cmNlQnVuZGxlOiBSZXNvdXJjZUJ1bmRsZSB9KTogTGluayB7XG5cdHJldHVybiAoXG5cdFx0PEJ1dHRvblxuXHRcdFx0dGV4dD17cHJvcHMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfRklMVEVSX1NFVF9BSVwiKX1cblx0XHRcdHR5cGU9e0J1dHRvblR5cGUuVHJhbnNwYXJlbnR9XG5cdFx0XHRwcmVzcz17KGU6IEJ1dHRvbiRQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdGNvbnN0ICRkaXNjbGFpbWVyUG9wb3ZlcjogUG9wb3ZlciA9IChcblx0XHRcdFx0XHQ8UG9wb3ZlclxuXHRcdFx0XHRcdFx0Y29udGVudFdpZHRoPXtcIjIyLjgxMjVyZW1cIn1cblx0XHRcdFx0XHRcdHNob3dBcnJvdz17dHJ1ZX1cblx0XHRcdFx0XHRcdHNob3dIZWFkZXI9e3RydWV9XG5cdFx0XHRcdFx0XHRwbGFjZW1lbnQ9e1BsYWNlbWVudFR5cGUuQm90dG9tfVxuXHRcdFx0XHRcdFx0dGl0bGU9e3Byb3BzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfQUlfVElUTEVcIil9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdDxWQm94PlxuXHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGZUNvbnRyb2xzQWlQb3BvdmVyVGV4dDFcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0FJX1RFWFRfMVwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8VGV4dFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInNhcEZlQ29udHJvbHNBaVBvcG92ZXJUZXh0MlwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3Byb3BzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfQUlfVEVYVF8yXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHQ8L1ZCb3g+XG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdGZvb3RlcjogKFxuXHRcdFx0XHRcdFx0XHRcdDxPdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PD5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRleHQ9e3Byb3BzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfQ0xPU0VcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByZXNzPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JGRpc2NsYWltZXJQb3BvdmVyPy5jbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ8L1BvcG92ZXI+XG5cdFx0XHRcdCkgYXMgUG9wb3Zlcjtcblx0XHRcdFx0JGRpc2NsYWltZXJQb3BvdmVyLm9wZW5CeShlLmdldFNvdXJjZSgpKTtcblx0XHRcdH19XG5cdFx0Lz5cblx0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgQUlOb3RpY2U7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztFQVdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBLFNBQVNBLFFBQVFBLENBQUNDLEtBQXlDLEVBQVE7SUFDbEUsT0FDQ0MsSUFBQSxDQUFDQyxNQUFNO01BQ05DLElBQUksRUFBRUgsS0FBSyxDQUFDSSxjQUFjLENBQUNDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBRTtNQUNsRUMsSUFBSSxFQUFFQyxVQUFVLENBQUNDLFdBQVk7TUFDN0JDLEtBQUssRUFBR0MsQ0FBb0IsSUFBVztRQUN0QyxNQUFNQyxrQkFBMkIsR0FDaENWLElBQUEsQ0FBQ1csT0FBTztVQUNQQyxZQUFZLEVBQUUsWUFBYTtVQUMzQkMsU0FBUyxFQUFFLElBQUs7VUFDaEJDLFVBQVUsRUFBRSxJQUFLO1VBQ2pCQyxTQUFTLEVBQUVDLGFBQWEsQ0FBQ0MsTUFBTztVQUNoQ0MsS0FBSyxFQUFFbkIsS0FBSyxDQUFDSSxjQUFjLENBQUNDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBRTtVQUFBZSxRQUFBLEVBRXJFO1lBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFDQyxJQUFJO2NBQUFILFFBQUEsR0FDSm5CLElBQUEsQ0FBQ3VCLElBQUk7Z0JBQ0pDLEtBQUssRUFBQyw2QkFBNkI7Z0JBQ25DdEIsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGlDQUFpQztjQUFFLENBQ3RFLENBQUMsRUFDRkosSUFBQSxDQUFDdUIsSUFBSTtnQkFDSkMsS0FBSyxFQUFDLDZCQUE2QjtnQkFDbkN0QixJQUFJLEVBQUVILEtBQUssQ0FBQ0ksY0FBYyxDQUFDQyxPQUFPLENBQUMsaUNBQWlDO2NBQUUsQ0FDdEUsQ0FBQztZQUFBLENBQ0csQ0FDTjtZQUNEcUIsTUFBTSxFQUNMekIsSUFBQSxDQUFDMEIsZUFBZTtjQUFBUCxRQUFBLEVBQ2Q7Z0JBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFBTSxTQUFBO2tCQUFBUixRQUFBLEdBQ0NuQixJQUFBLENBQUM0QixhQUFhLElBQUUsQ0FBQyxFQUNqQjVCLElBQUEsQ0FBQ0MsTUFBTTtvQkFDTkMsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLDZCQUE2QixDQUFFO29CQUNsRUksS0FBSyxFQUFFQSxDQUFBLEtBQVk7c0JBQ2xCRSxrQkFBa0IsYUFBbEJBLGtCQUFrQix1QkFBbEJBLGtCQUFrQixDQUFFbUIsS0FBSyxDQUFDLENBQUM7b0JBQzVCO2tCQUFFLENBQ0YsQ0FBQztnQkFBQSxDQUNEO2NBRUo7WUFBQyxDQUNlO1VBRW5CO1FBQUMsQ0FDTyxDQUNFO1FBQ1puQixrQkFBa0IsQ0FBQ29CLE1BQU0sQ0FBQ3JCLENBQUMsQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDLENBQUM7TUFDekM7SUFBRSxDQUNGLENBQUM7RUFFSjtFQUFDLE9BRWNqQyxRQUFRO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBSU5vdGljZSIsInByb3BzIiwiX2pzeCIsIkJ1dHRvbiIsInRleHQiLCJyZXNvdXJjZUJ1bmRsZSIsImdldFRleHQiLCJpY29uIiwidHlwZSIsIkJ1dHRvblR5cGUiLCJUcmFuc3BhcmVudCIsInByZXNzIiwiZSIsIiRkaXNjbGFpbWVyUG9wb3ZlciIsIlBvcG92ZXIiLCJjb250ZW50V2lkdGgiLCJzaG93QXJyb3ciLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiUGxhY2VtZW50VHlwZSIsIkJvdHRvbSIsInRpdGxlIiwiY2hpbGRyZW4iLCJjb250ZW50IiwiX2pzeHMiLCJWQm94IiwiVGV4dCIsImNsYXNzIiwiZm9vdGVyIiwiT3ZlcmZsb3dUb29sYmFyIiwiX0ZyYWdtZW50IiwiVG9vbGJhclNwYWNlciIsImNsb3NlIiwib3BlbkJ5IiwiZ2V0U291cmNlIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJBSU5vdGljZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCB0eXBlIHsgQnV0dG9uJFByZXNzRXZlbnQgfSBmcm9tIFwic2FwL20vQnV0dG9uXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIExpbmsgZnJvbSBcInNhcC9tL0xpbmtcIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFBvcG92ZXIgZnJvbSBcInNhcC9tL1BvcG92ZXJcIjtcbmltcG9ydCBUZXh0IGZyb20gXCJzYXAvbS9UZXh0XCI7XG5pbXBvcnQgVG9vbGJhclNwYWNlciBmcm9tIFwic2FwL20vVG9vbGJhclNwYWNlclwiO1xuaW1wb3J0IFZCb3ggZnJvbSBcInNhcC9tL1ZCb3hcIjtcbmltcG9ydCB7IEJ1dHRvblR5cGUsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuXG4vKipcbiAqIFRpbnkgY29tcG9uZW50IHRvIGRpc3BsYXkgYSBsaW5rIHRoYXQgb3BlbnMgYSBwb3BvdmVyIHdpdGggdGhlIEFJIG5vdGljZS5cbiAqIEBwYXJhbSBwcm9wc1xuICogQHBhcmFtIHByb3BzLnJlc291cmNlQnVuZGxlXG4gKiBAcmV0dXJucyBUaGUgQUkgTm90aWNlIGNvbXBvbmVudFxuICovXG5mdW5jdGlvbiBBSU5vdGljZShwcm9wczogeyByZXNvdXJjZUJ1bmRsZTogUmVzb3VyY2VCdW5kbGUgfSk6IExpbmsge1xuXHRyZXR1cm4gKFxuXHRcdDxCdXR0b25cblx0XHRcdHRleHQ9e3Byb3BzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0ZJTFRFUl9TRVRfQUlcIil9XG5cdFx0XHRpY29uPVwic2FwLWljb246Ly9haVwiXG5cdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0cHJlc3M9eyhlOiBCdXR0b24kUHJlc3NFdmVudCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRjb25zdCAkZGlzY2xhaW1lclBvcG92ZXI6IFBvcG92ZXIgPSAoXG5cdFx0XHRcdFx0PFBvcG92ZXJcblx0XHRcdFx0XHRcdGNvbnRlbnRXaWR0aD17XCIyMi44MTI1cmVtXCJ9XG5cdFx0XHRcdFx0XHRzaG93QXJyb3c9e3RydWV9XG5cdFx0XHRcdFx0XHRzaG93SGVhZGVyPXt0cnVlfVxuXHRcdFx0XHRcdFx0cGxhY2VtZW50PXtQbGFjZW1lbnRUeXBlLkJvdHRvbX1cblx0XHRcdFx0XHRcdHRpdGxlPXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0FJX1RJVExFXCIpfVxuXHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IChcblx0XHRcdFx0XHRcdFx0XHQ8VkJveD5cblx0XHRcdFx0XHRcdFx0XHRcdDxUZXh0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwic2FwRmVDb250cm9sc0FpUG9wb3ZlclRleHQxXCJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGV4dD17cHJvcHMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfUE9QT1ZFUl9BSV9URVhUXzFcIil9XG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0PFRleHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJzYXBGZUNvbnRyb2xzQWlQb3BvdmVyVGV4dDJcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0FJX1RFWFRfMlwiKX1cblx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0PC9WQm94PlxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRmb290ZXI6IChcblx0XHRcdFx0XHRcdFx0XHQ8T3ZlcmZsb3dUb29sYmFyPlxuXHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8VG9vbGJhclNwYWNlciAvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0ZXh0PXtwcm9wcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX0NMT1NFXCIpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCRkaXNjbGFpbWVyUG9wb3Zlcj8uY2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC8+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0PC9PdmVyZmxvd1Rvb2xiYXI+XG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0XHQpIGFzIFBvcG92ZXI7XG5cdFx0XHRcdCRkaXNjbGFpbWVyUG9wb3Zlci5vcGVuQnkoZS5nZXRTb3VyY2UoKSk7XG5cdFx0XHR9fVxuXHRcdC8+XG5cdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEFJTm90aWNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7RUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQSxRQUFRQSxDQUFDQyxLQUF5QyxFQUFRO0lBQ2xFLE9BQ0NDLElBQUEsQ0FBQ0MsTUFBTTtNQUNOQyxJQUFJLEVBQUVILEtBQUssQ0FBQ0ksY0FBYyxDQUFDQyxPQUFPLENBQUMsNkJBQTZCLENBQUU7TUFDbEVDLElBQUksRUFBQyxlQUFlO01BQ3BCQyxJQUFJLEVBQUVDLFVBQVUsQ0FBQ0MsV0FBWTtNQUM3QkMsS0FBSyxFQUFHQyxDQUFvQixJQUFXO1FBQ3RDLE1BQU1DLGtCQUEyQixHQUNoQ1gsSUFBQSxDQUFDWSxPQUFPO1VBQ1BDLFlBQVksRUFBRSxZQUFhO1VBQzNCQyxTQUFTLEVBQUUsSUFBSztVQUNoQkMsVUFBVSxFQUFFLElBQUs7VUFDakJDLFNBQVMsRUFBRUMsYUFBYSxDQUFDQyxNQUFPO1VBQ2hDQyxLQUFLLEVBQUVwQixLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGdDQUFnQyxDQUFFO1VBQUFnQixRQUFBLEVBRXJFO1lBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFDQyxJQUFJO2NBQUFILFFBQUEsR0FDSnBCLElBQUEsQ0FBQ3dCLElBQUk7Z0JBQ0pDLEtBQUssRUFBQyw2QkFBNkI7Z0JBQ25DdkIsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLGlDQUFpQztjQUFFLENBQ3RFLENBQUMsRUFDRkosSUFBQSxDQUFDd0IsSUFBSTtnQkFDSkMsS0FBSyxFQUFDLDZCQUE2QjtnQkFDbkN2QixJQUFJLEVBQUVILEtBQUssQ0FBQ0ksY0FBYyxDQUFDQyxPQUFPLENBQUMsaUNBQWlDO2NBQUUsQ0FDdEUsQ0FBQztZQUFBLENBQ0csQ0FDTjtZQUNEc0IsTUFBTSxFQUNMMUIsSUFBQSxDQUFDMkIsZUFBZTtjQUFBUCxRQUFBLEVBQ2Q7Z0JBQ0FDLE9BQU8sRUFDTkMsS0FBQSxDQUFBTSxTQUFBO2tCQUFBUixRQUFBLEdBQ0NwQixJQUFBLENBQUM2QixhQUFhLElBQUUsQ0FBQyxFQUNqQjdCLElBQUEsQ0FBQ0MsTUFBTTtvQkFDTkMsSUFBSSxFQUFFSCxLQUFLLENBQUNJLGNBQWMsQ0FBQ0MsT0FBTyxDQUFDLDZCQUE2QixDQUFFO29CQUNsRUssS0FBSyxFQUFFQSxDQUFBLEtBQVk7c0JBQ2xCRSxrQkFBa0IsYUFBbEJBLGtCQUFrQix1QkFBbEJBLGtCQUFrQixDQUFFbUIsS0FBSyxDQUFDLENBQUM7b0JBQzVCO2tCQUFFLENBQ0YsQ0FBQztnQkFBQSxDQUNEO2NBRUo7WUFBQyxDQUNlO1VBRW5CO1FBQUMsQ0FDTyxDQUNFO1FBQ1puQixrQkFBa0IsQ0FBQ29CLE1BQU0sQ0FBQ3JCLENBQUMsQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDLENBQUM7TUFDekM7SUFBRSxDQUNGLENBQUM7RUFFSjtFQUFDLE9BRWNsQyxRQUFRO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -19,6 +19,7 @@ function AINotice(props: { resourceBundle: ResourceBundle }): Link {
19
19
  return (
20
20
  <Button
21
21
  text={props.resourceBundle.getText("M_EASY_FILTER_FILTER_SET_AI")}
22
+ icon="sap-icon://ai"
22
23
  type={ButtonType.Transparent}
23
24
  press={(e: Button$PressEvent): void => {
24
25
  const $disclaimerPopover: Popover = (
@@ -91,8 +91,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
91
91
  _initializerDefineProperty(_this, "beforeQueryProcessing", _descriptor14, _assertThisInitialized(_this));
92
92
  _initializerDefineProperty(_this, "afterQueryProcessing", _descriptor15, _assertThisInitialized(_this));
93
93
  _initializerDefineProperty(_this, "state", _descriptor16, _assertThisInitialized(_this));
94
- _this.mandatoryKeyMap = {};
95
94
  _this.shouldTokenChangeEventFired = true;
95
+ _this.inputFieldReady = new Promise(resolve => {
96
+ _this.resolveContentReady = resolve;
97
+ });
96
98
  _this.initialize();
97
99
  return _this;
98
100
  }
@@ -104,15 +106,42 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
104
106
  this.easyfilter = __ui5_require_async(this.easyFilterLib);
105
107
  }
106
108
  };
107
- _proto.initialize = function initialize() {
109
+ _proto.setAppId = async function setAppId(appId) {
110
+ if (!this.appId) {
111
+ var _this$easyFilterInput, _this$easyFilterInput2;
112
+ this.setProperty("appId", appId, true);
113
+ await this.inputFieldReady;
114
+ (_this$easyFilterInput = this.easyFilterInput.current) === null || _this$easyFilterInput === void 0 ? void 0 : _this$easyFilterInput.setProperty("appId", appId, true);
115
+ await ((_this$easyFilterInput2 = this.easyFilterInput.current) === null || _this$easyFilterInput2 === void 0 ? void 0 : _this$easyFilterInput2.initShellHistoryProvider());
116
+ }
117
+ };
118
+ _proto.setFilterBarMetadata = function setFilterBarMetadata(filterBarMetadata) {
119
+ if (!this.filterBarMetadata) {
120
+ this.setProperty("filterBarMetadata", filterBarMetadata, true);
121
+ // populate the tokens with default value
122
+ const tokens = this.getDefaultTokens(true);
123
+ if (!this.innerControlPopover) {
124
+ this.innerControlPopover = this.createPopoverForInnerControls();
125
+ this.addDependent(this.innerControlPopover);
126
+ }
127
+ this.state.tokens = tokens;
128
+ this.state.showResult = tokens.length > 0;
129
+ ///We don't want to display error valueStateMessage as soon the control renders
130
+ this.isMandatoryCheckRequired = true;
131
+ //onTokenChange event should not be fired when initial set of tokens are set
132
+ this.shouldTokenChangeEventFired = false;
133
+ }
134
+ };
135
+ _proto.init = function init() {
108
136
  this.resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
137
+ };
138
+ _proto.initialize = function initialize() {
109
139
  this.content = this.createContent();
110
- this.innerControlPopover = this.createPopoverForInnerControls();
111
- this.addDependent(this.innerControlPopover);
112
- // populate the tokens with default value
113
- const tokens = this.getDefaultTokens(true);
114
- this.state.tokens = tokens;
115
- this.state.showResult = tokens.length > 0;
140
+ this.resolveContentReady();
141
+ if (!this.innerControlPopover) {
142
+ this.innerControlPopover = this.createPopoverForInnerControls();
143
+ this.addDependent(this.innerControlPopover);
144
+ }
116
145
  //We don't want to display error valueStateMessage as soon the control renders
117
146
  this.isMandatoryCheckRequired = true;
118
147
  //onTokenChange event should not be fired when initial set of tokens are set
@@ -121,6 +150,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
121
150
  _proto.getDefaultTokens = function getDefaultTokens(isDefaultValuesRespected) {
122
151
  var _this$filterBarMetada;
123
152
  const tokens = [];
153
+ if (!this.mandatoryKeyMap) {
154
+ this.mandatoryKeyMap = {};
155
+ }
124
156
  (_this$filterBarMetada = this.filterBarMetadata) === null || _this$filterBarMetada === void 0 ? void 0 : _this$filterBarMetada.forEach(data => {
125
157
  if (data.required === true) {
126
158
  this.mandatoryKeyMap[data.name] = true;
@@ -161,7 +193,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
161
193
  easyTokens.forEach(token => token.closeValueStateMessage());
162
194
  };
163
195
  _proto.onGoPress = async function onGoPress(magicQuery) {
164
- var _this$easyFilterInput;
196
+ var _this$easyFilterInput3;
165
197
  let doSearch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
166
198
  if (!magicQuery) {
167
199
  this.resetState();
@@ -169,7 +201,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
169
201
  return;
170
202
  }
171
203
  this.state.tokenizerEditable = true;
172
- (_this$easyFilterInput = this.easyFilterInput.current) === null || _this$easyFilterInput === void 0 ? void 0 : _this$easyFilterInput.setEditable(true);
204
+ (_this$easyFilterInput3 = this.easyFilterInput.current) === null || _this$easyFilterInput3 === void 0 ? void 0 : _this$easyFilterInput3.setEditable(true);
173
205
 
174
206
  // Call AI service to get the filter criteria
175
207
  const easyfilter = await this.easyfilter;
@@ -184,17 +216,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
184
216
  };
185
217
  const easyFilterResult = await easyfilter.easyFilter(magicQuery, easyFilterMetadata);
186
218
  if (easyFilterResult.success) {
187
- var _this$easyFilterInput2;
188
- (_this$easyFilterInput2 = this.easyFilterInput.current) === null || _this$easyFilterInput2 === void 0 ? void 0 : _this$easyFilterInput2.addRecentQuery(magicQuery);
219
+ var _this$easyFilterInput4;
220
+ //Only add the recent query when the call is success
221
+ //Do not track the recent queries when the isHistoryEnabled is set to false
222
+ //It would be a violation to users privacy
223
+ if (((_this$easyFilterInput4 = this.easyFilterInput.current) === null || _this$easyFilterInput4 === void 0 ? void 0 : _this$easyFilterInput4.isHistoryEnabled()) ?? false) {
224
+ var _this$easyFilterInput5;
225
+ (_this$easyFilterInput5 = this.easyFilterInput.current) === null || _this$easyFilterInput5 === void 0 ? void 0 : _this$easyFilterInput5.addRecentQuery(magicQuery);
226
+ }
189
227
  if (easyFilterResult.data.version === 1) {
190
228
  this.handleV1Success(easyFilterResult, doSearch);
191
229
  } else if (easyFilterResult.data.version === 2) {
192
230
  // Create the sap.ui.model.Filter from the filter and apply it directly to the list binding
193
231
  }
194
232
  } else {
195
- var _this$easyFilterInput3;
233
+ var _this$easyFilterInput6;
196
234
  // error
197
- (_this$easyFilterInput3 = this.easyFilterInput.current) === null || _this$easyFilterInput3 === void 0 ? void 0 : _this$easyFilterInput3.setAsInvalid(easyFilterResult.message);
235
+ (_this$easyFilterInput6 = this.easyFilterInput.current) === null || _this$easyFilterInput6 === void 0 ? void 0 : _this$easyFilterInput6.setAsInvalid(easyFilterResult.message);
198
236
  Log.error("Error while generating filter criteria: ", easyFilterResult.message);
199
237
  }
200
238
  this.fireEvent("afterQueryProcessing");
@@ -208,8 +246,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
208
246
  */;
209
247
  _proto.handleV1Success = function handleV1Success(easyFilterResult, goPressed) {
210
248
  if (easyFilterResult.data.unclear) {
211
- var _this$easyFilterInput4;
212
- (_this$easyFilterInput4 = this.easyFilterInput.current) === null || _this$easyFilterInput4 === void 0 ? void 0 : _this$easyFilterInput4.setAsInvalid(this.resourceBundle.getText("M_EASY_FILTER_UNCLEAR_INPUT", [easyFilterResult.data.unclear]));
249
+ var _this$easyFilterInput7;
250
+ (_this$easyFilterInput7 = this.easyFilterInput.current) === null || _this$easyFilterInput7 === void 0 ? void 0 : _this$easyFilterInput7.setAsInvalid(this.resourceBundle.getText("M_EASY_FILTER_UNCLEAR_INPUT", [easyFilterResult.data.unclear]));
213
251
  }
214
252
  if (easyFilterResult.data.filter) {
215
253
  // We need to show a message to the user that the filter criteria has been generated
@@ -295,7 +333,6 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
295
333
  children: [_jsx(EasyFilterInput, {
296
334
  recommendedValues: this.recommendedValues,
297
335
  ref: this.easyFilterInput,
298
- appId: this.appId,
299
336
  enterPressed: this.onEnterPressed.bind(this),
300
337
  queryChanged: e => {
301
338
  this.fireEvent("queryChanged", {
@@ -342,13 +379,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
342
379
  items: this.state.tokens.keySpecificSelectedValues,
343
380
  mandatory: this.isKeyMandatory(object.key),
344
381
  delete: () => {
345
- var _this$easyFilterInput5;
382
+ var _this$easyFilterInput8;
346
383
  const tokenIndex = this.state.tokens.findIndex(token => token.key === object.key);
347
384
  const newTokens = this.state.tokens.concat();
348
385
  newTokens.splice(tokenIndex, 1);
349
386
  this.state.goPressed = false;
350
387
  this.state.tokens = newTokens;
351
- (_this$easyFilterInput5 = this.easyFilterInput.current) === null || _this$easyFilterInput5 === void 0 ? void 0 : _this$easyFilterInput5.setEditable(false);
388
+ (_this$easyFilterInput8 = this.easyFilterInput.current) === null || _this$easyFilterInput8 === void 0 ? void 0 : _this$easyFilterInput8.setEditable(false);
352
389
  },
353
390
  children: {
354
391
  customData: [_jsx(CustomData, {
@@ -368,11 +405,11 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
368
405
  text: this.resourceBundle.getText("M_EASY_FILTER_RESET"),
369
406
  type: ButtonType.Transparent,
370
407
  press: () => {
371
- var _this$easyFilterInput6;
408
+ var _this$easyFilterInput9;
372
409
  this.resetState();
373
410
  this.state.goPressed = false;
374
411
  //Retaining the focus on popover doesn't make the popover close on every interaction
375
- (_this$easyFilterInput6 = this.easyFilterInput.current) === null || _this$easyFilterInput6 === void 0 ? void 0 : _this$easyFilterInput6.focus();
412
+ (_this$easyFilterInput9 = this.easyFilterInput.current) === null || _this$easyFilterInput9 === void 0 ? void 0 : _this$easyFilterInput9.focus();
376
413
  }
377
414
  })]
378
415
  }), _jsx(FlexBox, {
@@ -394,23 +431,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
394
431
  return outVBox;
395
432
  };
396
433
  _proto.onGoButtonPress = async function onGoButtonPress() {
397
- var _this$easyFilterInput7, _this$easyFilterInput8, _this$easyFilterInput9;
398
- const editableState = (_this$easyFilterInput7 = this.easyFilterInput.current) === null || _this$easyFilterInput7 === void 0 ? void 0 : _this$easyFilterInput7.getEditable();
434
+ var _this$easyFilterInput10, _this$easyFilterInput11, _this$easyFilterInput12;
435
+ const editableState = (_this$easyFilterInput10 = this.easyFilterInput.current) === null || _this$easyFilterInput10 === void 0 ? void 0 : _this$easyFilterInput10.getEditable();
399
436
  this.state.tokenizerEditable = true;
400
- (_this$easyFilterInput8 = this.easyFilterInput.current) === null || _this$easyFilterInput8 === void 0 ? void 0 : _this$easyFilterInput8.setEditable(true);
437
+ (_this$easyFilterInput11 = this.easyFilterInput.current) === null || _this$easyFilterInput11 === void 0 ? void 0 : _this$easyFilterInput11.setEditable(true);
401
438
  if (!(editableState ?? false)) {
402
439
  this.fireEvent("executeSearch");
403
440
  return;
404
441
  }
405
- await this.onGoPress((_this$easyFilterInput9 = this.easyFilterInput.current) === null || _this$easyFilterInput9 === void 0 ? void 0 : _this$easyFilterInput9.getValue(), true);
442
+ await this.onGoPress((_this$easyFilterInput12 = this.easyFilterInput.current) === null || _this$easyFilterInput12 === void 0 ? void 0 : _this$easyFilterInput12.getValue(), true);
406
443
  };
407
444
  _proto.resetState = function resetState() {
408
- var _this$easyFilterInput10, _this$easyFilterInput11, _this$tokenizer$curre2, _this$tokenizer$curre3;
445
+ var _this$easyFilterInput13, _this$easyFilterInput14, _this$tokenizer$curre2, _this$tokenizer$curre3;
409
446
  this.fireEvent("clearFilters");
410
447
  this.state.tokens = this.getDefaultTokens(true);
411
- (_this$easyFilterInput10 = this.easyFilterInput.current) === null || _this$easyFilterInput10 === void 0 ? void 0 : _this$easyFilterInput10.setValue("");
448
+ (_this$easyFilterInput13 = this.easyFilterInput.current) === null || _this$easyFilterInput13 === void 0 ? void 0 : _this$easyFilterInput13.setValue("");
412
449
  this.state.tokenizerEditable = true;
413
- (_this$easyFilterInput11 = this.easyFilterInput.current) === null || _this$easyFilterInput11 === void 0 ? void 0 : _this$easyFilterInput11.setEditable(true);
450
+ (_this$easyFilterInput14 = this.easyFilterInput.current) === null || _this$easyFilterInput14 === void 0 ? void 0 : _this$easyFilterInput14.setEditable(true);
414
451
  this.state.goPressed = false;
415
452
  this.isMandatoryCheckRequired = true;
416
453
  //Set the Value States of all the Tokens back to None
@@ -428,7 +465,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
428
465
  const tokenIndex = newTokens.findIndex(t => t.key === tokenKey);
429
466
  const token = newTokens[tokenIndex];
430
467
  if (tokenIndex != -1) {
431
- var _this$easyFilterInput12;
468
+ var _this$easyFilterInput15;
432
469
  switch (changeType) {
433
470
  case "setSelectedValues":
434
471
  this.setSelectedValues(token, newTokenSpecificValues, tokenIndex, newTokens);
@@ -446,7 +483,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
446
483
  this.state.goPressed = false;
447
484
  this.state.tokens = newTokens;
448
485
  this.state.showResult = newTokens.length > 0;
449
- (_this$easyFilterInput12 = this.easyFilterInput.current) === null || _this$easyFilterInput12 === void 0 ? void 0 : _this$easyFilterInput12.setEditable(false);
486
+ (_this$easyFilterInput15 = this.easyFilterInput.current) === null || _this$easyFilterInput15 === void 0 ? void 0 : _this$easyFilterInput15.setEditable(false);
450
487
  }
451
488
  };
452
489
  _proto.setSelectedValues = function setSelectedValues(token, newTokenSpecificValues, tokenIndex, newTokens) {
@@ -456,6 +493,9 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
456
493
  }
457
494
  };
458
495
  _proto.isKeyMandatory = function isKeyMandatory(key) {
496
+ if (!this.mandatoryKeyMap) {
497
+ this.mandatoryKeyMap = {};
498
+ }
459
499
  return this.mandatoryKeyMap[key] ? true : false;
460
500
  };
461
501
  _proto.getTokensInInitialState = function getTokensInInitialState() {
@@ -586,4 +626,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/base/ClassSupport", "sap/fe/base/jsx-runt
586
626
  _exports = EasyFilterBarContainer;
587
627
  return _exports;
588
628
  }, false);
589
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsImFnZ3JlZ2F0aW9uIiwiX2RlYzEwIiwiZXZlbnQiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsIl9pbmhlcml0c0xvb3NlIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsIm1hbmRhdG9yeUtleU1hcCIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldEVhc3lGaWx0ZXJMaWIiLCJlYXN5RmlsdGVyTGliIiwic2V0UHJvcGVydHkiLCJlYXN5ZmlsdGVyIiwiX191aTVfcmVxdWlyZV9hc3luYyIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImlubmVyQ29udHJvbFBvcG92ZXIiLCJjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scyIsImFkZERlcGVuZGVudCIsInRva2VucyIsImdldERlZmF1bHRUb2tlbnMiLCJzdGF0ZSIsInNob3dSZXN1bHQiLCJsZW5ndGgiLCJpc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQiLCJpc0RlZmF1bHRWYWx1ZXNSZXNwZWN0ZWQiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsImZvckVhY2giLCJkYXRhIiwicmVxdWlyZWQiLCJuYW1lIiwicHVzaCIsImtleSIsImxhYmVsIiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImN1cnJlbnQiLCJnZXRUb2tlbnMiLCJjbG9zZVZhbHVlU3RhdGVNZXNzYWdlIiwibWFnaWNRdWVyeSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dCIsImRvU2VhcmNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicmVzZXRTdGF0ZSIsImdvUHJlc3NlZCIsInRva2VuaXplckVkaXRhYmxlIiwiZWFzeUZpbHRlcklucHV0Iiwic2V0RWRpdGFibGUiLCJmaXJlRXZlbnQiLCJlYXN5RmlsdGVyTWV0YWRhdGEiLCJ2ZXJzaW9uIiwiZW50aXR5U2V0IiwiY29udGV4dFBhdGgiLCJmaWVsZHMiLCJlYXN5RmlsdGVyUmVzdWx0IiwiZWFzeUZpbHRlciIsInN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQyIiwiYWRkUmVjZW50UXVlcnkiLCJoYW5kbGVWMVN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQzIiwic2V0QXNJbnZhbGlkIiwibWVzc2FnZSIsIkxvZyIsImVycm9yIiwidW5jbGVhciIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDQiLCJmaWx0ZXIiLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJFYXN5RmlsdGVyVXRpbHMiLCJmb3JtYXREYXRhIiwiX2pzeCIsIlBvcG92ZXIiLCJpZCIsImdldElkIiwic2hvd0Fycm93Iiwic2hvd0hlYWRlciIsInBsYWNlbWVudCIsIlBsYWNlbWVudFR5cGUiLCJCb3R0b20iLCJjaGlsZHJlbiIsImZvb3RlciIsImdldFRvb2xiYXIiLCJ0b29sYmFyIiwib2tCdXR0b24iLCJnZXRPa0J1dHRvbiIsInNob3dBbGxCdXR0b24iLCJnZXRTaG93QWxsQnV0dG9uIiwiT3ZlcmZsb3dUb29sYmFyIiwiX2pzeHMiLCJfRnJhZ21lbnQiLCJUb29sYmFyU3BhY2VyIiwiQnV0dG9uIiwidGV4dCIsIkJ1dHRvblR5cGUiLCJFbXBoYXNpemVkIiwib25TdGF0ZUNoYW5nZSIsImNoYW5nZWRQcm9wcyIsImluY2x1ZGVzIiwibWFwIiwiZGVlcENsb25lIiwiZ29CdXR0b25QcmVzc2VkIiwidmFsdWVPZiIsIiR0b3BHb0J0biIsImNyZWF0ZVJlZmVyZW5jZSIsIiRib3RHb0J0biIsIm91dFZCb3giLCJWQm94IiwiRmxleEJveCIsInJlbmRlclR5cGUiLCJFYXN5RmlsdGVySW5wdXQiLCJyZWNvbW1lbmRlZFZhbHVlcyIsInJlZiIsImFwcElkIiwiZW50ZXJQcmVzc2VkIiwiYmluZCIsInF1ZXJ5Q2hhbmdlZCIsInF1ZXJ5IiwibGl2ZUNoYW5nZSIsImljb24iLCJjbGFzcyIsInZpc2libGUiLCJub3QiLCJiaW5kU3RhdGUiLCJwcmVzcyIsIm9uR29CdXR0b25QcmVzcyIsImFsaWduSXRlbXMiLCJGbGV4QWxpZ25JdGVtcyIsIkNlbnRlciIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIkFJTm90aWNlIiwiVG9rZW5pemVyIiwiZWRpdGFibGUiLCJhbmQiLCJpZHgiLCJjdHgiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEyIiwiX3RoaXMkZmlsdGVyQmFyTWV0YWRhMyIsIm9iamVjdCIsImdldE9iamVjdCIsIlRva2VuIiwiaXRlbXMiLCJtYW5kYXRvcnkiLCJpc0tleU1hbmRhdG9yeSIsImRlbGV0ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDUiLCJ0b2tlbkluZGV4IiwiZmluZEluZGV4IiwibmV3VG9rZW5zIiwiY29uY2F0Iiwic3BsaWNlIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZpbmQiLCJjb2RlTGlzdCIsIlRyYW5zcGFyZW50IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0NiIsImZvY3VzIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQ3IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0OCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDkiLCJlZGl0YWJsZVN0YXRlIiwiZ2V0RWRpdGFibGUiLCJnZXRWYWx1ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEwIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTEiLCJfdGhpcyR0b2tlbml6ZXIkY3VycmUyIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlMyIsInNldFZhbHVlIiwiTm9uZSIsInVwZGF0ZVRva2VuQXJyYXkiLCJjaGFuZ2VUeXBlIiwibmV3VG9rZW5TcGVjaWZpY1ZhbHVlcyIsInRva2VuS2V5IiwidCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEyIiwic2V0U2VsZWN0ZWRWYWx1ZXMiLCJnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSIsIm1hbmRhdG9yeVRva2VucyIsIl90aGlzJHRva2VuaXplciRjdXJyZTQiLCJyZXF1aXJlZEtleXMiLCJnZXRLZXkiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJnZXRBZ2dyZWdhdGlvbiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRjcmVhdGVSZWZlcmVuY2UsXG5cdGRlZmluZVJlZmVyZW5jZSxcblx0ZGVmaW5lU3RhdGUsXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRldmVudCxcblx0cHJvcGVydHksXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1Rva2VuXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgeyBhbmQsIGJpbmRTdGF0ZSwgbm90IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRWFzeUZpbHRlcklucHV0IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVySW5wdXRcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRWFzeUZpbHRlciBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJNZXRhZGF0YSwgUHJvcGVydHlNZXRhZGF0YSwgU3VjY2VzcyB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IEFJTm90aWNlIGZyb20gXCIuL0FJTm90aWNlXCI7XG5pbXBvcnQgRWFzeUZpbHRlclV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vRm9yIGN1cnJlbnQgcmVsZWFzZSB3ZSBhcmUgaWdub3JpbmcgXCJBbGxcIiBhbmQgXCJBbnlcIlxuLy9XZSBjYW4gaW5jb3Jwb3JhdGUgdGhlc2UgdmFsdWVzIGluIGZ1dHVyZVxuZXhwb3J0IHR5cGUgQmV0d2VlblNlbGVjdGVkVmFsdWVzID0gW2Jvb2xlYW4sIGJvb2xlYW5dIHwgW3N0cmluZywgc3RyaW5nXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbRGF0ZSwgRGF0ZV07XG5cbi8vV2Ugd2lsbCBiZSBoYW5kbGluZyBcIkFMTFwiIGFuZCBcIkFOWVwiIGF0IGxhdGVyIHBvaW50IG9mIHRpbWVcbmV4cG9ydCB0eXBlIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXJbXSB8IERhdGVbXTtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwiTWVudVdpdGhDaGVja0JveFwiIHwgXCJDYWxlbmRhclwiIHwgXCJUaW1lXCIgfCBcIlZhbHVlSGVscFwiO1xuXG5leHBvcnQgdHlwZSBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlPzogVG9rZW5UeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9rZW5TZXR0ZXJzID0gXCJzZXRTZWxlY3RlZFZhbHVlc1wiO1xuXG5leHBvcnQgdHlwZSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9XG5cdHwgKFByb3BlcnR5TWV0YWRhdGEgJiB7XG5cdFx0XHR0eXBlOiBUb2tlblR5cGU7XG5cdFx0XHRsYWJlbDogc3RyaW5nOyAvLyBSZXF1aXJlZCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgaXMgbWFuZGF0b3J5XG5cdFx0XHRyZXF1aXJlZDogdHJ1ZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSlcblx0fCAoUHJvcGVydHlNZXRhZGF0YSAmIHtcblx0XHRcdHR5cGU6IFRva2VuVHlwZTtcblx0XHRcdGxhYmVsPzogc3RyaW5nOyAvLyBPcHRpb25hbCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgY2FuIGJlIG9taXR0ZWRcblx0XHRcdHJlcXVpcmVkOiBmYWxzZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSk7XG4vKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZWFzeUZpbHRlckxpYj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0ZmlsdGVyQmFyTWV0YWRhdGEhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRyZWNvbW1lbmRlZFZhbHVlcz86IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRlYXN5RmlsdGVySW5wdXQhOiBSZWY8RW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHRva2VuaXplciE6IFJlZjxUb2tlbml6ZXI+O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdHRva2Vuc0NoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdOyBnb0J1dHRvblByZXNzZWQ6IGJvb2xlYW4gfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHF1ZXJ5Q2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHNob3dWYWx1ZUhlbHA/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8XG5cdFx0XHR7IGtleTogc3RyaW5nOyB2YWx1ZXM6IHVua25vd25bXTsgcmVzb2x2ZTogKHZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb24/OiBFcnJvcikgPT4gdm9pZCB9LFxuXHRcdFx0RWFzeUZpbHRlckJhckNvbnRhaW5lclxuXHRcdD5cblx0PjtcblxuXHRAZXZlbnQoKVxuXHRjbGVhckZpbHRlcnM/OiBFdmVudEhhbmRsZXI7XG5cblx0Ly9UaGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSB3aGVuIHRoZSB0b2tlbnMgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIHRva2VucyBhbmQgcHJlc3NlZCBvbiB0aGUgR28gQnV0dG9uXG5cdC8vSW4gdGhpcyBjYXNlIHRoZSBcIkVudGVyXCIgd29udCBiZSByZWxldmFudCBiZWNhdXNlIHRoZSBpbnB1dCBmaWVsZCB3aWxsIGJlIGluIG5vbiBlZGl0YWJsZSBzdGF0ZVxuXHRAZXZlbnQoKVxuXHRleGVjdXRlU2VhcmNoPzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdGJlZm9yZVF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRhZnRlclF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRzaG93UmVzdWx0OiBib29sZWFuO1xuXHRcdHRva2VuczogVG9rZW5EZWZpbml0aW9uW107XG5cdFx0Z29QcmVzc2VkOiBib29sZWFuO1xuXHRcdHRva2VuaXplckVkaXRhYmxlOiBib29sZWFuO1xuXHR9PiA9IHtcblx0XHRzaG93UmVzdWx0OiBmYWxzZSxcblx0XHR0b2tlbnM6IFtdIGFzIFRva2VuRGVmaW5pdGlvbltdLFxuXHRcdGdvUHJlc3NlZDogZmFsc2UsXG5cdFx0dG9rZW5pemVyRWRpdGFibGU6IHRydWVcblx0fTtcblxuXHRwcml2YXRlIGlubmVyQ29udHJvbFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgb2tCdXR0b24/OiBCdXR0b247XG5cblx0cHJpdmF0ZSBzaG93QWxsQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgdG9vbGJhcj86IE92ZXJmbG93VG9vbGJhcjtcblxuXHRwcml2YXRlIG1hbmRhdG9yeUtleU1hcDogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcblxuXHQvL0lmIHNldCB0byB0cnVlIHRoZSBlcnJvciBzdGF0ZSBjYW4gYmUgc2VlbiBvbiB0aGUgdG9rZW5zXG5cdHByaXZhdGUgaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkPzogYm9vbGVhbjtcblxuXHRwcml2YXRlIHNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cblx0ZWFzeWZpbHRlcj86IFByb21pc2U8dHlwZW9mIEVhc3lGaWx0ZXIgfCB1bmRlZmluZWQ+O1xuXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6IHN0cmluZyB8ICgkQ29udHJvbFNldHRpbmdzICYgUHJvcGVydGllc09mPEVhc3lGaWx0ZXJCYXJDb250YWluZXI+KSwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMgYXMgc3RyaW5nLCBvdGhlcnMpO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZSgpO1xuXHR9XG5cblx0c2V0RWFzeUZpbHRlckxpYihlYXN5RmlsdGVyTGliOiBzdHJpbmcpOiB2b2lkIHtcblx0XHR0aGlzLnNldFByb3BlcnR5KFwiZWFzeUZpbHRlckxpYlwiLCBlYXN5RmlsdGVyTGliKTtcblx0XHRpZiAodGhpcy5lYXN5RmlsdGVyTGliKSB7XG5cdFx0XHR0aGlzLmVhc3lmaWx0ZXIgPSBpbXBvcnQodGhpcy5lYXN5RmlsdGVyTGliKTtcblx0XHR9XG5cdH1cblxuXHRpbml0aWFsaXplKCk6IHZvaWQge1xuXHRcdHRoaXMucmVzb3VyY2VCdW5kbGUgPSBMaWIuZ2V0UmVzb3VyY2VCdW5kbGVGb3IoXCJzYXAuZmUuY29udHJvbHNcIikhO1xuXHRcdHRoaXMuY29udGVudCA9IHRoaXMuY3JlYXRlQ29udGVudCgpO1xuXHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTtcblx0XHR0aGlzLmFkZERlcGVuZGVudCh0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpO1xuXHRcdC8vIHBvcHVsYXRlIHRoZSB0b2tlbnMgd2l0aCBkZWZhdWx0IHZhbHVlXG5cdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5zID0gdG9rZW5zO1xuXHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRva2Vucy5sZW5ndGggPiAwO1xuXHRcdC8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL29uVG9rZW5DaGFuZ2UgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCB3aGVuIGluaXRpYWwgc2V0IG9mIHRva2VucyBhcmUgc2V0XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0fVxuXG5cdGdldERlZmF1bHRUb2tlbnMoaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkOiBib29sZWFuKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSBbXTtcblx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5mb3JFYWNoKChkYXRhKSA9PiB7XG5cdFx0XHRpZiAoZGF0YS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcFtkYXRhLm5hbWVdID0gdHJ1ZTtcblx0XHRcdFx0Ly9DaGVjayB3aGV0aGVyIHRoZSBrZXlzIGV4aXN0IGluIHRoZSBjdXJyZW50IHN0YXRlIGVsc2UgcHVzaCBpdCBhY3Jvc3Ncblx0XHRcdFx0dG9rZW5zLnB1c2goe1xuXHRcdFx0XHRcdGtleTogZGF0YS5uYW1lLFxuXHRcdFx0XHRcdGxhYmVsOiBkYXRhLmxhYmVsLFxuXHRcdFx0XHRcdGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IGlzRGVmYXVsdFZhbHVlc1Jlc3BlY3RlZCAmJiBkYXRhLmRlZmF1bHRWYWx1ZSA/IGRhdGEuZGVmYXVsdFZhbHVlIDogW10sXG5cdFx0XHRcdFx0dHlwZTogZGF0YS50eXBlXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiB0b2tlbnM7XG5cdH1cblxuXHRvbkVudGVyUHJlc3NlZChlOiBVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlcklucHV0Pik6IHZvaWQge1xuXHRcdHRoaXMub25Hb1ByZXNzKGUuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIiksIGZhbHNlKTtcblx0fVxuXG5cdC8vTWFraW5nIGl0IHB1YmxpYyBiZWNhdXNlIGluIGxpdmUgbW9kZSB0aGUgYXBwIGRldmVsb3BlciBjYW4gZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZXJyb3IgVmFsdWVTdGF0ZU1lc3NhZ2Vcblx0Ly9JbiBub24tbGl2ZSBtb2RlICwgd2UgYXJlIGFscmVhZHkgaW50ZXJuYWxseSBoYW5kbGluZyBpdCBvbiBldmVyeSB0aW1lIHRpbWUgYSB1c2VyIGNsaWNrcyBvbiBHTy9FbnRlciBidXR0b25zXG5cdHB1YmxpYyBjaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHRva2Vuc0luU3RhdGUgPSB0aGlzLmdldFVuU2V0TWFuZGF0b3J5VG9rZW5zSW5DdXJyZW50U3RhdGUoKTtcblx0XHRpZiAodG9rZW5zSW5TdGF0ZS5sZW5ndGggIT09IDApIHtcblx0XHRcdGNvbnN0IHRva2VucyA9IHRoaXMuZ2V0QWN0dWFsVG9rZW5zRnJvbVN0YXRlKHRva2Vuc0luU3RhdGUpO1xuXHRcdFx0dG9rZW5zPy5mb3JFYWNoKCh0b2tlbikgPT4ge1xuXHRcdFx0XHR0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5FcnJvcik7XG5cdFx0XHRcdHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgdGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9NQU5EQVRPUllfVE9LRU5fRVJST1JcIikpO1xuXHRcdFx0XHR0b2tlbi5vcGVuVmFsdWVTdGF0ZU1lc3NhZ2UoKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZUFsbE1hbmRhdG9yeVZhbHVlU3RhdGVNZXNzYWdlcygpOiB2b2lkIHtcblx0XHRjb25zdCBlYXN5VG9rZW5zID0gdGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkgYXMgRWFzeUZpbHRlclRva2VuW107XG5cdFx0ZWFzeVRva2Vucy5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uY2xvc2VWYWx1ZVN0YXRlTWVzc2FnZSgpKTtcblx0fVxuXG5cdGFzeW5jIG9uR29QcmVzcyhtYWdpY1F1ZXJ5OiBzdHJpbmcgfCB1bmRlZmluZWQsIGRvU2VhcmNoID0gZmFsc2UpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIW1hZ2ljUXVlcnkpIHtcblx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBkb1NlYXJjaDtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSA9IHRydWU7XG5cdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0RWRpdGFibGUodHJ1ZSk7XG5cblx0XHQvLyBDYWxsIEFJIHNlcnZpY2UgdG8gZ2V0IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRjb25zdCBlYXN5ZmlsdGVyID0gYXdhaXQgdGhpcy5lYXN5ZmlsdGVyO1xuXHRcdGlmICghZWFzeWZpbHRlcikge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLmZpcmVFdmVudChcImJlZm9yZVF1ZXJ5UHJvY2Vzc2luZ1wiKTtcblxuXHRcdGNvbnN0IGVhc3lGaWx0ZXJNZXRhZGF0YTogRWFzeUZpbHRlck1ldGFkYXRhID0ge1xuXHRcdFx0dmVyc2lvbjogMSxcblx0XHRcdGVudGl0eVNldDogdGhpcy5jb250ZXh0UGF0aCxcblx0XHRcdGZpZWxkczogdGhpcy5maWx0ZXJCYXJNZXRhZGF0YVxuXHRcdH07XG5cblx0XHRjb25zdCBlYXN5RmlsdGVyUmVzdWx0ID0gYXdhaXQgZWFzeWZpbHRlci5lYXN5RmlsdGVyKG1hZ2ljUXVlcnksIGVhc3lGaWx0ZXJNZXRhZGF0YSk7XG5cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5hZGRSZWNlbnRRdWVyeShtYWdpY1F1ZXJ5KTtcblx0XHRcdGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMSkge1xuXHRcdFx0XHR0aGlzLmhhbmRsZVYxU3VjY2VzcyhlYXN5RmlsdGVyUmVzdWx0LCBkb1NlYXJjaCk7XG5cdFx0XHR9IGVsc2UgaWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS52ZXJzaW9uID09PSAyKSB7XG5cdFx0XHRcdC8vIENyZWF0ZSB0aGUgc2FwLnVpLm1vZGVsLkZpbHRlciBmcm9tIHRoZSBmaWx0ZXIgYW5kIGFwcGx5IGl0IGRpcmVjdGx5IHRvIHRoZSBsaXN0IGJpbmRpbmdcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gZXJyb3Jcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdFx0TG9nLmVycm9yKFwiRXJyb3Igd2hpbGUgZ2VuZXJhdGluZyBmaWx0ZXIgY3JpdGVyaWE6IFwiLCBlYXN5RmlsdGVyUmVzdWx0Lm1lc3NhZ2UpO1xuXHRcdH1cblxuXHRcdHRoaXMuZmlyZUV2ZW50KFwiYWZ0ZXJRdWVyeVByb2Nlc3NpbmdcIik7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlcyB0aGUgc3VjY2VzcyByZXNwb25zZSBmcm9tIHRoZSBBSSBzZXJ2aWNlIGZvciB2ZXJzaW9uIDEgb2YgdGhlIGVhc3kgZmlsdGVyLlxuXHQgKiBAcGFyYW0gZWFzeUZpbHRlclJlc3VsdCBUaGUgcmVzdWx0IGZyb20gdGhlIEFJIHNlcnZpY2Vcblx0ICogQHBhcmFtIGdvUHJlc3NlZCBXaGV0aGVyIHRvIGV4ZWN1dGUgdGhlIHNlYXJjaCBhZnRlciB0aGUgZmlsdGVyIGNyaXRlcmlhIGhhcyBiZWVuIGdlbmVyYXRlZFxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0cHJpdmF0ZSBoYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdDogU3VjY2VzczxFYXN5RmlsdGVyLkVhc3lGaWx0ZXJSZXN1bHQ+LCBnb1ByZXNzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnVuY2xlYXIpIHtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEFzSW52YWxpZChcblx0XHRcdFx0dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9VTkNMRUFSX0lOUFVUXCIsIFtlYXN5RmlsdGVyUmVzdWx0LmRhdGEudW5jbGVhcl0pXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlcikge1xuXHRcdFx0Ly8gV2UgbmVlZCB0byBzaG93IGEgbWVzc2FnZSB0byB0aGUgdXNlciB0aGF0IHRoZSBmaWx0ZXIgY3JpdGVyaWEgaGFzIGJlZW4gZ2VuZXJhdGVkXG5cdFx0XHRMb2cuZGVidWcoXCJGaWx0ZXIgY3JpdGVyaWEgZ2VuZXJhdGVkOiBcIiwgSlNPTi5zdHJpbmdpZnkoZWFzeUZpbHRlclJlc3VsdC5kYXRhLmZpbHRlciwgbnVsbCwgMikpO1xuXG5cdFx0XHQvLyBWYWxpZGF0ZSBhbmQgYXBwbHkgdGhlIGZpbHRlciBjcml0ZXJpYVxuXHRcdFx0Y29uc3QgdG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSA9IHRoaXMuZ2V0RGVmYXVsdFRva2VucyhmYWxzZSk7XG5cdFx0XHRFYXN5RmlsdGVyVXRpbHMuZm9ybWF0RGF0YSh0b2tlbnMsIGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIHRoaXMuZmlsdGVyQmFyTWV0YWRhdGEpO1xuXG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0cnVlO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBnb1ByZXNzZWQ7XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRva2Vucztcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpOiBQb3BvdmVyIHtcblx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gKFxuXHRcdFx0XHQ8UG9wb3ZlciBpZD17dGhpcy5nZXRJZCgpICsgXCItaW5uZXJQb3BvdmVyXCJ9IHNob3dBcnJvdz17ZmFsc2V9IHNob3dIZWFkZXI9e3RydWV9IHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRmb290ZXI6IHRoaXMuZ2V0VG9vbGJhcigpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciBhcyBQb3BvdmVyO1xuXHR9XG5cblx0Z2V0VG9vbGJhcigpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy50b29sYmFyKSB7XG5cdFx0XHRjb25zdCBva0J1dHRvbiA9IHRoaXMuZ2V0T2tCdXR0b24oKTtcblx0XHRcdGNvbnN0IHNob3dBbGxCdXR0b24gPSB0aGlzLmdldFNob3dBbGxCdXR0b24oKTtcblx0XHRcdHRoaXMudG9vbGJhciA9IChcblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhcj5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdFx0e29rQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRcdHtzaG93QWxsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRvb2xiYXI7XG5cdH1cblxuXHRnZXRPa0J1dHRvbigpOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5va0J1dHRvbikge1xuXHRcdFx0dGhpcy5va0J1dHRvbiA9IDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX09LXCIpfSB0eXBlPXtCdXR0b25UeXBlLkVtcGhhc2l6ZWR9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5va0J1dHRvbjtcblx0fVxuXG5cdGdldFNob3dBbGxCdXR0b24oKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuc2hvd0FsbEJ1dHRvbikge1xuXHRcdFx0dGhpcy5zaG93QWxsQnV0dG9uID0gPEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU0hPV19BTExfSVRFTVNcIil9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zaG93QWxsQnV0dG9uO1xuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwidG9rZW5zXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQpIHtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0b2tlbnNDaGFuZ2VkXCIsIHtcblx0XHRcdFx0XHR0b2tlbnM6IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgoZGF0YSkgPT4gZGVlcENsb25lKGRhdGEpKSxcblx0XHRcdFx0XHRnb0J1dHRvblByZXNzZWQ6IHRoaXMuc3RhdGUuZ29QcmVzc2VkLnZhbHVlT2YoKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRoaXMuc3RhdGUudG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoISh0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA/PyBmYWxzZSkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vUmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFZCb3gge1xuXHRcdGNvbnN0ICR0b3BHb0J0biA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGJvdEdvQnRuID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCBvdXRWQm94ID0gKFxuXHRcdFx0PFZCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCI+XG5cdFx0XHRcdFx0PEVhc3lGaWx0ZXJJbnB1dFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuZWFzeUZpbHRlcklucHV0fVxuXHRcdFx0XHRcdFx0YXBwSWQ9e3RoaXMuYXBwSWR9XG5cdFx0XHRcdFx0XHRlbnRlclByZXNzZWQ9e3RoaXMub25FbnRlclByZXNzZWQuYmluZCh0aGlzKX1cblx0XHRcdFx0XHRcdHF1ZXJ5Q2hhbmdlZD17KGUpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJxdWVyeUNoYW5nZWRcIiwgeyBxdWVyeTogZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSB9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRsaXZlQ2hhbmdlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblxuXHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlTbWFsbE1hcmdpbkJlZ2luXCJ9XG5cdFx0XHRcdFx0XHRyZWY9eyR0b3BHb0J0bn1cblx0XHRcdFx0XHRcdHZpc2libGU9e25vdChiaW5kU3RhdGUodGhpcy5zdGF0ZS5zaG93UmVzdWx0KSl9XG5cdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX0dPXCIpfVxuXHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25Hb0J1dHRvblByZXNzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHQ8RmxleEJveFxuXHRcdFx0XHRcdHJlbmRlclR5cGU9XCJCYXJlXCJcblx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnNob3dSZXN1bHR9XG5cdFx0XHRcdFx0YWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfVxuXHRcdFx0XHRcdHdyYXA9e0ZsZXhXcmFwLldyYXB9XG5cdFx0XHRcdFx0anVzdGlmeUNvbnRlbnQ9e0ZsZXhKdXN0aWZ5Q29udGVudC5TcGFjZUJldHdlZW59XG5cdFx0XHRcdFx0Y2xhc3M9e1wic2FwVWlUaW55TWFyZ2luVG9wXCJ9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHQ8RmxleEJveCBjbGFzcz17XCJzYXBGZUNvbnRyb2xzR2FwOHB4XCJ9IHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfSB3cmFwPXtGbGV4V3JhcC5XcmFwfT5cblx0XHRcdFx0XHRcdDxBSU5vdGljZSByZXNvdXJjZUJ1bmRsZT17dGhpcy5yZXNvdXJjZUJ1bmRsZX0gLz5cblx0XHRcdFx0XHRcdDxUb2tlbml6ZXJcblx0XHRcdFx0XHRcdFx0ZWRpdGFibGU9e2FuZChiaW5kU3RhdGUodGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSksIHRydWUpfVxuXHRcdFx0XHRcdFx0XHRjbGFzcz17XCJzYXBGZUNvbnRyb2xzVG9rZW5pemVyXCJ9XG5cdFx0XHRcdFx0XHRcdHRva2Vucz17YmluZFN0YXRlKHRoaXMuc3RhdGUudG9rZW5zKX1cblx0XHRcdFx0XHRcdFx0cmVmPXt0aGlzLnRva2VuaXplcn1cblx0XHRcdFx0XHRcdD5cblx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHR0b2tlbnM6IChpZHg6IG51bWJlciwgY3R4OiBDb250ZXh0KTogVG9rZW4gPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgb2JqZWN0ID0gY3R4LmdldE9iamVjdCgpIGFzIFRva2VuRGVmaW5pdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxUb2tlblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGtleT17dGhpcy5zdGF0ZS50b2tlbnMua2V5fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsPXt0aGlzLnN0YXRlLnRva2Vucy5sYWJlbH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtcz17dGhpcy5zdGF0ZS50b2tlbnMua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc31cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtYW5kYXRvcnk9e3RoaXMuaXNLZXlNYW5kYXRvcnkob2JqZWN0LmtleSl9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGVsZXRlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCB0b2tlbkluZGV4ID0gdGhpcy5zdGF0ZS50b2tlbnMuZmluZEluZGV4KCh0b2tlbikgPT4gdG9rZW4ua2V5ID09PSBvYmplY3Qua2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLmNvbmNhdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IG5ld1Rva2Vucztcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3tcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGN1c3RvbURhdGE6IFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiVG9rZW5JbmZvXCIgdmFsdWU9e29iamVjdH0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cInBvcG92ZXJcIiB2YWx1ZT17dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGEga2V5PVwiZWFzeUZpbHRlckJhckNvbnRhaW5lclwiIHZhbHVlPXt0aGlzfSAvPixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PEN1c3RvbURhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9XCJjb2RlTGlzdFwiXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuZmlsdGVyQmFyTWV0YWRhdGE/LmZpbmQoKGRhdGEpID0+IGRhdGEubmFtZSA9PT0gb2JqZWN0LmtleSk/LmNvZGVMaXN0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvVG9rZW4+XG5cdFx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdDwvVG9rZW5pemVyPlxuXHRcdFx0XHRcdFx0PEJ1dHRvblxuXHRcdFx0XHRcdFx0XHR0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1JFU0VUXCIpfVxuXHRcdFx0XHRcdFx0XHR0eXBlPXtCdXR0b25UeXBlLlRyYW5zcGFyZW50fVxuXHRcdFx0XHRcdFx0XHRwcmVzcz17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVzZXRTdGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0Ly9SZXRhaW5pbmcgdGhlIGZvY3VzIG9uIHBvcG92ZXIgZG9lc24ndCBtYWtlIHRoZSBwb3BvdmVyIGNsb3NlIG9uIGV2ZXJ5IGludGVyYWN0aW9uXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZm9jdXMoKTtcblx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCIgYWxpZ25JdGVtcz17RmxleEFsaWduSXRlbXMuQ2VudGVyfT5cblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0aWNvbj17XCJzYXAtaWNvbjovL2FpXCJ9XG5cdFx0XHRcdFx0XHRcdHZpc2libGU9e3RoaXMuc3RhdGUuc2hvd1Jlc3VsdH1cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9HT1wiKX1cblx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5FbXBoYXNpemVkfVxuXHRcdFx0XHRcdFx0XHRyZWY9eyRib3RHb0J0bn1cblx0XHRcdFx0XHRcdFx0cHJlc3M9e3RoaXMub25Hb0J1dHRvblByZXNzLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PC9GbGV4Qm94PlxuXHRcdFx0PC9WQm94PlxuXHRcdCkgYXMgVkJveDtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJHRvcEdvQnRuLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmU6YWk6c2VhcmNoXCIpO1xuXHRcdEZFU1JIZWxwZXIuc2V0U2VtYW50aWNTdGVwbmFtZSgkYm90R29CdG4uY3VycmVudCEsIFwicHJlc3NcIiwgXCJmZTphaTpzZWFyY2hcIik7XG5cdFx0cmV0dXJuIG91dFZCb3g7XG5cdH1cblxuXHRhc3luYyBvbkdvQnV0dG9uUHJlc3MoKTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgZWRpdGFibGVTdGF0ZSA9IHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmdldEVkaXRhYmxlKCk7XG5cdFx0dGhpcy5zdGF0ZS50b2tlbml6ZXJFZGl0YWJsZSA9IHRydWU7XG5cdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uc2V0RWRpdGFibGUodHJ1ZSk7XG5cdFx0aWYgKCEoZWRpdGFibGVTdGF0ZSA/PyBmYWxzZSkpIHtcblx0XHRcdHRoaXMuZmlyZUV2ZW50KFwiZXhlY3V0ZVNlYXJjaFwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0YXdhaXQgdGhpcy5vbkdvUHJlc3ModGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uZ2V0VmFsdWUoKSwgdHJ1ZSk7XG5cdH1cblxuXHRyZXNldFN0YXRlKCk6IHZvaWQge1xuXHRcdHRoaXMuZmlyZUV2ZW50KFwiY2xlYXJGaWx0ZXJzXCIpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFZhbHVlKFwiXCIpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKHRydWUpO1xuXHRcdHRoaXMuc3RhdGUuZ29QcmVzc2VkID0gZmFsc2U7XG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSB0cnVlO1xuXHRcdC8vU2V0IHRoZSBWYWx1ZSBTdGF0ZXMgb2YgYWxsIHRoZSBUb2tlbnMgYmFjayB0byBOb25lXG5cdFx0dGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVwiLCBWYWx1ZVN0YXRlLk5vbmUpKTtcblx0XHR0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKS5mb3JFYWNoKCh0b2tlbikgPT4gdG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlVGV4dFwiLCBudWxsKSk7XG5cdH1cblxuXHQvL1RoZSBiZWxvdyBjb2RlIHVwZGF0ZXMgdGhlIGV4aXN0aW5nIHN0YXRlIGJ5IGZldGNoaW5nIHRoZSBrZXkgYW5kIHNlbGVjdGVkVmFsdWVzXG5cdHVwZGF0ZVRva2VuQXJyYXkoY2hhbmdlVHlwZTogVG9rZW5TZXR0ZXJzLCBuZXdUb2tlblNwZWNpZmljVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLCB0b2tlbktleTogc3RyaW5nKTogdm9pZCB7XG5cdFx0Y29uc3QgbmV3VG9rZW5zID0gdGhpcy5zdGF0ZS50b2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFsuLi50b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzXSB9KSk7XG5cdFx0Y29uc3QgdG9rZW5JbmRleCA9IG5ld1Rva2Vucy5maW5kSW5kZXgoKHQpID0+IHQua2V5ID09PSB0b2tlbktleSk7XG5cdFx0Y29uc3QgdG9rZW4gPSBuZXdUb2tlbnNbdG9rZW5JbmRleF07XG5cdFx0aWYgKHRva2VuSW5kZXggIT0gLTEpIHtcblx0XHRcdHN3aXRjaCAoY2hhbmdlVHlwZSkge1xuXHRcdFx0XHRjYXNlIFwic2V0U2VsZWN0ZWRWYWx1ZXNcIjpcblx0XHRcdFx0XHR0aGlzLnNldFNlbGVjdGVkVmFsdWVzKHRva2VuLCBuZXdUb2tlblNwZWNpZmljVmFsdWVzLCB0b2tlbkluZGV4LCBuZXdUb2tlbnMpO1xuXHRcdFx0XHRcdHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBuZXdUb2tlblNwZWNpZmljVmFsdWVzO1xuXHRcdFx0XHRcdC8vUmVtb3ZlIHRoZSB0b2tlbiBlbnRpcmVseVxuXHRcdFx0XHRcdGlmICghdGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpICYmIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHRcdFx0XHRuZXdUb2tlbnMuc3BsaWNlKHRva2VuSW5kZXgsIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJTcGVjaWZ5aW5nIGEgc2V0dGVyIHRoYXQgaXMgb3V0IG9mIHRoZSBib3VuZGFyeVwiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHRcdC8vIFVwZGF0ZSB0aGUgc3RhdGUgYnkgYXNzaWduaW5nIHRoZSBuZXcgdG9rZW5zIGFycmF5XG5cdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnM7XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSBuZXdUb2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIHNldFNlbGVjdGVkVmFsdWVzKFxuXHRcdHRva2VuOiBUb2tlbkRlZmluaXRpb24sXG5cdFx0bmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSxcblx0XHR0b2tlbkluZGV4OiBudW1iZXIsXG5cdFx0bmV3VG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXVxuXHQpOiB2b2lkIHtcblx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHR9XG5cdH1cblxuXHRpc0tleU1hbmRhdG9yeShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLm1hbmRhdG9yeUtleU1hcFtrZXldID8gdHJ1ZSA6IGZhbHNlO1xuXHR9XG5cblx0Z2V0VG9rZW5zSW5Jbml0aWFsU3RhdGUoKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbLi4udG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc10gfSkpO1xuXHRcdGNvbnN0IG1hbmRhdG9yeVRva2VucyA9IG5ld1Rva2Vucy5maWx0ZXIoKHRva2VuKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc0tleU1hbmRhdG9yeSh0b2tlbi5rZXkpKSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHJldHVybiBtYW5kYXRvcnlUb2tlbnMubWFwKCh0b2tlbikgPT4gKHsgLi4udG9rZW4sIGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXM6IFtdIH0pKTtcblx0fVxuXG5cdGdldFVuU2V0TWFuZGF0b3J5VG9rZW5zSW5DdXJyZW50U3RhdGUoKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdHJldHVybiB0aGlzLnN0YXRlLnRva2Vucy5maWx0ZXIoKHRva2VuKSA9PiB7XG5cdFx0XHRjb25zdCBpc0tleU1hbmRhdG9yeSA9IHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KTtcblx0XHRcdGlmIChpc0tleU1hbmRhdG9yeSkge1xuXHRcdFx0XHRyZXR1cm4gdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDA7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRBY3R1YWxUb2tlbnNGcm9tU3RhdGUodG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSk6IEVhc3lGaWx0ZXJUb2tlbltdIHwgdW5kZWZpbmVkIHtcblx0XHRjb25zdCByZXF1aXJlZEtleXMgPSB0b2tlbnMubWFwKCh0b2tlbikgPT4gdG9rZW4ua2V5KTtcblx0XHRyZXR1cm4gdGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZmlsdGVyKCh0b2tlbikgPT4gcmVxdWlyZWRLZXlzLmluY2x1ZGVzKHRva2VuLmdldEtleSgpKSkgYXNcblx0XHRcdHwgRWFzeUZpbHRlclRva2VuW11cblx0XHRcdHwgdW5kZWZpbmVkO1xuXHR9XG5cblx0c3RhdGljIHJlbmRlcihybTogUmVuZGVyTWFuYWdlciwgY29udHJvbDogRWFzeUZpbHRlckJhckNvbnRhaW5lcik6IHZvaWQge1xuXHRcdHJldHVybiBqc3gucmVuZGVyVXNpbmdSZW5kZXJNYW5hZ2VyKHJtLCBjb250cm9sLCAoKSA9PiB7XG5cdFx0XHRyZXR1cm4gPHNwYW4gcmVmPXtjb250cm9sfT57Y29udHJvbC5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIil9PC9zcGFuPjtcblx0XHR9KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2Q0E7RUFDQTtFQUdBO0VBbUNBO0FBQ0E7QUFDQTtBQUNBO0VBSEEsSUFLcUJBLHNCQUFzQixJQUFBQyxJQUFBLEdBRDFDQyxjQUFjLENBQUMsbURBQW1ELENBQUMsRUFBQUMsS0FBQSxHQUVsRUMsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBRzVCRixRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHNUJILFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUcsS0FBQSxHQUc1QkosUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFRLENBQUMsQ0FBQyxFQUFBSSxLQUFBLEdBRzNCTCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVEsQ0FBQyxDQUFDLEVBQUFLLEtBQUEsR0FHM0JDLGVBQWUsQ0FBQyxDQUFDLEVBQUFDLEtBQUEsR0FHakJELGVBQWUsQ0FBQyxDQUFDLEVBQUFFLEtBQUEsR0FHakJDLFdBQVcsQ0FBQztJQUFFVCxJQUFJLEVBQUU7RUFBc0IsQ0FBQyxDQUFDLEVBQUFVLE1BQUEsR0FHNUNDLEtBQUssQ0FBQyxDQUFDLEVBQUFDLE1BQUEsR0FHUEQsS0FBSyxDQUFDLENBQUMsRUFBQUUsTUFBQSxHQUdQRixLQUFLLENBQUMsQ0FBQyxFQUFBRyxNQUFBLEdBUVBILEtBQUssQ0FBQyxDQUFDLEVBQUFJLE1BQUEsR0FLUEosS0FBSyxDQUFDLENBQUMsRUFBQUssTUFBQSxHQUdQTCxLQUFLLENBQUMsQ0FBQyxFQUFBTSxNQUFBLEdBR1BOLEtBQUssQ0FBQyxDQUFDLEVBQUFPLE1BQUEsR0FLUEMsV0FBVyxDQUFDLENBQUMsRUFBQXZCLElBQUEsQ0FBQXdCLE1BQUEsSUFBQUMsT0FBQSwwQkFBQUMsUUFBQTtJQUFBQyxjQUFBLENBQUE1QixzQkFBQSxFQUFBMkIsUUFBQTtJQWJkO0lBQ0E7O0lBbUNBOztJQU9BLFNBQUEzQix1QkFBWTZCLFVBQThFLEVBQUVDLE1BQXlCLEVBQUU7TUFBQSxJQUFBQyxLQUFBO01BQ3RIQSxLQUFBLEdBQUFKLFFBQUEsQ0FBQUssSUFBQSxPQUFNSCxVQUFVLEVBQVlDLE1BQU0sQ0FBQztNQUFDRywwQkFBQSxDQUFBRixLQUFBLGlCQUFBRyxXQUFBLEVBQUFDLHNCQUFBLENBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxXQUFBSyxZQUFBLEVBQUFELHNCQUFBLENBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxtQkFBQU0sWUFBQSxFQUFBRixzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsdUJBQUFPLFlBQUEsRUFBQUgsc0JBQUEsQ0FBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLHVCQUFBUSxZQUFBLEVBQUFKLHNCQUFBLENBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxxQkFBQVMsWUFBQSxFQUFBTCxzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsZUFBQVUsWUFBQSxFQUFBTixzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsYUFBQVcsWUFBQSxFQUFBUCxzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsbUJBQUFZLFlBQUEsRUFBQVIsc0JBQUEsQ0FBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLGtCQUFBYSxhQUFBLEVBQUFULHNCQUFBLENBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSxtQkFBQWMsYUFBQSxFQUFBVixzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsa0JBQUFlLGFBQUEsRUFBQVgsc0JBQUEsQ0FBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLG1CQUFBZ0IsYUFBQSxFQUFBWixzQkFBQSxDQUFBSixLQUFBO01BQUFFLDBCQUFBLENBQUFGLEtBQUEsMkJBQUFpQixhQUFBLEVBQUFiLHNCQUFBLENBQUFKLEtBQUE7TUFBQUUsMEJBQUEsQ0FBQUYsS0FBQSwwQkFBQWtCLGFBQUEsRUFBQWQsc0JBQUEsQ0FBQUosS0FBQTtNQUFBRSwwQkFBQSxDQUFBRixLQUFBLFdBQUFtQixhQUFBLEVBQUFmLHNCQUFBLENBQUFKLEtBQUE7TUFBQUEsS0FBQSxDQVY3Qm9CLGVBQWUsR0FBNEIsQ0FBQyxDQUFDO01BQUFwQixLQUFBLENBSzdDcUIsMkJBQTJCLEdBQUcsSUFBSTtNQU16Q3JCLEtBQUEsQ0FBS3NCLFVBQVUsQ0FBQyxDQUFDO01BQUMsT0FBQXRCLEtBQUE7SUFDbkI7SUFBQ3VCLFFBQUEsR0FBQXRELHNCQUFBO0lBQUEsSUFBQXVELE1BQUEsR0FBQXZELHNCQUFBLENBQUF3RCxTQUFBO0lBQUFELE1BQUEsQ0FFREUsZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFpQkMsYUFBcUIsRUFBUTtNQUM3QyxJQUFJLENBQUNDLFdBQVcsQ0FBQyxlQUFlLEVBQUVELGFBQWEsQ0FBQztNQUNoRCxJQUFJLElBQUksQ0FBQ0EsYUFBYSxFQUFFO1FBQ3ZCLElBQUksQ0FBQ0UsVUFBVSxHQUFHQyxtQkFBQSxDQUFPLElBQUksQ0FBQ0gsYUFBYSxDQUFDO01BQzdDO0lBQ0QsQ0FBQztJQUFBSCxNQUFBLENBRURGLFVBQVUsR0FBVixTQUFBQSxXQUFBLEVBQW1CO01BQ2xCLElBQUksQ0FBQ1MsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO01BQ2xFLElBQUksQ0FBQ0MsT0FBTyxHQUFHLElBQUksQ0FBQ0MsYUFBYSxDQUFDLENBQUM7TUFDbkMsSUFBSSxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJLENBQUNDLDZCQUE2QixDQUFDLENBQUM7TUFDL0QsSUFBSSxDQUFDQyxZQUFZLENBQUMsSUFBSSxDQUFDRixtQkFBbUIsQ0FBQztNQUMzQztNQUNBLE1BQU1HLE1BQU0sR0FBRyxJQUFJLENBQUNDLGdCQUFnQixDQUFDLElBQUksQ0FBQztNQUMxQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0YsTUFBTSxHQUFHQSxNQUFNO01BQzFCLElBQUksQ0FBQ0UsS0FBSyxDQUFDQyxVQUFVLEdBQUdILE1BQU0sQ0FBQ0ksTUFBTSxHQUFHLENBQUM7TUFDekM7TUFDQSxJQUFJLENBQUNDLHdCQUF3QixHQUFHLElBQUk7TUFDcEM7TUFDQSxJQUFJLENBQUN2QiwyQkFBMkIsR0FBRyxLQUFLO0lBQ3pDLENBQUM7SUFBQUcsTUFBQSxDQUVEZ0IsZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFpQkssd0JBQWlDLEVBQXFCO01BQUEsSUFBQUMscUJBQUE7TUFDdEUsTUFBTVAsTUFBeUIsR0FBRyxFQUFFO01BQ3BDLENBQUFPLHFCQUFBLE9BQUksQ0FBQ0MsaUJBQWlCLGNBQUFELHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0JFLE9BQU8sQ0FBRUMsSUFBSSxJQUFLO1FBQ3pDLElBQUlBLElBQUksQ0FBQ0MsUUFBUSxLQUFLLElBQUksRUFBRTtVQUMzQixJQUFJLENBQUM5QixlQUFlLENBQUM2QixJQUFJLENBQUNFLElBQUksQ0FBQyxHQUFHLElBQUk7VUFDdEM7VUFDQVosTUFBTSxDQUFDYSxJQUFJLENBQUM7WUFDWEMsR0FBRyxFQUFFSixJQUFJLENBQUNFLElBQUk7WUFDZEcsS0FBSyxFQUFFTCxJQUFJLENBQUNLLEtBQUs7WUFDakJDLHlCQUF5QixFQUFFVix3QkFBd0IsSUFBSUksSUFBSSxDQUFDTyxZQUFZLEdBQUdQLElBQUksQ0FBQ08sWUFBWSxHQUFHLEVBQUU7WUFDakdsRixJQUFJLEVBQUUyRSxJQUFJLENBQUMzRTtVQUNaLENBQUMsQ0FBQztRQUNIO01BQ0QsQ0FBQyxDQUFDO01BQ0YsT0FBT2lFLE1BQU07SUFDZCxDQUFDO0lBQUFmLE1BQUEsQ0FFRGlDLGNBQWMsR0FBZCxTQUFBQSxlQUFlQyxDQUErQyxFQUFRO01BQ3JFLElBQUksQ0FBQ0MsU0FBUyxDQUFDRCxDQUFDLENBQUNFLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDL0M7O0lBRUE7SUFDQTtJQUFBO0lBQUFwQyxNQUFBLENBQ09xQywrQkFBK0IsR0FBdEMsU0FBQUEsZ0NBQUEsRUFBa0Q7TUFDakQsTUFBTUMsYUFBYSxHQUFHLElBQUksQ0FBQ0MscUNBQXFDLENBQUMsQ0FBQztNQUNsRSxJQUFJRCxhQUFhLENBQUNuQixNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQy9CLE1BQU1KLE1BQU0sR0FBRyxJQUFJLENBQUN5Qix3QkFBd0IsQ0FBQ0YsYUFBYSxDQUFDO1FBQzNEdkIsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVTLE9BQU8sQ0FBRWlCLEtBQUssSUFBSztVQUMxQkEsS0FBSyxDQUFDckMsV0FBVyxDQUFDLFlBQVksRUFBRXNDLFVBQVUsQ0FBQ0MsS0FBSyxDQUFDO1VBQ2pERixLQUFLLENBQUNyQyxXQUFXLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDRyxjQUFjLENBQUNxQyxPQUFPLENBQUMscUNBQXFDLENBQUMsQ0FBQztVQUN2R0gsS0FBSyxDQUFDSSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQztRQUNGLE9BQU8sS0FBSztNQUNiO01BQ0EsT0FBTyxJQUFJO0lBQ1osQ0FBQztJQUFBN0MsTUFBQSxDQUVNOEMsbUNBQW1DLEdBQTFDLFNBQUFBLG9DQUFBLEVBQW1EO01BQUEsSUFBQUMscUJBQUE7TUFDbEQsTUFBTUMsVUFBVSxJQUFBRCxxQkFBQSxHQUFHLElBQUksQ0FBQ0UsU0FBUyxDQUFDQyxPQUFPLGNBQUFILHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0JJLFNBQVMsQ0FBQyxDQUFzQjtNQUMzRUgsVUFBVSxDQUFDeEIsT0FBTyxDQUFFaUIsS0FBSyxJQUFLQSxLQUFLLENBQUNXLHNCQUFzQixDQUFDLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQUFwRCxNQUFBLENBRUttQyxTQUFTLEdBQWYsZUFBQUEsVUFBZ0JrQixVQUE4QixFQUFtQztNQUFBLElBQUFDLHFCQUFBO01BQUEsSUFBakNDLFFBQVEsR0FBQUMsU0FBQSxDQUFBckMsTUFBQSxRQUFBcUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO01BQy9ELElBQUksQ0FBQ0gsVUFBVSxFQUFFO1FBQ2hCLElBQUksQ0FBQ0ssVUFBVSxDQUFDLENBQUM7UUFDakIsSUFBSSxDQUFDekMsS0FBSyxDQUFDMEMsU0FBUyxHQUFHSixRQUFRO1FBQy9CO01BQ0Q7TUFDQSxJQUFJLENBQUN0QyxLQUFLLENBQUMyQyxpQkFBaUIsR0FBRyxJQUFJO01BQ25DLENBQUFOLHFCQUFBLE9BQUksQ0FBQ08sZUFBZSxDQUFDWCxPQUFPLGNBQUFJLHFCQUFBLHVCQUE1QkEscUJBQUEsQ0FBOEJRLFdBQVcsQ0FBQyxJQUFJLENBQUM7O01BRS9DO01BQ0EsTUFBTXpELFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQ0EsVUFBVTtNQUN4QyxJQUFJLENBQUNBLFVBQVUsRUFBRTtRQUNoQjtNQUNEO01BQ0EsSUFBSSxDQUFDMEQsU0FBUyxDQUFDLHVCQUF1QixDQUFDO01BRXZDLE1BQU1DLGtCQUFzQyxHQUFHO1FBQzlDQyxPQUFPLEVBQUUsQ0FBQztRQUNWQyxTQUFTLEVBQUUsSUFBSSxDQUFDQyxXQUFXO1FBQzNCQyxNQUFNLEVBQUUsSUFBSSxDQUFDN0M7TUFDZCxDQUFDO01BRUQsTUFBTThDLGdCQUFnQixHQUFHLE1BQU1oRSxVQUFVLENBQUNpRSxVQUFVLENBQUNqQixVQUFVLEVBQUVXLGtCQUFrQixDQUFDO01BRXBGLElBQUlLLGdCQUFnQixDQUFDRSxPQUFPLEVBQUU7UUFBQSxJQUFBQyxzQkFBQTtRQUM3QixDQUFBQSxzQkFBQSxPQUFJLENBQUNYLGVBQWUsQ0FBQ1gsT0FBTyxjQUFBc0Isc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QkMsY0FBYyxDQUFDcEIsVUFBVSxDQUFDO1FBQ3hELElBQUlnQixnQkFBZ0IsQ0FBQzVDLElBQUksQ0FBQ3dDLE9BQU8sS0FBSyxDQUFDLEVBQUU7VUFDeEMsSUFBSSxDQUFDUyxlQUFlLENBQUNMLGdCQUFnQixFQUFFZCxRQUFRLENBQUM7UUFDakQsQ0FBQyxNQUFNLElBQUljLGdCQUFnQixDQUFDNUMsSUFBSSxDQUFDd0MsT0FBTyxLQUFLLENBQUMsRUFBRTtVQUMvQztRQUFBO01BRUYsQ0FBQyxNQUFNO1FBQUEsSUFBQVUsc0JBQUE7UUFDTjtRQUNBLENBQUFBLHNCQUFBLE9BQUksQ0FBQ2QsZUFBZSxDQUFDWCxPQUFPLGNBQUF5QixzQkFBQSx1QkFBNUJBLHNCQUFBLENBQThCQyxZQUFZLENBQUNQLGdCQUFnQixDQUFDUSxPQUFPLENBQUM7UUFDcEVDLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLDBDQUEwQyxFQUFFVixnQkFBZ0IsQ0FBQ1EsT0FBTyxDQUFDO01BQ2hGO01BRUEsSUFBSSxDQUFDZCxTQUFTLENBQUMsc0JBQXNCLENBQUM7SUFDdkM7O0lBRUE7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BTEM7SUFBQS9ELE1BQUEsQ0FNUTBFLGVBQWUsR0FBdkIsU0FBQUEsZ0JBQXdCTCxnQkFBc0QsRUFBRVYsU0FBa0IsRUFBUTtNQUN6RyxJQUFJVSxnQkFBZ0IsQ0FBQzVDLElBQUksQ0FBQ3VELE9BQU8sRUFBRTtRQUFBLElBQUFDLHNCQUFBO1FBQ2xDLENBQUFBLHNCQUFBLE9BQUksQ0FBQ3BCLGVBQWUsQ0FBQ1gsT0FBTyxjQUFBK0Isc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QkwsWUFBWSxDQUN6QyxJQUFJLENBQUNyRSxjQUFjLENBQUNxQyxPQUFPLENBQUMsNkJBQTZCLEVBQUUsQ0FBQ3lCLGdCQUFnQixDQUFDNUMsSUFBSSxDQUFDdUQsT0FBTyxDQUFDLENBQzNGLENBQUM7TUFDRjtNQUNBLElBQUlYLGdCQUFnQixDQUFDNUMsSUFBSSxDQUFDeUQsTUFBTSxFQUFFO1FBQ2pDO1FBQ0FKLEdBQUcsQ0FBQ0ssS0FBSyxDQUFDLDZCQUE2QixFQUFFQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ2hCLGdCQUFnQixDQUFDNUMsSUFBSSxDQUFDeUQsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQzs7UUFFL0Y7UUFDQSxNQUFNbkUsTUFBeUIsR0FBRyxJQUFJLENBQUNDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM5RHNFLGVBQWUsQ0FBQ0MsVUFBVSxDQUFDeEUsTUFBTSxFQUFFc0QsZ0JBQWdCLENBQUM1QyxJQUFJLENBQUN5RCxNQUFNLEVBQUUsSUFBSSxDQUFDM0QsaUJBQWlCLENBQUM7UUFFeEYsSUFBSSxDQUFDTixLQUFLLENBQUNDLFVBQVUsR0FBRyxJQUFJO1FBQzVCLElBQUksQ0FBQ0QsS0FBSyxDQUFDMEMsU0FBUyxHQUFHQSxTQUFTO1FBQ2hDLElBQUksQ0FBQzFDLEtBQUssQ0FBQ0YsTUFBTSxHQUFHQSxNQUFNO01BQzNCO0lBQ0QsQ0FBQztJQUFBZixNQUFBLENBRURhLDZCQUE2QixHQUE3QixTQUFBQSw4QkFBQSxFQUF5QztNQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDRCxtQkFBbUIsRUFBRTtRQUM5QixJQUFJLENBQUNBLG1CQUFtQixHQUN2QjRFLElBQUEsQ0FBQ0MsT0FBTztVQUFDQyxFQUFFLEVBQUUsSUFBSSxDQUFDQyxLQUFLLENBQUMsQ0FBQyxHQUFHLGVBQWdCO1VBQUNDLFNBQVMsRUFBRSxLQUFNO1VBQUNDLFVBQVUsRUFBRSxJQUFLO1VBQUNDLFNBQVMsRUFBRUMsYUFBYSxDQUFDQyxNQUFPO1VBQUFDLFFBQUEsRUFDL0c7WUFDQUMsTUFBTSxFQUFFLElBQUksQ0FBQ0MsVUFBVSxDQUFDO1VBQ3pCO1FBQUMsQ0FDTyxDQUNUO01BQ0Y7TUFDQSxPQUFPLElBQUksQ0FBQ3ZGLG1CQUFtQjtJQUNoQyxDQUFDO0lBQUFaLE1BQUEsQ0FFRG1HLFVBQVUsR0FBVixTQUFBQSxXQUFBLEVBQTBDO01BQ3pDLElBQUksQ0FBQyxJQUFJLENBQUNDLE9BQU8sRUFBRTtRQUNsQixNQUFNQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQztRQUNuQyxNQUFNQyxhQUFhLEdBQUcsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQ0osT0FBTyxHQUNYWixJQUFBLENBQUNpQixlQUFlO1VBQUFSLFFBQUEsRUFDZDtZQUNBdkYsT0FBTyxFQUNOZ0csS0FBQSxDQUFBQyxTQUFBO2NBQUFWLFFBQUEsR0FDQ1QsSUFBQSxDQUFDb0IsYUFBYSxJQUFFLENBQUMsRUFDaEJQLFFBQVEsRUFDUkUsYUFBYTtZQUFBLENBQ2I7VUFFSjtRQUFDLENBQ2UsQ0FDakI7TUFDRjtNQUNBLE9BQU8sSUFBSSxDQUFDSCxPQUFPO0lBQ3BCLENBQUM7SUFBQXBHLE1BQUEsQ0FFRHNHLFdBQVcsR0FBWCxTQUFBQSxZQUFBLEVBQWtDO01BQ2pDLElBQUksQ0FBQyxJQUFJLENBQUNELFFBQVEsRUFBRTtRQUNuQixJQUFJLENBQUNBLFFBQVEsR0FBR2IsSUFBQSxDQUFDcUIsTUFBTTtVQUFDQyxJQUFJLEVBQUUsSUFBSSxDQUFDdkcsY0FBYyxDQUFDcUMsT0FBTyxDQUFDLDBCQUEwQixDQUFFO1VBQUM5RixJQUFJLEVBQUVpSyxVQUFVLENBQUNDO1FBQVcsQ0FBRSxDQUFDO01BQ3ZIO01BQ0EsT0FBTyxJQUFJLENBQUNYLFFBQVE7SUFDckIsQ0FBQztJQUFBckcsTUFBQSxDQUVEd0csZ0JBQWdCLEdBQWhCLFNBQUFBLGlCQUFBLEVBQXVDO01BQ3RDLElBQUksQ0FBQyxJQUFJLENBQUNELGFBQWEsRUFBRTtRQUN4QixJQUFJLENBQUNBLGFBQWEsR0FBR2YsSUFBQSxDQUFDcUIsTUFBTTtVQUFDQyxJQUFJLEVBQUUsSUFBSSxDQUFDdkcsY0FBYyxDQUFDcUMsT0FBTyxDQUFDLHNDQUFzQztRQUFFLENBQUUsQ0FBQztNQUMzRztNQUNBLE9BQU8sSUFBSSxDQUFDMkQsYUFBYTtJQUMxQixDQUFDO0lBQUF2RyxNQUFBLENBRURpSCxhQUFhLEdBQWIsU0FBQUEsY0FBQSxFQUFpRDtNQUFBLElBQW5DQyxZQUFzQixHQUFBMUQsU0FBQSxDQUFBckMsTUFBQSxRQUFBcUMsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO01BQ3hDLElBQUkwRCxZQUFZLENBQUNDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtRQUNwQyxJQUFJLElBQUksQ0FBQ3RILDJCQUEyQixFQUFFO1VBQ3JDLElBQUksQ0FBQ2tFLFNBQVMsQ0FBQyxlQUFlLEVBQUU7WUFDL0JoRCxNQUFNLEVBQUUsSUFBSSxDQUFDRSxLQUFLLENBQUNGLE1BQU0sQ0FBQ3FHLEdBQUcsQ0FBRTNGLElBQUksSUFBSzRGLFNBQVMsQ0FBQzVGLElBQUksQ0FBQyxDQUFDO1lBQ3hENkYsZUFBZSxFQUFFLElBQUksQ0FBQ3JHLEtBQUssQ0FBQzBDLFNBQVMsQ0FBQzRELE9BQU8sQ0FBQztVQUMvQyxDQUFDLENBQUM7UUFDSDtRQUNBLElBQUksQ0FBQ3RHLEtBQUssQ0FBQ0MsVUFBVSxHQUFHLElBQUksQ0FBQ0QsS0FBSyxDQUFDRixNQUFNLENBQUNJLE1BQU0sR0FBRyxDQUFDO1FBQ3BELElBQUksRUFBRSxJQUFJLENBQUNDLHdCQUF3QixJQUFJLEtBQUssQ0FBQyxFQUFFO1VBQzlDLElBQUksQ0FBQ2lCLCtCQUErQixDQUFDLENBQUM7UUFDdkM7TUFDRDtNQUNBO01BQ0EsSUFBSSxDQUFDakIsd0JBQXdCLEdBQUcsS0FBSztNQUNyQyxJQUFJLENBQUN2QiwyQkFBMkIsR0FBRyxJQUFJO0lBQ3hDLENBQUM7SUFBQUcsTUFBQSxDQUVEVyxhQUFhLEdBQWIsU0FBQUEsY0FBQSxFQUFzQjtNQUNyQixNQUFNNkcsU0FBUyxHQUFHQyxlQUFlLENBQVMsQ0FBQztNQUMzQyxNQUFNQyxTQUFTLEdBQUdELGVBQWUsQ0FBUyxDQUFDO01BQzNDLE1BQU1FLE9BQU8sR0FDWmpCLEtBQUEsQ0FBQ2tCLElBQUk7UUFBQTNCLFFBQUEsR0FDSlMsS0FBQSxDQUFDbUIsT0FBTztVQUFDQyxVQUFVLEVBQUMsTUFBTTtVQUFBN0IsUUFBQSxHQUN6QlQsSUFBQSxDQUFDdUMsZUFBZTtZQUNmQyxpQkFBaUIsRUFBRSxJQUFJLENBQUNBLGlCQUFrQjtZQUMxQ0MsR0FBRyxFQUFFLElBQUksQ0FBQ3BFLGVBQWdCO1lBQzFCcUUsS0FBSyxFQUFFLElBQUksQ0FBQ0EsS0FBTTtZQUNsQkMsWUFBWSxFQUFFLElBQUksQ0FBQ2xHLGNBQWMsQ0FBQ21HLElBQUksQ0FBQyxJQUFJLENBQUU7WUFDN0NDLFlBQVksRUFBR25HLENBQUMsSUFBVztjQUMxQixJQUFJLENBQUM2QixTQUFTLENBQUMsY0FBYyxFQUFFO2dCQUFFdUUsS0FBSyxFQUFFcEcsQ0FBQyxDQUFDRSxZQUFZLENBQUMsT0FBTztjQUFFLENBQUMsQ0FBQztZQUNuRSxDQUFFO1lBQ0ZtRyxVQUFVLEVBQUVBLENBQUEsS0FBWTtjQUN2QixJQUFJLENBQUN0SCxLQUFLLENBQUMyQyxpQkFBaUIsR0FBRyxLQUFLO1lBQ3JDO1VBQUUsQ0FDRixDQUFDLEVBRUY0QixJQUFBLENBQUNxQixNQUFNO1lBQ04yQixJQUFJLEVBQUUsZUFBZ0I7WUFDdEJDLEtBQUssRUFBRSx1QkFBd0I7WUFDL0JSLEdBQUcsRUFBRVQsU0FBVTtZQUNma0IsT0FBTyxFQUFFQyxHQUFHLENBQUNDLFNBQVMsQ0FBQyxJQUFJLENBQUMzSCxLQUFLLENBQUNDLFVBQVUsQ0FBQyxDQUFFO1lBQy9DNEYsSUFBSSxFQUFFLElBQUksQ0FBQ3ZHLGNBQWMsQ0FBQ3FDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBRTtZQUN0RDlGLElBQUksRUFBRWlLLFVBQVUsQ0FBQ0MsVUFBVztZQUM1QjZCLEtBQUssRUFBRSxJQUFJLENBQUNDLGVBQWUsQ0FBQ1YsSUFBSSxDQUFDLElBQUk7VUFBRSxDQUN2QyxDQUFDO1FBQUEsQ0FDTSxDQUFDLEVBQ1YxQixLQUFBLENBQUNtQixPQUFPO1VBQ1BDLFVBQVUsRUFBQyxNQUFNO1VBQ2pCWSxPQUFPLEVBQUUsSUFBSSxDQUFDekgsS0FBSyxDQUFDQyxVQUFXO1VBQy9CNkgsVUFBVSxFQUFFQyxjQUFjLENBQUNDLE1BQU87VUFDbENDLElBQUksRUFBRUMsUUFBUSxDQUFDQyxJQUFLO1VBQ3BCQyxjQUFjLEVBQUVDLGtCQUFrQixDQUFDQyxZQUFhO1VBQ2hEZCxLQUFLLEVBQUUsb0JBQXFCO1VBQUF4QyxRQUFBLEdBRTVCUyxLQUFBLENBQUNtQixPQUFPO1lBQUNZLEtBQUssRUFBRSxxQkFBc0I7WUFBQ1gsVUFBVSxFQUFDLE1BQU07WUFBQ2lCLFVBQVUsRUFBRUMsY0FBYyxDQUFDQyxNQUFPO1lBQUNDLElBQUksRUFBRUMsUUFBUSxDQUFDQyxJQUFLO1lBQUFuRCxRQUFBLEdBQy9HVCxJQUFBLENBQUNnRSxRQUFRO2NBQUNqSixjQUFjLEVBQUUsSUFBSSxDQUFDQTtZQUFlLENBQUUsQ0FBQyxFQUNqRGlGLElBQUEsQ0FBQ2lFLFNBQVM7Y0FDVEMsUUFBUSxFQUFFQyxHQUFHLENBQUNmLFNBQVMsQ0FBQyxJQUFJLENBQUMzSCxLQUFLLENBQUMyQyxpQkFBaUIsQ0FBQyxFQUFFLElBQUksQ0FBRTtjQUM3RDZFLEtBQUssRUFBRSx3QkFBeUI7Y0FDaEMxSCxNQUFNLEVBQUU2SCxTQUFTLENBQUMsSUFBSSxDQUFDM0gsS0FBSyxDQUFDRixNQUFNLENBQUU7Y0FDckNrSCxHQUFHLEVBQUUsSUFBSSxDQUFDaEYsU0FBVTtjQUFBZ0QsUUFBQSxFQUVuQjtnQkFDQWxGLE1BQU0sRUFBRUEsQ0FBQzZJLEdBQVcsRUFBRUMsR0FBWSxLQUFZO2tCQUFBLElBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO2tCQUM3QyxNQUFNQyxNQUFNLEdBQUdILEdBQUcsQ0FBQ0ksU0FBUyxDQUFDLENBQW9CO2tCQUNqRCxPQUNDekUsSUFBQSxDQUFDMEUsS0FBSztvQkFFTHBJLEtBQUssRUFBRSxJQUFJLENBQUNiLEtBQUssQ0FBQ0YsTUFBTSxDQUFDZSxLQUFNO29CQUMvQnFJLEtBQUssRUFBRSxJQUFJLENBQUNsSixLQUFLLENBQUNGLE1BQU0sQ0FBQ2dCLHlCQUEwQjtvQkFDbkRxSSxTQUFTLEVBQUUsSUFBSSxDQUFDQyxjQUFjLENBQUNMLE1BQU0sQ0FBQ25JLEdBQUcsQ0FBRTtvQkFDM0N5SSxNQUFNLEVBQUVBLENBQUEsS0FBWTtzQkFBQSxJQUFBQyxzQkFBQTtzQkFDbkIsTUFBTUMsVUFBVSxHQUFHLElBQUksQ0FBQ3ZKLEtBQUssQ0FBQ0YsTUFBTSxDQUFDMEosU0FBUyxDQUFFaEksS0FBSyxJQUFLQSxLQUFLLENBQUNaLEdBQUcsS0FBS21JLE1BQU0sQ0FBQ25JLEdBQUcsQ0FBQztzQkFDbkYsTUFBTTZJLFNBQVMsR0FBRyxJQUFJLENBQUN6SixLQUFLLENBQUNGLE1BQU0sQ0FBQzRKLE1BQU0sQ0FBQyxDQUFDO3NCQUM1Q0QsU0FBUyxDQUFDRSxNQUFNLENBQUNKLFVBQVUsRUFBRSxDQUFDLENBQUM7c0JBQy9CLElBQUksQ0FBQ3ZKLEtBQUssQ0FBQzBDLFNBQVMsR0FBRyxLQUFLO3NCQUM1QixJQUFJLENBQUMxQyxLQUFLLENBQUNGLE1BQU0sR0FBRzJKLFNBQVM7c0JBQzdCLENBQUFILHNCQUFBLE9BQUksQ0FBQzFHLGVBQWUsQ0FBQ1gsT0FBTyxjQUFBcUgsc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QnpHLFdBQVcsQ0FBQyxLQUFLLENBQUM7b0JBQ2pELENBQUU7b0JBQUFtQyxRQUFBLEVBRUQ7c0JBQ0E0RSxVQUFVLEVBQUUsQ0FDWHJGLElBQUEsQ0FBQ3NGLFVBQVU7d0JBQWlCQyxLQUFLLEVBQUVmO3NCQUFPLEdBQTFCLFdBQTRCLENBQUMsRUFDN0N4RSxJQUFBLENBQUNzRixVQUFVO3dCQUFlQyxLQUFLLEVBQUUsSUFBSSxDQUFDbks7c0JBQW9CLEdBQTFDLFNBQTRDLENBQUMsRUFDN0Q0RSxJQUFBLENBQUNzRixVQUFVO3dCQUE4QkMsS0FBSyxFQUFFO3NCQUFLLEdBQXJDLHdCQUF1QyxDQUFDLEVBQ3hEdkYsSUFBQSxDQUFDc0YsVUFBVTt3QkFFVkMsS0FBSyxHQUFBakIsc0JBQUEsR0FBRSxJQUFJLENBQUN2SSxpQkFBaUIsY0FBQXVJLHNCQUFBLHdCQUFBQyxzQkFBQSxHQUF0QkQsc0JBQUEsQ0FBd0JrQixJQUFJLENBQUV2SixJQUFJLElBQUtBLElBQUksQ0FBQ0UsSUFBSSxLQUFLcUksTUFBTSxDQUFDbkksR0FBRyxDQUFDLGNBQUFrSSxzQkFBQSx1QkFBaEVBLHNCQUFBLENBQWtFa0I7c0JBQVMsR0FEOUUsVUFFSixDQUFDO29CQUVKO2tCQUFDLEdBdkJJLElBQUksQ0FBQ2hLLEtBQUssQ0FBQ0YsTUFBTSxDQUFDYyxHQXdCakIsQ0FBQztnQkFFVjtjQUNEO1lBQUMsQ0FDUyxDQUFDLEVBQ1oyRCxJQUFBLENBQUNxQixNQUFNO2NBQ05DLElBQUksRUFBRSxJQUFJLENBQUN2RyxjQUFjLENBQUNxQyxPQUFPLENBQUMscUJBQXFCLENBQUU7Y0FDekQ5RixJQUFJLEVBQUVpSyxVQUFVLENBQUNtRSxXQUFZO2NBQzdCckMsS0FBSyxFQUFFQSxDQUFBLEtBQVk7Z0JBQUEsSUFBQXNDLHNCQUFBO2dCQUNsQixJQUFJLENBQUN6SCxVQUFVLENBQUMsQ0FBQztnQkFDakIsSUFBSSxDQUFDekMsS0FBSyxDQUFDMEMsU0FBUyxHQUFHLEtBQUs7Z0JBQzVCO2dCQUNBLENBQUF3SCxzQkFBQSxPQUFJLENBQUN0SCxlQUFlLENBQUNYLE9BQU8sY0FBQWlJLHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJDLEtBQUssQ0FBQyxDQUFDO2NBQ3RDO1lBQUUsQ0FDRixDQUFDO1VBQUEsQ0FDTSxDQUFDLEVBQ1Y1RixJQUFBLENBQUNxQyxPQUFPO1lBQUNDLFVBQVUsRUFBQyxNQUFNO1lBQUNpQixVQUFVLEVBQUVDLGNBQWMsQ0FBQ0MsTUFBTztZQUFBaEQsUUFBQSxFQUM1RFQsSUFBQSxDQUFDcUIsTUFBTTtjQUNOMkIsSUFBSSxFQUFFLGVBQWdCO2NBQ3RCRSxPQUFPLEVBQUUsSUFBSSxDQUFDekgsS0FBSyxDQUFDQyxVQUFXO2NBQy9CNEYsSUFBSSxFQUFFLElBQUksQ0FBQ3ZHLGNBQWMsQ0FBQ3FDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBRTtjQUN0RDlGLElBQUksRUFBRWlLLFVBQVUsQ0FBQ0MsVUFBVztjQUM1QmlCLEdBQUcsRUFBRVAsU0FBVTtjQUNmbUIsS0FBSyxFQUFFLElBQUksQ0FBQ0MsZUFBZSxDQUFDVixJQUFJLENBQUMsSUFBSTtZQUFFLENBQ3ZDO1VBQUMsQ0FDTSxDQUFDO1FBQUEsQ0FDRixDQUFDO01BQUEsQ0FDTCxDQUNFO01BQ1RpRCxVQUFVLENBQUNDLG1CQUFtQixDQUFDOUQsU0FBUyxDQUFDdEUsT0FBTyxFQUFHLE9BQU8sRUFBRSxjQUFjLENBQUM7TUFDM0VtSSxVQUFVLENBQUNDLG1CQUFtQixDQUFDNUQsU0FBUyxDQUFDeEUsT0FBTyxFQUFHLE9BQU8sRUFBRSxjQUFjLENBQUM7TUFDM0UsT0FBT3lFLE9BQU87SUFDZixDQUFDO0lBQUEzSCxNQUFBLENBRUs4SSxlQUFlLEdBQXJCLGVBQUFBLGdCQUFBLEVBQXVDO01BQUEsSUFBQXlDLHNCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO01BQ3RDLE1BQU1DLGFBQWEsSUFBQUgsc0JBQUEsR0FBRyxJQUFJLENBQUMxSCxlQUFlLENBQUNYLE9BQU8sY0FBQXFJLHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJJLFdBQVcsQ0FBQyxDQUFDO01BQ2pFLElBQUksQ0FBQzFLLEtBQUssQ0FBQzJDLGlCQUFpQixHQUFHLElBQUk7TUFDbkMsQ0FBQTRILHNCQUFBLE9BQUksQ0FBQzNILGVBQWUsQ0FBQ1gsT0FBTyxjQUFBc0ksc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QjFILFdBQVcsQ0FBQyxJQUFJLENBQUM7TUFDL0MsSUFBSSxFQUFFNEgsYUFBYSxJQUFJLEtBQUssQ0FBQyxFQUFFO1FBQzlCLElBQUksQ0FBQzNILFNBQVMsQ0FBQyxlQUFlLENBQUM7UUFDL0I7TUFDRDtNQUNBLE1BQU0sSUFBSSxDQUFDNUIsU0FBUyxFQUFBc0osc0JBQUEsR0FBQyxJQUFJLENBQUM1SCxlQUFlLENBQUNYLE9BQU8sY0FBQXVJLHNCQUFBLHVCQUE1QkEsc0JBQUEsQ0FBOEJHLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQ3JFLENBQUM7SUFBQTVMLE1BQUEsQ0FFRDBELFVBQVUsR0FBVixTQUFBQSxXQUFBLEVBQW1CO01BQUEsSUFBQW1JLHVCQUFBLEVBQUFDLHVCQUFBLEVBQUFDLHNCQUFBLEVBQUFDLHNCQUFBO01BQ2xCLElBQUksQ0FBQ2pJLFNBQVMsQ0FBQyxjQUFjLENBQUM7TUFDOUIsSUFBSSxDQUFDOUMsS0FBSyxDQUFDRixNQUFNLEdBQUcsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFDL0MsQ0FBQTZLLHVCQUFBLE9BQUksQ0FBQ2hJLGVBQWUsQ0FBQ1gsT0FBTyxjQUFBMkksdUJBQUEsdUJBQTVCQSx1QkFBQSxDQUE4QkksUUFBUSxDQUFDLEVBQUUsQ0FBQztNQUMxQyxJQUFJLENBQUNoTCxLQUFLLENBQUMyQyxpQkFBaUIsR0FBRyxJQUFJO01BQ25DLENBQUFrSSx1QkFBQSxPQUFJLENBQUNqSSxlQUFlLENBQUNYLE9BQU8sY0FBQTRJLHVCQUFBLHVCQUE1QkEsdUJBQUEsQ0FBOEJoSSxXQUFXLENBQUMsSUFBSSxDQUFDO01BQy9DLElBQUksQ0FBQzdDLEtBQUssQ0FBQzBDLFNBQVMsR0FBRyxLQUFLO01BQzVCLElBQUksQ0FBQ3ZDLHdCQUF3QixHQUFHLElBQUk7TUFDcEM7TUFDQSxDQUFBMkssc0JBQUEsT0FBSSxDQUFDOUksU0FBUyxDQUFDQyxPQUFPLGNBQUE2SSxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCNUksU0FBUyxDQUFDLENBQUMsQ0FBQzNCLE9BQU8sQ0FBRWlCLEtBQUssSUFBS0EsS0FBSyxDQUFDckMsV0FBVyxDQUFDLFlBQVksRUFBRXNDLFVBQVUsQ0FBQ3dKLElBQUksQ0FBQyxDQUFDO01BQ3hHLENBQUFGLHNCQUFBLE9BQUksQ0FBQy9JLFNBQVMsQ0FBQ0MsT0FBTyxjQUFBOEksc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QjdJLFNBQVMsQ0FBQyxDQUFDLENBQUMzQixPQUFPLENBQUVpQixLQUFLLElBQUtBLEtBQUssQ0FBQ3JDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNsRzs7SUFFQTtJQUFBO0lBQUFKLE1BQUEsQ0FDQW1NLGdCQUFnQixHQUFoQixTQUFBQSxpQkFBaUJDLFVBQXdCLEVBQUVDLHNCQUF1RCxFQUFFQyxRQUFnQixFQUFRO01BQzNILE1BQU01QixTQUFTLEdBQUcsSUFBSSxDQUFDekosS0FBSyxDQUFDRixNQUFNLENBQUNxRyxHQUFHLENBQUUzRSxLQUFLLEtBQU07UUFBRSxHQUFHQSxLQUFLO1FBQUVWLHlCQUF5QixFQUFFLENBQUMsR0FBR1UsS0FBSyxDQUFDVix5QkFBeUI7TUFBRSxDQUFDLENBQUMsQ0FBQztNQUNuSSxNQUFNeUksVUFBVSxHQUFHRSxTQUFTLENBQUNELFNBQVMsQ0FBRThCLENBQUMsSUFBS0EsQ0FBQyxDQUFDMUssR0FBRyxLQUFLeUssUUFBUSxDQUFDO01BQ2pFLE1BQU03SixLQUFLLEdBQUdpSSxTQUFTLENBQUNGLFVBQVUsQ0FBQztNQUNuQyxJQUFJQSxVQUFVLElBQUksQ0FBQyxDQUFDLEVBQUU7UUFBQSxJQUFBZ0MsdUJBQUE7UUFDckIsUUFBUUosVUFBVTtVQUNqQixLQUFLLG1CQUFtQjtZQUN2QixJQUFJLENBQUNLLGlCQUFpQixDQUFDaEssS0FBSyxFQUFFNEosc0JBQXNCLEVBQUU3QixVQUFVLEVBQUVFLFNBQVMsQ0FBQztZQUM1RWpJLEtBQUssQ0FBQ1YseUJBQXlCLEdBQUdzSyxzQkFBc0I7WUFDeEQ7WUFDQSxJQUFJLENBQUMsSUFBSSxDQUFDaEMsY0FBYyxDQUFDNUgsS0FBSyxDQUFDWixHQUFHLENBQUMsSUFBSVksS0FBSyxDQUFDVix5QkFBeUIsQ0FBQ1osTUFBTSxLQUFLLENBQUMsRUFBRTtjQUNwRnVKLFNBQVMsQ0FBQ0UsTUFBTSxDQUFDSixVQUFVLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDO1lBQ0E7VUFDRDtZQUNDMUYsR0FBRyxDQUFDQyxLQUFLLENBQUMsaURBQWlELENBQUM7WUFDNUQ7UUFDRjtRQUNBO1FBQ0EsSUFBSSxDQUFDOUQsS0FBSyxDQUFDMEMsU0FBUyxHQUFHLEtBQUs7UUFDNUIsSUFBSSxDQUFDMUMsS0FBSyxDQUFDRixNQUFNLEdBQUcySixTQUFTO1FBQzdCLElBQUksQ0FBQ3pKLEtBQUssQ0FBQ0MsVUFBVSxHQUFHd0osU0FBUyxDQUFDdkosTUFBTSxHQUFHLENBQUM7UUFDNUMsQ0FBQXFMLHVCQUFBLE9BQUksQ0FBQzNJLGVBQWUsQ0FBQ1gsT0FBTyxjQUFBc0osdUJBQUEsdUJBQTVCQSx1QkFBQSxDQUE4QjFJLFdBQVcsQ0FBQyxLQUFLLENBQUM7TUFDakQ7SUFDRCxDQUFDO0lBQUE5RCxNQUFBLENBRU95TSxpQkFBaUIsR0FBekIsU0FBQUEsa0JBQ0NoSyxLQUFzQixFQUN0QjRKLHNCQUF1RCxFQUN2RDdCLFVBQWtCLEVBQ2xCRSxTQUE0QixFQUNyQjtNQUNQakksS0FBSyxDQUFDVix5QkFBeUIsR0FBR3NLLHNCQUFzQjtNQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDaEMsY0FBYyxDQUFDNUgsS0FBSyxDQUFDWixHQUFHLENBQUMsSUFBSVksS0FBSyxDQUFDVix5QkFBeUIsQ0FBQ1osTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNwRnVKLFNBQVMsQ0FBQ0UsTUFBTSxDQUFDSixVQUFVLEVBQUUsQ0FBQyxDQUFDO01BQ2hDO0lBQ0QsQ0FBQztJQUFBeEssTUFBQSxDQUVEcUssY0FBYyxHQUFkLFNBQUFBLGVBQWV4SSxHQUFXLEVBQVc7TUFDcEMsT0FBTyxJQUFJLENBQUNqQyxlQUFlLENBQUNpQyxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsS0FBSztJQUNoRCxDQUFDO0lBQUE3QixNQUFBLENBRUQwTSx1QkFBdUIsR0FBdkIsU0FBQUEsd0JBQUEsRUFBNkM7TUFDNUMsTUFBTWhDLFNBQVMsR0FBRyxJQUFJLENBQUN6SixLQUFLLENBQUNGLE1BQU0sQ0FBQ3FHLEdBQUcsQ0FBRTNFLEtBQUssS0FBTTtRQUFFLEdBQUdBLEtBQUs7UUFBRVYseUJBQXlCLEVBQUUsQ0FBQyxHQUFHVSxLQUFLLENBQUNWLHlCQUF5QjtNQUFFLENBQUMsQ0FBQyxDQUFDO01BQ25JLE1BQU00SyxlQUFlLEdBQUdqQyxTQUFTLENBQUN4RixNQUFNLENBQUV6QyxLQUFLLElBQUs7UUFDbkQsSUFBSSxJQUFJLENBQUM0SCxjQUFjLENBQUM1SCxLQUFLLENBQUNaLEdBQUcsQ0FBQyxFQUFFO1VBQ25DLE9BQU8sSUFBSTtRQUNaO01BQ0QsQ0FBQyxDQUFDO01BQ0YsT0FBTzhLLGVBQWUsQ0FBQ3ZGLEdBQUcsQ0FBRTNFLEtBQUssS0FBTTtRQUFFLEdBQUdBLEtBQUs7UUFBRVYseUJBQXlCLEVBQUU7TUFBRyxDQUFDLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBQUEvQixNQUFBLENBRUR1QyxxQ0FBcUMsR0FBckMsU0FBQUEsc0NBQUEsRUFBMkQ7TUFDMUQsT0FBTyxJQUFJLENBQUN0QixLQUFLLENBQUNGLE1BQU0sQ0FBQ21FLE1BQU0sQ0FBRXpDLEtBQUssSUFBSztRQUMxQyxNQUFNNEgsY0FBYyxHQUFHLElBQUksQ0FBQ0EsY0FBYyxDQUFDNUgsS0FBSyxDQUFDWixHQUFHLENBQUM7UUFDckQsSUFBSXdJLGNBQWMsRUFBRTtVQUNuQixPQUFPNUgsS0FBSyxDQUFDVix5QkFBeUIsQ0FBQ1osTUFBTSxLQUFLLENBQUM7UUFDcEQ7TUFDRCxDQUFDLENBQUM7SUFDSCxDQUFDO0lBQUFuQixNQUFBLENBRUR3Qyx3QkFBd0IsR0FBeEIsU0FBQUEseUJBQXlCekIsTUFBeUIsRUFBaUM7TUFBQSxJQUFBNkwsc0JBQUE7TUFDbEYsTUFBTUMsWUFBWSxHQUFHOUwsTUFBTSxDQUFDcUcsR0FBRyxDQUFFM0UsS0FBSyxJQUFLQSxLQUFLLENBQUNaLEdBQUcsQ0FBQztNQUNyRCxRQUFBK0ssc0JBQUEsR0FBTyxJQUFJLENBQUMzSixTQUFTLENBQUNDLE9BQU8sY0FBQTBKLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0J6SixTQUFTLENBQUMsQ0FBQyxDQUFDK0IsTUFBTSxDQUFFekMsS0FBSyxJQUFLb0ssWUFBWSxDQUFDMUYsUUFBUSxDQUFDMUUsS0FBSyxDQUFDcUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBR3BHLENBQUM7SUFBQXJRLHNCQUFBLENBRU1zUSxNQUFNLEdBQWIsU0FBQUEsT0FBY0MsRUFBaUIsRUFBRUMsT0FBK0IsRUFBUTtNQUN2RSxPQUFPQyxHQUFHLENBQUNDLHdCQUF3QixDQUFDSCxFQUFFLEVBQUVDLE9BQU8sRUFBRSxNQUFNO1FBQ3RELE9BQU96SCxJQUFBO1VBQU15QyxHQUFHLEVBQUVnRixPQUFRO1VBQUFoSCxRQUFBLEVBQUVnSCxPQUFPLENBQUNHLGNBQWMsQ0FBQyxTQUFTO1FBQUMsQ0FBTyxDQUFDO01BQ3RFLENBQUMsQ0FBQztJQUNILENBQUM7SUFBQSxPQUFBM1Esc0JBQUE7RUFBQSxFQTNla0Q0USxPQUFPLElBQUExTyxXQUFBLEdBQUEyTyx5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSxrQkFBQXJELEtBQUE7SUFBQTJRLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBN08sWUFBQSxHQUFBeU8seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsWUFBQWxELEtBQUE7SUFBQXdRLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBNU8sWUFBQSxHQUFBd08seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsb0JBQUFqRCxLQUFBO0lBQUF1USxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQTNPLFlBQUEsR0FBQXVPLHlCQUFBLENBQUFuUCxPQUFBLENBQUE4QixTQUFBLHdCQUFBaEQsS0FBQTtJQUFBc1EsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUExTyxZQUFBLEdBQUFzTyx5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSx3QkFBQS9DLEtBQUE7SUFBQXFRLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBek8sWUFBQSxHQUFBcU8seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsc0JBQUE5QyxLQUFBO0lBQUFvUSxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXhPLFlBQUEsR0FBQW9PLHlCQUFBLENBQUFuUCxPQUFBLENBQUE4QixTQUFBLGdCQUFBNUMsS0FBQTtJQUFBa1EsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF2TyxZQUFBLEdBQUFtTyx5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSxjQUFBM0MsS0FBQTtJQUFBaVEsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUF0TyxZQUFBLEdBQUFrTyx5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSxvQkFBQXpDLE1BQUE7SUFBQStQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBck8sYUFBQSxHQUFBaU8seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsbUJBQUF2QyxNQUFBO0lBQUE2UCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQXBPLGFBQUEsR0FBQWdPLHlCQUFBLENBQUFuUCxPQUFBLENBQUE4QixTQUFBLG9CQUFBdEMsTUFBQTtJQUFBNFAsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFuTyxhQUFBLEdBQUErTix5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSxtQkFBQXJDLE1BQUE7SUFBQTJQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBbE8sYUFBQSxHQUFBOE4seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsb0JBQUFwQyxNQUFBO0lBQUEwUCxZQUFBO0lBQUFDLFVBQUE7SUFBQUMsUUFBQTtJQUFBQyxXQUFBO0VBQUEsSUFBQWpPLGFBQUEsR0FBQTZOLHlCQUFBLENBQUFuUCxPQUFBLENBQUE4QixTQUFBLDRCQUFBbkMsTUFBQTtJQUFBeVAsWUFBQTtJQUFBQyxVQUFBO0lBQUFDLFFBQUE7SUFBQUMsV0FBQTtFQUFBLElBQUFoTyxhQUFBLEdBQUE0Tix5QkFBQSxDQUFBblAsT0FBQSxDQUFBOEIsU0FBQSwyQkFBQWxDLE1BQUE7SUFBQXdQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUE7RUFBQSxJQUFBL04sYUFBQSxHQUFBMk4seUJBQUEsQ0FBQW5QLE9BQUEsQ0FBQThCLFNBQUEsWUFBQWpDLE1BQUE7SUFBQXVQLFlBQUE7SUFBQUMsVUFBQTtJQUFBQyxRQUFBO0lBQUFDLFdBQUEsV0FBQUEsQ0FBQTtNQUFBLE9BNkRyRDtRQUNKeE0sVUFBVSxFQUFFLEtBQUs7UUFDakJILE1BQU0sRUFBRSxFQUF1QjtRQUMvQjRDLFNBQVMsRUFBRSxLQUFLO1FBQ2hCQyxpQkFBaUIsRUFBRTtNQUNwQixDQUFDO0lBQUE7RUFBQSxLQUFBekYsT0FBQSxNQUFBRCxNQUFBO0VBQUE2QixRQUFBLEdBQUF0RCxzQkFBQTtFQUFBLE9BQUFzRCxRQUFBO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
629
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFYXN5RmlsdGVyQmFyQ29udGFpbmVyIiwiX2RlYyIsImRlZmluZVVJNUNsYXNzIiwiX2RlYzIiLCJwcm9wZXJ0eSIsInR5cGUiLCJfZGVjMyIsIl9kZWM0IiwiX2RlYzUiLCJfZGVjNiIsIl9kZWM3IiwiZGVmaW5lUmVmZXJlbmNlIiwiX2RlYzgiLCJfZGVjOSIsImFnZ3JlZ2F0aW9uIiwiX2RlYzEwIiwiZXZlbnQiLCJfZGVjMTEiLCJfZGVjMTIiLCJfZGVjMTMiLCJfZGVjMTQiLCJfZGVjMTUiLCJfZGVjMTYiLCJfZGVjMTciLCJkZWZpbmVTdGF0ZSIsIl9jbGFzcyIsIl9jbGFzczIiLCJfQ29udHJvbCIsIl9pbmhlcml0c0xvb3NlIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Rlc2NyaXB0b3IyIiwiX2Rlc2NyaXB0b3IzIiwiX2Rlc2NyaXB0b3I0IiwiX2Rlc2NyaXB0b3I1IiwiX2Rlc2NyaXB0b3I2IiwiX2Rlc2NyaXB0b3I3IiwiX2Rlc2NyaXB0b3I4IiwiX2Rlc2NyaXB0b3I5IiwiX2Rlc2NyaXB0b3IxMCIsIl9kZXNjcmlwdG9yMTEiLCJfZGVzY3JpcHRvcjEyIiwiX2Rlc2NyaXB0b3IxMyIsIl9kZXNjcmlwdG9yMTQiLCJfZGVzY3JpcHRvcjE1IiwiX2Rlc2NyaXB0b3IxNiIsInNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCIsImlucHV0RmllbGRSZWFkeSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVzb2x2ZUNvbnRlbnRSZWFkeSIsImluaXRpYWxpemUiLCJfZXhwb3J0cyIsIl9wcm90byIsInByb3RvdHlwZSIsInNldEVhc3lGaWx0ZXJMaWIiLCJlYXN5RmlsdGVyTGliIiwic2V0UHJvcGVydHkiLCJlYXN5ZmlsdGVyIiwiX191aTVfcmVxdWlyZV9hc3luYyIsInNldEFwcElkIiwiYXBwSWQiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQyIiwiZWFzeUZpbHRlcklucHV0IiwiY3VycmVudCIsImluaXRTaGVsbEhpc3RvcnlQcm92aWRlciIsInNldEZpbHRlckJhck1ldGFkYXRhIiwiZmlsdGVyQmFyTWV0YWRhdGEiLCJ0b2tlbnMiLCJnZXREZWZhdWx0VG9rZW5zIiwiaW5uZXJDb250cm9sUG9wb3ZlciIsImNyZWF0ZVBvcG92ZXJGb3JJbm5lckNvbnRyb2xzIiwiYWRkRGVwZW5kZW50Iiwic3RhdGUiLCJzaG93UmVzdWx0IiwibGVuZ3RoIiwiaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkIiwiaW5pdCIsInJlc291cmNlQnVuZGxlIiwiTGliIiwiZ2V0UmVzb3VyY2VCdW5kbGVGb3IiLCJjb250ZW50IiwiY3JlYXRlQ29udGVudCIsImlzRGVmYXVsdFZhbHVlc1Jlc3BlY3RlZCIsIl90aGlzJGZpbHRlckJhck1ldGFkYSIsIm1hbmRhdG9yeUtleU1hcCIsImZvckVhY2giLCJkYXRhIiwicmVxdWlyZWQiLCJuYW1lIiwicHVzaCIsImtleSIsImxhYmVsIiwia2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyIsImRlZmF1bHRWYWx1ZSIsIm9uRW50ZXJQcmVzc2VkIiwiZSIsIm9uR29QcmVzcyIsImdldFBhcmFtZXRlciIsImNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQiLCJ0b2tlbnNJblN0YXRlIiwiZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSIsImdldEFjdHVhbFRva2Vuc0Zyb21TdGF0ZSIsInRva2VuIiwiVmFsdWVTdGF0ZSIsIkVycm9yIiwiZ2V0VGV4dCIsIm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSIsImNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlIiwiZWFzeVRva2VucyIsInRva2VuaXplciIsImdldFRva2VucyIsImNsb3NlVmFsdWVTdGF0ZU1lc3NhZ2UiLCJtYWdpY1F1ZXJ5IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MyIsImRvU2VhcmNoIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwicmVzZXRTdGF0ZSIsImdvUHJlc3NlZCIsInRva2VuaXplckVkaXRhYmxlIiwic2V0RWRpdGFibGUiLCJmaXJlRXZlbnQiLCJlYXN5RmlsdGVyTWV0YWRhdGEiLCJ2ZXJzaW9uIiwiZW50aXR5U2V0IiwiY29udGV4dFBhdGgiLCJmaWVsZHMiLCJlYXN5RmlsdGVyUmVzdWx0IiwiZWFzeUZpbHRlciIsInN1Y2Nlc3MiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQ0IiwiaXNIaXN0b3J5RW5hYmxlZCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDUiLCJhZGRSZWNlbnRRdWVyeSIsImhhbmRsZVYxU3VjY2VzcyIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDYiLCJzZXRBc0ludmFsaWQiLCJtZXNzYWdlIiwiTG9nIiwiZXJyb3IiLCJ1bmNsZWFyIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0NyIsImZpbHRlciIsImRlYnVnIiwiSlNPTiIsInN0cmluZ2lmeSIsIkVhc3lGaWx0ZXJVdGlscyIsImZvcm1hdERhdGEiLCJfanN4IiwiUG9wb3ZlciIsImlkIiwiZ2V0SWQiLCJzaG93QXJyb3ciLCJzaG93SGVhZGVyIiwicGxhY2VtZW50IiwiUGxhY2VtZW50VHlwZSIsIkJvdHRvbSIsImNoaWxkcmVuIiwiZm9vdGVyIiwiZ2V0VG9vbGJhciIsInRvb2xiYXIiLCJva0J1dHRvbiIsImdldE9rQnV0dG9uIiwic2hvd0FsbEJ1dHRvbiIsImdldFNob3dBbGxCdXR0b24iLCJPdmVyZmxvd1Rvb2xiYXIiLCJfanN4cyIsIl9GcmFnbWVudCIsIlRvb2xiYXJTcGFjZXIiLCJCdXR0b24iLCJ0ZXh0IiwiQnV0dG9uVHlwZSIsIkVtcGhhc2l6ZWQiLCJvblN0YXRlQ2hhbmdlIiwiY2hhbmdlZFByb3BzIiwiaW5jbHVkZXMiLCJtYXAiLCJkZWVwQ2xvbmUiLCJnb0J1dHRvblByZXNzZWQiLCJ2YWx1ZU9mIiwiJHRvcEdvQnRuIiwiY3JlYXRlUmVmZXJlbmNlIiwiJGJvdEdvQnRuIiwib3V0VkJveCIsIlZCb3giLCJGbGV4Qm94IiwicmVuZGVyVHlwZSIsIkVhc3lGaWx0ZXJJbnB1dCIsInJlY29tbWVuZGVkVmFsdWVzIiwicmVmIiwiZW50ZXJQcmVzc2VkIiwiYmluZCIsInF1ZXJ5Q2hhbmdlZCIsInF1ZXJ5IiwibGl2ZUNoYW5nZSIsImljb24iLCJjbGFzcyIsInZpc2libGUiLCJub3QiLCJiaW5kU3RhdGUiLCJwcmVzcyIsIm9uR29CdXR0b25QcmVzcyIsImFsaWduSXRlbXMiLCJGbGV4QWxpZ25JdGVtcyIsIkNlbnRlciIsIndyYXAiLCJGbGV4V3JhcCIsIldyYXAiLCJqdXN0aWZ5Q29udGVudCIsIkZsZXhKdXN0aWZ5Q29udGVudCIsIlNwYWNlQmV0d2VlbiIsIkFJTm90aWNlIiwiVG9rZW5pemVyIiwiZWRpdGFibGUiLCJhbmQiLCJpZHgiLCJjdHgiLCJfdGhpcyRmaWx0ZXJCYXJNZXRhZGEyIiwiX3RoaXMkZmlsdGVyQmFyTWV0YWRhMyIsIm9iamVjdCIsImdldE9iamVjdCIsIlRva2VuIiwiaXRlbXMiLCJtYW5kYXRvcnkiLCJpc0tleU1hbmRhdG9yeSIsImRlbGV0ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDgiLCJ0b2tlbkluZGV4IiwiZmluZEluZGV4IiwibmV3VG9rZW5zIiwiY29uY2F0Iiwic3BsaWNlIiwiY3VzdG9tRGF0YSIsIkN1c3RvbURhdGEiLCJ2YWx1ZSIsImZpbmQiLCJjb2RlTGlzdCIsIlRyYW5zcGFyZW50IiwiX3RoaXMkZWFzeUZpbHRlcklucHV0OSIsImZvY3VzIiwiRkVTUkhlbHBlciIsInNldFNlbWFudGljU3RlcG5hbWUiLCJfdGhpcyRlYXN5RmlsdGVySW5wdXQxMCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDExIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTIiLCJlZGl0YWJsZVN0YXRlIiwiZ2V0RWRpdGFibGUiLCJnZXRWYWx1ZSIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDEzIiwiX3RoaXMkZWFzeUZpbHRlcklucHV0MTQiLCJfdGhpcyR0b2tlbml6ZXIkY3VycmUyIiwiX3RoaXMkdG9rZW5pemVyJGN1cnJlMyIsInNldFZhbHVlIiwiTm9uZSIsInVwZGF0ZVRva2VuQXJyYXkiLCJjaGFuZ2VUeXBlIiwibmV3VG9rZW5TcGVjaWZpY1ZhbHVlcyIsInRva2VuS2V5IiwidCIsIl90aGlzJGVhc3lGaWx0ZXJJbnB1dDE1Iiwic2V0U2VsZWN0ZWRWYWx1ZXMiLCJnZXRUb2tlbnNJbkluaXRpYWxTdGF0ZSIsIm1hbmRhdG9yeVRva2VucyIsIl90aGlzJHRva2VuaXplciRjdXJyZTQiLCJyZXF1aXJlZEtleXMiLCJnZXRLZXkiLCJyZW5kZXIiLCJybSIsImNvbnRyb2wiLCJqc3giLCJyZW5kZXJVc2luZ1JlbmRlck1hbmFnZXIiLCJnZXRBZ2dyZWdhdGlvbiIsIkNvbnRyb2wiLCJfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yIiwiY29uZmlndXJhYmxlIiwiZW51bWVyYWJsZSIsIndyaXRhYmxlIiwiaW5pdGlhbGl6ZXIiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkVhc3lGaWx0ZXJCYXJDb250YWluZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IHR5cGUgeyBFbmhhbmNlV2l0aFVJNSwgU3RhdGVPZiB9IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7XG5cdGFnZ3JlZ2F0aW9uLFxuXHRjcmVhdGVSZWZlcmVuY2UsXG5cdGRlZmluZVJlZmVyZW5jZSxcblx0ZGVmaW5lU3RhdGUsXG5cdGRlZmluZVVJNUNsYXNzLFxuXHRldmVudCxcblx0cHJvcGVydHksXG5cdHR5cGUgUHJvcGVydGllc09mXG59IGZyb20gXCJzYXAvZmUvYmFzZS9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIHsgUmVmIH0gZnJvbSBcInNhcC9mZS9iYXNlL2pzeC1ydW50aW1lL2pzeFwiO1xuaW1wb3J0IGpzeCBmcm9tIFwic2FwL2ZlL2Jhc2UvanN4LXJ1bnRpbWUvanN4XCI7XG5pbXBvcnQgVG9rZW4gZnJvbSBcInNhcC9mZS9jb250cm9scy9lYXN5RmlsdGVyL1Rva2VuXCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCBGbGV4Qm94IGZyb20gXCJzYXAvbS9GbGV4Qm94XCI7XG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwic2FwL20vUG9wb3ZlclwiO1xuaW1wb3J0IFRva2VuaXplciBmcm9tIFwic2FwL20vVG9rZW5pemVyXCI7XG5pbXBvcnQgVkJveCBmcm9tIFwic2FwL20vVkJveFwiO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSwgRmxleEFsaWduSXRlbXMsIEZsZXhKdXN0aWZ5Q29udGVudCwgRmxleFdyYXAsIFBsYWNlbWVudFR5cGUgfSBmcm9tIFwic2FwL20vbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgVUk1RXZlbnQgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50XCI7XG5pbXBvcnQgdHlwZSB7ICRDb250cm9sU2V0dGluZ3MgfSBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgTGliIGZyb20gXCJzYXAvdWkvY29yZS9MaWJcIjtcbmltcG9ydCB0eXBlIFJlbmRlck1hbmFnZXIgZnJvbSBcInNhcC91aS9jb3JlL1JlbmRlck1hbmFnZXJcIjtcbmltcG9ydCB7IFZhbHVlU3RhdGUgfSBmcm9tIFwic2FwL3VpL2NvcmUvbGlicmFyeVwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcblxuaW1wb3J0IHR5cGUgUmVzb3VyY2VCdW5kbGUgZnJvbSBcInNhcC9iYXNlL2kxOG4vUmVzb3VyY2VCdW5kbGVcIjtcbmltcG9ydCBkZWVwQ2xvbmUgZnJvbSBcInNhcC9iYXNlL3V0aWwvZGVlcENsb25lXCI7XG5pbXBvcnQgeyBhbmQsIGJpbmRTdGF0ZSwgbm90IH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgRWFzeUZpbHRlcklucHV0IGZyb20gXCJzYXAvZmUvY29udHJvbHMvZWFzeUZpbHRlci9FYXN5RmlsdGVySW5wdXRcIjtcbmltcG9ydCB0eXBlIEVhc3lGaWx0ZXJUb2tlbiBmcm9tIFwic2FwL2ZlL2NvbnRyb2xzL2Vhc3lGaWx0ZXIvVG9rZW5cIjtcbmltcG9ydCBPdmVyZmxvd1Rvb2xiYXIgZnJvbSBcInNhcC9tL092ZXJmbG93VG9vbGJhclwiO1xuaW1wb3J0IFRvb2xiYXJTcGFjZXIgZnJvbSBcInNhcC9tL1Rvb2xiYXJTcGFjZXJcIjtcbmltcG9ydCB0eXBlIEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCBGRVNSSGVscGVyIGZyb20gXCJzYXAvdWkvcGVyZm9ybWFuY2UvdHJhY2UvRkVTUkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgRWFzeUZpbHRlciBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJNZXRhZGF0YSwgUHJvcGVydHlNZXRhZGF0YSwgU3VjY2VzcyB9IGZyb20gXCJ1eC9lbmcvZmlvcmlhaS9yZXVzZS9lYXN5ZmlsdGVyL0Vhc3lGaWx0ZXJcIjtcbmltcG9ydCB0eXBlIHsgRXZlbnRIYW5kbGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IEFJTm90aWNlIGZyb20gXCIuL0FJTm90aWNlXCI7XG5pbXBvcnQgRWFzeUZpbHRlclV0aWxzIGZyb20gXCIuL3V0aWxzXCI7XG5cbi8vRm9yIGN1cnJlbnQgcmVsZWFzZSB3ZSBhcmUgaWdub3JpbmcgXCJBbGxcIiBhbmQgXCJBbnlcIlxuLy9XZSBjYW4gaW5jb3Jwb3JhdGUgdGhlc2UgdmFsdWVzIGluIGZ1dHVyZVxuZXhwb3J0IHR5cGUgQmV0d2VlblNlbGVjdGVkVmFsdWVzID0gW2Jvb2xlYW4sIGJvb2xlYW5dIHwgW3N0cmluZywgc3RyaW5nXSB8IFtudW1iZXIsIG51bWJlcl0gfCBbRGF0ZSwgRGF0ZV07XG5cbi8vV2Ugd2lsbCBiZSBoYW5kbGluZyBcIkFMTFwiIGFuZCBcIkFOWVwiIGF0IGxhdGVyIHBvaW50IG9mIHRpbWVcbmV4cG9ydCB0eXBlIFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uID1cblx0fCB7XG5cdFx0XHRvcGVyYXRvcjogRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj47XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogc3RyaW5nW10gfCBib29sZWFuW10gfCBudW1iZXJbXSB8IERhdGVbXTtcblx0ICB9XG5cdHwge1xuXHRcdFx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLkJUIHwgRmlsdGVyT3BlcmF0b3IuTkI7XG5cdFx0XHRzZWxlY3RlZFZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzO1xuXHQgIH07XG5cbmV4cG9ydCB0eXBlIFRva2VuVHlwZSA9IFwiTWVudVdpdGhDaGVja0JveFwiIHwgXCJDYWxlbmRhclwiIHwgXCJUaW1lXCIgfCBcIlZhbHVlSGVscFwiO1xuXG5leHBvcnQgdHlwZSBUb2tlbkRlZmluaXRpb24gPSB7XG5cdGtleTogc3RyaW5nO1xuXHRsYWJlbDogc3RyaW5nO1xuXHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdO1xuXHR0eXBlPzogVG9rZW5UeXBlO1xufTtcblxuZXhwb3J0IHR5cGUgVG9rZW5TZXR0ZXJzID0gXCJzZXRTZWxlY3RlZFZhbHVlc1wiO1xuXG5leHBvcnQgdHlwZSBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSA9XG5cdHwgKFByb3BlcnR5TWV0YWRhdGEgJiB7XG5cdFx0XHR0eXBlOiBUb2tlblR5cGU7XG5cdFx0XHRsYWJlbDogc3RyaW5nOyAvLyBSZXF1aXJlZCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgaXMgbWFuZGF0b3J5XG5cdFx0XHRyZXF1aXJlZDogdHJ1ZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSlcblx0fCAoUHJvcGVydHlNZXRhZGF0YSAmIHtcblx0XHRcdHR5cGU6IFRva2VuVHlwZTtcblx0XHRcdGxhYmVsPzogc3RyaW5nOyAvLyBPcHRpb25hbCBwcm9wZXJ0eSwgaGVuY2UgbGFiZWwgY2FuIGJlIG9taXR0ZWRcblx0XHRcdHJlcXVpcmVkOiBmYWxzZTtcblx0XHRcdGRlZmF1bHRWYWx1ZT86IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW107XG5cdCAgfSk7XG4vKlxuICogRGVsaXZlcnkgZm9yIGJldGEgcmVsZWFzZSBmb3IgdGhlIGVhc3kgZmlsdGVyIGZlYXR1cmUuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS5jb250cm9scy5lYXN5RmlsdGVyLkVhc3lGaWx0ZXJCYXJDb250YWluZXJcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVhc3lGaWx0ZXJCYXJDb250YWluZXIgZXh0ZW5kcyBDb250cm9sIHtcblx0QHByb3BlcnR5KHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGFwcElkPzogc3RyaW5nO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIgfSlcblx0ZWFzeUZpbHRlckxpYj86IHN0cmluZztcblxuXHRAcHJvcGVydHkoeyB0eXBlOiBcImFycmF5XCIgfSlcblx0ZmlsdGVyQmFyTWV0YWRhdGE/OiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YVtdO1xuXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwiYXJyYXlcIiB9KVxuXHRyZWNvbW1lbmRlZFZhbHVlcz86IHN0cmluZ1tdO1xuXG5cdEBkZWZpbmVSZWZlcmVuY2UoKVxuXHRlYXN5RmlsdGVySW5wdXQhOiBSZWY8RW5oYW5jZVdpdGhVSTU8RWFzeUZpbHRlcklucHV0Pj47XG5cblx0QGRlZmluZVJlZmVyZW5jZSgpXG5cdHRva2VuaXplciE6IFJlZjxUb2tlbml6ZXI+O1xuXG5cdEBhZ2dyZWdhdGlvbih7IHR5cGU6IFwic2FwLnVpLmNvcmUuQ29udHJvbFwiIH0pXG5cdGNvbnRlbnQ/OiBDb250cm9sO1xuXG5cdEBldmVudCgpXG5cdHRva2Vuc0NoYW5nZWQ/OiBFdmVudEhhbmRsZXI8VUk1RXZlbnQ8eyB0b2tlbnM6IFRva2VuRGVmaW5pdGlvbltdOyBnb0J1dHRvblByZXNzZWQ6IGJvb2xlYW4gfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHF1ZXJ5Q2hhbmdlZD86IEV2ZW50SGFuZGxlcjxVSTVFdmVudDx7IHF1ZXJ5OiBzdHJpbmcgfSwgRWFzeUZpbHRlckJhckNvbnRhaW5lcj4+O1xuXG5cdEBldmVudCgpXG5cdHNob3dWYWx1ZUhlbHA/OiBFdmVudEhhbmRsZXI8XG5cdFx0VUk1RXZlbnQ8XG5cdFx0XHR7IGtleTogc3RyaW5nOyB2YWx1ZXM6IHVua25vd25bXTsgcmVzb2x2ZTogKHZhbHVlOiBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKSA9PiB2b2lkOyByZWplY3Q6IChyZWFzb24/OiBFcnJvcikgPT4gdm9pZCB9LFxuXHRcdFx0RWFzeUZpbHRlckJhckNvbnRhaW5lclxuXHRcdD5cblx0PjtcblxuXHRAZXZlbnQoKVxuXHRjbGVhckZpbHRlcnM/OiBFdmVudEhhbmRsZXI7XG5cblx0Ly9UaGUgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgb25seSB3aGVuIHRoZSB0b2tlbnMgaGFzIGJlZW4gY2hhbmdlZCB3aXRoIHRva2VucyBhbmQgcHJlc3NlZCBvbiB0aGUgR28gQnV0dG9uXG5cdC8vSW4gdGhpcyBjYXNlIHRoZSBcIkVudGVyXCIgd29udCBiZSByZWxldmFudCBiZWNhdXNlIHRoZSBpbnB1dCBmaWVsZCB3aWxsIGJlIGluIG5vbiBlZGl0YWJsZSBzdGF0ZVxuXHRAZXZlbnQoKVxuXHRleGVjdXRlU2VhcmNoPzogRXZlbnRIYW5kbGVyO1xuXG5cdEBldmVudCgpXG5cdGJlZm9yZVF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRAZXZlbnQoKVxuXHRhZnRlclF1ZXJ5UHJvY2Vzc2luZz86IEV2ZW50SGFuZGxlcjtcblxuXHRwcml2YXRlIHJlc291cmNlQnVuZGxlITogUmVzb3VyY2VCdW5kbGU7XG5cblx0QGRlZmluZVN0YXRlKClcblx0cHJvdGVjdGVkIHN0YXRlOiBTdGF0ZU9mPHtcblx0XHRzaG93UmVzdWx0OiBib29sZWFuO1xuXHRcdHRva2VuczogVG9rZW5EZWZpbml0aW9uW107XG5cdFx0Z29QcmVzc2VkOiBib29sZWFuO1xuXHRcdHRva2VuaXplckVkaXRhYmxlOiBib29sZWFuO1xuXHR9PiA9IHtcblx0XHRzaG93UmVzdWx0OiBmYWxzZSxcblx0XHR0b2tlbnM6IFtdIGFzIFRva2VuRGVmaW5pdGlvbltdLFxuXHRcdGdvUHJlc3NlZDogZmFsc2UsXG5cdFx0dG9rZW5pemVyRWRpdGFibGU6IHRydWVcblx0fTtcblxuXHRwcml2YXRlIGlubmVyQ29udHJvbFBvcG92ZXI/OiBQb3BvdmVyO1xuXG5cdHByaXZhdGUgb2tCdXR0b24/OiBCdXR0b247XG5cblx0cHJpdmF0ZSBzaG93QWxsQnV0dG9uPzogQnV0dG9uO1xuXG5cdHByaXZhdGUgdG9vbGJhcj86IE92ZXJmbG93VG9vbGJhcjtcblxuXHRwcml2YXRlIG1hbmRhdG9yeUtleU1hcD86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuXG5cdC8vSWYgc2V0IHRvIHRydWUgdGhlIGVycm9yIHN0YXRlIGNhbiBiZSBzZWVuIG9uIHRoZSB0b2tlbnNcblx0cHJpdmF0ZSBpc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQ/OiBib29sZWFuO1xuXG5cdHByaXZhdGUgc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gdHJ1ZTtcblxuXHRlYXN5ZmlsdGVyPzogUHJvbWlzZTx0eXBlb2YgRWFzeUZpbHRlciB8IHVuZGVmaW5lZD47XG5cblx0cHJpdmF0ZSByZXNvbHZlQ29udGVudFJlYWR5ITogKCkgPT4gdm9pZDtcblxuXHRwcml2YXRlIGlucHV0RmllbGRSZWFkeTogUHJvbWlzZTx2b2lkPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5ID0gcmVzb2x2ZTtcblx0fSk7XG5cblx0Y29uc3RydWN0b3IocHJvcGVydGllczogc3RyaW5nIHwgKCRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8RWFzeUZpbHRlckJhckNvbnRhaW5lcj4pLCBvdGhlcnM/OiAkQ29udHJvbFNldHRpbmdzKSB7XG5cdFx0c3VwZXIocHJvcGVydGllcyBhcyBzdHJpbmcsIG90aGVycyk7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdH1cblxuXHRzZXRFYXN5RmlsdGVyTGliKGVhc3lGaWx0ZXJMaWI6IHN0cmluZyk6IHZvaWQge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJlYXN5RmlsdGVyTGliXCIsIGVhc3lGaWx0ZXJMaWIpO1xuXHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJMaWIpIHtcblx0XHRcdHRoaXMuZWFzeWZpbHRlciA9IGltcG9ydCh0aGlzLmVhc3lGaWx0ZXJMaWIpO1xuXHRcdH1cblx0fVxuXG5cdGFzeW5jIHNldEFwcElkKGFwcElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcblx0XHRpZiAoIXRoaXMuYXBwSWQpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJhcHBJZFwiLCBhcHBJZCwgdHJ1ZSk7XG5cdFx0XHRhd2FpdCB0aGlzLmlucHV0RmllbGRSZWFkeTtcblx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldFByb3BlcnR5KFwiYXBwSWRcIiwgYXBwSWQsIHRydWUpO1xuXHRcdFx0YXdhaXQgdGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uaW5pdFNoZWxsSGlzdG9yeVByb3ZpZGVyKCk7XG5cdFx0fVxuXHR9XG5cblx0c2V0RmlsdGVyQmFyTWV0YWRhdGEoZmlsdGVyQmFyTWV0YWRhdGE6IEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10pOiB2b2lkIHtcblx0XHRpZiAoIXRoaXMuZmlsdGVyQmFyTWV0YWRhdGEpIHtcblx0XHRcdHRoaXMuc2V0UHJvcGVydHkoXCJmaWx0ZXJCYXJNZXRhZGF0YVwiLCBmaWx0ZXJCYXJNZXRhZGF0YSwgdHJ1ZSk7XG5cdFx0XHQvLyBwb3B1bGF0ZSB0aGUgdG9rZW5zIHdpdGggZGVmYXVsdCB2YWx1ZVxuXHRcdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXREZWZhdWx0VG9rZW5zKHRydWUpO1xuXHRcdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gdGhpcy5jcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpO1xuXHRcdFx0XHR0aGlzLmFkZERlcGVuZGVudCh0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSB0b2tlbnM7XG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0b2tlbnMubGVuZ3RoID4gMDtcblx0XHRcdC8vL1dlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBlcnJvciB2YWx1ZVN0YXRlTWVzc2FnZSBhcyBzb29uIHRoZSBjb250cm9sIHJlbmRlcnNcblx0XHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHRcdC8vb25Ub2tlbkNoYW5nZSBldmVudCBzaG91bGQgbm90IGJlIGZpcmVkIHdoZW4gaW5pdGlhbCBzZXQgb2YgdG9rZW5zIGFyZSBzZXRcblx0XHRcdHRoaXMuc2hvdWxkVG9rZW5DaGFuZ2VFdmVudEZpcmVkID0gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0aW5pdCgpOiB2b2lkIHtcblx0XHR0aGlzLnJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcblx0fVxuXG5cdGluaXRpYWxpemUoKTogdm9pZCB7XG5cdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0dGhpcy5yZXNvbHZlQ29udGVudFJlYWR5KCk7XG5cdFx0aWYgKCF0aGlzLmlubmVyQ29udHJvbFBvcG92ZXIpIHtcblx0XHRcdHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciA9IHRoaXMuY3JlYXRlUG9wb3ZlckZvcklubmVyQ29udHJvbHMoKTtcblx0XHRcdHRoaXMuYWRkRGVwZW5kZW50KHRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcik7XG5cdFx0fVxuXHRcdC8vV2UgZG9uJ3Qgd2FudCB0byBkaXNwbGF5IGVycm9yIHZhbHVlU3RhdGVNZXNzYWdlIGFzIHNvb24gdGhlIGNvbnRyb2wgcmVuZGVyc1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL29uVG9rZW5DaGFuZ2UgZXZlbnQgc2hvdWxkIG5vdCBiZSBmaXJlZCB3aGVuIGluaXRpYWwgc2V0IG9mIHRva2VucyBhcmUgc2V0XG5cdFx0dGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQgPSBmYWxzZTtcblx0fVxuXG5cdGdldERlZmF1bHRUb2tlbnMoaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkOiBib29sZWFuKTogVG9rZW5EZWZpbml0aW9uW10ge1xuXHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSBbXTtcblx0XHRpZiAoIXRoaXMubWFuZGF0b3J5S2V5TWFwKSB7XG5cdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcCA9IHt9O1xuXHRcdH1cblx0XHR0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5mb3JFYWNoKChkYXRhKSA9PiB7XG5cdFx0XHRpZiAoZGF0YS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xuXHRcdFx0XHQodGhpcy5tYW5kYXRvcnlLZXlNYXAgYXMgUmVjb3JkPHN0cmluZywgYm9vbGVhbj4pW2RhdGEubmFtZV0gPSB0cnVlO1xuXHRcdFx0XHQvL0NoZWNrIHdoZXRoZXIgdGhlIGtleXMgZXhpc3QgaW4gdGhlIGN1cnJlbnQgc3RhdGUgZWxzZSBwdXNoIGl0IGFjcm9zc1xuXHRcdFx0XHR0b2tlbnMucHVzaCh7XG5cdFx0XHRcdFx0a2V5OiBkYXRhLm5hbWUsXG5cdFx0XHRcdFx0bGFiZWw6IGRhdGEubGFiZWwsXG5cdFx0XHRcdFx0a2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogaXNEZWZhdWx0VmFsdWVzUmVzcGVjdGVkICYmIGRhdGEuZGVmYXVsdFZhbHVlID8gZGF0YS5kZWZhdWx0VmFsdWUgOiBbXSxcblx0XHRcdFx0XHR0eXBlOiBkYXRhLnR5cGVcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0cmV0dXJuIHRva2Vucztcblx0fVxuXG5cdG9uRW50ZXJQcmVzc2VkKGU6IFVJNUV2ZW50PHsgcXVlcnk6IHN0cmluZyB9LCBFYXN5RmlsdGVySW5wdXQ+KTogdm9pZCB7XG5cdFx0dGhpcy5vbkdvUHJlc3MoZS5nZXRQYXJhbWV0ZXIoXCJxdWVyeVwiKSwgZmFsc2UpO1xuXHR9XG5cblx0Ly9NYWtpbmcgaXQgcHVibGljIGJlY2F1c2UgaW4gbGl2ZSBtb2RlIHRoZSBhcHAgZGV2ZWxvcGVyIGNhbiBkZWNpZGUgd2hldGhlciB0byBkaXNwbGF5IHRoZSBlcnJvciBWYWx1ZVN0YXRlTWVzc2FnZVxuXHQvL0luIG5vbi1saXZlIG1vZGUgLCB3ZSBhcmUgYWxyZWFkeSBpbnRlcm5hbGx5IGhhbmRsaW5nIGl0IG9uIGV2ZXJ5IHRpbWUgdGltZSBhIHVzZXIgY2xpY2tzIG9uIEdPL0VudGVyIGJ1dHRvbnNcblx0cHVibGljIGNoZWNrSWZBbGxNYW5kYXRvcnlUb2tlbnNGaWxsZWQoKTogYm9vbGVhbiB7XG5cdFx0Y29uc3QgdG9rZW5zSW5TdGF0ZSA9IHRoaXMuZ2V0VW5TZXRNYW5kYXRvcnlUb2tlbnNJbkN1cnJlbnRTdGF0ZSgpO1xuXHRcdGlmICh0b2tlbnNJblN0YXRlLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0Y29uc3QgdG9rZW5zID0gdGhpcy5nZXRBY3R1YWxUb2tlbnNGcm9tU3RhdGUodG9rZW5zSW5TdGF0ZSk7XG5cdFx0XHR0b2tlbnM/LmZvckVhY2goKHRva2VuKSA9PiB7XG5cdFx0XHRcdHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVwiLCBWYWx1ZVN0YXRlLkVycm9yKTtcblx0XHRcdFx0dG9rZW4uc2V0UHJvcGVydHkoXCJ2YWx1ZVN0YXRlVGV4dFwiLCB0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX01BTkRBVE9SWV9UT0tFTl9FUlJPUlwiKSk7XG5cdFx0XHRcdHRva2VuLm9wZW5WYWx1ZVN0YXRlTWVzc2FnZSgpO1xuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cHVibGljIGNsb3NlQWxsTWFuZGF0b3J5VmFsdWVTdGF0ZU1lc3NhZ2VzKCk6IHZvaWQge1xuXHRcdGNvbnN0IGVhc3lUb2tlbnMgPSB0aGlzLnRva2VuaXplci5jdXJyZW50Py5nZXRUb2tlbnMoKSBhcyBFYXN5RmlsdGVyVG9rZW5bXTtcblx0XHRlYXN5VG9rZW5zLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5jbG9zZVZhbHVlU3RhdGVNZXNzYWdlKCkpO1xuXHR9XG5cblx0YXN5bmMgb25Hb1ByZXNzKG1hZ2ljUXVlcnk6IHN0cmluZyB8IHVuZGVmaW5lZCwgZG9TZWFyY2ggPSBmYWxzZSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGlmICghbWFnaWNRdWVyeSkge1xuXHRcdFx0dGhpcy5yZXNldFN0YXRlKCk7XG5cdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGRvU2VhcmNoO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZSh0cnVlKTtcblxuXHRcdC8vIENhbGwgQUkgc2VydmljZSB0byBnZXQgdGhlIGZpbHRlciBjcml0ZXJpYVxuXHRcdGNvbnN0IGVhc3lmaWx0ZXIgPSBhd2FpdCB0aGlzLmVhc3lmaWx0ZXI7XG5cdFx0aWYgKCFlYXN5ZmlsdGVyKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoaXMuZmlyZUV2ZW50KFwiYmVmb3JlUXVlcnlQcm9jZXNzaW5nXCIpO1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlck1ldGFkYXRhOiBFYXN5RmlsdGVyTWV0YWRhdGEgPSB7XG5cdFx0XHR2ZXJzaW9uOiAxLFxuXHRcdFx0ZW50aXR5U2V0OiB0aGlzLmNvbnRleHRQYXRoLFxuXHRcdFx0ZmllbGRzOiB0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW11cblx0XHR9O1xuXG5cdFx0Y29uc3QgZWFzeUZpbHRlclJlc3VsdCA9IGF3YWl0IGVhc3lmaWx0ZXIuZWFzeUZpbHRlcihtYWdpY1F1ZXJ5LCBlYXN5RmlsdGVyTWV0YWRhdGEpO1xuXG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0Ly9Pbmx5IGFkZCB0aGUgcmVjZW50IHF1ZXJ5IHdoZW4gdGhlIGNhbGwgaXMgc3VjY2Vzc1xuXHRcdFx0Ly9EbyBub3QgdHJhY2sgdGhlIHJlY2VudCBxdWVyaWVzIHdoZW4gdGhlIGlzSGlzdG9yeUVuYWJsZWQgaXMgc2V0IHRvIGZhbHNlXG5cdFx0XHQvL0l0IHdvdWxkIGJlIGEgdmlvbGF0aW9uIHRvIHVzZXJzIHByaXZhY3lcblx0XHRcdGlmICh0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5pc0hpc3RvcnlFbmFibGVkKCkgPz8gZmFsc2UpIHtcblx0XHRcdFx0dGhpcy5lYXN5RmlsdGVySW5wdXQuY3VycmVudD8uYWRkUmVjZW50UXVlcnkobWFnaWNRdWVyeSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZWFzeUZpbHRlclJlc3VsdC5kYXRhLnZlcnNpb24gPT09IDEpIHtcblx0XHRcdFx0dGhpcy5oYW5kbGVWMVN1Y2Nlc3MoZWFzeUZpbHRlclJlc3VsdCwgZG9TZWFyY2gpO1xuXHRcdFx0fSBlbHNlIGlmIChlYXN5RmlsdGVyUmVzdWx0LmRhdGEudmVyc2lvbiA9PT0gMikge1xuXHRcdFx0XHQvLyBDcmVhdGUgdGhlIHNhcC51aS5tb2RlbC5GaWx0ZXIgZnJvbSB0aGUgZmlsdGVyIGFuZCBhcHBseSBpdCBkaXJlY3RseSB0byB0aGUgbGlzdCBiaW5kaW5nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGVycm9yXG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRBc0ludmFsaWQoZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHRcdExvZy5lcnJvcihcIkVycm9yIHdoaWxlIGdlbmVyYXRpbmcgZmlsdGVyIGNyaXRlcmlhOiBcIiwgZWFzeUZpbHRlclJlc3VsdC5tZXNzYWdlKTtcblx0XHR9XG5cblx0XHR0aGlzLmZpcmVFdmVudChcImFmdGVyUXVlcnlQcm9jZXNzaW5nXCIpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHN1Y2Nlc3MgcmVzcG9uc2UgZnJvbSB0aGUgQUkgc2VydmljZSBmb3IgdmVyc2lvbiAxIG9mIHRoZSBlYXN5IGZpbHRlci5cblx0ICogQHBhcmFtIGVhc3lGaWx0ZXJSZXN1bHQgVGhlIHJlc3VsdCBmcm9tIHRoZSBBSSBzZXJ2aWNlXG5cdCAqIEBwYXJhbSBnb1ByZXNzZWQgV2hldGhlciB0byBleGVjdXRlIHRoZSBzZWFyY2ggYWZ0ZXIgdGhlIGZpbHRlciBjcml0ZXJpYSBoYXMgYmVlbiBnZW5lcmF0ZWRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHByaXZhdGUgaGFuZGxlVjFTdWNjZXNzKGVhc3lGaWx0ZXJSZXN1bHQ6IFN1Y2Nlc3M8RWFzeUZpbHRlci5FYXN5RmlsdGVyUmVzdWx0PiwgZ29QcmVzc2VkOiBib29sZWFuKTogdm9pZCB7XG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS51bmNsZWFyKSB7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRBc0ludmFsaWQoXG5cdFx0XHRcdHRoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfVU5DTEVBUl9JTlBVVFwiLCBbZWFzeUZpbHRlclJlc3VsdC5kYXRhLnVuY2xlYXJdKVxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIpIHtcblx0XHRcdC8vIFdlIG5lZWQgdG8gc2hvdyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgdGhhdCB0aGUgZmlsdGVyIGNyaXRlcmlhIGhhcyBiZWVuIGdlbmVyYXRlZFxuXHRcdFx0TG9nLmRlYnVnKFwiRmlsdGVyIGNyaXRlcmlhIGdlbmVyYXRlZDogXCIsIEpTT04uc3RyaW5naWZ5KGVhc3lGaWx0ZXJSZXN1bHQuZGF0YS5maWx0ZXIsIG51bGwsIDIpKTtcblxuXHRcdFx0Ly8gVmFsaWRhdGUgYW5kIGFwcGx5IHRoZSBmaWx0ZXIgY3JpdGVyaWFcblx0XHRcdGNvbnN0IHRva2VuczogVG9rZW5EZWZpbml0aW9uW10gPSB0aGlzLmdldERlZmF1bHRUb2tlbnMoZmFsc2UpO1xuXHRcdFx0RWFzeUZpbHRlclV0aWxzLmZvcm1hdERhdGEodG9rZW5zLCBlYXN5RmlsdGVyUmVzdWx0LmRhdGEuZmlsdGVyLCB0aGlzLmZpbHRlckJhck1ldGFkYXRhIGFzIEVhc3lGaWx0ZXJQcm9wZXJ0eU1ldGFkYXRhW10pO1xuXG5cdFx0XHR0aGlzLnN0YXRlLnNob3dSZXN1bHQgPSB0cnVlO1xuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBnb1ByZXNzZWQ7XG5cdFx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRva2Vucztcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVQb3BvdmVyRm9ySW5uZXJDb250cm9scygpOiBQb3BvdmVyIHtcblx0XHRpZiAoIXRoaXMuaW5uZXJDb250cm9sUG9wb3Zlcikge1xuXHRcdFx0dGhpcy5pbm5lckNvbnRyb2xQb3BvdmVyID0gKFxuXHRcdFx0XHQ8UG9wb3ZlciBpZD17dGhpcy5nZXRJZCgpICsgXCItaW5uZXJQb3BvdmVyXCJ9IHNob3dBcnJvdz17ZmFsc2V9IHNob3dIZWFkZXI9e3RydWV9IHBsYWNlbWVudD17UGxhY2VtZW50VHlwZS5Cb3R0b219PlxuXHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRmb290ZXI6IHRoaXMuZ2V0VG9vbGJhcigpXG5cdFx0XHRcdFx0fX1cblx0XHRcdFx0PC9Qb3BvdmVyPlxuXHRcdFx0KTtcblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuaW5uZXJDb250cm9sUG9wb3ZlciBhcyBQb3BvdmVyO1xuXHR9XG5cblx0Z2V0VG9vbGJhcigpOiBPdmVyZmxvd1Rvb2xiYXIgfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy50b29sYmFyKSB7XG5cdFx0XHRjb25zdCBva0J1dHRvbiA9IHRoaXMuZ2V0T2tCdXR0b24oKTtcblx0XHRcdGNvbnN0IHNob3dBbGxCdXR0b24gPSB0aGlzLmdldFNob3dBbGxCdXR0b24oKTtcblx0XHRcdHRoaXMudG9vbGJhciA9IChcblx0XHRcdFx0PE92ZXJmbG93VG9vbGJhcj5cblx0XHRcdFx0XHR7e1xuXHRcdFx0XHRcdFx0Y29udGVudDogKFxuXHRcdFx0XHRcdFx0XHQ8PlxuXHRcdFx0XHRcdFx0XHRcdDxUb29sYmFyU3BhY2VyIC8+XG5cdFx0XHRcdFx0XHRcdFx0e29rQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHRcdHtzaG93QWxsQnV0dG9ufVxuXHRcdFx0XHRcdFx0XHQ8Lz5cblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQ8L092ZXJmbG93VG9vbGJhcj5cblx0XHRcdCk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLnRvb2xiYXI7XG5cdH1cblxuXHRnZXRPa0J1dHRvbigpOiBCdXR0b24gfCB1bmRlZmluZWQge1xuXHRcdGlmICghdGhpcy5va0J1dHRvbikge1xuXHRcdFx0dGhpcy5va0J1dHRvbiA9IDxCdXR0b24gdGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9QT1BPVkVSX09LXCIpfSB0eXBlPXtCdXR0b25UeXBlLkVtcGhhc2l6ZWR9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5va0J1dHRvbjtcblx0fVxuXG5cdGdldFNob3dBbGxCdXR0b24oKTogQnV0dG9uIHwgdW5kZWZpbmVkIHtcblx0XHRpZiAoIXRoaXMuc2hvd0FsbEJ1dHRvbikge1xuXHRcdFx0dGhpcy5zaG93QWxsQnV0dG9uID0gPEJ1dHRvbiB0ZXh0PXt0aGlzLnJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1BPUE9WRVJfU0hPV19BTExfSVRFTVNcIil9IC8+O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5zaG93QWxsQnV0dG9uO1xuXHR9XG5cblx0b25TdGF0ZUNoYW5nZShjaGFuZ2VkUHJvcHM6IHN0cmluZ1tdID0gW10pOiB2b2lkIHtcblx0XHRpZiAoY2hhbmdlZFByb3BzLmluY2x1ZGVzKFwidG9rZW5zXCIpKSB7XG5cdFx0XHRpZiAodGhpcy5zaG91bGRUb2tlbkNoYW5nZUV2ZW50RmlyZWQpIHtcblx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJ0b2tlbnNDaGFuZ2VkXCIsIHtcblx0XHRcdFx0XHR0b2tlbnM6IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgoZGF0YSkgPT4gZGVlcENsb25lKGRhdGEpKSxcblx0XHRcdFx0XHRnb0J1dHRvblByZXNzZWQ6IHRoaXMuc3RhdGUuZ29QcmVzc2VkLnZhbHVlT2YoKVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCA9IHRoaXMuc3RhdGUudG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHRpZiAoISh0aGlzLmlzTWFuZGF0b3J5Q2hlY2tSZXF1aXJlZCA/PyBmYWxzZSkpIHtcblx0XHRcdFx0dGhpcy5jaGVja0lmQWxsTWFuZGF0b3J5VG9rZW5zRmlsbGVkKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vUmVzZXR0aW5nIHRvIGRlZmF1bHQgdmFsdWVzXG5cdFx0dGhpcy5pc01hbmRhdG9yeUNoZWNrUmVxdWlyZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3VsZFRva2VuQ2hhbmdlRXZlbnRGaXJlZCA9IHRydWU7XG5cdH1cblxuXHRjcmVhdGVDb250ZW50KCk6IFZCb3gge1xuXHRcdGNvbnN0ICR0b3BHb0J0biA9IGNyZWF0ZVJlZmVyZW5jZTxCdXR0b24+KCk7XG5cdFx0Y29uc3QgJGJvdEdvQnRuID0gY3JlYXRlUmVmZXJlbmNlPEJ1dHRvbj4oKTtcblx0XHRjb25zdCBvdXRWQm94ID0gKFxuXHRcdFx0PFZCb3g+XG5cdFx0XHRcdDxGbGV4Qm94IHJlbmRlclR5cGU9XCJCYXJlXCI+XG5cdFx0XHRcdFx0PEVhc3lGaWx0ZXJJbnB1dFxuXHRcdFx0XHRcdFx0cmVjb21tZW5kZWRWYWx1ZXM9e3RoaXMucmVjb21tZW5kZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRyZWY9e3RoaXMuZWFzeUZpbHRlcklucHV0fVxuXHRcdFx0XHRcdFx0ZW50ZXJQcmVzc2VkPXt0aGlzLm9uRW50ZXJQcmVzc2VkLmJpbmQodGhpcyl9XG5cdFx0XHRcdFx0XHRxdWVyeUNoYW5nZWQ9eyhlKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuZmlyZUV2ZW50KFwicXVlcnlDaGFuZ2VkXCIsIHsgcXVlcnk6IGUuZ2V0UGFyYW1ldGVyKFwicXVlcnlcIikgfSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0bGl2ZUNoYW5nZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cblx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRpY29uPXtcInNhcC1pY29uOi8vYWlcIn1cblx0XHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpU21hbGxNYXJnaW5CZWdpblwifVxuXHRcdFx0XHRcdFx0cmVmPXskdG9wR29CdG59XG5cdFx0XHRcdFx0XHR2aXNpYmxlPXtub3QoYmluZFN0YXRlKHRoaXMuc3RhdGUuc2hvd1Jlc3VsdCkpfVxuXHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9HT1wiKX1cblx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuRW1waGFzaXplZH1cblx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uR29CdXR0b25QcmVzcy5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0PEZsZXhCb3hcblx0XHRcdFx0XHRyZW5kZXJUeXBlPVwiQmFyZVwiXG5cdFx0XHRcdFx0dmlzaWJsZT17dGhpcy5zdGF0ZS5zaG93UmVzdWx0fVxuXHRcdFx0XHRcdGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn1cblx0XHRcdFx0XHR3cmFwPXtGbGV4V3JhcC5XcmFwfVxuXHRcdFx0XHRcdGp1c3RpZnlDb250ZW50PXtGbGV4SnVzdGlmeUNvbnRlbnQuU3BhY2VCZXR3ZWVufVxuXHRcdFx0XHRcdGNsYXNzPXtcInNhcFVpVGlueU1hcmdpblRvcFwifVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0PEZsZXhCb3ggY2xhc3M9e1wic2FwRmVDb250cm9sc0dhcDhweFwifSByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn0gd3JhcD17RmxleFdyYXAuV3JhcH0+XG5cdFx0XHRcdFx0XHQ8QUlOb3RpY2UgcmVzb3VyY2VCdW5kbGU9e3RoaXMucmVzb3VyY2VCdW5kbGV9IC8+XG5cdFx0XHRcdFx0XHQ8VG9rZW5pemVyXG5cdFx0XHRcdFx0XHRcdGVkaXRhYmxlPXthbmQoYmluZFN0YXRlKHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUpLCB0cnVlKX1cblx0XHRcdFx0XHRcdFx0Y2xhc3M9e1wic2FwRmVDb250cm9sc1Rva2VuaXplclwifVxuXHRcdFx0XHRcdFx0XHR0b2tlbnM9e2JpbmRTdGF0ZSh0aGlzLnN0YXRlLnRva2Vucyl9XG5cdFx0XHRcdFx0XHRcdHJlZj17dGhpcy50b2tlbml6ZXJ9XG5cdFx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0dG9rZW5zOiAoaWR4OiBudW1iZXIsIGN0eDogQ29udGV4dCk6IFRva2VuID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IG9iamVjdCA9IGN0eC5nZXRPYmplY3QoKSBhcyBUb2tlbkRlZmluaXRpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8VG9rZW5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRrZXk9e3RoaXMuc3RhdGUudG9rZW5zLmtleX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17dGhpcy5zdGF0ZS50b2tlbnMubGFiZWx9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXRlbXM9e3RoaXMuc3RhdGUudG9rZW5zLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXN9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bWFuZGF0b3J5PXt0aGlzLmlzS2V5TWFuZGF0b3J5KG9iamVjdC5rZXkpfVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRlbGV0ZT17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgdG9rZW5JbmRleCA9IHRoaXMuc3RhdGUudG9rZW5zLmZpbmRJbmRleCgodG9rZW4pID0+IHRva2VuLmtleSA9PT0gb2JqZWN0LmtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdUb2tlbnMgPSB0aGlzLnN0YXRlLnRva2Vucy5jb25jYXQoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5ld1Rva2Vucy5zcGxpY2UodG9rZW5JbmRleCwgMSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zdGF0ZS50b2tlbnMgPSBuZXdUb2tlbnM7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHt7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjdXN0b21EYXRhOiBbXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cIlRva2VuSW5mb1wiIHZhbHVlPXtvYmplY3R9IC8+LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8Q3VzdG9tRGF0YSBrZXk9XCJwb3BvdmVyXCIgdmFsdWU9e3RoaXMuaW5uZXJDb250cm9sUG9wb3Zlcn0gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhIGtleT1cImVhc3lGaWx0ZXJCYXJDb250YWluZXJcIiB2YWx1ZT17dGhpc30gLz4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxDdXN0b21EYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0a2V5PVwiY29kZUxpc3RcIlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLmZpbHRlckJhck1ldGFkYXRhPy5maW5kKChkYXRhKSA9PiBkYXRhLm5hbWUgPT09IG9iamVjdC5rZXkpPy5jb2RlTGlzdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdF1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L1Rva2VuPlxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQ8L1Rva2VuaXplcj5cblx0XHRcdFx0XHRcdDxCdXR0b25cblx0XHRcdFx0XHRcdFx0dGV4dD17dGhpcy5yZXNvdXJjZUJ1bmRsZS5nZXRUZXh0KFwiTV9FQVNZX0ZJTFRFUl9SRVNFVFwiKX1cblx0XHRcdFx0XHRcdFx0dHlwZT17QnV0dG9uVHlwZS5UcmFuc3BhcmVudH1cblx0XHRcdFx0XHRcdFx0cHJlc3M9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlc2V0U3RhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdC8vUmV0YWluaW5nIHRoZSBmb2N1cyBvbiBwb3BvdmVyIGRvZXNuJ3QgbWFrZSB0aGUgcG9wb3ZlciBjbG9zZSBvbiBldmVyeSBpbnRlcmFjdGlvblxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmZvY3VzKCk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdFx0XHQ8RmxleEJveCByZW5kZXJUeXBlPVwiQmFyZVwiIGFsaWduSXRlbXM9e0ZsZXhBbGlnbkl0ZW1zLkNlbnRlcn0+XG5cdFx0XHRcdFx0XHQ8QnV0dG9uXG5cdFx0XHRcdFx0XHRcdGljb249e1wic2FwLWljb246Ly9haVwifVxuXHRcdFx0XHRcdFx0XHR2aXNpYmxlPXt0aGlzLnN0YXRlLnNob3dSZXN1bHR9XG5cdFx0XHRcdFx0XHRcdHRleHQ9e3RoaXMucmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfR09cIil9XG5cdFx0XHRcdFx0XHRcdHR5cGU9e0J1dHRvblR5cGUuRW1waGFzaXplZH1cblx0XHRcdFx0XHRcdFx0cmVmPXskYm90R29CdG59XG5cdFx0XHRcdFx0XHRcdHByZXNzPXt0aGlzLm9uR29CdXR0b25QcmVzcy5iaW5kKHRoaXMpfVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8L0ZsZXhCb3g+XG5cdFx0XHRcdDwvRmxleEJveD5cblx0XHRcdDwvVkJveD5cblx0XHQpIGFzIFZCb3g7XG5cdFx0RkVTUkhlbHBlci5zZXRTZW1hbnRpY1N0ZXBuYW1lKCR0b3BHb0J0bi5jdXJyZW50ISwgXCJwcmVzc1wiLCBcImZlOmFpOnNlYXJjaFwiKTtcblx0XHRGRVNSSGVscGVyLnNldFNlbWFudGljU3RlcG5hbWUoJGJvdEdvQnRuLmN1cnJlbnQhLCBcInByZXNzXCIsIFwiZmU6YWk6c2VhcmNoXCIpO1xuXHRcdHJldHVybiBvdXRWQm94O1xuXHR9XG5cblx0YXN5bmMgb25Hb0J1dHRvblByZXNzKCk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IGVkaXRhYmxlU3RhdGUgPSB0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5nZXRFZGl0YWJsZSgpO1xuXHRcdHRoaXMuc3RhdGUudG9rZW5pemVyRWRpdGFibGUgPSB0cnVlO1xuXHRcdHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LnNldEVkaXRhYmxlKHRydWUpO1xuXHRcdGlmICghKGVkaXRhYmxlU3RhdGUgPz8gZmFsc2UpKSB7XG5cdFx0XHR0aGlzLmZpcmVFdmVudChcImV4ZWN1dGVTZWFyY2hcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGF3YWl0IHRoaXMub25Hb1ByZXNzKHRoaXMuZWFzeUZpbHRlcklucHV0LmN1cnJlbnQ/LmdldFZhbHVlKCksIHRydWUpO1xuXHR9XG5cblx0cmVzZXRTdGF0ZSgpOiB2b2lkIHtcblx0XHR0aGlzLmZpcmVFdmVudChcImNsZWFyRmlsdGVyc1wiKTtcblx0XHR0aGlzLnN0YXRlLnRva2VucyA9IHRoaXMuZ2V0RGVmYXVsdFRva2Vucyh0cnVlKTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRWYWx1ZShcIlwiKTtcblx0XHR0aGlzLnN0YXRlLnRva2VuaXplckVkaXRhYmxlID0gdHJ1ZTtcblx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZSh0cnVlKTtcblx0XHR0aGlzLnN0YXRlLmdvUHJlc3NlZCA9IGZhbHNlO1xuXHRcdHRoaXMuaXNNYW5kYXRvcnlDaGVja1JlcXVpcmVkID0gdHJ1ZTtcblx0XHQvL1NldCB0aGUgVmFsdWUgU3RhdGVzIG9mIGFsbCB0aGUgVG9rZW5zIGJhY2sgdG8gTm9uZVxuXHRcdHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZvckVhY2goKHRva2VuKSA9PiB0b2tlbi5zZXRQcm9wZXJ0eShcInZhbHVlU3RhdGVcIiwgVmFsdWVTdGF0ZS5Ob25lKSk7XG5cdFx0dGhpcy50b2tlbml6ZXIuY3VycmVudD8uZ2V0VG9rZW5zKCkuZm9yRWFjaCgodG9rZW4pID0+IHRva2VuLnNldFByb3BlcnR5KFwidmFsdWVTdGF0ZVRleHRcIiwgbnVsbCkpO1xuXHR9XG5cblx0Ly9UaGUgYmVsb3cgY29kZSB1cGRhdGVzIHRoZSBleGlzdGluZyBzdGF0ZSBieSBmZXRjaGluZyB0aGUga2V5IGFuZCBzZWxlY3RlZFZhbHVlc1xuXHR1cGRhdGVUb2tlbkFycmF5KGNoYW5nZVR5cGU6IFRva2VuU2V0dGVycywgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlczogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSwgdG9rZW5LZXk6IHN0cmluZyk6IHZvaWQge1xuXHRcdGNvbnN0IG5ld1Rva2VucyA9IHRoaXMuc3RhdGUudG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbLi4udG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlc10gfSkpO1xuXHRcdGNvbnN0IHRva2VuSW5kZXggPSBuZXdUb2tlbnMuZmluZEluZGV4KCh0KSA9PiB0LmtleSA9PT0gdG9rZW5LZXkpO1xuXHRcdGNvbnN0IHRva2VuID0gbmV3VG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmICh0b2tlbkluZGV4ICE9IC0xKSB7XG5cdFx0XHRzd2l0Y2ggKGNoYW5nZVR5cGUpIHtcblx0XHRcdFx0Y2FzZSBcInNldFNlbGVjdGVkVmFsdWVzXCI6XG5cdFx0XHRcdFx0dGhpcy5zZXRTZWxlY3RlZFZhbHVlcyh0b2tlbiwgbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcywgdG9rZW5JbmRleCwgbmV3VG9rZW5zKTtcblx0XHRcdFx0XHR0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gbmV3VG9rZW5TcGVjaWZpY1ZhbHVlcztcblx0XHRcdFx0XHQvL1JlbW92ZSB0aGUgdG9rZW4gZW50aXJlbHlcblx0XHRcdFx0XHRpZiAoIXRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSAmJiB0b2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzLmxlbmd0aCA9PT0gMCkge1xuXHRcdFx0XHRcdFx0bmV3VG9rZW5zLnNwbGljZSh0b2tlbkluZGV4LCAxKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiU3BlY2lmeWluZyBhIHNldHRlciB0aGF0IGlzIG91dCBvZiB0aGUgYm91bmRhcnlcIik7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvLyBVcGRhdGUgdGhlIHN0YXRlIGJ5IGFzc2lnbmluZyB0aGUgbmV3IHRva2VucyBhcnJheVxuXHRcdFx0dGhpcy5zdGF0ZS5nb1ByZXNzZWQgPSBmYWxzZTtcblx0XHRcdHRoaXMuc3RhdGUudG9rZW5zID0gbmV3VG9rZW5zO1xuXHRcdFx0dGhpcy5zdGF0ZS5zaG93UmVzdWx0ID0gbmV3VG9rZW5zLmxlbmd0aCA+IDA7XG5cdFx0XHR0aGlzLmVhc3lGaWx0ZXJJbnB1dC5jdXJyZW50Py5zZXRFZGl0YWJsZShmYWxzZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBzZXRTZWxlY3RlZFZhbHVlcyhcblx0XHR0b2tlbjogVG9rZW5EZWZpbml0aW9uLFxuXHRcdG5ld1Rva2VuU3BlY2lmaWNWYWx1ZXM6IFRva2VuU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW10sXG5cdFx0dG9rZW5JbmRleDogbnVtYmVyLFxuXHRcdG5ld1Rva2VuczogVG9rZW5EZWZpbml0aW9uW11cblx0KTogdm9pZCB7XG5cdFx0dG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyA9IG5ld1Rva2VuU3BlY2lmaWNWYWx1ZXM7XG5cdFx0aWYgKCF0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSkgJiYgdG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcy5sZW5ndGggPT09IDApIHtcblx0XHRcdG5ld1Rva2Vucy5zcGxpY2UodG9rZW5JbmRleCwgMSk7XG5cdFx0fVxuXHR9XG5cblx0aXNLZXlNYW5kYXRvcnkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRpZiAoIXRoaXMubWFuZGF0b3J5S2V5TWFwKSB7XG5cdFx0XHR0aGlzLm1hbmRhdG9yeUtleU1hcCA9IHt9O1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5tYW5kYXRvcnlLZXlNYXBba2V5XSA/IHRydWUgOiBmYWxzZTtcblx0fVxuXG5cdGdldFRva2Vuc0luSW5pdGlhbFN0YXRlKCk6IFRva2VuRGVmaW5pdGlvbltdIHtcblx0XHRjb25zdCBuZXdUb2tlbnMgPSB0aGlzLnN0YXRlLnRva2Vucy5tYXAoKHRva2VuKSA9PiAoeyAuLi50b2tlbiwga2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlczogWy4uLnRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdIH0pKTtcblx0XHRjb25zdCBtYW5kYXRvcnlUb2tlbnMgPSBuZXdUb2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaXNLZXlNYW5kYXRvcnkodG9rZW4ua2V5KSkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRyZXR1cm4gbWFuZGF0b3J5VG9rZW5zLm1hcCgodG9rZW4pID0+ICh7IC4uLnRva2VuLCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBbXSB9KSk7XG5cdH1cblxuXHRnZXRVblNldE1hbmRhdG9yeVRva2Vuc0luQ3VycmVudFN0YXRlKCk6IFRva2VuRGVmaW5pdGlvbltdIHtcblx0XHRyZXR1cm4gdGhpcy5zdGF0ZS50b2tlbnMuZmlsdGVyKCh0b2tlbikgPT4ge1xuXHRcdFx0Y29uc3QgaXNLZXlNYW5kYXRvcnkgPSB0aGlzLmlzS2V5TWFuZGF0b3J5KHRva2VuLmtleSk7XG5cdFx0XHRpZiAoaXNLZXlNYW5kYXRvcnkpIHtcblx0XHRcdFx0cmV0dXJuIHRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMubGVuZ3RoID09PSAwO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0QWN0dWFsVG9rZW5zRnJvbVN0YXRlKHRva2VuczogVG9rZW5EZWZpbml0aW9uW10pOiBFYXN5RmlsdGVyVG9rZW5bXSB8IHVuZGVmaW5lZCB7XG5cdFx0Y29uc3QgcmVxdWlyZWRLZXlzID0gdG9rZW5zLm1hcCgodG9rZW4pID0+IHRva2VuLmtleSk7XG5cdFx0cmV0dXJuIHRoaXMudG9rZW5pemVyLmN1cnJlbnQ/LmdldFRva2VucygpLmZpbHRlcigodG9rZW4pID0+IHJlcXVpcmVkS2V5cy5pbmNsdWRlcyh0b2tlbi5nZXRLZXkoKSkpIGFzXG5cdFx0XHR8IEVhc3lGaWx0ZXJUb2tlbltdXG5cdFx0XHR8IHVuZGVmaW5lZDtcblx0fVxuXG5cdHN0YXRpYyByZW5kZXIocm06IFJlbmRlck1hbmFnZXIsIGNvbnRyb2w6IEVhc3lGaWx0ZXJCYXJDb250YWluZXIpOiB2b2lkIHtcblx0XHRyZXR1cm4ganN4LnJlbmRlclVzaW5nUmVuZGVyTWFuYWdlcihybSwgY29udHJvbCwgKCkgPT4ge1xuXHRcdFx0cmV0dXJuIDxzcGFuIHJlZj17Y29udHJvbH0+e2NvbnRyb2wuZ2V0QWdncmVnYXRpb24oXCJjb250ZW50XCIpfTwvc3Bhbj47XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkNBO0VBQ0E7RUFHQTtFQW1DQTtBQUNBO0FBQ0E7QUFDQTtFQUhBLElBS3FCQSxzQkFBc0IsSUFBQUMsSUFBQSxHQUQxQ0MsY0FBYyxDQUFDLG1EQUFtRCxDQUFDLEVBQUFDLEtBQUEsR0FFbEVDLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUyxDQUFDLENBQUMsRUFBQUMsS0FBQSxHQUc1QkYsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFTLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBRzVCSCxRQUFRLENBQUM7SUFBRUMsSUFBSSxFQUFFO0VBQVMsQ0FBQyxDQUFDLEVBQUFHLEtBQUEsR0FHNUJKLFFBQVEsQ0FBQztJQUFFQyxJQUFJLEVBQUU7RUFBUSxDQUFDLENBQUMsRUFBQUksS0FBQSxHQUczQkwsUUFBUSxDQUFDO0lBQUVDLElBQUksRUFBRTtFQUFRLENBQUMsQ0FBQyxFQUFBSyxLQUFBLEdBRzNCQyxlQUFlLENBQUMsQ0FBQyxFQUFBQyxLQUFBLEdBR2pCRCxlQUFlLENBQUMsQ0FBQyxFQUFBRSxLQUFBLEdBR2pCQyxXQUFXLENBQUM7SUFBRVQsSUFBSSxFQUFFO0VBQXNCLENBQUMsQ0FBQyxFQUFBVSxNQUFBLEdBRzVDQyxLQUFLLENBQUMsQ0FBQyxFQUFBQyxNQUFBLEdBR1BELEtBQUssQ0FBQyxDQUFDLEVBQUFFLE1BQUEsR0FHUEYsS0FBSyxDQUFDLENBQUMsRUFBQUcsTUFBQSxHQVFQSCxLQUFLLENBQUMsQ0FBQyxFQUFBSSxNQUFBLEdBS1BKLEtBQUssQ0FBQyxDQUFDLEVBQUFLLE1BQUEsR0FHUEwsS0FBSyxDQUFDLENBQUMs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