nsc-react-component 4.2.1 → 4.2.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Spin","Button","React","NscCom","NscFile","NscRequest","NscUtils","cls","queryString","getLocalStore","dayjs","FormPage","defaulUtil","createElement","renderSelfToolButton","_ref","selfButton","pageRef","funcs","loading","length","map","item","index","key","type","onClick","eventOption","func","Function","code","name","getPageData","params","get","xssFilter","autoPrefix","setFieldDisabled","data","disabled","columns","newColumns","obj","_objectSpread","dataIndex","indexOf","props","push","setFieldVisible","visible","editor","setFieldPropsData","propsData","jumpPage","pathname","query","id","title","serviceName","servicePath","openType","newQuery","urlParams","stringify","path","concat","window","__POWERED_BY_QIANKUN__","parent","postMessage","eventType","payload","location","origin","history","pushState","go","getProject","project","SettingTable","Component","constructor","arguments","_defineProperty","formType","pageLoading","otherProps","forms","buttonLoading","createRef","res","componentDidMount","getData","componentDidUpdate","prevProps","prevState","snapshot","setState","formCode","published","menuCode","isPublished","then","formProps","JSON","parse","_message","error","tableLoad","_this$pageRef$current","requestConfig","undefined","current","tableReload","_this$pageRef$current2","autoLoad","render","className","state","requestObject","_this","deaultFuncs","setButtonLoading","getCurrentProject","children","codeFormButtons","Array","isArray","child","style","width","height","spinning","Utils"],"sources":["../../../src/components/page/SettingForm/index.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\r\nimport BasePage, { NSCBaseBageProps } from \"../BasePage\";\r\nimport Spin from \"../../base/spin\";\r\nimport Button from \"../../base/button\";\r\nimport \"./index.less\";\r\nimport React from \"react\";\r\nimport * as NscCom from \"./com\";\r\nimport NscFile from \"nsc-file\";\r\nimport NscRequest from \"nsc-request\";\r\nimport * as NscUtils from \"@bj-nsc/functions\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport queryString from \"query-string\";\r\nimport { getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport { converFunction } from \"../../utils\";\r\nimport FormPage from \"../FormPage\";\r\n// import { history } from 'umi'\r\n// import { getConfigData } from '../services';\r\n\r\nconst defaulUtil = {\r\n NscCom,\r\n NscFile,\r\n NscRequest,\r\n NscUtils,\r\n dayjs,\r\n createElement: React.createElement,\r\n} as any;\r\nconst renderSelfToolButton = ({ selfButton, pageRef, funcs, loading }) => {\r\n if (selfButton.length == 0) {\r\n return null;\r\n } else {\r\n return selfButton.map((item: any, index: number) => {\r\n return (\r\n <Button\r\n key={index}\r\n type={item.type}\r\n onClick={() => {\r\n let eventOption = { pageRef: pageRef, funcs: funcs };\r\n const func = new Function(\"Utils,eventOption\", item.onClick);\r\n func(defaulUtil, eventOption);\r\n }}\r\n code={item.code}\r\n loading={loading[item.code] === true ? true : false}\r\n >\r\n {item.name}\r\n </Button>\r\n );\r\n });\r\n }\r\n};\r\n\r\nconst getPageData = (params: any) => {\r\n return NscRequest.get(`/jquick-setting/setting/table/info/`, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\n//设置表单字段只读\r\nconst setFieldDisabled = (data: Array<any>, key, disabled) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.disabled = disabled;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n//设置表单字段隐藏\r\nconst setFieldVisible = (data: Array<any>, key, visible) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n obj.editor = visible;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\n\r\nconst setFieldPropsData = (data: Array<any>, key, propsData) => {\r\n const columns = [...data];\r\n let newColumns = [] as any;\r\n columns.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.data = propsData;\r\n obj.props = props;\r\n }\r\n newColumns.push(obj);\r\n });\r\n return newColumns;\r\n};\r\ninterface IParams {\r\n pathname?: string;\r\n query?: any;\r\n id?: string;\r\n serviceName?: string;\r\n title?: string;\r\n servicePath?: string;\r\n menuCode?: string;\r\n openType?: number;\r\n}\r\nconst jumpPage = (params: IParams, type?: \"addTab\" | \"jumpMenu\") => {\r\n const {\r\n pathname,\r\n query = {},\r\n id,\r\n title,\r\n serviceName,\r\n servicePath,\r\n openType,\r\n } = params;\r\n const newQuery = { ...query } as any;\r\n const urlParams = queryString.stringify(newQuery);\r\n const path = urlParams ? `${pathname}?${urlParams}` : pathname;\r\n //@ts-ignore\r\n if (window.__POWERED_BY_QIANKUN__) {\r\n const data = {\r\n title: title || \"新标签\",\r\n serviceName: serviceName, //配置的微应用名称\r\n servicePath: servicePath, //配置的微应用入口地址\r\n path: path, //新标签的url,没配置serviceName path为完整路径\r\n id: id, //自定义唯一值\r\n openType: openType ? openType : 4, //打开方式 4位微前端, 3为iframe ,默认 3\r\n };\r\n window.parent.postMessage(\r\n {\r\n eventType: type ? type : \"addTab\",\r\n serviceName: serviceName ? serviceName : \"setting-web\",\r\n payload: type ? params : data,\r\n },\r\n window.location.origin\r\n );\r\n } else {\r\n window.history.pushState({}, \"\", path);\r\n window.history.go();\r\n }\r\n};\r\nconst getProject = () => {\r\n const project = getLocalStore({ name: \"nsc-home-project\" }) || {};\r\n return project;\r\n};\r\ninterface IProps {\r\n formCode: string;\r\n className?: any;\r\n menuCode?: string;\r\n funcs?: any;\r\n published?: boolean;\r\n instanceRef?: any;\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n formProps?: any;\r\n children?: any;\r\n}\r\nexport default class SettingTable extends React.Component<IProps, any> {\r\n state = {\r\n formType: \"modal\",\r\n pageLoading: false,\r\n selfButton: [] as any,\r\n props: {} as any,\r\n otherProps: {} as any,\r\n forms: [] as any,\r\n buttonLoading: {} as any,\r\n };\r\n pageRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {}\r\n\r\n initData = (res: any) => {};\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { formCode, published = true, menuCode } = this.props;\r\n // 如果tableCode存在\r\n if (formCode) {\r\n // 定义参数\r\n let params = { code: formCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getPageData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let formProps = JSON.parse(res.data.formProps || \"{}\") || {};\r\n this.setState(\r\n {\r\n ...formProps,\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n // onSearch() {}\r\n\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.pageRef.current?.tableLoad(params, requestConfig);\r\n }\r\n tableReload(params = {}, autoLoad = true) {\r\n this.pageRef.current?.tableReload(params, autoLoad);\r\n }\r\n\r\n render() {\r\n const { className, funcs = {} } = this.props;\r\n const {\r\n pageLoading,\r\n formType,\r\n selfButton,\r\n props = {},\r\n otherProps,\r\n forms,\r\n } = this.state;\r\n const { requestObject = {} } = otherProps;\r\n\r\n let _this = this;\r\n // const {store:tableStore}\r\n // const { store: settingTableStore } = settingTableProps;\r\n const deaultFuncs = {\r\n setFieldDisabled: (key, disabled) => {\r\n // const newData = setFieldDisabled(pageProps.columns, key, disabled);\r\n // this.setState({\r\n // pageProps: { ...pageProps, columns: newData },\r\n // });\r\n },\r\n setFieldVisible: (key, disabled) => {\r\n // const newData = setFieldVisible(pageProps.columns, key, disabled);\r\n // this.setState({\r\n // pageProps: { ...pageProps, columns: newData },\r\n // });\r\n },\r\n setFieldPropsData: (key, data) => {\r\n // const newData = setFieldPropsData(pageProps.columns, key, data);\r\n // this.setState({\r\n // pageProps: { ...pageProps, columns: newData },\r\n // });\r\n },\r\n history: (params, type) => {\r\n jumpPage(params, type);\r\n },\r\n setButtonLoading(code, loading) {},\r\n\r\n getCurrentProject: () => {\r\n return getProject();\r\n },\r\n };\r\n const { children } = this.props;\r\n\r\n let codeFormButtons = [];\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n codeFormButtons.push(child);\r\n });\r\n } else {\r\n codeFormButtons.push(item);\r\n }\r\n });\r\n } else if (children) {\r\n codeFormButtons.push(children);\r\n }\r\n return (\r\n <div className={cls(\"nsc-framework-formpage\", className)}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <FormPage\r\n formType={formType}\r\n forms={forms}\r\n requestObject={requestObject}\r\n Utils={defaulUtil}\r\n funcs={{ ...deaultFuncs, ...funcs }}\r\n >\r\n {renderSelfToolButton({\r\n selfButton,\r\n pageRef: this.pageRef,\r\n funcs,\r\n loading: this.state.buttonLoading,\r\n })}\r\n </FormPage>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":";;;;;;AAEA,OAAOA,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAO,cAAc;AACrB,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAO,KAAKC,MAAM,MAAM,OAAO;AAC/B,OAAOC,OAAO,MAAM,UAAU;AAC9B,OAAOC,UAAU,MAAM,aAAa;AACpC,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAC7C,OAAOC,GAAG,MAAM,YAAY;AAE5B,OAAOC,WAAW,MAAM,cAAc;AACtC,SAASC,aAAa,QAAQ,mBAAmB;AACjD,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,QAAQ,MAAM,aAAa;AAClC;AACA;;AAEA,MAAMC,UAAU,GAAG;EACjBT,MAAM;EACNC,OAAO;EACPC,UAAU;EACVC,QAAQ;EACRI,KAAK;EACLG,aAAa,EAAEX,KAAK,CAACW;AACvB,CAAQ;AACR,MAAMC,oBAAoB,GAAGC,IAAA,IAA6C;EAAA,IAA5C;IAAEC,UAAU;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAAJ,IAAA;EACnE,IAAIC,UAAU,CAACI,MAAM,IAAI,CAAC,EAAE;IAC1B,OAAO,IAAI;EACb,CAAC,MAAM;IACL,OAAOJ,UAAU,CAACK,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAa,KAAK;MAClD,oBACErB,KAAA,CAAAW,aAAA,CAACZ,MAAM;QACLuB,GAAG,EAAED,KAAM;QACXE,IAAI,EAAEH,IAAI,CAACG,IAAK;QAChBC,OAAO,EAAEA,CAAA,KAAM;UACb,IAAIC,WAAW,GAAG;YAAEV,OAAO,EAAEA,OAAO;YAAEC,KAAK,EAAEA;UAAM,CAAC;UACpD,MAAMU,IAAI,GAAG,IAAIC,QAAQ,CAAC,mBAAmB,EAAEP,IAAI,CAACI,OAAO,CAAC;UAC5DE,IAAI,CAAChB,UAAU,EAAEe,WAAW,CAAC;QAC/B,CAAE;QACFG,IAAI,EAAER,IAAI,CAACQ,IAAK;QAChBX,OAAO,EAAEA,OAAO,CAACG,IAAI,CAACQ,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,GAAG;MAAM,GAEnDR,IAAI,CAACS,IACA,CAAC;IAEb,CAAC,CAAC;EACJ;AACF,CAAC;AAED,MAAMC,WAAW,GAAIC,MAAW,IAAK;EACnC,OAAO5B,UAAU,CAAC6B,GAAG,wCAAwC;IAC3DD,MAAM;IACNE,SAAS,EAAE,KAAK;IAChBC,UAAU,EAAE;EACd,CAAC,CAAC;AACJ,CAAC;;AAED;AACA,MAAMC,gBAAgB,GAAGA,CAACC,IAAgB,EAAEd,GAAG,EAAEe,QAAQ,KAAK;EAC5D,MAAMC,OAAO,GAAG,CAAC,GAAGF,IAAI,CAAC;EACzB,IAAIG,UAAU,GAAG,EAAS;EAC1BD,OAAO,CAACnB,GAAG,CAAEC,IAAI,IAAK;IACpB,IAAIoB,GAAG,GAAAC,aAAA,KAAQrB,IAAI,CAAE;IACrB,IAAIA,IAAI,CAACsB,SAAS,IAAIpB,GAAG,IAAIA,GAAG,CAACqB,OAAO,CAACvB,IAAI,CAACsB,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7D,IAAIE,KAAK,GAAGJ,GAAG,CAACI,KAAK,GAAAH,aAAA,KAAQD,GAAG,CAACI,KAAK,IAAK,CAAC,CAAC;MAC7CA,KAAK,CAACP,QAAQ,GAAGA,QAAQ;MACzBG,GAAG,CAACI,KAAK,GAAGA,KAAK;IACnB;IACAL,UAAU,CAACM,IAAI,CAACL,GAAG,CAAC;EACtB,CAAC,CAAC;EACF,OAAOD,UAAU;AACnB,CAAC;AACD;AACA,MAAMO,eAAe,GAAGA,CAACV,IAAgB,EAAEd,GAAG,EAAEyB,OAAO,KAAK;EAC1D,MAAMT,OAAO,GAAG,CAAC,GAAGF,IAAI,CAAC;EACzB,IAAIG,UAAU,GAAG,EAAS;EAC1BD,OAAO,CAACnB,GAAG,CAAEC,IAAI,IAAK;IACpB,IAAIoB,GAAG,GAAAC,aAAA,KAAQrB,IAAI,CAAE;IACrB,IAAIA,IAAI,CAACsB,SAAS,IAAIpB,GAAG,IAAIA,GAAG,CAACqB,OAAO,CAACvB,IAAI,CAACsB,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7DF,GAAG,CAACQ,MAAM,GAAGD,OAAO;IACtB;IACAR,UAAU,CAACM,IAAI,CAACL,GAAG,CAAC;EACtB,CAAC,CAAC;EACF,OAAOD,UAAU;AACnB,CAAC;AAED,MAAMU,iBAAiB,GAAGA,CAACb,IAAgB,EAAEd,GAAG,EAAE4B,SAAS,KAAK;EAC9D,MAAMZ,OAAO,GAAG,CAAC,GAAGF,IAAI,CAAC;EACzB,IAAIG,UAAU,GAAG,EAAS;EAC1BD,OAAO,CAACnB,GAAG,CAAEC,IAAI,IAAK;IACpB,IAAIoB,GAAG,GAAAC,aAAA,KAAQrB,IAAI,CAAE;IACrB,IAAIA,IAAI,CAACsB,SAAS,IAAIpB,GAAG,EAAE;MACzB,IAAIsB,KAAK,GAAGJ,GAAG,CAACI,KAAK,GAAAH,aAAA,KAAQD,GAAG,CAACI,KAAK,IAAK,CAAC,CAAC;MAC7CA,KAAK,CAACR,IAAI,GAAGc,SAAS;MACtBV,GAAG,CAACI,KAAK,GAAGA,KAAK;IACnB;IACAL,UAAU,CAACM,IAAI,CAACL,GAAG,CAAC;EACtB,CAAC,CAAC;EACF,OAAOD,UAAU;AACnB,CAAC;AAWD,MAAMY,QAAQ,GAAGA,CAACpB,MAAe,EAAER,IAA4B,KAAK;EAClE,MAAM;IACJ6B,QAAQ;IACRC,KAAK,GAAG,CAAC,CAAC;IACVC,EAAE;IACFC,KAAK;IACLC,WAAW;IACXC,WAAW;IACXC;EACF,CAAC,GAAG3B,MAAM;EACV,MAAM4B,QAAQ,GAAAlB,aAAA,KAAQY,KAAK,CAAS;EACpC,MAAMO,SAAS,GAAGtD,WAAW,CAACuD,SAAS,CAACF,QAAQ,CAAC;EACjD,MAAMG,IAAI,GAAGF,SAAS,MAAAG,MAAA,CAAMX,QAAQ,OAAAW,MAAA,CAAIH,SAAS,IAAKR,QAAQ;EAC9D;EACA,IAAIY,MAAM,CAACC,sBAAsB,EAAE;IACjC,MAAM7B,IAAI,GAAG;MACXmB,KAAK,EAAEA,KAAK,IAAI,KAAK;MACrBC,WAAW,EAAEA,WAAW;MAAE;MAC1BC,WAAW,EAAEA,WAAW;MAAE;MAC1BK,IAAI,EAAEA,IAAI;MAAE;MACZR,EAAE,EAAEA,EAAE;MAAE;MACRI,QAAQ,EAAEA,QAAQ,GAAGA,QAAQ,GAAG,CAAC,CAAE;IACrC,CAAC;IACDM,MAAM,CAACE,MAAM,CAACC,WAAW,CACvB;MACEC,SAAS,EAAE7C,IAAI,GAAGA,IAAI,GAAG,QAAQ;MACjCiC,WAAW,EAAEA,WAAW,GAAGA,WAAW,GAAG,aAAa;MACtDa,OAAO,EAAE9C,IAAI,GAAGQ,MAAM,GAAGK;IAC3B,CAAC,EACD4B,MAAM,CAACM,QAAQ,CAACC,MAClB,CAAC;EACH,CAAC,MAAM;IACLP,MAAM,CAACQ,OAAO,CAACC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAEX,IAAI,CAAC;IACtCE,MAAM,CAACQ,OAAO,CAACE,EAAE,CAAC,CAAC;EACrB;AACF,CAAC;AACD,MAAMC,UAAU,GAAGA,CAAA,KAAM;EACvB,MAAMC,OAAO,GAAGrE,aAAa,CAAC;IAAEsB,IAAI,EAAE;EAAmB,CAAC,CAAC,IAAI,CAAC,CAAC;EACjE,OAAO+C,OAAO;AAChB,CAAC;AAoBD,eAAe,MAAMC,YAAY,SAAS7E,KAAK,CAAC8E,SAAS,CAAc;EAAAC,YAAA;IAAA,SAAAC,SAAA;IAAAC,eAAA,gBAC7D;MACNC,QAAQ,EAAE,OAAO;MACjBC,WAAW,EAAE,KAAK;MAClBrE,UAAU,EAAE,EAAS;MACrB8B,KAAK,EAAE,CAAC,CAAQ;MAChBwC,UAAU,EAAE,CAAC,CAAQ;MACrBC,KAAK,EAAE,EAAS;MAChBC,aAAa,EAAE,CAAC;IAClB,CAAC;IAAAL,eAAA,+BACSjF,KAAK,CAACuF,SAAS,CAAM,CAAC;IAAAN,eAAA,mBAYpBO,GAAQ,IAAK,CAAC,CAAC;EAAA;EAV3BC,iBAAiBA,CAAA,EAAS;IACxB,IAAI,CAACC,OAAO,CAAC,CAAC;EAChB;EAEAC,kBAAkBA,CAChBC,SAA2B,EAC3BC,SAAwB,EACxBC,QAAc,EACR,CAAC;EAGT;EACAJ,OAAOA,CAAA,EAAG;IACR;IACA,IAAI,CAACK,QAAQ,CAAC;MACZZ,WAAW,EAAE;IACf,CAAC,CAAC;IACF,MAAM;MAAEa,QAAQ;MAAEC,SAAS,GAAG,IAAI;MAAEC;IAAS,CAAC,GAAG,IAAI,CAACtD,KAAK;IAC3D;IACA,IAAIoD,QAAQ,EAAE;MACZ;MACA,IAAIjE,MAAM,GAAG;QAAEH,IAAI,EAAEoE;MAAS,CAAQ;MACtC;MACA,IAAIC,SAAS,EAAE;QACb;QACAlE,MAAM,CAACoE,WAAW,GAAG,CAAC;MACxB;MACA;MACArE,WAAW,CAAAW,aAAA,KAAMV,MAAM,CAAE,CAAC,CAACqE,IAAI,CAAEZ,GAAQ,IAAK;QAC5C,IAAIA,GAAG,CAAC5D,IAAI,IAAI,GAAG,IAAI4D,GAAG,CAACpD,IAAI,EAAE;UAC/B,IAAIiE,SAAS,GAAGC,IAAI,CAACC,KAAK,CAACf,GAAG,CAACpD,IAAI,CAACiE,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;UAC5D,IAAI,CAACN,QAAQ,CAAAtD,aAAA,KAEN4D,SAAS,GAEd,MAAM;YACJ,IAAI,CAACN,QAAQ,CAAC;cACZZ,WAAW,EAAE;YACf,CAAC,CAAC;UACJ,CACF,CAAC;QACH,CAAC,MAAM,IAAIK,GAAG,CAAC5D,IAAI,IAAI,GAAG,IAAI4D,GAAG,CAACpD,IAAI,IAAI,IAAI,EAAE;UAC9CoE,QAAA,CAAQC,KAAK,CAAC,UAAU,CAAC;UACzB,IAAI,CAACV,QAAQ,CAAC;YACZZ,WAAW,EAAE;UACf,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACY,QAAQ,CAAC;YACZZ,WAAW,EAAE;UACf,CAAC,CAAC;QACJ;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL,IAAI,CAACY,QAAQ,CAAC;QACZZ,WAAW,EAAE;MACf,CAAC,CAAC;IACJ;EACF;EACA;;EAEAuB,SAASA,CAAC3E,MAAW,EAAsB;IAAA,IAAA4E,qBAAA;IAAA,IAApBC,aAAa,GAAA5B,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAA6B,SAAA,GAAA7B,SAAA,MAAG,CAAC,CAAC;IACvC,CAAA2B,qBAAA,OAAI,CAAC5F,OAAO,CAAC+F,OAAO,cAAAH,qBAAA,eAApBA,qBAAA,CAAsBD,SAAS,CAAC3E,MAAM,EAAE6E,aAAa,CAAC;EACxD;EACAG,WAAWA,CAAA,EAA+B;IAAA,IAAAC,sBAAA;IAAA,IAA9BjF,MAAM,GAAAiD,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAA6B,SAAA,GAAA7B,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEiC,QAAQ,GAAAjC,SAAA,CAAA9D,MAAA,QAAA8D,SAAA,QAAA6B,SAAA,GAAA7B,SAAA,MAAG,IAAI;IACtC,CAAAgC,sBAAA,OAAI,CAACjG,OAAO,CAAC+F,OAAO,cAAAE,sBAAA,eAApBA,sBAAA,CAAsBD,WAAW,CAAChF,MAAM,EAAEkF,QAAQ,CAAC;EACrD;EAEAC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,SAAS;MAAEnG,KAAK,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAAC4B,KAAK;IAC5C,MAAM;MACJuC,WAAW;MACXD,QAAQ;MACRpE,UAAU;MACV8B,KAAK,GAAG,CAAC,CAAC;MACVwC,UAAU;MACVC;IACF,CAAC,GAAG,IAAI,CAAC+B,KAAK;IACd,MAAM;MAAEC,aAAa,GAAG,CAAC;IAAE,CAAC,GAAGjC,UAAU;IAEzC,IAAIkC,KAAK,GAAG,IAAI;IAChB;IACA;IACA,MAAMC,WAAW,GAAG;MAClBpF,gBAAgB,EAAEA,CAACb,GAAG,EAAEe,QAAQ,KAAK;QACnC;QACA;QACA;QACA;MAAA,CACD;MACDS,eAAe,EAAEA,CAACxB,GAAG,EAAEe,QAAQ,KAAK;QAClC;QACA;QACA;QACA;MAAA,CACD;MACDY,iBAAiB,EAAEA,CAAC3B,GAAG,EAAEc,IAAI,KAAK;QAChC;QACA;QACA;QACA;MAAA,CACD;MACDoC,OAAO,EAAEA,CAACzC,MAAM,EAAER,IAAI,KAAK;QACzB4B,QAAQ,CAACpB,MAAM,EAAER,IAAI,CAAC;MACxB,CAAC;MACDiG,gBAAgBA,CAAC5F,IAAI,EAAEX,OAAO,EAAE,CAAC,CAAC;MAElCwG,iBAAiB,EAAEA,CAAA,KAAM;QACvB,OAAO9C,UAAU,CAAC,CAAC;MACrB;IACF,CAAC;IACD,MAAM;MAAE+C;IAAS,CAAC,GAAG,IAAI,CAAC9E,KAAK;IAE/B,IAAI+E,eAAe,GAAG,EAAE;IACxB,IAAIC,KAAK,CAACC,OAAO,CAACH,QAAQ,CAAC,EAAE;MAC3BA,QAAQ,CAACvG,GAAG,CAAEC,IAAS,IAAK;QAC1B,IAAIwG,KAAK,CAACC,OAAO,CAACzG,IAAI,CAAC,EAAE;UACvBA,IAAI,CAACD,GAAG,CAAE2G,KAAK,IAAK;YAClBH,eAAe,CAAC9E,IAAI,CAACiF,KAAK,CAAC;UAC7B,CAAC,CAAC;QACJ,CAAC,MAAM;UACLH,eAAe,CAAC9E,IAAI,CAACzB,IAAI,CAAC;QAC5B;MACF,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIsG,QAAQ,EAAE;MACnBC,eAAe,CAAC9E,IAAI,CAAC6E,QAAQ,CAAC;IAChC;IACA,oBACE1H,KAAA,CAAAW,aAAA;MAAKwG,SAAS,EAAE9G,GAAG,CAAC,wBAAwB,EAAE8G,SAAS;IAAE,GACtDhC,WAAW,gBACVnF,KAAA,CAAAW,aAAA;MAAKoH,KAAK,EAAE;QAAEC,KAAK,EAAE,MAAM;QAAEC,MAAM,EAAE;MAAO;IAAE,gBAC5CjI,KAAA,CAAAW,aAAA,CAACb,IAAI;MAACoI,QAAQ,EAAE/C;IAAY,CAAO,CAChC,CAAC,gBAENnF,KAAA,CAAAW,aAAA,CAACF,QAAQ;MACPyE,QAAQ,EAAEA,QAAS;MACnBG,KAAK,EAAEA,KAAM;MACbgC,aAAa,EAAEA,aAAc;MAC7Bc,KAAK,EAAEzH,UAAW;MAClBM,KAAK,EAAAyB,aAAA,CAAAA,aAAA,KAAO8E,WAAW,GAAKvG,KAAK;IAAG,GAEnCJ,oBAAoB,CAAC;MACpBE,UAAU;MACVC,OAAO,EAAE,IAAI,CAACA,OAAO;MACrBC,KAAK;MACLC,OAAO,EAAE,IAAI,CAACmG,KAAK,CAAC9B;IACtB,CAAC,CACO,CAET,CAAC;EAEV;AACF"}
1
+ {"version":3,"file":"index.js","names":["Spin","Button","React","NscCom","NscFile","NscRequest","NscUtils","cls","queryString","getLocalStore","dayjs","FormPage","defaulUtil","createElement","renderSelfToolButton","_ref","selfButton","pageRef","funcs","loading","length","map","item","index","key","type","onClick","eventOption","func","Function","code","name","getPageData","params","get","xssFilter","autoPrefix","setFieldDisabled","data","disabled","foms","newForms","obj","_objectSpread","dataIndex","indexOf","props","push","setFieldVisible","visible","editor","setFieldPropsData","propsData","forms","jumpPage","pathname","query","id","title","serviceName","servicePath","openType","newQuery","urlParams","stringify","path","concat","window","__POWERED_BY_QIANKUN__","parent","postMessage","eventType","payload","location","origin","history","pushState","go","getProject","project","defaultStateValue","formType","pageLoading","otherProps","buttonLoading","SettingTable","Component","constructor","arguments","_defineProperty","createRef","res","componentDidMount","getData","componentDidUpdate","prevProps","prevState","snapshot","formCode","setState","published","menuCode","isPublished","then","formProps","JSON","parse","_message","error","tableLoad","_this$pageRef$current","requestConfig","undefined","current","tableReload","_this$pageRef$current2","autoLoad","render","className","state","requestObject","_this","deaultFuncs","newData","setButtonLoading","getCurrentProject","children","codeFormButtons","Array","isArray","child","style","width","height","spinning","_extends","Utils","ref"],"sources":["../../../src/components/page/SettingForm/index.tsx"],"sourcesContent":["import { forwardRef, useEffect, useImperativeHandle, useState } from \"react\";\r\nimport BasePage, { NSCBaseBageProps } from \"../BasePage\";\r\nimport Spin from \"../../base/spin\";\r\nimport Button from \"../../base/button\";\r\nimport \"./index.less\";\r\nimport React from \"react\";\r\nimport * as NscCom from \"./com\";\r\nimport NscFile from \"nsc-file\";\r\nimport NscRequest from \"nsc-request\";\r\nimport * as NscUtils from \"@bj-nsc/functions\";\r\nimport cls from \"classnames\";\r\nimport { message } from \"antd\";\r\nimport queryString from \"query-string\";\r\nimport { getLocalStore } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport { converFunction } from \"../../utils\";\r\nimport FormPage from \"../FormPage\";\r\n// import { history } from 'umi'\r\n// import { getConfigData } from '../services';\r\n\r\nconst defaulUtil = {\r\n NscCom,\r\n NscFile,\r\n NscRequest,\r\n NscUtils,\r\n dayjs,\r\n createElement: React.createElement,\r\n} as any;\r\nconst renderSelfToolButton = ({ selfButton, pageRef, funcs, loading }) => {\r\n if (selfButton.length == 0) {\r\n return null;\r\n } else {\r\n return selfButton.map((item: any, index: number) => {\r\n return (\r\n <Button\r\n key={index}\r\n type={item.type}\r\n onClick={() => {\r\n let eventOption = { pageRef: pageRef, funcs: funcs };\r\n const func = new Function(\"Utils,eventOption\", item.onClick);\r\n func(defaulUtil, eventOption);\r\n }}\r\n code={item.code}\r\n loading={loading[item.code] === true ? true : false}\r\n >\r\n {item.name}\r\n </Button>\r\n );\r\n });\r\n }\r\n};\r\n\r\nconst getPageData = (params: any) => {\r\n return NscRequest.get(`/jquick-setting/setting/table/info/`, {\r\n params,\r\n xssFilter: false,\r\n autoPrefix: true,\r\n });\r\n};\r\n\r\n//设置表单字段只读\r\nconst setFieldDisabled = (data: Array<any>, key, disabled) => {\r\n const foms = [...data];\r\n let newForms = [] as any;\r\n foms.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.disabled = disabled;\r\n obj.props = props;\r\n }\r\n newForms.push(obj);\r\n });\r\n return newForms;\r\n};\r\n//设置表单字段隐藏\r\nconst setFieldVisible = (data: Array<any>, key, visible) => {\r\n const foms = [...data];\r\n let newForms = [] as any;\r\n foms.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key || key.indexOf(item.dataIndex) > -1) {\r\n obj.editor = visible;\r\n }\r\n newForms.push(obj);\r\n });\r\n return newForms;\r\n};\r\n\r\nconst setFieldPropsData = (data: Array<any>, key, propsData) => {\r\n const forms = [...data];\r\n let newForms = [] as any;\r\n forms.map((item) => {\r\n let obj = { ...item };\r\n if (item.dataIndex == key) {\r\n let props = obj.props ? { ...obj.props } : {};\r\n props.data = propsData;\r\n obj.props = props;\r\n }\r\n newForms.push(obj);\r\n });\r\n return newForms;\r\n};\r\ninterface IParams {\r\n pathname?: string;\r\n query?: any;\r\n id?: string;\r\n serviceName?: string;\r\n title?: string;\r\n servicePath?: string;\r\n menuCode?: string;\r\n openType?: number;\r\n}\r\nconst jumpPage = (params: IParams, type?: \"addTab\" | \"jumpMenu\") => {\r\n const {\r\n pathname,\r\n query = {},\r\n id,\r\n title,\r\n serviceName,\r\n servicePath,\r\n openType,\r\n } = params;\r\n const newQuery = { ...query } as any;\r\n const urlParams = queryString.stringify(newQuery);\r\n const path = urlParams ? `${pathname}?${urlParams}` : pathname;\r\n //@ts-ignore\r\n if (window.__POWERED_BY_QIANKUN__) {\r\n const data = {\r\n title: title || \"新标签\",\r\n serviceName: serviceName, //配置的微应用名称\r\n servicePath: servicePath, //配置的微应用入口地址\r\n path: path, //新标签的url,没配置serviceName path为完整路径\r\n id: id, //自定义唯一值\r\n openType: openType ? openType : 4, //打开方式 4位微前端, 3为iframe ,默认 3\r\n };\r\n window.parent.postMessage(\r\n {\r\n eventType: type ? type : \"addTab\",\r\n serviceName: serviceName ? serviceName : \"setting-web\",\r\n payload: type ? params : data,\r\n },\r\n window.location.origin\r\n );\r\n } else {\r\n window.history.pushState({}, \"\", path);\r\n window.history.go();\r\n }\r\n};\r\nconst getProject = () => {\r\n const project = getLocalStore({ name: \"nsc-home-project\" }) || {};\r\n return project;\r\n};\r\ninterface IProps {\r\n formCode: string;\r\n className?: any;\r\n menuCode?: string;\r\n funcs?: any;\r\n published?: boolean;\r\n instanceRef?: any;\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n formProps?: any;\r\n children?: any;\r\n}\r\nconst defaultStateValue = {\r\n formType: \"modal\",\r\n pageLoading: false,\r\n selfButton: [] as any,\r\n props: {} as any,\r\n otherProps: {} as any,\r\n forms: [] as any,\r\n buttonLoading: {} as any,\r\n};\r\nexport default class SettingTable extends React.Component<IProps, any> {\r\n state = {\r\n ...defaultStateValue,\r\n };\r\n pageRef = React.createRef<any>();\r\n\r\n componentDidMount(): void {\r\n this.getData();\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<IProps>,\r\n prevState: Readonly<any>,\r\n snapshot?: any\r\n ): void {\r\n if (prevProps.formCode != this.props.formCode) {\r\n this.setState(\r\n {\r\n ...defaultStateValue,\r\n },\r\n () => {\r\n this.getData();\r\n }\r\n );\r\n }\r\n }\r\n\r\n initData = (res: any) => {};\r\n // 获取数据\r\n getData() {\r\n // 从props中获取tableCode、published、menuCode\r\n this.setState({\r\n pageLoading: true,\r\n });\r\n const { formCode, published = true, menuCode } = this.props;\r\n // 如果tableCode存在\r\n if (formCode) {\r\n // 定义参数\r\n let params = { code: formCode } as any;\r\n // 如果published为true\r\n if (published) {\r\n // 设置参数isPublished为1\r\n params.isPublished = 1;\r\n }\r\n // 调用getPageData方法获取数据\r\n getPageData({ ...params }).then((res: any) => {\r\n if (res.code == 200 && res.data) {\r\n let formProps = JSON.parse(res.data.formProps || \"{}\") || {};\r\n this.setState(\r\n {\r\n ...formProps,\r\n },\r\n () => {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n );\r\n } else if (res.code == 200 && res.data == null) {\r\n message.error(\"未找到配置信息!\");\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n });\r\n } else {\r\n this.setState({\r\n pageLoading: false,\r\n });\r\n }\r\n }\r\n // onSearch() {}\r\n\r\n tableLoad(params: any, requestConfig = {}) {\r\n this.pageRef.current?.tableLoad(params, requestConfig);\r\n }\r\n tableReload(params = {}, autoLoad = true) {\r\n this.pageRef.current?.tableReload(params, autoLoad);\r\n }\r\n\r\n render() {\r\n const { className, funcs = {} } = this.props;\r\n const {\r\n pageLoading,\r\n formType,\r\n selfButton,\r\n props = {},\r\n otherProps={},\r\n forms,\r\n buttonLoading,\r\n } = this.state;\r\n const { requestObject = {} } = otherProps;\r\n let _this = this;\r\n const deaultFuncs = {\r\n setFieldDisabled: (key, disabled) => {\r\n const newData = setFieldDisabled(forms, key, disabled);\r\n this.setState({\r\n forms: newData,\r\n });\r\n },\r\n setFieldVisible: (key, disabled) => {\r\n const newData = setFieldVisible(forms, key, disabled);\r\n this.setState({\r\n forms: newData,\r\n });\r\n },\r\n setFieldPropsData: (key, data) => {\r\n const newData = setFieldPropsData(forms, key, data);\r\n this.setState({\r\n forms: newData,\r\n });\r\n },\r\n history: (params, type) => {\r\n jumpPage(params, type);\r\n },\r\n setButtonLoading(code, loading) {\r\n _this.setState({\r\n buttonLoading: { ...buttonLoading, [code]: loading },\r\n });\r\n },\r\n\r\n getCurrentProject: () => {\r\n return getProject();\r\n },\r\n };\r\n const { children } = this.props;\r\n\r\n let codeFormButtons = [];\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n codeFormButtons.push(child);\r\n });\r\n } else {\r\n codeFormButtons.push(item);\r\n }\r\n });\r\n } else if (children) {\r\n codeFormButtons.push(children);\r\n }\r\n return (\r\n <div className={cls(\"nsc-framework-formpage\", className)}>\r\n {pageLoading ? (\r\n <div style={{ width: \"100%\", height: \"100%\" }}>\r\n <Spin spinning={pageLoading}></Spin>\r\n </div>\r\n ) : (\r\n <FormPage\r\n formType={formType}\r\n forms={forms}\r\n requestObject={requestObject}\r\n Utils={defaulUtil}\r\n funcs={{ ...deaultFuncs, ...funcs }}\r\n ref={this.pageRef}\r\n pageRef={this.pageRef}\r\n props={props}\r\n {...otherProps}\r\n >\r\n {renderSelfToolButton({\r\n selfButton,\r\n pageRef: this.pageRef,\r\n funcs,\r\n loading: this.state.buttonLoading,\r\n })}\r\n </FormPage>\r\n )}\r\n </div>\r\n );\r\n }\r\n}\r\n"],"mappings":"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"}
@@ -185,27 +185,28 @@ const getProject = () => {
185
185
  }) || {};
