@hotstaq/admin-panel 0.3.14 → 0.3.16
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/build/components/admin-edit.d.ts.map +1 -1
- package/build/components/admin-edit.js +18 -0
- package/build/components/admin-edit.js.map +1 -1
- package/build/components/admin-table.d.ts.map +1 -1
- package/build/components/admin-table.js +2 -0
- package/build/components/admin-table.js.map +1 -1
- package/build-web/AdminPanelComponents.js +2 -2
- package/package.json +1 -1
- package/src/components/admin-edit.ts +27 -0
- package/src/components/admin-table.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-edit.d.ts","sourceRoot":"","sources":["../../src/components/admin-edit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAO,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAEjF,OAAO,SAAS,MAAM,WAAW,CAAC;AAIlC,qBAAa,SAAU,SAAQ,YAAY;IAE1C;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC;IACvB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC;IAChC;;;OAGG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF;;OAEG;IACH,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACtE;;OAEG;IACH,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvE;;OAEG;IACH,QAAQ,EAAE,CAAC,aAAa,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;gBAEnC,IAAI,EAAE,YAAY,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM;IA2BtD;;OAEG;IACG,gBAAgB,CAAE,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,EACrD,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxF;;;OAGG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAQ;IAE5C;;OAEG;IACG,UAAU,CAAE,cAAc,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC5D;;;OAGG;IACH,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAQ;IAE1F;;OAEG;IACH,oBAAoB,IAAK,WAAW,EAAE;IAetC;;OAEG;IACH,gBAAgB,IAAK,YAAY,EAAE;IAiBnC;;OAEG;IACG,WAAW,CAAE,YAAY,GAAE,MAAa,EAAE,cAAc,GAAE,GAAG,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA2E1F;;;OAGG;IACH,eAAe,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAQ;IAE/C;;OAEG;IACG,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;IAkHrC;;OAEG;IACG,MAAM;
|
|
1
|
+
{"version":3,"file":"admin-edit.d.ts","sourceRoot":"","sources":["../../src/components/admin-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -286,6 +286,24 @@ class AdminEdit extends hotstaq_1.HotComponent {
|
|
|
286
286
|
values[field.name].push(value);
|
|
287
287
|
return;
|
|
288
288
|
}
|
|
289
|
+
if (field.type === "number") {
|
|
290
|
+
// @ts-ignore
|
|
291
|
+
value = parseFloat(value);
|
|
292
|
+
}
|
|
293
|
+
if (field.type === "integer") {
|
|
294
|
+
// @ts-ignore
|
|
295
|
+
value = parseInt(value);
|
|
296
|
+
}
|
|
297
|
+
if ((field.type === "bool") || (field.type === "boolean")) {
|
|
298
|
+
// @ts-ignore
|
|
299
|
+
const boolval = value.toLowerCase();
|
|
300
|
+
// @ts-ignore
|
|
301
|
+
value = false;
|
|
302
|
+
if ((boolval == "1") || (boolval == "true") || (boolval == "yes")) {
|
|
303
|
+
// @ts-ignore
|
|
304
|
+
value = true;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
289
307
|
values[field.name] = value;
|
|
290
308
|
}));
|
|
291
309
|
if (this.onsave != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-edit.js","sourceRoot":"","sources":["../../src/components/admin-edit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-edit.js","sourceRoot":"","sources":["../../src/components/admin-edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-table.d.ts","sourceRoot":"","sources":["../../src/components/admin-table.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"admin-table.d.ts","sourceRoot":"","sources":["../../src/components/admin-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -346,6 +346,8 @@ class AdminTable extends hotstaq_1.HotComponent {
|
|
|
346
346
|
this.isListRefreshing = false;
|
|
347
347
|
return (null);
|
|
348
348
|
}
|
|
349
|
+
if (list.data == null)
|
|
350
|
+
throw new Error(`Returning list data to "${this.name}" component has a null data field. API response does not match the "IAPIResponse" schema.`);
|
|
349
351
|
for (let iIdx = 0; iIdx < list.data.length; iIdx++) {
|
|
350
352
|
let elm = list.data[iIdx];
|
|
351
353
|
for (let key in elm) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-table.js","sourceRoot":"","sources":["../../src/components/admin-table.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"admin-table.js","sourceRoot":"","sources":["../../src/components/admin-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var AdminPanelComponentsWeb;(()=>{"use strict";var t={41:t=>{t.exports=DataTable},79:t=>{t.exports=HotStaqWeb},91:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminDropdown=void 0;const l=n(79);class s extends l.HotComponent{constructor(t,e){super(t,e),this.tag="admin-dropdown",this.placeholder="Search",this.onsearch=null,this.onselect=null}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null!=this.onsearch&&("string"==typeof this.onsearch&&(this.onsearch=new Function(this.onsearch)),e.querySelector("input").addEventListener("keyup",(t=>i(this,void 0,void 0,(function*(){const e=t.currentTarget.value;let n=yield this.onsearch(e,t),i=$(this.htmlElements[1]).find(".searchResults");i.empty();for(let t=0;t<n.length;t++){const e=n[t];let l=e.url,s=e.value,o=e.text;const a=$('<li><a class="dropdown-item" href="" data-value="" onclick=""></a></li>'),d=a.find("a");d.attr("href",l),d.attr("data-value",s),d.text(o),d.removeAttr("onclick").on("click",(()=>{this.selected(t)})),i.append(a)}}))))),null}selected(t){return i(this,void 0,void 0,(function*(){if(null!=this.onselect){"string"==typeof this.onselect&&(this.onselect=new Function(this.onselect));const e=this.htmlElements[1].querySelectorAll("a")[t].getAttribute("href"),n=this.htmlElements[1].querySelectorAll("a")[t].getAttribute("data-value"),i=this.htmlElements[1].querySelectorAll("a")[t].innerHTML;yield this.onselect(e,n,i)}}))}output(){return`<div class="dropdown">\n\t\t<button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">\n\t\t ${this.inner}\n\t\t</button>\n\t\t<ul class="dropdown-menu">\n\t\t\t<li>\n\t\t\t\t<div class = "input-group">\n\t\t\t\t\t<input type = "text" class = "form-control" placeholder = "${this.placeholder}" value = "" />\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<div class = "searchResults">\n\t\t\t</div>\n\t\t</ul>\n\t</div>`}}e.AdminDropdown=s},383:t=>{t.exports=bootstrap},494:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))},l=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminEdit=void 0;const s=n(79),o=l(n(383));class a extends s.HotComponent{constructor(t,e){super(t,e),this.onAddClicked=null,this.onEditClicked=null,this.onRemoveClicked=null,this.tag="admin-edit",this.title="",this.button_title="Save",this.attached_list="",this.schema="",this.modalId="",this.add_text="Add",this.add_place_here="dashboardHeader",this.edit_text="Edit",this.edit_place_here="dashboardHeader",this.remove_text="Remove",this.remove_place_here="dashboardHeader",this.css_class="",this.modal=null,this.modalType="add",this.closeOnSave=!0,this.selectedFields=[],this.onsave=null,this.onedit=null,this.ondelete=null}processHotFields(t){return i(this,void 0,void 0,(function*(){const e=this.htmlElements[1].querySelectorAll("[hot-field]");for(let n=0;n<e.length;n++){const i=e[n],l=$(i).attr("hot-field");let s=$(i).attr("hot-field-type"),o=$(i).attr("hot-field-input");null!=s&&""!==s||(s="text"),i.fieldType=s,yield t(i,{name:l,type:s,input:o})}}))}addClicked(){return i(this,arguments,void 0,(function*(t=[]){if(null==this.onAddClicked||!1!==(yield this.onAddClicked())){if(this.modalType="add",yield this.processHotFields(((t,e)=>i(this,void 0,void 0,(function*(){$(t).val("")})))),this.selectedFields=t,null!=this.onadd){"string"==typeof this.onadd&&(this.onadd=new Function(this.onadd));let t=yield this.onadd(this.modalType,this.selectedFields);if(null!=t&&!1===t)return}o.default.Modal.getInstance(`#${this.modalId}`).show()}}))}getAttachedHTMLLists(){const t=this.attached_list.split(","),e=[];for(let n=0;n<t.length;n++){const i=t[n];let l=document.getElementById(i);e.push(l)}return e}getAttachedLists(){const t=this.getAttachedHTMLLists();let e=[];for(let n=0;n<t.length;n++){const i=t[n].hotComponent;e.push(i)}return e}editClicked(){return i(this,arguments,void 0,(function*(t=null,e=[]){if(null==this.onEditClicked||!1!==(yield this.onEditClicked(t,e))){if(this.modalType="edit",this.selectedFields=e,""!==this.attached_list){const e=this.getAttachedLists();for(let n=0;n<e.length;n++){let l=e[n];if(null!=t&&l.name!==t)continue;l.attachedEdit=this;let s=l.getSelected();null!=s&&(yield this.processHotFields(((t,e)=>i(this,void 0,void 0,(function*(){let n=s[e.name];if(null!=e.input&&""!==e.input){let i=new Function(e.input);n=yield i.call(this,this,t,n)}null!=n&&$(t).val(n)})))),this.selectedFields=[s])}}if(null!=this.onedit){"string"==typeof this.onedit&&(this.onedit=new Function(this.onedit));let t=yield this.onedit(this.modalType,this.selectedFields);if(null!=t&&!1===t)return}o.default.Modal.getInstance(`#${this.modalId}`).show()}}))}removeClicked(){return i(this,void 0,void 0,(function*(){if(null!=this.onRemoveClicked&&!1===(yield this.onRemoveClicked()))return;this.modalType="remove";let t=[],e=null;if(""!==this.attached_list){const n=this.getAttachedLists();for(let i=0;i<n.length;i++){e=n[i],e.attachedEdit=this;let l=e.getCheckedRows();if(l.length>0)for(let e=0;e<l.length;e++){let n=l[e];t.push(n)}let s=e.getSelected();null!=s&&(t=[s])}}if(!0===confirm("Are you sure you want to remove this item?")){for(let n=0;n<t.length;n++){let i=t[n];if(null!=e)for(let t in i){let n=e.getFieldType(t);null!=n&&"remove"===n&&delete i[t]}if(null!=this.ondelete)"string"==typeof this.ondelete&&(this.ondelete=new Function(this.ondelete)),yield this.ondelete(i);else{let t=s.Hot.Data.AdminPanel.removeUrl;yield s.Hot.jsonRequest(t,{schema:this.schema,whereFields:i})}}if(0===t.length)if(null!=this.ondelete)"string"==typeof this.ondelete&&(this.ondelete=new Function(this.ondelete)),yield this.ondelete(null);else{let t=s.Hot.Data.AdminPanel.removeUrl;yield s.Hot.jsonRequest(t,{schema:this.schema,whereFields:null})}if(null!=e){const t=yield e.refreshList(),n=e.prepareData(t);e.tableCallback(n)}}}))}onSave(){return i(this,void 0,void 0,(function*(){let t={};if(yield this.processHotFields(((e,n)=>i(this,void 0,void 0,(function*(){if("remove"===n.type)return;let i=$(e).val();if(null!=$(e).attr("hot-value")&&(i=$(e).attr("hot-value")),null!=$(e).attr("hot-field-save")){let t=$(e).attr("hot-field-save");if(null!=t&&""!==t){let n=new Function(t);i=yield n.call(this,this,e,i)}}if("array"===n.type)return null==t[n.name]&&(t[n.name]=[]),void t[n.name].push(i);t[n.name]=i})))),null!=this.onsave){if("string"==typeof this.onsave&&(this.onsave=new Function(this.onsave)),!1===(yield this.onsave(this.modalType,t,this.selectedFields)))return}else{if("add"===this.modalType){let e=s.Hot.Data.AdminPanel.addUrl;yield s.Hot.jsonRequest(e,{schema:this.schema,fields:t})}if("edit"===this.modalType){if(0===this.selectedFields.length)return void alert("No item(s) selected!");let e={};yield this.processHotFields(((t,n)=>i(this,void 0,void 0,(function*(){if("remove"===n.type)return;let i=$(t).val();if(null!=$(t).attr("hot-value")&&(i=$(t).attr("hot-value")),"array"===n.type)return null==e[n.name]&&(e[n.name]=[]),void e[n.name].push(i);e[n.name]=i}))));let n=s.Hot.Data.AdminPanel.editUrl;yield s.Hot.jsonRequest(n,{schema:this.schema,whereFields:e,fields:t})}}if(""!==this.attached_list){const t=this.getAttachedLists();for(let e=0;e<t.length;e++){let n=t[e];n.attachedEdit=this;const i=yield n.refreshList(),l=n.prepareData(i);n.tableCallback(l)}}!0===this.closeOnSave&&o.default.Modal.getInstance(`#${this.modalId}`).hide()}))}onPostPlace(t,e){return this.modal=new o.default.Modal($(`#${this.modalId}`)[0],{backdrop:!0,keyboard:!0,focus:!0}),setTimeout((()=>{if(""!==this.attached_list){const t=this.getAttachedLists();for(let e=0;e<t.length;e++){let n=t[e];null!=n&&(n.attachedEdit=this)}}}),50),null}output(){if(""===this.name)throw new Error("You must specify a name for each admin-edit element!");this.modalId=`${this.name}Modal`;let t=[{html:`\n\t\t\t\x3c!-- ${this.title} Modal Start --\x3e\n\t\t\t<div class="modal fade ${this.css_class}" id="${this.modalId}" tabindex="-1" aria-labelledby="${this.name}ModalLabel" aria-hidden="true">\n\t\t\t\t<div class="modal-dialog">\n\t\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<h5 class="modal-title" id="${this.name}ModalLabel">${this.title}</h5>\n\t\t\t\t\t\t<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\t<hot-place-here name = "modalBody" type = "modal"></hot-place-here>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t\t<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" onclick = "document.getElementById('${this.modalId}').onSave ();">${this.button_title}</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\x3c!-- ${this.title} Modal End --\x3e`,documentSelector:"body"}];return""!==this.add_place_here&&t.push({html:`<button id = "${this.modalId}-add-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.addClicked ();">${this.add_text}</button>`,documentSelector:`hot-place-here[name="${this.add_place_here}"]`}),""!==this.edit_place_here&&t.push({html:`<button id = "${this.modalId}-edit-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.editClicked ('${this.modalId}');">${this.edit_text}</button>`,documentSelector:`hot-place-here[name="${this.edit_place_here}"]`}),""!==this.remove_place_here&&t.push({html:`<button id = "${this.modalId}-remove-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.removeClicked ();">${this.remove_text}</button>`,documentSelector:`hot-place-here[name="${this.remove_place_here}"]`}),t}}e.AdminEdit=a},594:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminButton=void 0;const l=n(79);class s extends l.HotComponent{constructor(t,e){super(t,e),this.tag="admin-button",this.css_class="btn btn-sm btn-outline-secondary",this.onclick=null}buttonClicked(){return i(this,void 0,void 0,(function*(){}))}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null!=this.onclick&&("string"==typeof this.onclick&&(this.onclick=new Function(this.onclick)),e.addEventListener("click",this.onclick)),null}output(){return`<button id = "${this.htmlElements[0].id}" class = "${this.css_class}" onclick = "this.buttonClicked ();">${this.inner}</button>`}}e.AdminButton=s},620:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))},l=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTable=void 0;const s=n(79),o=l(n(41));class a extends s.HotComponent{constructor(t,e){super(t,e),this.rowElements=[],this.tag="admin-table",this.title="",this.schema="",this.headers={fields:{},elements:{},indicies:[]},this.rowElements=[],this.tableCallback=null,this.tableData=null,this.onlist=null,this.listurl="",this.checkbox=!0,this.singleclickedit=!1,this.onselectedrow=null,this.attachedEdit=null,this.selected=-1,this.dataTable=null,this.isListRefreshing=!1}addHeader(t){let e=this.htmlElements[0].getElementsByTagName("thead")[0];this.headers.indicies.length<1&&this.headers.indicies.push(null),this.headers.indicies.push(t.hotComponent.field),e.appendChild(t)}addHeaderDataOnly(t,e){this.headers.indicies.length<1&&this.headers.indicies.push(null),this.headers.indicies.push(t.field),this.headers.fields[t.field]=t,this.headers.elements[t.field]=e}getFieldType(t){if(null!=this.headers.elements[t]){let e=this.headers.elements[t].hotComponent;if(null!=e)return e.field_type}return null}selectRow(t,e){return i(this,void 0,void 0,(function*(){{let e=this.htmlElements[1].getElementsByTagName("tbody")[0].getElementsByTagName("tr");for(let t=0;t<e.length;t++){let n=e[t];!0===n.classList.contains("table-primary")&&n.classList.remove("table-primary")}t.classList.add("table-primary")}if(this.selected=e,"string"==typeof this.singleclickedit&&(this.singleclickedit=s.HotStaq.parseBoolean(this.singleclickedit)),!0===this.singleclickedit&&null!=this.attachedEdit&&(yield this.attachedEdit.editClicked(this.name)),null!=this.onselectedrow){"string"==typeof this.onselectedrow&&(this.onselectedrow=new Function(this.onselectedrow));let t=this.getSelected();if(null==t)return;if(!1===(yield this.onselectedrow(e,t)))return}}))}getSelected(){let t=this.selected;return t<0?null:this.dataTable.row(t).data()}getCheckedRows(){let t=[],e=this.htmlElements[1].getElementsByTagName("tbody")[0].getElementsByTagName("input");for(let n=0;n<e.length;n++){let i=e[n];if(null!=i.checked&&!0===i.checked){let e=i.parentElement.parentElement.getAttribute("data-index"),n=parseInt(e);t.push(this.rowElements[n].fields)}}return t}getRow(t){return this.rowElements[t].fields}addRow(t){if(null==t)return;if(0==t.length)return;this.htmlElements[1].getElementsByTagName("tbody")[0];let e=this.rowElements.length;"string"==typeof this.checkbox&&(this.checkbox=s.HotStaq.parseBoolean(this.checkbox));let n=[];for(let i=0;i<this.headers.indicies.length;i++){let l=this.headers.indicies[i];if(null==l)continue;let s=t[l],o=l.split(".");if(o.length>1){let e=t[o[0]];for(let t=1;t<o.length;t++)e=e[o[t]];s=e}let a=null;if(null!=this.headers.elements[l]){let t=this.getFieldType(l);if(null==t&&(t="text"),"remove"!==t){const t=this.headers.fields[l];let n=!0;null!=t&&(null!=t.oninput&&("string"==typeof t.oninput&&(this.headers.fields[l].oninput=new Function(t.oninput)),s=t.oninput(s)),null!=t.onoutput)&&("string"==typeof t.onoutput&&(this.headers.fields[l].onoutput=new Function(t.onoutput)),n=!1,a={index:e,value:t.onoutput(e,s)}),!0===n&&(a=s)}}n.push(a)}null==this.rows&&(this.rows=[])}clearRows(){return i(this,void 0,void 0,(function*(){this.rowElements=[],null!=this.dataTable&&this.dataTable.clear()}))}refreshList(){return i(this,arguments,void 0,(function*(t=null){this.isListRefreshing=!0;let e={search:"",offset:0,limit:10};if(null!=this.dataTable){const t=this.dataTable.search(),n=this.dataTable.page.info();e={search:t||"",offset:n.start||0,limit:n.length||10}}if(null!=this.onlist)"string"==typeof this.onlist&&(this.onlist=new Function(this.onlist)),t=yield this.onlist(e);else{let n="";""!==this.listurl&&(n=this.listurl),""!==n&&(t=yield s.Hot.jsonRequest(n,{schema:this.schema,search:e}))}if(this.clearRows(),null!=t){if(null!=t.error)return console.error(`List error: ${t.error}`),this.isListRefreshing=!1,null;for(let e=0;e<t.data.length;e++){let n=t.data[e];for(let i in n){let l=n[i],s=this.getFieldType(i);if(null==s&&(s="text"),"remove"!==s){const n=this.headers.fields[i];let s=!0;null!=n&&(null!=n.oninput&&("string"==typeof n.oninput&&(this.headers.fields[i].oninput=new Function(n.oninput)),l=n.oninput(l)),null!=n.onoutput)&&("string"==typeof n.onoutput&&(this.headers.fields[i].onoutput=new Function(n.onoutput)),s=!1,l=n.onoutput(e,l)),t.data[e][i]=l}}}}let n=this.htmlElements[1].getElementsByTagName("tbody")[0];return n.hotComponent=this,$(n).on("click","tr",(function(){const t=this.parentNode.hotComponent,e=t.dataTable.row(this).index();null!=e?t.selectRow(this,e):null!=t.attachedEdit&&null!=t.attachedEdit.addClicked&&t.attachedEdit.addClicked()})),this.isListRefreshing=!1,t}))}prepareData(t){const e={draw:this.tableData,data:[],recordsTotal:0,recordsFiltered:0};if(null!=t){t instanceof Array?(e.data=t,e.recordsTotal=t.length,e.recordsFiltered=t.length):(null!=t.length&&(e.recordsTotal=t.length,e.recordsFiltered=t.length),null!=t.data&&(e.data=t.data));let n=!0;null!=e.data.hotSanitize&&(n=e.data.hotSanitize);for(let t=0;t<e.data.length;t++){const i=e.data[t];e.data[t]=!0===n?s.HotStaq.sanitizeJSON(i):i}}return e}onPostPlace(t,e){return setTimeout((()=>i(this,void 0,void 0,(function*(){const t=$(e).find("table");let n=[];$(t).find("thead th").each((function(){const t=$(this).text(),e=$(this).data("field");let i=$(this).data("field-type");null!=t&&""!==t&&null!=e&&""!==e&&("text"===i&&(i="string"),n.push({title:t,data:e}))})),$(t).find("thead").remove(),this.dataTable=new o.default(t[0],{processing:!0,serverSide:!0,colReorder:!0,scroller:!0,select:!0,dom:"Qlfrtip",columns:n,data:[],ajax:(t,e,n)=>i(this,void 0,void 0,(function*(){if(!0===this.isListRefreshing)return;this.tableCallback=e,this.tableData=t.draw;let n=yield this.refreshList();const i=this.prepareData(n);this.tableCallback(i)}))})}))),50),null}output(){return`\n\t\t<div id = "${this.htmlElements[0].id}">\n\t\t\t<h2>${this.title}</h2>\n\t\t\t<div class="table-responsive">\n\t\t\t<table id = "${this.htmlElements[0].id}Table" class="table table-striped table-sm">\n\t\t\t\t<thead>\n\t\t\t\t\t<tr hot-place-here = "header">\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody hot-place-here = "results">\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<hot-place-here name = "afterTable"></hot-place-here>\n\t\t\t</div>\n\t\t</div>`}}e.AdminTable=a},741:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminText=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-text",this.no_output="0",this.css_class="form-control"}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null}output(){let t="";if(null!=this.value&&(t=this.value),"1"===this.no_output)return`<div><input class="${this.css_class}" type = "hidden" value = "${t}" /></div>`;const e=this.htmlElements[0].getAttribute("hot-field");let n=this.htmlElements[0].getAttribute("hot-field-type"),i=this.htmlElements[0].getAttribute("type")||"text";return null==n&&(n="text"),`<div>\n\t\t\t<label class="form-label">${this.inner}</label>\n\t\t\t<input class="${this.css_class}" type = "${i}" hot-field = "${e}" hot-field-type = "${n}" value = "${t}" />\n\t\t</div>`}}e.AdminText=l},837:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTableField=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-table-field",this.field=0,this.field_type="text",this.no_output="0",this.oninput=null,this.onoutput=null}onPostPlace(t,e){let n=null;return n=null!=t.parentNode.parentNode.hotComponent?t.parentNode.parentNode.hotComponent:t.parentNode.parentNode.parentNode.parentNode.hotComponent,null!=n&&n.addHeaderDataOnly(this,e),null}output(){return"1"===this.no_output?[{html:"<div></div>",placeHereParent:"afterTable"}]:[{html:`<th data-field = "${this.field}" data-field-type = "${this.field_type}">${this.inner}</th>`,placeHereParent:"header"}]}}e.AdminTableField=l},877:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTableRow=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-table-row",this.fields=[]}onPostPlace(t,e){return t.parentNode.parentNode.parentNode.hotComponent.rowElements.push({fields:this.fields,element:e}),null}output(){let t="";this.fields.length>0&&(t+='<td><input type = "checkbox" /></td>');for(let e=0;e<this.fields.length;e++){let n=this.fields[e];for(let e in n)t+=`<td>${n[e]}</td>`}return[{html:`<tr>${t}</tr>`,placeHereParent:"results"}]}}e.AdminTableRow=l},924:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminDashboard=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-dashboard",this.title="",this.base=""}onPostPlace(t,e){return null==i.Hot.Data.AdminPanel&&(i.Hot.Data.AdminPanel={}),null==i.Hot.Data.AdminPanel.baseUrl&&(i.Hot.Data.AdminPanel.baseUrl=this.base),null==i.Hot.Data.AdminPanel.addUrl&&(i.Hot.Data.AdminPanel.addUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/add`),null==i.Hot.Data.AdminPanel.editUrl&&(i.Hot.Data.AdminPanel.editUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/edit`),null==i.Hot.Data.AdminPanel.removeUrl&&(i.Hot.Data.AdminPanel.removeUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/remove`),null==i.Hot.Data.AdminPanel.listUrl&&(i.Hot.Data.AdminPanel.listUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/list`),null}output(){return`\n\t\t<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">\n\t\t\t<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">\n\t\t\t\t<h1 class="h2">${this.title}</h1>\n\t\t\t\t<div class="btn-toolbar mb-2 mb-md-0">\n\t\t\t\t\t<div class="btn-group me-2">\n\t\t\t\t\t\t<hot-place-here name = "dashboardHeader"></hot-place-here>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<hot-place-here name = "body"></hot-place-here>\n\t\t</main>`}}e.AdminDashboard=l}},e={};function n(i){var l=e[i];if(void 0!==l)return l.exports;var s=e[i]={exports:{}};return t[i].call(s.exports,s,s.exports,n),s.exports}var i={};(()=>{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.AdminText=t.AdminTableRow=t.AdminTableField=t.AdminTable=t.AdminEdit=t.AdminDashboard=t.AdminDropdown=t.AdminButton=void 0;const e=n(594);Object.defineProperty(t,"AdminButton",{enumerable:!0,get:function(){return e.AdminButton}});const l=n(91);Object.defineProperty(t,"AdminDropdown",{enumerable:!0,get:function(){return l.AdminDropdown}});const s=n(924);Object.defineProperty(t,"AdminDashboard",{enumerable:!0,get:function(){return s.AdminDashboard}});const o=n(494);Object.defineProperty(t,"AdminEdit",{enumerable:!0,get:function(){return o.AdminEdit}});const a=n(620);Object.defineProperty(t,"AdminTable",{enumerable:!0,get:function(){return a.AdminTable}});const d=n(837);Object.defineProperty(t,"AdminTableField",{enumerable:!0,get:function(){return d.AdminTableField}});const r=n(877);Object.defineProperty(t,"AdminTableRow",{enumerable:!0,get:function(){return r.AdminTableRow}});const h=n(741);Object.defineProperty(t,"AdminText",{enumerable:!0,get:function(){return h.AdminText}})})(),AdminPanelComponentsWeb=i})();
|
|
2
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxRQUFxQkUsSUFBakJELEVBQ0gsT0FBT0EsRUFBYXhQLFFBR3JCLElBQUlELEVBQVNzUCxFQUF5QkUsR0FBWSxDQUdqRHZQLFFBQVMsQ0FBQyxHQU9YLE9BSEEwUCxFQUFvQkgsR0FBVXZJLEtBQUtqSCxFQUFPQyxRQUFTRCxFQUFRQSxFQUFPQyxRQUFTc1AsR0FHcEV2UCxFQUFPQyxPQUNmLEMscU1DdEJBLGVBVUUsMkVBVk8sRUFBQWlKLFdBQVcsSUFDcEIsY0FVRSw2RUFWTyxFQUFBOUksYUFBYSxJQUN0QixlQVVFLDhFQVZPLEVBQUErTyxjQUFjLElBQ3ZCLGVBVUUseUVBVk8sRUFBQTdMLFNBQVMsSUFDbEIsZUFVRSwwRUFWTyxFQUFBZ0csVUFBVSxJQUNuQixlQVVFLCtFQVZPLEVBQUF1RixlQUFlLElBQ3hCLGVBVUUsNkVBVk8sRUFBQUUsYUFBYSxJQUN0QixlQVVFLHlFQVZPLEVBQUFOLFNBQVMsRyIsInNvdXJjZXMiOlsid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViL2V4dGVybmFsIHZhciBcIkRhdGFUYWJsZVwiIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViL2V4dGVybmFsIHZhciBcIkhvdFN0YXFXZWJcIiIsIndlYnBhY2s6Ly9BZG1pblBhbmVsQ29tcG9uZW50c1dlYi8uL3NyYy9jb21wb25lbnRzL2FkbWluLWRyb3Bkb3duLnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViL2V4dGVybmFsIHZhciBcImJvb3RzdHJhcFwiIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tZWRpdC50cyIsIndlYnBhY2s6Ly9BZG1pblBhbmVsQ29tcG9uZW50c1dlYi8uL3NyYy9jb21wb25lbnRzL2FkbWluLWJ1dHRvbi50cyIsIndlYnBhY2s6Ly9BZG1pblBhbmVsQ29tcG9uZW50c1dlYi8uL3NyYy9jb21wb25lbnRzL2FkbWluLXRhYmxlLnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tdGV4dC50cyIsIndlYnBhY2s6Ly9BZG1pblBhbmVsQ29tcG9uZW50c1dlYi8uL3NyYy9jb21wb25lbnRzL2FkbWluLXRhYmxlLWZpZWxkLnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tdGFibGUtcm93LnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tZGFzaGJvYXJkLnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gRGF0YVRhYmxlOyIsIm1vZHVsZS5leHBvcnRzID0gSG90U3RhcVdlYjsiLCJpbXBvcnQgeyBIb3RTdGFxLCBIb3QsIEhvdEFQSSwgSG90Q29tcG9uZW50IH0gZnJvbSBcImhvdHN0YXFcIjtcblxuZXhwb3J0IGNsYXNzIEFkbWluRHJvcGRvd24gZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIFRoZSBzZWFyY2ggc3RyaW5nIHBsYWNlaG9sZGVyIHRvIHNob3cuXG5cdCAqL1xuXHRwbGFjZWhvbGRlcjogc3RyaW5nO1xuXHQvKipcblx0ICogRXhlY3V0ZXMgd2hlbiB0aGUga2V5Ym9hcmQgdXAgYnV0dG9uIGlzIHRyaWdnZXJlZC5cblx0ICovXG5cdG9uc2VhcmNoOiAoc2VhcmNoVGV4dDogc3RyaW5nLCBldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gUHJvbWlzZTx7IHVybDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyB0ZXh0OiBzdHJpbmc7IH1bXT47XG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB3aGVuIGFuIHNlYXJjaCByZXN1bHQgaGFzIGJlZW4gc2VsZWN0ZWQuXG5cdCAqL1xuXHRvbnNlbGVjdDogKHVybDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tZHJvcGRvd25cIjtcblx0XHR0aGlzLnBsYWNlaG9sZGVyID0gXCJTZWFyY2hcIjtcblx0XHR0aGlzLm9uc2VhcmNoID0gbnVsbDtcblx0XHR0aGlzLm9uc2VsZWN0ID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3JyZWN0cyB0aGUgcGxhY2VtZW50IG9mIHRoZSB0ZXh0IGVsZW1lbnRzIGZvciBtb2RhbHMuXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0bGV0IHBsYWNlSGVyZUFycmF5ID0gcGFyZW50SHRtbEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCAoYGhvdC1wbGFjZS1oZXJlW3R5cGU9XCJtb2RhbFwiXWApO1xuXG5cdFx0aWYgKHBsYWNlSGVyZUFycmF5Lmxlbmd0aCA+IDApXG5cdFx0e1xuXHRcdFx0bGV0IHBsYWNlSGVyZSA9IHBsYWNlSGVyZUFycmF5WzBdO1xuXHRcdFx0cGFyZW50SHRtbEVsZW1lbnQucmVtb3ZlQ2hpbGQgKGh0bWxFbGVtZW50KTtcblx0XHRcdHBsYWNlSGVyZS5hcHBlbmRDaGlsZCAoaHRtbEVsZW1lbnQpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLm9uc2VhcmNoICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbnNlYXJjaCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25zZWFyY2ggPSAoPChzZWFyY2hUZXh0OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBQcm9taXNlPHsgdXJsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHRleHQ6IHN0cmluZzsgfVtdPj5uZXcgRnVuY3Rpb24gKHRoaXMub25zZWFyY2gpKTtcblxuXHRcdFx0aHRtbEVsZW1lbnQucXVlcnlTZWxlY3RvciAoXCJpbnB1dFwiKS5hZGRFdmVudExpc3RlbmVyIChcImtleXVwXCIsIFxuXHRcdFx0XHRhc3luYyAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+XG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0Y29uc3Qgc2VhcmNoVGV4dCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWU7XG5cblx0XHRcdFx0XHRsZXQgcmVzdWx0cyA9IGF3YWl0IHRoaXMub25zZWFyY2ggKHNlYXJjaFRleHQsIGV2ZW50KTtcblxuXHRcdFx0XHRcdGxldCBzZWFyY2hSZXN1bHRzRGl2ID0gJCh0aGlzLmh0bWxFbGVtZW50c1sxXSkuZmluZCAoXCIuc2VhcmNoUmVzdWx0c1wiKTtcblxuXHRcdFx0XHRcdHNlYXJjaFJlc3VsdHNEaXYuZW1wdHkgKCk7XG5cblx0XHRcdFx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IHJlc3VsdHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gcmVzdWx0c1tpSWR4XTtcblx0XHRcdFx0XHRcdGxldCB1cmw6IHN0cmluZyA9IHJlc3VsdC51cmw7XG5cdFx0XHRcdFx0XHRsZXQgdmFsdWU6IHN0cmluZyA9IHJlc3VsdC52YWx1ZTtcblx0XHRcdFx0XHRcdGxldCB0ZXh0OiBzdHJpbmcgPSByZXN1bHQudGV4dDtcblxuXHRcdFx0XHRcdFx0Y29uc3QgJHRlbXBsYXRlID0gJChgPGxpPjxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiIGhyZWY9XCJcIiBkYXRhLXZhbHVlPVwiXCIgb25jbGljaz1cIlwiPjwvYT48L2xpPmApO1xuXG5cdFx0XHRcdFx0XHRjb25zdCAkYSA9ICR0ZW1wbGF0ZS5maW5kKFwiYVwiKTtcblx0XHRcdFx0XHRcdCRhLmF0dHIoXCJocmVmXCIsIHVybCk7XG5cdFx0XHRcdFx0XHQkYS5hdHRyKFwiZGF0YS12YWx1ZVwiLCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHQkYS50ZXh0KHRleHQpO1xuXG5cdFx0XHRcdFx0XHQkYS5yZW1vdmVBdHRyKFwib25jbGlja1wiKS5vbihcImNsaWNrXCIsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZChpSWR4KTtcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRzZWFyY2hSZXN1bHRzRGl2LmFwcGVuZCgkdGVtcGxhdGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChudWxsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlZCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuXG5cdCAqL1xuXHRhc3luYyBzZWxlY3RlZCAoaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD5cblx0e1xuXHRcdGlmICh0aGlzLm9uc2VsZWN0ICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbnNlbGVjdCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25zZWxlY3QgPSAoPCh1cmw6IHN0cmluZywgdmFsdWU6IHN0cmluZywgdGV4dDogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbnNlbGVjdCkpO1xuXG5cdFx0XHRjb25zdCB1cmwgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5xdWVyeVNlbGVjdG9yQWxsIChcImFcIilbaW5kZXhdLmdldEF0dHJpYnV0ZSAoXCJocmVmXCIpO1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5xdWVyeVNlbGVjdG9yQWxsIChcImFcIilbaW5kZXhdLmdldEF0dHJpYnV0ZSAoXCJkYXRhLXZhbHVlXCIpO1xuXHRcdFx0Y29uc3QgdGV4dCA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLnF1ZXJ5U2VsZWN0b3JBbGwgKFwiYVwiKVtpbmRleF0uaW5uZXJIVE1MO1xuXG5cdFx0XHRhd2FpdCB0aGlzLm9uc2VsZWN0ICh1cmwsIHZhbHVlLCB0ZXh0KTtcblx0XHR9XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZ1xuXHR7XG5cdFx0cmV0dXJuIChcblx0YDxkaXYgY2xhc3M9XCJkcm9wZG93blwiPlxuXHRcdDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZHJvcGRvd24tdG9nZ2xlXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cblx0XHQgICR7dGhpcy5pbm5lcn1cblx0XHQ8L2J1dHRvbj5cblx0XHQ8dWwgY2xhc3M9XCJkcm9wZG93bi1tZW51XCI+XG5cdFx0XHQ8bGk+XG5cdFx0XHRcdDxkaXYgY2xhc3MgPSBcImlucHV0LWdyb3VwXCI+XG5cdFx0XHRcdFx0PGlucHV0IHR5cGUgPSBcInRleHRcIiBjbGFzcyA9IFwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXIgPSBcIiR7dGhpcy5wbGFjZWhvbGRlcn1cIiB2YWx1ZSA9IFwiXCIgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2xpPlxuXHRcdFx0PGRpdiBjbGFzcyA9IFwic2VhcmNoUmVzdWx0c1wiPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC91bD5cblx0PC9kaXY+YCk7XG5cdH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gYm9vdHN0cmFwOyIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQsIEhvdENvbXBvbmVudE91dHB1dCB9IGZyb20gXCJob3RzdGFxXCI7XG5cbmltcG9ydCBib290c3RyYXAgZnJvbSBcImJvb3RzdHJhcFwiO1xuXG5pbXBvcnQgeyBBZG1pblRhYmxlIH0gZnJvbSBcIi4vYWRtaW4tdGFibGVcIjtcblxuZXhwb3J0IGNsYXNzIEFkbWluRWRpdCBleHRlbmRzIEhvdENvbXBvbmVudFxue1xuXHQvKipcblx0ICogVGhlIHRpdGxlIG9mIHRoaXMgZWRpdCBtb2RhbC5cblx0ICovXG5cdHRpdGxlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgYnV0dG9uIHRpdGxlLlxuXHQgKi9cblx0YnV0dG9uX3RpdGxlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgYXR0YWNoZWQgbGlzdC5cblx0ICovXG5cdGF0dGFjaGVkX2xpc3Q6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBhdHRhY2hlZCBzY2hlbWEuXG5cdCAqL1xuXHRzY2hlbWE6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBtb2RhbCBpZC5cblx0ICovXG5cdG1vZGFsSWQ6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSB0ZXh0IGZvciB0aGUgYWRkIGJ1dHRvbi5cblx0ICovXG5cdGFkZF90ZXh0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgbG9jYXRpb24gdG8gcHV0IHRoZSBhZGQgYnV0dG9uLlxuXHQgKi9cblx0YWRkX3BsYWNlX2hlcmU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSB0ZXh0IGZvciB0aGUgZWRpdCBidXR0b24uXG5cdCAqL1xuXHRlZGl0X3RleHQ6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBsb2NhdGlvbiB0byBwdXQgdGhlIGVkaXQgYnV0dG9uLlxuXHQgKi9cblx0ZWRpdF9wbGFjZV9oZXJlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgdGV4dCBmb3IgdGhlIHJlbW92ZSBidXR0b24uXG5cdCAqL1xuXHRyZW1vdmVfdGV4dDogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGxvY2F0aW9uIHRvIHB1dCB0aGUgcmVtb3ZlIGJ1dHRvbi5cblx0ICovXG5cdHJlbW92ZV9wbGFjZV9oZXJlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgaG90LWNsYXNzIGF0dHJpYnV0ZSB0byBwYXNzIHRvIGFkZCB0byB0aGUgbW9kYWwncyBjbGFzc2VzLlxuXHQgKi9cblx0Y3NzX2NsYXNzOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgYm9vdHN0cmFwIG1vZGFsIGluc3RhbmNlLlxuXHQgKi9cblx0bW9kYWw6IGJvb3RzdHJhcC5Nb2RhbDtcblx0LyoqXG5cdCAqIElmIHNldCB0byB0cnVlLCB0aGlzIHdpbGwgY2xvc2UgdGhlIG1vZGFsIHdoZW4gc2F2ZSBpcyBjbGlja2VkLlxuXHQgKi9cblx0Y2xvc2VPblNhdmU6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBUaGUgdHlwZSBvZiBtb2RhbCB0byBvcGVuLiBDYW4gYmU6XG5cdCAqICogYWRkXG5cdCAqICogZWRpdFxuXHQgKiAqIHJlbW92ZVxuXHQgKi9cblx0cHJvdGVjdGVkIG1vZGFsVHlwZTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHNlbGVjdGVkIGZpZWxkcy5cblx0ICovXG5cdHByb3RlY3RlZCBzZWxlY3RlZEZpZWxkczogYW55W107XG5cdC8qKlxuXHQgKiBXaGF0IHRvIGV4ZWN1dGUgd2hlbiB0aGUgc2F2ZSBidXR0b24gaXMgY2xpY2tlZC4gSWYgdGhpcyByZXR1cm5zIHRydWUsIHRoZSBtb2RhbCB3aWxsIGNsb3NlLlxuXHQgKiBJZiB0aGlzIHJldHVybnMgZmFsc2UsIHRoZSBtb2RhbCB3aWxsIG5vdCBjbG9zZS5cblx0ICovXG5cdG9uc2F2ZTogKG1vZGFsVHlwZTogc3RyaW5nLCB2YWx1ZXM6IGFueSwgc2VsZWN0ZWRGaWVsZHM6IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXHQvKipcblx0ICogV2hhdCB0byBleGVjdXRlIHdoZW4gdGhlIGVkaXQgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRvbmFkZDogKG1vZGFsVHlwZTogc3RyaW5nLCBzZWxlY3RlZEZpZWxkczogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj47XG5cdC8qKlxuXHQgKiBXaGF0IHRvIGV4ZWN1dGUgd2hlbiB0aGUgZWRpdCBidXR0b24gaXMgY2xpY2tlZC5cblx0ICovXG5cdG9uZWRpdDogKG1vZGFsVHlwZTogc3RyaW5nLCBzZWxlY3RlZEZpZWxkczogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj47XG5cdC8qKlxuXHQgKiBXaGF0IHRvIGV4ZWN1dGUgd2hlbiB0aGUgZGVsZXRlIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0b25kZWxldGU6IChzZWxlY3RlZEZpZWxkOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tZWRpdFwiO1xuXHRcdHRoaXMudGl0bGUgPSBcIlwiO1xuXHRcdHRoaXMuYnV0dG9uX3RpdGxlID0gXCJTYXZlXCI7XG5cdFx0dGhpcy5hdHRhY2hlZF9saXN0ID0gXCJcIjtcblx0XHR0aGlzLnNjaGVtYSA9IFwiXCI7XG5cblx0XHR0aGlzLm1vZGFsSWQgPSBcIlwiO1xuXHRcdHRoaXMuYWRkX3RleHQgPSBcIkFkZFwiO1xuXHRcdHRoaXMuYWRkX3BsYWNlX2hlcmUgPSBcImRhc2hib2FyZEhlYWRlclwiO1xuXHRcdHRoaXMuZWRpdF90ZXh0ID0gXCJFZGl0XCI7XG5cdFx0dGhpcy5lZGl0X3BsYWNlX2hlcmUgPSBcImRhc2hib2FyZEhlYWRlclwiO1xuXHRcdHRoaXMucmVtb3ZlX3RleHQgPSBcIlJlbW92ZVwiO1xuXHRcdHRoaXMucmVtb3ZlX3BsYWNlX2hlcmUgPSBcImRhc2hib2FyZEhlYWRlclwiO1xuXHRcdHRoaXMuY3NzX2NsYXNzID0gXCJcIjtcblx0XHR0aGlzLm1vZGFsID0gbnVsbDtcblx0XHR0aGlzLm1vZGFsVHlwZSA9IFwiYWRkXCI7XG5cdFx0dGhpcy5jbG9zZU9uU2F2ZSA9IHRydWU7XG5cdFx0dGhpcy5zZWxlY3RlZEZpZWxkcyA9IFtdO1xuXHRcdHRoaXMub25zYXZlID0gbnVsbDtcblx0XHR0aGlzLm9uZWRpdCA9IG51bGw7XG5cdFx0dGhpcy5vbmRlbGV0ZSA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogUHJvY2VzcyB0aGUgaG90IGZpZWxkcy5cblx0ICovXG5cdGFzeW5jIHByb2Nlc3NIb3RGaWVsZHMgKG9uRmllbGQ6IChodG1sRWxlbWVudDogRWxlbWVudCwgXG5cdFx0ZmllbGQ6IHsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGlucHV0OiBzdHJpbmc7IH0pID0+IFByb21pc2U8dm9pZD4pOiBQcm9taXNlPHZvaWQ+XG5cdHtcblx0XHRjb25zdCBlbG1zID0gdGhpcy5odG1sRWxlbWVudHNbMV0ucXVlcnlTZWxlY3RvckFsbCAoXCJbaG90LWZpZWxkXVwiKTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgZWxtcy5sZW5ndGg7IGlJZHgrKylcblx0XHR7XG5cdFx0XHRjb25zdCBlbG0gPSBlbG1zW2lJZHhdO1xuXHRcdFx0Y29uc3QgZmllbGQgPSAkKGVsbSkuYXR0ciAoXCJob3QtZmllbGRcIik7XG5cdFx0XHRsZXQgZmllbGRUeXBlID0gJChlbG0pLmF0dHIgKFwiaG90LWZpZWxkLXR5cGVcIik7XG5cdFx0XHRsZXQgZmllbGRJbnB1dCA9ICQoZWxtKS5hdHRyIChcImhvdC1maWVsZC1pbnB1dFwiKTtcblxuXHRcdFx0aWYgKChmaWVsZFR5cGUgPT0gbnVsbCkgfHwgKGZpZWxkVHlwZSA9PT0gXCJcIikpXG5cdFx0XHRcdGZpZWxkVHlwZSA9IFwidGV4dFwiO1xuXG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRlbG0uZmllbGRUeXBlID0gZmllbGRUeXBlO1xuXG5cdFx0XHRhd2FpdCBvbkZpZWxkIChlbG0sIHsgbmFtZTogZmllbGQsIHR5cGU6IGZpZWxkVHlwZSwgaW5wdXQ6IGZpZWxkSW5wdXQgfSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBldmVudCB0aGF0IGNhbiBiZSBjYWxsZWQgd2hlbiB0aGUgYWRkIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGFkZCBtb2RhbCBvcGVucy5cblx0ICovXG5cdG9uQWRkQ2xpY2tlZDogKCkgPT4gUHJvbWlzZTxib29sZWFuPiA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gdGhlIGFkZCBidXR0b24gaXMgY2xpY2tlZC5cblx0ICovXG5cdGFzeW5jIGFkZENsaWNrZWQgKHNlbGVjdGVkRmllbGRzOiBhbnlbXSA9IFtdKTogUHJvbWlzZTx2b2lkPlxuXHR7XG5cdFx0aWYgKHRoaXMub25BZGRDbGlja2VkICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25BZGRDbGlja2VkICgpO1xuXG5cdFx0XHRpZiAocmVzdWx0ID09PSBmYWxzZSlcblx0XHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMubW9kYWxUeXBlID0gXCJhZGRcIjtcblxuXHRcdGF3YWl0IHRoaXMucHJvY2Vzc0hvdEZpZWxkcyAoXG5cdFx0XHRhc3luYyAoaHRtbEVsZW1lbnQ6IEVsZW1lbnQsIGZpZWxkOiB7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyB9KSA9PlxuXHRcdFx0e1xuXHRcdFx0XHQkKGh0bWxFbGVtZW50KS52YWwgKFwiXCIpO1xuXHRcdFx0fSk7XG5cblx0XHR0aGlzLnNlbGVjdGVkRmllbGRzID0gc2VsZWN0ZWRGaWVsZHM7XG5cblx0XHRpZiAodGhpcy5vbmFkZCAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmICh0eXBlb2YgKHRoaXMub25hZGQpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHR0aGlzLm9uYWRkID0gKDwobW9kYWxUeXBlOiBzdHJpbmcsIHNlbGVjdGVkRmllbGRzOiBhbnlbXSkgPT4gUHJvbWlzZTxib29sZWFuPj5uZXcgRnVuY3Rpb24gKHRoaXMub25hZGQpKTtcblxuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25hZGQgKHRoaXMubW9kYWxUeXBlLCB0aGlzLnNlbGVjdGVkRmllbGRzKTtcblxuXHRcdFx0aWYgKHJlc3VsdCAhPSBudWxsKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAocmVzdWx0ID09PSBmYWxzZSlcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Ym9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlIChgIyR7dGhpcy5tb2RhbElkfWApLnNob3cgKCk7XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGV2ZW50IHRoYXQgY2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBlZGl0IGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgdGhlIGVkaXQgbW9kYWwgb3BlbnMuXG5cdCAqL1xuXHRvbkVkaXRDbGlja2VkOiAoY2xpY2tlZFRhYmxlPzogc3RyaW5nLCBzZWxlY3RlZEZpZWxkcz86IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gbnVsbDtcblxuXHQvKipcblx0ICogR2V0IHRoZSBhdHRhY2hlZCBsaXN0cy5cblx0ICovXG5cdGdldEF0dGFjaGVkSFRNTExpc3RzICgpOiBIVE1MRWxlbWVudFtdXG5cdHtcblx0XHRjb25zdCBzdHJzID0gdGhpcy5hdHRhY2hlZF9saXN0LnNwbGl0IChcIixcIik7XG5cdFx0Y29uc3QgYXR0YWNoZWRMaXN0czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzdHJzLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkTGlzdCA9IHN0cnNbaV07XG5cdFx0XHRsZXQgYXR0YWNoZWRMaXN0T2JqID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQgKGF0dGFjaGVkTGlzdCk7XG5cdFx0XHRhdHRhY2hlZExpc3RzLnB1c2ggKGF0dGFjaGVkTGlzdE9iaik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChhdHRhY2hlZExpc3RzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGF0dGFjaGVkIGxpc3RzLlxuXHQgKi9cblx0Z2V0QXR0YWNoZWRMaXN0cyAoKTogSG90Q29tcG9uZW50W11cblx0e1xuXHRcdGNvbnN0IGF0dGFjaGVkTGlzdHMgPSB0aGlzLmdldEF0dGFjaGVkSFRNTExpc3RzICgpO1xuXHRcdGxldCBhdHRhY2hlZExpc3RPYmpzID0gW107XG5cblx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGF0dGFjaGVkTGlzdHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0e1xuXHRcdFx0bGV0IGF0dGFjaGVkTGlzdCA9IGF0dGFjaGVkTGlzdHNbaUlkeF07XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRjb25zdCBob3RDb21wb25lbnQgPSBhdHRhY2hlZExpc3QuaG90Q29tcG9uZW50O1xuXG5cdFx0XHRhdHRhY2hlZExpc3RPYmpzLnB1c2ggKGhvdENvbXBvbmVudCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChhdHRhY2hlZExpc3RPYmpzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB3aGVuIHRoZSBlZGl0IGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0YXN5bmMgZWRpdENsaWNrZWQgKGNsaWNrZWRUYWJsZTogc3RyaW5nID0gbnVsbCwgc2VsZWN0ZWRGaWVsZHM6IGFueVtdID0gW10pOiBQcm9taXNlPHZvaWQ+XG5cdHtcblx0XHRpZiAodGhpcy5vbkVkaXRDbGlja2VkICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25FZGl0Q2xpY2tlZCAoY2xpY2tlZFRhYmxlLCBzZWxlY3RlZEZpZWxkcyk7XG5cblx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5tb2RhbFR5cGUgPSBcImVkaXRcIjtcblxuXHRcdHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBzZWxlY3RlZEZpZWxkcztcblxuXHRcdGlmICh0aGlzLmF0dGFjaGVkX2xpc3QgIT09IFwiXCIpXG5cdFx0e1xuXHRcdFx0Y29uc3QgYXR0YWNoZWRMaXN0cyA9IHRoaXMuZ2V0QXR0YWNoZWRMaXN0cyAoKTtcblxuXHRcdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBhdHRhY2hlZExpc3RzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgYXR0YWNoZWRMaXN0ID0gYXR0YWNoZWRMaXN0c1tpSWR4XTtcblx0XHRcdFx0bGV0IHRhYmxlOiBBZG1pblRhYmxlID0gKDxBZG1pblRhYmxlPmF0dGFjaGVkTGlzdCk7XG5cblx0XHRcdFx0aWYgKGNsaWNrZWRUYWJsZSAhPSBudWxsKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKHRhYmxlLm5hbWUgIT09IGNsaWNrZWRUYWJsZSlcblx0XHRcdFx0XHRcdGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGFibGUuYXR0YWNoZWRFZGl0ID0gdGhpcztcblx0XHRcdFx0bGV0IHNlbGVjdGVkRmllbGQgPSB0YWJsZS5nZXRTZWxlY3RlZCAoKTtcblxuXHRcdFx0XHRpZiAoc2VsZWN0ZWRGaWVsZCAhPSBudWxsKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5wcm9jZXNzSG90RmllbGRzIChcblx0XHRcdFx0XHRcdGFzeW5jIChodG1sRWxlbWVudDogRWxlbWVudCwgZmllbGQ6IHsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IGlucHV0OiBzdHJpbmc7IH0pID0+XG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdFx0bGV0IHZhbHVlID0gc2VsZWN0ZWRGaWVsZFtmaWVsZC5uYW1lXTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoZmllbGQuaW5wdXQgIT0gbnVsbClcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5pbnB1dCAhPT0gXCJcIilcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbiAoZmllbGQuaW5wdXQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWUgPSBhd2FpdCBmdW5jLmNhbGwgKHRoaXMsIHRoaXMsIGh0bWxFbGVtZW50LCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlICE9IG51bGwpXG5cdFx0XHRcdFx0XHRcdFx0JChodG1sRWxlbWVudCkudmFsICh2YWx1ZSk7XG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBbc2VsZWN0ZWRGaWVsZF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5vbmVkaXQgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uZWRpdCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25lZGl0ID0gKDwobW9kYWxUeXBlOiBzdHJpbmcsIHNlbGVjdGVkRmllbGRzOiBhbnlbXSkgPT4gUHJvbWlzZTxib29sZWFuPj5uZXcgRnVuY3Rpb24gKHRoaXMub25lZGl0KSk7XG5cblx0XHRcdGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uZWRpdCAodGhpcy5tb2RhbFR5cGUsIHRoaXMuc2VsZWN0ZWRGaWVsZHMpO1xuXG5cdFx0XHRpZiAocmVzdWx0ICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UgKGAjJHt0aGlzLm1vZGFsSWR9YCkuc2hvdyAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZXZlbnQgdGhhdCBjYW4gYmUgY2FsbGVkIHdoZW4gdGhlIHJlbW92ZSBidXR0b24gaXMgY2xpY2tlZC5cblx0ICogVGhpcyBpcyBjYWxsZWQgYmVmb3JlIHRoZSByZW1vdmUgbW9kYWwgb3BlbnMuXG5cdCAqL1xuXHRvblJlbW92ZUNsaWNrZWQ6ICgpID0+IFByb21pc2U8Ym9vbGVhbj4gPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB3aGVuIHRoZSByZW1vdmUgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRhc3luYyByZW1vdmVDbGlja2VkICgpOiBQcm9taXNlPHZvaWQ+XG5cdHtcblx0XHRpZiAodGhpcy5vblJlbW92ZUNsaWNrZWQgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vblJlbW92ZUNsaWNrZWQgKCk7XG5cblx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5tb2RhbFR5cGUgPSBcInJlbW92ZVwiO1xuXG5cdFx0bGV0IHdoZXJlRmllbGRzOiBhbnlbXSA9IFtdO1xuXHRcdGxldCBob3RDb21wb25lbnQ6IEFkbWluVGFibGUgPSBudWxsO1xuXG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRfbGlzdCAhPT0gXCJcIilcblx0XHR7XG5cdFx0XHRjb25zdCBhdHRhY2hlZExpc3RzID0gdGhpcy5nZXRBdHRhY2hlZExpc3RzICgpO1xuXG5cdFx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGF0dGFjaGVkTGlzdHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBhdHRhY2hlZExpc3QgPSBhdHRhY2hlZExpc3RzW2lJZHhdO1xuXHRcdFx0XHRob3RDb21wb25lbnQgPSAoPEFkbWluVGFibGU+YXR0YWNoZWRMaXN0KTtcblxuXHRcdFx0XHRob3RDb21wb25lbnQuYXR0YWNoZWRFZGl0ID0gdGhpcztcblx0XHRcdFx0bGV0IGNoZWNrZWRSb3dzID0gaG90Q29tcG9uZW50LmdldENoZWNrZWRSb3dzICgpO1xuXG5cdFx0XHRcdGlmIChjaGVja2VkUm93cy5sZW5ndGggPiAwKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBjaGVja2VkUm93cy5sZW5ndGg7IGkrKylcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsZXQgY2hlY2tlZFJvdyA9IGNoZWNrZWRSb3dzW2ldO1xuXHRcdFx0XHRcdFx0d2hlcmVGaWVsZHMucHVzaCAoY2hlY2tlZFJvdyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHNlbGVjdGVkRmllbGQgPSBob3RDb21wb25lbnQuZ2V0U2VsZWN0ZWQgKCk7XG5cblx0XHRcdFx0aWYgKHNlbGVjdGVkRmllbGQgIT0gbnVsbClcblx0XHRcdFx0XHR3aGVyZUZpZWxkcyA9IFtzZWxlY3RlZEZpZWxkXTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRjb25zdCBjb25maXJtZWQ6IGJvb2xlYW4gPSBjb25maXJtIChcIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhpcyBpdGVtP1wiKTtcblxuXHRcdGlmIChjb25maXJtZWQgPT09IHRydWUpXG5cdFx0e1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB3aGVyZUZpZWxkcy5sZW5ndGg7IGkrKylcblx0XHRcdHtcblx0XHRcdFx0bGV0IHdoZXJlRmllbGQgPSB3aGVyZUZpZWxkc1tpXTtcblxuXHRcdFx0XHRpZiAoaG90Q29tcG9uZW50ICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBSZW1vdmUgYW55IGZpZWxkcyB0aGF0IGFyZSBtYXJrZWQgYXMgcmVtb3ZlLlxuXHRcdFx0XHRcdGZvciAobGV0IGtleSBpbiB3aGVyZUZpZWxkKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxldCBmaWVsZFR5cGUgPSBob3RDb21wb25lbnQuZ2V0RmllbGRUeXBlIChrZXkpO1xuXG5cdFx0XHRcdFx0XHRpZiAoZmllbGRUeXBlICE9IG51bGwpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGlmIChmaWVsZFR5cGUgPT09IFwicmVtb3ZlXCIpXG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIHdoZXJlRmllbGRba2V5XTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5vbmRlbGV0ZSAhPSBudWxsKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbmRlbGV0ZSkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdFx0XHR0aGlzLm9uZGVsZXRlID0gKDwoc2VsZWN0ZWRGaWVsZDogYW55KSA9PiBQcm9taXNlPHZvaWQ+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbmRlbGV0ZSkpO1xuXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5vbmRlbGV0ZSAod2hlcmVGaWVsZCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGV0IHJlbW92ZVVybDogc3RyaW5nID0gSG90LkRhdGEuQWRtaW5QYW5lbC5yZW1vdmVVcmw7XG5cblx0XHRcdFx0XHRhd2FpdCBIb3QuanNvblJlcXVlc3QgKHJlbW92ZVVybCwge1xuXHRcdFx0XHRcdFx0XHRzY2hlbWE6IHRoaXMuc2NoZW1hLFxuXHRcdFx0XHRcdFx0XHR3aGVyZUZpZWxkczogd2hlcmVGaWVsZFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKHdoZXJlRmllbGRzLmxlbmd0aCA9PT0gMClcblx0XHRcdHtcblx0XHRcdFx0aWYgKHRoaXMub25kZWxldGUgIT0gbnVsbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmICh0eXBlb2YgKHRoaXMub25kZWxldGUpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHRcdFx0dGhpcy5vbmRlbGV0ZSA9ICg8KHNlbGVjdGVkRmllbGQ6IGFueSkgPT4gUHJvbWlzZTx2b2lkPj5uZXcgRnVuY3Rpb24gKHRoaXMub25kZWxldGUpKTtcblxuXHRcdFx0XHRcdGF3YWl0IHRoaXMub25kZWxldGUgKG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxldCByZW1vdmVVcmw6IHN0cmluZyA9IEhvdC5EYXRhLkFkbWluUGFuZWwucmVtb3ZlVXJsO1xuXG5cdFx0XHRcdFx0YXdhaXQgSG90Lmpzb25SZXF1ZXN0IChyZW1vdmVVcmwsIHtcblx0XHRcdFx0XHRcdFx0c2NoZW1hOiB0aGlzLnNjaGVtYSxcblx0XHRcdFx0XHRcdFx0d2hlcmVGaWVsZHM6IG51bGxcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFxuXHRcdFx0aWYgKGhvdENvbXBvbmVudCAhPSBudWxsKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zdCBjdXJyZW50RGF0YSA9IGF3YWl0IGhvdENvbXBvbmVudC5yZWZyZXNoTGlzdCAoKTtcblx0XHRcdFx0Y29uc3QgcHJlcGFyZWREYXRhID0gaG90Q29tcG9uZW50LnByZXBhcmVEYXRhIChjdXJyZW50RGF0YSk7XG5cblx0XHRcdFx0aG90Q29tcG9uZW50LnRhYmxlQ2FsbGJhY2sgKHByZXBhcmVkRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFNhdmUgdGhpcyBmb3JtLlxuXHQgKi9cblx0YXN5bmMgb25TYXZlICgpXG5cdHtcblx0XHRsZXQgdmFsdWVzOiBhbnkgPSB7fTtcblxuXHRcdGF3YWl0IHRoaXMucHJvY2Vzc0hvdEZpZWxkcyAoYXN5bmMgKGh0bWxFbGVtZW50OiBFbGVtZW50LCBmaWVsZDogeyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgfSkgPT5cblx0XHRcdHtcblx0XHRcdFx0aWYgKGZpZWxkLnR5cGUgPT09IFwicmVtb3ZlXCIpXG5cdFx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHRcdGxldCB2YWx1ZSA9ICQoaHRtbEVsZW1lbnQpLnZhbCAoKTtcblxuXHRcdFx0XHRpZiAoJChodG1sRWxlbWVudCkuYXR0ciAoXCJob3QtdmFsdWVcIikgIT0gbnVsbClcblx0XHRcdFx0XHR2YWx1ZSA9ICQoaHRtbEVsZW1lbnQpLmF0dHIgKFwiaG90LXZhbHVlXCIpO1xuXG5cdFx0XHRcdGlmICgkKGh0bWxFbGVtZW50KS5hdHRyIChcImhvdC1maWVsZC1zYXZlXCIpICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsZXQgZmllbGRTYXZlID0gJChodG1sRWxlbWVudCkuYXR0ciAoXCJob3QtZmllbGQtc2F2ZVwiKTtcblxuXHRcdFx0XHRcdGlmIChmaWVsZFNhdmUgIT0gbnVsbClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAoZmllbGRTYXZlICE9PSBcIlwiKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbiAoZmllbGRTYXZlKTtcblx0XHRcdFx0XHRcdFx0dmFsdWUgPSBhd2FpdCBmdW5jLmNhbGwgKHRoaXMsIHRoaXMsIGh0bWxFbGVtZW50LCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpZWxkLnR5cGUgPT09IFwiYXJyYXlcIilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmICh2YWx1ZXNbZmllbGQubmFtZV0gPT0gbnVsbClcblx0XHRcdFx0XHRcdHZhbHVlc1tmaWVsZC5uYW1lXSA9IFtdO1xuXG5cdFx0XHRcdFx0dmFsdWVzW2ZpZWxkLm5hbWVdLnB1c2ggKHZhbHVlKTtcblxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhbHVlc1tmaWVsZC5uYW1lXSA9IHZhbHVlO1xuXHRcdFx0fSk7XG5cblx0XHRpZiAodGhpcy5vbnNhdmUgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uc2F2ZSkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25zYXZlID0gKDwobW9kYWxUeXBlOiBzdHJpbmcsIHZhbHVlczogYW55LCBzZWxlY3RlZEZpZWxkczogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj4+bmV3IEZ1bmN0aW9uICh0aGlzLm9uc2F2ZSkpO1xuXG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbnNhdmUgKHRoaXMubW9kYWxUeXBlLCB2YWx1ZXMsIHRoaXMuc2VsZWN0ZWRGaWVsZHMpO1xuXG5cdFx0XHRpZiAocmVzdWx0ID09PSBmYWxzZSlcblx0XHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYgKHRoaXMubW9kYWxUeXBlID09PSBcImFkZFwiKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgYWRkVXJsOiBzdHJpbmcgPSBIb3QuRGF0YS5BZG1pblBhbmVsLmFkZFVybDtcblxuXHRcdFx0XHRhd2FpdCBIb3QuanNvblJlcXVlc3QgKGFkZFVybCwge1xuXHRcdFx0XHRcdFx0c2NoZW1hOiB0aGlzLnNjaGVtYSxcblx0XHRcdFx0XHRcdGZpZWxkczogdmFsdWVzXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLm1vZGFsVHlwZSA9PT0gXCJlZGl0XCIpXG5cdFx0XHR7XG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkRmllbGRzLmxlbmd0aCA9PT0gMClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGFsZXJ0IChcIk5vIGl0ZW0ocykgc2VsZWN0ZWQhXCIpO1xuXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bGV0IHdoZXJlRmllbGRzOiBhbnkgPSB7fTtcblxuXHRcdFx0XHRhd2FpdCB0aGlzLnByb2Nlc3NIb3RGaWVsZHMgKGFzeW5jIChodG1sRWxlbWVudDogRWxlbWVudCwgZmllbGQ6IHsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IH0pID0+XG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKGZpZWxkLnR5cGUgPT09IFwicmVtb3ZlXCIpXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcblx0XHRcdFx0XHRcdGxldCB2YWx1ZSA9ICQoaHRtbEVsZW1lbnQpLnZhbCAoKTtcblx0XHRcblx0XHRcdFx0XHRcdGlmICgkKGh0bWxFbGVtZW50KS5hdHRyIChcImhvdC12YWx1ZVwiKSAhPSBudWxsKVxuXHRcdFx0XHRcdFx0XHR2YWx1ZSA9ICQoaHRtbEVsZW1lbnQpLmF0dHIgKFwiaG90LXZhbHVlXCIpO1xuXHRcdFxuXHRcdFx0XHRcdFx0aWYgKGZpZWxkLnR5cGUgPT09IFwiYXJyYXlcIilcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKHdoZXJlRmllbGRzW2ZpZWxkLm5hbWVdID09IG51bGwpXG5cdFx0XHRcdFx0XHRcdFx0d2hlcmVGaWVsZHNbZmllbGQubmFtZV0gPSBbXTtcblx0XHRcblx0XHRcdFx0XHRcdFx0d2hlcmVGaWVsZHNbZmllbGQubmFtZV0ucHVzaCAodmFsdWUpO1xuXHRcdFxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XG5cdFx0XHRcdFx0XHR3aGVyZUZpZWxkc1tmaWVsZC5uYW1lXSA9IHZhbHVlO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGxldCBlZGl0VXJsOiBzdHJpbmcgPSBIb3QuRGF0YS5BZG1pblBhbmVsLmVkaXRVcmw7XG5cblx0XHRcdFx0YXdhaXQgSG90Lmpzb25SZXF1ZXN0IChlZGl0VXJsLCB7XG5cdFx0XHRcdFx0XHRzY2hlbWE6IHRoaXMuc2NoZW1hLFxuXHRcdFx0XHRcdFx0d2hlcmVGaWVsZHM6IHdoZXJlRmllbGRzLFxuXHRcdFx0XHRcdFx0ZmllbGRzOiB2YWx1ZXNcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5hdHRhY2hlZF9saXN0ICE9PSBcIlwiKVxuXHRcdHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkTGlzdHMgPSB0aGlzLmdldEF0dGFjaGVkTGlzdHMgKCk7XG5cblx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgYXR0YWNoZWRMaXN0cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdHtcblx0XHRcdFx0bGV0IGF0dGFjaGVkTGlzdCA9IGF0dGFjaGVkTGlzdHNbaUlkeF07XG5cdFx0XHRcdGxldCB0YWJsZTogQWRtaW5UYWJsZSA9ICg8QWRtaW5UYWJsZT5hdHRhY2hlZExpc3QpO1xuXG5cdFx0XHRcdHRhYmxlLmF0dGFjaGVkRWRpdCA9IHRoaXM7XG5cblx0XHRcdFx0Y29uc3QgY3VycmVudERhdGEgPSBhd2FpdCB0YWJsZS5yZWZyZXNoTGlzdCAoKTtcblx0XHRcdFx0Y29uc3QgcHJlcGFyZWREYXRhID0gdGFibGUucHJlcGFyZURhdGEgKGN1cnJlbnREYXRhKTtcblxuXHRcdFx0XHR0YWJsZS50YWJsZUNhbGxiYWNrIChwcmVwYXJlZERhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLmNsb3NlT25TYXZlID09PSB0cnVlKVxuXHRcdHtcblx0XHRcdGJvb3RzdHJhcC5Nb2RhbC5nZXRJbnN0YW5jZSAoYCMke3RoaXMubW9kYWxJZH1gKS5oaWRlICgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGxpc3Qgb2YgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIuXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0dGhpcy5tb2RhbCA9IG5ldyBib290c3RyYXAuTW9kYWwgKCQoYCMke3RoaXMubW9kYWxJZH1gKVswXSwge1xuXHRcdFx0XHRcImJhY2tkcm9wXCI6IHRydWUsXG5cdFx0XHRcdFwia2V5Ym9hcmRcIjogdHJ1ZSxcblx0XHRcdFx0XCJmb2N1c1wiOiB0cnVlXG5cdFx0XHR9KTtcblxuXHRcdC8vLyBAdG9kbyBGaXggdGhpcyB0ZW1wb3JhcnkgaGFjay4gSSBkb250IGxpa2UgaXQuXG5cdFx0c2V0VGltZW91dCAoKCkgPT5cblx0XHRcdHtcblx0XHRcdFx0aWYgKHRoaXMuYXR0YWNoZWRfbGlzdCAhPT0gXCJcIilcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNvbnN0IGF0dGFjaGVkTGlzdHMgPSB0aGlzLmdldEF0dGFjaGVkTGlzdHMgKCk7XG5cdFx0XG5cdFx0XHRcdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBhdHRhY2hlZExpc3RzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxldCBhdHRhY2hlZExpc3QgPSBhdHRhY2hlZExpc3RzW2lJZHhdO1xuXHRcdFx0XHRcdFx0bGV0IHRhYmxlOiBBZG1pblRhYmxlID0gKDxBZG1pblRhYmxlPmF0dGFjaGVkTGlzdCk7XG5cblx0XHRcdFx0XHRcdGlmICh0YWJsZSAhPSBudWxsKVxuXHRcdFx0XHRcdFx0XHR0YWJsZS5hdHRhY2hlZEVkaXQgPSB0aGlzO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSwgNTApO1xuXG5cdFx0cmV0dXJuIChudWxsKTtcblx0fVxuXG5cdG91dHB1dCAoKTogc3RyaW5nIHwgSG90Q29tcG9uZW50T3V0cHV0W11cblx0e1xuXHRcdGlmICh0aGlzLm5hbWUgPT09IFwiXCIpXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IgKGBZb3UgbXVzdCBzcGVjaWZ5IGEgbmFtZSBmb3IgZWFjaCBhZG1pbi1lZGl0IGVsZW1lbnQhYCk7XG5cblx0XHR0aGlzLm1vZGFsSWQgPSBgJHt0aGlzLm5hbWV9TW9kYWxgO1xuXG5cdFx0bGV0IG91dHB1dE9iaiA9IFt7XG5cdFx0XHRodG1sOiBgXG5cdFx0XHQ8IS0tICR7dGhpcy50aXRsZX0gTW9kYWwgU3RhcnQgLS0+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwgZmFkZSAke3RoaXMuY3NzX2NsYXNzfVwiIGlkPVwiJHt0aGlzLm1vZGFsSWR9XCIgdGFiaW5kZXg9XCItMVwiIGFyaWEtbGFiZWxsZWRieT1cIiR7dGhpcy5uYW1lfU1vZGFsTGFiZWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuXHRcdFx0XHRcdFx0PGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cIiR7dGhpcy5uYW1lfU1vZGFsTGFiZWxcIj4ke3RoaXMudGl0bGV9PC9oNT5cblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWNsb3NlXCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj48L2J1dHRvbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuXHRcdFx0XHRcdFx0PGhvdC1wbGFjZS1oZXJlIG5hbWUgPSBcIm1vZGFsQm9keVwiIHR5cGUgPSBcIm1vZGFsXCI+PC9ob3QtcGxhY2UtaGVyZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgZGF0YS1icy1kaXNtaXNzPVwibW9kYWxcIj5DYW5jZWw8L2J1dHRvbj5cblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgb25jbGljayA9IFwiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyR7dGhpcy5tb2RhbElkfScpLm9uU2F2ZSAoKTtcIj4ke3RoaXMuYnV0dG9uX3RpdGxlfTwvYnV0dG9uPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PCEtLSAke3RoaXMudGl0bGV9IE1vZGFsIEVuZCAtLT5gLFxuXHRcdFx0ZG9jdW1lbnRTZWxlY3RvcjogXCJib2R5XCJcblx0XHR9XTtcblxuXHRcdGlmICh0aGlzLmFkZF9wbGFjZV9oZXJlICE9PSBcIlwiKVxuXHRcdHtcblx0XHRcdG91dHB1dE9iai5wdXNoICh7XG5cdFx0XHRcdGh0bWw6IGA8YnV0dG9uIGlkID0gXCIke3RoaXMubW9kYWxJZH0tYWRkLWJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgb25jbGljayA9IFwidGhpcy5hZGRDbGlja2VkICgpO1wiPiR7dGhpcy5hZGRfdGV4dH08L2J1dHRvbj5gLFxuXHRcdFx0XHRkb2N1bWVudFNlbGVjdG9yOiBgaG90LXBsYWNlLWhlcmVbbmFtZT1cIiR7dGhpcy5hZGRfcGxhY2VfaGVyZX1cIl1gXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5lZGl0X3BsYWNlX2hlcmUgIT09IFwiXCIpXG5cdFx0e1xuXHRcdFx0b3V0cHV0T2JqLnB1c2ggKHtcblx0XHRcdFx0aHRtbDogYDxidXR0b24gaWQgPSBcIiR7dGhpcy5tb2RhbElkfS1lZGl0LWJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgb25jbGljayA9IFwidGhpcy5lZGl0Q2xpY2tlZCAoJyR7dGhpcy5tb2RhbElkfScpO1wiPiR7dGhpcy5lZGl0X3RleHR9PC9idXR0b24+YCxcblx0XHRcdFx0ZG9jdW1lbnRTZWxlY3RvcjogYGhvdC1wbGFjZS1oZXJlW25hbWU9XCIke3RoaXMuZWRpdF9wbGFjZV9oZXJlfVwiXWBcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnJlbW92ZV9wbGFjZV9oZXJlICE9PSBcIlwiKVxuXHRcdHtcblx0XHRcdG91dHB1dE9iai5wdXNoICh7XG5cdFx0XHRcdGh0bWw6IGA8YnV0dG9uIGlkID0gXCIke3RoaXMubW9kYWxJZH0tcmVtb3ZlLWJ0blwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCIgb25jbGljayA9IFwidGhpcy5yZW1vdmVDbGlja2VkICgpO1wiPiR7dGhpcy5yZW1vdmVfdGV4dH08L2J1dHRvbj5gLFxuXHRcdFx0XHRkb2N1bWVudFNlbGVjdG9yOiBgaG90LXBsYWNlLWhlcmVbbmFtZT1cIiR7dGhpcy5yZW1vdmVfcGxhY2VfaGVyZX1cIl1gXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKG91dHB1dE9iaik7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQgfSBmcm9tIFwiaG90c3RhcVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5CdXR0b24gZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIFRoZSBDU1MgY2xhc3MgdG8gYXBwbHkgdG8gdGhlIGJ1dHRvbi5cblx0ICovXG5cdGNzc19jbGFzczogc3RyaW5nO1xuXHQvKipcblx0ICogRXhlY3V0ZXMgd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRvbmNsaWNrOiAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IFByb21pc2U8YW55PjtcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi1idXR0b25cIjtcblx0XHR0aGlzLmNzc19jbGFzcyA9IFwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnlcIjtcblx0XHR0aGlzLm9uY2xpY2sgPSBudWxsO1xuXHR9XG5cblx0YXN5bmMgYnV0dG9uQ2xpY2tlZCAoKTogUHJvbWlzZTx2b2lkPlxuXHR7XG5cdH1cblxuXHQvKipcblx0ICogQ29ycmVjdHMgdGhlIHBsYWNlbWVudCBvZiB0aGUgdGV4dCBlbGVtZW50cyBmb3IgbW9kYWxzLlxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdGxldCBwbGFjZUhlcmVBcnJheSA9IHBhcmVudEh0bWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKGBob3QtcGxhY2UtaGVyZVt0eXBlPVwibW9kYWxcIl1gKTtcblxuXHRcdGlmIChwbGFjZUhlcmVBcnJheS5sZW5ndGggPiAwKVxuXHRcdHtcblx0XHRcdGxldCBwbGFjZUhlcmUgPSBwbGFjZUhlcmVBcnJheVswXTtcblx0XHRcdHBhcmVudEh0bWxFbGVtZW50LnJlbW92ZUNoaWxkIChodG1sRWxlbWVudCk7XG5cdFx0XHRwbGFjZUhlcmUuYXBwZW5kQ2hpbGQgKGh0bWxFbGVtZW50KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vbmNsaWNrICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbmNsaWNrKSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbmNsaWNrID0gKDwoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IFByb21pc2U8YW55Pj5uZXcgRnVuY3Rpb24gKHRoaXMub25jbGljaykpO1xuXG5cdFx0XHRodG1sRWxlbWVudC5hZGRFdmVudExpc3RlbmVyIChcImNsaWNrXCIsIHRoaXMub25jbGljayk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChudWxsKTtcblx0fVxuXG5cdG91dHB1dCAoKTogc3RyaW5nXG5cdHtcblx0XHRyZXR1cm4gKGA8YnV0dG9uIGlkID0gXCIke3RoaXMuaHRtbEVsZW1lbnRzWzBdLmlkfVwiIGNsYXNzID0gXCIke3RoaXMuY3NzX2NsYXNzfVwiIG9uY2xpY2sgPSBcInRoaXMuYnV0dG9uQ2xpY2tlZCAoKTtcIj4ke3RoaXMuaW5uZXJ9PC9idXR0b24+YCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQsIEhvdENvbXBvbmVudE91dHB1dCB9IGZyb20gXCJob3RzdGFxXCI7XG5pbXBvcnQgeyBBZG1pblRhYmxlRmllbGQgfSBmcm9tIFwiLi9hZG1pbi10YWJsZS1maWVsZFwiO1xuaW1wb3J0IHsgQWRtaW5FZGl0IH0gZnJvbSBcIi4vYWRtaW4tZWRpdFwiO1xuXG5pbXBvcnQgRGF0YVRhYmxlLCB7IEFwaSwgQ29uZmlnQ29sdW1ucywgSW50ZXJuYWxTZXR0aW5ncyB9IGZyb20gXCJkYXRhdGFibGVzLm5ldFwiO1xuaW1wb3J0IGR0NSBmcm9tICdkYXRhdGFibGVzLm5ldC1iczUnO1xuaW1wb3J0IGR0YyBmcm9tICdkYXRhdGFibGVzLm5ldC1jb2xyZW9yZGVyLWJzNSc7XG5pbXBvcnQgZHRzIGZyb20gJ2RhdGF0YWJsZXMubmV0LXNjcm9sbGVyLWJzNSc7XG5pbXBvcnQgZHRzYiBmcm9tICdkYXRhdGFibGVzLm5ldC1zZWFyY2hidWlsZGVyLWJzNSc7XG5pbXBvcnQgZHRzZWwgZnJvbSAnZGF0YXRhYmxlcy5uZXQtc2VsZWN0LWJzNSc7XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgZm9yIHRoZSBsaXN0IHNlYXJjaC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTGlzdFNlYXJjaFByb3BlcnRpZXNcbntcblx0LyoqXG5cdCAqIFRoZSBzZWFyY2guXG5cdCAqL1xuXHRzZWFyY2g/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgc3RhcnQgaW5kZXguXG5cdCAqL1xuXHRvZmZzZXQ/OiBudW1iZXI7XG5cdC8qKlxuXHQgKiBUaGUgbGVuZ3RoLlxuXHQgKi9cblx0bGltaXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIEFQSSByZXNwb25zZSB0aGF0IGlzIGV4cGVjdGVkIHRvIGJlIHJldHVybmVkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElBUElSZXNwb25zZVxue1xuXHQvKipcblx0ICogVGhlIGxlbmd0aCBvZiB0aGUgZGF0YS5cblx0ICovXG5cdGxlbmd0aDogbnVtYmVyO1xuXHQvKipcblx0ICogVGhlIGRhdGEgdG8gcmV0dXJuLlxuXHQgKi9cblx0ZGF0YTogYW55W107XG5cdC8qKlxuXHQgKiBUaGUgZXJyb3IgbWVzc2FnZSwgaWYgYW55LlxuXHQgKi9cblx0ZXJyb3I/OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBDYW4gZW5hYmxlL2Rpc2FibGUgc2FuaXRpemF0aW9uIG9mIHRoZSByZXR1cm5pbmcgZGF0YS5cblx0ICovXG5cdGhvdFNhbml0aXplPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIEFkbWluVGFibGUgZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGlzIHRhYmxlLlxuXHQgKi9cblx0dGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBhdHRhY2hlZCBzY2hlbWEuXG5cdCAqL1xuXHRzY2hlbWE6IHN0cmluZztcblx0aGVhZGVyczoge1xuXHRcdC8qKlxuXHRcdCAqIFRoZSBzdG9yZWQgaGVhZGVyIGZpZWxkcy5cblx0XHQgKi9cblx0XHRmaWVsZHM6IHsgW25hbWU6IHN0cmluZ106IEFkbWluVGFibGVGaWVsZDsgfTtcblx0XHQvKipcblx0XHQgKiBUaGUgaGVhZGVycyBhcmUgc3RvcmVkIGluIGEga2V5L3ZhbHVlIG9iamVjdC5cblx0XHQgKiBcblx0XHQgKiBAZXhhbXBsZSB7IFwibmFtZVwiOiBcIjx0aD5OYW1lPC90aD5cIiwgXCJlbWFpbFwiOiBcIjx0aD5FbWFpbDwvdGg+XCIgfVxuXHRcdCAqL1xuXHRcdGVsZW1lbnRzOiB7IFtuYW1lOiBzdHJpbmddOiBhbnk7IH07XG5cdFx0LyoqXG5cdFx0ICogVGhlIGhlYWRlciBpbmRpY2llcyBhcmUgc3RvcmVkIGluIGEga2V5L3ZhbHVlIG9iamVjdC5cblx0XHQgKiBcblx0XHQgKiBAZXhhbXBsZSBjb25zb2xlLmxvZyAodGhpcy5oZWFkZXJJbmRpY2llc1tcIm5hbWVcIl0pOyAvLyBPdXRwdXRzIDBcblx0XHQgKi9cblx0XHRpbmRpY2llczogbnVtYmVyW107XG5cdH07XG5cdC8qKlxuXHQgKiBUaGUgcm93IGVsZW1lbnRzIGFyZSBzdG9yZWQgaW4gYW4gYXJyYXkgd2l0aCBrZXkvdmFsdWUgZmllbGRzIGFuZCBpdCdzIGF0dGFjaGVkIGh0bWwgZWxlbWVudC5cblx0ICogXG5cdCAqIEBleGFtcGxlXG5cdCAqIHtcblx0ICogICBcImZpZWxkc1wiOiBbXG5cdCAqICAgICAgIHtcblx0ICogICAgICAgICBcIm5hbWVcIjogXCJKb2huIFNtaXRoXCIsXG5cdCAqICAgICAgICAgXCJlbWFpbFwiOiBcImpvaG4uc21pdGhAdGVzdC5jb21cIlxuXHQgKiAgICAgICB9XG5cdCAqICAgICBdLFxuXHQgKiAgIFwiaHRtbFwiOiBcIjx0cj48dGQ+Sm9obiBTbWl0aDwvdGQ+PHRkPmpvaG4uc21pdGhAdGVzdC5jb208L3RkPjwvdHI+XCJcblx0ICogfVxuXHQgKi9cblx0cm93RWxlbWVudHM6IHsgZmllbGRzOiBhbnlbXTsgZWxlbWVudDogSFRNTEVsZW1lbnQ7IH1bXSA9IFtdO1xuXHQvKipcblx0ICogVGhlIHRhYmxlIGNhbGxiYWNrIGZvciB3aGVuIHVwZGF0aW5nIGRhdGEuXG5cdCAqL1xuXHR0YWJsZUNhbGxiYWNrOiAoKGRhdGE6IGFueSkgPT4gdm9pZCk7XG5cdC8qKlxuXHQgKiBUaGUgdGFibGUgZGF0YSBmb3Igd2hlbiB1cGRhdGluZyBkYXRhLlxuXHQgKi9cblx0cHJvdGVjdGVkIHRhYmxlRGF0YTogYW55O1xuXHQvKipcblx0ICogVGhlIHNlbGVjdGVkIHJvdyBpbmRpY2llcy4gRWFjaCBpbmRleCBtYXBzIHRvIHRoZSByb3dFbGVtZW50cyBhcnJheS5cblx0ICogXG5cdCAqIEBmaXhtZSBBZGQgc3VwcG9ydCBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlLlxuXHQgKi9cblx0Ly9wcm90ZWN0ZWQgc2VsZWN0ZWRSb3dzOiBudW1iZXJbXTtcblx0LyoqXG5cdCAqIFRoZSBtb3N0IHJlY2VudGx5IHNlbGVjdGVkIHJvdyBpbmRleC4gVGhlIGluZGV4IG1hcHMgdG8gdGhlIHJvd0VsZW1lbnRzIGFycmF5LlxuXHQgKi9cblx0cHJvdGVjdGVkIHNlbGVjdGVkOiBudW1iZXI7XG5cdC8qKlxuXHQgKiBUaGUgbGlzdCBmdW5jdGlvbiB0byBleGVjdXRlIHRvIHJldHJpZXZlIGRhdGEuXG5cdCAqL1xuXHRvbmxpc3Q6IChzZWFyY2g6IElMaXN0U2VhcmNoUHJvcGVydGllcykgPT4gUHJvbWlzZTxJQVBJUmVzcG9uc2U+O1xuXHQvKipcblx0ICogVGhlIGxpc3QgdXJsIHRvIHVzZSBmb3IgdGhpcyB0YWJsZS4gSG90LkRhdGEuQWRtaW5QYW5lbC5saXN0VXJsIHdpbGwgbm90IGJlIHVzZWQgaW4gdGhpcyBjYXNlLlxuXHQgKi9cblx0bGlzdHVybDogc3RyaW5nO1xuXHQvKipcblx0ICogSWYgc2V0IHRvIHRydWUsIGVhY2ggcm93IHdpbGwgaGF2ZSBhIGNoZWNrYm94LlxuXHQgKiBAZGVmYXVsdCB0cnVlXG5cdCAqL1xuXHRjaGVja2JveDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIElmIHNldCB0byB0cnVlLCBhIHNpbmdsZSBjbGljayB3aWxsIGFsbG93IHRoZSB1c2VyIHRvIGVkaXQgdGhlIHJvdy5cblx0ICovXG5cdHNpbmdsZWNsaWNrZWRpdDogYm9vbGVhbjtcblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHRoaXMgZXZlbnQgd2hlbiBhIHJvdyBpcyBzZWxlY3RlZC4gVGhlIHBvdGVudGlhbCBpdGVtIHRvIGJlIHNlbGVjdGVkIFxuXHQgKiB3aWxsIGFsc28gYmUgcGFzc2VkLiBJZiB0aGlzIHJldHVybnMgZmFsc2UsIHRoZSByb3cgd2lsbCBub3QgYmUgc2VsZWN0ZWQuXG5cdCAqL1xuXHRvbnNlbGVjdGVkcm93OiAocm93SW5kZXg6IG51bWJlciwgaXRlbTogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj47XG5cdC8qKlxuXHQgKiBUaGUgYXR0YWNoZWQgZWRpdCBmb3JtLCBpZiBhbnkuXG5cdCAqL1xuXHRhdHRhY2hlZEVkaXQ6IEFkbWluRWRpdDtcblx0LyoqXG5cdCAqIFRoZSBhc3NvY2lhdGVkIERhdGFUYWJsZS5cblx0ICovXG5cdGRhdGFUYWJsZTogRGF0YVRhYmxlPEFwaT47XG5cdC8qKlxuXHQgKiBJbmRpY2F0ZXMgaWYgdGhlIGxpc3QgaXMgcmVmcmVzaGluZy5cblx0ICovXG5cdGlzTGlzdFJlZnJlc2hpbmc6IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tdGFibGVcIjtcblx0XHR0aGlzLnRpdGxlID0gXCJcIjtcblx0XHR0aGlzLnNjaGVtYSA9IFwiXCI7XG5cdFx0dGhpcy5oZWFkZXJzID0ge1xuXHRcdFx0XHRmaWVsZHM6IHt9LFxuXHRcdFx0XHRlbGVtZW50czoge30sXG5cdFx0XHRcdGluZGljaWVzOiBbXVxuXHRcdFx0fTtcblx0XHR0aGlzLnJvd0VsZW1lbnRzID0gW107XG5cdFx0dGhpcy50YWJsZUNhbGxiYWNrID0gbnVsbDtcblx0XHR0aGlzLnRhYmxlRGF0YSA9IG51bGw7XG5cdFx0Ly90aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuXHRcdHRoaXMub25saXN0ID0gbnVsbDtcblx0XHR0aGlzLmxpc3R1cmwgPSBcIlwiO1xuXHRcdHRoaXMuY2hlY2tib3ggPSB0cnVlO1xuXHRcdHRoaXMuc2luZ2xlY2xpY2tlZGl0ID0gZmFsc2U7XG5cdFx0dGhpcy5vbnNlbGVjdGVkcm93ID0gbnVsbDtcblx0XHR0aGlzLmF0dGFjaGVkRWRpdCA9IG51bGw7XG5cdFx0dGhpcy5zZWxlY3RlZCA9IC0xO1xuXHRcdHRoaXMuZGF0YVRhYmxlID0gbnVsbDtcblx0XHR0aGlzLmlzTGlzdFJlZnJlc2hpbmcgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgYSBoZWFkZXIgdG8gdGhlIHRhYmxlLlxuXHQgKi9cblx0YWRkSGVhZGVyICh0YWJsZUZpZWxkRWxlbWVudDogSFRNTEVsZW1lbnQpXG5cdHtcblx0XHRsZXQgaGVhZGVyID0gdGhpcy5odG1sRWxlbWVudHNbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwidGhlYWRcIilbMF07XG5cblx0XHRpZiAodGhpcy5oZWFkZXJzLmluZGljaWVzLmxlbmd0aCA8IDEpXG5cdFx0XHR0aGlzLmhlYWRlcnMuaW5kaWNpZXMucHVzaCAobnVsbCk7XG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0dGhpcy5oZWFkZXJzLmluZGljaWVzLnB1c2ggKHRhYmxlRmllbGRFbGVtZW50LmhvdENvbXBvbmVudC5maWVsZCk7XG5cdFx0aGVhZGVyLmFwcGVuZENoaWxkICh0YWJsZUZpZWxkRWxlbWVudCk7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGEgaGVhZGVyIHRvIHRoZSB0YWJsZS5cblx0ICovXG5cdGFkZEhlYWRlckRhdGFPbmx5ICh0YWJsZUZpZWxkOiBBZG1pblRhYmxlRmllbGQsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudClcblx0e1xuXHRcdGlmICh0aGlzLmhlYWRlcnMuaW5kaWNpZXMubGVuZ3RoIDwgMSlcblx0XHRcdHRoaXMuaGVhZGVycy5pbmRpY2llcy5wdXNoIChudWxsKTtcblxuXHRcdHRoaXMuaGVhZGVycy5pbmRpY2llcy5wdXNoICh0YWJsZUZpZWxkLmZpZWxkKTtcblx0XHR0aGlzLmhlYWRlcnMuZmllbGRzW3RhYmxlRmllbGQuZmllbGRdID0gdGFibGVGaWVsZDtcblx0XHR0aGlzLmhlYWRlcnMuZWxlbWVudHNbdGFibGVGaWVsZC5maWVsZF0gPSBodG1sRWxlbWVudDtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGZpZWxkIHR5cGUgb2YgYSBmaWVsZC5cblx0ICovXG5cdGdldEZpZWxkVHlwZSAoZmllbGROYW1lOiBzdHJpbmcpOiBzdHJpbmdcblx0e1xuXHRcdGlmICh0aGlzLmhlYWRlcnMuZWxlbWVudHNbZmllbGROYW1lXSAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGxldCBob3RDb21wb25lbnQ6IEFkbWluVGFibGVGaWVsZCA9IHRoaXMuaGVhZGVycy5lbGVtZW50c1tmaWVsZE5hbWVdLmhvdENvbXBvbmVudDtcblxuXHRcdFx0aWYgKGhvdENvbXBvbmVudCAhPSBudWxsKVxuXHRcdFx0XHRyZXR1cm4gKGhvdENvbXBvbmVudC5maWVsZF90eXBlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gYSByb3cgaXMgc2VsZWN0ZWQuXG5cdCAqL1xuXHRhc3luYyBzZWxlY3RSb3cgKGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgcm93SW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD5cblx0e1xuXHRcdC8vIEluIHRoZSBmdXR1cmUsIHdlIHdpbGwgc3VwcG9ydCBtdWx0aXBsZSByb3dzIGJlaW5nIHNlbGVjdGVkLiBGb3Igbm93IFxuXHRcdC8vIHRoaXMgd2lsbCBlbnN1cmUgdGhhdCBvbmx5IG9uZSByb3cgaXMgc2VsZWN0ZWQgYXQgYSB0aW1lLlxuXHRcdHtcblx0XHRcdGxldCB0Ym9keSA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lIChcInRib2R5XCIpWzBdO1xuXHRcdFx0bGV0IHJvd3MgPSB0Ym9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0clwiKTtcblxuXHRcdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCByb3dzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgcm93OiBIVE1MVGFibGVSb3dFbGVtZW50ID0gcm93c1tpSWR4XTtcblxuXHRcdFx0XHRpZiAocm93LmNsYXNzTGlzdC5jb250YWlucyAoXCJ0YWJsZS1wcmltYXJ5XCIpID09PSB0cnVlKVxuXHRcdFx0XHRcdHJvdy5jbGFzc0xpc3QucmVtb3ZlIChcInRhYmxlLXByaW1hcnlcIik7XG5cdFx0XHR9XG5cblx0XHRcdGh0bWxFbGVtZW50LmNsYXNzTGlzdC5hZGQgKFwidGFibGUtcHJpbWFyeVwiKTtcblx0XHR9XG5cblx0XHR0aGlzLnNlbGVjdGVkID0gcm93SW5kZXg7XG5cblx0XHRpZiAodHlwZW9mICh0aGlzLnNpbmdsZWNsaWNrZWRpdCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHR0aGlzLnNpbmdsZWNsaWNrZWRpdCA9IEhvdFN0YXEucGFyc2VCb29sZWFuICh0aGlzLnNpbmdsZWNsaWNrZWRpdCk7XG5cblx0XHRpZiAodGhpcy5zaW5nbGVjbGlja2VkaXQgPT09IHRydWUpXG5cdFx0e1xuXHRcdFx0aWYgKHRoaXMuYXR0YWNoZWRFZGl0ICE9IG51bGwpXG5cdFx0XHRcdGF3YWl0IHRoaXMuYXR0YWNoZWRFZGl0LmVkaXRDbGlja2VkICh0aGlzLm5hbWUpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLm9uc2VsZWN0ZWRyb3cgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uc2VsZWN0ZWRyb3cpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHR0aGlzLm9uc2VsZWN0ZWRyb3cgPSAoPChyb3dJbmRleDogbnVtYmVyLCBpdGVtOiBhbnlbXSkgPT4gUHJvbWlzZTxib29sZWFuPj5uZXcgRnVuY3Rpb24gKHRoaXMub25zZWxlY3RlZHJvdykpO1xuXG5cdFx0XHRsZXQgaXRlbTogYW55W10gPSB0aGlzLmdldFNlbGVjdGVkICgpO1xuXG5cdFx0XHRpZiAoaXRlbSA9PSBudWxsKVxuXHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uc2VsZWN0ZWRyb3cgKHJvd0luZGV4LCBpdGVtKTtcblxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gZmFsc2UpXG5cdFx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvKnRoaXMuc2VsZWN0ZWRSb3dzID0gW107XG5cdFx0bGV0IHRib2R5ID0gdGhpcy5odG1sRWxlbWVudHNbMV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwidGJvZHlcIilbMF07XG5cblx0XHQvLyBGaW5kIGFsbCB0aGUgY2hlY2tib3hlcyBpbiB0Ym9keS5cblx0XHRsZXQgY2hlY2tib3hlcyA9IHRib2R5LmdldEVsZW1lbnRzQnlUYWdOYW1lIChcImlucHV0XCIpO1xuXG5cdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBjaGVja2JveGVzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdHtcblx0XHRcdGxldCBjaGVja2JveDogSFRNTElucHV0RWxlbWVudCA9IGNoZWNrYm94ZXNbaUlkeF07XG5cblx0XHRcdGlmIChjaGVja2JveC5jaGVja2VkICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdGlmIChjaGVja2JveC5jaGVja2VkID09PSB0cnVlKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Ly8gR2V0IHRoZSBkYXRhLWluZGV4IGF0dHJpYnV0ZS5cblx0XHRcdFx0XHRsZXQgZGF0YUluZGV4U3RyOiBzdHJpbmcgPSBjaGVja2JveC5wYXJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQuZ2V0QXR0cmlidXRlIChcImRhdGEtaW5kZXhcIik7XG5cdFx0XHRcdFx0bGV0IGRhdGFJbmRleDogbnVtYmVyID0gIHBhcnNlSW50IChkYXRhSW5kZXhTdHIpO1xuXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFJvd3MucHVzaCAoZGF0YUluZGV4KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0qL1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2VsZWN0ZWQgZGF0YS5cblx0ICovXG5cdGdldFNlbGVjdGVkICgpOiBhbnlbXVxuXHR7XG5cdFx0bGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkO1xuXG5cdFx0aWYgKGluZGV4IDwgMClcblx0XHRcdHJldHVybiAobnVsbCk7XG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Y29uc3QgcmVzdWx0ID0gdGhpcy5kYXRhVGFibGUucm93KGluZGV4KS5kYXRhKCk7XG5cblx0XHRyZXR1cm4gKHJlc3VsdCk7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBzZWxlY3RlZCBkYXRhLlxuXHQgKi9cblx0LypnZXRTZWxlY3RlZFJvd3MgKCk6IGFueVtdXG5cdHtcblx0XHRsZXQgcm93czogYW55W10gPSBbXTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgdGhpcy5zZWxlY3RlZFJvd3MubGVuZ3RoOyBpSWR4KyspXG5cdFx0e1xuXHRcdFx0bGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnNlbGVjdGVkUm93c1tpSWR4XTtcblx0XHRcdHJvd3MucHVzaCAodGhpcy5yb3dFbGVtZW50c1tpbmRleF0uZmllbGRzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKHJvd3MpO1xuXHR9Ki9cblxuXHQvKipcblx0ICogR2V0IHRoZSBkYXRhIGZvciBlYWNoIHJvdyB0aGF0IGhhcyBiZWVuIGNoZWNrZWQuXG5cdCAqL1xuXHRnZXRDaGVja2VkUm93cyAoKTogYW55W11cblx0e1xuXHRcdGxldCByb3dzOiBhbnlbXSA9IFtdO1xuXHRcdGxldCB0Ym9keSA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lIChcInRib2R5XCIpWzBdO1xuXG5cdFx0Ly8gRmluZCBhbGwgdGhlIGNoZWNrYm94ZXMgaW4gdGJvZHkuXG5cdFx0bGV0IGNoZWNrYm94ZXMgPSB0Ym9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJpbnB1dFwiKTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgY2hlY2tib3hlcy5sZW5ndGg7IGlJZHgrKylcblx0XHR7XG5cdFx0XHRsZXQgY2hlY2tib3g6IEhUTUxJbnB1dEVsZW1lbnQgPSBjaGVja2JveGVzW2lJZHhdO1xuXG5cdFx0XHRpZiAoY2hlY2tib3guY2hlY2tlZCAhPSBudWxsKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoY2hlY2tib3guY2hlY2tlZCA9PT0gdHJ1ZSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZGF0YS1pbmRleCBhdHRyaWJ1dGUuXG5cdFx0XHRcdFx0bGV0IGRhdGFJbmRleFN0cjogc3RyaW5nID0gY2hlY2tib3gucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSAoXCJkYXRhLWluZGV4XCIpO1xuXHRcdFx0XHRcdGxldCBkYXRhSW5kZXg6IG51bWJlciA9ICBwYXJzZUludCAoZGF0YUluZGV4U3RyKTtcblxuXHRcdFx0XHRcdHJvd3MucHVzaCAodGhpcy5yb3dFbGVtZW50c1tkYXRhSW5kZXhdLmZpZWxkcyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gKHJvd3MpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBhIHJvdydzIGRhdGEuXG5cdCAqL1xuXHRnZXRSb3cgKGluZGV4OiBudW1iZXIpOiBhbnlbXVxuXHR7XG5cdFx0cmV0dXJuICh0aGlzLnJvd0VsZW1lbnRzW2luZGV4XS5maWVsZHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhIHJvdyB0byB0aGUgdGFibGUuXG5cdCAqIFxuXHQgKiBAcGFyYW0ge0FycmF5fSBmaWVsZHMgQSBsaXN0IG9mIHZhbHVlcyB0byBhcHBlbmQuXG5cdCAqL1xuXHRhZGRSb3cgKGZpZWxkczogeyBbbmFtZTogc3RyaW5nXTogYW55IH1bXSlcblx0e1xuXHRcdGlmIChmaWVsZHMgPT0gbnVsbClcblx0XHRcdHJldHVybjtcblxuXHRcdGlmIChmaWVsZHMubGVuZ3RoID09IDApXG5cdFx0XHRyZXR1cm47XG5cblx0XHRsZXQgdGJvZHkgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0Ym9keVwiKVswXTtcblx0XHRsZXQgaW5kZXg6IG51bWJlciA9IHRoaXMucm93RWxlbWVudHMubGVuZ3RoO1xuXHRcdC8vbGV0IHJvd1N0ciA9IGA8dHIgb25jbGljayA9IFwidGhpcy5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmhvdENvbXBvbmVudC5zZWxlY3RSb3cgKHRoaXMsICR7aW5kZXh9KTtcIj5gO1xuXG5cdFx0aWYgKHR5cGVvZiAodGhpcy5jaGVja2JveCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHR0aGlzLmNoZWNrYm94ID0gSG90U3RhcS5wYXJzZUJvb2xlYW4gKHRoaXMuY2hlY2tib3gpO1xuXG5cdFx0LyppZiAodGhpcy5jaGVja2JveCA9PT0gdHJ1ZSlcblx0XHRcdHJvd1N0ciArPSBgPHRkPjxpbnB1dCB0eXBlID0gXCJjaGVja2JveFwiIC8+PC90ZD5gO1xuXHRcdGVsc2Vcblx0XHRcdHJvd1N0ciArPSBgPHRkPjwvdGQ+YDsqL1xuXHRcdGxldCByb3dzRmllbGRzOiBhbnlbXSA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCB0aGlzLmhlYWRlcnMuaW5kaWNpZXMubGVuZ3RoOyBpSWR4KyspXG5cdFx0e1xuXHRcdFx0Ly8gQHRzLWlnbm9yZSAtIEBmaXhtZSBJIG1lc3NlZCB0aGlzIHVwLCB3aWxsIGZpeC5cblx0XHRcdGxldCBrZXk6IHN0cmluZyA9IHRoaXMuaGVhZGVycy5pbmRpY2llc1tpSWR4XTtcblxuXHRcdFx0aWYgKGtleSA9PSBudWxsKVxuXHRcdFx0XHRjb250aW51ZTtcblxuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0bGV0IHZhbHVlID0gZmllbGRzW2tleV07XG5cdFx0XHQvLyBGb3IgZWFjaCAuIGluIGtleSB3ZSBuZWVkIHRvIGdldCB0aGUgbmV4dCBvYmplY3QuXG5cdFx0XHRsZXQga2V5UGFydHM6IHN0cmluZ1tdID0ga2V5LnNwbGl0IChcIi5cIik7XG5cdFx0XHRcblx0XHRcdGlmIChrZXlQYXJ0cy5sZW5ndGggPiAxKVxuXHRcdFx0e1xuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdGxldCB0ZW1wVmFsdWU6IGFueSA9IGZpZWxkc1trZXlQYXJ0c1swXV07XG5cblx0XHRcdFx0Zm9yIChsZXQgaUlkeCA9IDE7IGlJZHggPCBrZXlQYXJ0cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGNvbnN0IHBhcnQ6IHN0cmluZyA9IGtleVBhcnRzW2lJZHhdO1xuXG5cdFx0XHRcdFx0dGVtcFZhbHVlID0gdGVtcFZhbHVlW3BhcnRdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFsdWUgPSB0ZW1wVmFsdWU7XG5cdFx0XHR9XG5cblx0XHRcdGxldCByb3dPYmogPSBudWxsO1xuXG5cdFx0XHRpZiAodGhpcy5oZWFkZXJzLmVsZW1lbnRzW2tleV0gIT0gbnVsbClcblx0XHRcdHtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZSAtIEBmaXhtZSBJIG1lc3NlZCB0aGlzIHVwLCB3aWxsIGZpeC5cblx0XHRcdFx0bGV0IGZpZWxkVHlwZTogc3RyaW5nID0gdGhpcy5nZXRGaWVsZFR5cGUgKGtleSk7XG5cblx0XHRcdFx0aWYgKGZpZWxkVHlwZSA9PSBudWxsKVxuXHRcdFx0XHRcdGZpZWxkVHlwZSA9IFwidGV4dFwiO1xuXG5cdFx0XHRcdGlmIChmaWVsZFR5cGUgIT09IFwicmVtb3ZlXCIpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjb25zdCBvcmdGaWVsZCA9IHRoaXMuaGVhZGVycy5maWVsZHNba2V5XTtcblx0XHRcdFx0XHRsZXQgZGVmYXVsdE91dHB1dDogYm9vbGVhbiA9IHRydWU7XG5cblx0XHRcdFx0XHRpZiAob3JnRmllbGQgIT0gbnVsbClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAob3JnRmllbGQub25pbnB1dCAhPSBudWxsKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIChvcmdGaWVsZC5vbmlucHV0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhlYWRlcnMuZmllbGRzW2tleV0ub25pbnB1dCA9ICg8KGl0ZW06IGFueSkgPT4gYW55Pm5ldyBGdW5jdGlvbiAob3JnRmllbGQub25pbnB1dCkpO1xuXG5cdFx0XHRcdFx0XHRcdHZhbHVlID0gb3JnRmllbGQub25pbnB1dCAodmFsdWUpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAob3JnRmllbGQub25vdXRwdXQgIT0gbnVsbClcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiAob3JnRmllbGQub25vdXRwdXQpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaGVhZGVycy5maWVsZHNba2V5XS5vbm91dHB1dCA9ICg8KGluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZz5uZXcgRnVuY3Rpb24gKG9yZ0ZpZWxkLm9ub3V0cHV0KSk7XG5cblx0XHRcdFx0XHRcdFx0ZGVmYXVsdE91dHB1dCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBuZXdPdXRwdXQ6IHN0cmluZyA9IG9yZ0ZpZWxkLm9ub3V0cHV0IChpbmRleCwgdmFsdWUpO1xuXHRcdFx0XHRcdFx0XHQvL3Jvd1N0ciArPSBuZXdPdXRwdXQ7XG5cdFx0XHRcdFx0XHRcdHJvd09iaiA9IHsgaW5kZXg6IGluZGV4LCB2YWx1ZTogbmV3T3V0cHV0IH07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGRlZmF1bHRPdXRwdXQgPT09IHRydWUpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Ly9yb3dTdHIgKz0gYDx0ZCBkYXRhLWluZGV4ID0gXCIke2luZGV4fVwiPiR7dmFsdWV9PC90ZD5gO1xuXHRcdFx0XHRcdFx0cm93T2JqID0gdmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJvd3NGaWVsZHMucHVzaCAocm93T2JqKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yb3dzID09IG51bGwpXG5cdFx0XHR0aGlzLnJvd3MgPSBbXTtcblxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHQvL3RoaXMuZGF0YVRhYmxlLnJvdy5hZGQgKHJvd3NGaWVsZHMpO1xuXHRcdC8vdGhpcy5yb3dzLnB1c2ggKHJvd3NGaWVsZHMpO1xuXHRcdC8qcm93U3RyICs9IFwiPC90cj5cIjtcblxuXHRcdGxldCBuZXdPYmogPSBIb3RTdGFxLmFkZEh0bWxVbnNhZmUgKHRib2R5LCByb3dTdHIpO1xuXG5cdFx0dGhpcy5yb3dFbGVtZW50cy5wdXNoICh7XG5cdFx0XHRcdGZpZWxkczogZmllbGRzLFxuXHRcdFx0XHRlbGVtZW50OiAoPEhUTUxFbGVtZW50Pm5ld09iailcblx0XHRcdH0pOyovXG5cdH1cblxuXHRyb3dzOiBhbnlbXTtcblxuXHQvKipcblx0ICogQ2xlYXIgdGhlIGxpc3Qgb2Ygcm93cy5cblx0ICovXG5cdGFzeW5jIGNsZWFyUm93cyAoKVxuXHR7XG5cdFx0dGhpcy5yb3dFbGVtZW50cyA9IFtdO1xuXG5cdFx0LypsZXQgdGJvZHkgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0Ym9keVwiKVswXTtcblxuXHRcdHRib2R5LmlubmVySFRNTCA9IFwiXCI7Ki9cblxuXHRcdGlmICh0aGlzLmRhdGFUYWJsZSAhPSBudWxsKVxuXHRcdHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdHRoaXMuZGF0YVRhYmxlLmNsZWFyICgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoIHRoZSBsaXN0LlxuXHQgKiBcblx0ICogQHJldHVybnMgVGhlIHRvdGFsIG51bWJlciBvZiByb3dzIGF2YWlsYWJsZSBpbiB0aGUgbGlzdC5cblx0ICovXG5cdGFzeW5jIHJlZnJlc2hMaXN0IChsaXN0OiBJQVBJUmVzcG9uc2UgPSBudWxsKTogUHJvbWlzZTxJQVBJUmVzcG9uc2U+XG5cdHtcblx0XHR0aGlzLmlzTGlzdFJlZnJlc2hpbmcgPSB0cnVlO1xuXG5cdFx0bGV0IHNlYXJjaDogSUxpc3RTZWFyY2hQcm9wZXJ0aWVzID0ge1xuXHRcdFx0XHRzZWFyY2g6IFwiXCIsXG5cdFx0XHRcdG9mZnNldDogMCxcblx0XHRcdFx0bGltaXQ6IDEwXG5cdFx0XHR9O1xuXG5cdFx0aWYgKHRoaXMuZGF0YVRhYmxlICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0Y29uc3Qgc2VhcmNoU3RyOiBzdHJpbmcgPSB0aGlzLmRhdGFUYWJsZS5zZWFyY2ggKCk7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRjb25zdCBpbmZvID0gdGhpcy5kYXRhVGFibGUucGFnZS5pbmZvICgpO1xuXG5cdFx0XHRzZWFyY2ggPSB7XG5cdFx0XHRcdHNlYXJjaDogc2VhcmNoU3RyIHx8IFwiXCIsXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0b2Zmc2V0OiBpbmZvLnN0YXJ0IHx8IDAsXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0bGltaXQ6IGluZm8ubGVuZ3RoIHx8IDEwXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLm9ubGlzdCAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmICh0eXBlb2YgKHRoaXMub25saXN0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbmxpc3QgPSAoPChzZWFyY2g6IElMaXN0U2VhcmNoUHJvcGVydGllcykgPT4gUHJvbWlzZTxJQVBJUmVzcG9uc2U+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbmxpc3QpKTtcblxuXHRcdFx0bGlzdCA9IGF3YWl0IHRoaXMub25saXN0IChzZWFyY2gpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0bGV0IGxpc3RVcmw6IHN0cmluZyA9IFwiXCI7XG5cblx0XHRcdGlmICh0aGlzLmxpc3R1cmwgIT09IFwiXCIpXG5cdFx0XHRcdGxpc3RVcmwgPSB0aGlzLmxpc3R1cmw7XG5cblx0XHRcdGlmIChsaXN0VXJsICE9PSBcIlwiKVxuXHRcdFx0e1xuXHRcdFx0XHRsaXN0ID0gYXdhaXQgSG90Lmpzb25SZXF1ZXN0IChsaXN0VXJsLCB7XG5cdFx0XHRcdFx0XHRzY2hlbWE6IHRoaXMuc2NoZW1hLFxuXHRcdFx0XHRcdFx0c2VhcmNoOiBzZWFyY2hcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLmNsZWFyUm93cyAoKTtcblxuXHRcdGlmIChsaXN0ICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKGxpc3QuZXJyb3IgIT0gbnVsbClcblx0XHRcdHtcblx0XHRcdFx0Y29uc29sZS5lcnJvciAoYExpc3QgZXJyb3I6ICR7bGlzdC5lcnJvcn1gKTtcblx0XHRcdFx0dGhpcy5pc0xpc3RSZWZyZXNoaW5nID0gZmFsc2U7XG5cblx0XHRcdFx0cmV0dXJuIChudWxsKTtcblx0XHRcdH1cblxuXHRcdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBsaXN0LmRhdGEubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBlbG0gPSBsaXN0LmRhdGFbaUlkeF07XG5cblx0XHRcdFx0Zm9yIChsZXQga2V5IGluIGVsbSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxldCB2YWx1ZSA9IGVsbVtrZXldO1xuXHRcdFx0XHRcdGxldCBmaWVsZFR5cGU6IHN0cmluZyA9IHRoaXMuZ2V0RmllbGRUeXBlIChrZXkpO1xuXG5cdFx0XHRcdFx0aWYgKGZpZWxkVHlwZSA9PSBudWxsKVxuXHRcdFx0XHRcdFx0ZmllbGRUeXBlID0gXCJ0ZXh0XCI7XG5cblx0XHRcdFx0XHRpZiAoZmllbGRUeXBlICE9PSBcInJlbW92ZVwiKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbnN0IG9yZ0ZpZWxkID0gdGhpcy5oZWFkZXJzLmZpZWxkc1trZXldO1xuXHRcdFx0XHRcdFx0bGV0IGRlZmF1bHRPdXRwdXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdFx0XHRcdFx0XHRpZiAob3JnRmllbGQgIT0gbnVsbClcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkLm9uaW5wdXQgIT0gbnVsbClcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgKG9yZ0ZpZWxkLm9uaW5wdXQpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5oZWFkZXJzLmZpZWxkc1trZXldLm9uaW5wdXQgPSAoPChpdGVtOiBhbnkpID0+IGFueT5uZXcgRnVuY3Rpb24gKG9yZ0ZpZWxkLm9uaW5wdXQpKTtcblxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlID0gb3JnRmllbGQub25pbnB1dCAodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkLm9ub3V0cHV0ICE9IG51bGwpXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIChvcmdGaWVsZC5vbm91dHB1dCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmhlYWRlcnMuZmllbGRzW2tleV0ub25vdXRwdXQgPSAoPChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc+bmV3IEZ1bmN0aW9uIChvcmdGaWVsZC5vbm91dHB1dCkpO1xuXG5cdFx0XHRcdFx0XHRcdFx0ZGVmYXVsdE91dHB1dCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG5ld091dHB1dDogc3RyaW5nID0gb3JnRmllbGQub25vdXRwdXQgKGlJZHgsIHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IG5ld091dHB1dDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRsaXN0LmRhdGFbaUlkeF1ba2V5XSA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGxldCB0Ym9keSA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lIChcInRib2R5XCIpWzBdO1xuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHR0Ym9keS5ob3RDb21wb25lbnQgPSB0aGlzO1xuXHRcdCQodGJvZHkpLm9uICgnY2xpY2snLCAndHInLCBmdW5jdGlvbiAoKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zdCBob3RDb21wb25lbnQ6IEFkbWluVGFibGUgPSB0aGlzLnBhcmVudE5vZGUuaG90Q29tcG9uZW50O1xuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gaG90Q29tcG9uZW50LmRhdGFUYWJsZS5yb3cgKHRoaXMpLmluZGV4ICgpO1xuXG5cdFx0XHRcdGlmIChpbmRleCAhPSBudWxsKVxuXHRcdFx0XHRcdGhvdENvbXBvbmVudC5zZWxlY3RSb3cgKHRoaXMsIGluZGV4KTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKGhvdENvbXBvbmVudC5hdHRhY2hlZEVkaXQgIT0gbnVsbClcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAoaG90Q29tcG9uZW50LmF0dGFjaGVkRWRpdC5hZGRDbGlja2VkICE9IG51bGwpXG5cdFx0XHRcdFx0XHRcdGhvdENvbXBvbmVudC5hdHRhY2hlZEVkaXQuYWRkQ2xpY2tlZCAoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0dGhpcy5pc0xpc3RSZWZyZXNoaW5nID0gZmFsc2U7XG5cblx0XHRyZXR1cm4gKGxpc3QpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByZXBhcmUgZGF0YS5cblx0ICovXG5cdHByZXBhcmVEYXRhIChjdXJyZW50RGF0YTogYW55W10gfCBJQVBJUmVzcG9uc2UpOiB7XG5cdFx0XHRkcmF3OiBhbnk7XG5cdFx0XHRkYXRhOiBhbnlbXTtcblx0XHRcdHJlY29yZHNUb3RhbDogbnVtYmVyO1xuXHRcdFx0cmVjb3Jkc0ZpbHRlcmVkOiBudW1iZXI7XG5cdFx0fVxuXHR7XG5cdFx0Y29uc3QgY2FsbGJhY2tPYmo6IGFueSA9IHtcblx0XHRcdGRyYXc6IHRoaXMudGFibGVEYXRhLFxuXHRcdFx0ZGF0YTogW10sXG5cdFx0XHRyZWNvcmRzVG90YWw6IDAsXG5cdFx0XHRyZWNvcmRzRmlsdGVyZWQ6IDBcblx0XHR9O1xuXG5cdFx0aWYgKGN1cnJlbnREYXRhICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKCEgKGN1cnJlbnREYXRhIGluc3RhbmNlb2YgQXJyYXkpKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoY3VycmVudERhdGEubGVuZ3RoICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjYWxsYmFja09iai5yZWNvcmRzVG90YWwgPSBjdXJyZW50RGF0YS5sZW5ndGg7XG5cdFx0XHRcdFx0Y2FsbGJhY2tPYmoucmVjb3Jkc0ZpbHRlcmVkID0gY3VycmVudERhdGEubGVuZ3RoO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGN1cnJlbnREYXRhLmRhdGEgIT0gbnVsbClcblx0XHRcdFx0XHRjYWxsYmFja09iai5kYXRhID0gY3VycmVudERhdGEuZGF0YTtcblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0Y2FsbGJhY2tPYmouZGF0YSA9IGN1cnJlbnREYXRhO1xuXHRcdFx0XHRjYWxsYmFja09iai5yZWNvcmRzVG90YWwgPSBjdXJyZW50RGF0YS5sZW5ndGg7XG5cdFx0XHRcdGNhbGxiYWNrT2JqLnJlY29yZHNGaWx0ZXJlZCA9IGN1cnJlbnREYXRhLmxlbmd0aDtcblx0XHRcdH1cblxuXHRcdFx0bGV0IHNhbml0aXplID0gdHJ1ZTtcblxuXHRcdFx0aWYgKGNhbGxiYWNrT2JqLmRhdGEuaG90U2FuaXRpemUgIT0gbnVsbClcblx0XHRcdFx0c2FuaXRpemUgPSBjYWxsYmFja09iai5kYXRhLmhvdFNhbml0aXplO1xuXG5cdFx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGNhbGxiYWNrT2JqLmRhdGEubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnN0IHJvdyA9IGNhbGxiYWNrT2JqLmRhdGFbaUlkeF07XG5cblx0XHRcdFx0aWYgKHNhbml0aXplID09PSB0cnVlKVxuXHRcdFx0XHRcdGNhbGxiYWNrT2JqLmRhdGFbaUlkeF0gPSBIb3RTdGFxLnNhbml0aXplSlNPTiAocm93KTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdGNhbGxiYWNrT2JqLmRhdGFbaUlkeF0gPSByb3c7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChjYWxsYmFja09iaik7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBsaXN0IG9mIGRhdGEgZnJvbSB0aGUgc2VydmVyLlxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdHNldFRpbWVvdXQgKGFzeW5jICgpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGNvbnN0IHRhYmxlID0gJChodG1sRWxlbWVudCkuZmluZChcInRhYmxlXCIpO1xuXG5cdFx0XHRcdC8vIFRoZSBkYXRhIHN0b3JlZCBpbiBjb2x1bW5zIHNob3VsZCBiZSBjb25zaWRlcmVkIHNhZmUgYXMgaXQgY29tZXMgZGlyZWN0bHkgZnJvbSBcblx0XHRcdFx0Ly8gdGhlIEhUTUwgYWZ0ZXIgbG9hZC5cblx0XHRcdFx0bGV0IGNvbHVtbnM6IENvbmZpZ0NvbHVtbnNbXSA9IFtdO1xuXHRcdFx0XHQkKHRhYmxlKS5maW5kIChcInRoZWFkIHRoXCIpLmVhY2ggKGZ1bmN0aW9uICgpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0Y29uc3QgdGV4dCA9ICQodGhpcykudGV4dCAoKTtcblx0XHRcdFx0XHRcdGNvbnN0IGRhdGEgPSAkKHRoaXMpLmRhdGEgKFwiZmllbGRcIik7XG5cdFx0XHRcdFx0XHRsZXQgZGF0YVR5cGUgPSAkKHRoaXMpLmRhdGEgKFwiZmllbGQtdHlwZVwiKTtcblxuXHRcdFx0XHRcdFx0aWYgKCh0ZXh0ID09IG51bGwpIHx8ICh0ZXh0ID09PSBcIlwiKSlcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHRcdFx0XHRpZiAoKGRhdGEgPT0gbnVsbCkgfHwgKGRhdGEgPT09IFwiXCIpKVxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdFx0XHRcdGlmIChkYXRhVHlwZSA9PT0gXCJ0ZXh0XCIpXG5cdFx0XHRcdFx0XHRcdGRhdGFUeXBlID0gXCJzdHJpbmdcIjtcblxuXHRcdFx0XHRcdFx0Y29sdW1ucy5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogdGV4dCxcblx0XHRcdFx0XHRcdFx0XHRkYXRhOiBkYXRhXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdCQodGFibGUpLmZpbmQgKFwidGhlYWRcIikucmVtb3ZlICgpO1xuXG5cdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0dGhpcy5kYXRhVGFibGUgPSBuZXcgRGF0YVRhYmxlICh0YWJsZVswXSwge1xuXHRcdFx0XHRcdHByb2Nlc3Npbmc6IHRydWUsXG5cdFx0XHRcdFx0c2VydmVyU2lkZTogdHJ1ZSxcblx0XHRcdFx0XHRjb2xSZW9yZGVyOiB0cnVlLFxuXHRcdFx0XHRcdHNjcm9sbGVyOiB0cnVlLFxuXHRcdFx0XHRcdHNlbGVjdDogdHJ1ZSxcblx0XHRcdFx0XHRkb206ICdRbGZydGlwJyxcblx0XHRcdFx0XHRjb2x1bW5zOiBjb2x1bW5zLFxuXHRcdFx0XHRcdGRhdGE6IFtdLFxuXHRcdFx0XHRcdGFqYXg6IGFzeW5jIChkYXRhOiBvYmplY3QsIGNhbGxiYWNrOiAoKGRhdGE6IGFueSkgPT4gdm9pZCksIHNldHRpbmdzOiBJbnRlcm5hbFNldHRpbmdzKSA9PlxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5pc0xpc3RSZWZyZXNoaW5nID09PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblxuXHRcdFx0XHRcdFx0XHR0aGlzLnRhYmxlQ2FsbGJhY2sgPSBjYWxsYmFjaztcblx0XHRcdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdFx0XHR0aGlzLnRhYmxlRGF0YSA9IGRhdGEuZHJhdztcblxuXHRcdFx0XHRcdFx0XHRsZXQgY3VycmVudERhdGEgPSBhd2FpdCB0aGlzLnJlZnJlc2hMaXN0ICgpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwcmVwYXJlZERhdGEgPSB0aGlzLnByZXBhcmVEYXRhIChjdXJyZW50RGF0YSk7XG5cblx0XHRcdFx0XHRcdFx0dGhpcy50YWJsZUNhbGxiYWNrIChwcmVwYXJlZERhdGEpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSwgNTApOyAvLy8gQHRvZG8gRml4IHRoaXMgc3R1cGlkIGhhY2suIFRoaXMgc2hvdWxkIGhhcHBlbiBzbGlnaHRseSBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGJlZW4gbG9hZGVkLlxuXG5cdFx0cmV0dXJuIChudWxsKTtcblx0fVxuXG5cdG91dHB1dCAoKTogc3RyaW5nIHwgSG90Q29tcG9uZW50T3V0cHV0W11cblx0e1xuXHRcdGxldCBlbXB0eUNoZWNrYm94SGVhZGVyOiBzdHJpbmcgPSBcIjx0aD48L3RoPlwiO1xuXG5cdFx0cmV0dXJuIChgXG5cdFx0PGRpdiBpZCA9IFwiJHt0aGlzLmh0bWxFbGVtZW50c1swXS5pZH1cIj5cblx0XHRcdDxoMj4ke3RoaXMudGl0bGV9PC9oMj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XG5cdFx0XHQ8dGFibGUgaWQgPSBcIiR7dGhpcy5odG1sRWxlbWVudHNbMF0uaWR9VGFibGVcIiBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwZWQgdGFibGUtc21cIj5cblx0XHRcdFx0PHRoZWFkPlxuXHRcdFx0XHRcdDx0ciBob3QtcGxhY2UtaGVyZSA9IFwiaGVhZGVyXCI+XG5cdFx0XHRcdFx0XHQke2VtcHR5Q2hlY2tib3hIZWFkZXJ9XG5cdFx0XHRcdFx0PC90cj5cblx0XHRcdFx0PC90aGVhZD5cblx0XHRcdFx0PHRib2R5IGhvdC1wbGFjZS1oZXJlID0gXCJyZXN1bHRzXCI+XG5cdFx0XHRcdDwvdGJvZHk+XG5cdFx0XHQ8L3RhYmxlPlxuXHRcdFx0PGhvdC1wbGFjZS1oZXJlIG5hbWUgPSBcImFmdGVyVGFibGVcIj48L2hvdC1wbGFjZS1oZXJlPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+YCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQsIEhvdENvbXBvbmVudE91dHB1dCB9IGZyb20gXCJob3RzdGFxXCI7XG5cbmV4cG9ydCBjbGFzcyBBZG1pblRleHQgZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIElmIHNldCB0byAxLCB0aGlzIHdpbGwgbm90IG91dHB1dCB0aGUgZmllbGQuXG5cdCAqL1xuXHRub19vdXRwdXQ6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBjbGFzc2VzIHRvIHNldCBmb3IgdGhlIGlucHV0LlxuXHQgKiBAZGVmYXVsdCBcImZvcm0tY29udHJvbFwiXG5cdCAqL1xuXHRjc3NfY2xhc3M6IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi10ZXh0XCI7XG5cdFx0dGhpcy5ub19vdXRwdXQgPSBcIjBcIjtcblx0XHR0aGlzLmNzc19jbGFzcyA9IFwiZm9ybS1jb250cm9sXCJcblx0fVxuXG5cdC8qKlxuXHQgKiBDb3JyZWN0cyB0aGUgcGxhY2VtZW50IG9mIHRoZSB0ZXh0IGVsZW1lbnRzIGZvciBtb2RhbHMuXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0bGV0IHBsYWNlSGVyZUFycmF5ID0gcGFyZW50SHRtbEVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCAoYGhvdC1wbGFjZS1oZXJlW3R5cGU9XCJtb2RhbFwiXWApO1xuXG5cdFx0aWYgKHBsYWNlSGVyZUFycmF5Lmxlbmd0aCA+IDApXG5cdFx0e1xuXHRcdFx0bGV0IHBsYWNlSGVyZSA9IHBsYWNlSGVyZUFycmF5WzBdO1xuXHRcdFx0cGFyZW50SHRtbEVsZW1lbnQucmVtb3ZlQ2hpbGQgKGh0bWxFbGVtZW50KTtcblx0XHRcdHBsYWNlSGVyZS5hcHBlbmRDaGlsZCAoaHRtbEVsZW1lbnQpO1xuXHRcdH1cblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZyB8IEhvdENvbXBvbmVudE91dHB1dFtdXG5cdHtcblx0XHRsZXQgdmFsdWU6IHN0cmluZyA9IFwiXCI7XG5cblx0XHRpZiAodGhpcy52YWx1ZSAhPSBudWxsKVxuXHRcdFx0dmFsdWUgPSB0aGlzLnZhbHVlO1xuXG5cdFx0aWYgKHRoaXMubm9fb3V0cHV0ID09PSBcIjFcIilcblx0XHRcdHJldHVybiAoYDxkaXY+PGlucHV0IGNsYXNzPVwiJHt0aGlzLmNzc19jbGFzc31cIiB0eXBlID0gXCJoaWRkZW5cIiB2YWx1ZSA9IFwiJHt2YWx1ZX1cIiAvPjwvZGl2PmApO1xuXG5cdFx0Y29uc3QgZmllbGQgPSB0aGlzLmh0bWxFbGVtZW50c1swXS5nZXRBdHRyaWJ1dGUgKFwiaG90LWZpZWxkXCIpO1xuXHRcdGxldCBmaWVsZF90eXBlID0gdGhpcy5odG1sRWxlbWVudHNbMF0uZ2V0QXR0cmlidXRlIChcImhvdC1maWVsZC10eXBlXCIpO1xuXHRcdGxldCBodG1sVHlwZSA9IHRoaXMuaHRtbEVsZW1lbnRzWzBdLmdldEF0dHJpYnV0ZSAoXCJ0eXBlXCIpIHx8IFwidGV4dFwiO1xuXG5cdFx0aWYgKGZpZWxkX3R5cGUgPT0gbnVsbClcblx0XHRcdGZpZWxkX3R5cGUgPSBcInRleHRcIjtcblxuXHRcdHJldHVybiAoYDxkaXY+XG5cdFx0XHQ8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+JHt0aGlzLmlubmVyfTwvbGFiZWw+XG5cdFx0XHQ8aW5wdXQgY2xhc3M9XCIke3RoaXMuY3NzX2NsYXNzfVwiIHR5cGUgPSBcIiR7aHRtbFR5cGV9XCIgaG90LWZpZWxkID0gXCIke2ZpZWxkfVwiIGhvdC1maWVsZC10eXBlID0gXCIke2ZpZWxkX3R5cGV9XCIgdmFsdWUgPSBcIiR7dmFsdWV9XCIgLz5cblx0XHQ8L2Rpdj5gKTtcblx0fVxufVxuIiwiaW1wb3J0IHsgSG90U3RhcSwgSG90LCBIb3RBUEksIEhvdENvbXBvbmVudCwgSG90Q29tcG9uZW50T3V0cHV0IH0gZnJvbSBcImhvdHN0YXFcIjtcbmltcG9ydCB7IEFkbWluVGFibGUgfSBmcm9tIFwiLi9hZG1pbi10YWJsZVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5UYWJsZUZpZWxkIGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBUaGUgdGFibGUgZmllbGQuXG5cdCAqL1xuXHRmaWVsZDogbnVtYmVyO1xuXHQvKipcblx0ICogVGhlIHR5cGUgb2YgZmllbGQuIENhbiBiZTpcblx0ICogKiB0ZXh0XG5cdCAqICogcmVtb3ZlXG5cdCAqIFxuXHQgKiBEZWZhdWx0OiB0ZXh0XG5cdCAqL1xuXHRmaWVsZF90eXBlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBJZiBzZXQgdG8gMSwgdGhpcyB3aWxsIG5vdCBvdXRwdXQgdGhlIGZpZWxkLlxuXHQgKi9cblx0bm9fb3V0cHV0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgb25pbnB1dCBldmVudCBpcyBmaXJlZCB3aGVuIGFuIGl0ZW0gaXMgYWJvdXQgdG8gYmUgcGxhY2VkIGludG8gdGhlIHRhYmxlLlxuXHQgKi9cblx0b25pbnB1dDogKGl0ZW06IGFueSkgPT4gYW55O1xuXHQvKipcblx0ICogVGhlIG91dHB1dCB0byBkaXNwbGF5LlxuXHQgKi9cblx0b25vdXRwdXQ6IChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tdGFibGUtZmllbGRcIjtcblx0XHR0aGlzLmZpZWxkID0gMDtcblx0XHR0aGlzLmZpZWxkX3R5cGUgPSBcInRleHRcIjtcblx0XHR0aGlzLm5vX291dHB1dCA9IFwiMFwiO1xuXHRcdHRoaXMub25pbnB1dCA9IG51bGw7XG5cdFx0dGhpcy5vbm91dHB1dCA9IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHRoaXMgdGFibGUgZmllbGQgdG8gdGhlIHRhYmxlXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0bGV0IGhvdENvbXBvbmVudDogQWRtaW5UYWJsZSA9IG51bGw7XG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0aWYgKHBhcmVudEh0bWxFbGVtZW50LnBhcmVudE5vZGUucGFyZW50Tm9kZS5ob3RDb21wb25lbnQgIT0gbnVsbClcblx0XHR7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRob3RDb21wb25lbnQgPSBwYXJlbnRIdG1sRWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGUuaG90Q29tcG9uZW50O1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0Ly8gQHRzLWlnbm9yZSAtIGxvb29vbC4gQWRkIGEgYmV0dGVyIHdheSB0byBnZXQgdGhlIHBhcmVudCBIb3RDb21wb25lbnQuXG5cdFx0XHRob3RDb21wb25lbnQgPSBwYXJlbnRIdG1sRWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmhvdENvbXBvbmVudDtcblx0XHR9XG5cblx0XHRpZiAoaG90Q29tcG9uZW50ICE9IG51bGwpXG5cdFx0XHRob3RDb21wb25lbnQuYWRkSGVhZGVyRGF0YU9ubHkgKHRoaXMsIGh0bWxFbGVtZW50KTtcblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZyB8IEhvdENvbXBvbmVudE91dHB1dFtdXG5cdHtcblx0XHRpZiAodGhpcy5ub19vdXRwdXQgPT09IFwiMVwiKVxuXHRcdHtcblx0XHRcdHJldHVybiAoW3tcblx0XHRcdFx0aHRtbDogYDxkaXY+PC9kaXY+YCxcblx0XHRcdFx0cGxhY2VIZXJlUGFyZW50OiBcImFmdGVyVGFibGVcIlxuXHRcdFx0fV0pO1xuXHRcdH1cblxuXHRcdHJldHVybiAoW3tcblx0XHRcdGh0bWw6IGA8dGggZGF0YS1maWVsZCA9IFwiJHt0aGlzLmZpZWxkfVwiIGRhdGEtZmllbGQtdHlwZSA9IFwiJHt0aGlzLmZpZWxkX3R5cGV9XCI+JHt0aGlzLmlubmVyfTwvdGg+YCxcblx0XHRcdHBsYWNlSGVyZVBhcmVudDogXCJoZWFkZXJcIlxuXHRcdH1dKTtcblx0fVxufVxuIiwiaW1wb3J0IHsgSG90U3RhcSwgSG90LCBIb3RBUEksIEhvdENvbXBvbmVudCwgSG90Q29tcG9uZW50T3V0cHV0IH0gZnJvbSBcImhvdHN0YXFcIjtcblxuZXhwb3J0IGNsYXNzIEFkbWluVGFibGVSb3cgZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIFRoZSBmaWVsZHMgYXJlIHN0b3JlZCBpbiBhIGtleS92YWx1ZSBvYmplY3QuXG5cdCAqIFxuXHQgKiBAZXhhbXBsZSB7IFwibmFtZVwiOiBcIkpvaG4gU21pdGhcIiwgXCJlbWFpbFwiOiBcImpvaG4uc21pdGhAZW1haWwuY29tXCIgfVxuXHQgKi9cblx0ZmllbGRzOiBhbnlbXTtcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi10YWJsZS1yb3dcIjtcblx0XHR0aGlzLmZpZWxkcyA9IFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGlzIHRhYmxlIHJvdyB0byB0aGUgdGFibGVcblx0ICovXG5cdG9uUG9zdFBsYWNlIChwYXJlbnRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50XG5cdHtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0cGFyZW50SHRtbEVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUuaG90Q29tcG9uZW50LnJvd0VsZW1lbnRzLnB1c2ggKHsgZmllbGRzOiB0aGlzLmZpZWxkcywgZWxlbWVudDogaHRtbEVsZW1lbnR9KTtcblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZyB8IEhvdENvbXBvbmVudE91dHB1dFtdXG5cdHtcblx0XHRsZXQgcm93SHRtbCA9IFwiXCI7XG5cblx0XHRpZiAodGhpcy5maWVsZHMubGVuZ3RoID4gMClcblx0XHRcdHJvd0h0bWwgKz0gYDx0ZD48aW5wdXQgdHlwZSA9IFwiY2hlY2tib3hcIiAvPjwvdGQ+YDtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgdGhpcy5maWVsZHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0e1xuXHRcdFx0bGV0IGZpZWxkT2JqID0gdGhpcy5maWVsZHNbaUlkeF07XG5cblx0XHRcdGZvciAobGV0IGtleSBpbiBmaWVsZE9iailcblx0XHRcdHtcblx0XHRcdFx0bGV0IHZhbHVlID0gZmllbGRPYmpba2V5XTtcblxuXHRcdFx0XHRyb3dIdG1sICs9IGA8dGQ+JHt2YWx1ZX08L3RkPmA7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChbe1xuXHRcdFx0aHRtbDogYDx0cj4ke3Jvd0h0bWx9PC90cj5gLFxuXHRcdFx0cGxhY2VIZXJlUGFyZW50OiBcInJlc3VsdHNcIlxuXHRcdH1dKTtcblx0fVxufVxuIiwiaW1wb3J0IHsgSG90U3RhcSwgSG90LCBIb3RBUEksIEhvdENvbXBvbmVudCB9IGZyb20gXCJob3RzdGFxXCI7XG5cbmV4cG9ydCBjbGFzcyBBZG1pbkRhc2hib2FyZCBleHRlbmRzIEhvdENvbXBvbmVudFxue1xuXHQvKipcblx0ICogVGhlIHRpdGxlIG9mIHRoaXMgZGFzaGJvYXJkLlxuXHQgKi9cblx0dGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBiYXNlIHVybCB0byB1c2UgZm9yIHRoaXMgZGFzaGJvYXJkLlxuXHQgKi9cblx0YmFzZTogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yIChjb3B5OiBIb3RDb21wb25lbnQgfCBIb3RTdGFxLCBhcGk6IEhvdEFQSSlcblx0e1xuXHRcdHN1cGVyIChjb3B5LCBhcGkpO1xuXG5cdFx0dGhpcy50YWcgPSBcImFkbWluLWRhc2hib2FyZFwiO1xuXHRcdHRoaXMudGl0bGUgPSBcIlwiO1xuXHRcdHRoaXMuYmFzZSA9IFwiXCI7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIHRoaXMgdGFibGUgZmllbGQgdG8gdGhlIHRhYmxlXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0aWYgKEhvdC5EYXRhLkFkbWluUGFuZWwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwgPSB7fTtcblxuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwuYmFzZVVybCA9IHRoaXMuYmFzZTtcblxuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsLmFkZFVybCA9PSBudWxsKVxuXHRcdFx0SG90LkRhdGEuQWRtaW5QYW5lbC5hZGRVcmwgPSBgJHtIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmx9L3YxL2RhdGEvYWRkYDtcblxuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsLmVkaXRVcmwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwuZWRpdFVybCA9IGAke0hvdC5EYXRhLkFkbWluUGFuZWwuYmFzZVVybH0vdjEvZGF0YS9lZGl0YDtcblxuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsLnJlbW92ZVVybCA9PSBudWxsKVxuXHRcdFx0SG90LkRhdGEuQWRtaW5QYW5lbC5yZW1vdmVVcmwgPSBgJHtIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmx9L3YxL2RhdGEvcmVtb3ZlYDtcblxuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsLmxpc3RVcmwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwubGlzdFVybCA9IGAke0hvdC5EYXRhLkFkbWluUGFuZWwuYmFzZVVybH0vdjEvZGF0YS9saXN0YDtcblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZ1xuXHR7XG5cdFx0cmV0dXJuIChgXG5cdFx0PG1haW4gY2xhc3M9XCJjb2wtbWQtOSBtcy1zbS1hdXRvIGNvbC1sZy0xMCBweC1tZC00XCI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGZsZXgtd3JhcCBmbGV4LW1kLW5vd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgcHQtMyBwYi0yIG1iLTMgYm9yZGVyLWJvdHRvbVwiPlxuXHRcdFx0XHQ8aDEgY2xhc3M9XCJoMlwiPiR7dGhpcy50aXRsZX08L2gxPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiYnRuLXRvb2xiYXIgbWItMiBtYi1tZC0wXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi1ncm91cCBtZS0yXCI+XG5cdFx0XHRcdFx0XHQ8aG90LXBsYWNlLWhlcmUgbmFtZSA9IFwiZGFzaGJvYXJkSGVhZGVyXCI+PC9ob3QtcGxhY2UtaGVyZT5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxob3QtcGxhY2UtaGVyZSBuYW1lID0gXCJib2R5XCI+PC9ob3QtcGxhY2UtaGVyZT5cblx0XHQ8L21haW4+YCk7XG5cdH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCJpbXBvcnQgeyBBZG1pbkJ1dHRvbiB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tYnV0dG9uXCI7XG5pbXBvcnQgeyBBZG1pbkRyb3Bkb3duIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi1kcm9wZG93blwiO1xuaW1wb3J0IHsgQWRtaW5EYXNoYm9hcmQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2FkbWluLWRhc2hib2FyZFwiO1xuaW1wb3J0IHsgQWRtaW5FZGl0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi1lZGl0XCI7XG5pbXBvcnQgeyBBZG1pblRhYmxlIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi10YWJsZVwiO1xuaW1wb3J0IHsgQWRtaW5UYWJsZUZpZWxkIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi10YWJsZS1maWVsZFwiO1xuaW1wb3J0IHsgQWRtaW5UYWJsZVJvdyB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tdGFibGUtcm93XCI7XG5pbXBvcnQgeyBBZG1pblRleHQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2FkbWluLXRleHRcIjtcblxuZXhwb3J0IHtcblx0XHRBZG1pbkJ1dHRvbixcblx0XHRBZG1pbkRyb3Bkb3duLFxuXHRcdEFkbWluRGFzaGJvYXJkLFxuXHRcdEFkbWluRWRpdCxcblx0XHRBZG1pblRhYmxlLFxuXHRcdEFkbWluVGFibGVGaWVsZCxcblx0XHRBZG1pblRhYmxlUm93LFxuXHRcdEFkbWluVGV4dFxuXHR9OyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiRGF0YVRhYmxlIiwiSG90U3RhcVdlYiIsIkFkbWluRHJvcGRvd24iLCJIb3RDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsImNvcHkiLCJhcGkiLCJzdXBlciIsInRoaXMiLCJ0YWciLCJwbGFjZWhvbGRlciIsIm9uc2VhcmNoIiwib25zZWxlY3QiLCJvblBvc3RQbGFjZSIsInBhcmVudEh0bWxFbGVtZW50IiwiaHRtbEVsZW1lbnQiLCJwbGFjZUhlcmVBcnJheSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJwbGFjZUhlcmUiLCJyZW1vdmVDaGlsZCIsImFwcGVuZENoaWxkIiwiRnVuY3Rpb24iLCJxdWVyeVNlbGVjdG9yIiwiYWRkRXZlbnRMaXN0ZW5lciIsImV2ZW50Iiwic2VhcmNoVGV4dCIsImN1cnJlbnRUYXJnZXQiLCJ2YWx1ZSIsInJlc3VsdHMiLCJzZWFyY2hSZXN1bHRzRGl2IiwiJCIsImh0bWxFbGVtZW50cyIsImZpbmQiLCJlbXB0eSIsImlJZHgiLCJyZXN1bHQiLCJ1cmwiLCJ0ZXh0IiwiJHRlbXBsYXRlIiwiJGEiLCJhdHRyIiwicmVtb3ZlQXR0ciIsIm9uIiwic2VsZWN0ZWQiLCJhcHBlbmQiLCJpbmRleCIsImdldEF0dHJpYnV0ZSIsImlubmVySFRNTCIsIm91dHB1dCIsImlubmVyIiwiYm9vdHN0cmFwIiwiQWRtaW5FZGl0Iiwib25BZGRDbGlja2VkIiwib25FZGl0Q2xpY2tlZCIsIm9uUmVtb3ZlQ2xpY2tlZCIsInRpdGxlIiwiYnV0dG9uX3RpdGxlIiwiYXR0YWNoZWRfbGlzdCIsInNjaGVtYSIsIm1vZGFsSWQiLCJhZGRfdGV4dCIsImFkZF9wbGFjZV9oZXJlIiwiZWRpdF90ZXh0IiwiZWRpdF9wbGFjZV9oZXJlIiwicmVtb3ZlX3RleHQiLCJyZW1vdmVfcGxhY2VfaGVyZSIsImNzc19jbGFzcyIsIm1vZGFsIiwibW9kYWxUeXBlIiwiY2xvc2VPblNhdmUiLCJzZWxlY3RlZEZpZWxkcyIsIm9uc2F2ZSIsIm9uZWRpdCIsIm9uZGVsZXRlIiwicHJvY2Vzc0hvdEZpZWxkcyIsIm9uRmllbGQiLCJlbG1zIiwiZWxtIiwiZmllbGQiLCJmaWVsZFR5cGUiLCJmaWVsZElucHV0IiwibmFtZSIsInR5cGUiLCJpbnB1dCIsImFkZENsaWNrZWQiLCJ2YWwiLCJvbmFkZCIsIk1vZGFsIiwiZ2V0SW5zdGFuY2UiLCJzaG93IiwiZ2V0QXR0YWNoZWRIVE1MTGlzdHMiLCJzdHJzIiwic3BsaXQiLCJhdHRhY2hlZExpc3RzIiwiaSIsImF0dGFjaGVkTGlzdCIsImF0dGFjaGVkTGlzdE9iaiIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJwdXNoIiwiZ2V0QXR0YWNoZWRMaXN0cyIsImF0dGFjaGVkTGlzdE9ianMiLCJob3RDb21wb25lbnQiLCJlZGl0Q2xpY2tlZCIsImNsaWNrZWRUYWJsZSIsInRhYmxlIiwiYXR0YWNoZWRFZGl0Iiwic2VsZWN0ZWRGaWVsZCIsImdldFNlbGVjdGVkIiwiZnVuYyIsImNhbGwiLCJyZW1vdmVDbGlja2VkIiwid2hlcmVGaWVsZHMiLCJjaGVja2VkUm93cyIsImdldENoZWNrZWRSb3dzIiwiY2hlY2tlZFJvdyIsImNvbmZpcm0iLCJ3aGVyZUZpZWxkIiwia2V5IiwiZ2V0RmllbGRUeXBlIiwicmVtb3ZlVXJsIiwiSG90IiwiRGF0YSIsIkFkbWluUGFuZWwiLCJqc29uUmVxdWVzdCIsImN1cnJlbnREYXRhIiwicmVmcmVzaExpc3QiLCJwcmVwYXJlZERhdGEiLCJwcmVwYXJlRGF0YSIsInRhYmxlQ2FsbGJhY2siLCJvblNhdmUiLCJ2YWx1ZXMiLCJmaWVsZFNhdmUiLCJhZGRVcmwiLCJmaWVsZHMiLCJhbGVydCIsImVkaXRVcmwiLCJoaWRlIiwic2V0VGltZW91dCIsIkVycm9yIiwib3V0cHV0T2JqIiwiaHRtbCIsImRvY3VtZW50U2VsZWN0b3IiLCJBZG1pbkJ1dHRvbiIsIm9uY2xpY2siLCJidXR0b25DbGlja2VkIiwiaWQiLCJBZG1pblRhYmxlIiwicm93RWxlbWVudHMiLCJoZWFkZXJzIiwiZWxlbWVudHMiLCJpbmRpY2llcyIsInRhYmxlRGF0YSIsIm9ubGlzdCIsImxpc3R1cmwiLCJjaGVja2JveCIsInNpbmdsZWNsaWNrZWRpdCIsIm9uc2VsZWN0ZWRyb3ciLCJkYXRhVGFibGUiLCJpc0xpc3RSZWZyZXNoaW5nIiwiYWRkSGVhZGVyIiwidGFibGVGaWVsZEVsZW1lbnQiLCJoZWFkZXIiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImFkZEhlYWRlckRhdGFPbmx5IiwidGFibGVGaWVsZCIsImZpZWxkTmFtZSIsInNlbGVjdFJvdyIsInJvd0luZGV4Iiwicm93cyIsInJvdyIsImNsYXNzTGlzdCIsImNvbnRhaW5zIiwicmVtb3ZlIiwiYWRkIiwiSG90U3RhcSIsInBhcnNlQm9vbGVhbiIsIml0ZW0iLCJkYXRhIiwiY2hlY2tib3hlcyIsImNoZWNrZWQiLCJkYXRhSW5kZXhTdHIiLCJwYXJlbnRFbGVtZW50IiwiZGF0YUluZGV4IiwicGFyc2VJbnQiLCJnZXRSb3ciLCJhZGRSb3ciLCJyb3dzRmllbGRzIiwia2V5UGFydHMiLCJ0ZW1wVmFsdWUiLCJyb3dPYmoiLCJvcmdGaWVsZCIsImRlZmF1bHRPdXRwdXQiLCJvbmlucHV0Iiwib25vdXRwdXQiLCJjbGVhclJvd3MiLCJjbGVhciIsImxpc3QiLCJzZWFyY2giLCJvZmZzZXQiLCJsaW1pdCIsInNlYXJjaFN0ciIsImluZm8iLCJwYWdlIiwic3RhcnQiLCJsaXN0VXJsIiwiZXJyb3IiLCJjb25zb2xlIiwidGJvZHkiLCJwYXJlbnROb2RlIiwiY2FsbGJhY2tPYmoiLCJkcmF3IiwicmVjb3Jkc1RvdGFsIiwicmVjb3Jkc0ZpbHRlcmVkIiwiQXJyYXkiLCJzYW5pdGl6ZSIsImhvdFNhbml0aXplIiwic2FuaXRpemVKU09OIiwiY29sdW1ucyIsImVhY2giLCJkYXRhVHlwZSIsInByb2Nlc3NpbmciLCJzZXJ2ZXJTaWRlIiwiY29sUmVvcmRlciIsInNjcm9sbGVyIiwic2VsZWN0IiwiZG9tIiwiYWpheCIsImNhbGxiYWNrIiwic2V0dGluZ3MiLCJBZG1pblRleHQiLCJub19vdXRwdXQiLCJmaWVsZF90eXBlIiwiaHRtbFR5cGUiLCJBZG1pblRhYmxlRmllbGQiLCJwbGFjZUhlcmVQYXJlbnQiLCJBZG1pblRhYmxlUm93IiwiZWxlbWVudCIsInJvd0h0bWwiLCJmaWVsZE9iaiIsIkFkbWluRGFzaGJvYXJkIiwiYmFzZSIsImJhc2VVcmwiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIl0sInNvdXJjZVJvb3QiOiIifQ==
|
|
1
|
+
var AdminPanelComponentsWeb;(()=>{"use strict";var t={41:t=>{t.exports=DataTable},79:t=>{t.exports=HotStaqWeb},91:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminDropdown=void 0;const l=n(79);class s extends l.HotComponent{constructor(t,e){super(t,e),this.tag="admin-dropdown",this.placeholder="Search",this.onsearch=null,this.onselect=null}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null!=this.onsearch&&("string"==typeof this.onsearch&&(this.onsearch=new Function(this.onsearch)),e.querySelector("input").addEventListener("keyup",(t=>i(this,void 0,void 0,(function*(){const e=t.currentTarget.value;let n=yield this.onsearch(e,t),i=$(this.htmlElements[1]).find(".searchResults");i.empty();for(let t=0;t<n.length;t++){const e=n[t];let l=e.url,s=e.value,o=e.text;const a=$('<li><a class="dropdown-item" href="" data-value="" onclick=""></a></li>'),d=a.find("a");d.attr("href",l),d.attr("data-value",s),d.text(o),d.removeAttr("onclick").on("click",(()=>{this.selected(t)})),i.append(a)}}))))),null}selected(t){return i(this,void 0,void 0,(function*(){if(null!=this.onselect){"string"==typeof this.onselect&&(this.onselect=new Function(this.onselect));const e=this.htmlElements[1].querySelectorAll("a")[t].getAttribute("href"),n=this.htmlElements[1].querySelectorAll("a")[t].getAttribute("data-value"),i=this.htmlElements[1].querySelectorAll("a")[t].innerHTML;yield this.onselect(e,n,i)}}))}output(){return`<div class="dropdown">\n\t\t<button class="btn btn-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">\n\t\t ${this.inner}\n\t\t</button>\n\t\t<ul class="dropdown-menu">\n\t\t\t<li>\n\t\t\t\t<div class = "input-group">\n\t\t\t\t\t<input type = "text" class = "form-control" placeholder = "${this.placeholder}" value = "" />\n\t\t\t\t</div>\n\t\t\t</li>\n\t\t\t<div class = "searchResults">\n\t\t\t</div>\n\t\t</ul>\n\t</div>`}}e.AdminDropdown=s},383:t=>{t.exports=bootstrap},494:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))},l=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminEdit=void 0;const s=n(79),o=l(n(383));class a extends s.HotComponent{constructor(t,e){super(t,e),this.onAddClicked=null,this.onEditClicked=null,this.onRemoveClicked=null,this.tag="admin-edit",this.title="",this.button_title="Save",this.attached_list="",this.schema="",this.modalId="",this.add_text="Add",this.add_place_here="dashboardHeader",this.edit_text="Edit",this.edit_place_here="dashboardHeader",this.remove_text="Remove",this.remove_place_here="dashboardHeader",this.css_class="",this.modal=null,this.modalType="add",this.closeOnSave=!0,this.selectedFields=[],this.onsave=null,this.onedit=null,this.ondelete=null}processHotFields(t){return i(this,void 0,void 0,(function*(){const e=this.htmlElements[1].querySelectorAll("[hot-field]");for(let n=0;n<e.length;n++){const i=e[n],l=$(i).attr("hot-field");let s=$(i).attr("hot-field-type"),o=$(i).attr("hot-field-input");null!=s&&""!==s||(s="text"),i.fieldType=s,yield t(i,{name:l,type:s,input:o})}}))}addClicked(){return i(this,arguments,void 0,(function*(t=[]){if(null==this.onAddClicked||!1!==(yield this.onAddClicked())){if(this.modalType="add",yield this.processHotFields(((t,e)=>i(this,void 0,void 0,(function*(){$(t).val("")})))),this.selectedFields=t,null!=this.onadd){"string"==typeof this.onadd&&(this.onadd=new Function(this.onadd));let t=yield this.onadd(this.modalType,this.selectedFields);if(null!=t&&!1===t)return}o.default.Modal.getInstance(`#${this.modalId}`).show()}}))}getAttachedHTMLLists(){const t=this.attached_list.split(","),e=[];for(let n=0;n<t.length;n++){const i=t[n];let l=document.getElementById(i);e.push(l)}return e}getAttachedLists(){const t=this.getAttachedHTMLLists();let e=[];for(let n=0;n<t.length;n++){const i=t[n].hotComponent;e.push(i)}return e}editClicked(){return i(this,arguments,void 0,(function*(t=null,e=[]){if(null==this.onEditClicked||!1!==(yield this.onEditClicked(t,e))){if(this.modalType="edit",this.selectedFields=e,""!==this.attached_list){const e=this.getAttachedLists();for(let n=0;n<e.length;n++){let l=e[n];if(null!=t&&l.name!==t)continue;l.attachedEdit=this;let s=l.getSelected();null!=s&&(yield this.processHotFields(((t,e)=>i(this,void 0,void 0,(function*(){let n=s[e.name];if(null!=e.input&&""!==e.input){let i=new Function(e.input);n=yield i.call(this,this,t,n)}null!=n&&$(t).val(n)})))),this.selectedFields=[s])}}if(null!=this.onedit){"string"==typeof this.onedit&&(this.onedit=new Function(this.onedit));let t=yield this.onedit(this.modalType,this.selectedFields);if(null!=t&&!1===t)return}o.default.Modal.getInstance(`#${this.modalId}`).show()}}))}removeClicked(){return i(this,void 0,void 0,(function*(){if(null!=this.onRemoveClicked&&!1===(yield this.onRemoveClicked()))return;this.modalType="remove";let t=[],e=null;if(""!==this.attached_list){const n=this.getAttachedLists();for(let i=0;i<n.length;i++){e=n[i],e.attachedEdit=this;let l=e.getCheckedRows();if(l.length>0)for(let e=0;e<l.length;e++){let n=l[e];t.push(n)}let s=e.getSelected();null!=s&&(t=[s])}}if(!0===confirm("Are you sure you want to remove this item?")){for(let n=0;n<t.length;n++){let i=t[n];if(null!=e)for(let t in i){let n=e.getFieldType(t);null!=n&&"remove"===n&&delete i[t]}if(null!=this.ondelete)"string"==typeof this.ondelete&&(this.ondelete=new Function(this.ondelete)),yield this.ondelete(i);else{let t=s.Hot.Data.AdminPanel.removeUrl;yield s.Hot.jsonRequest(t,{schema:this.schema,whereFields:i})}}if(0===t.length)if(null!=this.ondelete)"string"==typeof this.ondelete&&(this.ondelete=new Function(this.ondelete)),yield this.ondelete(null);else{let t=s.Hot.Data.AdminPanel.removeUrl;yield s.Hot.jsonRequest(t,{schema:this.schema,whereFields:null})}if(null!=e){const t=yield e.refreshList(),n=e.prepareData(t);e.tableCallback(n)}}}))}onSave(){return i(this,void 0,void 0,(function*(){let t={};if(yield this.processHotFields(((e,n)=>i(this,void 0,void 0,(function*(){if("remove"===n.type)return;let i=$(e).val();if(null!=$(e).attr("hot-value")&&(i=$(e).attr("hot-value")),null!=$(e).attr("hot-field-save")){let t=$(e).attr("hot-field-save");if(null!=t&&""!==t){let n=new Function(t);i=yield n.call(this,this,e,i)}}if("array"===n.type)return null==t[n.name]&&(t[n.name]=[]),void t[n.name].push(i);if("number"===n.type&&(i=parseFloat(i)),"integer"===n.type&&(i=parseInt(i)),"bool"===n.type||"boolean"===n.type){const t=i.toLowerCase();i=!1,"1"!=t&&"true"!=t&&"yes"!=t||(i=!0)}t[n.name]=i})))),null!=this.onsave){if("string"==typeof this.onsave&&(this.onsave=new Function(this.onsave)),!1===(yield this.onsave(this.modalType,t,this.selectedFields)))return}else{if("add"===this.modalType){let e=s.Hot.Data.AdminPanel.addUrl;yield s.Hot.jsonRequest(e,{schema:this.schema,fields:t})}if("edit"===this.modalType){if(0===this.selectedFields.length)return void alert("No item(s) selected!");let e={};yield this.processHotFields(((t,n)=>i(this,void 0,void 0,(function*(){if("remove"===n.type)return;let i=$(t).val();if(null!=$(t).attr("hot-value")&&(i=$(t).attr("hot-value")),"array"===n.type)return null==e[n.name]&&(e[n.name]=[]),void e[n.name].push(i);e[n.name]=i}))));let n=s.Hot.Data.AdminPanel.editUrl;yield s.Hot.jsonRequest(n,{schema:this.schema,whereFields:e,fields:t})}}if(""!==this.attached_list){const t=this.getAttachedLists();for(let e=0;e<t.length;e++){let n=t[e];n.attachedEdit=this;const i=yield n.refreshList(),l=n.prepareData(i);n.tableCallback(l)}}!0===this.closeOnSave&&o.default.Modal.getInstance(`#${this.modalId}`).hide()}))}onPostPlace(t,e){return this.modal=new o.default.Modal($(`#${this.modalId}`)[0],{backdrop:!0,keyboard:!0,focus:!0}),setTimeout((()=>{if(""!==this.attached_list){const t=this.getAttachedLists();for(let e=0;e<t.length;e++){let n=t[e];null!=n&&(n.attachedEdit=this)}}}),50),null}output(){if(""===this.name)throw new Error("You must specify a name for each admin-edit element!");this.modalId=`${this.name}Modal`;let t=[{html:`\n\t\t\t\x3c!-- ${this.title} Modal Start --\x3e\n\t\t\t<div class="modal fade ${this.css_class}" id="${this.modalId}" tabindex="-1" aria-labelledby="${this.name}ModalLabel" aria-hidden="true">\n\t\t\t\t<div class="modal-dialog">\n\t\t\t\t\t<div class="modal-content">\n\t\t\t\t\t<div class="modal-header">\n\t\t\t\t\t\t<h5 class="modal-title" id="${this.name}ModalLabel">${this.title}</h5>\n\t\t\t\t\t\t<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-body">\n\t\t\t\t\t\t<hot-place-here name = "modalBody" type = "modal"></hot-place-here>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="modal-footer">\n\t\t\t\t\t\t<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>\n\t\t\t\t\t\t<button type="button" class="btn btn-primary" onclick = "document.getElementById('${this.modalId}').onSave ();">${this.button_title}</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t\x3c!-- ${this.title} Modal End --\x3e`,documentSelector:"body"}];return""!==this.add_place_here&&t.push({html:`<button id = "${this.modalId}-add-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.addClicked ();">${this.add_text}</button>`,documentSelector:`hot-place-here[name="${this.add_place_here}"]`}),""!==this.edit_place_here&&t.push({html:`<button id = "${this.modalId}-edit-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.editClicked ('${this.modalId}');">${this.edit_text}</button>`,documentSelector:`hot-place-here[name="${this.edit_place_here}"]`}),""!==this.remove_place_here&&t.push({html:`<button id = "${this.modalId}-remove-btn" type="button" class="btn btn-sm btn-outline-secondary" onclick = "this.removeClicked ();">${this.remove_text}</button>`,documentSelector:`hot-place-here[name="${this.remove_place_here}"]`}),t}}e.AdminEdit=a},594:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminButton=void 0;const l=n(79);class s extends l.HotComponent{constructor(t,e){super(t,e),this.tag="admin-button",this.css_class="btn btn-sm btn-outline-secondary",this.onclick=null}buttonClicked(){return i(this,void 0,void 0,(function*(){}))}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null!=this.onclick&&("string"==typeof this.onclick&&(this.onclick=new Function(this.onclick)),e.addEventListener("click",this.onclick)),null}output(){return`<button id = "${this.htmlElements[0].id}" class = "${this.css_class}" onclick = "this.buttonClicked ();">${this.inner}</button>`}}e.AdminButton=s},620:function(t,e,n){var i=this&&this.__awaiter||function(t,e,n,i){return new(n||(n=Promise))((function(l,s){function o(t){try{d(i.next(t))}catch(t){s(t)}}function a(t){try{d(i.throw(t))}catch(t){s(t)}}function d(t){var e;t.done?l(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(o,a)}d((i=i.apply(t,e||[])).next())}))},l=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTable=void 0;const s=n(79),o=l(n(41));class a extends s.HotComponent{constructor(t,e){super(t,e),this.rowElements=[],this.tag="admin-table",this.title="",this.schema="",this.headers={fields:{},elements:{},indicies:[]},this.rowElements=[],this.tableCallback=null,this.tableData=null,this.onlist=null,this.listurl="",this.checkbox=!0,this.singleclickedit=!1,this.onselectedrow=null,this.attachedEdit=null,this.selected=-1,this.dataTable=null,this.isListRefreshing=!1}addHeader(t){let e=this.htmlElements[0].getElementsByTagName("thead")[0];this.headers.indicies.length<1&&this.headers.indicies.push(null),this.headers.indicies.push(t.hotComponent.field),e.appendChild(t)}addHeaderDataOnly(t,e){this.headers.indicies.length<1&&this.headers.indicies.push(null),this.headers.indicies.push(t.field),this.headers.fields[t.field]=t,this.headers.elements[t.field]=e}getFieldType(t){if(null!=this.headers.elements[t]){let e=this.headers.elements[t].hotComponent;if(null!=e)return e.field_type}return null}selectRow(t,e){return i(this,void 0,void 0,(function*(){{let e=this.htmlElements[1].getElementsByTagName("tbody")[0].getElementsByTagName("tr");for(let t=0;t<e.length;t++){let n=e[t];!0===n.classList.contains("table-primary")&&n.classList.remove("table-primary")}t.classList.add("table-primary")}if(this.selected=e,"string"==typeof this.singleclickedit&&(this.singleclickedit=s.HotStaq.parseBoolean(this.singleclickedit)),!0===this.singleclickedit&&null!=this.attachedEdit&&(yield this.attachedEdit.editClicked(this.name)),null!=this.onselectedrow){"string"==typeof this.onselectedrow&&(this.onselectedrow=new Function(this.onselectedrow));let t=this.getSelected();if(null==t)return;if(!1===(yield this.onselectedrow(e,t)))return}}))}getSelected(){let t=this.selected;return t<0?null:this.dataTable.row(t).data()}getCheckedRows(){let t=[],e=this.htmlElements[1].getElementsByTagName("tbody")[0].getElementsByTagName("input");for(let n=0;n<e.length;n++){let i=e[n];if(null!=i.checked&&!0===i.checked){let e=i.parentElement.parentElement.getAttribute("data-index"),n=parseInt(e);t.push(this.rowElements[n].fields)}}return t}getRow(t){return this.rowElements[t].fields}addRow(t){if(null==t)return;if(0==t.length)return;this.htmlElements[1].getElementsByTagName("tbody")[0];let e=this.rowElements.length;"string"==typeof this.checkbox&&(this.checkbox=s.HotStaq.parseBoolean(this.checkbox));let n=[];for(let i=0;i<this.headers.indicies.length;i++){let l=this.headers.indicies[i];if(null==l)continue;let s=t[l],o=l.split(".");if(o.length>1){let e=t[o[0]];for(let t=1;t<o.length;t++)e=e[o[t]];s=e}let a=null;if(null!=this.headers.elements[l]){let t=this.getFieldType(l);if(null==t&&(t="text"),"remove"!==t){const t=this.headers.fields[l];let n=!0;null!=t&&(null!=t.oninput&&("string"==typeof t.oninput&&(this.headers.fields[l].oninput=new Function(t.oninput)),s=t.oninput(s)),null!=t.onoutput)&&("string"==typeof t.onoutput&&(this.headers.fields[l].onoutput=new Function(t.onoutput)),n=!1,a={index:e,value:t.onoutput(e,s)}),!0===n&&(a=s)}}n.push(a)}null==this.rows&&(this.rows=[])}clearRows(){return i(this,void 0,void 0,(function*(){this.rowElements=[],null!=this.dataTable&&this.dataTable.clear()}))}refreshList(){return i(this,arguments,void 0,(function*(t=null){this.isListRefreshing=!0;let e={search:"",offset:0,limit:10};if(null!=this.dataTable){const t=this.dataTable.search(),n=this.dataTable.page.info();e={search:t||"",offset:n.start||0,limit:n.length||10}}if(null!=this.onlist)"string"==typeof this.onlist&&(this.onlist=new Function(this.onlist)),t=yield this.onlist(e);else{let n="";""!==this.listurl&&(n=this.listurl),""!==n&&(t=yield s.Hot.jsonRequest(n,{schema:this.schema,search:e}))}if(this.clearRows(),null!=t){if(null!=t.error)return console.error(`List error: ${t.error}`),this.isListRefreshing=!1,null;if(null==t.data)throw new Error(`Returning list data to "${this.name}" component has a null data field. API response does not match the "IAPIResponse" schema.`);for(let e=0;e<t.data.length;e++){let n=t.data[e];for(let i in n){let l=n[i],s=this.getFieldType(i);if(null==s&&(s="text"),"remove"!==s){const n=this.headers.fields[i];let s=!0;null!=n&&(null!=n.oninput&&("string"==typeof n.oninput&&(this.headers.fields[i].oninput=new Function(n.oninput)),l=n.oninput(l)),null!=n.onoutput)&&("string"==typeof n.onoutput&&(this.headers.fields[i].onoutput=new Function(n.onoutput)),s=!1,l=n.onoutput(e,l)),t.data[e][i]=l}}}}let n=this.htmlElements[1].getElementsByTagName("tbody")[0];return n.hotComponent=this,$(n).on("click","tr",(function(){const t=this.parentNode.hotComponent,e=t.dataTable.row(this).index();null!=e?t.selectRow(this,e):null!=t.attachedEdit&&null!=t.attachedEdit.addClicked&&t.attachedEdit.addClicked()})),this.isListRefreshing=!1,t}))}prepareData(t){const e={draw:this.tableData,data:[],recordsTotal:0,recordsFiltered:0};if(null!=t){t instanceof Array?(e.data=t,e.recordsTotal=t.length,e.recordsFiltered=t.length):(null!=t.length&&(e.recordsTotal=t.length,e.recordsFiltered=t.length),null!=t.data&&(e.data=t.data));let n=!0;null!=e.data.hotSanitize&&(n=e.data.hotSanitize);for(let t=0;t<e.data.length;t++){const i=e.data[t];e.data[t]=!0===n?s.HotStaq.sanitizeJSON(i):i}}return e}onPostPlace(t,e){return setTimeout((()=>i(this,void 0,void 0,(function*(){const t=$(e).find("table");let n=[];$(t).find("thead th").each((function(){const t=$(this).text(),e=$(this).data("field");let i=$(this).data("field-type");null!=t&&""!==t&&null!=e&&""!==e&&("text"===i&&(i="string"),n.push({title:t,data:e}))})),$(t).find("thead").remove(),this.dataTable=new o.default(t[0],{processing:!0,serverSide:!0,colReorder:!0,scroller:!0,select:!0,dom:"Qlfrtip",columns:n,data:[],ajax:(t,e,n)=>i(this,void 0,void 0,(function*(){if(!0===this.isListRefreshing)return;this.tableCallback=e,this.tableData=t.draw;let n=yield this.refreshList();const i=this.prepareData(n);this.tableCallback(i)}))})}))),50),null}output(){return`\n\t\t<div id = "${this.htmlElements[0].id}">\n\t\t\t<h2>${this.title}</h2>\n\t\t\t<div class="table-responsive">\n\t\t\t<table id = "${this.htmlElements[0].id}Table" class="table table-striped table-sm">\n\t\t\t\t<thead>\n\t\t\t\t\t<tr hot-place-here = "header">\n\t\t\t\t\t\t<th></th>\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody hot-place-here = "results">\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t\t<hot-place-here name = "afterTable"></hot-place-here>\n\t\t\t</div>\n\t\t</div>`}}e.AdminTable=a},741:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminText=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-text",this.no_output="0",this.css_class="form-control"}onPostPlace(t,e){let n=t.querySelectorAll('hot-place-here[type="modal"]');if(n.length>0){let i=n[0];t.removeChild(e),i.appendChild(e)}return null}output(){let t="";if(null!=this.value&&(t=this.value),"1"===this.no_output)return`<div><input class="${this.css_class}" type = "hidden" value = "${t}" /></div>`;const e=this.htmlElements[0].getAttribute("hot-field");let n=this.htmlElements[0].getAttribute("hot-field-type"),i=this.htmlElements[0].getAttribute("type")||"text";return null==n&&(n="text"),`<div>\n\t\t\t<label class="form-label">${this.inner}</label>\n\t\t\t<input class="${this.css_class}" type = "${i}" hot-field = "${e}" hot-field-type = "${n}" value = "${t}" />\n\t\t</div>`}}e.AdminText=l},837:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTableField=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-table-field",this.field=0,this.field_type="text",this.no_output="0",this.oninput=null,this.onoutput=null}onPostPlace(t,e){let n=null;return n=null!=t.parentNode.parentNode.hotComponent?t.parentNode.parentNode.hotComponent:t.parentNode.parentNode.parentNode.parentNode.hotComponent,null!=n&&n.addHeaderDataOnly(this,e),null}output(){return"1"===this.no_output?[{html:"<div></div>",placeHereParent:"afterTable"}]:[{html:`<th data-field = "${this.field}" data-field-type = "${this.field_type}">${this.inner}</th>`,placeHereParent:"header"}]}}e.AdminTableField=l},877:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminTableRow=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-table-row",this.fields=[]}onPostPlace(t,e){return t.parentNode.parentNode.parentNode.hotComponent.rowElements.push({fields:this.fields,element:e}),null}output(){let t="";this.fields.length>0&&(t+='<td><input type = "checkbox" /></td>');for(let e=0;e<this.fields.length;e++){let n=this.fields[e];for(let e in n)t+=`<td>${n[e]}</td>`}return[{html:`<tr>${t}</tr>`,placeHereParent:"results"}]}}e.AdminTableRow=l},924:(t,e,n)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.AdminDashboard=void 0;const i=n(79);class l extends i.HotComponent{constructor(t,e){super(t,e),this.tag="admin-dashboard",this.title="",this.base=""}onPostPlace(t,e){return null==i.Hot.Data.AdminPanel&&(i.Hot.Data.AdminPanel={}),null==i.Hot.Data.AdminPanel.baseUrl&&(i.Hot.Data.AdminPanel.baseUrl=this.base),null==i.Hot.Data.AdminPanel.addUrl&&(i.Hot.Data.AdminPanel.addUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/add`),null==i.Hot.Data.AdminPanel.editUrl&&(i.Hot.Data.AdminPanel.editUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/edit`),null==i.Hot.Data.AdminPanel.removeUrl&&(i.Hot.Data.AdminPanel.removeUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/remove`),null==i.Hot.Data.AdminPanel.listUrl&&(i.Hot.Data.AdminPanel.listUrl=`${i.Hot.Data.AdminPanel.baseUrl}/v1/data/list`),null}output(){return`\n\t\t<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">\n\t\t\t<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">\n\t\t\t\t<h1 class="h2">${this.title}</h1>\n\t\t\t\t<div class="btn-toolbar mb-2 mb-md-0">\n\t\t\t\t\t<div class="btn-group me-2">\n\t\t\t\t\t\t<hot-place-here name = "dashboardHeader"></hot-place-here>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<hot-place-here name = "body"></hot-place-here>\n\t\t</main>`}}e.AdminDashboard=l}},e={};function n(i){var l=e[i];if(void 0!==l)return l.exports;var s=e[i]={exports:{}};return t[i].call(s.exports,s,s.exports,n),s.exports}var i={};(()=>{var t=i;Object.defineProperty(t,"__esModule",{value:!0}),t.AdminText=t.AdminTableRow=t.AdminTableField=t.AdminTable=t.AdminEdit=t.AdminDashboard=t.AdminDropdown=t.AdminButton=void 0;const e=n(594);Object.defineProperty(t,"AdminButton",{enumerable:!0,get:function(){return e.AdminButton}});const l=n(91);Object.defineProperty(t,"AdminDropdown",{enumerable:!0,get:function(){return l.AdminDropdown}});const s=n(924);Object.defineProperty(t,"AdminDashboard",{enumerable:!0,get:function(){return s.AdminDashboard}});const o=n(494);Object.defineProperty(t,"AdminEdit",{enumerable:!0,get:function(){return o.AdminEdit}});const a=n(620);Object.defineProperty(t,"AdminTable",{enumerable:!0,get:function(){return a.AdminTable}});const d=n(837);Object.defineProperty(t,"AdminTableField",{enumerable:!0,get:function(){return d.AdminTableField}});const r=n(877);Object.defineProperty(t,"AdminTableRow",{enumerable:!0,get:function(){return r.AdminTableRow}});const h=n(741);Object.defineProperty(t,"AdminText",{enumerable:!0,get:function(){return h.AdminText}})})(),AdminPanelComponentsWeb=i})();
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixFQUFBQyxJQUFJQyxLQUFLQyxXQUFXSCxVQUFZLEdBQUcsRUFBQUMsSUFBSUMsS0FBS0MsV0FBVzBILDBCQUVyQixNQUEvQixFQUFBNUgsSUFBSUMsS0FBS0MsV0FBV3FGLFVBQ3ZCLEVBQUF2RixJQUFJQyxLQUFLQyxXQUFXcUYsUUFBVSxHQUFHLEVBQUF2RixJQUFJQyxLQUFLQyxXQUFXMEgsd0JBRS9DLElBQ1IsQ0FFQSxNQUFBck0sR0FFQyxNQUFPLG1OQUdZekMsS0FBS2dELGdTQVN6QixFQTVERCxrQixHQ0RJK0wsRUFBMkIsQ0FBQyxFQUdoQyxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCRSxJQUFqQkQsRUFDSCxPQUFPQSxFQUFhM1AsUUFHckIsSUFBSUQsRUFBU3lQLEVBQXlCRSxHQUFZLENBR2pEMVAsUUFBUyxDQUFDLEdBT1gsT0FIQTZQLEVBQW9CSCxHQUFVMUksS0FBS2pILEVBQU9DLFFBQVNELEVBQVFBLEVBQU9DLFFBQVN5UCxHQUdwRTFQLEVBQU9DLE9BQ2YsQyxxTUN0QkEsZUFVRSwyRUFWTyxFQUFBcUosV0FBVyxJQUNwQixjQVVFLDZFQVZPLEVBQUFsSixhQUFhLElBQ3RCLGVBVUUsOEVBVk8sRUFBQWtQLGNBQWMsSUFDdkIsZUFVRSx5RUFWTyxFQUFBaE0sU0FBUyxJQUNsQixlQVVFLDBFQVZPLEVBQUFvRyxVQUFVLElBQ25CLGVBVUUsK0VBVk8sRUFBQXNGLGVBQWUsSUFDeEIsZUFVRSw2RUFWTyxFQUFBRSxhQUFhLElBQ3RCLGVBVUUseUVBVk8sRUFBQU4sU0FBUyxHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvZXh0ZXJuYWwgdmFyIFwiRGF0YVRhYmxlXCIiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvZXh0ZXJuYWwgdmFyIFwiSG90U3RhcVdlYlwiIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tZHJvcGRvd24udHMiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvZXh0ZXJuYWwgdmFyIFwiYm9vdHN0cmFwXCIiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvLi9zcmMvY29tcG9uZW50cy9hZG1pbi1lZGl0LnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tYnV0dG9uLnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tdGFibGUudHMiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvLi9zcmMvY29tcG9uZW50cy9hZG1pbi10ZXh0LnRzIiwid2VicGFjazovL0FkbWluUGFuZWxDb21wb25lbnRzV2ViLy4vc3JjL2NvbXBvbmVudHMvYWRtaW4tdGFibGUtZmllbGQudHMiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvLi9zcmMvY29tcG9uZW50cy9hZG1pbi10YWJsZS1yb3cudHMiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvLi9zcmMvY29tcG9uZW50cy9hZG1pbi1kYXNoYm9hcmQudHMiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vQWRtaW5QYW5lbENvbXBvbmVudHNXZWIvLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBEYXRhVGFibGU7IiwibW9kdWxlLmV4cG9ydHMgPSBIb3RTdGFxV2ViOyIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQgfSBmcm9tIFwiaG90c3RhcVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5Ecm9wZG93biBleHRlbmRzIEhvdENvbXBvbmVudFxue1xuXHQvKipcblx0ICogVGhlIHNlYXJjaCBzdHJpbmcgcGxhY2Vob2xkZXIgdG8gc2hvdy5cblx0ICovXG5cdHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB3aGVuIHRoZSBrZXlib2FyZCB1cCBidXR0b24gaXMgdHJpZ2dlcmVkLlxuXHQgKi9cblx0b25zZWFyY2g6IChzZWFyY2hUZXh0OiBzdHJpbmcsIGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiBQcm9taXNlPHsgdXJsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmc7IHRleHQ6IHN0cmluZzsgfVtdPjtcblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gYW4gc2VhcmNoIHJlc3VsdCBoYXMgYmVlbiBzZWxlY3RlZC5cblx0ICovXG5cdG9uc2VsZWN0OiAodXJsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4gUHJvbWlzZTx2b2lkPjtcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi1kcm9wZG93blwiO1xuXHRcdHRoaXMucGxhY2Vob2xkZXIgPSBcIlNlYXJjaFwiO1xuXHRcdHRoaXMub25zZWFyY2ggPSBudWxsO1xuXHRcdHRoaXMub25zZWxlY3QgPSBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvcnJlY3RzIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHRleHQgZWxlbWVudHMgZm9yIG1vZGFscy5cblx0ICovXG5cdG9uUG9zdFBsYWNlIChwYXJlbnRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50XG5cdHtcblx0XHRsZXQgcGxhY2VIZXJlQXJyYXkgPSBwYXJlbnRIdG1sRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsIChgaG90LXBsYWNlLWhlcmVbdHlwZT1cIm1vZGFsXCJdYCk7XG5cblx0XHRpZiAocGxhY2VIZXJlQXJyYXkubGVuZ3RoID4gMClcblx0XHR7XG5cdFx0XHRsZXQgcGxhY2VIZXJlID0gcGxhY2VIZXJlQXJyYXlbMF07XG5cdFx0XHRwYXJlbnRIdG1sRWxlbWVudC5yZW1vdmVDaGlsZCAoaHRtbEVsZW1lbnQpO1xuXHRcdFx0cGxhY2VIZXJlLmFwcGVuZENoaWxkIChodG1sRWxlbWVudCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub25zZWFyY2ggIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uc2VhcmNoKSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbnNlYXJjaCA9ICg8KHNlYXJjaFRleHQ6IHN0cmluZywgZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IFByb21pc2U8eyB1cmw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgdGV4dDogc3RyaW5nOyB9W10+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbnNlYXJjaCkpO1xuXG5cdFx0XHRodG1sRWxlbWVudC5xdWVyeVNlbGVjdG9yIChcImlucHV0XCIpLmFkZEV2ZW50TGlzdGVuZXIgKFwia2V5dXBcIiwgXG5cdFx0XHRcdGFzeW5jIChldmVudDogS2V5Ym9hcmRFdmVudCkgPT5cblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZTtcblxuXHRcdFx0XHRcdGxldCByZXN1bHRzID0gYXdhaXQgdGhpcy5vbnNlYXJjaCAoc2VhcmNoVGV4dCwgZXZlbnQpO1xuXG5cdFx0XHRcdFx0bGV0IHNlYXJjaFJlc3VsdHNEaXYgPSAkKHRoaXMuaHRtbEVsZW1lbnRzWzFdKS5maW5kIChcIi5zZWFyY2hSZXN1bHRzXCIpO1xuXG5cdFx0XHRcdFx0c2VhcmNoUmVzdWx0c0Rpdi5lbXB0eSAoKTtcblxuXHRcdFx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgcmVzdWx0cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjb25zdCByZXN1bHQgPSByZXN1bHRzW2lJZHhdO1xuXHRcdFx0XHRcdFx0bGV0IHVybDogc3RyaW5nID0gcmVzdWx0LnVybDtcblx0XHRcdFx0XHRcdGxldCB2YWx1ZTogc3RyaW5nID0gcmVzdWx0LnZhbHVlO1xuXHRcdFx0XHRcdFx0bGV0IHRleHQ6IHN0cmluZyA9IHJlc3VsdC50ZXh0O1xuXG5cdFx0XHRcdFx0XHRjb25zdCAkdGVtcGxhdGUgPSAkKGA8bGk+PGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgaHJlZj1cIlwiIGRhdGEtdmFsdWU9XCJcIiBvbmNsaWNrPVwiXCI+PC9hPjwvbGk+YCk7XG5cblx0XHRcdFx0XHRcdGNvbnN0ICRhID0gJHRlbXBsYXRlLmZpbmQoXCJhXCIpO1xuXHRcdFx0XHRcdFx0JGEuYXR0cihcImhyZWZcIiwgdXJsKTtcblx0XHRcdFx0XHRcdCRhLmF0dHIoXCJkYXRhLXZhbHVlXCIsIHZhbHVlKTtcblx0XHRcdFx0XHRcdCRhLnRleHQodGV4dCk7XG5cblx0XHRcdFx0XHRcdCRhLnJlbW92ZUF0dHIoXCJvbmNsaWNrXCIpLm9uKFwiY2xpY2tcIiwgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkKGlJZHgpO1xuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdHNlYXJjaFJlc3VsdHNEaXYuYXBwZW5kKCR0ZW1wbGF0ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZC5cblx0ICovXG5cdGFzeW5jIHNlbGVjdGVkIChpbmRleDogbnVtYmVyKTogUHJvbWlzZTx2b2lkPlxuXHR7XG5cdFx0aWYgKHRoaXMub25zZWxlY3QgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uc2VsZWN0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbnNlbGVjdCA9ICg8KHVybDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD4+bmV3IEZ1bmN0aW9uICh0aGlzLm9uc2VsZWN0KSk7XG5cblx0XHRcdGNvbnN0IHVybCA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLnF1ZXJ5U2VsZWN0b3JBbGwgKFwiYVwiKVtpbmRleF0uZ2V0QXR0cmlidXRlIChcImhyZWZcIik7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLnF1ZXJ5U2VsZWN0b3JBbGwgKFwiYVwiKVtpbmRleF0uZ2V0QXR0cmlidXRlIChcImRhdGEtdmFsdWVcIik7XG5cdFx0XHRjb25zdCB0ZXh0ID0gdGhpcy5odG1sRWxlbWVudHNbMV0ucXVlcnlTZWxlY3RvckFsbCAoXCJhXCIpW2luZGV4XS5pbm5lckhUTUw7XG5cblx0XHRcdGF3YWl0IHRoaXMub25zZWxlY3QgKHVybCwgdmFsdWUsIHRleHQpO1xuXHRcdH1cblx0fVxuXG5cdG91dHB1dCAoKTogc3RyaW5nXG5cdHtcblx0XHRyZXR1cm4gKFxuXHRgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBkcm9wZG93bi10b2dnbGVcIiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxuXHRcdCAgJHt0aGlzLmlubmVyfVxuXHRcdDwvYnV0dG9uPlxuXHRcdDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIj5cblx0XHRcdDxsaT5cblx0XHRcdFx0PGRpdiBjbGFzcyA9IFwiaW5wdXQtZ3JvdXBcIj5cblx0XHRcdFx0XHQ8aW5wdXQgdHlwZSA9IFwidGV4dFwiIGNsYXNzID0gXCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlciA9IFwiJHt0aGlzLnBsYWNlaG9sZGVyfVwiIHZhbHVlID0gXCJcIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvbGk+XG5cdFx0XHQ8ZGl2IGNsYXNzID0gXCJzZWFyY2hSZXN1bHRzXCI+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L3VsPlxuXHQ8L2Rpdj5gKTtcblx0fVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBib290c3RyYXA7IiwiaW1wb3J0IHsgSG90U3RhcSwgSG90LCBIb3RBUEksIEhvdENvbXBvbmVudCwgSG90Q29tcG9uZW50T3V0cHV0IH0gZnJvbSBcImhvdHN0YXFcIjtcblxuaW1wb3J0IGJvb3RzdHJhcCBmcm9tIFwiYm9vdHN0cmFwXCI7XG5cbmltcG9ydCB7IEFkbWluVGFibGUgfSBmcm9tIFwiLi9hZG1pbi10YWJsZVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5FZGl0IGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBUaGUgdGl0bGUgb2YgdGhpcyBlZGl0IG1vZGFsLlxuXHQgKi9cblx0dGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBidXR0b24gdGl0bGUuXG5cdCAqL1xuXHRidXR0b25fdGl0bGU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBhdHRhY2hlZCBsaXN0LlxuXHQgKi9cblx0YXR0YWNoZWRfbGlzdDogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGF0dGFjaGVkIHNjaGVtYS5cblx0ICovXG5cdHNjaGVtYTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIG1vZGFsIGlkLlxuXHQgKi9cblx0bW9kYWxJZDogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHRleHQgZm9yIHRoZSBhZGQgYnV0dG9uLlxuXHQgKi9cblx0YWRkX3RleHQ6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBsb2NhdGlvbiB0byBwdXQgdGhlIGFkZCBidXR0b24uXG5cdCAqL1xuXHRhZGRfcGxhY2VfaGVyZTogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHRleHQgZm9yIHRoZSBlZGl0IGJ1dHRvbi5cblx0ICovXG5cdGVkaXRfdGV4dDogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIGxvY2F0aW9uIHRvIHB1dCB0aGUgZWRpdCBidXR0b24uXG5cdCAqL1xuXHRlZGl0X3BsYWNlX2hlcmU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSB0ZXh0IGZvciB0aGUgcmVtb3ZlIGJ1dHRvbi5cblx0ICovXG5cdHJlbW92ZV90ZXh0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgbG9jYXRpb24gdG8gcHV0IHRoZSByZW1vdmUgYnV0dG9uLlxuXHQgKi9cblx0cmVtb3ZlX3BsYWNlX2hlcmU6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBob3QtY2xhc3MgYXR0cmlidXRlIHRvIHBhc3MgdG8gYWRkIHRvIHRoZSBtb2RhbCdzIGNsYXNzZXMuXG5cdCAqL1xuXHRjc3NfY2xhc3M6IHN0cmluZztcblx0LyoqXG5cdCAqIFRoZSBib290c3RyYXAgbW9kYWwgaW5zdGFuY2UuXG5cdCAqL1xuXHRtb2RhbDogYm9vdHN0cmFwLk1vZGFsO1xuXHQvKipcblx0ICogSWYgc2V0IHRvIHRydWUsIHRoaXMgd2lsbCBjbG9zZSB0aGUgbW9kYWwgd2hlbiBzYXZlIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRjbG9zZU9uU2F2ZTogYm9vbGVhbjtcblx0LyoqXG5cdCAqIFRoZSB0eXBlIG9mIG1vZGFsIHRvIG9wZW4uIENhbiBiZTpcblx0ICogKiBhZGRcblx0ICogKiBlZGl0XG5cdCAqICogcmVtb3ZlXG5cdCAqL1xuXHRwcm90ZWN0ZWQgbW9kYWxUeXBlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgc2VsZWN0ZWQgZmllbGRzLlxuXHQgKi9cblx0cHJvdGVjdGVkIHNlbGVjdGVkRmllbGRzOiBhbnlbXTtcblx0LyoqXG5cdCAqIFdoYXQgdG8gZXhlY3V0ZSB3aGVuIHRoZSBzYXZlIGJ1dHRvbiBpcyBjbGlja2VkLiBJZiB0aGlzIHJldHVybnMgdHJ1ZSwgdGhlIG1vZGFsIHdpbGwgY2xvc2UuXG5cdCAqIElmIHRoaXMgcmV0dXJucyBmYWxzZSwgdGhlIG1vZGFsIHdpbGwgbm90IGNsb3NlLlxuXHQgKi9cblx0b25zYXZlOiAobW9kYWxUeXBlOiBzdHJpbmcsIHZhbHVlczogYW55LCBzZWxlY3RlZEZpZWxkczogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj47XG5cdC8qKlxuXHQgKiBXaGF0IHRvIGV4ZWN1dGUgd2hlbiB0aGUgZWRpdCBidXR0b24gaXMgY2xpY2tlZC5cblx0ICovXG5cdG9uYWRkOiAobW9kYWxUeXBlOiBzdHJpbmcsIHNlbGVjdGVkRmllbGRzOiBhbnlbXSkgPT4gUHJvbWlzZTxib29sZWFuPjtcblx0LyoqXG5cdCAqIFdoYXQgdG8gZXhlY3V0ZSB3aGVuIHRoZSBlZGl0IGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0b25lZGl0OiAobW9kYWxUeXBlOiBzdHJpbmcsIHNlbGVjdGVkRmllbGRzOiBhbnlbXSkgPT4gUHJvbWlzZTxib29sZWFuPjtcblx0LyoqXG5cdCAqIFdoYXQgdG8gZXhlY3V0ZSB3aGVuIHRoZSBkZWxldGUgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRvbmRlbGV0ZTogKHNlbGVjdGVkRmllbGQ6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi1lZGl0XCI7XG5cdFx0dGhpcy50aXRsZSA9IFwiXCI7XG5cdFx0dGhpcy5idXR0b25fdGl0bGUgPSBcIlNhdmVcIjtcblx0XHR0aGlzLmF0dGFjaGVkX2xpc3QgPSBcIlwiO1xuXHRcdHRoaXMuc2NoZW1hID0gXCJcIjtcblxuXHRcdHRoaXMubW9kYWxJZCA9IFwiXCI7XG5cdFx0dGhpcy5hZGRfdGV4dCA9IFwiQWRkXCI7XG5cdFx0dGhpcy5hZGRfcGxhY2VfaGVyZSA9IFwiZGFzaGJvYXJkSGVhZGVyXCI7XG5cdFx0dGhpcy5lZGl0X3RleHQgPSBcIkVkaXRcIjtcblx0XHR0aGlzLmVkaXRfcGxhY2VfaGVyZSA9IFwiZGFzaGJvYXJkSGVhZGVyXCI7XG5cdFx0dGhpcy5yZW1vdmVfdGV4dCA9IFwiUmVtb3ZlXCI7XG5cdFx0dGhpcy5yZW1vdmVfcGxhY2VfaGVyZSA9IFwiZGFzaGJvYXJkSGVhZGVyXCI7XG5cdFx0dGhpcy5jc3NfY2xhc3MgPSBcIlwiO1xuXHRcdHRoaXMubW9kYWwgPSBudWxsO1xuXHRcdHRoaXMubW9kYWxUeXBlID0gXCJhZGRcIjtcblx0XHR0aGlzLmNsb3NlT25TYXZlID0gdHJ1ZTtcblx0XHR0aGlzLnNlbGVjdGVkRmllbGRzID0gW107XG5cdFx0dGhpcy5vbnNhdmUgPSBudWxsO1xuXHRcdHRoaXMub25lZGl0ID0gbnVsbDtcblx0XHR0aGlzLm9uZGVsZXRlID0gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcm9jZXNzIHRoZSBob3QgZmllbGRzLlxuXHQgKi9cblx0YXN5bmMgcHJvY2Vzc0hvdEZpZWxkcyAob25GaWVsZDogKGh0bWxFbGVtZW50OiBFbGVtZW50LCBcblx0XHRmaWVsZDogeyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgaW5wdXQ6IHN0cmluZzsgfSkgPT4gUHJvbWlzZTx2b2lkPik6IFByb21pc2U8dm9pZD5cblx0e1xuXHRcdGNvbnN0IGVsbXMgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5xdWVyeVNlbGVjdG9yQWxsIChcIltob3QtZmllbGRdXCIpO1xuXG5cdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBlbG1zLmxlbmd0aDsgaUlkeCsrKVxuXHRcdHtcblx0XHRcdGNvbnN0IGVsbSA9IGVsbXNbaUlkeF07XG5cdFx0XHRjb25zdCBmaWVsZCA9ICQoZWxtKS5hdHRyIChcImhvdC1maWVsZFwiKTtcblx0XHRcdGxldCBmaWVsZFR5cGUgPSAkKGVsbSkuYXR0ciAoXCJob3QtZmllbGQtdHlwZVwiKTtcblx0XHRcdGxldCBmaWVsZElucHV0ID0gJChlbG0pLmF0dHIgKFwiaG90LWZpZWxkLWlucHV0XCIpO1xuXG5cdFx0XHRpZiAoKGZpZWxkVHlwZSA9PSBudWxsKSB8fCAoZmllbGRUeXBlID09PSBcIlwiKSlcblx0XHRcdFx0ZmllbGRUeXBlID0gXCJ0ZXh0XCI7XG5cblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGVsbS5maWVsZFR5cGUgPSBmaWVsZFR5cGU7XG5cblx0XHRcdGF3YWl0IG9uRmllbGQgKGVsbSwgeyBuYW1lOiBmaWVsZCwgdHlwZTogZmllbGRUeXBlLCBpbnB1dDogZmllbGRJbnB1dCB9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogVGhlIGV2ZW50IHRoYXQgY2FuIGJlIGNhbGxlZCB3aGVuIHRoZSBhZGQgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0aGUgYWRkIG1vZGFsIG9wZW5zLlxuXHQgKi9cblx0b25BZGRDbGlja2VkOiAoKSA9PiBQcm9taXNlPGJvb2xlYW4+ID0gbnVsbDtcblxuXHQvKipcblx0ICogRXhlY3V0ZXMgd2hlbiB0aGUgYWRkIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0YXN5bmMgYWRkQ2xpY2tlZCAoc2VsZWN0ZWRGaWVsZHM6IGFueVtdID0gW10pOiBQcm9taXNlPHZvaWQ+XG5cdHtcblx0XHRpZiAodGhpcy5vbkFkZENsaWNrZWQgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbkFkZENsaWNrZWQgKCk7XG5cblx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0dGhpcy5tb2RhbFR5cGUgPSBcImFkZFwiO1xuXG5cdFx0YXdhaXQgdGhpcy5wcm9jZXNzSG90RmllbGRzIChcblx0XHRcdGFzeW5jIChodG1sRWxlbWVudDogRWxlbWVudCwgZmllbGQ6IHsgbmFtZTogc3RyaW5nOyB0eXBlOiBzdHJpbmc7IH0pID0+XG5cdFx0XHR7XG5cdFx0XHRcdCQoaHRtbEVsZW1lbnQpLnZhbCAoXCJcIik7XG5cdFx0XHR9KTtcblxuXHRcdHRoaXMuc2VsZWN0ZWRGaWVsZHMgPSBzZWxlY3RlZEZpZWxkcztcblxuXHRcdGlmICh0aGlzLm9uYWRkICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbmFkZCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25hZGQgPSAoPChtb2RhbFR5cGU6IHN0cmluZywgc2VsZWN0ZWRGaWVsZHM6IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbmFkZCkpO1xuXG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbmFkZCAodGhpcy5tb2RhbFR5cGUsIHRoaXMuc2VsZWN0ZWRGaWVsZHMpO1xuXG5cdFx0XHRpZiAocmVzdWx0ICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UgKGAjJHt0aGlzLm1vZGFsSWR9YCkuc2hvdyAoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUaGUgZXZlbnQgdGhhdCBjYW4gYmUgY2FsbGVkIHdoZW4gdGhlIGVkaXQgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSB0aGUgZWRpdCBtb2RhbCBvcGVucy5cblx0ICovXG5cdG9uRWRpdENsaWNrZWQ6IChjbGlja2VkVGFibGU/OiBzdHJpbmcsIHNlbGVjdGVkRmllbGRzPzogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj4gPSBudWxsO1xuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIGF0dGFjaGVkIGxpc3RzLlxuXHQgKi9cblx0Z2V0QXR0YWNoZWRIVE1MTGlzdHMgKCk6IEhUTUxFbGVtZW50W11cblx0e1xuXHRcdGNvbnN0IHN0cnMgPSB0aGlzLmF0dGFjaGVkX2xpc3Quc3BsaXQgKFwiLFwiKTtcblx0XHRjb25zdCBhdHRhY2hlZExpc3RzOiBIVE1MRWxlbWVudFtdID0gW107XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHN0cnMubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0Y29uc3QgYXR0YWNoZWRMaXN0ID0gc3Ryc1tpXTtcblx0XHRcdGxldCBhdHRhY2hlZExpc3RPYmogPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCAoYXR0YWNoZWRMaXN0KTtcblx0XHRcdGF0dGFjaGVkTGlzdHMucHVzaCAoYXR0YWNoZWRMaXN0T2JqKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKGF0dGFjaGVkTGlzdHMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgYXR0YWNoZWQgbGlzdHMuXG5cdCAqL1xuXHRnZXRBdHRhY2hlZExpc3RzICgpOiBIb3RDb21wb25lbnRbXVxuXHR7XG5cdFx0Y29uc3QgYXR0YWNoZWRMaXN0cyA9IHRoaXMuZ2V0QXR0YWNoZWRIVE1MTGlzdHMgKCk7XG5cdFx0bGV0IGF0dGFjaGVkTGlzdE9ianMgPSBbXTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgYXR0YWNoZWRMaXN0cy5sZW5ndGg7IGlJZHgrKylcblx0XHR7XG5cdFx0XHRsZXQgYXR0YWNoZWRMaXN0ID0gYXR0YWNoZWRMaXN0c1tpSWR4XTtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGNvbnN0IGhvdENvbXBvbmVudCA9IGF0dGFjaGVkTGlzdC5ob3RDb21wb25lbnQ7XG5cblx0XHRcdGF0dGFjaGVkTGlzdE9ianMucHVzaCAoaG90Q29tcG9uZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKGF0dGFjaGVkTGlzdE9ianMpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gdGhlIGVkaXQgYnV0dG9uIGlzIGNsaWNrZWQuXG5cdCAqL1xuXHRhc3luYyBlZGl0Q2xpY2tlZCAoY2xpY2tlZFRhYmxlOiBzdHJpbmcgPSBudWxsLCBzZWxlY3RlZEZpZWxkczogYW55W10gPSBbXSk6IFByb21pc2U8dm9pZD5cblx0e1xuXHRcdGlmICh0aGlzLm9uRWRpdENsaWNrZWQgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbkVkaXRDbGlja2VkIChjbGlja2VkVGFibGUsIHNlbGVjdGVkRmllbGRzKTtcblxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gZmFsc2UpXG5cdFx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLm1vZGFsVHlwZSA9IFwiZWRpdFwiO1xuXG5cdFx0dGhpcy5zZWxlY3RlZEZpZWxkcyA9IHNlbGVjdGVkRmllbGRzO1xuXG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRfbGlzdCAhPT0gXCJcIilcblx0XHR7XG5cdFx0XHRjb25zdCBhdHRhY2hlZExpc3RzID0gdGhpcy5nZXRBdHRhY2hlZExpc3RzICgpO1xuXG5cdFx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGF0dGFjaGVkTGlzdHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBhdHRhY2hlZExpc3QgPSBhdHRhY2hlZExpc3RzW2lJZHhdO1xuXHRcdFx0XHRsZXQgdGFibGU6IEFkbWluVGFibGUgPSAoPEFkbWluVGFibGU+YXR0YWNoZWRMaXN0KTtcblxuXHRcdFx0XHRpZiAoY2xpY2tlZFRhYmxlICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZiAodGFibGUubmFtZSAhPT0gY2xpY2tlZFRhYmxlKVxuXHRcdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0YWJsZS5hdHRhY2hlZEVkaXQgPSB0aGlzO1xuXHRcdFx0XHRsZXQgc2VsZWN0ZWRGaWVsZCA9IHRhYmxlLmdldFNlbGVjdGVkICgpO1xuXG5cdFx0XHRcdGlmIChzZWxlY3RlZEZpZWxkICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRhd2FpdCB0aGlzLnByb2Nlc3NIb3RGaWVsZHMgKFxuXHRcdFx0XHRcdFx0YXN5bmMgKGh0bWxFbGVtZW50OiBFbGVtZW50LCBmaWVsZDogeyBuYW1lOiBzdHJpbmc7IHR5cGU6IHN0cmluZzsgaW5wdXQ6IHN0cmluZzsgfSkgPT5cblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRcdFx0XHRsZXQgdmFsdWUgPSBzZWxlY3RlZEZpZWxkW2ZpZWxkLm5hbWVdO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChmaWVsZC5pbnB1dCAhPSBudWxsKVxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZpZWxkLmlucHV0ICE9PSBcIlwiKVxuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uIChmaWVsZC5pbnB1dCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IGF3YWl0IGZ1bmMuY2FsbCAodGhpcywgdGhpcywgaHRtbEVsZW1lbnQsIHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRpZiAodmFsdWUgIT0gbnVsbClcblx0XHRcdFx0XHRcdFx0XHQkKGh0bWxFbGVtZW50KS52YWwgKHZhbHVlKTtcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEZpZWxkcyA9IFtzZWxlY3RlZEZpZWxkXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm9uZWRpdCAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmICh0eXBlb2YgKHRoaXMub25lZGl0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbmVkaXQgPSAoPChtb2RhbFR5cGU6IHN0cmluZywgc2VsZWN0ZWRGaWVsZHM6IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbmVkaXQpKTtcblxuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25lZGl0ICh0aGlzLm1vZGFsVHlwZSwgdGhpcy5zZWxlY3RlZEZpZWxkcyk7XG5cblx0XHRcdGlmIChyZXN1bHQgIT0gbnVsbClcblx0XHRcdHtcblx0XHRcdFx0aWYgKHJlc3VsdCA9PT0gZmFsc2UpXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGJvb3RzdHJhcC5Nb2RhbC5nZXRJbnN0YW5jZSAoYCMke3RoaXMubW9kYWxJZH1gKS5zaG93ICgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBldmVudCB0aGF0IGNhbiBiZSBjYWxsZWQgd2hlbiB0aGUgcmVtb3ZlIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgdGhlIHJlbW92ZSBtb2RhbCBvcGVucy5cblx0ICovXG5cdG9uUmVtb3ZlQ2xpY2tlZDogKCkgPT4gUHJvbWlzZTxib29sZWFuPiA9IG51bGw7XG5cblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gdGhlIHJlbW92ZSBidXR0b24gaXMgY2xpY2tlZC5cblx0ICovXG5cdGFzeW5jIHJlbW92ZUNsaWNrZWQgKCk6IFByb21pc2U8dm9pZD5cblx0e1xuXHRcdGlmICh0aGlzLm9uUmVtb3ZlQ2xpY2tlZCAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGxldCByZXN1bHQgPSBhd2FpdCB0aGlzLm9uUmVtb3ZlQ2xpY2tlZCAoKTtcblxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gZmFsc2UpXG5cdFx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLm1vZGFsVHlwZSA9IFwicmVtb3ZlXCI7XG5cblx0XHRsZXQgd2hlcmVGaWVsZHM6IGFueVtdID0gW107XG5cdFx0bGV0IGhvdENvbXBvbmVudDogQWRtaW5UYWJsZSA9IG51bGw7XG5cblx0XHRpZiAodGhpcy5hdHRhY2hlZF9saXN0ICE9PSBcIlwiKVxuXHRcdHtcblx0XHRcdGNvbnN0IGF0dGFjaGVkTGlzdHMgPSB0aGlzLmdldEF0dGFjaGVkTGlzdHMgKCk7XG5cblx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgYXR0YWNoZWRMaXN0cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdHtcblx0XHRcdFx0bGV0IGF0dGFjaGVkTGlzdCA9IGF0dGFjaGVkTGlzdHNbaUlkeF07XG5cdFx0XHRcdGhvdENvbXBvbmVudCA9ICg8QWRtaW5UYWJsZT5hdHRhY2hlZExpc3QpO1xuXG5cdFx0XHRcdGhvdENvbXBvbmVudC5hdHRhY2hlZEVkaXQgPSB0aGlzO1xuXHRcdFx0XHRsZXQgY2hlY2tlZFJvd3MgPSBob3RDb21wb25lbnQuZ2V0Q2hlY2tlZFJvd3MgKCk7XG5cblx0XHRcdFx0aWYgKGNoZWNrZWRSb3dzLmxlbmd0aCA+IDApXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGNoZWNrZWRSb3dzLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGxldCBjaGVja2VkUm93ID0gY2hlY2tlZFJvd3NbaV07XG5cdFx0XHRcdFx0XHR3aGVyZUZpZWxkcy5wdXNoIChjaGVja2VkUm93KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgc2VsZWN0ZWRGaWVsZCA9IGhvdENvbXBvbmVudC5nZXRTZWxlY3RlZCAoKTtcblxuXHRcdFx0XHRpZiAoc2VsZWN0ZWRGaWVsZCAhPSBudWxsKVxuXHRcdFx0XHRcdHdoZXJlRmllbGRzID0gW3NlbGVjdGVkRmllbGRdO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGNvbnN0IGNvbmZpcm1lZDogYm9vbGVhbiA9IGNvbmZpcm0gKFwiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGlzIGl0ZW0/XCIpO1xuXG5cdFx0aWYgKGNvbmZpcm1lZCA9PT0gdHJ1ZSlcblx0XHR7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHdoZXJlRmllbGRzLmxlbmd0aDsgaSsrKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgd2hlcmVGaWVsZCA9IHdoZXJlRmllbGRzW2ldO1xuXG5cdFx0XHRcdGlmIChob3RDb21wb25lbnQgIT0gbnVsbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIFJlbW92ZSBhbnkgZmllbGRzIHRoYXQgYXJlIG1hcmtlZCBhcyByZW1vdmUuXG5cdFx0XHRcdFx0Zm9yIChsZXQga2V5IGluIHdoZXJlRmllbGQpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bGV0IGZpZWxkVHlwZSA9IGhvdENvbXBvbmVudC5nZXRGaWVsZFR5cGUgKGtleSk7XG5cblx0XHRcdFx0XHRcdGlmIChmaWVsZFR5cGUgIT0gbnVsbClcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKGZpZWxkVHlwZSA9PT0gXCJyZW1vdmVcIilcblx0XHRcdFx0XHRcdFx0XHRkZWxldGUgd2hlcmVGaWVsZFtrZXldO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLm9uZGVsZXRlICE9IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRpZiAodHlwZW9mICh0aGlzLm9uZGVsZXRlKSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0XHRcdHRoaXMub25kZWxldGUgPSAoPChzZWxlY3RlZEZpZWxkOiBhbnkpID0+IFByb21pc2U8dm9pZD4+bmV3IEZ1bmN0aW9uICh0aGlzLm9uZGVsZXRlKSk7XG5cblx0XHRcdFx0XHRhd2FpdCB0aGlzLm9uZGVsZXRlICh3aGVyZUZpZWxkKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsZXQgcmVtb3ZlVXJsOiBzdHJpbmcgPSBIb3QuRGF0YS5BZG1pblBhbmVsLnJlbW92ZVVybDtcblxuXHRcdFx0XHRcdGF3YWl0IEhvdC5qc29uUmVxdWVzdCAocmVtb3ZlVXJsLCB7XG5cdFx0XHRcdFx0XHRcdHNjaGVtYTogdGhpcy5zY2hlbWEsXG5cdFx0XHRcdFx0XHRcdHdoZXJlRmllbGRzOiB3aGVyZUZpZWxkXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAod2hlcmVGaWVsZHMubGVuZ3RoID09PSAwKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAodGhpcy5vbmRlbGV0ZSAhPSBudWxsKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbmRlbGV0ZSkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdFx0XHR0aGlzLm9uZGVsZXRlID0gKDwoc2VsZWN0ZWRGaWVsZDogYW55KSA9PiBQcm9taXNlPHZvaWQ+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbmRlbGV0ZSkpO1xuXG5cdFx0XHRcdFx0YXdhaXQgdGhpcy5vbmRlbGV0ZSAobnVsbCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0bGV0IHJlbW92ZVVybDogc3RyaW5nID0gSG90LkRhdGEuQWRtaW5QYW5lbC5yZW1vdmVVcmw7XG5cblx0XHRcdFx0XHRhd2FpdCBIb3QuanNvblJlcXVlc3QgKHJlbW92ZVVybCwge1xuXHRcdFx0XHRcdFx0XHRzY2hlbWE6IHRoaXMuc2NoZW1hLFxuXHRcdFx0XHRcdFx0XHR3aGVyZUZpZWxkczogbnVsbFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XG5cdFx0XHRpZiAoaG90Q29tcG9uZW50ICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnN0IGN1cnJlbnREYXRhID0gYXdhaXQgaG90Q29tcG9uZW50LnJlZnJlc2hMaXN0ICgpO1xuXHRcdFx0XHRjb25zdCBwcmVwYXJlZERhdGEgPSBob3RDb21wb25lbnQucHJlcGFyZURhdGEgKGN1cnJlbnREYXRhKTtcblxuXHRcdFx0XHRob3RDb21wb25lbnQudGFibGVDYWxsYmFjayAocHJlcGFyZWREYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogU2F2ZSB0aGlzIGZvcm0uXG5cdCAqL1xuXHRhc3luYyBvblNhdmUgKClcblx0e1xuXHRcdGxldCB2YWx1ZXM6IGFueSA9IHt9O1xuXG5cdFx0YXdhaXQgdGhpcy5wcm9jZXNzSG90RmllbGRzIChhc3luYyAoaHRtbEVsZW1lbnQ6IEVsZW1lbnQsIGZpZWxkOiB7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyB9KSA9PlxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoZmllbGQudHlwZSA9PT0gXCJyZW1vdmVcIilcblx0XHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdFx0bGV0IHZhbHVlID0gJChodG1sRWxlbWVudCkudmFsICgpO1xuXG5cdFx0XHRcdGlmICgkKGh0bWxFbGVtZW50KS5hdHRyIChcImhvdC12YWx1ZVwiKSAhPSBudWxsKVxuXHRcdFx0XHRcdHZhbHVlID0gJChodG1sRWxlbWVudCkuYXR0ciAoXCJob3QtdmFsdWVcIik7XG5cblx0XHRcdFx0aWYgKCQoaHRtbEVsZW1lbnQpLmF0dHIgKFwiaG90LWZpZWxkLXNhdmVcIikgIT0gbnVsbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGxldCBmaWVsZFNhdmUgPSAkKGh0bWxFbGVtZW50KS5hdHRyIChcImhvdC1maWVsZC1zYXZlXCIpO1xuXG5cdFx0XHRcdFx0aWYgKGZpZWxkU2F2ZSAhPSBudWxsKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlmIChmaWVsZFNhdmUgIT09IFwiXCIpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uIChmaWVsZFNhdmUpO1xuXHRcdFx0XHRcdFx0XHR2YWx1ZSA9IGF3YWl0IGZ1bmMuY2FsbCAodGhpcywgdGhpcywgaHRtbEVsZW1lbnQsIHZhbHVlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZmllbGQudHlwZSA9PT0gXCJhcnJheVwiKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKHZhbHVlc1tmaWVsZC5uYW1lXSA9PSBudWxsKVxuXHRcdFx0XHRcdFx0dmFsdWVzW2ZpZWxkLm5hbWVdID0gW107XG5cblx0XHRcdFx0XHR2YWx1ZXNbZmllbGQubmFtZV0ucHVzaCAodmFsdWUpO1xuXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGZpZWxkLnR5cGUgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0dmFsdWUgPSBwYXJzZUZsb2F0ICh2YWx1ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZmllbGQudHlwZSA9PT0gXCJpbnRlZ2VyXCIpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0dmFsdWUgPSBwYXJzZUludCAodmFsdWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKChmaWVsZC50eXBlID09PSBcImJvb2xcIikgfHwgKGZpZWxkLnR5cGUgPT09IFwiYm9vbGVhblwiKSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRjb25zdCBib29sdmFsID0gdmFsdWUudG9Mb3dlckNhc2UgKCk7XG5cblx0XHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdFx0dmFsdWUgPSBmYWxzZTtcblxuXHRcdFx0XHRcdGlmICgoYm9vbHZhbCA9PSBcIjFcIikgfHwgKGJvb2x2YWwgPT0gXCJ0cnVlXCIpIHx8IChib29sdmFsID09IFwieWVzXCIpKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdHZhbHVlID0gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YWx1ZXNbZmllbGQubmFtZV0gPSB2YWx1ZTtcblx0XHRcdH0pO1xuXG5cdFx0aWYgKHRoaXMub25zYXZlICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbnNhdmUpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHR0aGlzLm9uc2F2ZSA9ICg8KG1vZGFsVHlwZTogc3RyaW5nLCB2YWx1ZXM6IGFueSwgc2VsZWN0ZWRGaWVsZHM6IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+Pm5ldyBGdW5jdGlvbiAodGhpcy5vbnNhdmUpKTtcblxuXHRcdFx0bGV0IHJlc3VsdCA9IGF3YWl0IHRoaXMub25zYXZlICh0aGlzLm1vZGFsVHlwZSwgdmFsdWVzLCB0aGlzLnNlbGVjdGVkRmllbGRzKTtcblxuXHRcdFx0aWYgKHJlc3VsdCA9PT0gZmFsc2UpXG5cdFx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGlmICh0aGlzLm1vZGFsVHlwZSA9PT0gXCJhZGRcIilcblx0XHRcdHtcblx0XHRcdFx0bGV0IGFkZFVybDogc3RyaW5nID0gSG90LkRhdGEuQWRtaW5QYW5lbC5hZGRVcmw7XG5cblx0XHRcdFx0YXdhaXQgSG90Lmpzb25SZXF1ZXN0IChhZGRVcmwsIHtcblx0XHRcdFx0XHRcdHNjaGVtYTogdGhpcy5zY2hlbWEsXG5cdFx0XHRcdFx0XHRmaWVsZHM6IHZhbHVlc1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5tb2RhbFR5cGUgPT09IFwiZWRpdFwiKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAodGhpcy5zZWxlY3RlZEZpZWxkcy5sZW5ndGggPT09IDApXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRhbGVydCAoXCJObyBpdGVtKHMpIHNlbGVjdGVkIVwiKTtcblxuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCB3aGVyZUZpZWxkczogYW55ID0ge307XG5cblx0XHRcdFx0YXdhaXQgdGhpcy5wcm9jZXNzSG90RmllbGRzIChhc3luYyAoaHRtbEVsZW1lbnQ6IEVsZW1lbnQsIGZpZWxkOiB7IG5hbWU6IHN0cmluZzsgdHlwZTogc3RyaW5nOyB9KSA9PlxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlmIChmaWVsZC50eXBlID09PSBcInJlbW92ZVwiKVxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XG5cdFx0XHRcdFx0XHRsZXQgdmFsdWUgPSAkKGh0bWxFbGVtZW50KS52YWwgKCk7XG5cdFx0XG5cdFx0XHRcdFx0XHRpZiAoJChodG1sRWxlbWVudCkuYXR0ciAoXCJob3QtdmFsdWVcIikgIT0gbnVsbClcblx0XHRcdFx0XHRcdFx0dmFsdWUgPSAkKGh0bWxFbGVtZW50KS5hdHRyIChcImhvdC12YWx1ZVwiKTtcblx0XHRcblx0XHRcdFx0XHRcdGlmIChmaWVsZC50eXBlID09PSBcImFycmF5XCIpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGlmICh3aGVyZUZpZWxkc1tmaWVsZC5uYW1lXSA9PSBudWxsKVxuXHRcdFx0XHRcdFx0XHRcdHdoZXJlRmllbGRzW2ZpZWxkLm5hbWVdID0gW107XG5cdFx0XG5cdFx0XHRcdFx0XHRcdHdoZXJlRmllbGRzW2ZpZWxkLm5hbWVdLnB1c2ggKHZhbHVlKTtcblx0XHRcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFxuXHRcdFx0XHRcdFx0d2hlcmVGaWVsZHNbZmllbGQubmFtZV0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRsZXQgZWRpdFVybDogc3RyaW5nID0gSG90LkRhdGEuQWRtaW5QYW5lbC5lZGl0VXJsO1xuXG5cdFx0XHRcdGF3YWl0IEhvdC5qc29uUmVxdWVzdCAoZWRpdFVybCwge1xuXHRcdFx0XHRcdFx0c2NoZW1hOiB0aGlzLnNjaGVtYSxcblx0XHRcdFx0XHRcdHdoZXJlRmllbGRzOiB3aGVyZUZpZWxkcyxcblx0XHRcdFx0XHRcdGZpZWxkczogdmFsdWVzXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuYXR0YWNoZWRfbGlzdCAhPT0gXCJcIilcblx0XHR7XG5cdFx0XHRjb25zdCBhdHRhY2hlZExpc3RzID0gdGhpcy5nZXRBdHRhY2hlZExpc3RzICgpO1xuXG5cdFx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGF0dGFjaGVkTGlzdHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBhdHRhY2hlZExpc3QgPSBhdHRhY2hlZExpc3RzW2lJZHhdO1xuXHRcdFx0XHRsZXQgdGFibGU6IEFkbWluVGFibGUgPSAoPEFkbWluVGFibGU+YXR0YWNoZWRMaXN0KTtcblxuXHRcdFx0XHR0YWJsZS5hdHRhY2hlZEVkaXQgPSB0aGlzO1xuXG5cdFx0XHRcdGNvbnN0IGN1cnJlbnREYXRhID0gYXdhaXQgdGFibGUucmVmcmVzaExpc3QgKCk7XG5cdFx0XHRcdGNvbnN0IHByZXBhcmVkRGF0YSA9IHRhYmxlLnByZXBhcmVEYXRhIChjdXJyZW50RGF0YSk7XG5cblx0XHRcdFx0dGFibGUudGFibGVDYWxsYmFjayAocHJlcGFyZWREYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodGhpcy5jbG9zZU9uU2F2ZSA9PT0gdHJ1ZSlcblx0XHR7XG5cdFx0XHRib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UgKGAjJHt0aGlzLm1vZGFsSWR9YCkuaGlkZSAoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBsaXN0IG9mIGRhdGEgZnJvbSB0aGUgc2VydmVyLlxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdHRoaXMubW9kYWwgPSBuZXcgYm9vdHN0cmFwLk1vZGFsICgkKGAjJHt0aGlzLm1vZGFsSWR9YClbMF0sIHtcblx0XHRcdFx0XCJiYWNrZHJvcFwiOiB0cnVlLFxuXHRcdFx0XHRcImtleWJvYXJkXCI6IHRydWUsXG5cdFx0XHRcdFwiZm9jdXNcIjogdHJ1ZVxuXHRcdFx0fSk7XG5cblx0XHQvLy8gQHRvZG8gRml4IHRoaXMgdGVtcG9yYXJ5IGhhY2suIEkgZG9udCBsaWtlIGl0LlxuXHRcdHNldFRpbWVvdXQgKCgpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGlmICh0aGlzLmF0dGFjaGVkX2xpc3QgIT09IFwiXCIpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjb25zdCBhdHRhY2hlZExpc3RzID0gdGhpcy5nZXRBdHRhY2hlZExpc3RzICgpO1xuXHRcdFxuXHRcdFx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgYXR0YWNoZWRMaXN0cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRsZXQgYXR0YWNoZWRMaXN0ID0gYXR0YWNoZWRMaXN0c1tpSWR4XTtcblx0XHRcdFx0XHRcdGxldCB0YWJsZTogQWRtaW5UYWJsZSA9ICg8QWRtaW5UYWJsZT5hdHRhY2hlZExpc3QpO1xuXG5cdFx0XHRcdFx0XHRpZiAodGFibGUgIT0gbnVsbClcblx0XHRcdFx0XHRcdFx0dGFibGUuYXR0YWNoZWRFZGl0ID0gdGhpcztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sIDUwKTtcblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZyB8IEhvdENvbXBvbmVudE91dHB1dFtdXG5cdHtcblx0XHRpZiAodGhpcy5uYW1lID09PSBcIlwiKVxuXHRcdFx0dGhyb3cgbmV3IEVycm9yIChgWW91IG11c3Qgc3BlY2lmeSBhIG5hbWUgZm9yIGVhY2ggYWRtaW4tZWRpdCBlbGVtZW50IWApO1xuXG5cdFx0dGhpcy5tb2RhbElkID0gYCR7dGhpcy5uYW1lfU1vZGFsYDtcblxuXHRcdGxldCBvdXRwdXRPYmogPSBbe1xuXHRcdFx0aHRtbDogYFxuXHRcdFx0PCEtLSAke3RoaXMudGl0bGV9IE1vZGFsIFN0YXJ0IC0tPlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsIGZhZGUgJHt0aGlzLmNzc19jbGFzc31cIiBpZD1cIiR7dGhpcy5tb2RhbElkfVwiIHRhYmluZGV4PVwiLTFcIiBhcmlhLWxhYmVsbGVkYnk9XCIke3RoaXMubmFtZX1Nb2RhbExhYmVsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cblx0XHRcdFx0XHRcdDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCIke3RoaXMubmFtZX1Nb2RhbExhYmVsXCI+JHt0aGlzLnRpdGxlfTwvaDU+XG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+PC9idXR0b24+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cblx0XHRcdFx0XHRcdDxob3QtcGxhY2UtaGVyZSBuYW1lID0gXCJtb2RhbEJvZHlcIiB0eXBlID0gXCJtb2RhbFwiPjwvaG90LXBsYWNlLWhlcmU+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIGRhdGEtYnMtZGlzbWlzcz1cIm1vZGFsXCI+Q2FuY2VsPC9idXR0b24+XG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIG9uY2xpY2sgPSBcImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCcke3RoaXMubW9kYWxJZH0nKS5vblNhdmUgKCk7XCI+JHt0aGlzLmJ1dHRvbl90aXRsZX08L2J1dHRvbj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDwhLS0gJHt0aGlzLnRpdGxlfSBNb2RhbCBFbmQgLS0+YCxcblx0XHRcdGRvY3VtZW50U2VsZWN0b3I6IFwiYm9keVwiXG5cdFx0fV07XG5cblx0XHRpZiAodGhpcy5hZGRfcGxhY2VfaGVyZSAhPT0gXCJcIilcblx0XHR7XG5cdFx0XHRvdXRwdXRPYmoucHVzaCAoe1xuXHRcdFx0XHRodG1sOiBgPGJ1dHRvbiBpZCA9IFwiJHt0aGlzLm1vZGFsSWR9LWFkZC1idG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIG9uY2xpY2sgPSBcInRoaXMuYWRkQ2xpY2tlZCAoKTtcIj4ke3RoaXMuYWRkX3RleHR9PC9idXR0b24+YCxcblx0XHRcdFx0ZG9jdW1lbnRTZWxlY3RvcjogYGhvdC1wbGFjZS1oZXJlW25hbWU9XCIke3RoaXMuYWRkX3BsYWNlX2hlcmV9XCJdYFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuZWRpdF9wbGFjZV9oZXJlICE9PSBcIlwiKVxuXHRcdHtcblx0XHRcdG91dHB1dE9iai5wdXNoICh7XG5cdFx0XHRcdGh0bWw6IGA8YnV0dG9uIGlkID0gXCIke3RoaXMubW9kYWxJZH0tZWRpdC1idG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIG9uY2xpY2sgPSBcInRoaXMuZWRpdENsaWNrZWQgKCcke3RoaXMubW9kYWxJZH0nKTtcIj4ke3RoaXMuZWRpdF90ZXh0fTwvYnV0dG9uPmAsXG5cdFx0XHRcdGRvY3VtZW50U2VsZWN0b3I6IGBob3QtcGxhY2UtaGVyZVtuYW1lPVwiJHt0aGlzLmVkaXRfcGxhY2VfaGVyZX1cIl1gXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yZW1vdmVfcGxhY2VfaGVyZSAhPT0gXCJcIilcblx0XHR7XG5cdFx0XHRvdXRwdXRPYmoucHVzaCAoe1xuXHRcdFx0XHRodG1sOiBgPGJ1dHRvbiBpZCA9IFwiJHt0aGlzLm1vZGFsSWR9LXJlbW92ZS1idG5cIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIG9uY2xpY2sgPSBcInRoaXMucmVtb3ZlQ2xpY2tlZCAoKTtcIj4ke3RoaXMucmVtb3ZlX3RleHR9PC9idXR0b24+YCxcblx0XHRcdFx0ZG9jdW1lbnRTZWxlY3RvcjogYGhvdC1wbGFjZS1oZXJlW25hbWU9XCIke3RoaXMucmVtb3ZlX3BsYWNlX2hlcmV9XCJdYFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChvdXRwdXRPYmopO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBIb3RTdGFxLCBIb3QsIEhvdEFQSSwgSG90Q29tcG9uZW50IH0gZnJvbSBcImhvdHN0YXFcIjtcblxuZXhwb3J0IGNsYXNzIEFkbWluQnV0dG9uIGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBUaGUgQ1NTIGNsYXNzIHRvIGFwcGx5IHRvIHRoZSBidXR0b24uXG5cdCAqL1xuXHRjc3NfY2xhc3M6IHN0cmluZztcblx0LyoqXG5cdCAqIEV4ZWN1dGVzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkLlxuXHQgKi9cblx0b25jbGljazogKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBQcm9taXNlPGFueT47XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tYnV0dG9uXCI7XG5cdFx0dGhpcy5jc3NfY2xhc3MgPSBcImJ0biBidG4tc20gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCI7XG5cdFx0dGhpcy5vbmNsaWNrID0gbnVsbDtcblx0fVxuXG5cdGFzeW5jIGJ1dHRvbkNsaWNrZWQgKCk6IFByb21pc2U8dm9pZD5cblx0e1xuXHR9XG5cblx0LyoqXG5cdCAqIENvcnJlY3RzIHRoZSBwbGFjZW1lbnQgb2YgdGhlIHRleHQgZWxlbWVudHMgZm9yIG1vZGFscy5cblx0ICovXG5cdG9uUG9zdFBsYWNlIChwYXJlbnRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50XG5cdHtcblx0XHRsZXQgcGxhY2VIZXJlQXJyYXkgPSBwYXJlbnRIdG1sRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsIChgaG90LXBsYWNlLWhlcmVbdHlwZT1cIm1vZGFsXCJdYCk7XG5cblx0XHRpZiAocGxhY2VIZXJlQXJyYXkubGVuZ3RoID4gMClcblx0XHR7XG5cdFx0XHRsZXQgcGxhY2VIZXJlID0gcGxhY2VIZXJlQXJyYXlbMF07XG5cdFx0XHRwYXJlbnRIdG1sRWxlbWVudC5yZW1vdmVDaGlsZCAoaHRtbEVsZW1lbnQpO1xuXHRcdFx0cGxhY2VIZXJlLmFwcGVuZENoaWxkIChodG1sRWxlbWVudCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMub25jbGljayAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmICh0eXBlb2YgKHRoaXMub25jbGljaykgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25jbGljayA9ICg8KGV2ZW50OiBNb3VzZUV2ZW50KSA9PiBQcm9taXNlPGFueT4+bmV3IEZ1bmN0aW9uICh0aGlzLm9uY2xpY2spKTtcblxuXHRcdFx0aHRtbEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lciAoXCJjbGlja1wiLCB0aGlzLm9uY2xpY2spO1xuXHRcdH1cblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZ1xuXHR7XG5cdFx0cmV0dXJuIChgPGJ1dHRvbiBpZCA9IFwiJHt0aGlzLmh0bWxFbGVtZW50c1swXS5pZH1cIiBjbGFzcyA9IFwiJHt0aGlzLmNzc19jbGFzc31cIiBvbmNsaWNrID0gXCJ0aGlzLmJ1dHRvbkNsaWNrZWQgKCk7XCI+JHt0aGlzLmlubmVyfTwvYnV0dG9uPmApO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBIb3RTdGFxLCBIb3QsIEhvdEFQSSwgSG90Q29tcG9uZW50LCBIb3RDb21wb25lbnRPdXRwdXQgfSBmcm9tIFwiaG90c3RhcVwiO1xuaW1wb3J0IHsgQWRtaW5UYWJsZUZpZWxkIH0gZnJvbSBcIi4vYWRtaW4tdGFibGUtZmllbGRcIjtcbmltcG9ydCB7IEFkbWluRWRpdCB9IGZyb20gXCIuL2FkbWluLWVkaXRcIjtcblxuaW1wb3J0IERhdGFUYWJsZSwgeyBBcGksIENvbmZpZ0NvbHVtbnMsIEludGVybmFsU2V0dGluZ3MgfSBmcm9tIFwiZGF0YXRhYmxlcy5uZXRcIjtcbmltcG9ydCBkdDUgZnJvbSAnZGF0YXRhYmxlcy5uZXQtYnM1JztcbmltcG9ydCBkdGMgZnJvbSAnZGF0YXRhYmxlcy5uZXQtY29scmVvcmRlci1iczUnO1xuaW1wb3J0IGR0cyBmcm9tICdkYXRhdGFibGVzLm5ldC1zY3JvbGxlci1iczUnO1xuaW1wb3J0IGR0c2IgZnJvbSAnZGF0YXRhYmxlcy5uZXQtc2VhcmNoYnVpbGRlci1iczUnO1xuaW1wb3J0IGR0c2VsIGZyb20gJ2RhdGF0YWJsZXMubmV0LXNlbGVjdC1iczUnO1xuXG4vKipcbiAqIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgbGlzdCBzZWFyY2guXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUxpc3RTZWFyY2hQcm9wZXJ0aWVzXG57XG5cdC8qKlxuXHQgKiBUaGUgc2VhcmNoLlxuXHQgKi9cblx0c2VhcmNoPzogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIHN0YXJ0IGluZGV4LlxuXHQgKi9cblx0b2Zmc2V0PzogbnVtYmVyO1xuXHQvKipcblx0ICogVGhlIGxlbmd0aC5cblx0ICovXG5cdGxpbWl0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBBUEkgcmVzcG9uc2UgdGhhdCBpcyBleHBlY3RlZCB0byBiZSByZXR1cm5lZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQVBJUmVzcG9uc2Vcbntcblx0LyoqXG5cdCAqIFRoZSBsZW5ndGggb2YgdGhlIGRhdGEuXG5cdCAqL1xuXHRsZW5ndGg6IG51bWJlcjtcblx0LyoqXG5cdCAqIFRoZSBkYXRhIHRvIHJldHVybi5cblx0ICovXG5cdGRhdGE6IGFueVtdO1xuXHQvKipcblx0ICogVGhlIGVycm9yIG1lc3NhZ2UsIGlmIGFueS5cblx0ICovXG5cdGVycm9yPzogc3RyaW5nO1xuXHQvKipcblx0ICogQ2FuIGVuYWJsZS9kaXNhYmxlIHNhbml0aXphdGlvbiBvZiB0aGUgcmV0dXJuaW5nIGRhdGEuXG5cdCAqL1xuXHRob3RTYW5pdGl6ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBZG1pblRhYmxlIGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBUaGUgdGl0bGUgb2YgdGhpcyB0YWJsZS5cblx0ICovXG5cdHRpdGxlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgYXR0YWNoZWQgc2NoZW1hLlxuXHQgKi9cblx0c2NoZW1hOiBzdHJpbmc7XG5cdGhlYWRlcnM6IHtcblx0XHQvKipcblx0XHQgKiBUaGUgc3RvcmVkIGhlYWRlciBmaWVsZHMuXG5cdFx0ICovXG5cdFx0ZmllbGRzOiB7IFtuYW1lOiBzdHJpbmddOiBBZG1pblRhYmxlRmllbGQ7IH07XG5cdFx0LyoqXG5cdFx0ICogVGhlIGhlYWRlcnMgYXJlIHN0b3JlZCBpbiBhIGtleS92YWx1ZSBvYmplY3QuXG5cdFx0ICogXG5cdFx0ICogQGV4YW1wbGUgeyBcIm5hbWVcIjogXCI8dGg+TmFtZTwvdGg+XCIsIFwiZW1haWxcIjogXCI8dGg+RW1haWw8L3RoPlwiIH1cblx0XHQgKi9cblx0XHRlbGVtZW50czogeyBbbmFtZTogc3RyaW5nXTogYW55OyB9O1xuXHRcdC8qKlxuXHRcdCAqIFRoZSBoZWFkZXIgaW5kaWNpZXMgYXJlIHN0b3JlZCBpbiBhIGtleS92YWx1ZSBvYmplY3QuXG5cdFx0ICogXG5cdFx0ICogQGV4YW1wbGUgY29uc29sZS5sb2cgKHRoaXMuaGVhZGVySW5kaWNpZXNbXCJuYW1lXCJdKTsgLy8gT3V0cHV0cyAwXG5cdFx0ICovXG5cdFx0aW5kaWNpZXM6IG51bWJlcltdO1xuXHR9O1xuXHQvKipcblx0ICogVGhlIHJvdyBlbGVtZW50cyBhcmUgc3RvcmVkIGluIGFuIGFycmF5IHdpdGgga2V5L3ZhbHVlIGZpZWxkcyBhbmQgaXQncyBhdHRhY2hlZCBodG1sIGVsZW1lbnQuXG5cdCAqIFxuXHQgKiBAZXhhbXBsZVxuXHQgKiB7XG5cdCAqICAgXCJmaWVsZHNcIjogW1xuXHQgKiAgICAgICB7XG5cdCAqICAgICAgICAgXCJuYW1lXCI6IFwiSm9obiBTbWl0aFwiLFxuXHQgKiAgICAgICAgIFwiZW1haWxcIjogXCJqb2huLnNtaXRoQHRlc3QuY29tXCJcblx0ICogICAgICAgfVxuXHQgKiAgICAgXSxcblx0ICogICBcImh0bWxcIjogXCI8dHI+PHRkPkpvaG4gU21pdGg8L3RkPjx0ZD5qb2huLnNtaXRoQHRlc3QuY29tPC90ZD48L3RyPlwiXG5cdCAqIH1cblx0ICovXG5cdHJvd0VsZW1lbnRzOiB7IGZpZWxkczogYW55W107IGVsZW1lbnQ6IEhUTUxFbGVtZW50OyB9W10gPSBbXTtcblx0LyoqXG5cdCAqIFRoZSB0YWJsZSBjYWxsYmFjayBmb3Igd2hlbiB1cGRhdGluZyBkYXRhLlxuXHQgKi9cblx0dGFibGVDYWxsYmFjazogKChkYXRhOiBhbnkpID0+IHZvaWQpO1xuXHQvKipcblx0ICogVGhlIHRhYmxlIGRhdGEgZm9yIHdoZW4gdXBkYXRpbmcgZGF0YS5cblx0ICovXG5cdHByb3RlY3RlZCB0YWJsZURhdGE6IGFueTtcblx0LyoqXG5cdCAqIFRoZSBzZWxlY3RlZCByb3cgaW5kaWNpZXMuIEVhY2ggaW5kZXggbWFwcyB0byB0aGUgcm93RWxlbWVudHMgYXJyYXkuXG5cdCAqIFxuXHQgKiBAZml4bWUgQWRkIHN1cHBvcnQgZm9yIHRoaXMgaW4gdGhlIGZ1dHVyZS5cblx0ICovXG5cdC8vcHJvdGVjdGVkIHNlbGVjdGVkUm93czogbnVtYmVyW107XG5cdC8qKlxuXHQgKiBUaGUgbW9zdCByZWNlbnRseSBzZWxlY3RlZCByb3cgaW5kZXguIFRoZSBpbmRleCBtYXBzIHRvIHRoZSByb3dFbGVtZW50cyBhcnJheS5cblx0ICovXG5cdHByb3RlY3RlZCBzZWxlY3RlZDogbnVtYmVyO1xuXHQvKipcblx0ICogVGhlIGxpc3QgZnVuY3Rpb24gdG8gZXhlY3V0ZSB0byByZXRyaWV2ZSBkYXRhLlxuXHQgKi9cblx0b25saXN0OiAoc2VhcmNoOiBJTGlzdFNlYXJjaFByb3BlcnRpZXMpID0+IFByb21pc2U8SUFQSVJlc3BvbnNlPjtcblx0LyoqXG5cdCAqIFRoZSBsaXN0IHVybCB0byB1c2UgZm9yIHRoaXMgdGFibGUuIEhvdC5EYXRhLkFkbWluUGFuZWwubGlzdFVybCB3aWxsIG5vdCBiZSB1c2VkIGluIHRoaXMgY2FzZS5cblx0ICovXG5cdGxpc3R1cmw6IHN0cmluZztcblx0LyoqXG5cdCAqIElmIHNldCB0byB0cnVlLCBlYWNoIHJvdyB3aWxsIGhhdmUgYSBjaGVja2JveC5cblx0ICogQGRlZmF1bHQgdHJ1ZVxuXHQgKi9cblx0Y2hlY2tib3g6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBJZiBzZXQgdG8gdHJ1ZSwgYSBzaW5nbGUgY2xpY2sgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBlZGl0IHRoZSByb3cuXG5cdCAqL1xuXHRzaW5nbGVjbGlja2VkaXQ6IGJvb2xlYW47XG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB0aGlzIGV2ZW50IHdoZW4gYSByb3cgaXMgc2VsZWN0ZWQuIFRoZSBwb3RlbnRpYWwgaXRlbSB0byBiZSBzZWxlY3RlZCBcblx0ICogd2lsbCBhbHNvIGJlIHBhc3NlZC4gSWYgdGhpcyByZXR1cm5zIGZhbHNlLCB0aGUgcm93IHdpbGwgbm90IGJlIHNlbGVjdGVkLlxuXHQgKi9cblx0b25zZWxlY3RlZHJvdzogKHJvd0luZGV4OiBudW1iZXIsIGl0ZW06IGFueVtdKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXHQvKipcblx0ICogVGhlIGF0dGFjaGVkIGVkaXQgZm9ybSwgaWYgYW55LlxuXHQgKi9cblx0YXR0YWNoZWRFZGl0OiBBZG1pbkVkaXQ7XG5cdC8qKlxuXHQgKiBUaGUgYXNzb2NpYXRlZCBEYXRhVGFibGUuXG5cdCAqL1xuXHRkYXRhVGFibGU6IERhdGFUYWJsZTxBcGk+O1xuXHQvKipcblx0ICogSW5kaWNhdGVzIGlmIHRoZSBsaXN0IGlzIHJlZnJlc2hpbmcuXG5cdCAqL1xuXHRpc0xpc3RSZWZyZXNoaW5nOiBib29sZWFuO1xuXG5cdGNvbnN0cnVjdG9yIChjb3B5OiBIb3RDb21wb25lbnQgfCBIb3RTdGFxLCBhcGk6IEhvdEFQSSlcblx0e1xuXHRcdHN1cGVyIChjb3B5LCBhcGkpO1xuXG5cdFx0dGhpcy50YWcgPSBcImFkbWluLXRhYmxlXCI7XG5cdFx0dGhpcy50aXRsZSA9IFwiXCI7XG5cdFx0dGhpcy5zY2hlbWEgPSBcIlwiO1xuXHRcdHRoaXMuaGVhZGVycyA9IHtcblx0XHRcdFx0ZmllbGRzOiB7fSxcblx0XHRcdFx0ZWxlbWVudHM6IHt9LFxuXHRcdFx0XHRpbmRpY2llczogW11cblx0XHRcdH07XG5cdFx0dGhpcy5yb3dFbGVtZW50cyA9IFtdO1xuXHRcdHRoaXMudGFibGVDYWxsYmFjayA9IG51bGw7XG5cdFx0dGhpcy50YWJsZURhdGEgPSBudWxsO1xuXHRcdC8vdGhpcy5zZWxlY3RlZFJvd3MgPSBbXTtcblx0XHR0aGlzLm9ubGlzdCA9IG51bGw7XG5cdFx0dGhpcy5saXN0dXJsID0gXCJcIjtcblx0XHR0aGlzLmNoZWNrYm94ID0gdHJ1ZTtcblx0XHR0aGlzLnNpbmdsZWNsaWNrZWRpdCA9IGZhbHNlO1xuXHRcdHRoaXMub25zZWxlY3RlZHJvdyA9IG51bGw7XG5cdFx0dGhpcy5hdHRhY2hlZEVkaXQgPSBudWxsO1xuXHRcdHRoaXMuc2VsZWN0ZWQgPSAtMTtcblx0XHR0aGlzLmRhdGFUYWJsZSA9IG51bGw7XG5cdFx0dGhpcy5pc0xpc3RSZWZyZXNoaW5nID0gZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQWRkIGEgaGVhZGVyIHRvIHRoZSB0YWJsZS5cblx0ICovXG5cdGFkZEhlYWRlciAodGFibGVGaWVsZEVsZW1lbnQ6IEhUTUxFbGVtZW50KVxuXHR7XG5cdFx0bGV0IGhlYWRlciA9IHRoaXMuaHRtbEVsZW1lbnRzWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lIChcInRoZWFkXCIpWzBdO1xuXG5cdFx0aWYgKHRoaXMuaGVhZGVycy5pbmRpY2llcy5sZW5ndGggPCAxKVxuXHRcdFx0dGhpcy5oZWFkZXJzLmluZGljaWVzLnB1c2ggKG51bGwpO1xuXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHRoaXMuaGVhZGVycy5pbmRpY2llcy5wdXNoICh0YWJsZUZpZWxkRWxlbWVudC5ob3RDb21wb25lbnQuZmllbGQpO1xuXHRcdGhlYWRlci5hcHBlbmRDaGlsZCAodGFibGVGaWVsZEVsZW1lbnQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCBhIGhlYWRlciB0byB0aGUgdGFibGUuXG5cdCAqL1xuXHRhZGRIZWFkZXJEYXRhT25seSAodGFibGVGaWVsZDogQWRtaW5UYWJsZUZpZWxkLCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpXG5cdHtcblx0XHRpZiAodGhpcy5oZWFkZXJzLmluZGljaWVzLmxlbmd0aCA8IDEpXG5cdFx0XHR0aGlzLmhlYWRlcnMuaW5kaWNpZXMucHVzaCAobnVsbCk7XG5cblx0XHR0aGlzLmhlYWRlcnMuaW5kaWNpZXMucHVzaCAodGFibGVGaWVsZC5maWVsZCk7XG5cdFx0dGhpcy5oZWFkZXJzLmZpZWxkc1t0YWJsZUZpZWxkLmZpZWxkXSA9IHRhYmxlRmllbGQ7XG5cdFx0dGhpcy5oZWFkZXJzLmVsZW1lbnRzW3RhYmxlRmllbGQuZmllbGRdID0gaHRtbEVsZW1lbnQ7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSBmaWVsZCB0eXBlIG9mIGEgZmllbGQuXG5cdCAqL1xuXHRnZXRGaWVsZFR5cGUgKGZpZWxkTmFtZTogc3RyaW5nKTogc3RyaW5nXG5cdHtcblx0XHRpZiAodGhpcy5oZWFkZXJzLmVsZW1lbnRzW2ZpZWxkTmFtZV0gIT0gbnVsbClcblx0XHR7XG5cdFx0XHRsZXQgaG90Q29tcG9uZW50OiBBZG1pblRhYmxlRmllbGQgPSB0aGlzLmhlYWRlcnMuZWxlbWVudHNbZmllbGROYW1lXS5ob3RDb21wb25lbnQ7XG5cblx0XHRcdGlmIChob3RDb21wb25lbnQgIT0gbnVsbClcblx0XHRcdFx0cmV0dXJuIChob3RDb21wb25lbnQuZmllbGRfdHlwZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChudWxsKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBFeGVjdXRlcyB3aGVuIGEgcm93IGlzIHNlbGVjdGVkLlxuXHQgKi9cblx0YXN5bmMgc2VsZWN0Um93IChodG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIHJvd0luZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+XG5cdHtcblx0XHQvLyBJbiB0aGUgZnV0dXJlLCB3ZSB3aWxsIHN1cHBvcnQgbXVsdGlwbGUgcm93cyBiZWluZyBzZWxlY3RlZC4gRm9yIG5vdyBcblx0XHQvLyB0aGlzIHdpbGwgZW5zdXJlIHRoYXQgb25seSBvbmUgcm93IGlzIHNlbGVjdGVkIGF0IGEgdGltZS5cblx0XHR7XG5cdFx0XHRsZXQgdGJvZHkgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0Ym9keVwiKVswXTtcblx0XHRcdGxldCByb3dzID0gdGJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwidHJcIik7XG5cblx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgcm93cy5sZW5ndGg7IGlJZHgrKylcblx0XHRcdHtcblx0XHRcdFx0bGV0IHJvdzogSFRNTFRhYmxlUm93RWxlbWVudCA9IHJvd3NbaUlkeF07XG5cblx0XHRcdFx0aWYgKHJvdy5jbGFzc0xpc3QuY29udGFpbnMgKFwidGFibGUtcHJpbWFyeVwiKSA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRyb3cuY2xhc3NMaXN0LnJlbW92ZSAoXCJ0YWJsZS1wcmltYXJ5XCIpO1xuXHRcdFx0fVxuXG5cdFx0XHRodG1sRWxlbWVudC5jbGFzc0xpc3QuYWRkIChcInRhYmxlLXByaW1hcnlcIik7XG5cdFx0fVxuXG5cdFx0dGhpcy5zZWxlY3RlZCA9IHJvd0luZGV4O1xuXG5cdFx0aWYgKHR5cGVvZiAodGhpcy5zaW5nbGVjbGlja2VkaXQpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0dGhpcy5zaW5nbGVjbGlja2VkaXQgPSBIb3RTdGFxLnBhcnNlQm9vbGVhbiAodGhpcy5zaW5nbGVjbGlja2VkaXQpO1xuXG5cdFx0aWYgKHRoaXMuc2luZ2xlY2xpY2tlZGl0ID09PSB0cnVlKVxuXHRcdHtcblx0XHRcdGlmICh0aGlzLmF0dGFjaGVkRWRpdCAhPSBudWxsKVxuXHRcdFx0XHRhd2FpdCB0aGlzLmF0dGFjaGVkRWRpdC5lZGl0Q2xpY2tlZCAodGhpcy5uYW1lKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vbnNlbGVjdGVkcm93ICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0aWYgKHR5cGVvZiAodGhpcy5vbnNlbGVjdGVkcm93KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0dGhpcy5vbnNlbGVjdGVkcm93ID0gKDwocm93SW5kZXg6IG51bWJlciwgaXRlbTogYW55W10pID0+IFByb21pc2U8Ym9vbGVhbj4+bmV3IEZ1bmN0aW9uICh0aGlzLm9uc2VsZWN0ZWRyb3cpKTtcblxuXHRcdFx0bGV0IGl0ZW06IGFueVtdID0gdGhpcy5nZXRTZWxlY3RlZCAoKTtcblxuXHRcdFx0aWYgKGl0ZW0gPT0gbnVsbClcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHRsZXQgcmVzdWx0ID0gYXdhaXQgdGhpcy5vbnNlbGVjdGVkcm93IChyb3dJbmRleCwgaXRlbSk7XG5cblx0XHRcdGlmIChyZXN1bHQgPT09IGZhbHNlKVxuXHRcdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Lyp0aGlzLnNlbGVjdGVkUm93cyA9IFtdO1xuXHRcdGxldCB0Ym9keSA9IHRoaXMuaHRtbEVsZW1lbnRzWzFdLmdldEVsZW1lbnRzQnlUYWdOYW1lIChcInRib2R5XCIpWzBdO1xuXG5cdFx0Ly8gRmluZCBhbGwgdGhlIGNoZWNrYm94ZXMgaW4gdGJvZHkuXG5cdFx0bGV0IGNoZWNrYm94ZXMgPSB0Ym9keS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJpbnB1dFwiKTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgY2hlY2tib3hlcy5sZW5ndGg7IGlJZHgrKylcblx0XHR7XG5cdFx0XHRsZXQgY2hlY2tib3g6IEhUTUxJbnB1dEVsZW1lbnQgPSBjaGVja2JveGVzW2lJZHhdO1xuXG5cdFx0XHRpZiAoY2hlY2tib3guY2hlY2tlZCAhPSBudWxsKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoY2hlY2tib3guY2hlY2tlZCA9PT0gdHJ1ZSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIEdldCB0aGUgZGF0YS1pbmRleCBhdHRyaWJ1dGUuXG5cdFx0XHRcdFx0bGV0IGRhdGFJbmRleFN0cjogc3RyaW5nID0gY2hlY2tib3gucGFyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LmdldEF0dHJpYnV0ZSAoXCJkYXRhLWluZGV4XCIpO1xuXHRcdFx0XHRcdGxldCBkYXRhSW5kZXg6IG51bWJlciA9ICBwYXJzZUludCAoZGF0YUluZGV4U3RyKTtcblxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRSb3dzLnB1c2ggKGRhdGFJbmRleCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9Ki9cblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgdGhlIHNlbGVjdGVkIGRhdGEuXG5cdCAqL1xuXHRnZXRTZWxlY3RlZCAoKTogYW55W11cblx0e1xuXHRcdGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5zZWxlY3RlZDtcblxuXHRcdGlmIChpbmRleCA8IDApXG5cdFx0XHRyZXR1cm4gKG51bGwpO1xuXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGNvbnN0IHJlc3VsdCA9IHRoaXMuZGF0YVRhYmxlLnJvdyhpbmRleCkuZGF0YSgpO1xuXG5cdFx0cmV0dXJuIChyZXN1bHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgc2VsZWN0ZWQgZGF0YS5cblx0ICovXG5cdC8qZ2V0U2VsZWN0ZWRSb3dzICgpOiBhbnlbXVxuXHR7XG5cdFx0bGV0IHJvd3M6IGFueVtdID0gW107XG5cblx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IHRoaXMuc2VsZWN0ZWRSb3dzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdHtcblx0XHRcdGxldCBpbmRleDogbnVtYmVyID0gdGhpcy5zZWxlY3RlZFJvd3NbaUlkeF07XG5cdFx0XHRyb3dzLnB1c2ggKHRoaXMucm93RWxlbWVudHNbaW5kZXhdLmZpZWxkcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChyb3dzKTtcblx0fSovXG5cblx0LyoqXG5cdCAqIEdldCB0aGUgZGF0YSBmb3IgZWFjaCByb3cgdGhhdCBoYXMgYmVlbiBjaGVja2VkLlxuXHQgKi9cblx0Z2V0Q2hlY2tlZFJvd3MgKCk6IGFueVtdXG5cdHtcblx0XHRsZXQgcm93czogYW55W10gPSBbXTtcblx0XHRsZXQgdGJvZHkgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0Ym9keVwiKVswXTtcblxuXHRcdC8vIEZpbmQgYWxsIHRoZSBjaGVja2JveGVzIGluIHRib2R5LlxuXHRcdGxldCBjaGVja2JveGVzID0gdGJvZHkuZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwiaW5wdXRcIik7XG5cblx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IGNoZWNrYm94ZXMubGVuZ3RoOyBpSWR4KyspXG5cdFx0e1xuXHRcdFx0bGV0IGNoZWNrYm94OiBIVE1MSW5wdXRFbGVtZW50ID0gY2hlY2tib3hlc1tpSWR4XTtcblxuXHRcdFx0aWYgKGNoZWNrYm94LmNoZWNrZWQgIT0gbnVsbClcblx0XHRcdHtcblx0XHRcdFx0aWYgKGNoZWNrYm94LmNoZWNrZWQgPT09IHRydWUpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBHZXQgdGhlIGRhdGEtaW5kZXggYXR0cmlidXRlLlxuXHRcdFx0XHRcdGxldCBkYXRhSW5kZXhTdHI6IHN0cmluZyA9IGNoZWNrYm94LnBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudC5nZXRBdHRyaWJ1dGUgKFwiZGF0YS1pbmRleFwiKTtcblx0XHRcdFx0XHRsZXQgZGF0YUluZGV4OiBudW1iZXIgPSAgcGFyc2VJbnQgKGRhdGFJbmRleFN0cik7XG5cblx0XHRcdFx0XHRyb3dzLnB1c2ggKHRoaXMucm93RWxlbWVudHNbZGF0YUluZGV4XS5maWVsZHMpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIChyb3dzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgYSByb3cncyBkYXRhLlxuXHQgKi9cblx0Z2V0Um93IChpbmRleDogbnVtYmVyKTogYW55W11cblx0e1xuXHRcdHJldHVybiAodGhpcy5yb3dFbGVtZW50c1tpbmRleF0uZmllbGRzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgYSByb3cgdG8gdGhlIHRhYmxlLlxuXHQgKiBcblx0ICogQHBhcmFtIHtBcnJheX0gZmllbGRzIEEgbGlzdCBvZiB2YWx1ZXMgdG8gYXBwZW5kLlxuXHQgKi9cblx0YWRkUm93IChmaWVsZHM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9W10pXG5cdHtcblx0XHRpZiAoZmllbGRzID09IG51bGwpXG5cdFx0XHRyZXR1cm47XG5cblx0XHRpZiAoZmllbGRzLmxlbmd0aCA9PSAwKVxuXHRcdFx0cmV0dXJuO1xuXG5cdFx0bGV0IHRib2R5ID0gdGhpcy5odG1sRWxlbWVudHNbMV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwidGJvZHlcIilbMF07XG5cdFx0bGV0IGluZGV4OiBudW1iZXIgPSB0aGlzLnJvd0VsZW1lbnRzLmxlbmd0aDtcblx0XHQvL2xldCByb3dTdHIgPSBgPHRyIG9uY2xpY2sgPSBcInRoaXMucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5ob3RDb21wb25lbnQuc2VsZWN0Um93ICh0aGlzLCAke2luZGV4fSk7XCI+YDtcblxuXHRcdGlmICh0eXBlb2YgKHRoaXMuY2hlY2tib3gpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0dGhpcy5jaGVja2JveCA9IEhvdFN0YXEucGFyc2VCb29sZWFuICh0aGlzLmNoZWNrYm94KTtcblxuXHRcdC8qaWYgKHRoaXMuY2hlY2tib3ggPT09IHRydWUpXG5cdFx0XHRyb3dTdHIgKz0gYDx0ZD48aW5wdXQgdHlwZSA9IFwiY2hlY2tib3hcIiAvPjwvdGQ+YDtcblx0XHRlbHNlXG5cdFx0XHRyb3dTdHIgKz0gYDx0ZD48L3RkPmA7Ki9cblx0XHRsZXQgcm93c0ZpZWxkczogYW55W10gPSBbXTtcblxuXHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgdGhpcy5oZWFkZXJzLmluZGljaWVzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdHtcblx0XHRcdC8vIEB0cy1pZ25vcmUgLSBAZml4bWUgSSBtZXNzZWQgdGhpcyB1cCwgd2lsbCBmaXguXG5cdFx0XHRsZXQga2V5OiBzdHJpbmcgPSB0aGlzLmhlYWRlcnMuaW5kaWNpZXNbaUlkeF07XG5cblx0XHRcdGlmIChrZXkgPT0gbnVsbClcblx0XHRcdFx0Y29udGludWU7XG5cblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGxldCB2YWx1ZSA9IGZpZWxkc1trZXldO1xuXHRcdFx0Ly8gRm9yIGVhY2ggLiBpbiBrZXkgd2UgbmVlZCB0byBnZXQgdGhlIG5leHQgb2JqZWN0LlxuXHRcdFx0bGV0IGtleVBhcnRzOiBzdHJpbmdbXSA9IGtleS5zcGxpdCAoXCIuXCIpO1xuXHRcdFx0XG5cdFx0XHRpZiAoa2V5UGFydHMubGVuZ3RoID4gMSlcblx0XHRcdHtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRsZXQgdGVtcFZhbHVlOiBhbnkgPSBmaWVsZHNba2V5UGFydHNbMF1dO1xuXG5cdFx0XHRcdGZvciAobGV0IGlJZHggPSAxOyBpSWR4IDwga2V5UGFydHMubGVuZ3RoOyBpSWR4KyspXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRjb25zdCBwYXJ0OiBzdHJpbmcgPSBrZXlQYXJ0c1tpSWR4XTtcblxuXHRcdFx0XHRcdHRlbXBWYWx1ZSA9IHRlbXBWYWx1ZVtwYXJ0XTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhbHVlID0gdGVtcFZhbHVlO1xuXHRcdFx0fVxuXG5cdFx0XHRsZXQgcm93T2JqID0gbnVsbDtcblxuXHRcdFx0aWYgKHRoaXMuaGVhZGVycy5lbGVtZW50c1trZXldICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdC8vIEB0cy1pZ25vcmUgLSBAZml4bWUgSSBtZXNzZWQgdGhpcyB1cCwgd2lsbCBmaXguXG5cdFx0XHRcdGxldCBmaWVsZFR5cGU6IHN0cmluZyA9IHRoaXMuZ2V0RmllbGRUeXBlIChrZXkpO1xuXG5cdFx0XHRcdGlmIChmaWVsZFR5cGUgPT0gbnVsbClcblx0XHRcdFx0XHRmaWVsZFR5cGUgPSBcInRleHRcIjtcblxuXHRcdFx0XHRpZiAoZmllbGRUeXBlICE9PSBcInJlbW92ZVwiKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Y29uc3Qgb3JnRmllbGQgPSB0aGlzLmhlYWRlcnMuZmllbGRzW2tleV07XG5cdFx0XHRcdFx0bGV0IGRlZmF1bHRPdXRwdXQ6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkICE9IG51bGwpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkLm9uaW5wdXQgIT0gbnVsbClcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiAob3JnRmllbGQub25pbnB1dCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oZWFkZXJzLmZpZWxkc1trZXldLm9uaW5wdXQgPSAoPChpdGVtOiBhbnkpID0+IGFueT5uZXcgRnVuY3Rpb24gKG9yZ0ZpZWxkLm9uaW5wdXQpKTtcblxuXHRcdFx0XHRcdFx0XHR2YWx1ZSA9IG9yZ0ZpZWxkLm9uaW5wdXQgKHZhbHVlKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkLm9ub3V0cHV0ICE9IG51bGwpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgKG9yZ0ZpZWxkLm9ub3V0cHV0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhlYWRlcnMuZmllbGRzW2tleV0ub25vdXRwdXQgPSAoPChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc+bmV3IEZ1bmN0aW9uIChvcmdGaWVsZC5vbm91dHB1dCkpO1xuXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRPdXRwdXQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgbmV3T3V0cHV0OiBzdHJpbmcgPSBvcmdGaWVsZC5vbm91dHB1dCAoaW5kZXgsIHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0Ly9yb3dTdHIgKz0gbmV3T3V0cHV0O1xuXHRcdFx0XHRcdFx0XHRyb3dPYmogPSB7IGluZGV4OiBpbmRleCwgdmFsdWU6IG5ld091dHB1dCB9O1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChkZWZhdWx0T3V0cHV0ID09PSB0cnVlKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdC8vcm93U3RyICs9IGA8dGQgZGF0YS1pbmRleCA9IFwiJHtpbmRleH1cIj4ke3ZhbHVlfTwvdGQ+YDtcblx0XHRcdFx0XHRcdHJvd09iaiA9IHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyb3dzRmllbGRzLnB1c2ggKHJvd09iaik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMucm93cyA9PSBudWxsKVxuXHRcdFx0dGhpcy5yb3dzID0gW107XG5cblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0Ly90aGlzLmRhdGFUYWJsZS5yb3cuYWRkIChyb3dzRmllbGRzKTtcblx0XHQvL3RoaXMucm93cy5wdXNoIChyb3dzRmllbGRzKTtcblx0XHQvKnJvd1N0ciArPSBcIjwvdHI+XCI7XG5cblx0XHRsZXQgbmV3T2JqID0gSG90U3RhcS5hZGRIdG1sVW5zYWZlICh0Ym9keSwgcm93U3RyKTtcblxuXHRcdHRoaXMucm93RWxlbWVudHMucHVzaCAoe1xuXHRcdFx0XHRmaWVsZHM6IGZpZWxkcyxcblx0XHRcdFx0ZWxlbWVudDogKDxIVE1MRWxlbWVudD5uZXdPYmopXG5cdFx0XHR9KTsqL1xuXHR9XG5cblx0cm93czogYW55W107XG5cblx0LyoqXG5cdCAqIENsZWFyIHRoZSBsaXN0IG9mIHJvd3MuXG5cdCAqL1xuXHRhc3luYyBjbGVhclJvd3MgKClcblx0e1xuXHRcdHRoaXMucm93RWxlbWVudHMgPSBbXTtcblxuXHRcdC8qbGV0IHRib2R5ID0gdGhpcy5odG1sRWxlbWVudHNbMV0uZ2V0RWxlbWVudHNCeVRhZ05hbWUgKFwidGJvZHlcIilbMF07XG5cblx0XHR0Ym9keS5pbm5lckhUTUwgPSBcIlwiOyovXG5cblx0XHRpZiAodGhpcy5kYXRhVGFibGUgIT0gbnVsbClcblx0XHR7XG5cdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHR0aGlzLmRhdGFUYWJsZS5jbGVhciAoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogUmVmcmVzaCB0aGUgbGlzdC5cblx0ICogXG5cdCAqIEByZXR1cm5zIFRoZSB0b3RhbCBudW1iZXIgb2Ygcm93cyBhdmFpbGFibGUgaW4gdGhlIGxpc3QuXG5cdCAqL1xuXHRhc3luYyByZWZyZXNoTGlzdCAobGlzdDogSUFQSVJlc3BvbnNlID0gbnVsbCk6IFByb21pc2U8SUFQSVJlc3BvbnNlPlxuXHR7XG5cdFx0dGhpcy5pc0xpc3RSZWZyZXNoaW5nID0gdHJ1ZTtcblxuXHRcdGxldCBzZWFyY2g6IElMaXN0U2VhcmNoUHJvcGVydGllcyA9IHtcblx0XHRcdFx0c2VhcmNoOiBcIlwiLFxuXHRcdFx0XHRvZmZzZXQ6IDAsXG5cdFx0XHRcdGxpbWl0OiAxMFxuXHRcdFx0fTtcblxuXHRcdGlmICh0aGlzLmRhdGFUYWJsZSAhPSBudWxsKVxuXHRcdHtcblx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdGNvbnN0IHNlYXJjaFN0cjogc3RyaW5nID0gdGhpcy5kYXRhVGFibGUuc2VhcmNoICgpO1xuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0Y29uc3QgaW5mbyA9IHRoaXMuZGF0YVRhYmxlLnBhZ2UuaW5mbyAoKTtcblxuXHRcdFx0c2VhcmNoID0ge1xuXHRcdFx0XHRzZWFyY2g6IHNlYXJjaFN0ciB8fCBcIlwiLFxuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdG9mZnNldDogaW5mby5zdGFydCB8fCAwLFxuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdGxpbWl0OiBpbmZvLmxlbmd0aCB8fCAxMFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5vbmxpc3QgIT0gbnVsbClcblx0XHR7XG5cdFx0XHRpZiAodHlwZW9mICh0aGlzLm9ubGlzdCkgPT09IFwic3RyaW5nXCIpXG5cdFx0XHRcdHRoaXMub25saXN0ID0gKDwoc2VhcmNoOiBJTGlzdFNlYXJjaFByb3BlcnRpZXMpID0+IFByb21pc2U8SUFQSVJlc3BvbnNlPj5uZXcgRnVuY3Rpb24gKHRoaXMub25saXN0KSk7XG5cblx0XHRcdGxpc3QgPSBhd2FpdCB0aGlzLm9ubGlzdCAoc2VhcmNoKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGxldCBsaXN0VXJsOiBzdHJpbmcgPSBcIlwiO1xuXG5cdFx0XHRpZiAodGhpcy5saXN0dXJsICE9PSBcIlwiKVxuXHRcdFx0XHRsaXN0VXJsID0gdGhpcy5saXN0dXJsO1xuXG5cdFx0XHRpZiAobGlzdFVybCAhPT0gXCJcIilcblx0XHRcdHtcblx0XHRcdFx0bGlzdCA9IGF3YWl0IEhvdC5qc29uUmVxdWVzdCAobGlzdFVybCwge1xuXHRcdFx0XHRcdFx0c2NoZW1hOiB0aGlzLnNjaGVtYSxcblx0XHRcdFx0XHRcdHNlYXJjaDogc2VhcmNoXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5jbGVhclJvd3MgKCk7XG5cblx0XHRpZiAobGlzdCAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmIChsaXN0LmVycm9yICE9IG51bGwpXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnNvbGUuZXJyb3IgKGBMaXN0IGVycm9yOiAke2xpc3QuZXJyb3J9YCk7XG5cdFx0XHRcdHRoaXMuaXNMaXN0UmVmcmVzaGluZyA9IGZhbHNlO1xuXG5cdFx0XHRcdHJldHVybiAobnVsbCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChsaXN0LmRhdGEgPT0gbnVsbClcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yIChgUmV0dXJuaW5nIGxpc3QgZGF0YSB0byBcIiR7dGhpcy5uYW1lfVwiIGNvbXBvbmVudCBoYXMgYSBudWxsIGRhdGEgZmllbGQuIEFQSSByZXNwb25zZSBkb2VzIG5vdCBtYXRjaCB0aGUgXCJJQVBJUmVzcG9uc2VcIiBzY2hlbWEuYCk7XG5cblx0XHRcdGZvciAobGV0IGlJZHggPSAwOyBpSWR4IDwgbGlzdC5kYXRhLmxlbmd0aDsgaUlkeCsrKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgZWxtID0gbGlzdC5kYXRhW2lJZHhdO1xuXG5cdFx0XHRcdGZvciAobGV0IGtleSBpbiBlbG0pXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsZXQgdmFsdWUgPSBlbG1ba2V5XTtcblx0XHRcdFx0XHRsZXQgZmllbGRUeXBlOiBzdHJpbmcgPSB0aGlzLmdldEZpZWxkVHlwZSAoa2V5KTtcblxuXHRcdFx0XHRcdGlmIChmaWVsZFR5cGUgPT0gbnVsbClcblx0XHRcdFx0XHRcdGZpZWxkVHlwZSA9IFwidGV4dFwiO1xuXG5cdFx0XHRcdFx0aWYgKGZpZWxkVHlwZSAhPT0gXCJyZW1vdmVcIilcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRjb25zdCBvcmdGaWVsZCA9IHRoaXMuaGVhZGVycy5maWVsZHNba2V5XTtcblx0XHRcdFx0XHRcdGxldCBkZWZhdWx0T3V0cHV0OiBib29sZWFuID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0aWYgKG9yZ0ZpZWxkICE9IG51bGwpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdGlmIChvcmdGaWVsZC5vbmlucHV0ICE9IG51bGwpXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIChvcmdGaWVsZC5vbmlucHV0KSA9PT0gXCJzdHJpbmdcIilcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuaGVhZGVycy5maWVsZHNba2V5XS5vbmlucHV0ID0gKDwoaXRlbTogYW55KSA9PiBhbnk+bmV3IEZ1bmN0aW9uIChvcmdGaWVsZC5vbmlucHV0KSk7XG5cblx0XHRcdFx0XHRcdFx0XHR2YWx1ZSA9IG9yZ0ZpZWxkLm9uaW5wdXQgKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChvcmdGaWVsZC5vbm91dHB1dCAhPSBudWxsKVxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiAob3JnRmllbGQub25vdXRwdXQpID09PSBcInN0cmluZ1wiKVxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5oZWFkZXJzLmZpZWxkc1trZXldLm9ub3V0cHV0ID0gKDwoaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZykgPT4gc3RyaW5nPm5ldyBGdW5jdGlvbiAob3JnRmllbGQub25vdXRwdXQpKTtcblxuXHRcdFx0XHRcdFx0XHRcdGRlZmF1bHRPdXRwdXQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBuZXdPdXRwdXQ6IHN0cmluZyA9IG9yZ0ZpZWxkLm9ub3V0cHV0IChpSWR4LCB2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0dmFsdWUgPSBuZXdPdXRwdXQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0bGlzdC5kYXRhW2lJZHhdW2tleV0gPSB2YWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgdGJvZHkgPSB0aGlzLmh0bWxFbGVtZW50c1sxXS5nZXRFbGVtZW50c0J5VGFnTmFtZSAoXCJ0Ym9keVwiKVswXTtcblx0XHQvLyBAdHMtaWdub3JlXG5cdFx0dGJvZHkuaG90Q29tcG9uZW50ID0gdGhpcztcblx0XHQkKHRib2R5KS5vbiAoJ2NsaWNrJywgJ3RyJywgZnVuY3Rpb24gKClcblx0XHRcdHtcblx0XHRcdFx0Y29uc3QgaG90Q29tcG9uZW50OiBBZG1pblRhYmxlID0gdGhpcy5wYXJlbnROb2RlLmhvdENvbXBvbmVudDtcblx0XHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0XHRjb25zdCBpbmRleCA9IGhvdENvbXBvbmVudC5kYXRhVGFibGUucm93ICh0aGlzKS5pbmRleCAoKTtcblxuXHRcdFx0XHRpZiAoaW5kZXggIT0gbnVsbClcblx0XHRcdFx0XHRob3RDb21wb25lbnQuc2VsZWN0Um93ICh0aGlzLCBpbmRleCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmIChob3RDb21wb25lbnQuYXR0YWNoZWRFZGl0ICE9IG51bGwpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKGhvdENvbXBvbmVudC5hdHRhY2hlZEVkaXQuYWRkQ2xpY2tlZCAhPSBudWxsKVxuXHRcdFx0XHRcdFx0XHRob3RDb21wb25lbnQuYXR0YWNoZWRFZGl0LmFkZENsaWNrZWQgKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdHRoaXMuaXNMaXN0UmVmcmVzaGluZyA9IGZhbHNlO1xuXG5cdFx0cmV0dXJuIChsaXN0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmVwYXJlIGRhdGEuXG5cdCAqL1xuXHRwcmVwYXJlRGF0YSAoY3VycmVudERhdGE6IGFueVtdIHwgSUFQSVJlc3BvbnNlKToge1xuXHRcdFx0ZHJhdzogYW55O1xuXHRcdFx0ZGF0YTogYW55W107XG5cdFx0XHRyZWNvcmRzVG90YWw6IG51bWJlcjtcblx0XHRcdHJlY29yZHNGaWx0ZXJlZDogbnVtYmVyO1xuXHRcdH1cblx0e1xuXHRcdGNvbnN0IGNhbGxiYWNrT2JqOiBhbnkgPSB7XG5cdFx0XHRkcmF3OiB0aGlzLnRhYmxlRGF0YSxcblx0XHRcdGRhdGE6IFtdLFxuXHRcdFx0cmVjb3Jkc1RvdGFsOiAwLFxuXHRcdFx0cmVjb3Jkc0ZpbHRlcmVkOiAwXG5cdFx0fTtcblxuXHRcdGlmIChjdXJyZW50RGF0YSAhPSBudWxsKVxuXHRcdHtcblx0XHRcdGlmICghIChjdXJyZW50RGF0YSBpbnN0YW5jZW9mIEFycmF5KSlcblx0XHRcdHtcblx0XHRcdFx0aWYgKGN1cnJlbnREYXRhLmxlbmd0aCAhPSBudWxsKVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Y2FsbGJhY2tPYmoucmVjb3Jkc1RvdGFsID0gY3VycmVudERhdGEubGVuZ3RoO1xuXHRcdFx0XHRcdGNhbGxiYWNrT2JqLnJlY29yZHNGaWx0ZXJlZCA9IGN1cnJlbnREYXRhLmxlbmd0aDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjdXJyZW50RGF0YS5kYXRhICE9IG51bGwpXG5cdFx0XHRcdFx0Y2FsbGJhY2tPYmouZGF0YSA9IGN1cnJlbnREYXRhLmRhdGE7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdGNhbGxiYWNrT2JqLmRhdGEgPSBjdXJyZW50RGF0YTtcblx0XHRcdFx0Y2FsbGJhY2tPYmoucmVjb3Jkc1RvdGFsID0gY3VycmVudERhdGEubGVuZ3RoO1xuXHRcdFx0XHRjYWxsYmFja09iai5yZWNvcmRzRmlsdGVyZWQgPSBjdXJyZW50RGF0YS5sZW5ndGg7XG5cdFx0XHR9XG5cblx0XHRcdGxldCBzYW5pdGl6ZSA9IHRydWU7XG5cblx0XHRcdGlmIChjYWxsYmFja09iai5kYXRhLmhvdFNhbml0aXplICE9IG51bGwpXG5cdFx0XHRcdHNhbml0aXplID0gY2FsbGJhY2tPYmouZGF0YS5ob3RTYW5pdGl6ZTtcblxuXHRcdFx0Zm9yIChsZXQgaUlkeCA9IDA7IGlJZHggPCBjYWxsYmFja09iai5kYXRhLmxlbmd0aDsgaUlkeCsrKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zdCByb3cgPSBjYWxsYmFja09iai5kYXRhW2lJZHhdO1xuXG5cdFx0XHRcdGlmIChzYW5pdGl6ZSA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRjYWxsYmFja09iai5kYXRhW2lJZHhdID0gSG90U3RhcS5zYW5pdGl6ZUpTT04gKHJvdyk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRjYWxsYmFja09iai5kYXRhW2lJZHhdID0gcm93O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiAoY2FsbGJhY2tPYmopO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbGlzdCBvZiBkYXRhIGZyb20gdGhlIHNlcnZlci5cblx0ICovXG5cdG9uUG9zdFBsYWNlIChwYXJlbnRIdG1sRWxlbWVudDogSFRNTEVsZW1lbnQsIGh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50XG5cdHtcblx0XHRzZXRUaW1lb3V0IChhc3luYyAoKSA9PlxuXHRcdFx0e1xuXHRcdFx0XHRjb25zdCB0YWJsZSA9ICQoaHRtbEVsZW1lbnQpLmZpbmQoXCJ0YWJsZVwiKTtcblxuXHRcdFx0XHQvLyBUaGUgZGF0YSBzdG9yZWQgaW4gY29sdW1ucyBzaG91bGQgYmUgY29uc2lkZXJlZCBzYWZlIGFzIGl0IGNvbWVzIGRpcmVjdGx5IGZyb20gXG5cdFx0XHRcdC8vIHRoZSBIVE1MIGFmdGVyIGxvYWQuXG5cdFx0XHRcdGxldCBjb2x1bW5zOiBDb25maWdDb2x1bW5zW10gPSBbXTtcblx0XHRcdFx0JCh0YWJsZSkuZmluZCAoXCJ0aGVhZCB0aFwiKS5lYWNoIChmdW5jdGlvbiAoKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGNvbnN0IHRleHQgPSAkKHRoaXMpLnRleHQgKCk7XG5cdFx0XHRcdFx0XHRjb25zdCBkYXRhID0gJCh0aGlzKS5kYXRhIChcImZpZWxkXCIpO1xuXHRcdFx0XHRcdFx0bGV0IGRhdGFUeXBlID0gJCh0aGlzKS5kYXRhIChcImZpZWxkLXR5cGVcIik7XG5cblx0XHRcdFx0XHRcdGlmICgodGV4dCA9PSBudWxsKSB8fCAodGV4dCA9PT0gXCJcIikpXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblxuXHRcdFx0XHRcdFx0aWYgKChkYXRhID09IG51bGwpIHx8IChkYXRhID09PSBcIlwiKSlcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHRcdFx0XHRpZiAoZGF0YVR5cGUgPT09IFwidGV4dFwiKVxuXHRcdFx0XHRcdFx0XHRkYXRhVHlwZSA9IFwic3RyaW5nXCI7XG5cblx0XHRcdFx0XHRcdGNvbHVtbnMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHRleHQsXG5cdFx0XHRcdFx0XHRcdFx0ZGF0YTogZGF0YVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHQkKHRhYmxlKS5maW5kIChcInRoZWFkXCIpLnJlbW92ZSAoKTtcblxuXHRcdFx0XHQvLyBAdHMtaWdub3JlXG5cdFx0XHRcdHRoaXMuZGF0YVRhYmxlID0gbmV3IERhdGFUYWJsZSAodGFibGVbMF0sIHtcblx0XHRcdFx0XHRwcm9jZXNzaW5nOiB0cnVlLFxuXHRcdFx0XHRcdHNlcnZlclNpZGU6IHRydWUsXG5cdFx0XHRcdFx0Y29sUmVvcmRlcjogdHJ1ZSxcblx0XHRcdFx0XHRzY3JvbGxlcjogdHJ1ZSxcblx0XHRcdFx0XHRzZWxlY3Q6IHRydWUsXG5cdFx0XHRcdFx0ZG9tOiAnUWxmcnRpcCcsXG5cdFx0XHRcdFx0Y29sdW1uczogY29sdW1ucyxcblx0XHRcdFx0XHRkYXRhOiBbXSxcblx0XHRcdFx0XHRhamF4OiBhc3luYyAoZGF0YTogb2JqZWN0LCBjYWxsYmFjazogKChkYXRhOiBhbnkpID0+IHZvaWQpLCBzZXR0aW5nczogSW50ZXJuYWxTZXR0aW5ncykgPT5cblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuaXNMaXN0UmVmcmVzaGluZyA9PT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cblx0XHRcdFx0XHRcdFx0dGhpcy50YWJsZUNhbGxiYWNrID0gY2FsbGJhY2s7XG5cdFx0XHRcdFx0XHRcdC8vIEB0cy1pZ25vcmVcblx0XHRcdFx0XHRcdFx0dGhpcy50YWJsZURhdGEgPSBkYXRhLmRyYXc7XG5cblx0XHRcdFx0XHRcdFx0bGV0IGN1cnJlbnREYXRhID0gYXdhaXQgdGhpcy5yZWZyZXNoTGlzdCAoKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcHJlcGFyZWREYXRhID0gdGhpcy5wcmVwYXJlRGF0YSAoY3VycmVudERhdGEpO1xuXG5cdFx0XHRcdFx0XHRcdHRoaXMudGFibGVDYWxsYmFjayAocHJlcGFyZWREYXRhKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdH0sIDUwKTsgLy8vIEB0b2RvIEZpeCB0aGlzIHN0dXBpZCBoYWNrLiBUaGlzIHNob3VsZCBoYXBwZW4gc2xpZ2h0bHkgYWZ0ZXIgdGhlIGRvY3VtZW50IGhhcyBiZWVuIGxvYWRlZC5cblxuXHRcdHJldHVybiAobnVsbCk7XG5cdH1cblxuXHRvdXRwdXQgKCk6IHN0cmluZyB8IEhvdENvbXBvbmVudE91dHB1dFtdXG5cdHtcblx0XHRsZXQgZW1wdHlDaGVja2JveEhlYWRlcjogc3RyaW5nID0gXCI8dGg+PC90aD5cIjtcblxuXHRcdHJldHVybiAoYFxuXHRcdDxkaXYgaWQgPSBcIiR7dGhpcy5odG1sRWxlbWVudHNbMF0uaWR9XCI+XG5cdFx0XHQ8aDI+JHt0aGlzLnRpdGxlfTwvaDI+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuXHRcdFx0PHRhYmxlIGlkID0gXCIke3RoaXMuaHRtbEVsZW1lbnRzWzBdLmlkfVRhYmxlXCIgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zdHJpcGVkIHRhYmxlLXNtXCI+XG5cdFx0XHRcdDx0aGVhZD5cblx0XHRcdFx0XHQ8dHIgaG90LXBsYWNlLWhlcmUgPSBcImhlYWRlclwiPlxuXHRcdFx0XHRcdFx0JHtlbXB0eUNoZWNrYm94SGVhZGVyfVxuXHRcdFx0XHRcdDwvdHI+XG5cdFx0XHRcdDwvdGhlYWQ+XG5cdFx0XHRcdDx0Ym9keSBob3QtcGxhY2UtaGVyZSA9IFwicmVzdWx0c1wiPlxuXHRcdFx0XHQ8L3Rib2R5PlxuXHRcdFx0PC90YWJsZT5cblx0XHRcdDxob3QtcGxhY2UtaGVyZSBuYW1lID0gXCJhZnRlclRhYmxlXCI+PC9ob3QtcGxhY2UtaGVyZT5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PmApO1xuXHR9XG59XG4iLCJpbXBvcnQgeyBIb3RTdGFxLCBIb3QsIEhvdEFQSSwgSG90Q29tcG9uZW50LCBIb3RDb21wb25lbnRPdXRwdXQgfSBmcm9tIFwiaG90c3RhcVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5UZXh0IGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBJZiBzZXQgdG8gMSwgdGhpcyB3aWxsIG5vdCBvdXRwdXQgdGhlIGZpZWxkLlxuXHQgKi9cblx0bm9fb3V0cHV0OiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgY2xhc3NlcyB0byBzZXQgZm9yIHRoZSBpbnB1dC5cblx0ICogQGRlZmF1bHQgXCJmb3JtLWNvbnRyb2xcIlxuXHQgKi9cblx0Y3NzX2NsYXNzOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tdGV4dFwiO1xuXHRcdHRoaXMubm9fb3V0cHV0ID0gXCIwXCI7XG5cdFx0dGhpcy5jc3NfY2xhc3MgPSBcImZvcm0tY29udHJvbFwiXG5cdH1cblxuXHQvKipcblx0ICogQ29ycmVjdHMgdGhlIHBsYWNlbWVudCBvZiB0aGUgdGV4dCBlbGVtZW50cyBmb3IgbW9kYWxzLlxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdGxldCBwbGFjZUhlcmVBcnJheSA9IHBhcmVudEh0bWxFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwgKGBob3QtcGxhY2UtaGVyZVt0eXBlPVwibW9kYWxcIl1gKTtcblxuXHRcdGlmIChwbGFjZUhlcmVBcnJheS5sZW5ndGggPiAwKVxuXHRcdHtcblx0XHRcdGxldCBwbGFjZUhlcmUgPSBwbGFjZUhlcmVBcnJheVswXTtcblx0XHRcdHBhcmVudEh0bWxFbGVtZW50LnJlbW92ZUNoaWxkIChodG1sRWxlbWVudCk7XG5cdFx0XHRwbGFjZUhlcmUuYXBwZW5kQ2hpbGQgKGh0bWxFbGVtZW50KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0b3V0cHV0ICgpOiBzdHJpbmcgfCBIb3RDb21wb25lbnRPdXRwdXRbXVxuXHR7XG5cdFx0bGV0IHZhbHVlOiBzdHJpbmcgPSBcIlwiO1xuXG5cdFx0aWYgKHRoaXMudmFsdWUgIT0gbnVsbClcblx0XHRcdHZhbHVlID0gdGhpcy52YWx1ZTtcblxuXHRcdGlmICh0aGlzLm5vX291dHB1dCA9PT0gXCIxXCIpXG5cdFx0XHRyZXR1cm4gKGA8ZGl2PjxpbnB1dCBjbGFzcz1cIiR7dGhpcy5jc3NfY2xhc3N9XCIgdHlwZSA9IFwiaGlkZGVuXCIgdmFsdWUgPSBcIiR7dmFsdWV9XCIgLz48L2Rpdj5gKTtcblxuXHRcdGNvbnN0IGZpZWxkID0gdGhpcy5odG1sRWxlbWVudHNbMF0uZ2V0QXR0cmlidXRlIChcImhvdC1maWVsZFwiKTtcblx0XHRsZXQgZmllbGRfdHlwZSA9IHRoaXMuaHRtbEVsZW1lbnRzWzBdLmdldEF0dHJpYnV0ZSAoXCJob3QtZmllbGQtdHlwZVwiKTtcblx0XHRsZXQgaHRtbFR5cGUgPSB0aGlzLmh0bWxFbGVtZW50c1swXS5nZXRBdHRyaWJ1dGUgKFwidHlwZVwiKSB8fCBcInRleHRcIjtcblxuXHRcdGlmIChmaWVsZF90eXBlID09IG51bGwpXG5cdFx0XHRmaWVsZF90eXBlID0gXCJ0ZXh0XCI7XG5cblx0XHRyZXR1cm4gKGA8ZGl2PlxuXHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPiR7dGhpcy5pbm5lcn08L2xhYmVsPlxuXHRcdFx0PGlucHV0IGNsYXNzPVwiJHt0aGlzLmNzc19jbGFzc31cIiB0eXBlID0gXCIke2h0bWxUeXBlfVwiIGhvdC1maWVsZCA9IFwiJHtmaWVsZH1cIiBob3QtZmllbGQtdHlwZSA9IFwiJHtmaWVsZF90eXBlfVwiIHZhbHVlID0gXCIke3ZhbHVlfVwiIC8+XG5cdFx0PC9kaXY+YCk7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQsIEhvdENvbXBvbmVudE91dHB1dCB9IGZyb20gXCJob3RzdGFxXCI7XG5pbXBvcnQgeyBBZG1pblRhYmxlIH0gZnJvbSBcIi4vYWRtaW4tdGFibGVcIjtcblxuZXhwb3J0IGNsYXNzIEFkbWluVGFibGVGaWVsZCBleHRlbmRzIEhvdENvbXBvbmVudFxue1xuXHQvKipcblx0ICogVGhlIHRhYmxlIGZpZWxkLlxuXHQgKi9cblx0ZmllbGQ6IG51bWJlcjtcblx0LyoqXG5cdCAqIFRoZSB0eXBlIG9mIGZpZWxkLiBDYW4gYmU6XG5cdCAqICogdGV4dFxuXHQgKiAqIHJlbW92ZVxuXHQgKiBcblx0ICogRGVmYXVsdDogdGV4dFxuXHQgKi9cblx0ZmllbGRfdHlwZTogc3RyaW5nO1xuXHQvKipcblx0ICogSWYgc2V0IHRvIDEsIHRoaXMgd2lsbCBub3Qgb3V0cHV0IHRoZSBmaWVsZC5cblx0ICovXG5cdG5vX291dHB1dDogc3RyaW5nO1xuXHQvKipcblx0ICogVGhlIG9uaW5wdXQgZXZlbnQgaXMgZmlyZWQgd2hlbiBhbiBpdGVtIGlzIGFib3V0IHRvIGJlIHBsYWNlZCBpbnRvIHRoZSB0YWJsZS5cblx0ICovXG5cdG9uaW5wdXQ6IChpdGVtOiBhbnkpID0+IGFueTtcblx0LyoqXG5cdCAqIFRoZSBvdXRwdXQgdG8gZGlzcGxheS5cblx0ICovXG5cdG9ub3V0cHV0OiAoaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZykgPT4gc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yIChjb3B5OiBIb3RDb21wb25lbnQgfCBIb3RTdGFxLCBhcGk6IEhvdEFQSSlcblx0e1xuXHRcdHN1cGVyIChjb3B5LCBhcGkpO1xuXG5cdFx0dGhpcy50YWcgPSBcImFkbWluLXRhYmxlLWZpZWxkXCI7XG5cdFx0dGhpcy5maWVsZCA9IDA7XG5cdFx0dGhpcy5maWVsZF90eXBlID0gXCJ0ZXh0XCI7XG5cdFx0dGhpcy5ub19vdXRwdXQgPSBcIjBcIjtcblx0XHR0aGlzLm9uaW5wdXQgPSBudWxsO1xuXHRcdHRoaXMub25vdXRwdXQgPSBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGlzIHRhYmxlIGZpZWxkIHRvIHRoZSB0YWJsZVxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdGxldCBob3RDb21wb25lbnQ6IEFkbWluVGFibGUgPSBudWxsO1xuXG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdGlmIChwYXJlbnRIdG1sRWxlbWVudC5wYXJlbnROb2RlLnBhcmVudE5vZGUuaG90Q29tcG9uZW50ICE9IG51bGwpXG5cdFx0e1xuXHRcdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdFx0aG90Q29tcG9uZW50ID0gcGFyZW50SHRtbEVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlLmhvdENvbXBvbmVudDtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdC8vIEB0cy1pZ25vcmUgLSBsb29vb2wuIEFkZCBhIGJldHRlciB3YXkgdG8gZ2V0IHRoZSBwYXJlbnQgSG90Q29tcG9uZW50LlxuXHRcdFx0aG90Q29tcG9uZW50ID0gcGFyZW50SHRtbEVsZW1lbnQucGFyZW50Tm9kZS5wYXJlbnROb2RlLnBhcmVudE5vZGUucGFyZW50Tm9kZS5ob3RDb21wb25lbnQ7XG5cdFx0fVxuXG5cdFx0aWYgKGhvdENvbXBvbmVudCAhPSBudWxsKVxuXHRcdFx0aG90Q29tcG9uZW50LmFkZEhlYWRlckRhdGFPbmx5ICh0aGlzLCBodG1sRWxlbWVudCk7XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0b3V0cHV0ICgpOiBzdHJpbmcgfCBIb3RDb21wb25lbnRPdXRwdXRbXVxuXHR7XG5cdFx0aWYgKHRoaXMubm9fb3V0cHV0ID09PSBcIjFcIilcblx0XHR7XG5cdFx0XHRyZXR1cm4gKFt7XG5cdFx0XHRcdGh0bWw6IGA8ZGl2PjwvZGl2PmAsXG5cdFx0XHRcdHBsYWNlSGVyZVBhcmVudDogXCJhZnRlclRhYmxlXCJcblx0XHRcdH1dKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gKFt7XG5cdFx0XHRodG1sOiBgPHRoIGRhdGEtZmllbGQgPSBcIiR7dGhpcy5maWVsZH1cIiBkYXRhLWZpZWxkLXR5cGUgPSBcIiR7dGhpcy5maWVsZF90eXBlfVwiPiR7dGhpcy5pbm5lcn08L3RoPmAsXG5cdFx0XHRwbGFjZUhlcmVQYXJlbnQ6IFwiaGVhZGVyXCJcblx0XHR9XSk7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQsIEhvdENvbXBvbmVudE91dHB1dCB9IGZyb20gXCJob3RzdGFxXCI7XG5cbmV4cG9ydCBjbGFzcyBBZG1pblRhYmxlUm93IGV4dGVuZHMgSG90Q29tcG9uZW50XG57XG5cdC8qKlxuXHQgKiBUaGUgZmllbGRzIGFyZSBzdG9yZWQgaW4gYSBrZXkvdmFsdWUgb2JqZWN0LlxuXHQgKiBcblx0ICogQGV4YW1wbGUgeyBcIm5hbWVcIjogXCJKb2huIFNtaXRoXCIsIFwiZW1haWxcIjogXCJqb2huLnNtaXRoQGVtYWlsLmNvbVwiIH1cblx0ICovXG5cdGZpZWxkczogYW55W107XG5cblx0Y29uc3RydWN0b3IgKGNvcHk6IEhvdENvbXBvbmVudCB8IEhvdFN0YXEsIGFwaTogSG90QVBJKVxuXHR7XG5cdFx0c3VwZXIgKGNvcHksIGFwaSk7XG5cblx0XHR0aGlzLnRhZyA9IFwiYWRtaW4tdGFibGUtcm93XCI7XG5cdFx0dGhpcy5maWVsZHMgPSBbXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBZGQgdGhpcyB0YWJsZSByb3cgdG8gdGhlIHRhYmxlXG5cdCAqL1xuXHRvblBvc3RQbGFjZSAocGFyZW50SHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBodG1sRWxlbWVudDogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFxuXHR7XG5cdFx0Ly8gQHRzLWlnbm9yZVxuXHRcdHBhcmVudEh0bWxFbGVtZW50LnBhcmVudE5vZGUucGFyZW50Tm9kZS5wYXJlbnROb2RlLmhvdENvbXBvbmVudC5yb3dFbGVtZW50cy5wdXNoICh7IGZpZWxkczogdGhpcy5maWVsZHMsIGVsZW1lbnQ6IGh0bWxFbGVtZW50fSk7XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0b3V0cHV0ICgpOiBzdHJpbmcgfCBIb3RDb21wb25lbnRPdXRwdXRbXVxuXHR7XG5cdFx0bGV0IHJvd0h0bWwgPSBcIlwiO1xuXG5cdFx0aWYgKHRoaXMuZmllbGRzLmxlbmd0aCA+IDApXG5cdFx0XHRyb3dIdG1sICs9IGA8dGQ+PGlucHV0IHR5cGUgPSBcImNoZWNrYm94XCIgLz48L3RkPmA7XG5cblx0XHRmb3IgKGxldCBpSWR4ID0gMDsgaUlkeCA8IHRoaXMuZmllbGRzLmxlbmd0aDsgaUlkeCsrKVxuXHRcdHtcblx0XHRcdGxldCBmaWVsZE9iaiA9IHRoaXMuZmllbGRzW2lJZHhdO1xuXG5cdFx0XHRmb3IgKGxldCBrZXkgaW4gZmllbGRPYmopXG5cdFx0XHR7XG5cdFx0XHRcdGxldCB2YWx1ZSA9IGZpZWxkT2JqW2tleV07XG5cblx0XHRcdFx0cm93SHRtbCArPSBgPHRkPiR7dmFsdWV9PC90ZD5gO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiAoW3tcblx0XHRcdGh0bWw6IGA8dHI+JHtyb3dIdG1sfTwvdHI+YCxcblx0XHRcdHBsYWNlSGVyZVBhcmVudDogXCJyZXN1bHRzXCJcblx0XHR9XSk7XG5cdH1cbn1cbiIsImltcG9ydCB7IEhvdFN0YXEsIEhvdCwgSG90QVBJLCBIb3RDb21wb25lbnQgfSBmcm9tIFwiaG90c3RhcVwiO1xuXG5leHBvcnQgY2xhc3MgQWRtaW5EYXNoYm9hcmQgZXh0ZW5kcyBIb3RDb21wb25lbnRcbntcblx0LyoqXG5cdCAqIFRoZSB0aXRsZSBvZiB0aGlzIGRhc2hib2FyZC5cblx0ICovXG5cdHRpdGxlOiBzdHJpbmc7XG5cdC8qKlxuXHQgKiBUaGUgYmFzZSB1cmwgdG8gdXNlIGZvciB0aGlzIGRhc2hib2FyZC5cblx0ICovXG5cdGJhc2U6IHN0cmluZztcblxuXHRjb25zdHJ1Y3RvciAoY29weTogSG90Q29tcG9uZW50IHwgSG90U3RhcSwgYXBpOiBIb3RBUEkpXG5cdHtcblx0XHRzdXBlciAoY29weSwgYXBpKTtcblxuXHRcdHRoaXMudGFnID0gXCJhZG1pbi1kYXNoYm9hcmRcIjtcblx0XHR0aGlzLnRpdGxlID0gXCJcIjtcblx0XHR0aGlzLmJhc2UgPSBcIlwiO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGlzIHRhYmxlIGZpZWxkIHRvIHRoZSB0YWJsZVxuXHQgKi9cblx0b25Qb3N0UGxhY2UgKHBhcmVudEh0bWxFbGVtZW50OiBIVE1MRWxlbWVudCwgaHRtbEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnRcblx0e1xuXHRcdGlmIChIb3QuRGF0YS5BZG1pblBhbmVsID09IG51bGwpXG5cdFx0XHRIb3QuRGF0YS5BZG1pblBhbmVsID0ge307XG5cblx0XHRpZiAoSG90LkRhdGEuQWRtaW5QYW5lbC5iYXNlVXJsID09IG51bGwpXG5cdFx0XHRIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmwgPSB0aGlzLmJhc2U7XG5cblx0XHRpZiAoSG90LkRhdGEuQWRtaW5QYW5lbC5hZGRVcmwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwuYWRkVXJsID0gYCR7SG90LkRhdGEuQWRtaW5QYW5lbC5iYXNlVXJsfS92MS9kYXRhL2FkZGA7XG5cblx0XHRpZiAoSG90LkRhdGEuQWRtaW5QYW5lbC5lZGl0VXJsID09IG51bGwpXG5cdFx0XHRIb3QuRGF0YS5BZG1pblBhbmVsLmVkaXRVcmwgPSBgJHtIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmx9L3YxL2RhdGEvZWRpdGA7XG5cblx0XHRpZiAoSG90LkRhdGEuQWRtaW5QYW5lbC5yZW1vdmVVcmwgPT0gbnVsbClcblx0XHRcdEhvdC5EYXRhLkFkbWluUGFuZWwucmVtb3ZlVXJsID0gYCR7SG90LkRhdGEuQWRtaW5QYW5lbC5iYXNlVXJsfS92MS9kYXRhL3JlbW92ZWA7XG5cblx0XHRpZiAoSG90LkRhdGEuQWRtaW5QYW5lbC5saXN0VXJsID09IG51bGwpXG5cdFx0XHRIb3QuRGF0YS5BZG1pblBhbmVsLmxpc3RVcmwgPSBgJHtIb3QuRGF0YS5BZG1pblBhbmVsLmJhc2VVcmx9L3YxL2RhdGEvbGlzdGA7XG5cblx0XHRyZXR1cm4gKG51bGwpO1xuXHR9XG5cblx0b3V0cHV0ICgpOiBzdHJpbmdcblx0e1xuXHRcdHJldHVybiAoYFxuXHRcdDxtYWluIGNsYXNzPVwiY29sLW1kLTkgbXMtc20tYXV0byBjb2wtbGctMTAgcHgtbWQtNFwiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmbGV4LXdyYXAgZmxleC1tZC1ub3dyYXAgYWxpZ24taXRlbXMtY2VudGVyIHB0LTMgcGItMiBtYi0zIGJvcmRlci1ib3R0b21cIj5cblx0XHRcdFx0PGgxIGNsYXNzPVwiaDJcIj4ke3RoaXMudGl0bGV9PC9oMT5cblx0XHRcdFx0PGRpdiBjbGFzcz1cImJ0bi10b29sYmFyIG1iLTIgbWItbWQtMFwiPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbWUtMlwiPlxuXHRcdFx0XHRcdFx0PGhvdC1wbGFjZS1oZXJlIG5hbWUgPSBcImRhc2hib2FyZEhlYWRlclwiPjwvaG90LXBsYWNlLWhlcmU+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8aG90LXBsYWNlLWhlcmUgbmFtZSA9IFwiYm9keVwiPjwvaG90LXBsYWNlLWhlcmU+XG5cdFx0PC9tYWluPmApO1xuXHR9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiaW1wb3J0IHsgQWRtaW5CdXR0b24gfSBmcm9tIFwiLi9jb21wb25lbnRzL2FkbWluLWJ1dHRvblwiO1xuaW1wb3J0IHsgQWRtaW5Ecm9wZG93biB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tZHJvcGRvd25cIjtcbmltcG9ydCB7IEFkbWluRGFzaGJvYXJkIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi1kYXNoYm9hcmRcIjtcbmltcG9ydCB7IEFkbWluRWRpdCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tZWRpdFwiO1xuaW1wb3J0IHsgQWRtaW5UYWJsZSB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tdGFibGVcIjtcbmltcG9ydCB7IEFkbWluVGFibGVGaWVsZCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWRtaW4tdGFibGUtZmllbGRcIjtcbmltcG9ydCB7IEFkbWluVGFibGVSb3cgfSBmcm9tIFwiLi9jb21wb25lbnRzL2FkbWluLXRhYmxlLXJvd1wiO1xuaW1wb3J0IHsgQWRtaW5UZXh0IH0gZnJvbSBcIi4vY29tcG9uZW50cy9hZG1pbi10ZXh0XCI7XG5cbmV4cG9ydCB7XG5cdFx0QWRtaW5CdXR0b24sXG5cdFx0QWRtaW5Ecm9wZG93bixcblx0XHRBZG1pbkRhc2hib2FyZCxcblx0XHRBZG1pbkVkaXQsXG5cdFx0QWRtaW5UYWJsZSxcblx0XHRBZG1pblRhYmxlRmllbGQsXG5cdFx0QWRtaW5UYWJsZVJvdyxcblx0XHRBZG1pblRleHRcblx0fTsiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsIkRhdGFUYWJsZSIsIkhvdFN0YXFXZWIiLCJBZG1pbkRyb3Bkb3duIiwiSG90Q29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJjb3B5IiwiYXBpIiwic3VwZXIiLCJ0aGlzIiwidGFnIiwicGxhY2Vob2xkZXIiLCJvbnNlYXJjaCIsIm9uc2VsZWN0Iiwib25Qb3N0UGxhY2UiLCJwYXJlbnRIdG1sRWxlbWVudCIsImh0bWxFbGVtZW50IiwicGxhY2VIZXJlQXJyYXkiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwicGxhY2VIZXJlIiwicmVtb3ZlQ2hpbGQiLCJhcHBlbmRDaGlsZCIsIkZ1bmN0aW9uIiwicXVlcnlTZWxlY3RvciIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInNlYXJjaFRleHQiLCJjdXJyZW50VGFyZ2V0IiwidmFsdWUiLCJyZXN1bHRzIiwic2VhcmNoUmVzdWx0c0RpdiIsIiQiLCJodG1sRWxlbWVudHMiLCJmaW5kIiwiZW1wdHkiLCJpSWR4IiwicmVzdWx0IiwidXJsIiwidGV4dCIsIiR0ZW1wbGF0ZSIsIiRhIiwiYXR0ciIsInJlbW92ZUF0dHIiLCJvbiIsInNlbGVjdGVkIiwiYXBwZW5kIiwiaW5kZXgiLCJnZXRBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJvdXRwdXQiLCJpbm5lciIsImJvb3RzdHJhcCIsIkFkbWluRWRpdCIsIm9uQWRkQ2xpY2tlZCIsIm9uRWRpdENsaWNrZWQiLCJvblJlbW92ZUNsaWNrZWQiLCJ0aXRsZSIsImJ1dHRvbl90aXRsZSIsImF0dGFjaGVkX2xpc3QiLCJzY2hlbWEiLCJtb2RhbElkIiwiYWRkX3RleHQiLCJhZGRfcGxhY2VfaGVyZSIsImVkaXRfdGV4dCIsImVkaXRfcGxhY2VfaGVyZSIsInJlbW92ZV90ZXh0IiwicmVtb3ZlX3BsYWNlX2hlcmUiLCJjc3NfY2xhc3MiLCJtb2RhbCIsIm1vZGFsVHlwZSIsImNsb3NlT25TYXZlIiwic2VsZWN0ZWRGaWVsZHMiLCJvbnNhdmUiLCJvbmVkaXQiLCJvbmRlbGV0ZSIsInByb2Nlc3NIb3RGaWVsZHMiLCJvbkZpZWxkIiwiZWxtcyIsImVsbSIsImZpZWxkIiwiZmllbGRUeXBlIiwiZmllbGRJbnB1dCIsIm5hbWUiLCJ0eXBlIiwiaW5wdXQiLCJhZGRDbGlja2VkIiwidmFsIiwib25hZGQiLCJNb2RhbCIsImdldEluc3RhbmNlIiwic2hvdyIsImdldEF0dGFjaGVkSFRNTExpc3RzIiwic3RycyIsInNwbGl0IiwiYXR0YWNoZWRMaXN0cyIsImkiLCJhdHRhY2hlZExpc3QiLCJhdHRhY2hlZExpc3RPYmoiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwicHVzaCIsImdldEF0dGFjaGVkTGlzdHMiLCJhdHRhY2hlZExpc3RPYmpzIiwiaG90Q29tcG9uZW50IiwiZWRpdENsaWNrZWQiLCJjbGlja2VkVGFibGUiLCJ0YWJsZSIsImF0dGFjaGVkRWRpdCIsInNlbGVjdGVkRmllbGQiLCJnZXRTZWxlY3RlZCIsImZ1bmMiLCJjYWxsIiwicmVtb3ZlQ2xpY2tlZCIsIndoZXJlRmllbGRzIiwiY2hlY2tlZFJvd3MiLCJnZXRDaGVja2VkUm93cyIsImNoZWNrZWRSb3ciLCJjb25maXJtIiwid2hlcmVGaWVsZCIsImtleSIsImdldEZpZWxkVHlwZSIsInJlbW92ZVVybCIsIkhvdCIsIkRhdGEiLCJBZG1pblBhbmVsIiwianNvblJlcXVlc3QiLCJjdXJyZW50RGF0YSIsInJlZnJlc2hMaXN0IiwicHJlcGFyZWREYXRhIiwicHJlcGFyZURhdGEiLCJ0YWJsZUNhbGxiYWNrIiwib25TYXZlIiwidmFsdWVzIiwiZmllbGRTYXZlIiwicGFyc2VGbG9hdCIsInBhcnNlSW50IiwiYm9vbHZhbCIsInRvTG93ZXJDYXNlIiwiYWRkVXJsIiwiZmllbGRzIiwiYWxlcnQiLCJlZGl0VXJsIiwiaGlkZSIsInNldFRpbWVvdXQiLCJFcnJvciIsIm91dHB1dE9iaiIsImh0bWwiLCJkb2N1bWVudFNlbGVjdG9yIiwiQWRtaW5CdXR0b24iLCJvbmNsaWNrIiwiYnV0dG9uQ2xpY2tlZCIsImlkIiwiQWRtaW5UYWJsZSIsInJvd0VsZW1lbnRzIiwiaGVhZGVycyIsImVsZW1lbnRzIiwiaW5kaWNpZXMiLCJ0YWJsZURhdGEiLCJvbmxpc3QiLCJsaXN0dXJsIiwiY2hlY2tib3giLCJzaW5nbGVjbGlja2VkaXQiLCJvbnNlbGVjdGVkcm93IiwiZGF0YVRhYmxlIiwiaXNMaXN0UmVmcmVzaGluZyIsImFkZEhlYWRlciIsInRhYmxlRmllbGRFbGVtZW50IiwiaGVhZGVyIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJhZGRIZWFkZXJEYXRhT25seSIsInRhYmxlRmllbGQiLCJmaWVsZE5hbWUiLCJzZWxlY3RSb3ciLCJyb3dJbmRleCIsInJvd3MiLCJyb3ciLCJjbGFzc0xpc3QiLCJjb250YWlucyIsInJlbW92ZSIsImFkZCIsIkhvdFN0YXEiLCJwYXJzZUJvb2xlYW4iLCJpdGVtIiwiZGF0YSIsImNoZWNrYm94ZXMiLCJjaGVja2VkIiwiZGF0YUluZGV4U3RyIiwicGFyZW50RWxlbWVudCIsImRhdGFJbmRleCIsImdldFJvdyIsImFkZFJvdyIsInJvd3NGaWVsZHMiLCJrZXlQYXJ0cyIsInRlbXBWYWx1ZSIsInJvd09iaiIsIm9yZ0ZpZWxkIiwiZGVmYXVsdE91dHB1dCIsIm9uaW5wdXQiLCJvbm91dHB1dCIsImNsZWFyUm93cyIsImNsZWFyIiwibGlzdCIsInNlYXJjaCIsIm9mZnNldCIsImxpbWl0Iiwic2VhcmNoU3RyIiwiaW5mbyIsInBhZ2UiLCJzdGFydCIsImxpc3RVcmwiLCJlcnJvciIsImNvbnNvbGUiLCJ0Ym9keSIsInBhcmVudE5vZGUiLCJjYWxsYmFja09iaiIsImRyYXciLCJyZWNvcmRzVG90YWwiLCJyZWNvcmRzRmlsdGVyZWQiLCJBcnJheSIsInNhbml0aXplIiwiaG90U2FuaXRpemUiLCJzYW5pdGl6ZUpTT04iLCJjb2x1bW5zIiwiZWFjaCIsImRhdGFUeXBlIiwicHJvY2Vzc2luZyIsInNlcnZlclNpZGUiLCJjb2xSZW9yZGVyIiwic2Nyb2xsZXIiLCJzZWxlY3QiLCJkb20iLCJhamF4IiwiY2FsbGJhY2siLCJzZXR0aW5ncyIsIkFkbWluVGV4dCIsIm5vX291dHB1dCIsImZpZWxkX3R5cGUiLCJodG1sVHlwZSIsIkFkbWluVGFibGVGaWVsZCIsInBsYWNlSGVyZVBhcmVudCIsIkFkbWluVGFibGVSb3ciLCJlbGVtZW50Iiwicm93SHRtbCIsImZpZWxkT2JqIiwiQWRtaW5EYXNoYm9hcmQiLCJiYXNlIiwiYmFzZVVybCIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsIl9fd2VicGFja19tb2R1bGVzX18iXSwic291cmNlUm9vdCI6IiJ9
|
package/package.json
CHANGED
|
@@ -475,6 +475,33 @@ export class AdminEdit extends HotComponent
|
|
|
475
475
|
return;
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
+
if (field.type === "number")
|
|
479
|
+
{
|
|
480
|
+
// @ts-ignore
|
|
481
|
+
value = parseFloat (value);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
if (field.type === "integer")
|
|
485
|
+
{
|
|
486
|
+
// @ts-ignore
|
|
487
|
+
value = parseInt (value);
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
if ((field.type === "bool") || (field.type === "boolean"))
|
|
491
|
+
{
|
|
492
|
+
// @ts-ignore
|
|
493
|
+
const boolval = value.toLowerCase ();
|
|
494
|
+
|
|
495
|
+
// @ts-ignore
|
|
496
|
+
value = false;
|
|
497
|
+
|
|
498
|
+
if ((boolval == "1") || (boolval == "true") || (boolval == "yes"))
|
|
499
|
+
{
|
|
500
|
+
// @ts-ignore
|
|
501
|
+
value = true;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
|
|
478
505
|
values[field.name] = value;
|
|
479
506
|
});
|
|
480
507
|
|
|
@@ -566,6 +566,9 @@ export class AdminTable extends HotComponent
|
|
|
566
566
|
return (null);
|
|
567
567
|
}
|
|
568
568
|
|
|
569
|
+
if (list.data == null)
|
|
570
|
+
throw new Error (`Returning list data to "${this.name}" component has a null data field. API response does not match the "IAPIResponse" schema.`);
|
|
571
|
+
|
|
569
572
|
for (let iIdx = 0; iIdx < list.data.length; iIdx++)
|
|
570
573
|
{
|
|
571
574
|
let elm = list.data[iIdx];
|