nsc-react-component 4.0.6 → 4.0.8

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.
@@ -30,7 +30,7 @@ import request from "nsc-request";
30
30
  import config from "../../config";
31
31
  import { getStorage, getButtonPermissons } from "@bj-nsc/functions";
32
32
  import HeaderSearch from "../HeaderSearch";
33
- import nscfile from "nsc-file";
33
+ import { convertColumns, getNewColumns } from "./utils";
34
34
  const styles = null;
35
35
  class BasePage extends PureComponent {
36
36
  constructor(props) {
@@ -241,15 +241,7 @@ class BasePage extends PureComponent {
241
241
  const {
242
242
  store: tableStore
243
243
  } = tableProps;
244
- let queryParams = requestParams.queryParams;
245
- if (queryParams && typeof queryParams == "string") {
246
- const Utils = this.props.Utils || {};
247
- let func = new Function("Utils", queryParams);
248
- let converParams = func(Utils);
249
- queryParams = converParams;
250
- } else {
251
- queryParams = queryParams || {};
252
- }
244
+ let queryParams = this.convertQueryParams();
253
245
  let data = queryParams.data || queryParams.params || {};
254
246
  let finalParams = _objectSpread(_objectSpread(_objectSpread({}, data), (_tableStore$requestCo = tableStore.requestConfig) === null || _tableStore$requestCo === void 0 ? void 0 : _tableStore$requestCo.params), params);
255
247
  const {
@@ -275,15 +267,7 @@ class BasePage extends PureComponent {
275
267
  const {
276
268
  store: tableStore
277
269
  } = tableProps;
278
- let queryParams = requestParams.queryParams;
279
- if (queryParams && typeof queryParams == "string") {
280
- const Utils = this.props.Utils || {};
281
- let func = new Function("Utils", queryParams);
282
- let converParams = func(Utils);
283
- queryParams = converParams;
284
- } else {
285
- queryParams = queryParams || {};
286
- }
270
+ let queryParams = this.convertQueryParams();
287
271
  let data = queryParams.data || queryParams.params || {};
288
272
  let finalParams = _objectSpread(_objectSpread(_objectSpread({}, data), (_tableStore$requestCo2 = tableStore.requestConfig) === null || _tableStore$requestCo2 === void 0 ? void 0 : _tableStore$requestCo2.params), params);
289
273
  if (onSearch) {
@@ -811,9 +795,6 @@ class BasePage extends PureComponent {
811
795
  filterColumn,
812
796
  store: _objectSpread({}, newTableStore)
813
797
  }, othertableParams);
814
- let tableColumn = [];
815
- const searchForms = [];
816
- const editorForms = [];
817
798
  const defaultValue = {};
818
799
  const columnButtons = [];
819
800
  const {
@@ -823,129 +804,10 @@ class BasePage extends PureComponent {
823
804
  if (permission.has && permission.menuCode) {
824
805
  permissionButtons = getButtonPermissons(permission.menuCode).permissons || [];
825
806
  }
826
- columns.map(item => {
827
- var _temp$search, _temp$props, _temp$props2, _tempProp$data, _temp, _temp2, _temp3;
828
- let temp = _objectSpread({
829
- width: 100
830
- }, item);
831
- if (temp.search === true || ((_temp$search = temp.search) === null || _temp$search === void 0 ? void 0 : _temp$search.show) === true) {
832
- var _temp$search2, _temp$search3, _temp$search4;
833
- let props = temp.props ? _objectSpread({}, temp.props) : {};
834
- delete props.onChange;
835
- searchForms.push({
836
- name: temp.field || temp.dataIndex,
837
- label: ((_temp$search2 = temp.search) === null || _temp$search2 === void 0 ? void 0 : _temp$search2.label) || temp.title,
838
- type: temp.type,
839
- props: props,
840
- labelCol: (_temp$search3 = temp.search) === null || _temp$search3 === void 0 ? void 0 : _temp$search3.labelCol,
841
- wrapperCol: (_temp$search4 = temp.search) === null || _temp$search4 === void 0 ? void 0 : _temp$search4.wrapperCol,
842
- rules: temp.searchRules ? temp.searchRules : []
843
- });
844
- }
845
- delete temp.search;
846
- temp.editor !== false && editorForms.push({
847
- name: temp.field || temp.dataIndex,
848
- label: temp.title,
849
- rules: temp.rules ? temp.rules : [],
850
- type: temp.type,
851
- span: temp.span,
852
- dictName: temp.dictName,
853
- required: temp.required,
854
- props: _objectSpread({}, temp.props)
855
- });
856
- if (((_temp$props = temp.props) === null || _temp$props === void 0 ? void 0 : _temp$props.defaultValue) !== undefined && ((_temp$props2 = temp.props) === null || _temp$props2 === void 0 ? void 0 : _temp$props2.defaultValue) !== null) {
857
- var _temp$props3;
858
- const name = temp.field || temp.dataIndex;
859
- defaultValue[name] = (_temp$props3 = temp.props) === null || _temp$props3 === void 0 ? void 0 : _temp$props3.defaultValue;
860
- }
861
- delete temp.rules;
862
- delete temp.span;
863
- if (temp.columnSearch) {
864
- temp.filterProps = {
865
- type: temp.type,
866
- props: temp.props
867
- };
868
- }
869
- let tempProp = _objectSpread({}, temp.props);
870
- if (tempProp !== null && tempProp !== void 0 && tempProp.data && (tempProp === null || tempProp === void 0 || (_tempProp$data = tempProp.data) === null || _tempProp$data === void 0 ? void 0 : _tempProp$data.length) > 0) {
871
- temp = _objectSpread({
872
- ellipsis: {
873
- showTitle: false
874
- },
875
- render: text => {
876
- return this.getText(tempProp, text);
877
- }
878
- }, temp);
879
- }
880
- delete temp.props;
881
- if (temp.render && typeof temp.render == 'string') {
882
- let renderStr = temp.render;
883
- temp = _objectSpread(_objectSpread({}, temp), {}, {
884
- render: (_text, _record, _index) => {
885
- const eventOption = {
886
- text: _text,
887
- record: _record,
888
- index: _index,
889
- funcs: this.props.funcs
890
- };
891
- const func = new Function('eventOption,Utils', renderStr);
892
- const res = func(eventOption, this.props.Utils);
893
- return res;
894
- }
895
- });
896
- }
897
- if (temp.type == "Upload" && ((_temp = temp) === null || _temp === void 0 ? void 0 : _temp.columnShow) !== false) {
898
- temp = _objectSpread({
899
- render: (_text, record) => {
900
- if (Array.isArray(record[temp.dataIndex])) {
901
- const files = record[temp.dataIndex];
902
- if (files.length == 1) {
903
- var _files$;
904
- return /*#__PURE__*/React.createElement(Button, {
905
- type: "link",
906
- onClick: () => {
907
- nscfile.download(files[0].fileId);
908
- }
909
- }, (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.fileName);
910
- } else if (files.length > 1) {
911
- return /*#__PURE__*/React.createElement(Button, {
912
- type: "link",
913
- onClick: () => {
914
- let fileIds = [];
915
- files.map(item => {
916
- fileIds.push(item.fileId);
917
- });
918
- nscfile.downloadZip(fileIds.join(","));
919
- }
920
- }, "文件下载");
921
- }
922
- }
923
- }
924
- }, temp);
925
- }
926
- if (temp.type == "Image" && ((_temp2 = temp) === null || _temp2 === void 0 ? void 0 : _temp2.columnShow) !== false) {
927
- temp = _objectSpread({
928
- render: (_text, record) => {
929
- if (Array.isArray(record[temp.dataIndex])) {
930
- const files = record[temp.dataIndex];
931
- if (files.length == 1) {
932
- var _files$2;
933
- return /*#__PURE__*/React.createElement("div", {
934
- className: "nsc-basepage-table-img"
935
- }, (_files$2 = files[0]) === null || _files$2 === void 0 ? void 0 : _files$2.fileName);
936
- } else if (files.length > 1) {
937
- return /*#__PURE__*/React.createElement(Button, {
938
- type: "link",
939
- onClick: () => {}
940
- }, "\u56FE\u7247\u67E5\u770B");
941
- }
942
- }
943
- }
944
- }, temp);
945
- }
946
- delete temp.type;
947
- if (((_temp3 = temp) === null || _temp3 === void 0 ? void 0 : _temp3.columnShow) !== false) tableColumn.push(temp);
948
- });
807
+ const obj = convertColumns(columns, {});
808
+ let tableColumn = getNewColumns(columns, this.props);
809
+ const searchForms = obj.searchForms || [];
810
+ const editorForms = obj.editorForms || [];
949
811
  const toolButtons = [];
950
812
  const {
951
813
  baseActionColumn
@@ -1284,4 +1146,4 @@ class BasePage extends PureComponent {
1284
1146
  }
1285
1147
  }
1286
1148
  export default BasePage;
1287
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsIm5zY2ZpbGUiLCJzdHlsZXMiLCJCYXNlUGFnZSIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfdHlwZSIsIl9zaXplIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInN0b3JlUHJlZml4IiwidHlwZSIsImNvbnRlbnQiLCJzaXplIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsImZvcm1UeXBlIiwidGFibGVTaXplIiwidHJlZVNlYXJjaFByYW1zIiwicG9wb3BlbnMiLCJtb3JlT3BlbiIsImVsZW1lbnRIZWlnaHQiLCJwZXJtaXNzaW9uQnV0dG9ucyIsInF1ZXJ5UGFyYW1zIiwiY29tcG9uZW50RGlkTW91bnQiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQiLCJpbml0RGF0YSIsInBlcm1pc3NvbiIsInBhZ2VDb250ZW50UmVmIiwiY3VycmVudCIsImNsaWVudEhlaWdodCIsInNldFN0YXRlIiwiY29tcG9uZW50RGlkVXBkYXRlIiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkMiIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0Rm9ybVZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0Rm9ybVZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJidXR0b25DbGljayIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0VXJscyIsInJlcXVlc3RDb25maWciLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInVybCIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsInBhZ2VSZWYiLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiY29sdW1ucyIsInN1Ym1pdFVybCIsImZvcm1Qcm9wcyIsImZvcm1QYWdlUHJvcHMiLCJzaG93TGVmdCIsInN1Ym1pdFBhcmFtcyIsInNob3dUb29sQnV0dG9uIiwiYnV0dG9ucyIsImVkaXRvckZvcm0iLCJvblNob3dGb3JtIiwiZm9ybUNoYW5nZVZhbGlkIiwidG9vbEJ1dHRvblBvc2l0aW9uIiwicGVybWlzc2lvbiIsImhhcyIsImZpbHRlckNvbHVtbiIsImFjdGlvbkNvbHVtbiIsInNob3dSb3dTZWxlY3Rpb24iLCJjb2x1bW5PcmRlciIsImV4cGFuZGFibGUiLCJ0YWJsZVRpdGxlIiwib3RoZXJ0YWJsZVBhcmFtcyIsIl9leGNsdWRlZDciLCJuZXdUYWJsZVN0b3JlIiwiX25ld1RhYmxlU3RvcmUkcmVxdWVzIiwidHJlZVN0b3JlIiwidHJlZVNlYXJjaCIsInRpdGxlQWxpYXMiLCJ0cmVlVGl0bGUiLCJvdGhlcnRyZWVQYXJhbXMiLCJfZXhjbHVkZWQ4IiwidGFibGVQYXJhbXMiLCJ0YWJsZUNvbHVtbiIsInNlYXJjaEZvcm1zIiwiZWRpdG9yRm9ybXMiLCJkZWZhdWx0VmFsdWUiLCJtZW51Q29kZSIsInBlcm1pc3NvbnMiLCJfdGVtcCRzZWFyY2giLCJfdGVtcCRwcm9wcyIsIl90ZW1wJHByb3BzMiIsIl90ZW1wUHJvcCRkYXRhIiwiX3RlbXAiLCJfdGVtcDIiLCJfdGVtcDMiLCJ0ZW1wIiwid2lkdGgiLCJzZWFyY2giLCJfdGVtcCRzZWFyY2gyIiwiX3RlbXAkc2VhcmNoMyIsIl90ZW1wJHNlYXJjaDQiLCJvbkNoYW5nZSIsImZpZWxkIiwiZGF0YUluZGV4IiwibGFiZWxDb2wiLCJ3cmFwcGVyQ29sIiwicnVsZXMiLCJzZWFyY2hSdWxlcyIsImVkaXRvciIsInNwYW4iLCJkaWN0TmFtZSIsInJlcXVpcmVkIiwiX3RlbXAkcHJvcHMzIiwiY29sdW1uU2VhcmNoIiwiZmlsdGVyUHJvcHMiLCJ0ZW1wUHJvcCIsImVsbGlwc2lzIiwic2hvd1RpdGxlIiwicmVuZGVyU3RyIiwiX3RleHQiLCJfcmVjb3JkIiwiX2luZGV4IiwiY29sdW1uU2hvdyIsIkFycmF5IiwiaXNBcnJheSIsImZpbGVzIiwiX2ZpbGVzJCIsImRvd25sb2FkIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJmaWxlSWRzIiwiZG93bmxvYWRaaXAiLCJfZmlsZXMkMiIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZGVsZXRlIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRhYmxlSGVhZGVySGVpZ2h0IiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiaGVpZ2h0IiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvblN1bWJpdENhbGxCYWNrIiwiZm9ybXMiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsInJlcXVlc3RPYmplY3QiLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0sIHsgRm9ybVBhZ2VQcm9wcyB9IGZyb20gXCIuLi9Gb3JtUGFnZS9pbmRleFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uLCBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgfCBBcnJheTxzdHJpbmc+XHJcbiAgfCBBcnJheTx7IGNvZGU6IHN0cmluZzsgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uIH0+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KG5ld1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlLCB0eXBlID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZvcm1WYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goZmluYWxQYXJhbXMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvLyBvcGVuPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0geyByZWNvcmQ6IHJvd1JlY29yZCwgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB9O1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IHsgLi4udGhpcy5wcm9wcy5VaXRscyB9XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkXHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAvLyAgIHJlY29yZFNob3csXHJcbiAgICAgICAgICAvLyAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCByZWNvcmQ6IHJlY29yZCwgfSxcclxuICAgICAgICAgIC8vICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgLy8gKTtcclxuICAgICAgICAgIC8vIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAvLyAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocm93UmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgY29sdW1ucyA9IFtdLFxyXG4gICAgICBzaG93U2VhcmNoID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIHN1Ym1pdFVybCA9IFwiXCIsXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgdHJlZVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1Qcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfVxyXG4gICAgaWYgKHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXMpIHtcclxuICAgICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zPy5kYXRhIHx8IHF1ZXJ5UGFyYW1zPy5wYXJhbXMgfHwge307XHJcbiAgICAgIG5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZyA9IHtcclxuICAgICAgICBwYXJhbXM6IHsgLi4uZGF0YSwgLi4ubmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRyZWVTdG9yZSA9IHt9LFxyXG4gICAgICBzaG93U2VhcmNoOiB0cmVlU2VhcmNoID0gdHJ1ZSxcclxuICAgICAgdGl0bGVBbGlhcyA9IFwidGl0bGVcIixcclxuICAgICAgdGl0bGU6IHRyZWVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0cmVlUGFyYW1zXHJcbiAgICB9ID0gdHJlZVByb3BzO1xyXG5cclxuICAgIGxldCB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgZmlsdGVyQ29sdW1uLFxyXG4gICAgICBzdG9yZTogeyAuLi5uZXdUYWJsZVN0b3JlIH0sXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGVkaXRvckZvcm1zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IGRlZmF1bHRWYWx1ZTogYW55ID0ge307XHJcbiAgICBjb25zdCBjb2x1bW5CdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgZWxlbWVudEhlaWdodCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBwZXJtaXNzaW9uQnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKHBlcm1pc3Npb24uaGFzICYmIHBlcm1pc3Npb24ubWVudUNvZGUpIHtcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnMgPVxyXG4gICAgICAgIGdldEJ1dHRvblBlcm1pc3NvbnMocGVybWlzc2lvbi5tZW51Q29kZSkucGVybWlzc29ucyB8fCBbXTtcclxuICAgIH1cclxuICAgIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgbGV0IHRlbXAgPSB7IHdpZHRoOiAxMDAsIC4uLml0ZW0gfTtcclxuICAgICAgaWYgKHRlbXAuc2VhcmNoID09PSB0cnVlIHx8IHRlbXAuc2VhcmNoPy5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IHByb3BzID0gdGVtcC5wcm9wcyA/IHsgLi4udGVtcC5wcm9wcyB9IDoge307XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLm9uQ2hhbmdlO1xyXG4gICAgICAgIHNlYXJjaEZvcm1zLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogdGVtcC5maWVsZCB8fCB0ZW1wLmRhdGFJbmRleCxcclxuICAgICAgICAgIGxhYmVsOiB0ZW1wLnNlYXJjaD8ubGFiZWwgfHwgdGVtcC50aXRsZSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHByb3BzOiBwcm9wcyxcclxuICAgICAgICAgIGxhYmVsQ29sOiB0ZW1wLnNlYXJjaD8ubGFiZWxDb2wsXHJcbiAgICAgICAgICB3cmFwcGVyQ29sOiB0ZW1wLnNlYXJjaD8ud3JhcHBlckNvbCxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnNlYXJjaFJ1bGVzID8gdGVtcC5zZWFyY2hSdWxlcyA6IFtdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnNlYXJjaDtcclxuICAgICAgdGVtcC5lZGl0b3IgIT09IGZhbHNlICYmXHJcbiAgICAgICAgZWRpdG9yRm9ybXMucHVzaCh7XHJcbiAgICAgICAgICBuYW1lOiB0ZW1wLmZpZWxkIHx8IHRlbXAuZGF0YUluZGV4LFxyXG4gICAgICAgICAgbGFiZWw6IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5ydWxlcyA/IHRlbXAucnVsZXMgOiBbXSxcclxuICAgICAgICAgIHR5cGU6IHRlbXAudHlwZSxcclxuICAgICAgICAgIHNwYW46IHRlbXAuc3BhbixcclxuICAgICAgICAgIGRpY3ROYW1lOiB0ZW1wLmRpY3ROYW1lLFxyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRlbXAucmVxdWlyZWQsXHJcbiAgICAgICAgICBwcm9wczogeyAuLi50ZW1wLnByb3BzIH0sXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiZcclxuICAgICAgICB0ZW1wLnByb3BzPy5kZWZhdWx0VmFsdWUgIT09IG51bGxcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXg7XHJcbiAgICAgICAgZGVmYXVsdFZhbHVlW25hbWVdID0gdGVtcC5wcm9wcz8uZGVmYXVsdFZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnJ1bGVzO1xyXG4gICAgICBkZWxldGUgdGVtcC5zcGFuO1xyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IHRlbXBQcm9wID0geyAuLi50ZW1wLnByb3BzIH07XHJcblxyXG4gICAgICBpZiAodGVtcFByb3A/LmRhdGEgJiYgdGVtcFByb3A/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgZWxsaXBzaXM6IHsgc2hvd1RpdGxlOiBmYWxzZSB9LFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFRleHQodGVtcFByb3AsIHRleHQpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnRlbXAsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuXHJcbiAgICAgIGlmICh0ZW1wLnJlbmRlciAmJiB0eXBlb2YgdGVtcC5yZW5kZXIgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBsZXQgcmVuZGVyU3RyID0gdGVtcC5yZW5kZXJcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCBfcmVjb3JkLCBfaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7IHRleHQ6IF90ZXh0LCByZWNvcmQ6IF9yZWNvcmQsIGluZGV4OiBfaW5kZXgsIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIH1cclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbignZXZlbnRPcHRpb24sVXRpbHMnLCByZW5kZXJTdHIpXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZ1bmMoZXZlbnRPcHRpb24sIHRoaXMucHJvcHMuVXRpbHMpXHJcbiAgICAgICAgICAgIHJldHVybiByZXNcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRlbXAudHlwZSA9PSBcIlVwbG9hZFwiICYmIHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCByZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkW3RlbXAuZGF0YUluZGV4XSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHJlY29yZFt0ZW1wLmRhdGFJbmRleF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbnNjZmlsZS5kb3dubG9hZChmaWxlc1swXS5maWxlSWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZXNbMF0/LmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGZpbGVJZHMgPSBbXSBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUlkcy5wdXNoKGl0ZW0uZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgbnNjZmlsZS5kb3dubG9hZFppcChmaWxlSWRzLmpvaW4oXCIsXCIpKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge1wi5paH5Lu25LiL6L29XCJ9XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRlbXAudHlwZSA9PSBcIkltYWdlXCIgJiYgdGVtcD8uY29sdW1uU2hvdyAhPT0gZmFsc2UpIHtcclxuICAgICAgICB0ZW1wID0ge1xyXG4gICAgICAgICAgcmVuZGVyOiAoX3RleHQsIHJlY29yZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZWNvcmRbdGVtcC5kYXRhSW5kZXhdKSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gcmVjb3JkW3RlbXAuZGF0YUluZGV4XTtcclxuICAgICAgICAgICAgICBpZiAoZmlsZXMubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWJhc2VwYWdlLXRhYmxlLWltZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlc1swXT8uZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT17XCJsaW5rXCJ9IG9uQ2xpY2s9eygpID0+IHsgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAg5Zu+54mH5p+l55yLXHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgICAgZGVsZXRlIHRlbXAudHlwZTtcclxuICAgICAgaWYgKHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB0YWJsZUNvbHVtbi5wdXNoKHRlbXApO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIC8vIGFkZDogeyBuYW1lOiBcIuaWsOWinlwiLCBjb2RlOiBcImFkZFwiLCBpY29uOiA8UGx1c091dGxpbmVkIC8+IH0sXHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIikgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7fTtcclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FsbEJhY2sgPSBjb2RlID09IFwiZWRpdG9yXCIgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXtzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbH1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZVwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZVwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChyZXR1cm5CdXR0b24oaXRlbS5jb2RlIHx8IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSwgaXRlbS5yZWNvcmRTaG93KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgcHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgIDogMjAwLFxyXG4gICAgICAgIGZpeGVkOiBcInJpZ2h0XCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dDogYW55LCByZWNvcmQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1hY3Rpb25cIil9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zLCByZWNvcmQpfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKGNvbHVtbk9yZGVyKVxyXG4gICAgICB0YWJsZUNvbHVtbiA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICAgIGFsaWduOiBcImNlbnRlclwiLFxyXG4gICAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLi4udGFibGVDb2x1bW4sXHJcbiAgICAgIF07XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgdGFibGVIZWFkZXJIZWlnaHQgPSA1NTtcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLSB0b29sSGVpZ2h0IC0gcGFkZGluZ0hlaWdodDtcclxuICAgIGxldCBQYWdpbmF0aW9uSGVpZ2h0ID0gdGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSA/ICgzMiArIDE2KSA6IDAgLy8zMiDkuLrliIbpobXlmajpq5jluqYsMTbkuLptYXJnaW7pl7Tot51cclxuICAgIGxldCB0YWJsZUhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICBsZXQgdGFibGVTcm9sbEhlaWdodCA9IHRhYmxlQ29udGVudEhlaWdodCAtIHRhYmxlSGVhZGVySGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUNvbnRlbnRIZWlnaHQgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VGFibGVcclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlUmVmfVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5zPXt0YWJsZUNvbHVtbn1cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kYWJsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIGV4cGFuZEljb246ICh7IGV4cGFuZGVkLCBvbkV4cGFuZCwgcmVjb3JkIH0pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2V4cGFuZGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RG93bk91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0T3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Lz5cclxuICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5leHBhbmRhYmxlLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBjb2x1bW5PcmRlcj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhwYWdpbmF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBjdXJyZW50UGFnZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFBhZ2UgIT09IHBhZ2luYXRpb24uY3VycmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRQYWdlOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xiYXI9e3tcclxuICAgICAgICAgICAgICAgICAgICBvblRvb2xDbGljazoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgb25SZWZyZXNoOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHRoaXMuZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4udGFibGVQcm9wcy50b29sYmFyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93Um93U2VsZWN0aW9uPXtzaG93Um93U2VsZWN0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlSGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgICAgIHsuLi50YWJsZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXtkZWZhdWx0VmFsdWV9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICB7Li4uZm9ybVByb3BzfVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVsdCBCYXNlUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsS0FBSyxNQUFNLGtCQUFrQjtBQUNwQyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsVUFBVSxNQUF5QixtQkFBbUI7QUFDN0QsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBTyxxQkFBcUI7QUFHNUIsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsYUFBYSxFQUNiQyxZQUFZLEVBQ1pDLGdCQUFnQixFQUNoQkMsY0FBYyxRQUNULG1CQUFtQjtBQUMxQixTQUFTQyxjQUFjLEVBQUVDLE9BQU8sUUFBaUIsYUFBYTtBQUM5RCxPQUFPQyxPQUFPLE1BQU0sYUFBYTtBQUNqQyxPQUFPQyxNQUFNLE1BQU0sY0FBYztBQUNqQyxTQUFTQyxVQUFVLEVBQVNDLG1CQUFtQixRQUFRLG1CQUFtQjtBQUMxRSxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBRTFDLE9BQU9DLE9BQU8sTUFBTSxVQUFVO0FBVTlCLE1BQU1DLE1BQU0sR0FBRyxJQUFJO0FBeUZuQixNQUFNQyxRQUFRLFNBQVN6QixhQUFhLENBQXdCO0VBUTFEMEIsV0FBV0EsQ0FBQ0MsS0FBVSxFQUFFO0lBQUEsSUFBQUMsS0FBQSxFQUFBQyxLQUFBO0lBQ3RCLEtBQUssQ0FBQ0YsS0FBSyxDQUFDO0lBQUNHLGVBQUEsZ0NBUkovQixLQUFLLENBQUNnQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLCtCQUN2Qi9CLEtBQUssQ0FBQ2dDLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsaUNBQ3BCL0IsS0FBSyxDQUFDZ0MsU0FBUyxDQUFNLENBQUM7SUFBQUQsZUFBQSxpQ0FDdEIvQixLQUFLLENBQUNnQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLCtCQUN4Qi9CLEtBQUssQ0FBQ2dDLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsc0NBQ2YvQixLQUFLLENBQUNnQyxTQUFTLENBQU0sQ0FBQztJQUFBRCxlQUFBLHFCQUMxQixDQUFDLENBQUM7SUFBQUEsZUFBQSxtQkFvREhFLGVBQW9CLElBQUs7TUFDbkMsTUFBTTtRQUFFQyxJQUFJO1FBQUVDLFFBQVE7UUFBRUM7TUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDQyxLQUFLO01BQzlDLE1BQU1DLEtBQUssR0FBRztRQUFFSixJQUFJO1FBQUVDLFFBQVE7UUFBRUMsT0FBTztRQUFFRyxNQUFNLEVBQUVOLGVBQWUsQ0FBQyxDQUFDO01BQUUsQ0FBQztNQUNyRSxJQUFJLElBQUksQ0FBQ0wsS0FBSyxDQUFDWSxRQUFRLEVBQUU7UUFDdkIsSUFBSSxDQUFDWixLQUFLLENBQUNZLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDO01BQzVCO01BQ0E7SUFDRixDQUFDO0lBQUFQLGVBQUEseUJBZ21CaUJVLFFBQVEsSUFBSztNQUM3QixJQUFJQyxHQUFHLEdBQUcsRUFBRTtNQUNaLEtBQUssSUFBSUMsR0FBRyxJQUFJRixRQUFRLEVBQUU7UUFDeEIsTUFBTUcsSUFBSSxHQUFHSCxRQUFRLENBQUNFLEdBQUcsQ0FBQztRQUMxQixJQUFJQyxJQUFJLENBQUNDLE1BQU0sR0FBRyxDQUFDLEVBQUU7VUFDbkJILEdBQUcsR0FBRyxDQUFDLEdBQUdBLEdBQUcsRUFBRSxHQUFHRSxJQUFJLENBQUM7UUFDekI7TUFDRjtNQUNBLE9BQU9GLEdBQUc7SUFDWixDQUFDO0lBanFCQyxJQUFJO01BQUVJO0lBQVksQ0FBQyxHQUFHMUIsTUFBTSxDQUFDLENBQUM7SUFDOUIsSUFBSTJCLElBQUksR0FBRzFCLFVBQVUsQ0FDbkJ5QixXQUFXLEdBQUdBLFdBQVcsR0FBRyxHQUFHLEdBQUcsVUFBVSxHQUFHLFVBQ2pELENBQUM7SUFDREMsSUFBSSxJQUFBbEIsS0FBQSxHQUFHa0IsSUFBSSxjQUFBbEIsS0FBQSx1QkFBSkEsS0FBQSxDQUFNbUIsT0FBTztJQUNwQixJQUFJQyxJQUFJLEdBQUc1QixVQUFVLENBQ25CeUIsV0FBVyxHQUFHQSxXQUFXLEdBQUcsR0FBRyxHQUFHLFdBQVcsR0FBRyxXQUNsRCxDQUFDO0lBQ0RHLElBQUksSUFBQW5CLEtBQUEsR0FBR21CLElBQUksY0FBQW5CLEtBQUEsdUJBQUpBLEtBQUEsQ0FBTWtCLE9BQU87SUFDcEIsSUFBSSxDQUFDWCxLQUFLLEdBQUc7TUFDWFUsSUFBSSxFQUFFLEtBQUs7TUFDWEcsZUFBZSxFQUFFLEVBQUU7TUFDbkJDLGdCQUFnQixFQUFFLEVBQUU7TUFDcEJDLGVBQWUsRUFBRSxFQUFFO01BQ25CQyxNQUFNLEVBQUUsS0FBSztNQUNiQyxRQUFRLEVBQUVQLElBQUksSUFBSSxPQUFPO01BQ3pCUSxTQUFTLEVBQUVOLElBQUksSUFBSSxTQUFTO01BQzVCTyxlQUFlLEVBQUUsQ0FBQyxDQUFDO01BQ25CQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO01BQ1pDLFFBQVEsRUFBRSxLQUFLO01BQ2ZDLGFBQWEsRUFBRSxDQUFDO01BQ2hCQyxpQkFBaUIsRUFBRSxFQUFFO01BQ3JCQyxXQUFXLEVBQUUsQ0FBQztJQUNoQixDQUFDO0VBQ0g7RUFDQUMsaUJBQWlCQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxxQkFBQTtJQUNsQixNQUFNO01BQUVDLFFBQVE7TUFBRUMsU0FBUyxHQUFHLENBQUM7SUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDckMsS0FBSztJQUMvQyxNQUFNK0IsYUFBYSxJQUFBSSxxQkFBQSxHQUFHLElBQUksQ0FBQ0csY0FBYyxDQUFDQyxPQUFPLGNBQUFKLHFCQUFBLHVCQUEzQkEscUJBQUEsQ0FBNkJLLFlBQVk7SUFDL0QsSUFBSSxDQUFDQyxRQUFRLENBQUM7TUFDWlY7SUFDRixDQUFDLENBQUM7SUFDRkssUUFBUSxJQUFJQSxRQUFRLENBQUMsQ0FBQztFQUN4QjtFQUNBTSxrQkFBa0JBLENBQUEsRUFBRztJQUFBLElBQUFDLHNCQUFBO0lBQ25CLE1BQU1aLGFBQWEsSUFBQVksc0JBQUEsR0FBRyxJQUFJLENBQUNMLGNBQWMsQ0FBQ0MsT0FBTyxjQUFBSSxzQkFBQSx1QkFBM0JBLHNCQUFBLENBQTZCSCxZQUFZO0lBQy9ELElBQUlULGFBQWEsR0FBRyxJQUFJLENBQUN0QixLQUFLLENBQUNzQixhQUFhLEVBQUU7TUFDNUMsSUFBSSxDQUFDVSxRQUFRLENBQUM7UUFDWlY7TUFDRixDQUFDLENBQUM7SUFDSjtFQUNGO0VBQ0FhLGVBQWVBLENBQUNDLE1BQU0sRUFBRUMsUUFBUSxFQUFFO0lBQUEsSUFBQUMscUJBQUE7SUFDaEMsQ0FBQUEscUJBQUEsT0FBSSxDQUFDQyxTQUFTLENBQUNULE9BQU8sY0FBQVEscUJBQUEsZUFBdEJBLHFCQUFBLENBQXdCSCxlQUFlLENBQUNDLE1BQU0sQ0FBQztJQUMvQ0MsUUFBUSxJQUFJQSxRQUFRLENBQUNELE1BQU0sQ0FBQztFQUM5QjtFQUNBSSxRQUFRQSxDQUFDQyxJQUFJLEVBQWdCO0lBQUEsSUFBQUMscUJBQUE7SUFBQSxJQUFkQyxLQUFLLEdBQUFDLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsSUFBSTtJQUN6QixDQUFBRixxQkFBQSxPQUFJLENBQUNJLFNBQVMsQ0FBQ2hCLE9BQU8sY0FBQVkscUJBQUEsZUFBdEJBLHFCQUFBLENBQXdCRixRQUFRLENBQUNDLElBQUksRUFBRUUsS0FBSyxDQUFDO0VBQy9DO0VBV0E7RUFDQUksUUFBUUEsQ0FBQzlDLEtBQVcsRUFBc0M7SUFBQSxJQUFBK0MsZUFBQTtJQUFBLElBQXBDQyxVQUFVLEdBQUFMLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsS0FBSztJQUFBLElBQUVQLFFBQWMsR0FBQU8sU0FBQSxDQUFBcEMsTUFBQSxPQUFBb0MsU0FBQSxNQUFBQyxTQUFBO0lBQ3RELElBQUlLLFFBQVEsR0FBR2pELEtBQUssR0FBQWtELGFBQUEsS0FBUWxELEtBQUssSUFBSyxJQUFJO0lBQzFDLENBQUErQyxlQUFBLE9BQUksQ0FBQ0YsU0FBUyxjQUFBRSxlQUFBLGdCQUFBQSxlQUFBLEdBQWRBLGVBQUEsQ0FBZ0JsQixPQUFPLGNBQUFrQixlQUFBLGVBQXZCQSxlQUFBLENBQXlCSSxJQUFJLENBQUNGLFFBQVEsRUFBRUQsVUFBVSxFQUFFWixRQUFRLENBQUM7RUFDL0Q7O0VBRUE7RUFDQWdCLFFBQVFBLENBQUEsRUFBRztJQUFBLElBQUFDLHNCQUFBO0lBQ1QsQ0FBQUEsc0JBQUEsT0FBSSxDQUFDUixTQUFTLENBQUNoQixPQUFPLGNBQUF3QixzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JELFFBQVEsQ0FBQyxDQUFDO0VBQ3BDO0VBRUFFLFVBQVVBLENBQUNDLE9BQWdCLEVBQUU7SUFBQSxJQUFBQyxzQkFBQTtJQUMzQixDQUFBQSxzQkFBQSxPQUFJLENBQUNYLFNBQVMsQ0FBQ2hCLE9BQU8sY0FBQTJCLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QkYsVUFBVSxDQUFDQyxPQUFPLENBQUM7RUFDN0M7RUFFQUUsaUJBQWlCQSxDQUFDekQsS0FBSyxFQUFlO0lBQUEsSUFBQTBELHNCQUFBO0lBQUEsSUFBYmpELElBQUksR0FBQWtDLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsSUFBSTtJQUNsQyxDQUFBZSxzQkFBQSxPQUFJLENBQUNiLFNBQVMsQ0FBQ2hCLE9BQU8sY0FBQTZCLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QkMsWUFBWSxDQUFDM0QsS0FBSyxFQUFFUyxJQUFJLENBQUM7RUFDbkQ7RUFFQW1ELGlCQUFpQkEsQ0FBQSxFQUFHO0lBQUEsSUFBQUMsc0JBQUE7SUFDbEIsUUFBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUNoQixTQUFTLENBQUNoQixPQUFPLGNBQUFnQyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCQyxZQUFZLENBQUMsQ0FBQztFQUMvQzs7RUFFQTtFQUNBQyxRQUFRQSxDQUFDdkIsSUFBVSxFQUFFO0lBQUEsSUFBQXdCLHFCQUFBLEVBQUFDLHNCQUFBO0lBQ25CLE1BQU07TUFDSkMsU0FBUztNQUNUSCxRQUFRO01BQ1JJLFlBQVksR0FBRyxDQUFDLENBQUM7TUFDakJDLGNBQWMsR0FBRyxTQUFTO01BQzFCQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO01BQ2hCQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO01BQ2xCQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO01BQ2hCQyxhQUFhLEdBQUcsQ0FBQztJQUNuQixDQUFDLEdBQUcsSUFBSSxDQUFDbEYsS0FBSztJQUNkLElBQUltRixLQUFLLEdBQUcsSUFBSTtJQUNoQixNQUFNN0QsZUFBZSxJQUFBb0QscUJBQUEsR0FBRyxJQUFJLENBQUNVLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQW1DLHFCQUFBLHVCQUFyQkEscUJBQUEsQ0FBdUJXLGtCQUFrQixDQUFDLENBQUM7SUFDbkUsTUFBTTlELGdCQUFnQixJQUFBb0Qsc0JBQUEsR0FBRyxJQUFJLENBQUNTLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQW9DLHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUJXLG1CQUFtQixDQUFDLENBQUM7SUFDckUsSUFBSUMsR0FBRyxHQUFHTixXQUFXLENBQUNMLFNBQVMsR0FBR0ssV0FBVyxDQUFDTCxTQUFTLEdBQUdBLFNBQVM7SUFDbkUsSUFBSS9CLE1BQVcsR0FBR21DLGFBQWEsQ0FBQ0gsWUFBWSxHQUN4Q0csYUFBYSxDQUFDSCxZQUFZLEdBQzFCQSxZQUFZO0lBQ2hCLElBQUlDLGNBQWMsSUFBSSxTQUFTLEVBQUU7TUFDL0IsSUFBSXhELGVBQWUsQ0FBQ0wsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUMvQnRDLE9BQU8sQ0FBQzZHLE9BQU8sQ0FBQyxZQUFZLENBQUM7UUFDN0I7TUFDRjtJQUNGO0lBQ0EvRyxLQUFLLENBQUNnSCxPQUFPLENBQUM7TUFDWnJFLE9BQU8sRUFBRSxZQUFZO01BQ3JCO01BQ0FzRSxJQUFJLEVBQUVBLENBQUEsS0FBTTtRQUNWLElBQUlYLFdBQVcsQ0FBQ04sUUFBUSxFQUFFO1VBQ3hCcEYsY0FBYyxDQUNaMEYsV0FBVyxDQUFDTixRQUFRLEVBQ3BCO1lBQ0VrQixPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkYsT0FBTztZQUMzQkMsTUFBTSxFQUFFZCxjQUFjLElBQUksU0FBUyxHQUFHdkQsZ0JBQWdCLEdBQUcyQixJQUFJO1lBQzdEMkMsR0FBRyxFQUFFZixjQUFjLElBQUksU0FBUyxHQUFHeEQsZUFBZSxHQUFHNEIsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUU0QyxFQUFFO1lBQzdEQyxLQUFLLEVBQUUsSUFBSSxDQUFDL0YsS0FBSyxDQUFDK0Y7VUFDcEIsQ0FBQyxFQUNELElBQUksQ0FBQy9GLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztVQUNEO1FBQ0Y7UUFDQSxJQUFJdkIsUUFBUSxFQUFFO1VBQ1pBLFFBQVEsSUFDTkEsUUFBUSxDQUFDSyxjQUFjLElBQUksU0FBUyxHQUFHeEQsZUFBZSxHQUFHNEIsSUFBSSxDQUFDO1VBQ2hFO1FBQ0Y7UUFDQSxJQUFJLENBQUNxQyxHQUFHLEVBQUU7VUFDUixNQUFNLElBQUlVLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDN0I7UUFDQSxNQUFNO1lBQUUvQyxJQUFJLEVBQUVnRCxVQUFVLEdBQUcsQ0FBQztVQUFrQixDQUFDLEdBQUdyRCxNQUFNO1VBQXRCc0QsV0FBVyxHQUFBQyx3QkFBQSxDQUFLdkQsTUFBTSxFQUFBd0QsU0FBQTtRQUN4RCxNQUFNQyxhQUFhLEdBQUExQyxhQUFBO1VBQ2pCMkMsTUFBTSxFQUFFLE1BQU07VUFDZEMsVUFBVSxFQUFFLElBQUk7VUFDaEIzRCxNQUFNLEVBQUFlLGFBQUE7WUFDSmlDLEdBQUcsRUFBRWYsY0FBYyxJQUFJLFNBQVMsR0FBR3hELGVBQWUsQ0FBQ21GLElBQUksQ0FBQyxDQUFDLEdBQUd2RCxJQUFJLENBQUM0QztVQUFFLEdBQ2hFSSxVQUFVO1FBQ2QsR0FDRWhCLGFBQWEsQ0FDakI7UUFDRCxJQUFJd0IsV0FBVyxHQUFHLENBQUMsQ0FBUTtRQUMzQkEsV0FBVyxHQUFBOUMsYUFBQSxDQUFBQSxhQUFBLEtBQVEwQyxhQUFhLEdBQUtILFdBQVcsQ0FBRTtRQUNsRDVHLE9BQU8sQ0FBQ2dHLEdBQUcsRUFBQTNCLGFBQUEsS0FDTjhDLFdBQVcsQ0FDZixDQUFDLENBQ0NDLElBQUksQ0FBQyxVQUFVN0YsR0FBUSxFQUFFO1VBQ3hCLE1BQU07WUFBRThGO1VBQUssQ0FBQyxHQUFHOUYsR0FBRztVQUNwQixJQUFJOEYsSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUFBLElBQUFDLGVBQUEsRUFBQUMscUJBQUEsRUFBQUMsc0JBQUE7WUFDaEJwSSxPQUFPLENBQUNxSSxPQUFPLENBQUMsT0FBTyxDQUFDO1lBQ3hCLElBQUl0RyxLQUFLLElBQUFtRyxlQUFBLEdBQUcxQixLQUFLLENBQUNuQyxTQUFTLGNBQUE2RCxlQUFBLGdCQUFBQSxlQUFBLEdBQWZBLGVBQUEsQ0FBaUJ0RSxPQUFPLGNBQUFzRSxlQUFBLHVCQUF4QkEsZUFBQSxDQUEwQkksZUFBZSxDQUFDLENBQUM7WUFDdkQsRUFBQUgscUJBQUEsR0FBQTNCLEtBQUssQ0FBQ25GLEtBQUssQ0FBQ2tILFdBQVcsY0FBQUoscUJBQUEsdUJBQXZCQSxxQkFBQSxDQUF5QkssZ0JBQWdCLEtBQ3ZDOUgsY0FBYyxFQUFBMEgsc0JBQUEsR0FDWjVCLEtBQUssQ0FBQ25GLEtBQUssQ0FBQ2tILFdBQVcsY0FBQUgsc0JBQUEsdUJBQXZCQSxzQkFBQSxDQUF5QkksZ0JBQWdCLEVBQ3pDO2NBQUV4QixPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkY7WUFBUSxDQUFDLEVBQy9CLElBQUksQ0FBQzNGLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztZQUNIYixLQUFLLENBQUNpQyxTQUFTLENBQUMxRyxLQUFLLENBQUM7VUFDeEIsQ0FBQyxNQUFNO1lBQ0wvQixPQUFPLENBQUMwSSxLQUFLLENBQUMsT0FBTyxDQUFDO1VBQ3hCO1FBQ0YsQ0FBQyxDQUFDLENBQ0RDLEtBQUssQ0FBQyxVQUFVRCxLQUFVLEVBQUU7VUFDM0JFLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLE9BQU8sRUFBRUgsS0FBSyxDQUFDO1FBQzdCLENBQUMsQ0FBQztNQUNOO0lBQ0YsQ0FBQyxDQUFDO0VBQ0o7RUFDQUQsU0FBU0EsQ0FBQ3ZFLE1BQVcsRUFBc0I7SUFBQSxJQUFBNEUscUJBQUEsRUFBQUMsc0JBQUE7SUFBQSxJQUFwQnhDLGFBQWEsR0FBQTdCLFNBQUEsQ0FBQXBDLE1BQUEsUUFBQW9DLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU07TUFDSjZCLGFBQWEsRUFBRXlDLG9CQUFvQixHQUFHLENBQUMsQ0FBQztNQUN4QzNDLGFBQWEsR0FBRyxDQUFDLENBQUM7TUFDbEI0QyxVQUFVLEdBQUcsQ0FBQztJQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDNUgsS0FBSztJQUNkLE1BQU07TUFBRTZILEtBQUssRUFBRUM7SUFBVyxDQUFDLEdBQUdGLFVBQVU7SUFDeEMsSUFBSTNGLFdBQWdCLEdBQUcrQyxhQUFhLENBQUMvQyxXQUFXO0lBQ2hELElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLElBQUksUUFBUSxFQUFFO01BQ2pELE1BQU0rRCxLQUFLLEdBQUcsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBSyxJQUFJLENBQUMsQ0FBQztNQUNwQyxJQUFJK0IsSUFBSSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxPQUFPLEVBQUUvRixXQUFXLENBQUM7TUFDN0MsSUFBSWdHLFlBQVksR0FBR0YsSUFBSSxDQUFDL0IsS0FBSyxDQUFDO01BQzlCL0QsV0FBVyxHQUFHZ0csWUFBWTtJQUM1QixDQUFDLE1BQU07TUFDTGhHLFdBQVcsR0FBR0EsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNqQztJQUNBLElBQUlpQixJQUFJLEdBQUdqQixXQUFXLENBQUNpQixJQUFJLElBQUlqQixXQUFXLENBQUNZLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSTZELFdBQVcsR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ1ZWLElBQUksSUFBQXVFLHFCQUFBLEdBQ0pLLFVBQVUsQ0FBQzVDLGFBQWEsY0FBQXVDLHFCQUFBLHVCQUF4QkEscUJBQUEsQ0FBMEI1RSxNQUFNLEdBQ2hDQSxNQUFNLENBQ1Y7SUFDRCxNQUFNO01BQUVxRixZQUFZLEVBQUVDLFdBQVcsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHTCxVQUFVO0lBQ3JELE1BQU07UUFBRWpGLE1BQU0sRUFBRXVGLFdBQVcsR0FBRyxDQUFDO01BQXVCLENBQUMsR0FBR0QsV0FBVztNQUFoQ0UsZ0JBQWdCLEdBQUFqQyx3QkFBQSxDQUFLK0IsV0FBVyxFQUFBRyxVQUFBO0lBQ3JFLENBQUFaLHNCQUFBLE9BQUksQ0FBQ3RDLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQW1GLHNCQUFBLGVBQXJCQSxzQkFBQSxDQUF1QkcsS0FBSyxDQUFDVSxJQUFJLENBQUEzRSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQzVCK0Qsb0JBQW9CLEdBQ3BCVSxnQkFBZ0IsR0FDaEJuRCxhQUFhO01BQ2hCckMsTUFBTSxFQUFBZSxhQUFBLENBQUFBLGFBQUEsS0FBT3dFLFdBQVcsR0FBSzFCLFdBQVc7SUFBRSxFQUMzQyxDQUFDO0VBQ0o7RUFDQTtFQUNBOUYsUUFBUUEsQ0FBQ2lDLE1BQU0sRUFBRTtJQUFBLElBQUEyRixzQkFBQSxFQUFBQyxzQkFBQTtJQUNmLE1BQU07TUFDSjdILFFBQVE7TUFDUnNHLFdBQVc7TUFDWGxDLGFBQWEsR0FBRyxDQUFDLENBQUM7TUFDbEI0QyxVQUFVLEdBQUcsQ0FBQztJQUNoQixDQUFDLEdBQUcsSUFBSSxDQUFDNUgsS0FBSztJQUNkLE1BQU07TUFBRTZILEtBQUssRUFBRUM7SUFBVyxDQUFDLEdBQUdGLFVBQVU7SUFDeEMsSUFBSTNGLFdBQWdCLEdBQUcrQyxhQUFhLENBQUMvQyxXQUFXO0lBQ2hELElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLElBQUksUUFBUSxFQUFFO01BQ2pELE1BQU0rRCxLQUFLLEdBQUcsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBSyxJQUFJLENBQUMsQ0FBQztNQUNwQyxJQUFJK0IsSUFBSSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxPQUFPLEVBQUUvRixXQUFXLENBQUM7TUFDN0MsSUFBSWdHLFlBQVksR0FBR0YsSUFBSSxDQUFDL0IsS0FBSyxDQUFDO01BQzlCL0QsV0FBVyxHQUFHZ0csWUFBWTtJQUM1QixDQUFDLE1BQU07TUFDTGhHLFdBQVcsR0FBR0EsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNqQztJQUNBLElBQUlpQixJQUFJLEdBQUdqQixXQUFXLENBQUNpQixJQUFJLElBQUlqQixXQUFXLENBQUNZLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDdkQsSUFBSTZELFdBQVcsR0FBQTlDLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLEtBQ1ZWLElBQUksSUFBQXNGLHNCQUFBLEdBQ0pWLFVBQVUsQ0FBQzVDLGFBQWEsY0FBQXNELHNCQUFBLHVCQUF4QkEsc0JBQUEsQ0FBMEIzRixNQUFNLEdBQ2hDQSxNQUFNLENBQ1Y7SUFDRCxJQUFJakMsUUFBUSxFQUFFO01BQ1pBLFFBQVEsQ0FBQzhGLFdBQVcsQ0FBQztNQUNyQjtJQUNGO0lBQ0EsSUFBSTlGLFFBQVEsRUFBRTtNQUNaQSxRQUFRLENBQUFnRCxhQUFBLENBQUFBLGFBQUEsS0FBTThDLFdBQVcsR0FBSyxJQUFJLENBQUNqRyxLQUFLLENBQUNtQixlQUFlLENBQUUsQ0FBQztNQUMzRDtJQUNGO0lBQ0EsSUFBSSxDQUFDd0YsU0FBUyxDQUFBeEQsYUFBQSxDQUFBQSxhQUFBLEtBQU04QyxXQUFXLEdBQUssSUFBSSxDQUFDakcsS0FBSyxDQUFDbUIsZUFBZSxDQUFFLENBQUM7SUFDakUsQ0FBQXNGLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFd0IsZUFBZSxLQUMxQnJKLGNBQWMsRUFBQW9KLHNCQUFBLEdBQ1osSUFBSSxDQUFDekksS0FBSyxDQUFDa0gsV0FBVyxjQUFBdUIsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsZUFBZSxFQUN2QztNQUFFL0MsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87TUFBRTlDLE1BQU0sRUFBRUE7SUFBTyxDQUFDLEVBQy9DLElBQUksQ0FBQzdDLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztFQUNMO0VBQ0E7RUFDQTJDLFdBQVdBLENBQUEsRUFBK0I7SUFBQSxJQUFBQyxzQkFBQTtJQUFBLElBQTlCL0YsTUFBTSxHQUFBUSxTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUMsQ0FBQztJQUFBLElBQUV3RixRQUFRLEdBQUF4RixTQUFBLENBQUFwQyxNQUFBLFFBQUFvQyxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7SUFDdEMsQ0FBQXVGLHNCQUFBLE9BQUksQ0FBQ3hELFFBQVEsQ0FBQzdDLE9BQU8sY0FBQXFHLHNCQUFBLGdCQUFBQSxzQkFBQSxHQUFyQkEsc0JBQUEsQ0FBdUJmLEtBQUssY0FBQWUsc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCRSxNQUFNLENBQUM7TUFDbkNDLFFBQVEsRUFBR2pJLEdBQUcsSUFBSztRQUFBLElBQUFrSSxTQUFBO1FBQ2pCLElBQ0VILFFBQVEsSUFDUixDQUFBL0gsR0FBRyxhQUFIQSxHQUFHLGdCQUFBa0ksU0FBQSxHQUFIbEksR0FBRyxDQUFFb0MsSUFBSSxjQUFBOEYsU0FBQSxnQkFBQUEsU0FBQSxHQUFUQSxTQUFBLENBQVdDLE9BQU8sY0FBQUQsU0FBQSx1QkFBbEJBLFNBQUEsQ0FBb0IvSCxNQUFNLEtBQUksQ0FBQyxJQUMvQixJQUFJLENBQUNSLEtBQUssQ0FBQ3lJLFdBQVcsS0FBSyxDQUFDLEVBQzVCO1VBQUEsSUFBQUMsc0JBQUE7VUFDQSxDQUFBQSxzQkFBQSxPQUFJLENBQUMvRCxRQUFRLENBQUM3QyxPQUFPLGNBQUE0RyxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBckJBLHNCQUFBLENBQXVCdEIsS0FBSyxjQUFBc0Isc0JBQUEsZUFBNUJBLHNCQUFBLENBQThCTCxNQUFNLENBQUM7WUFDbkNqRyxNQUFNLEVBQUFlLGFBQUE7Y0FBSXJCLE9BQU8sRUFBRTtZQUFDLEdBQUtNLE1BQU07VUFDakMsQ0FBQyxDQUFDO1FBQ0o7TUFDRjtJQUNGLENBQUMsQ0FBQztFQUNKO0VBQ0F1RyxRQUFRQSxDQUFDdkcsTUFBVyxFQUFzQjtJQUFBLElBQUF3RyxxQkFBQTtJQUFBLElBQXBCbkUsYUFBYSxHQUFBN0IsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxDQUFDLENBQUM7SUFDdEMsTUFBTTtNQUFFNkIsYUFBYSxFQUFFeUMsb0JBQW9CLEdBQUcsQ0FBQztJQUFFLENBQUMsR0FBRyxJQUFJLENBQUMzSCxLQUFLO0lBQy9ELENBQUFxSixxQkFBQSxPQUFJLENBQUNDLE9BQU8sQ0FBQy9HLE9BQU8sY0FBQThHLHFCQUFBLGVBQXBCQSxxQkFBQSxDQUFzQnhCLEtBQUssQ0FBQ1UsSUFBSSxDQUFBM0UsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDM0IrRCxvQkFBb0IsR0FDcEJ6QyxhQUFhO01BQ2hCckMsTUFBTSxFQUFFQTtJQUFNLEVBQ2YsQ0FBQztFQUNKO0VBQ0F3QyxrQkFBa0JBLENBQUEsRUFBRztJQUFBLElBQUFrRSxzQkFBQTtJQUNuQixRQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ25FLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQWdILHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUJsRSxrQkFBa0IsQ0FBQyxDQUFDO0VBQ3BEO0VBQ0FDLG1CQUFtQkEsQ0FBQSxFQUFHO0lBQUEsSUFBQWtFLHNCQUFBO0lBQ3BCLFFBQUFBLHNCQUFBLEdBQU8sSUFBSSxDQUFDcEUsUUFBUSxDQUFDN0MsT0FBTyxjQUFBaUgsc0JBQUEsdUJBQXJCQSxzQkFBQSxDQUF1QmxFLG1CQUFtQixDQUFDLENBQUM7RUFDckQ7RUFDQW1FLGtCQUFrQkEsQ0FBQ3ZHLElBQTRCLEVBQUU7SUFBQSxJQUFBd0csc0JBQUE7SUFDL0MsUUFBQUEsc0JBQUEsR0FBTyxJQUFJLENBQUN0RSxRQUFRLENBQUM3QyxPQUFPLGNBQUFtSCxzQkFBQSx1QkFBckJBLHNCQUFBLENBQXVCRCxrQkFBa0IsQ0FBQ3ZHLElBQUksQ0FBQztFQUN4RDtFQUNBeUcsbUJBQW1CQSxDQUFDekcsSUFBbUIsRUFBRTtJQUFBLElBQUEwRyxzQkFBQTtJQUN2QyxRQUFBQSxzQkFBQSxHQUFPLElBQUksQ0FBQ3hFLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQXFILHNCQUFBLHVCQUFyQkEsc0JBQUEsQ0FBdUJELG1CQUFtQixDQUFDekcsSUFBSSxDQUFDO0VBQ3pEO0VBQ0EyRyxvQkFBb0JBLENBQUEsRUFBRztJQUFBLElBQUFDLHVCQUFBO0lBQ3JCLFFBQUFBLHVCQUFBLEdBQU8sSUFBSSxDQUFDMUUsUUFBUSxDQUFDN0MsT0FBTyxjQUFBdUgsdUJBQUEsdUJBQXJCQSx1QkFBQSxDQUF1QkQsb0JBQW9CLENBQUMsQ0FBQztFQUN0RDtFQUVBNUMsZUFBZUEsQ0FBQSxFQUFHO0lBQUEsSUFBQThDLGdCQUFBO0lBQ2hCLE1BQU1DLFNBQVMsSUFBQUQsZ0JBQUEsR0FBRyxJQUFJLENBQUMvRyxTQUFTLGNBQUErRyxnQkFBQSxnQkFBQUEsZ0JBQUEsR0FBZEEsZ0JBQUEsQ0FBZ0J4SCxPQUFPLGNBQUF3SCxnQkFBQSx1QkFBdkJBLGdCQUFBLENBQXlCOUMsZUFBZSxDQUFDLENBQUM7SUFDNUQsT0FBQXJELGFBQUEsQ0FBQUEsYUFBQSxLQUFZb0csU0FBUyxHQUFLLElBQUksQ0FBQ3ZKLEtBQUssQ0FBQ21CLGVBQWU7RUFDdEQ7RUFFQXFJLGVBQWVBLENBQUMvRyxJQUFJLEVBQWE7SUFBQSxJQUFYbEMsSUFBSSxHQUFBcUMsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO0lBQzdCLE1BQU07TUFBRXVFO0lBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQzVILEtBQUs7SUFDakMsTUFBTTtNQUFFa0ssTUFBTSxHQUFHO0lBQUssQ0FBQyxHQUFHdEMsVUFBVTtJQUNwQyxJQUFJdUMsTUFBTSxHQUFHLEVBQUU7SUFDZixJQUFJcEosR0FBRyxHQUFHLEVBQUU7SUFDWixJQUFJbUMsSUFBSSxDQUFDa0gsVUFBVSxFQUFFO01BQ25CLE1BQU1DLFFBQVEsR0FBR25ILElBQUksQ0FBQ2tILFVBQVU7TUFDaENDLFFBQVEsQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLElBQUksRUFBRUMsS0FBSyxLQUFLO1FBQzVCLElBQUksT0FBT04sTUFBTSxJQUFJLFVBQVUsRUFBRTtVQUMvQm5KLEdBQUcsR0FBR21KLE1BQU0sQ0FBQ0ssSUFBSSxDQUFDO1FBQ3BCLENBQUMsTUFBTTtVQUNMeEosR0FBRyxHQUFHd0osSUFBSSxDQUFDTCxNQUFNLENBQUM7UUFDcEI7UUFDQSxJQUFJSyxJQUFJLENBQUNILFVBQVUsRUFBRTtVQUNuQixJQUFJLENBQUNILGVBQWUsQ0FBQ00sSUFBSSxDQUFDSCxVQUFVLEVBQUVwSixJQUFJLENBQUM7UUFDN0MsQ0FBQyxNQUFNO1VBQ0xtSixNQUFNLEdBQUcsQ0FBQyxHQUFHbkosSUFBSSxFQUFFRCxHQUFHLENBQUM7UUFDekI7TUFDRixDQUFDLENBQUM7SUFDSixDQUFDLE1BQU07TUFDTG9KLE1BQU0sR0FBRyxDQUFDLEdBQUduSixJQUFJLEVBQUVELEdBQUcsQ0FBQztJQUN6QjtJQUNBLE9BQU9vSixNQUFNO0VBQ2Y7RUFFQU0saUJBQWlCQSxDQUFDQyxXQUFnQixFQUFFQyxXQUFXLEVBQUU7SUFDL0MsTUFBTUMsSUFBSSxHQUFHRixXQUFXLENBQUN6SixNQUFNLEdBQUcsQ0FBQztJQUNuQyxNQUFNO01BQUU0SixVQUFVLEdBQUc7SUFBSyxDQUFDLEdBQUcsSUFBSSxDQUFDN0ssS0FBSztJQUN4QyxNQUFNb0IsT0FBTyxHQUFHc0osV0FBVyxDQUFDSixHQUFHLENBQUMsQ0FBQ0MsSUFBUyxFQUFFQyxLQUFVLEtBQUs7TUFDekQsTUFBQU0sV0FBQSxHQUErRFAsSUFBSSxDQUFDdkssS0FBSztRQUFuRTtVQUFFcUssUUFBUTtVQUFFVSxRQUFRO1VBQUVDLE9BQU87VUFBRUMsSUFBSTtVQUFFcEg7UUFBZ0IsQ0FBQyxHQUFBaUgsV0FBQTtRQUFSakksTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQTBFLFdBQUEsRUFBQUksVUFBQTtNQUMxRCxJQUFJVixLQUFLLEdBQUcsQ0FBQyxFQUFFO1FBQ2Isb0JBQ0VwTSxLQUFBLENBQUErTSxhQUFBO1VBQ0VDLFNBQVMsRUFBRXZNLEdBQUcsQ0FDWlMsT0FBTyxDQUFDTyxNQUFNLEVBQUUscUJBQXFCLENBQUMsRUFDdENQLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLDJCQUEyQixDQUM3QztRQUFFLGdCQUVGekIsS0FBQSxDQUFBK00sYUFBQSxDQUFDM00sTUFBTSxFQUFBNk0sUUFBQTtVQUNMdEssR0FBRyxFQUFFeUosS0FBTTtVQUNYUSxPQUFPLEVBQUVBLENBQUEsS0FBTTtZQUNiLElBQUksQ0FBQ3ZJLFFBQVEsQ0FBQztjQUNaWCxRQUFRLEVBQUU7WUFDWixDQUFDLENBQUM7WUFDRmtKLE9BQU8sSUFBSUEsT0FBTyxDQUFDLENBQUM7VUFDdEI7UUFBRSxHQUNFbkksTUFBTTtVQUNWMUIsSUFBSSxFQUFFO1FBQU8saUJBRWIvQyxLQUFBLENBQUErTSxhQUFBO1VBQU1DLFNBQVMsRUFBRTlMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG1CQUFtQjtRQUFFLEdBQ25Eb0wsSUFDRyxDQUFDLGVBQ1A3TSxLQUFBLENBQUErTSxhQUFBO1VBQU1DLFNBQVMsRUFBRTlMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG1CQUFtQjtRQUFFLEdBQ25Ed0ssUUFDRyxDQUNBLENBQ0wsQ0FBQztNQUVWO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsb0JBQ0VqTSxLQUFBLENBQUErTSxhQUFBO01BQ0VDLFNBQVMsRUFBRXZNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQUMsQ0FBRTtNQUM3RHlMLEtBQUssRUFBRTtRQUFFQyxVQUFVLEVBQUU7TUFBRTtJQUFFLEdBRXhCYixXQUFXLENBQUNKLEdBQUcsQ0FBQyxDQUFDQyxJQUFTLEVBQUVDLEtBQVUsS0FBSztNQUMxQyxJQUFJSSxJQUFJLEVBQUU7UUFDUixJQUFJSixLQUFLLEdBQUcsQ0FBQyxFQUFFO1VBQ2Isb0JBQ0VwTSxLQUFBLENBQUErTSxhQUFBO1lBQ0VwSyxHQUFHLEVBQUV5SixLQUFNO1lBQ1hjLEtBQUssRUFBRTtjQUNMRSxXQUFXLEVBQUU7WUFDZjtVQUFFLEdBRURqQixJQUNFLENBQUM7UUFFVixDQUFDLE1BQU0sSUFBSUMsS0FBSyxJQUFJLENBQUMsRUFBRTtVQUNyQixvQkFDRXBNLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQ3pNLE9BQU87WUFDTjBDLE9BQU8sRUFBRUEsT0FBUTtZQUNqQnFLLEtBQUssRUFBRSxJQUFLO1lBQ1pDLFNBQVMsRUFBQyxRQUFRO1lBQ2xCM0ssR0FBRyxFQUFFeUosS0FBTTtZQUNYbUIsSUFBSSxFQUFFLElBQUksQ0FBQ2xMLEtBQUssQ0FBQ3FCLFFBQVM7WUFDMUI4SixZQUFZLEVBQUdELElBQUksSUFBSztjQUN0QixJQUFJQSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSSxDQUFDbEosUUFBUSxDQUFDO2tCQUNaWCxRQUFRLEVBQUU7Z0JBQ1osQ0FBQyxDQUFDO2NBQ0osQ0FBQyxNQUFNO2dCQUNMLElBQUksQ0FBQ1csUUFBUSxDQUFDO2tCQUNaWCxRQUFRLEVBQUU7Z0JBQ1osQ0FBQyxDQUFDO2NBQ0o7WUFDRjtZQUNGO1lBQ0E7VUFBQSxnQkFFRTFELEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzNNLE1BQU07WUFBQzJDLElBQUksRUFBQztVQUFTLEdBQUMsZUFDbEIsZUFBQS9DLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQ3JNLFlBQVksTUFBRSxDQUNaLENBQ0QsQ0FBQztRQUVkLENBQUMsTUFBTTtVQUNMLE9BQU8sSUFBSTtRQUNiO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsb0JBQ0VWLEtBQUEsQ0FBQStNLGFBQUE7VUFDRXBLLEdBQUcsRUFBRXlKLEtBQU07VUFDWGMsS0FBSyxFQUFFO1lBQ0xFLFdBQVcsRUFBRWhCLEtBQUssSUFBSUUsV0FBVyxDQUFDekosTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUc7VUFDckQ7UUFBRSxHQUVEc0osSUFDRSxDQUFDO01BRVY7SUFDRixDQUFDLENBQ0UsQ0FBQztFQUVWO0VBQ0FzQixrQkFBa0JBLENBQUNDLGFBQWtCLEVBQUVDLFNBQWMsRUFBRTtJQUNyRCxNQUFNO01BQUVDLFdBQVc7TUFBRXBFLFVBQVUsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQzVILEtBQUs7SUFDbkQsTUFBTTtNQUFFaU07SUFBaUIsQ0FBQyxHQUFHek0sTUFBTSxDQUFDLENBQUM7SUFDckMsTUFBTTBNLFVBQVUsR0FBRyxFQUFFO0lBQ3JCLE1BQU07TUFBRWhDLE1BQU0sR0FBRztJQUFLLENBQUMsR0FBR3RDLFVBQVU7SUFFcEMsSUFBSTdHLEdBQUcsR0FBRyxFQUFFO0lBQ1osSUFBSSxPQUFPbUosTUFBTSxJQUFJLFVBQVUsRUFBRTtNQUMvQm5KLEdBQUcsR0FBR21KLE1BQU0sQ0FBQzZCLFNBQVMsQ0FBQztJQUN6QixDQUFDLE1BQU07TUFDTGhMLEdBQUcsR0FBR2dMLFNBQVMsQ0FBQzdCLE1BQU0sQ0FBQztJQUN6QjtJQUNBLElBQUlpQyxRQUFRLEdBQUcsSUFBSTtJQUNuQixJQUFJLENBQUFILFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFRyxRQUFRLE1BQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQ2pELElBQUlGLGdCQUFnQixDQUFDRSxRQUFRLEtBQUssS0FBSyxFQUFFQSxRQUFRLEdBQUcsS0FBSztJQUM5REwsYUFBYSxDQUFDeEIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQzNDLE1BQUE0QixZQUFBLEdBQ0U3QixJQUFJLENBQUN2SyxLQUFLO1FBRE47VUFBRXFLLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVDLElBQUk7VUFBRW9CO1FBQXNCLENBQUMsR0FBQUQsWUFBQTtRQUFSdkosTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQWdHLFlBQUEsRUFBQUUsVUFBQTtNQUVoRSxJQUFJRCxVQUFVLEVBQUU7UUFDZCxJQUFJLE9BQU9BLFVBQVUsSUFBSSxRQUFRLEVBQUU7VUFFakMsSUFBSTtZQUNGLE1BQU1FLFdBQVcsR0FBRztjQUFFM0csTUFBTSxFQUFFbUcsU0FBUztjQUFFcEcsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87Y0FBRUksS0FBSyxFQUFFLElBQUksQ0FBQy9GLEtBQUssQ0FBQytGO1lBQU0sQ0FBQztZQUMvRixNQUFNQyxLQUFLLEdBQUFwQyxhQUFBLEtBQVEsSUFBSSxDQUFDNUQsS0FBSyxDQUFDd00sS0FBSyxDQUFFO1lBQ3JDLElBQUl6RSxJQUFJLEdBQUcsSUFBSUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFcUUsVUFBVSxDQUFDO1lBQ3hELE1BQU14SSxJQUFJLEdBQUdrRSxJQUFJLENBQUN3RSxXQUFXLEVBQUV2RyxLQUFLLENBQUM7WUFDckNuQyxJQUFJLElBQUlxSSxVQUFVLENBQUNPLElBQUksQ0FBQ2xDLElBQUksQ0FBQztVQUMvQixDQUFDLENBQUMsT0FBT21DLENBQUMsRUFBRTtZQUNWLElBQUk5RyxNQUFNLEdBQUdtRyxTQUFTO1lBQ3RCLElBQUlZLElBQUksQ0FBQ04sVUFBVSxDQUFDLEVBQUU7Y0FDcEJILFVBQVUsQ0FBQ08sSUFBSSxDQUFDbEMsSUFBSSxDQUFDO1lBQ3ZCO1VBQ0Y7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNGLENBQUMsTUFBTSxJQUFJLE9BQU84QixVQUFVLElBQUksVUFBVSxFQUFFO1VBQzFDLE1BQU14SSxJQUFJLEdBQUd3SSxVQUFVLENBQUNOLFNBQVMsQ0FBQztVQUNsQ2xJLElBQUksSUFBSXFJLFVBQVUsQ0FBQ08sSUFBSSxDQUFDbEMsSUFBSSxDQUFDO1FBQy9CO01BQ0YsQ0FBQyxNQUFNO1FBQ0wyQixVQUFVLENBQUNPLElBQUksQ0FBQ2xDLElBQUksQ0FBQztNQUN2QjtJQUNGLENBQUMsQ0FBQztJQUNGLElBQUlxQyxNQUFNLEdBQUdaLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUVhLFlBQVksR0FDbENiLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFYSxZQUFZLEdBQ3pCWixnQkFBZ0IsYUFBaEJBLGdCQUFnQixlQUFoQkEsZ0JBQWdCLENBQUVZLFlBQVksR0FDNUJaLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVZLFlBQVksR0FDOUIsQ0FBQztJQUNQLElBQUlqQyxJQUFJLEdBQUcsS0FBSztJQUNoQixJQUFJZ0MsTUFBTSxJQUFJLEtBQUssRUFBRTtNQUNuQmhDLElBQUksR0FBRyxLQUFLO0lBQ2QsQ0FBQyxNQUFNO01BQ0xBLElBQUksR0FBR3NCLFVBQVUsQ0FBQ2pMLE1BQU0sR0FBRzJMLE1BQU07SUFDbkM7SUFFQSxNQUFNeEwsT0FBTyxHQUFHOEssVUFBVSxDQUFDNUIsR0FBRyxDQUFDLENBQUNDLElBQVMsRUFBRUMsS0FBVSxLQUFLO01BQ3hELE1BQUFzQyxZQUFBLEdBQ0V2QyxJQUFJLENBQUN2SyxLQUFLO1FBRE47VUFBRXFLLFFBQVE7VUFBRVUsUUFBUTtVQUFFQyxPQUFPO1VBQUVxQixVQUFVO1VBQUVwQixJQUFJO1VBQUVwSDtRQUFnQixDQUFDLEdBQUFpSixZQUFBO1FBQVJqSyxNQUFNLEdBQUF1RCx3QkFBQSxDQUFBMEcsWUFBQSxFQUFBQyxVQUFBO01BRXRFLElBQUl2QyxLQUFLLEdBQUd3QyxNQUFNLENBQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUM5QixvQkFDRXhPLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzNNLE1BQU0sRUFBQTZNLFFBQUE7VUFDTEQsU0FBUyxFQUFFdk0sR0FBRyxDQUNaUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUN0Q1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQzdDLENBQUU7VUFDRmtCLEdBQUcsRUFBRXlKLEtBQU07VUFDWFEsT0FBTyxFQUFFQSxDQUFBLEtBQU07WUFDYixJQUFJOUgsSUFBSSxHQUFBVSxhQUFBLEtBQVEsSUFBSSxDQUFDbkQsS0FBSyxDQUFDb0IsUUFBUSxDQUFFO1lBQ3JDcUIsSUFBSSxDQUFDNkksU0FBUyxDQUFDakcsRUFBRSxDQUFDLEdBQUcsS0FBSztZQUMxQixJQUFJLENBQUNyRCxRQUFRLENBQUM7Y0FDWlosUUFBUSxFQUFFcUI7WUFDWixDQUFDLENBQUM7WUFDRjhILE9BQU8sSUFBSUEsT0FBTyxDQUFDZSxTQUFTLENBQUM7VUFDL0I7UUFBRSxHQUNFbEosTUFBTTtVQUNWMUIsSUFBSSxFQUFFO1FBQU8sSUFFWmdMLFFBQVEsS0FBSyxLQUFLLGlCQUNqQi9OLEtBQUEsQ0FBQStNLGFBQUE7VUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRvTCxJQUNHLENBQ1AsZUFDRDdNLEtBQUEsQ0FBQStNLGFBQUE7VUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkR3SyxRQUNHLENBQ0EsQ0FBQztNQUViO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBTzZCLFVBQVUsQ0FBQzVCLEdBQUcsQ0FBQyxDQUFDQyxJQUFTLEVBQUVDLEtBQVUsS0FBSztNQUMvQyxNQUFBeUMsWUFBQSxHQUNFMUMsSUFBSSxDQUFDdkssS0FBSztRQUROO1VBQUVxSyxRQUFRO1VBQUVVLFFBQVE7VUFBRUMsT0FBTztVQUFFcUIsVUFBVTtVQUFFcEI7UUFBZ0IsQ0FBQyxHQUFBZ0MsWUFBQTtRQUFScEssTUFBTSxHQUFBdUQsd0JBQUEsQ0FBQTZHLFlBQUEsRUFBQUMsVUFBQTtNQUVoRSxJQUFJdEMsSUFBSSxFQUFFO1FBQ1IsSUFBSUosS0FBSyxHQUFHb0MsTUFBTSxFQUFFO1VBQ2xCLG9CQUNFeE8sS0FBQSxDQUFBK00sYUFBQSxDQUFDM00sTUFBTSxFQUFBNk0sUUFBQTtZQUNMRCxTQUFTLEVBQUV2TSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQixDQUFDLEVBQUU7Y0FDckQsQ0FBQ1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCLENBQUMsR0FBRzJLLEtBQUssS0FBSztZQUM1RCxDQUFDLENBQUU7WUFDSHpKLEdBQUcsRUFBRXlKLEtBQU07WUFDWFEsT0FBTyxFQUFFQSxDQUFBLEtBQU07Y0FDYkEsT0FBTyxJQUFJQSxPQUFPLENBQUNlLFNBQVMsQ0FBQztZQUMvQixDQUFFO1lBQ0ZkLElBQUksRUFBRUE7VUFBSyxHQUNQcEksTUFBTTtZQUNWMUIsSUFBSSxFQUFFO1VBQU8sSUFFWmdMLFFBQVEsS0FBSyxLQUFLLGlCQUNqQi9OLEtBQUEsQ0FBQStNLGFBQUE7WUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1VBQUUsR0FDbkRvTCxJQUNHLENBQ1AsZUFDRDdNLEtBQUEsQ0FBQStNLGFBQUE7WUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1VBQUUsR0FDbkR3SyxRQUNHLENBQ0EsQ0FBQztRQUViLENBQUMsTUFBTSxJQUFJRyxLQUFLLElBQUlvQyxNQUFNLEVBQUU7VUFDMUIsb0JBQ0V4TyxLQUFBLENBQUErTSxhQUFBLENBQUN6TSxPQUFPO1lBQ05nTixTQUFTLEVBQUMsUUFBUTtZQUNsQkQsS0FBSyxFQUFFLElBQUs7WUFDWnJLLE9BQU8sRUFBRUEsT0FBUTtZQUNqQitMLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBRTtZQUNuQnBNLEdBQUcsRUFBRXlKLEtBQU07WUFDWG1CLElBQUksRUFBRSxJQUFJLENBQUNsTCxLQUFLLENBQUNvQixRQUFRLENBQUNkLEdBQUcsQ0FBQyxJQUFJLEtBQU07WUFDeEM2SyxZQUFZLEVBQUdELElBQUksSUFBSztjQUN0QixJQUFJQSxJQUFJLEVBQUU7Z0JBQ1IsSUFBSXpJLElBQUksR0FBQVUsYUFBQSxLQUFRLElBQUksQ0FBQ25ELEtBQUssQ0FBQ29CLFFBQVEsQ0FBRTtnQkFDckNxQixJQUFJLENBQUNuQyxHQUFHLENBQUMsR0FBRyxJQUFJO2dCQUNoQixJQUFJLENBQUMwQixRQUFRLENBQUM7a0JBQ1paLFFBQVEsRUFBRXFCO2dCQUNaLENBQUMsQ0FBQztjQUNKLENBQUMsTUFBTTtnQkFDTCxJQUFJLENBQUNULFFBQVEsQ0FBQztrQkFDWlosUUFBUSxFQUFFLENBQUM7Z0JBQ2IsQ0FBQyxDQUFDO2NBQ0o7WUFDRjtZQUNGO1VBQUEsZ0JBRUV6RCxLQUFBLENBQUErTSxhQUFBO1lBQUdDLFNBQVMsRUFBRTlMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQjtVQUFFLGdCQUNuRHpCLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQ2hNLGdCQUFnQixNQUFFLENBQ2xCLENBQ0ksQ0FBQztRQUVkLENBQUMsTUFBTTtVQUNMLE9BQU8sSUFBSTtRQUNiO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsb0JBQ0VmLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzNNLE1BQU0sRUFBQTZNLFFBQUE7VUFDTEQsU0FBUyxFQUFFdk0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxFQUFFO1lBQ3JELENBQUNQLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLDJCQUEyQixDQUFDLEdBQUcySyxLQUFLLEtBQUs7VUFDNUQsQ0FBQyxDQUFFO1VBQ0h6SixHQUFHLEVBQUV5SixLQUFNO1VBQ1hRLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO1lBQ2JBLE9BQU8sSUFBSUEsT0FBTyxDQUFDZSxTQUFTLENBQUM7VUFDL0I7UUFBRSxHQUNFbEosTUFBTTtVQUNWMUIsSUFBSSxFQUFDO1FBQU0sSUFFVmdMLFFBQVEsS0FBSyxLQUFLLGlCQUNqQi9OLEtBQUEsQ0FBQStNLGFBQUE7VUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkRvTCxJQUNHLENBQ1AsZUFDRDdNLEtBQUEsQ0FBQStNLGFBQUE7VUFBTUMsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO1FBQUUsR0FDbkR3SyxRQUNHLENBQ0EsQ0FBQztNQUViO0lBQ0YsQ0FBQyxDQUFDO0lBQ0Y7RUFDRjtFQUNBO0VBQ0ErQyxVQUFVQSxDQUFDQyxZQUFpQixFQUFFQyxHQUFRLEVBQUU7SUFBQSxJQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN0QyxJQUFJQyxPQUFPLEdBQUcsRUFBRTtJQUNoQixNQUFNO01BQ0pDLFNBQVMsR0FBRyxLQUFLO01BQ2pCQyxXQUFXLEdBQUcsRUFBRTtNQUNoQkMsWUFBWSxHQUFHO0lBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUM3TixLQUFLLENBQUM4TixTQUFTO0lBQ3hCLE1BQU07TUFBRXRNO0lBQWdCLENBQUMsR0FBRyxJQUFJLENBQUNmLEtBQUs7SUFDdEMsTUFBTTtNQUFFSSxRQUFRO01BQUVrTjtJQUFjLENBQUMsR0FBR1QsR0FBRztJQUV2QyxJQUFJek0sUUFBUSxFQUFFO01BQ1o2TSxPQUFPLEdBQUdLLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDQyxTQUFTLENBQUNOLFNBQVMsQ0FBQztNQUN2RCxJQUFJRSxZQUFZLEVBQUU7UUFDaEIsSUFBSSxDQUFDcEwsUUFBUSxDQUFDO1VBQ1pqQixlQUFlLEVBQUU2TCxZQUFZLENBQUMsQ0FBQyxDQUFDO1VBQ2hDekwsZUFBZSxFQUFFO1lBQUUsQ0FBQ2dNLFdBQVcsR0FBR0Y7VUFBUTtRQUM1QyxDQUFDLENBQUM7TUFDSixDQUFDLE1BQU07UUFDTCxJQUFJSyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUNHLE1BQU0sSUFBSSxDQUFDSCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMxRCxRQUFRLEVBQUU7VUFDekQsSUFBSWdELFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSzdMLGVBQWUsRUFBRTtZQUN2QyxJQUFJLENBQUNpQixRQUFRLENBQUM7Y0FDWmpCLGVBQWUsRUFBRTZMLFlBQVksQ0FBQyxDQUFDLENBQUM7Y0FDaEN6TCxlQUFlLEVBQUU7Z0JBQUUsQ0FBQ2dNLFdBQVcsR0FBR0Y7Y0FBUTtZQUM1QyxDQUFDLENBQUM7VUFDSjtRQUNGO01BQ0Y7SUFDRixDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNqTCxRQUFRLENBQUM7UUFDWmpCLGVBQWUsRUFBRWtNLE9BQU87UUFDeEI5TCxlQUFlLEVBQUUsQ0FBQztNQUNwQixDQUFDLENBQUM7SUFDSjtJQUNBLElBQUksSUFBSSxDQUFDNUIsS0FBSyxDQUFDbU8sWUFBWSxFQUFFO01BQzNCLElBQUksQ0FBQ25PLEtBQUssQ0FBQ21PLFlBQVksQ0FBQ2QsWUFBWSxFQUFFQyxHQUFHLENBQUM7TUFDMUM7SUFDRjtJQUNBLE1BQU10RCxTQUFTLEdBQUcsRUFBQXVELGdCQUFBLE9BQUksQ0FBQ3ZLLFNBQVMsY0FBQXVLLGdCQUFBLGdCQUFBQSxnQkFBQSxHQUFkQSxnQkFBQSxDQUFnQmhMLE9BQU8sY0FBQWdMLGdCQUFBLHVCQUF2QkEsZ0JBQUEsQ0FBeUJ0RyxlQUFlLENBQUMsQ0FBQyxLQUFJLENBQUMsQ0FBQztJQUNsRTJHLFdBQVcsSUFBSSxJQUFJLENBQUN4RyxTQUFTLENBQUF4RCxhQUFBLENBQUFBLGFBQUEsS0FBTW9HLFNBQVM7TUFBRSxDQUFDNEQsV0FBVyxHQUFHRjtJQUFPLEVBQUUsQ0FBQztJQUN2RSxFQUFBRixzQkFBQSxPQUFJLENBQUN4TixLQUFLLENBQUNrSCxXQUFXLGNBQUFzRyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCWSxrQkFBa0IsS0FDeEMvTyxjQUFjLEVBQUFvTyxzQkFBQSxHQUNaLElBQUksQ0FBQ3pOLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXVHLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JXLGtCQUFrQixFQUMxQztNQUFFekksT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87TUFBRTBILFlBQVksRUFBRUEsWUFBWTtNQUFFQyxHQUFHLEVBQUVBO0lBQUksQ0FBQyxFQUNyRSxJQUFJLENBQUN0TixLQUFLLENBQUNnRyxLQUNiLENBQUM7SUFDSDtJQUNBO0lBQ0E7SUFDQTtFQUNGO0VBQ0FxSSxXQUFXQSxDQUFBLEVBQUc7SUFBQSxJQUFBQyxzQkFBQTtJQUNaLENBQUFBLHNCQUFBLE9BQUksQ0FBQ3RMLFNBQVMsQ0FBQ1QsT0FBTyxjQUFBK0wsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCQyxXQUFXLENBQUMsQ0FBQztFQUN2QztFQUNBQyxPQUFPQSxDQUFDeE8sS0FBSyxFQUFFeU8sSUFBSSxFQUFFO0lBQUEsSUFBQUMsV0FBQTtJQUNuQixJQUFJQyxPQUFPLEdBQUdGLElBQUk7SUFDbEIsSUFBSXpPLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUVrRCxJQUFJLElBQUksQ0FBQWxELEtBQUssYUFBTEEsS0FBSyxnQkFBQTBPLFdBQUEsR0FBTDFPLEtBQUssQ0FBRWtELElBQUksY0FBQXdMLFdBQUEsdUJBQVhBLFdBQUEsQ0FBYXpOLE1BQU0sSUFBRyxDQUFDLEVBQUU7TUFDMUMsSUFBSWlDLElBQUksR0FBR2xELEtBQUssQ0FBQ2tELElBQUk7TUFDckIsS0FBSyxJQUFJMEwsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxJQUFHMUwsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVqQyxNQUFNLEdBQUUyTixDQUFDLEVBQUUsRUFBRTtRQUNyQyxJQUFJMUwsSUFBSSxDQUFDMEwsQ0FBQyxDQUFDLENBQUNsTyxLQUFLLElBQUkrTixJQUFJLEVBQUU7VUFDekJFLE9BQU8sR0FBR3pMLElBQUksQ0FBQzBMLENBQUMsQ0FBQyxDQUFDeEwsS0FBSztRQUN6QjtNQUNGO0lBQ0Y7SUFDQSxPQUFPdUwsT0FBTztFQUNoQjtFQUNBRSxZQUFZQSxDQUFDM0wsSUFBSSxFQUFFO0lBQUEsSUFBQTRMLHVCQUFBO0lBQ2pCLENBQUFBLHVCQUFBLE9BQUksQ0FBQzFKLFFBQVEsQ0FBQzdDLE9BQU8sY0FBQXVNLHVCQUFBLGdCQUFBQSx1QkFBQSxHQUFyQkEsdUJBQUEsQ0FBdUJqSCxLQUFLLGNBQUFpSCx1QkFBQSxlQUE1QkEsdUJBQUEsQ0FBOEJDLE9BQU8sQ0FBQzdMLElBQUksQ0FBQztFQUM3QztFQUNBOEwsV0FBV0EsQ0FBQzlMLElBQUksRUFBRTtJQUFBLElBQUErTCxzQkFBQTtJQUNoQixDQUFBQSxzQkFBQSxPQUFJLENBQUMzRixPQUFPLENBQUMvRyxPQUFPLGNBQUEwTSxzQkFBQSxnQkFBQUEsc0JBQUEsR0FBcEJBLHNCQUFBLENBQXNCcEgsS0FBSyxjQUFBb0gsc0JBQUEsZUFBM0JBLHNCQUFBLENBQTZCRixPQUFPLENBQUM3TCxJQUFJLENBQUM7RUFDNUM7RUFZQWdNLGtCQUFrQkEsQ0FBQSxFQUFHO0lBQ25CLE1BQU07TUFBRWxLLGFBQWEsR0FBRyxDQUFDO0lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQ2hGLEtBQUs7SUFDekMsSUFBSWlDLFdBQWdCLEdBQUcrQyxhQUFhLENBQUMvQyxXQUFXO0lBQ2hELElBQUlBLFdBQVcsSUFBSSxPQUFPQSxXQUFXLElBQUksUUFBUSxFQUFFO01BQ2pELE1BQU0rRCxLQUFLLEdBQUcsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBSyxJQUFJLENBQUMsQ0FBQztNQUNwQyxJQUFJK0IsSUFBSSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxPQUFPLEVBQUUvRixXQUFXLENBQUM7TUFDN0MsSUFBSWdHLFlBQVksR0FBR0YsSUFBSSxDQUFDL0IsS0FBSyxDQUFDO01BQzlCL0QsV0FBVyxHQUFHZ0csWUFBWTtJQUM1QixDQUFDLE1BQU07TUFDTGhHLFdBQVcsR0FBR0EsV0FBVyxJQUFJLENBQUMsQ0FBQztJQUNqQztJQUNBLE9BQU9BLFdBQVc7RUFDcEI7RUFFQWtOLE1BQU1BLENBQUEsRUFBRztJQUFBLElBQUFDLE1BQUE7TUFBQUMsbUJBQUE7TUFBQUMsb0JBQUE7SUFDUCxNQUFNO01BQ0pDLE9BQU8sR0FBRyxFQUFFO01BQ1oxRSxVQUFVLEdBQUcsSUFBSTtNQUNqQlIsUUFBUTtNQUNSbUYsU0FBUyxHQUFHLEVBQUU7TUFDZDVILFVBQVUsR0FBRyxDQUFDLENBQUM7TUFDZmtHLFNBQVMsR0FBRyxDQUFDLENBQUM7TUFDZDJCLFNBQVMsR0FBRyxDQUFDLENBQUM7TUFDZEMsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsUUFBUSxHQUFHLEtBQUs7TUFDaEJDLFlBQVksR0FBRyxDQUFDLENBQUM7TUFDakJDLGNBQWMsR0FBRyxJQUFJO01BQ3JCQyxPQUFPLEdBQUcsRUFBRTtNQUNaQyxVQUFVLEdBQUcsSUFBSTtNQUNqQkMsVUFBVTtNQUNWQyxlQUFlLEdBQUcsSUFBSTtNQUN0QjdFLFNBQVM7TUFDVDhFLGtCQUFrQixHQUFHLFFBQVE7TUFDN0JsRSxXQUFXO01BQ1hsSCxjQUFjLEdBQUcsU0FBUztNQUMxQkMsV0FBVyxHQUFHLENBQUMsQ0FBQztNQUNoQm9MLFVBQVUsR0FBRztRQUFFQyxHQUFHLEVBQUU7TUFBTSxDQUFDO01BQzNCcEwsYUFBYSxHQUFHLENBQUMsQ0FBQztNQUNsQkMsV0FBVyxHQUFHLENBQUM7SUFDakIsQ0FBQyxHQUFHLElBQUksQ0FBQ2pGLEtBQUs7SUFDZCxNQUFNO1FBQ0o2SCxLQUFLLEVBQUVDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDdEJ1SSxZQUFZLEdBQUcsSUFBSTtRQUNuQkMsWUFBWSxHQUFHLElBQUk7UUFDbkJDLGdCQUFnQixHQUFHLElBQUk7UUFDdkJDLFdBQVcsR0FBRyxJQUFJO1FBQ2xCQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ2Y1QyxZQUFZLEdBQUcsSUFBSTtRQUNuQnBDLEtBQUssRUFBRWlGO01BRVQsQ0FBQyxHQUFHOUksVUFBVTtNQURUK0ksZ0JBQWdCLEdBQUF2Syx3QkFBQSxDQUNqQndCLFVBQVUsRUFBQWdKLFVBQUE7SUFDZCxJQUFJQyxhQUFhLEdBQUFqTixhQUFBLEtBQVFrRSxVQUFVLENBQUU7SUFDckMsSUFBSTlDLGFBQWEsQ0FBQy9DLFdBQVcsRUFBRTtNQUFBLElBQUE2TyxxQkFBQTtNQUM3QixJQUFJN08sV0FBZ0IsR0FBRyxJQUFJLENBQUNpTixrQkFBa0IsQ0FBQyxDQUFDO01BQ2hELElBQUloTSxJQUFJLEdBQUcsQ0FBQWpCLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFaUIsSUFBSSxNQUFJakIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVZLE1BQU0sS0FBSSxDQUFDLENBQUM7TUFDekRnTyxhQUFhLENBQUMzTCxhQUFhLEdBQUc7UUFDNUJyQyxNQUFNLEVBQUFlLGFBQUEsQ0FBQUEsYUFBQSxLQUFPVixJQUFJLElBQUE0TixxQkFBQSxHQUFLRCxhQUFhLENBQUMzTCxhQUFhLGNBQUE0TCxxQkFBQSx1QkFBM0JBLHFCQUFBLENBQTZCak8sTUFBTTtNQUMzRCxDQUFDO0lBQ0g7SUFDQSxNQUFNO1FBQ0pnRixLQUFLLEVBQUVrSixTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCbEcsVUFBVSxFQUFFbUcsVUFBVSxHQUFHLElBQUk7UUFDN0JDLFVBQVUsR0FBRyxPQUFPO1FBQ3BCeEYsS0FBSyxFQUFFeUY7TUFFVCxDQUFDLEdBQUdwRCxTQUFTO01BRFJxRCxlQUFlLEdBQUEvSyx3QkFBQSxDQUNoQjBILFNBQVMsRUFBQXNELFVBQUE7SUFFYixJQUFJQyxXQUFXLEdBQUF6TixhQUFBO01BQ2J5TSxZQUFZO01BQ1p4SSxLQUFLLEVBQUFqRSxhQUFBLEtBQU9pTixhQUFhO0lBQUUsR0FDeEJGLGdCQUFnQixDQUNiO0lBQ1IsSUFBSVcsV0FBa0IsR0FBRyxFQUFFO0lBQzNCLE1BQU1DLFdBQWdCLEdBQUcsRUFBRTtJQUMzQixNQUFNQyxXQUFnQixHQUFHLEVBQUU7SUFDM0IsTUFBTUMsWUFBaUIsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTTNGLGFBQWtCLEdBQUcsRUFBRTtJQUM3QixNQUFNO01BQUUvSjtJQUFjLENBQUMsR0FBRyxJQUFJLENBQUN0QixLQUFLO0lBQ3BDLElBQUl1QixpQkFBaUIsR0FBRyxFQUFFO0lBQzFCLElBQUltTyxVQUFVLENBQUNDLEdBQUcsSUFBSUQsVUFBVSxDQUFDdUIsUUFBUSxFQUFFO01BQ3pDMVAsaUJBQWlCLEdBQ2Z0QyxtQkFBbUIsQ0FBQ3lRLFVBQVUsQ0FBQ3VCLFFBQVEsQ0FBQyxDQUFDQyxVQUFVLElBQUksRUFBRTtJQUM3RDtJQUNBcEMsT0FBTyxDQUFDakYsR0FBRyxDQUFFQyxJQUFTLElBQUs7TUFBQSxJQUFBcUgsWUFBQSxFQUFBQyxXQUFBLEVBQUFDLFlBQUEsRUFBQUMsY0FBQSxFQUFBQyxLQUFBLEVBQUFDLE1BQUEsRUFBQUMsTUFBQTtNQUN6QixJQUFJQyxJQUFJLEdBQUF2TyxhQUFBO1FBQUt3TyxLQUFLLEVBQUU7TUFBRyxHQUFLN0gsSUFBSSxDQUFFO01BQ2xDLElBQUk0SCxJQUFJLENBQUNFLE1BQU0sS0FBSyxJQUFJLElBQUksRUFBQVQsWUFBQSxHQUFBTyxJQUFJLENBQUNFLE1BQU0sY0FBQVQsWUFBQSx1QkFBWEEsWUFBQSxDQUFhL04sSUFBSSxNQUFLLElBQUksRUFBRTtRQUFBLElBQUF5TyxhQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQTtRQUN0RCxJQUFJeFMsS0FBSyxHQUFHbVMsSUFBSSxDQUFDblMsS0FBSyxHQUFBNEQsYUFBQSxLQUFRdU8sSUFBSSxDQUFDblMsS0FBSyxJQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPQSxLQUFLLENBQUN5UyxRQUFRO1FBQ3JCbEIsV0FBVyxDQUFDOUUsSUFBSSxDQUFDO1VBQ2ZuTSxJQUFJLEVBQUU2UixJQUFJLENBQUNPLEtBQUssSUFBSVAsSUFBSSxDQUFDUSxTQUFTO1VBQ2xDdlAsS0FBSyxFQUFFLEVBQUFrUCxhQUFBLEdBQUFILElBQUksQ0FBQ0UsTUFBTSxjQUFBQyxhQUFBLHVCQUFYQSxhQUFBLENBQWFsUCxLQUFLLEtBQUkrTyxJQUFJLENBQUMxRyxLQUFLO1VBQ3ZDdEssSUFBSSxFQUFFZ1IsSUFBSSxDQUFDaFIsSUFBSTtVQUNmbkIsS0FBSyxFQUFFQSxLQUFLO1VBQ1o0UyxRQUFRLEdBQUFMLGFBQUEsR0FBRUosSUFBSSxDQUFDRSxNQUFNLGNBQUFFLGFBQUEsdUJBQVhBLGFBQUEsQ0FBYUssUUFBUTtVQUMvQkMsVUFBVSxHQUFBTCxhQUFBLEdBQUVMLElBQUksQ0FBQ0UsTUFBTSxjQUFBRyxhQUFBLHVCQUFYQSxhQUFBLENBQWFLLFVBQVU7VUFDbkNDLEtBQUssRUFBRVgsSUFBSSxDQUFDWSxXQUFXLEdBQUdaLElBQUksQ0FBQ1ksV0FBVyxHQUFHO1FBQy9DLENBQUMsQ0FBQztNQUNKO01BQ0EsT0FBT1osSUFBSSxDQUFDRSxNQUFNO01BQ2xCRixJQUFJLENBQUNhLE1BQU0sS0FBSyxLQUFLLElBQ25CeEIsV0FBVyxDQUFDL0UsSUFBSSxDQUFDO1FBQ2ZuTSxJQUFJLEVBQUU2UixJQUFJLENBQUNPLEtBQUssSUFBSVAsSUFBSSxDQUFDUSxTQUFTO1FBQ2xDdlAsS0FBSyxFQUFFK08sSUFBSSxDQUFDMUcsS0FBSztRQUNqQnFILEtBQUssRUFBRVgsSUFBSSxDQUFDVyxLQUFLLEdBQUdYLElBQUksQ0FBQ1csS0FBSyxHQUFHLEVBQUU7UUFDbkMzUixJQUFJLEVBQUVnUixJQUFJLENBQUNoUixJQUFJO1FBQ2Y4UixJQUFJLEVBQUVkLElBQUksQ0FBQ2MsSUFBSTtRQUNmQyxRQUFRLEVBQUVmLElBQUksQ0FBQ2UsUUFBUTtRQUN2QkMsUUFBUSxFQUFFaEIsSUFBSSxDQUFDZ0IsUUFBUTtRQUN2Qm5ULEtBQUssRUFBQTRELGFBQUEsS0FBT3VPLElBQUksQ0FBQ25TLEtBQUs7TUFDeEIsQ0FBQyxDQUFDO01BRUosSUFDRSxFQUFBNlIsV0FBQSxHQUFBTSxJQUFJLENBQUNuUyxLQUFLLGNBQUE2UixXQUFBLHVCQUFWQSxXQUFBLENBQVlKLFlBQVksTUFBS25PLFNBQVMsSUFDdEMsRUFBQXdPLFlBQUEsR0FBQUssSUFBSSxDQUFDblMsS0FBSyxjQUFBOFIsWUFBQSx1QkFBVkEsWUFBQSxDQUFZTCxZQUFZLE1BQUssSUFBSSxFQUNqQztRQUFBLElBQUEyQixZQUFBO1FBQ0EsTUFBTTlTLElBQUksR0FBRzZSLElBQUksQ0FBQ08sS0FBSyxJQUFJUCxJQUFJLENBQUNRLFNBQVM7UUFDekNsQixZQUFZLENBQUNuUixJQUFJLENBQUMsSUFBQThTLFlBQUEsR0FBR2pCLElBQUksQ0FBQ25TLEtBQUssY0FBQW9ULFlBQUEsdUJBQVZBLFlBQUEsQ0FBWTNCLFlBQVk7TUFDL0M7TUFDQSxPQUFPVSxJQUFJLENBQUNXLEtBQUs7TUFDakIsT0FBT1gsSUFBSSxDQUFDYyxJQUFJO01BQ2hCLElBQUlkLElBQUksQ0FBQ2tCLFlBQVksRUFBRTtRQUNyQmxCLElBQUksQ0FBQ21CLFdBQVcsR0FBRztVQUNqQm5TLElBQUksRUFBRWdSLElBQUksQ0FBQ2hSLElBQUk7VUFDZm5CLEtBQUssRUFBRW1TLElBQUksQ0FBQ25TO1FBQ2QsQ0FBQztNQUNIO01BRUEsSUFBSXVULFFBQVEsR0FBQTNQLGFBQUEsS0FBUXVPLElBQUksQ0FBQ25TLEtBQUssQ0FBRTtNQUVoQyxJQUFJdVQsUUFBUSxhQUFSQSxRQUFRLGVBQVJBLFFBQVEsQ0FBRXJRLElBQUksSUFBSSxDQUFBcVEsUUFBUSxhQUFSQSxRQUFRLGdCQUFBeEIsY0FBQSxHQUFSd0IsUUFBUSxDQUFFclEsSUFBSSxjQUFBNk8sY0FBQSx1QkFBZEEsY0FBQSxDQUFnQjlRLE1BQU0sSUFBRyxDQUFDLEVBQUU7UUFDaERrUixJQUFJLEdBQUF2TyxhQUFBO1VBQ0Y0UCxRQUFRLEVBQUU7WUFBRUMsU0FBUyxFQUFFO1VBQU0sQ0FBQztVQUM5QnRFLE1BQU0sRUFBR1YsSUFBUyxJQUFLO1lBQ3JCLE9BQU8sSUFBSSxDQUFDRCxPQUFPLENBQUMrRSxRQUFRLEVBQUU5RSxJQUFJLENBQUM7VUFDckM7UUFBQyxHQUNFMEQsSUFBSSxDQUNSO01BQ0g7TUFDQSxPQUFPQSxJQUFJLENBQUNuUyxLQUFLO01BRWpCLElBQUltUyxJQUFJLENBQUNoRCxNQUFNLElBQUksT0FBT2dELElBQUksQ0FBQ2hELE1BQU0sSUFBSSxRQUFRLEVBQUU7UUFDakQsSUFBSXVFLFNBQVMsR0FBR3ZCLElBQUksQ0FBQ2hELE1BQU07UUFDM0JnRCxJQUFJLEdBQUF2TyxhQUFBLENBQUFBLGFBQUEsS0FDQ3VPLElBQUk7VUFDUGhELE1BQU0sRUFBRUEsQ0FBQ3dFLEtBQUssRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEtBQUs7WUFDbEMsTUFBTXRILFdBQVcsR0FBRztjQUFFa0MsSUFBSSxFQUFFa0YsS0FBSztjQUFFL04sTUFBTSxFQUFFZ08sT0FBTztjQUFFcEosS0FBSyxFQUFFcUosTUFBTTtjQUFFOU4sS0FBSyxFQUFFLElBQUksQ0FBQy9GLEtBQUssQ0FBQytGO1lBQU0sQ0FBQztZQUM1RixNQUFNZ0MsSUFBSSxHQUFHLElBQUlDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRTBMLFNBQVMsQ0FBQztZQUN6RCxNQUFNNVMsR0FBRyxHQUFHaUgsSUFBSSxDQUFDd0UsV0FBVyxFQUFFLElBQUksQ0FBQ3ZNLEtBQUssQ0FBQ2dHLEtBQUssQ0FBQztZQUMvQyxPQUFPbEYsR0FBRztVQUNaO1FBQUMsRUFDRjtNQUNIO01BQ0EsSUFBSXFSLElBQUksQ0FBQ2hSLElBQUksSUFBSSxRQUFRLElBQUksRUFBQTZRLEtBQUEsR0FBQUcsSUFBSSxjQUFBSCxLQUFBLHVCQUFKQSxLQUFBLENBQU04QixVQUFVLE1BQUssS0FBSyxFQUFFO1FBQ3ZEM0IsSUFBSSxHQUFBdk8sYUFBQTtVQUNGdUwsTUFBTSxFQUFFQSxDQUFDd0UsS0FBSyxFQUFFL04sTUFBTSxLQUFLO1lBQ3pCLElBQUltTyxLQUFLLENBQUNDLE9BQU8sQ0FBQ3BPLE1BQU0sQ0FBQ3VNLElBQUksQ0FBQ1EsU0FBUyxDQUFDLENBQUMsRUFBRTtjQUN6QyxNQUFNc0IsS0FBSyxHQUFHck8sTUFBTSxDQUFDdU0sSUFBSSxDQUFDUSxTQUFTLENBQUM7Y0FDcEMsSUFBSXNCLEtBQUssQ0FBQ2hULE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQUEsSUFBQWlULE9BQUE7Z0JBQ3JCLG9CQUNFOVYsS0FBQSxDQUFBK00sYUFBQSxDQUFDM00sTUFBTTtrQkFDTDJDLElBQUksRUFBRSxNQUFPO2tCQUNiNkosT0FBTyxFQUFFQSxDQUFBLEtBQU07b0JBQ2JwTCxPQUFPLENBQUN1VSxRQUFRLENBQUNGLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0csTUFBTSxDQUFDO2tCQUNuQztnQkFBRSxJQUFBRixPQUFBLEdBRURELEtBQUssQ0FBQyxDQUFDLENBQUMsY0FBQUMsT0FBQSx1QkFBUkEsT0FBQSxDQUFVRyxRQUNMLENBQUM7Y0FFYixDQUFDLE1BQU0sSUFBSUosS0FBSyxDQUFDaFQsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDM0Isb0JBQ0U3QyxLQUFBLENBQUErTSxhQUFBLENBQUMzTSxNQUFNO2tCQUNMMkMsSUFBSSxFQUFFLE1BQU87a0JBQ2I2SixPQUFPLEVBQUVBLENBQUEsS0FBTTtvQkFDYixJQUFJc0osT0FBTyxHQUFHLEVBQVM7b0JBQ3ZCTCxLQUFLLENBQUMzSixHQUFHLENBQUVDLElBQUksSUFBSztzQkFDbEIrSixPQUFPLENBQUM3SCxJQUFJLENBQUNsQyxJQUFJLENBQUM2SixNQUFNLENBQUM7b0JBQzNCLENBQUMsQ0FBQztvQkFDRnhVLE9BQU8sQ0FBQzJVLFdBQVcsQ0FBQ0QsT0FBTyxDQUFDN04sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2tCQUN4QztnQkFBRSxHQUVELE1BQ0ssQ0FBQztjQUViO1lBQ0Y7VUFDRjtRQUFDLEdBQ0UwTCxJQUFJLENBQ1I7TUFDSDtNQUNBLElBQUlBLElBQUksQ0FBQ2hSLElBQUksSUFBSSxPQUFPLElBQUksRUFBQThRLE1BQUEsR0FBQUUsSUFBSSxjQUFBRixNQUFBLHVCQUFKQSxNQUFBLENBQU02QixVQUFVLE1BQUssS0FBSyxFQUFFO1FBQ3REM0IsSUFBSSxHQUFBdk8sYUFBQTtVQUNGdUwsTUFBTSxFQUFFQSxDQUFDd0UsS0FBSyxFQUFFL04sTUFBTSxLQUFLO1lBQ3pCLElBQUltTyxLQUFLLENBQUNDLE9BQU8sQ0FBQ3BPLE1BQU0sQ0FBQ3VNLElBQUksQ0FBQ1EsU0FBUyxDQUFDLENBQUMsRUFBRTtjQUN6QyxNQUFNc0IsS0FBSyxHQUFHck8sTUFBTSxDQUFDdU0sSUFBSSxDQUFDUSxTQUFTLENBQUM7Y0FDcEMsSUFBSXNCLEtBQUssQ0FBQ2hULE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQUEsSUFBQXVULFFBQUE7Z0JBQ3JCLG9CQUNFcFcsS0FBQSxDQUFBK00sYUFBQTtrQkFBS0MsU0FBUyxFQUFDO2dCQUF3QixJQUFBb0osUUFBQSxHQUNwQ1AsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFBTyxRQUFBLHVCQUFSQSxRQUFBLENBQVVILFFBQ1IsQ0FBQztjQUVWLENBQUMsTUFBTSxJQUFJSixLQUFLLENBQUNoVCxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMzQixvQkFDRTdDLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzNNLE1BQU07a0JBQUMyQyxJQUFJLEVBQUUsTUFBTztrQkFBQzZKLE9BQU8sRUFBRUEsQ0FBQSxLQUFNLENBQUU7Z0JBQUUsR0FBQywwQkFFbEMsQ0FBQztjQUViO1lBQ0Y7VUFDRjtRQUFDLEdBQ0VtSCxJQUFJLENBQ1I7TUFDSDtNQUNBLE9BQU9BLElBQUksQ0FBQ2hSLElBQUk7TUFDaEIsSUFBSSxFQUFBK1EsTUFBQSxHQUFBQyxJQUFJLGNBQUFELE1BQUEsdUJBQUpBLE1BQUEsQ0FBTTRCLFVBQVUsTUFBSyxLQUFLLEVBQUV4QyxXQUFXLENBQUM3RSxJQUFJLENBQUMwRixJQUFJLENBQUM7SUFDeEQsQ0FBQyxDQUFDO0lBQ0YsTUFBTXNDLFdBQWdCLEdBQUcsRUFBRTtJQUMzQixNQUFNO01BQUV4STtJQUFpQixDQUFDLEdBQUd6TSxNQUFNLENBQUMsQ0FBQztJQUNyQyxJQUFJMk0sUUFBUSxHQUFHLElBQUk7SUFDbkIsSUFBSSxDQUFBSCxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUcsUUFBUSxNQUFLLEtBQUssRUFBRUEsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUNqRCxJQUFJRixnQkFBZ0IsQ0FBQ0UsUUFBUSxLQUFLLEtBQUssRUFBRUEsUUFBUSxHQUFHLEtBQUs7SUFDOUQsTUFBTXVJLFNBQVMsR0FBRztNQUNoQjtNQUNBMUIsTUFBTSxFQUFFO1FBQUUxUyxJQUFJLEVBQUUsSUFBSTtRQUFFc0csSUFBSSxFQUFFLFFBQVE7UUFBRXFFLElBQUksZUFBRTdNLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQ25NLFlBQVksTUFBRTtNQUFFLENBQUM7TUFDOUQyVixNQUFNLEVBQUU7UUFBRXJVLElBQUksRUFBRSxJQUFJO1FBQUVzRyxJQUFJLEVBQUUsUUFBUTtRQUFFcUUsSUFBSSxlQUFFN00sS0FBQSxDQUFBK00sYUFBQSxDQUFDL0wsY0FBYyxNQUFFO01BQUUsQ0FBQztNQUNoRWlULE1BQU0sRUFBRTtRQUFFL1IsSUFBSSxFQUFFLElBQUk7UUFBRXNHLElBQUksRUFBRSxRQUFRO1FBQUVxRSxJQUFJLGVBQUU3TSxLQUFBLENBQUErTSxhQUFBLENBQUNwTSxXQUFXLE1BQUU7TUFBRTtJQUM5RCxDQUFDO0lBQ0QsTUFBTTZWLFlBQVksR0FBRyxTQUFBQSxDQUFDaE8sSUFBSSxFQUFnQjtNQUFBLElBQUFpTyxlQUFBO01BQUEsSUFBZGhSLElBQUksR0FBQVIsU0FBQSxDQUFBcEMsTUFBQSxRQUFBb0MsU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO01BQ25DLElBQUlyRCxLQUFLLEdBQUcsQ0FBQyxDQUFDO01BQ2QsSUFBSTZELElBQUksRUFBRTtRQUNSN0QsS0FBSyxHQUFHO1VBQUVxTSxVQUFVLEVBQUV4STtRQUFLLENBQUM7TUFDOUI7TUFDQSxvQkFDRXpGLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzNNLE1BQU0sRUFBQTZNLFFBQUE7UUFDTEwsT0FBTyxFQUFHcEYsTUFBVyxJQUFLO1VBQ3hCLElBQUlnQixJQUFJLElBQUksUUFBUSxFQUFFO1lBQ3BCd0ksTUFBSSxDQUFDM0ssUUFBUSxDQUFDbUIsTUFBTSxDQUFDO1VBQ3ZCLENBQUMsTUFBTTtZQUNMLElBQUlnQixJQUFJLElBQUksUUFBUSxJQUFJN0IsV0FBVyxDQUFDK1AsUUFBUSxFQUFFO2NBQzVDelYsY0FBYyxDQUNaMEYsV0FBVyxDQUFDK1AsUUFBUSxFQUNwQjtnQkFDRW5QLE9BQU8sRUFBRXlKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3FJLFNBQVMsSUFBSXJJLE1BQU07Z0JBQ2xDRyxLQUFLLEVBQUVxSixNQUFJLENBQUNwUCxLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0RxSixNQUFJLENBQUNwUCxLQUFLLENBQUNnRyxLQUNiLENBQUM7Y0FDRDtZQUNGLENBQUMsTUFBTSxJQUFJWSxJQUFJLElBQUksUUFBUSxJQUFJN0IsV0FBVyxDQUFDbkUsUUFBUSxFQUFFO2NBQ25EdkIsY0FBYyxDQUNaMEYsV0FBVyxDQUFDbkUsUUFBUSxFQUNwQjtnQkFDRStFLE9BQU8sRUFBRXlKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ3FJLFNBQVMsSUFBSXJJLE1BQU07Z0JBQ2xDRyxLQUFLLEVBQUVxSixNQUFJLENBQUNwUCxLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0RxSixNQUFJLENBQUNwUCxLQUFLLENBQUNnRyxLQUNiLENBQUM7Y0FDRDtZQUNGO1lBQ0EsSUFBSWdLLFVBQVUsRUFBRTtjQUNkQSxVQUFVLENBQUNwSyxNQUFNLENBQUNxSSxTQUFTLElBQUlySSxNQUFNLEVBQUVnQixJQUFJLENBQUM7Y0FDNUM7WUFDRjtZQUVBd0ksTUFBSSxDQUFDNUwsUUFBUSxDQUFDb0MsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTSxFQUFFZ0IsSUFBSSxFQUFFLE1BQU07Y0FBQSxJQUFBbU8scUJBQUEsRUFBQUMsc0JBQUE7Y0FDcEQsSUFBSWxTLFFBQVEsR0FBRzhELElBQUksSUFBSSxRQUFRLElBQUFtTyxxQkFBQSxHQUFHM0YsTUFBSSxDQUFDcFAsS0FBSyxDQUFDa0gsV0FBVyxjQUFBNk4scUJBQUEsdUJBQXRCQSxxQkFBQSxDQUF3QkUsZ0JBQWdCLElBQUFELHNCQUFBLEdBQUc1RixNQUFJLENBQUNwUCxLQUFLLENBQUNrSCxXQUFXLGNBQUE4TixzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCRSxnQkFBZ0I7Y0FDckhwUyxRQUFRLElBQUl6RCxjQUFjLENBQ3hCeUQsUUFBUSxFQUNSO2dCQUNFNkMsT0FBTyxFQUFFeUosTUFBSSxDQUFDcFAsS0FBSyxDQUFDMkYsT0FBTztnQkFDM0JDLE1BQU0sRUFBRUEsTUFBTSxDQUFDcUksU0FBUyxJQUFJckksTUFBTTtnQkFDbENHLEtBQUssRUFBRXFKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQytGO2NBQ3BCLENBQUMsRUFDRHFKLE1BQUksQ0FBQ3BQLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztZQUNILENBQUMsQ0FBQztVQUNKO1FBQ0YsQ0FBRTtRQUNGaUYsSUFBSSxFQUFFa0IsUUFBUSxHQUFHdUksU0FBUyxDQUFDOU4sSUFBSSxDQUFDLENBQUNxRSxJQUFJLEdBQUcsSUFBSztRQUM3QzlKLElBQUksRUFBQztNQUFNLEdBQ1BuQixLQUFLLElBQUE2VSxlQUFBLEdBRVJILFNBQVMsQ0FBQzlOLElBQUksQ0FBQyxjQUFBaU8sZUFBQSx1QkFBZkEsZUFBQSxDQUFpQnZVLElBQ1osQ0FBQztJQUViLENBQUM7SUFDRCxNQUFNNlUsYUFBYSxHQUFJdk8sSUFBSSxJQUFLO01BQzlCLElBQUksQ0FBQ3VKLFVBQVUsQ0FBQ0MsR0FBRyxFQUFFO1FBQ25CLE9BQU8sSUFBSTtNQUNiLENBQUMsTUFBTTtRQUNMLE9BQU9wTyxpQkFBaUIsQ0FBQ29ULE9BQU8sQ0FBQ3hPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztNQUM3QztJQUNGLENBQUM7SUFDRGtKLE9BQU8sQ0FBQ3hGLEdBQUcsQ0FBRUMsSUFBUyxJQUFLO01BQ3pCLElBQUksQ0FBQ0EsSUFBSSxJQUFJLEtBQUssSUFBSUEsSUFBSSxDQUFDM0QsSUFBSSxJQUFJLEtBQUssS0FBS3VPLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNqRVYsV0FBVyxDQUFDaEksSUFBSSxlQUNkck8sS0FBQSxDQUFBK00sYUFBQSxDQUFDM00sTUFBTTtVQUNMMkMsSUFBSSxFQUFFLFNBQVU7VUFDaEI2SixPQUFPLEVBQUVBLENBQUEsS0FBTTtZQUNiLE1BQU07Y0FBRWdGLFVBQVU7Y0FBRWpMLFdBQVcsR0FBRyxDQUFDO1lBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQy9FLEtBQUs7WUFDbkQsSUFBSStFLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUVzUSxLQUFLLEVBQUU7Y0FDdEJoVyxjQUFjLENBQ1owRixXQUFXLENBQUNzUSxLQUFLLEVBQ2pCO2dCQUNFMVAsT0FBTyxFQUFFLElBQUksQ0FBQzNGLEtBQUssQ0FBQzJGLE9BQU87Z0JBQzNCSSxLQUFLLEVBQUUsSUFBSSxDQUFDL0YsS0FBSyxDQUFDK0Y7Y0FDcEIsQ0FBQyxFQUNELElBQUksQ0FBQy9GLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztjQUNEO1lBQ0Y7WUFDQSxJQUFJZ0ssVUFBVSxFQUFFO2NBQ2RBLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2NBQ3ZCO1lBQ0Y7WUFDQSxJQUFJLENBQUN4TSxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNO2NBQUEsSUFBQThSLHNCQUFBLEVBQUFDLHNCQUFBO2NBQzlCLEVBQUFELHNCQUFBLE9BQUksQ0FBQ3RWLEtBQUssQ0FBQ2tILFdBQVcsY0FBQW9PLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JFLGFBQWEsS0FBSW5XLGNBQWMsRUFBQWtXLHNCQUFBLEdBQ3JELElBQUksQ0FBQ3ZWLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXFPLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JDLGFBQWEsRUFDckM7Z0JBQ0U3UCxPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkYsT0FBTztnQkFDM0JJLEtBQUssRUFBRSxJQUFJLENBQUMvRixLQUFLLENBQUMrRjtjQUNwQixDQUFDLEVBQ0QsSUFBSSxDQUFDL0YsS0FBSyxDQUFDZ0csS0FDYixDQUFDO1lBQ0gsQ0FBQyxDQUFDO1VBSUosQ0FBRTtVQUNGaUYsSUFBSSxlQUFFN00sS0FBQSxDQUFBK00sYUFBQSxDQUFDak0sWUFBWSxNQUFFO1FBQUUsR0FDeEIsY0FFTyxDQUNWLENBQUM7TUFDSCxDQUFDLE1BQU0sSUFDTCxDQUFDcUwsSUFBSSxJQUFJLFFBQVEsSUFBSUEsSUFBSSxDQUFDM0QsSUFBSSxJQUFJLFFBQVEsS0FDMUN1TyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQ3ZCO1FBQ0EsSUFBSXJRLGNBQWMsSUFBSSxTQUFTLEVBQUU7VUFDL0IyUCxXQUFXLENBQUNoSSxJQUFJLGVBQ2RyTyxLQUFBLENBQUErTSxhQUFBLENBQUMzTTtVQUNDO1VBQUE7WUFDQXdNLE9BQU8sRUFBRSxJQUFJLENBQUN2RyxRQUFRLENBQUNnUixJQUFJLENBQUMsSUFBSSxDQUFFO1lBQ2xDeEssSUFBSSxlQUFFN00sS0FBQSxDQUFBK00sYUFBQSxDQUFDL0wsY0FBYyxNQUFFLENBQUU7WUFDekJzVyxNQUFNO1VBQUEsR0FDUCxjQUVPLENBQ1YsQ0FBQztRQUNILENBQUMsTUFBTTtVQUNMNUosYUFBYSxDQUFDVyxJQUFJLENBQUNtSSxZQUFZLENBQUNySyxJQUFJLENBQUMzRCxJQUFJLElBQUkyRCxJQUFJLEVBQUVBLElBQUksQ0FBQzhCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RFO01BQ0YsQ0FBQyxNQUFNO1FBQ0wsSUFBSThJLGFBQWEsQ0FBQzVLLElBQUksQ0FBQzNELElBQUksR0FBRzJELElBQUksQ0FBQzNELElBQUksR0FBRzJELElBQUksQ0FBQyxFQUFFO1VBQy9DdUIsYUFBYSxDQUFDVyxJQUFJLENBQ2hCbUksWUFBWSxDQUFDckssSUFBSSxDQUFDM0QsSUFBSSxHQUFHMkQsSUFBSSxDQUFDM0QsSUFBSSxHQUFHMkQsSUFBSSxFQUFFQSxJQUFJLENBQUM4QixVQUFVLENBQzVELENBQUM7UUFDSDtNQUNGO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsSUFBSTBILEtBQUssQ0FBQ0MsT0FBTyxDQUFDM0osUUFBUSxDQUFDLEVBQUU7TUFDM0JBLFFBQVEsQ0FBQ0MsR0FBRyxDQUFFQyxJQUFTLElBQUs7UUFDMUIsSUFBSXdKLEtBQUssQ0FBQ0MsT0FBTyxDQUFDekosSUFBSSxDQUFDLEVBQUU7VUFDdkJBLElBQUksQ0FBQ0QsR0FBRyxDQUFFcUwsS0FBSyxJQUFLO1lBQUEsSUFBQUMsWUFBQSxFQUFBQyxhQUFBLEVBQUFDLGFBQUEsRUFBQUMsYUFBQTtZQUNsQixJQUNFLENBQUFKLEtBQUssYUFBTEEsS0FBSyxnQkFBQUMsWUFBQSxHQUFMRCxLQUFLLENBQUUzVixLQUFLLGNBQUE0VixZQUFBLHVCQUFaQSxZQUFBLENBQWM3SyxRQUFRLEtBQUksWUFBWSxJQUN0Q29LLGFBQWEsQ0FBQ1EsS0FBSyxhQUFMQSxLQUFLLGdCQUFBRSxhQUFBLEdBQUxGLEtBQUssQ0FBRTNWLEtBQUssY0FBQTZWLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY2pQLElBQUksQ0FBQyxFQUNqQztjQUNBNk4sV0FBVyxDQUFDaEksSUFBSSxDQUFDa0osS0FBSyxDQUFDO1lBQ3pCLENBQUMsTUFBTSxJQUNMLENBQUFBLEtBQUssYUFBTEEsS0FBSyxnQkFBQUcsYUFBQSxHQUFMSCxLQUFLLENBQUUzVixLQUFLLGNBQUE4VixhQUFBLHVCQUFaQSxhQUFBLENBQWMvSyxRQUFRLEtBQUksY0FBYyxJQUN4Q29LLGFBQWEsQ0FBQ1EsS0FBSyxhQUFMQSxLQUFLLGdCQUFBSSxhQUFBLEdBQUxKLEtBQUssQ0FBRTNWLEtBQUssY0FBQStWLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY25QLElBQUksQ0FBQyxFQUNqQztjQUNBa0YsYUFBYSxDQUFDVyxJQUFJLENBQUNrSixLQUFLLENBQUM7WUFDM0I7VUFDRixDQUFDLENBQUM7UUFDSixDQUFDLE1BQU07VUFBQSxJQUFBSyxZQUFBLEVBQUFDLFlBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBO1VBQ0wsSUFDRSxDQUFBNUwsSUFBSSxhQUFKQSxJQUFJLGdCQUFBeUwsWUFBQSxHQUFKekwsSUFBSSxDQUFFdkssS0FBSyxjQUFBZ1csWUFBQSx1QkFBWEEsWUFBQSxDQUFhakwsUUFBUSxLQUFJLFlBQVksSUFDckNvSyxhQUFhLENBQUM1SyxJQUFJLGFBQUpBLElBQUksZ0JBQUEwTCxZQUFBLEdBQUoxTCxJQUFJLENBQUV2SyxLQUFLLGNBQUFpVyxZQUFBLHVCQUFYQSxZQUFBLENBQWFyUCxJQUFJLENBQUMsRUFDaEM7WUFDQTZOLFdBQVcsQ0FBQ2hJLElBQUksQ0FBQ2xDLElBQUksQ0FBQztVQUN4QixDQUFDLE1BQU0sSUFDTCxDQUFBQSxJQUFJLGFBQUpBLElBQUksZ0JBQUEyTCxZQUFBLEdBQUozTCxJQUFJLENBQUV2SyxLQUFLLGNBQUFrVyxZQUFBLHVCQUFYQSxZQUFBLENBQWFuTCxRQUFRLEtBQUksY0FBYyxJQUN2Q29LLGFBQWEsQ0FBQzVLLElBQUksYUFBSkEsSUFBSSxnQkFBQTRMLFlBQUEsR0FBSjVMLElBQUksQ0FBRXZLLEtBQUssY0FBQW1XLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYXZQLElBQUksQ0FBQyxFQUNoQztZQUNBa0YsYUFBYSxDQUFDVyxJQUFJLENBQUNsQyxJQUFJLENBQUM7VUFDMUI7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTSxJQUFJRixRQUFRLEVBQUU7TUFDbkIsTUFBTTtRQUFFcks7TUFBVyxDQUFDLEdBQUdxSyxRQUFRO01BQy9CLElBQUksQ0FBQXJLLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK0ssUUFBUSxLQUFJLFlBQVksSUFBSW9LLGFBQWEsQ0FBQ25WLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNEcsSUFBSSxDQUFDLEVBQUU7UUFDakU2TixXQUFXLENBQUNoSSxJQUFJLENBQUNwQyxRQUFRLENBQUM7TUFDNUIsQ0FBQyxNQUFNLElBQ0wsQ0FBQXJLLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFK0ssUUFBUSxLQUFJLGNBQWMsSUFDakNvSyxhQUFhLENBQUNuVixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRHLElBQUksQ0FBQyxFQUMxQjtRQUNBa0YsYUFBYSxDQUFDVyxJQUFJLENBQUNwQyxRQUFRLENBQUM7TUFDOUI7SUFDRjtJQUNBaUcsWUFBWSxJQUNWZ0IsV0FBVyxDQUFDN0UsSUFBSSxDQUFDO01BQ2ZoQixLQUFLLEVBQUUsSUFBSTtNQUNYa0gsU0FBUyxFQUFFLFFBQVE7TUFDbkJ5RCxLQUFLLEVBQUVwSyxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFcUssU0FBUyxHQUN6QnJLLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFcUssU0FBUyxHQUN0QnBLLGdCQUFnQixDQUFDb0ssU0FBUyxHQUN4QnBLLGdCQUFnQixDQUFDb0ssU0FBUyxHQUMxQixNQUFNO01BQ1pqRSxLQUFLLEVBQUVwRyxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFFb0csS0FBSyxHQUNyQnBHLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFb0csS0FBSyxHQUNsQm5HLGdCQUFnQixDQUFDbUcsS0FBSyxHQUNwQm5HLGdCQUFnQixDQUFDbUcsS0FBSyxHQUN0QixHQUFHO01BQ1RrRSxLQUFLLEVBQUUsT0FBTztNQUNkbkgsTUFBTSxFQUFFQSxDQUFDVixJQUFTLEVBQUU3SSxNQUFXLEtBQUs7UUFDbEMsb0JBQ0V4SCxLQUFBLENBQUErTSxhQUFBO1VBQUtDLFNBQVMsRUFBRTlMLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHFCQUFxQjtRQUFFLEdBQ3BELElBQUksQ0FBQ2dNLGtCQUFrQixDQUFDQyxhQUFhLEVBQUVsRyxNQUFNLENBQzNDLENBQUM7TUFFVjtJQUNGLENBQUMsQ0FBQztJQUVKLElBQUk0SyxXQUFXLEVBQ2JjLFdBQVcsR0FBRyxDQUNaO01BQ0U3RixLQUFLLEVBQUUsSUFBSTtNQUNYMkcsS0FBSyxFQUFFLEVBQUU7TUFDVGdFLEtBQUssRUFBRSxRQUFRO01BQ2ZqSCxNQUFNLEVBQUVBLENBQUNWLElBQUksRUFBRThILE9BQU8sRUFBRS9MLEtBQUssS0FBSztRQUNoQyxvQkFBT3BNLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQS9NLEtBQUEsQ0FBQW9ZLFFBQUEsUUFBR2hNLEtBQUssR0FBRyxDQUFJLENBQUM7TUFDekI7SUFDRixDQUFDLEVBQ0QsR0FBRzhHLFdBQVcsQ0FDZjtJQUNILElBQUltRixVQUFVLEdBQUc1TCxVQUFVLElBQUkwRyxXQUFXLENBQUN0USxNQUFNLEdBQUcsQ0FBQztJQUNyRCxJQUFJO01BQUV5VjtJQUFVLENBQUMsR0FBR2xYLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLElBQUltWCxRQUFRLEdBQ1Y5RyxjQUFjLElBQ2Q0RSxXQUFXLENBQUN4VCxNQUFNLEdBQUcsQ0FBQyxJQUN0QmlQLGtCQUFrQixJQUFJLFFBQVE7SUFDaEMsSUFBSXZGLFdBQVcsR0FBRyxFQUNoQi9DLFVBQVUsQ0FBQ2dQLE9BQU8sSUFBSSxLQUFLLElBQzNCLEVBQUF2SCxtQkFBQSxHQUFBekgsVUFBVSxDQUFDZ1AsT0FBTyxjQUFBdkgsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQnhMLElBQUksS0FBSSxLQUFLLElBQ2pDLEVBQUF5TCxvQkFBQSxHQUFBMUgsVUFBVSxDQUFDZ1AsT0FBTyxjQUFBdEgsb0JBQUEsZ0JBQUFBLG9CQUFBLEdBQWxCQSxvQkFBQSxDQUFvQnVILEtBQUssY0FBQXZILG9CQUFBLHVCQUF6QkEsb0JBQUEsQ0FBMkJyTyxNQUFNLEtBQUksQ0FBQyxJQUN0QyxDQUFBeVYsU0FBUyxhQUFUQSxTQUFTLHVCQUFUQSxTQUFTLENBQUU3UyxJQUFJLEtBQUksS0FBSyxDQUN6QjtJQUNELElBQUlpVCxpQkFBaUIsR0FBRyxFQUFFO0lBQzFCLElBQUlDLFVBQVUsR0FBR3JHLFVBQVUsSUFBSWlHLFFBQVEsR0FBRyxFQUFFLEdBQUcsQ0FBQztJQUNoRCxJQUFJSyxhQUFhLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzVCLElBQUlDLGtCQUFrQixHQUNwQmxWLGFBQWEsR0FBR2dWLFVBQVUsR0FBR0MsYUFBYTtJQUM1QyxJQUFJRSxnQkFBZ0IsR0FBR3RQLFVBQVUsQ0FBQ3VQLFVBQVUsS0FBSyxLQUFLLEdBQUksRUFBRSxHQUFHLEVBQUUsR0FBSSxDQUFDLEVBQUM7SUFDdkUsSUFBSUMsV0FBVyxHQUFHSCxrQkFBa0IsR0FBR0MsZ0JBQWdCO0lBQ3ZELElBQUlHLGdCQUFnQixHQUFHSixrQkFBa0IsR0FBR0gsaUJBQWlCLEdBQUdJLGdCQUFnQjtJQUNoRjtJQUNBLE1BQU1JLE1BQU0sR0FBR2pHLFdBQVcsQ0FBQ2lHLE1BQU07SUFDakNqRyxXQUFXLEdBQUF6TixhQUFBLENBQUFBLGFBQUEsS0FDTnlOLFdBQVc7TUFDZGlHLE1BQU0sRUFBQTFULGFBQUE7UUFBSTJULENBQUMsRUFBRSxhQUFhO1FBQUVDLENBQUMsRUFBRUg7TUFBZ0IsR0FBS0MsTUFBTTtJQUFFLEVBQzdEO0lBQ0Q7SUFDQSxvQkFDRWxaLEtBQUEsQ0FBQStNLGFBQUE7TUFDRUMsU0FBUyxFQUFFdk0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRXVMLFNBQVMsQ0FBRTtNQUMzRHFNLEdBQUcsRUFBRSxJQUFJLENBQUM5UjtJQUFRLEdBRWpCLElBQUksQ0FBQzNGLEtBQUssQ0FBQzBYLFNBQVMsaUJBQ25CdFosS0FBQSxDQUFBK00sYUFBQTtNQUFLQyxTQUFTLEVBQUV2TSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLG9CQUFvQixDQUFDO0lBQUUsR0FDeEQsSUFBSSxDQUFDRyxLQUFLLENBQUMwWCxTQUNULENBQ04sZUFDRHRaLEtBQUEsQ0FBQStNLGFBQUE7TUFDRUMsU0FBUyxFQUFFdk0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFFO01BQ3JEeUwsS0FBSyxFQUFFO1FBQUVxTSxPQUFPLEVBQUU7TUFBTztJQUFFLEdBRTFCaEksUUFBUSxpQkFDUHZSLEtBQUEsQ0FBQStNLGFBQUE7TUFBS0MsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsbUJBQW1CO0lBQUUsR0FDbERxUixTQUFTLGlCQUNSOVMsS0FBQSxDQUFBK00sYUFBQTtNQUFLQyxTQUFTLEVBQUU5TCxPQUFPLENBQUNPLE1BQU0sRUFBRSxZQUFZO0lBQUUsR0FBRXFSLFNBQWUsQ0FDaEUsZUFDRDlTLEtBQUEsQ0FBQStNLGFBQUE7TUFDRUMsU0FBUyxFQUFFdk0sR0FBRyxDQUFDUyxPQUFPLENBQUNPLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtRQUM5QyxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSxzQkFBc0IsQ0FBQyxHQUFHLENBQUNxUjtNQUM5QyxDQUFDO0lBQUUsZ0JBRUg5UyxLQUFBLENBQUErTSxhQUFBLENBQUM1TSxJQUFJLEVBQUE4TSxRQUFBO01BQ0h4RCxLQUFLLEVBQUFqRSxhQUFBLEtBQU9tTixTQUFTLENBQUc7TUFDeEI1RSxRQUFRLEVBQUUsS0FBTTtNQUNoQnlMLFNBQVMsRUFBRSxLQUFNO01BQ2pCQyxVQUFVLEVBQUU3RyxVQUFXO01BQ3ZCOEcsUUFBUSxFQUFFLElBQUksQ0FBQzFLLFVBQVUsQ0FBQ3FJLElBQUksQ0FBQyxJQUFJLENBQUU7TUFDckNwSSxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUM1TSxLQUFLLENBQUNlLGVBQWUsQ0FBRTtNQUMzQ3lQLFVBQVUsRUFBRUEsVUFBVztNQUN2QndHLEdBQUcsRUFBRSxJQUFJLENBQUNuTztJQUFRLEdBQ2Q2SCxlQUFlLENBQ3BCLENBQ0UsQ0FDRixDQUNOLGVBQ0QvUyxLQUFBLENBQUErTSxhQUFBO01BQ0VDLFNBQVMsRUFBRXZNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsRUFBRTtRQUNwRCxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSw0QkFBNEIsQ0FBQyxHQUFHLENBQUM4UDtNQUNwRCxDQUFDO0lBQUUsR0FFRjlFLFVBQVUsSUFBSTBHLFdBQVcsQ0FBQ3RRLE1BQU0sR0FBRyxDQUFDLGlCQUNuQzdDLEtBQUEsQ0FBQStNLGFBQUE7TUFBS0MsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMkJBQTJCO0lBQUUsZ0JBQzNEekIsS0FBQSxDQUFBK00sYUFBQSxDQUFDeEwsWUFBWTtNQUNYNFIsV0FBVyxFQUFFQSxXQUFZO01BQ3pCckIsa0JBQWtCLEVBQUVBLGtCQUFtQjtNQUN2Q3RQLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVEsQ0FBQzZVLElBQUksQ0FBQyxJQUFJLENBQUU7TUFDbkNzQyxPQUFPLEVBQUVBLENBQUEsS0FBTTtRQUFBLElBQUFDLHNCQUFBO1FBQ2IsSUFBSSxJQUFJLENBQUNoWSxLQUFLLENBQUMrWCxPQUFPLEVBQUU7VUFDdEIsSUFBSSxDQUFDL1gsS0FBSyxDQUFDK1gsT0FBTyxDQUFDLENBQUM7VUFDcEI7UUFDRjtRQUNBLENBQUFDLHNCQUFBLE9BQUksQ0FBQ2hWLFNBQVMsQ0FBQ1QsT0FBTyxjQUFBeVYsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCekosV0FBVyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDbkgsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO01BQ3BCLENBQUU7TUFDRnFRLEdBQUcsRUFBRSxJQUFJLENBQUN6VSxTQUFVO01BQ3BCaVYsZUFBZSxFQUFFLElBQUksQ0FBQ2pZLEtBQUssQ0FBQ2lZO0lBQWdCLENBQzdDLENBQ0UsQ0FDTixlQUNEN1osS0FBQSxDQUFBK00sYUFBQTtNQUNFQyxTQUFTLEVBQUV2TSxHQUFHLENBQUNTLE9BQU8sQ0FBQ08sTUFBTSxFQUFFLHNCQUFzQixDQUFDLEVBQUU7UUFDdEQsQ0FBQ1AsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsR0FBRyxDQUFDNFc7TUFDbEQsQ0FBQyxDQUFFO01BQ0hnQixHQUFHLEVBQUUsSUFBSSxDQUFDblY7SUFBZSxHQUV4QixDQUFDb08sVUFBVSxJQUFJaUcsUUFBUSxrQkFDdEJ2WSxLQUFBLENBQUErTSxhQUFBO01BQ0VDLFNBQVMsRUFBRXZNLEdBQUcsQ0FBQ1MsT0FBTyxDQUFDTyxNQUFNLEVBQUUsMEJBQTBCLENBQUMsRUFBRTtRQUMxRCxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSwwQkFBMEIsQ0FBQyxHQUFHLENBQUM4SztNQUNsRCxDQUFDO0lBQUUsZ0JBRUh2TSxLQUFBLENBQUErTSxhQUFBLGNBQU11RixVQUFnQixDQUFDLEVBQ3RCaUcsUUFBUSxJQUFJLElBQUksQ0FBQ2xNLGlCQUFpQixDQUFDZ0ssV0FBVyxFQUFFOUosV0FBVyxDQUN6RCxDQUNOLGVBRUR2TSxLQUFBLENBQUErTSxhQUFBO01BQ0VDLFNBQVMsRUFBRXZNLEdBQUcsQ0FDWlMsT0FBTyxDQUFDTyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsRUFDckM7UUFDRSxDQUFDUCxPQUFPLENBQUNPLE1BQU0sRUFBRSx3QkFBd0IsQ0FBQyxHQUFHLENBQUM4SztNQUNoRCxDQUFDLEVBQ0Q7UUFDRSxDQUFDckwsT0FBTyxDQUFDTyxNQUFNLEVBQUUseUJBQXlCLENBQUMsR0FDekM4SyxXQUFXLElBQUksQ0FBQ2dNO01BQ3BCLENBQ0YsQ0FBRTtNQUNGckwsS0FBSyxFQUFFO1FBQUU0TSxNQUFNLEVBQUVqQjtNQUFtQjtJQUFFLGdCQUV0QzdZLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQzdNLEtBQUssRUFBQStNLFFBQUE7TUFDSm9NLEdBQUcsRUFBRSxJQUFJLENBQUNyUyxRQUFTO01BQ25CbUssT0FBTyxFQUFFK0IsV0FBWTtNQUNyQmIsVUFBVSxFQUFBN00sYUFBQTtRQUNSdVUsVUFBVSxFQUFFQyxJQUFBLElBQW9DO1VBQUEsSUFBQUMsa0JBQUEsRUFBQUMsbUJBQUE7VUFBQSxJQUFuQztZQUFFQyxRQUFRO1lBQUVDLFFBQVE7WUFBRTVTO1VBQU8sQ0FBQyxHQUFBd1MsSUFBQTtVQUN6QyxvQkFDRWhhLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQS9NLEtBQUEsQ0FBQW9ZLFFBQUEsUUFDRytCLFFBQVEsSUFDUDNTLE1BQU0sQ0FBQ3dFLFVBQVUsSUFDakIsRUFBQWlPLGtCQUFBLEdBQUF6UyxNQUFNLENBQUN3RSxVQUFVLGNBQUFpTyxrQkFBQSx1QkFBakJBLGtCQUFBLENBQW1CcFgsTUFBTSxJQUFHLENBQUMsZ0JBQzdCN0MsS0FBQSxDQUFBK00sYUFBQSxDQUFDck0sWUFBWTtZQUNYa00sT0FBTyxFQUFHMEIsQ0FBQyxJQUFLOEwsUUFBUSxDQUFDNVMsTUFBTSxFQUFFOEcsQ0FBQyxDQUFFO1lBQ3BDdEIsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsYUFBYTtVQUFFLENBQzNDLENBQUMsR0FDQStGLE1BQU0sQ0FBQ3dFLFVBQVUsSUFDbkIsRUFBQWtPLG1CQUFBLEdBQUExUyxNQUFNLENBQUN3RSxVQUFVLGNBQUFrTyxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CclgsTUFBTSxJQUFHLENBQUMsZ0JBQzdCN0MsS0FBQSxDQUFBK00sYUFBQSxDQUFDbE0sYUFBYTtZQUNaK0wsT0FBTyxFQUFHMEIsQ0FBQyxJQUFLOEwsUUFBUSxDQUFDNVMsTUFBTSxFQUFFOEcsQ0FBQyxDQUFFO1lBQ3BDdEIsU0FBUyxFQUFFOUwsT0FBTyxDQUFDTyxNQUFNLEVBQUUsYUFBYTtVQUFFLENBQzNDLENBQUMsR0FDQSxJQUNKLENBQUM7UUFFUDtNQUFDLEdBQ0U0USxVQUFVLENBQ2I7TUFDRkQsV0FBVyxFQUFFLElBQUs7TUFDbEJpQyxRQUFRLEVBQUcwRSxVQUFVLElBQUs7UUFDeEIsTUFBTTtVQUFFak87UUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDekksS0FBSztRQUNsQyxJQUFJeUksV0FBVyxLQUFLaU8sVUFBVSxDQUFDNVUsT0FBTyxFQUFFO1VBQ3RDLElBQUksQ0FBQ0UsUUFBUSxDQUFDO1lBQ1p5RyxXQUFXLEVBQUVpTyxVQUFVLENBQUM1VTtVQUMxQixDQUFDLENBQUM7UUFDSjtNQUNGLENBQUU7TUFDRnFVLE9BQU8sRUFBQWhULGFBQUE7UUFDTDZVLFdBQVcsRUFBRTtVQUNYQyxTQUFTLEVBQUVBLENBQUEsS0FBTTtZQUNmLE1BQU03VixNQUFNLEdBQUcsSUFBSSxDQUFDb0UsZUFBZSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDRyxTQUFTLENBQUN2RSxNQUFNLENBQUM7VUFDeEI7UUFDRjtNQUFDLEdBQ0UrRSxVQUFVLENBQUNnUCxPQUFPLENBQ3JCO01BQ0ZyRyxnQkFBZ0IsRUFBRUEsZ0JBQWlCO01BQ25DakYsS0FBSyxFQUFFO1FBQUU0TSxNQUFNLEVBQUVkO01BQVk7SUFBRSxHQUMzQi9GLFdBQVcsQ0FFaEIsQ0FFRSxDQUNGLENBQ0YsQ0FBQyxFQUNMdEIsVUFBVSxpQkFDVDNSLEtBQUEsQ0FBQStNLGFBQUEsQ0FBQ3ZNLFVBQVUsRUFBQXlNLFFBQUE7TUFDVG9NLEdBQUcsRUFBRSxJQUFJLENBQUNsVSxTQUFVO01BQ3BCVCxRQUFRLEVBQUVBLENBQUEsS0FBTTtRQUFBLElBQUE2VixzQkFBQSxFQUFBQyxzQkFBQTtRQUNkLEVBQUFELHNCQUFBLE9BQUksQ0FBQzNZLEtBQUssQ0FBQ2tILFdBQVcsY0FBQXlSLHNCQUFBLHVCQUF0QkEsc0JBQUEsQ0FBd0JFLGdCQUFnQixLQUN0Q3haLGNBQWMsRUFBQXVaLHNCQUFBLEdBQ1osSUFBSSxDQUFDNVksS0FBSyxDQUFDa0gsV0FBVyxjQUFBMFIsc0JBQUEsdUJBQXRCQSxzQkFBQSxDQUF3QkMsZ0JBQWdCLEVBQ3hDO1VBQUVsVCxPQUFPLEVBQUUsSUFBSSxDQUFDM0YsS0FBSyxDQUFDMkY7UUFBUSxDQUFDLEVBQy9CLElBQUksQ0FBQzNGLEtBQUssQ0FBQ2dHLEtBQ2IsQ0FBQztRQUNILElBQUksQ0FBQzJDLFdBQVcsQ0FBQyxDQUFDO01BQ3BCLENBQUU7TUFDRm1RLEtBQUssRUFBRXRILFdBQVk7TUFDbkJoQyxTQUFTLEVBQUVBLFNBQVU7TUFDckJJLFlBQVksRUFBRUEsWUFBYTtNQUMzQm1KLFFBQVEsRUFBRSxJQUFJLENBQUMvWSxLQUFLLENBQUMrWSxRQUFTO01BQzlCdEgsWUFBWSxFQUFFQSxZQUFhO01BQzNCdUgsVUFBVSxFQUFFLElBQUksQ0FBQ2haLEtBQUssQ0FBQ2daLFVBQVc7TUFDbENDLFlBQVksRUFBRSxJQUFJLENBQUNqWixLQUFLLENBQUNpWixZQUFhO01BQ3RDdlgsUUFBUSxFQUFFLElBQUksQ0FBQzFCLEtBQUssQ0FBQzBCLFFBQVEsSUFBSSxNQUFPO01BQ3hDd1gsV0FBVyxFQUFFakosZUFBZ0I7TUFDN0JqSyxLQUFLLEVBQUUsSUFBSSxDQUFDaEcsS0FBSyxDQUFDZ0csS0FBTTtNQUN4Qm1ULGFBQWEsRUFBRTtRQUNiQyxNQUFNLEVBQUVuVSxXQUFXLENBQUNtVSxNQUFNO1FBQzFCQyxTQUFTLEVBQUVwVSxXQUFXLENBQUNvVSxTQUFTO1FBQ2hDQyxTQUFTLEVBQUV0VSxhQUFhLENBQUNzVSxTQUFTO1FBQ2xDQyxZQUFZLEVBQUV2VSxhQUFhLENBQUN1VTtNQUM5QixDQUFFO01BQ0Z4VCxLQUFLLEVBQUUsSUFBSSxDQUFDL0YsS0FBSyxDQUFDK0Y7SUFBTSxHQUNwQjBKLFNBQVMsQ0FDZCxDQUVBLENBQ0YsQ0FBQztFQUVWO0FBQ0Y7QUFDQSxlQUFlM1AsUUFBUSJ9
1149
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInN0eWxlcyIsIkJhc2VQYWdlIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl90eXBlIiwiX3NpemUiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHBhZ2VDb250ZW50UmVmJCIsImluaXREYXRhIiwicGVybWlzc29uIiwicGFnZUNvbnRlbnRSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicGFnZVJlZiIsInJlY29yZCIsImlkcyIsImlkIiwiZnVuY3MiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJ0aXRsZSIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicm93UmVjb3JkIiwiYWN0aW9uUHJvcHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDQiLCJldmVudE9wdGlvbiIsIlVpdGxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwicHVzaCIsImUiLCJldmFsIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkNSIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDYiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMSIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudDIiLCJjb252ZXJQYXJhbXMiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwiZm9ybVBhZ2VQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2l0ZW0kcHJvcHM2IiwiX2l0ZW0kcHJvcHM3IiwiX2l0ZW0kcHJvcHM4IiwiZGF0YUluZGV4IiwiYWxpZ24iLCJ0ZXh0QWxpZ24iLCJ3aWR0aCIsImZpeGVkIiwicmVhY29yZCIsIkZyYWdtZW50Iiwic2VhcmNoRmxhZyIsInRhYmxlVG9vbCIsInRvb2xGbGFnIiwidG9vbGJhciIsInRvb2xzIiwidGFibGVIZWFkZXJIZWlnaHQiLCJ0b29sSGVpZ2h0IiwicGFkZGluZ0hlaWdodCIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5IiwiY2hlY2thYmxlIiwic2VhcmNoYWJsZSIsIm9uU2VsZWN0Iiwib25SZXNldCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTMiLCJzZWFyY2hGb3JtUHJvcHMiLCJoZWlnaHQiLCJleHBhbmRJY29uIiwiX3JlZiIsIl9yZWNvcmQkY2hpbGROb2RlcyIsIl9yZWNvcmQkY2hpbGROb2RlczIiLCJleHBhbmRlZCIsIm9uRXhwYW5kIiwib25DaGFuZ2UiLCJvblRvb2xDbGljayIsIm9uUmVmcmVzaCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgcmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vLi4vY29uZmlnXCI7XHJcbmltcG9ydCB7IGdldFN0b3JhZ2UsIHB4MnZ3LCBnZXRCdXR0b25QZXJtaXNzb25zIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBIZWFkZXJTZWFyY2ggZnJvbSBcIi4uL0hlYWRlclNlYXJjaFwiO1xyXG5pbXBvcnQgeyBQYWdpbmF0aW9uUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgbnNjZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IHsgY29udmVydENvbHVtbnMsIGdldE5ld0NvbHVtbnMgfSBmcm9tIFwiLi91dGlsc1wiO1xyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86XHJcbiAgfCBBcnJheTxzdHJpbmc+XHJcbiAgfCBBcnJheTx7IGNvZGU6IHN0cmluZzsgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uIH0+OyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wczogYW55KSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBsZXQgeyBzdG9yZVByZWZpeCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdHlwZSA9IGdldFN0b3JhZ2UoXHJcbiAgICAgIHN0b3JlUHJlZml4ID8gc3RvcmVQcmVmaXggKyBcIi1cIiArIFwiZm9ybVR5cGVcIiA6IFwiZm9ybVR5cGVcIlxyXG4gICAgKTtcclxuICAgIHR5cGUgPSB0eXBlPy5jb250ZW50O1xyXG4gICAgbGV0IHNpemUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcInRhYmxlU2l6ZVwiIDogXCJ0YWJsZVNpemVcIlxyXG4gICAgKTtcclxuICAgIHNpemUgPSBzaXplPy5jb250ZW50O1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgZm9ybVR5cGU6IHR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICB0YWJsZVNpemU6IHNpemUgfHwgXCJkZWZhdWx0XCIsXHJcbiAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICBlbGVtZW50SGVpZ2h0OiAwLFxyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9uczogW10sXHJcbiAgICAgIHF1ZXJ5UGFyYW1zOiB7fSxcclxuICAgIH07XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgaWYgKGVsZW1lbnRIZWlnaHQgPiB0aGlzLnN0YXRlLmVsZW1lbnRIZWlnaHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgIHRoaXMuZWRpdG9yUmVmPy5jdXJyZW50Py5zaG93KG5ld1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjayk7XHJcbiAgfVxyXG5cclxuICAvL+WFs+mXreihqOWNlVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcblxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0TG9hZGluZyhsb2FkaW5nKTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRGb3JtVmFsdWVzKHZhbHVlLCB0eXBlID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRGb3JtVmFsdWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmdldEZvcm1WYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgLy/mibnph4/liKDpmaRcclxuICBvbkRlbGV0ZShkYXRhPzogYW55KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGRlbGV0ZVVybCxcclxuICAgICAgb25EZWxldGUsXHJcbiAgICAgIGRlbGV0ZVBhcmFtcyA9IHt9LFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93S2V5cyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0RhdGFzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgICBsZXQgdXJsID0gcmVxdWVzdFVybHMuZGVsZXRlVXJsID8gcmVxdWVzdFVybHMuZGVsZXRlVXJsIDogZGVsZXRlVXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgPyByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA6IGRlbGV0ZVBhcmFtcztcclxuICAgIGlmIChkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIikge1xyXG4gICAgICBpZiAoc2VsZWN0ZWRSb3dLZXlzLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgbWVzc2FnZS53YXJuaW5nKFwi6K+36YCJ5oup6KaB5Yig6Zmk55qE5pWw5o2u77yBXCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgTW9kYWwuY29uZmlybSh7XHJcbiAgICAgIGNvbnRlbnQ6IFwi5piv5ZCm56Gu6K6k5Yig6Zmk5omA6YCJ6aG577yfXCIsXHJcbiAgICAgIC8vIGNlbnRlcmVkOnRydWUsXHJcbiAgICAgIG9uT2s6ICgpID0+IHtcclxuICAgICAgICBpZiAoYnV0dG9uQ2xpY2sub25EZWxldGUpIHtcclxuICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICBidXR0b25DbGljay5vbkRlbGV0ZSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICByZWNvcmQ6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dEYXRhcyA6IGRhdGEsXHJcbiAgICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGE/LmlkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob25EZWxldGUpIHtcclxuICAgICAgICAgIG9uRGVsZXRlICYmXHJcbiAgICAgICAgICAgIG9uRGVsZXRlKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdXJsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1cmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHsgZGF0YTogZGF0YVBhcmFtcyA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRQYXJhbXMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwicG9zdFwiLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICAgIHBhcmFtczoge1xyXG4gICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzLmpvaW4oKSA6IGRhdGEuaWQsXHJcbiAgICAgICAgICAgIC4uLmRhdGFQYXJhbXMsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBmaW5hbFBhcmFtcyA9IHt9IGFzIGFueTtcclxuICAgICAgICBmaW5hbFBhcmFtcyA9IHsgLi4uZGVmYXVsdFBhcmFtcywgLi4ub3RoZXJQYXJhbXMgfTtcclxuICAgICAgICByZXF1ZXN0KHVybCwge1xyXG4gICAgICAgICAgLi4uZmluYWxQYXJhbXMsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhcIuWIoOmZpOaIkOWKn++8gVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdmFsdWUgPSBfdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgX3RoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZXJyb3IpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uaWc6IHN0b3JlQ29uZmlnID0ge30gfSA9IHRhYmxlU3RvcmU7XHJcbiAgICBjb25zdCB7IHBhcmFtczogc3RvcmVQYXJhbXMgPSB7fSwgLi4ub3RoZXJTdG9yZUNvbmZpZyB9ID0gc3RvcmVDb25maWc7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ub3RoZXJTdG9yZUNvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiB7IC4uLnN0b3JlUGFyYW1zLCAuLi5maW5hbFBhcmFtcyB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v5p+l6K+iXHJcbiAgb25TZWFyY2gocGFyYW1zKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIG9uU2VhcmNoLFxyXG4gICAgICBvbkNhbGxCYWNrcyxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgc3RvcmU6IHRhYmxlU3RvcmUgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKClcclxuICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXMuZGF0YSB8fCBxdWVyeVBhcmFtcy5wYXJhbXMgfHwge307XHJcbiAgICBsZXQgZmluYWxQYXJhbXMgPSB7XHJcbiAgICAgIC4uLmRhdGEsXHJcbiAgICAgIC4uLnRhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zLFxyXG4gICAgICAuLi5wYXJhbXMsXHJcbiAgICB9O1xyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKGZpbmFsUGFyYW1zKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKG9uU2VhcmNoKSB7XHJcbiAgICAgIG9uU2VhcmNoKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRhYmxlTG9hZCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgIG9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBwYXJhbXM6IHBhcmFtcyB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICB9XHJcbiAgLy/ooajmoLzph43mlrDliqDovb1cclxuICB0YWJsZVJlbG9hZChwYXJhbXMgPSB7fSwgYXV0b0xvYWQgPSB0cnVlKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICBjYWxsYmFjazogKHJlcykgPT4ge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGF1dG9Mb2FkICYmXHJcbiAgICAgICAgICByZXM/LmRhdGE/LnJlY29yZHM/Lmxlbmd0aCA9PSAwICYmXHJcbiAgICAgICAgICB0aGlzLnN0YXRlLmN1cnJlbnRQYWdlICE9PSAxXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5yZWxvYWQoe1xyXG4gICAgICAgICAgICBwYXJhbXM6IHsgY3VycmVudDogMSwgLi4ucGFyYW1zIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgdHJlZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlLmxvYWQoe1xyXG4gICAgICAuLi5kZWZhdWx0UmVxdWVzdENvbmZpZyxcclxuICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgcGFyYW1zOiBwYXJhbXMsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93S2V5cyhkYXRhOiBBcnJheTxTdHJpbmcgfCBOdW1iZXI+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0tleXMoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFNlbGVjdGVkUm93RGF0YXMoZGF0YTogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhKTtcclxuICB9XHJcbiAgcmVzZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5yZXNldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VhcmNoVmFsdWVzKCkge1xyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgcmV0dXJuIHsgLi4uZnJvbVZhbHVlLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9O1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hpbGRyZW5EYXRhKGRhdGEsIGtleXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0YWJsZVByb3BzIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcmVzS2V5ID0gW107XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmIChkYXRhLmNoaWxkTm9kZXMpIHtcclxuICAgICAgY29uc3QgY2hpbGRyZW4gPSBkYXRhLmNoaWxkTm9kZXM7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGtleSA9IHJvd0tleShpdGVtKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAga2V5ID0gaXRlbVtyb3dLZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgICB0aGlzLmdldENoaWxkcmVuRGF0YShpdGVtLmNoaWxkTm9kZXMsIGtleXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzS2V5O1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyVG9vbEJ1dHRvbnModG9vbGJ1dHRvbnM6IGFueSwgdG9vbGJhckZsYWcpIHtcclxuICAgIGNvbnN0IGZsYWcgPSB0b29sYnV0dG9ucy5sZW5ndGggPiA1O1xyXG4gICAgY29uc3QgeyBzaG93U2VhcmNoID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSB0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPSBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiAzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljaygpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRvb2wtYnV0dG9uc1wiKSl9XHJcbiAgICAgICAgc3R5bGU9e3sgbWFyZ2luTGVmdDogMCB9fVxyXG4gICAgICA+XHJcbiAgICAgICAge3Rvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogMTIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSA0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLm1vcmVPcGVufVxyXG4gICAgICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgLy8gb3Blbj17dHJ1ZX1cclxuICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcblxyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAodHlwZW9mIHJvd0tleSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAga2V5ID0gcm93S2V5KHJvd1JlY29yZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBrZXkgPSByb3dSZWNvcmRbcm93S2V5XTtcclxuICAgIH1cclxuICAgIGxldCBzaG93SWNvbiA9IHRydWU7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGVsc2UgaWYgKGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgY29sdW1uQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgaWNvbiwgcmVjb3JkU2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChyZWNvcmRTaG93KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwic3RyaW5nXCIpIHtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHsgcmVjb3JkOiByb3dSZWNvcmQsIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSB7IC4uLnRoaXMucHJvcHMuVWl0bHMgfVxyXG4gICAgICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uLFV0aWxzXCIsIHJlY29yZFNob3cpO1xyXG4gICAgICAgICAgICBjb25zdCBzaG93ID0gZnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgbGV0IHJlY29yZCA9IHJvd1JlY29yZFxyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8vIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgLy8gICByZWNvcmRTaG93LFxyXG4gICAgICAgICAgLy8gICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcmVjb3JkOiByZWNvcmQsIH0sXHJcbiAgICAgICAgICAvLyAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgIC8vICk7XHJcbiAgICAgICAgICAvLyBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgLy8gICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgIGNvbnN0IHNob3cgPSByZWNvcmRTaG93KHJvd1JlY29yZCk7XHJcbiAgICAgICAgICBzaG93ICYmIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGxldCBudW1iZXIgPSBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgID8gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA6IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AnXX1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxhIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKX0+XHJcbiAgICAgICAgICAgICAgICA8RWxsaXBzaXNPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPVwibGlua1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuICAvL+agkeeCueWHu+S6i+S7tlxyXG4gIHRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzOiBhbnksIG9iajogYW55KSB7XHJcbiAgICBsZXQga2V5d29yZCA9IFwiXCI7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHNlYXJjaEtleSA9IFwia2V5XCIsXHJcbiAgICAgIHNlYXJjaEZpZWxkID0gXCJcIixcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgIH0gPSB0aGlzLnByb3BzLnRyZWVQcm9wcztcclxuICAgIGNvbnN0IHsgdHJlZVNlbGVjdGVkS2V5IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgeyBzZWxlY3RlZCwgc2VsZWN0ZWROb2RlcyB9ID0gb2JqO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICBrZXl3b3JkID0gc2VsZWN0ZWROb2Rlc1swXS5kYXRhcmVmLmF0dHJpYnV0ZVtzZWFyY2hLZXldO1xyXG4gICAgICBpZiAocGFyYW50U2VsZWN0KSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKHNlbGVjdGVkTm9kZXNbMF0uaXNMZWFmIHx8ICFzZWxlY3RlZE5vZGVzWzBdLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoc2VsZWN0ZWRLZXlzWzBdICE9PSB0cmVlU2VsZWN0ZWRLZXkpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IGtleXdvcmQsXHJcbiAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblRyZWVTZWxlY3QpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblRyZWVTZWxlY3Qoc2VsZWN0ZWRLZXlzLCBvYmopO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCkgfHwge307XHJcbiAgICBzZWFyY2hGaWVsZCAmJiB0aGlzLnRhYmxlTG9hZCh7IC4uLmZyb21WYWx1ZSwgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9KTtcclxuICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHNlbGVjdGVkS2V5czogc2VsZWN0ZWRLZXlzLCBvYmo6IG9iaiB9LFxyXG4gICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgKTtcclxuICAgIC8vIHV0aWxzLmNhbGxiYWNrKHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjaywgdGhpcywgW1xyXG4gICAgLy8gICBzZWxlY3RlZEtleXMsXHJcbiAgICAvLyAgIG9iaixcclxuICAgIC8vIF0pO1xyXG4gIH1cclxuICByZXNldFNlYXJjaCgpIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgfVxyXG4gIGdldFRleHQocHJvcHMsIHRleHQpIHtcclxuICAgIGxldCBuZXdUZXh0ID0gdGV4dDtcclxuICAgIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZGF0YSA9IHByb3BzLmRhdGE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YT8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgICBuZXdUZXh0ID0gZGF0YVtpXS5sYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuZXdUZXh0O1xyXG4gIH1cclxuICBzZXRUYWJsZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgc2V0VHJlZURhdGEoZGF0YSkge1xyXG4gICAgdGhpcy50cmVlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZEtleSA9IChzZWxlY3RlZCkgPT4ge1xyXG4gICAgbGV0IHJlcyA9IFtdO1xyXG4gICAgZm9yIChsZXQga2V5IGluIHNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGtleXMgPSBzZWxlY3RlZFtrZXldO1xyXG4gICAgICBpZiAoa2V5cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmVzID0gWy4uLnJlcywgLi4ua2V5c107XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXM7XHJcbiAgfTtcclxuXHJcbiAgY29udmVydFF1ZXJ5UGFyYW1zKCkge1xyXG4gICAgY29uc3QgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMucXVlcnlQYXJhbXM7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMgJiYgdHlwZW9mIHF1ZXJ5UGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgfHwge307XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcXVlcnlQYXJhbXM7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzaG93TGVmdCA9IGZhbHNlLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgc2hvd1Rvb2xCdXR0b24gPSB0cnVlLFxyXG4gICAgICBidXR0b25zID0gW10sXHJcbiAgICAgIGVkaXRvckZvcm0gPSB0cnVlLFxyXG4gICAgICBvblNob3dGb3JtLFxyXG4gICAgICBmb3JtQ2hhbmdlVmFsaWQgPSB0cnVlLFxyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9IFwiYnV0dG9tXCIsXHJcbiAgICAgIGFjdGlvblByb3BzLFxyXG4gICAgICBkZWxldGVQb3NpdGlvbiA9IFwidG9vbGJhclwiLFxyXG4gICAgICBidXR0b25DbGljayA9IHt9LFxyXG4gICAgICBwZXJtaXNzaW9uID0geyBoYXM6IGZhbHNlIH0sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdGFibGVTdG9yZSA9IHt9LFxyXG4gICAgICBmaWx0ZXJDb2x1bW4gPSB0cnVlLFxyXG4gICAgICBhY3Rpb25Db2x1bW4gPSB0cnVlLFxyXG4gICAgICBzaG93Um93U2VsZWN0aW9uID0gdHJ1ZSxcclxuICAgICAgY29sdW1uT3JkZXIgPSB0cnVlLFxyXG4gICAgICBleHBhbmRhYmxlID0ge30sXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICAgIHRpdGxlOiB0YWJsZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zXHJcbiAgICB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBuZXdUYWJsZVN0b3JlID0geyAuLi50YWJsZVN0b3JlIH1cclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuXHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHsgLi4ubmV3VGFibGVTdG9yZSB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSlcclxuICAgIGxldCB0YWJsZUNvbHVtbjogYW55W10gPSBnZXROZXdDb2x1bW5zKGNvbHVtbnMsIHRoaXMucHJvcHMpXHJcbiAgICBjb25zdCBzZWFyY2hGb3JtcyA9IG9iai5zZWFyY2hGb3JtcyB8fCBbXVxyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW11cclxuICAgIGNvbnN0IHRvb2xCdXR0b25zOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgLy8gYWRkOiB7IG5hbWU6IFwi5paw5aKeXCIsIGNvZGU6IFwiYWRkXCIsIGljb246IDxQbHVzT3V0bGluZWQgLz4gfSxcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiKSA9PiB7XHJcbiAgICAgIGxldCBwcm9wcyA9IHt9O1xyXG4gICAgICBpZiAoc2hvdykge1xyXG4gICAgICAgIHByb3BzID0geyByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9IGNvZGUgPT0gXCJlZGl0b3JcIiA/IHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRWRpdG9yQ2FsbEJhY2sgOiB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblNlYXJjaENhbGxCYWNrXHJcbiAgICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgY2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGljb249e3Nob3dJY29uID8gYnV0dG9uTWFwW2NvZGVdLmljb24gOiBudWxsfVxyXG4gICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoKGl0ZW0gPT0gXCJhZGRcIiB8fCBpdGVtLmNvZGUgPT0gXCJhZGRcIikgJiYgY2hlY2tQZXJzc2lvbihcImFkZFwiKSkge1xyXG4gICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9e1wicHJpbWFyeVwifVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgIGlmIChidXR0b25DbGljaz8ub25BZGQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgIG9uU2hvd0Zvcm0obnVsbCwgXCJhZGRcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0obnVsbCwgbnVsbCwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayAmJiBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25BZGRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuXHJcblxyXG5cclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgaWNvbj17PFBsdXNPdXRsaW5lZCAvPn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5re75YqgXHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIChpdGVtID09IFwiZGVsZXRlXCIgfHwgaXRlbS5jb2RlID09IFwiZGVsZXRlXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihcImRlbGV0ZVwiKVxyXG4gICAgICApIHtcclxuICAgICAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAvLyB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgaWNvbj17PERlbGV0ZU91dGxpbmVkIC8+fVxyXG4gICAgICAgICAgICAgIGRhbmdlclxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5Yig6ZmkXHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKHJldHVybkJ1dHRvbihpdGVtLmNvZGUgfHwgaXRlbSwgaXRlbS5yZWNvcmRTaG93KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChjaGVja1BlcnNzaW9uKGl0ZW0uY29kZSA/IGl0ZW0uY29kZSA6IGl0ZW0pKSB7XHJcbiAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIHJldHVybkJ1dHRvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtLCBpdGVtLnJlY29yZFNob3cpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpXHJcbiAgICAgICkge1xyXG4gICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGFjdGlvbkNvbHVtbiAmJlxyXG4gICAgICB0YWJsZUNvbHVtbi5wdXNoKHtcclxuICAgICAgICB0aXRsZTogXCLmk43kvZxcIixcclxuICAgICAgICBkYXRhSW5kZXg6IFwiYWN0aW9uXCIsXHJcbiAgICAgICAgYWxpZ246IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLnRleHRBbGlnblxyXG4gICAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpXHJcbiAgICAgIHRhYmxlQ29sdW1uID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgICAgd2lkdGg6IDgwLFxyXG4gICAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPD57aW5kZXggKyAxfTwvPjtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi50YWJsZUNvbHVtbixcclxuICAgICAgXTtcclxuICAgIGxldCBzZWFyY2hGbGFnID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwO1xyXG4gICAgbGV0IHsgdGFibGVUb29sIH0gPSBjb25maWcoKTtcclxuICAgIGxldCB0b29sRmxhZyA9XHJcbiAgICAgIHNob3dUb29sQnV0dG9uICYmXHJcbiAgICAgIHRvb2xCdXR0b25zLmxlbmd0aCA+IDAgJiZcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID09IFwiYnV0dG9tXCI7XHJcbiAgICBsZXQgdG9vbGJhckZsYWcgPSAhKFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXIgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy5zaG93ID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8udG9vbHM/Lmxlbmd0aCA9PSAwIHx8XHJcbiAgICAgIHRhYmxlVG9vbD8uc2hvdyA9PSBmYWxzZVxyXG4gICAgKTtcclxuICAgIGxldCB0YWJsZUhlYWRlckhlaWdodCA9IDU1O1xyXG4gICAgbGV0IHRvb2xIZWlnaHQgPSB0YWJsZVRpdGxlIHx8IHRvb2xGbGFnID8gNTAgOiAwO1xyXG4gICAgbGV0IHBhZGRpbmdIZWlnaHQgPSAyMCAqIDI7IC8v5LiK5LiL6Ze06LedXHJcbiAgICBsZXQgdGFibGVDb250ZW50SGVpZ2h0ID1cclxuICAgICAgZWxlbWVudEhlaWdodCAtIHRvb2xIZWlnaHQgLSBwYWRkaW5nSGVpZ2h0O1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gKDMyICsgMTYpIDogMCAvLzMyIOS4uuWIhumhteWZqOmrmOW6piwxNuS4um1hcmdpbumXtOi3nVxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID0gdGFibGVDb250ZW50SGVpZ2h0IC0gdGFibGVIZWFkZXJIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgLy8gaWYgKHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgIGNvbnN0IHNjcm9sbCA9IHRhYmxlUGFyYW1zLnNjcm9sbDtcclxuICAgIHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICAuLi50YWJsZVBhcmFtcyxcclxuICAgICAgc2Nyb2xsOiB7IHg6IFwibWF4LWNvbnRlbnRcIiwgeTogdGFibGVTcm9sbEhlaWdodCwgLi4uc2Nyb2xsIH0sXHJcbiAgICB9O1xyXG4gICAgLy8gfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZVwiKSwgY2xhc3NOYW1lKX1cclxuICAgICAgICByZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgPlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZSAmJiAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZVwiKSl9PlxyXG4gICAgICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGV9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1wYW5lXCIpKX1cclxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IFwiZmxleFwiIH19XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3Nob3dMZWZ0ICYmIChcclxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfT5cclxuICAgICAgICAgICAgICB7dHJlZVRpdGxlICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLXRpdGxlXCIpfT57dHJlZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnQtbm90aXRsZVwiKV06ICF0cmVlVGl0bGUsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VHJlZVxyXG4gICAgICAgICAgICAgICAgICBzdG9yZT17eyAuLi50cmVlU3RvcmUgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd0ljb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBjaGVja2FibGU9e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hhYmxlPXt0cmVlU2VhcmNofVxyXG4gICAgICAgICAgICAgICAgICBvblNlbGVjdD17dGhpcy50cmVlU2VsZWN0LmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkS2V5cz17W3RoaXMuc3RhdGUudHJlZVNlbGVjdGVkS2V5XX1cclxuICAgICAgICAgICAgICAgICAgdGl0bGVBbGlhcz17dGl0bGVBbGlhc31cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRyZWVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5vdGhlcnRyZWVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1yaWdodFwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2Utbm8tbGVmdC1yaWdodFwiKV06ICFzaG93TGVmdCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaGVhZGVyc2VhcmNoXCIpfT5cclxuICAgICAgICAgICAgICAgIDxIZWFkZXJTZWFyY2hcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybXM9e3NlYXJjaEZvcm1zfVxyXG4gICAgICAgICAgICAgICAgICB0b29sQnV0dG9uUG9zaXRpb249e3Rvb2xCdXR0b25Qb3NpdGlvbn1cclxuICAgICAgICAgICAgICAgICAgb25TZWFyY2g9e3RoaXMub25TZWFyY2guYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgb25SZXNldD17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVzZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25SZXNldCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGFibGVMb2FkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXt0aGlzLnNlYXJjaFJlZn1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoRm9ybVByb3BzPXt0aGlzLnByb3BzLnNlYXJjaEZvcm1Qcm9wc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWdhcFwiKV06ICFzZWFyY2hGbGFnLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlQ29udGVudFJlZn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHsodGFibGVUaXRsZSB8fCB0b29sRmxhZykgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdGl0bGVcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlLXdpZHRoXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57dGFibGVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAge3Rvb2xGbGFnICYmIHRoaXMucmVuZGVyVG9vbEJ1dHRvbnModG9vbEJ1dHRvbnMsIHRvb2xiYXJGbGFnKX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICl9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGVcIiksXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wMlwiKV06XHJcbiAgICAgICAgICAgICAgICAgICAgICB0b29sYmFyRmxhZyAmJiAhdG9vbEZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3duT3V0bGluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IG9uRXhwYW5kKHJlY29yZCwgZSl9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZXhwYW5kLWljb25cIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXM/Lmxlbmd0aCA+IDAgPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHRPdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmV4cGFuZGFibGUsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9yZGVyPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KHBhZ2luYXRpb24pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRQYWdlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZSAhPT0gcGFnaW5hdGlvbi5jdXJyZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBhZ2U6IHBhZ2luYXRpb24uY3VycmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgdG9vbGJhcj17e1xyXG4gICAgICAgICAgICAgICAgICAgIG9uVG9vbENsaWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBvblJlZnJlc2g6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYW1zID0gdGhpcy5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQocGFyYW1zKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi50YWJsZVByb3BzLnRvb2xiYXIsXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dSb3dTZWxlY3Rpb249e3Nob3dSb3dTZWxlY3Rpb259XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVIZWlnaHQgfX1cclxuICAgICAgICAgICAgICAgICAgey4uLnRhYmxlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLy8gcGFnaW5hdGlvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgey8qIDxkaXY+PC9kaXY+ICovfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAge2VkaXRvckZvcm0gJiYgKFxyXG4gICAgICAgICAgICA8RWRpdG9yRm9ybVxyXG4gICAgICAgICAgICAgIHJlZj17dGhpcy5lZGl0b3JSZWZ9XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudGFibGVSZWxvYWQoKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZvcm1zPXtlZGl0b3JGb3Jtc31cclxuICAgICAgICAgICAgICBzdWJtaXRVcmw9e3N1Ym1pdFVybH1cclxuICAgICAgICAgICAgICBzdWJtaXRQYXJhbXM9e3N1Ym1pdFBhcmFtc31cclxuICAgICAgICAgICAgICBvblN1Ym1pdD17dGhpcy5wcm9wcy5vblN1Ym1pdH1cclxuICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cclxuICAgICAgICAgICAgICBvbkhpZGVGb3JtPXt0aGlzLnByb3BzLm9uSGlkZUZvcm19XHJcbiAgICAgICAgICAgICAgb25Gb3JtQ2hhbmdlPXt0aGlzLnByb3BzLm9uRm9ybUNoYW5nZX1cclxuICAgICAgICAgICAgICBmb3JtVHlwZT17dGhpcy5wcm9wcy5mb3JtVHlwZSB8fCBcImF1dG9cIn1cclxuICAgICAgICAgICAgICBjaGFuZ2VWYWxpZD17Zm9ybUNoYW5nZVZhbGlkfVxyXG4gICAgICAgICAgICAgIFV0aWxzPXt0aGlzLnByb3BzLlV0aWxzfVxyXG4gICAgICAgICAgICAgIHJlcXVlc3RPYmplY3Q9e3tcclxuICAgICAgICAgICAgICAgIGFkZFVybDogcmVxdWVzdFVybHMuYWRkVXJsLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yVXJsOiByZXF1ZXN0VXJscy5lZGl0b3JVcmwsXHJcbiAgICAgICAgICAgICAgICBhZGRQYXJhbXM6IHJlcXVlc3RQYXJhbXMuYWRkUGFyYW1zLFxyXG4gICAgICAgICAgICAgICAgZWRpdG9yUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmVkaXRvclBhcmFtcyxcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGZ1bmNzPXt0aGlzLnByb3BzLmZ1bmNzfVxyXG4gICAgICAgICAgICAgIHsuLi5mb3JtUHJvcHN9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcbmV4cG9ydCBkZWZhdWx0IEJhc2VQYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxLQUFLLE1BQU0sa0JBQWtCO0FBQ3BDLE9BQU9DLE9BQU8sTUFBTSxvQkFBb0I7QUFDeEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxVQUFVLE1BQXlCLG1CQUFtQjtBQUM3RCxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUM1QixPQUFPLHFCQUFxQjtBQUc1QixTQUNFQyxZQUFZLEVBQ1pDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLFlBQVksRUFDWkMsZ0JBQWdCLEVBQ2hCQyxjQUFjLFFBQ1QsbUJBQW1CO0FBQzFCLFNBQVNDLGNBQWMsRUFBRUMsT0FBTyxRQUFpQixhQUFhO0FBQzlELE9BQU9DLE9BQU8sTUFBTSxhQUFhO0FBQ2pDLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVNDLFVBQVUsRUFBU0MsbUJBQW1CLFFBQVEsbUJBQW1CO0FBQzFFLE9BQU9DLFlBQVksTUFBTSxp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