carbon-components-angular 5.27.3 → 5.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/docs/documentation/components/Table.html +182 -134
- package/docs/documentation/coverage.html +3 -3
- package/docs/documentation/dependencies.html +3 -3
- package/docs/documentation/index.html +6 -0
- package/docs/documentation/js/search/search_index.js +2 -2
- package/docs/documentation.json +117 -116
- package/docs/storybook/5868.7630f57b.iframe.bundle.js +1 -0
- package/docs/storybook/iframe.html +2 -2
- package/docs/storybook/{main.8aa17fcd.iframe.bundle.js → main.5ac6777e.iframe.bundle.js} +1 -1
- package/docs/storybook/project.json +1 -1
- package/docs/storybook/{runtime~main.f8a93a5f.iframe.bundle.js → runtime~main.9b32d4ad.iframe.bundle.js} +1 -1
- package/esm2020/table/table.component.mjs +6 -1
- package/fesm2015/carbon-components-angular-table.mjs +5 -0
- package/fesm2015/carbon-components-angular-table.mjs.map +1 -1
- package/fesm2020/carbon-components-angular-table.mjs +5 -0
- package/fesm2020/carbon-components-angular-table.mjs.map +1 -1
- package/package.json +1 -1
- package/table/table.component.d.ts +3 -2
- package/docs/storybook/5868.4bc19136.iframe.bundle.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"generatedAt":
|
|
1
|
+
{"generatedAt":1720107537903,"hasCustomBabel":false,"hasCustomWebpack":false,"hasStaticDirs":true,"hasStorybookEslint":false,"refCount":0,"packageManager":{"type":"npm","version":"8.19.4"},"preview":{"usesGlobals":false},"framework":{"name":"@storybook/angular","options":{}},"builder":"@storybook/builder-webpack5","renderer":"@storybook/angular","storybookVersion":"7.6.7","storybookVersionSpecifier":"7.6.7","language":"typescript","storybookPackages":{"@storybook/addon-actions":{"version":"7.6.7"},"@storybook/angular":{"version":"7.6.7"},"@storybook/theming":{"version":"7.6.7"},"storybook":{"version":"7.6.7"}},"addons":{"@storybook/addon-links":{"version":"7.6.7"},"@storybook/addon-essentials":{"options":{"backgrounds":false},"version":"7.6.7"},"@storybook/addon-a11y":{"version":"7.6.7"},"@storybook/addon-storysource":{"version":"7.6.7"}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({140:"dialog-overflow-menu-overflow-menu-stories",210:"list-list-stories",384:"grid-css-grid-stories",459:"tabs-tabs-stories",703:"toggletip-toggletip-stories",799:"pagination-pagination-stories",911:"button-button-stories",933:"table-table-stories",972:"patterns-loading-large-loading-stories",1127:"search-search-stories",1928:"accordion-accordion-stories",2218:"inline-loading-inline-loading-stories",2342:"radio-radio-stories",2371:"timepicker-timepicker-stories",2388:"modal-modal-stories",2399:"input-textarea-stories",2489:"toggle-toggle-stories",2494:"loading-loading-stories",2573:"grid-grid-stories",2722:"context-menu-context-menu-stories",2969:"pagination-pagination-nav-stories",3046:"input-password-stories",3280:"tiles-tiles-stories",3314:"patterns-filtering-multiple-categories-stories",3329:"checkbox-checkbox-stories",3402:"tiles-expandable-tile-stories",3523:"contained-list-contained-list-stories",3610:"patterns-filtering-single-selection-stories",3719:"tiles-clickable-tile-stories",3858:"code-snippet-code-snippet-stories",3867:"tag-tag-stories",4232:"patterns-forms-multi-step-form-stories",4253:"tooltip-tooltip-stories",4277:"patterns-dialogs-modal-with-table-stories",4391:"content-switcher-content-switcher-stories",4731:"icon-icon-stories",4762:"patterns-filtering-multi-selection-stories",5167:"button-icon-button-stories",5368:"number-input-number-stories",5455:"layer-layer-stories",5808:"progress-bar-progress-bar-stories",5980:"select-select-stories",6026:"slider-slider-stories",6115:"theme-theme-stories",6274:"tooltip-definition-tooptip-stories",6310:"file-uploader-file-uploader-stories",6322:"popover-popover-stories",6456:"treeview-treeview-stories",6634:"link-link-stories",6663:"datepicker-datepicker-stories",6842:"breadcrumb-breadcrumb-stories",6943:"input-input-stories",7081:"layout-stack-stories",7235:"index-stories",7291:"structured-list-structured-list-stories",7840:"patterns-loading-progressive-loading-stories",7869:"skeleton-skeleton-stories",7931:"notification-notification-stories",8552:"button-button-set-stories",9211:"dropdown-dropdown-stories",9325:"tiles-tile-group-stories",9552:"timepicker-select-timepicker-select-stories",9619:"progress-indicator-progress-indicator-stories",9660:"ui-shell-ui-shell-stories",9736:"combobox-combobox-stories"}[chunkId]||chunkId)+"."+{140:"e0a259e0",210:"e906cf67",384:"c703f9de",459:"066fa432",503:"7113f5a6",703:"93f48d46",760:"c83c0660",799:"05ab4dd7",901:"eac9ade7",911:"a12bca49",933:"c19aca64",972:"699b1e1b",1119:"f42b55a6",1127:"2dfd7cce",1345:"44d90796",1470:"39923f01",1562:"1e6a79b6",1895:"0331c090",1928:"e04e2378",2218:"5226939d",2342:"b6c3c440",2371:"7bbf1029",2388:"66aa5c7c",2399:"51dab44c",2489:"def6c644",2494:"261bc118",2573:"f7a88c02",2722:"64411dcb",2969:"ad4e83e9",3046:"82ec8b0f",3080:"d3996d61",3224:"a6cd0578",3280:"841048dc",3314:"487f9487",3329:"3aeae19d",3348:"542f8c47",3360:"e0c015fc",3402:"97c48cb1",3415:"bd5d140d",3446:"67748550",3523:"b0377336",3610:"e4243e65",3719:"09f1a279",3774:"c37f3d92",3858:"0b374806",3867:"dffa6874",3931:"0e7c514c",4232:"89086fc2",4253:"eb2e347f",4277:"a011175b",4391:"8f3aa078",4731:"fb7a98ad",4762:"cae9c326",5069:"eabf32ea",5103:"20115e64",5167:"d6e7f30d",5368:"9417488b",5455:"9fc41371",5808:"36bb008f",5868:"4bc19136",5980:"f28348e5",6026:"0a70e102",6115:"66e1727e",6274:"60d42e1c",6310:"7cbeda49",6322:"a91784a3",6456:"0b6b2e75",6634:"9e3dd976",6663:"71bd2ec7",6702:"8b6fb391",6842:"8a783f18",6943:"eeb079d9",7019:"b8944046",7081:"799a681c",7235:"613320d5",7291:"c86ef32b",7399:"f37bb110",7529:"5272f30b",7773:"6c3cf943",7840:"717ad729",7869:"77f9485f",7931:"624c3d04",8341:"a544f9e9",8552:"1417284a",9115:"b37cce0a",9211:"eb5b6694",9325:"c925923c",9552:"5b57af49",9558:"5e0c598c",9619:"b7f8dfd4",9660:"02c92fb0",9672:"c7063b22",9736:"92875119"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="carbon-components-angular:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","carbon-components-angular:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={1303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(1303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
|
|
1
|
+
(()=>{"use strict";var deferred,leafPrototypes,getProto,inProgress,__webpack_modules__={},__webpack_module_cache__={};function __webpack_require__(moduleId){var cachedModule=__webpack_module_cache__[moduleId];if(void 0!==cachedModule)return cachedModule.exports;var module=__webpack_module_cache__[moduleId]={id:moduleId,loaded:!1,exports:{}};return __webpack_modules__[moduleId].call(module.exports,module,module.exports,__webpack_require__),module.loaded=!0,module.exports}__webpack_require__.m=__webpack_modules__,__webpack_require__.amdO={},deferred=[],__webpack_require__.O=(result,chunkIds,fn,priority)=>{if(!chunkIds){var notFulfilled=1/0;for(i=0;i<deferred.length;i++){for(var[chunkIds,fn,priority]=deferred[i],fulfilled=!0,j=0;j<chunkIds.length;j++)(!1&priority||notFulfilled>=priority)&&Object.keys(__webpack_require__.O).every((key=>__webpack_require__.O[key](chunkIds[j])))?chunkIds.splice(j--,1):(fulfilled=!1,priority<notFulfilled&&(notFulfilled=priority));if(fulfilled){deferred.splice(i--,1);var r=fn();void 0!==r&&(result=r)}}return result}priority=priority||0;for(var i=deferred.length;i>0&&deferred[i-1][2]>priority;i--)deferred[i]=deferred[i-1];deferred[i]=[chunkIds,fn,priority]},__webpack_require__.n=module=>{var getter=module&&module.__esModule?()=>module.default:()=>module;return __webpack_require__.d(getter,{a:getter}),getter},getProto=Object.getPrototypeOf?obj=>Object.getPrototypeOf(obj):obj=>obj.__proto__,__webpack_require__.t=function(value,mode){if(1&mode&&(value=this(value)),8&mode)return value;if("object"==typeof value&&value){if(4&mode&&value.__esModule)return value;if(16&mode&&"function"==typeof value.then)return value}var ns=Object.create(null);__webpack_require__.r(ns);var def={};leafPrototypes=leafPrototypes||[null,getProto({}),getProto([]),getProto(getProto)];for(var current=2&mode&&value;"object"==typeof current&&!~leafPrototypes.indexOf(current);current=getProto(current))Object.getOwnPropertyNames(current).forEach((key=>def[key]=()=>value[key]));return def.default=()=>value,__webpack_require__.d(ns,def),ns},__webpack_require__.d=(exports,definition)=>{for(var key in definition)__webpack_require__.o(definition,key)&&!__webpack_require__.o(exports,key)&&Object.defineProperty(exports,key,{enumerable:!0,get:definition[key]})},__webpack_require__.f={},__webpack_require__.e=chunkId=>Promise.all(Object.keys(__webpack_require__.f).reduce(((promises,key)=>(__webpack_require__.f[key](chunkId,promises),promises)),[])),__webpack_require__.u=chunkId=>(({140:"dialog-overflow-menu-overflow-menu-stories",210:"list-list-stories",384:"grid-css-grid-stories",459:"tabs-tabs-stories",703:"toggletip-toggletip-stories",799:"pagination-pagination-stories",911:"button-button-stories",933:"table-table-stories",972:"patterns-loading-large-loading-stories",1127:"search-search-stories",1928:"accordion-accordion-stories",2218:"inline-loading-inline-loading-stories",2342:"radio-radio-stories",2371:"timepicker-timepicker-stories",2388:"modal-modal-stories",2399:"input-textarea-stories",2489:"toggle-toggle-stories",2494:"loading-loading-stories",2573:"grid-grid-stories",2722:"context-menu-context-menu-stories",2969:"pagination-pagination-nav-stories",3046:"input-password-stories",3280:"tiles-tiles-stories",3314:"patterns-filtering-multiple-categories-stories",3329:"checkbox-checkbox-stories",3402:"tiles-expandable-tile-stories",3523:"contained-list-contained-list-stories",3610:"patterns-filtering-single-selection-stories",3719:"tiles-clickable-tile-stories",3858:"code-snippet-code-snippet-stories",3867:"tag-tag-stories",4232:"patterns-forms-multi-step-form-stories",4253:"tooltip-tooltip-stories",4277:"patterns-dialogs-modal-with-table-stories",4391:"content-switcher-content-switcher-stories",4731:"icon-icon-stories",4762:"patterns-filtering-multi-selection-stories",5167:"button-icon-button-stories",5368:"number-input-number-stories",5455:"layer-layer-stories",5808:"progress-bar-progress-bar-stories",5980:"select-select-stories",6026:"slider-slider-stories",6115:"theme-theme-stories",6274:"tooltip-definition-tooptip-stories",6310:"file-uploader-file-uploader-stories",6322:"popover-popover-stories",6456:"treeview-treeview-stories",6634:"link-link-stories",6663:"datepicker-datepicker-stories",6842:"breadcrumb-breadcrumb-stories",6943:"input-input-stories",7081:"layout-stack-stories",7235:"index-stories",7291:"structured-list-structured-list-stories",7840:"patterns-loading-progressive-loading-stories",7869:"skeleton-skeleton-stories",7931:"notification-notification-stories",8552:"button-button-set-stories",9211:"dropdown-dropdown-stories",9325:"tiles-tile-group-stories",9552:"timepicker-select-timepicker-select-stories",9619:"progress-indicator-progress-indicator-stories",9660:"ui-shell-ui-shell-stories",9736:"combobox-combobox-stories"}[chunkId]||chunkId)+"."+{140:"e0a259e0",210:"e906cf67",384:"c703f9de",459:"066fa432",503:"7113f5a6",703:"93f48d46",760:"c83c0660",799:"05ab4dd7",901:"eac9ade7",911:"a12bca49",933:"c19aca64",972:"699b1e1b",1119:"f42b55a6",1127:"2dfd7cce",1345:"44d90796",1470:"39923f01",1562:"1e6a79b6",1895:"0331c090",1928:"e04e2378",2218:"5226939d",2342:"b6c3c440",2371:"7bbf1029",2388:"66aa5c7c",2399:"51dab44c",2489:"def6c644",2494:"261bc118",2573:"f7a88c02",2722:"64411dcb",2969:"ad4e83e9",3046:"82ec8b0f",3080:"d3996d61",3224:"a6cd0578",3280:"841048dc",3314:"487f9487",3329:"3aeae19d",3348:"542f8c47",3360:"e0c015fc",3402:"97c48cb1",3415:"bd5d140d",3446:"67748550",3523:"b0377336",3610:"e4243e65",3719:"09f1a279",3774:"c37f3d92",3858:"0b374806",3867:"dffa6874",3931:"0e7c514c",4232:"89086fc2",4253:"eb2e347f",4277:"a011175b",4391:"8f3aa078",4731:"fb7a98ad",4762:"cae9c326",5069:"eabf32ea",5103:"20115e64",5167:"d6e7f30d",5368:"9417488b",5455:"9fc41371",5808:"36bb008f",5868:"7630f57b",5980:"f28348e5",6026:"0a70e102",6115:"66e1727e",6274:"60d42e1c",6310:"7cbeda49",6322:"a91784a3",6456:"0b6b2e75",6634:"9e3dd976",6663:"71bd2ec7",6702:"8b6fb391",6842:"8a783f18",6943:"eeb079d9",7019:"b8944046",7081:"799a681c",7235:"613320d5",7291:"c86ef32b",7399:"f37bb110",7529:"5272f30b",7773:"6c3cf943",7840:"717ad729",7869:"77f9485f",7931:"624c3d04",8341:"a544f9e9",8552:"1417284a",9115:"b37cce0a",9211:"eb5b6694",9325:"c925923c",9552:"5b57af49",9558:"5e0c598c",9619:"b7f8dfd4",9660:"02c92fb0",9672:"c7063b22",9736:"92875119"}[chunkId]+".iframe.bundle.js"),__webpack_require__.miniCssF=chunkId=>{},__webpack_require__.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),__webpack_require__.hmd=module=>((module=Object.create(module)).children||(module.children=[]),Object.defineProperty(module,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+module.id)}}),module),__webpack_require__.o=(obj,prop)=>Object.prototype.hasOwnProperty.call(obj,prop),inProgress={},__webpack_require__.l=(url,done,key,chunkId)=>{if(inProgress[url])inProgress[url].push(done);else{var script,needAttach;if(void 0!==key)for(var scripts=document.getElementsByTagName("script"),i=0;i<scripts.length;i++){var s=scripts[i];if(s.getAttribute("src")==url||s.getAttribute("data-webpack")=="carbon-components-angular:"+key){script=s;break}}script||(needAttach=!0,(script=document.createElement("script")).charset="utf-8",script.timeout=120,__webpack_require__.nc&&script.setAttribute("nonce",__webpack_require__.nc),script.setAttribute("data-webpack","carbon-components-angular:"+key),script.src=url),inProgress[url]=[done];var onScriptComplete=(prev,event)=>{script.onerror=script.onload=null,clearTimeout(timeout);var doneFns=inProgress[url];if(delete inProgress[url],script.parentNode&&script.parentNode.removeChild(script),doneFns&&doneFns.forEach((fn=>fn(event))),prev)return prev(event)},timeout=setTimeout(onScriptComplete.bind(null,void 0,{type:"timeout",target:script}),12e4);script.onerror=onScriptComplete.bind(null,script.onerror),script.onload=onScriptComplete.bind(null,script.onload),needAttach&&document.head.appendChild(script)}},__webpack_require__.r=exports=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(exports,"__esModule",{value:!0})},__webpack_require__.nmd=module=>(module.paths=[],module.children||(module.children=[]),module),__webpack_require__.p="",(()=>{var installedChunks={1303:0};__webpack_require__.f.j=(chunkId,promises)=>{var installedChunkData=__webpack_require__.o(installedChunks,chunkId)?installedChunks[chunkId]:void 0;if(0!==installedChunkData)if(installedChunkData)promises.push(installedChunkData[2]);else if(1303!=chunkId){var promise=new Promise(((resolve,reject)=>installedChunkData=installedChunks[chunkId]=[resolve,reject]));promises.push(installedChunkData[2]=promise);var url=__webpack_require__.p+__webpack_require__.u(chunkId),error=new Error;__webpack_require__.l(url,(event=>{if(__webpack_require__.o(installedChunks,chunkId)&&(0!==(installedChunkData=installedChunks[chunkId])&&(installedChunks[chunkId]=void 0),installedChunkData)){var errorType=event&&("load"===event.type?"missing":event.type),realSrc=event&&event.target&&event.target.src;error.message="Loading chunk "+chunkId+" failed.\n("+errorType+": "+realSrc+")",error.name="ChunkLoadError",error.type=errorType,error.request=realSrc,installedChunkData[1](error)}}),"chunk-"+chunkId,chunkId)}else installedChunks[chunkId]=0},__webpack_require__.O.j=chunkId=>0===installedChunks[chunkId];var webpackJsonpCallback=(parentChunkLoadingFunction,data)=>{var moduleId,chunkId,[chunkIds,moreModules,runtime]=data,i=0;if(chunkIds.some((id=>0!==installedChunks[id]))){for(moduleId in moreModules)__webpack_require__.o(moreModules,moduleId)&&(__webpack_require__.m[moduleId]=moreModules[moduleId]);if(runtime)var result=runtime(__webpack_require__)}for(parentChunkLoadingFunction&&parentChunkLoadingFunction(data);i<chunkIds.length;i++)chunkId=chunkIds[i],__webpack_require__.o(installedChunks,chunkId)&&installedChunks[chunkId]&&installedChunks[chunkId][0](),installedChunks[chunkId]=0;return __webpack_require__.O(result)},chunkLoadingGlobal=self.webpackChunkcarbon_components_angular=self.webpackChunkcarbon_components_angular||[];chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null,0)),chunkLoadingGlobal.push=webpackJsonpCallback.bind(null,chunkLoadingGlobal.push.bind(chunkLoadingGlobal))})(),__webpack_require__.nc=void 0})();
|
|
@@ -480,6 +480,11 @@ export class Table {
|
|
|
480
480
|
this.model.data.length === 0 ||
|
|
481
481
|
this.model.data.length === 1 && this.model.data[0].length === 0;
|
|
482
482
|
}
|
|
483
|
+
ngOnInit() {
|
|
484
|
+
// Manually trigger check to see if all checkboxes are selected
|
|
485
|
+
// This is since subscription is made AFTER checkboxes are selected
|
|
486
|
+
this.updateSelectAllCheckbox();
|
|
487
|
+
}
|
|
483
488
|
ngAfterViewInit() {
|
|
484
489
|
this.isViewReady = true;
|
|
485
490
|
if (this.isDataGrid) {
|
|
@@ -899,4 +904,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
899
904
|
}], scrollLoad: [{
|
|
900
905
|
type: Output
|
|
901
906
|
}] } });
|
|
902
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUtaLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBR3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSkc7QUFnRkgsTUFBTSxPQUFPLEtBQUs7SUF3WWpCOztPQUVHO0lBQ0gsWUFDVyxVQUFzQixFQUN0QixjQUE4QixFQUM5QixJQUFVO1FBRlYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXBTckI7O1dBRUc7UUFDTSxTQUFJLEdBQWlCLElBQUksQ0FBQztRQUNuQzs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFlMUI7OztXQUdHO1FBQ00sYUFBUSxHQUFHLElBQUksQ0FBQztRQUVoQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBTXpCOztXQUVHO1FBQ00sd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBRXBDOztXQUVHO1FBQ00sdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRXBDOzs7V0FHRztRQUNNLHVCQUFrQixHQUFHLENBQUMsQ0FBQztRQWlFaEM7O1dBRUc7UUFDTSxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBRXhCOztXQUVHO1FBQzJDLGlCQUFZLEdBQUcsSUFBSSxDQUFDO1FBRWxFOztXQUVHO1FBQzRELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBbUJwRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQXVERztRQUNPLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTVDOzs7O1dBSUc7UUFDTyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRDs7OztXQUlHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5EOzs7O1dBSUc7UUFDTyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVqRDs7OztXQUlHO1FBQ08sZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRW5EOztXQUVHO1FBQ08sYUFBUSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFaEQ7O1dBRUc7UUFDTyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUV0RDs7V0FFRztRQUNILHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUUxQjs7V0FFRztRQUNILGtDQUE2QixHQUFHLEtBQUssQ0FBQztRQVEvQixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsNEJBQXVCLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0IsMEJBQXFCLEdBQUcsRUFBRSxDQUFDO1FBR3hCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzlCLHdGQUF3RjtRQUM5RSxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFNbkMsMkJBQXNCLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUN6RSx5QkFBb0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQ3pFLHdCQUFtQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdkUseUJBQW9CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUN6RSxzQkFBaUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ25FLG1CQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUMvRCxtQkFBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDOUQsaUJBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQWM5RCxDQUFDO0lBOVlMOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLGFBQWEsQ0FBQyxRQUFnQixFQUFFLFdBQW1CO1FBQ3pELE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDL0IsSUFBSSxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQW1CLENBQUM7UUFDMUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7UUFDekMsSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQWEsQ0FBQztRQUVqQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNmO1FBRUQsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdEIsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsT0FBTyxLQUFLLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFvQixFQUFFLEtBQWE7UUFDckQsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsOEJBQThCLENBQUMsQ0FBQztRQUN0RixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDaEksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUNyQzthQUFNLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1NBQ3JDO2FBQU07WUFDTixPQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztTQUN6QjtJQUNGLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQW9CO1FBQ2hDLE1BQU0sZ0JBQWdCLEdBQUcsbUJBQW1CLENBQUMsT0FBTyxFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDdEYsSUFDQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNqRyxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUMxQjtZQUNELGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQzVCO2FBQU07WUFDTixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7SUFDRixDQUFDO0lBV0Q7O09BRUc7SUFDSCxJQUNJLEtBQUssQ0FBQyxDQUFhO1FBQ3RCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLHVHQUF1RztZQUN2RyxvR0FBb0c7WUFDcEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1NBQ3hDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFFaEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztRQUNsRyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3hELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2FBQ3JCO1lBQ0QsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVuQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNwRSwwRUFBMEU7Z0JBQzFFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7b0JBQ2YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsNENBQTRDLENBQUMsQ0FBQztvQkFDbEgsS0FBSyxDQUFDLElBQUksQ0FBTSxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQzNDLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsS0FBSyxTQUFTLElBQUksR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTs0QkFDMUYsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQzt5QkFDcEM7b0JBQ0YsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0YsQ0FBQztJQUVELElBQUksS0FBSztRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNwQixDQUFDO0lBVUQ7O09BRUc7SUFDSCxJQUFhLFVBQVUsQ0FBQyxLQUFjO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNyQixJQUFJLEtBQUssRUFBRTtnQkFDVixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQzthQUNsQztpQkFBTTtnQkFDTixJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQzthQUNuQztTQUNEO0lBQ0YsQ0FBQztJQVVELElBQUksVUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUN6QixDQUFDO0lBa0JEOzs7Ozs7T0FNRztJQUNILHFDQUFxQztJQUVyQzs7Ozs7OztPQU9HO0lBQ0gscUNBQXFDO0lBRXJDLElBQ0kscUJBQXFCLENBQUMsS0FBa0M7UUFDM0QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBQ0QsSUFBSSxxQkFBcUI7UUFDeEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUNJLG1CQUFtQixDQUFDLEtBQWtDO1FBQ3pELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksbUJBQW1CO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssQ0FBQztJQUN4QyxDQUFDO0lBQ0QsSUFDSSxrQkFBa0IsQ0FBQyxLQUFrQztRQUN4RCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNyQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUM7SUFDdkMsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsSUFDSSxZQUFZLENBQUMsS0FBSztRQUNyQixNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQTRJRCxJQUFJLE1BQU07UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJO1lBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBd0NELGVBQWU7UUFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDcEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDbEM7SUFDRixDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO0lBQ0YsQ0FBQztJQUVELDBCQUEwQjtRQUN6QixpRUFBaUU7UUFDakUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsT0FBTztTQUNQO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBcUIsQ0FBQztRQUN2RixNQUFNLFlBQVksR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBZ0IsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sZ0JBQWdCLEdBQUcsU0FBUyxDQUFhLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDNUUsTUFBTSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUVyRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsQ0FBQztZQUN2RSxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVyQyxrRUFBa0U7WUFDbEUsSUFBSSxXQUFXLEtBQUssQ0FBQyxDQUFDLElBQUksY0FBYyxLQUFLLENBQUMsQ0FBQyxFQUFFO2dCQUFFLE9BQU87YUFBRTtZQUM1RCwrREFBK0Q7WUFDL0QsSUFBSSxXQUFXLEtBQUssVUFBVSxJQUFJLGNBQWMsS0FBSyxhQUFhLEVBQUU7Z0JBQ25FLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO2dCQUMxRSxLQUFLLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3ZDO1lBQ0QsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUNILDJFQUEyRTtRQUMzRSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELDJCQUEyQjtRQUMxQiw4REFBOEQ7UUFDOUQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDOUIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELGFBQWE7UUFDWixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2hCLDJEQUEyRDtRQUMzRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzNCO2FBQU07WUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDRixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWE7UUFDdkIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELHVCQUF1QjtRQUN0QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUV6RCxJQUFJLGlCQUFpQixJQUFJLENBQUMsRUFBRTtZQUMzQixnREFBZ0Q7WUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztZQUMvQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsS0FBSyxDQUFDO1NBQzNDO2FBQU0sSUFBSSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztZQUM5QixJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDO1NBQzFDO2FBQU07WUFDTixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxLQUFLLENBQUM7U0FDM0M7SUFDRixDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDN0IsNEVBQTRFO1FBQzVFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZix1Q0FBdUM7WUFDdkMsTUFBTSxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSw4QkFBOEIsQ0FBQyxDQUFDO1lBQzVHLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3JCLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDbkMsUUFBUSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO2FBQ0g7WUFDRCxtREFBbUQ7WUFDbkQsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDbkQ7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsTUFBTTtRQUM5QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ3hDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV2QixJQUFJLENBQUMscUJBQXFCLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3BGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2hGLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQUssRUFBRSxNQUFNO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1FBQ3JELE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksSUFBSSxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDNUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLEtBQUs7UUFDYixNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBRTFHLElBQUksa0JBQWtCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ2xELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNqQzthQUFNO1lBQ04sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3pCO0lBQ0YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUM7UUFDM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXO1FBQzNDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxRQUFRLENBQUM7UUFDdEMsSUFBSSxDQUFDLHVCQUF1QixHQUFHLFdBQVcsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVztRQUMzQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxjQUFjLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXO1FBQzFDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxXQUFXLENBQUM7UUFDM0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztRQUV0QywyQ0FBMkM7UUFDM0MsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxXQUFXO1FBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUM7UUFFaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQ3BCLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsRUFDdkQsV0FBVyxHQUFHLENBQUMsUUFBUSxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUMsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLENBQUMsS0FBYTtRQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckMseUNBQXlDO1lBQ3pDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxLQUFLO1FBQ2hCLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsR0FBZ0I7UUFDdEMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUMvQixPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQzVDO1FBQ0QsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVELHdCQUF3QjtRQUN2QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUM7SUFDNUMsQ0FBQztJQUNELHNCQUFzQjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQztJQUNELHFCQUFxQjtRQUNwQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7SUFDekMsQ0FBQztJQUVELHNCQUFzQjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUM7SUFDMUMsQ0FBQztJQUVELG1CQUFtQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUM7SUFDdkMsQ0FBQztJQUVELGdCQUFnQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUVELGdCQUFnQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDcEMsQ0FBQztJQUVELGNBQWM7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7O2tHQXZvQlcsS0FBSztzRkFBTCxLQUFLLCsrQkE3RVA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzRVQ7MkZBT1csS0FBSztrQkEvRWpCLFNBQVM7K0JBQ0Msc0JBQXNCLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBc0VUO2lKQThEUSxjQUFjO3NCQUF0QixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBTUYsS0FBSztzQkFEUixLQUFLO2dCQTZDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJTyxVQUFVO3NCQUF0QixLQUFLO2dCQWVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSztnQkFTRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBS0csa0JBQWtCO3NCQUExQixLQUFLO2dCQU1HLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFzQkYscUJBQXFCO3NCQUR4QixLQUFLO2dCQVFGLG1CQUFtQjtzQkFEdEIsS0FBSztnQkFRRixrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBcUJGLFlBQVk7c0JBRGYsS0FBSztnQkFhRyxPQUFPO3NCQUFmLEtBQUs7Z0JBS3dDLFlBQVk7c0JBQXpELFdBQVc7dUJBQUMsK0JBQStCO2dCQUttQixZQUFZO3NCQUExRSxXQUFXO3VCQUFDLHVDQUF1Qzs7c0JBQUcsS0FBSztnQkFLbkQsY0FBYztzQkFBdEIsS0FBSztnQkFZRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBMERJLElBQUk7c0JBQWIsTUFBTTtnQkFPRyxTQUFTO3NCQUFsQixNQUFNO2dCQU9HLFdBQVc7c0JBQXBCLE1BQU07Z0JBT0csU0FBUztzQkFBbEIsTUFBTTtnQkFPRyxXQUFXO3NCQUFwQixNQUFNO2dCQUtHLFFBQVE7c0JBQWpCLE1BQU07Z0JBS0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG5cdENvbXBvbmVudCxcblx0QXBwbGljYXRpb25SZWYsXG5cdElucHV0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0RWxlbWVudFJlZixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0VGVtcGxhdGVSZWYsXG5cdE9uRGVzdHJveSxcblx0SG9zdEJpbmRpbmdcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gXCIuL3RhYmxlLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckl0ZW0gfSBmcm9tIFwiLi90YWJsZS1oZWFkZXItaXRlbS5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVJdGVtIH0gZnJvbSBcIi4vdGFibGUtaXRlbS5jbGFzc1wiO1xuXG5pbXBvcnQgeyBnZXRGb2N1c0VsZW1lbnRMaXN0LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXggfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRJbnRlcmFjdGlvbk1vZGVsIH0gZnJvbSBcIi4vZGF0YS1ncmlkLWludGVyYWN0aW9uLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZURvbUFkYXB0ZXIgfSBmcm9tIFwiLi90YWJsZS1hZGFwdGVyLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZVJvd1NpemUgfSBmcm9tIFwiLi90YWJsZS50eXBlc1wiO1xuXG4vKipcbiAqIEJ1aWxkIHlvdXIgdGFibGUgd2l0aCB0aGlzIGNvbXBvbmVudCBieSBleHRlbmRpbmcgdGhpbmdzIHRoYXQgZGlmZmVyIGZyb20gZGVmYXVsdC5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLXRhYmxlLS1iYXNpYylcbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSB1c3VhbCB3cml0ZS15b3VyLW93bi1odG1sIGFwcHJvYWNoIHlvdSBoYWQgd2l0aCBgPHRhYmxlPmAsXG4gKiBjYXJib24gdGFibGUgdXNlcyBtb2RlbC12aWV3LWNvbnRyb2xsZXIgYXBwcm9hY2guXG4gKlxuICogSGVyZSwgeW91IGNyZWF0ZSBhIHZpZXcgKHdpdGggYnVpbHQtaW4gY29udHJvbGxlcikgYW5kIHByb3ZpZGUgaXQgYSBtb2RlbC5cbiAqIENoYW5nZXMgeW91IG1ha2UgdG8gdGhlIG1vZGVsIGFyZSByZWZsZWN0ZWQgaW4gdGhlIHZpZXcuIFByb3ZpZGUgc2FtZSBtb2RlbCB5b3UgdXNlXG4gKiBpbiB0aGUgdGFibGUgdG8gdGhlIGA8Y2RzLXBhZ2luYXRpb24+YCBjb21wb25lbnRzLlxuICogVGhleSBwcm92aWRlIGEgZGlmZmVyZW50IHZpZXcgb3ZlciB0aGUgc2FtZSBkYXRhLlxuICpcbiAqICMjIEJhc2ljIHVzYWdlXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy10YWJsZSBbbW9kZWxdPVwibW9kZWxcIj48L2Nkcy10YWJsZT5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG4gKlxuICogdGhpcy5tb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJxd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInp3ZXJcIn0pXSxcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiYnNkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwic3dlclwifSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV1cbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyBDdXN0b21pemF0aW9uXG4gKlxuICogSWYgeW91IGhhdmUgY3VzdG9tIGRhdGEgaW4geW91ciB0YWJsZSwgeW91IG5lZWQgYSB3YXkgdG8gZGlzcGxheSBpdC4gWW91IGNhbiBkbyB0aGF0XG4gKiBieSBwcm92aWRpbmcgYSB0ZW1wbGF0ZSB0byBgVGFibGVJdGVtYC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8bmctdGVtcGxhdGUgI2N1c3RvbVRhYmxlSXRlbVRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICogXHQ8YSBbcm91dGVyTGlua109XCJkYXRhLmxpbmtcIj57e2RhdGEubmFtZX19IHt7ZGF0YS5zdXJuYW1lfX08L2E+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY3VzdG9tVGFibGVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gKlxuICogdGhpcy5jdXN0b21Nb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YToge25hbWU6IFwiTGVzc3lcIiwgbGluazogXCIvdGFibGVcIn0sIHRlbXBsYXRlOiB0aGlzLmN1c3RvbVRhYmxlSXRlbVRlbXBsYXRlfSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJzd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImJzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiB7bmFtZTogXCJBbGljZVwiLCBzdXJuYW1lOiBcIkJvYlwifSwgdGVtcGxhdGU6IHRoaXMuY3VzdG9tVGFibGVJdGVtVGVtcGxhdGV9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyMgU29ydGluZyBhbmQgZmlsdGVyaW5nXG4gKlxuICogSW4gY2FzZSB5b3UgbmVlZCBjdXN0b20gc29ydGluZyBhbmQvb3IgZmlsdGVyaW5nIHlvdSBzaG91bGQgc3ViY2xhc3MgYFRhYmxlSGVhZGVySXRlbWBcbiAqIGFuZCBvdmVycmlkZSBuZWVkZWQgZnVuY3Rpb25zLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEZpbHRlcmFibGVIZWFkZXJJdGVtIGV4dGVuZHMgVGFibGVIZWFkZXJJdGVtIHtcbiAqIFx0Ly8gY3VzdG9tIGZpbHRlciBmdW5jdGlvblxuICogXHRmaWx0ZXIoaXRlbTogVGFibGVJdGVtKTogYm9vbGVhbiB7XG4gKiBcdFx0aWYgKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwic3RyaW5nXCIgJiYgaXRlbS5kYXRhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlckRhdGEuZGF0YS50b0xvd2VyQ2FzZSgpKSA+PSAwIHx8XG4gKiBcdFx0aXRlbS5kYXRhLm5hbWUgJiYgaXRlbS5kYXRhLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyRGF0YS5kYXRhLnRvTG93ZXJDYXNlKCkpID49IDAgfHxcbiAqIFx0XHRpdGVtLmRhdGEuc3VybmFtZSAmJiBpdGVtLmRhdGEuc3VybmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJEYXRhLmRhdGEudG9Mb3dlckNhc2UoKSkgPj0gMCkge1xuICogXHRcdFx0cmV0dXJuIGZhbHNlO1xuICogXHRcdH1cbiAqIFx0XHRyZXR1cm4gdHJ1ZTtcbiAqIFx0fVxuICpcbiAqIFx0c2V0IGZpbHRlckNvdW50KG4pIHt9XG4gKiBcdGdldCBmaWx0ZXJDb3VudCgpIHtcbiAqIFx0XHRyZXR1cm4gKHRoaXMuZmlsdGVyRGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICogXHR9XG4gKlxuICogXHQvLyB1c2VkIGZvciBjdXN0b20gc29ydGluZ1xuICogXHRjb21wYXJlKG9uZTogVGFibGVJdGVtLCB0d286IFRhYmxlSXRlbSkge1xuICogXHRcdGNvbnN0IHN0cmluZ09uZSA9IChvbmUuZGF0YS5uYW1lIHx8IG9uZS5kYXRhLnN1cm5hbWUgfHwgb25lLmRhdGEpLnRvTG93ZXJDYXNlKCk7XG4gKiBcdFx0Y29uc3Qgc3RyaW5nVHdvID0gKHR3by5kYXRhLm5hbWUgfHwgdHdvLmRhdGEuc3VybmFtZSB8fCB0d28uZGF0YSkudG9Mb3dlckNhc2UoKTtcbiAqXG4gKiBcdFx0aWYgKHN0cmluZ09uZSA+IHN0cmluZ1R3bykge1xuICogXHRcdFx0cmV0dXJuIDE7XG4gKiBcdFx0fSBlbHNlIGlmIChzdHJpbmdPbmUgPCBzdHJpbmdUd28pIHtcbiAqIFx0XHRcdHJldHVybiAtMTtcbiAqIFx0XHR9IGVsc2Uge1xuICogXHRcdFx0cmV0dXJuIDA7XG4gKiBcdFx0fVxuICogXHR9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBkbyB5b3VyIHNvcnRpbmcgb24gdGhlIGJhY2tlbmQgb3IgcXVlcnkgZm9yIHNvcnRlZCBkYXRhIGFzIGEgcmVzdWx0IG9mIHVzZXJcbiAqIGNsaWNraW5nIHRoZSB0YWJsZSBoZWFkZXIsIGNoZWNrIHRhYmxlIFtgc29ydGBdKCNzb3J0KSBvdXRwdXQgZG9jdW1lbnRhdGlvblxuICpcbiAqIFNlZSBgVGFibGVIZWFkZXJJdGVtYCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyBObyBkYXRhIHRlbXBsYXRlXG4gKlxuICogV2hlbiB0YWJsZSBoYXMgbm8gZGF0YSB0byBzaG93LCBpdCBjYW4gc2hvdyBhIG1lc3NhZ2UgeW91IHByb3ZpZGUgaXQgaW5zdGVhZC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXRhYmxlIFttb2RlbF09XCJtb2RlbFwiPk5vIGRhdGEuPC9jZHMtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiAuLi4gd2lsbCBzaG93IGBObyBkYXRhLmAgbWVzc2FnZSwgYnV0IHlvdSBjYW4gZ2V0IGNyZWF0aXZlIGFuZCBwcm92aWRlIGFueSB0ZW1wbGF0ZSB5b3Ugd2FudFxuICogdG8gcmVwbGFjZSB0YWJsZSdzIGRlZmF1bHQgYHRib2R5YC5cbiAqXG4gKiAjIyBVc2UgcGFnaW5hdGlvbiBhcyB0YWJsZSBmb290ZXJcbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXBhZ2luYXRpb24gW21vZGVsXT1cIm1vZGVsXCIgKHNlbGVjdFBhZ2UpPVwic2VsZWN0UGFnZSgkZXZlbnQpXCI+PC9jZHMtcGFnaW5hdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBzZWxlY3RQYWdlKClgIGZ1bmN0aW9uIHNob3VsZCBmZXRjaCB0aGUgZGF0YSBmcm9tIGJhY2tlbmQsIGNyZWF0ZSBuZXcgYGRhdGFgLCBhcHBseSBpdCB0byBgbW9kZWwuZGF0YWAsXG4gKiBhbmQgdXBkYXRlIGBtb2RlbC5jdXJyZW50UGFnZWAuXG4gKlxuICogSWYgdGhlIGRhdGEgeW91ciBzZXJ2ZXIgcmV0dXJucyBpcyBhIHR3byBkaW1lbnNpb25hbCBhcnJheSBvZiBvYmplY3RzLCBpdCB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogc2VsZWN0UGFnZShwYWdlKSB7XG4gKiBcdHRoaXMuZ2V0UGFnZShwYWdlKS50aGVuKChkYXRhOiBBcnJheTxBcnJheTxhbnk+PikgPT4ge1xuICogXHRcdC8vIHNldCB0aGUgZGF0YSBhbmQgdXBkYXRlIHBhZ2VcbiAqIFx0XHR0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLnByZXBhcmVEYXRhKGRhdGEpO1xuICogXHRcdHRoaXMubW9kZWwuY3VycmVudFBhZ2UgPSBwYWdlO1xuICogXHR9KTtcbiAqIH1cbiAqXG4gKiBwcm90ZWN0ZWQgcHJlcGFyZURhdGEoZGF0YTogQXJyYXk8QXJyYXk8YW55Pj4pIHtcbiAqIFx0Ly8gY3JlYXRlIG5ldyBkYXRhIGZyb20gdGhlIHNlcnZpY2UgZGF0YVxuICogXHRsZXQgbmV3RGF0YSA9IFtdO1xuICogXHRkYXRhLmZvckVhY2goZGF0YVJvdyA9PiB7XG4gKiBcdFx0bGV0IHJvdyA9IFtdO1xuICogXHRcdGRhdGFSb3cuZm9yRWFjaChkYXRhRWxlbWVudCA9PiB7XG4gKiBcdFx0XHRyb3cucHVzaChuZXcgVGFibGVJdGVtKHtcbiAqIFx0XHRcdFx0ZGF0YTogZGF0YUVsZW1lbnQsXG4gKiBcdFx0XHRcdHRlbXBsYXRlOiB0eXBlb2YgZGF0YUVsZW1lbnQgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiB0aGlzLnBhZ2luYXRpb25UYWJsZUl0ZW1UZW1wbGF0ZVxuICogXHRcdFx0XHQvLyB5b3VyIHRlbXBsYXRlIGNhbiBoYW5kbGUgYWxsIHRoZSBkYXRhIHR5cGVzIHNvIHlvdSBkb24ndCBoYXZlIHRvIGNvbmRpdGlvbmFsbHkgc2V0IGl0XG4gKiBcdFx0XHRcdC8vIHlvdSBjYW4gYWxzbyBzZXQgZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgZGlmZmVyZW50IGNvbHVtbnMgYmFzZWQgb24gaW5kZXhcbiAqIFx0XHRcdH0pKTtcbiAqIFx0XHR9KTtcbiAqIFx0XHRuZXdEYXRhLnB1c2gocm93KTtcbiAqIFx0fSk7XG4gKiBcdHJldHVybiBuZXdEYXRhO1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtdGFibGUsIGlibS10YWJsZVwiLFxuXHR0ZW1wbGF0ZTogYFxuXHQ8dGFibGVcblx0XHRjZHNUYWJsZVxuXHRcdFtzb3J0YWJsZV09XCJzb3J0YWJsZVwiXG5cdFx0W25vQm9yZGVyXT1cIm5vQm9yZGVyXCJcblx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZGF0YS10YWJsZS0tc3RpY2t5LWhlYWRlcic6IHN0aWNreUhlYWRlcn1cIlxuXHRcdFtzaXplXT1cInNpemVcIlxuXHRcdFtzdHJpcGVkXT1cInN0cmlwZWRcIlxuXHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcblx0XHRbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiPlxuXHRcdDx0aGVhZFxuXHRcdFx0Y2RzVGFibGVIZWFkXG5cdFx0XHRbc29ydGFibGVdPVwic29ydGFibGVcIlxuXHRcdFx0KGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG5cdFx0XHQoc2VsZWN0QWxsKT1cIm9uU2VsZWN0QWxsKClcIlxuXHRcdFx0KHNvcnQpPVwiZG9Tb3J0KCRldmVudClcIlxuXHRcdFx0W2NoZWNrYm94SGVhZGVyTGFiZWxdPVwiZ2V0Q2hlY2tib3hIZWFkZXJMYWJlbCgpXCJcblx0XHRcdFtmaWx0ZXJUaXRsZV09XCJnZXRGaWx0ZXJUaXRsZSgpXCJcblx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdFx0XHRbc2VsZWN0QWxsQ2hlY2tib3hdPVwic2VsZWN0QWxsQ2hlY2tib3hcIlxuXHRcdFx0W3NlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkXT1cInNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkXCJcblx0XHRcdFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cInNob3dTZWxlY3Rpb25Db2x1bW5cIlxuXHRcdFx0W2VuYWJsZVNpbmdsZVNlbGVjdF09XCJlbmFibGVTaW5nbGVTZWxlY3RcIlxuXHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFtzb3J0QXNjZW5kaW5nTGFiZWxdPVwic29ydEFzY2VuZGluZ0xhYmVsXCJcblx0XHRcdFtzb3J0RGVzY2VuZGluZ0xhYmVsXT1cInNvcnREZXNjZW5kaW5nTGFiZWxcIlxuXHRcdFx0W3N0aWNreUhlYWRlcl09XCJzdGlja3lIZWFkZXJcIj5cblx0XHQ8L3RoZWFkPlxuXHRcdDx0Ym9keVxuXHRcdFx0Y2RzVGFibGVCb2R5XG5cdFx0XHQoZGVzZWxlY3RSb3cpPVwib25TZWxlY3RSb3coJGV2ZW50KVwiXG5cdFx0XHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudClcIlxuXHRcdFx0KHNlbGVjdFJvdyk9XCJvblNlbGVjdFJvdygkZXZlbnQpXCJcblx0XHRcdFtjaGVja2JveFJvd0xhYmVsXT1cImdldENoZWNrYm94Um93TGFiZWwoKVwiXG5cdFx0XHRbZW5hYmxlU2luZ2xlU2VsZWN0XT1cImVuYWJsZVNpbmdsZVNlbGVjdFwiXG5cdFx0XHQocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcblx0XHRcdFtleHBhbmRCdXR0b25BcmlhTGFiZWxdPVwiZXhwYW5kQnV0dG9uQXJpYUxhYmVsXCJcblx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdFx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRcdFtuZ1N0eWxlXT1cInsnb3ZlcmZsb3cteSc6ICdzY3JvbGwnfVwiXG5cdFx0XHRbc2VsZWN0aW9uTGFiZWxDb2x1bW5dPVwic2VsZWN0aW9uTGFiZWxDb2x1bW5cIlxuXHRcdFx0W3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwic2hvd1NlbGVjdGlvbkNvbHVtblwiXG5cdFx0XHRbc2tlbGV0b25dPVwic2tlbGV0b25cIlxuXHRcdFx0Km5nSWY9XCIhbm9EYXRhOyBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+XG5cdFx0PC90Ym9keT5cblx0XHQ8bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuXHRcdDx0Zm9vdD5cblx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDx0ciAqbmdJZj1cInRoaXMubW9kZWwuaXNMb2FkaW5nXCI+XG5cdFx0XHRcdDx0ZCBjbGFzcz1cInRhYmxlX2xvYWRpbmctaW5kaWNhdG9yXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tbG9hZGluZyBjZHMtLWxvYWRpbmctLXNtYWxsXCI+XG5cdFx0XHRcdFx0XHQ8c3ZnIGNsYXNzPVwiY2RzLS1sb2FkaW5nX19zdmdcIiB2aWV3Qm94PVwiLTc1IC03NSAxNTAgMTUwXCI+XG5cdFx0XHRcdFx0XHRcdDxjaXJjbGUgY2xhc3M9XCJjZHMtLWxvYWRpbmdfX3N0cm9rZVwiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIzNy41XCIgLz5cblx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L3RkPlxuXHRcdFx0PC90cj5cblx0XHRcdDx0ciAqbmdJZj1cInRoaXMubW9kZWwuaXNFbmRcIj5cblx0XHRcdFx0PHRkIGNsYXNzPVwidGFibGVfZW5kLWluZGljYXRvclwiPlxuXHRcdFx0XHRcdDxoNT57e2dldEVuZE9mRGF0YVRleHQoKSB8IGFzeW5jfX08L2g1PlxuXHRcdFx0XHRcdDxidXR0b24gKGNsaWNrKT1cInNjcm9sbFRvVG9wKCRldmVudClcIiBjbGFzcz1cImJ0bi0tc2Vjb25kYXJ5LXNtXCI+XG5cdFx0XHRcdFx0XHR7e2dldFNjcm9sbFRvcFRleHQoKSB8IGFzeW5jfX1cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PC90ZD5cblx0XHRcdDwvdHI+XG5cdFx0PC90Zm9vdD5cblx0PC90YWJsZT5cblx0YCxcblx0c3R5bGVzOiBbYFxuXHRcdDpob3N0IHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0YF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXHQvKipcblx0ICogQ3JlYXRlcyBhIHNrZWxldG9uIG1vZGVsIHdpdGggYSByb3cgYW5kIGNvbHVtbiBjb3VudCBzcGVjaWZpZWQgYnkgdGhlIHVzZXJcblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICpcblx0ICogYGBgdHlwZXNjcmlwdFxuXHQgKiB0aGlzLm1vZGVsID0gVGFibGUuc2tlbGV0b25Nb2RlbCg1LCA1KTtcblx0ICogYGBgXG5cdCAqL1xuXHRzdGF0aWMgc2tlbGV0b25Nb2RlbChyb3dDb3VudDogbnVtYmVyLCBjb2x1bW5Db3VudDogbnVtYmVyKSB7XG5cdFx0Y29uc3QgbW9kZWwgPSBuZXcgVGFibGVNb2RlbCgpO1xuXHRcdGxldCBoZWFkZXIgPSBuZXcgQXJyYXk8VGFibGVIZWFkZXJJdGVtPigpO1xuXHRcdGxldCBkYXRhID0gbmV3IEFycmF5PEFycmF5PFRhYmxlSXRlbT4+KCk7XG5cdFx0bGV0IHJvdyA9IG5ldyBBcnJheTxUYWJsZUl0ZW0+KCk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkNvdW50OyBpKyspIHtcblx0XHRcdGhlYWRlci5wdXNoKG5ldyBUYWJsZUhlYWRlckl0ZW0oKSk7XG5cdFx0XHRyb3cucHVzaChuZXcgVGFibGVJdGVtKCkpO1xuXHRcdH1cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHJvd0NvdW50IC0gMTsgaSsrKSB7XG5cdFx0XHRkYXRhLnB1c2gocm93KTtcblx0XHR9XG5cblx0XHRtb2RlbC5oZWFkZXIgPSBoZWFkZXI7XG5cdFx0bW9kZWwuZGF0YSA9IGRhdGE7XG5cdFx0cmV0dXJuIG1vZGVsO1xuXHR9XG5cblx0c3RhdGljIHNldFRhYkluZGV4KGVsZW1lbnQ6IEhUTUxFbGVtZW50LCBpbmRleDogLTEgfCAwKSB7XG5cdFx0Y29uc3QgZm9jdXNFbGVtZW50TGlzdCA9IGdldEZvY3VzRWxlbWVudExpc3QoZWxlbWVudCwgdGFiYmFibGVTZWxlY3Rvcklnbm9yZVRhYkluZGV4KTtcblx0XHRpZiAoZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZCAmJiBlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkLmNsYXNzTGlzdC5jb250YWlucyhcImNkcy0tdGFibGUtc29ydFwiKSAmJiBmb2N1c0VsZW1lbnRMaXN0Lmxlbmd0aCA+IDEpIHtcblx0XHRcdGZvY3VzRWxlbWVudExpc3RbMV0udGFiSW5kZXggPSBpbmRleDtcblx0XHR9IGVsc2UgaWYgKGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdFswXS50YWJJbmRleCA9IGluZGV4O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtZW50LnRhYkluZGV4ID0gaW5kZXg7XG5cdFx0fVxuXHR9XG5cblx0c3RhdGljIGZvY3VzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cdFx0Y29uc3QgZm9jdXNFbGVtZW50TGlzdCA9IGdldEZvY3VzRWxlbWVudExpc3QoZWxlbWVudCwgdGFiYmFibGVTZWxlY3Rvcklnbm9yZVRhYkluZGV4KTtcblx0XHRpZiAoXG5cdFx0XHQoZWxlbWVudC5maXJzdEVsZW1lbnRDaGlsZD8uY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2RzLS10YWJsZS1zb3J0XCIpICYmIGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMSkgfHxcblx0XHRcdGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMFxuXHRcdCkge1xuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdFswXS5mb2N1cygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbGVtZW50LmZvY3VzKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIElkIG9mIHRoZSB0YWJsZSBoZWFkZXIgdGl0bGUgZWxlbWVudFxuXHQgKi9cblx0QElucHV0KCkgYXJpYUxhYmVsbGVkYnk6IHN0cmluZztcblx0LyoqXG5cdCAqIElkIG9mIHRoZSB0YWJsZSBoZWFkZXIgZGVzY3JpcHRpb24gZWxlbWVudFxuXHQgKi9cblx0QElucHV0KCkgYXJpYURlc2NyaWJlZGJ5OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIGBUYWJsZU1vZGVsYCB3aXRoIGRhdGEgdGhlIHRhYmxlIGlzIHRvIGRpc3BsYXkuXG5cdCAqL1xuXHRASW5wdXQoKVxuXHRzZXQgbW9kZWwobTogVGFibGVNb2RlbCkge1xuXHRcdGlmICh0aGlzLl9tb2RlbCkge1xuXHRcdFx0dGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cdFx0XHQvLyBOZWVkIHRvIGNyZWF0ZSBhIG5ldyBzdWJzY3JpcHRpb24gaW5zdGFuY2UgaGVyZSBiZWNhdXNlIHVuc3Vic2NyaWJpbmcgcHJldmVudHMgYW55IG5ldyBzdWJzY3JpcHRpb25zXG5cdFx0XHQvLyBmcm9tIGJlaW5nIGFkZGVkIGZvciBzb21lIHJlYXNvbi4gV2hlbiBhIG5ldyBtb2RlbCBpcyBzZXQsIG5vbmUgb2YgdGhlIHN1YnNjcmlwdGlvbnMgd291bGQgZXhpc3QuXG5cdFx0XHR0aGlzLnN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5fbW9kZWwgPSBtO1xuXG5cdFx0Y29uc3Qgcm93c0NoYW5nZSA9IHRoaXMuX21vZGVsLnJvd3NTZWxlY3RlZENoYW5nZS5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVTZWxlY3RBbGxDaGVja2JveCgpKTtcblx0XHRjb25zdCBkYXRhQ2hhbmdlID0gdGhpcy5fbW9kZWwuZGF0YUNoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuaXNEYXRhR3JpZCkge1xuXHRcdFx0XHR0aGlzLnJlc2V0VGFiSW5kZXgoKTtcblx0XHRcdH1cblx0XHRcdHRoaXMudXBkYXRlU2VsZWN0QWxsQ2hlY2tib3goKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQocm93c0NoYW5nZSk7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChkYXRhQ2hhbmdlKTtcblxuXHRcdGlmICh0aGlzLmlzRGF0YUdyaWQpIHtcblx0XHRcdGNvbnN0IGV4cGFuZGVkQ2hhbmdlID0gdGhpcy5fbW9kZWwucm93c0V4cGFuZGVkQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRcdC8vIEFsbG93cyB0aGUgZXhwYW5kZWQgcm93IHRvIGhhdmUgYSBmb2N1cyBzdGF0ZSB3aGVuIGl0IGV4aXN0cyBpbiB0aGUgRE9NXG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGV4cGFuZGVkUm93cyA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuY2RzLS1leHBhbmRhYmxlLXJvdzpub3QoLmNkcy0tcGFyZW50LXJvdylcIik7XG5cdFx0XHRcdFx0QXJyYXkuZnJvbTxhbnk+KGV4cGFuZGVkUm93cykuZm9yRWFjaChyb3cgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJvdy5maXJzdEVsZW1lbnRDaGlsZC50YWJJbmRleCA9PT0gdW5kZWZpbmVkIHx8IHJvdy5maXJzdEVsZW1lbnRDaGlsZC50YWJJbmRleCAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0cm93LmZpcnN0RWxlbWVudENoaWxkLnRhYkluZGV4ID0gLTE7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGV4cGFuZGVkQ2hhbmdlKTtcblx0XHR9XG5cdH1cblxuXHRnZXQgbW9kZWwoKTogVGFibGVNb2RlbCB7XG5cdFx0cmV0dXJuIHRoaXMuX21vZGVsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNpemUgb2YgdGhlIHRhYmxlIHJvd3MuXG5cdCAqL1xuXHRASW5wdXQoKSBzaXplOiBUYWJsZVJvd1NpemUgPSBcIm1kXCI7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGxvYWRpbmcgdGFibGUuXG5cdCAqL1xuXHRASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBkYXRhIGdyaWQgd2l0aCBrZXlib2FyZCBpbnRlcmFjdGlvbnMuXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgaXNEYXRhR3JpZCh2YWx1ZTogYm9vbGVhbikge1xuXHRcdHRoaXMuX2lzRGF0YUdyaWQgPSB2YWx1ZTtcblx0XHRpZiAodGhpcy5pc1ZpZXdSZWFkeSkge1xuXHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuZW5hYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuZGlzYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNldHRpbmcgc29ydGFibGUgdG8gZmFsc2Ugd2lsbCBkaXNhYmxlIGFsbCBoZWFkZXJzIGluY2x1ZGluZyBoZWFkZXJzIHdoaWNoIGFyZSBzb3J0YWJsZS4gSXMgaXNcblx0ICogcG9zc2libGUgdG8gc2V0IHRoZSBzb3J0YWJsZSBzdGF0ZSBvbiB0aGUgaGVhZGVyIGl0ZW0gdG8gZGlzYWJsZS9lbmFibGUgc29ydGluZyBmb3Igb25seSBzb21lIGhlYWRlcnMuXG5cdCAqL1xuXHRASW5wdXQoKSBzb3J0YWJsZSA9IHRydWU7XG5cblx0QElucHV0KCkgbm9Cb3JkZXIgPSB0cnVlO1xuXG5cdGdldCBpc0RhdGFHcmlkKCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiB0aGlzLl9pc0RhdGFHcmlkO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdG8gc2hvdyB0aGUgc2VsZWN0aW9uIGNoZWNrYm94ZXMgY29sdW1uIG9yIG5vdC5cblx0ICovXG5cdEBJbnB1dCgpIHNob3dTZWxlY3Rpb25Db2x1bW4gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB3aGV0aGVyIHRvIGVuYWJsZSBtdWx0aXBsZSBvciBzaW5nbGUgcm93IHNlbGVjdGlvbi5cblx0ICovXG5cdEBJbnB1dCgpIGVuYWJsZVNpbmdsZVNlbGVjdCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBEaXN0YW5jZSAoaW4gcHgpIGZyb20gdGhlIGJvdHRvbSB0aGF0IHZpZXcgaGFzIHRvIHJlYWNoIGJlZm9yZVxuXHQgKiBgc2Nyb2xsTG9hZGAgZXZlbnQgaXMgZW1pdHRlZC5cblx0ICovXG5cdEBJbnB1dCgpIHNjcm9sbExvYWREaXN0YW5jZSA9IDA7XG5cblx0LyoqXG5cdCAqIEB0b2RvIC0gRW5hYmxlIGNvbHVtbiByZXNpemUgd2hlbiBDYXJib24gb2ZmaWNpYWxseSBzdXBwb3J0cyBmZWF0dXJlXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHVzZXJzIHRvIHJlc2l6ZSBjb2x1bW5zLlxuXHQgKlxuXHQgKiBXb3JrcyBmb3IgY29sdW1ucyB3aXRoIHdpZHRoIHNldCBpbiBwaXhlbHMuXG5cdCAqXG5cdCAqL1xuXHQvLyBASW5wdXQoKSBjb2x1bW5zUmVzaXphYmxlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEB0b2RvIC0gRW5hYmxlIGNvbHVtbnMgZHJhZyAmIGRyb3Agd2hlbiBDYXJib24gb2ZmaWNpYWxseSBzdXBwb3J0cyBmZWF0dXJlXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHVzZXJzIHRvIGRyYWcgYW5kIGRyb3AgY29sdW1ucy5cblx0ICpcblx0ICogQ2hhbmdpbmcgdGhlIGNvbHVtbiBvcmRlciBpbiB0YWJsZSBjaGFuZ2VzIHRhYmxlIG1vZGVsLiBCZSBhd2FyZSBvZiBpdCB3aGVuIHlvdSBhZGQgYWRkaXRpb25hbCBkYXRhXG5cdCAqIHRvIHRoZSBtb2RlbC5cblx0ICpcblx0ICovXG5cdC8vIEBJbnB1dCgpIGNvbHVtbnNEcmFnZ2FibGUgPSBmYWxzZTtcblxuXHRASW5wdXQoKVxuXHRzZXQgZXhwYW5kQnV0dG9uQXJpYUxhYmVsKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWwub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cdGdldCBleHBhbmRCdXR0b25BcmlhTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbC52YWx1ZTtcblx0fVxuXHRASW5wdXQoKVxuXHRzZXQgc29ydERlc2NlbmRpbmdMYWJlbCh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fc29ydERlc2NlbmRpbmdMYWJlbC5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblx0Z2V0IHNvcnREZXNjZW5kaW5nTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NvcnREZXNjZW5kaW5nTGFiZWwudmFsdWU7XG5cdH1cblx0QElucHV0KClcblx0c2V0IHNvcnRBc2NlbmRpbmdMYWJlbCh2YWx1ZTogc3RyaW5nIHwgT2JzZXJ2YWJsZTxzdHJpbmc+KSB7XG5cdFx0dGhpcy5fc29ydEFzY2VuZGluZ0xhYmVsLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXHRnZXQgc29ydEFzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0QXNjZW5kaW5nTGFiZWwudmFsdWU7XG5cdH1cblxuXHQvKipcblx0ICogRXhwZWN0cyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBzb21lIG9yIGFsbCBvZjpcblx0ICogYGBgXG5cdCAqIHtcblx0ICpcdFx0XCJGSUxURVJcIjogXCJGaWx0ZXJcIixcblx0ICpcdFx0XCJFTkRfT0ZfREFUQVwiOiBcIllvdSd2ZSByZWFjaGVkIHRoZSBlbmQgb2YgeW91ciBjb250ZW50XCIsXG5cdCAqXHRcdFwiU0NST0xMX1RPUFwiOiBcIlNjcm9sbCB0byB0b3BcIixcblx0ICpcdFx0XCJDSEVDS0JPWF9IRUFERVJcIjogXCJTZWxlY3QgYWxsIHJvd3NcIixcblx0ICpcdFx0XCJDSEVDS0JPWF9ST1dcIjogXCJTZWxlY3Qgcm93XCJcblx0ICogfVxuXHQgKiBgYGBcblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCB0cmFuc2xhdGlvbnModmFsdWUpIHtcblx0XHRjb25zdCB2YWx1ZVdpdGhEZWZhdWx0cyA9IG1lcmdlKHRoaXMuaTE4bi5nZXRNdWx0aXBsZShcIlRBQkxFXCIpLCB2YWx1ZSk7XG5cdFx0dGhpcy5fZmlsdGVyVGl0bGUub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuRklMVEVSKTtcblx0XHR0aGlzLl9lbmRPZkRhdGFUZXh0Lm92ZXJyaWRlKHZhbHVlV2l0aERlZmF1bHRzLkVORF9PRl9EQVRBKTtcblx0XHR0aGlzLl9zY3JvbGxUb3BUZXh0Lm92ZXJyaWRlKHZhbHVlV2l0aERlZmF1bHRzLlNDUk9MTF9UT1ApO1xuXHRcdHRoaXMuX2NoZWNrYm94SGVhZGVyTGFiZWwub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuQ0hFQ0tCT1hfSEVBREVSKTtcblx0XHR0aGlzLl9jaGVja2JveFJvd0xhYmVsLm92ZXJyaWRlKHZhbHVlV2l0aERlZmF1bHRzLkNIRUNLQk9YX1JPVyk7XG5cdH1cblxuXHQvKipcblx0ICogU2V0IHRvIGBmYWxzZWAgdG8gcmVtb3ZlIHRhYmxlIHJvd3MgKHplYnJhKSBzdHJpcGVzLlxuXHQgKi9cblx0QElucHV0KCkgc3RyaXBlZCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIEFsbG93cyB0YWJsZSBjb250ZW50IHRvIHNjcm9sbCBob3Jpem9udGFsbHlcblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tZGF0YS10YWJsZS1jb250ZW50XCIpIHRhYmxlQ29udGVudCA9IHRydWU7XG5cblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgdG8gc3RpY2sgdGhlIGhlYWRlciB0byB0aGUgdG9wIG9mIHRoZSB0YWJsZVxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1kYXRhLXRhYmxlX2lubmVyLWNvbnRhaW5lclwiKSBASW5wdXQoKSBzdGlja3lIZWFkZXIgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2V0IGZvb3RlciB0ZW1wbGF0ZSB0byBjdXN0b21pemUgd2hhdCBpcyBkaXNwbGF5ZWQgaW4gdGhlIHRmb290IHNlY3Rpb24gb2YgdGhlIHRhYmxlXG5cdCAqL1xuXHRASW5wdXQoKSBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuXHQvKipcblx0ICogVXNlZCB0byBwb3B1bGF0ZSB0aGUgcm93IHNlbGVjdGlvbiBjaGVja2JveCBsYWJlbCB3aXRoIGEgdXNlZnVsIHZhbHVlIGlmIHNldC5cblx0ICpcblx0ICogRXhhbXBsZTpcblx0ICogYGBgXG5cdCAqIDxjZHMtdGFibGUgW3NlbGVjdGlvbkxhYmVsQ29sdW1uXT1cIjBcIj48L2Nkcy10YWJsZT5cblx0ICogPCEtLSByZXN1bHRzIGluIGFyaWEtbGFiZWw9XCJTZWxlY3QgZmlyc3QgY29sdW1uIHZhbHVlXCJcblx0ICogKHdoZXJlIFwiZmlyc3QgY29sdW1uIHZhbHVlXCIgaXMgdGhlIHZhbHVlIG9mIHRoZSBmaXJzdCBjb2x1bW4gaW4gdGhlIHJvdyAtLT5cblx0ICogYGBgXG5cdCAqL1xuXHRASW5wdXQoKSBzZWxlY3Rpb25MYWJlbENvbHVtbjogbnVtYmVyO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBhbiBpbmRleCBvZiB0aGUgY29sdW1uIHRoYXQgd2FudHMgdG8gYmUgc29ydGVkLlxuXHQgKlxuXHQgKiBJZiBubyBvYnNlcnZlcnMgYXJlIHByb3ZpZGVkIChkZWZhdWx0KSwgdGFibGUgd2lsbCBhdHRlbXB0IHRvIGRvIGEgc2ltcGxlIHNvcnQgb2YgdGhlIGRhdGEgbG9hZGVkXG5cdCAqIGludG8gdGhlIG1vZGVsLlxuXHQgKlxuXHQgKiBJZiBhbiBvYnNlcnZlciBpcyBwcm92aWRlZCwgdGFibGUgd2lsbCBub3QgYXR0ZW1wdCBhbnkgc29ydGluZyBvZiBpdHMgb3duIGFuZCBpdCBpcyB1cCB0byB0aGUgb2JzZXJ2ZXJcblx0ICogdG8gc29ydCB0aGUgdGFibGUuIFRoaXMgaXMgd2hhdCB5b3UgdHlwaWNhbGx5IHdhbnQgaWYgeW91J3JlIHVzaW5nIGEgYmFja2VuZCBxdWVyeSB0byBnZXQgdGhlIHNvcnRlZFxuXHQgKiBkYXRhIG9yIHdhbnQgdG8gc29ydCBkYXRhIGFjcm9zcyBtdWx0aXBsZSBwYWdlcy5cblx0ICpcblx0ICogVXNhZ2U6XG5cdCAqXG5cdCAqIGBgYHR5cGVzY3JpcHRcblx0ICogQENvbXBvbmVudCh7XG5cdCAqIFx0c2VsZWN0b3I6IFwiYXBwLXRhYmxlXCIsXG5cdCAqIFx0dGVtcGxhdGU6IGBcblx0ICogXHRcdDxjZHMtdGFibGVcblx0ICogXHRcdFx0W21vZGVsXT1cIm1vZGVsXCJcblx0ICogXHRcdFx0KHNvcnQpPVwic2ltcGxlU29ydCgkZXZlbnQpXCI+XG5cdCAqIFx0XHRcdE5vIGRhdGEuXG5cdCAqIFx0XHQ8L2Nkcy10YWJsZT5cblx0ICogXHRgXG5cdCAqIH0pXG5cdCAqIGV4cG9ydCBjbGFzcyBUYWJsZUFwcCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcblx0ICogXHRASW5wdXQoKSBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG5cdCAqXG5cdCAqIFx0bmdPbkluaXQoKSB7XG5cdCAqIFx0XHR0aGlzLm1vZGVsLmhlYWRlciA9IFtcblx0ICogXHRcdFx0bmV3IFRhYmxlSGVhZGVySXRlbSh7IGRhdGE6IFwiTmFtZVwiIH0pLFxuXHQgKiBcdFx0XHRuZXcgVGFibGVIZWFkZXJJdGVtKHsgZGF0YTogXCJod2VyXCIgfSlcblx0ICogXHRcdF07XG5cdCAqXG5cdCAqIFx0XHR0aGlzLm1vZGVsLmRhdGEgPSBbXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDFcIiB9KSwgbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwicXdlclwiIH0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgM1wiIH0pLCBuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJ6d2VyXCIgfSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSAyXCIgfSksIG5ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcInN3ZXJcIiB9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDRcIiB9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDVcIiB9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDZcIiB9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV1cblx0ICogXHRcdF07XG5cdCAqIFx0fVxuXHQgKlxuXHQgKiBcdHNpbXBsZVNvcnQoaW5kZXg6IG51bWJlcikge1xuXHQgKiBcdFx0Ly8gdGhpcyBmdW5jdGlvbiBkb2VzIGEgc2ltcGxlIHNvcnQsIHdoaWNoIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgdGFibGUgYW5kIGlmIHRoYXQnc1xuXHQgKiBcdFx0Ly8gYWxsIHlvdSB3YW50LCB5b3UgZG9uJ3QgbmVlZCB0byBkbyB0aGlzLlxuXHQgKlxuXHQgKiBcdFx0Ly8gaGVyZSB5b3UgY2FuIHF1ZXJ5IHlvdXIgYmFja2VuZCBhbmQgdXBkYXRlIHRoZSBtb2RlbC5kYXRhIGJhc2VkIG9uIHRoZSByZXN1bHRcblx0ICogXHRcdGlmICh0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uc29ydGVkKSB7XG5cdCAqIFx0XHRcdC8vIGlmIGFscmVhZHkgc29ydGVkIGZsaXAgc29ydGluZyBkaXJlY3Rpb25cblx0ICogXHRcdFx0dGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLmFzY2VuZGluZyA9IHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5kZXNjZW5kaW5nO1xuXHQgKiBcdFx0fVxuXHQgKiBcdFx0dGhpcy5tb2RlbC5zb3J0KGluZGV4KTtcblx0ICogXHR9XG5cdCAqIH1cblx0ICogYGBgXG5cdCAqL1xuXHRAT3V0cHV0KCkgc29ydCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhbGwgcm93cyBhcmUgc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBtb2RlbFxuXHQgKi9cblx0QE91dHB1dCgpIHNlbGVjdEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhbGwgcm93cyBhcmUgZGVzZWxlY3RlZC5cblx0ICpcblx0ICogQHBhcmFtIG1vZGVsXG5cdCAqL1xuXHRAT3V0cHV0KCkgZGVzZWxlY3RBbGwgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYSBzaW5nbGUgcm93IGlzIHNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gKHttb2RlbDogdGhpcy5tb2RlbCwgc2VsZWN0ZWRSb3dJbmRleDogaW5kZXh9KVxuXHQgKi9cblx0QE91dHB1dCgpIHNlbGVjdFJvdyA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhIHNpbmdsZSByb3cgaXMgZGVzZWxlY3RlZC5cblx0ICpcblx0ICogQHBhcmFtICh7bW9kZWw6IHRoaXMubW9kZWwsIGRlc2VsZWN0ZWRSb3dJbmRleDogaW5kZXh9KVxuXHQgKi9cblx0QE91dHB1dCgpIGRlc2VsZWN0Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGEgcm93IGl0ZW0gZXhjbHVkaW5nIGV4cGFuZEJ1dHRvbnMsIGNoZWNrYm94ZXMsIG9yIHJhZGlvcyBpcyBjbGlja2VkLlxuXHQgKi9cblx0QE91dHB1dCgpIHJvd0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIHdoZW4gdGFibGUgcmVxdWlyZXMgbW9yZSBkYXRhIHRvIGJlIGxvYWRlZC5cblx0ICovXG5cdEBPdXRwdXQoKSBzY3JvbGxMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxUYWJsZU1vZGVsPigpO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyBpZiBhbGwgY2hlY2tib3hlcyBhcmUgdmlld2VkIGFzIHNlbGVjdGVkLlxuXHQgKi9cblx0c2VsZWN0QWxsQ2hlY2tib3ggPSBmYWxzZTtcblxuXHQvKipcblx0ICogQ29udHJvbHMgdGhlIGluZGV0ZXJtaW5hdGUgc3RhdGUgb2YgdGhlIGhlYWRlciBjaGVja2JveC5cblx0ICovXG5cdHNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkID0gZmFsc2U7XG5cblx0Z2V0IG5vRGF0YSgpIHtcblx0XHRyZXR1cm4gIXRoaXMubW9kZWwuZGF0YSB8fFxuXHRcdFx0dGhpcy5tb2RlbC5kYXRhLmxlbmd0aCA9PT0gMCB8fFxuXHRcdFx0dGhpcy5tb2RlbC5kYXRhLmxlbmd0aCA9PT0gMSAmJiB0aGlzLm1vZGVsLmRhdGFbMF0ubGVuZ3RoID09PSAwO1xuXHR9XG5cblx0cHVibGljIGlzQ29sdW1uRHJhZ2dpbmcgPSBmYWxzZTtcblx0cHVibGljIGNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gLTE7XG5cdHB1YmxpYyBjb2x1bW5EcmFnZ2VkUG9zaXRpb24gPSBcIlwiO1xuXG5cdHByb3RlY3RlZCBfbW9kZWw6IFRhYmxlTW9kZWw7XG5cdHByb3RlY3RlZCBfaXNEYXRhR3JpZCA9IGZhbHNlO1xuXHQvLyBmbGFnIHRvIHByZXZlbnQgZ2V0dGVycy9zZXR0ZXJzIGZyb20gcXVlcnlpbmcgdGhlIHZpZXcgYmVmb3JlIGl0J3MgZnVsbHkgaW5zdGFudGlhdGVkXG5cdHByb3RlY3RlZCBpc1ZpZXdSZWFkeSA9IGZhbHNlO1xuXG5cdHByb3RlY3RlZCBzdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXHRwcm90ZWN0ZWQgcG9zaXRpb25TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuXHRwcm90ZWN0ZWQgaW50ZXJhY3Rpb25Nb2RlbDogRGF0YUdyaWRJbnRlcmFjdGlvbk1vZGVsO1xuXHRwcm90ZWN0ZWQgaW50ZXJhY3Rpb25Qb3NpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdHByb3RlY3RlZCBfZXhwYW5kQnV0dG9uQXJpYUxhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuRVhQQU5EX0JVVFRPTlwiKTtcblx0cHJvdGVjdGVkIF9zb3J0RGVzY2VuZGluZ0xhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuU09SVF9ERVNDRU5ESU5HXCIpO1xuXHRwcm90ZWN0ZWQgX3NvcnRBc2NlbmRpbmdMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLlNPUlRfQVNDRU5ESU5HXCIpO1xuXHRwcm90ZWN0ZWQgX2NoZWNrYm94SGVhZGVyTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5DSEVDS0JPWF9IRUFERVJcIik7XG5cdHByb3RlY3RlZCBfY2hlY2tib3hSb3dMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkNIRUNLQk9YX1JPV1wiKTtcblx0cHJvdGVjdGVkIF9lbmRPZkRhdGFUZXh0ID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuRU5EX09GX0RBVEFcIik7XG5cdHByb3RlY3RlZCBfc2Nyb2xsVG9wVGV4dCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLlNDUk9MTF9UT1BcIik7XG5cdHByb3RlY3RlZCBfZmlsdGVyVGl0bGUgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5GSUxURVJcIik7XG5cblx0cHJvdGVjdGVkIGNvbHVtblJlc2l6ZVdpZHRoOiBudW1iZXI7XG5cdHByb3RlY3RlZCBjb2x1bW5SZXNpemVNb3VzZVg6IG51bWJlcjtcblx0cHJvdGVjdGVkIG1vdXNlTW92ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXHRwcm90ZWN0ZWQgbW91c2VVcFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFRhYmxlLlxuXHQgKi9cblx0Y29uc3RydWN0b3IoXG5cdFx0cHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG5cdFx0cHJvdGVjdGVkIGFwcGxpY2F0aW9uUmVmOiBBcHBsaWNhdGlvblJlZixcblx0XHRwcm90ZWN0ZWQgaTE4bjogSTE4blxuXHQpIHsgfVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmlzVmlld1JlYWR5ID0gdHJ1ZTtcblx0XHRpZiAodGhpcy5pc0RhdGFHcmlkKSB7XG5cdFx0XHR0aGlzLmVuYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cdFx0aWYgKHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24pIHtcblx0XHRcdHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRlbmFibGVEYXRhR3JpZEludGVyYWN0aW9ucygpIHtcblx0XHQvLyBpZiB3ZSBoYXZlIGFuIGBpbnRlcmFjdGlvTW9kZWxgIHdlJ3ZlIGFscmVhZHkgZW5hYmxlZCBkYXRhZ3JpZFxuXHRcdGlmICh0aGlzLmludGVyYWN0aW9uTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwidGFibGVcIikgYXMgSFRNTFRhYmxlRWxlbWVudDtcblx0XHRjb25zdCB0YWJsZUFkYXB0ZXIgPSBuZXcgVGFibGVEb21BZGFwdGVyKHRhYmxlKTtcblx0XHRjb25zdCBrZXlkb3duRXZlbnRTdHJlYW0gPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGFibGUsIFwia2V5ZG93blwiKTtcblx0XHRjb25zdCBjbGlja0V2ZW50U3RyZWFtID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRhYmxlLCBcImNsaWNrXCIpO1xuXHRcdHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCA9IG5ldyBEYXRhR3JpZEludGVyYWN0aW9uTW9kZWwoa2V5ZG93bkV2ZW50U3RyZWFtLCBjbGlja0V2ZW50U3RyZWFtLCB0YWJsZUFkYXB0ZXIpO1xuXHRcdHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmludGVyYWN0aW9uTW9kZWwucG9zaXRpb24uc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdGNvbnN0IFtjdXJyZW50Um93LCBjdXJyZW50Q29sdW1uXSA9IGV2ZW50LmN1cnJlbnQ7XG5cdFx0XHRjb25zdCBbcHJldmlvdXNSb3csIHByZXZpb3VzQ29sdW1uXSA9IGV2ZW50LnByZXZpb3VzO1xuXG5cdFx0XHRjb25zdCBjdXJyZW50RWxlbWVudCA9IHRhYmxlQWRhcHRlci5nZXRDZWxsKGN1cnJlbnRSb3csIGN1cnJlbnRDb2x1bW4pO1xuXHRcdFx0VGFibGUuc2V0VGFiSW5kZXgoY3VycmVudEVsZW1lbnQsIDApO1xuXG5cdFx0XHQvLyBpZiB0aGUgbW9kZWwgaGFzIGp1c3QgaW5pdGlhbGl6ZWQgZG9uJ3QgZm9jdXMgb3IgcmVzZXQgYW55dGhpbmdcblx0XHRcdGlmIChwcmV2aW91c1JvdyA9PT0gLTEgfHwgcHJldmlvdXNDb2x1bW4gPT09IC0xKSB7IHJldHVybjsgfVxuXHRcdFx0Ly8gTWFrZSB0aGUgcHJldmlvdXMgY2VsbCB1bmZvY3VzYWJsZSAoaWYgaXQncyBub3QgdGhlIGN1cnJlbnQpXG5cdFx0XHRpZiAocHJldmlvdXNSb3cgIT09IGN1cnJlbnRSb3cgfHwgcHJldmlvdXNDb2x1bW4gIT09IGN1cnJlbnRDb2x1bW4pIHtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXNFbGVtZW50ID0gdGFibGVBZGFwdGVyLmdldENlbGwocHJldmlvdXNSb3csIHByZXZpb3VzQ29sdW1uKTtcblx0XHRcdFx0VGFibGUuc2V0VGFiSW5kZXgocHJldmlvdXNFbGVtZW50LCAtMSk7XG5cdFx0XHR9XG5cdFx0XHRUYWJsZS5mb2N1cyhjdXJyZW50RWxlbWVudCk7XG5cdFx0fSk7XG5cdFx0Ly8gY2FsbCB0aGlzIGFmdGVyIGFzc2lnbmluZyBgdGhpcy5pbnRlcmFjdGlvbk1vZGVsYCBzaW5jZSBpdCBkZXBlbmRzIG9uIGl0XG5cdFx0dGhpcy5yZXNldFRhYkluZGV4KCk7XG5cdH1cblxuXHRkaXNhYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKSB7XG5cdFx0Ly8gdW5zdWJzY3JpYmUgZmlyc3Qgc28gd2UgZG9uJ3QgY2F1c2UgdGhlIGZvY3VzIHRvIGZseSBhcm91bmRcblx0XHRpZiAodGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHQvLyB1bmRvIHRhYiBpbmRleGluZyAoYWxzbyByZXNldHMgdGhlIG1vZGVsKVxuXHRcdHRoaXMucmVzZXRUYWJJbmRleCgwKTtcblx0XHQvLyBudWxsIG91dCB0aGUgbW9kZWwgcmVmXG5cdFx0dGhpcy5pbnRlcmFjdGlvbk1vZGVsID0gbnVsbDtcblx0fVxuXG5cdG9uU2VsZWN0QWxsKCkge1xuXHRcdHRoaXMubW9kZWwuc2VsZWN0QWxsKHRydWUpO1xuXHRcdHRoaXMuc2VsZWN0QWxsLmVtaXQodGhpcy5tb2RlbCk7XG5cdH1cblxuXHRvbkRlc2VsZWN0QWxsKCkge1xuXHRcdHRoaXMubW9kZWwuc2VsZWN0QWxsKGZhbHNlKTtcblx0XHR0aGlzLmRlc2VsZWN0QWxsLmVtaXQodGhpcy5tb2RlbCk7XG5cdH1cblxuXHRvblNlbGVjdFJvdyhldmVudCkge1xuXHRcdC8vIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBzZWxlY3RlZFJvd0luZGV4IHByb3BlcnR5XG5cdFx0aWYgKE9iamVjdC5rZXlzKGV2ZW50KS5pbmNsdWRlcyhcInNlbGVjdGVkUm93SW5kZXhcIikpIHtcblx0XHRcdGlmICh0aGlzLmVuYWJsZVNpbmdsZVNlbGVjdCkge1xuXHRcdFx0XHR0aGlzLm1vZGVsLnNlbGVjdEFsbChmYWxzZSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm1vZGVsLnNlbGVjdFJvdyhldmVudC5zZWxlY3RlZFJvd0luZGV4LCB0cnVlKTtcblx0XHRcdHRoaXMuc2VsZWN0Um93LmVtaXQoZXZlbnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1vZGVsLnNlbGVjdFJvdyhldmVudC5kZXNlbGVjdGVkUm93SW5kZXgsIGZhbHNlKTtcblx0XHRcdHRoaXMuZGVzZWxlY3RSb3cuZW1pdChldmVudCk7XG5cdFx0fVxuXHR9XG5cblx0b25Sb3dDbGljayhpbmRleDogbnVtYmVyKSB7XG5cdFx0dGhpcy5yb3dDbGljay5lbWl0KGluZGV4KTtcblx0fVxuXG5cdHVwZGF0ZVNlbGVjdEFsbENoZWNrYm94KCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpO1xuXG5cdFx0aWYgKHNlbGVjdGVkUm93c0NvdW50IDw9IDApIHtcblx0XHRcdC8vIHJlc2V0IHNlbGVjdCBhbGwgY2hlY2tib3ggaWYgbm90aGluZyBzZWxlY3RlZFxuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZCA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWRSb3dzQ291bnQgPCB0aGlzLm1vZGVsLmRhdGEubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94ID0gdHJ1ZTtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94ID0gdHJ1ZTtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRhYkluZGV4KG5ld1RhYkluZGV4ID0gLTEpIHtcblx0XHQvLyBlbnN1cmUgdGhlIHZpZXcgaXMgcmVhZHkgZm9yIHRoZSByZXNldCBiZWZvcmUgd2UgcHJlZm9ybSB0aGUgYWN0dWFsIHJlc2V0XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHQvLyByZXNldCBhbGwgdGhlIHRhYkluZGV4ZXMgd2UgY2FuIGZpbmRcblx0XHRcdGNvbnN0IGZvY3VzRWxlbWVudExpc3QgPSBnZXRGb2N1c0VsZW1lbnRMaXN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdFx0aWYgKGZvY3VzRWxlbWVudExpc3QpIHtcblx0XHRcdFx0Zm9jdXNFbGVtZW50TGlzdC5mb3JFYWNoKHRhYmJhYmxlID0+IHtcblx0XHRcdFx0XHR0YWJiYWJsZS50YWJJbmRleCA9IG5ld1RhYkluZGV4O1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIHJlc2V0IGludGVyYWN0aW9uIG1vZGVsIHBvc2l0aW9ucyBhbmQgdGFiSW5kZXhlc1xuXHRcdFx0aWYgKHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCkge1xuXHRcdFx0XHR0aGlzLmludGVyYWN0aW9uTW9kZWwucmVzZXRUYWJJbmRleGVzKG5ld1RhYkluZGV4KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZVN0YXJ0KGV2ZW50LCBjb2x1bW4pIHtcblx0XHR0aGlzLmNvbHVtblJlc2l6ZVdpZHRoID0gcGFyc2VJbnQoY29sdW1uLnN0eWxlLndpZHRoLCAxMCk7XG5cdFx0dGhpcy5jb2x1bW5SZXNpemVNb3VzZVggPSBldmVudC5jbGllbnRYO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHR0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudC5ib2R5LCBcIm1vdXNlbW92ZVwiKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0dGhpcy5jb2x1bW5SZXNpemVQcm9ncmVzcyhldmVudCwgY29sdW1uKTtcblx0XHR9KTtcblx0XHR0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQuYm9keSwgXCJtb3VzZXVwXCIpLnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHR0aGlzLmNvbHVtblJlc2l6ZUVuZChldmVudCwgY29sdW1uKTtcblx0XHR9KTtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZVByb2dyZXNzKGV2ZW50LCBjb2x1bW4pIHtcblx0XHRjb25zdCBtb3ZlID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuY29sdW1uUmVzaXplTW91c2VYO1xuXHRcdGNvbHVtbi5zdHlsZS53aWR0aCA9IGAke3RoaXMuY29sdW1uUmVzaXplV2lkdGggKyBtb3ZlfXB4YDtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZUVuZChldmVudCwgY29sdW1uKSB7XG5cdFx0dGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzY3JvbGxzIG9uIHRoZSBgPHRib2R5PmAgZWxlbWVudC5cblx0ICogRW1pdHMgdGhlIGBzY3JvbGxMb2FkYCBldmVudC5cblx0ICovXG5cdG9uU2Nyb2xsKGV2ZW50KSB7XG5cdFx0Y29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCAtIGV2ZW50LnRhcmdldC5jbGllbnRIZWlnaHQgLSBldmVudC50YXJnZXQuc2Nyb2xsVG9wO1xuXG5cdFx0aWYgKGRpc3RhbmNlRnJvbUJvdHRvbSA8PSB0aGlzLnNjcm9sbExvYWREaXN0YW5jZSkge1xuXHRcdFx0dGhpcy5zY3JvbGxMb2FkLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubW9kZWwuaXNFbmQgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRjb2x1bW5EcmFnU3RhcnQoZXZlbnQsIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5pc0NvbHVtbkRyYWdnaW5nID0gdHJ1ZTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gY29sdW1uSW5kZXg7XG5cdFx0ZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJjb2x1bW5JbmRleFwiLCBKU09OLnN0cmluZ2lmeShjb2x1bW5JbmRleCkpO1xuXHR9XG5cblx0Y29sdW1uRHJhZ0VuZChldmVudCwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmlzQ29sdW1uRHJhZ2dpbmcgPSBmYWxzZTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gLTE7XG5cdH1cblxuXHRjb2x1bW5EcmFnRW50ZXIoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gcG9zaXRpb247XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IGNvbHVtbkluZGV4O1xuXHR9XG5cblx0Y29sdW1uRHJhZ0xlYXZlKGV2ZW50LCBwb3NpdGlvbiwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cdH1cblxuXHRjb2x1bW5EcmFnb3ZlcihldmVudCwgcG9zaXRpb24sIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IGNvbHVtbkluZGV4O1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gcG9zaXRpb247XG5cblx0XHQvLyBuZWVkZWQgdG8gdGVsbCBicm93c2VyIHRvIGFsbG93IGRyb3BwaW5nXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0fVxuXG5cdGNvbHVtbkRyb3AoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuaXNDb2x1bW5EcmFnZ2luZyA9IGZhbHNlO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSAtMTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cblx0XHR0aGlzLm1vZGVsLm1vdmVDb2x1bW4oXG5cdFx0XHRwYXJzZUludChldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcImNvbHVtbkluZGV4XCIpLCAxMCksXG5cdFx0XHRjb2x1bW5JbmRleCArIChwb3NpdGlvbiA9PT0gXCJyaWdodFwiID8gMSA6IDApXG5cdFx0KTtcblx0fVxuXG5cdGRvU29ydChpbmRleDogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuc29ydC5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBubyBzb3J0IHByb3ZpZGVkIHNvIGRvIHRoZSBzaW1wbGUgc29ydFxuXHRcdFx0dGhpcy5tb2RlbC5jeWNsZVNvcnRTdGF0ZShpbmRleCk7XG5cdFx0XHR0aGlzLm1vZGVsLnNvcnQoaW5kZXgpO1xuXHRcdH1cblxuXHRcdHRoaXMuc29ydC5lbWl0KGluZGV4KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzY3JvbGxzIG9uIHRoZSBgPHRib2R5PmAgZWxlbWVudC5cblx0ICogRW1pdHMgdGhlIGBzY3JvbGxMb2FkYCBldmVudC5cblx0ICovXG5cdHNjcm9sbFRvVG9wKGV2ZW50KSB7XG5cdFx0ZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW5bMV0uc2Nyb2xsVG9wID0gMDtcblx0XHR0aGlzLm1vZGVsLmlzRW5kID0gZmFsc2U7XG5cdH1cblxuXHRnZXRTZWxlY3Rpb25MYWJlbFZhbHVlKHJvdzogVGFibGVJdGVtW10pIHtcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uTGFiZWxDb2x1bW4pIHtcblx0XHRcdHJldHVybiB7IHZhbHVlOiB0aGlzLmkxOG4uZ2V0KCkuVEFCTEUuUk9XIH07XG5cdFx0fVxuXHRcdHJldHVybiB7IHZhbHVlOiByb3dbdGhpcy5zZWxlY3Rpb25MYWJlbENvbHVtbl0uZGF0YSB9O1xuXHR9XG5cblx0Z2V0RXhwYW5kQnV0dG9uQXJpYUxhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWwuc3ViamVjdDtcblx0fVxuXHRnZXRTb3J0RGVzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0RGVzY2VuZGluZ0xhYmVsLnN1YmplY3Q7XG5cdH1cblx0Z2V0U29ydEFzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0QXNjZW5kaW5nTGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldENoZWNrYm94SGVhZGVyTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NoZWNrYm94SGVhZGVyTGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldENoZWNrYm94Um93TGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NoZWNrYm94Um93TGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldEVuZE9mRGF0YVRleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2VuZE9mRGF0YVRleHQuc3ViamVjdDtcblx0fVxuXG5cdGdldFNjcm9sbFRvcFRleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3Njcm9sbFRvcFRleHQuc3ViamVjdDtcblx0fVxuXG5cdGdldEZpbHRlclRpdGxlKCkge1xuXHRcdHJldHVybiB0aGlzLl9maWx0ZXJUaXRsZS5zdWJqZWN0O1xuXHR9XG59XG4iXX0=
|
|
907
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUVULEtBQUssRUFFTCxNQUFNLEVBQ04sWUFBWSxFQUtaLFdBQVcsRUFDWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUUzRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUV2RyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0FBR3hEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnSkc7QUFnRkgsTUFBTSxPQUFPLEtBQUs7SUF3WWpCOztPQUVHO0lBQ0gsWUFDVyxVQUFzQixFQUN0QixjQUE4QixFQUM5QixJQUFVO1FBRlYsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQXBTckI7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QUFqQixNQUFNO2dCQUtHLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuXHRDb21wb25lbnQsXG5cdEFwcGxpY2F0aW9uUmVmLFxuXHRJbnB1dCxcblx0T25Jbml0LFxuXHRPdXRwdXQsXG5cdEV2ZW50RW1pdHRlcixcblx0RWxlbWVudFJlZixcblx0QWZ0ZXJWaWV3SW5pdCxcblx0VGVtcGxhdGVSZWYsXG5cdE9uRGVzdHJveSxcblx0SG9zdEJpbmRpbmdcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZnJvbUV2ZW50LCBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gXCIuL3RhYmxlLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZUhlYWRlckl0ZW0gfSBmcm9tIFwiLi90YWJsZS1oZWFkZXItaXRlbS5jbGFzc1wiO1xuaW1wb3J0IHsgVGFibGVJdGVtIH0gZnJvbSBcIi4vdGFibGUtaXRlbS5jbGFzc1wiO1xuXG5pbXBvcnQgeyBnZXRGb2N1c0VsZW1lbnRMaXN0LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXggfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEkxOG4sIE92ZXJyaWRhYmxlIH0gZnJvbSBcImNhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXIvaTE4blwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwiY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhci91dGlsc1wiO1xuaW1wb3J0IHsgRGF0YUdyaWRJbnRlcmFjdGlvbk1vZGVsIH0gZnJvbSBcIi4vZGF0YS1ncmlkLWludGVyYWN0aW9uLW1vZGVsLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZURvbUFkYXB0ZXIgfSBmcm9tIFwiLi90YWJsZS1hZGFwdGVyLmNsYXNzXCI7XG5pbXBvcnQgeyBUYWJsZVJvd1NpemUgfSBmcm9tIFwiLi90YWJsZS50eXBlc1wiO1xuXG4vKipcbiAqIEJ1aWxkIHlvdXIgdGFibGUgd2l0aCB0aGlzIGNvbXBvbmVudCBieSBleHRlbmRpbmcgdGhpbmdzIHRoYXQgZGlmZmVyIGZyb20gZGVmYXVsdC5cbiAqXG4gKiBbU2VlIGRlbW9dKC4uLy4uLz9wYXRoPS9zdG9yeS9jb21wb25lbnRzLXRhYmxlLS1iYXNpYylcbiAqXG4gKiBJbnN0ZWFkIG9mIHRoZSB1c3VhbCB3cml0ZS15b3VyLW93bi1odG1sIGFwcHJvYWNoIHlvdSBoYWQgd2l0aCBgPHRhYmxlPmAsXG4gKiBjYXJib24gdGFibGUgdXNlcyBtb2RlbC12aWV3LWNvbnRyb2xsZXIgYXBwcm9hY2guXG4gKlxuICogSGVyZSwgeW91IGNyZWF0ZSBhIHZpZXcgKHdpdGggYnVpbHQtaW4gY29udHJvbGxlcikgYW5kIHByb3ZpZGUgaXQgYSBtb2RlbC5cbiAqIENoYW5nZXMgeW91IG1ha2UgdG8gdGhlIG1vZGVsIGFyZSByZWZsZWN0ZWQgaW4gdGhlIHZpZXcuIFByb3ZpZGUgc2FtZSBtb2RlbCB5b3UgdXNlXG4gKiBpbiB0aGUgdGFibGUgdG8gdGhlIGA8Y2RzLXBhZ2luYXRpb24+YCBjb21wb25lbnRzLlxuICogVGhleSBwcm92aWRlIGEgZGlmZmVyZW50IHZpZXcgb3ZlciB0aGUgc2FtZSBkYXRhLlxuICpcbiAqICMjIEJhc2ljIHVzYWdlXG4gKlxuICogYGBgaHRtbFxuICogPGNkcy10YWJsZSBbbW9kZWxdPVwibW9kZWxcIj48L2Nkcy10YWJsZT5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHB1YmxpYyBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG4gKlxuICogdGhpcy5tb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJxd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInp3ZXJcIn0pXSxcbiAqIFx0W25ldyBUYWJsZUl0ZW0oe2RhdGE6IFwiYnNkZlwifSksIG5ldyBUYWJsZUl0ZW0oe2RhdGE6IFwic3dlclwifSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJ0d2VyXCJ9KV1cbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyBDdXN0b21pemF0aW9uXG4gKlxuICogSWYgeW91IGhhdmUgY3VzdG9tIGRhdGEgaW4geW91ciB0YWJsZSwgeW91IG5lZWQgYSB3YXkgdG8gZGlzcGxheSBpdC4gWW91IGNhbiBkbyB0aGF0XG4gKiBieSBwcm92aWRpbmcgYSB0ZW1wbGF0ZSB0byBgVGFibGVJdGVtYC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8bmctdGVtcGxhdGUgI2N1c3RvbVRhYmxlSXRlbVRlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICogXHQ8YSBbcm91dGVyTGlua109XCJkYXRhLmxpbmtcIj57e2RhdGEubmFtZX19IHt7ZGF0YS5zdXJuYW1lfX08L2E+XG4gKiA8L25nLXRlbXBsYXRlPlxuICogYGBgXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY3VzdG9tVGFibGVJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gKlxuICogdGhpcy5jdXN0b21Nb2RlbC5kYXRhID0gW1xuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJhc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YToge25hbWU6IFwiTGVzc3lcIiwgbGluazogXCIvdGFibGVcIn0sIHRlbXBsYXRlOiB0aGlzLmN1c3RvbVRhYmxlSXRlbVRlbXBsYXRlfSldLFxuICogXHRbbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJjc2RmXCJ9KSwgbmV3IFRhYmxlSXRlbSh7ZGF0YTogXCJzd2VyXCJ9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImJzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiB7bmFtZTogXCJBbGljZVwiLCBzdXJuYW1lOiBcIkJvYlwifSwgdGVtcGxhdGU6IHRoaXMuY3VzdG9tVGFibGVJdGVtVGVtcGxhdGV9KV0sXG4gKiBcdFtuZXcgVGFibGVJdGVtKHtkYXRhOiBcImNzZGZcIn0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcbiAqIF07XG4gKiBgYGBcbiAqXG4gKiAjIyMgU29ydGluZyBhbmQgZmlsdGVyaW5nXG4gKlxuICogSW4gY2FzZSB5b3UgbmVlZCBjdXN0b20gc29ydGluZyBhbmQvb3IgZmlsdGVyaW5nIHlvdSBzaG91bGQgc3ViY2xhc3MgYFRhYmxlSGVhZGVySXRlbWBcbiAqIGFuZCBvdmVycmlkZSBuZWVkZWQgZnVuY3Rpb25zLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIEZpbHRlcmFibGVIZWFkZXJJdGVtIGV4dGVuZHMgVGFibGVIZWFkZXJJdGVtIHtcbiAqIFx0Ly8gY3VzdG9tIGZpbHRlciBmdW5jdGlvblxuICogXHRmaWx0ZXIoaXRlbTogVGFibGVJdGVtKTogYm9vbGVhbiB7XG4gKiBcdFx0aWYgKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwic3RyaW5nXCIgJiYgaXRlbS5kYXRhLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih0aGlzLmZpbHRlckRhdGEuZGF0YS50b0xvd2VyQ2FzZSgpKSA+PSAwIHx8XG4gKiBcdFx0aXRlbS5kYXRhLm5hbWUgJiYgaXRlbS5kYXRhLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHRoaXMuZmlsdGVyRGF0YS5kYXRhLnRvTG93ZXJDYXNlKCkpID49IDAgfHxcbiAqIFx0XHRpdGVtLmRhdGEuc3VybmFtZSAmJiBpdGVtLmRhdGEuc3VybmFtZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YodGhpcy5maWx0ZXJEYXRhLmRhdGEudG9Mb3dlckNhc2UoKSkgPj0gMCkge1xuICogXHRcdFx0cmV0dXJuIGZhbHNlO1xuICogXHRcdH1cbiAqIFx0XHRyZXR1cm4gdHJ1ZTtcbiAqIFx0fVxuICpcbiAqIFx0c2V0IGZpbHRlckNvdW50KG4pIHt9XG4gKiBcdGdldCBmaWx0ZXJDb3VudCgpIHtcbiAqIFx0XHRyZXR1cm4gKHRoaXMuZmlsdGVyRGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YSAmJiB0aGlzLmZpbHRlckRhdGEuZGF0YS5sZW5ndGggPiAwKSA/IDEgOiAwO1xuICogXHR9XG4gKlxuICogXHQvLyB1c2VkIGZvciBjdXN0b20gc29ydGluZ1xuICogXHRjb21wYXJlKG9uZTogVGFibGVJdGVtLCB0d286IFRhYmxlSXRlbSkge1xuICogXHRcdGNvbnN0IHN0cmluZ09uZSA9IChvbmUuZGF0YS5uYW1lIHx8IG9uZS5kYXRhLnN1cm5hbWUgfHwgb25lLmRhdGEpLnRvTG93ZXJDYXNlKCk7XG4gKiBcdFx0Y29uc3Qgc3RyaW5nVHdvID0gKHR3by5kYXRhLm5hbWUgfHwgdHdvLmRhdGEuc3VybmFtZSB8fCB0d28uZGF0YSkudG9Mb3dlckNhc2UoKTtcbiAqXG4gKiBcdFx0aWYgKHN0cmluZ09uZSA+IHN0cmluZ1R3bykge1xuICogXHRcdFx0cmV0dXJuIDE7XG4gKiBcdFx0fSBlbHNlIGlmIChzdHJpbmdPbmUgPCBzdHJpbmdUd28pIHtcbiAqIFx0XHRcdHJldHVybiAtMTtcbiAqIFx0XHR9IGVsc2Uge1xuICogXHRcdFx0cmV0dXJuIDA7XG4gKiBcdFx0fVxuICogXHR9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBJZiB5b3Ugd2FudCB0byBkbyB5b3VyIHNvcnRpbmcgb24gdGhlIGJhY2tlbmQgb3IgcXVlcnkgZm9yIHNvcnRlZCBkYXRhIGFzIGEgcmVzdWx0IG9mIHVzZXJcbiAqIGNsaWNraW5nIHRoZSB0YWJsZSBoZWFkZXIsIGNoZWNrIHRhYmxlIFtgc29ydGBdKCNzb3J0KSBvdXRwdXQgZG9jdW1lbnRhdGlvblxuICpcbiAqIFNlZSBgVGFibGVIZWFkZXJJdGVtYCBjbGFzcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyBObyBkYXRhIHRlbXBsYXRlXG4gKlxuICogV2hlbiB0YWJsZSBoYXMgbm8gZGF0YSB0byBzaG93LCBpdCBjYW4gc2hvdyBhIG1lc3NhZ2UgeW91IHByb3ZpZGUgaXQgaW5zdGVhZC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXRhYmxlIFttb2RlbF09XCJtb2RlbFwiPk5vIGRhdGEuPC9jZHMtdGFibGU+XG4gKiBgYGBcbiAqXG4gKiAuLi4gd2lsbCBzaG93IGBObyBkYXRhLmAgbWVzc2FnZSwgYnV0IHlvdSBjYW4gZ2V0IGNyZWF0aXZlIGFuZCBwcm92aWRlIGFueSB0ZW1wbGF0ZSB5b3Ugd2FudFxuICogdG8gcmVwbGFjZSB0YWJsZSdzIGRlZmF1bHQgYHRib2R5YC5cbiAqXG4gKiAjIyBVc2UgcGFnaW5hdGlvbiBhcyB0YWJsZSBmb290ZXJcbiAqXG4gKiBgYGBodG1sXG4gKiA8Y2RzLXBhZ2luYXRpb24gW21vZGVsXT1cIm1vZGVsXCIgKHNlbGVjdFBhZ2UpPVwic2VsZWN0UGFnZSgkZXZlbnQpXCI+PC9jZHMtcGFnaW5hdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBzZWxlY3RQYWdlKClgIGZ1bmN0aW9uIHNob3VsZCBmZXRjaCB0aGUgZGF0YSBmcm9tIGJhY2tlbmQsIGNyZWF0ZSBuZXcgYGRhdGFgLCBhcHBseSBpdCB0byBgbW9kZWwuZGF0YWAsXG4gKiBhbmQgdXBkYXRlIGBtb2RlbC5jdXJyZW50UGFnZWAuXG4gKlxuICogSWYgdGhlIGRhdGEgeW91ciBzZXJ2ZXIgcmV0dXJucyBpcyBhIHR3byBkaW1lbnNpb25hbCBhcnJheSBvZiBvYmplY3RzLCBpdCB3b3VsZCBsb29rIHNvbWV0aGluZyBsaWtlIHRoaXM6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogc2VsZWN0UGFnZShwYWdlKSB7XG4gKiBcdHRoaXMuZ2V0UGFnZShwYWdlKS50aGVuKChkYXRhOiBBcnJheTxBcnJheTxhbnk+PikgPT4ge1xuICogXHRcdC8vIHNldCB0aGUgZGF0YSBhbmQgdXBkYXRlIHBhZ2VcbiAqIFx0XHR0aGlzLm1vZGVsLmRhdGEgPSB0aGlzLnByZXBhcmVEYXRhKGRhdGEpO1xuICogXHRcdHRoaXMubW9kZWwuY3VycmVudFBhZ2UgPSBwYWdlO1xuICogXHR9KTtcbiAqIH1cbiAqXG4gKiBwcm90ZWN0ZWQgcHJlcGFyZURhdGEoZGF0YTogQXJyYXk8QXJyYXk8YW55Pj4pIHtcbiAqIFx0Ly8gY3JlYXRlIG5ldyBkYXRhIGZyb20gdGhlIHNlcnZpY2UgZGF0YVxuICogXHRsZXQgbmV3RGF0YSA9IFtdO1xuICogXHRkYXRhLmZvckVhY2goZGF0YVJvdyA9PiB7XG4gKiBcdFx0bGV0IHJvdyA9IFtdO1xuICogXHRcdGRhdGFSb3cuZm9yRWFjaChkYXRhRWxlbWVudCA9PiB7XG4gKiBcdFx0XHRyb3cucHVzaChuZXcgVGFibGVJdGVtKHtcbiAqIFx0XHRcdFx0ZGF0YTogZGF0YUVsZW1lbnQsXG4gKiBcdFx0XHRcdHRlbXBsYXRlOiB0eXBlb2YgZGF0YUVsZW1lbnQgPT09IFwic3RyaW5nXCIgPyB1bmRlZmluZWQgOiB0aGlzLnBhZ2luYXRpb25UYWJsZUl0ZW1UZW1wbGF0ZVxuICogXHRcdFx0XHQvLyB5b3VyIHRlbXBsYXRlIGNhbiBoYW5kbGUgYWxsIHRoZSBkYXRhIHR5cGVzIHNvIHlvdSBkb24ndCBoYXZlIHRvIGNvbmRpdGlvbmFsbHkgc2V0IGl0XG4gKiBcdFx0XHRcdC8vIHlvdSBjYW4gYWxzbyBzZXQgZGlmZmVyZW50IHRlbXBsYXRlcyBmb3IgZGlmZmVyZW50IGNvbHVtbnMgYmFzZWQgb24gaW5kZXhcbiAqIFx0XHRcdH0pKTtcbiAqIFx0XHR9KTtcbiAqIFx0XHRuZXdEYXRhLnB1c2gocm93KTtcbiAqIFx0fSk7XG4gKiBcdHJldHVybiBuZXdEYXRhO1xuICogfVxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogXCJjZHMtdGFibGUsIGlibS10YWJsZVwiLFxuXHR0ZW1wbGF0ZTogYFxuXHQ8dGFibGVcblx0XHRjZHNUYWJsZVxuXHRcdFtzb3J0YWJsZV09XCJzb3J0YWJsZVwiXG5cdFx0W25vQm9yZGVyXT1cIm5vQm9yZGVyXCJcblx0XHRbbmdDbGFzc109XCJ7J2Nkcy0tZGF0YS10YWJsZS0tc3RpY2t5LWhlYWRlcic6IHN0aWNreUhlYWRlcn1cIlxuXHRcdFtzaXplXT1cInNpemVcIlxuXHRcdFtzdHJpcGVkXT1cInN0cmlwZWRcIlxuXHRcdFtza2VsZXRvbl09XCJza2VsZXRvblwiXG5cdFx0W2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5XCJcblx0XHRbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRieVwiPlxuXHRcdDx0aGVhZFxuXHRcdFx0Y2RzVGFibGVIZWFkXG5cdFx0XHRbc29ydGFibGVdPVwic29ydGFibGVcIlxuXHRcdFx0KGRlc2VsZWN0QWxsKT1cIm9uRGVzZWxlY3RBbGwoKVwiXG5cdFx0XHQoc2VsZWN0QWxsKT1cIm9uU2VsZWN0QWxsKClcIlxuXHRcdFx0KHNvcnQpPVwiZG9Tb3J0KCRldmVudClcIlxuXHRcdFx0W2NoZWNrYm94SGVhZGVyTGFiZWxdPVwiZ2V0Q2hlY2tib3hIZWFkZXJMYWJlbCgpXCJcblx0XHRcdFtmaWx0ZXJUaXRsZV09XCJnZXRGaWx0ZXJUaXRsZSgpXCJcblx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdFx0XHRbc2VsZWN0QWxsQ2hlY2tib3hdPVwic2VsZWN0QWxsQ2hlY2tib3hcIlxuXHRcdFx0W3NlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkXT1cInNlbGVjdEFsbENoZWNrYm94U29tZVNlbGVjdGVkXCJcblx0XHRcdFtzaG93U2VsZWN0aW9uQ29sdW1uXT1cInNob3dTZWxlY3Rpb25Db2x1bW5cIlxuXHRcdFx0W2VuYWJsZVNpbmdsZVNlbGVjdF09XCJlbmFibGVTaW5nbGVTZWxlY3RcIlxuXHRcdFx0W3NrZWxldG9uXT1cInNrZWxldG9uXCJcblx0XHRcdFtzb3J0QXNjZW5kaW5nTGFiZWxdPVwic29ydEFzY2VuZGluZ0xhYmVsXCJcblx0XHRcdFtzb3J0RGVzY2VuZGluZ0xhYmVsXT1cInNvcnREZXNjZW5kaW5nTGFiZWxcIlxuXHRcdFx0W3N0aWNreUhlYWRlcl09XCJzdGlja3lIZWFkZXJcIj5cblx0XHQ8L3RoZWFkPlxuXHRcdDx0Ym9keVxuXHRcdFx0Y2RzVGFibGVCb2R5XG5cdFx0XHQoZGVzZWxlY3RSb3cpPVwib25TZWxlY3RSb3coJGV2ZW50KVwiXG5cdFx0XHQoc2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudClcIlxuXHRcdFx0KHNlbGVjdFJvdyk9XCJvblNlbGVjdFJvdygkZXZlbnQpXCJcblx0XHRcdFtjaGVja2JveFJvd0xhYmVsXT1cImdldENoZWNrYm94Um93TGFiZWwoKVwiXG5cdFx0XHRbZW5hYmxlU2luZ2xlU2VsZWN0XT1cImVuYWJsZVNpbmdsZVNlbGVjdFwiXG5cdFx0XHQocm93Q2xpY2spPVwib25Sb3dDbGljaygkZXZlbnQpXCJcblx0XHRcdFtleHBhbmRCdXR0b25BcmlhTGFiZWxdPVwiZXhwYW5kQnV0dG9uQXJpYUxhYmVsXCJcblx0XHRcdFttb2RlbF09XCJtb2RlbFwiXG5cdFx0XHRbc2l6ZV09XCJzaXplXCJcblx0XHRcdFtuZ1N0eWxlXT1cInsnb3ZlcmZsb3cteSc6ICdzY3JvbGwnfVwiXG5cdFx0XHRbc2VsZWN0aW9uTGFiZWxDb2x1bW5dPVwic2VsZWN0aW9uTGFiZWxDb2x1bW5cIlxuXHRcdFx0W3Nob3dTZWxlY3Rpb25Db2x1bW5dPVwic2hvd1NlbGVjdGlvbkNvbHVtblwiXG5cdFx0XHRbc2tlbGV0b25dPVwic2tlbGV0b25cIlxuXHRcdFx0Km5nSWY9XCIhbm9EYXRhOyBlbHNlIG5vRGF0YVRlbXBsYXRlXCI+XG5cdFx0PC90Ym9keT5cblx0XHQ8bmctdGVtcGxhdGUgI25vRGF0YVRlbXBsYXRlPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L25nLXRlbXBsYXRlPlxuXHRcdDx0Zm9vdD5cblx0XHRcdDxuZy10ZW1wbGF0ZVxuXHRcdFx0XHRbbmdUZW1wbGF0ZU91dGxldF09XCJmb290ZXJUZW1wbGF0ZVwiPlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcdDx0ciAqbmdJZj1cInRoaXMubW9kZWwuaXNMb2FkaW5nXCI+XG5cdFx0XHRcdDx0ZCBjbGFzcz1cInRhYmxlX2xvYWRpbmctaW5kaWNhdG9yXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNkcy0tbG9hZGluZyBjZHMtLWxvYWRpbmctLXNtYWxsXCI+XG5cdFx0XHRcdFx0XHQ8c3ZnIGNsYXNzPVwiY2RzLS1sb2FkaW5nX19zdmdcIiB2aWV3Qm94PVwiLTc1IC03NSAxNTAgMTUwXCI+XG5cdFx0XHRcdFx0XHRcdDxjaXJjbGUgY2xhc3M9XCJjZHMtLWxvYWRpbmdfX3N0cm9rZVwiIGN4PVwiMFwiIGN5PVwiMFwiIHI9XCIzNy41XCIgLz5cblx0XHRcdFx0XHRcdDwvc3ZnPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L3RkPlxuXHRcdFx0PC90cj5cblx0XHRcdDx0ciAqbmdJZj1cInRoaXMubW9kZWwuaXNFbmRcIj5cblx0XHRcdFx0PHRkIGNsYXNzPVwidGFibGVfZW5kLWluZGljYXRvclwiPlxuXHRcdFx0XHRcdDxoNT57e2dldEVuZE9mRGF0YVRleHQoKSB8IGFzeW5jfX08L2g1PlxuXHRcdFx0XHRcdDxidXR0b24gKGNsaWNrKT1cInNjcm9sbFRvVG9wKCRldmVudClcIiBjbGFzcz1cImJ0bi0tc2Vjb25kYXJ5LXNtXCI+XG5cdFx0XHRcdFx0XHR7e2dldFNjcm9sbFRvcFRleHQoKSB8IGFzeW5jfX1cblx0XHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdFx0PC90ZD5cblx0XHRcdDwvdHI+XG5cdFx0PC90Zm9vdD5cblx0PC90YWJsZT5cblx0YCxcblx0c3R5bGVzOiBbYFxuXHRcdDpob3N0IHtcblx0XHRcdGRpc3BsYXk6IGJsb2NrO1xuXHRcdH1cblx0YF1cbn0pXG5leHBvcnQgY2xhc3MgVGFibGUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGEgc2tlbGV0b24gbW9kZWwgd2l0aCBhIHJvdyBhbmQgY29sdW1uIGNvdW50IHNwZWNpZmllZCBieSB0aGUgdXNlclxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKlxuXHQgKiBgYGB0eXBlc2NyaXB0XG5cdCAqIHRoaXMubW9kZWwgPSBUYWJsZS5za2VsZXRvbk1vZGVsKDUsIDUpO1xuXHQgKiBgYGBcblx0ICovXG5cdHN0YXRpYyBza2VsZXRvbk1vZGVsKHJvd0NvdW50OiBudW1iZXIsIGNvbHVtbkNvdW50OiBudW1iZXIpIHtcblx0XHRjb25zdCBtb2RlbCA9IG5ldyBUYWJsZU1vZGVsKCk7XG5cdFx0bGV0IGhlYWRlciA9IG5ldyBBcnJheTxUYWJsZUhlYWRlckl0ZW0+KCk7XG5cdFx0bGV0IGRhdGEgPSBuZXcgQXJyYXk8QXJyYXk8VGFibGVJdGVtPj4oKTtcblx0XHRsZXQgcm93ID0gbmV3IEFycmF5PFRhYmxlSXRlbT4oKTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uQ291bnQ7IGkrKykge1xuXHRcdFx0aGVhZGVyLnB1c2gobmV3IFRhYmxlSGVhZGVySXRlbSgpKTtcblx0XHRcdHJvdy5wdXNoKG5ldyBUYWJsZUl0ZW0oKSk7XG5cdFx0fVxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcm93Q291bnQgLSAxOyBpKyspIHtcblx0XHRcdGRhdGEucHVzaChyb3cpO1xuXHRcdH1cblxuXHRcdG1vZGVsLmhlYWRlciA9IGhlYWRlcjtcblx0XHRtb2RlbC5kYXRhID0gZGF0YTtcblx0XHRyZXR1cm4gbW9kZWw7XG5cdH1cblxuXHRzdGF0aWMgc2V0VGFiSW5kZXgoZWxlbWVudDogSFRNTEVsZW1lbnQsIGluZGV4OiAtMSB8IDApIHtcblx0XHRjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gZ2V0Rm9jdXNFbGVtZW50TGlzdChlbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdGlmIChlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkICYmIGVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiY2RzLS10YWJsZS1zb3J0XCIpICYmIGZvY3VzRWxlbWVudExpc3QubGVuZ3RoID4gMSkge1xuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdFsxXS50YWJJbmRleCA9IGluZGV4O1xuXHRcdH0gZWxzZSBpZiAoZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzBdLnRhYkluZGV4ID0gaW5kZXg7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW1lbnQudGFiSW5kZXggPSBpbmRleDtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgZm9jdXMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblx0XHRjb25zdCBmb2N1c0VsZW1lbnRMaXN0ID0gZ2V0Rm9jdXNFbGVtZW50TGlzdChlbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdGlmIChcblx0XHRcdChlbGVtZW50LmZpcnN0RWxlbWVudENoaWxkPy5jbGFzc0xpc3QuY29udGFpbnMoXCJjZHMtLXRhYmxlLXNvcnRcIikgJiYgZm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAxKSB8fFxuXHRcdFx0Zm9jdXNFbGVtZW50TGlzdC5sZW5ndGggPiAwXG5cdFx0KSB7XG5cdFx0XHRmb2N1c0VsZW1lbnRMaXN0WzBdLmZvY3VzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVsZW1lbnQuZm9jdXMoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogSWQgb2YgdGhlIHRhYmxlIGhlYWRlciB0aXRsZSBlbGVtZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhTGFiZWxsZWRieTogc3RyaW5nO1xuXHQvKipcblx0ICogSWQgb2YgdGhlIHRhYmxlIGhlYWRlciBkZXNjcmlwdGlvbiBlbGVtZW50XG5cdCAqL1xuXHRASW5wdXQoKSBhcmlhRGVzY3JpYmVkYnk6IHN0cmluZztcblxuXHQvKipcblx0ICogYFRhYmxlTW9kZWxgIHdpdGggZGF0YSB0aGUgdGFibGUgaXMgdG8gZGlzcGxheS5cblx0ICovXG5cdEBJbnB1dCgpXG5cdHNldCBtb2RlbChtOiBUYWJsZU1vZGVsKSB7XG5cdFx0aWYgKHRoaXMuX21vZGVsKSB7XG5cdFx0XHR0aGlzLnN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcblx0XHRcdC8vIE5lZWQgdG8gY3JlYXRlIGEgbmV3IHN1YnNjcmlwdGlvbiBpbnN0YW5jZSBoZXJlIGJlY2F1c2UgdW5zdWJzY3JpYmluZyBwcmV2ZW50cyBhbnkgbmV3IHN1YnNjcmlwdGlvbnNcblx0XHRcdC8vIGZyb20gYmVpbmcgYWRkZWQgZm9yIHNvbWUgcmVhc29uLiBXaGVuIGEgbmV3IG1vZGVsIGlzIHNldCwgbm9uZSBvZiB0aGUgc3Vic2NyaXB0aW9ucyB3b3VsZCBleGlzdC5cblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblx0XHR9XG5cblx0XHR0aGlzLl9tb2RlbCA9IG07XG5cblx0XHRjb25zdCByb3dzQ2hhbmdlID0gdGhpcy5fbW9kZWwucm93c1NlbGVjdGVkQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB0aGlzLnVwZGF0ZVNlbGVjdEFsbENoZWNrYm94KCkpO1xuXHRcdGNvbnN0IGRhdGFDaGFuZ2UgPSB0aGlzLl9tb2RlbC5kYXRhQ2hhbmdlLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5pc0RhdGFHcmlkKSB7XG5cdFx0XHRcdHRoaXMucmVzZXRUYWJJbmRleCgpO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy51cGRhdGVTZWxlY3RBbGxDaGVja2JveCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLmFkZChyb3dzQ2hhbmdlKTtcblx0XHR0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKGRhdGFDaGFuZ2UpO1xuXG5cdFx0aWYgKHRoaXMuaXNEYXRhR3JpZCkge1xuXHRcdFx0Y29uc3QgZXhwYW5kZWRDaGFuZ2UgPSB0aGlzLl9tb2RlbC5yb3dzRXhwYW5kZWRDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFx0Ly8gQWxsb3dzIHRoZSBleHBhbmRlZCByb3cgdG8gaGF2ZSBhIGZvY3VzIHN0YXRlIHdoZW4gaXQgZXhpc3RzIGluIHRoZSBET01cblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgZXhwYW5kZWRSb3dzID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5jZHMtLWV4cGFuZGFibGUtcm93Om5vdCguY2RzLS1wYXJlbnQtcm93KVwiKTtcblx0XHRcdFx0XHRBcnJheS5mcm9tPGFueT4oZXhwYW5kZWRSb3dzKS5mb3JFYWNoKHJvdyA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocm93LmZpcnN0RWxlbWVudENoaWxkLnRhYkluZGV4ID09PSB1bmRlZmluZWQgfHwgcm93LmZpcnN0RWxlbWVudENoaWxkLnRhYkluZGV4ICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRyb3cuZmlyc3RFbGVtZW50Q2hpbGQudGFiSW5kZXggPSAtMTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHRcdHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoZXhwYW5kZWRDaGFuZ2UpO1xuXHRcdH1cblx0fVxuXG5cdGdldCBtb2RlbCgpOiBUYWJsZU1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy5fbW9kZWw7XG5cdH1cblxuXHQvKipcblx0ICogU2l6ZSBvZiB0aGUgdGFibGUgcm93cy5cblx0ICovXG5cdEBJbnB1dCgpIHNpemU6IFRhYmxlUm93U2l6ZSA9IFwibWRcIjtcblx0LyoqXG5cdCAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyB0YWJsZS5cblx0ICovXG5cdEBJbnB1dCgpIHNrZWxldG9uID0gZmFsc2U7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIGRhdGEgZ3JpZCB3aXRoIGtleWJvYXJkIGludGVyYWN0aW9ucy5cblx0ICovXG5cdEBJbnB1dCgpIHNldCBpc0RhdGFHcmlkKHZhbHVlOiBib29sZWFuKSB7XG5cdFx0dGhpcy5faXNEYXRhR3JpZCA9IHZhbHVlO1xuXHRcdGlmICh0aGlzLmlzVmlld1JlYWR5KSB7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dGhpcy5lbmFibGVEYXRhR3JpZEludGVyYWN0aW9ucygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5kaXNhYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2V0dGluZyBzb3J0YWJsZSB0byBmYWxzZSB3aWxsIGRpc2FibGUgYWxsIGhlYWRlcnMgaW5jbHVkaW5nIGhlYWRlcnMgd2hpY2ggYXJlIHNvcnRhYmxlLiBJcyBpc1xuXHQgKiBwb3NzaWJsZSB0byBzZXQgdGhlIHNvcnRhYmxlIHN0YXRlIG9uIHRoZSBoZWFkZXIgaXRlbSB0byBkaXNhYmxlL2VuYWJsZSBzb3J0aW5nIGZvciBvbmx5IHNvbWUgaGVhZGVycy5cblx0ICovXG5cdEBJbnB1dCgpIHNvcnRhYmxlID0gdHJ1ZTtcblxuXHRASW5wdXQoKSBub0JvcmRlciA9IHRydWU7XG5cblx0Z2V0IGlzRGF0YUdyaWQoKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIHRoaXMuX2lzRGF0YUdyaWQ7XG5cdH1cblxuXHQvKipcblx0ICogQ29udHJvbHMgd2hldGhlciB0byBzaG93IHRoZSBzZWxlY3Rpb24gY2hlY2tib3hlcyBjb2x1bW4gb3Igbm90LlxuXHQgKi9cblx0QElucHV0KCkgc2hvd1NlbGVjdGlvbkNvbHVtbiA9IHRydWU7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIHdoZXRoZXIgdG8gZW5hYmxlIG11bHRpcGxlIG9yIHNpbmdsZSByb3cgc2VsZWN0aW9uLlxuXHQgKi9cblx0QElucHV0KCkgZW5hYmxlU2luZ2xlU2VsZWN0ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIERpc3RhbmNlIChpbiBweCkgZnJvbSB0aGUgYm90dG9tIHRoYXQgdmlldyBoYXMgdG8gcmVhY2ggYmVmb3JlXG5cdCAqIGBzY3JvbGxMb2FkYCBldmVudCBpcyBlbWl0dGVkLlxuXHQgKi9cblx0QElucHV0KCkgc2Nyb2xsTG9hZERpc3RhbmNlID0gMDtcblxuXHQvKipcblx0ICogQHRvZG8gLSBFbmFibGUgY29sdW1uIHJlc2l6ZSB3aGVuIENhcmJvbiBvZmZpY2lhbGx5IHN1cHBvcnRzIGZlYXR1cmVcblx0ICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdXNlcnMgdG8gcmVzaXplIGNvbHVtbnMuXG5cdCAqXG5cdCAqIFdvcmtzIGZvciBjb2x1bW5zIHdpdGggd2lkdGggc2V0IGluIHBpeGVscy5cblx0ICpcblx0ICovXG5cdC8vIEBJbnB1dCgpIGNvbHVtbnNSZXNpemFibGUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogQHRvZG8gLSBFbmFibGUgY29sdW1ucyBkcmFnICYgZHJvcCB3aGVuIENhcmJvbiBvZmZpY2lhbGx5IHN1cHBvcnRzIGZlYXR1cmVcblx0ICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdXNlcnMgdG8gZHJhZyBhbmQgZHJvcCBjb2x1bW5zLlxuXHQgKlxuXHQgKiBDaGFuZ2luZyB0aGUgY29sdW1uIG9yZGVyIGluIHRhYmxlIGNoYW5nZXMgdGFibGUgbW9kZWwuIEJlIGF3YXJlIG9mIGl0IHdoZW4geW91IGFkZCBhZGRpdGlvbmFsIGRhdGFcblx0ICogdG8gdGhlIG1vZGVsLlxuXHQgKlxuXHQgKi9cblx0Ly8gQElucHV0KCkgY29sdW1uc0RyYWdnYWJsZSA9IGZhbHNlO1xuXG5cdEBJbnB1dCgpXG5cdHNldCBleHBhbmRCdXR0b25BcmlhTGFiZWwodmFsdWU6IHN0cmluZyB8IE9ic2VydmFibGU8c3RyaW5nPikge1xuXHRcdHRoaXMuX2V4cGFuZEJ1dHRvbkFyaWFMYWJlbC5vdmVycmlkZSh2YWx1ZSk7XG5cdH1cblx0Z2V0IGV4cGFuZEJ1dHRvbkFyaWFMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fZXhwYW5kQnV0dG9uQXJpYUxhYmVsLnZhbHVlO1xuXHR9XG5cdEBJbnB1dCgpXG5cdHNldCBzb3J0RGVzY2VuZGluZ0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9zb3J0RGVzY2VuZGluZ0xhYmVsLm92ZXJyaWRlKHZhbHVlKTtcblx0fVxuXHRnZXQgc29ydERlc2NlbmRpbmdMYWJlbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5fc29ydERlc2NlbmRpbmdMYWJlbC52YWx1ZTtcblx0fVxuXHRASW5wdXQoKVxuXHRzZXQgc29ydEFzY2VuZGluZ0xhYmVsKHZhbHVlOiBzdHJpbmcgfCBPYnNlcnZhYmxlPHN0cmluZz4pIHtcblx0XHR0aGlzLl9zb3J0QXNjZW5kaW5nTGFiZWwub3ZlcnJpZGUodmFsdWUpO1xuXHR9XG5cdGdldCBzb3J0QXNjZW5kaW5nTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3NvcnRBc2NlbmRpbmdMYWJlbC52YWx1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeHBlY3RzIGFuIG9iamVjdCB0aGF0IGNvbnRhaW5zIHNvbWUgb3IgYWxsIG9mOlxuXHQgKiBgYGBcblx0ICoge1xuXHQgKlx0XHRcIkZJTFRFUlwiOiBcIkZpbHRlclwiLFxuXHQgKlx0XHRcIkVORF9PRl9EQVRBXCI6IFwiWW91J3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB5b3VyIGNvbnRlbnRcIixcblx0ICpcdFx0XCJTQ1JPTExfVE9QXCI6IFwiU2Nyb2xsIHRvIHRvcFwiLFxuXHQgKlx0XHRcIkNIRUNLQk9YX0hFQURFUlwiOiBcIlNlbGVjdCBhbGwgcm93c1wiLFxuXHQgKlx0XHRcIkNIRUNLQk9YX1JPV1wiOiBcIlNlbGVjdCByb3dcIlxuXHQgKiB9XG5cdCAqIGBgYFxuXHQgKi9cblx0QElucHV0KClcblx0c2V0IHRyYW5zbGF0aW9ucyh2YWx1ZSkge1xuXHRcdGNvbnN0IHZhbHVlV2l0aERlZmF1bHRzID0gbWVyZ2UodGhpcy5pMThuLmdldE11bHRpcGxlKFwiVEFCTEVcIiksIHZhbHVlKTtcblx0XHR0aGlzLl9maWx0ZXJUaXRsZS5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5GSUxURVIpO1xuXHRcdHRoaXMuX2VuZE9mRGF0YVRleHQub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuRU5EX09GX0RBVEEpO1xuXHRcdHRoaXMuX3Njcm9sbFRvcFRleHQub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuU0NST0xMX1RPUCk7XG5cdFx0dGhpcy5fY2hlY2tib3hIZWFkZXJMYWJlbC5vdmVycmlkZSh2YWx1ZVdpdGhEZWZhdWx0cy5DSEVDS0JPWF9IRUFERVIpO1xuXHRcdHRoaXMuX2NoZWNrYm94Um93TGFiZWwub3ZlcnJpZGUodmFsdWVXaXRoRGVmYXVsdHMuQ0hFQ0tCT1hfUk9XKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTZXQgdG8gYGZhbHNlYCB0byByZW1vdmUgdGFibGUgcm93cyAoemVicmEpIHN0cmlwZXMuXG5cdCAqL1xuXHRASW5wdXQoKSBzdHJpcGVkID0gdHJ1ZTtcblxuXHQvKipcblx0ICogQWxsb3dzIHRhYmxlIGNvbnRlbnQgdG8gc2Nyb2xsIGhvcml6b250YWxseVxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1kYXRhLXRhYmxlLWNvbnRlbnRcIikgdGFibGVDb250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCB0byBzdGljayB0aGUgaGVhZGVyIHRvIHRoZSB0b3Agb2YgdGhlIHRhYmxlXG5cdCAqL1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWRhdGEtdGFibGVfaW5uZXItY29udGFpbmVyXCIpIEBJbnB1dCgpIHN0aWNreUhlYWRlciA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBTZXQgZm9vdGVyIHRlbXBsYXRlIHRvIGN1c3RvbWl6ZSB3aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUgdGZvb3Qgc2VjdGlvbiBvZiB0aGUgdGFibGVcblx0ICovXG5cdEBJbnB1dCgpIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG5cdC8qKlxuXHQgKiBVc2VkIHRvIHBvcHVsYXRlIHRoZSByb3cgc2VsZWN0aW9uIGNoZWNrYm94IGxhYmVsIHdpdGggYSB1c2VmdWwgdmFsdWUgaWYgc2V0LlxuXHQgKlxuXHQgKiBFeGFtcGxlOlxuXHQgKiBgYGBcblx0ICogPGNkcy10YWJsZSBbc2VsZWN0aW9uTGFiZWxDb2x1bW5dPVwiMFwiPjwvY2RzLXRhYmxlPlxuXHQgKiA8IS0tIHJlc3VsdHMgaW4gYXJpYS1sYWJlbD1cIlNlbGVjdCBmaXJzdCBjb2x1bW4gdmFsdWVcIlxuXHQgKiAod2hlcmUgXCJmaXJzdCBjb2x1bW4gdmFsdWVcIiBpcyB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IGNvbHVtbiBpbiB0aGUgcm93IC0tPlxuXHQgKiBgYGBcblx0ICovXG5cdEBJbnB1dCgpIHNlbGVjdGlvbkxhYmVsQ29sdW1uOiBudW1iZXI7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGFuIGluZGV4IG9mIHRoZSBjb2x1bW4gdGhhdCB3YW50cyB0byBiZSBzb3J0ZWQuXG5cdCAqXG5cdCAqIElmIG5vIG9ic2VydmVycyBhcmUgcHJvdmlkZWQgKGRlZmF1bHQpLCB0YWJsZSB3aWxsIGF0dGVtcHQgdG8gZG8gYSBzaW1wbGUgc29ydCBvZiB0aGUgZGF0YSBsb2FkZWRcblx0ICogaW50byB0aGUgbW9kZWwuXG5cdCAqXG5cdCAqIElmIGFuIG9ic2VydmVyIGlzIHByb3ZpZGVkLCB0YWJsZSB3aWxsIG5vdCBhdHRlbXB0IGFueSBzb3J0aW5nIG9mIGl0cyBvd24gYW5kIGl0IGlzIHVwIHRvIHRoZSBvYnNlcnZlclxuXHQgKiB0byBzb3J0IHRoZSB0YWJsZS4gVGhpcyBpcyB3aGF0IHlvdSB0eXBpY2FsbHkgd2FudCBpZiB5b3UncmUgdXNpbmcgYSBiYWNrZW5kIHF1ZXJ5IHRvIGdldCB0aGUgc29ydGVkXG5cdCAqIGRhdGEgb3Igd2FudCB0byBzb3J0IGRhdGEgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLlxuXHQgKlxuXHQgKiBVc2FnZTpcblx0ICpcblx0ICogYGBgdHlwZXNjcmlwdFxuXHQgKiBAQ29tcG9uZW50KHtcblx0ICogXHRzZWxlY3RvcjogXCJhcHAtdGFibGVcIixcblx0ICogXHR0ZW1wbGF0ZTogYFxuXHQgKiBcdFx0PGNkcy10YWJsZVxuXHQgKiBcdFx0XHRbbW9kZWxdPVwibW9kZWxcIlxuXHQgKiBcdFx0XHQoc29ydCk9XCJzaW1wbGVTb3J0KCRldmVudClcIj5cblx0ICogXHRcdFx0Tm8gZGF0YS5cblx0ICogXHRcdDwvY2RzLXRhYmxlPlxuXHQgKiBcdGBcblx0ICogfSlcblx0ICogZXhwb3J0IGNsYXNzIFRhYmxlQXBwIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuXHQgKiBcdEBJbnB1dCgpIG1vZGVsID0gbmV3IFRhYmxlTW9kZWwoKTtcblx0ICpcblx0ICogXHRuZ09uSW5pdCgpIHtcblx0ICogXHRcdHRoaXMubW9kZWwuaGVhZGVyID0gW1xuXHQgKiBcdFx0XHRuZXcgVGFibGVIZWFkZXJJdGVtKHsgZGF0YTogXCJOYW1lXCIgfSksXG5cdCAqIFx0XHRcdG5ldyBUYWJsZUhlYWRlckl0ZW0oeyBkYXRhOiBcImh3ZXJcIiB9KVxuXHQgKiBcdFx0XTtcblx0ICpcblx0ICogXHRcdHRoaXMubW9kZWwuZGF0YSA9IFtcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgMVwiIH0pLCBuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJxd2VyXCIgfSldLFxuXHQgKiBcdFx0XHRbbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwiTmFtZSAzXCIgfSksIG5ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcInp3ZXJcIiB9KV0sXG5cdCAqIFx0XHRcdFtuZXcgVGFibGVJdGVtKHsgZGF0YTogXCJOYW1lIDJcIiB9KSwgbmV3IFRhYmxlSXRlbSh7IGRhdGE6IFwic3dlclwiIH0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNFwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNVwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXSxcblx0ICogXHRcdFx0W25ldyBUYWJsZUl0ZW0oeyBkYXRhOiBcIk5hbWUgNlwiIH0pLCBuZXcgVGFibGVJdGVtKHtkYXRhOiBcInR3ZXJcIn0pXVxuXHQgKiBcdFx0XTtcblx0ICogXHR9XG5cdCAqXG5cdCAqIFx0c2ltcGxlU29ydChpbmRleDogbnVtYmVyKSB7XG5cdCAqIFx0XHQvLyB0aGlzIGZ1bmN0aW9uIGRvZXMgYSBzaW1wbGUgc29ydCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB0YWJsZSBhbmQgaWYgdGhhdCdzXG5cdCAqIFx0XHQvLyBhbGwgeW91IHdhbnQsIHlvdSBkb24ndCBuZWVkIHRvIGRvIHRoaXMuXG5cdCAqXG5cdCAqIFx0XHQvLyBoZXJlIHlvdSBjYW4gcXVlcnkgeW91ciBiYWNrZW5kIGFuZCB1cGRhdGUgdGhlIG1vZGVsLmRhdGEgYmFzZWQgb24gdGhlIHJlc3VsdFxuXHQgKiBcdFx0aWYgKHRoaXMubW9kZWwuaGVhZGVyW2luZGV4XS5zb3J0ZWQpIHtcblx0ICogXHRcdFx0Ly8gaWYgYWxyZWFkeSBzb3J0ZWQgZmxpcCBzb3J0aW5nIGRpcmVjdGlvblxuXHQgKiBcdFx0XHR0aGlzLm1vZGVsLmhlYWRlcltpbmRleF0uYXNjZW5kaW5nID0gdGhpcy5tb2RlbC5oZWFkZXJbaW5kZXhdLmRlc2NlbmRpbmc7XG5cdCAqIFx0XHR9XG5cdCAqIFx0XHR0aGlzLm1vZGVsLnNvcnQoaW5kZXgpO1xuXHQgKiBcdH1cblx0ICogfVxuXHQgKiBgYGBcblx0ICovXG5cdEBPdXRwdXQoKSBzb3J0ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGFsbCByb3dzIGFyZSBzZWxlY3RlZC5cblx0ICpcblx0ICogQHBhcmFtIG1vZGVsXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0QWxsID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGFsbCByb3dzIGFyZSBkZXNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gbW9kZWxcblx0ICovXG5cdEBPdXRwdXQoKSBkZXNlbGVjdEFsbCA9IG5ldyBFdmVudEVtaXR0ZXI8T2JqZWN0PigpO1xuXG5cdC8qKlxuXHQgKiBFbWl0cyBpZiBhIHNpbmdsZSByb3cgaXMgc2VsZWN0ZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSAoe21vZGVsOiB0aGlzLm1vZGVsLCBzZWxlY3RlZFJvd0luZGV4OiBpbmRleH0pXG5cdCAqL1xuXHRAT3V0cHV0KCkgc2VsZWN0Um93ID0gbmV3IEV2ZW50RW1pdHRlcjxPYmplY3Q+KCk7XG5cblx0LyoqXG5cdCAqIEVtaXRzIGlmIGEgc2luZ2xlIHJvdyBpcyBkZXNlbGVjdGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0gKHttb2RlbDogdGhpcy5tb2RlbCwgZGVzZWxlY3RlZFJvd0luZGV4OiBpbmRleH0pXG5cdCAqL1xuXHRAT3V0cHV0KCkgZGVzZWxlY3RSb3cgPSBuZXcgRXZlbnRFbWl0dGVyPE9iamVjdD4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgaWYgYSByb3cgaXRlbSBleGNsdWRpbmcgZXhwYW5kQnV0dG9ucywgY2hlY2tib3hlcywgb3IgcmFkaW9zIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRAT3V0cHV0KCkgcm93Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuXHQvKipcblx0ICogRW1pdHMgd2hlbiB0YWJsZSByZXF1aXJlcyBtb3JlIGRhdGEgdG8gYmUgbG9hZGVkLlxuXHQgKi9cblx0QE91dHB1dCgpIHNjcm9sbExvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPFRhYmxlTW9kZWw+KCk7XG5cblx0LyoqXG5cdCAqIENvbnRyb2xzIGlmIGFsbCBjaGVja2JveGVzIGFyZSB2aWV3ZWQgYXMgc2VsZWN0ZWQuXG5cdCAqL1xuXHRzZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBDb250cm9scyB0aGUgaW5kZXRlcm1pbmF0ZSBzdGF0ZSBvZiB0aGUgaGVhZGVyIGNoZWNrYm94LlxuXHQgKi9cblx0c2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSBmYWxzZTtcblxuXHRnZXQgbm9EYXRhKCkge1xuXHRcdHJldHVybiAhdGhpcy5tb2RlbC5kYXRhIHx8XG5cdFx0XHR0aGlzLm1vZGVsLmRhdGEubGVuZ3RoID09PSAwIHx8XG5cdFx0XHR0aGlzLm1vZGVsLmRhdGEubGVuZ3RoID09PSAxICYmIHRoaXMubW9kZWwuZGF0YVswXS5sZW5ndGggPT09IDA7XG5cdH1cblxuXHRwdWJsaWMgaXNDb2x1bW5EcmFnZ2luZyA9IGZhbHNlO1xuXHRwdWJsaWMgY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSAtMTtcblx0cHVibGljIGNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cblx0cHJvdGVjdGVkIF9tb2RlbDogVGFibGVNb2RlbDtcblx0cHJvdGVjdGVkIF9pc0RhdGFHcmlkID0gZmFsc2U7XG5cdC8vIGZsYWcgdG8gcHJldmVudCBnZXR0ZXJzL3NldHRlcnMgZnJvbSBxdWVyeWluZyB0aGUgdmlldyBiZWZvcmUgaXQncyBmdWxseSBpbnN0YW50aWF0ZWRcblx0cHJvdGVjdGVkIGlzVmlld1JlYWR5ID0gZmFsc2U7XG5cblx0cHJvdGVjdGVkIHN1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cdHByb3RlY3RlZCBwb3NpdGlvblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG5cdHByb3RlY3RlZCBpbnRlcmFjdGlvbk1vZGVsOiBEYXRhR3JpZEludGVyYWN0aW9uTW9kZWw7XG5cdHByb3RlY3RlZCBpbnRlcmFjdGlvblBvc2l0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblx0cHJvdGVjdGVkIF9leHBhbmRCdXR0b25BcmlhTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5FWFBBTkRfQlVUVE9OXCIpO1xuXHRwcm90ZWN0ZWQgX3NvcnREZXNjZW5kaW5nTGFiZWwgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5TT1JUX0RFU0NFTkRJTkdcIik7XG5cdHByb3RlY3RlZCBfc29ydEFzY2VuZGluZ0xhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuU09SVF9BU0NFTkRJTkdcIik7XG5cdHByb3RlY3RlZCBfY2hlY2tib3hIZWFkZXJMYWJlbCA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkNIRUNLQk9YX0hFQURFUlwiKTtcblx0cHJvdGVjdGVkIF9jaGVja2JveFJvd0xhYmVsID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuQ0hFQ0tCT1hfUk9XXCIpO1xuXHRwcm90ZWN0ZWQgX2VuZE9mRGF0YVRleHQgPSB0aGlzLmkxOG4uZ2V0T3ZlcnJpZGFibGUoXCJUQUJMRS5FTkRfT0ZfREFUQVwiKTtcblx0cHJvdGVjdGVkIF9zY3JvbGxUb3BUZXh0ID0gdGhpcy5pMThuLmdldE92ZXJyaWRhYmxlKFwiVEFCTEUuU0NST0xMX1RPUFwiKTtcblx0cHJvdGVjdGVkIF9maWx0ZXJUaXRsZSA9IHRoaXMuaTE4bi5nZXRPdmVycmlkYWJsZShcIlRBQkxFLkZJTFRFUlwiKTtcblxuXHRwcm90ZWN0ZWQgY29sdW1uUmVzaXplV2lkdGg6IG51bWJlcjtcblx0cHJvdGVjdGVkIGNvbHVtblJlc2l6ZU1vdXNlWDogbnVtYmVyO1xuXHRwcm90ZWN0ZWQgbW91c2VNb3ZlU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cdHByb3RlY3RlZCBtb3VzZVVwU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVGFibGUuXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcblx0XHRwcm90ZWN0ZWQgYXBwbGljYXRpb25SZWY6IEFwcGxpY2F0aW9uUmVmLFxuXHRcdHByb3RlY3RlZCBpMThuOiBJMThuXG5cdCkgeyB9XG5cblx0bmdPbkluaXQoKSB7XG5cdFx0Ly8gTWFudWFsbHkgdHJpZ2dlciBjaGVjayB0byBzZWUgaWYgYWxsIGNoZWNrYm94ZXMgYXJlIHNlbGVjdGVkXG5cdFx0Ly8gVGhpcyBpcyBzaW5jZSBzdWJzY3JpcHRpb24gaXMgbWFkZSBBRlRFUiBjaGVja2JveGVzIGFyZSBzZWxlY3RlZFxuXHRcdHRoaXMudXBkYXRlU2VsZWN0QWxsQ2hlY2tib3goKTtcblx0fVxuXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpIHtcblx0XHR0aGlzLmlzVmlld1JlYWR5ID0gdHJ1ZTtcblx0XHRpZiAodGhpcy5pc0RhdGFHcmlkKSB7XG5cdFx0XHR0aGlzLmVuYWJsZURhdGFHcmlkSW50ZXJhY3Rpb25zKCk7XG5cdFx0fVxuXHR9XG5cblx0bmdPbkRlc3Ryb3koKSB7XG5cdFx0dGhpcy5zdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG5cdFx0aWYgKHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24pIHtcblx0XHRcdHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR9XG5cdH1cblxuXHRlbmFibGVEYXRhR3JpZEludGVyYWN0aW9ucygpIHtcblx0XHQvLyBpZiB3ZSBoYXZlIGFuIGBpbnRlcmFjdGlvTW9kZWxgIHdlJ3ZlIGFscmVhZHkgZW5hYmxlZCBkYXRhZ3JpZFxuXHRcdGlmICh0aGlzLmludGVyYWN0aW9uTW9kZWwpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3QgdGFibGUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFwidGFibGVcIikgYXMgSFRNTFRhYmxlRWxlbWVudDtcblx0XHRjb25zdCB0YWJsZUFkYXB0ZXIgPSBuZXcgVGFibGVEb21BZGFwdGVyKHRhYmxlKTtcblx0XHRjb25zdCBrZXlkb3duRXZlbnRTdHJlYW0gPSBmcm9tRXZlbnQ8S2V5Ym9hcmRFdmVudD4odGFibGUsIFwia2V5ZG93blwiKTtcblx0XHRjb25zdCBjbGlja0V2ZW50U3RyZWFtID0gZnJvbUV2ZW50PE1vdXNlRXZlbnQ+KHRhYmxlLCBcImNsaWNrXCIpO1xuXHRcdHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCA9IG5ldyBEYXRhR3JpZEludGVyYWN0aW9uTW9kZWwoa2V5ZG93bkV2ZW50U3RyZWFtLCBjbGlja0V2ZW50U3RyZWFtLCB0YWJsZUFkYXB0ZXIpO1xuXHRcdHRoaXMucG9zaXRpb25TdWJzY3JpcHRpb24gPSB0aGlzLmludGVyYWN0aW9uTW9kZWwucG9zaXRpb24uc3Vic2NyaWJlKGV2ZW50ID0+IHtcblx0XHRcdGNvbnN0IFtjdXJyZW50Um93LCBjdXJyZW50Q29sdW1uXSA9IGV2ZW50LmN1cnJlbnQ7XG5cdFx0XHRjb25zdCBbcHJldmlvdXNSb3csIHByZXZpb3VzQ29sdW1uXSA9IGV2ZW50LnByZXZpb3VzO1xuXG5cdFx0XHRjb25zdCBjdXJyZW50RWxlbWVudCA9IHRhYmxlQWRhcHRlci5nZXRDZWxsKGN1cnJlbnRSb3csIGN1cnJlbnRDb2x1bW4pO1xuXHRcdFx0VGFibGUuc2V0VGFiSW5kZXgoY3VycmVudEVsZW1lbnQsIDApO1xuXG5cdFx0XHQvLyBpZiB0aGUgbW9kZWwgaGFzIGp1c3QgaW5pdGlhbGl6ZWQgZG9uJ3QgZm9jdXMgb3IgcmVzZXQgYW55dGhpbmdcblx0XHRcdGlmIChwcmV2aW91c1JvdyA9PT0gLTEgfHwgcHJldmlvdXNDb2x1bW4gPT09IC0xKSB7IHJldHVybjsgfVxuXHRcdFx0Ly8gTWFrZSB0aGUgcHJldmlvdXMgY2VsbCB1bmZvY3VzYWJsZSAoaWYgaXQncyBub3QgdGhlIGN1cnJlbnQpXG5cdFx0XHRpZiAocHJldmlvdXNSb3cgIT09IGN1cnJlbnRSb3cgfHwgcHJldmlvdXNDb2x1bW4gIT09IGN1cnJlbnRDb2x1bW4pIHtcblx0XHRcdFx0Y29uc3QgcHJldmlvdXNFbGVtZW50ID0gdGFibGVBZGFwdGVyLmdldENlbGwocHJldmlvdXNSb3csIHByZXZpb3VzQ29sdW1uKTtcblx0XHRcdFx0VGFibGUuc2V0VGFiSW5kZXgocHJldmlvdXNFbGVtZW50LCAtMSk7XG5cdFx0XHR9XG5cdFx0XHRUYWJsZS5mb2N1cyhjdXJyZW50RWxlbWVudCk7XG5cdFx0fSk7XG5cdFx0Ly8gY2FsbCB0aGlzIGFmdGVyIGFzc2lnbmluZyBgdGhpcy5pbnRlcmFjdGlvbk1vZGVsYCBzaW5jZSBpdCBkZXBlbmRzIG9uIGl0XG5cdFx0dGhpcy5yZXNldFRhYkluZGV4KCk7XG5cdH1cblxuXHRkaXNhYmxlRGF0YUdyaWRJbnRlcmFjdGlvbnMoKSB7XG5cdFx0Ly8gdW5zdWJzY3JpYmUgZmlyc3Qgc28gd2UgZG9uJ3QgY2F1c2UgdGhlIGZvY3VzIHRvIGZseSBhcm91bmRcblx0XHRpZiAodGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbikge1xuXHRcdFx0dGhpcy5wb3NpdGlvblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuXHRcdH1cblx0XHQvLyB1bmRvIHRhYiBpbmRleGluZyAoYWxzbyByZXNldHMgdGhlIG1vZGVsKVxuXHRcdHRoaXMucmVzZXRUYWJJbmRleCgwKTtcblx0XHQvLyBudWxsIG91dCB0aGUgbW9kZWwgcmVmXG5cdFx0dGhpcy5pbnRlcmFjdGlvbk1vZGVsID0gbnVsbDtcblx0fVxuXG5cdG9uU2VsZWN0QWxsKCkge1xuXHRcdHRoaXMubW9kZWwuc2VsZWN0QWxsKHRydWUpO1xuXHRcdHRoaXMuc2VsZWN0QWxsLmVtaXQodGhpcy5tb2RlbCk7XG5cdH1cblxuXHRvbkRlc2VsZWN0QWxsKCkge1xuXHRcdHRoaXMubW9kZWwuc2VsZWN0QWxsKGZhbHNlKTtcblx0XHR0aGlzLmRlc2VsZWN0QWxsLmVtaXQodGhpcy5tb2RlbCk7XG5cdH1cblxuXHRvblNlbGVjdFJvdyhldmVudCkge1xuXHRcdC8vIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSBzZWxlY3RlZFJvd0luZGV4IHByb3BlcnR5XG5cdFx0aWYgKE9iamVjdC5rZXlzKGV2ZW50KS5pbmNsdWRlcyhcInNlbGVjdGVkUm93SW5kZXhcIikpIHtcblx0XHRcdGlmICh0aGlzLmVuYWJsZVNpbmdsZVNlbGVjdCkge1xuXHRcdFx0XHR0aGlzLm1vZGVsLnNlbGVjdEFsbChmYWxzZSk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLm1vZGVsLnNlbGVjdFJvdyhldmVudC5zZWxlY3RlZFJvd0luZGV4LCB0cnVlKTtcblx0XHRcdHRoaXMuc2VsZWN0Um93LmVtaXQoZXZlbnQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1vZGVsLnNlbGVjdFJvdyhldmVudC5kZXNlbGVjdGVkUm93SW5kZXgsIGZhbHNlKTtcblx0XHRcdHRoaXMuZGVzZWxlY3RSb3cuZW1pdChldmVudCk7XG5cdFx0fVxuXHR9XG5cblx0b25Sb3dDbGljayhpbmRleDogbnVtYmVyKSB7XG5cdFx0dGhpcy5yb3dDbGljay5lbWl0KGluZGV4KTtcblx0fVxuXG5cdHVwZGF0ZVNlbGVjdEFsbENoZWNrYm94KCkge1xuXHRcdGNvbnN0IHNlbGVjdGVkUm93c0NvdW50ID0gdGhpcy5tb2RlbC5zZWxlY3RlZFJvd3NDb3VudCgpO1xuXG5cdFx0aWYgKHNlbGVjdGVkUm93c0NvdW50IDw9IDApIHtcblx0XHRcdC8vIHJlc2V0IHNlbGVjdCBhbGwgY2hlY2tib3ggaWYgbm90aGluZyBzZWxlY3RlZFxuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveCA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zZWxlY3RBbGxDaGVja2JveFNvbWVTZWxlY3RlZCA9IGZhbHNlO1xuXHRcdH0gZWxzZSBpZiAoc2VsZWN0ZWRSb3dzQ291bnQgPCB0aGlzLm1vZGVsLmRhdGEubGVuZ3RoKSB7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94ID0gdHJ1ZTtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSB0cnVlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNlbGVjdEFsbENoZWNrYm94ID0gdHJ1ZTtcblx0XHRcdHRoaXMuc2VsZWN0QWxsQ2hlY2tib3hTb21lU2VsZWN0ZWQgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRyZXNldFRhYkluZGV4KG5ld1RhYkluZGV4ID0gLTEpIHtcblx0XHQvLyBlbnN1cmUgdGhlIHZpZXcgaXMgcmVhZHkgZm9yIHRoZSByZXNldCBiZWZvcmUgd2UgcHJlZm9ybSB0aGUgYWN0dWFsIHJlc2V0XG5cdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHQvLyByZXNldCBhbGwgdGhlIHRhYkluZGV4ZXMgd2UgY2FuIGZpbmRcblx0XHRcdGNvbnN0IGZvY3VzRWxlbWVudExpc3QgPSBnZXRGb2N1c0VsZW1lbnRMaXN0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB0YWJiYWJsZVNlbGVjdG9ySWdub3JlVGFiSW5kZXgpO1xuXHRcdFx0aWYgKGZvY3VzRWxlbWVudExpc3QpIHtcblx0XHRcdFx0Zm9jdXNFbGVtZW50TGlzdC5mb3JFYWNoKHRhYmJhYmxlID0+IHtcblx0XHRcdFx0XHR0YWJiYWJsZS50YWJJbmRleCA9IG5ld1RhYkluZGV4O1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdC8vIHJlc2V0IGludGVyYWN0aW9uIG1vZGVsIHBvc2l0aW9ucyBhbmQgdGFiSW5kZXhlc1xuXHRcdFx0aWYgKHRoaXMuaW50ZXJhY3Rpb25Nb2RlbCkge1xuXHRcdFx0XHR0aGlzLmludGVyYWN0aW9uTW9kZWwucmVzZXRUYWJJbmRleGVzKG5ld1RhYkluZGV4KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZVN0YXJ0KGV2ZW50LCBjb2x1bW4pIHtcblx0XHR0aGlzLmNvbHVtblJlc2l6ZVdpZHRoID0gcGFyc2VJbnQoY29sdW1uLnN0eWxlLndpZHRoLCAxMCk7XG5cdFx0dGhpcy5jb2x1bW5SZXNpemVNb3VzZVggPSBldmVudC5jbGllbnRYO1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cblx0XHR0aGlzLm1vdXNlTW92ZVN1YnNjcmlwdGlvbiA9IGZyb21FdmVudChkb2N1bWVudC5ib2R5LCBcIm1vdXNlbW92ZVwiKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuXHRcdFx0dGhpcy5jb2x1bW5SZXNpemVQcm9ncmVzcyhldmVudCwgY29sdW1uKTtcblx0XHR9KTtcblx0XHR0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24gPSBmcm9tRXZlbnQoZG9jdW1lbnQuYm9keSwgXCJtb3VzZXVwXCIpLnN1YnNjcmliZShldmVudCA9PiB7XG5cdFx0XHR0aGlzLmNvbHVtblJlc2l6ZUVuZChldmVudCwgY29sdW1uKTtcblx0XHR9KTtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZVByb2dyZXNzKGV2ZW50LCBjb2x1bW4pIHtcblx0XHRjb25zdCBtb3ZlID0gZXZlbnQuY2xpZW50WCAtIHRoaXMuY29sdW1uUmVzaXplTW91c2VYO1xuXHRcdGNvbHVtbi5zdHlsZS53aWR0aCA9IGAke3RoaXMuY29sdW1uUmVzaXplV2lkdGggKyBtb3ZlfXB4YDtcblx0fVxuXG5cdGNvbHVtblJlc2l6ZUVuZChldmVudCwgY29sdW1uKSB7XG5cdFx0dGhpcy5tb3VzZU1vdmVTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0XHR0aGlzLm1vdXNlVXBTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzY3JvbGxzIG9uIHRoZSBgPHRib2R5PmAgZWxlbWVudC5cblx0ICogRW1pdHMgdGhlIGBzY3JvbGxMb2FkYCBldmVudC5cblx0ICovXG5cdG9uU2Nyb2xsKGV2ZW50KSB7XG5cdFx0Y29uc3QgZGlzdGFuY2VGcm9tQm90dG9tID0gZXZlbnQudGFyZ2V0LnNjcm9sbEhlaWdodCAtIGV2ZW50LnRhcmdldC5jbGllbnRIZWlnaHQgLSBldmVudC50YXJnZXQuc2Nyb2xsVG9wO1xuXG5cdFx0aWYgKGRpc3RhbmNlRnJvbUJvdHRvbSA8PSB0aGlzLnNjcm9sbExvYWREaXN0YW5jZSkge1xuXHRcdFx0dGhpcy5zY3JvbGxMb2FkLmVtaXQodGhpcy5tb2RlbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubW9kZWwuaXNFbmQgPSBmYWxzZTtcblx0XHR9XG5cdH1cblxuXHRjb2x1bW5EcmFnU3RhcnQoZXZlbnQsIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5pc0NvbHVtbkRyYWdnaW5nID0gdHJ1ZTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gY29sdW1uSW5kZXg7XG5cdFx0ZXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoXCJjb2x1bW5JbmRleFwiLCBKU09OLnN0cmluZ2lmeShjb2x1bW5JbmRleCkpO1xuXHR9XG5cblx0Y29sdW1uRHJhZ0VuZChldmVudCwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmlzQ29sdW1uRHJhZ2dpbmcgPSBmYWxzZTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRIb3ZlckluZGV4ID0gLTE7XG5cdH1cblxuXHRjb2x1bW5EcmFnRW50ZXIoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gcG9zaXRpb247XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IGNvbHVtbkluZGV4O1xuXHR9XG5cblx0Y29sdW1uRHJhZ0xlYXZlKGV2ZW50LCBwb3NpdGlvbiwgY29sdW1uSW5kZXgpIHtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cdH1cblxuXHRjb2x1bW5EcmFnb3ZlcihldmVudCwgcG9zaXRpb24sIGNvbHVtbkluZGV4KSB7XG5cdFx0dGhpcy5jb2x1bW5EcmFnZ2VkSG92ZXJJbmRleCA9IGNvbHVtbkluZGV4O1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZFBvc2l0aW9uID0gcG9zaXRpb247XG5cblx0XHQvLyBuZWVkZWQgdG8gdGVsbCBicm93c2VyIHRvIGFsbG93IGRyb3BwaW5nXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0fVxuXG5cdGNvbHVtbkRyb3AoZXZlbnQsIHBvc2l0aW9uLCBjb2x1bW5JbmRleCkge1xuXHRcdHRoaXMuaXNDb2x1bW5EcmFnZ2luZyA9IGZhbHNlO1xuXHRcdHRoaXMuY29sdW1uRHJhZ2dlZEhvdmVySW5kZXggPSAtMTtcblx0XHR0aGlzLmNvbHVtbkRyYWdnZWRQb3NpdGlvbiA9IFwiXCI7XG5cblx0XHR0aGlzLm1vZGVsLm1vdmVDb2x1bW4oXG5cdFx0XHRwYXJzZUludChldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YShcImNvbHVtbkluZGV4XCIpLCAxMCksXG5cdFx0XHRjb2x1bW5JbmRleCArIChwb3NpdGlvbiA9PT0gXCJyaWdodFwiID8gMSA6IDApXG5cdFx0KTtcblx0fVxuXG5cdGRvU29ydChpbmRleDogbnVtYmVyKSB7XG5cdFx0aWYgKHRoaXMuc29ydC5vYnNlcnZlcnMubGVuZ3RoID09PSAwKSB7XG5cdFx0XHQvLyBubyBzb3J0IHByb3ZpZGVkIHNvIGRvIHRoZSBzaW1wbGUgc29ydFxuXHRcdFx0dGhpcy5tb2RlbC5jeWNsZVNvcnRTdGF0ZShpbmRleCk7XG5cdFx0XHR0aGlzLm1vZGVsLnNvcnQoaW5kZXgpO1xuXHRcdH1cblxuXHRcdHRoaXMuc29ydC5lbWl0KGluZGV4KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmlnZ2VyZWQgd2hlbiB0aGUgdXNlciBzY3JvbGxzIG9uIHRoZSBgPHRib2R5PmAgZWxlbWVudC5cblx0ICogRW1pdHMgdGhlIGBzY3JvbGxMb2FkYCBldmVudC5cblx0ICovXG5cdHNjcm9sbFRvVG9wKGV2ZW50KSB7XG5cdFx0ZXZlbnQudGFyZ2V0LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuY2hpbGRyZW5bMV0uc2Nyb2xsVG9wID0gMDtcblx0XHR0aGlzLm1vZGVsLmlzRW5kID0gZmFsc2U7XG5cdH1cblxuXHRnZXRTZWxlY3Rpb25MYWJlbFZhbHVlKHJvdzogVGFibGVJdGVtW10pIHtcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uTGFiZWxDb2x1bW4pIHtcblx0XHRcdHJldHVybiB7IHZhbHVlOiB0aGlzLmkxOG4uZ2V0KCkuVEFCTEUuUk9XIH07XG5cdFx0fVxuXHRcdHJldHVybiB7IHZhbHVlOiByb3dbdGhpcy5zZWxlY3Rpb25MYWJlbENvbHVtbl0uZGF0YSB9O1xuXHR9XG5cblx0Z2V0RXhwYW5kQnV0dG9uQXJpYUxhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9leHBhbmRCdXR0b25BcmlhTGFiZWwuc3ViamVjdDtcblx0fVxuXHRnZXRTb3J0RGVzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0RGVzY2VuZGluZ0xhYmVsLnN1YmplY3Q7XG5cdH1cblx0Z2V0U29ydEFzY2VuZGluZ0xhYmVsKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb3J0QXNjZW5kaW5nTGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldENoZWNrYm94SGVhZGVyTGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NoZWNrYm94SGVhZGVyTGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldENoZWNrYm94Um93TGFiZWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2NoZWNrYm94Um93TGFiZWwuc3ViamVjdDtcblx0fVxuXG5cdGdldEVuZE9mRGF0YVRleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX2VuZE9mRGF0YVRleHQuc3ViamVjdDtcblx0fVxuXG5cdGdldFNjcm9sbFRvcFRleHQoKSB7XG5cdFx0cmV0dXJuIHRoaXMuX3Njcm9sbFRvcFRleHQuc3ViamVjdDtcblx0fVxuXG5cdGdldEZpbHRlclRpdGxlKCkge1xuXHRcdHJldHVybiB0aGlzLl9maWx0ZXJUaXRsZS5zdWJqZWN0O1xuXHR9XG59XG4iXX0=
|
|
@@ -3641,6 +3641,11 @@ class Table {
|
|
|
3641
3641
|
this.model.data.length === 0 ||
|
|
3642
3642
|
this.model.data.length === 1 && this.model.data[0].length === 0;
|
|
3643
3643
|
}
|
|
3644
|
+
ngOnInit() {
|
|
3645
|
+
// Manually trigger check to see if all checkboxes are selected
|
|
3646
|
+
// This is since subscription is made AFTER checkboxes are selected
|
|
3647
|
+
this.updateSelectAllCheckbox();
|
|
3648
|
+
}
|
|
3644
3649
|
ngAfterViewInit() {
|
|
3645
3650
|
this.isViewReady = true;
|
|
3646
3651
|
if (this.isDataGrid) {
|