186
186
  return project;
187
187
  };
188
+ const defaultStateValue = {
189
+ pageProps: {},
190
+ treeProps: {
191
+ store: {
192
+ url: "",
193
+ autoLoad: false
194
+ }
195
+ },
196
+ tableProps: {},
197
+ selfToolButton: [],
198
+ selfColumnButton: [],
199
+ selfFormButton: [],
200
+ pageLoading: true,
201
+ defaultColumns: [],
202
+ otherProps: {},
203
+ buttonLoading: {},
204
+ formPageProps: {}
205
+ };
188
206
  export default class SettingTable extends React.Component {
189
207
  constructor() {
190
208
  super(...arguments);
191
- _defineProperty(this, "state", {
192
- pageProps: {},
193
- treeProps: {
194
- store: {
195
- url: "",
196
- autoLoad: false
197
- }
198
- },
199
- tableProps: {},
200
- selfToolButton: [],
201
- selfColumnButton: [],
202
- selfFormButton: [],
203
- pageLoading: true,
204
- defaultColumns: [],
205
- otherProps: {},
206
- buttonLoading: {},
207
- formPageProps: {}
208
- });
209
+ _defineProperty(this, "state", _objectSpread({}, defaultStateValue));
209
210
  _defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
210
211
  _defineProperty(this, "initData", res => {
211
212
  const {
@@ -230,7 +231,9 @@ export default class SettingTable extends React.Component {
230
231
  }
231
232
  componentDidUpdate(prevProps, prevState, snapshot) {
232
233
  if (prevProps.tableCode != this.props.tableCode) {
233
- this.getData();
234
+ this.setState(_objectSpread({}, defaultStateValue), () => {
235
+ this.getData();
236
+ });
234
237
  }
235
238
  }
236
239
  // 获取数据
@@ -403,7 +406,6 @@ export default class SettingTable extends React.Component {
403
406
  formPageProps = {},
404
407
  selfFormButton
405
408
  } = this.state;
406
- console.log('formPageProps', formPageProps);
407
409
  const {
408
410
  treeProps: settingTreeProps = {},
409
411
  tableProps: settingTableProps = {}
@@ -549,4 +551,4 @@ export default class SettingTable extends React.Component {
549
551
  })));
550
552
  }
551
553
  }
552
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZkJ1dHRvbiIsInBhZ2VSZWYiLCJmdW5jcyIsImxvYWRpbmciLCJ0eXBlIiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImluZGV4IiwicGFnZVR5cGUiLCJrZXkiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwic2VsZlRvb2xCdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJjcmVhdGVSZWYiLCJyZXMiLCJzdGF0ZSIsInNob3dTZWFyY2giLCJkZWZhdWx0U2VhcmNoIiwidGFibGVEYXRhUmVzb3VyY2UiLCJzZXRUaW1lb3V0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImN1cnJlbnQiLCJ0YWJsZUxvYWQiLCJzZXRTZWFyY2hQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsImdldERhdGEiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsInRhYmxlQ29kZSIsInNldFN0YXRlIiwicHVibGlzaGVkIiwibWVudUNvZGUiLCJ0YWJQYXJhbXMiLCJpc1B1Ymxpc2hlZCIsInRoZW4iLCJfcGFnZV9wcm9wcyRwZXJtaXNzaW8iLCJ0YWJsZV9wcm9wcyIsIkpTT04iLCJwYXJzZSIsInRyZWVfcHJvcHMiLCJwYWdlX3Byb3BzIiwib3RoZXJfcHJvcHMiLCJvdGhlclBhcmFtcyIsImZvcm1fcHJvcHMiLCJmb3JtUHJvcHMiLCJwZXJtaXNzaW9uIiwiaGFzIiwiVXRpbHMiLCJwYXJhbUZ1bmMiLCJjb252ZXJUYWJQYXJhbXMiLCJyZXF1ZXN0UGFyYW1zIiwibmV3UmVxdWVzdFBhcmFtcyIsInF1ZXJ5UGFyYW1zIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwiY29udmVyUGFyYW1zIiwib3RoZXIiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJuZXdQYXJhbXMiLCJjb2x1bW5CdXR0b25zIiwidG9vbEJ1dHRvbnMiLCJfbWVzc2FnZSIsImVycm9yIiwiZ2V0U2VhcmNoVmFsdWVzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MyIsInZhbHVlIiwiY2FsbEJhY2siLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ0IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NSIsInJlcXVlc3RDb25maWciLCJ1bmRlZmluZWQiLCJ0YWJsZVJlbG9hZCIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ3IiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDgiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDkiLCJyZW5kZXIiLCJjbGFzc05hbWUiLCJiYXNlUHJvcHMiLCJjb25zb2xlIiwibG9nIiwic2V0dGluZ1RyZWVQcm9wcyIsInNldHRpbmdUYWJsZVByb3BzIiwiX2V4Y2x1ZGVkMiIsIl90aGlzIiwiZGVhdWx0RnVuY3MiLCJuZXdEYXRhIiwic2V0QnV0dG9uTG9hZGluZyIsImdldEN1cnJlbnRQcm9qZWN0IiwiY2hpbGRyZW4iLCJjb2RlU2VsZkJ1dHRvbnMiLCJjb2RlY29sdW1uQnV0dG9ucyIsImNvZGVGb3JtQnV0dG9ucyIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfaXRlbSRwcm9wcyIsIl9pdGVtJHByb3BzMiIsIl9pdGVtJHByb3BzMyIsInN0eWxlIiwid2lkdGgiLCJoZWlnaHQiLCJzcGlubmluZyIsIl9leHRlbmRzIiwicmVmIiwib25IaWRlRm9ybSIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDEwIiwiaGlkZUZvcm0iLCJpbml0RGF0YSIsImZvcm1UeXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9TZXR0aW5nVGFibGUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcndhcmRSZWYsIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IEJhc2VQYWdlLCB7IE5TQ0Jhc2VCYWdlUHJvcHMgfSBmcm9tIFwiLi4vQmFzZVBhZ2VcIjtcclxuaW1wb3J0IFNwaW4gZnJvbSBcIi4uLy4uL2Jhc2Uvc3BpblwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgKiBhcyBOc2NDb20gZnJvbSBcIi4vY29tXCI7XHJcbmltcG9ydCBOc2NGaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0ICogYXMgTnNjVXRpbHMgZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgbWVzc2FnZSB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tIFwicXVlcnktc3RyaW5nXCI7XHJcbmltcG9ydCB7IGdldExvY2FsU3RvcmUgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG4vLyBpbXBvcnQgeyBoaXN0b3J5IH0gZnJvbSAndW1pJ1xyXG4vLyBpbXBvcnQgeyBnZXRDb25maWdEYXRhIH0gZnJvbSAnLi4vc2VydmljZXMnO1xyXG5cclxuY29uc3QgZGVmYXVsVXRpbCA9IHtcclxuICBOc2NDb20sXHJcbiAgTnNjRmlsZSxcclxuICBOc2NSZXF1ZXN0LFxyXG4gIE5zY1V0aWxzLFxyXG4gIGRheWpzLFxyXG4gIGNyZWF0ZUVsZW1lbnQ6IFJlYWN0LmNyZWF0ZUVsZW1lbnQsXHJcbn0gYXMgYW55O1xyXG5jb25zdCByZW5kZXJTZWxmVG9vbEJ1dHRvbiA9ICh7XHJcbiAgc2VsZkJ1dHRvbixcclxuICBwYWdlUmVmLFxyXG4gIGZ1bmNzLFxyXG4gIGxvYWRpbmcsXHJcbiAgdHlwZSA9IFwidG9vbEJ1dHRvblwiLFxyXG59KSA9PiB7XHJcbiAgaWYgKHNlbGZCdXR0b24ubGVuZ3RoID09IDApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc2VsZkJ1dHRvbi5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHBhZ2VUeXBlPXt0eXBlfVxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0geyBwYWdlUmVmOiBwYWdlUmVmLCBmdW5jczogZnVuY3MgfTtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIGl0ZW0ub25DbGljayk7XHJcbiAgICAgICAgICAgIGZ1bmMoZGVmYXVsVXRpbCwgZXZlbnRPcHRpb24pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGNvZGU9e2l0ZW0uY29kZX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmdbaXRlbS5jb2RlXSA9PT0gdHJ1ZSA/IHRydWUgOiBmYWxzZX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgcmVuZGVyU2VsZkNvbHVtbkJ1dHRvbiA9ICh7IHNlbGZDb2x1bW5CdXR0b24sIHBhZ2VSZWYsIGZ1bmNzIH0pID0+IHtcclxuICBpZiAoc2VsZkNvbHVtbkJ1dHRvbi5sZW5ndGggPT0gMCkge1xyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBzZWxmQ29sdW1uQnV0dG9uLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgcGFnZVR5cGU9XCJjb2x1bW5CdXR0b25cIlxyXG4gICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgIHR5cGU9e2l0ZW0udHlwZX1cclxuICAgICAgICAgIG9uQ2xpY2s9eyhyZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgbGV0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IGZ1bmNzLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjb25zdCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgaXRlbS5vbkNsaWNrKTtcclxuICAgICAgICAgICAgZnVuYyhkZWZhdWxVdGlsLCBldmVudE9wdGlvbik7XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgICAgY29kZT17aXRlbS5jb2RlfVxyXG4gICAgICAgICAgcmVjb3JkU2hvdz17aXRlbS5yZWNvcmRTaG93fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtpdGVtLm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG5jb25zdCBnZXRQYWdlRGF0YSA9IChwYXJhbXM6IGFueSkgPT4ge1xyXG4gIHJldHVybiBOc2NSZXF1ZXN0LmdldChgL2pxdWljay1zZXR0aW5nL3NldHRpbmcvdGFibGUvaW5mby9gLCB7XHJcbiAgICBwYXJhbXMsXHJcbiAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICB9KTtcclxufTtcclxuXHJcbi8v6K6+572u6KGo5Y2V5a2X5q615Y+q6K+7XHJcbmNvbnN0IHNldEZpZWxkRGlzYWJsZWQgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgbGV0IHByb3BzID0gb2JqLnByb3BzID8geyAuLi5vYmoucHJvcHMgfSA6IHt9O1xyXG4gICAgICBwcm9wcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xyXG4gICAgICBvYmoucHJvcHMgPSBwcm9wcztcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG4vL+iuvue9ruihqOWNleWtl+autemakOiXj1xyXG5jb25zdCBzZXRGaWVsZFZpc2libGUgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCB2aXNpYmxlKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSB8fCBrZXkuaW5kZXhPZihpdGVtLmRhdGFJbmRleCkgPiAtMSkge1xyXG4gICAgICBvYmouZWRpdG9yID0gdmlzaWJsZTtcclxuICAgIH1cclxuICAgIG5ld0NvbHVtbnMucHVzaChvYmopO1xyXG4gIH0pO1xyXG4gIHJldHVybiBuZXdDb2x1bW5zO1xyXG59O1xyXG5cclxuY29uc3Qgc2V0RmllbGRQcm9wc0RhdGEgPSAoZGF0YTogQXJyYXk8YW55Piwga2V5LCBwcm9wc0RhdGEpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5KSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGF0YSA9IHByb3BzRGF0YTtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuaW50ZXJmYWNlIElQYXJhbXMge1xyXG4gIHBhdGhuYW1lPzogc3RyaW5nO1xyXG4gIHF1ZXJ5PzogYW55O1xyXG4gIGlkPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VOYW1lPzogc3RyaW5nO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIHNlcnZpY2VQYXRoPzogc3RyaW5nO1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIG9wZW5UeXBlPzogbnVtYmVyO1xyXG59XHJcbmNvbnN0IGp1bXBQYWdlID0gKHBhcmFtczogSVBhcmFtcywgdHlwZT86IFwiYWRkVGFiXCIgfCBcImp1bXBNZW51XCIpID0+IHtcclxuICBjb25zdCB7XHJcbiAgICBwYXRobmFtZSxcclxuICAgIHF1ZXJ5ID0ge30sXHJcbiAgICBpZCxcclxuICAgIHRpdGxlLFxyXG4gICAgc2VydmljZU5hbWUsXHJcbiAgICBzZXJ2aWNlUGF0aCxcclxuICAgIG9wZW5UeXBlLFxyXG4gIH0gPSBwYXJhbXM7XHJcbiAgY29uc3QgbmV3UXVlcnkgPSB7IC4uLnF1ZXJ5IH0gYXMgYW55O1xyXG4gIGNvbnN0IHVybFBhcmFtcyA9IHF1ZXJ5U3RyaW5nLnN0cmluZ2lmeShuZXdRdWVyeSk7XHJcbiAgY29uc3QgcGF0aCA9IHVybFBhcmFtcyA/IGAke3BhdGhuYW1lfT8ke3VybFBhcmFtc31gIDogcGF0aG5hbWU7XHJcbiAgLy9AdHMtaWdub3JlXHJcbiAgaWYgKHdpbmRvdy5fX1BPV0VSRURfQllfUUlBTktVTl9fKSB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICB0aXRsZTogdGl0bGUgfHwgXCLmlrDmoIfnrb5cIixcclxuICAgICAgc2VydmljZU5hbWU6IHNlcnZpY2VOYW1lLCAvL+mFjee9rueahOW+ruW6lOeUqOWQjeensFxyXG4gICAgICBzZXJ2aWNlUGF0aDogc2VydmljZVBhdGgsIC8v6YWN572u55qE5b6u5bqU55So5YWl5Y+j5Zyw5Z2AXHJcbiAgICAgIHBhdGg6IHBhdGgsIC8v5paw5qCH562+55qEdXJsLOayoemFjee9rnNlcnZpY2VOYW1lIHBhdGjkuLrlrozmlbTot6/lvoRcclxuICAgICAgaWQ6IGlkLCAvL+iHquWumuS5ieWUr+S4gOWAvFxyXG4gICAgICBvcGVuVHlwZTogb3BlblR5cGUgPyBvcGVuVHlwZSA6IDQsIC8v5omT5byA5pa55byPIDTkvY3lvq7liY3nq68sIDPkuLppZnJhbWUgLOm7mOiupCAzXHJcbiAgICB9O1xyXG4gICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShcclxuICAgICAge1xyXG4gICAgICAgIGV2ZW50VHlwZTogdHlwZSA/IHR5cGUgOiBcImFkZFRhYlwiLFxyXG4gICAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSA/IHNlcnZpY2VOYW1lIDogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgIHBheWxvYWQ6IHR5cGUgPyBwYXJhbXMgOiBkYXRhLFxyXG4gICAgICB9LFxyXG4gICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICApO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHBhdGgpO1xyXG4gICAgd2luZG93Lmhpc3RvcnkuZ28oKTtcclxuICB9XHJcbn07XHJcbmNvbnN0IGdldFByb2plY3QgPSAoKSA9PiB7XHJcbiAgY29uc3QgcHJvamVjdCA9IGdldExvY2FsU3RvcmUoeyBuYW1lOiBcIm5zYy1ob21lLXByb2plY3RcIiB9KSB8fCB7fTtcclxuICByZXR1cm4gcHJvamVjdDtcclxufTtcclxuaW50ZXJmYWNlIElQcm9wcyB7XHJcbiAgdGFibGVDb2RlOiBzdHJpbmc7XHJcbiAgY2xhc3NOYW1lPzogYW55O1xyXG4gIG1lbnVDb2RlPzogc3RyaW5nO1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHB1Ymxpc2hlZD86IGJvb2xlYW47XHJcbiAgaW5zdGFuY2VSZWY/OiBhbnk7XHJcbiAgdGFiUGFyYW1zPzogYW55O1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBiYXNlUHJvcHM/OiBOU0NCYXNlQmFnZVByb3BzO1xyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTZXR0aW5nVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBhbnk+IHtcclxuICBzdGF0ZSA9IHtcclxuICAgIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gICAgdHJlZVByb3BzOiB7IHN0b3JlOiB7IHVybDogXCJcIiwgYXV0b0xvYWQ6IGZhbHNlIH0gfSBhcyBhbnksXHJcbiAgICB0YWJsZVByb3BzOiB7fSBhcyBhbnksXHJcbiAgICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gICAgc2VsZkNvbHVtbkJ1dHRvbjogW10gYXMgYW55LFxyXG4gICAgc2VsZkZvcm1CdXR0b246IFtdIGFzIGFueSxcclxuICAgIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gICAgZGVmYXVsdENvbHVtbnM6IFtdIGFzIGFueSxcclxuICAgIG90aGVyUHJvcHM6IHt9IGFzIGFueSxcclxuICAgIGJ1dHRvbkxvYWRpbmc6IHt9IGFzIGFueSxcclxuICAgIGZvcm1QYWdlUHJvcHM6IHt9IGFzIGFueSxcclxuICB9O1xyXG4gIHBhZ2VSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKFxyXG4gICAgcHJldlByb3BzOiBSZWFkb25seTxJUHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTxhbnk+LFxyXG4gICAgc25hcHNob3Q/OiBhbnlcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChwcmV2UHJvcHMudGFibGVDb2RlICE9IHRoaXMucHJvcHMudGFibGVDb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEgPSAocmVzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgb3RoZXJQcm9wcywgcGFnZVByb3BzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKFxyXG4gICAgICBwYWdlUHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgIG90aGVyUHJvcHMudGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gZnVuYyhkZWZhdWxVdGlsLCB7IHBhZ2VSZWY6IHRoaXMucGFnZVJlZiB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZCh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICB9LCA1MCk7IC8v55u05o6l6K6+572u77yMcGFnZVJlZuayoee7keWumu+8jOaaguaXtumAmui/h+W7tui/n+WHveaVsOi/m+ihjOino+WGs1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLy8g6I635Y+W5pWw5o2uXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIC8vIOS7jnByb3Bz5Lit6I635Y+WdGFibGVDb2Rl44CBcHVibGlzaGVk44CBbWVudUNvZGVcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyB0YWJsZUNvZGUsIHB1Ymxpc2hlZCA9IHRydWUsIG1lbnVDb2RlLCB0YWJQYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAvLyDlpoLmnpx0YWJsZUNvZGXlrZjlnKhcclxuICAgIGlmICh0YWJsZUNvZGUpIHtcclxuICAgICAgLy8g5a6a5LmJ5Y+C5pWwXHJcbiAgICAgIGxldCBwYXJhbXMgPSB7IGNvZGU6IHRhYmxlQ29kZSB9IGFzIGFueTtcclxuICAgICAgLy8g5aaC5p6ccHVibGlzaGVk5Li6dHJ1ZVxyXG4gICAgICBpZiAocHVibGlzaGVkKSB7XHJcbiAgICAgICAgLy8g6K6+572u5Y+C5pWwaXNQdWJsaXNoZWTkuLoxXHJcbiAgICAgICAgcGFyYW1zLmlzUHVibGlzaGVkID0gMTtcclxuICAgICAgfVxyXG4gICAgICAvLyDosIPnlKhnZXRQYWdlRGF0YeaWueazleiOt+WPluaVsOaNrlxyXG4gICAgICBnZXRQYWdlRGF0YSh7IC4uLnBhcmFtcyB9KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxldCB0YWJsZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudGFibGVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHRyZWVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRyZWVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHBhZ2VfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnBhZ2VQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IG90aGVyX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5vdGhlclBhcmFtcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGZvcm1fcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLmZvcm1Qcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucGVybWlzc2lvbj8uaGFzID09IHRydWUpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uLm1lbnVDb2RlID0gbWVudUNvZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHVibGlzaGVkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAocGFnZV9wcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzPy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHM/LnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCIpIHx8XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYXV0b0xvYWQgPT09IGZhbHNlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGFibGVfcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0YWJQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSBkZWZhdWxVdGlsIHx8IHt9O1xyXG4gICAgICAgICAgICBsZXQgcGFyYW1GdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgdGFiUGFyYW1zKTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlclRhYlBhcmFtcyA9IHBhcmFtRnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICBsZXQgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHBhZ2VfcHJvcHM7XHJcbiAgICAgICAgICAgICAgbGV0IG5ld1JlcXVlc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBuZXdSZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdFBhcmFtc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcmVxdWVzdFBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIC4uLm90aGVyIH0gPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBuZXdQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMsIC4uLmRhdGEgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5vdGhlcixcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdFBhcmFtc1trZXldID0gbmV3UGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdFBhcmFtc1trZXldID0geyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcyA9IHsgLi4ubmV3UmVxdWVzdFBhcmFtcyB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnBhZ2VfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0cmVlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRyZWVfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0YWJsZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50YWJsZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM6IHsgLi4ub3RoZXJfcHJvcHMgfSxcclxuICAgICAgICAgICAgICBzZWxmQ29sdW1uQnV0dG9uOiBKU09OLnBhcnNlKHJlcy5kYXRhLmNvbHVtbkJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIHNlbGZUb29sQnV0dG9uOiBKU09OLnBhcnNlKHJlcy5kYXRhLnRvb2xCdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgICBkZWZhdWx0Q29sdW1uczogcGFnZV9wcm9wcy5jb2x1bW5zLFxyXG4gICAgICAgICAgICAgIGZvcm1QYWdlUHJvcHM6IGZvcm1fcHJvcHMsXHJcbiAgICAgICAgICAgICAgc2VsZkZvcm1CdXR0b246IGZvcm1fcHJvcHM/LnNlbGZCdXR0b24gfHwgW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5pyq5om+5Yiw6YWN572u5L+h5oGv77yBXCIpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIG9uU2VhcmNoKCkge31cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZUxvYWQocGFyYW1zLCByZXF1ZXN0Q29uZmlnKTtcclxuICB9XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlUmVsb2FkKHBhcmFtcywgYXV0b0xvYWQpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIGZ1bmNzID0ge30sXHJcbiAgICAgIGJhc2VQcm9wcyA9IHt9IGFzIE5TQ0Jhc2VCYWdlUHJvcHMsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgcGFnZVByb3BzLFxyXG4gICAgICB0cmVlUHJvcHMsXHJcbiAgICAgIHRhYmxlUHJvcHMsXHJcbiAgICAgIHNlbGZUb29sQnV0dG9uLFxyXG4gICAgICBzZWxmQ29sdW1uQnV0dG9uLFxyXG4gICAgICBwYWdlTG9hZGluZyxcclxuICAgICAgZGVmYXVsdENvbHVtbnMsXHJcbiAgICAgIGJ1dHRvbkxvYWRpbmcgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzZWxmRm9ybUJ1dHRvbixcclxuICAgIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc29sZS5sb2coJ2Zvcm1QYWdlUHJvcHMnLGZvcm1QYWdlUHJvcHMpXHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHRyZWVQcm9wczogc2V0dGluZ1RyZWVQcm9wcyA9IHt9LFxyXG4gICAgICB0YWJsZVByb3BzOiBzZXR0aW5nVGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICAuLi5vdGhlclByb3BzXHJcbiAgICB9ID0gYmFzZVByb3BzO1xyXG4gICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgIC8vIGNvbnN0IHtzdG9yZTp0YWJsZVN0b3JlfVxyXG4gICAgLy8gY29uc3QgeyBzdG9yZTogc2V0dGluZ1RhYmxlU3RvcmUgfSA9IHNldHRpbmdUYWJsZVByb3BzO1xyXG4gICAgY29uc3QgZGVhdWx0RnVuY3MgPSB7XHJcbiAgICAgIHNldEZpZWxkRGlzYWJsZWQ6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkRGlzYWJsZWQocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFZpc2libGU6IChrZXksIGRpc2FibGVkKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkVmlzaWJsZShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkaXNhYmxlZCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBwYWdlUHJvcHM6IHsgLi4ucGFnZVByb3BzLCBjb2x1bW5zOiBuZXdEYXRhIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEZpZWxkUHJvcHNEYXRhOiAoa2V5LCBkYXRhKSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IHNldEZpZWxkUHJvcHNEYXRhKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRhdGEpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBoaXN0b3J5OiAocGFyYW1zLCB0eXBlKSA9PiB7XHJcbiAgICAgICAganVtcFBhZ2UocGFyYW1zLCB0eXBlKTtcclxuICAgICAgfSxcclxuICAgICAgc2V0QnV0dG9uTG9hZGluZyhjb2RlLCBsb2FkaW5nKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgYnV0dG9uTG9hZGluZzogeyAuLi5idXR0b25Mb2FkaW5nLCBbY29kZV06IGxvYWRpbmcgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuXHJcbiAgICAgIGdldEN1cnJlbnRQcm9qZWN0OiAoKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIGdldFByb2plY3QoKTtcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IGNvZGVTZWxmQnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IGNvZGVjb2x1bW5CdXR0b25zID0gW107XHJcbiAgICBsZXQgY29kZUZvcm1CdXR0b25zID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZVNlbGZCdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2UgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIikge1xyXG4gICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhcIm5zYy1mcmFtZXdvcmstdGFibGVwYWdlXCIsIGNsYXNzTmFtZSl9PlxyXG4gICAgICAgIHtwYWdlTG9hZGluZyA/IChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiMTAwJVwiIH19PlxyXG4gICAgICAgICAgICA8U3BpbiBzcGlubmluZz17cGFnZUxvYWRpbmd9PjwvU3Bpbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8QmFzZVBhZ2VcclxuICAgICAgICAgICAgey4uLnBhZ2VQcm9wc31cclxuICAgICAgICAgICAgdHJlZVByb3BzPXt7IC4uLnRyZWVQcm9wcywgLi4uc2V0dGluZ1RyZWVQcm9wcyB9fVxyXG4gICAgICAgICAgICB0YWJsZVByb3BzPXt7IC4uLnRhYmxlUHJvcHMsIC4uLnNldHRpbmdUYWJsZVByb3BzIH19XHJcbiAgICAgICAgICAgIGZvcm1Qcm9wcz17e319XHJcbiAgICAgICAgICAgIFV0aWxzPXt7IC4uLmRlZmF1bFV0aWwgfX1cclxuICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIHBhZ2VSZWY9e3RoaXMucGFnZVJlZn1cclxuICAgICAgICAgICAgb25IaWRlRm9ybT17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogZGVmYXVsdENvbHVtbnMgfSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgZnVuY3M9e3sgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH19XHJcbiAgICAgICAgICAgIGluaXREYXRhPXt0aGlzLmluaXREYXRhfVxyXG4gICAgICAgICAgICBmb3JtUGFnZVByb3BzPXt7XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU6IGZvcm1QYWdlUHJvcHMuZm9ybVR5cGUgfHwgXCJtb2RhbFwiLFxyXG4gICAgICAgICAgICAgIHByb3BzOiBmb3JtUGFnZVByb3BzPy5wcm9wcyxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgdGFibGVDb2RlPXt0aGlzLnByb3BzLnRhYmxlQ29kZX1cclxuICAgICAgICAgICAgey4uLm90aGVyUHJvcHN9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtyZW5kZXJTZWxmVG9vbEJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkJ1dHRvbjogc2VsZlRvb2xCdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICAgIGxvYWRpbmc6IHRoaXMuc3RhdGUuYnV0dG9uTG9hZGluZyxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIHtjb2RlU2VsZkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZkNvbHVtbkJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgc2VsZkNvbHVtbkJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZWNvbHVtbkJ1dHRvbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZGb3JtQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgICAgdHlwZTogXCJmb3JtQnV0dG9uXCIsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZUZvcm1CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIDwvQmFzZVBhZ2U+XHJcbiAgICAgICAgKX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0EsT0FBT0EsUUFBUSxNQUE0QixhQUFhO0FBQ3hELE9BQU9DLElBQUksTUFBTSxpQkFBaUI7QUFDbEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPLGNBQWM7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
554
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlUGFnZSIsIlNwaW4iLCJCdXR0b24iLCJSZWFjdCIsIk5zY0NvbSIsIk5zY0ZpbGUiLCJOc2NSZXF1ZXN0IiwiTnNjVXRpbHMiLCJjbHMiLCJxdWVyeVN0cmluZyIsImdldExvY2FsU3RvcmUiLCJkYXlqcyIsImRlZmF1bFV0aWwiLCJjcmVhdGVFbGVtZW50IiwicmVuZGVyU2VsZlRvb2xCdXR0b24iLCJfcmVmIiwic2VsZkJ1dHRvbiIsInBhZ2VSZWYiLCJmdW5jcyIsImxvYWRpbmciLCJ0eXBlIiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImluZGV4IiwicGFnZVR5cGUiLCJrZXkiLCJvbkNsaWNrIiwiZXZlbnRPcHRpb24iLCJmdW5jIiwiRnVuY3Rpb24iLCJjb2RlIiwibmFtZSIsInJlbmRlclNlbGZDb2x1bW5CdXR0b24iLCJfcmVmMiIsInNlbGZDb2x1bW5CdXR0b24iLCJyZWNvcmQiLCJyZWNvcmRTaG93IiwiZ2V0UGFnZURhdGEiLCJwYXJhbXMiLCJnZXQiLCJ4c3NGaWx0ZXIiLCJhdXRvUHJlZml4Iiwic2V0RmllbGREaXNhYmxlZCIsImRhdGEiLCJkaXNhYmxlZCIsImNvbHVtbnMiLCJuZXdDb2x1bW5zIiwib2JqIiwiX29iamVjdFNwcmVhZCIsImRhdGFJbmRleCIsImluZGV4T2YiLCJwcm9wcyIsInB1c2giLCJzZXRGaWVsZFZpc2libGUiLCJ2aXNpYmxlIiwiZWRpdG9yIiwic2V0RmllbGRQcm9wc0RhdGEiLCJwcm9wc0RhdGEiLCJqdW1wUGFnZSIsInBhdGhuYW1lIiwicXVlcnkiLCJpZCIsInRpdGxlIiwic2VydmljZU5hbWUiLCJzZXJ2aWNlUGF0aCIsIm9wZW5UeXBlIiwibmV3UXVlcnkiLCJ1cmxQYXJhbXMiLCJzdHJpbmdpZnkiLCJwYXRoIiwiY29uY2F0Iiwid2luZG93IiwiX19QT1dFUkVEX0JZX1FJQU5LVU5fXyIsInBhcmVudCIsInBvc3RNZXNzYWdlIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImxvY2F0aW9uIiwib3JpZ2luIiwiaGlzdG9yeSIsInB1c2hTdGF0ZSIsImdvIiwiZ2V0UHJvamVjdCIsInByb2plY3QiLCJkZWZhdWx0U3RhdGVWYWx1ZSIsInBhZ2VQcm9wcyIsInRyZWVQcm9wcyIsInN0b3JlIiwidXJsIiwiYXV0b0xvYWQiLCJ0YWJsZVByb3BzIiwic2VsZlRvb2xCdXR0b24iLCJzZWxmRm9ybUJ1dHRvbiIsInBhZ2VMb2FkaW5nIiwiZGVmYXVsdENvbHVtbnMiLCJvdGhlclByb3BzIiwiYnV0dG9uTG9hZGluZyIsImZvcm1QYWdlUHJvcHMiLCJTZXR0aW5nVGFibGUiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImFyZ3VtZW50cyIsIl9kZWZpbmVQcm9wZXJ0eSIsImNyZWF0ZVJlZiIsInJlcyIsInN0YXRlIiwic2hvd1NlYXJjaCIsImRlZmF1bHRTZWFyY2giLCJ0YWJsZURhdGFSZXNvdXJjZSIsInNldFRpbWVvdXQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQyIiwiY3VycmVudCIsInRhYmxlTG9hZCIsInNldFNlYXJjaFBhcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiZ2V0RGF0YSIsImNvbXBvbmVudERpZFVwZGF0ZSIsInByZXZQcm9wcyIsInByZXZTdGF0ZSIsInNuYXBzaG90IiwidGFibGVDb2RlIiwic2V0U3RhdGUiLCJwdWJsaXNoZWQiLCJtZW51Q29kZSIsInRhYlBhcmFtcyIsImlzUHVibGlzaGVkIiwidGhlbiIsIl9wYWdlX3Byb3BzJHBlcm1pc3NpbyIsInRhYmxlX3Byb3BzIiwiSlNPTiIsInBhcnNlIiwidHJlZV9wcm9wcyIsInBhZ2VfcHJvcHMiLCJvdGhlcl9wcm9wcyIsIm90aGVyUGFyYW1zIiwiZm9ybV9wcm9wcyIsImZvcm1Qcm9wcyIsInBlcm1pc3Npb24iLCJoYXMiLCJVdGlscyIsInBhcmFtRnVuYyIsImNvbnZlclRhYlBhcmFtcyIsInJlcXVlc3RQYXJhbXMiLCJuZXdSZXF1ZXN0UGFyYW1zIiwicXVlcnlQYXJhbXMiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJjb252ZXJQYXJhbXMiLCJvdGhlciIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm5ld1BhcmFtcyIsImNvbHVtbkJ1dHRvbnMiLCJ0b29sQnV0dG9ucyIsIl9tZXNzYWdlIiwiZXJyb3IiLCJnZXRTZWFyY2hWYWx1ZXMiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQzIiwidmFsdWUiLCJjYWxsQmFjayIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDQiLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQ1IiwicmVxdWVzdENvbmZpZyIsInVuZGVmaW5lZCIsInRhYmxlUmVsb2FkIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50NiIsImdldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHBhZ2VSZWYkY3VycmVudDciLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50OCIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50OSIsInJlbmRlciIsImNsYXNzTmFtZSIsImJhc2VQcm9wcyIsInNldHRpbmdUcmVlUHJvcHMiLCJzZXR0aW5nVGFibGVQcm9wcyIsIl9leGNsdWRlZDIiLCJfdGhpcyIsImRlYXVsdEZ1bmNzIiwibmV3RGF0YSIsInNldEJ1dHRvbkxvYWRpbmciLCJnZXRDdXJyZW50UHJvamVjdCIsImNoaWxkcmVuIiwiY29kZVNlbGZCdXR0b25zIiwiY29kZWNvbHVtbkJ1dHRvbnMiLCJjb2RlRm9ybUJ1dHRvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2l0ZW0kcHJvcHMiLCJfaXRlbSRwcm9wczIiLCJfaXRlbSRwcm9wczMiLCJzdHlsZSIsIndpZHRoIiwiaGVpZ2h0Iiwic3Bpbm5pbmciLCJfZXh0ZW5kcyIsInJlZiIsIm9uSGlkZUZvcm0iLCJfdGhpcyRwYWdlUmVmJGN1cnJlbnQxMCIsImhpZGVGb3JtIiwiaW5pdERhdGEiLCJmb3JtVHlwZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvU2V0dGluZ1RhYmxlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3J3YXJkUmVmLCB1c2VFZmZlY3QsIHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBCYXNlUGFnZSwgeyBOU0NCYXNlQmFnZVByb3BzIH0gZnJvbSBcIi4uL0Jhc2VQYWdlXCI7XHJcbmltcG9ydCBTcGluIGZyb20gXCIuLi8uLi9iYXNlL3NwaW5cIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgTnNjQ29tIGZyb20gXCIuL2NvbVwiO1xyXG5pbXBvcnQgTnNjRmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IE5zY1JlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCAqIGFzIE5zY1V0aWxzIGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCB7IG1lc3NhZ2UgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgcXVlcnlTdHJpbmcgZnJvbSBcInF1ZXJ5LXN0cmluZ1wiO1xyXG5pbXBvcnQgeyBnZXRMb2NhbFN0b3JlIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuLy8gaW1wb3J0IHsgaGlzdG9yeSB9IGZyb20gJ3VtaSdcclxuLy8gaW1wb3J0IHsgZ2V0Q29uZmlnRGF0YSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbmNvbnN0IGRlZmF1bFV0aWwgPSB7XHJcbiAgTnNjQ29tLFxyXG4gIE5zY0ZpbGUsXHJcbiAgTnNjUmVxdWVzdCxcclxuICBOc2NVdGlscyxcclxuICBkYXlqcyxcclxuICBjcmVhdGVFbGVtZW50OiBSZWFjdC5jcmVhdGVFbGVtZW50LFxyXG59IGFzIGFueTtcclxuY29uc3QgcmVuZGVyU2VsZlRvb2xCdXR0b24gPSAoe1xyXG4gIHNlbGZCdXR0b24sXHJcbiAgcGFnZVJlZixcclxuICBmdW5jcyxcclxuICBsb2FkaW5nLFxyXG4gIHR5cGUgPSBcInRvb2xCdXR0b25cIixcclxufSkgPT4ge1xyXG4gIGlmIChzZWxmQnV0dG9uLmxlbmd0aCA9PSAwKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9IGVsc2Uge1xyXG4gICAgcmV0dXJuIHNlbGZCdXR0b24ubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBwYWdlVHlwZT17dHlwZX1cclxuICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICB0eXBlPXtpdGVtLnR5cGV9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudE9wdGlvbiA9IHsgcGFnZVJlZjogcGFnZVJlZiwgZnVuY3M6IGZ1bmNzIH07XHJcbiAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlscyxldmVudE9wdGlvblwiLCBpdGVtLm9uQ2xpY2spO1xyXG4gICAgICAgICAgICBmdW5jKGRlZmF1bFV0aWwsIGV2ZW50T3B0aW9uKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBjb2RlPXtpdGVtLmNvZGV9XHJcbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nW2l0ZW0uY29kZV0gPT09IHRydWUgPyB0cnVlIDogZmFsc2V9XHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge2l0ZW0ubmFtZX1cclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgKTtcclxuICAgIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IHJlbmRlclNlbGZDb2x1bW5CdXR0b24gPSAoeyBzZWxmQ29sdW1uQnV0dG9uLCBwYWdlUmVmLCBmdW5jcyB9KSA9PiB7XHJcbiAgaWYgKHNlbGZDb2x1bW5CdXR0b24ubGVuZ3RoID09IDApIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gc2VsZkNvbHVtbkJ1dHRvbi5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIDxCdXR0b25cclxuICAgICAgICAgIHBhZ2VUeXBlPVwiY29sdW1uQnV0dG9uXCJcclxuICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICB0eXBlPXtpdGVtLnR5cGV9XHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiBwYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiBmdW5jcyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzLGV2ZW50T3B0aW9uXCIsIGl0ZW0ub25DbGljayk7XHJcbiAgICAgICAgICAgIGZ1bmMoZGVmYXVsVXRpbCwgZXZlbnRPcHRpb24pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIGNvZGU9e2l0ZW0uY29kZX1cclxuICAgICAgICAgIHJlY29yZFNob3c9e2l0ZW0ucmVjb3JkU2hvd31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7aXRlbS5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgZ2V0UGFnZURhdGEgPSAocGFyYW1zOiBhbnkpID0+IHtcclxuICByZXR1cm4gTnNjUmVxdWVzdC5nZXQoYC9qcXVpY2stc2V0dGluZy9zZXR0aW5nL3RhYmxlL2luZm8vYCwge1xyXG4gICAgcGFyYW1zLFxyXG4gICAgeHNzRmlsdGVyOiBmYWxzZSxcclxuICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgfSk7XHJcbn07XHJcblxyXG4vL+iuvue9ruihqOWNleWtl+auteWPquivu1xyXG5jb25zdCBzZXRGaWVsZERpc2FibGVkID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgZGlzYWJsZWQpID0+IHtcclxuICBjb25zdCBjb2x1bW5zID0gWy4uLmRhdGFdO1xyXG4gIGxldCBuZXdDb2x1bW5zID0gW10gYXMgYW55O1xyXG4gIGNvbHVtbnMubWFwKChpdGVtKSA9PiB7XHJcbiAgICBsZXQgb2JqID0geyAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5kYXRhSW5kZXggPT0ga2V5IHx8IGtleS5pbmRleE9mKGl0ZW0uZGF0YUluZGV4KSA+IC0xKSB7XHJcbiAgICAgIGxldCBwcm9wcyA9IG9iai5wcm9wcyA/IHsgLi4ub2JqLnByb3BzIH0gOiB7fTtcclxuICAgICAgcHJvcHMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcclxuICAgICAgb2JqLnByb3BzID0gcHJvcHM7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuLy/orr7nva7ooajljZXlrZfmrrXpmpDol49cclxuY29uc3Qgc2V0RmllbGRWaXNpYmxlID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgdmlzaWJsZSkgPT4ge1xyXG4gIGNvbnN0IGNvbHVtbnMgPSBbLi4uZGF0YV07XHJcbiAgbGV0IG5ld0NvbHVtbnMgPSBbXSBhcyBhbnk7XHJcbiAgY29sdW1ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgIGxldCBvYmogPSB7IC4uLml0ZW0gfTtcclxuICAgIGlmIChpdGVtLmRhdGFJbmRleCA9PSBrZXkgfHwga2V5LmluZGV4T2YoaXRlbS5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgb2JqLmVkaXRvciA9IHZpc2libGU7XHJcbiAgICB9XHJcbiAgICBuZXdDb2x1bW5zLnB1c2gob2JqKTtcclxuICB9KTtcclxuICByZXR1cm4gbmV3Q29sdW1ucztcclxufTtcclxuXHJcbmNvbnN0IHNldEZpZWxkUHJvcHNEYXRhID0gKGRhdGE6IEFycmF5PGFueT4sIGtleSwgcHJvcHNEYXRhKSA9PiB7XHJcbiAgY29uc3QgY29sdW1ucyA9IFsuLi5kYXRhXTtcclxuICBsZXQgbmV3Q29sdW1ucyA9IFtdIGFzIGFueTtcclxuICBjb2x1bW5zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgaWYgKGl0ZW0uZGF0YUluZGV4ID09IGtleSkge1xyXG4gICAgICBsZXQgcHJvcHMgPSBvYmoucHJvcHMgPyB7IC4uLm9iai5wcm9wcyB9IDoge307XHJcbiAgICAgIHByb3BzLmRhdGEgPSBwcm9wc0RhdGE7XHJcbiAgICAgIG9iai5wcm9wcyA9IHByb3BzO1xyXG4gICAgfVxyXG4gICAgbmV3Q29sdW1ucy5wdXNoKG9iaik7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG5ld0NvbHVtbnM7XHJcbn07XHJcbmludGVyZmFjZSBJUGFyYW1zIHtcclxuICBwYXRobmFtZT86IHN0cmluZztcclxuICBxdWVyeT86IGFueTtcclxuICBpZD86IHN0cmluZztcclxuICBzZXJ2aWNlTmFtZT86IHN0cmluZztcclxuICB0aXRsZT86IHN0cmluZztcclxuICBzZXJ2aWNlUGF0aD86IHN0cmluZztcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBvcGVuVHlwZT86IG51bWJlcjtcclxufVxyXG5jb25zdCBqdW1wUGFnZSA9IChwYXJhbXM6IElQYXJhbXMsIHR5cGU/OiBcImFkZFRhYlwiIHwgXCJqdW1wTWVudVwiKSA9PiB7XHJcbiAgY29uc3Qge1xyXG4gICAgcGF0aG5hbWUsXHJcbiAgICBxdWVyeSA9IHt9LFxyXG4gICAgaWQsXHJcbiAgICB0aXRsZSxcclxuICAgIHNlcnZpY2VOYW1lLFxyXG4gICAgc2VydmljZVBhdGgsXHJcbiAgICBvcGVuVHlwZSxcclxuICB9ID0gcGFyYW1zO1xyXG4gIGNvbnN0IG5ld1F1ZXJ5ID0geyAuLi5xdWVyeSB9IGFzIGFueTtcclxuICBjb25zdCB1cmxQYXJhbXMgPSBxdWVyeVN0cmluZy5zdHJpbmdpZnkobmV3UXVlcnkpO1xyXG4gIGNvbnN0IHBhdGggPSB1cmxQYXJhbXMgPyBgJHtwYXRobmFtZX0/JHt1cmxQYXJhbXN9YCA6IHBhdGhuYW1lO1xyXG4gIC8vQHRzLWlnbm9yZVxyXG4gIGlmICh3aW5kb3cuX19QT1dFUkVEX0JZX1FJQU5LVU5fXykge1xyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgdGl0bGU6IHRpdGxlIHx8IFwi5paw5qCH562+XCIsXHJcbiAgICAgIHNlcnZpY2VOYW1lOiBzZXJ2aWNlTmFtZSwgLy/phY3nva7nmoTlvq7lupTnlKjlkI3np7BcclxuICAgICAgc2VydmljZVBhdGg6IHNlcnZpY2VQYXRoLCAvL+mFjee9rueahOW+ruW6lOeUqOWFpeWPo+WcsOWdgFxyXG4gICAgICBwYXRoOiBwYXRoLCAvL+aWsOagh+etvueahHVybCzmsqHphY3nva5zZXJ2aWNlTmFtZSBwYXRo5Li65a6M5pW06Lev5b6EXHJcbiAgICAgIGlkOiBpZCwgLy/oh6rlrprkuYnllK/kuIDlgLxcclxuICAgICAgb3BlblR5cGU6IG9wZW5UeXBlID8gb3BlblR5cGUgOiA0LCAvL+aJk+W8gOaWueW8jyA05L2N5b6u5YmN56uvLCAz5Li6aWZyYW1lICzpu5jorqQgM1xyXG4gICAgfTtcclxuICAgIHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoXHJcbiAgICAgIHtcclxuICAgICAgICBldmVudFR5cGU6IHR5cGUgPyB0eXBlIDogXCJhZGRUYWJcIixcclxuICAgICAgICBzZXJ2aWNlTmFtZTogc2VydmljZU5hbWUgPyBzZXJ2aWNlTmFtZSA6IFwic2V0dGluZy13ZWJcIixcclxuICAgICAgICBwYXlsb2FkOiB0eXBlID8gcGFyYW1zIDogZGF0YSxcclxuICAgICAgfSxcclxuICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpblxyXG4gICAgKTtcclxuICB9IGVsc2Uge1xyXG4gICAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCBwYXRoKTtcclxuICAgIHdpbmRvdy5oaXN0b3J5LmdvKCk7XHJcbiAgfVxyXG59O1xyXG5jb25zdCBnZXRQcm9qZWN0ID0gKCkgPT4ge1xyXG4gIGNvbnN0IHByb2plY3QgPSBnZXRMb2NhbFN0b3JlKHsgbmFtZTogXCJuc2MtaG9tZS1wcm9qZWN0XCIgfSkgfHwge307XHJcbiAgcmV0dXJuIHByb2plY3Q7XHJcbn07XHJcbmludGVyZmFjZSBJUHJvcHMge1xyXG4gIHRhYmxlQ29kZTogc3RyaW5nO1xyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICBtZW51Q29kZT86IHN0cmluZztcclxuICBmdW5jcz86IGFueTtcclxuICBwdWJsaXNoZWQ/OiBib29sZWFuO1xyXG4gIGluc3RhbmNlUmVmPzogYW55O1xyXG4gIHRhYlBhcmFtcz86IGFueTtcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgYmFzZVByb3BzPzogTlNDQmFzZUJhZ2VQcm9wcztcclxuICBhdXRvTG9hZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbmNvbnN0IGRlZmF1bHRTdGF0ZVZhbHVlID0ge1xyXG4gIHBhZ2VQcm9wczoge30gYXMgYW55LFxyXG4gIHRyZWVQcm9wczogeyBzdG9yZTogeyB1cmw6IFwiXCIsIGF1dG9Mb2FkOiBmYWxzZSB9IH0gYXMgYW55LFxyXG4gIHRhYmxlUHJvcHM6IHt9IGFzIGFueSxcclxuICBzZWxmVG9vbEJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHNlbGZDb2x1bW5CdXR0b246IFtdIGFzIGFueSxcclxuICBzZWxmRm9ybUJ1dHRvbjogW10gYXMgYW55LFxyXG4gIHBhZ2VMb2FkaW5nOiB0cnVlLFxyXG4gIGRlZmF1bHRDb2x1bW5zOiBbXSBhcyBhbnksXHJcbiAgb3RoZXJQcm9wczoge30gYXMgYW55LFxyXG4gIGJ1dHRvbkxvYWRpbmc6IHt9IGFzIGFueSxcclxuICBmb3JtUGFnZVByb3BzOiB7fSBhcyBhbnksXHJcbn07XHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIGFueT4ge1xyXG4gIHN0YXRlID0ge1xyXG4gICAgLi4uZGVmYXVsdFN0YXRlVmFsdWUsXHJcbiAgfTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmdldERhdGEoKTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8SVByb3BzPixcclxuICAgIHByZXZTdGF0ZTogUmVhZG9ubHk8YW55PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBpZiAocHJldlByb3BzLnRhYmxlQ29kZSAhPSB0aGlzLnByb3BzLnRhYmxlQ29kZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRTdGF0ZVZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5nZXREYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdERhdGEgPSAocmVzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgb3RoZXJQcm9wcywgcGFnZVByb3BzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgaWYgKFxyXG4gICAgICBwYWdlUHJvcHMuc2hvd1NlYXJjaCAhPT0gZmFsc2UgJiZcclxuICAgICAgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgIG90aGVyUHJvcHMudGFibGVEYXRhUmVzb3VyY2UgPT0gXCJ1cmxcIlxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHMsZXZlbnRPcHRpb25cIiwgb3RoZXJQcm9wcy5kZWZhdWx0U2VhcmNoKTtcclxuICAgICAgY29uc3QgcGFyYW1zID0gZnVuYyhkZWZhdWxVdGlsLCB7IHBhZ2VSZWY6IHRoaXMucGFnZVJlZiB9KTtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlTG9hZCh7IC4uLnBhcmFtcyB9KTtcclxuICAgICAgICB0aGlzLnBhZ2VSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHsgLi4ucGFyYW1zIH0pO1xyXG4gICAgICB9LCA1MCk7IC8v55u05o6l6K6+572u77yMcGFnZVJlZuayoee7keWumu+8jOaaguaXtumAmui/h+W7tui/n+WHveaVsOi/m+ihjOino+WGs1xyXG4gICAgfVxyXG4gIH07XHJcbiAgLy8g6I635Y+W5pWw5o2uXHJcbiAgZ2V0RGF0YSgpIHtcclxuICAgIC8vIOS7jnByb3Bz5Lit6I635Y+WdGFibGVDb2Rl44CBcHVibGlzaGVk44CBbWVudUNvZGVcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBwYWdlTG9hZGluZzogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyB0YWJsZUNvZGUsIHB1Ymxpc2hlZCA9IHRydWUsIG1lbnVDb2RlLCB0YWJQYXJhbXMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAvLyDlpoLmnpx0YWJsZUNvZGXlrZjlnKhcclxuICAgIGlmICh0YWJsZUNvZGUpIHtcclxuICAgICAgLy8g5a6a5LmJ5Y+C5pWwXHJcbiAgICAgIGxldCBwYXJhbXMgPSB7IGNvZGU6IHRhYmxlQ29kZSB9IGFzIGFueTtcclxuICAgICAgLy8g5aaC5p6ccHVibGlzaGVk5Li6dHJ1ZVxyXG4gICAgICBpZiAocHVibGlzaGVkKSB7XHJcbiAgICAgICAgLy8g6K6+572u5Y+C5pWwaXNQdWJsaXNoZWTkuLoxXHJcbiAgICAgICAgcGFyYW1zLmlzUHVibGlzaGVkID0gMTtcclxuICAgICAgfVxyXG4gICAgICAvLyDosIPnlKhnZXRQYWdlRGF0YeaWueazleiOt+WPluaVsOaNrlxyXG4gICAgICBnZXRQYWdlRGF0YSh7IC4uLnBhcmFtcyB9KS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDAgJiYgcmVzLmRhdGEpIHtcclxuICAgICAgICAgIGxldCB0YWJsZV9wcm9wcyA9IEpTT04ucGFyc2UocmVzLmRhdGEudGFibGVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHRyZWVfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnRyZWVQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IHBhZ2VfcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLnBhZ2VQcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IG90aGVyX3Byb3BzID0gSlNPTi5wYXJzZShyZXMuZGF0YS5vdGhlclBhcmFtcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgbGV0IGZvcm1fcHJvcHMgPSBKU09OLnBhcnNlKHJlcy5kYXRhLmZvcm1Qcm9wcyB8fCBcInt9XCIpIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKHBhZ2VfcHJvcHMucGVybWlzc2lvbj8uaGFzID09IHRydWUpIHtcclxuICAgICAgICAgICAgcGFnZV9wcm9wcy5wZXJtaXNzaW9uLm1lbnVDb2RlID0gbWVudUNvZGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHVibGlzaGVkID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHBhZ2VfcHJvcHMucGVybWlzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAocGFnZV9wcm9wcy5zaG93U2VhcmNoICE9PSBmYWxzZSAmJlxyXG4gICAgICAgICAgICAgIG90aGVyX3Byb3BzPy5kZWZhdWx0U2VhcmNoICYmXHJcbiAgICAgICAgICAgICAgb3RoZXJfcHJvcHM/LnRhYmxlRGF0YVJlc291cmNlID09IFwidXJsXCIpIHx8XHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuYXV0b0xvYWQgPT09IGZhbHNlXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGFibGVfcHJvcHMuc3RvcmUuYXV0b0xvYWQgPSBmYWxzZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh0YWJQYXJhbXMpIHtcclxuICAgICAgICAgICAgY29uc3QgVXRpbHMgPSBkZWZhdWxVdGlsIHx8IHt9O1xyXG4gICAgICAgICAgICBsZXQgcGFyYW1GdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgdGFiUGFyYW1zKTtcclxuICAgICAgICAgICAgbGV0IGNvbnZlclRhYlBhcmFtcyA9IHBhcmFtRnVuYyhVdGlscyk7XHJcbiAgICAgICAgICAgIGlmIChwYWdlX3Byb3BzLnJlcXVlc3RQYXJhbXMpIHtcclxuICAgICAgICAgICAgICBsZXQgeyByZXF1ZXN0UGFyYW1zID0ge30gfSA9IHBhZ2VfcHJvcHM7XHJcbiAgICAgICAgICAgICAgbGV0IG5ld1JlcXVlc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBxdWVyeVBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogbnVsbCxcclxuICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBuZXdSZXF1ZXN0UGFyYW1zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWVzdFBhcmFtc1trZXldKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcmVxdWVzdFBhcmFtc1trZXldKTtcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGRhdGEsIC4uLm90aGVyIH0gPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBuZXdQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMsIC4uLmRhdGEgfSxcclxuICAgICAgICAgICAgICAgICAgICAuLi5vdGhlcixcclxuICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdFBhcmFtc1trZXldID0gbmV3UGFyYW1zO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgbmV3UmVxdWVzdFBhcmFtc1trZXldID0geyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcyA9IHsgLi4ubmV3UmVxdWVzdFBhcmFtcyB9O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHBhZ2VfcHJvcHMucmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IGRhdGE6IHsgLi4uY29udmVyVGFiUGFyYW1zIH0gfSxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogeyBkYXRhOiB7IC4uLmNvbnZlclRhYlBhcmFtcyB9IH0sXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHsgZGF0YTogeyAuLi5jb252ZXJUYWJQYXJhbXMgfSB9LFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnBhZ2VfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0cmVlUHJvcHM6IHtcclxuICAgICAgICAgICAgICAgIC4uLnRyZWVfcHJvcHMsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB0YWJsZVByb3BzOiB7XHJcbiAgICAgICAgICAgICAgICAuLi50YWJsZV9wcm9wcyxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG90aGVyUHJvcHM6IHsgLi4ub3RoZXJfcHJvcHMgfSxcclxuICAgICAgICAgICAgICBzZWxmQ29sdW1uQnV0dG9uOiBKU09OLnBhcnNlKHJlcy5kYXRhLmNvbHVtbkJ1dHRvbnMpIHx8IFtdLFxyXG4gICAgICAgICAgICAgIHNlbGZUb29sQnV0dG9uOiBKU09OLnBhcnNlKHJlcy5kYXRhLnRvb2xCdXR0b25zKSB8fCBbXSxcclxuICAgICAgICAgICAgICBkZWZhdWx0Q29sdW1uczogcGFnZV9wcm9wcy5jb2x1bW5zLFxyXG4gICAgICAgICAgICAgIGZvcm1QYWdlUHJvcHM6IGZvcm1fcHJvcHMsXHJcbiAgICAgICAgICAgICAgc2VsZkZvcm1CdXR0b246IGZvcm1fcHJvcHM/LnNlbGZCdXR0b24gfHwgW10sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5pyq5om+5Yiw6YWN572u5L+h5oGv77yBXCIpO1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgcGFnZUxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHBhZ2VMb2FkaW5nOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIG9uU2VhcmNoKCkge31cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICB9XHJcbiAgdGFibGVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIHRoaXMucGFnZVJlZi5jdXJyZW50Py50YWJsZUxvYWQocGFyYW1zLCByZXF1ZXN0Q29uZmlnKTtcclxuICB9XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LnRhYmxlUmVsb2FkKHBhcmFtcywgYXV0b0xvYWQpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucGFnZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0RhdGFzKCk7XHJcbiAgfVxyXG5cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnBhZ2VSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjbGFzc05hbWUsXHJcbiAgICAgIGZ1bmNzID0ge30sXHJcbiAgICAgIGJhc2VQcm9wcyA9IHt9IGFzIE5TQ0Jhc2VCYWdlUHJvcHMsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgcGFnZVByb3BzLFxyXG4gICAgICB0cmVlUHJvcHMsXHJcbiAgICAgIHRhYmxlUHJvcHMsXHJcbiAgICAgIHNlbGZUb29sQnV0dG9uLFxyXG4gICAgICBzZWxmQ29sdW1uQnV0dG9uLFxyXG4gICAgICBwYWdlTG9hZGluZyxcclxuICAgICAgZGVmYXVsdENvbHVtbnMsXHJcbiAgICAgIGJ1dHRvbkxvYWRpbmcgPSB7fSxcclxuICAgICAgZm9ybVBhZ2VQcm9wcyA9IHt9LFxyXG4gICAgICBzZWxmRm9ybUJ1dHRvbixcclxuICAgIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICB0cmVlUHJvcHM6IHNldHRpbmdUcmVlUHJvcHMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wczogc2V0dGluZ1RhYmxlUHJvcHMgPSB7fSxcclxuICAgICAgLi4ub3RoZXJQcm9wc1xyXG4gICAgfSA9IGJhc2VQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICAvLyBjb25zdCB7c3RvcmU6dGFibGVTdG9yZX1cclxuICAgIC8vIGNvbnN0IHsgc3RvcmU6IHNldHRpbmdUYWJsZVN0b3JlIH0gPSBzZXR0aW5nVGFibGVQcm9wcztcclxuICAgIGNvbnN0IGRlYXVsdEZ1bmNzID0ge1xyXG4gICAgICBzZXRGaWVsZERpc2FibGVkOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZERpc2FibGVkKHBhZ2VQcm9wcy5jb2x1bW5zLCBrZXksIGRpc2FibGVkKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgc2V0RmllbGRWaXNpYmxlOiAoa2V5LCBkaXNhYmxlZCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFZpc2libGUocGFnZVByb3BzLmNvbHVtbnMsIGtleSwgZGlzYWJsZWQpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgcGFnZVByb3BzOiB7IC4uLnBhZ2VQcm9wcywgY29sdW1uczogbmV3RGF0YSB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXRGaWVsZFByb3BzRGF0YTogKGtleSwgZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IG5ld0RhdGEgPSBzZXRGaWVsZFByb3BzRGF0YShwYWdlUHJvcHMuY29sdW1ucywga2V5LCBkYXRhKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IG5ld0RhdGEgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgaGlzdG9yeTogKHBhcmFtcywgdHlwZSkgPT4ge1xyXG4gICAgICAgIGp1bXBQYWdlKHBhcmFtcywgdHlwZSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldEJ1dHRvbkxvYWRpbmcoY29kZSwgbG9hZGluZykge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGJ1dHRvbkxvYWRpbmc6IHsgLi4uYnV0dG9uTG9hZGluZywgW2NvZGVdOiBsb2FkaW5nIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcblxyXG4gICAgICBnZXRDdXJyZW50UHJvamVjdDogKCkgPT4ge1xyXG4gICAgICAgIHJldHVybiBnZXRQcm9qZWN0KCk7XHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBjb2RlU2VsZkJ1dHRvbnMgPSBbXTtcclxuICAgIGxldCBjb2RlY29sdW1uQnV0dG9ucyA9IFtdO1xyXG4gICAgbGV0IGNvZGVGb3JtQnV0dG9ucyA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICAgIGNvZGVTZWxmQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgICBjb2RlY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgICAgY29kZUZvcm1CdXR0b25zLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIikge1xyXG4gICAgICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICAgICAgY29kZWNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybUJ1dHRvblwiKSB7XHJcbiAgICAgICAgICAgIGNvZGVGb3JtQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2RlU2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2RlY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtQnV0dG9uXCIpIHtcclxuICAgICAgICBjb2RlRm9ybUJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoXCJuc2MtZnJhbWV3b3JrLXRhYmxlcGFnZVwiLCBjbGFzc05hbWUpfT5cclxuICAgICAgICB7cGFnZUxvYWRpbmcgPyAoXHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiBcIjEwMCVcIiwgaGVpZ2h0OiBcIjEwMCVcIiB9fT5cclxuICAgICAgICAgICAgPFNwaW4gc3Bpbm5pbmc9e3BhZ2VMb2FkaW5nfT48L1NwaW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApIDogKFxyXG4gICAgICAgICAgPEJhc2VQYWdlXHJcbiAgICAgICAgICAgIHsuLi5wYWdlUHJvcHN9XHJcbiAgICAgICAgICAgIHRyZWVQcm9wcz17eyAuLi50cmVlUHJvcHMsIC4uLnNldHRpbmdUcmVlUHJvcHMgfX1cclxuICAgICAgICAgICAgdGFibGVQcm9wcz17eyAuLi50YWJsZVByb3BzLCAuLi5zZXR0aW5nVGFibGVQcm9wcyB9fVxyXG4gICAgICAgICAgICBmb3JtUHJvcHM9e3t9fVxyXG4gICAgICAgICAgICBVdGlscz17eyAuLi5kZWZhdWxVdGlsIH19XHJcbiAgICAgICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICAgICAgICBwYWdlUmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgIG9uSGlkZUZvcm09eygpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBhZ2VQcm9wczogeyAuLi5wYWdlUHJvcHMsIGNvbHVtbnM6IGRlZmF1bHRDb2x1bW5zIH0sXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGZ1bmNzPXt7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9fVxyXG4gICAgICAgICAgICBpbml0RGF0YT17dGhpcy5pbml0RGF0YX1cclxuICAgICAgICAgICAgZm9ybVBhZ2VQcm9wcz17e1xyXG4gICAgICAgICAgICAgIGZvcm1UeXBlOiBmb3JtUGFnZVByb3BzLmZvcm1UeXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgICAgICAgICBwcm9wczogZm9ybVBhZ2VQcm9wcz8ucHJvcHMsXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHRhYmxlQ29kZT17dGhpcy5wcm9wcy50YWJsZUNvZGV9XHJcbiAgICAgICAgICAgIHsuLi5vdGhlclByb3BzfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7cmVuZGVyU2VsZlRvb2xCdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZCdXR0b246IHNlbGZUb29sQnV0dG9uLFxyXG4gICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucGFnZVJlZixcclxuICAgICAgICAgICAgICBmdW5jczogeyAuLi5kZWF1bHRGdW5jcywgLi4uZnVuY3MgfSxcclxuICAgICAgICAgICAgICBsb2FkaW5nOiB0aGlzLnN0YXRlLmJ1dHRvbkxvYWRpbmcsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICB7Y29kZVNlbGZCdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge3JlbmRlclNlbGZDb2x1bW5CdXR0b24oe1xyXG4gICAgICAgICAgICAgIHNlbGZDb2x1bW5CdXR0b24sXHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIGZ1bmNzOiB7IC4uLmRlYXVsdEZ1bmNzLCAuLi5mdW5jcyB9LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge2NvZGVjb2x1bW5CdXR0b25zLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge3JlbmRlclNlbGZUb29sQnV0dG9uKHtcclxuICAgICAgICAgICAgICBzZWxmQnV0dG9uOiBzZWxmRm9ybUJ1dHRvbixcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHsgLi4uZGVhdWx0RnVuY3MsIC4uLmZ1bmNzIH0sXHJcbiAgICAgICAgICAgICAgbG9hZGluZzogdGhpcy5zdGF0ZS5idXR0b25Mb2FkaW5nLFxyXG4gICAgICAgICAgICAgIHR5cGU6IFwiZm9ybUJ1dHRvblwiLFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAge2NvZGVGb3JtQnV0dG9ucy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8L0Jhc2VQYWdlPlxyXG4gICAgICAgICl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9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