130 lines
4.1 MiB
130 lines
4.1 MiB
var oD=Object.defineProperty;var lD=(oe,ue,l)=>ue in oe?oD(oe,ue,{enumerable:!0,configurable:!0,writable:!0,value:l}):oe[ue]=l;var Te=(oe,ue,l)=>(lD(oe,typeof ue!="symbol"?ue+"":ue,l),l),tf=(oe,ue,l)=>{if(!ue.has(oe))throw TypeError("Cannot "+l)};var L=(oe,ue,l)=>(tf(oe,ue,"read from private field"),l?l.call(oe):ue.get(oe)),Ve=(oe,ue,l)=>{if(ue.has(oe))throw TypeError("Cannot add the same private member more than once");ue instanceof WeakSet?ue.add(oe):ue.set(oe,l)},Be=(oe,ue,l,X)=>(tf(oe,ue,"write to private field"),X?X.call(oe,l):ue.set(oe,l),l);var Lo=(oe,ue,l,X)=>({set _(Mt){Be(oe,ue,Mt,l)},get _(){return L(oe,ue,X)}}),Se=(oe,ue,l)=>(tf(oe,ue,"access private method"),l);(function(oe,ue){typeof exports=="object"&&typeof module<"u"?ue(exports,require("@fast-crud/ui-interface"),require("vue"),require("lodash-es"),require("dayjs"),require("@iconify/vue"),require("vue-router")):typeof define=="function"&&define.amd?define(["exports","@fast-crud/ui-interface","vue","lodash-es","dayjs","@iconify/vue","vue-router"],ue):(oe=typeof globalThis<"u"?globalThis:oe||self,ue(oe.FastCrud={},oe.FsUiInterface,oe.Vue,oe._,oe.dayjs,oe.IconifyVue,oe.VueRouter))})(this,function(oe,ue,l,X,Mt,sp,of){var ep,fi,Qr,Dr,en,tn,ui,di,It,rn,Dt,ft,Le,fr,Rr,ar,$t,nn,Wt,an,sn,Or,on,ia,ur,ws,rf,Oa,Ln,_s,Br,Po,ip,Ba,hi,ys,_n,sa,yn,oa,ks,nf,z3,mi,Vo,pi,Uo,at,ut,bs,af,Na,Fs,kn,la,Es,sf;"use strict";const xi={commonOptions(e){return{}},defaultOptions(e){const{t}=e,r=a=>l.computed(()=>t(a)),n=ue.uiContext.get();return{settings:{plugins:{mobile:{enabled:!0,props:{isMobile:l.computed(()=>window.innerWidth<768)}}}},mode:{},status:{},search:{container:{is:"fs-search-layout-default",collapse:!0,col:{span:4}},formItem:{wrapperCol:{style:{}}},options:{...n.form.inlineLayout,showFeedback:!1},onValidateError({trigger:a}){a==="search"&&n.notification.error({message:t("fs.search.error.message")})},collapse:!0,show:!0,buttons:{search:{className:{"fs-search-btn-search":!0},icon:n.icons.search},reset:{className:{"fs-search-btn-reset":!0},icon:n.icons.refresh}}},form:{labelPlacement:"left",labelPosition:"right",labelWidth:"120px",style:{"grid-template-columns":"50% 50%"},row:{gutter:10},col:{span:12},labelAlign:"right",labelCol:{span:4},wrapperCol:{span:18},wrapper:{is:n.dialog.name,...n.formWrapper.buildWidthBind(n.dialog.name,"960px"),...n.formWrapper.buildInitBind(n.dialog.name),dragenabled:!0,destroyOnClose:!0,...n.dialog.footer(),buttons:{cancel:{text:r("fs.form.cancel"),order:1,click:({doClose:a})=>{a()}},reset:{text:r("fs.form.reset"),order:1,click:({reset:a})=>{a()}},ok:{text:r("fs.form.ok"),order:1,type:"primary",click:async({submit:a})=>{await a()}}}}},addForm:{mode:"add",wrapper:{title:r("fs.addForm.title")}},editForm:{mode:"edit",wrapper:{title:r("fs.editForm.title")}},viewForm:{mode:"view",wrapper:{title:r("fs.viewForm.title"),buttons:{reset:{show:!1},cancel:{show:!1}}}},rowHandle:{width:250,title:r("fs.rowHandle.title"),order:1e3,dropdown:{more:{text:null,type:"primary",icon:n.icons.more}}},pagination:{background:!0,pageSize:20,[n.pagination.currentPage]:1,[n.pagination.total]:1,pageSizes:[5,10,20,50],layout:"total, sizes, prev, pager, next, jumper",showSizeChanger:!0,showQuickJumper:!0,showSizePicker:!0,showTotal:a=>t("fs.pagination.showTotal",[a])},table:{show:!0,height:"100%",rowKey:n.table.defaultRowKey,stripe:!0,border:!0,bordered:!0,singleLine:!1,scrollTopOnRefreshed:!0,editable:{enabled:!1,rowKey:"$editable_id"},pagination:!1},toolbar:{compact:!0,buttons:{search:{className:{"fs-toolbar-btn-search":!0}},compact:{className:{"fs-toolbar-btn-compact":!0}},refresh:{className:{"fs-toolbar-btn-refresh":!0}},export:{className:{"fs-toolbar-btn-export":!0}},columns:{className:{"fs-toolbar-btn-columns":!0}}}},actionbar:{buttons:{add:{className:{"fs-actionbar-btn-add":!0},type:"primary",text:r("fs.actionbar.add")}}}}}};function op(){var t;return(t=new Error().stack)==null?void 0:t.split(`
|
||
`)[3]}const cn=(...e)=>{};function $o(...e){console.log.apply(this,arguments)}function lp(...e){console.warn.apply(this,arguments)}function cp(...e){console.error.apply(this,arguments)}const fp=(...e)=>{cp("%c [error]","font-weight: 600;",...e)},up=(...e)=>{lp("%c [warn]","font-weight: 600;",...e)},lf=(...e)=>{$o("%c [info]","font-weight: 600;",...e)},dp=(...e)=>{if(!console.log)return;const t=op();{const r=["%c [debug]","font-weight: 600;",...e];$o(...r);const n=["%c "+t,"color:#999"];$o(...n)}},De={debug:cn,info:cn,warn:cn,error:cn,log:cn};function cf(e={}){const t=(e==null?void 0:e.level)||"info";switch(De.debug=cn,De.info=cn,De.warn=cn,De.error=cn,De.log=cn,t){case"debug":De.debug=dp;case"info":De.info=lf,De.log=lf;case"warn":De.warn=up;case"error":De.error=fp;break}}cf();function hp(e){return e==null||e===""}function mp(...e){for(const t of e)if(!(t==null||t===""))return!1;return!1}function pp(...e){for(const t of e)if(t==null||t==="")return!0;return!1}const Wo={isEmpty:hp,isAllEmpty:mp,hasEmpty:pp};function gp(e,t=!1){t&&l.onRenderTriggered(r=>{r.key,r.target,r.type})}function Ho(e){return l.defineAsyncComponent({loader:e,onError(t,r,n,a){console.error("load error",t),t.message.match(/fetch/)&&a<=3?r():n()}})}function xp(e,t,r,n){const a=Ho(r);e.component(t,a,n)}function vp(e,t,r,n,a){const i=vi(t,n,a);X.forEach(i,(s,o)=>{r&&r.indexOf(o)!=-1||xp(e,o,s,null)})}function wp(e,t,r,n,a){const i=vi(t,n,a);X.forEach(i,(s,o)=>{r&&r.indexOf(o)||e.component(o,s.default)})}function vi(e,t,r){const n={};return t==null&&(t=/.*\/(.+).(vue|jsx|tsx)/),X.forEach(e,(a,i)=>{const s=i.match(t);if((s==null?void 0:s.length)<=1){console.error(`"${i}" can't pick a component name,this component can't register`);return}let o=s[1];o=X.camelCase(o),o=X.upperFirst(o),r&&(a=r(a)),n[o]=a}),n}function _p(e){const t=vi(e),r={};return X.forEach(t,(n,a)=>{r[a]=Ho(n)}),r}function yp(e){const t=vi(e),r={};return X.forEach(t,(n,a)=>{r[a]=n.default}),r}const kp={transformFromGlob:vi,installAsyncComponents:vp,installSyncComponents:wp,createAsyncComponent:Ho,loadAsyncComponentFromGlob:_p,loadComponentFromGlob:yp};class jo{constructor(t){Te(this,"remoteStorage");Te(this,"$router");Te(this,"tableName");Te(this,"keyType");Te(this,"id");this.remoteStorage=t.remoteStorage,this.$router=t.$router,this.tableName=t.tableName,this.keyType=t.keyType,this.id=t.id}getTableId(){const t=this.tableName;let r="fs-crud";return this.id&&(r=r+"."+this.id),t&&typeof t=="string"?r+"."+t:r}async getTable(){const t=this.getTableId(),r=localStorage.getItem(t);if(r!=null)return JSON.parse(r)}async saveTable(t){const r=this.getTableId();localStorage.setItem(r,JSON.stringify(t))}async clearTable(){const t=this.getTableId();localStorage.removeItem(t)}async updateTableValue(t,r){if(r==null&&(r=this.getItemKey()),this.remoteStorage){await this.remoteStorage.set(r,t);return}let n=await this.getTable();n==null&&(n={}),n[r]=t,await this.saveTable(n)}getItemKey(){const t=this.$router,r=this.keyType;let n=location.href;return t&&(n=t.path),this.id&&(n=n+"."+this.id),r==null||typeof r!="string"||!r?n:n+"."+r}async getTableValue(t){if(t==null&&(t=this.getItemKey()),this.remoteStorage)return await this.remoteStorage.get(t);const r=await this.getTable();return r==null?null:r[t]}async clearTableValue(t){if(t==null&&(t=this.getItemKey()),this.remoteStorage){await this.remoteStorage.remove(t);return}const r=await this.getTable();r!=null&&(delete r[t],await this.saveTable(r))}}const bp=/\D/,Ep=/^[a-zA-Z_$]+([\w_$]*)$/,Sp=/"/g;function ff(...e){return e.reduce((t,r)=>t?!r||r.startsWith("[")?`${t}${r}`:`${t}.${r}`:r,"")}function uf(e){function t(r,...n){if(n=n.filter(a=>a!==void 0),e.isString(r))return ff(...n,r);if(Array.isArray(r))return n=ff(...n),r.reduce((a,i)=>{const s=typeof i;return s==="number"?i<0||i%1!==0?`${a}["${i}"]`:`${a}[${i}]`:s!=="string"?`${a}["${i}"]`:i?bp.test(i)?Ep.test(i)?a?`${a}.${i}`:`${a}${i}`:`${a}["${i.replace(Sp,'\\"')}"]`:`${a}[${i}]`:`${a}[""]`},n)}return t}uf.notChainable=!0;const Cp=/^[a-zA-Z_$]+([\w_$]*)$/,Tp=/"/g,df=Object.prototype.hasOwnProperty;function Fp(e){const t=typeof e;return e!=null&&(t=="object"||t=="function")}function Ap(e){const t=uf(e);function r(i){const{options:s,obj:o,callback:c}=i;s.pathFormatArray=s.pathFormat=="array",i.depth=0;let f=!1;const u=()=>(f=!0,!1);for(;i&&!f;){if(!i.inited){if(i.inited=!0,i.info=mf(i.value,s.ownPropertiesOnly),s.checkCircular&&(i.circularParentIndex=-1,i.circularParent=null,i.isCircular=!1,i.info.isObject&&!i.info.isEmpty)){let d=i.parent;for(;d;){if(d.value===i.value){i.isCircular=!0,i.circularParent=d,i.circularParentIndex=i.depth-d.depth-1;break}d=d.parent}}if(i.children=[],s.childrenPath&&s.childrenPath.forEach((d,h)=>{const m=e.get(i.value,d),g=mf(m,s.ownPropertiesOnly);g.isEmpty||i.children.push([d,s.strChildrenPath[h],m,g])}),i.isLeaf=i.isCircular||s.childrenPath!==void 0&&!i.children.length||!i.info.isObject||i.info.isEmpty,i.needCallback=(i.depth||s.includeRoot)&&(!s.leavesOnly||i.isLeaf),i.needCallback){const d=new hf(o,s,u);d.setItem(i,!1);try{i.res=c(i.value,i.key,i.parent&&i.parent.value,d)}catch(h){throw h.message&&(h.message+=`
|
||
callback failed before deep iterate at:
|
||
`+t(i.path)),h}}if(f)break;i.res!==!1&&!f&&!i.isCircular&&i.info.isObject&&(s.childrenPath!==void 0&&(i.depth||!s.rootIsChildren)?(i.childrenItems=[],i.children.length&&i.children.forEach(([d,h,m,g])=>{i.childrenItems=[...i.childrenItems,...g.isArray?n(i,m,s,d,h):a(i,m,s,d,h)]})):i.childrenItems=i.info.isArray?n(i,i.value,s,[],""):a(i,i.value,s,[],"")),i.currentChildIndex=-1}if(i.childrenItems&&i.currentChildIndex<i.childrenItems.length-1){i.currentChildIndex++,i.childrenItems[i.currentChildIndex].parentItem=i,i=i.childrenItems[i.currentChildIndex];continue}if(i.needCallback&&s.callbackAfterIterate){const d=new hf(o,s,u);d.setItem(i,!0);try{c(i.value,i.key,i.parent&&i.parent.value,d)}catch(h){throw h.message&&(h.message+=`
|
||
callback failed after deep iterate at:
|
||
`+t(i.path)),h}}i=i.parentItem}}return r;function n(i,s,o,c,f){let u;o.pathFormatArray||(u=i.strPath||"",f&&u&&!f.startsWith("[")&&(u+="."),u+=f||"");const d=[];for(let h=0;h<s.length;h++){const m=s[h];if(m===void 0&&!(h in s))continue;let g;const p=!o.pathFormatArray;p&&(g=`${u}[${h}]`),d.push({value:m,key:h+"",path:[...i.path||[],...c,h+""],strPath:g,depth:i.depth+1,parent:{value:i.value,key:i.key,path:p?i.strPath:i.path,parent:i.parent,depth:i.depth,info:i.info},childrenPath:c.length&&c||void 0,strChildrenPath:f||void 0})}return d}function a(i,s,o,c,f){let u;o.pathFormatArray||(u=i.strPath||"",f&&u&&!f.startsWith("[")&&(u+="."),u+=f||"");const d=[],h=!o.pathFormatArray;for(const m in s){if(o.ownPropertiesOnly&&!df.call(s,m))continue;let g;h&&(Cp.test(m)?u?g=`${u}.${m}`:g=`${m}`:g=`${u}["${m.replace(Tp,'\\"')}"]`),d.push({value:s[m],key:m,path:[...i.path||[],...c,m],strPath:g,depth:i.depth+1,parent:{value:i.value,key:i.key,path:h?i.strPath:i.path,parent:i.parent,depth:i.depth,info:i.info},childrenPath:c.length&&c||void 0,strChildrenPath:f||void 0})}return d}}class hf{constructor(t,r,n){Te(this,"_item");Te(this,"obj");Te(this,"_options");Te(this,"afterIterate");this.obj=t,this._options=r,this.break=n}setItem(t,r){this._item=t,this.afterIterate=r}get path(){return this._options.pathFormatArray?this._item.path:this._item.strPath}get parent(){return this._item.parent}get parents(){if(!this._item._parents){this._item._parents=[];let t=this._item.parent;for(;t;)this._item._parents[t.depth]=t,t=t.parent}return this._item._parents}get depth(){return this._item.depth}get isLeaf(){return this._item.isLeaf}get isCircular(){return this._item.isCircular}get circularParentIndex(){return this._item.circularParentIndex}get circularParent(){return this._item.circularParent}get childrenPath(){return this._options.childrenPath!==void 0&&(this._options.pathFormatArray?this._item.childrenPath:this._item.strChildrenPath)||void 0}get info(){return this._item.info}}function Dp(e,t){for(const r in e)if(!t||df.call(e,r))return!1;return!0}function mf(e,t){const r={isObject:Fp(e)};return r.isArray=r.isObject&&Array.isArray(e),r.isEmpty=r.isArray?!e.length:r.isObject?Dp(e,t):!0,r}function Rp(e){const t=Ap(e);function r(n,a,i){if(a===void 0&&(a=X.identity),i=X.merge({includeRoot:!Array.isArray(n),pathFormat:"string",checkCircular:!1,leavesOnly:!1,ownPropertiesOnly:!0},i||{}),i.childrenPath!==void 0){if(!i.includeRoot&&i.rootIsChildren===void 0&&(i.rootIsChildren=Array.isArray(n)),!X.isString(i.childrenPath)&&!Array.isArray(i.childrenPath))throw Error("childrenPath can be string or array");X.isString(i.childrenPath)&&(i.childrenPath=[i.childrenPath]),i.strChildrenPath=i.childrenPath,i.childrenPath=[];for(let s=i.strChildrenPath.length-1;s>=0;s--)i.childrenPath[s]=X.toPath(i.strChildrenPath[s])}return t({value:n,callback:a,options:i,obj:n}),n}return r}const pf={forEachDeep:Rp({isString:X.isString})},mr={logger:De,strings:Wo,trace:gp,vite:kp,store:jo,deepdash:pf,dash:{omit(e,...t){const r=Object.keys(e.value),n={};for(const a of r)a!=="loading"&&(t.indexOf(a)>=0||(n[a]=e.value[a]));return n}}};function zo(e,t){return e.type!=="antdv"?{}:{labelCol:{span:t},wrapperCol:{span:23-t}}}function Op(){const{ui:e}=ue.useUi();return{colspan:{form:{col:{span:24},...zo(e,2)}},colspan3:{form:{col:{span:24},...zo(e,3)}},colspan4:{form:{col:{span:24},...zo(e,4)}}}}const Bp=Object.freeze(Object.defineProperty({__proto__:null,default:Op},Symbol.toStringTag,{value:"Module"}));function Np(){const e=ue.uiContext.get();return{button:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text"}}},link:{form:{component:{name:e.input.name,vModel:e.input.modelValue,[e.input.clearable]:!0}},column:{component:{name:"fs-button",vModel:"text",...e.button.linkType}}}}}const Ip=Object.freeze(Object.defineProperty({__proto__:null,default:Np},Symbol.toStringTag,{value:"Module"}));function Pp(){const e=ue.uiContext.get();return{"dict-cascader":{search:{component:{clearable:!0}},form:{component:{name:"fs-dict-cascader",vModel:e.cascader.modelValue,[e.cascader.clearable]:!0}},column:{component:{name:"fs-dict-cascader-format"}}}}}const Mp=Object.freeze(Object.defineProperty({__proto__:null,default:Pp},Symbol.toStringTag,{value:"Module"})),gf={name:"zh-cn",fs:{component:{select:{placeholder:"请选择"}},addForm:{title:"添加"},editForm:{title:"编辑"},viewForm:{title:"查看"},rowHandle:{title:"操作",remove:{text:"删除",confirmTitle:"删除提示",confirmMessage:"您确定要删除该记录吗?",success:"删除成功!",confirmText:"确定",cancelText:"取消"},copy:{text:"复制"},edit:{text:"编辑"},view:{text:"查看"}},form:{cancel:"取消",ok:"确定",reset:"重置",saveRemind:{title:"提示",content:"表单数据有变更,是否保存",cancel:"不保存",ok:"保存"}},actionbar:{add:"添加"},toolbar:{columnFilter:{title:"列设置",fixed:"固定",order:"排序",reset:"还原",confirm:"确定",unnamed:"未命名"},search:{title:"查询显示"},refresh:{title:"刷新"},compact:{title:"紧凑模式"},export:{title:"导出"},columns:{title:"列设置"}},search:{container:{collapseButton:{text:{collapse:"收起",expand:"展开"}}},search:{text:"查询"},reset:{text:"重置"},error:{message:"查询表单校验失败"}},pagination:{showTotal:"共 {0} 条"},date:{formatter:{to:"至"}},extends:{tableSelect:{view:"查看",select:"选择",ok:"确定",cancel:"取消"},cropper:{title:"图片裁剪",preview:"预览",reChoose:"重新选择",flipX:"左右翻转",flipY:"上下翻转",reset:"重置",cancel:"取消",confirm:"确定",chooseImage:"+ 选择图片",onlySupport:"仅支持",sizeLimit:"大小不能超过",sizeNoLimit:"大小不限制"},fileUploader:{text:"文件上传",limitTip:"文件数量不能超过 {0}",sizeLimitTip:"文件大小不能超过 {0},当前大小:{1}",loadError:"图片加载失败",pixelLimitTip:"图片像素尺寸不能超过 宽:{0},高:{1}",hasUploading:"还有文件正在上传,请等待上传完成,或删除它"}}}},Lp={name:"en",fs:{component:{select:{placeholder:"please select"}},addForm:{title:"add"},editForm:{title:"edit"},viewForm:{title:"view"},rowHandle:{title:"handle",remove:{text:"remove",confirmTitle:"remove tip",confirmMessage:"Are you sure you want to delete this record?",success:"delete success!",confirmText:"confirm",cancelText:"cancel"},copy:{text:"copy"},edit:{text:"edit"},view:{text:"view"}},form:{cancel:"cancel",ok:"ok",reset:"reset",saveRemind:{title:"save remind",content:"The form data has changed, whether to save",cancel:"don't save",ok:"save"}},actionbar:{add:"add"},toolbar:{columnFilter:{title:"columns set",fixed:"fixed",order:"sort",reset:"reset",confirm:"ok",unnamed:"unnamed"},search:{title:"show search bar"},refresh:{title:"refresh"},compact:{title:"compact mode"},export:{title:"export"},columns:{title:"columns set"}},search:{container:{collapseButton:{text:{collapse:"collapse",expand:"expand"}}},search:{text:"search"},reset:{text:"reset"},error:{message:"form valid error"}},pagination:{showTotal:"Total {0} items"},date:{formatter:{to:"to"}},extends:{tableSelect:{view:"view",select:"select"},cropper:{title:"image crop",preview:"preview",reChoose:"reChoose",flipX:"flipX",flipY:"flipY",reset:"reset",cancel:"cancel",confirm:"confirm",chooseImage:"+ choose image",onlySupport:"only",sizeLimit:"size limit",sizeNoLimit:" no limit"},fileUploader:{text:"fileUpload",limitTip:"file count limit: {0}",sizeLimitTip:"file size limit: {0}, current size: {1}",loadError:"image load error",pixelLimitTip:"pixel limit : width:{0},height:{1}",hasUploading:"The file is being uploaded, please wait for the upload to complete or delete"}}}};function Vp(e,t){let r=X.get(gf,e);return r==null?e:t instanceof Array?(X.forEach(t,(n,a)=>{r=r.replace("{"+a+"}",n)}),r):r.replace("{n}",t)}class Up{constructor(){Te(this,"vueI18nInstance",null)}t(t,r){return Vp(t,r)}setVueI18n(t){if(!t)return;t.global&&(t=t.global);const r=t.availableLocales;for(const n of r){if(n.startsWith("zh")){const a=t.getLocaleMessage(n),i=X.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:gf.fs}),t.mergeLocaleMessage(n,{fs:i})}else if(n.startsWith("en")){const a=t.getLocaleMessage(n),i=X.cloneDeep(a.fs||{});t.mergeLocaleMessage(n,{fs:Lp.fs}),t.mergeLocaleMessage(n,{fs:i})}De.debug("i18n",t.getLocaleMessage(n))}this.vueI18nInstance=t}}const As=new Up;function Kt(){return As.vueI18nInstance!=null?{t:As.vueI18nInstance.t}:{t:As.t}}var Sn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function wi(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var xf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Sn,function(){return function(r,n){var a=n.prototype,i=a.format;a.format=function(s){var o=this,c=this.$locale();if(!this.isValid())return i.bind(this)(s);var f=this.$utils(),u=(s||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case"Q":return Math.ceil((o.$M+1)/3);case"Do":return c.ordinal(o.$D);case"gggg":return o.weekYear();case"GGGG":return o.isoWeekYear();case"wo":return c.ordinal(o.week(),"W");case"w":case"ww":return f.s(o.week(),d==="w"?1:2,"0");case"W":case"WW":return f.s(o.isoWeek(),d==="W"?1:2,"0");case"k":case"kk":return f.s(String(o.$H===0?24:o.$H),d==="k"?1:2,"0");case"X":return Math.floor(o.$d.getTime()/1e3);case"x":return o.$d.getTime();case"z":return"["+o.offsetName()+"]";case"zzz":return"["+o.offsetName("long")+"]";default:return d}});return i.bind(this)(u)}}})})(xf);var $p=xf.exports;const Wp=wi($p);Mt.extend(Wp);function Go(e,t){if(!Wo.isEmpty(e))return Mt(e).format(t)}function vf(e,t="YYYY-MM-DD HH:mm:ss"){if(e!=null&&e instanceof Array&&e.length>1){if(Wo.hasEmpty(e))return;const{t:r}=Kt();return`${Go(e[0],t)} ${r("fs.date.formatter.to")} ${Go(e[1],t)}`}return Go(e,t)}function Hp(e){const{value:t}=e;return vf(t,"YYYY-MM-DD")}function jp(e){const{value:t}=e;return vf(t,"YYYY-MM-DD HH:mm:ss")}var wf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Sn,function(){var r="week",n="year";return function(a,i,s){var o=i.prototype;o.week=function(c){if(c===void 0&&(c=null),c!==null)return this.add(7*(c-this.week()),"day");var f=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var u=s(this).startOf(n).add(1,n).date(f),d=s(this).endOf(r);if(u.isBefore(d))return 1}var h=s(this).startOf(n).date(f).startOf(r).subtract(1,"millisecond"),m=this.diff(h,r,!0);return m<0?s(this).startOf("week").week():Math.ceil(m)},o.weeks=function(c){return c===void 0&&(c=null),this.week(c)}}})})(wf);var zp=wf.exports;const Gp=wi(zp);var _f={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Sn,function(){return function(r,n){n.prototype.weekday=function(a){var i=this.$locale().weekStart||0,s=this.$W,o=(s<i?s+7:s)-i;return this.$utils().u(a)?o:this.subtract(o,"day").add(a,"day")}}})})(_f);var Xp=_f.exports;const Kp=wi(Xp);var yf={exports:{}};(function(e,t){(function(r,n){e.exports=n()})(Sn,function(){return function(r,n,a){var i=n.prototype,s=function(d){return d&&(d.indexOf?d:d.s)},o=function(d,h,m,g,p){var x=d.name?d:d.$locale(),v=s(x[h]),y=s(x[m]),w=v||y.map(function(R){return R.slice(0,g)});if(!p)return w;var E=x.weekStart;return w.map(function(R,F){return w[(F+(E||0))%7]})},c=function(){return a.Ls[a.locale()]},f=function(d,h){return d.formats[h]||function(m){return m.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,function(g,p,x){return p||x.slice(1)})}(d.formats[h.toUpperCase()])},u=function(){var d=this;return{months:function(h){return h?h.format("MMMM"):o(d,"months")},monthsShort:function(h){return h?h.format("MMM"):o(d,"monthsShort","months",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(h){return h?h.format("dddd"):o(d,"weekdays")},weekdaysMin:function(h){return h?h.format("dd"):o(d,"weekdaysMin","weekdays",2)},weekdaysShort:function(h){return h?h.format("ddd"):o(d,"weekdaysShort","weekdays",3)},longDateFormat:function(h){return f(d.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};i.localeData=function(){return u.bind(this)()},a.localeData=function(){var d=c();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return a.weekdays()},weekdaysShort:function(){return a.weekdaysShort()},weekdaysMin:function(){return a.weekdaysMin()},months:function(){return a.months()},monthsShort:function(){return a.monthsShort()},longDateFormat:function(h){return f(d,h)},meridiem:d.meridiem,ordinal:d.ordinal}},a.months=function(){return o(c(),"months")},a.monthsShort=function(){return o(c(),"monthsShort","months",3)},a.weekdays=function(d){return o(c(),"weekdays",null,null,d)},a.weekdaysShort=function(d){return o(c(),"weekdaysShort","weekdays",3,d)},a.weekdaysMin=function(d){return o(c(),"weekdaysMin","weekdays",2,d)}}})})(yf);var Yp=yf.exports;const qp=wi(Yp);Mt.extend(Kp),Mt.extend(qp),Mt.extend(Gp);function Jp(){const e=ue.uiContext.get();function t(n){const{row:a,key:i,value:s}=n;s!=null&&(e.type==="naive"?a[i]=Mt(s).valueOf():e.type==="antdv"&&e.version==="4"||e.type)}return{datetime:{form:{component:{...e.datePicker.buildDateType("datetime"),vModel:e.datePicker.modelValue}},column:{width:170,component:{name:"fs-date-format"}},valueBuilder(n){t(n)}},date:{form:{component:{...e.datePicker.buildDateType("date"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-MM-DD"}},valueBuilder(n){t(n)}},daterange:{form:{component:{...e.datePicker.buildDateType("daterange"),vModel:e.datePicker.modelValue}},column:{width:210,formatter:Hp},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&i!=null&&(e.type==="naive"?n[a]=[Mt(i[0]).valueOf(),Mt(i[1]).valueOf()]:n[a]=[Mt(i[0]),Mt(i[1])])}},datetimerange:{form:{component:{...e.datePicker.buildDateType("datetimerange"),vModel:e.datePicker.modelValue}},column:{width:340,formatter:jp},valueBuilder({row:n,key:a,value:i}){i!=null&&Array.isArray(i)&&i.length===2&&(e.type==="naive"?n[a]=[Mt(i[0]).valueOf(),Mt(i[1]).valueOf()]:n[a]=[Mt(i[0]),Mt(i[1])])}},time:{form:{component:{name:e.timePicker.name,vModel:e.timePicker.modelValue}},column:{width:100,align:"center",component:{name:"fs-date-format",format:"HH:mm:ss"}},valueBuilder(n){t(n)}},month:{form:{component:{...e.datePicker.buildDateType("month"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-MM"}},valueBuilder(n){t(n)}},week:{form:{component:{...e.datePicker.buildDateType("week"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-ww[周]"}},valueBuilder(n){t(n)}},quarter:{form:{component:{...e.datePicker.buildDateType("quarter"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY-[Q]Q"}},valueBuilder(n){t(n)}},year:{form:{component:{...e.datePicker.buildDateType("year"),vModel:e.datePicker.modelValue}},column:{align:"center",width:120,component:{name:"fs-date-format",format:"YYYY"}},valueBuilder(n){t(n)}}}}const Zp=Object.freeze(Object.defineProperty({__proto__:null,default:Jp},Symbol.toStringTag,{value:"Module"}));function Qp(){const{ui:e}=ue.useUi();return{number:{form:{component:{name:e.number.name,props:{}}},align:"center"},switch:{form:{component:{name:e.switch.name,props:{}}},component:{name:e.switch.name,props:{}},align:"center"},slider:{form:{component:{name:"el-slider",props:{}}},align:"center"},rate:{form:{component:{name:"el-rate",props:{}}},align:"center"},"color-picker":{form:{component:{name:"el-color-picker",props:{}}},align:"center"},transfer:{form:{component:{name:"el-transfer",props:{}}},align:"center"},autocomplete:{form:{component:{name:"el-autocomplete",props:{}}}}}}const e1=Object.freeze(Object.defineProperty({__proto__:null,default:Qp},Symbol.toStringTag,{value:"Module"}));function t1(){return{icon:{form:{component:{name:"fs-icon-selector",vModel:"modelValue",[ue.uiContext.get().input.clearable]:!0}},column:{component:{name:"fs-icon",vModel:"icon",style:"font-size:18px"}}}}}const r1=Object.freeze(Object.defineProperty({__proto__:null,default:t1},Symbol.toStringTag,{value:"Module"}));function n1(){const e=ue.uiContext.get();return{number:{form:{component:{name:e.number.name,vModel:e.modelValue}}}}}const a1=Object.freeze(Object.defineProperty({__proto__:null,default:n1},Symbol.toStringTag,{value:"Module"}));function i1(){return{"phone-number":{form:{component:{name:"el-phone-number-input"}},column:{formatter(e,t,r){let n="";return r!=null&&(r.callingCode!=null?n+="(+"+r.callingCode+")":r.countryCode!=null&&(n+="("+r.countryCode+")"),r.phoneNumber!=null&&(n+=r.phoneNumber)),n}}}}}const s1=Object.freeze(Object.defineProperty({__proto__:null,default:i1},Symbol.toStringTag,{value:"Module"}));function o1(){const e=ue.uiContext.get();return{select:{search:{autoSearchTrigger:"change"},form:{component:{name:e.select.name,[e.select.clearable]:!0}}},"dict-select":{search:{autoSearchTrigger:"change"},column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-dict-select",vModel:e.select.modelValue,[e.select.clearable]:!0}}},"table-select":{column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-table-select"}}},"editable-select":{column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-editable-select"}}},"dict-radio":{search:{component:{name:"fs-dict-select",vModel:e.select.modelValue,autoSearchTrigger:"change"}},form:{component:{name:"fs-dict-radio",vModel:e.radioGroup.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}},"dict-checkbox":{search:{component:{name:"fs-dict-select"},autoSearchTrigger:"change"},form:{component:{name:"fs-dict-checkbox",vModel:e.radioGroup.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}},"dict-switch":{search:{component:{name:"fs-dict-select",vModel:e.select.modelValue},autoSearchTrigger:"change"},form:{component:{name:"fs-dict-switch",vModel:e.switch.modelValue,[e.select.clearable]:!0}},column:{component:{name:"fs-values-format",vModel:"modelValue"}}}}}const l1=Object.freeze(Object.defineProperty({__proto__:null,default:o1},Symbol.toStringTag,{value:"Module"}));function c1(){const e=ue.uiContext.get();return{text:{form:{component:{name:e.input.name,vModel:e.textArea.modelValue,[e.input.clearable]:!0}},search:{autoSearchTrigger:"enter"}},password:{form:{component:{name:e.inputPassword.name,vModel:e.inputPassword.modelValue,...e.inputPassword.passwordType}},search:{autoSearchTrigger:"enter"}},textarea:{search:{component:{name:e.input.name,type:"text",[e.input.clearable]:!0},autoSearchTrigger:"enter"},form:{component:{name:e.textArea.name,type:e.textArea.type,vModel:e.textArea.modelValue,[e.input.clearable]:!0}}}}}const f1=Object.freeze(Object.defineProperty({__proto__:null,default:c1},Symbol.toStringTag,{value:"Module"}));function u1(){const e=ue.uiContext.get();return{"dict-tree":{search:{autoSearchTrigger:"change"},column:{component:{name:"fs-values-format",vModel:"modelValue"}},form:{component:{name:"fs-dict-tree",vModel:e.treeSelect.modelValue,[e.treeSelect.clearable]:!0}}}}}const d1=Object.assign({"./list/assist.ts":Bp,"./list/button.ts":Ip,"./list/cascader.ts":Mp,"./list/date.ts":Zp,"./list/el.ts":e1,"./list/icon.ts":r1,"./list/number.ts":a1,"./list/phone.ts":s1,"./list/select.ts":l1,"./list/text.ts":f1,"./list/tree.ts":Object.freeze(Object.defineProperty({__proto__:null,default:u1},Symbol.toStringTag,{value:"Module"}))}),kf=[];X.forEach(d1,e=>{kf.push(e.default)});const _i={};function h1(){return _i}function m1(e){return _i[e]}function p1(e){for(const t in e)_i[t]=e[t]}const La={getType:m1,addTypes:p1,getTypes:h1,install(){for(const e of kf)X.forEach(e(),(t,r)=>{_i[r]=t});De.debug("types installed:",_i)}},g1=l.defineComponent({name:"FsPage",setup(){const e=l.ref();return l.onMounted(()=>{window.getComputedStyle(e.value.parentNode).getPropertyValue("position")!=="relative"&&mr.logger.warn("fs-page父节点的position建议为relative,因为fs-page为相对定位(position:absolute),如果样式没有异常,你可以忽略此警告")}),{pageRef:e}}}),dD="",rt=(e,t)=>{const r=e.__vccOpts||e;for(const[n,a]of t)r[n]=a;return r},x1={ref:"pageRef",class:"fs-page"},v1={key:0,class:"fs-page-header"},w1={class:"fs-page-content"},_1={key:1,class:"fs-page-footer"};function y1(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",x1,[e.$slots.header!=null?(l.openBlock(),l.createElementBlock("div",v1,[l.renderSlot(e.$slots,"header")])):l.createCommentVNode("",!0),l.createElementVNode("div",w1,[l.renderSlot(e.$slots,"default")]),e.$slots.footer!=null?(l.openBlock(),l.createElementBlock("div",_1,[l.renderSlot(e.$slots,"footer")])):l.createCommentVNode("",!0)],512)}const bf=rt(g1,[["render",y1]]);function Xo(e){return e!=null&&(e instanceof Sf||l.isRef(e))}function Ef(e){return Xo(e)&&!e.cloneable}function k1(e,...t){function r(a,i){if(i!=null&&(X.isArray(a)||Xo(i)))return i}let n=null;for(const a of t)Xo(a)&&(n=a);return n||X.mergeWith(e,...t,r)}function b1(e){if(Ef(e))return e;function t(r){if(Ef(r))return r}return X.cloneDeepWith(e,t)}let Sf=class{constructor(){Te(this,"cloneable",!1)}setCloneable(t){this.cloneable=t}};function Ze(){return{merge:k1,cloneDeep:b1,UnMergeable:Sf}}const{cloneDeep:E1}=Ze();function S1(e){return e instanceof Ds}function C1(e){return e instanceof yi}function Cf(e,t,r){const n={};if(e==null)return n;const a=r?S1:C1;return pf.forEachDeep(e,(i,s,o,c)=>{if(i==null)return!1;if(a(i)){const f=c.path;if(t){for(const u of t)if(typeof u=="string"){if(f.startsWith(u))return!1}else if(u instanceof RegExp&&u.test(f))return!0}return n[f]=i,!1}return!l.isShallow(i)},{checkCircular:!0}),n}function T1(e,t){if(e==null||Object.keys(e).length<=0)return null;const r={};return X.forEach(e,(n,a)=>{r[a]=n.buildAsyncRef(t)}),r}function F1(e,t){t==null||Object.keys(t).length<=0||X.forEach(t,(r,n)=>{X.set(e,n,r.value==null?null:r.value)})}function A1(e,t,r,n){const a=l.computed(()=>{const o=e();return Cf(o,r,!1)}),i=l.computed(()=>{const o=e();return Cf(o,r,!0)}),s=T1(i.value,t);return l.computed(()=>{let o=e();const c=Object.keys(i.value).length,f=Object.keys(a.value).length;if(c>0||f>0){if(o=E1(o),f>0){const u=t?t():{};X.forEach(a.value,(d,h)=>{X.set(o,h,d.computeFn(u))})}c>0&&F1(o,s)}return n?n(o):o})}class yi{constructor(t){Te(this,"computeFn");this.computeFn=t}}function Tf(e){return new yi(e)}class Ds{constructor(t){Te(this,"watch");Te(this,"asyncFn");Te(this,"defaultValue");const{asyncFn:r,defaultValue:n}=t;this.watch=t.watch,this.asyncFn=r,this.defaultValue=n}buildAsyncRef(t){t=t||function(){};const r=l.ref(this.defaultValue),n=l.computed(()=>this.watch?this.watch(t()):null);return l.watch(()=>n.value,async a=>{r.value=await this.asyncFn(a,t())},{immediate:!0}),r}}function Ff(e){return new Ds(e)}function Nr(){return{ComputeValue:yi,compute:Tf,AsyncComputeValue:Ds,asyncCompute:Ff,doComputed:A1}}const Un={orderDefault:1},{merge:Gr,cloneDeep:Cn}=Ze(),ki=[];function Ko(e){X.remove(ki,t=>t.name===e.name),ki.push(e),ki.sort((t,r)=>t.order-r.order),De.debug("mergeColumnPlugin register success: current:",e,"registered:",ki)}function D1(e){var t,r;if(e.dict){if((t=e.column)!=null&&t.component){const n=l.shallowReactive(Cn(e.dict));n.cloneable&&(n.cloneable=!1),e.column.component.dict=Gr(n,e.column.component.dict)}if((r=e.form)!=null&&r.component){const n=l.shallowReactive(Cn(e.dict));n.cloneable&&(n.cloneable=!1),e.form.component.dict=Gr(n,e.form.component.dict)}}return e}function R1(e){if(!e.type)return e;let t=[];typeof e.type=="string"?t=[e.type]:e.type instanceof Array&&(t=e.type);const r={};for(const n of t){const a=La.getType(n);a&&Gr(r,a)}return e=Gr(r,e),e}const Va=[];Va.push({name:"type",handle:R1,order:-2}),Va.push({name:"dict",handle:D1,order:-1}),Va.push({name:"viewFormUseCellComponent",order:10,handle:(e={},t={})=>{var a,i;if(!((a=t.settings)!=null&&a.viewFormUseCellComponent))return e;const n={component:((i=e.column)==null?void 0:i.component)||{}};return(e.type==="text"||e.type instanceof Array&&e.type.includes("text"))&&(n.render=s=>{const{value:o}=s;return l.createVNode("span",null,[o])}),Gr(e,{viewForm:n}),e}}),Va.push({name:"NaiveFormRuleFix",order:10,handle:(e={},t={})=>{var n,a,i,s,o;const{ui:r}=ue.useUi();return r.type!=="naive"||((n=e.addForm)!=null&&n.rules&&(e.addForm.rule=e.addForm.rules),(a=e.editForm)!=null&&a.rules&&(e.editForm.rule=e.editForm.rules),(i=e.viewForm)!=null&&i.rules&&(e.viewForm.rule=e.viewForm.rules),(s=e.form)!=null&&s.rules&&(e.form.rule=e.form.rules),(o=e.search)!=null&&o.rules&&(e.search.rule=e.search.rules)),e}}),Va.push({name:"DefaultOrder",order:0,handle:(e={},t={},r)=>(X.get(e,"column.order")==null&&X.set(e,"column.order",r),X.get(e,"form.order")==null&&X.set(e,"form.order",r),e)});for(const e of Va)Ko(e);function Yo(e,t){const r={};let n=0;return X.forEach(e,(a,i)=>{if(a.key=i,a.children)a.children=Yo(a.children,t);else for(const s of ki)a=s.handle(a,t,n);r[i]=a,n++}),r}function qo(e={},t){return X.forEach(t,(r,n)=>{r.children?qo(e,r.children):e[n]=r}),e}function Rs(e={},t){return X.forEach(t,(r,n)=>{r.children?Rs(e,r.children):e[n]=r}),e}function O1(e){const t=e,r=t.column||{};return r.title==null&&(r.title=t.title),r.key=t.key,t.children&&(r.children=Df(t.children)),Af(r),l.reactive(r)}function Af(e){var t;e&&(t=e.component)!=null&&t.name&&typeof e.component.name!="string"&&(l.isRef(e.component.name)||(e.component.name=l.shallowRef(e.component.name)))}function Df(e){let t={};return X.forEach(e,(r,n)=>{t[n]=O1(r)}),t=Jo(t),t}function B1(e){return X.sortBy(e,t=>t.order??Un.orderDefault)}function Jo(e){const t=[];for(const a in e){const i=e[a];i.key=a,i.children&&X.size(i.children)>0&&(i.children=Jo(i.children)),t.push(i)}const r=B1(t),n={};for(const a of r)n[a.key]=a;return n}function Rf(e,t){const r={};return X.forEach(e,n=>{const a=Cn(n[t])||{};t==="form"&&a.title==null&&(a.title=n.title),a.key=n.key,r[n.key]=a,Af(a)}),r}function bi(e,t,r,n){const a=Rf(r,t),i=Gr(Cn(e.form),e[t],{columns:a});return n&&n(i),i}function N1(e,t="search",r){var o;const n=Rf(r,t),a={},i=((o=e.settings)==null?void 0:o.searchCopyFormProps)??["component","valueChange","title","key","label","render"];function s(c,f,u){if(X.includes(i,u)&&e.columns[f]){const h=e.columns[f][u];h&&(c[u]=h)}}return X.forEach(Cn(e.form.columns),(c,f)=>{const u={};s(u,f,"valueResolve"),s(u,f,"valueBuilder"),a[f]=Gr(u,X.pick(c,i))}),Gr({columns:a},{columns:n},e.search)}function I1(e,t,r="form"){const{t:n}=Kt(),{merge:a}=Ze();t=t||{};const i=a(xi.defaultOptions({t:n}),xi.commonOptions({crudOptions:e,context:t,crudExpose:null}),e),s=Yo(Cn(i.columns),i),o=qo({},s),c=r==="form"?"form":`${r}Form`;return bi(i,c,o)}function P1(e){X.forEach(e.columns,(n,a)=>{n.key=a});const t=Yo(Cn(e.columns),e);e.columns=t;const r=qo({},t);return e.table.columns=Df(Cn(t)),e.table.columnsMap=Rs({},e.table.columns),Gr(e.toolbar,{columnsFilter:{originalColumns:Cn(e.table.columns)}}),e.form=bi(e,"form",r),e.addForm=bi(e,"addForm",r),e.editForm=bi(e,"editForm",r),e.viewForm=bi(e,"viewForm",r,n=>{X.forEach(n.columns,a=>{a.component||(a.component={}),a.component.disabled=!0})}),e.search=N1(e,"search",r),e.table.editable&&(e.table.editable.addForm=Gr(e.addForm.columns,e.table.editable.addForm),e.table.editable.editForm=Gr(e.editForm.columns,e.table.editable.editForm)),e}function Os(e,t){X.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Os(r.children,t):t(r,n)})}function Ei(e,t){X.forEach(e,(r,n)=>{r.key||(r.key=n),r.children?Ei(r.children,t):t(r,n)})}function Bs(){return{buildFormOptions:I1,buildColumns:P1,registerMergeColumnPlugin:Ko,forEachColumns:Ei,doColumnsSort:Jo}}let M1=0;const Zo={};async function L1(e){const t=e.id||`${M1++}`,r=document.createElement("div");return new Promise((n,a)=>{let i=Zo[t];i!=null&&(i.vm.exposed.open(e),n(i));const s=l.createVNode($a,{id:t,onClosed(){e.id||delete Zo[t]}});s.appContext=$a._context,l.render(s,r),document.body.appendChild(r);const c=s.component;i={id:t,vNode:s,vm:c,props:s.component.props},Zo[t]=i,i.vm.exposed.open(e),n(i.vm.exposed)})}function Of(){let e=null;try{e=l.inject("use:form:wrapper",()=>{})()}catch(n){De.warn("cant inject use:form:wrapper,建议在App.vue中使用<fs-form-provider>组件包裹<router-view/>",n)}let t=null;e==null?t=async n=>await L1(n):t=async n=>await e.open(n);async function r(n){const{buildFormOptions:a}=Bs(),i=a(n.crudOptions,n.context);return await t(i)}return{openDialog:t,openCrudFormDialog:r}}const{merge:Bf}=Ze(),V1=Bf;function U1(e){const{crudExpose:t}=e,{crudBinding:r}=t;ue.useUi(),Kt();const{merge:n}=Ze();l.watch(()=>{var i,s,o;return(o=(s=(i=r.value)==null?void 0:i.table)==null?void 0:s.editable)==null?void 0:o.enabled},i=>{var o,c,f,u,d;const s=(f=(c=(o=r.value)==null?void 0:o.table)==null?void 0:c.editable)==null?void 0:f.customRowHandleActive;if(s){s({enabled:i,mode:(u=r.value.table.editable)==null?void 0:u.mode,rowHandle:r.value.rowHandle});return}i?((d=r.value.table.editable)==null?void 0:d.mode)==="row"?r.value.rowHandle.active="editRow":r.value.rowHandle.active="editable":r.value.rowHandle.active="default"});const a={async enable(i,s){const o=r.value.table.editable;n(o,{enabled:!0},i),s&&s({editable:o})},disable(){var i;(i=t.getTableRef())==null||i.editable.resume(),r.value.table.editable.enabled=!1,r.value.rowHandle.active="default"},active(i){t.getTableRef().editable.active(i)},inactive(){t.getTableRef().editable.inactive()},addRow(i){t.getTableRef().editable.addRow(i)},activeCols(i){t.getTableRef().editable.activeCols(i)},resume(){t.getTableRef().editable.resume()},cancel(){t.getTableRef().editable.cancelAll()},persist(){t.getTableRef().editable.persist()},removeRow(i){t.getTableRef().editable.removeRow(i)},getEditableRow(i){var s,o;return(o=(s=t.getTableRef())==null?void 0:s.editable)==null?void 0:o.getEditableRow(i)},getActiveRows(){var i,s;return(s=(i=t.getTableRef())==null?void 0:i.editable)==null?void 0:s.getActiveRows()},async doSaveRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);await o.save({async doSave(c){var m,g;const{isAdd:f,row:u,setData:d}=c,h=u;if(((g=(m=r.value)==null?void 0:m.mode)==null?void 0:g.name)!=="local")try{if(o.loading=!0,f){const p=await r.value.request.addRequest({form:h});d(p)}else await r.value.request.editRequest({form:h,row:h})}finally{o.loading=!1}}})},async doCancelRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);if(o.isAdd){a.removeRow(s);return}o.cancel()},async doRemoveRow(i){let s=i.editableId;s||(s=i.row[r.value.table.editable.rowKey]);const o=a.getEditableRow(s);return await t.doRemove(i,{async handle(){return o.isAdd?(a.removeRow(s),!1):r.value.mode.name==="local"?(a.removeRow(s),{isLocal:!0}):await r.value.request.delRequest(i)}})},getInstance(){t.getTableRef().editable},eachCells(i){var s;(s=t.getTableRef().editable)==null||s.eachCells(i)},eachRows(i){var s;(s=t.getTableRef().editable)==null||s.eachRows(i)},async validate(){var i;return await((i=t.getTableRef().editable)==null?void 0:i.validate())},getTableData(i){var s;return(s=t.getTableRef().editable)==null?void 0:s.getCleanTableData(i)},getCleanTableData(i){var s;return(s=t.getTableRef().editable)==null?void 0:s.getCleanTableData(i)}};return a}function Qo(e){const{crudRef:t,crudBinding:r}=e,{ui:n}=ue.useUi(),{t:a}=Kt(),i=Of();function s(){t.value==null&&De.warn("crudRef还未初始化,请在onMounted之后调用")}function o(){r.value==null&&De.warn("crudBinding还未初始化,请在useFs或useCrud之后调用")}const c={crudRef:t,crudBinding:r,getFormWrapperRef(){return t.value.formWrapperRef},getFormRef:()=>{const f=c.getFormWrapperRef();if(f==null||(f==null?void 0:f.formRef)==null){De.error("当前无法获取FormRef,请在编辑对话框已打开的状态下调用此方法,如果是在打开对话框时调用,可以尝试先nextTick");return}return f==null?void 0:f.formRef},getFormData:()=>{const f=c.getFormRef();return f==null?void 0:f.getFormData()},setFormData:(f,u)=>{var d;(d=c.getFormRef())==null||d.setFormData(f,u)},getFormComponentRef(f,u=!1){const d=c.getFormRef();return d==null?void 0:d.getComponentRef(f,u)},doValueBuilder(f,u){u==null&&(u=l.toRaw(r.value.columns)),De.debug("doValueBuilder ,columns=",u);const d=[];Ei(u,h=>{h.valueBuilder!=null&&d.push(h)}),d.length!==0&&(X.forEach(f,(h,m)=>{X.forEach(d,g=>{g.valueBuilder({value:h[g.key],row:h,form:h,index:m,key:g.key,column:g})}),h.children&&X.isArray(h.children)&&c.doValueBuilder(h.children,u)}),De.debug("valueBuilder success:",f))},doValueResolve({form:f},u){u==null&&(u=l.toRaw(r.value.columns));const d=[];Ei(u,h=>{h.valueResolve!=null&&d.push(h)}),d.length!==0&&(De.debug("doValueResolve ,columns=",u),X.forEach(d,h=>{const m=h.key;h.valueResolve({value:f[m],row:f,form:f,key:m,column:h})}),De.debug("valueResolve success:",f))},doSearchValidate(){c.getSearchRef().doValidate()},getSearchFormData(){return r.value.search.validatedForm},getSearchValidatedFormData(){return r.value.search.validatedForm},setSearchFormData(f){if(t.value&&t.value.setSearchFormData({form:f.form,mergeForm:f.mergeForm}),f.mergeForm===!1)for(const d in r.value.search.validatedForm)delete r.value.search.validatedForm[d];const{merge:u}=Ze();u(r.value.search.validatedForm,f.form),f.triggerSearch&&c.doRefresh()},getSearchRef(){var f;return s(),(f=t.value)==null?void 0:f.getSearchRef()},buildPageQuery(f){var p,x;const u=f.page;let d=f.form;d==null&&(d=X.cloneDeep(c.getSearchValidatedFormData())||{},(x=(p=r.value)==null?void 0:p.search)!=null&&x.columns&&c.doValueResolve({form:d},l.toRaw(r.value.search.columns)));let h=f.sort;h==null&&(h=r.value.table.sort||{});const m={page:u,form:d,sort:h};let g=m;return r.value.request.transformQuery&&(g=r.value.request.transformQuery(m)),g},async search(f,u={}){const d=c.buildPageQuery(f);let h;const m=l.unref(r.value.table.disableLoading);try{u.silence!==!0&&m!==!0&&(r.value.table.loading=!0),De.debug("pageRequest",d),h=await r.value.request.pageRequest(d)}finally{r.value.table.loading=!1}if(h==null){De.warn("pageRequest返回结果不能为空");return}let g=h;return r.value.request.transformRes&&(g=r.value.request.transformRes({res:h,query:d})),g.records&&c.doValueBuilder(g.records),g},getPage(){let f={currentPage:1,pageSize:10};return r.value.pagination&&(f={currentPage:r.value.pagination[n.pagination.currentPage],pageSize:r.value.pagination.pageSize}),f},async doRefresh(f){var x,v;if(r.value.request.pageRequest==null)return;De.debug("do refresh:",f),r.value.pagination&&f!=null&&f.goFirstPage&&(r.value.pagination[n.pagination.currentPage]=1);const u=c.getPage(),d=await c.search({page:u},{silence:f==null?void 0:f.silence});if(d==null){De.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",d);return}const{currentPage:h=u.currentPage||1,pageSize:m=u.pageSize,total:g}=d,{records:p}=d;if(p==null||!(p instanceof Array)||g==null||h==null||h<=0||isNaN(h)||m==null||m<=0||isNaN(m)){De.error("pageRequest返回结构不正确,请配置正确的request.transformRes,期望:{currentPage>0, pageSize>0, total, records:[]},实际返回:",d),De.info("如果你的不需要分页,也需要按照上面的格式返回,可以让pageSize=99999,然后配置crudOptions.pagination.show=false来隐藏分页组件");return}if(r.value.data=p,r.value.pagination&&(r.value.pagination[n.pagination.currentPage]=h,r.value.pagination.pageSize=m,r.value.pagination[n.pagination.total]=g||p.length),(f==null?void 0:f.scrollTop)??r.value.table.scrollTopOnRefreshed){const y=c.getTableRef();y==null||y.scrollTo(0)}(v=(x=r.value)==null?void 0:x.table)!=null&&v.onRefreshed&&r.value.table.onRefreshed({data:p})},getToolbarRef:()=>t.value.toolbarRef,getColumnsFilterRef:()=>c.getToolbarRef().columnsFilterRef,getColumnsFilterOriginalColumnsRef:()=>c.getColumnsFilterRef().original,getColumnsFilterColumnsRef:()=>c.getColumnsFilterRef().columns,doPageTurn(f){r.value.pagination[n.pagination.currentPage]=f},async doSearch(f){De.debug("do search:",f),f=Bf({goFirstPage:!0},f),f.goFirstPage&&c.doPageTurn(1),f.form&&t.value&&c.setSearchFormData({form:f.form,mergeForm:f.mergeForm,refWarning:!1,triggerSearch:!1}),await c.doRefresh()},getTableRef(){var f;return s(),(f=t.value)==null?void 0:f.tableRef},getBaseTableRef(){const f=this.getTableRef();if(f==null){De.warn("fs-table还未挂载");return}return f.tableRef},getTableData(){return o(),r.value.data},setTableData(f){o(),r.value.data=f},insertTableRow(f,u){o(),r.value.data.splice(f,0,u)},updateTableRow(f,u,d=!0){d?r.value.data[f]=V1(r.value.data[f],u):r.value.data[f]=u},removeTableRow(f){o(),r.value.data.splice(f,1)},removeTableRowByRowKey:(f,u)=>{o(),u==null&&(u=r.value.data);for(let d=0;d<u.length;d++){const h=u[d];if(h[r.value.table.rowKey]===f)return u.splice(d,1),!0;if(h.children&&X.isArray(h.children)&&c.removeTableRowByRowKey(f,h.children))return!0}},getTableDataRow(f){const u=c.getTableData();if(u==null)throw new Error("table data is not init");if(u.length<=f)throw new Error("index over array length");return u[f]},doSelectCurrentRow({row:f}){c.getTableRef().value.setCurrentRow(f)},async doRemove(f,u){var p;const d=r.value.table.remove??u??{};if((u==null?void 0:u.noConfirm)!==!0)try{d.confirmFn?await d.confirmFn(f):await n.messageBox.confirm({title:d.confirmTitle||a("fs.rowHandle.remove.confirmTitle"),message:d.confirmMessage||a("fs.rowHandle.remove.confirmMessage"),cancelButtonText:d.cancelButtonText||a("fs.rowHandle.remove.cancelText"),confirmButtonText:d.confirmButtonText||a("fs.rowHandle.remove.confirmText"),type:"warn",...d.confirmProps})}catch{d.onCanceled&&await d.onCanceled(f);return}let h=null;const m=((p=r.value.mode)==null?void 0:p.name)==="local";if(u!=null&&u.handle?h=await u.handle(f):m?c.removeTableRow(f==null?void 0:f.index):h=await r.value.request.delRequest(f),h===!1)return;const g={...f,res:h};if(d.afterRemove&&await d.afterRemove(g)===!1)return!1;d.showSuccessNotification!==!1&&n.notification.success(a("fs.rowHandle.remove.success")),m||d.refreshTable!==!1&&await c.doRefresh({scrollTop:!1}),d.onRemoved&&await d.onRemoved({...f,res:h})},async openDialog(f){if(f.newInstance===!0&&i)return await i.openDialog(f);const u=this.getFormWrapperRef();return u.open(f),u},async _openDialog(f,u,d){var x,v;const{merge:h}=Ze();let m=u.row||u[n.tableColumn.row];delete u.row,m==null&&u.index!=null&&(m=c.getTableDataRow(u.index)),(v=(x=r.value)==null?void 0:x.request)!=null&&v.infoRequest&&(m=await r.value.request.infoRequest({mode:f,row:m}));const g={mode:f},p=l.toRaw(r.value[f+"Form"]);return h(g,p,{initialForm:m},u,d),await this.openDialog(g)},async openAdd(f,u={}){return this._openDialog("add",f,u)},async openEdit(f,u={}){return this._openDialog("edit",f,u)},async openView(f,u={}){return this._openDialog("view",f,u)},async openCopy(f,u={}){return this._openDialog("add",f,u)},editable:void 0};return c.editable=U1({crudExpose:c}),{expose:c,crudExpose:c}}async function Nf(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>Qm)});let t=null;return X.each(e,n=>{t=n}),(await t()).exportUtil}async function If(){const e=await Object.assign({"./lib/index.ts":()=>Promise.resolve().then(()=>Qm)});let t=null;return X.each(e,n=>{t=n}),(await t()).importUtil}function $1({originalRow:e,row:t,key:r,col:n}){var s;const a=e[r],i=(s=n.component)==null?void 0:s.dict;if(i&&a!=null){const o=i.getNodesFromDataMap(a);if(o!=null&&o.length>0){const c=X.map(o,f=>i.getLabel(f)||i.getValue(f)).join("|");c!=null&&c!==""&&(t[r]=c)}}return t}async function Pf(e,t={}){if(t.server){const f=e.getPage(),u=e.buildPageQuery({page:f});await t.server(u);return}const r=e.crudBinding;let n=t.columns;n==null&&(n=[],X.each(r.value.table.columnsMap,f=>{if(!(t.columnFilter&&t.columnFilter(f)===!1)&&!(t.onlyShow&&l.unref(f.show)===!1)&&f.exportable!==!1&&f.key!=="_index"){const u={key:f.key,title:f.title};n.push(u)}}));for(const f of n){const u=r.value.table.columnsMap[f.key];f.columnProps=u||{},t.columnBuilder&&t.columnBuilder({col:f})}const{merge:a}=Ze(),i=await Nf(),s=[];let o=r.value.data;if(t.dataFrom==="search"){const f=a({page:{currentPage:1,pageSize:99999999}},r.value.toolbar.export.searchParams);o=(await e.search(f,{silence:!0})).records}for(const f of o){const u=X.cloneDeep(f);X.each(n,d=>{const h=d.columnProps,m={row:u,originalRow:f,key:d.key,col:h,exportCol:d};t.autoUseDictLabel!==!1&&$1(m),t.dataFormatter&&t.dataFormatter(m)}),s.push(u)}const c=a({columns:n,data:s,filename:"table",noHeader:!1,separator:",",quoted:!1},{...t});t.fileType==="excel"?await i.excel(c):await i.csv(c)}async function W1(e,t){const n=await(await If()).csv(t.file),a=e.crudBinding;t.append===!1&&(a.value.data.length=0);const i=a.value.table.editable.enabled;for(const s of n.data)i?e.editable.addRow({row:s,active:!1}):a.value.data.push(s)}const el={};function tl(e,t,r={}){el[e]={handle:t,opts:r}}function Mf(e){return el[e]}tl("rowSelection",(e,t,r)=>{const a=t.crudExpose.crudBinding;function i(){return a.value.table.rowKey||"id"}const{ui:s}=ue.useUi();if(!e){De.warn("请配置settings.plugins.rowSelection.props参数");return}let o=s.table;return(r==null?void 0:r.table.tableVersion)=="v2"&&(o=s.tableV2),o.buildSelectionCrudOptions({crossPage:e.crossPage,getRowKey:i,getPageData(){return a.value.data},useCompute:()=>Nr(),selectionFixed:e.selectionFixed,multiple:e.multiple,selectedRowKeys:e.selectedRowKeys,onSelectedKeysChanged:async c=>{const f=e.selectedRowKeys instanceof Function?e.selectedRowKeys():e.selectedRowKeys;f.value=[...c],await l.nextTick(),e.onSelectedChanged&&e.onSelectedChanged(f.value)}})},{before:!0,order:-2}),tl("mobile",(e,t,r)=>{const n=r.rowHandle,a=n.buttons;let i={};for(const o in a){const c=a[o];l.isRef(c.dropdown)?i=c:i[o]={...c,dropdown:l.computed(()=>e.isMobile.value?!0:c.dropdown)}}let s=n.width;return(s==null||!l.isRef(s))&&(s=l.computed(()=>{var o;return e.isMobile.value?((o=e==null?void 0:e.rowHandle)==null?void 0:o.width)||60:n.width||250})),{rowHandle:{width:s,buttons:i}}},{before:!1,order:-2});const{merge:$n}=Ze();function Lf(e){e.context==null&&(e.context={});const t=ue.uiContext.get(),{t:r}=Kt(),n=S=>l.computed(()=>r(S));let a=e.crudOptions;const i=e.expose||e.crudExpose;if(!i)throw new Error("crudExpose不能为空,请给useCrud传入{crudExpose}参数");const s=i,{crudBinding:o}=s,{doRefresh:c,doValueResolve:f}=s;function u(){return{pagination:{...t.pagination.onChange({setCurrentPage(W){o.value.pagination[t.pagination.currentPage]=W},setPageSize(W){o.value.pagination.pageSize=W,o.value.pagination[t.pagination.currentPage]=1},async doAfterChange(){return await c()}})}}}function d(){return{form:{async doSubmit(S){var W,z,V,j;if(S.mode==="edit")if(f(S),((W=a.mode)==null?void 0:W.name)==="local")s.updateTableRow(S.index,S.form,a.mode.isMergeWhenUpdate);else return(z=o.value.request)!=null&&z.editRequest||De.warn("request.editRequest 未定义,无法保存"),await o.value.request.editRequest(S);else if(S.mode==="add")if(f(S),((V=a.mode)==null?void 0:V.name)==="local"){const H=a.mode.isAppendWhenAdd?s.getTableData().length:0;s.insertTableRow(H,S.form)}else return(j=o.value.request)!=null&&j.addRequest||De.warn("request.addRequest 未定义,无法保存"),await o.value.request.addRequest(S)},async onSuccess({mode:S}){S==="edit"?await c({scrollTop:!1}):S==="add"?await c({scrollTop:!0,goFirstPage:!0}):await c()}}}}function h(){return{rowHandle:{buttons:{remove:{click:async S=>{S.row=S[t.tableColumn.row],await s.doRemove(S)}},copy:{show:!1,click:async S=>{S.row=S[t.tableColumn.row],await s.openCopy({row:S.row,index:S.index})}},edit:{click:async S=>{S.row=S[t.tableColumn.row],await s.openEdit({row:S.row,index:S.index})}},view:{click:async S=>{S.row=S[t.tableColumn.row],await s.openView({row:S.row,index:S.index})}}}}}}function m(){return{search:{buttons:{search:{loading:l.computed(()=>{var S,W;return(W=(S=o.value)==null?void 0:S.table)==null?void 0:W.loading})}},on_reset(){o.value.table.sort={},Os(o.value.table.columns,W=>{W.sortOrder=!1});const S=i.getBaseTableRef();S!=null&&S.clearSort&&S.clearSort()},on_search(){i.doRefresh({goFirstPage:!0})},"onUpdate:form":S=>{o.value.search.form=S},"onUpdate:validatedForm":S=>{o.value.search.validatedForm=S},"onUpdate:collapse":S=>{o.value.search.collapse=S},container:{collapse:!0,"onUpdate:collapse":S=>{o.value.search.container.collapse=S}}}}}function g(){return{tabs:{},onTabChange(S){i.setSearchFormData({form:S,mergeForm:!0}),c()}}}function p(){const S=l.ref(!1);return{toolbar:{buttons:{refresh:{type:"primary",icon:t.icons.refresh,title:n("fs.toolbar.refresh.title"),order:1,circle:!0,click:async()=>{await i.doRefresh({scrollTop:!1})}},search:{type:l.computed(()=>o.value.search.show!==!1?"primary":"default"),icon:t.icons.search,title:n("fs.toolbar.search.title"),order:2,circle:!0,click:()=>{o.value.search.show=!o.value.search.show}},compact:{type:l.computed(()=>o.value.toolbar.compact?"primary":"default"),icon:t.icons.compact,title:n("fs.toolbar.compact.title"),order:3,circle:!0,click:()=>{o.value.toolbar.compact=!o.value.toolbar.compact}},export:{show:!0,type:"primary",icon:t.icons.export,order:4,loading:S,title:n("fs.toolbar.export.title"),circle:!0,click:async()=>{S.value=!0;try{await Pf(i,o.value.toolbar.export)}finally{S.value=!1}}},columns:{type:"primary",icon:t.icons.columnsFilter,title:n("fs.toolbar.columns.title"),circle:!0,order:5}},"onUpdate:columns"(W){const z=o.value.table.columns;function V(H,Y){const ae={};return X.forEach(Y,se=>{const de=H[se.key];if(de){if(de.columnSetShow===!1){ae[se.key]=de;return}delete de.order;const K=$n({...de},se);ae[se.key]=K,de.children&&(K.children=V(de.children,se.children))}}),ae}const j=V(z,W);o.value.table.columns=j,o.value.table.columnsMap=Rs({},j)}}}}function x(){return{table:{onSortChange(S){const{isServerSort:W,prop:z,asc:V,order:j}=S;Os(o.value.table.columns,Y=>{Y.key===z?Y.sortOrder=j:Y.sortOrder=!1});const H=o.value.table.sort;o.value.table.sort=W?{prop:z,order:j,asc:V}:null,(W||H!=null)&&s.doRefresh()}}}}function v(){return{actionbar:{buttons:{add:{click(){s.openAdd({})}}}}}}function y(){const{compute:S}=Nr();return{actionbar:{buttons:{addRow:{show:!1,text:n("fs.actionbar.add"),type:"primary",click:()=>{s.editable.addRow()}}}},rowHandle:{group:{editable:{remove:{text:"删除",...t.button.colors("danger"),click:async W=>{const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];await s.editable.doRemoveRow({editableId:j,row:V})}}},editRow:{edit:{text:"编辑",loading:S(W=>{const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey],H=s.editable.getEditableRow(j);return!!(H!=null&&H.loading)}),click:async W=>{var H;const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];if(o.value.table.editable.exclusive){const Y=s.editable.getActiveRows();X.forEach(Y,ae=>{o.value.table.editable.exclusiveEffect==="save"?s.editable.doSaveRow({row:ae.rowData}):s.editable.doCancelRow({row:ae.rowData})})}(H=s.editable.getEditableRow(j))==null||H.active()},show:S(W=>{var H,Y;const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];return!((Y=(H=s.editable)==null?void 0:H.getEditableRow(j))!=null&&Y.isEditing)})},save:{text:"保存",loading:!1,click:async W=>{const{index:z,row:V}=W;await s.editable.doSaveRow({row:V})},show:S(W=>{var H,Y;const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];return!!((Y=(H=s.editable)==null?void 0:H.getEditableRow(j))!=null&&Y.isEditing)})},cancel:{text:"取消",click:async W=>{var j;const{index:z,row:V}=W;await((j=s.editable)==null?void 0:j.doCancelRow({row:V}))},show:S(W=>{var H,Y;const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];return!!((Y=(H=s.editable)==null?void 0:H.getEditableRow(j))!=null&&Y.isEditing)})},remove:{text:"删除",...t.button.colors("danger"),click:async W=>{var H;const{index:z,row:V}=W,j=V[o.value.table.editable.rowKey];await((H=s.editable)==null?void 0:H.doRemoveRow({row:V,editableId:j}))}}}}}}}const{cloneDeep:w}=Ze();function E(S){S.search.validatedForm=w(S.search.initialForm)}function R(S){let W=w(S);const z=xi.commonOptions(e),V=xi.defaultOptions({t:r});a=$n({},V,z,W);const j=l.unref(a.settings);if(j){const se=l.unref(j.plugins);X.forEach(se,(de,K)=>{if(de.enabled===!1)return;let we=de.handle,D={};if(we==null){const b=Mf(K);b!=null&&(we=b.handle,D=b.opts)}if(we==null)return;const _=de.before??D.before,k=we(de.props,e,a);_!==!1?W=$n(k,W):W=$n(W,k)})}const H=$n(V,u(),d(),h(),m(),g(),p(),x(),v(),y(),z,W),{buildColumns:Y}=Bs(),ae=Y(H);return E(ae),ae}function F(S){o.value=R(S),De.info("fast-crud inited, crudBinding=",o.value)}function C(S){const W=$n({},a,S);return F(W),a=W,W}F(a);function U(S){$n(o.value,S)}return{appendCrudOptions:C,resetCrudOptions:F,appendCrudBinding:U,rebuildCrudBindings:R}}function Vf(e){const{createCrudOptions:t,crudExposeRef:r}=e,n=e.crudRef||l.ref(),a=e.crudBinding||l.ref({});let i=e.crudExpose;i||(i=Qo({crudRef:n,crudBinding:a}).crudExpose),r&&!r.value&&(r.value=i),e.context==null&&(e.context={});const s=e.context;e.onExpose&&e.onExpose({crudRef:n,crudBinding:a,crudExpose:i,context:s});const o=t({...e,crudExpose:i,expose:i,context:s});function c(f){const u={crudExpose:i,...f,context:s};$n(f.crudOptions,e.crudOptionsOverride);const d=Lf(u);return{...f,...d,crudRef:n,crudExpose:i,crudBinding:a,context:s}}return o instanceof Promise?o.then(f=>c(f)):c(o)}function H1(e){return Vf(e)}function Uf(e){return Vf(e)}function $f(){const e=l.ref(),t=l.ref(),r={},{crudExpose:n}=Qo({crudBinding:t,crudRef:e});return{crudRef:e,crudBinding:t,context:r,crudExpose:n}}function Tn(e,t,r="modelValue"){const n=ue.uiContext.get();let a=e.dict;a&&a.prototype&&(a.clear(),a=l.shallowReactive(X.cloneDeep(e.dict)),a.cloneable=!1,a.clear());function i(){return l.computed(()=>{let F=[];if(e.options?F=e.options:a&&a.data!=null&&(a.data instanceof Array||mr.logger.warn("dict.data类型错误,期望为数组,实际:",a.data),F=a.data,e.transformDictData&&(F=e.transformDictData(X.cloneDeep(a.data)))),n.type==="naive"){const C=[];for(const U of F)C.push({...U,value:y(U),label:E(U)});return C}return F})}function s(){return a}const o=l.inject("get:scope",function(){});function c(){const F=e[r]||t.attrs[r];return{...o(),componentRef:f,value:F}}const{proxy:f}=l.getCurrentInstance(),u=async(F=!1)=>{if(!a)return;if(a.getNodesByValues){const U=c();if(U.value==null)return;let S=U.value;Array.isArray(U.value)||(S=[U.value]),await a.appendByValues(S);return}if(a.loading)return;const C=c();if(F){await a.reloadDict(C);return}await a.loadDict(C)};u();const d=async()=>{await u(!0)},h=()=>{a&&a.clear()},m=()=>{a!=null&&(!a.prototype&&!a.cloneable||l.watch(()=>e[r],()=>{d()}))};(()=>{l.watch(()=>a==null?void 0:a.data,()=>{const F=c();t.attrs.onDictChange,t.emit("dict-change",{dict:a,...F})},{immediate:!0})})();const p=()=>{var F;return(F=s())==null?void 0:F.data},x=(F,C)=>{let U=C;return s()&&(U=s()[C]),F[U]},v=(F,C)=>{let U=C;s()&&(U=s()[C]),delete F[U]},y=F=>x(F,"value"),w=F=>x(F,"children"),E=F=>{if(e.labelFormatter)return e.labelFormatter(F);const C=x(F,"label");return C==null?"":String(C)};return{createComputedOptions:i,loadDict:u,reloadDict:d,clearDict:h,getDictData:p,getDict:s,watchValue:m,getValue:y,getLabel:E,getChildren:w,getColor:F=>x(F,"color"),removePropValue:v,curDict:a}}const Ua=typeof performance=="object"&&performance&&typeof performance.now=="function"?performance:Date,Wf=new Set,rl=typeof process=="object"&&process?process:{},Hf=(e,t,r,n)=>{typeof rl.emitWarning=="function"?rl.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let Ns=globalThis.AbortController,jf=globalThis.AbortSignal;if(typeof Ns>"u"){jf=class{constructor(){Te(this,"onabort");Te(this,"_onabort",[]);Te(this,"reason");Te(this,"aborted",!1)}addEventListener(n,a){this._onabort.push(a)}},Ns=class{constructor(){Te(this,"signal",new jf);t()}abort(n){var a,i;if(!this.signal.aborted){this.signal.reason=n,this.signal.aborted=!0;for(const s of this.signal._onabort)s(n);(i=(a=this.signal).onabort)==null||i.call(a,n)}}};let e=((ep=rl.env)==null?void 0:ep.LRU_CACHE_IGNORE_AC_WARNING)!=="1";const t=()=>{e&&(e=!1,Hf("AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",t))}}const j1=e=>!Wf.has(e),Wn=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),zf=e=>Wn(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?Is:null:null;class Is extends Array{constructor(t){super(t),this.fill(0)}}const Ra=class Ra{constructor(t,r){Te(this,"heap");Te(this,"length");if(!L(Ra,fi))throw new TypeError("instantiate Stack using Stack.create(n)");this.heap=new r(t),this.length=0}static create(t){const r=zf(t);if(!r)return[];Be(Ra,fi,!0);const n=new Ra(t,r);return Be(Ra,fi,!1),n}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}};fi=new WeakMap,Ve(Ra,fi,!1);let nl=Ra;const Zc=class Zc{constructor(t){Ve(this,ws);Ve(this,Po);Ve(this,_n);Ve(this,yn);Ve(this,ks);Ve(this,mi);Ve(this,pi);Ve(this,at);Ve(this,bs);Ve(this,Na);Ve(this,kn);Ve(this,Es);Ve(this,Qr,void 0);Ve(this,Dr,void 0);Ve(this,en,void 0);Ve(this,tn,void 0);Ve(this,ui,void 0);Ve(this,di,void 0);Te(this,"ttl");Te(this,"ttlResolution");Te(this,"ttlAutopurge");Te(this,"updateAgeOnGet");Te(this,"updateAgeOnHas");Te(this,"allowStale");Te(this,"noDisposeOnSet");Te(this,"noUpdateTTL");Te(this,"maxEntrySize");Te(this,"sizeCalculation");Te(this,"noDeleteOnFetchRejection");Te(this,"noDeleteOnStaleGet");Te(this,"allowStaleOnFetchAbort");Te(this,"allowStaleOnFetchRejection");Te(this,"ignoreFetchAbort");Ve(this,It,void 0);Ve(this,rn,void 0);Ve(this,Dt,void 0);Ve(this,ft,void 0);Ve(this,Le,void 0);Ve(this,fr,void 0);Ve(this,Rr,void 0);Ve(this,ar,void 0);Ve(this,$t,void 0);Ve(this,nn,void 0);Ve(this,Wt,void 0);Ve(this,an,void 0);Ve(this,sn,void 0);Ve(this,Or,void 0);Ve(this,on,void 0);Ve(this,ia,void 0);Ve(this,ur,void 0);Ve(this,Oa,()=>{});Ve(this,Ln,()=>{});Ve(this,_s,()=>{});Ve(this,Br,()=>!1);Ve(this,Ba,t=>{});Ve(this,hi,(t,r,n)=>{});Ve(this,ys,(t,r,n,a)=>{if(n||a)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache");return 0});Te(this,z3,"LRUCache");const{max:r=0,ttl:n,ttlResolution:a=1,ttlAutopurge:i,updateAgeOnGet:s,updateAgeOnHas:o,allowStale:c,dispose:f,disposeAfter:u,noDisposeOnSet:d,noUpdateTTL:h,maxSize:m=0,maxEntrySize:g=0,sizeCalculation:p,fetchMethod:x,memoMethod:v,noDeleteOnFetchRejection:y,noDeleteOnStaleGet:w,allowStaleOnFetchRejection:E,allowStaleOnFetchAbort:R,ignoreFetchAbort:F}=t;if(r!==0&&!Wn(r))throw new TypeError("max option must be a nonnegative integer");const C=r?zf(r):Array;if(!C)throw new Error("invalid max value: "+r);if(Be(this,Qr,r),Be(this,Dr,m),this.maxEntrySize=g||L(this,Dr),this.sizeCalculation=p,this.sizeCalculation){if(!L(this,Dr)&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if(typeof this.sizeCalculation!="function")throw new TypeError("sizeCalculation set to non-function")}if(v!==void 0&&typeof v!="function")throw new TypeError("memoMethod must be a function if defined");if(Be(this,di,v),x!==void 0&&typeof x!="function")throw new TypeError("fetchMethod must be a function if specified");if(Be(this,ui,x),Be(this,ia,!!x),Be(this,Dt,new Map),Be(this,ft,new Array(r).fill(void 0)),Be(this,Le,new Array(r).fill(void 0)),Be(this,fr,new C(r)),Be(this,Rr,new C(r)),Be(this,ar,0),Be(this,$t,0),Be(this,nn,nl.create(r)),Be(this,It,0),Be(this,rn,0),typeof f=="function"&&Be(this,en,f),typeof u=="function"?(Be(this,tn,u),Be(this,Wt,[])):(Be(this,tn,void 0),Be(this,Wt,void 0)),Be(this,on,!!L(this,en)),Be(this,ur,!!L(this,tn)),this.noDisposeOnSet=!!d,this.noUpdateTTL=!!h,this.noDeleteOnFetchRejection=!!y,this.allowStaleOnFetchRejection=!!E,this.allowStaleOnFetchAbort=!!R,this.ignoreFetchAbort=!!F,this.maxEntrySize!==0){if(L(this,Dr)!==0&&!Wn(L(this,Dr)))throw new TypeError("maxSize must be a positive integer if specified");if(!Wn(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");Se(this,Po,ip).call(this)}if(this.allowStale=!!c,this.noDeleteOnStaleGet=!!w,this.updateAgeOnGet=!!s,this.updateAgeOnHas=!!o,this.ttlResolution=Wn(a)||a===0?a:1,this.ttlAutopurge=!!i,this.ttl=n||0,this.ttl){if(!Wn(this.ttl))throw new TypeError("ttl must be a positive integer if specified");Se(this,ws,rf).call(this)}if(L(this,Qr)===0&&this.ttl===0&&L(this,Dr)===0)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!L(this,Qr)&&!L(this,Dr)){const U="LRU_CACHE_UNBOUNDED";j1(U)&&(Wf.add(U),Hf("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",U,Zc))}}static unsafeExposeInternals(t){return{starts:L(t,sn),ttls:L(t,Or),sizes:L(t,an),keyMap:L(t,Dt),keyList:L(t,ft),valList:L(t,Le),next:L(t,fr),prev:L(t,Rr),get head(){return L(t,ar)},get tail(){return L(t,$t)},free:L(t,nn),isBackgroundFetch:r=>{var n;return Se(n=t,at,ut).call(n,r)},backgroundFetch:(r,n,a,i)=>{var s;return Se(s=t,pi,Uo).call(s,r,n,a,i)},moveToTail:r=>{var n;return Se(n=t,Na,Fs).call(n,r)},indexes:r=>{var n;return Se(n=t,_n,sa).call(n,r)},rindexes:r=>{var n;return Se(n=t,yn,oa).call(n,r)},isStale:r=>{var n;return L(n=t,Br).call(n,r)}}}get max(){return L(this,Qr)}get maxSize(){return L(this,Dr)}get calculatedSize(){return L(this,rn)}get size(){return L(this,It)}get fetchMethod(){return L(this,ui)}get memoMethod(){return L(this,di)}get dispose(){return L(this,en)}get disposeAfter(){return L(this,tn)}getRemainingTTL(t){return L(this,Dt).has(t)?1/0:0}*entries(){for(const t of Se(this,_n,sa).call(this))L(this,Le)[t]!==void 0&&L(this,ft)[t]!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield[L(this,ft)[t],L(this,Le)[t]])}*rentries(){for(const t of Se(this,yn,oa).call(this))L(this,Le)[t]!==void 0&&L(this,ft)[t]!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield[L(this,ft)[t],L(this,Le)[t]])}*keys(){for(const t of Se(this,_n,sa).call(this)){const r=L(this,ft)[t];r!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield r)}}*rkeys(){for(const t of Se(this,yn,oa).call(this)){const r=L(this,ft)[t];r!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield r)}}*values(){for(const t of Se(this,_n,sa).call(this))L(this,Le)[t]!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield L(this,Le)[t])}*rvalues(){for(const t of Se(this,yn,oa).call(this))L(this,Le)[t]!==void 0&&!Se(this,at,ut).call(this,L(this,Le)[t])&&(yield L(this,Le)[t])}[Symbol.iterator](){return this.entries()}find(t,r={}){for(const n of Se(this,_n,sa).call(this)){const a=L(this,Le)[n],i=Se(this,at,ut).call(this,a)?a.__staleWhileFetching:a;if(i!==void 0&&t(i,L(this,ft)[n],this))return this.get(L(this,ft)[n],r)}}forEach(t,r=this){for(const n of Se(this,_n,sa).call(this)){const a=L(this,Le)[n],i=Se(this,at,ut).call(this,a)?a.__staleWhileFetching:a;i!==void 0&&t.call(r,i,L(this,ft)[n],this)}}rforEach(t,r=this){for(const n of Se(this,yn,oa).call(this)){const a=L(this,Le)[n],i=Se(this,at,ut).call(this,a)?a.__staleWhileFetching:a;i!==void 0&&t.call(r,i,L(this,ft)[n],this)}}purgeStale(){let t=!1;for(const r of Se(this,yn,oa).call(this,{allowStale:!0}))L(this,Br).call(this,r)&&(Se(this,kn,la).call(this,L(this,ft)[r],"expire"),t=!0);return t}info(t){const r=L(this,Dt).get(t);if(r===void 0)return;const n=L(this,Le)[r],a=Se(this,at,ut).call(this,n)?n.__staleWhileFetching:n;if(a===void 0)return;const i={value:a};if(L(this,Or)&&L(this,sn)){const s=L(this,Or)[r],o=L(this,sn)[r];if(s&&o){const c=s-(Ua.now()-o);i.ttl=c,i.start=Date.now()}}return L(this,an)&&(i.size=L(this,an)[r]),i}dump(){const t=[];for(const r of Se(this,_n,sa).call(this,{allowStale:!0})){const n=L(this,ft)[r],a=L(this,Le)[r],i=Se(this,at,ut).call(this,a)?a.__staleWhileFetching:a;if(i===void 0||n===void 0)continue;const s={value:i};if(L(this,Or)&&L(this,sn)){s.ttl=L(this,Or)[r];const o=Ua.now()-L(this,sn)[r];s.start=Math.floor(Date.now()-o)}L(this,an)&&(s.size=L(this,an)[r]),t.unshift([n,s])}return t}load(t){this.clear();for(const[r,n]of t){if(n.start){const a=Date.now()-n.start;n.start=Ua.now()-a}this.set(r,n.value,n)}}set(t,r,n={}){var h,m,g,p,x;if(r===void 0)return this.delete(t),this;const{ttl:a=this.ttl,start:i,noDisposeOnSet:s=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:c}=n;let{noUpdateTTL:f=this.noUpdateTTL}=n;const u=L(this,ys).call(this,t,r,n.size||0,o);if(this.maxEntrySize&&u>this.maxEntrySize)return c&&(c.set="miss",c.maxEntrySizeExceeded=!0),Se(this,kn,la).call(this,t,"set"),this;let d=L(this,It)===0?void 0:L(this,Dt).get(t);if(d===void 0)d=L(this,It)===0?L(this,$t):L(this,nn).length!==0?L(this,nn).pop():L(this,It)===L(this,Qr)?Se(this,mi,Vo).call(this,!1):L(this,It),L(this,ft)[d]=t,L(this,Le)[d]=r,L(this,Dt).set(t,d),L(this,fr)[L(this,$t)]=d,L(this,Rr)[d]=L(this,$t),Be(this,$t,d),Lo(this,It)._++,L(this,hi).call(this,d,u,c),c&&(c.set="add"),f=!1;else{Se(this,Na,Fs).call(this,d);const v=L(this,Le)[d];if(r!==v){if(L(this,ia)&&Se(this,at,ut).call(this,v)){v.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:y}=v;y!==void 0&&!s&&(L(this,on)&&((h=L(this,en))==null||h.call(this,y,t,"set")),L(this,ur)&&((m=L(this,Wt))==null||m.push([y,t,"set"])))}else s||(L(this,on)&&((g=L(this,en))==null||g.call(this,v,t,"set")),L(this,ur)&&((p=L(this,Wt))==null||p.push([v,t,"set"])));if(L(this,Ba).call(this,d),L(this,hi).call(this,d,u,c),L(this,Le)[d]=r,c){c.set="replace";const y=v&&Se(this,at,ut).call(this,v)?v.__staleWhileFetching:v;y!==void 0&&(c.oldValue=y)}}else c&&(c.set="update")}if(a!==0&&!L(this,Or)&&Se(this,ws,rf).call(this),L(this,Or)&&(f||L(this,_s).call(this,d,a,i),c&&L(this,Ln).call(this,c,d)),!s&&L(this,ur)&&L(this,Wt)){const v=L(this,Wt);let y;for(;y=v==null?void 0:v.shift();)(x=L(this,tn))==null||x.call(this,...y)}return this}pop(){var t;try{for(;L(this,It);){const r=L(this,Le)[L(this,ar)];if(Se(this,mi,Vo).call(this,!0),Se(this,at,ut).call(this,r)){if(r.__staleWhileFetching)return r.__staleWhileFetching}else if(r!==void 0)return r}}finally{if(L(this,ur)&&L(this,Wt)){const r=L(this,Wt);let n;for(;n=r==null?void 0:r.shift();)(t=L(this,tn))==null||t.call(this,...n)}}}has(t,r={}){const{updateAgeOnHas:n=this.updateAgeOnHas,status:a}=r,i=L(this,Dt).get(t);if(i!==void 0){const s=L(this,Le)[i];if(Se(this,at,ut).call(this,s)&&s.__staleWhileFetching===void 0)return!1;if(L(this,Br).call(this,i))a&&(a.has="stale",L(this,Ln).call(this,a,i));else return n&&L(this,Oa).call(this,i),a&&(a.has="hit",L(this,Ln).call(this,a,i)),!0}else a&&(a.has="miss");return!1}peek(t,r={}){const{allowStale:n=this.allowStale}=r,a=L(this,Dt).get(t);if(a===void 0||!n&&L(this,Br).call(this,a))return;const i=L(this,Le)[a];return Se(this,at,ut).call(this,i)?i.__staleWhileFetching:i}async fetch(t,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,ttl:s=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:c=0,sizeCalculation:f=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:d=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:h=this.allowStaleOnFetchRejection,ignoreFetchAbort:m=this.ignoreFetchAbort,allowStaleOnFetchAbort:g=this.allowStaleOnFetchAbort,context:p,forceRefresh:x=!1,status:v,signal:y}=r;if(!L(this,ia))return v&&(v.fetch="get"),this.get(t,{allowStale:n,updateAgeOnGet:a,noDeleteOnStaleGet:i,status:v});const w={allowStale:n,updateAgeOnGet:a,noDeleteOnStaleGet:i,ttl:s,noDisposeOnSet:o,size:c,sizeCalculation:f,noUpdateTTL:u,noDeleteOnFetchRejection:d,allowStaleOnFetchRejection:h,allowStaleOnFetchAbort:g,ignoreFetchAbort:m,status:v,signal:y};let E=L(this,Dt).get(t);if(E===void 0){v&&(v.fetch="miss");const R=Se(this,pi,Uo).call(this,t,E,w,p);return R.__returned=R}else{const R=L(this,Le)[E];if(Se(this,at,ut).call(this,R)){const W=n&&R.__staleWhileFetching!==void 0;return v&&(v.fetch="inflight",W&&(v.returnedStale=!0)),W?R.__staleWhileFetching:R.__returned=R}const F=L(this,Br).call(this,E);if(!x&&!F)return v&&(v.fetch="hit"),Se(this,Na,Fs).call(this,E),a&&L(this,Oa).call(this,E),v&&L(this,Ln).call(this,v,E),R;const C=Se(this,pi,Uo).call(this,t,E,w,p),S=C.__staleWhileFetching!==void 0&&n;return v&&(v.fetch=F?"stale":"refresh",S&&F&&(v.returnedStale=!0)),S?C.__staleWhileFetching:C.__returned=C}}async forceFetch(t,r={}){const n=await this.fetch(t,r);if(n===void 0)throw new Error("fetch() returned undefined");return n}memo(t,r={}){const n=L(this,di);if(!n)throw new Error("no memoMethod provided to constructor");const{context:a,forceRefresh:i,...s}=r,o=this.get(t,s);if(!i&&o!==void 0)return o;const c=n(t,o,{options:s,context:a});return this.set(t,c,s),c}get(t,r={}){const{allowStale:n=this.allowStale,updateAgeOnGet:a=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,status:s}=r,o=L(this,Dt).get(t);if(o!==void 0){const c=L(this,Le)[o],f=Se(this,at,ut).call(this,c);return s&&L(this,Ln).call(this,s,o),L(this,Br).call(this,o)?(s&&(s.get="stale"),f?(s&&n&&c.__staleWhileFetching!==void 0&&(s.returnedStale=!0),n?c.__staleWhileFetching:void 0):(i||Se(this,kn,la).call(this,t,"expire"),s&&n&&(s.returnedStale=!0),n?c:void 0)):(s&&(s.get="hit"),f?c.__staleWhileFetching:(Se(this,Na,Fs).call(this,o),a&&L(this,Oa).call(this,o),c))}else s&&(s.get="miss")}delete(t){return Se(this,kn,la).call(this,t,"delete")}clear(){return Se(this,Es,sf).call(this,"delete")}};z3=Symbol.toStringTag,Qr=new WeakMap,Dr=new WeakMap,en=new WeakMap,tn=new WeakMap,ui=new WeakMap,di=new WeakMap,It=new WeakMap,rn=new WeakMap,Dt=new WeakMap,ft=new WeakMap,Le=new WeakMap,fr=new WeakMap,Rr=new WeakMap,ar=new WeakMap,$t=new WeakMap,nn=new WeakMap,Wt=new WeakMap,an=new WeakMap,sn=new WeakMap,Or=new WeakMap,on=new WeakMap,ia=new WeakMap,ur=new WeakMap,ws=new WeakSet,rf=function(){const t=new Is(L(this,Qr)),r=new Is(L(this,Qr));Be(this,Or,t),Be(this,sn,r),Be(this,_s,(i,s,o=Ua.now())=>{if(r[i]=s!==0?o:0,t[i]=s,s!==0&&this.ttlAutopurge){const c=setTimeout(()=>{L(this,Br).call(this,i)&&Se(this,kn,la).call(this,L(this,ft)[i],"expire")},s+1);c.unref&&c.unref()}}),Be(this,Oa,i=>{r[i]=t[i]!==0?Ua.now():0}),Be(this,Ln,(i,s)=>{if(t[s]){const o=t[s],c=r[s];if(!o||!c)return;i.ttl=o,i.start=c,i.now=n||a();const f=i.now-c;i.remainingTTL=o-f}});let n=0;const a=()=>{const i=Ua.now();if(this.ttlResolution>0){n=i;const s=setTimeout(()=>n=0,this.ttlResolution);s.unref&&s.unref()}return i};this.getRemainingTTL=i=>{const s=L(this,Dt).get(i);if(s===void 0)return 0;const o=t[s],c=r[s];if(!o||!c)return 1/0;const f=(n||a())-c;return o-f},Be(this,Br,i=>{const s=r[i],o=t[i];return!!o&&!!s&&(n||a())-s>o})},Oa=new WeakMap,Ln=new WeakMap,_s=new WeakMap,Br=new WeakMap,Po=new WeakSet,ip=function(){const t=new Is(L(this,Qr));Be(this,rn,0),Be(this,an,t),Be(this,Ba,r=>{Be(this,rn,L(this,rn)-t[r]),t[r]=0}),Be(this,ys,(r,n,a,i)=>{if(Se(this,at,ut).call(this,n))return 0;if(!Wn(a))if(i){if(typeof i!="function")throw new TypeError("sizeCalculation must be a function");if(a=i(n,r),!Wn(a))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}else throw new TypeError("invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.");return a}),Be(this,hi,(r,n,a)=>{if(t[r]=n,L(this,Dr)){const i=L(this,Dr)-t[r];for(;L(this,rn)>i;)Se(this,mi,Vo).call(this,!0)}Be(this,rn,L(this,rn)+t[r]),a&&(a.entrySize=n,a.totalCalculatedSize=L(this,rn))})},Ba=new WeakMap,hi=new WeakMap,ys=new WeakMap,_n=new WeakSet,sa=function*({allowStale:t=this.allowStale}={}){if(L(this,It))for(let r=L(this,$t);!(!Se(this,ks,nf).call(this,r)||((t||!L(this,Br).call(this,r))&&(yield r),r===L(this,ar)));)r=L(this,Rr)[r]},yn=new WeakSet,oa=function*({allowStale:t=this.allowStale}={}){if(L(this,It))for(let r=L(this,ar);!(!Se(this,ks,nf).call(this,r)||((t||!L(this,Br).call(this,r))&&(yield r),r===L(this,$t)));)r=L(this,fr)[r]},ks=new WeakSet,nf=function(t){return t!==void 0&&L(this,Dt).get(L(this,ft)[t])===t},mi=new WeakSet,Vo=function(t){var i,s;const r=L(this,ar),n=L(this,ft)[r],a=L(this,Le)[r];return L(this,ia)&&Se(this,at,ut).call(this,a)?a.__abortController.abort(new Error("evicted")):(L(this,on)||L(this,ur))&&(L(this,on)&&((i=L(this,en))==null||i.call(this,a,n,"evict")),L(this,ur)&&((s=L(this,Wt))==null||s.push([a,n,"evict"]))),L(this,Ba).call(this,r),t&&(L(this,ft)[r]=void 0,L(this,Le)[r]=void 0,L(this,nn).push(r)),L(this,It)===1?(Be(this,ar,Be(this,$t,0)),L(this,nn).length=0):Be(this,ar,L(this,fr)[r]),L(this,Dt).delete(n),Lo(this,It)._--,r},pi=new WeakSet,Uo=function(t,r,n,a){const i=r===void 0?void 0:L(this,Le)[r];if(Se(this,at,ut).call(this,i))return i;const s=new Ns,{signal:o}=n;o==null||o.addEventListener("abort",()=>s.abort(o.reason),{signal:s.signal});const c={signal:s.signal,options:n,context:a},f=(p,x=!1)=>{const{aborted:v}=s.signal,y=n.ignoreFetchAbort&&p!==void 0;if(n.status&&(v&&!x?(n.status.fetchAborted=!0,n.status.fetchError=s.signal.reason,y&&(n.status.fetchAbortIgnored=!0)):n.status.fetchResolved=!0),v&&!y&&!x)return d(s.signal.reason);const w=m;return L(this,Le)[r]===m&&(p===void 0?w.__staleWhileFetching?L(this,Le)[r]=w.__staleWhileFetching:Se(this,kn,la).call(this,t,"fetch"):(n.status&&(n.status.fetchUpdated=!0),this.set(t,p,c.options))),p},u=p=>(n.status&&(n.status.fetchRejected=!0,n.status.fetchError=p),d(p)),d=p=>{const{aborted:x}=s.signal,v=x&&n.allowStaleOnFetchAbort,y=v||n.allowStaleOnFetchRejection,w=y||n.noDeleteOnFetchRejection,E=m;if(L(this,Le)[r]===m&&(!w||E.__staleWhileFetching===void 0?Se(this,kn,la).call(this,t,"fetch"):v||(L(this,Le)[r]=E.__staleWhileFetching)),y)return n.status&&E.__staleWhileFetching!==void 0&&(n.status.returnedStale=!0),E.__staleWhileFetching;if(E.__returned===E)throw p},h=(p,x)=>{var y;const v=(y=L(this,ui))==null?void 0:y.call(this,t,i,c);v&&v instanceof Promise&&v.then(w=>p(w===void 0?void 0:w),x),s.signal.addEventListener("abort",()=>{(!n.ignoreFetchAbort||n.allowStaleOnFetchAbort)&&(p(void 0),n.allowStaleOnFetchAbort&&(p=w=>f(w,!0)))})};n.status&&(n.status.fetchDispatched=!0);const m=new Promise(h).then(f,u),g=Object.assign(m,{__abortController:s,__staleWhileFetching:i,__returned:void 0});return r===void 0?(this.set(t,g,{...c.options,status:void 0}),r=L(this,Dt).get(t)):L(this,Le)[r]=g,g},at=new WeakSet,ut=function(t){if(!L(this,ia))return!1;const r=t;return!!r&&r instanceof Promise&&r.hasOwnProperty("__staleWhileFetching")&&r.__abortController instanceof Ns},bs=new WeakSet,af=function(t,r){L(this,Rr)[r]=t,L(this,fr)[t]=r},Na=new WeakSet,Fs=function(t){t!==L(this,$t)&&(t===L(this,ar)?Be(this,ar,L(this,fr)[t]):Se(this,bs,af).call(this,L(this,Rr)[t],L(this,fr)[t]),Se(this,bs,af).call(this,L(this,$t),t),Be(this,$t,t))},kn=new WeakSet,la=function(t,r){var a,i,s,o;let n=!1;if(L(this,It)!==0){const c=L(this,Dt).get(t);if(c!==void 0)if(n=!0,L(this,It)===1)Se(this,Es,sf).call(this,r);else{L(this,Ba).call(this,c);const f=L(this,Le)[c];if(Se(this,at,ut).call(this,f)?f.__abortController.abort(new Error("deleted")):(L(this,on)||L(this,ur))&&(L(this,on)&&((a=L(this,en))==null||a.call(this,f,t,r)),L(this,ur)&&((i=L(this,Wt))==null||i.push([f,t,r]))),L(this,Dt).delete(t),L(this,ft)[c]=void 0,L(this,Le)[c]=void 0,c===L(this,$t))Be(this,$t,L(this,Rr)[c]);else if(c===L(this,ar))Be(this,ar,L(this,fr)[c]);else{const u=L(this,Rr)[c];L(this,fr)[u]=L(this,fr)[c];const d=L(this,fr)[c];L(this,Rr)[d]=L(this,Rr)[c]}Lo(this,It)._--,L(this,nn).push(c)}}if(L(this,ur)&&((s=L(this,Wt))!=null&&s.length)){const c=L(this,Wt);let f;for(;f=c==null?void 0:c.shift();)(o=L(this,tn))==null||o.call(this,...f)}return n},Es=new WeakSet,sf=function(t){var r,n,a;for(const i of Se(this,yn,oa).call(this,{allowStale:!0})){const s=L(this,Le)[i];if(Se(this,at,ut).call(this,s))s.__abortController.abort(new Error("deleted"));else{const o=L(this,ft)[i];L(this,on)&&((r=L(this,en))==null||r.call(this,s,o,t)),L(this,ur)&&((n=L(this,Wt))==null||n.push([s,o,t]))}}if(L(this,Dt).clear(),L(this,Le).fill(void 0),L(this,ft).fill(void 0),L(this,Or)&&L(this,sn)&&(L(this,Or).fill(0),L(this,sn).fill(0)),L(this,an)&&L(this,an).fill(0),Be(this,ar,0),Be(this,$t,0),L(this,nn).length=0,Be(this,rn,0),Be(this,It,0),L(this,ur)&&L(this,Wt)){const i=L(this,Wt);let s;for(;s=i==null?void 0:i.shift();)(a=L(this,tn))==null||a.call(this,...s)}};let al=Zc;const Ps=new al({max:500,maxSize:5e3,ttl:1e3*60*30,sizeCalculation:(e,t)=>1}),{UnMergeable:z1}=Ze();function G1(e){Gf=e}let Gf=async e=>(De.warn("请配置 app.use(FsCrud,{dictRequest:(context)=>{ 你的字典请求方法 }})"),[]);class il extends z1{constructor(r){super();Te(this,"cache",!1);Te(this,"prototype",!1);Te(this,"immediate",!0);Te(this,"url");Te(this,"getData");Te(this,"value","value");Te(this,"label","label");Te(this,"labelBuilder");Te(this,"children","children");Te(this,"color","color");Te(this,"isTree",!1);Te(this,"_data",null);Te(this,"originalData");Te(this,"dataMap",{});Te(this,"loading",!1);Te(this,"custom",{});Te(this,"getNodesByValues");Te(this,"onReady");Te(this,"notifies",[]);Te(this,"_unfetchValues",{});Object.defineProperty(this,"loading",{value:!1,enumerable:!1}),Object.defineProperty(this,"notifies",{value:!1,enumerable:!1}),Object.defineProperty(this,"originalData",{value:null,enumerable:!1}),this.loading=!1,X.merge(this,r),r.data!=null&&(this.originalData=r.data,this.setData(r.data)),this.toMap()}get data(){return this._data}set data(r){this._data=r,this.toMap()}isDynamic(){return this.url instanceof Function||this.getData instanceof Function||this.prototype}setData(r){this.data=r}async _loadDict(r){if(this.data&&!r.reload)return this.data;if(this.loading)return this._registerNotify();let n=null;if(this.getNodesByValues){if(r.value){let a=null;this.cache&&this.url&&(a=this.url+r.value);let i=null;if(a&&(i=Ps.get(a)),i)n=i;else{const s=Array.isArray(r.value)?r.value:[r.value];if(n=await this.getNodesByValues(s,r),n!=null&&!(n instanceof Array)){De.error("getNodesByValues需要返回数组,当前返回值:",n);return}a&&Ps.set(a,n)}}}else if(this.originalData)n=this.originalData;else{this.loading=!0;try{n=await this.getRemoteDictData(r)}finally{this.loading=!1}}this.data=n,this.onReady&&this.onReady({dict:this,...r}),this._triggerNotify()}_triggerNotify(){this.notifies&&this.notifies.length>0&&(X.forEach(this.notifies,r=>{r(this.data)}),this.notifies.length=0)}_registerNotify(){let r=null;const n=new Promise(a=>{r=i=>{a(i)}});return this.notifies||(this.notifies=[]),this.notifies.push(r),n}async loadDict(r){return await this._loadDict({...r})}async reloadDict(r){return await this.loadDict({...r,reload:!0})}async appendByValues(r){if(this.getNodesByValues==null){De.warn("请配置getNodesByValues");return}for(const a of r)this.dataMap[a]||this._unfetchValues[a]||(this._unfetchValues[a]={loading:!1,value:a});await l.nextTick(),await l.nextTick(),await l.nextTick();const n=[];if(X.forEach(this._unfetchValues,a=>{a.loading||(a.loading=!0,n.push(a.value))}),n.length>0){const a=await this.getNodesByValues(n);this.setData([...this.data||[],...a]);for(const i of n)delete this._unfetchValues[i];return Object.keys(this._unfetchValues).length===0&&this._triggerNotify(),this.data}else return this._registerNotify()}clear(){this.originalData=null,this.setData(null)}async getRemoteDictData(r){let n,a,i;if(this.url&&(i=this.url,i instanceof Function&&(i=i({...r,dict:this})),a=i),this.getData!=null)n=async()=>{const s=await this.getData({url:i,dict:this,...r});return Array.isArray(s)?s:[]};else if(i)n=async()=>{const s=await Gf({url:i,dict:this});return Array.isArray(s)?s:[]};else return[];if(this.cache&&a){let s=Ps.get(a);if(s==null)s={loaded:!1,loading:!0,data:void 0,callback:[]},Ps.set(a,s);else{if(s.loaded)return s.data;if(s.loading)return new Promise(o=>{const c=f=>{o(f)};s.callback.push(c)})}try{s.loaded=!1,s.loading=!0;let o=await n();o=o||[],o instanceof Array||De.warn("dict data 格式有误,期望格式为数组,实际格式为:",o),s.data=o,s.loaded=!0,s.loading=!1;for(const c of s.callback)c(o);return s.callback=[],o}catch(o){s.loading=!1,s.loaded=!1,De.error("load dict error:",o)}}return await n()}toMap(){if(this._data==null){this.dataMap={};return}const r={};this.data&&this.buildMap(r,this.data||[]),this.dataMap=r}buildMap(r,n){X.forEach(n,a=>{r[this.getValue(a)]=a,this.isTree&&this.getChildren(a)&&this.buildMap(r,this.getChildren(a))})}getValue(r){return r[this.value]}getLabel(r){return this.labelBuilder?this.labelBuilder(r):r[this.label]}getChildren(r){return r[this.children]}getColor(r){return r[this.color]}getDictData(){return this.data}getDictMap(){return this.dataMap}getNodeByValue(r){return this.dataMap[r]}getNodesFromDataMap(r){if(r==null)return[];X.isArray(r)||(r=[r]);const n=[];return X.forEach(r,a=>{const i=this.dataMap[a];i?n.push(i):n.push({[this.value]:a})}),n}}function Xf(e){const t=l.shallowReactive(new il(e));return!t.prototype&&t.immediate&&t.loadDict(),t}function Kf(){return{dict:Xf,setDictRequest:G1,Dict:il}}function X1(){return{addTypes:La.addTypes,getType:La.getType,getTypes:La.getTypes,install:La.install}}async function K1(e){await l.nextTick();const t=e.getModal();if(t==null)return;const r=t.querySelector(".ant-modal-header");if(r==null)return;const n=t,i=t.style;r.style.cursor="move",r.onmousedown=s=>{const o=s.clientX,c=s.clientY;n.style.transform="translate(0px, 0px)";let f,u;i.left.includes("%")?(f=+document.body.clientWidth*(+i.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+i.top.replace(/%/g,"")/100)):(f=+i.left.replace(/px/g,""),u=+i.top.replace(/px/g,""),u=u===0?100:u),document.onmousemove=function(d){const h=d.clientX-o,m=d.clientY-c;n.style.left=`${h+f}px`,n.style.top=`${m+u}px`},document.onmouseup=function(d){document.onmousemove=null,document.onmouseup=null}}}async function Y1(e){await l.nextTick();const t=e.getModal();if(t==null)return;const r=t.querySelector(".n-card-header");if(r==null)return;const n=t,i=t.style;r.style.cursor="move",r.onmousedown=s=>{const o=s.clientX,c=s.clientY;n.style.transform="translate(0px, 0px)";let f,u;i.left.includes("%")?(f=+document.body.clientWidth*(+i.left.replace(/%/g,"")/100),u=+document.body.clientHeight*(+i.top.replace(/%/g,"")/100)):(f=+i.left.replace(/px/g,""),u=+i.top.replace(/px/g,"")),document.onmousemove=async function(d){if(d.clientX==0&&d.clientY==0)return;const h=d.clientX-o,m=d.clientY-c;n.style.left=`${h+f}px`,n.style.top=`${m+u}px`},document.onmouseup=function(d){document.onmousemove=null,document.onmouseup=null}}}async function q1(e){const{ui:t}=ue.useUi();t.type==="antdv"?await K1(e):t.type==="element"||await Y1(e)}function Yf(){return{dragModal:q1}}const qf={logger:{off:{tableColumns:!1}}},J1=l.defineComponent({name:"FsContainer",props:{fixedHeight:{type:Boolean,default:!0},bodyStyle:{type:Object,default:()=>({})},innerStyle:{type:Object,default:()=>({})}},setup(e,t){const{merge:r}=Ze(),n=l.computed(()=>e.fixedHeight===!1?r({position:"relative"},e.innerStyle):e.innerStyle),a=l.computed(()=>e.fixedHeight===!1?r({flex:"unset"},e.bodyStyle):e.bodyStyle);return{computedInnerStyle:n,computedBodyStyle:a}}}),hD="",Z1={class:"fs-container"},Q1={class:"box"},eg={class:"header"},tg={class:"footer"};function rg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",Z1,[l.createElementVNode("div",Q1,[l.createElementVNode("div",{class:"inner",style:l.normalizeStyle(e.computedInnerStyle)},[l.createElementVNode("div",eg,[l.renderSlot(e.$slots,"header")]),l.createElementVNode("div",{class:"body",style:l.normalizeStyle(e.computedBodyStyle)},[l.renderSlot(e.$slots,"default")],4),l.createElementVNode("div",tg,[l.renderSlot(e.$slots,"footer")])],4)]),l.renderSlot(e.$slots,"box")])}const Jf=rt(J1,[["render",rg]]),ng=l.defineComponent({name:"FsLayoutDefault"}),mD="",ag={class:"fs-crud-header"},ig={class:"fs-header-top"},sg={class:"fs-header-middle"},og={class:"fs-header-bottom"},lg={class:"fs-crud-footer"};function cg(e,t,r,n,a,i){const s=l.resolveComponent("fs-container");return l.openBlock(),l.createBlock(s,{class:"fs-layout-default"},{header:l.withCtx(()=>[l.createElementVNode("div",ag,[l.createElementVNode("div",ig,[l.renderSlot(e.$slots,"header-top")]),l.renderSlot(e.$slots,"search"),l.createElementVNode("div",sg,[l.renderSlot(e.$slots,"header-middle")]),l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar"),l.createElementVNode("div",og,[l.renderSlot(e.$slots,"header-bottom")]),l.renderSlot(e.$slots,"tabs")])]),footer:l.withCtx(()=>[l.createElementVNode("div",lg,[l.renderSlot(e.$slots,"footer-top"),l.renderSlot(e.$slots,"pagination"),l.renderSlot(e.$slots,"footer-bottom")])]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default"),l.renderSlot(e.$slots,"table"),l.renderSlot(e.$slots,"form")]),_:3})}const Zf=rt(ng,[["render",cg]]),fg=l.defineComponent({name:"FsLayoutCard",setup(){const e=l.inject("get:crudBinding"),t=l.computed(()=>{var a,i;return e==null?!0:(i=(a=e())==null?void 0:a.search)==null?void 0:i.show}),{ui:r}=ue.useUi(),n=l.ref(r.card.name);return{searchShow:t,cardComponentName:n}}}),pD="",ug={class:"fs-header-top"},dg={class:"fs-header-bottom"},hg={class:"top-bar"},mg={class:"top-bar"},pg={class:"fs-crud-footer"};function gg(e,t,r,n,a,i){const s=l.resolveComponent("fs-container");return l.openBlock(),l.createBlock(s,{class:"fs-layout-card"},{header:l.withCtx(()=>[l.createElementVNode("div",ug,[l.renderSlot(e.$slots,"header-top")]),e.searchShow?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.cardComponentName),{key:0},{default:l.withCtx(()=>[l.renderSlot(e.$slots,"search")]),_:3})):l.createCommentVNode("",!0),l.createElementVNode("div",dg,[l.renderSlot(e.$slots,"header-bottom")])]),default:l.withCtx(()=>[l.createVNode(s,null,{header:l.withCtx(()=>[l.renderSlot(e.$slots,"tabs")]),default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.cardComponentName),{class:"fs-layout-card-body"},{title:l.withCtx(()=>[l.createElementVNode("div",hg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),header:l.withCtx(()=>[l.createElementVNode("div",mg,[l.renderSlot(e.$slots,"actionbar"),l.renderSlot(e.$slots,"toolbar")])]),default:l.withCtx(()=>[l.createVNode(s,null,{footer:l.withCtx(()=>[l.createElementVNode("div",pg,[l.renderSlot(e.$slots,"footer-top"),l.renderSlot(e.$slots,"pagination"),l.renderSlot(e.$slots,"footer-bottom")])]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default"),l.renderSlot(e.$slots,"table"),l.renderSlot(e.$slots,"form")]),_:3})]),_:3}))]),_:3})]),_:3})}const Qf=rt(fg,[["render",gg]]),gD="";function xg(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const e0=l.defineComponent({name:"FsButton",inheritAttrs:!1,props:{text:{type:String,default:"",required:!1},icon:{type:[String,Object,Function],default:"",required:!1},iconRight:{type:[String,Object,Function],default:"",required:!1},circle:{type:Boolean,default:!1,required:!1},tooltip:{type:Object,default:void 0},buttonProps:{type:Object,default:void 0},className:{}},setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Ze(),a=(f,u="fs-button-icon")=>{if(f!=null)return typeof f=="string"?l.createVNode(l.resolveComponent("fs-icon"),{icon:f,class:u},null):typeof f=="function"?f():l.createVNode(l.resolveComponent("fs-icon"),l.mergeProps(f,{class:u}),null)},i=()=>{const f=e.icon,u=e.iconRight,d=r.type!=="element",h=!d;let m;const g={...t.slots};(f&&!d&&!h||t.slots.default||e.text||u)&&(g.default=()=>{const y=[];return f&&!d&&!h&&y.push(a(f)),t.slots.default&&y.push(t.slots.default()),e.text&&y.push(e.text),u&&y.push(a(u,"fs-button-icon-right")),y}),f&&(d&&!g.icon?g.icon=()=>a(f):h&&!g.icon&&(m=a(f)));const p=e.circle?r.button.circle:{},x=l.resolveDynamicComponent(r.button.name),v=n({...p,class:{"fs-button":!0,"is-thin":!e.text&&!t.slots.default}},{class:e.className,...t.attrs,...e.buttonProps});return m&&(v.icon=m),l.h(x,v,g)};if(!e.tooltip)return i;const s=l.resolveDynamicComponent(r.tooltip.name),o=l.computed(()=>X.omit(e.tooltip,"slots")),c=r.tooltip.trigger;return()=>{var u;const f={...(u=e.tooltip)==null?void 0:u.slots,[c]:i};return l.createVNode(s,o.value,xg(f)?f:{default:()=>[f]})}}}),t0=l.defineComponent({name:"FsIcon",inheritAttrs:!1,props:{icon:{type:String,default:void 0,require:!0}},setup(e,t){const{ui:r}=ue.useUi(),n=l.computed(()=>{var i;if(e.icon&&((i=e.icon)==null?void 0:i.indexOf(":"))>=0){if(e.icon.startsWith("svg:")){const o=l.resolveDynamicComponent("FsIconSvg");return()=>{const c=e.icon.replace("svg:","");return l.createVNode(o,l.mergeProps({class:"fs-icon",icon:c},t.attrs),null)}}const s=l.resolveDynamicComponent("FsIconify");return()=>l.createVNode(s,l.mergeProps({class:"fs-icon",icon:e.icon},t.attrs),null)}const a=l.resolveDynamicComponent(e.icon);return typeof a=="string"?()=>l.createVNode("span",{title:"error icon name"},[a]):r.icon.isComponent?()=>l.createVNode(a,l.mergeProps({class:"fs-icon"},t.attrs),null):()=>l.createVNode(l.resolveComponent("el-icon"),l.mergeProps({class:"fs-icon"},t.attrs),{default:()=>[l.createVNode(a,null,null)]})});return()=>n.value()}}),vg=l.defineComponent({name:"FsIconify",components:{Icon:sp.Icon},props:{icon:{type:String},spin:{type:Boolean,default:!1}},setup(e,t){return{iconifyRef:l.ref(null)}}}),xD="";function wg(e,t,r,n,a,i){const s=l.resolveComponent("Icon");return l.openBlock(),l.createElementBlock("span",{class:l.normalizeClass(["fs-iconify",{"fs-iconify-spin":e.spin}])},[l.createVNode(s,{ref:"iconifyRef",icon:e.icon,inline:!0},null,8,["icon"])],2)}const r0=rt(vg,[["render",wg]]),_g=l.defineComponent({name:"FsSvgIcon",props:{icon:{type:String,required:!0},size:{type:[Number,String],default:16},spin:{type:Boolean,default:!1}},setup(e){const t=l.computed(()=>`#${e.icon}`),r=l.computed(()=>{const{size:n}=e;let a=`${n}`;return a=`${a.replace("px","")}px`,{width:a,height:a}});return{symbolId:t,getStyle:r}}}),vD="",yg={class:"fs-icon-svg-content","aria-hidden":"true"},kg=["xlink:href"];function bg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",{class:l.normalizeClass(["fs-icon-svg",e.spin&&"fs-icon-spin"])},[(l.openBlock(),l.createElementBlock("svg",yg,[l.createElementVNode("use",{"xlink:href":e.symbolId},null,8,kg)]))],2)}const n0=rt(_g,[["render",bg]]),Eg=l.defineComponent({name:"FsLabel",props:{label:{type:String,default:""},labelAttrs:{type:Object,default:()=>({})},contentAttrs:{type:Object,default:()=>({})}}}),wD="",Sg={class:"fs-label"};function Cg(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",Sg,[l.createElementVNode("div",l.mergeProps({class:"label"},e.labelAttrs),[l.createTextVNode(l.toDisplayString(e.label)+" ",1),l.renderSlot(e.$slots,"label")],16),l.createElementVNode("div",l.mergeProps({class:"content"},e.contentAttrs),[l.renderSlot(e.$slots,"default")],16)])}const a0=rt(Eg,[["render",Cg]]),Tg={key:0,class:"fs-loading"},Fg={key:0},Ag=l.defineComponent({name:"FsLoading"}),i0=l.defineComponent({...Ag,props:{loading:{type:Boolean},icon:{},text:{}},setup(e){const{ui:t}=ue.useUi();return(r,n)=>{const a=l.resolveComponent("fs-icon");return r.loading?(l.openBlock(),l.createElementBlock("div",Tg,[l.createVNode(a,{class:"fs-icon-spin",icon:r.icon??l.unref(t).icons.refresh},null,8,["icon"]),r.text?(l.openBlock(),l.createElementBlock("span",Fg,l.toDisplayString(r.text),1)):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)}}}),_D="",Dg=l.defineComponent({name:"FsBox"}),Rg={class:"fs-box"};function Og(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("div",Rg,[l.renderSlot(e.$slots,"default")])}const s0=rt(Dg,[["render",Og]]);function Bg(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}function o0(e,t){if(e[t]instanceof Array){const r=e[t];e[t]=n=>{for(const a of r)a(n)}}}const Ng=["div","span","a","p","pre","li","ol","ul"],l0=l.defineComponent({name:"FsComponentRender",inheritAttrs:!1,props:{modelValue:{},name:{},slots:{type:Object},children:{type:Object},on:{type:Object},events:{type:Object},scope:{type:Object},vModel:{type:[String,Object]},props:{},render:{},undefineToNull:{type:Boolean,default:!0}},emits:["update:dict","update:modelValue","mounted"],setup(e,t){mr.trace("fs-component-render");const{ui:r}=ue.useUi(),{merge:n}=Ze();l.provide("get:scope",()=>e.scope),l.onMounted(()=>{t.emit("mounted",e.scope)});const a=l.ref(),i=l.computed(()=>{const m={name:"modelValue",trim:!1,number:!1,transform:void 0};e.vModel&&(typeof e.vModel=="string"?m.name=e.vModel:n(m,e.vModel));const g=e.modelValue??(r.type==="antdv"?void 0:null),p="onUpdate:"+m.name,x={ref:a,[m.name]:g,[p]:y=>{if(y&&(m.trim&&(y=y.trim()),m.number)){const w=Number(y);isNaN(w)||(y=w)}m.transform&&(y=m.transform(y)),y===void 0&&e.undefineToNull&&(y=null),t.emit("update:modelValue",y)},...e.props},v={...e.events,...e.on};return X.forEach(v,(y,w)=>{const E=y;w.startsWith("on")||(w=X.camelCase("on_"+w)),x[w]=R=>E({...e.scope,$event:R})}),x}),s=()=>{const m={},g=(p,x)=>{p instanceof Function?m[x]=v=>p({...e.scope,scope:v}):m[x]=()=>p};return X.forEach(e.children,g),X.forEach(e.slots,g),m},o=l.computed(()=>{const m={isAsyncComponent:!1,component:l.unref(e.name)||r.input.name};let g=m.component;return Ng.includes(g)||(typeof g=="string"&&(g=l.resolveComponent(g)),(g==null?void 0:g.name)==="AsyncComponentWrapper"&&(m.isAsyncComponent=!0)),m.component=g,m}),c=s;function f(){return o.value.isAsyncComponent?d():u()}function u(){return a.value}async function d(){const m=u();return m??new Promise((g,p)=>{h(g,p,0)})}function h(m,g,p){setTimeout(()=>{const x=u();if(x!=null){m(x);return}if(p++,p>20){g(new Error("异步组件加载超时"));return}h(m,g,p)},200)}return t.expose({props:e,getTargetRefSync:u,getTargetRef:f,getTargetRefAsync:d}),()=>{let m;const g=l.mergeProps(i.value,t.attrs);if(o0(g,"onChange"),o0(g,"onBlur"),e.render)return e.render({...e.scope,attrs:g});const p=l.markRaw(o.value.component);return l.createVNode(p,g,Bg(m=c())?m:{default:()=>[m]})}}}),c0=l.defineComponent({name:"FsSlotRender",inheritAttrs:!1,props:{slots:{type:Function},scope:{type:Object}},setup(e){return mr.trace("fs-slot-render"),()=>e.slots(e.scope)}}),sl=l.defineComponent({name:"FsRender",functional:!0,props:{renderFunc:{type:Function},scope:{type:Object}},setup(){mr.trace("fs-render")},render(){return this.renderFunc(this.scope)}}),Ig=l.defineComponent({name:"FsForm",props:{initialForm:{type:Object,default(){return{}}},columns:{type:Object,default:void 0},group:{type:Object,default:void 0},doReset:{type:Function,default:void 0},beforeValidate:{type:Function,default:void 0},beforeSubmit:{type:Function,default:void 0},doSubmit:{type:Function,default:void 0},afterSubmit:{type:Function,default:void 0},slots:{type:Object,default:()=>({})},display:{type:String,default:"flex"},index:{type:Number,default:void 0},mode:{type:String,default:void 0},row:{type:Object,default:void 0},col:{type:Object,default:void 0},formItem:{type:Object,default:void 0},helper:{type:Object},watch:{type:Function,default:null}},emits:["reset","submit","success","validationError","value-change","init"],setup(e,t){var D,_;const{merge:r}=Ze(),{ui:n}=ue.useUi(),{AsyncComputeValue:a,doComputed:i}=Nr(),s=l.ref(),o=l.reactive({}),{proxy:c}=l.getCurrentInstance();mr.trace("fs-form"),X.each(e.columns,k=>{k.value!=null&&(k.value instanceof a||k.value instanceof yi)&&De.warn("form.value配置不支持Compute/AsyncCompute类型的动态计算")});function f(){const k={};return X.each(e.columns,(b,A)=>{const G=l.unref(b.value);G!==void 0&&X.set(k,A,G)}),r(k,X.cloneDeep(e.initialForm)),k}const u=f();x(u);const d=l.computed(()=>({row:u,form:o,index:e.index,mode:e.mode||"add",attrs:t.attrs,getComponentRef:F}));function h(){return d.value}const m=l.computed(()=>e.columns);function g(k){k!=null&&X.each(e.columns,(b,A)=>{let G=X.get(k,A);b.valueBuilder&&b.valueBuilder({value:G,key:A,row:u,form:k,index:e.index,mode:e.mode})})}function p(){return o}function x(k,b={}){if(g(k),b.mergeForm===!1)for(const G in o)delete o[G];r(o,k);const{valueChange:A}=b;A&&X.forEach(e.columns,(G,re)=>{const ee=o[re];w(re,ee)})}function v(...k){return r({},e.col,...k)}function y(k){return{key:k.key,...d.value}}function w(k,b){const A={key:k,value:b,formRef:c,...d.value,immediate:!1};t.emit("value-change",A);let G=e.columns[k].valueChange;G&&(G instanceof Function?G(A):G.handle&&G.handle(A))}const E=l.ref({});function R(k){return E.value[k].getFormItemRef()}function F(k,b=!1){var A;return(A=R(k))==null?void 0:A.getComponentRef(b)}const C=l.ref([]);X.forEach((D=e.group)==null?void 0:D.groups,(k,b)=>{k.collapsed!==!0&&C.value.push(b)}),((_=e.group)==null?void 0:_.groupType)==="tabs"&&(C.value=C.value.length>0?C.value[0]:null);const U=i(()=>e.group,h,null,(k={})=>{const b={};X.forEach(k==null?void 0:k.groups,(re,ee)=>{X.forEach(re.columns,te=>{if(m.value[te]==null){mr.logger.warn("无效的分组字段:"+te);return}b[te]=ee})});const A=k.groupType;let G={parent:n.collapse.name,child:n.collapseItem.name};return A==="tabs"&&(G.parent=n.tabs.name,G.child=n.tabPane.name),r({wrapper:G,groupedKeys:b},k)}),S=l.computed(()=>{const k=[];return X.forEach(m.value,(b,A)=>{var re,ee;const G=X.cloneDeep(e.formItem||{});b=r(G,b),b.key=A,b.order==null&&(b.order=Un.orderDefault),(((re=U.value)==null?void 0:re.groupedKeys)==null||((ee=U.value)==null?void 0:ee.groupedKeys[A])==null)&&k.push(b),b.col=v(b.col)}),k.sort((b,A)=>b.order-A.order),k});function W(){return s.value}async function z(){const k=f(),b=X.entries(o);for(const A of b){const G=X.get(k,A[0]);G==null?X.unset(o,A[0]):X.set(o,A[0],G)}e.doReset&&await e.doReset(d.value),t.emit("reset")}const V=l.ref(),j=l.ref({});function H(k){var b,A;if((b=U.value)!=null&&b.groupedKeys)for(let G in k){const re=(A=U.value)==null?void 0:A.groupedKeys[G];re!=null&&(k["group."+re]=!0)}}async function Y(){const k={...d.value,form:o};if(k.mode!=="view"){if(e.beforeValidate&&await e.beforeValidate(k)===!1)return!1;try{j.value={},await n.form.validateWrap(s.value),V.value=!0}catch(b){V.value=!1;const A=n.form.transformValidateErrors(b);throw H(A),j.value=A,t.emit("validationError",d.value),b}}}async function ae(){await Y();const k=X.cloneDeep(l.toRaw(o)),b={...d.value,form:k};if(De.debug("form submit",JSON.stringify(o)),X.each(e.columns,(A,G)=>{let re=X.get(k,G);A.valueResolve&&A.valueResolve({value:re,key:G,...b})}),e.beforeSubmit&&await e.beforeSubmit(b)===!1)return!1;if(X.each(e.columns,(A,G)=>{A.submit===!1?X.unset(k,G):A.submit===!0&&X.set(k,G,k[G])}),e.doSubmit){const A=await e.doSubmit(b);if(b.res=A,A===!1)return!1}return t.emit("submit",b),e.afterSubmit&&await e.afterSubmit(b)===!1?!1:(t.emit("success",b),b)}l.onMounted(()=>{X.forEach(m.value,(k,b)=>{if(k.valueChange==null)return;let A=k.valueChange;if(A&&A.immediate===!0&&A.handle){const G={key:b,value:o[b],formRef:c,...d.value,immediate:!0};A.handle&&A.handle(G)}})});function se(k){return!!(k&&l.unref(k.show)!==!1)}function de(k){if(!k.columns||l.unref(k.show)===!1)return!1;for(let b of k.columns){if(m.value[b]==null)continue;if(se(m.value[b]))return!0}return!1}e.watch&&l.watch(()=>o,(k,b)=>{e.watch&&e.watch(d.value)},{deep:!0,immediate:!0});function K(){const k=JSON.stringify(u),b=JSON.stringify(o);return k!==b}const we=l.computed(()=>r({},e.slots,t.slots));return t.emit("init",d.value),{get:(k,b)=>X.get(k,b),set:(k,b,A)=>{X.set(k,b,A),w(b,A)},ui:n,validRef:V,errorsRef:j,formRef:s,computedColumns:m,computedDefaultColumns:S,submit:ae,reset:z,getFormRef:W,scope:d,buildItemScope:y,groupActiveKey:C,form:o,formItemRefs:E,getFormData:p,setFormData:x,getComponentRef:F,mergeCol:v,validate:Y,computedGroup:U,getContextFn:h,formItemShow:se,groupItemShow:de,isDirty:K,mergedSlots:we}}}),yD="";function Pg(e,t,r,n,a,i){const s=l.resolveComponent("fs-form-item-col"),o=l.resolveComponent("fs-render");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),{ref:"formRef",class:l.normalizeClass(["fs-form",{"fs-form-grid":e.display==="grid","fs-form-flex":e.display==="flex","fs-form-invalid":e.validRef===!1}]),onsubmit:"event.preventDefault();",model:e.form},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),l.mergeProps({class:"fs-row"},e.row),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedDefaultColumns,c=>(l.openBlock(),l.createBlock(s,{key:c==null?void 0:c.key,ref_for:!0,ref:f=>{f&&(e.formItemRefs[c.key]=f)},col:e.mergeCol(c.col),item:c,helper:e.helper,"model-value":e.get(e.form,c.key),slots:e.mergedSlots["form_"+c.key],"get-context-fn":e.getContextFn,"onUpdate:modelValue":f=>e.set(e.form,c.key,f)},null,8,["col","item","helper","model-value","slots","get-context-fn","onUpdate:modelValue"]))),128))]),_:1},16)),e.computedGroup.wrapper?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedGroup.wrapper.parent),l.mergeProps({key:0,[e.ui.collapse.modelValue]:e.groupActiveKey,["onUpdate:"+e.ui.collapse.modelValue]:t[0]||(t[0]=c=>e.groupActiveKey=c),style:{width:"100%"}},e.computedGroup),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedGroup.groups,(c,f)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:f},[e.groupItemShow(c)?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedGroup.wrapper.child),l.mergeProps({key:0,[e.ui.collapse.keyName||""]:f},{ref_for:!0},c,{class:{"fs-form-group-error":e.errorsRef["group."+f]}}),l.createSlots({default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),l.mergeProps({class:"fs-row"},{ref_for:!0},e.row),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(c.columns,u=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[e.computedColumns[u]?(l.openBlock(),l.createBlock(s,{key:0,ref_for:!0,ref:d=>{d&&(e.formItemRefs[u]=d)},col:e.mergeCol(e.computedColumns[u].col),item:e.computedColumns[u],"model-value":e.get(e.form,u),slots:e.mergedSlots["form_"+u],"get-context-fn":e.getContextFn,helper:e.helper,"onUpdate:modelValue":d=>e.set(e.form,u,d)},null,8,["col","item","model-value","slots","get-context-fn","helper","onUpdate:modelValue"])):l.createCommentVNode("",!0)],64))),128))]),_:2},1040))]),_:2},[l.renderList(c.slots,(u,d)=>({name:d,fn:l.withCtx(h=>[l.createVNode(o,{"render-func":u,scope:{...h,hasError:e.errorsRef["group."+f]}},null,8,["render-func","scope"])])}))]),1040,["class"])):l.createCommentVNode("",!0)],64))),128))]),_:1},16)):l.createCommentVNode("",!0)]),_:1},8,["class","model"])}const f0=rt(Ig,[["render",Pg]]),Mg=l.defineComponent({name:"FsFormItem",components:{FsRender:sl},props:{modelValue:{},item:{type:Object,default:void 0},formSlot:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},helper:{type:[String,Object]}},emits:["update:modelValue"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Ze(),a=l.ref();mr.trace("fs-form-item");const i=()=>{const p=e.getContextFn?e.getContextFn():{};return{value:e.modelValue,key:e.item.key,...p}};function s(p){t.emit("update:modelValue",p)}function o(p=!1){var x,v;return p?(x=a.value)==null?void 0:x.getTargetRefAsync():(v=a.value)==null?void 0:v.getTargetRef()}const c=l.computed(()=>{const p={...e.item};return delete p.title,delete p.label,p}),f=l.computed(()=>{var p,x,v;return((x=(p=e.item)==null?void 0:p.helper)==null?void 0:x.position)||((v=e.helper)==null?void 0:v.position)}),u=l.computed(()=>{var p,x;return n({},(p=e.item.helper)==null?void 0:p.tooltip,(x=e.helper)==null?void 0:x.tooltip)}),d=l.computed(()=>{if(e.item!=null)return e.item.key.indexOf(".")>=0?e.item.key.split("."):e.item.key}),h=l.computed(()=>e.item.label||e.item.title),m=l.computed(()=>h.value instanceof Function);return{ui:r,updateModelValue:s,scopeFunc:i,getComponentRef:o,componentRenderRef:a,computedHelperPosition:f,computedHelperTooltip:u,computedKey:d,computedLabelIsRender:m,computedLabel:h,computedLabelRender:()=>h.value(i()),computedItem:c}}}),kD="",Lg={key:0,class:"fs-form-item-label-text"},Vg=["title"],Ug={class:"fs-form-helper-tooltip"},$g={class:"fs-form-item-label-icon"},Wg={class:"fs-form-item-content"},Hg={class:"fs-form-item-render"},jg={class:"fs-form-item-component"};function zg(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-form-helper"),c=l.resolveComponent("fs-icon"),f=l.resolveComponent("fs-slot-render"),u=l.resolveComponent("fs-component-render");return e.computedItem?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.mergeProps({key:0,class:"fs-form-item",[e.ui.formItem.prop||""]:e.computedKey},e.computedItem,{path:e.computedItem.key,"rule-path":e.computedItem.key}),{label:l.withCtx(()=>[e.computedLabelIsRender?(l.openBlock(),l.createElementBlock("span",Lg,[l.createVNode(s,{"render-func":e.computedLabelRender},null,8,["render-func"])])):(l.openBlock(),l.createElementBlock("span",{key:1,class:"fs-form-item-label-text",title:e.computedLabel},l.toDisplayString(e.computedLabel),9,Vg)),e.computedItem.helper&&e.computedHelperPosition==="label"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.tooltip.name),l.normalizeProps(l.mergeProps({key:2},e.computedHelperTooltip)),{[e.ui.tooltip.content]:l.withCtx(()=>[l.createElementVNode("span",Ug,[l.createVNode(o,{helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])])]),[e.ui.tooltip.trigger]:l.withCtx(()=>[l.createElementVNode("span",$g,[l.createVNode(c,{class:"fs-form-item-label-icon-inner",icon:e.ui.icons.question},null,8,["icon"])])]),_:2},1040)):l.createCommentVNode("",!0)]),default:l.withCtx(()=>{var d;return[l.createElementVNode("div",Wg,[e.computedItem.topRender?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.topRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),l.createElementVNode("div",Hg,[e.computedItem.prefixRender?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.prefixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),l.createElementVNode("div",jg,[e.formSlot?(l.openBlock(),l.createBlock(f,{key:0,slots:e.formSlot,scope:e.scopeFunc()},null,8,["slots","scope"])):((d=e.computedItem.component)==null?void 0:d.show)!==!1?(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[e.computedItem.conditionalRender&&e.computedItem.conditionalRender.match&&e.computedItem.conditionalRender.match(e.scopeFunc())?(l.openBlock(),l.createBlock(s,{key:0,"render-func":e.computedItem.conditionalRender.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):e.computedItem.render?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.render,scope:e.scopeFunc()},null,8,["render-func","scope"])):(l.openBlock(),l.createBlock(u,l.mergeProps({key:2,ref:"componentRenderRef"},e.computedItem.component,{"model-value":e.modelValue,scope:e.scopeFunc(),"onUpdate:modelValue":e.updateModelValue}),null,16,["model-value","scope","onUpdate:modelValue"]))],64)):l.createCommentVNode("",!0)]),e.computedItem.suffixRender?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.suffixRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0)]),e.computedItem.bottomRender?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.computedItem.bottomRender,scope:e.scopeFunc()},null,8,["render-func","scope"])):l.createCommentVNode("",!0),e.computedItem.helper&&e.computedHelperPosition!=="label"?(l.openBlock(),l.createBlock(o,{key:2,helper:e.computedItem.helper,scope:e.scopeFunc()},null,8,["helper","scope"])):l.createCommentVNode("",!0)])]}),_:1},16,["path","rule-path"])):l.createCommentVNode("",!0)}const u0=rt(Mg,[["render",zg]]),d0=l.defineComponent({__name:"fs-form-item-col",props:{item:{type:Object,default:void 0},slots:{type:Function,default:void 0},getContextFn:{type:Function,default:void 0},col:{type:Object,default:()=>({})},helper:{type:[String,Object],default:void 0}},setup(e,{expose:t}){const{ui:r}=ue.useUi(),n=e,{doComputed:a}=Nr(),i=a(()=>n.item,()=>n.getContextFn()),s=l.useAttrs(),o=l.ref();function c(){return o.value}return t({getFormItemRef:c}),(f,u)=>{var h;const d=l.resolveComponent("fs-form-item");return l.unref(i)&&l.unref(i).show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(r).col.name),l.mergeProps({key:0,class:"fs-col"},l.unref(X.merge)(e.col,(h=l.unref(i))==null?void 0:h.col)),{default:l.withCtx(()=>{var m;return[l.unref(i)&&((m=l.unref(i))==null?void 0:m.blank)!==!0?(l.openBlock(),l.createBlock(d,l.mergeProps({key:0,ref_key:"formItemRef",ref:o,item:l.unref(i),"form-slot":e.slots,"get-context-fn":e.getContextFn,helper:e.helper},l.unref(s)),null,16,["item","form-slot","get-context-fn","helper"])):l.createCommentVNode("",!0)]}),_:1},16)):l.createCommentVNode("",!0)}}}),bD="",Gg=l.defineComponent({name:"FsFormHelper",props:{helper:{type:[Object,String]},scope:{}},setup(e){mr.trace("fs-form-item")}}),ED="",Xg={class:"fs-form-helper"},Kg={key:0},Yg={key:2};function qg(e,t,r,n,a,i){const s=l.resolveComponent("fs-render");return l.openBlock(),l.createElementBlock("div",Xg,[typeof e.helper=="string"?(l.openBlock(),l.createElementBlock("pre",Kg,l.toDisplayString(e.helper),1)):e.helper.render?(l.openBlock(),l.createBlock(s,{key:1,"render-func":e.helper.render,scope:e.scope},null,8,["render-func","scope"])):e.helper.text?(l.openBlock(),l.createElementBlock("pre",Yg,l.toDisplayString(e.helper.text),1)):l.createCommentVNode("",!0)])}const h0=rt(Gg,[["render",qg]]),SD="";function Jg(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Object]"&&!l.isVNode(e)}const $a=l.defineComponent({name:"FsFormWrapper",props:{options:{},slots:{},inner:{},innerWrapper:{},id:{},zIndex:{}},emits:["reset","submit","validationError","value-change","open","opened","mounted","closed","inner-change"],setup(e,t){var I;mr.trace("fs-form-wrapper");const{t:r}=Kt(),{merge:n}=Ze(),a=l.ref(!1),i=l.ref(),s=l.ref(),o=l.ref(),c=l.ref(),f=l.ref(),u=l.ref(!1),d=l.ref(),h=l.ref(),m=l.ref(),g=l.ref(),p=e.id||Math.floor(Math.random()*1e6)+"",x="fs-form-wrapper_"+p,v=l.ref({});function y(){var fe;return{formWrapperId:p,formWrapperIdClass:x,close:j,doClose:H,onClosed:Y,onOpened:ae,open:w,title:g,fullscreenEnabled:re,fullscreen:G,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,computedButtons:A,onValueChange:se,innerBind:ne,formWrapperSlots:v,wrapper:o.value,options:s.value,formRef:f.value,form:we(),wrapperBindRef:o,formOptionsRef:s,setFormData:D,getFormData:we,reset:K,loading:u,toggleFullscreen:ee,submit:de,mode:(fe=s.value)==null?void 0:fe.mode}}const w=async fe=>{var me;const{wrapper:ye}=fe;ye.onOpen&&ye.onOpen(fe),g.value=l.unref(ye.title),i.value=fe.wrapper.is,c.value=ye;const Oe=te.formWrapper.customClass(i.value),be=`fs-form-wrapper ${x} ${ye[Oe]||""} `;return o.value={...X.omit(ye,"title","onOpen","onClosed","onOpened","is","inner","beforeClose"),[Oe]:be},s.value={...X.omit(fe,"wrapper","slots"),slots:{...e.slots,...fe.slots,...t.slots}},v.value={...e.slots,...(me=fe.wrapper)==null?void 0:me.slots,...t.slots},t.emit("open",y()),d.value=()=>{ye.onClosed&&ye.onClosed(y())},h.value=()=>{ye.onOpened&&ye.onOpened(y())},m.value=ye.beforeClose,ye.fullscreen!=null&&(G.value=ye.fullscreen),t.emit("inner-change",!!c.value.inner),await l.nextTick(),a.value=!0,await l.nextTick(),ae(),y()};async function E(){var Oe;const fe=c.value.saveRemind;if(((Oe=f.value)==null?void 0:Oe.isDirty())&&fe){let be=!1;if(fe instanceof Function)be=await fe();else try{await te.messageBox.confirm({title:r("fs.form.saveRemind.title"),message:r("fs.form.saveRemind.content"),confirmButtonText:r("fs.form.saveRemind.ok"),cancelButtonText:r("fs.form.saveRemind.cancel")}),be=!0}catch{be=!1}be&&await de()}}const R=of.useRoute();let F=null;function C(){return c.value.saveDraft?(F==null&&(F=new jo({$router:R,tableName:"addFormDraft",keyType:e.id||"0"})),F):null}async function U(){var be;const fe=c.value.saveDraft,ye=(be=f.value)==null?void 0:be.isDirty(),Oe=s.value.mode=="add";return ye&&fe&&Oe?(await C().updateTableValue(we()),!0):!1}async function S(){const fe=C();fe&&await fe.clearTableValue()}async function W(){const fe=C();if(fe){const ye=await fe.getTableValue();ye&&D(ye,{mergeForm:!0})}}async function z(){let fe=!1;return c.value.saveDraft&&(fe=await U()),m.value&&m.value(y())==!1?!1:(fe||await E(),!0)}const V=l.computed(()=>te.type=="element"?{beforeClose:fe=>{H()}}:{}),j=async()=>{a.value=!1},H=async()=>await z()==!1?!1:(j(),!0),Y=()=>{d.value&&d.value(),t.emit("closed"),s.value=null},ae=()=>{if(c.value.saveDraft&&W(),t.emit("opened"),h.value&&h.value(),o.value.draggable||o.value.dragenabled){const{dragModal:fe}=Yf();fe({getModal:()=>document.querySelector(`.${x}`)})}},se=fe=>{t.emit("value-change",fe)};async function de(){u.value=!0;try{if(await f.value.submit()===!1)return;await S(),j()}finally{u.value=!1}}async function K(){await f.value.reset()}function we(){var fe;return(fe=f.value)==null?void 0:fe.getFormData()}function D(fe,ye){var Oe;(Oe=f.value)==null||Oe.setFormData(fe,ye)}const{doComputed:_}=Nr();function k(){var fe,ye,Oe;return{row:(fe=s.value)==null?void 0:fe.initialForm,form:we(),index:(ye=s.value)==null?void 0:ye.index,mode:(Oe=s.value)==null?void 0:Oe.mode,attrs:s.value,getComponentRef(...be){var me;(me=f.value)==null||me.getComponentRef(...be)}}}const b=_(()=>{var fe;return(fe=o.value)==null?void 0:fe.buttons},k),A=l.computed(()=>{const fe={cancel:{},reset:{},ok:{loading:u.value}},ye=n(fe,b.value),Oe=[];return X.forEach(ye,(be,me)=>{be.key=me,Oe.push(be),be.onClick==null&&be.click!=null&&(be.onClick=()=>{be.click(y())})}),X.sortBy(Oe,be=>be.order??Un.orderDefault)});l.onMounted(async()=>{e.options!=null&&await w(e.options),t.emit("mounted",l.getCurrentInstance().exposed)});const G=l.ref(!1),re=l.computed(()=>{var fe;return!((fe=i.value)!=null&&fe.endsWith("drawer"))});function ee(){G.value=!G.value}const te=ue.uiContext.get(),ne=l.computed(()=>c.value.inner?te.formWrapper.buildInnerBind({getInnerWrapper(){if(c.value.innerContainerSelector){const fe=document.querySelector(c.value.innerContainerSelector);if(fe)return fe.classList.add("fs-form-inner-wrapper"),fe;console.error(`找不到选择器为${c.value.innerContainerSelector}的元素`)}return e.innerWrapper}}):{});t.expose({formWrapperId:p,formWrapperIdClass:x,close:j,doClose:H,onClosed:Y,onOpened:ae,open:w,title:g,fullscreenEnabled:re,fullscreen:G,toggleFullscreen:ee,formOptions:s,formWrapperIs:i,formWrapperOpen:a,formWrapperBind:o,formRef:f,submit:de,reset:K,computedButtons:A,loading:u,getFormData:we,setFormData:D,onValueChange:se,innerBind:ne,formWrapperSlots:v,form:we(),wrapperBindRef:o,formOptionsRef:s,mode:(I=s.value)==null?void 0:I.mode});const Ce=l.useSlots();return()=>{if(!o.value)return null;const fe=ue.uiContext.get();let ye={};const Oe={...Ce,...v.value},be=(st,Ht,Ae=Oe)=>Ae[st]?Ae[st](Ht):null,me=i.value||"el-dialog";if(s.value){const{index:st,mode:Ht}=s.value||{},Ae={_self:this,index:st,mode:Ht,getFormData:we};ye={[fe.formWrapper.titleSlotName]:()=>{let it=null;return re.value&&(it=l.createVNode(l.resolveComponent("fs-icon"),{class:"fs-fullscreen-icon",onClick:ee,icon:G.value?fe.icons.fullScreen:fe.icons.unFullScreen},null)),l.createVNode("div",{class:"fs-form-header"},[l.createVNode("div",{class:"fs-form-header-left"},[be("form-header-left",Ae),g.value,be("form-header-right",Ae)]),l.createVNode("div",{class:"fs-form-header-action"},[be("form-header-action-left",Ae),it,be("form-header-action-right",Ae)])])},default:()=>{const it=[];return X.forEach(A.value,hr=>{hr.show!==!1&&it.push(l.createVNode(l.resolveComponent("fs-button"),hr,null))}),l.createVNode("div",{class:"fs-form-wrapper-body"},[l.createVNode("div",{class:"fs-form-body"},[be("form-body-top",Ae),l.createVNode("div",{class:"fs-form-content"},[be("form-body-left",Ae),l.createVNode(l.resolveComponent("fs-form"),l.mergeProps({ref:f},s.value,{onValueChange:se}),null),be("form-body-right",Ae)]),be("form-body-bottom",Ae)]),l.createVNode("div",{class:"fs-form-footer-btns"},[be("form-footer-left",Ae),it,be("form-footer-right",Ae)])])}}}if(fe.formWrapper.hasContentWrap){const st=fe.formWrapper.hasContentWrap(me),Ht=ye;if(st){const Ae=l.resolveDynamicComponent(st);ye={default:()=>l.createVNode(Ae,null,Jg(Ht)?Ht:{default:()=>[Ht]})}}}const ht=fe.formWrapper.visible,wr={[ht]:a.value,["onUpdate:"+ht]:async st=>{if(st===!1&&a.value)return await H();a.value=st}},jr=fe.formWrapper.buildOnClosedBind(me,Y),zr=fe.formWrapper.customClass(me),bn=`${G.value?"fs-fullscreen":""} ${o.value[zr]||""}`,dr={[zr]:bn},ln={fullscreen:G.value},En={zIndex:o.value.zIndex||e.zIndex},Ia=l.resolveDynamicComponent(me);return l.createVNode(Ia,l.mergeProps(o.value,dr,wr,jr,ln,ne.value,En,V.value),ye)}}}),Zg=l.defineComponent({name:"FsFormProvider"}),m0=l.defineComponent({...Zg,setup(e){const t=l.ref({});return l.provide("use:form:wrapper",()=>({open(r){const n=r.id||Math.floor(Math.random()*1e6)+"";return new Promise((a,i)=>{t.value[n]={id:n,async onMounted(s){await s.open(r),a(s)},onClosed(){r.id||delete t.value[n]}}})}})),(r,n)=>(l.openBlock(),l.createElementBlock(l.Fragment,null,[l.renderSlot(r.$slots,"default"),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(t.value,a=>(l.openBlock(),l.createBlock(l.unref($a),l.mergeProps({key:a.id},{ref_for:!0},a),null,16))),128))],64))}});mr.trace("fs-table");function Qg(e,t){l.provide("get:columns",()=>e.table.columns),l.provide("update:columns",r=>{t.emit("update:columns",r)}),l.provide("get:crudBinding",()=>e)}function ex(e,t){const r=l.ref(),n=()=>r.value,a=()=>r.value?r.value.getForm():(De.warn("请使用expose.getSearchFormData代替"),{}),i=()=>r.value?r.value.getValidatedForm():(De.warn("请使用expose.getSearchValidatedFormData代替"),{});function s({form:o,mergeForm:c=!1}){r.value&&r.value.setForm(o,c)}return{searchRef:r,getSearchRef:n,getSearchFormData:a,setSearchFormData:s,getSearchValidatedFormData:i}}function tx(e,t,r){return{tabsBinding:l.computed(()=>{var a,i,s,o,c,f,u;if(t.tabs&&t.tabs.show&&t.tabs.name){let d=null;const h={...t.tabs};return(a=t.search)!=null&&a.columns&&((o=(s=(i=t.search)==null?void 0:i.columns[t.tabs.name])==null?void 0:s.component)!=null&&o.dict)&&(d=(u=(f=(c=t.search)==null?void 0:c.columns[t.tabs.name])==null?void 0:f.component)==null?void 0:u.dict,h.value==null&&(h.value=d.value),h.label==null&&(h.label=d.label),h.options==null&&(h.options=d.data||[])),{...h,modelValue:t.search.validatedForm&&t.search.validatedForm[t.tabs.name],"onUpdate:modelValue":m=>{r.emit("tab-change",{[t.tabs.name]:m})}}}return{show:!1}})}}function Ms(e,t){if(!e)return{};const r={};return X.forEach(e,(n,a)=>{a.startsWith(t)&&(r[a]=n)}),r}function rx(e,t,{tableRef:r,containerRef:n}){var f;const a=ue.uiContext.get();let i=a.table;if(((f=e.table)==null?void 0:f.tableVersion)==="v2"&&(i=a.tableV2),i.hasMaxHeight(e.table))return{};if(!i.fixedHeaderNeedComputeBodyHeight)return{};const s=l.ref(null);function o(){var g;const u=(g=r==null?void 0:r.value)==null?void 0:g.$el;if(u==null||u.querySelector==null)return;const d=u.querySelector(i.headerDomSelector);if(d==null)return;const h=u.getBoundingClientRect().height,m=d.getBoundingClientRect().height;s.value=h-m-2+(e.table.maxHeightAdjust||0),De.debug("table max height recomputed ",s.value)}function c(){var m;const u=(m=r==null?void 0:r.value)==null?void 0:m.$el;if(u==null)return;const d=u.parentNode;new ResizeObserver(function(g){De.debug("table resized",g),g.length>0&&g[0].contentRect.height>0&&(o(),setTimeout(()=>{o()},200),setTimeout(()=>{o()},500))}).observe(d)}return l.onMounted(async()=>{await l.nextTick(),await l.nextTick(),c()}),{maxHeightRef:s,computeBodyHeight:o}}function nx(e,t){const r=ue.uiContext.get(),n=l.ref(),a=l.ref(),i=l.ref(),{maxHeightRef:s,computeBodyHeight:o}=rx(e,t,{tableRef:n,containerRef:i}),{merge:c}=Ze(),f=l.toRef(e,"table"),u=l.computed(()=>{var C;let R={};if((s==null?void 0:s.value)!=null){let U=r.table;((C=e.table)==null?void 0:C.tableVersion)==="v2"&&(U=r.tableV2),R=U.buildMaxHeight(s.value)}const F=mr.dash.omit(f,"loading","columns","columnsMap");return c(R,{...t.attrs,...F})}),d=l.toRef(e,"toolbar"),h=l.computed(()=>Ms(t.slots,"cell")),m=l.computed(()=>Ms(t.slots,"form")),g=l.computed(()=>Ms(t.slots,"search")),p=l.computed(()=>Ms(t.slots,"toolbar")),x=l.ref(),v=l.computed(()=>{const R={compact:e.toolbar.compact!==!1};return e.customClass&&(R[e.customClass]=!0),R}),y=l.ref(),w=l.ref(!1);return{tableRef:n,containerRef:i,toolbarRef:a,computedTable:u,computedToolbar:d,computedCellSlots:h,formWrapperRef:x,isFormInner:w,onFormInnerChange:R=>{w.value=R},computedFormSlots:m,computedSearchSlots:g,computedToolbarSlots:p,computeBodyHeight:o,computedClass:v,innerWrapperRef:y}}const ax=l.defineComponent({name:"FsCrud",inheritAttrs:!1,props:{id:{type:String,default:""},table:{type:Object,default(){return{}}},data:{type:Array},rowHandle:{type:Object,default(){return{}}},search:{type:Object,default(){return{}}},toolbar:{type:Object,default(){return{}}},actionbar:{type:Object,default(){return{}}},tabs:{type:Object,default(){return{}}},addForm:{type:Object,default(){return{}}},editForm:{type:Object,default(){return{}}},viewForm:{type:Object,default(){return{}}},pagination:{type:Object,default(){return{show:!1}}},container:{type:Object,default(){return{}}},customClass:{},form:{type:Object,default(){return{}}},selection:{type:Object,default(){return{show:!1}}}},emits:["update:search","update:compact","update:columns","form-value-change","update:modelValue","tab-change"],setup(e,t){const{ui:r}=ue.useUi();Qg(e,t);const n=ex(),a=tx(n,e,t),i=nx(e,t);return{ui:r,...n,...i,...a}}}),CD="",ix={class:"fs-crud-search"},sx={key:0,class:"fs-crud-actionbar"},ox={key:0,class:"fs-crud-toolbar"},lx={class:"fs-crud-pagination"},cx={class:"fs-pagination-left"},fx={class:"fs-pagination"},ux={class:"fs-pagination-right"};function dx(e,t,r,n,a,i){var d;const s=l.resolveComponent("fs-actionbar"),o=l.resolveComponent("fs-toolbar"),c=l.resolveComponent("fs-tabs-filter"),f=l.resolveComponent("fs-table"),u=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(((d=e.container)==null?void 0:d.is)||"fs-layout-default"),l.mergeProps({ref:"containerRef",class:"fs-crud-container"},e.container,{class:e.computedClass}),{"header-top":l.withCtx(()=>[l.renderSlot(e.$slots,"header-top")]),"header-bottom":l.withCtx(()=>[l.renderSlot(e.$slots,"header-bottom")]),"header-middle":l.withCtx(()=>[l.renderSlot(e.$slots,"header-middle")]),search:l.withCtx(()=>[l.createElementVNode("div",ix,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.search.is||"fs-search"),l.mergeProps({ref:"searchRef"},e.search,{slots:e.computedSearchSlots}),null,16,["slots"]))])]),actionbar:l.withCtx(()=>[e.actionbar&&e.actionbar.show!==!1?(l.openBlock(),l.createElementBlock("div",sx,[l.renderSlot(e.$slots,"actionbar-left"),l.createVNode(s,l.normalizeProps(l.guardReactiveProps(e.actionbar)),null,16),l.renderSlot(e.$slots,"actionbar-right")])):l.createCommentVNode("",!0)]),toolbar:l.withCtx(()=>[e.toolbar&&e.toolbar.show!==!1?(l.openBlock(),l.createElementBlock("div",ox,[l.renderSlot(e.$slots,"toolbar-left"),l.createVNode(o,l.mergeProps({ref:"toolbarRef"},e.toolbar,{slots:e.computedToolbarSlots,columns:e.table.columns}),null,16,["slots","columns"]),l.renderSlot(e.$slots,"toolbar-right")])):l.createCommentVNode("",!0)]),tabs:l.withCtx(()=>[e.tabsBinding.show?(l.openBlock(),l.createBlock(c,l.mergeProps({key:0,ref:"tabsRef",class:"fs-tabs"},e.tabsBinding),null,16)):l.createCommentVNode("",!0)]),table:l.withCtx(()=>[l.createVNode(f,l.mergeProps({ref:"tableRef",class:"fs-crud-table"},e.computedTable,{columns:e.table.columns,loading:e.table.loading,"row-handle":e.rowHandle,data:e.data,"cell-slots":e.computedCellSlots}),null,16,["columns","loading","row-handle","data","cell-slots"])]),form:l.withCtx(()=>[l.createElementVNode("div",{ref:"innerWrapperRef",class:l.normalizeClass(["fs-form-wrapper-container",{"fs-form-inner-wrapper":e.isFormInner}])},[l.createVNode(u,{ref:"formWrapperRef",slots:e.computedFormSlots,"inner-wrapper":e.innerWrapperRef,onInnerChange:e.onFormInnerChange,onValueChange:t[0]||(t[0]=h=>e.$emit("form-value-change",h))},null,8,["slots","inner-wrapper","onInnerChange"])],2)]),pagination:l.withCtx(()=>[l.createElementVNode("div",lx,[l.createElementVNode("div",cx,[l.renderSlot(e.$slots,"pagination-left")]),l.createElementVNode("div",fx,[e.pagination.show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.pagination.name),l.normalizeProps(l.mergeProps({key:0},e.pagination)),null,16)):l.createCommentVNode("",!0)]),l.createElementVNode("div",ux,[l.renderSlot(e.$slots,"pagination-right")])])]),"footer-top":l.withCtx(()=>[l.renderSlot(e.$slots,"footer-top")]),"footer-bottom":l.withCtx(()=>[l.renderSlot(e.$slots,"footer-bottom")]),default:l.withCtx(()=>[l.renderSlot(e.$slots,"default")]),_:3},16,["class"])}const p0=rt(ax,[["render",dx]]),hx=l.defineComponent({name:"FsRowHandle",props:{dropdown:{type:Object},buttons:{type:Object},group:{type:Object},active:{type:String,default:"default"},scope:{type:Object,default:()=>({})}},emits:["handle"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Ze(),{t:a}=Kt(),i=l.computed(()=>({...e.scope,row:e.scope[r.tableColumn.row],index:e.scope[r.tableColumn.index]})),s=x=>{const v=e.scope[r.tableColumn.index],y=e.scope[r.tableColumn.row],w={key:x.key,row:y,btn:x,index:v,...e.scope};if(x.click)return x.click(w);t.emit("handle",w)},{doComputed:o}=Nr(),c=l.computed(()=>({dropdown:e.dropdown,buttons:e.buttons,active:e.active,group:e.group})),f=o(()=>c.value,()=>{const x=e.scope[r.tableColumn.index],v=e.scope[r.tableColumn.row];return{...e.scope,index:x,row:v}}),u=l.computed(()=>{let x=null;if(f.value.active==null||f.value.active==="default"){const y={view:{key:"view",text:a("fs.rowHandle.view.text"),title:a("fs.rowHandle.view.text")},copy:{key:"copy",text:a("fs.rowHandle.copy.text"),title:a("fs.rowHandle.copy.text")},edit:{key:"edit",type:"primary",text:a("fs.rowHandle.edit.text"),title:a("fs.rowHandle.edit.text")},remove:{key:"remove",...r.button.colors("danger"),text:a("fs.rowHandle.remove.text"),title:a("fs.rowHandle.remove.text")}};x=n(y,f.value.buttons)}else x=f.value.group[f.value.active];const v=[];return X.forEach(x,(y,w)=>{y.key=w,y.show!==!1&&v.push(y)}),X.sortBy(v,y=>y.order??Un.orderDefault)}),d=l.computed(()=>f.value.dropdown==null||f.value.dropdown.atLeast==null||f.value.dropdown.atLeast<=0||u.value.length<=f.value.dropdown.atLeast?0:f.value.dropdown.atLeast||0);function h(x,v){return x.dropdown===!0||d.value>0&&d.value<v}const m=l.computed(()=>{let x=0;for(const v of u.value){if(h(v,x))return!0;x++}return!1});function g(x){for(let v of u.value)if(x===v.key){s(v);return}}const p=l.computed(()=>{const x={};if(r.dropdown.renderMode!=="slot"){const v=u.value,y=[];X.forEach(v,(w,E)=>{w.show!==!1&&h(w,E)&&y.push({[r.dropdown.value]:w.key,[r.dropdown.label]:w.text,title:w.title})}),x.options=y}return{...X.omit(e.dropdown,"more","atLeast"),...r.dropdown.command(g),...x}});return{ui:r,hasDropdownBtn:m,computedHandleBtns:u,doDropdownItemClick:g,computedDropdownAtLeast:d,doClick:s,isDropdownBtn:h,scopeRef:i,computedDropdownBinding:p}}}),TD="",mx={class:"fs-row-handle"},px={key:0,class:"row-handle-btn fs-handle-row-dropdown"};function gx(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-button"),c=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("div",mx,[l.renderSlot(e.$slots,"cell-rowHandle-left",l.normalizeProps(l.guardReactiveProps(e.scopeRef))),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedHandleBtns,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1&&!e.isDropdownBtn(f,u)?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[f.render?(l.openBlock(),l.createBlock(s,{key:0,"render-func":f.render,scope:e.scopeRef},null,8,["render-func","scope"])):(l.openBlock(),l.createBlock(o,l.mergeProps({key:1,class:"row-handle-btn"},{ref_for:!0},f,{onClick:l.withModifiers(d=>e.doClick(f),["stop"])}),null,16,["onClick"]))],64)):l.createCommentVNode("",!0)],64))),128)),l.renderSlot(e.$slots,"cell-rowHandle-middle",l.normalizeProps(l.guardReactiveProps(e.scope))),e.hasDropdownBtn?(l.openBlock(),l.createElementBlock("span",px,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdown.name),l.normalizeProps(l.guardReactiveProps(e.computedDropdownBinding)),{[e.ui.dropdown.slotName]:l.withCtx(()=>[e.ui.dropdown.renderMode==="slot"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdownMenu.name),l.normalizeProps(l.mergeProps({key:0},e.ui.dropdownMenu.command(e.doDropdownItemClick))),{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedHandleBtns,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1&&e.isDropdownBtn(f,u)?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.dropdownItem.name),l.mergeProps({key:0,[e.ui.dropdownItem.command||""]:f.key},{ref_for:!0},f.dropdownItem,{disabled:f.disabled}),{default:l.withCtx(()=>[l.createElementVNode("div",l.mergeProps({class:"fs-row-handle-dropdown-item"},{ref_for:!0},f),[f.icon?(l.openBlock(),l.createBlock(c,{key:0,icon:f.icon},null,8,["icon"])):l.createCommentVNode("",!0),l.createTextVNode(" "+l.toDisplayString(f.text||f.title),1)],16)]),_:2},1040,["disabled"])):l.createCommentVNode("",!0)],64))),128))]),_:1},16)):l.createCommentVNode("",!0)]),default:l.withCtx(()=>[l.createVNode(o,l.normalizeProps(l.guardReactiveProps(e.dropdown.more)),null,16)]),_:2},1040))])):l.createCommentVNode("",!0),l.renderSlot(e.$slots,"cell-rowHandle-right",l.normalizeProps(l.guardReactiveProps(e.scope)))])}const g0=rt(hx,[["render",gx]]);function ca(){return ca=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},ca.apply(this,arguments)}function xx(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Si(e,t)}function ol(e){return ol=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(r){return r.__proto__||Object.getPrototypeOf(r)},ol(e)}function Si(e,t){return Si=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(n,a){return n.__proto__=a,n},Si(e,t)}function vx(){if(typeof Reflect>"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Ls(e,t,r){return vx()?Ls=Reflect.construct.bind():Ls=function(a,i,s){var o=[null];o.push.apply(o,i);var c=Function.bind.apply(a,o),f=new c;return s&&Si(f,s.prototype),f},Ls.apply(null,arguments)}function wx(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function ll(e){var t=typeof Map=="function"?new Map:void 0;return ll=function(n){if(n===null||!wx(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,a)}function a(){return Ls(n,arguments,ol(this).constructor)}return a.prototype=Object.create(n.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),Si(a,n)},ll(e)}var _x=/%[sdj%]/g,x0=function(){};typeof process<"u"&&process.env&&process.env.NODE_ENV!=="production"&&typeof window<"u"&&typeof document<"u"&&(x0=function(t,r){typeof console<"u"&&console.warn&&typeof ASYNC_VALIDATOR_NO_WARNING>"u"&&r.every(function(n){return typeof n=="string"})&&console.warn(t,r)});function cl(e){if(!e||!e.length)return null;var t={};return e.forEach(function(r){var n=r.field;t[n]=t[n]||[],t[n].push(r)}),t}function _r(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var a=0,i=r.length;if(typeof e=="function")return e.apply(null,r);if(typeof e=="string"){var s=e.replace(_x,function(o){if(o==="%%")return"%";if(a>=i)return o;switch(o){case"%s":return String(r[a++]);case"%d":return Number(r[a++]);case"%j":try{return JSON.stringify(r[a++])}catch{return"[Circular]"}break;default:return o}});return s}return e}function yx(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Rt(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||yx(t)&&typeof e=="string"&&!e)}function kx(e,t,r){var n=[],a=0,i=e.length;function s(o){n.push.apply(n,o||[]),a++,a===i&&r(n)}e.forEach(function(o){t(o,s)})}function v0(e,t,r){var n=0,a=e.length;function i(s){if(s&&s.length){r(s);return}var o=n;n=n+1,o<a?t(e[o],i):r([])}i([])}function bx(e){var t=[];return Object.keys(e).forEach(function(r){t.push.apply(t,e[r]||[])}),t}var w0=function(e){xx(t,e);function t(r,n){var a;return a=e.call(this,"Async Validation Error")||this,a.errors=r,a.fields=n,a}return t}(ll(Error));function Ex(e,t,r,n,a){if(t.first){var i=new Promise(function(h,m){var g=function(v){return n(v),v.length?m(new w0(v,cl(v))):h(a)},p=bx(e);v0(p,r,g)});return i.catch(function(h){return h}),i}var s=t.firstFields===!0?Object.keys(e):t.firstFields||[],o=Object.keys(e),c=o.length,f=0,u=[],d=new Promise(function(h,m){var g=function(x){if(u.push.apply(u,x),f++,f===c)return n(u),u.length?m(new w0(u,cl(u))):h(a)};o.length||(n(u),h(a)),o.forEach(function(p){var x=e[p];s.indexOf(p)!==-1?v0(x,r,g):kx(x,r,g)})});return d.catch(function(h){return h}),d}function Sx(e){return!!(e&&e.message!==void 0)}function Cx(e,t){for(var r=e,n=0;n<t.length;n++){if(r==null)return r;r=r[t[n]]}return r}function _0(e,t){return function(r){var n;return e.fullFields?n=Cx(t,e.fullFields):n=t[r.field||e.fullField],Sx(r)?(r.field=r.field||e.fullField,r.fieldValue=n,r):{message:typeof r=="function"?r():r,fieldValue:n,field:r.field||e.fullField}}}function y0(e,t){if(t){for(var r in t)if(t.hasOwnProperty(r)){var n=t[r];typeof n=="object"&&typeof e[r]=="object"?e[r]=ca({},e[r],n):e[r]=n}}return e}var k0=function(t,r,n,a,i,s){t.required&&(!n.hasOwnProperty(t.field)||Rt(r,s||t.type))&&a.push(_r(i.messages.required,t.fullField))},Tx=function(t,r,n,a,i){(/^\s+$/.test(r)||r==="")&&a.push(_r(i.messages.whitespace,t.fullField))},Vs,Fx=function(){if(Vs)return Vs;var e="[a-fA-F\\d:]",t=function(E){return E&&E.includeBoundaries?"(?:(?<=\\s|^)(?="+e+")|(?<="+e+")(?=\\s|$))":""},r="(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}",n="[a-fA-F\\d]{1,4}",a=(`
|
||
(?:
|
||
(?:`+n+":){7}(?:"+n+`|:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
|
||
(?:`+n+":){6}(?:"+r+"|:"+n+`|:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
|
||
(?:`+n+":){5}(?::"+r+"|(?::"+n+`){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
|
||
(?:`+n+":){4}(?:(?::"+n+"){0,1}:"+r+"|(?::"+n+`){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
|
||
(?:`+n+":){3}(?:(?::"+n+"){0,2}:"+r+"|(?::"+n+`){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
|
||
(?:`+n+":){2}(?:(?::"+n+"){0,3}:"+r+"|(?::"+n+`){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
|
||
(?:`+n+":){1}(?:(?::"+n+"){0,4}:"+r+"|(?::"+n+`){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
|
||
(?::(?:(?::`+n+"){0,5}:"+r+"|(?::"+n+`){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
|
||
)(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
|
||
`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),i=new RegExp("(?:^"+r+"$)|(?:^"+a+"$)"),s=new RegExp("^"+r+"$"),o=new RegExp("^"+a+"$"),c=function(E){return E&&E.exact?i:new RegExp("(?:"+t(E)+r+t(E)+")|(?:"+t(E)+a+t(E)+")","g")};c.v4=function(w){return w&&w.exact?s:new RegExp(""+t(w)+r+t(w),"g")},c.v6=function(w){return w&&w.exact?o:new RegExp(""+t(w)+a+t(w),"g")};var f="(?:(?:[a-z]+:)?//)",u="(?:\\S+(?::\\S*)?@)?",d=c.v4().source,h=c.v6().source,m="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",g="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",p="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",x="(?::\\d{2,5})?",v='(?:[/?#][^\\s"]*)?',y="(?:"+f+"|www\\.)"+u+"(?:localhost|"+d+"|"+h+"|"+m+g+p+")"+x+v;return Vs=new RegExp("(?:^"+y+"$)","i"),Vs},b0={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},Ci={integer:function(t){return Ci.number(t)&&parseInt(t,10)===t},float:function(t){return Ci.number(t)&&!Ci.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!Ci.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(b0.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(Fx())},hex:function(t){return typeof t=="string"&&!!t.match(b0.hex)}},Ax=function(t,r,n,a,i){if(t.required&&r===void 0){k0(t,r,n,a,i);return}var s=["integer","float","array","regexp","object","method","email","number","date","url","hex"],o=t.type;s.indexOf(o)>-1?Ci[o](r)||a.push(_r(i.messages.types[o],t.fullField,t.type)):o&&typeof r!==t.type&&a.push(_r(i.messages.types[o],t.fullField,t.type))},Dx=function(t,r,n,a,i){var s=typeof t.len=="number",o=typeof t.min=="number",c=typeof t.max=="number",f=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,u=r,d=null,h=typeof r=="number",m=typeof r=="string",g=Array.isArray(r);if(h?d="number":m?d="string":g&&(d="array"),!d)return!1;g&&(u=r.length),m&&(u=r.replace(f,"_").length),s?u!==t.len&&a.push(_r(i.messages[d].len,t.fullField,t.len)):o&&!c&&u<t.min?a.push(_r(i.messages[d].min,t.fullField,t.min)):c&&!o&&u>t.max?a.push(_r(i.messages[d].max,t.fullField,t.max)):o&&c&&(u<t.min||u>t.max)&&a.push(_r(i.messages[d].range,t.fullField,t.min,t.max))},Wa="enum",Rx=function(t,r,n,a,i){t[Wa]=Array.isArray(t[Wa])?t[Wa]:[],t[Wa].indexOf(r)===-1&&a.push(_r(i.messages[Wa],t.fullField,t[Wa].join(", ")))},Ox=function(t,r,n,a,i){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(r)||a.push(_r(i.messages.pattern.mismatch,t.fullField,r,t.pattern));else if(typeof t.pattern=="string"){var s=new RegExp(t.pattern);s.test(r)||a.push(_r(i.messages.pattern.mismatch,t.fullField,r,t.pattern))}}},Ge={required:k0,whitespace:Tx,type:Ax,range:Dx,enum:Rx,pattern:Ox},Bx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i,"string"),Rt(r,"string")||(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i),Ge.pattern(t,r,a,s,i),t.whitespace===!0&&Ge.whitespace(t,r,a,s,i))}n(s)},Nx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Ix=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(r===""&&(r=void 0),Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Px=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Mx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),Rt(r)||Ge.type(t,r,a,s,i)}n(s)},Lx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Vx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},Ux=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(r==null&&!t.required)return n();Ge.required(t,r,a,s,i,"array"),r!=null&&(Ge.type(t,r,a,s,i),Ge.range(t,r,a,s,i))}n(s)},$x=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge.type(t,r,a,s,i)}n(s)},Wx="enum",Hx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i),r!==void 0&&Ge[Wx](t,r,a,s,i)}n(s)},jx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r,"string")&&!t.required)return n();Ge.required(t,r,a,s,i),Rt(r,"string")||Ge.pattern(t,r,a,s,i)}n(s)},zx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r,"date")&&!t.required)return n();if(Ge.required(t,r,a,s,i),!Rt(r,"date")){var c;r instanceof Date?c=r:c=new Date(r),Ge.type(t,c,a,s,i),c&&Ge.range(t,c.getTime(),a,s,i)}}n(s)},Gx=function(t,r,n,a,i){var s=[],o=Array.isArray(r)?"array":typeof r;Ge.required(t,r,a,s,i,o),n(s)},fl=function(t,r,n,a,i){var s=t.type,o=[],c=t.required||!t.required&&a.hasOwnProperty(t.field);if(c){if(Rt(r,s)&&!t.required)return n();Ge.required(t,r,a,o,i,s),Rt(r,s)||Ge.type(t,r,a,o,i)}n(o)},Xx=function(t,r,n,a,i){var s=[],o=t.required||!t.required&&a.hasOwnProperty(t.field);if(o){if(Rt(r)&&!t.required)return n();Ge.required(t,r,a,s,i)}n(s)},Ti={string:Bx,method:Nx,number:Ix,boolean:Px,regexp:Mx,integer:Lx,float:Vx,array:Ux,object:$x,enum:Hx,pattern:jx,date:zx,url:fl,hex:fl,email:fl,required:Gx,any:Xx};function ul(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var dl=ul(),Fi=function(){function e(r){this.rules=null,this._messages=dl,this.define(r)}var t=e.prototype;return t.define=function(n){var a=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(i){var s=n[i];a.rules[i]=Array.isArray(s)?s:[s]})},t.messages=function(n){return n&&(this._messages=y0(ul(),n)),this._messages},t.validate=function(n,a,i){var s=this;a===void 0&&(a={}),i===void 0&&(i=function(){});var o=n,c=a,f=i;if(typeof c=="function"&&(f=c,c={}),!this.rules||Object.keys(this.rules).length===0)return f&&f(null,o),Promise.resolve(o);function u(p){var x=[],v={};function y(E){if(Array.isArray(E)){var R;x=(R=x).concat.apply(R,E)}else x.push(E)}for(var w=0;w<p.length;w++)y(p[w]);x.length?(v=cl(x),f(x,v)):f(null,o)}if(c.messages){var d=this.messages();d===dl&&(d=ul()),y0(d,c.messages),c.messages=d}else c.messages=this.messages();var h={},m=c.keys||Object.keys(this.rules);m.forEach(function(p){var x=s.rules[p],v=o[p];x.forEach(function(y){var w=y;typeof w.transform=="function"&&(o===n&&(o=ca({},o)),v=o[p]=w.transform(v)),typeof w=="function"?w={validator:w}:w=ca({},w),w.validator=s.getValidationMethod(w),w.validator&&(w.field=p,w.fullField=w.fullField||p,w.type=s.getType(w),h[p]=h[p]||[],h[p].push({rule:w,value:v,source:o,field:p}))})});var g={};return Ex(h,c,function(p,x){var v=p.rule,y=(v.type==="object"||v.type==="array")&&(typeof v.fields=="object"||typeof v.defaultField=="object");y=y&&(v.required||!v.required&&p.value),v.field=p.field;function w(F,C){return ca({},C,{fullField:v.fullField+"."+F,fullFields:v.fullFields?[].concat(v.fullFields,[F]):[F]})}function E(F){F===void 0&&(F=[]);var C=Array.isArray(F)?F:[F];!c.suppressWarning&&C.length&&e.warning("async-validator:",C),C.length&&v.message!==void 0&&(C=[].concat(v.message));var U=C.map(_0(v,o));if(c.first&&U.length)return g[v.field]=1,x(U);if(!y)x(U);else{if(v.required&&!p.value)return v.message!==void 0?U=[].concat(v.message).map(_0(v,o)):c.error&&(U=[c.error(v,_r(c.messages.required,v.field))]),x(U);var S={};v.defaultField&&Object.keys(p.value).map(function(V){S[V]=v.defaultField}),S=ca({},S,p.rule.fields);var W={};Object.keys(S).forEach(function(V){var j=S[V],H=Array.isArray(j)?j:[j];W[V]=H.map(w.bind(null,V))});var z=new e(W);z.messages(c.messages),p.rule.options&&(p.rule.options.messages=c.messages,p.rule.options.error=c.error),z.validate(p.value,p.rule.options||c,function(V){var j=[];U&&U.length&&j.push.apply(j,U),V&&V.length&&j.push.apply(j,V),x(j.length?j:null)})}}var R;if(v.asyncValidator)R=v.asyncValidator(v,p.value,E,p.source,c);else if(v.validator){try{R=v.validator(v,p.value,E,p.source,c)}catch(F){console.error==null||console.error(F),c.suppressValidatorError||setTimeout(function(){throw F},0),E(F.message)}R===!0?E():R===!1?E(typeof v.message=="function"?v.message(v.fullField||v.field):v.message||(v.fullField||v.field)+" fails"):R instanceof Array?E(R):R instanceof Error&&E(R.message)}R&&R.then&&R.then(function(){return E()},function(F){return E(F)})},function(p){u(p)},o)},t.getType=function(n){if(n.type===void 0&&n.pattern instanceof RegExp&&(n.type="pattern"),typeof n.validator!="function"&&n.type&&!Ti.hasOwnProperty(n.type))throw new Error(_r("Unknown rule type %s",n.type));return n.type||"string"},t.getValidationMethod=function(n){if(typeof n.validator=="function")return n.validator;var a=Object.keys(n),i=a.indexOf("message");return i!==-1&&a.splice(i,1),a.length===1&&a[0]==="required"?Ti.required:Ti[this.getType(n)]||void 0},e}();Fi.register=function(t,r){if(typeof r!="function")throw new Error("Cannot register a validator by type, validator is not a function");Ti[t]=r},Fi.warning=x0,Fi.messages=dl,Fi.validators=Ti;function Kx(e){const t={};for(const r in e){const n=e[r].getForm(),a=n.rules||n.rule,i=r.split(".");let s=t;if(a)for(let o=0;o<i.length;o++){const c=i[o];s[c]||(s[c]={type:"object",fields:{}}),o==i.length-1?s[c]=a:s=s[c].fields}}return new Fi(t)}function hl(e,t){X.forEach(e,r=>{r.children?hl(r.children,t):t(r)})}function Yx(e,t){const r=ue.uiContext.get();function n(){if(e.data)return e.data;if(t.value){let a=r.table;return e.tableVersion==="v2"&&(a=r.tableV2),t.value[a.data]||[]}return[]}return{getData:n,insert(a,i){n().splice(a,0,i)},unshift(a){n().unshift(a)},remove(a){n().splice(a,1)},get(a){return n()[a]}}}function qx(e,t,r){const n=Yx(e,r),a=l.reactive([]);function i(D){return typeof e.rowKey=="string"?D[e.rowKey]:e.rowKey(D)}function s(D){return D[e.editable.rowKey]}function o(D){for(const _ in a){const k=a[_],b=k.cells,A=k.rowData;if(D({rowData:A,row:k,cells:b})==="break")return}}function c(D){o(({rowData:_,row:k,cells:b})=>{X.forEach(b,(A,G)=>{D({rowData:_,row:k,cells:b,cell:A,key:G})})})}const{merge:f}=Ze(),u=l.computed(()=>f({enabled:!1,mode:"free",rowKey:"id",addForm:{},editForm:{},exclusive:!0,exclusiveEffect:"cancel",activeTrigger:"onClick",activeDefault:!1,isEditable(D){return!0}},e.editable));function d(D,_,k,b){function A(ne){return X.get(D,ne)}function G(ne,Ce){X.set(D,ne,Ce)}const re=l.computed(()=>{var ne;return((ne=b.editable)==null?void 0:ne.updateCell)||u.value.updateCell}),ee=l.computed(()=>{var ne;return((ne=b.editable)==null?void 0:ne.showAction)||u.value.showAction}),te=l.reactive({mode:k<0?"add":"edit",oldValue:void 0,newValue:void 0,loading:!1,isEditing:u.value.activeDefault,activeTrigger:u.value.activeTrigger,column:b,updateCell:re,showAction:ee,isEditable:()=>{var I;let ne=(I=b==null?void 0:b.editable)==null?void 0:I.disabled;ne instanceof Function&&(ne=ne({column:b,editableId:k,row:D}));let Ce=null;return ne!=null&&(Ce=!ne),Ce??(u.value.isEditable({editableId:k,key:_,row:D})||!1)},isChanged:()=>te.newValue!==te.oldValue,getForm:()=>{let ne=u.value[te.mode+"Form"];return ne==null&&(ne=u.value.editForm),ne[_]},active:(ne={})=>{(ne.exclusive??u.value.exclusive)&&((ne.exclusiveEffect??u.value.exclusiveEffect)==="save"?E():R()),te.isEditing=!0,te.oldValue=A(_);const I=u.value.editForm[_];I&&z(I,D)},inactive:()=>{te.isEditing=!1,te.newValue=A(_)},resume:()=>{te.isEditing&&(te.isEditing=!1,G(_,te.oldValue),delete te.newValue,delete te.oldValue)},cancel:()=>{te.resume()},persist:()=>{te.isEditing=!1,delete te.newValue,delete te.oldValue},save:async()=>{const ne=l.unref(te.updateCell);if(!ne){De.warn("没有配置table.editable.updateCell方法,无法保存,相关文档:http://fast-crud.docmirror.cn/api/crud-options/table.html#editable");return}te.loading=!0;try{const Ce=await ne({editableId:k,row:D,key:_,value:A(_)}),I=D[u.value.rowKey];(I==null||I<=0)&&((Ce&&Ce[u.value.rowKey])==null?De.error(`对于添加的行,updateCell方法需要返回{'id':value},如果你配置了别的rowKey,需要返回{[rowKey]:id}。
|
||
当前返回值:${JSON.stringify(Ce)}`):D[u.value.rowKey]=Ce[u.value.rowKey]),te.persist()}finally{te.loading=!1}}});return te}function h(D,_){const k={};hl(e.columns,ee=>{k[ee.key]=d(_,ee.key,D,ee)});const b=l.computed(()=>Kx(k)),A=i(_),G=A==null||A<0,re=l.reactive({isAdd:G,rowData:_,editableId:D,isEditing:!1,loading:!1,cells:k,validator:b,inactive:()=>{re.isEditing=!1,X.forEach(re.cells,ee=>{ee.isEditing&&ee.inactive()})},active:()=>{re.isEditing=!0,X.forEach(re.cells,ee=>{ee.active({exclusive:!1})})},persist:()=>{re.isEditing=!1,re.inactive(),delete re.isAdd,X.forEach(re.cells,ee=>{ee.persist()})},resume:()=>{re.isEditing=!1,X.forEach(re.cells,ee=>{ee.resume()})},cancel:()=>{re.resume()},validate:async ee=>{try{return X.forEach(re.cells,(te,ne)=>{te.validateErrors=[]}),ee==null&&(ee=re.rowData),await re.validator.validate(ee),!0}catch(te){const{errors:ne,fields:Ce}=te;return X.forEach(Ce,(I,fe)=>{const ye=re.cells[fe];ye&&(ye.validateErrors=I)}),Ce}},getRowData:()=>{const ee=X.cloneDeep(re.rowData);return delete ee[e.editable.rowKey],delete ee.children,ee},save:async ee=>{const{doSave:te}=ee,ne=re.rowData,{merge:Ce}=Ze();if(await re.validate()!==!0)return;function fe(Oe){Oe&&(i(Oe)==null&&console.error("保存接口没有返回rowKey,无法更新该行的id,newRow:",Oe),Ce(ne,Oe))}re.loading=!0;const ye=re.getRowData();try{await te({isAdd:re.isAdd,row:ye,setData:fe}),re.persist()}finally{re.loading=!1}}});if(l.watch(()=>_,async(ee,te,ne)=>{await re.validate()},{deep:!0}),_.children&&_.children.length>0)for(const ee of _.children){ee[e.editable.rowKey]||(ee[e.editable.rowKey]=g());const te=ee[e.editable.rowKey];a[te]=h(te,ee)}return G&&re.active(),re}let m=0;function g(){return m++,m}function p(D){D==null&&(D=n.getData());const _=Object.assign({},a);X.forOwn(a,(k,b)=>{delete a[b]}),X.forEach(D,k=>{k[e.editable.rowKey]||(k[e.editable.rowKey]=g());const b=k[e.editable.rowKey];_[b]?a[b]=_[b]:a[b]=h(b,k)}),u.value.onSetup&&u.value.onSetup()}function x(D){const _=e.editable.rowKey,k=[];for(const b of D){const A={[_]:b[_]};b.children&&b.children.length&&(A.children=x(b.children)),k.push(A)}return k}l.watch(()=>{const D=e.data;let _=[];return D!=null&&D instanceof Array&&(_=x(D)),JSON.stringify(_)},(D,_)=>{u.value.enabled&&p(e.data)},{immediate:!0}),l.watch(()=>u.value.enabled,D=>{var _;D&&(((_=n.getData())==null?void 0:_.length)>0&&p(),u.value.onEnabled&&u.value.onEnabled({...u.value}))},{immediate:!0}),l.watch(()=>u.value.mode,()=>{u.value.onEnabled&&u.value.onEnabled({...u.value})});function v(D,_){var k;if(_!=null)return(k=a[D])==null?void 0:k.cells[_]}function y(D={}){c(({cell:_})=>{_.active({...D,exclusive:!1})})}function w(){c(({cell:D})=>{D.isEditing&&D.inactive()})}async function E(){c(({cell:D})=>{D.isEditing&&D.save()})}function R(){c(({cell:D})=>{D.isEditing&&D.cancel()})}function F(){w(),o(({row:D})=>{delete D.isAdd}),c(({cell:D})=>{delete D.newValue,delete D.oldValue})}function C(){c(({cell:D})=>{D.resume()})}function U(){let D=!1;return o(({cells:_})=>{X.forEach(_,k=>{if(k.isChanged())return D=!0,"break"})}),D}let S=0;function W(D,_){hl(D,k=>{z(k,_)})}function z(D,_){const k=X.get(_,D.key),b=l.unref(D.value);b!=null&&k==null&&X.set(_,D.key,b)}async function V(D={row:void 0,active:!0}){let _=D.row||{[u.value.rowKey]:--S,[e.rowKey]:S};if(W(u.value.addForm,_),D.addRowFunc){const k=await D.addRowFunc({row:D.row});k&&(_=k)}else if(e.editable.addRow){const k=await e.editable.addRow(n.getData(),_);k&&(_=k)}else n.unshift(_);if(D.active??e.editable.activeDefault){await l.nextTick();const k=s(_),b=ae(k);b&&b.active()}}function j(D,_){for(let k=0;k<_.length;k++){const b=_[k];if(s(b)===D)return X.remove(_,b),!0;if(b.children&&b.children.length>0&&j(D,b.children))return}return!1}function H(D){delete a[D],j(D,n.getData())}function Y(D){const{cols:_}=D;o(({cells:k})=>{X.forEach(_,b=>{k[b].active({...D,exclusive:!1})})})}function ae(D){return a[D]}function se(){const D=[];return o(({row:_})=>{_.isEditing&&D.push(_)}),D}async function de(){const D={};let _=!1;for(const k in a){const b=a[k],A=await b.validate();A!=!0&&(D[b.editableId]=A,_=!0)}return _?D:!0}function K(D){for(const _ of D)delete _[e.editable.rowKey],_.children&&_.children.length>0&&K(_.children);return D}function we(D){return D==null&&(D=X.cloneDeep(n.getData())),D==null?[]:K(D)}return{editable:{options:u,setupEditable:p,inactive:w,active:y,persist:F,saveEach:E,cancelAll:R,resume:C,addRow:V,removeRow:H,getEditableRow:ae,activeCols:Y,hasDirty:U,getEditableCell:v,eachRows:o,eachCells:c,validate:de,getCleanTableData:we,getActiveRows:se}}}const FD="";function Jx(e){const t=(n,a)=>X.get(e,`value[${n}].${a}`);l.provide("componentRef:get",t);const r=(n,a,i)=>X.set(e,`value[${n}].${a}`,i);return l.provide("componentRef:set",r),{getter:t,setter:r}}function Zx({props:e,ui:t,sortedColumns:r,renderRowHandle:n,renderCellComponent:a}){l.resolveDynamicComponent(t.table.name);const i=l.resolveDynamicComponent(t.tableColumn.name),s=l.resolveDynamicComponent(t.tableColumnGroup.name);t.tableColumn;const o={},c=f=>{const u={...f.columnSlots},d="cell_"+f.key;let h=i;if(f.children)u.default=()=>{const g=[];return X.forEach(f.children,p=>{p.show!==!1&&g.push(c(p))}),g},h=s;else if(f.type!=null){De.debug("cell render column.type:",f.type);const g=e.cellSlots&&e.cellSlots[d];g&&(u.default=g)}else u.default=g=>a(f,g);const m={...f};return delete m.children,l.createVNode(h,l.mergeProps({ref:"tableColumnRef"},m,{label:f.title,prop:f.key,dataIndex:f.key}),u)};return o.default=()=>{var u;const f=[];if(X.forEach(r,d=>{d.show!==!1&&f.push(c(d))}),e.rowHandle&&e.rowHandle.show!==!1){const d={default:n,...(u=e.rowHandle)==null?void 0:u.columnSlots};f.push(l.createVNode(i,l.mergeProps({ref:"tableColumnRef"},e.rowHandle,{label:e.rowHandle.title,prop:e.rowHandle.key||"rowHandle"}),d))}return f},e.slots&&X.forEach(e.slots,(f,u)=>{o[u]=f}),o}function E0(e,t){var u;const{props:r,renderRowHandle:n,renderCellComponent:a,sortedColumns:i}=e,{ui:s}=ue.useUi(),o=i??{},c=[];let f=s.table;r.tableVersion==="v2"&&(f=s.tableV2);for(const d in o){const h=o[d];if(h.show===!1)continue;const m={...h};if(m._parent=t,m.dataIndex=h.key,c.push(m),h.children!=null){const p={...e,sortedColumns:h.children};delete p.renderRowHandle,m.children=E0(p,m)}else if(h.type==null){const p=m[f.renderMethod],x={...m};delete x[f.renderMethod],p?m[f.renderMethod]=(v,y,w)=>{const E=f.rebuildRenderScope(v,y,w);return p(E,()=>a(x,E))}:m[f.renderMethod]=(v,y,w)=>{const E=f.rebuildRenderScope(v,y,w);return a(x,E)}}}if(n&&((u=r.rowHandle)==null?void 0:u.show)!==!1){const d={key:"_rowHandle",...r.rowHandle};d[f.renderMethod]=(h,m,g)=>{const p=f.rebuildRenderScope(h,m,g);return n(p)},c.push(d)}return De.debug("table columns:",c),c}const S0=l.defineComponent({name:"FsTable",inheritAttrs:!1,props:{tableVersion:{type:String},slots:{type:Object},cellSlots:{type:Object},columns:{type:Object,default:void 0},rowHandle:{type:Object},show:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},conditionalRender:{type:Object},editable:{type:Object,default(){return{}}},loading:{type:Boolean,default:!1},sort:{type:Object},request:{type:Object},rowKey:{type:[String,Function],default:"id"}},emits:["row-handle","value-change","pagination-change","filter-change","sort-change","data-change"],setup(e,t){mr.trace("fs-table");const r=l.ref(),n=l.ref([]);Jx(n);const a=(S,W)=>{if(!W||S==null||S>n.value.length)return;const V=n.value[S][W];return V==null?void 0:V.getTargetRef()},{ui:i}=ue.useUi(),s=l.getCurrentInstance();l.watch(()=>e.data,S=>{t.emit("data-change",{data:S})});let o=i.table,c=i.tableColumn;e.tableVersion==="v2"&&(o=i.tableV2,c=i.tableColumnV2);function f(S=0){o.scrollTo({top:S,tableRef:r,fsTableRef:s})}const u=l.resolveDynamicComponent(o.name),d=qx(e,t,r),h=(S,W)=>{const z=W[c.row],V=z,j=W[c.index];return W.index=j,{...W,key:S.key,value:X.get(z,S.key),row:z,form:V,getComponentRef:H=>a(j,H)}};function m(S){t.emit("row-handle",S)}const g=o.onChange({onSortChange:S=>{t.emit("sort-change",S)},onFilterChange:S=>{t.emit("filter-change",S)},onPagination:()=>{},bubbleUp:S=>{S(t.attrs)}}),p=S=>{S.index=S[c.index];const W="cell-rowHandle",z={};if(e.cellSlots)for(const V in e.cellSlots)V.startsWith(W)&&(z[V]=e.cellSlots[V]);return l.createVNode(l.resolveComponent("fs-row-handle"),l.mergeProps(e.rowHandle,{scope:S,onHandle:m}),z)},x=(S,W)=>{var K,we,D,_,k,b,A,G,re,ee,te,ne;const z="cell_"+S.key,V=W.row=W[c.row],j={modelValue:X.get(W[c.row],S.key),"onUpdate:modelValue":Ce=>{var fe;X.set(W[c.row],S.key,Ce);const I=h(S,W);t.emit("value-change",I),S.valueChange&&(S.valueChange instanceof Function?S.valueChange(I):(fe=S.valueChange)==null||fe.handle(I))}},H=Ce=>{const I=W[c.index],fe=S.key;let ye=n.value[I];ye==null&&(n.value[I]=ye={}),ye[fe]=Ce},Y=W[c.index],ae=V[(K=e.editable)==null?void 0:K.rowKey],se=e.cellSlots&&e.cellSlots[z],de=h(S,W);if(((_=(D=(we=d.editable)==null?void 0:we.options)==null?void 0:D.value)==null?void 0:_.enabled)===!0){const Ce=d.editable.getEditableCell(ae,S.key);return l.createVNode(l.resolveComponent("fs-editable-cell"),l.mergeProps({ref:H,key:S.key,columnKey:S.key,index:Y,editableId:ae,item:S,editableCell:Ce,editableOpts:(b=(k=d.editable)==null?void 0:k.options)==null?void 0:b.value,scope:de,slots:se,disabled:(re=(G=(A=d.editable)==null?void 0:A.options)==null?void 0:G.value)==null?void 0:re.disabled,readonly:(ne=(te=(ee=d.editable)==null?void 0:ee.options)==null?void 0:te.value)==null?void 0:ne.readonly},j),null)}else return l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:H,key:S.key,item:S,scope:de,slots:se},j,{conditionalRender:e.conditionalRender}),null)},{expose:v}=t;v({tableRef:r,componentRefs:n,getComponentRef:a,...d,scrollTo:f});const{doColumnsSort:y}=Bs(),w=o.renderMode,E=l.computed(()=>({[o.data]:e.data})),{merge:R,cloneDeep:F}=Ze(),C=l.computed(()=>{let S=e.rowKey;return i.type==="naive"&&typeof e.rowKey=="string"&&(S=W=>W[e.rowKey]),R({rowKey:S},t.attrs,g)}),U=l.computed(()=>y(F(e.columns)));if(w==="slot"){const S=l.computed(()=>Zx({props:e,ui:i,sortedColumns:U.value,renderRowHandle:p,renderCellComponent:x}));return()=>{if(e.show===!1)return;const W=l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},C.value,E.value),S.value);if(typeof o.vLoading=="string"){const z=l.resolveDirective(o.vLoading);return l.withDirectives(W,[[z,e.loading]])}return W}}else{const S=l.computed(()=>E0({props:e,ctx:t,ui:i,getContextFn:h,sortedColumns:U.value,componentRefs:n,renderRowHandle:p,renderCellComponent:x,columns:e.columns})),W=l.computed(()=>{const V=[];function j(H){H.forEach(Y=>{Y.children?j(Y.children):V.push(Y)})}return j(S.value),V}),z=l.computed(()=>o.buildMultiHeadersBind?o.buildMultiHeadersBind({treeColumns:S.value,flatColumns:W.value}):{bind:{},slots:{}});return()=>{var Y;if(e.show===!1)return;const V={...e.slots,...(Y=z.value)==null?void 0:Y.slots},j=o.columnsIsFlat,H=(ae={})=>{var se;return l.createVNode(u,l.mergeProps({ref:r,loading:e.loading},C.value,{columns:j?W.value:S.value},E.value,(se=z.value)==null?void 0:se.bind,ae),V)};if(e.tableVersion==="v2"&&i.type==="element"){const ae={default({width:se,height:de}){return H({width:se,height:de})}};return l.createVNode(l.resolveComponent("el-auto-resizer"),null,ae)}return H()}}}}),C0=l.defineComponent({name:"FsCell",props:{item:{},scope:{default(){return{}}},slots:{},conditionalRender:{type:Object}},setup(e,t){const{doComputed:r}=Nr(),{ui:n}=ue.useUi(),s=r(()=>e.item.component,()=>e.scope),o=l.ref();function c(){return o.value.getTargetRef()}t.expose({getTargetRef:c,targetRef:o});const f=l.computed(()=>{let h=e.item.showTitle;const m=e.scope.value;return h===!0&&(h=m),h}),u=l.computed(()=>m=>l.createVNode("span",{class:"fs-cell",title:f.value},[m])),d=()=>{var x,v;const h=e.scope.value,m=u.value,g={...e.scope,props:e.item},p=e.item.conditionalRender??e.conditionalRender;if(p&&p.match&&p.match(g))return m(p.render(g));if(e.slots)return m(e.slots(g));if(e.item.formatter)return m(e.item.formatter(g));if(e.item.cellRender)return m(e.item.cellRender(g));if(e.item.render)console.warn("column.render 配置已废弃,请使用column.cellRender代替");else return(x=s.value)!=null&&x.name?((v=s.value)==null?void 0:v.show)===!1?void 0:l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({title:f.value,ref:o},s.value,{scope:g}),null):m(X.toString(h))};if(e.item.tooltip){const h=l.resolveDynamicComponent(n.tooltip.name);return()=>{let m={},g={};typeof e.item.tooltip=="object"?(m=X.omit(e.item.tooltip,"slots"),g={...e.item.tooltip.slots}):g[n.tooltip.content]=()=>e.item.tooltip===!0?f.value??e.scope.value:typeof e.item.tooltip=="function"?e.item.tooltip():e.item.tooltip;const p={...g,[n.tooltip.trigger]:()=>d()};return l.createVNode(h,m,p)}}else return d}}),T0=l.defineComponent({name:"FsEditableCell",inheritAttrs:!1,props:{item:{},scope:{},index:{},editableId:{},columnKey:{},editableCell:{type:Object},editableOpts:{type:Object},slots:{},disabled:{},readonly:{}},setup(e,t){ue.uiContext.get();const{doComputed:r}=Nr();if(e.index===-1)return()=>{};const a=r(()=>{var m;return(m=e.editableCell)==null?void 0:m.getForm()},()=>e.scope),i=l.computed(()=>{var m;return a.value&&a.value.show!==!1&&((m=e.editableCell)==null?void 0:m.isEditable())});function s(m){m&&i.value&&e.editableCell.active()}async function o(){var m;if(((m=e.editableOpts)==null?void 0:m.mode)==="free"){await e.editableCell.persist();return}await e.editableCell.save()}function c(){e.editableCell.cancel()}const f=l.computed(()=>{var m,g;return(((m=e.editableOpts)==null?void 0:m.mode)==="cell"||((g=e.editableOpts)==null?void 0:g.mode)==="free")&&e.editableCell.showAction!==!1}),u=l.computed(()=>e.editableCell.isChanged&&e.editableCell.isChanged()),d=()=>e.scope,h={default:()=>l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:"targetRef",item:e.item,scope:e.scope,slots:e.slots},t.attrs),null),edit:()=>{var g,p;let m=null;return(g=e.editableCell)!=null&&g.isEditing&&(a.value.blank===!1||((p=a.value.component)==null?void 0:p.show)===!1?m=null:a.value.conditionalRender&&a.value.conditionalRender.match&&a.value.conditionalRender.match(d())?m=l.createVNode(l.resolveComponent("fs-render"),l.mergeProps({"render-func":a.value.conditionalRender.render,scope:d()},t.attrs),null):a.value.render?m=l.createVNode(l.resolveComponent("fs-render"),l.mergeProps({"render-func":a.value.render,scope:d()},t.attrs),null):m=l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({ref:"targetInputRef"},a.value.component,t.attrs,{scope:e.scope}),null)),m}};return()=>{var p;if(!i.value||e.disabled||e.readonly)return l.createVNode(l.resolveComponent("fs-cell"),l.mergeProps({ref:"targetRef",item:e.item,scope:e.scope},t.attrs),null);const m=e.editableCell,g=f.value?(p=e.editableOpts)==null?void 0:p.activeTrigger:!1;return l.createVNode(l.resolveComponent("fs-editable"),{ref:"editableRef",class:"fs-editable-cell",editing:m==null?void 0:m.isEditing,showAction:f.value,dirty:u.value,"onUpdate:editing":s,onSubmit:o,onCancel:c,loading:m==null?void 0:m.loading,trigger:g,validateErrors:m==null?void 0:m.validateErrors},h)}},methods:{getTargetRef(){var e;return((e=this.$refs.targetInputRef)==null?void 0:e.getTargetRef())||this.$refs.targetRef}}}),Qx={class:"fs-editable"},ev={class:"fs-editable-input"},tv={key:0,class:"fs-editable-dirty"},rv={key:0,class:"fs-editable-action fs-editable-icon"},nv={class:"fs-editable-input"},av={class:"fs-editable-action"},iv={class:"error-icon"},F0=l.defineComponent({__name:"fs-editable",props:{disabled:{type:Boolean,default:!1},editing:{type:Boolean,default:!1},dirty:{type:Boolean,default:!1},trigger:{type:[String,Boolean],default:"onClick"},loading:{type:Boolean,default:!1},showAction:{type:Boolean,default:!0},validateErrors:{default:()=>[]}},emits:["update:editing","submit","cancel"],setup(e,{emit:t}){const r=e,{ui:n}=ue.useUi(),a=t,i=l.computed(()=>r.trigger?{[r.trigger]:()=>{a("update:editing",!0)}}:{});function s(){a("submit")}function o(){a("cancel")}function c(){var u;return((u=r.validateErrors)==null?void 0:u.length)>0}function f(){var u,d;if(((u=r.validateErrors)==null?void 0:u.length)!==0)return(d=r.validateErrors)==null?void 0:d.map(h=>h.message).join(",")}return(u,d)=>{const h=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("div",Qx,[!u.editing||u.disabled?(l.openBlock(),l.createElementBlock("div",l.mergeProps({key:0,class:"fs-editable-inner fs-editable-pointer"},i.value),[l.createElementVNode("div",ev,[u.dirty?(l.openBlock(),l.createElementBlock("div",tv)):l.createCommentVNode("",!0),l.renderSlot(u.$slots,"default")]),u.trigger&&!u.disabled?(l.openBlock(),l.createElementBlock("div",rv,[l.createVNode(h,{icon:l.unref(n).icons.edit},null,8,["icon"])])):l.createCommentVNode("",!0)],16)):(l.openBlock(),l.createElementBlock("div",{key:1,class:l.normalizeClass(["fs-editable-inner",{"fs-validate-error":c()}])},[l.createElementVNode("div",nv,[l.renderSlot(u.$slots,"edit")]),l.createElementVNode("div",av,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(n).tooltip.name),null,{[l.unref(n).tooltip.content]:l.withCtx(()=>[l.createElementVNode("span",iv,l.toDisplayString(f()),1)]),[l.unref(n).tooltip.trigger]:l.withCtx(()=>[l.createVNode(h,{class:l.normalizeClass({hidden:!c(),"error-icon":!0}),size:"mini",icon:l.unref(n).icons.info},null,8,["class","icon"])]),_:2},1024)),u.showAction?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[u.loading?(l.openBlock(),l.createBlock(h,{key:0,size:"mini",spin:!0,icon:l.unref(n).icons.refresh},null,8,["icon"])):(l.openBlock(),l.createBlock(h,{key:1,size:"mini",icon:l.unref(n).icons.check,onClick:s},null,8,["icon"])),l.createVNode(h,{class:l.normalizeClass({hidden:u.loading}),size:"mini",icon:l.unref(n).icons.close,onClick:o},null,8,["class","icon"])],64)):l.createCommentVNode("",!0)])],2))])}}}),AD="",sv=l.defineComponent({name:"FsActionbar",props:{buttons:{}},emits:["action"],setup(e,t){function r(a,i,s){const o={key:a,btn:i,$event:s};if(i.click){i.click(o);return}if(i.onClick){i.onClick(o);return}t.emit("action",o)}const n=l.computed(()=>{let a=[];for(let s in e.buttons)a.push({...e.buttons[s],_key:s});a=X.sortBy(a,s=>s.order??Un.orderDefault);const i={};return a.forEach(s=>{let o=s._key;delete s._key,i[o]=s}),i});return{onClick:r,computedButtons:n}}}),DD="",ov={class:"fs-actionbar"};function lv(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",ov,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(o,c)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:c},[o.show!==!1?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},o,{onClick:f=>e.onClick(c,o,f)}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))])}const A0=rt(sv,[["render",lv]]);class cv{constructor(){Te(this,"valueChange");Te(this,"mergeForm")}}const Us="ColumnsFilterContext",fv=l.defineComponent({__name:"index",props:{container:{default:()=>({is:"fs-columns-filter-layout-default"})},is:{},show:{type:Boolean},mode:{default:"default"},columns:{},originalColumns:{},storage:{type:[Boolean,String,Object],default:!0},text:{},onReset:{},onSubmit:{}},emits:["update:columns","update:show","reset","submit"],setup(e,{expose:t,emit:r}){const n=e,a=r,{t:i}=Kt(),s=ue.uiContext.get(),o=l.ref(!1),c=()=>{o.value=!0},f=l.computed(()=>y(n.originalColumns)),u=l.ref([]),d=l.computed(()=>{const D={};return p(f.value,_=>{D[_.__key]=_}),D}),{merge:h,cloneDeep:m}=Ze(),g=l.computed(()=>{const D={title:i("fs.toolbar.columnFilter.title"),fixed:i("fs.toolbar.columnFilter.fixed"),order:i("fs.toolbar.columnFilter.order"),reset:i("fs.toolbar.columnFilter.reset"),confirm:i("fs.toolbar.columnFilter.confirm"),unnamed:i("fs.toolbar.columnFilter.unnamed")};return h(D,n.text),D});function p(D,_){if(D)if(Array.isArray(D))for(const k of D)_(k),k.children&&p(k.children,_);else for(const k in D){const b=D[k];_(b),b.children&&p(b.children,_)}}function x(D){return{key:D.key,title:D.title,fixed:D.fixed??!1,show:D.show??!0,__show:D.columnSetShow!==!1,__disabled:D.columnSetDisabled??!1}}function v(D){const _={};return X.forEach(D,k=>{const b=X.omit(k,"children","__show","__disabled","__parent","__key");k.children&&k.children.length>0&&(b.children=v(k.children)),_[k.key]=b}),_}function y(D,_){const k=[];return X.forEach(D,b=>{const A=x(b);A.__parent=_,A.__key=`${(_==null?void 0:_.key)||""}.${b.key}`,k.push(A),b.children&&(A.children=y(b.children,A))}),k}function w(D){u.value=y(D)}async function E(){u.value=y(n.originalColumns),await R(!0),await ae(),a("reset")}async function R(D=!1){D||await H(u.value);const _=m(u.value);return p(_,k=>{k&&(delete k.__disabled,delete k.__show,delete k.__parent,delete k.__key)}),W(_),o.value=!1,_}async function F(D=!1){const _=await R(D);a("submit",{columns:_})}const C=l.computed(()=>n.originalColumns);l.provide(Us,{originalColumns:C,originalColumnsMap:d,currentColumns:u,text:g,active:o,submit:F,reset:E});async function U(){await F(!1),a("update:show",!1)}async function S(){await E(),a("update:show",!1)}function W(D){a("update:columns",v(D))}const z=l.inject("get:crudBinding",()=>({id:""})),V=l.ref();function j(){const D=typeof n.storage=="object"?n.storage:null,_=typeof n.storage=="string"?n.storage:"";if(V.value==null){const k=of.useRoute();V.value=new jo({$router:k,tableName:"columnsFilter",keyType:_,remoteStorage:D})}return V.value.id=z().id,V.value}async function H(D){if(n.storage===!1)return;const _=m(D);p(_,k=>{delete k.__parent}),await j().updateTableValue(_)}async function Y(){if(n.storage!==!1)return await j().getTableValue()}async function ae(){await j().clearTableValue()}function se(D){const _=[];p(D,b=>{const A=X.pick(b,"key","__show","__disabled");_.push(JSON.stringify(A))}),_.sort();let k="";for(const b of _)k+=b;return k}l.watch(()=>n.columns,D=>{w(D)});const de=async()=>{w(n.columns);const D=await Y();if(D){const _=se(D);if(se(f.value)!==_)return;u.value=D,await l.nextTick(),await F(!0)}};async function K(D){await D(u),await R()}l.watch(()=>f.value,async D=>{await de()},{immediate:!0}),t({start:c,save:R,update:K,original:f,columns:u});function we(D){return D.label||D.title||D.key||g.value.unnamed}return(D,_)=>{var b;const k=l.resolveComponent("fs-button");return D.mode==="simple"?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),{class:"fs-table-columns-filter-simple"},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(u.value,(A,G)=>{var re;return l.withDirectives((l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{key:G,span:6},{default:l.withCtx(()=>{var ee;return[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).checkbox.name),l.normalizeProps({[l.unref(s).checkbox.modelValue]:A.show,["onUpdate:"+l.unref(s).checkbox.modelValue]:te=>A.show=te,disabled:((ee=f.value[A.key])==null?void 0:ee.__disabled)===!0,class:"item-label",title:we(A)}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(we(A)),1)]),_:2},1040,["disabled","title"]))]}),_:2},1024)),[[l.vShow,((re=f.value[A.key])==null?void 0:re.__show)!==!1]])}),128))]),_:1})),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).divider.name))),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),null,{default:l.withCtx(()=>[l.createVNode(k,{style:{"margin-right":"5px"},type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,onClick:_[0]||(_[0]=A=>U())},null,8,["icon","text"]),l.createVNode(k,{icon:l.unref(s).icons.refresh,text:g.value.reset,onClick:S},null,8,["icon","text"])]),_:1}))],64)):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(((b=D.container)==null?void 0:b.is)||"fs-columns-filter-layout-default"),l.normalizeProps(l.mergeProps({key:1},D.container)),{buttons:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).row.name),{class:"fs-drawer-footer",gutter:10},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{span:12},{default:l.withCtx(()=>[l.createVNode(k,{icon:l.unref(s).icons.refresh,text:g.value.reset,block:"",onClick:E},null,8,["icon","text"])]),_:1})),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).col.name),{span:12},{default:l.withCtx(()=>[l.createVNode(k,{type:"primary",icon:l.unref(s).icons.check,text:g.value.confirm,block:"",onClick:_[1]||(_[1]=A=>F(!1))},null,8,["icon","text"])]),_:1}))]),_:1}))]),_:1},16))}}}),RD="",uv=l.defineComponent({name:"FsToolbar",components:{FsTableColumnsFilter:fv},props:{buttons:{type:Object},compact:{type:Boolean,default:!0},columns:{type:Object,default:void 0},storage:{type:[String,Boolean],default:!0},slots:{},columnsFilter:{type:Object}},emits:["update:columns"],setup(e,t){Kt();const r=l.ref(),{ui:n}=ue.useUi(),{merge:a}=Ze(),i=l.computed(()=>{const c={columns:{click:()=>{r.value.start()}}};a(c,e.buttons);let f=[];for(let d in c)f.push({...c[d],_key:d});f=X.sortBy(f,d=>d.order??Un.orderDefault);const u={};return f.forEach(d=>{let h=d._key;delete d._key,u[h]=d}),u}),s=l.ref(!1);return{ui:n,columnsFilterRef:r,computedButtons:i,popoverVisible:s,handleSimpleClick:()=>{n.type!=="element"&&(s.value=!s.value)}}}}),OD="",dv={class:"fs-toolbar"};function hv(e,t,r,n,a,i){var o;const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",dv,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(c,f)=>{var u;return l.openBlock(),l.createElementBlock(l.Fragment,{key:f},[c.show!==!1?(l.openBlock(),l.createElementBlock(l.Fragment,{key:0},[f==="columns"&&e.columnsFilter&&((u=e.columnsFilter)==null?void 0:u.mode)==="simple"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.popover.name),l.normalizeProps({key:0,[e.ui.popover.visible]:e.popoverVisible,["onUpdate:"+e.ui.popover.visible]:t[2]||(t[2]=d=>e.popoverVisible=d),"display-directive":"show",placement:"bottom",width:760,trigger:"click"}),{[e.ui.popover.triggerSlotName]:l.withCtx(()=>[l.createVNode(s,l.mergeProps({ref_for:!0},c,{onClick:e.handleSimpleClick}),null,16,["onClick"])]),[e.ui.popover.contentSlotName]:l.withCtx(()=>[e.columns?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.columnsFilter.is||"fs-table-columns-filter"),l.mergeProps({key:0,ref_for:!0,ref:"columnsFilterRef",show:e.popoverVisible,"onUpdate:show":t[0]||(t[0]=d=>e.popoverVisible=d),mode:"simple"},{ref_for:!0},e.columnsFilter,{columns:e.columns,storage:e.storage,"onUpdate:columns":t[1]||(t[1]=d=>e.$emit("update:columns",d))}),null,16,["show","columns","storage"])):l.createCommentVNode("",!0)]),_:2},1040)):(l.openBlock(),l.createBlock(s,l.mergeProps({key:1,ref_for:!0},c,{onClick:d=>c.click()}),null,16,["onClick"]))],64)):l.createCommentVNode("",!0)],64)}),128)),e.columns&&((o=e.columnsFilter)==null?void 0:o.mode)!=="simple"?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.columnsFilter.is||"fs-table-columns-filter"),l.mergeProps({key:0,ref:"columnsFilterRef",storage:e.storage},e.columnsFilter,{columns:e.columns,"onUpdate:columns":t[3]||(t[3]=c=>e.$emit("update:columns",c))}),null,16,["storage","columns"])):l.createCommentVNode("",!0)])}const D0=rt(uv,[["render",hv]]);/**!
|
||
* Sortable 1.14.0
|
||
* @author RubaXa <trash@rubaxa.org>
|
||
* @author owenm <owen23355@gmail.com>
|
||
* @license MIT
|
||
*/function R0(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable})),r.push.apply(r,n)}return r}function fn(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?R0(Object(r),!0).forEach(function(n){mv(e,n,r[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):R0(Object(r)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))})}return e}function $s(e){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$s=function(t){return typeof t}:$s=function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},$s(e)}function mv(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Fn(){return Fn=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},Fn.apply(this,arguments)}function pv(e,t){if(e==null)return{};var r={},n=Object.keys(e),a,i;for(i=0;i<n.length;i++)a=n[i],!(t.indexOf(a)>=0)&&(r[a]=e[a]);return r}function gv(e,t){if(e==null)return{};var r=pv(e,t),n,a;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)n=i[a],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var xv="1.14.0";function An(e){if(typeof window<"u"&&window.navigator)return!!navigator.userAgent.match(e)}var Dn=An(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),Ai=An(/Edge/i),O0=An(/firefox/i),Di=An(/safari/i)&&!An(/chrome/i)&&!An(/android/i),B0=An(/iP(ad|od|hone)/i),vv=An(/chrome/i)&&An(/android/i),N0={capture:!1,passive:!1};function Je(e,t,r){e.addEventListener(t,r,!Dn&&N0)}function Xe(e,t,r){e.removeEventListener(t,r,!Dn&&N0)}function Ws(e,t){if(t){if(t[0]===">"&&(t=t.substring(1)),e)try{if(e.matches)return e.matches(t);if(e.msMatchesSelector)return e.msMatchesSelector(t);if(e.webkitMatchesSelector)return e.webkitMatchesSelector(t)}catch{return!1}return!1}}function wv(e){return e.host&&e!==document&&e.host.nodeType?e.host:e.parentNode}function un(e,t,r,n){if(e){r=r||document;do{if(t!=null&&(t[0]===">"?e.parentNode===r&&Ws(e,t):Ws(e,t))||n&&e===r)return e;if(e===r)break}while(e=wv(e))}return null}var I0=/\s+/g;function yr(e,t,r){if(e&&t)if(e.classList)e.classList[r?"add":"remove"](t);else{var n=(" "+e.className+" ").replace(I0," ").replace(" "+t+" "," ");e.className=(n+(r?" "+t:"")).replace(I0," ")}}function Ie(e,t,r){var n=e&&e.style;if(n){if(r===void 0)return document.defaultView&&document.defaultView.getComputedStyle?r=document.defaultView.getComputedStyle(e,""):e.currentStyle&&(r=e.currentStyle),t===void 0?r:r[t];!(t in n)&&t.indexOf("webkit")===-1&&(t="-webkit-"+t),n[t]=r+(typeof r=="string"?"":"px")}}function Ha(e,t){var r="";if(typeof e=="string")r=e;else do{var n=Ie(e,"transform");n&&n!=="none"&&(r=n+" "+r)}while(!t&&(e=e.parentNode));var a=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return a&&new a(r)}function P0(e,t,r){if(e){var n=e.getElementsByTagName(t),a=0,i=n.length;if(r)for(;a<i;a++)r(n[a],a);return n}return[]}function dn(){var e=document.scrollingElement;return e||document.documentElement}function Ot(e,t,r,n,a){if(!(!e.getBoundingClientRect&&e!==window)){var i,s,o,c,f,u,d;if(e!==window&&e.parentNode&&e!==dn()?(i=e.getBoundingClientRect(),s=i.top,o=i.left,c=i.bottom,f=i.right,u=i.height,d=i.width):(s=0,o=0,c=window.innerHeight,f=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(t||r)&&e!==window&&(a=a||e.parentNode,!Dn))do if(a&&a.getBoundingClientRect&&(Ie(a,"transform")!=="none"||r&&Ie(a,"position")!=="static")){var h=a.getBoundingClientRect();s-=h.top+parseInt(Ie(a,"border-top-width")),o-=h.left+parseInt(Ie(a,"border-left-width")),c=s+i.height,f=o+i.width;break}while(a=a.parentNode);if(n&&e!==window){var m=Ha(a||e),g=m&&m.a,p=m&&m.d;m&&(s/=p,o/=g,d/=g,u/=p,c=s+u,f=o+d)}return{top:s,left:o,bottom:c,right:f,width:d,height:u}}}function M0(e,t,r){for(var n=Hn(e,!0),a=Ot(e)[t];n;){var i=Ot(n)[r],s=void 0;if(r==="top"||r==="left"?s=a>=i:s=a<=i,!s)return n;if(n===dn())break;n=Hn(n,!1)}return!1}function ja(e,t,r,n){for(var a=0,i=0,s=e.children;i<s.length;){if(s[i].style.display!=="none"&&s[i]!==Pe.ghost&&(n||s[i]!==Pe.dragged)&&un(s[i],r.draggable,e,!1)){if(a===t)return s[i];a++}i++}return null}function ml(e,t){for(var r=e.lastElementChild;r&&(r===Pe.ghost||Ie(r,"display")==="none"||t&&!Ws(r,t));)r=r.previousElementSibling;return r||null}function Ir(e,t){var r=0;if(!e||!e.parentNode)return-1;for(;e=e.previousElementSibling;)e.nodeName.toUpperCase()!=="TEMPLATE"&&e!==Pe.clone&&(!t||Ws(e,t))&&r++;return r}function L0(e){var t=0,r=0,n=dn();if(e)do{var a=Ha(e),i=a.a,s=a.d;t+=e.scrollLeft*i,r+=e.scrollTop*s}while(e!==n&&(e=e.parentNode));return[t,r]}function _v(e,t){for(var r in e)if(e.hasOwnProperty(r)){for(var n in t)if(t.hasOwnProperty(n)&&t[n]===e[r][n])return Number(r)}return-1}function Hn(e,t){if(!e||!e.getBoundingClientRect)return dn();var r=e,n=!1;do if(r.clientWidth<r.scrollWidth||r.clientHeight<r.scrollHeight){var a=Ie(r);if(r.clientWidth<r.scrollWidth&&(a.overflowX=="auto"||a.overflowX=="scroll")||r.clientHeight<r.scrollHeight&&(a.overflowY=="auto"||a.overflowY=="scroll")){if(!r.getBoundingClientRect||r===document.body)return dn();if(n||t)return r;n=!0}}while(r=r.parentNode);return dn()}function yv(e,t){if(e&&t)for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);return e}function pl(e,t){return Math.round(e.top)===Math.round(t.top)&&Math.round(e.left)===Math.round(t.left)&&Math.round(e.height)===Math.round(t.height)&&Math.round(e.width)===Math.round(t.width)}var Ri;function V0(e,t){return function(){if(!Ri){var r=arguments,n=this;r.length===1?e.call(n,r[0]):e.apply(n,r),Ri=setTimeout(function(){Ri=void 0},t)}}}function kv(){clearTimeout(Ri),Ri=void 0}function U0(e,t,r){e.scrollLeft+=t,e.scrollTop+=r}function $0(e){var t=window.Polymer,r=window.jQuery||window.Zepto;return t&&t.dom?t.dom(e).cloneNode(!0):r?r(e).clone(!0)[0]:e.cloneNode(!0)}var kr="Sortable"+new Date().getTime();function bv(){var e=[],t;return{captureAnimationState:function(){if(e=[],!!this.options.animation){var n=[].slice.call(this.el.children);n.forEach(function(a){if(!(Ie(a,"display")==="none"||a===Pe.ghost)){e.push({target:a,rect:Ot(a)});var i=fn({},e[e.length-1].rect);if(a.thisAnimationDuration){var s=Ha(a,!0);s&&(i.top-=s.f,i.left-=s.e)}a.fromRect=i}})}},addAnimationState:function(n){e.push(n)},removeAnimationState:function(n){e.splice(_v(e,{target:n}),1)},animateAll:function(n){var a=this;if(!this.options.animation){clearTimeout(t),typeof n=="function"&&n();return}var i=!1,s=0;e.forEach(function(o){var c=0,f=o.target,u=f.fromRect,d=Ot(f),h=f.prevFromRect,m=f.prevToRect,g=o.rect,p=Ha(f,!0);p&&(d.top-=p.f,d.left-=p.e),f.toRect=d,f.thisAnimationDuration&&pl(h,d)&&!pl(u,d)&&(g.top-d.top)/(g.left-d.left)===(u.top-d.top)/(u.left-d.left)&&(c=Sv(g,h,m,a.options)),pl(d,u)||(f.prevFromRect=u,f.prevToRect=d,c||(c=a.options.animation),a.animate(f,g,d,c)),c&&(i=!0,s=Math.max(s,c),clearTimeout(f.animationResetTimer),f.animationResetTimer=setTimeout(function(){f.animationTime=0,f.prevFromRect=null,f.fromRect=null,f.prevToRect=null,f.thisAnimationDuration=null},c),f.thisAnimationDuration=c)}),clearTimeout(t),i?t=setTimeout(function(){typeof n=="function"&&n()},s):typeof n=="function"&&n(),e=[]},animate:function(n,a,i,s){if(s){Ie(n,"transition",""),Ie(n,"transform","");var o=Ha(this.el),c=o&&o.a,f=o&&o.d,u=(a.left-i.left)/(c||1),d=(a.top-i.top)/(f||1);n.animatingX=!!u,n.animatingY=!!d,Ie(n,"transform","translate3d("+u+"px,"+d+"px,0)"),this.forRepaintDummy=Ev(n),Ie(n,"transition","transform "+s+"ms"+(this.options.easing?" "+this.options.easing:"")),Ie(n,"transform","translate3d(0,0,0)"),typeof n.animated=="number"&&clearTimeout(n.animated),n.animated=setTimeout(function(){Ie(n,"transition",""),Ie(n,"transform",""),n.animated=!1,n.animatingX=!1,n.animatingY=!1},s)}}}}function Ev(e){return e.offsetWidth}function Sv(e,t,r,n){return Math.sqrt(Math.pow(t.top-e.top,2)+Math.pow(t.left-e.left,2))/Math.sqrt(Math.pow(t.top-r.top,2)+Math.pow(t.left-r.left,2))*n.animation}var za=[],gl={initializeByDefault:!0},Oi={mount:function(t){for(var r in gl)gl.hasOwnProperty(r)&&!(r in t)&&(t[r]=gl[r]);za.forEach(function(n){if(n.pluginName===t.pluginName)throw"Sortable: Cannot mount plugin ".concat(t.pluginName," more than once")}),za.push(t)},pluginEvent:function(t,r,n){var a=this;this.eventCanceled=!1,n.cancel=function(){a.eventCanceled=!0};var i=t+"Global";za.forEach(function(s){r[s.pluginName]&&(r[s.pluginName][i]&&r[s.pluginName][i](fn({sortable:r},n)),r.options[s.pluginName]&&r[s.pluginName][t]&&r[s.pluginName][t](fn({sortable:r},n)))})},initializePlugins:function(t,r,n,a){za.forEach(function(o){var c=o.pluginName;if(!(!t.options[c]&&!o.initializeByDefault)){var f=new o(t,r,t.options);f.sortable=t,f.options=t.options,t[c]=f,Fn(n,f.defaults)}});for(var i in t.options)if(t.options.hasOwnProperty(i)){var s=this.modifyOption(t,i,t.options[i]);typeof s<"u"&&(t.options[i]=s)}},getEventProperties:function(t,r){var n={};return za.forEach(function(a){typeof a.eventProperties=="function"&&Fn(n,a.eventProperties.call(r[a.pluginName],t))}),n},modifyOption:function(t,r,n){var a;return za.forEach(function(i){t[i.pluginName]&&i.optionListeners&&typeof i.optionListeners[r]=="function"&&(a=i.optionListeners[r].call(t[i.pluginName],n))}),a}};function Cv(e){var t=e.sortable,r=e.rootEl,n=e.name,a=e.targetEl,i=e.cloneEl,s=e.toEl,o=e.fromEl,c=e.oldIndex,f=e.newIndex,u=e.oldDraggableIndex,d=e.newDraggableIndex,h=e.originalEvent,m=e.putSortable,g=e.extraEventProperties;if(t=t||r&&r[kr],!!t){var p,x=t.options,v="on"+n.charAt(0).toUpperCase()+n.substr(1);window.CustomEvent&&!Dn&&!Ai?p=new CustomEvent(n,{bubbles:!0,cancelable:!0}):(p=document.createEvent("Event"),p.initEvent(n,!0,!0)),p.to=s||r,p.from=o||r,p.item=a||r,p.clone=i,p.oldIndex=c,p.newIndex=f,p.oldDraggableIndex=u,p.newDraggableIndex=d,p.originalEvent=h,p.pullMode=m?m.lastPutMode:void 0;var y=fn(fn({},g),Oi.getEventProperties(n,t));for(var w in y)p[w]=y[w];r&&r.dispatchEvent(p),x[v]&&x[v].call(t,p)}}var Tv=["evt"],pr=function(t,r){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=n.evt,i=gv(n,Tv);Oi.pluginEvent.bind(Pe)(t,r,fn({dragEl:ve,parentEl:vt,ghostEl:$e,rootEl:dt,nextEl:fa,lastDownEl:Hs,cloneEl:wt,cloneHidden:jn,dragStarted:Ni,putSortable:jt,activeSortable:Pe.active,originalEvent:a,oldIndex:Ga,oldDraggableIndex:Bi,newIndex:br,newDraggableIndex:zn,hideGhostForTarget:K0,unhideGhostForTarget:Y0,cloneNowHidden:function(){jn=!0},cloneNowShown:function(){jn=!1},dispatchSortableEvent:function(o){sr({sortable:r,name:o,originalEvent:a})}},i))};function sr(e){Cv(fn({putSortable:jt,cloneEl:wt,targetEl:ve,rootEl:dt,oldIndex:Ga,oldDraggableIndex:Bi,newIndex:br,newDraggableIndex:zn},e))}var ve,vt,$e,dt,fa,Hs,wt,jn,Ga,br,Bi,zn,js,jt,Xa=!1,zs=!1,Gs=[],ua,Xr,xl,vl,W0,H0,Ni,Ka,Ii,Pi=!1,Xs=!1,Ks,Yt,wl=[],_l=!1,Ys=[],qs=typeof document<"u",Js=B0,j0=Ai||Dn?"cssFloat":"float",Fv=qs&&!vv&&!B0&&"draggable"in document.createElement("div"),z0=function(){if(qs){if(Dn)return!1;var e=document.createElement("x");return e.style.cssText="pointer-events:auto",e.style.pointerEvents==="auto"}}(),G0=function(t,r){var n=Ie(t),a=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),i=ja(t,0,r),s=ja(t,1,r),o=i&&Ie(i),c=s&&Ie(s),f=o&&parseInt(o.marginLeft)+parseInt(o.marginRight)+Ot(i).width,u=c&&parseInt(c.marginLeft)+parseInt(c.marginRight)+Ot(s).width;if(n.display==="flex")return n.flexDirection==="column"||n.flexDirection==="column-reverse"?"vertical":"horizontal";if(n.display==="grid")return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(i&&o.float&&o.float!=="none"){var d=o.float==="left"?"left":"right";return s&&(c.clear==="both"||c.clear===d)?"vertical":"horizontal"}return i&&(o.display==="block"||o.display==="flex"||o.display==="table"||o.display==="grid"||f>=a&&n[j0]==="none"||s&&n[j0]==="none"&&f+u>a)?"vertical":"horizontal"},Av=function(t,r,n){var a=n?t.left:t.top,i=n?t.right:t.bottom,s=n?t.width:t.height,o=n?r.left:r.top,c=n?r.right:r.bottom,f=n?r.width:r.height;return a===o||i===c||a+s/2===o+f/2},Dv=function(t,r){var n;return Gs.some(function(a){var i=a[kr].options.emptyInsertThreshold;if(!(!i||ml(a))){var s=Ot(a),o=t>=s.left-i&&t<=s.right+i,c=r>=s.top-i&&r<=s.bottom+i;if(o&&c)return n=a}}),n},X0=function(t){function r(i,s){return function(o,c,f,u){var d=o.options.group.name&&c.options.group.name&&o.options.group.name===c.options.group.name;if(i==null&&(s||d))return!0;if(i==null||i===!1)return!1;if(s&&i==="clone")return i;if(typeof i=="function")return r(i(o,c,f,u),s)(o,c,f,u);var h=(s?o:c).options.group.name;return i===!0||typeof i=="string"&&i===h||i.join&&i.indexOf(h)>-1}}var n={},a=t.group;(!a||$s(a)!="object")&&(a={name:a}),n.name=a.name,n.checkPull=r(a.pull,!0),n.checkPut=r(a.put),n.revertClone=a.revertClone,t.group=n},K0=function(){!z0&&$e&&Ie($e,"display","none")},Y0=function(){!z0&&$e&&Ie($e,"display","")};qs&&document.addEventListener("click",function(e){if(zs)return e.preventDefault(),e.stopPropagation&&e.stopPropagation(),e.stopImmediatePropagation&&e.stopImmediatePropagation(),zs=!1,!1},!0);var da=function(t){if(ve){t=t.touches?t.touches[0]:t;var r=Dv(t.clientX,t.clientY);if(r){var n={};for(var a in t)t.hasOwnProperty(a)&&(n[a]=t[a]);n.target=n.rootEl=r,n.preventDefault=void 0,n.stopPropagation=void 0,r[kr]._onDragOver(n)}}},Rv=function(t){ve&&ve.parentNode[kr]._isOutsideThisEl(t.target)};function Pe(e,t){if(!(e&&e.nodeType&&e.nodeType===1))throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(e));this.el=e,this.options=t=Fn({},t),e[kr]=this;var r={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(e.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return G0(e,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(s,o){s.setData("Text",o.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:Pe.supportPointer!==!1&&"PointerEvent"in window&&!Di,emptyInsertThreshold:5};Oi.initializePlugins(this,e,r);for(var n in r)!(n in t)&&(t[n]=r[n]);X0(t);for(var a in this)a.charAt(0)==="_"&&typeof this[a]=="function"&&(this[a]=this[a].bind(this));this.nativeDraggable=t.forceFallback?!1:Fv,this.nativeDraggable&&(this.options.touchStartThreshold=1),t.supportPointer?Je(e,"pointerdown",this._onTapStart):(Je(e,"mousedown",this._onTapStart),Je(e,"touchstart",this._onTapStart)),this.nativeDraggable&&(Je(e,"dragover",this),Je(e,"dragenter",this)),Gs.push(this.el),t.store&&t.store.get&&this.sort(t.store.get(this)||[]),Fn(this,bv())}Pe.prototype={constructor:Pe,_isOutsideThisEl:function(t){!this.el.contains(t)&&t!==this.el&&(Ka=null)},_getDirection:function(t,r){return typeof this.options.direction=="function"?this.options.direction.call(this,t,r,ve):this.options.direction},_onTapStart:function(t){if(t.cancelable){var r=this,n=this.el,a=this.options,i=a.preventOnFilter,s=t.type,o=t.touches&&t.touches[0]||t.pointerType&&t.pointerType==="touch"&&t,c=(o||t).target,f=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||c,u=a.filter;if(Vv(n),!ve&&!(/mousedown|pointerdown/.test(s)&&t.button!==0||a.disabled)&&!f.isContentEditable&&!(!this.nativeDraggable&&Di&&c&&c.tagName.toUpperCase()==="SELECT")&&(c=un(c,a.draggable,n,!1),!(c&&c.animated)&&Hs!==c)){if(Ga=Ir(c),Bi=Ir(c,a.draggable),typeof u=="function"){if(u.call(this,t,c,this)){sr({sortable:r,rootEl:f,name:"filter",targetEl:c,toEl:n,fromEl:n}),pr("filter",r,{evt:t}),i&&t.cancelable&&t.preventDefault();return}}else if(u&&(u=u.split(",").some(function(d){if(d=un(f,d.trim(),n,!1),d)return sr({sortable:r,rootEl:d,name:"filter",targetEl:c,fromEl:n,toEl:n}),pr("filter",r,{evt:t}),!0}),u)){i&&t.cancelable&&t.preventDefault();return}a.handle&&!un(f,a.handle,n,!1)||this._prepareDragStart(t,o,c)}}},_prepareDragStart:function(t,r,n){var a=this,i=a.el,s=a.options,o=i.ownerDocument,c;if(n&&!ve&&n.parentNode===i){var f=Ot(n);if(dt=i,ve=n,vt=ve.parentNode,fa=ve.nextSibling,Hs=n,js=s.group,Pe.dragged=ve,ua={target:ve,clientX:(r||t).clientX,clientY:(r||t).clientY},W0=ua.clientX-f.left,H0=ua.clientY-f.top,this._lastX=(r||t).clientX,this._lastY=(r||t).clientY,ve.style["will-change"]="all",c=function(){if(pr("delayEnded",a,{evt:t}),Pe.eventCanceled){a._onDrop();return}a._disableDelayedDragEvents(),!O0&&a.nativeDraggable&&(ve.draggable=!0),a._triggerDragStart(t,r),sr({sortable:a,name:"choose",originalEvent:t}),yr(ve,s.chosenClass,!0)},s.ignore.split(",").forEach(function(u){P0(ve,u.trim(),yl)}),Je(o,"dragover",da),Je(o,"mousemove",da),Je(o,"touchmove",da),Je(o,"mouseup",a._onDrop),Je(o,"touchend",a._onDrop),Je(o,"touchcancel",a._onDrop),O0&&this.nativeDraggable&&(this.options.touchStartThreshold=4,ve.draggable=!0),pr("delayStart",this,{evt:t}),s.delay&&(!s.delayOnTouchOnly||r)&&(!this.nativeDraggable||!(Ai||Dn))){if(Pe.eventCanceled){this._onDrop();return}Je(o,"mouseup",a._disableDelayedDrag),Je(o,"touchend",a._disableDelayedDrag),Je(o,"touchcancel",a._disableDelayedDrag),Je(o,"mousemove",a._delayedDragTouchMoveHandler),Je(o,"touchmove",a._delayedDragTouchMoveHandler),s.supportPointer&&Je(o,"pointermove",a._delayedDragTouchMoveHandler),a._dragStartTimer=setTimeout(c,s.delay)}else c()}},_delayedDragTouchMoveHandler:function(t){var r=t.touches?t.touches[0]:t;Math.max(Math.abs(r.clientX-this._lastX),Math.abs(r.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){ve&&yl(ve),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;Xe(t,"mouseup",this._disableDelayedDrag),Xe(t,"touchend",this._disableDelayedDrag),Xe(t,"touchcancel",this._disableDelayedDrag),Xe(t,"mousemove",this._delayedDragTouchMoveHandler),Xe(t,"touchmove",this._delayedDragTouchMoveHandler),Xe(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,r){r=r||t.pointerType=="touch"&&t,!this.nativeDraggable||r?this.options.supportPointer?Je(document,"pointermove",this._onTouchMove):r?Je(document,"touchmove",this._onTouchMove):Je(document,"mousemove",this._onTouchMove):(Je(ve,"dragend",this),Je(dt,"dragstart",this._onDragStart));try{document.selection?Qs(function(){document.selection.empty()}):window.getSelection().removeAllRanges()}catch{}},_dragStarted:function(t,r){if(Xa=!1,dt&&ve){pr("dragStarted",this,{evt:r}),this.nativeDraggable&&Je(document,"dragover",Rv);var n=this.options;!t&&yr(ve,n.dragClass,!1),yr(ve,n.ghostClass,!0),Pe.active=this,t&&this._appendGhost(),sr({sortable:this,name:"start",originalEvent:r})}else this._nulling()},_emulateDragOver:function(){if(Xr){this._lastX=Xr.clientX,this._lastY=Xr.clientY,K0();for(var t=document.elementFromPoint(Xr.clientX,Xr.clientY),r=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(Xr.clientX,Xr.clientY),t!==r);)r=t;if(ve.parentNode[kr]._isOutsideThisEl(t),r)do{if(r[kr]){var n=void 0;if(n=r[kr]._onDragOver({clientX:Xr.clientX,clientY:Xr.clientY,target:t,rootEl:r}),n&&!this.options.dragoverBubble)break}t=r}while(r=r.parentNode);Y0()}},_onTouchMove:function(t){if(ua){var r=this.options,n=r.fallbackTolerance,a=r.fallbackOffset,i=t.touches?t.touches[0]:t,s=$e&&Ha($e,!0),o=$e&&s&&s.a,c=$e&&s&&s.d,f=Js&&Yt&&L0(Yt),u=(i.clientX-ua.clientX+a.x)/(o||1)+(f?f[0]-wl[0]:0)/(o||1),d=(i.clientY-ua.clientY+a.y)/(c||1)+(f?f[1]-wl[1]:0)/(c||1);if(!Pe.active&&!Xa){if(n&&Math.max(Math.abs(i.clientX-this._lastX),Math.abs(i.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if($e){s?(s.e+=u-(xl||0),s.f+=d-(vl||0)):s={a:1,b:0,c:0,d:1,e:u,f:d};var h="matrix(".concat(s.a,",").concat(s.b,",").concat(s.c,",").concat(s.d,",").concat(s.e,",").concat(s.f,")");Ie($e,"webkitTransform",h),Ie($e,"mozTransform",h),Ie($e,"msTransform",h),Ie($e,"transform",h),xl=u,vl=d,Xr=i}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!$e){var t=this.options.fallbackOnBody?document.body:dt,r=Ot(ve,!0,Js,!0,t),n=this.options;if(Js){for(Yt=t;Ie(Yt,"position")==="static"&&Ie(Yt,"transform")==="none"&&Yt!==document;)Yt=Yt.parentNode;Yt!==document.body&&Yt!==document.documentElement?(Yt===document&&(Yt=dn()),r.top+=Yt.scrollTop,r.left+=Yt.scrollLeft):Yt=dn(),wl=L0(Yt)}$e=ve.cloneNode(!0),yr($e,n.ghostClass,!1),yr($e,n.fallbackClass,!0),yr($e,n.dragClass,!0),Ie($e,"transition",""),Ie($e,"transform",""),Ie($e,"box-sizing","border-box"),Ie($e,"margin",0),Ie($e,"top",r.top),Ie($e,"left",r.left),Ie($e,"width",r.width),Ie($e,"height",r.height),Ie($e,"opacity","0.8"),Ie($e,"position",Js?"absolute":"fixed"),Ie($e,"zIndex","100000"),Ie($e,"pointerEvents","none"),Pe.ghost=$e,t.appendChild($e),Ie($e,"transform-origin",W0/parseInt($e.style.width)*100+"% "+H0/parseInt($e.style.height)*100+"%")}},_onDragStart:function(t,r){var n=this,a=t.dataTransfer,i=n.options;if(pr("dragStart",this,{evt:t}),Pe.eventCanceled){this._onDrop();return}pr("setupClone",this),Pe.eventCanceled||(wt=$0(ve),wt.draggable=!1,wt.style["will-change"]="",this._hideClone(),yr(wt,this.options.chosenClass,!1),Pe.clone=wt),n.cloneId=Qs(function(){pr("clone",n),!Pe.eventCanceled&&(n.options.removeCloneOnHide||dt.insertBefore(wt,ve),n._hideClone(),sr({sortable:n,name:"clone"}))}),!r&&yr(ve,i.dragClass,!0),r?(zs=!0,n._loopId=setInterval(n._emulateDragOver,50)):(Xe(document,"mouseup",n._onDrop),Xe(document,"touchend",n._onDrop),Xe(document,"touchcancel",n._onDrop),a&&(a.effectAllowed="move",i.setData&&i.setData.call(n,a,ve)),Je(document,"drop",n),Ie(ve,"transform","translateZ(0)")),Xa=!0,n._dragStartId=Qs(n._dragStarted.bind(n,r,t)),Je(document,"selectstart",n),Ni=!0,Di&&Ie(document.body,"user-select","none")},_onDragOver:function(t){var r=this.el,n=t.target,a,i,s,o=this.options,c=o.group,f=Pe.active,u=js===c,d=o.sort,h=jt||f,m,g=this,p=!1;if(_l)return;function x(de,K){pr(de,g,fn({evt:t,isOwner:u,axis:m?"vertical":"horizontal",revert:s,dragRect:a,targetRect:i,canSort:d,fromSortable:h,target:n,completed:y,onMove:function(D,_){return Zs(dt,r,ve,a,D,Ot(D),t,_)},changed:w},K))}function v(){x("dragOverAnimationCapture"),g.captureAnimationState(),g!==h&&h.captureAnimationState()}function y(de){return x("dragOverCompleted",{insertion:de}),de&&(u?f._hideClone():f._showClone(g),g!==h&&(yr(ve,jt?jt.options.ghostClass:f.options.ghostClass,!1),yr(ve,o.ghostClass,!0)),jt!==g&&g!==Pe.active?jt=g:g===Pe.active&&jt&&(jt=null),h===g&&(g._ignoreWhileAnimating=n),g.animateAll(function(){x("dragOverAnimationComplete"),g._ignoreWhileAnimating=null}),g!==h&&(h.animateAll(),h._ignoreWhileAnimating=null)),(n===ve&&!ve.animated||n===r&&!n.animated)&&(Ka=null),!o.dragoverBubble&&!t.rootEl&&n!==document&&(ve.parentNode[kr]._isOutsideThisEl(t.target),!de&&da(t)),!o.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),p=!0}function w(){br=Ir(ve),zn=Ir(ve,o.draggable),sr({sortable:g,name:"change",toEl:r,newIndex:br,newDraggableIndex:zn,originalEvent:t})}if(t.preventDefault!==void 0&&t.cancelable&&t.preventDefault(),n=un(n,o.draggable,r,!0),x("dragOver"),Pe.eventCanceled)return p;if(ve.contains(t.target)||n.animated&&n.animatingX&&n.animatingY||g._ignoreWhileAnimating===n)return y(!1);if(zs=!1,f&&!o.disabled&&(u?d||(s=vt!==dt):jt===this||(this.lastPutMode=js.checkPull(this,f,ve,t))&&c.checkPut(this,f,ve,t))){if(m=this._getDirection(t,n)==="vertical",a=Ot(ve),x("dragOverValid"),Pe.eventCanceled)return p;if(s)return vt=dt,v(),this._hideClone(),x("revert"),Pe.eventCanceled||(fa?dt.insertBefore(ve,fa):dt.appendChild(ve)),y(!0);var E=ml(r,o.draggable);if(!E||Iv(t,m,this)&&!E.animated){if(E===ve)return y(!1);if(E&&r===t.target&&(n=E),n&&(i=Ot(n)),Zs(dt,r,ve,a,n,i,t,!!n)!==!1)return v(),r.appendChild(ve),vt=r,w(),y(!0)}else if(E&&Nv(t,m,this)){var R=ja(r,0,o,!0);if(R===ve)return y(!1);if(n=R,i=Ot(n),Zs(dt,r,ve,a,n,i,t,!1)!==!1)return v(),r.insertBefore(ve,R),vt=r,w(),y(!0)}else if(n.parentNode===r){i=Ot(n);var F=0,C,U=ve.parentNode!==r,S=!Av(ve.animated&&ve.toRect||a,n.animated&&n.toRect||i,m),W=m?"top":"left",z=M0(n,"top","top")||M0(ve,"top","top"),V=z?z.scrollTop:void 0;Ka!==n&&(C=i[W],Pi=!1,Xs=!S&&o.invertSwap||U),F=Pv(t,n,i,m,S?1:o.swapThreshold,o.invertedSwapThreshold==null?o.swapThreshold:o.invertedSwapThreshold,Xs,Ka===n);var j;if(F!==0){var H=Ir(ve);do H-=F,j=vt.children[H];while(j&&(Ie(j,"display")==="none"||j===$e))}if(F===0||j===n)return y(!1);Ka=n,Ii=F;var Y=n.nextElementSibling,ae=!1;ae=F===1;var se=Zs(dt,r,ve,a,n,i,t,ae);if(se!==!1)return(se===1||se===-1)&&(ae=se===1),_l=!0,setTimeout(Bv,30),v(),ae&&!Y?r.appendChild(ve):n.parentNode.insertBefore(ve,ae?Y:n),z&&U0(z,0,V-z.scrollTop),vt=ve.parentNode,C!==void 0&&!Xs&&(Ks=Math.abs(C-Ot(n)[W])),w(),y(!0)}if(r.contains(ve))return y(!1)}return!1},_ignoreWhileAnimating:null,_offMoveEvents:function(){Xe(document,"mousemove",this._onTouchMove),Xe(document,"touchmove",this._onTouchMove),Xe(document,"pointermove",this._onTouchMove),Xe(document,"dragover",da),Xe(document,"mousemove",da),Xe(document,"touchmove",da)},_offUpEvents:function(){var t=this.el.ownerDocument;Xe(t,"mouseup",this._onDrop),Xe(t,"touchend",this._onDrop),Xe(t,"pointerup",this._onDrop),Xe(t,"touchcancel",this._onDrop),Xe(document,"selectstart",this)},_onDrop:function(t){var r=this.el,n=this.options;if(br=Ir(ve),zn=Ir(ve,n.draggable),pr("drop",this,{evt:t}),vt=ve&&ve.parentNode,br=Ir(ve),zn=Ir(ve,n.draggable),Pe.eventCanceled){this._nulling();return}Xa=!1,Xs=!1,Pi=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),kl(this.cloneId),kl(this._dragStartId),this.nativeDraggable&&(Xe(document,"drop",this),Xe(r,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),Di&&Ie(document.body,"user-select",""),Ie(ve,"transform",""),t&&(Ni&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),$e&&$e.parentNode&&$e.parentNode.removeChild($e),(dt===vt||jt&&jt.lastPutMode!=="clone")&&wt&&wt.parentNode&&wt.parentNode.removeChild(wt),ve&&(this.nativeDraggable&&Xe(ve,"dragend",this),yl(ve),ve.style["will-change"]="",Ni&&!Xa&&yr(ve,jt?jt.options.ghostClass:this.options.ghostClass,!1),yr(ve,this.options.chosenClass,!1),sr({sortable:this,name:"unchoose",toEl:vt,newIndex:null,newDraggableIndex:null,originalEvent:t}),dt!==vt?(br>=0&&(sr({rootEl:vt,name:"add",toEl:vt,fromEl:dt,originalEvent:t}),sr({sortable:this,name:"remove",toEl:vt,originalEvent:t}),sr({rootEl:vt,name:"sort",toEl:vt,fromEl:dt,originalEvent:t}),sr({sortable:this,name:"sort",toEl:vt,originalEvent:t})),jt&&jt.save()):br!==Ga&&br>=0&&(sr({sortable:this,name:"update",toEl:vt,originalEvent:t}),sr({sortable:this,name:"sort",toEl:vt,originalEvent:t})),Pe.active&&((br==null||br===-1)&&(br=Ga,zn=Bi),sr({sortable:this,name:"end",toEl:vt,originalEvent:t}),this.save()))),this._nulling()},_nulling:function(){pr("nulling",this),dt=ve=vt=$e=fa=wt=Hs=jn=ua=Xr=Ni=br=zn=Ga=Bi=Ka=Ii=jt=js=Pe.dragged=Pe.ghost=Pe.clone=Pe.active=null,Ys.forEach(function(t){t.checked=!0}),Ys.length=xl=vl=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":ve&&(this._onDragOver(t),Ov(t));break;case"selectstart":t.preventDefault();break}},toArray:function(){for(var t=[],r,n=this.el.children,a=0,i=n.length,s=this.options;a<i;a++)r=n[a],un(r,s.draggable,this.el,!1)&&t.push(r.getAttribute(s.dataIdAttr)||Lv(r));return t},sort:function(t,r){var n={},a=this.el;this.toArray().forEach(function(i,s){var o=a.children[s];un(o,this.options.draggable,a,!1)&&(n[i]=o)},this),r&&this.captureAnimationState(),t.forEach(function(i){n[i]&&(a.removeChild(n[i]),a.appendChild(n[i]))}),r&&this.animateAll()},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,r){return un(t,r||this.options.draggable,this.el,!1)},option:function(t,r){var n=this.options;if(r===void 0)return n[t];var a=Oi.modifyOption(this,t,r);typeof a<"u"?n[t]=a:n[t]=r,t==="group"&&X0(n)},destroy:function(){pr("destroy",this);var t=this.el;t[kr]=null,Xe(t,"mousedown",this._onTapStart),Xe(t,"touchstart",this._onTapStart),Xe(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(Xe(t,"dragover",this),Xe(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),function(r){r.removeAttribute("draggable")}),this._onDrop(),this._disableDelayedDragEvents(),Gs.splice(Gs.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!jn){if(pr("hideClone",this),Pe.eventCanceled)return;Ie(wt,"display","none"),this.options.removeCloneOnHide&&wt.parentNode&&wt.parentNode.removeChild(wt),jn=!0}},_showClone:function(t){if(t.lastPutMode!=="clone"){this._hideClone();return}if(jn){if(pr("showClone",this),Pe.eventCanceled)return;ve.parentNode==dt&&!this.options.group.revertClone?dt.insertBefore(wt,ve):fa?dt.insertBefore(wt,fa):dt.appendChild(wt),this.options.group.revertClone&&this.animate(ve,wt),Ie(wt,"display",""),jn=!1}}};function Ov(e){e.dataTransfer&&(e.dataTransfer.dropEffect="move"),e.cancelable&&e.preventDefault()}function Zs(e,t,r,n,a,i,s,o){var c,f=e[kr],u=f.options.onMove,d;return window.CustomEvent&&!Dn&&!Ai?c=new CustomEvent("move",{bubbles:!0,cancelable:!0}):(c=document.createEvent("Event"),c.initEvent("move",!0,!0)),c.to=t,c.from=e,c.dragged=r,c.draggedRect=n,c.related=a||t,c.relatedRect=i||Ot(t),c.willInsertAfter=o,c.originalEvent=s,e.dispatchEvent(c),u&&(d=u.call(f,c,s)),d}function yl(e){e.draggable=!1}function Bv(){_l=!1}function Nv(e,t,r){var n=Ot(ja(r.el,0,r.options,!0)),a=10;return t?e.clientX<n.left-a||e.clientY<n.top&&e.clientX<n.right:e.clientY<n.top-a||e.clientY<n.bottom&&e.clientX<n.left}function Iv(e,t,r){var n=Ot(ml(r.el,r.options.draggable)),a=10;return t?e.clientX>n.right+a||e.clientX<=n.right&&e.clientY>n.bottom&&e.clientX>=n.left:e.clientX>n.right&&e.clientY>n.top||e.clientX<=n.right&&e.clientY>n.bottom+a}function Pv(e,t,r,n,a,i,s,o){var c=n?e.clientY:e.clientX,f=n?r.height:r.width,u=n?r.top:r.left,d=n?r.bottom:r.right,h=!1;if(!s){if(o&&Ks<f*a){if(!Pi&&(Ii===1?c>u+f*i/2:c<d-f*i/2)&&(Pi=!0),Pi)h=!0;else if(Ii===1?c<u+Ks:c>d-Ks)return-Ii}else if(c>u+f*(1-a)/2&&c<d-f*(1-a)/2)return Mv(t)}return h=h||s,h&&(c<u+f*i/2||c>d-f*i/2)?c>u+f/2?1:-1:0}function Mv(e){return Ir(ve)<Ir(e)?1:-1}function Lv(e){for(var t=e.tagName+e.className+e.src+e.href+e.textContent,r=t.length,n=0;r--;)n+=t.charCodeAt(r);return n.toString(36)}function Vv(e){Ys.length=0;for(var t=e.getElementsByTagName("input"),r=t.length;r--;){var n=t[r];n.checked&&Ys.push(n)}}function Qs(e){return setTimeout(e,0)}function kl(e){return clearTimeout(e)}qs&&Je(document,"touchmove",function(e){(Pe.active||Xa)&&e.cancelable&&e.preventDefault()}),Pe.utils={on:Je,off:Xe,css:Ie,find:P0,is:function(t,r){return!!un(t,r,t,!1)},extend:yv,throttle:V0,closest:un,toggleClass:yr,clone:$0,index:Ir,nextTick:Qs,cancelNextTick:kl,detectDirection:G0,getChild:ja},Pe.get=function(e){return e[kr]},Pe.mount=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t[0].constructor===Array&&(t=t[0]),t.forEach(function(n){if(!n.prototype||!n.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(n));n.utils&&(Pe.utils=fn(fn({},Pe.utils),n.utils)),Oi.mount(n)})},Pe.create=function(e,t){return new Pe(e,t)},Pe.version=xv;var Ct=[],Mi,bl,El=!1,Sl,Cl,eo,Li;function Uv(){function e(){this.defaults={scroll:!0,forceAutoScrollFallback:!1,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0};for(var t in this)t.charAt(0)==="_"&&typeof this[t]=="function"&&(this[t]=this[t].bind(this))}return e.prototype={dragStarted:function(r){var n=r.originalEvent;this.sortable.nativeDraggable?Je(document,"dragover",this._handleAutoScroll):this.options.supportPointer?Je(document,"pointermove",this._handleFallbackAutoScroll):n.touches?Je(document,"touchmove",this._handleFallbackAutoScroll):Je(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(r){var n=r.originalEvent;!this.options.dragOverBubble&&!n.rootEl&&this._handleAutoScroll(n)},drop:function(){this.sortable.nativeDraggable?Xe(document,"dragover",this._handleAutoScroll):(Xe(document,"pointermove",this._handleFallbackAutoScroll),Xe(document,"touchmove",this._handleFallbackAutoScroll),Xe(document,"mousemove",this._handleFallbackAutoScroll)),q0(),to(),kv()},nulling:function(){eo=bl=Mi=El=Li=Sl=Cl=null,Ct.length=0},_handleFallbackAutoScroll:function(r){this._handleAutoScroll(r,!0)},_handleAutoScroll:function(r,n){var a=this,i=(r.touches?r.touches[0]:r).clientX,s=(r.touches?r.touches[0]:r).clientY,o=document.elementFromPoint(i,s);if(eo=r,n||this.options.forceAutoScrollFallback||Ai||Dn||Di){Tl(r,this.options,o,n);var c=Hn(o,!0);El&&(!Li||i!==Sl||s!==Cl)&&(Li&&q0(),Li=setInterval(function(){var f=Hn(document.elementFromPoint(i,s),!0);f!==c&&(c=f,to()),Tl(r,a.options,f,n)},10),Sl=i,Cl=s)}else{if(!this.options.bubbleScroll||Hn(o,!0)===dn()){to();return}Tl(r,this.options,Hn(o,!1),!1)}}},Fn(e,{pluginName:"scroll",initializeByDefault:!0})}function to(){Ct.forEach(function(e){clearInterval(e.pid)}),Ct=[]}function q0(){clearInterval(Li)}var Tl=V0(function(e,t,r,n){if(t.scroll){var a=(e.touches?e.touches[0]:e).clientX,i=(e.touches?e.touches[0]:e).clientY,s=t.scrollSensitivity,o=t.scrollSpeed,c=dn(),f=!1,u;bl!==r&&(bl=r,to(),Mi=t.scroll,u=t.scrollFn,Mi===!0&&(Mi=Hn(r,!0)));var d=0,h=Mi;do{var m=h,g=Ot(m),p=g.top,x=g.bottom,v=g.left,y=g.right,w=g.width,E=g.height,R=void 0,F=void 0,C=m.scrollWidth,U=m.scrollHeight,S=Ie(m),W=m.scrollLeft,z=m.scrollTop;m===c?(R=w<C&&(S.overflowX==="auto"||S.overflowX==="scroll"||S.overflowX==="visible"),F=E<U&&(S.overflowY==="auto"||S.overflowY==="scroll"||S.overflowY==="visible")):(R=w<C&&(S.overflowX==="auto"||S.overflowX==="scroll"),F=E<U&&(S.overflowY==="auto"||S.overflowY==="scroll"));var V=R&&(Math.abs(y-a)<=s&&W+w<C)-(Math.abs(v-a)<=s&&!!W),j=F&&(Math.abs(x-i)<=s&&z+E<U)-(Math.abs(p-i)<=s&&!!z);if(!Ct[d])for(var H=0;H<=d;H++)Ct[H]||(Ct[H]={});(Ct[d].vx!=V||Ct[d].vy!=j||Ct[d].el!==m)&&(Ct[d].el=m,Ct[d].vx=V,Ct[d].vy=j,clearInterval(Ct[d].pid),(V!=0||j!=0)&&(f=!0,Ct[d].pid=setInterval((function(){n&&this.layer===0&&Pe.active._onTouchMove(eo);var Y=Ct[this.layer].vy?Ct[this.layer].vy*o:0,ae=Ct[this.layer].vx?Ct[this.layer].vx*o:0;typeof u=="function"&&u.call(Pe.dragged.parentNode[kr],ae,Y,e,eo,Ct[this.layer].el)!=="continue"||U0(Ct[this.layer].el,ae,Y)}).bind({layer:d}),24))),d++}while(t.bubbleScroll&&h!==c&&(h=Hn(h,!1)));El=f}},30),J0=function(t){var r=t.originalEvent,n=t.putSortable,a=t.dragEl,i=t.activeSortable,s=t.dispatchSortableEvent,o=t.hideGhostForTarget,c=t.unhideGhostForTarget;if(r){var f=n||i;o();var u=r.changedTouches&&r.changedTouches.length?r.changedTouches[0]:r,d=document.elementFromPoint(u.clientX,u.clientY);c(),f&&!f.el.contains(d)&&(s("spill"),this.onSpill({dragEl:a,putSortable:n}))}};function Fl(){}Fl.prototype={startIndex:null,dragStart:function(t){var r=t.oldDraggableIndex;this.startIndex=r},onSpill:function(t){var r=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var a=ja(this.sortable.el,this.startIndex,this.options);a?this.sortable.el.insertBefore(r,a):this.sortable.el.appendChild(r),this.sortable.animateAll(),n&&n.animateAll()},drop:J0},Fn(Fl,{pluginName:"revertOnSpill"});function Al(){}Al.prototype={onSpill:function(t){var r=t.dragEl,n=t.putSortable,a=n||this.sortable;a.captureAnimationState(),r.parentNode&&r.parentNode.removeChild(r),a.animateAll()},drop:J0},Fn(Al,{pluginName:"removeOnSpill"}),Pe.mount(new Uv),Pe.mount(Al,Fl);var $v=Object.defineProperty,Wv=Object.defineProperties,Hv=Object.getOwnPropertyDescriptors,Z0=Object.getOwnPropertySymbols,jv=Object.prototype.hasOwnProperty,zv=Object.prototype.propertyIsEnumerable,Q0=(e,t,r)=>t in e?$v(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Gn=(e,t)=>{for(var r in t||(t={}))jv.call(t,r)&&Q0(e,r,t[r]);if(Z0)for(var r of Z0(t))zv.call(t,r)&&Q0(e,r,t[r]);return e},ro=(e,t)=>Wv(e,Hv(t));function Dl(e){e.parentElement!==null&&e.parentElement.removeChild(e)}function eu(e,t,r){const n=r===0?e.children[0]:e.children[r-1].nextSibling;e.insertBefore(t,n)}function Gv(){return typeof window<"u"?window.console:global.console}const Xv=Gv();function Kv(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Yv=/-(\w)/g,qv=Kv(e=>e.replace(Yv,(t,r)=>r.toUpperCase())),tu=["Start","Add","Remove","Update","End"],ru=["Choose","Unchoose","Sort","Filter","Clone"],nu=["Move"],Jv=[nu,tu,ru].flatMap(e=>e).map(e=>`on${e}`),Rl={manage:nu,manageAndEmit:tu,emit:ru};function Zv(e){return Jv.indexOf(e)!==-1}const Qv=["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","math","menu","menuitem","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rb","rp","rt","rtc","ruby","s","samp","script","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"];function ew(e){return Qv.includes(e)}function tw(e){return["transition-group","TransitionGroup"].includes(e)}function au(e){return["id","class","role","style"].includes(e)||e.startsWith("data-")||e.startsWith("aria-")||e.startsWith("on")}function iu(e){return e.reduce((t,[r,n])=>(t[r]=n,t),{})}function rw({$attrs:e,componentData:t={}}){const r=iu(Object.entries(e).filter(([n,a])=>au(n)));return Gn(Gn({},r),t)}function nw({$attrs:e,callBackBuilder:t}){const r=iu(su(e));Object.entries(t).forEach(([a,i])=>{Rl[a].forEach(s=>{r[`on${s}`]=i(s)})});const n=`[data-draggable]${r.draggable||""}`;return ro(Gn({},r),{draggable:n})}function su(e){return Object.entries(e).filter(([t,r])=>!au(t)).map(([t,r])=>[qv(t),r]).filter(([t,r])=>!Zv(t))}const ou=e=>{const t=e.el||Array.isArray(e.children)&&e.children[0].el.parentNode;return t||console.error("使用 transition-group , 需要在slot中template内至少2层html标签"),t||{}},aw=(e,t)=>e.__draggable_context=t,lu=e=>e.__draggable_context;class iw{constructor({nodes:{header:t,default:r,footer:n},root:a,realList:i}){this.defaultNodes=r,this.children=[...t,...r,...n],this.externalComponent=a.externalComponent,this.rootTransition=a.transition,this.tag=a.tag,this.realList=i}get _isRootComponent(){return this.externalComponent||this.rootTransition}render(t,r){const{tag:n,children:a,_isRootComponent:i}=this;return t(n,r,i?{default:()=>a}:a)}updated(){const{defaultNodes:t,realList:r}=this;t.forEach((n,a)=>{aw(ou(n),{element:r[a],index:a})})}getUnderlyingVm(t){return lu(t)}getVmIndexFromDomIndex(t,r){const{defaultNodes:n}=this,{length:a}=n,i=r.children,s=i.item(t);if(s===null)return a;const o=lu(s);if(o)return o.index;if(a===0)return 0;const c=ou(n[0]),f=[...i].findIndex(u=>u===c);return t<f?0:a}}function sw(e,t){const r=e[t];return r?r():[]}function ow({$slots:e,realList:t,getKey:r}){const n=t||[],[a,i]=["header","footer"].map(c=>sw(e,c)),{item:s}=e;if(!s)throw new Error("draggable element must have an item slot");const o=n.flatMap((c,f)=>s({element:c,index:f}).map(u=>(u.key=r(c),u.props=ro(Gn({},u.props||{}),{"data-draggable":!0}),u)));if(o.length!==n.length)throw new Error("Item slot must have only one child");return{header:a,footer:i,default:o}}function lw(e){const t=tw(e),r=!ew(e)&&!t;return{transition:t,externalComponent:r,tag:r?l.resolveComponent(e):t?l.TransitionGroup:e}}function cw({$slots:e,tag:t,realList:r,getKey:n}){const a=ow({$slots:e,realList:r,getKey:n}),i=lw(t);return new iw({nodes:a,root:i,realList:r})}function cu(e,t){l.nextTick(()=>this.$emit(e.toLowerCase(),t))}function fu(e){return(t,r)=>{if(this.realList!==null)return this[`onDrag${e}`](t,r)}}function fw(e){const t=fu.call(this,e);return(r,n)=>{t.call(this,r,n),cu.call(this,e,r)}}let Ol=null;const uw={list:{type:Array,required:!1,default:null},modelValue:{type:Array,required:!1,default:null},itemKey:{type:[String,Function],required:!0},clone:{type:Function,default:e=>e},tag:{type:String,default:"div"},move:{type:Function,default:null},componentData:{type:Object,required:!1,default:null}},dw=["update:modelValue","change",...[...Rl.manageAndEmit,...Rl.emit].map(e=>e.toLowerCase())],hw=l.defineComponent({name:"draggable",inheritAttrs:!1,props:uw,emits:dw,data(){return{error:!1}},render(){try{this.error=!1;const{$slots:e,$attrs:t,tag:r,componentData:n,realList:a,getKey:i}=this,s=cw({$slots:e,tag:r,realList:a,getKey:i});this.componentStructure=s;const o=rw({$attrs:t,componentData:n});return s.render(l.h,o)}catch(e){return this.error=!0,l.h("pre",{style:{color:"red"}},e.stack)}},created(){this.list!==null&&this.modelValue!==null&&Xv.error("modelValue and list props are mutually exclusive! Please set one or another.")},mounted(){if(this.error)return;const{$attrs:e,$el:t,componentStructure:r}=this;r.updated();const n=nw({$attrs:e,callBackBuilder:{manageAndEmit:i=>fw.call(this,i),emit:i=>cu.bind(this,i),manage:i=>fu.call(this,i)}}),a=t.nodeType===1?t:t.parentElement;this._sortable=new Pe(a,n),this.targetDomElement=a,a.__draggable_component__=this},updated(){this.componentStructure.updated()},beforeUnmount(){this._sortable!==void 0&&this._sortable.destroy()},computed:{realList(){const{list:e}=this;return e||this.modelValue},getKey(){const{itemKey:e}=this;return typeof e=="function"?e:t=>t[e]}},watch:{$attrs:{handler(e){const{_sortable:t}=this;t&&su(e).forEach(([r,n])=>{t.option(r,n)})},deep:!0}},methods:{getUnderlyingVm(e){return this.componentStructure.getUnderlyingVm(e)||null},getUnderlyingPotencialDraggableComponent(e){return e.__draggable_component__},emitChanges(e){l.nextTick(()=>this.$emit("change",e))},alterList(e){if(this.list){e(this.list);return}const t=[...this.modelValue];e(t),this.$emit("update:modelValue",t)},spliceList(){const e=t=>t.splice(...arguments);this.alterList(e)},updatePosition(e,t){const r=n=>n.splice(t,0,n.splice(e,1)[0]);this.alterList(r)},getRelatedContextFromMoveEvent({to:e,related:t}){const r=this.getUnderlyingPotencialDraggableComponent(e);if(!r)return{component:r};const n=r.realList,a={list:n,component:r};if(e!==t&&n){const i=r.getUnderlyingVm(t)||{};return Gn(Gn({},i),a)}return a},getVmIndexFromDomIndex(e){return this.componentStructure.getVmIndexFromDomIndex(e,this.targetDomElement)},onDragStart(e){this.context=this.getUnderlyingVm(e.item),e.item._underlying_vm_=this.clone(this.context.element),Ol=e.item},onDragAdd(e){const t=e.item._underlying_vm_;if(t===void 0)return;Dl(e.item);const r=this.getVmIndexFromDomIndex(e.newIndex);this.spliceList(r,0,t);const n={element:t,newIndex:r};this.emitChanges({added:n})},onDragRemove(e){if(eu(this.$el,e.item,e.oldIndex),e.pullMode==="clone"){Dl(e.clone);return}const{index:t,element:r}=this.context;this.spliceList(t,1);const n={element:r,oldIndex:t};this.emitChanges({removed:n})},onDragUpdate(e){Dl(e.item),eu(e.from,e.item,e.oldIndex);const t=this.context.index,r=this.getVmIndexFromDomIndex(e.newIndex);this.updatePosition(t,r);const n={element:this.context.element,oldIndex:t,newIndex:r};this.emitChanges({moved:n})},computeFutureIndex(e,t){if(!e.element)return 0;const r=[...t.to.children].filter(s=>s.style.display!=="none"),n=r.indexOf(t.related),a=e.component.getVmIndexFromDomIndex(n);return r.indexOf(Ol)!==-1||!t.willInsertAfter?a:a+1},onDragMove(e,t){const{move:r,realList:n}=this;if(!r||!n)return!0;const a=this.getRelatedContextFromMoveEvent(e),i=this.computeFutureIndex(a,e),s=ro(Gn({},this.context),{futureIndex:i}),o=ro(Gn({},e),{relatedContext:a,draggedContext:s});return r(o,t)},onDragEnd(){Ol=null}}}),mw=l.defineComponent({name:"FsTableColumnsFixedController",props:{modelValue:{default:!1}},emits:["update:modelValue","change"],setup(e,t){const{ui:r}=ue.useUi(),n=l.computed(()=>[{value:"left",icon:r.icons.left},{value:!1,icon:r.icons.close},{value:"right",icon:r.icons.right}]);function a(i){t.emit("update:modelValue",i),t.emit("change",i)}return{ui:r,options:n,submit:a}}}),BD="";function pw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.buttonGroup.name),{class:"fs-table-columns-fixed-controller"},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.options,o=>(l.openBlock(),l.createBlock(s,{key:o.icon,type:e.modelValue===o.value?"primary":"default",icon:o.icon,size:"small",onClick:c=>e.submit(o.value)},null,8,["type","icon","onClick"]))),128))]),_:1})}const Bl=rt(mw,[["render",pw]]),gw=["title","i"],xw={class:"item-right"},vw={"flex-box":"0",class:"component--list-item-handle handle"},ww={style:{"margin-left":"20px","padding-left":"10px","border-left":"1px solid #eee"}},Nl=l.defineComponent({__name:"fs-columns-filter-nest-list",props:{columns:{},isRoot:{type:Boolean,default:!1}},emits:["check-changed","fixed-changed"],setup(e,{emit:t}){const{ui:r}=ue.useUi(),n=t,{originalColumns:a,currentColumns:i,originalColumnsMap:s,text:o,active:c}=l.inject(Us);function f(p){return p.label||p.title||p.key||o.value.unnamed}function u(p){const x=p.draggedContext.element,v=p.relatedContext.element,y=[];for(const C of i.value)C.key===x.key?y.push(v):C.key===v.key?y.push(x):y.push(C);let w=0,E=y.length-1,R=y.length-1,F=0;for(let C=0;C<y.length;C++){const U=y[C];U.fixed==="left"?w=C:U.fixed==="right"?E=E>C?C:E:(R=R>C?C:R,F=F<C?C:F)}if(R<w||F>E)return!1}function d(p){return"update:"+p}function h(p){p.show=!p.show;function x(y){y.children&&y.children.forEach(w=>{!w.__show||w.__disabled||(w.show=y.show,x(w))})}x(p);function v(y){if(y.__parent){const w=y.__parent;w&&(w.show=w.children.filter(E=>E.__show&&E.show===!0).length>0,v(w))}}v(p)}function m(){n("check-changed")}function g(p,x){n("fixed-changed",p,x)}return(p,x)=>{const v=l.resolveComponent("fs-icon"),y=l.resolveComponent("fs-columns-filter-nest-list",!0);return l.openBlock(),l.createBlock(l.unref(hw),{list:p.columns,"item-key":"key",move:u},{item:l.withCtx(({element:w,index:E})=>{var R,F;return[l.createElementVNode("div",null,[l.withDirectives(l.createElementVNode("div",{title:f(w),class:"component--list-item",flex:"main:justify cross:center",i:E},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(r).checkbox.name),l.mergeProps({[l.unref(r).checkbox.modelValue||""]:w.show,disabled:((R=l.unref(s)[w.__key])==null?void 0:R.__disabled)===!0,class:"item-label",title:f(w)},{[l.toHandlerKey(d(l.unref(r).checkbox.modelValue))]:C=>h(w)},{onChange:m}),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(f(w)),1)]),_:2},1040,["disabled","title"])),l.createElementVNode("div",xw,[p.isRoot?(l.openBlock(),l.createBlock(Bl,{key:0,modelValue:w.fixed,"onUpdate:modelValue":C=>w.fixed=C,"flex-box":"0",class:"d2-mr-10",onChange:C=>g(E,C)},null,8,["modelValue","onUpdate:modelValue","onChange"])):l.createCommentVNode("",!0),l.createElementVNode("div",vw,[l.createVNode(v,{icon:l.unref(r).icons.sort},null,8,["icon"])])])],8,gw),[[l.vShow,((F=l.unref(s)[w.__key])==null?void 0:F.__show)!==!1]]),l.createElementVNode("div",ww,[w.children?(l.openBlock(),l.createBlock(y,{key:0,columns:w.children,onCheckChanged:m},null,8,["columns"])):l.createCommentVNode("",!0)])])]}),_:1},8,["list"])}}}),_w={class:"component--list"},yw={key:"__first__",class:"component--list-item",flex:"main:justify cross:center"},kw={span:12},bw={class:"title"},uu=l.defineComponent({__name:"fs-columns-filter-layout-default",props:{width:{},drawer:{}},setup(e){const{ui:t}=ue.useUi(),{originalColumns:r,currentColumns:n,text:a,active:i}=l.inject(Us),s=e,o=l.computed(()=>X.merge({[t.drawer.visible]:i.value,["onUpdate:"+t.drawer.visible]:x=>{i.value=x},[t.drawer.width]:s.width||"400px"},s.drawer)),c=l.ref(!1);function f(x){c.value=x,n.value=n.value.map(v=>(!v.__show||v.__disabled||(v.show=x),v))}const u=l.computed(()=>({[t.checkbox.modelValue]:c.value,["onUpdate:"+t.checkbox.modelValue]:x=>{f(x)}})),d=l.computed(()=>n.value.filter(x=>x.__show&&x.show===!0).length),h=l.computed(()=>n.value.filter(x=>x.__show).length),m=l.computed(()=>d.value>0&&d.value<h.value);l.watch(()=>{n.value},()=>{p()},{immediate:!0});function g(x,v){v&&(n.value[x].show=!0),v==="left"&&n.value.unshift(n.value.splice(x,1)[0]),v==="right"&&n.value.push(n.value.splice(x,1)[0]),p()}function p(){c.value=d.value===h.value}return(x,v)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).drawer.name),l.mergeProps({class:"fs-columns-filter-layout-default",title:l.unref(a).title},o.value,{"append-to-body":""}),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).drawer.hasContentWrap||"div"),{class:"fs-drawer-wrapper fs-table-columns-filter",title:l.unref(a).title},{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).card.name),{shadow:"never"},{default:l.withCtx(()=>[l.createElementVNode("div",_w,[l.createElementVNode("div",yw,[l.createElementVNode("span",kw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(t).checkbox.name),l.mergeProps({indeterminate:m.value},u.value),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(d.value)+" / "+l.toDisplayString(h.value),1)]),_:1},16,["indeterminate"]))]),l.createElementVNode("span",bw,l.toDisplayString(l.unref(a).fixed)+" / "+l.toDisplayString(l.unref(a).order),1)]),l.createVNode(Nl,{columns:l.unref(n),"is-root":!0,onCheckChanged:p,onFixedChanged:g},null,8,["columns"])])]),_:1})),l.renderSlot(x.$slots,"buttons")]),_:3},8,["title"]))]),_:3},16,["title"]))}}),Ew=l.defineComponent({name:"FsSearchButtons",inheritAttrs:!1,props:{buttons:{type:Object}},setup(){const{ui:e}=ue.useUi();return{ui:e}}}),Sw={class:"fs-search-col fs-search-btns"};function Cw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",Sw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.buttons,(o,c)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:c},[o.show?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},o,{onClick:f=>o._click()}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))]),_:1}))])}const du=rt(Ew,[["render",Cw]]),Tw=l.defineComponent({name:"FsSearch",components:{FsSearchButtons:du},inheritAttrs:!1,props:{container:{type:Object},initialForm:{type:Object},validatedForm:{type:Object},options:{type:Object},columns:{type:Object},buttons:{type:Object},searchAfterReset:{type:Boolean,default:!0},autoSearch:{type:Boolean,default:!0},debounce:{type:[Boolean,Object],default:void 0},slots:{type:Object,default(){return{}}},show:{type:Boolean,default:!0},validate:{default:!1},validateOnChange:{default:!0,type:Boolean},col:{},formItem:{type:Object,default:void 0}},emits:["search","_search","reset","_reset","validate-error","update:validatedForm"],setup(e,t){const{ui:r}=ue.useUi(),{merge:n}=Ze(),a=n,{doComputed:i,AsyncComputeValue:s,ComputeValue:o}=Nr();X.each(e.columns,D=>{D.value!=null&&(D.value instanceof s||D.value instanceof o)&&De.warn("search.value配置不支持ComputeValue/AsyncCompute类型的动态计算")});function c(){const D={};return X.forEach(e.columns,(_,k)=>{var A;if(_.value===void 0)return;const b=l.unref(_.value);b!==void 0&&_.show!==!1&&((A=_.component)==null?void 0:A.show)!==!1&&(D[k]=b)}),X.cloneDeep(n({},e.initialForm,D))}const f=l.reactive(c());let u=null;const d=i(()=>e.columns,R,null,D=>{const _=X.cloneDeep(e.formItem||{});X.forEach(D,A=>{n(A,_,A)}),e.validate||X.forEach(D,A=>{delete A.rules,delete A.rule}),e.col&&X.forEach(D,A=>{A.col=n({},e.col,A.col)}),X.forEach(D,A=>{A._cellRender=()=>p(A)});let k=[];X.forEach(D,(A,G)=>{A._key=G,k.push(A)}),k=X.sortBy(k,A=>A.order??Un.orderDefault);const b={};return k.forEach(A=>{let G=A._key;delete A._key,b[G]=A}),b});function h(){const D=X.cloneDeep(f);t.emit("update:validatedForm",D)}l.watch(()=>e.validatedForm,D=>{for(const _ in f)delete f[_];n(f,D||{})},{deep:!0});const m=(D,_)=>X.get(D,_);function g(D){if(D!=null)return D.indexOf(".")>=0?D.split("."):D}function p(D){const _=D.key;async function k(ee){K(ee,D)}function b(){se(D)}function A(ee,te){te.code==="Enter"&&ee.autoSearchTrigger==="enter"&&U()}let G=null;e.slots["search_"+_]?G=l.createVNode(l.resolveComponent("fs-slot-render"),{slots:e.slots["search_"+_],scope:F(_)},null):D.render?G=l.createVNode(l.resolveComponent("fs-render"),{"render-func":D.render,scope:F(_)},null):D.component&&D.component.show!==!1&&(G=l.createVNode(l.resolveComponent("fs-component-render"),l.mergeProps({ref:ee=>{y.value[_]=ee},"model-value":m(f,_),onKeyup:ee=>{A(D,ee)}},D.component,{scope:F(_),"onUpdate:modelValue":k,onInput:b}),null));const re=g(_);return r.formItem.render({props:{...D,label:D.title,[r.formItem.prop]:re,path:_,rulePath:_},slots:{default(){return G}}})}const x=l.ref(),{t:v}=Kt(),y=l.ref({});function w(D){return y.value[D]}function E(D){var _;return(_=w(D))==null?void 0:_.getTargetRef()}function R(){return{form:f,validatedForm:e.validatedForm,getComponentRef:E,doSearch:U,doReset:S,doValidate:C}}function F(D){return{...R(),key:D,value:m(f,D)}}async function C(D=!1,_="search"){try{return e.validate&&await r.form.validateWrap(x.value),!0}catch(k){return D||t.emit("validate-error",{...R(),error:k,trigger:_}),!1}}async function U(){u&&u.cancel(),await C()&&(h(),await l.nextTick(),t.emit("_search",R()),t.emit("search",R()))}async function S(){const D=c(),_=X.entries(f);for(const k of _){const b=m(D,k[0]);b==null?X.unset(f,k[0]):X.set(f,k[0],b)}await C()&&(h(),await l.nextTick(),e.reset&&e.reset(R()),t.emit("_reset",R()),t.emit("reset",R()),e.searchAfterReset&&U())}const W=l.computed(()=>{const D=[],_={search:{show:!0,type:"primary",disabled:!1,click:k=>{U()},order:1,text:v("fs.search.search.text")},reset:{show:!0,disabled:!1,click:k=>{S()},text:v("fs.search.reset.text"),order:2}};n(_,e.buttons);for(let k in _){const b=_[k];b._click=()=>{b.click(R())},D.push(b)}return D.sort((k,b)=>k.order-b.order),D});function z(){var D;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((D=e.debounce)==null?void 0:D.wait)||500;u=X.debounce(U,_,e.debounce)}}z();function V(){return f}function j(){return e.validatedForm}function H(D,_=!0){_||X.each(X.keys(f),k=>{delete f[k]}),a(f,D),h()}const Y=l.ref(!1),ae=()=>{De.debug("do auto search,inputEventDisabled:",Y.value),Y.value!==!0&&u&&u()},se=D=>{D.autoSearchTrigger==="input"&&ae()},de=D=>{Y.value=D,ae()};async function K(D,_){const k=_.key;X.set(f,k,D);const b=e.validateOnChangeSilent;if(_.valueChange){const A=_.key,G=f[A],re=E(A),ee=_.valueChange instanceof Function?_.valueChange:_.valueChange.handle,te=R(),ne={index:0,row:te.form,form:te.form,...te,key:A,value:G,componentRef:re,immediate:!1,getComponentRef:E,mode:"search"};ee(ne)}e.validateOnChange&&await C(b,"change")&&h(),(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&ae()}const we=l.computed(()=>e.validate?e.options.rules:[]);return h(),{get:m,ui:r,onValueChanged:K,doValidate:C,doSearch:U,doReset:S,formData:f,componentRenderRefs:y,getComponentRenderRef:w,getComponentRef:E,getForm:V,getValidatedForm:j,setForm:H,searchFormRef:x,onInput:se,inputEventDisabled:Y,changeInputEventDisabled:de,computedColumns:d,computedButtons:W,computedRules:we,buildFieldContext:F,getContextFn:R}}}),ND="",Fw={class:"fs-search fs-search-v2"},Aw={class:"fs-search-buttons"};function Dw(e,t,r,n,a,i){const s=l.resolveComponent("fs-button"),o=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createElementBlock("div",Fw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.collapseTransition.name),null,{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),l.mergeProps({ref:"searchFormRef",model:e.formData,onsubmit:"event.preventDefault();"},e.options,{rules:e.computedRules,class:"fs-search-form",onCompositionstart:t[0]||(t[0]=c=>e.changeInputEventDisabled(!0)),onCompositionend:t[1]||(t[1]=c=>e.changeInputEventDisabled(!1))}),{default:l.withCtx(()=>{var c;return[e.show!==!1?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(((c=e.container)==null?void 0:c.is)||"fs-search-layout-default"),l.mergeProps({key:0},e.container,{columns:e.computedColumns,"get-context-fn":e.getContextFn}),l.createSlots({"search-buttons":l.withCtx(()=>[l.createElementVNode("div",Aw,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedButtons,(f,u)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:u},[f.show!==!1?(l.openBlock(),l.createBlock(s,l.mergeProps({key:0,ref_for:!0},f,{onClick:d=>f._click()}),null,16,["onClick"])):l.createCommentVNode("",!0)],64))),128))])]),_:2},[e.slots["search-left"]?{name:"search-left",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-left"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"0"}:void 0,e.slots["search-middle"]?{name:"search-middle",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-middle"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"1"}:void 0,e.slots["search-right"]?{name:"search-right",fn:l.withCtx(()=>[l.createVNode(o,{slots:e.slots["search-right"],scope:e.getContextFn()},null,8,["slots","scope"])]),key:"2"}:void 0]),1040,["columns","get-context-fn"])):l.createCommentVNode("",!0)]}),_:1},16,["model","rules"]))]),_:1}))])}const hu=rt(Tw,[["render",Dw]]),Rw=l.defineComponent({name:"FsSearchV1",components:{FsSearchButtons:du},inheritAttrs:!1,props:{initialForm:{type:Object},options:{type:Object},columns:{type:Object},tabs:{type:Object},buttons:{type:Object},searchAfterReset:{type:Boolean,default:!0},autoSearch:{type:Boolean,default:!0},debounce:{type:[Boolean,Object],default:void 0},slots:{default(){return{}}},show:{type:Boolean,default:!0},validate:{default:!1},layout:{type:String,default:"single-line"},col:{},collapse:{type:Boolean,default:!1}},emits:["search","reset","collapse","update:collapse"],setup(e,t){const{ui:r}=ue.useUi();l.onMounted(()=>{if(K.value&&H.value){Y.value=H.value.$el.offsetHeight;const D=H.value.$el.children;D&&D.length>1&&(ae.value=D[1].offsetHeight+2)}});let n=null;function a(){return cloneDeep(e.initialForm||{})}const i=l.reactive(a()),{doComputed:s,AsyncComputeValue:o}=Nr();X.each(e.columns,D=>{D.value!=null&&D.value instanceof o&&De.warn("search.value配置不支持AsyncCompute类型的动态计算")});const{merge:c}=Ze(),f=c,u=s(()=>e.columns,x,null,D=>{e.validate||X.forEach(D,b=>{delete b.rules}),e.col&&X.forEach(D,b=>{b.col=c({},e.col,b.col)});let _=[];X.forEach(D,(b,A)=>{b._key=A,_.push(b)}),_=X.sortBy(_,b=>b.order??Un.orderDefault);const k={};return _.forEach(b=>{let A=b._key;delete b._key,k[A]=b}),k});X.forEach(u.value,(D,_)=>{var b;if(D.value===void 0)return;const k=l.unref(D.value);k!==void 0&&D.show!==!1&&((b=D.component)==null?void 0:b.show)!==!1&&(i[_]=k)});const d=l.ref(),{t:h}=Kt(),m=l.ref({});function g(D){return m.value[D]}function p(D){var _,k;return(k=(_=g(D))==null?void 0:_.$refs)==null?void 0:k.targetRef}function x(){return{form:i,validatedForm:i,getComponentRef:p,doValidate:null}}const v=l.ref(x());async function y(){if(n&&n.cancel(),await r.form.validateWrap(d.value))t.emit("search",v.value);else return r.message.error({message:h("fs.search.error.message")}),!1}function w(){const D=a(),_=X.entries(i);for(const k of _){const b=X.get(D,k[0]);b==null?X.unset(i,k[0]):X.set(i,k[0],b)}e.reset&&e.reset(v.value),t.emit("reset",x()),e.searchAfterReset&&l.nextTick(()=>{y()})}const E=l.computed(()=>{const D=[],_={search:{show:!0,type:"primary",disabled:!1,click:k=>{y()},order:1,text:h("fs.search.search.text")},reset:{show:!0,disabled:!1,click:k=>{w()},text:h("fs.search.reset.text"),order:2}};c(_,e.buttons);for(let k in _){const b=_[k];b._click=()=>{b.click(x())},D.push(b)}return D.sort((k,b)=>k.order-b.order),D});function R(){var D;if(e.autoSearch!==!1&&e.debounce!==!1){let _=((D=e.debounce)==null?void 0:D.wait)||500;n=debounce(y,_,e.debounce)}}R();function F(){return i}function C(D,_=!0){_||X.each(X.keys(i),k=>{delete i[k]}),f(i,D)}const U=l.ref(!1),S=()=>{De.debug("do auto search,inputEventDisabled:",U.value),U.value!==!0&&n&&n()},W=D=>{D.autoSearchTrigger==="input"&&S()},z=D=>{U.value=D,S()};function V(D,_){const k=_.key;if(X.set(i,k,D),_.valueChange){const b=_.key,A=i[b],G=p(b);(_.valueChange instanceof Function?_.valueChange:_.valueChange.handle)({key:b,value:A,componentRef:G,...x(),immidiate:!1})}(_.autoSearchTrigger==null||_.autoSearchTrigger===!0||_.autoSearchTrigger==="change")&&S()}const j=l.computed(()=>e.validate?e.options.rules:[]),H=l.ref(),Y=l.ref(0),ae=l.ref(0),se=()=>{t.emit("update:collapse",!e.collapse),t.emit("collapse",!e.collapse)},de=l.computed(()=>e.layout==="multi-line"?r.col.name:"div"),K=l.computed(()=>e.layout==="multi-line"),we=l.computed(()=>K.value?e.collapse?ae.value?ae.value+"px":"":Y.value?Y.value+"px":"":"auto");return{get:(D,_)=>X.get(D,_),ui:r,onValueChanged:V,doSearch:y,doReset:w,form:i,componentRenderRefs:m,getComponentRenderRef:g,getComponentRef:p,getForm:F,setForm:C,searchFormRef:d,onInput:W,inputEventDisabled:U,changeInputEventDisabled:z,computedColumns:u,computedButtons:E,computedRules:j,columnsRowRef:H,computedColumnBoxHeight:we,computedColName:de,computedIsMultiLine:K,toggleCollapse:se,searchEventContextRef:v}}}),ID="",Ow={class:"fs-search-box"},Bw={class:"fs-search-main"},Nw={key:0,class:"fs-search-col"},Iw={key:1,class:"fs-search-col fs-search-middle"},Pw={key:3,class:"fs-search-col fs-search-right"},Mw={key:0,class:"fs-search-action"};function Lw(e,t,r,n,a,i){const s=l.resolveComponent("fs-slot-render"),o=l.resolveComponent("fs-component-render"),c=l.resolveComponent("fs-search-buttons"),f=l.resolveComponent("fs-button");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.collapseTransition.name),null,{default:l.withCtx(()=>[e.show!==!1?(l.openBlock(),l.createElementBlock("div",{key:0,class:l.normalizeClass(["fs-search",{"fs-search-multi-line":e.computedIsMultiLine}])},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.form.name),l.mergeProps({ref:"searchFormRef",model:e.form},e.options,{rules:e.computedRules,class:"fs-search-form",onCompositionstart:t[0]||(t[0]=u=>e.changeInputEventDisabled(!0)),onCompositionend:t[1]||(t[1]=u=>e.changeInputEventDisabled(!1))}),{default:l.withCtx(()=>[l.createElementVNode("div",Ow,[l.createElementVNode("div",Bw,[l.createElementVNode("div",{class:l.normalizeClass(["fs-search-columns",{"fs-search-collapse":e.collapse}]),style:l.normalizeStyle({height:e.computedColumnBoxHeight})},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),{ref:"columnsRowRef"},{default:l.withCtx(()=>[e.slots["search-left"]?(l.openBlock(),l.createElementBlock("div",Nw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-left"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedColumns,(u,d)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:d},[u.show===!0?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedColName),l.mergeProps({key:0,class:"fs-search-col"},{ref_for:!0},u.col),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.mergeProps({ref_for:!0},u,{[e.ui.formItem.prop||""]:d,label:u.title}),{default:l.withCtx(()=>[e.slots["search_"+d]?(l.openBlock(),l.createBlock(s,{key:0,slots:e.slots["search_"+d],scope:{...e.searchEventContextRef,key:d}},null,8,["slots","scope"])):(l.openBlock(),l.createElementBlock(l.Fragment,{key:1},[u.component&&u.component.show!==!1?(l.openBlock(),l.createBlock(o,l.mergeProps({key:0,ref_for:!0,ref:h=>{h&&(e.componentRenderRefs[u.key]=h)},"model-value":e.get(e.form,d)},{ref_for:!0},u.component,{scope:e.searchEventContextRef,"onUpdate:modelValue":h=>e.onValueChanged(h,u),onInput:h=>e.onInput(u)}),null,16,["model-value","scope","onUpdate:modelValue","onInput"])):l.createCommentVNode("",!0)],64))]),_:2},1040,["label"]))]),_:2},1040)):l.createCommentVNode("",!0)],64))),128)),e.slots["search-middle"]?(l.openBlock(),l.createElementBlock("div",Iw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-middle"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0),e.computedIsMultiLine?l.createCommentVNode("",!0):(l.openBlock(),l.createBlock(c,{key:2,buttons:e.computedButtons},null,8,["buttons"])),e.slots["search-right"]?(l.openBlock(),l.createElementBlock("div",Pw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(s,{slots:e.slots["search-right"],scope:e.searchEventContextRef},null,8,["slots","scope"])]),_:1}))])):l.createCommentVNode("",!0)]),_:1},512))],6),e.computedIsMultiLine?(l.openBlock(),l.createBlock(c,{key:0,buttons:e.computedButtons},null,8,["buttons"])):l.createCommentVNode("",!0)]),e.computedIsMultiLine?(l.openBlock(),l.createElementBlock("div",Mw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),null,{default:l.withCtx(()=>[l.createVNode(f,{icon:e.collapse?e.ui.icons.caretUp:e.ui.icons.caretDown,onClick:e.toggleCollapse},null,8,["icon","onClick"])]),_:1}))])):l.createCommentVNode("",!0)])]),_:1},16,["model","rules"]))],2)):l.createCommentVNode("",!0)]),_:1})}const mu=rt(Rw,[["render",Lw]]),Vw=l.defineComponent({name:"FsSearchLayoutDefault",props:{collapse:{type:Boolean,default:!0},collapseButton:{type:Object},action:{type:Object},layout:{type:String,default:"single-line"},columns:{type:Object},col:{type:Object},getContextFn:{type:Function}},emits:["update:collapse","collapse"],setup(e,t){const{ui:r}=ue.useUi(),{t:n}=Kt(),a=l.ref(),i=l.computed(()=>e.layout==="multi-line");l.onMounted(()=>{i.value&&a.value&&(o.value=a.value.$el.offsetHeight)});const s=l.computed(()=>!i.value||!e.collapse?"auto":o.value?o.value+"px":""),o=l.ref(0),c=()=>{t.emit("update:collapse",!e.collapse),t.emit("collapse",!e.collapse)};function f(u){return X.merge({},e.col,u)}return{ui:r,columnsRowRef:a,computedColumnBoxHeight:s,computedIsMultiLine:i,toggleCollapse:c,mergeCol:f,t:n}}}),PD="",Uw={class:"fs-search-box"},$w={class:"fs-search-col fs-search-slot"},Ww={class:"fs-search-col fs-search-slot"},Hw={class:"fs-search-col fs-search-slot"},jw={key:0,class:"fs-search-buttons-group fs-search-multi-line-buttons"};function zw(e,t,r,n,a,i){var c;const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-button");return l.openBlock(),l.createElementBlock("div",{class:l.normalizeClass(["fs-search-layout-default",{"fs-search-multi-line":e.computedIsMultiLine}])},[l.createElementVNode("div",Uw,[l.createElementVNode("div",{class:l.normalizeClass(["fs-search-main",{"fs-search-collapse":e.collapse}]),style:l.normalizeStyle({maxHeight:e.computedColumnBoxHeight})},[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.row.name),{ref:"columnsRowRef",class:"fs-search-columns"},{default:l.withCtx(()=>{var f;return[l.createElementVNode("span",$w,[l.renderSlot(e.$slots,"search-left")]),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.columns,(u,d)=>(l.openBlock(),l.createElementBlock(l.Fragment,{key:d},[u.show?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.col.name),l.mergeProps({key:0,class:"fs-search-col"},{ref_for:!0},e.mergeCol(u.col)),{default:l.withCtx(()=>[l.createVNode(s,{"render-func":u._cellRender,scope:e.getContextFn()},null,8,["render-func","scope"])]),_:2},1040)):l.createCommentVNode("",!0)],64))),128)),l.createElementVNode("span",Ww,[l.renderSlot(e.$slots,"search-middle")]),e.computedIsMultiLine?l.createCommentVNode("",!0):(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.col.name),l.mergeProps({key:0,class:"fs-search-col fs-search-buttons-group"},e.mergeCol((f=e.action)==null?void 0:f.col)),{default:l.withCtx(()=>{var u;return[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.formItem.name),l.normalizeProps({[e.ui.formItem.label||""]:(u=e.action)==null?void 0:u.label}),{default:l.withCtx(()=>[l.renderSlot(e.$slots,"search-buttons",l.normalizeProps(l.guardReactiveProps(e.getContextFn())))]),_:3},16))]}),_:3},16)),l.createElementVNode("span",Hw,[l.renderSlot(e.$slots,"search-right",l.normalizeProps(l.guardReactiveProps(e.getContextFn())))])]}),_:3},512))],6),e.computedIsMultiLine?(l.openBlock(),l.createElementBlock("div",jw,[l.renderSlot(e.$slots,"search-buttons"),((c=e.collapseButton)==null?void 0:c.show)!==!1?(l.openBlock(),l.createBlock(o,l.mergeProps({key:0,icon:e.collapse?e.ui.icons.caretDown:e.ui.icons.caretUp,text:e.collapse?e.t("fs.search.container.collapseButton.text.expand"):e.t("fs.search.container.collapseButton.text.collapse")},e.collapseButton,{onClick:e.toggleCollapse}),null,16,["icon","text","onClick"])):l.createCommentVNode("",!0)])):l.createCommentVNode("",!0)])],2)}const pu=rt(Vw,[["render",zw]]),Gw={class:"fs-tabs-filter"},Xw=l.defineComponent({name:"FsTabsFilter",inheritAttrs:!1}),gu=l.defineComponent({...Xw,props:{name:{},show:{type:Boolean,default:!1},defaultOption:{default:void 0},options:{default:()=>[]},modelValue:{},value:{default:"value"},label:{default:"label"}},emits:["update:modelValue","change"],setup(e,{emit:t}){const r=l.useAttrs(),{merge:n}=Ze(),a=e,i=l.computed(()=>n({show:!0,value:null,label:"全部"},a.defaultOption||{})),s="_default_key_",o=l.computed(()=>{const m=a.modelValue==null||a.modelValue===i.value.value?s:a.modelValue;return{type:"card",...r,[h.tabs.modelValue]:m,["onUpdate:"+h.tabs.modelValue]:f}}),c=t;function f(m){s===m&&(m=i.value.value);const g=a.modelValue;c("update:modelValue",m),g!==m&&c("change",m)}function u(m){return m[a.value]}function d(m){return m[a.label]}const{ui:h}=ue.useUi();return(m,g)=>(l.openBlock(),l.createElementBlock("div",Gw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabs.name),l.normalizeProps(l.guardReactiveProps(o.value)),{default:l.withCtx(()=>[i.value.show?(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabPane.name),l.normalizeProps({key:0,[l.unref(h).tabPane.key||""]:s,[l.unref(h).tabPane.tab||""]:i.value.label}),null,16)):l.createCommentVNode("",!0),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(m.options,(p,x)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(h).tabPane.name),l.normalizeProps({key:x,[l.unref(h).tabPane.key||""]:u(p),[l.unref(h).tabPane.tab||""]:d(p)}),null,16))),128))]),_:1},16))]))}}),MD="",Kw={class:"fs-icon-selector"},Yw={key:0,class:"fs-icon-selector-dialog"},qw={class:"fs-icon-selector-dialog-content mb-4"},Jw={class:"icon-tabs-box mt-10 mb-10"},Zw={class:"icon-container"},Qw={class:"icon-list"},e_=["title","onClick","onDblclick"],t_={class:"load-more"},r_={key:1},n_={class:"footer"},a_=l.defineComponent({name:"FsIconSelector"}),xu=l.defineComponent({...a_,props:{modelValue:{type:String,default:""},dialog:{type:Object,default:()=>({})},tabs:{type:Object,default:()=>({})},limit:{type:Number,default:136},iconSets:{type:Array,default:()=>["carbon","ion","ant-design","fa-solid","fa-brands","fa-regular","mdi"]},apiProvider:{type:String,default:"https://api.iconify.design"}},emits:["update:modelValue"],setup(e,{emit:t}){const r=t,n=136,a=e,{ui:i}=ue.useUi(),s=l.ref(!1),o=l.computed(()=>({width:1024,style:{width:"1024px"},...a.dialog,[i.dialog.visible]:s.value,[`onUpdate:${i.dialog.visible}`]:j=>{s.value=j}})),c=i.formItem.injectFormItemContext(),f=l.computed(()=>({...h,[i.input.modelValue]:a.modelValue,[`onUpdate:${i.input.modelValue}`]:j=>{u(j)}})),u=j=>{r("update:modelValue",j),c==null||c.onChange()},d=()=>{s.value=!0,a.iconSets.length>0&&E.value.records.length===0&&y(a.iconSets[0])},h=l.useAttrs(),m={async getCollections(){return await(await fetch(`${a.apiProvider}/collections`)).json()},async getIcons(j){return await(await fetch(`${a.apiProvider}/collection?prefix=${j}`)).json()},async search(j,H){const Y=H.start??0,ae=H.limit??50;return await(await fetch(`${a.apiProvider}/search?query=${j}&start=${Y}&limit=${ae}`)).json()}},g=l.ref({}),p=async j=>{let H=g.value[j];if(!H){const Y=await m.getIcons(j),ae=Y.uncategorized??[],se=Y.categories??[];H=ae;for(const de in se)H=H.concat(se[de]);H=H.map(de=>`${j}:${de}`),g.value[j]=H}return H},x=l.ref(""),v=l.ref("all"),y=j=>{v.value=j,x.value="",w(),R()},w=()=>{E.value.start=0,E.value.records=[],E.value.total=0,E.value.limit=a.limit??n},E=l.ref({loading:!1,start:0,limit:a.limit??n,total:null,query:"",records:[]}),R=async()=>{if(!E.value.loading){E.value.query!==x.value&&w(),E.value.loading=!0;try{const j=await F();E.value.records=E.value.records.concat(j.icons),E.value.total=j.total,E.value.limit=j.limit,E.value.query=x.value}finally{E.value.loading=!1}}};async function F(){if(v.value==="all"){if(!x.value){i.notification.warn("请输入搜索关键字");return}return await m.search(x.value,E.value)}else return await C(v.value)}async function C(j){const H=await p(j);let Y=H;x.value&&(Y=H.filter(de=>de.includes(x.value)));let ae=E.value.start+E.value.limit;return ae>Y.length&&(ae=Y.length),{icons:Y.slice(E.value.start,ae),total:Y.length,limit:E.value.limit,start:E.value.start}}const U=l.ref(a.modelValue),S=(j,H=!1)=>{U.value=j,H&&W()},W=()=>{s.value=!1,u(U.value)},z=async()=>{E.value.start+=E.value.limit,await R()},V=l.computed(()=>({...a.tabs,[i.tabs.modelValue]:v.value,[`onUpdate:${i.tabs.modelValue}`]:y}));return(j,H)=>{const Y=l.resolveComponent("fs-icon"),ae=l.resolveComponent("fs-button"),se=l.resolveComponent("fs-loading");return l.openBlock(),l.createElementBlock("div",Kw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).input.name),l.mergeProps(f.value,{onClick:d}),{prefix:l.withCtx(()=>[e.modelValue?(l.openBlock(),l.createBlock(Y,{key:0,class:"fs-icon-selector-input-prefix",icon:e.modelValue},null,8,["icon"])):l.createCommentVNode("",!0)]),_:1},16)),s.value?(l.openBlock(),l.createElementBlock("div",Yw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).dialog.name),l.mergeProps({preset:"dialog"},o.value,{footer:null}),{[l.unref(i).dialog.titleSlotName]:l.withCtx(()=>[l.createVNode(Y,{icon:"icon-select",class:"mr-2"}),H[1]||(H[1]=l.createTextVNode(" 选择图标 ",-1))]),default:l.withCtx(()=>[l.createElementVNode("div",qw,[l.createElementVNode("div",Jw,[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabs.name),l.mergeProps(V.value,{type:"card"}),{default:l.withCtx(()=>[(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabPane.name),l.normalizeProps({key:"all",[l.unref(i).tabPane.key||""]:"all",[l.unref(i).tabPane.tab||""]:"全部"}),null,16)),(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.iconSets,de=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).tabPane.name),l.normalizeProps({key:de,[l.unref(i).tabPane.key||""]:de,[l.unref(i).tabPane.tab||""]:de}),null,16))),128))]),_:1},16)),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(i).input.name),l.normalizeProps({[l.unref(i).input.modelValue]:x.value,["onUpdate:"+l.unref(i).input.modelValue]:H[0]||(H[0]=de=>x.value=de),class:"ml-2",placeholder:"搜索图标, 双击选择",onKeydown:l.withKeys(R,["enter"])}),{suffix:l.withCtx(()=>[l.createVNode(ae,{type:"primary",size:"small",icon:l.unref(i).icons.search,onClick:R},null,8,["icon"])]),_:1},16)),l.createElementVNode("div",Zw,[l.createElementVNode("div",Qw,[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(E.value.records,de=>(l.openBlock(),l.createElementBlock("div",{key:de,class:l.normalizeClass(["icon-item",{active:de===U.value}]),title:de,onClick:K=>S(de,!1),onDblclick:K=>S(de,!0)},[l.createVNode(Y,{icon:de,class:"text-2xl"},null,8,["icon"])],42,e_))),128))]),l.createElementVNode("div",t_,[E.value.loading?(l.openBlock(),l.createBlock(se,{key:0,loading:E.value.loading,text:"加载中"},null,8,["loading"])):E.value.total==null||E.value.total==0?(l.openBlock(),l.createElementBlock("div",r_,H[2]||(H[2]=[l.createElementVNode("div",null,"暂无数据",-1)]))):E.value.total>E.value.start+E.value.limit?(l.openBlock(),l.createElementBlock("div",{key:2,onClick:z},H[3]||(H[3]=[l.createElementVNode("div",null,"加载更多",-1)]))):l.createCommentVNode("",!0)])]),l.createElementVNode("div",n_,[l.createVNode(ae,{type:"primary",onClick:W},{default:l.withCtx(()=>H[4]||(H[4]=[l.createTextVNode("确定",-1)])),_:1,__:[4]})])])])]),_:2},1040))])):l.createCommentVNode("",!0)])}}}),LD="",i_=l.defineComponent({name:"FsDictRadio",props:{dict:{},options:{type:Array},radioName:{},optionName:{type:String},optionProps:{type:Object,default(){return{}}},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{ui:r}=ue.useUi();e.radioName&&console.warn("参数radioName即将废弃,请改成optionName");const n=l.computed(()=>e.optionName??e.radioName??r.radio.name);let a=Tn(e,t,r.radioGroup.modelValue);const i=a.createComputedOptions();return{ui:r,computedRadioName:n,...a,computedOptions:i,onSelectedChange:o=>{t.emit("change",o),o&&o.target&&(o=o.target.value);const c=a.getDict();if(c&&c.dataMap&&c.dataMap[o]){const f=c.dataMap[o];t.emit("selected-change",f)}else t.emit("selected-change",null)}}}});function s_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.radioGroup.name),{onChange:e.onSelectedChange},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedOptions,s=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.computedRadioName),l.mergeProps({ref_for:!0,ref:"radioRef",key:e.getValue(s),[e.ui.radio.value||""]:e.getValue(s)},{ref_for:!0},e.optionProps),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(e.getLabel(s)),1)]),_:2},1040))),128))]),_:1},40,["onChange"])}const vu=rt(i_,[["render",s_]]),o_=l.defineComponent({name:"FsDictSelect"}),wu=l.defineComponent({...o_,props:{dict:{},options:{},slots:{},renderLabel:{type:Function},transformDictData:{type:Function}},emits:["dict-change","selected-change","change"],setup(e,{expose:t,emit:r}){const n=e,a=r,i=l.ref(),{t:s}=Kt(),o=l.computed(()=>n.placeholder||s("fs.component.select.placeholder")),{ui:c}=ue.useUi(),f=l.useAttrs(),d=Tn(n,{emit:a,attrs:f},c.select.modelValue),h=d.createComputedOptions(),m=x=>{a("change",x);const v=d.getDict();if(x&&Array.isArray(x)&&x.length>0){const y=[];for(const w of x)v&&v.dataMap&&v.dataMap[w]&&y.push(v.dataMap[w]);a("selected-change",y);return}if(v&&v.dataMap&&v.dataMap[x]){const y=v.dataMap[x];a("selected-change",y)}else a("selected-change",null)},g=l.useSlots();t({selectRef:i,computedPlaceholder:o,...d,computedOptions:h,onSelectedChange:m});const p=()=>{const{ui:x}=ue.useUi(),v=l.resolveDynamicComponent(x.select.name),y=x.select.modelValue;if(x.option.name==null){const C=h.value||[],U={[`onUpdate:${y}`]:W=>{this.$emit(`onUpdate:${y}`,W),m(W)},...f},S={...g,...n.slots};return l.createVNode(v,l.mergeProps({ref:"selectRef",placeholder:o.value,options:C,renderLabel:n.renderLabel},U),S)}const w=[],E=l.resolveDynamicComponent(x.option.name),R=h.value||[];for(const C of R){const U=l.createVNode(E,l.mergeProps(C,{value:d.getValue(C),label:d.getLabel(C)}),{default:()=>[n.renderLabel?n.renderLabel(C):d.getLabel(C)]});w.push(U)}const F={default:()=>w,...g,...n.slots};return l.createVNode(v,l.mergeProps({ref:"selectRef",placeholder:o.value,onChange:m},f),F)};return(x,v)=>(l.openBlock(),l.createBlock(p))}}),VD="";function l_(e){if(e==null)return 0;typeof e!="string"&&(e=JSON.stringify(e));let t=0,r,n,a;if(e.length===0)return t;for(r=0,a=e.length;r<a;r++)n=e.charCodeAt(r),t=(t<<5)-t+n,t|=0;return Math.abs(t)}function c_(e){let t=[];return typeof e.modelValue=="string"&&e.multiple&&e.separator!=null&&e.separator!==""?t=e.modelValue.split(e.separator):e.modelValue instanceof Array?t=e.modelValue:t=[e.modelValue],t}const f_=l.defineComponent({name:"FsValuesFormat",props:{modelValue:{},dict:{},multiple:{default:!0},separator:{default:","},color:{},effect:{},autoColors:{type:Array},autoEffects:{type:Array},type:{default:"tag"},valueType:{type:String},defaultLabel:{},labelFormatter:{type:Function},itemRender:{type:Function},closable:{type:Boolean,default:!1}},emits:["click","dict-change","close","update:modelValue"],setup(e,t){const{ui:r}=ue.useUi(),n=r.tag.colors,a=["plain","light"],i=Tn(e,t),{getColor:s,getValue:o,removePropValue:c}=i;i.watchValue();function f(m,g){!g.effect&&m.effect&&(g.effect=m.effect);const p=r.tag.type,x=s(g);if(x!=null){if(typeof x!="string")return;c(g,"color"),g[p]=x;return}if(m.color==="auto"){const v=l_(o(g));o(g);const y=m.autoColors?m.autoColors:n;g[p]=y[v%y.length];const w=m.autoEffects?m.autoEffects:a;g.effect=w[Math.floor(v/y.length)%w.length]}else g[p]=m.color}const u=l.computed(()=>{var w,E;if(e.valueType==="object")return e.modelValue&&!Array.isArray(e.modelValue)?[e.modelValue]:e.modelValue;const m=i.getDict();if(e.modelValue==null||e.modelValue==="")return[];const g=c_(e);let p=[];const x=((w=e.dict)==null?void 0:w.value)||"value",v=((E=e.dict)==null?void 0:E.label)||"label";m?(p=m.getNodesFromDataMap(g),X.forEach(p,R=>{R[v]==null&&(R[v]=e.defaultLabel||R[x])})):(p=[],X.forEach(g,R=>{R instanceof Object?p.push(R):p.push({[x]:R,[v]:R})}));const y=[];return X.forEach(p,R=>{y.push(X.omit(R,"children"))}),X.forEach(y,R=>{f(e,R)}),y});function d(m){t.emit("click",{item:m})}function h(m,g){t.emit("close",{item:g,index:m});const p=[];for(let x=0;x<u.value.length;x++)x!==m&&p.push(o(u.value[x]));t.emit("update:modelValue",p)}return{ui:r,...i,doClick:d,computedValueItems:u,doClose:h}}}),UD="",u_={class:"fs-values-format"},d_=["onClick"];function h_(e,t,r,n,a,i){const s=l.resolveComponent("fs-render"),o=l.resolveComponent("fs-icon");return l.openBlock(),l.createElementBlock("span",u_,[e.itemRender?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(e.computedValueItems,c=>(l.openBlock(),l.createBlock(s,{key:e.getValue(c),"render-func":e.itemRender,scope:c},null,8,["render-func","scope"]))),128)):e.type==="text"?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:1},l.renderList(e.computedValueItems,c=>(l.openBlock(),l.createElementBlock("span",{key:e.getValue(c),onClick:f=>e.doClick(c)},l.toDisplayString(e.getLabel(c)),9,d_))),128)):(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:2},l.renderList(e.computedValueItems,(c,f)=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.tag.name),l.mergeProps({key:e.getValue(c),class:"fs-tag",size:"small",closable:e.closable},{ref_for:!0},c,{icon:null,name:null,onClose:u=>e.doClose(f,c),onClick:u=>e.doClick(c)}),{default:l.withCtx(()=>[c.icon?(l.openBlock(),l.createBlock(o,{key:0,icon:c.icon,spin:c.iconSpin,class:"fs-tag-icon"},null,8,["icon","spin"])):l.createCommentVNode("",!0),l.createTextVNode(" "+l.toDisplayString(e.getLabel(c)),1)]),_:2},1040,["closable","onClose","onClick"]))),128))])}const _u=rt(f_,[["render",h_]]),m_=l.defineComponent({name:"FsDictCascaderFormat",props:{modelValue:{type:[String,Array],default:void 0,require:!0},separator:{type:String,default:",",require:!1},multiple:{type:Boolean,default:!1},dict:{type:Object,default:void 0,require:!1}},emits:["dict-change"],setup(e,t){var a;const r=Tn(e,t);(a=e.dict)!=null&&a.getNodesByValues&&r.watchValue();const n=l.computed(()=>e.multiple);return{...r,computedMultiple:n}},data(){return{}},computed:{labels(){return this.modelValue==null?[]:this.buildValueItem(this.modelValue)},multipleLabels(){if(this.modelValue==null)return[];const e=[];for(const t of this.modelValue)e.push(this.buildValueItem(t));return e}},methods:{getValueArr(e){if(e==null)if(this.multiple){e=[];for(const r of this.modelValue)for(const n of r)e.push(n)}else e=this.modelValue;if(e==null)return[];let t=null;return typeof e=="string"&&!this.multiple&&this.separator!=null&&this.separator!==""?t=e.split(this.separator):e instanceof Array?t=e:t=[e],t},buildValueItem(e){const t=this.getValueArr(e),r=this.getDict();if(r)return r.getNodesFromDataMap(t)}}}),p_={key:0},g_={key:0};function x_(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",null,[e.computedMultiple?(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:0},l.renderList(e.multipleLabels,(s,o)=>(l.openBlock(),l.createElementBlock("div",{key:o},[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(s,(c,f)=>(l.openBlock(),l.createElementBlock("span",{key:f},[f!==0?(l.openBlock(),l.createElementBlock("span",p_," / ")):l.createCommentVNode("",!0),l.createElementVNode("span",null,l.toDisplayString(e.getLabel(c)),1)]))),128))]))),128)):(l.openBlock(!0),l.createElementBlock(l.Fragment,{key:1},l.renderList(e.labels,(s,o)=>(l.openBlock(),l.createElementBlock("span",{key:o},[o!==0?(l.openBlock(),l.createElementBlock("span",g_," / ")):l.createCommentVNode("",!0),l.createElementVNode("span",null,l.toDisplayString(e.getLabel(s)),1)]))),128))])}const yu=rt(m_,[["render",x_]]),v_=l.defineComponent({name:"FsDictCascader",props:{dict:{},options:{type:Array},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const r=l.ref(),n=Tn(e,t),{ui:a}=ue.useUi(),i=l.ref();e.dict&&(i.value=a.cascader.fieldNames({value:e.dict.value,label:e.dict.label,children:e.dict.children}));const s=n.createComputedOptions();function o(c){if(t.emit("change",c),c){let f=[];const u=n.getDict();if(u&&u.dataMap){for(let d of c){const h=u.dataMap[d];h&&f.push(h)}t.emit("selected-change",f)}}else t.emit("selected-change",null)}return{ui:a,cascaderRef:r,...n,fieldNamesBinder:i,computedOptions:s,onSelectChange:o}}});function w_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.cascader.name),l.mergeProps({ref:"cascaderRef",options:e.computedOptions},e.fieldNamesBinder,{onChange:e.onSelectChange}),null,16,["options","onChange"])}const ku=rt(v_,[["render",w_]]),__=l.defineComponent({name:"FsDictCheckbox",props:{dict:{},options:{type:Array,default:void 0,require:!1},optionName:{type:String},optionProps:{type:Object,default(){return{}}},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{ui:r}=ue.useUi();let n=Tn(e,t,r.checkboxGroup.modelValue);const a=n.createComputedOptions();return{ui:r,...n,computedOptions:a,onSelectedChange:s=>{if(t.emit("change",s),s){let o=[];const c=n.getDict();if(c&&c.dataMap){for(let f of s){const u=c.dataMap[f];u&&o.push(u)}t.emit("selected-change",o)}}else t.emit("selected-change",null)}}}});function y_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.checkboxGroup.name),{onChange:e.onSelectedChange},{default:l.withCtx(()=>[(l.openBlock(!0),l.createElementBlock(l.Fragment,null,l.renderList(e.computedOptions,s=>(l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.optionName||e.ui.checkbox.name),l.mergeProps({ref_for:!0,ref:"checkboxRef",key:e.getValue(s),[e.ui.checkbox.value||""]:e.getValue(s)},{ref_for:!0},e.optionProps),{default:l.withCtx(()=>[l.createTextVNode(l.toDisplayString(e.getLabel(s)),1)]),_:2},1040))),128))]),_:1},40,["onChange"])}const bu=rt(__,[["render",y_]]),k_=l.defineComponent({name:"FsDictSwitch",props:{dict:{type:Object},options:{},transformDictData:{type:Function,default:void 0}},emits:["dict-change"],setup(e,t){const{ui:r}=ue.useUi();let n=Tn(e,t,r.switch.modelValue);const a=n.createComputedOptions();return{ui:r,...n,computedOptions:a}},computed:{_active(){return this.computedOptions.length>0?this.computedOptions[0]:{}},_inActive(){return this.computedOptions.length>1?this.computedOptions[1]:{}},binding(){var t,r,n,a,i,s;const e=ue.uiContext.get();return{[e.switch.activeText]:this._active[((t=this.dict)==null?void 0:t.label)||"label"],[e.switch.inactiveText]:this._inActive[((r=this.dict)==null?void 0:r.label)||"label"],[e.switch.activeColor]:this._active[((n=this.dict)==null?void 0:n.color)||"color"],[e.switch.inactiveColor]:this._inActive[((a=this.dict)==null?void 0:a.color)||"color"],[e.switch.activeValue]:this._active[((i=this.dict)==null?void 0:i.value)||"value"],[e.switch.inactiveValue]:this._inActive[((s=this.dict)==null?void 0:s.value)||"value"]}}}});function b_(e,t,r,n,a,i){return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.switch.name),l.mergeProps({ref:"switchRef"},e.binding),null,16)}const Eu=rt(k_,[["render",b_]]),E_=l.defineComponent({name:"FsDateFormat",props:{modelValue:{required:!1},valueFormat:{type:String,default:void 0,required:!1},format:{type:String,default:"YYYY-MM-DD HH:mm:ss",required:!1}},data(){return{item:{}}},computed:{doFormat(){if(this.modelValue==null||this.modelValue==="")return"";let e=null;return this.valueFormat!=null?e=Mt(this.modelValue,this.valueFormat):e=Mt(this.modelValue),e.format(this.format)}},created(){},methods:{}});function S_(e,t,r,n,a,i){return l.openBlock(),l.createElementBlock("span",null,l.toDisplayString(e.doFormat),1)}const Su=rt(E_,[["render",S_]]),C_=l.defineComponent({name:"FsDictTree",components:{},props:{dict:{},options:{type:Array},placeholder:{type:String},transformDictData:{type:Function,default:void 0}},emits:["dict-change","selected-change","change"],setup(e,t){const{t:r}=Kt(),{ui:n}=ue.useUi(),a=l.computed(()=>e.placeholder||r("fs.component.select.placeholder"));let i=Tn(e,t);const s=t.slots,o=i.createComputedOptions(),c=l.computed(()=>{const d=i.getDict();return n.treeSelect.buildOptionKeysNameBinding({label:d.label,value:d.value,children:d.children})}),f=d=>{if(t.emit("change",d),d){const h=i.getDict();if(h&&h.dataMap)if(d instanceof Array){let m=[];for(let g of d){const p=h.dataMap[g];p&&m.push(p)}t.emit("selected-change",m)}else t.emit("selected-change",h.dataMap[d])}else t.emit("selected-change",null)},u=l.ref();return{ui:n,computedBinding:c,computedPlaceholder:a,...i,computedOptions:o,onSelectedChange:f,slots:s,treeRef:u}}});function T_(e,t,r,n,a,i){const s=l.resolveComponent("fs-slot-render");return l.openBlock(),l.createBlock(l.resolveDynamicComponent(e.ui.treeSelect.name),l.mergeProps({ref:"treeRef",[e.ui.treeSelect.options||""]:e.computedOptions,placeholder:e.computedPlaceholder},e.computedBinding,{onChange:e.onSelectedChange}),l.createSlots({_:2},[l.renderList(e.slots,(o,c)=>({name:c,fn:l.withCtx(f=>[l.createVNode(s,{slots:o,scope:f},null,8,["slots","scope"])])}))]),1040,["placeholder","onChange"])}const Cu=rt(C_,[["render",T_]]),F_={class:"fs-table-select"},A_={key:0,class:"fs-table-select-current"},Tu=l.defineComponent({__name:"fs-table-select",props:{modelValue:{},createCrudOptions:{},crudOptionsOverride:{default:void 0},beforeOpen:{},dict:{},select:{default:void 0},showSelect:{type:Boolean,default:!0},dialog:{default:void 0},showCurrent:{type:Boolean,default:!0},valuesFormat:{default:void 0},height:{default:void 0},multiple:{type:Boolean},crossPage:{type:Boolean,default:!0},rowKey:{default:void 0},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},valueType:{default:"value"},viewMode:{type:Boolean,default:!1},emitOnViewModel:{type:Boolean,default:!0},destroyOnClose:{type:Boolean,default:!0}},emits:["change","update:modelValue","selected-change","dialog-close","dialog-closed"],setup(e,{expose:t,emit:r}){const n=e,a=l.useSlots(),i=r,{ui:s}=ue.useUi(),{t:o}=Kt(),c=l.ref(),f=l.ref(),u=l.ref(!1);function d(){u.value=!1}function h(){u.value=!0}const{crudRef:m,crudBinding:g,crudExpose:p}=$f();function x(H){H==null||Array.isArray(H)&&H.length==0?F.value=[]:(n.multiple?F.value=H||[]:F.value=[H],n.valueType==="object"&&(F.value=F.value.map(Y=>n.dict.getValue(Y))))}const v=l.ref(),y=l.computed(()=>({wrapper:{}})),w=async(H={})=>{var se,de;if(n.disabled||n.readonly||(se=n.select)!=null&&se.disabled||(de=n.select)!=null&&de.readonly)return;if(n.dict==null)throw new Error("必须配置dict,且必须配置dict.getNodesByValues");const Y=await Uf({crudBinding:g,crudRef:m,createCrudOptions:n.createCrudOptions,crudOptionsOverride:S(),context:{t:o,ui:s,...H==null?void 0:H.context},crudExpose:p});x(n.modelValue),n.beforeOpen&&await n.beforeOpen({crudOptions:H==null?void 0:H.crudOptions,...V()}),H&&Y.appendCrudOptions(H==null?void 0:H.crudOptions);const ae=W({wrapper:{title:n.viewMode?o("fs.extends.tableSelect.view"):o("fs.extends.tableSelect.select"),width:"80%",draggable:!0,is:s.dialog.name,footer:!1,...s.formWrapper.buildInitBind(s.dialog.name),buttons:{reset:{show:!1},cancel:{text:o("fs.extends.tableSelect.cancel"),async click(){v.value.close()}},ok:{type:"primary",text:o("fs.extends.tableSelect.ok"),async click(){await z()}}}}},{wrapper:n.dialog});return v.value.open(ae),await l.nextTick(),await p.doRefresh(),Y},E=l.computed(()=>({...n.valuesFormat})),R=l.computed(()=>{const H=`onUpdate:${s.select.modelValue}`;let Y=n.modelValue;return n.valueType==="object"&&n.modelValue&&(n.multiple?Y=n.modelValue.map(ae=>n.dict.getValue(ae)):Y=n.dict.getValue(n.modelValue)),{[s.select.modelValue]:Y,[H]:ae=>{i("update:modelValue",ae)},[s.select.clearable]:!0,...s.select.buildMultiBinding(n.multiple),show:!1,...n.select}});l.watch(()=>n.modelValue,async H=>{H!==F.value&&(x(H),await l.nextTick(),await n.dict.appendByValues(F.value))});const F=l.ref([]);function C(){return n.rowKey||g.value.table.rowKey||"id"}const U=l.ref(!1);function S(){var se,de;let H=s.table;((de=(se=g.value)==null?void 0:se.table)==null?void 0:de.tableVersion)==="v2"&&(H=s.tableV2);let Y=H.buildSelectionCrudOptions({crossPage:n.crossPage,selectOnClickRow:!0,getRowKey:C,getPageData(){return g.value.data},useCompute:Nr,multiple:n.multiple,selectedRowKeys:F,onSelectedKeysChanged:async K=>{F.value=[...K],await l.nextTick(),await n.dict.appendByValues(F.value)}});return W({table:{async onRefreshed(){if(H.setSelectedRows){U.value=!0,await l.nextTick(),await l.nextTick();const K=p.getBaseTableRef();H.setSelectedRows({getRowKey:C,multiple:n.multiple,tableRef:K,selectedRowKeys:F}),U.value=!1}}}},Y,n.crudOptionsOverride)}const{merge:W}=Ze();async function z(){var se;if(n.dict.loading)return;let H=null,Y=null;((se=F.value)==null?void 0:se.length)>0&&(H=[...F.value],Y=H.map(de=>n.dict.getDictMap()[de]),n.valueType==="object"&&(H=Y),n.multiple!==!0&&H.length>0&&(H=H[0])),(!n.viewMode||n.emitOnViewModel)&&(i("update:modelValue",H),i("change",H),i("selected-change",Y));let ae={value:H,rows:Y,selectedRowKeys:F.value};i("dialog-close",ae),await l.nextTick(),await v.value.close(),u.value,i("dialog-closed",ae)}const V=()=>({opened:u,open:w,selectedRowKeys:F,dictSelectRef:c,valuesFormatRef:f,crudRef:m,crudBinding:g,crudExpose:p}),j=l.ref(V());return t(j.value),(H,Y)=>{const ae=l.resolveComponent("fs-dict-select"),se=l.resolveComponent("fs-values-format"),de=l.resolveComponent("fs-crud"),K=l.resolveComponent("fs-form-wrapper");return l.openBlock(),l.createElementBlock("div",F_,[!(a!=null&&a.default)&&!H.viewMode?(l.openBlock(),l.createBlock(ae,l.mergeProps({key:0,ref_key:"dictSelectRef",ref:c},R.value,{open:!1,disabled:H.disabled,readonly:H.readonly,dict:H.dict,onClick:w}),null,16,["disabled","readonly","dict"])):l.createCommentVNode("",!0),l.renderSlot(H.$slots,"default",l.normalizeProps(l.guardReactiveProps(j.value))),(l.openBlock(),l.createBlock(l.resolveDynamicComponent(l.unref(s).formItem.skipValidationWrapper),null,{default:l.withCtx(()=>[l.createVNode(K,l.mergeProps({ref_key:"formWrapperRef",ref:v},y.value,{onClosed:d,onOpen:h}),{"form-body-top":l.withCtx(()=>[u.value||H.destroyOnClose===!1?(l.openBlock(),l.createElementBlock("div",{key:0,style:l.normalizeStyle({width:"100%",height:H.height||"70vh"})},[l.createVNode(de,l.mergeProps({ref_key:"crudRef",ref:m},l.unref(g)),{"header-top":l.withCtx(()=>[H.showCurrent!==!1&&!H.viewMode?(l.openBlock(),l.createElementBlock("div",A_,[Y[1]||(Y[1]=l.createTextVNode(" 当前选中: ",-1)),l.createVNode(se,l.mergeProps({ref_key:"valuesFormatRef",ref:f,modelValue:F.value,"onUpdate:modelValue":Y[0]||(Y[0]=we=>F.value=we),dict:H.dict,closable:!0},E.value),null,16,["modelValue","dict"])])):l.createCommentVNode("",!0)]),_:1},16)],4)):l.createCommentVNode("",!0)]),_:1},16)]),_:1}))])}}}),$D="",D_={class:"fs-editable-select"},R_={class:"select"},O_=l.defineComponent({name:"FsEditableSelect"}),Fu=l.defineComponent({...O_,props:{modelValue:{},dict:{},tableSelect:{},dictSelect:{},button:{}},emits:["refresh","update:modelValue"],setup(e,{emit:t}){const r=e,n=t;function a(){var s;n("refresh"),(s=r.dict)==null||s.reloadDict()}function i(s){n("update:modelValue",s)}return(s,o)=>{const c=l.resolveComponent("fs-dict-select"),f=l.resolveComponent("fs-button"),u=l.resolveComponent("fs-table-select");return l.openBlock(),l.createElementBlock("div",D_,[l.createElementVNode("div",R_,[l.createVNode(c,l.mergeProps({value:s.modelValue,dict:s.dict},s.dictSelect,{"onUpdate:value":i}),null,16,["value","dict"])]),l.createVNode(u,l.mergeProps({class:"table-select","model-value":s.modelValue,dict:s.dict,"destroy-on-close":!1,height:"400px"},s.tableSelect,{"onUpdate:modelValue":i,onDialogClosed:a}),{default:l.withCtx(d=>[l.createVNode(f,l.mergeProps({type:"primary",icon:"ant-design:edit-outlined"},s.button,{onClick:d.open}),null,16,["onClick"])]),_:1},16,["model-value","dict"])])}}}),WD="",Au=Object.freeze(Object.defineProperty({__proto__:null,FsActionbar:A0,FsBox:s0,FsButton:e0,FsCell:C0,FsColumnsFilterLayoutDefault:uu,FsComponentRender:l0,FsContainer:Jf,FsCrud:p0,FsDateFormat:Su,FsDictCascader:ku,FsDictCascaderFormat:yu,FsDictCheckbox:bu,FsDictRadio:vu,FsDictSelect:wu,FsDictSwitch:Eu,FsDictTree:Cu,FsEditable:F0,FsEditableCell:T0,FsEditableSelect:Fu,FsForm:f0,FsFormHelper:h0,FsFormItem:u0,FsFormItemCol:d0,FsFormProvider:m0,FsFormWrapper:$a,FsIcon:t0,FsIconSelector:xu,FsIconSvg:n0,FsIconify:r0,FsLabel:a0,FsLayoutCard:Qf,FsLayoutDefault:Zf,FsLoading:i0,FsPage:bf,FsRender:sl,FsRowHandle:g0,FsSearch:hu,FsSearchLayoutDefault:pu,FsSearchV1:mu,FsSlotRender:c0,FsTable:S0,FsTableColumnsFixedController:Bl,FsTableSelect:Tu,FsTabsFilter:gu,FsToolbar:D0,FsValuesFormat:_u,fsColumnsFilterNestList:Nl},Symbol.toStringTag,{value:"Module"})),{setDictRequest:B_}=Kf(),Du={install(e,t={}){t.ui&&ue.uiContext.set(t.ui);const{merge:r}=Ze();t.commonOptions&&(xi.commonOptions=t.commonOptions),t.dictRequest&&B_(t.dictRequest),t.i18n&&As.setVueI18n(t.i18n);const n=t.customComponents||{};for(const a in Au){const i=n[a]||Au[a];e.component(a,i)}$a._context=e._context,La.install(),e.config.globalProperties.$fsui=ue.uiContext.get(),r(qf.logger,t.logger),N_(t.logger)}};function N_(e){var t;((t=e==null?void 0:e.off)==null?void 0:t.tableColumns)!==!1&&console.warn(`[fast-crud] crudBinding.value.table.columns / toolbar.columnsFilter.originalColumns 由array改成map. 请改成通过key读取,你可以全局代码搜索【value.table.columns / columnsFilter.originalColumns】来检查是否有使用它们。
|
||
[通过 app.use(FastCrud,{logger:{off:{tableColumns:false}}}) 可关闭此警告] `)}function Il(e){const t=navigator.userAgent;return e==="ie"?t.indexOf("compatible")>-1&&t.indexOf("MSIE")>-1?(new RegExp("MSIE (\\d+\\.\\d+);").test(t),parseFloat(RegExp.$1)):!1:t.indexOf(e)>-1}const I_={_isIE11(){let e=0;const t=/MSIE (\d+\.\d+);/.test(navigator.userAgent),r=!!navigator.userAgent.match(/Trident\/7.0/),n=navigator.userAgent.indexOf("rv:11.0");return t&&(e=Number(RegExp.$1)),navigator.appVersion.indexOf("MSIE 10")!==-1&&(e=10),r&&n!==-1&&(e=11),e===11},_isEdge(){return/Edge/.test(navigator.userAgent)},_getDownloadUrl(e){const t="\uFEFF";if(window.Blob&&window.URL&&window.URL.createObjectURL){const r=new Blob([t+e],{type:"text/csv"});return URL.createObjectURL(r)}else return"data:attachment/csv;charset=utf-8,"+t+encodeURIComponent(e)},download(e,t){if(Il("ie")&&Il("ie")<10){const r=window.top.open("about:blank","_blank");r.document.charset="utf-8",r.document.write(t),r.document.close(),r.document.execCommand("SaveAs",e+".csv"),r.close()}else if(Il("ie")===10||this._isIE11()||this._isEdge()){const r="\uFEFF",n=new Blob([r+t],{type:"text/csv"});navigator.msSaveBlob(n,e+".csv")}else{const r=document.createElement("a");r.download=e+".csv",r.href=this._getDownloadUrl(t),document.body.appendChild(r),r.click(),document.body.removeChild(r)}}},P_=`\r
|
||
`,Pl=(e,t,{separator:r,quoted:n})=>{const a=t.map(i=>n?(i=typeof i=="string"?i.replace(/"/g,'"'):i,`"${i}"`):i);e.push(a.join(r))},M_={separator:",",quoted:!1};function L_(e,t,r,n=!1){r=Object.assign({},M_,r);let a;const i=[],s=[];return e?(a=e.map(o=>typeof o=="string"?o:(n||s.push(typeof o.label<"u"?o.label:o.prop),o.prop)),s.length>0&&Pl(i,s,r)):(a=[],t.forEach(o=>{Array.isArray(o)||(a=a.concat(Object.keys(o)))}),a.length>0&&(a=a.filter((o,c,f)=>f.indexOf(o)===c),n||Pl(i,a,r))),Array.isArray(t)&&t.forEach(o=>{Array.isArray(o)||(o=a.map(c=>typeof o[c]<"u"?o[c]:"")),Pl(i,o,r)}),i.join(P_)}/*! @source http://purl.eligrey.com/github/Blob.js/blob/master/Blob.js */(function(e){if(e.URL=e.URL||e.webkitURL,e.Blob&&e.URL)try{new Blob;return}catch{}var t=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder||function(r){var n=function(E){return Object.prototype.toString.call(E).match(/^\[object\s(.*)\]$/)[1]},a=function(){this.data=[]},i=function(R,F,C){this.data=R,this.size=R.length,this.type=F,this.encoding=C},s=a.prototype,o=i.prototype,c=r.FileReaderSync,f=function(E){this.code=this[this.name=E]},u="NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "),d=u.length,h=r.URL||r.webkitURL||r,m=h.createObjectURL,g=h.revokeObjectURL,p=h,x=r.btoa,v=r.atob,y=r.ArrayBuffer,w=r.Uint8Array;for(i.fake=o.fake=!0;d--;)f.prototype[u[d]]=d+1;return h.createObjectURL||(p=r.URL={}),p.createObjectURL=function(E){var R=E.type,F;if(R===null&&(R="application/octet-stream"),E instanceof i)return F="data:"+R,E.encoding==="base64"?F+";base64,"+E.data:E.encoding==="URI"?F+","+decodeURIComponent(E.data):x?F+";base64,"+x(E.data):F+","+encodeURIComponent(E.data);if(m)return m.call(h,E)},p.revokeObjectURL=function(E){E.substring(0,5)!=="data:"&&g&&g.call(h,E)},s.append=function(E){var R=this.data;if(w&&(E instanceof y||E instanceof w)){for(var F="",C=new w(E),U=0,S=C.length;U<S;U++)F+=String.fromCharCode(C[U]);R.push(F)}else if(n(E)==="Blob"||n(E)==="File")if(c){var W=new c;R.push(W.readAsBinaryString(E))}else throw new f("NOT_READABLE_ERR");else E instanceof i?E.encoding==="base64"&&v?R.push(v(E.data)):E.encoding==="URI"?R.push(decodeURIComponent(E.data)):E.encoding==="raw"&&R.push(E.data):(typeof E!="string"&&(E+=""),R.push(unescape(encodeURIComponent(E))))},s.getBlob=function(E){return arguments.length||(E=null),new i(this.data.join(""),E,"raw")},s.toString=function(){return"[object BlobBuilder]"},o.slice=function(E,R,F){var C=arguments.length;return C<3&&(F=null),new i(this.data.slice(E,C>1?R:this.data.length),F,this.encoding)},o.toString=function(){return"[object Blob]"},o.close=function(){this.size=this.data.length=0},a}(e);e.Blob=function(n,a){var i=a&&a.type||"",s=new t;if(n)for(var o=0,c=n.length;o<c;o++)s.append(n[o]);return s.getBlob(i)}})(typeof self<"u"&&self||typeof window<"u"&&window||globalThis.content||globalThis);var Ru={exports:{}};(function(e,t){(function(r,n){n()})(Sn,function(){function r(f,u){return typeof u>"u"?u={autoBom:!1}:typeof u!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),u={autoBom:!u}),u.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(f.type)?new Blob(["\uFEFF",f],{type:f.type}):f}function n(f,u,d){var h=new XMLHttpRequest;h.open("GET",f),h.responseType="blob",h.onload=function(){c(h.response,u,d)},h.onerror=function(){console.error("could not download file")},h.send()}function a(f){var u=new XMLHttpRequest;u.open("HEAD",f,!1);try{u.send()}catch{}return 200<=u.status&&299>=u.status}function i(f){try{f.dispatchEvent(new MouseEvent("click"))}catch{var u=document.createEvent("MouseEvents");u.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),f.dispatchEvent(u)}}var s=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof Sn=="object"&&Sn.global===Sn?Sn:void 0,o=s.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),c=s.saveAs||(typeof window!="object"||window!==s?function(){}:"download"in HTMLAnchorElement.prototype&&!o?function(f,u,d){var h=s.URL||s.webkitURL,m=document.createElement("a");u=u||f.name||"download",m.download=u,m.rel="noopener",typeof f=="string"?(m.href=f,m.origin===location.origin?i(m):a(m.href)?n(f,u,d):i(m,m.target="_blank")):(m.href=h.createObjectURL(f),setTimeout(function(){h.revokeObjectURL(m.href)},4e4),setTimeout(function(){i(m)},0))}:"msSaveOrOpenBlob"in navigator?function(f,u,d){if(u=u||f.name||"download",typeof f!="string")navigator.msSaveOrOpenBlob(r(f,d),u);else if(a(f))n(f,u,d);else{var h=document.createElement("a");h.href=f,h.target="_blank",setTimeout(function(){i(h)})}}:function(f,u,d,h){if(h=h||open("","_blank"),h&&(h.document.title=h.document.body.innerText="downloading..."),typeof f=="string")return n(f,u,d);var m=f.type==="application/octet-stream",g=/constructor/i.test(s.HTMLElement)||s.safari,p=/CriOS\/[\d]+/.test(navigator.userAgent);if((p||m&&g||o)&&typeof FileReader<"u"){var x=new FileReader;x.onloadend=function(){var w=x.result;w=p?w:w.replace(/^data:[^;]*;/,"data:attachment/file;"),h?h.location.href=w:location=w,h=null},x.readAsDataURL(f)}else{var v=s.URL||s.webkitURL,y=v.createObjectURL(f);h?h.location=y:location.href=y,h=null,setTimeout(function(){v.revokeObjectURL(y)},4e4)}});s.saveAs=c.saveAs=c,e.exports=c})})(Ru);var V_=Ru.exports;const Ou=wi(V_);/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */var no={};no.version="0.18.5";var Bu=1252,U_=[874,932,936,949,950,1250,1251,1252,1253,1254,1255,1256,1257,1258,1e4],Ml={0:1252,1:65001,2:65001,77:1e4,128:932,129:949,130:1361,134:936,136:950,161:1253,162:1254,163:1258,177:1255,178:1256,186:1257,204:1251,222:874,238:1250,255:1252,69:6969},Ll=function(e){U_.indexOf(e)!=-1&&(Bu=Ml[0]=e)};function $_(){Ll(1252)}var Kr=function(e){Ll(e)};function Vl(){Kr(1200),$_()}function Nu(e){for(var t=[],r=0,n=e.length;r<n;++r)t[r]=e.charCodeAt(r);return t}function W_(e){for(var t=[],r=0;r<e.length>>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r)+(e.charCodeAt(2*r+1)<<8));return t.join("")}function Iu(e){for(var t=[],r=0;r<e.length>>1;++r)t[r]=String.fromCharCode(e.charCodeAt(2*r+1)+(e.charCodeAt(2*r)<<8));return t.join("")}var Vi=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1);return t==255&&r==254?W_(e.slice(2)):t==254&&r==255?Iu(e.slice(2)):t==65279?e.slice(1):e},ao=function(t){return String.fromCharCode(t)},Pu=function(t){return String.fromCharCode(t)},Xn,Kn="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function Ui(e){for(var t="",r=0,n=0,a=0,i=0,s=0,o=0,c=0,f=0;f<e.length;)r=e.charCodeAt(f++),i=r>>2,n=e.charCodeAt(f++),s=(r&3)<<4|n>>4,a=e.charCodeAt(f++),o=(n&15)<<2|a>>6,c=a&63,isNaN(n)?o=c=64:isNaN(a)&&(c=64),t+=Kn.charAt(i)+Kn.charAt(s)+Kn.charAt(o)+Kn.charAt(c);return t}function Er(e){var t="",r=0,n=0,a=0,i=0,s=0,o=0,c=0;e=e.replace(/[^\w\+\/\=]/g,"");for(var f=0;f<e.length;)i=Kn.indexOf(e.charAt(f++)),s=Kn.indexOf(e.charAt(f++)),r=i<<2|s>>4,t+=String.fromCharCode(r),o=Kn.indexOf(e.charAt(f++)),n=(s&15)<<4|o>>2,o!==64&&(t+=String.fromCharCode(n)),c=Kn.indexOf(e.charAt(f++)),a=(o&3)<<6|c,c!==64&&(t+=String.fromCharCode(a));return t}var je=function(){return typeof Buffer<"u"&&typeof process<"u"&&typeof process.versions<"u"&&!!process.versions.node}(),Rn=function(){if(typeof Buffer<"u"){var e=!Buffer.from;if(!e)try{Buffer.from("foo","utf8")}catch{e=!0}return e?function(t,r){return r?new Buffer(t,r):new Buffer(t)}:Buffer.from.bind(Buffer)}return function(){}}();function Yn(e){return je?Buffer.alloc?Buffer.alloc(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}function Mu(e){return je?Buffer.allocUnsafe?Buffer.allocUnsafe(e):new Buffer(e):typeof Uint8Array<"u"?new Uint8Array(e):new Array(e)}var Sr=function(t){return je?Rn(t,"binary"):t.split("").map(function(r){return r.charCodeAt(0)&255})};function io(e){if(typeof ArrayBuffer>"u")return Sr(e);for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!=e.length;++n)r[n]=e.charCodeAt(n)&255;return t}function qn(e){if(Array.isArray(e))return e.map(function(n){return String.fromCharCode(n)}).join("");for(var t=[],r=0;r<e.length;++r)t[r]=String.fromCharCode(e[r]);return t.join("")}function H_(e){if(typeof Uint8Array>"u")throw new Error("Unsupported");return new Uint8Array(e)}function Ul(e){if(typeof ArrayBuffer>"u")throw new Error("Unsupported");if(e instanceof ArrayBuffer)return Ul(new Uint8Array(e));for(var t=new Array(e.length),r=0;r<e.length;++r)t[r]=e[r];return t}var Lt=je?function(e){return Buffer.concat(e.map(function(t){return Buffer.isBuffer(t)?t:Rn(t)}))}:function(e){if(typeof Uint8Array<"u"){var t=0,r=0;for(t=0;t<e.length;++t)r+=e[t].length;var n=new Uint8Array(r),a=0;for(t=0,r=0;t<e.length;r+=a,++t)if(a=e[t].length,e[t]instanceof Uint8Array)n.set(e[t],r);else{if(typeof e[t]=="string")throw"wtf";n.set(new Uint8Array(e[t]),r)}return n}return[].concat.apply([],e.map(function(i){return Array.isArray(i)?i:[].slice.call(i)}))};function j_(e){for(var t=[],r=0,n=e.length+250,a=Yn(e.length+255),i=0;i<e.length;++i){var s=e.charCodeAt(i);if(s<128)a[r++]=s;else if(s<2048)a[r++]=192|s>>6&31,a[r++]=128|s&63;else if(s>=55296&&s<57344){s=(s&1023)+64;var o=e.charCodeAt(++i)&1023;a[r++]=240|s>>8&7,a[r++]=128|s>>2&63,a[r++]=128|o>>6&15|(s&3)<<4,a[r++]=128|o&63}else a[r++]=224|s>>12&15,a[r++]=128|s>>6&63,a[r++]=128|s&63;r>n&&(t.push(a.slice(0,r)),r=0,a=Yn(65535),n=65530)}return t.push(a.slice(0,r)),Lt(t)}var or=/\u0000/g,$i=/[\u0001-\u0006]/g;function Ya(e){for(var t="",r=e.length-1;r>=0;)t+=e.charAt(r--);return t}function Yr(e,t){var r=""+e;return r.length>=t?r:yt("0",t-r.length)+r}function $l(e,t){var r=""+e;return r.length>=t?r:yt(" ",t-r.length)+r}function so(e,t){var r=""+e;return r.length>=t?r:r+yt(" ",t-r.length)}function z_(e,t){var r=""+Math.round(e);return r.length>=t?r:yt("0",t-r.length)+r}function G_(e,t){var r=""+e;return r.length>=t?r:yt("0",t-r.length)+r}var Lu=Math.pow(2,32);function qa(e,t){if(e>Lu||e<-Lu)return z_(e,t);var r=Math.round(e);return G_(r,t)}function oo(e,t){return t=t||0,e.length>=7+t&&(e.charCodeAt(t)|32)===103&&(e.charCodeAt(t+1)|32)===101&&(e.charCodeAt(t+2)|32)===110&&(e.charCodeAt(t+3)|32)===101&&(e.charCodeAt(t+4)|32)===114&&(e.charCodeAt(t+5)|32)===97&&(e.charCodeAt(t+6)|32)===108}var Vu=[["Sun","Sunday"],["Mon","Monday"],["Tue","Tuesday"],["Wed","Wednesday"],["Thu","Thursday"],["Fri","Friday"],["Sat","Saturday"]],Wl=[["J","Jan","January"],["F","Feb","February"],["M","Mar","March"],["A","Apr","April"],["M","May","May"],["J","Jun","June"],["J","Jul","July"],["A","Aug","August"],["S","Sep","September"],["O","Oct","October"],["N","Nov","November"],["D","Dec","December"]];function X_(e){return e||(e={}),e[0]="General",e[1]="0",e[2]="0.00",e[3]="#,##0",e[4]="#,##0.00",e[9]="0%",e[10]="0.00%",e[11]="0.00E+00",e[12]="# ?/?",e[13]="# ??/??",e[14]="m/d/yy",e[15]="d-mmm-yy",e[16]="d-mmm",e[17]="mmm-yy",e[18]="h:mm AM/PM",e[19]="h:mm:ss AM/PM",e[20]="h:mm",e[21]="h:mm:ss",e[22]="m/d/yy h:mm",e[37]="#,##0 ;(#,##0)",e[38]="#,##0 ;[Red](#,##0)",e[39]="#,##0.00;(#,##0.00)",e[40]="#,##0.00;[Red](#,##0.00)",e[45]="mm:ss",e[46]="[h]:mm:ss",e[47]="mmss.0",e[48]="##0.0E+0",e[49]="@",e[56]='"上午/下午 "hh"時"mm"分"ss"秒 "',e}var Re={0:"General",1:"0",2:"0.00",3:"#,##0",4:"#,##0.00",9:"0%",10:"0.00%",11:"0.00E+00",12:"# ?/?",13:"# ??/??",14:"m/d/yy",15:"d-mmm-yy",16:"d-mmm",17:"mmm-yy",18:"h:mm AM/PM",19:"h:mm:ss AM/PM",20:"h:mm",21:"h:mm:ss",22:"m/d/yy h:mm",37:"#,##0 ;(#,##0)",38:"#,##0 ;[Red](#,##0)",39:"#,##0.00;(#,##0.00)",40:"#,##0.00;[Red](#,##0.00)",45:"mm:ss",46:"[h]:mm:ss",47:"mmss.0",48:"##0.0E+0",49:"@",56:'"上午/下午 "hh"時"mm"分"ss"秒 "'},Uu={5:37,6:38,7:39,8:40,23:0,24:0,25:0,26:0,27:14,28:14,29:14,30:14,31:14,50:14,51:14,52:14,53:14,54:14,55:14,56:14,57:14,58:14,59:1,60:2,61:3,62:4,67:9,68:10,69:12,70:13,71:14,72:14,73:15,74:16,75:17,76:20,77:21,78:22,79:45,80:46,81:47,82:0},K_={5:'"$"#,##0_);\\("$"#,##0\\)',63:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',41:'_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'};function lo(e,t,r){for(var n=e<0?-1:1,a=e*n,i=0,s=1,o=0,c=1,f=0,u=0,d=Math.floor(a);f<t&&(d=Math.floor(a),o=d*s+i,u=d*f+c,!(a-d<5e-8));)a=1/(a-d),i=s,s=o,c=f,f=u;if(u>t&&(f>t?(u=c,o=i):(u=f,o=s)),!r)return[0,n*o,u];var h=Math.floor(n*o/u);return[h,n*o-h*u,u]}function Jn(e,t,r){if(e>2958465||e<0)return null;var n=e|0,a=Math.floor(86400*(e-n)),i=0,s=[],o={D:n,T:a,u:86400*(e-n)-a,y:0,m:0,d:0,H:0,M:0,S:0,q:0};if(Math.abs(o.u)<1e-6&&(o.u=0),t&&t.date1904&&(n+=1462),o.u>.9999&&(o.u=0,++a==86400&&(o.T=a=0,++n,++o.D)),n===60)s=r?[1317,10,29]:[1900,2,29],i=3;else if(n===0)s=r?[1317,8,29]:[1900,1,0],i=6;else{n>60&&--n;var c=new Date(1900,0,1);c.setDate(c.getDate()+n-1),s=[c.getFullYear(),c.getMonth()+1,c.getDate()],i=c.getDay(),n<60&&(i=(i+6)%7),r&&(i=e2(c,s))}return o.y=s[0],o.m=s[1],o.d=s[2],o.S=a%60,a=Math.floor(a/60),o.M=a%60,a=Math.floor(a/60),o.H=a,o.q=i,o}var $u=new Date(1899,11,31,0,0,0),Y_=$u.getTime(),q_=new Date(1900,2,1,0,0,0);function Wu(e,t){var r=e.getTime();return t?r-=1461*24*60*60*1e3:e>=q_&&(r+=24*60*60*1e3),(r-(Y_+(e.getTimezoneOffset()-$u.getTimezoneOffset())*6e4))/(24*60*60*1e3)}function Hl(e){return e.indexOf(".")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)$/,"$1")}function J_(e){return e.indexOf("E")==-1?e:e.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2")}function Z_(e){var t=e<0?12:11,r=Hl(e.toFixed(12));return r.length<=t||(r=e.toPrecision(10),r.length<=t)?r:e.toExponential(5)}function Q_(e){var t=Hl(e.toFixed(11));return t.length>(e<0?12:11)||t==="0"||t==="-0"?e.toPrecision(6):t}function Wi(e){var t=Math.floor(Math.log(Math.abs(e))*Math.LOG10E),r;return t>=-4&&t<=-1?r=e.toPrecision(10+t):Math.abs(t)<=9?r=Z_(e):t===10?r=e.toFixed(10).substr(0,12):r=Q_(e),Hl(J_(r.toUpperCase()))}function ha(e,t){switch(typeof e){case"string":return e;case"boolean":return e?"TRUE":"FALSE";case"number":return(e|0)===e?e.toString(10):Wi(e);case"undefined":return"";case"object":if(e==null)return"";if(e instanceof Date)return Cr(14,Wu(e,t&&t.date1904),t)}throw new Error("unsupported value in General format: "+e)}function e2(e,t){t[0]-=581;var r=e.getDay();return e<60&&(r=(r+6)%7),r}function t2(e,t,r,n){var a="",i=0,s=0,o=r.y,c,f=0;switch(e){case 98:o=r.y+543;case 121:switch(t.length){case 1:case 2:c=o%100,f=2;break;default:c=o%1e4,f=4;break}break;case 109:switch(t.length){case 1:case 2:c=r.m,f=t.length;break;case 3:return Wl[r.m-1][1];case 5:return Wl[r.m-1][0];default:return Wl[r.m-1][2]}break;case 100:switch(t.length){case 1:case 2:c=r.d,f=t.length;break;case 3:return Vu[r.q][0];default:return Vu[r.q][1]}break;case 104:switch(t.length){case 1:case 2:c=1+(r.H+11)%12,f=t.length;break;default:throw"bad hour format: "+t}break;case 72:switch(t.length){case 1:case 2:c=r.H,f=t.length;break;default:throw"bad hour format: "+t}break;case 77:switch(t.length){case 1:case 2:c=r.M,f=t.length;break;default:throw"bad minute format: "+t}break;case 115:if(t!="s"&&t!="ss"&&t!=".0"&&t!=".00"&&t!=".000")throw"bad second format: "+t;return r.u===0&&(t=="s"||t=="ss")?Yr(r.S,t.length):(n>=2?s=n===3?1e3:100:s=n===1?10:1,i=Math.round(s*(r.S+r.u)),i>=60*s&&(i=0),t==="s"?i===0?"0":""+i/s:(a=Yr(i,2+n),t==="ss"?a.substr(0,2):"."+a.substr(2,t.length-1)));case 90:switch(t){case"[h]":case"[hh]":c=r.D*24+r.H;break;case"[m]":case"[mm]":c=(r.D*24+r.H)*60+r.M;break;case"[s]":case"[ss]":c=((r.D*24+r.H)*60+r.M)*60+Math.round(r.S+r.u);break;default:throw"bad abstime format: "+t}f=t.length===3?1:2;break;case 101:c=o,f=1;break}var u=f>0?Yr(c,f):"";return u}function Zn(e){var t=3;if(e.length<=t)return e;for(var r=e.length%t,n=e.substr(0,r);r!=e.length;r+=t)n+=(n.length>0?",":"")+e.substr(r,t);return n}var Hu=/%/g;function r2(e,t,r){var n=t.replace(Hu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function n2(e,t,r){for(var n=t.length-1;t.charCodeAt(n-1)===44;)--n;return On(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}function ju(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return"0.0E+0";if(t<0)return"-"+ju(e,-t);var a=e.indexOf(".");a===-1&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a),r.indexOf("e")===-1){var s=Math.floor(Math.log(t)*Math.LOG10E);for(r.indexOf(".")===-1?r=r.charAt(0)+"."+r.substr(1)+"E+"+(s-r.length+i):r+="E+"+(s-i);r.substr(0,2)==="0.";)r=r.charAt(0)+r.substr(2,a)+"."+r.substr(2+a),r=r.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0.");r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(o,c,f,u){return c+f+u.substr(0,(a+i)%a)+"."+u.substr(i)+"E"})}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}var zu=/# (\?+)( ?)\/( ?)(\d+)/;function a2(e,t,r){var n=parseInt(e[4],10),a=Math.round(t*n),i=Math.floor(a/n),s=a-i*n,o=n;return r+(i===0?"":""+i)+" "+(s===0?yt(" ",e[1].length+1+e[4].length):$l(s,e[1].length)+e[2]+"/"+e[3]+Yr(o,e[4].length))}function i2(e,t,r){return r+(t===0?"":""+t)+yt(" ",e[1].length+2+e[4].length)}var Gu=/^#*0*\.([0#]+)/,Xu=/\).*[0#]/,Ku=/\(###\) ###\\?-####/;function lr(e){for(var t="",r,n=0;n!=e.length;++n)switch(r=e.charCodeAt(n)){case 35:break;case 63:t+=" ";break;case 48:t+="0";break;default:t+=String.fromCharCode(r)}return t}function Yu(e,t){var r=Math.pow(10,t);return""+Math.round(e*r)/r}function qu(e,t){var r=e-Math.floor(e),n=Math.pow(10,t);return t<(""+Math.round(r*n)).length?0:Math.round(r*n)}function s2(e,t){return t<(""+Math.round((e-Math.floor(e))*Math.pow(10,t))).length?1:0}function o2(e){return e<2147483647&&e>-2147483648?""+(e>=0?e|0:e-1|0):""+Math.floor(e)}function Pr(e,t,r){if(e.charCodeAt(0)===40&&!t.match(Xu)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?Pr("n",n,r):"("+Pr("n",n,-r)+")"}if(t.charCodeAt(t.length-1)===44)return n2(e,t,r);if(t.indexOf("%")!==-1)return r2(e,t,r);if(t.indexOf("E")!==-1)return ju(t,r);if(t.charCodeAt(0)===36)return"$"+Pr(e,t.substr(t.charAt(1)==" "?2:1),r);var a,i,s,o,c=Math.abs(r),f=r<0?"-":"";if(t.match(/^00+$/))return f+qa(c,t.length);if(t.match(/^[#?]+$/))return a=qa(r,0),a==="0"&&(a=""),a.length>t.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(zu))return a2(i,c,f);if(t.match(/^#+0+$/))return f+qa(c,t.length-t.indexOf("0"));if(i=t.match(Gu))return a=Yu(r,i[1].length).replace(/^([^\.]+)$/,"$1."+lr(i[1])).replace(/\.$/,"."+lr(i[1])).replace(/\.(\d*)$/,function(g,p){return"."+p+yt("0",lr(i[1]).length-p.length)}),t.indexOf("0.")!==-1?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return f+Yu(c,i[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return f+Zn(qa(c,0));if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+Pr(e,t,-r):Zn(""+(Math.floor(r)+s2(r,i[1].length)))+"."+Yr(qu(r,i[1].length),i[1].length);if(i=t.match(/^#,#*,#0/))return Pr(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=Ya(Pr(e,t.replace(/[\\-]/g,""),r)),s=0,Ya(Ya(t.replace(/\\/g,"")).replace(/[0#]/g,function(g){return s<a.length?a.charAt(s++):g==="0"?"0":""}));if(t.match(Ku))return a=Pr(e,"##########",r),"("+a.substr(0,3)+") "+a.substr(3,3)+"-"+a.substr(6);var u="";if(i=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(i[4].length,7),o=lo(c,Math.pow(10,s)-1,!1),a=""+f,u=On("n",i[1],o[1]),u.charAt(u.length-1)==" "&&(u=u.substr(0,u.length-1)+"0"),a+=u+i[2]+"/"+i[3],u=so(o[2],s),u.length<i[4].length&&(u=lr(i[4].substr(i[4].length-u.length))+u),a+=u,a;if(i=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(Math.max(i[1].length,i[4].length),7),o=lo(c,Math.pow(10,s)-1,!0),f+(o[0]||(o[1]?"":"0"))+" "+(o[1]?$l(o[1],s)+i[2]+"/"+i[3]+so(o[2],s):yt(" ",2*s+1+i[2].length+i[3].length));if(i=t.match(/^[#0?]+$/))return a=qa(r,0),t.length<=a.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(/^([#0?]+)\.([#0]+)$/)){a=""+r.toFixed(Math.min(i[2].length,10)).replace(/([^0])0+$/,"$1"),s=a.indexOf(".");var d=t.indexOf(".")-s,h=t.length-a.length-d;return lr(t.substr(0,d)+a+t.substr(t.length-h))}if(i=t.match(/^00,000\.([#0]*0)$/))return s=qu(r,i[1].length),r<0?"-"+Pr(e,t,-r):Zn(o2(r)).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(g){return"00,"+(g.length<3?Yr(0,3-g.length):"")+g})+"."+Yr(s,i[1].length);switch(t){case"###,##0.00":return Pr(e,"#,##0.00",r);case"###,###":case"##,###":case"#,###":var m=Zn(qa(c,0));return m!=="0"?f+m:"";case"###,###.00":return Pr(e,"###,##0.00",r).replace(/^0\./,".");case"#,###.00":return Pr(e,"#,##0.00",r).replace(/^0\./,".")}throw new Error("unsupported format |"+t+"|")}function l2(e,t,r){for(var n=t.length-1;t.charCodeAt(n-1)===44;)--n;return On(e,t.substr(0,n),r/Math.pow(10,3*(t.length-n)))}function c2(e,t,r){var n=t.replace(Hu,""),a=t.length-n.length;return On(e,n,r*Math.pow(10,2*a))+yt("%",a)}function Ju(e,t){var r,n=e.indexOf("E")-e.indexOf(".")-1;if(e.match(/^#+0.0E\+0$/)){if(t==0)return"0.0E+0";if(t<0)return"-"+Ju(e,-t);var a=e.indexOf(".");a===-1&&(a=e.indexOf("E"));var i=Math.floor(Math.log(t)*Math.LOG10E)%a;if(i<0&&(i+=a),r=(t/Math.pow(10,i)).toPrecision(n+1+(a+i)%a),!r.match(/[Ee]/)){var s=Math.floor(Math.log(t)*Math.LOG10E);r.indexOf(".")===-1?r=r.charAt(0)+"."+r.substr(1)+"E+"+(s-r.length+i):r+="E+"+(s-i),r=r.replace(/\+-/,"-")}r=r.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function(o,c,f,u){return c+f+u.substr(0,(a+i)%a)+"."+u.substr(i)+"E"})}else r=t.toExponential(n);return e.match(/E\+00$/)&&r.match(/e[+-]\d$/)&&(r=r.substr(0,r.length-1)+"0"+r.charAt(r.length-1)),e.match(/E\-/)&&r.match(/e\+/)&&(r=r.replace(/e\+/,"e")),r.replace("e","E")}function hn(e,t,r){if(e.charCodeAt(0)===40&&!t.match(Xu)){var n=t.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,"");return r>=0?hn("n",n,r):"("+hn("n",n,-r)+")"}if(t.charCodeAt(t.length-1)===44)return l2(e,t,r);if(t.indexOf("%")!==-1)return c2(e,t,r);if(t.indexOf("E")!==-1)return Ju(t,r);if(t.charCodeAt(0)===36)return"$"+hn(e,t.substr(t.charAt(1)==" "?2:1),r);var a,i,s,o,c=Math.abs(r),f=r<0?"-":"";if(t.match(/^00+$/))return f+Yr(c,t.length);if(t.match(/^[#?]+$/))return a=""+r,r===0&&(a=""),a.length>t.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(zu))return i2(i,c,f);if(t.match(/^#+0+$/))return f+Yr(c,t.length-t.indexOf("0"));if(i=t.match(Gu))return a=(""+r).replace(/^([^\.]+)$/,"$1."+lr(i[1])).replace(/\.$/,"."+lr(i[1])),a=a.replace(/\.(\d*)$/,function(g,p){return"."+p+yt("0",lr(i[1]).length-p.length)}),t.indexOf("0.")!==-1?a:a.replace(/^0\./,".");if(t=t.replace(/^#+([0.])/,"$1"),i=t.match(/^(0*)\.(#*)$/))return f+(""+c).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,i[1].length?"0.":".");if(i=t.match(/^#{1,3},##0(\.?)$/))return f+Zn(""+c);if(i=t.match(/^#,##0\.([#0]*0)$/))return r<0?"-"+hn(e,t,-r):Zn(""+r)+"."+yt("0",i[1].length);if(i=t.match(/^#,#*,#0/))return hn(e,t.replace(/^#,#*,/,""),r);if(i=t.match(/^([0#]+)(\\?-([0#]+))+$/))return a=Ya(hn(e,t.replace(/[\\-]/g,""),r)),s=0,Ya(Ya(t.replace(/\\/g,"")).replace(/[0#]/g,function(g){return s<a.length?a.charAt(s++):g==="0"?"0":""}));if(t.match(Ku))return a=hn(e,"##########",r),"("+a.substr(0,3)+") "+a.substr(3,3)+"-"+a.substr(6);var u="";if(i=t.match(/^([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(i[4].length,7),o=lo(c,Math.pow(10,s)-1,!1),a=""+f,u=On("n",i[1],o[1]),u.charAt(u.length-1)==" "&&(u=u.substr(0,u.length-1)+"0"),a+=u+i[2]+"/"+i[3],u=so(o[2],s),u.length<i[4].length&&(u=lr(i[4].substr(i[4].length-u.length))+u),a+=u,a;if(i=t.match(/^# ([#0?]+)( ?)\/( ?)([#0?]+)/))return s=Math.min(Math.max(i[1].length,i[4].length),7),o=lo(c,Math.pow(10,s)-1,!0),f+(o[0]||(o[1]?"":"0"))+" "+(o[1]?$l(o[1],s)+i[2]+"/"+i[3]+so(o[2],s):yt(" ",2*s+1+i[2].length+i[3].length));if(i=t.match(/^[#0?]+$/))return a=""+r,t.length<=a.length?a:lr(t.substr(0,t.length-a.length))+a;if(i=t.match(/^([#0]+)\.([#0]+)$/)){a=""+r.toFixed(Math.min(i[2].length,10)).replace(/([^0])0+$/,"$1"),s=a.indexOf(".");var d=t.indexOf(".")-s,h=t.length-a.length-d;return lr(t.substr(0,d)+a+t.substr(t.length-h))}if(i=t.match(/^00,000\.([#0]*0)$/))return r<0?"-"+hn(e,t,-r):Zn(""+r).replace(/^\d,\d{3}$/,"0$&").replace(/^\d*$/,function(g){return"00,"+(g.length<3?Yr(0,3-g.length):"")+g})+"."+Yr(0,i[1].length);switch(t){case"###,###":case"##,###":case"#,###":var m=Zn(""+c);return m!=="0"?f+m:"";default:if(t.match(/\.[0#?]*$/))return hn(e,t.slice(0,t.lastIndexOf(".")),r)+lr(t.slice(t.lastIndexOf(".")))}throw new Error("unsupported format |"+t+"|")}function On(e,t,r){return(r|0)===r?hn(e,t,r):Pr(e,t,r)}function f2(e){for(var t=[],r=!1,n=0,a=0;n<e.length;++n)switch(e.charCodeAt(n)){case 34:r=!r;break;case 95:case 42:case 92:++n;break;case 59:t[t.length]=e.substr(a,n-a),a=n+1}if(t[t.length]=e.substr(a),r===!0)throw new Error("Format |"+e+"| unterminated string ");return t}var Zu=/\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/;function ma(e){for(var t=0,r="",n="";t<e.length;)switch(r=e.charAt(t)){case"G":oo(e,t)&&(t+=6),t++;break;case'"':for(;e.charCodeAt(++t)!==34&&t<e.length;);++t;break;case"\\":t+=2;break;case"_":t+=2;break;case"@":++t;break;case"B":case"b":if(e.charAt(t+1)==="1"||e.charAt(t+1)==="2")return!0;case"M":case"D":case"Y":case"H":case"S":case"E":case"m":case"d":case"y":case"h":case"s":case"e":case"g":return!0;case"A":case"a":case"上":if(e.substr(t,3).toUpperCase()==="A/P"||e.substr(t,5).toUpperCase()==="AM/PM"||e.substr(t,5).toUpperCase()==="上午/下午")return!0;++t;break;case"[":for(n=r;e.charAt(t++)!=="]"&&t<e.length;)n+=e.charAt(t);if(n.match(Zu))return!0;break;case".":case"0":case"#":for(;t<e.length&&("0#?.,E+-%".indexOf(r=e.charAt(++t))>-1||r=="\\"&&e.charAt(t+1)=="-"&&"0#".indexOf(e.charAt(t+2))>-1););break;case"?":for(;e.charAt(++t)===r;);break;case"*":++t,(e.charAt(t)==" "||e.charAt(t)=="*")&&++t;break;case"(":case")":++t;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(;t<e.length&&"0123456789".indexOf(e.charAt(++t))>-1;);break;case" ":++t;break;default:++t;break}return!1}function u2(e,t,r,n){for(var a=[],i="",s=0,o="",c="t",f,u,d,h="H";s<e.length;)switch(o=e.charAt(s)){case"G":if(!oo(e,s))throw new Error("unrecognized character "+o+" in "+e);a[a.length]={t:"G",v:"General"},s+=7;break;case'"':for(i="";(d=e.charCodeAt(++s))!==34&&s<e.length;)i+=String.fromCharCode(d);a[a.length]={t:"t",v:i},++s;break;case"\\":var m=e.charAt(++s),g=m==="("||m===")"?m:"t";a[a.length]={t:g,v:m},++s;break;case"_":a[a.length]={t:"t",v:" "},s+=2;break;case"@":a[a.length]={t:"T",v:t},++s;break;case"B":case"b":if(e.charAt(s+1)==="1"||e.charAt(s+1)==="2"){if(f==null&&(f=Jn(t,r,e.charAt(s+1)==="2"),f==null))return"";a[a.length]={t:"X",v:e.substr(s,2)},c=o,s+=2;break}case"M":case"D":case"Y":case"H":case"S":case"E":o=o.toLowerCase();case"m":case"d":case"y":case"h":case"s":case"e":case"g":if(t<0||f==null&&(f=Jn(t,r),f==null))return"";for(i=o;++s<e.length&&e.charAt(s).toLowerCase()===o;)i+=o;o==="m"&&c.toLowerCase()==="h"&&(o="M"),o==="h"&&(o=h),a[a.length]={t:o,v:i},c=o;break;case"A":case"a":case"上":var p={t:o,v:o};if(f==null&&(f=Jn(t,r)),e.substr(s,3).toUpperCase()==="A/P"?(f!=null&&(p.v=f.H>=12?"P":"A"),p.t="T",h="h",s+=3):e.substr(s,5).toUpperCase()==="AM/PM"?(f!=null&&(p.v=f.H>=12?"PM":"AM"),p.t="T",s+=5,h="h"):e.substr(s,5).toUpperCase()==="上午/下午"?(f!=null&&(p.v=f.H>=12?"下午":"上午"),p.t="T",s+=5,h="h"):(p.t="t",++s),f==null&&p.t==="T")return"";a[a.length]=p,c=o;break;case"[":for(i=o;e.charAt(s++)!=="]"&&s<e.length;)i+=e.charAt(s);if(i.slice(-1)!=="]")throw'unterminated "[" block: |'+i+"|";if(i.match(Zu)){if(f==null&&(f=Jn(t,r),f==null))return"";a[a.length]={t:"Z",v:i.toLowerCase()},c=i.charAt(1)}else i.indexOf("$")>-1&&(i=(i.match(/\$([^-\[\]]*)/)||[])[1]||"$",ma(e)||(a[a.length]={t:"t",v:i}));break;case".":if(f!=null){for(i=o;++s<e.length&&(o=e.charAt(s))==="0";)i+=o;a[a.length]={t:"s",v:i};break}case"0":case"#":for(i=o;++s<e.length&&"0#?.,E+-%".indexOf(o=e.charAt(s))>-1;)i+=o;a[a.length]={t:"n",v:i};break;case"?":for(i=o;e.charAt(++s)===o;)i+=o;a[a.length]={t:o,v:i},c=o;break;case"*":++s,(e.charAt(s)==" "||e.charAt(s)=="*")&&++s;break;case"(":case")":a[a.length]={t:n===1?"t":o,v:o},++s;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(i=o;s<e.length&&"0123456789".indexOf(e.charAt(++s))>-1;)i+=e.charAt(s);a[a.length]={t:"D",v:i};break;case" ":a[a.length]={t:o,v:o},++s;break;case"$":a[a.length]={t:"t",v:"$"},++s;break;default:if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(o)===-1)throw new Error("unrecognized character "+o+" in "+e);a[a.length]={t:"t",v:o},++s;break}var x=0,v=0,y;for(s=a.length-1,c="t";s>=0;--s)switch(a[s].t){case"h":case"H":a[s].t=h,c="h",x<1&&(x=1);break;case"s":(y=a[s].v.match(/\.0+$/))&&(v=Math.max(v,y[0].length-1)),x<3&&(x=3);case"d":case"y":case"M":case"e":c=a[s].t;break;case"m":c==="s"&&(a[s].t="M",x<2&&(x=2));break;case"X":break;case"Z":x<1&&a[s].v.match(/[Hh]/)&&(x=1),x<2&&a[s].v.match(/[Mm]/)&&(x=2),x<3&&a[s].v.match(/[Ss]/)&&(x=3)}switch(x){case 0:break;case 1:f.u>=.5&&(f.u=0,++f.S),f.S>=60&&(f.S=0,++f.M),f.M>=60&&(f.M=0,++f.H);break;case 2:f.u>=.5&&(f.u=0,++f.S),f.S>=60&&(f.S=0,++f.M);break}var w="",E;for(s=0;s<a.length;++s)switch(a[s].t){case"t":case"T":case" ":case"D":break;case"X":a[s].v="",a[s].t=";";break;case"d":case"m":case"y":case"h":case"H":case"M":case"s":case"e":case"b":case"Z":a[s].v=t2(a[s].t.charCodeAt(0),a[s].v,f,v),a[s].t="t";break;case"n":case"?":for(E=s+1;a[E]!=null&&((o=a[E].t)==="?"||o==="D"||(o===" "||o==="t")&&a[E+1]!=null&&(a[E+1].t==="?"||a[E+1].t==="t"&&a[E+1].v==="/")||a[s].t==="("&&(o===" "||o==="n"||o===")")||o==="t"&&(a[E].v==="/"||a[E].v===" "&&a[E+1]!=null&&a[E+1].t=="?"));)a[s].v+=a[E].v,a[E]={v:"",t:";"},++E;w+=a[s].v,s=E-1;break;case"G":a[s].t="t",a[s].v=ha(t,r);break}var R="",F,C;if(w.length>0){w.charCodeAt(0)==40?(F=t<0&&w.charCodeAt(0)===45?-t:t,C=On("n",w,F)):(F=t<0&&n>1?-t:t,C=On("n",w,F),F<0&&a[0]&&a[0].t=="t"&&(C=C.substr(1),a[0].v="-"+a[0].v)),E=C.length-1;var U=a.length;for(s=0;s<a.length;++s)if(a[s]!=null&&a[s].t!="t"&&a[s].v.indexOf(".")>-1){U=s;break}var S=a.length;if(U===a.length&&C.indexOf("E")===-1){for(s=a.length-1;s>=0;--s)a[s]==null||"n?".indexOf(a[s].t)===-1||(E>=a[s].v.length-1?(E-=a[s].v.length,a[s].v=C.substr(E+1,a[s].v.length)):E<0?a[s].v="":(a[s].v=C.substr(0,E+1),E=-1),a[s].t="t",S=s);E>=0&&S<a.length&&(a[S].v=C.substr(0,E+1)+a[S].v)}else if(U!==a.length&&C.indexOf("E")===-1){for(E=C.indexOf(".")-1,s=U;s>=0;--s)if(!(a[s]==null||"n?".indexOf(a[s].t)===-1)){for(u=a[s].v.indexOf(".")>-1&&s===U?a[s].v.indexOf(".")-1:a[s].v.length-1,R=a[s].v.substr(u+1);u>=0;--u)E>=0&&(a[s].v.charAt(u)==="0"||a[s].v.charAt(u)==="#")&&(R=C.charAt(E--)+R);a[s].v=R,a[s].t="t",S=s}for(E>=0&&S<a.length&&(a[S].v=C.substr(0,E+1)+a[S].v),E=C.indexOf(".")+1,s=U;s<a.length;++s)if(!(a[s]==null||"n?(".indexOf(a[s].t)===-1&&s!==U)){for(u=a[s].v.indexOf(".")>-1&&s===U?a[s].v.indexOf(".")+1:0,R=a[s].v.substr(0,u);u<a[s].v.length;++u)E<C.length&&(R+=C.charAt(E++));a[s].v=R,a[s].t="t",S=s}}}for(s=0;s<a.length;++s)a[s]!=null&&"n?".indexOf(a[s].t)>-1&&(F=n>1&&t<0&&s>0&&a[s-1].v==="-"?-t:t,a[s].v=On(a[s].t,a[s].v,F),a[s].t="t");var W="";for(s=0;s!==a.length;++s)a[s]!=null&&(W+=a[s].v);return W}var Qu=/\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/;function ed(e,t){if(t==null)return!1;var r=parseFloat(t[2]);switch(t[1]){case"=":if(e==r)return!0;break;case">":if(e>r)return!0;break;case"<":if(e<r)return!0;break;case"<>":if(e!=r)return!0;break;case">=":if(e>=r)return!0;break;case"<=":if(e<=r)return!0;break}return!1}function d2(e,t){var r=f2(e),n=r.length,a=r[n-1].indexOf("@");if(n<4&&a>-1&&--n,r.length>4)throw new Error("cannot find right format for |"+r.join("|")+"|");if(typeof t!="number")return[4,r.length===4||a>-1?r[r.length-1]:"@"];switch(r.length){case 1:r=a>-1?["General","General","General",r[0]]:[r[0],r[0],r[0],"@"];break;case 2:r=a>-1?[r[0],r[0],r[0],r[1]]:[r[0],r[1],r[0],"@"];break;case 3:r=a>-1?[r[0],r[1],r[0],r[2]]:[r[0],r[1],r[2],"@"];break}var i=t>0?r[0]:t<0?r[1]:r[2];if(r[0].indexOf("[")===-1&&r[1].indexOf("[")===-1)return[n,i];if(r[0].match(/\[[=<>]/)!=null||r[1].match(/\[[=<>]/)!=null){var s=r[0].match(Qu),o=r[1].match(Qu);return ed(t,s)?[n,r[0]]:ed(t,o)?[n,r[1]]:[n,r[s!=null&&o!=null?2:1]]}return[n,i]}function Cr(e,t,r){r==null&&(r={});var n="";switch(typeof e){case"string":e=="m/d/yy"&&r.dateNF?n=r.dateNF:n=e;break;case"number":e==14&&r.dateNF?n=r.dateNF:n=(r.table!=null?r.table:Re)[e],n==null&&(n=r.table&&r.table[Uu[e]]||Re[Uu[e]]),n==null&&(n=K_[e]||"General");break}if(oo(n,0))return ha(t,r);t instanceof Date&&(t=Wu(t,r.date1904));var a=d2(n,t);if(oo(a[1]))return ha(t,r);if(t===!0)t="TRUE";else if(t===!1)t="FALSE";else if(t===""||t==null)return"";return u2(a[1],t,r,a[0])}function mn(e,t){if(typeof t!="number"){t=+t||-1;for(var r=0;r<392;++r){if(Re[r]==null){t<0&&(t=r);continue}if(Re[r]==e){t=r;break}}t<0&&(t=391)}return Re[t]=e,t}function Hi(e){for(var t=0;t!=392;++t)e[t]!==void 0&&mn(e[t],t)}function Ja(){Re=X_()}var td={format:Cr,load:mn,_table:Re,load_table:Hi,parse_date_code:Jn,is_date:ma,get_table:function(){return td._table=Re}},h2={5:'"$"#,##0_);\\("$"#,##0\\)',6:'"$"#,##0_);[Red]\\("$"#,##0\\)',7:'"$"#,##0.00_);\\("$"#,##0.00\\)',8:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',23:"General",24:"General",25:"General",26:"General",27:"m/d/yy",28:"m/d/yy",29:"m/d/yy",30:"m/d/yy",31:"m/d/yy",32:"h:mm:ss",33:"h:mm:ss",34:"h:mm:ss",35:"h:mm:ss",36:"m/d/yy",41:'_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)',42:'_("$"* #,##0_);_("$"* (#,##0);_("$"* "-"_);_(@_)',43:'_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)',44:'_("$"* #,##0.00_);_("$"* (#,##0.00);_("$"* "-"??_);_(@_)',50:"m/d/yy",51:"m/d/yy",52:"m/d/yy",53:"m/d/yy",54:"m/d/yy",55:"m/d/yy",56:"m/d/yy",57:"m/d/yy",58:"m/d/yy",59:"0",60:"0.00",61:"#,##0",62:"#,##0.00",63:'"$"#,##0_);\\("$"#,##0\\)',64:'"$"#,##0_);[Red]\\("$"#,##0\\)',65:'"$"#,##0.00_);\\("$"#,##0.00\\)',66:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',67:"0%",68:"0.00%",69:"# ?/?",70:"# ??/??",71:"m/d/yy",72:"m/d/yy",73:"d-mmm-yy",74:"d-mmm",75:"mmm-yy",76:"h:mm",77:"h:mm:ss",78:"m/d/yy h:mm",79:"mm:ss",80:"[h]:mm:ss",81:"mmss.0"},rd=/[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g;function m2(e){var t=typeof e=="number"?Re[e]:e;return t=t.replace(rd,"(\\d+)"),new RegExp("^"+t+"$")}function p2(e,t,r){var n=-1,a=-1,i=-1,s=-1,o=-1,c=-1;(t.match(rd)||[]).forEach(function(d,h){var m=parseInt(r[h+1],10);switch(d.toLowerCase().charAt(0)){case"y":n=m;break;case"d":i=m;break;case"h":s=m;break;case"s":c=m;break;case"m":s>=0?o=m:a=m;break}}),c>=0&&o==-1&&a>=0&&(o=a,a=-1);var f=(""+(n>=0?n:new Date().getFullYear())).slice(-4)+"-"+("00"+(a>=1?a:1)).slice(-2)+"-"+("00"+(i>=1?i:1)).slice(-2);f.length==7&&(f="0"+f),f.length==8&&(f="20"+f);var u=("00"+(s>=0?s:0)).slice(-2)+":"+("00"+(o>=0?o:0)).slice(-2)+":"+("00"+(c>=0?c:0)).slice(-2);return s==-1&&o==-1&&c==-1?f:n==-1&&a==-1&&i==-1?u:f+"T"+u}var g2=function(){var e={};e.version="1.2.0";function t(){for(var C=0,U=new Array(256),S=0;S!=256;++S)C=S,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,C=C&1?-306674912^C>>>1:C>>>1,U[S]=C;return typeof Int32Array<"u"?new Int32Array(U):U}var r=t();function n(C){var U=0,S=0,W=0,z=typeof Int32Array<"u"?new Int32Array(4096):new Array(4096);for(W=0;W!=256;++W)z[W]=C[W];for(W=0;W!=256;++W)for(S=C[W],U=256+W;U<4096;U+=256)S=z[U]=S>>>8^C[S&255];var V=[];for(W=1;W!=16;++W)V[W-1]=typeof Int32Array<"u"?z.subarray(W*256,W*256+256):z.slice(W*256,W*256+256);return V}var a=n(r),i=a[0],s=a[1],o=a[2],c=a[3],f=a[4],u=a[5],d=a[6],h=a[7],m=a[8],g=a[9],p=a[10],x=a[11],v=a[12],y=a[13],w=a[14];function E(C,U){for(var S=U^-1,W=0,z=C.length;W<z;)S=S>>>8^r[(S^C.charCodeAt(W++))&255];return~S}function R(C,U){for(var S=U^-1,W=C.length-15,z=0;z<W;)S=w[C[z++]^S&255]^y[C[z++]^S>>8&255]^v[C[z++]^S>>16&255]^x[C[z++]^S>>>24]^p[C[z++]]^g[C[z++]]^m[C[z++]]^h[C[z++]]^d[C[z++]]^u[C[z++]]^f[C[z++]]^c[C[z++]]^o[C[z++]]^s[C[z++]]^i[C[z++]]^r[C[z++]];for(W+=15;z<W;)S=S>>>8^r[(S^C[z++])&255];return~S}function F(C,U){for(var S=U^-1,W=0,z=C.length,V=0,j=0;W<z;)V=C.charCodeAt(W++),V<128?S=S>>>8^r[(S^V)&255]:V<2048?(S=S>>>8^r[(S^(192|V>>6&31))&255],S=S>>>8^r[(S^(128|V&63))&255]):V>=55296&&V<57344?(V=(V&1023)+64,j=C.charCodeAt(W++)&1023,S=S>>>8^r[(S^(240|V>>8&7))&255],S=S>>>8^r[(S^(128|V>>2&63))&255],S=S>>>8^r[(S^(128|j>>6&15|(V&3)<<4))&255],S=S>>>8^r[(S^(128|j&63))&255]):(S=S>>>8^r[(S^(224|V>>12&15))&255],S=S>>>8^r[(S^(128|V>>6&63))&255],S=S>>>8^r[(S^(128|V&63))&255]);return~S}return e.table=r,e.bstr=E,e.buf=R,e.str=F,e}(),Fe=function(){var t={};t.version="1.2.1";function r(T,N){for(var O=T.split("/"),B=N.split("/"),P=0,M=0,J=Math.min(O.length,B.length);P<J;++P){if(M=O[P].length-B[P].length)return M;if(O[P]!=B[P])return O[P]<B[P]?-1:1}return O.length-B.length}function n(T){if(T.charAt(T.length-1)=="/")return T.slice(0,-1).indexOf("/")===-1?T:n(T.slice(0,-1));var N=T.lastIndexOf("/");return N===-1?T:T.slice(0,N+1)}function a(T){if(T.charAt(T.length-1)=="/")return a(T.slice(0,-1));var N=T.lastIndexOf("/");return N===-1?T:T.slice(N+1)}function i(T,N){typeof N=="string"&&(N=new Date(N));var O=N.getHours();O=O<<6|N.getMinutes(),O=O<<5|N.getSeconds()>>>1,T.write_shift(2,O);var B=N.getFullYear()-1980;B=B<<4|N.getMonth()+1,B=B<<5|N.getDate(),T.write_shift(2,B)}function s(T){var N=T.read_shift(2)&65535,O=T.read_shift(2)&65535,B=new Date,P=O&31;O>>>=5;var M=O&15;O>>>=4,B.setMilliseconds(0),B.setFullYear(O+1980),B.setMonth(M-1),B.setDate(P);var J=N&31;N>>>=5;var le=N&63;return N>>>=6,B.setHours(N),B.setMinutes(le),B.setSeconds(J<<1),B}function o(T){Gt(T,0);for(var N={},O=0;T.l<=T.length-4;){var B=T.read_shift(2),P=T.read_shift(2),M=T.l+P,J={};switch(B){case 21589:O=T.read_shift(1),O&1&&(J.mtime=T.read_shift(4)),P>5&&(O&2&&(J.atime=T.read_shift(4)),O&4&&(J.ctime=T.read_shift(4))),J.mtime&&(J.mt=new Date(J.mtime*1e3));break}T.l=M,N[B]=J}return N}var c;function f(){return c||(c={})}function u(T,N){if(T[0]==80&&T[1]==75)return ap(T,N);if((T[0]|32)==109&&(T[1]|32)==105)return tD(T,N);if(T.length<512)throw new Error("CFB file size "+T.length+" < 512");var O=3,B=512,P=0,M=0,J=0,le=0,q=0,Z=[],Q=T.slice(0,512);Gt(Q,0);var he=d(Q);switch(O=he[0],O){case 3:B=512;break;case 4:B=4096;break;case 0:if(he[1]==0)return ap(T,N);default:throw new Error("Major Version: Expected 3 or 4 saw "+O)}B!==512&&(Q=T.slice(0,B),Gt(Q,28));var _e=T.slice(0,B);h(Q,O);var Ee=Q.read_shift(4,"i");if(O===3&&Ee!==0)throw new Error("# Directory Sectors: Expected 0 saw "+Ee);Q.l+=4,J=Q.read_shift(4,"i"),Q.l+=4,Q.chk("00100000","Mini Stream Cutoff Size: "),le=Q.read_shift(4,"i"),P=Q.read_shift(4,"i"),q=Q.read_shift(4,"i"),M=Q.read_shift(4,"i");for(var pe=-1,ke=0;ke<109&&(pe=Q.read_shift(4,"i"),!(pe<0));++ke)Z[ke]=pe;var Ue=m(T,B);x(q,M,Ue,B,Z);var gt=y(Ue,J,Z,B);gt[J].name="!Directory",P>0&&le!==j&&(gt[le].name="!MiniFAT"),gt[Z[0]].name="!FAT",gt.fat_addrs=Z,gt.ssz=B;var xt={},ir=[],Ss=[],Cs=[];w(J,gt,Ue,ir,P,xt,Ss,le),g(Ss,Cs,ir),ir.shift();var Ts={FileIndex:Ss,FullPaths:Cs};return N&&N.raw&&(Ts.raw={header:_e,sectors:Ue}),Ts}function d(T){if(T[T.l]==80&&T[T.l+1]==75)return[0,0];T.chk(H,"Header Signature: "),T.l+=16;var N=T.read_shift(2,"u");return[T.read_shift(2,"u"),N]}function h(T,N){var O=9;switch(T.l+=2,O=T.read_shift(2)){case 9:if(N!=3)throw new Error("Sector Shift: Expected 9 saw "+O);break;case 12:if(N!=4)throw new Error("Sector Shift: Expected 12 saw "+O);break;default:throw new Error("Sector Shift: Expected 9 or 12 saw "+O)}T.chk("0600","Mini Sector Shift: "),T.chk("000000000000","Reserved: ")}function m(T,N){for(var O=Math.ceil(T.length/N)-1,B=[],P=1;P<O;++P)B[P-1]=T.slice(P*N,(P+1)*N);return B[O-1]=T.slice(O*N),B}function g(T,N,O){for(var B=0,P=0,M=0,J=0,le=0,q=O.length,Z=[],Q=[];B<q;++B)Z[B]=Q[B]=B,N[B]=O[B];for(;le<Q.length;++le)B=Q[le],P=T[B].L,M=T[B].R,J=T[B].C,Z[B]===B&&(P!==-1&&Z[P]!==P&&(Z[B]=Z[P]),M!==-1&&Z[M]!==M&&(Z[B]=Z[M])),J!==-1&&(Z[J]=B),P!==-1&&B!=Z[B]&&(Z[P]=Z[B],Q.lastIndexOf(P)<le&&Q.push(P)),M!==-1&&B!=Z[B]&&(Z[M]=Z[B],Q.lastIndexOf(M)<le&&Q.push(M));for(B=1;B<q;++B)Z[B]===B&&(M!==-1&&Z[M]!==M?Z[B]=Z[M]:P!==-1&&Z[P]!==P&&(Z[B]=Z[P]));for(B=1;B<q;++B)if(T[B].type!==0){if(le=B,le!=Z[le])do le=Z[le],N[B]=N[le]+"/"+N[B];while(le!==0&&Z[le]!==-1&&le!=Z[le]);Z[B]=-1}for(N[0]+="/",B=1;B<q;++B)T[B].type!==2&&(N[B]+="/")}function p(T,N,O){for(var B=T.start,P=T.size,M=[],J=B;O&&P>0&&J>=0;)M.push(N.slice(J*V,J*V+V)),P-=V,J=xa(O,J*4);return M.length===0?ie(0):Lt(M).slice(0,T.size)}function x(T,N,O,B,P){var M=j;if(T===j){if(N!==0)throw new Error("DIFAT chain shorter than expected")}else if(T!==-1){var J=O[T],le=(B>>>2)-1;if(!J)return;for(var q=0;q<le&&(M=xa(J,q*4))!==j;++q)P.push(M);x(xa(J,B-4),N-1,O,B,P)}}function v(T,N,O,B,P){var M=[],J=[];P||(P=[]);var le=B-1,q=0,Z=0;for(q=N;q>=0;){P[q]=!0,M[M.length]=q,J.push(T[q]);var Q=O[Math.floor(q*4/B)];if(Z=q*4&le,B<4+Z)throw new Error("FAT boundary crossed: "+q+" 4 "+B);if(!T[Q])break;q=xa(T[Q],Z)}return{nodes:M,data:Ed([J])}}function y(T,N,O,B){var P=T.length,M=[],J=[],le=[],q=[],Z=B-1,Q=0,he=0,_e=0,Ee=0;for(Q=0;Q<P;++Q)if(le=[],_e=Q+N,_e>=P&&(_e-=P),!J[_e]){q=[];var pe=[];for(he=_e;he>=0;){pe[he]=!0,J[he]=!0,le[le.length]=he,q.push(T[he]);var ke=O[Math.floor(he*4/B)];if(Ee=he*4&Z,B<4+Ee)throw new Error("FAT boundary crossed: "+he+" 4 "+B);if(!T[ke]||(he=xa(T[ke],Ee),pe[he]))break}M[_e]={nodes:le,data:Ed([q])}}return M}function w(T,N,O,B,P,M,J,le){for(var q=0,Z=B.length?2:0,Q=N[T].data,he=0,_e=0,Ee;he<Q.length;he+=128){var pe=Q.slice(he,he+128);Gt(pe,64),_e=pe.read_shift(2),Ee=Zl(pe,0,_e-Z),B.push(Ee);var ke={name:Ee,type:pe.read_shift(1),color:pe.read_shift(1),L:pe.read_shift(4,"i"),R:pe.read_shift(4,"i"),C:pe.read_shift(4,"i"),clsid:pe.read_shift(16),state:pe.read_shift(4,"i"),start:0,size:0},Ue=pe.read_shift(2)+pe.read_shift(2)+pe.read_shift(2)+pe.read_shift(2);Ue!==0&&(ke.ct=E(pe,pe.l-8));var gt=pe.read_shift(2)+pe.read_shift(2)+pe.read_shift(2)+pe.read_shift(2);gt!==0&&(ke.mt=E(pe,pe.l-8)),ke.start=pe.read_shift(4,"i"),ke.size=pe.read_shift(4,"i"),ke.size<0&&ke.start<0&&(ke.size=ke.type=0,ke.start=j,ke.name=""),ke.type===5?(q=ke.start,P>0&&q!==j&&(N[q].name="!StreamData")):ke.size>=4096?(ke.storage="fat",N[ke.start]===void 0&&(N[ke.start]=v(O,ke.start,N.fat_addrs,N.ssz)),N[ke.start].name=ke.name,ke.content=N[ke.start].data.slice(0,ke.size)):(ke.storage="minifat",ke.size<0?ke.size=0:q!==j&&ke.start!==j&&N[q]&&(ke.content=p(ke,N[q].data,(N[le]||{}).data))),ke.content&&Gt(ke.content,0),M[Ee]=ke,J.push(ke)}}function E(T,N){return new Date((Ar(T,N+4)/1e7*Math.pow(2,32)+Ar(T,N)/1e7-11644473600)*1e3)}function R(T,N){return f(),u(c.readFileSync(T),N)}function F(T,N){var O=N&&N.type;switch(O||je&&Buffer.isBuffer(T)&&(O="buffer"),O||"base64"){case"file":return R(T,N);case"base64":return u(Sr(Er(T)),N);case"binary":return u(Sr(T),N)}return u(T,N)}function C(T,N){var O=N||{},B=O.root||"Root Entry";if(T.FullPaths||(T.FullPaths=[]),T.FileIndex||(T.FileIndex=[]),T.FullPaths.length!==T.FileIndex.length)throw new Error("inconsistent CFB structure");T.FullPaths.length===0&&(T.FullPaths[0]=B+"/",T.FileIndex[0]={name:B,type:5}),O.CLSID&&(T.FileIndex[0].clsid=O.CLSID),U(T)}function U(T){var N="Sh33tJ5";if(!Fe.find(T,"/"+N)){var O=ie(4);O[0]=55,O[1]=O[3]=50,O[2]=54,T.FileIndex.push({name:N,type:2,content:O,size:4,L:69,R:69,C:69}),T.FullPaths.push(T.FullPaths[0]+N),S(T)}}function S(T,N){C(T);for(var O=!1,B=!1,P=T.FullPaths.length-1;P>=0;--P){var M=T.FileIndex[P];switch(M.type){case 0:B?O=!0:(T.FileIndex.pop(),T.FullPaths.pop());break;case 1:case 2:case 5:B=!0,isNaN(M.R*M.L*M.C)&&(O=!0),M.R>-1&&M.L>-1&&M.R==M.L&&(O=!0);break;default:O=!0;break}}if(!(!O&&!N)){var J=new Date(1987,1,19),le=0,q=Object.create?Object.create(null):{},Z=[];for(P=0;P<T.FullPaths.length;++P)q[T.FullPaths[P]]=!0,T.FileIndex[P].type!==0&&Z.push([T.FullPaths[P],T.FileIndex[P]]);for(P=0;P<Z.length;++P){var Q=n(Z[P][0]);B=q[Q],B||(Z.push([Q,{name:a(Q).replace("/",""),type:1,clsid:ae,ct:J,mt:J,content:null}]),q[Q]=!0)}for(Z.sort(function(Ee,pe){return r(Ee[0],pe[0])}),T.FullPaths=[],T.FileIndex=[],P=0;P<Z.length;++P)T.FullPaths[P]=Z[P][0],T.FileIndex[P]=Z[P][1];for(P=0;P<Z.length;++P){var he=T.FileIndex[P],_e=T.FullPaths[P];if(he.name=a(_e).replace("/",""),he.L=he.R=he.C=-(he.color=1),he.size=he.content?he.content.length:0,he.start=0,he.clsid=he.clsid||ae,P===0)he.C=Z.length>1?1:-1,he.size=0,he.type=5;else if(_e.slice(-1)=="/"){for(le=P+1;le<Z.length&&n(T.FullPaths[le])!=_e;++le);for(he.C=le>=Z.length?-1:le,le=P+1;le<Z.length&&n(T.FullPaths[le])!=n(_e);++le);he.R=le>=Z.length?-1:le,he.type=1}else n(T.FullPaths[P+1]||"")==n(_e)&&(he.R=P+1),he.type=2}}}function W(T,N){var O=N||{};if(O.fileType=="mad")return rD(T,O);switch(S(T),O.fileType){case"zip":return Y3(T,O)}var B=function(Ee){for(var pe=0,ke=0,Ue=0;Ue<Ee.FileIndex.length;++Ue){var gt=Ee.FileIndex[Ue];if(gt.content){var xt=gt.content.length;xt>0&&(xt<4096?pe+=xt+63>>6:ke+=xt+511>>9)}}for(var ir=Ee.FullPaths.length+3>>2,Ss=pe+7>>3,Cs=pe+127>>7,Ts=Ss+ke+ir+Cs,Ma=Ts+127>>7,ef=Ma<=109?0:Math.ceil((Ma-109)/127);Ts+Ma+ef+127>>7>Ma;)ef=++Ma<=109?0:Math.ceil((Ma-109)/127);var Vn=[1,ef,Ma,Cs,ir,ke,pe,0];return Ee.FileIndex[0].size=pe<<6,Vn[7]=(Ee.FileIndex[0].start=Vn[0]+Vn[1]+Vn[2]+Vn[3]+Vn[4]+Vn[5])+(Vn[6]+7>>3),Vn}(T),P=ie(B[7]<<9),M=0,J=0;{for(M=0;M<8;++M)P.write_shift(1,Y[M]);for(M=0;M<8;++M)P.write_shift(2,0);for(P.write_shift(2,62),P.write_shift(2,3),P.write_shift(2,65534),P.write_shift(2,9),P.write_shift(2,6),M=0;M<3;++M)P.write_shift(2,0);for(P.write_shift(4,0),P.write_shift(4,B[2]),P.write_shift(4,B[0]+B[1]+B[2]+B[3]-1),P.write_shift(4,0),P.write_shift(4,4096),P.write_shift(4,B[3]?B[0]+B[1]+B[2]-1:j),P.write_shift(4,B[3]),P.write_shift(-4,B[1]?B[0]-1:j),P.write_shift(4,B[1]),M=0;M<109;++M)P.write_shift(-4,M<B[2]?B[1]+M:-1)}if(B[1])for(J=0;J<B[1];++J){for(;M<236+J*127;++M)P.write_shift(-4,M<B[2]?B[1]+M:-1);P.write_shift(-4,J===B[1]-1?j:J+1)}var le=function(Ee){for(J+=Ee;M<J-1;++M)P.write_shift(-4,M+1);Ee&&(++M,P.write_shift(-4,j))};for(J=M=0,J+=B[1];M<J;++M)P.write_shift(-4,se.DIFSECT);for(J+=B[2];M<J;++M)P.write_shift(-4,se.FATSECT);le(B[3]),le(B[4]);for(var q=0,Z=0,Q=T.FileIndex[0];q<T.FileIndex.length;++q)Q=T.FileIndex[q],Q.content&&(Z=Q.content.length,!(Z<4096)&&(Q.start=J,le(Z+511>>9)));for(le(B[6]+7>>3);P.l&511;)P.write_shift(-4,se.ENDOFCHAIN);for(J=M=0,q=0;q<T.FileIndex.length;++q)Q=T.FileIndex[q],Q.content&&(Z=Q.content.length,!(!Z||Z>=4096)&&(Q.start=J,le(Z+63>>6)));for(;P.l&511;)P.write_shift(-4,se.ENDOFCHAIN);for(M=0;M<B[4]<<2;++M){var he=T.FullPaths[M];if(!he||he.length===0){for(q=0;q<17;++q)P.write_shift(4,0);for(q=0;q<3;++q)P.write_shift(4,-1);for(q=0;q<12;++q)P.write_shift(4,0);continue}Q=T.FileIndex[M],M===0&&(Q.start=Q.size?Q.start-1:j);var _e=M===0&&O.root||Q.name;if(Z=2*(_e.length+1),P.write_shift(64,_e,"utf16le"),P.write_shift(2,Z),P.write_shift(1,Q.type),P.write_shift(1,Q.color),P.write_shift(-4,Q.L),P.write_shift(-4,Q.R),P.write_shift(-4,Q.C),Q.clsid)P.write_shift(16,Q.clsid,"hex");else for(q=0;q<4;++q)P.write_shift(4,0);P.write_shift(4,Q.state||0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,0),P.write_shift(4,Q.start),P.write_shift(4,Q.size),P.write_shift(4,0)}for(M=1;M<T.FileIndex.length;++M)if(Q=T.FileIndex[M],Q.size>=4096)if(P.l=Q.start+1<<9,je&&Buffer.isBuffer(Q.content))Q.content.copy(P,P.l,0,Q.size),P.l+=Q.size+511&-512;else{for(q=0;q<Q.size;++q)P.write_shift(1,Q.content[q]);for(;q&511;++q)P.write_shift(1,0)}for(M=1;M<T.FileIndex.length;++M)if(Q=T.FileIndex[M],Q.size>0&&Q.size<4096)if(je&&Buffer.isBuffer(Q.content))Q.content.copy(P,P.l,0,Q.size),P.l+=Q.size+63&-64;else{for(q=0;q<Q.size;++q)P.write_shift(1,Q.content[q]);for(;q&63;++q)P.write_shift(1,0)}if(je)P.l=P.length;else for(;P.l<P.length;)P.write_shift(1,0);return P}function z(T,N){var O=T.FullPaths.map(function(q){return q.toUpperCase()}),B=O.map(function(q){var Z=q.split("/");return Z[Z.length-(q.slice(-1)=="/"?2:1)]}),P=!1;N.charCodeAt(0)===47?(P=!0,N=O[0].slice(0,-1)+N):P=N.indexOf("/")!==-1;var M=N.toUpperCase(),J=P===!0?O.indexOf(M):B.indexOf(M);if(J!==-1)return T.FileIndex[J];var le=!M.match($i);for(M=M.replace(or,""),le&&(M=M.replace($i,"!")),J=0;J<O.length;++J)if((le?O[J].replace($i,"!"):O[J]).replace(or,"")==M||(le?B[J].replace($i,"!"):B[J]).replace(or,"")==M)return T.FileIndex[J];return null}var V=64,j=-2,H="d0cf11e0a1b11ae1",Y=[208,207,17,224,161,177,26,225],ae="00000000000000000000000000000000",se={MAXREGSECT:-6,DIFSECT:-4,FATSECT:-3,ENDOFCHAIN:j,FREESECT:-1,HEADER_SIGNATURE:H,HEADER_MINOR_VERSION:"3e00",MAXREGSID:-6,NOSTREAM:-1,HEADER_CLSID:ae,EntryTypes:["unknown","storage","stream","lockbytes","property","root"]};function de(T,N,O){f();var B=W(T,O);c.writeFileSync(N,B)}function K(T){for(var N=new Array(T.length),O=0;O<T.length;++O)N[O]=String.fromCharCode(T[O]);return N.join("")}function we(T,N){var O=W(T,N);switch(N&&N.type||"buffer"){case"file":return f(),c.writeFileSync(N.filename,O),O;case"binary":return typeof O=="string"?O:K(O);case"base64":return Ui(typeof O=="string"?O:K(O));case"buffer":if(je)return Buffer.isBuffer(O)?O:Rn(O);case"array":return typeof O=="string"?Sr(O):O}return O}var D;function _(T){try{var N=T.InflateRaw,O=new N;if(O._processChunk(new Uint8Array([3,0]),O._finishFlushFlag),O.bytesRead)D=T;else throw new Error("zlib does not expose bytesRead")}catch(B){console.error("cannot use native zlib: "+(B.message||B))}}function k(T,N){if(!D)return rp(T,N);var O=D.InflateRaw,B=new O,P=B._processChunk(T.slice(T.l),B._finishFlushFlag);return T.l+=B.bytesRead,P}function b(T){return D?D.deflateRawSync(T):Ae(T)}var A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],G=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258],re=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577];function ee(T){var N=(T<<1|T<<11)&139536|(T<<5|T<<15)&558144;return(N>>16|N>>8|N)&255}for(var te=typeof Uint8Array<"u",ne=te?new Uint8Array(256):[],Ce=0;Ce<256;++Ce)ne[Ce]=ee(Ce);function I(T,N){var O=ne[T&255];return N<=8?O>>>8-N:(O=O<<8|ne[T>>8&255],N<=16?O>>>16-N:(O=O<<8|ne[T>>16&255],O>>>24-N))}function fe(T,N){var O=N&7,B=N>>>3;return(T[B]|(O<=6?0:T[B+1]<<8))>>>O&3}function ye(T,N){var O=N&7,B=N>>>3;return(T[B]|(O<=5?0:T[B+1]<<8))>>>O&7}function Oe(T,N){var O=N&7,B=N>>>3;return(T[B]|(O<=4?0:T[B+1]<<8))>>>O&15}function be(T,N){var O=N&7,B=N>>>3;return(T[B]|(O<=3?0:T[B+1]<<8))>>>O&31}function me(T,N){var O=N&7,B=N>>>3;return(T[B]|(O<=1?0:T[B+1]<<8))>>>O&127}function ht(T,N,O){var B=N&7,P=N>>>3,M=(1<<O)-1,J=T[P]>>>B;return O<8-B||(J|=T[P+1]<<8-B,O<16-B)||(J|=T[P+2]<<16-B,O<24-B)||(J|=T[P+3]<<24-B),J&M}function wr(T,N,O){var B=N&7,P=N>>>3;return B<=5?T[P]|=(O&7)<<B:(T[P]|=O<<B&255,T[P+1]=(O&7)>>8-B),N+3}function jr(T,N,O){var B=N&7,P=N>>>3;return O=(O&1)<<B,T[P]|=O,N+1}function zr(T,N,O){var B=N&7,P=N>>>3;return O<<=B,T[P]|=O&255,O>>>=8,T[P+1]=O,N+8}function gi(T,N,O){var B=N&7,P=N>>>3;return O<<=B,T[P]|=O&255,O>>>=8,T[P+1]=O&255,T[P+2]=O>>>8,N+16}function bn(T,N){var O=T.length,B=2*O>N?2*O:N+5,P=0;if(O>=N)return T;if(je){var M=Mu(B);if(T.copy)T.copy(M);else for(;P<T.length;++P)M[P]=T[P];return M}else if(te){var J=new Uint8Array(B);if(J.set)J.set(T);else for(;P<O;++P)J[P]=T[P];return J}return T.length=B,T}function dr(T){for(var N=new Array(T),O=0;O<T;++O)N[O]=0;return N}function ln(T,N,O){var B=1,P=0,M=0,J=0,le=0,q=T.length,Z=te?new Uint16Array(32):dr(32);for(M=0;M<32;++M)Z[M]=0;for(M=q;M<O;++M)T[M]=0;q=T.length;var Q=te?new Uint16Array(q):dr(q);for(M=0;M<q;++M)Z[P=T[M]]++,B<P&&(B=P),Q[M]=0;for(Z[0]=0,M=1;M<=B;++M)Z[M+16]=le=le+Z[M-1]<<1;for(M=0;M<q;++M)le=T[M],le!=0&&(Q[M]=Z[le+16]++);var he=0;for(M=0;M<q;++M)if(he=T[M],he!=0)for(le=I(Q[M],B)>>B-he,J=(1<<B+4-he)-1;J>=0;--J)N[le|J<<he]=he&15|M<<4;return B}var En=te?new Uint16Array(512):dr(512),Ia=te?new Uint16Array(32):dr(32);if(!te){for(var st=0;st<512;++st)En[st]=0;for(st=0;st<32;++st)Ia[st]=0}(function(){for(var T=[],N=0;N<32;N++)T.push(5);ln(T,Ia,32);var O=[];for(N=0;N<=143;N++)O.push(8);for(;N<=255;N++)O.push(9);for(;N<=279;N++)O.push(7);for(;N<=287;N++)O.push(8);ln(O,En,288)})();var Ht=function(){for(var N=te?new Uint8Array(32768):[],O=0,B=0;O<re.length-1;++O)for(;B<re[O+1];++B)N[B]=O;for(;B<32768;++B)N[B]=29;var P=te?new Uint8Array(259):[];for(O=0,B=0;O<G.length-1;++O)for(;B<G[O+1];++B)P[B]=O;function M(le,q){for(var Z=0;Z<le.length;){var Q=Math.min(65535,le.length-Z),he=Z+Q==le.length;for(q.write_shift(1,+he),q.write_shift(2,Q),q.write_shift(2,~Q&65535);Q-- >0;)q[q.l++]=le[Z++]}return q.l}function J(le,q){for(var Z=0,Q=0,he=te?new Uint16Array(32768):[];Q<le.length;){var _e=Math.min(65535,le.length-Q);if(_e<10){for(Z=wr(q,Z,+(Q+_e==le.length)),Z&7&&(Z+=8-(Z&7)),q.l=Z/8|0,q.write_shift(2,_e),q.write_shift(2,~_e&65535);_e-- >0;)q[q.l++]=le[Q++];Z=q.l*8;continue}Z=wr(q,Z,+(Q+_e==le.length)+2);for(var Ee=0;_e-- >0;){var pe=le[Q];Ee=(Ee<<5^pe)&32767;var ke=-1,Ue=0;if((ke=he[Ee])&&(ke|=Q&-32768,ke>Q&&(ke-=32768),ke<Q))for(;le[ke+Ue]==le[Q+Ue]&&Ue<250;)++Ue;if(Ue>2){pe=P[Ue],pe<=22?Z=zr(q,Z,ne[pe+1]>>1)-1:(zr(q,Z,3),Z+=5,zr(q,Z,ne[pe-23]>>5),Z+=3);var gt=pe<8?0:pe-4>>2;gt>0&&(gi(q,Z,Ue-G[pe]),Z+=gt),pe=N[Q-ke],Z=zr(q,Z,ne[pe]>>3),Z-=3;var xt=pe<4?0:pe-2>>1;xt>0&&(gi(q,Z,Q-ke-re[pe]),Z+=xt);for(var ir=0;ir<Ue;++ir)he[Ee]=Q&32767,Ee=(Ee<<5^le[Q])&32767,++Q;_e-=Ue-1}else pe<=143?pe=pe+48:Z=jr(q,Z,1),Z=zr(q,Z,ne[pe]),he[Ee]=Q&32767,++Q}Z=zr(q,Z,0)-1}return q.l=(Z+7)/8|0,q.l}return function(q,Z){return q.length<8?M(q,Z):J(q,Z)}}();function Ae(T){var N=ie(50+Math.floor(T.length*1.1)),O=Ht(T,N);return N.slice(0,O)}var it=te?new Uint16Array(32768):dr(32768),hr=te?new Uint16Array(32768):dr(32768),Pt=te?new Uint16Array(128):dr(128),Pa=1,tp=1;function G3(T,N){var O=be(T,N)+257;N+=5;var B=be(T,N)+1;N+=5;var P=Oe(T,N)+4;N+=4;for(var M=0,J=te?new Uint8Array(19):dr(19),le=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],q=1,Z=te?new Uint8Array(8):dr(8),Q=te?new Uint8Array(8):dr(8),he=J.length,_e=0;_e<P;++_e)J[A[_e]]=M=ye(T,N),q<M&&(q=M),Z[M]++,N+=3;var Ee=0;for(Z[0]=0,_e=1;_e<=q;++_e)Q[_e]=Ee=Ee+Z[_e-1]<<1;for(_e=0;_e<he;++_e)(Ee=J[_e])!=0&&(le[_e]=Q[Ee]++);var pe=0;for(_e=0;_e<he;++_e)if(pe=J[_e],pe!=0){Ee=ne[le[_e]]>>8-pe;for(var ke=(1<<7-pe)-1;ke>=0;--ke)Pt[Ee|ke<<pe]=pe&7|_e<<3}var Ue=[];for(q=1;Ue.length<O+B;)switch(Ee=Pt[me(T,N)],N+=Ee&7,Ee>>>=3){case 16:for(M=3+fe(T,N),N+=2,Ee=Ue[Ue.length-1];M-- >0;)Ue.push(Ee);break;case 17:for(M=3+ye(T,N),N+=3;M-- >0;)Ue.push(0);break;case 18:for(M=11+me(T,N),N+=7;M-- >0;)Ue.push(0);break;default:Ue.push(Ee),q<Ee&&(q=Ee);break}var gt=Ue.slice(0,O),xt=Ue.slice(O);for(_e=O;_e<286;++_e)gt[_e]=0;for(_e=B;_e<30;++_e)xt[_e]=0;return Pa=ln(gt,it,286),tp=ln(xt,hr,30),N}function X3(T,N){if(T[0]==3&&!(T[1]&3))return[Yn(N),2];for(var O=0,B=0,P=Mu(N||1<<18),M=0,J=P.length>>>0,le=0,q=0;!(B&1);){if(B=ye(T,O),O+=3,B>>>1)B>>1==1?(le=9,q=5):(O=G3(T,O),le=Pa,q=tp);else{O&7&&(O+=8-(O&7));var Z=T[O>>>3]|T[(O>>>3)+1]<<8;if(O+=32,Z>0)for(!N&&J<M+Z&&(P=bn(P,M+Z),J=P.length);Z-- >0;)P[M++]=T[O>>>3],O+=8;continue}for(;;){!N&&J<M+32767&&(P=bn(P,M+32767),J=P.length);var Q=ht(T,O,le),he=B>>>1==1?En[Q]:it[Q];if(O+=he&15,he>>>=4,!(he>>>8&255))P[M++]=he;else{if(he==256)break;he-=257;var _e=he<8?0:he-4>>2;_e>5&&(_e=0);var Ee=M+G[he];_e>0&&(Ee+=ht(T,O,_e),O+=_e),Q=ht(T,O,q),he=B>>>1==1?Ia[Q]:hr[Q],O+=he&15,he>>>=4;var pe=he<4?0:he-2>>1,ke=re[he];for(pe>0&&(ke+=ht(T,O,pe),O+=pe),!N&&J<Ee&&(P=bn(P,Ee+100),J=P.length);M<Ee;)P[M]=P[M-ke],++M}}}return N?[P,O+7>>>3]:[P.slice(0,M),O+7>>>3]}function rp(T,N){var O=T.slice(T.l||0),B=X3(O,N);return T.l+=B[1],B[0]}function np(T,N){if(T)typeof console<"u"&&console.error(N);else throw new Error(N)}function ap(T,N){var O=T;Gt(O,0);var B=[],P=[],M={FileIndex:B,FullPaths:P};C(M,{root:N.root});for(var J=O.length-4;(O[J]!=80||O[J+1]!=75||O[J+2]!=5||O[J+3]!=6)&&J>=0;)--J;O.l=J+4,O.l+=4;var le=O.read_shift(2);O.l+=6;var q=O.read_shift(4);for(O.l=q,J=0;J<le;++J){O.l+=20;var Z=O.read_shift(4),Q=O.read_shift(4),he=O.read_shift(2),_e=O.read_shift(2),Ee=O.read_shift(2);O.l+=8;var pe=O.read_shift(4),ke=o(O.slice(O.l+he,O.l+he+_e));O.l+=he+_e+Ee;var Ue=O.l;O.l=pe+4,K3(O,Z,Q,M,ke),O.l=Ue}return M}function K3(T,N,O,B,P){T.l+=2;var M=T.read_shift(2),J=T.read_shift(2),le=s(T);if(M&8257)throw new Error("Unsupported ZIP encryption");for(var q=T.read_shift(4),Z=T.read_shift(4),Q=T.read_shift(4),he=T.read_shift(2),_e=T.read_shift(2),Ee="",pe=0;pe<he;++pe)Ee+=String.fromCharCode(T[T.l++]);if(_e){var ke=o(T.slice(T.l,T.l+_e));(ke[21589]||{}).mt&&(le=ke[21589].mt),((P||{})[21589]||{}).mt&&(le=P[21589].mt)}T.l+=_e;var Ue=T.slice(T.l,T.l+Z);switch(J){case 8:Ue=k(T,Q);break;case 0:break;default:throw new Error("Unsupported ZIP Compression method "+J)}var gt=!1;M&8&&(q=T.read_shift(4),q==134695760&&(q=T.read_shift(4),gt=!0),Z=T.read_shift(4),Q=T.read_shift(4)),Z!=N&&np(gt,"Bad compressed size: "+N+" != "+Z),Q!=O&&np(gt,"Bad uncompressed size: "+O+" != "+Q),Qc(B,Ee,Ue,{unsafe:!0,mt:le})}function Y3(T,N){var O=N||{},B=[],P=[],M=ie(1),J=O.compression?8:0,le=0,q=0,Z=0,Q=0,he=0,_e=T.FullPaths[0],Ee=_e,pe=T.FileIndex[0],ke=[],Ue=0;for(q=1;q<T.FullPaths.length;++q)if(Ee=T.FullPaths[q].slice(_e.length),pe=T.FileIndex[q],!(!pe.size||!pe.content||Ee=="Sh33tJ5")){var gt=Q,xt=ie(Ee.length);for(Z=0;Z<Ee.length;++Z)xt.write_shift(1,Ee.charCodeAt(Z)&127);xt=xt.slice(0,xt.l),ke[he]=g2.buf(pe.content,0);var ir=pe.content;J==8&&(ir=b(ir)),M=ie(30),M.write_shift(4,67324752),M.write_shift(2,20),M.write_shift(2,le),M.write_shift(2,J),pe.mt?i(M,pe.mt):M.write_shift(4,0),M.write_shift(-4,ke[he]),M.write_shift(4,ir.length),M.write_shift(4,pe.content.length),M.write_shift(2,xt.length),M.write_shift(2,0),Q+=M.length,B.push(M),Q+=xt.length,B.push(xt),Q+=ir.length,B.push(ir),M=ie(46),M.write_shift(4,33639248),M.write_shift(2,0),M.write_shift(2,20),M.write_shift(2,le),M.write_shift(2,J),M.write_shift(4,0),M.write_shift(-4,ke[he]),M.write_shift(4,ir.length),M.write_shift(4,pe.content.length),M.write_shift(2,xt.length),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(4,0),M.write_shift(4,gt),Ue+=M.l,P.push(M),Ue+=xt.length,P.push(xt),++he}return M=ie(22),M.write_shift(4,101010256),M.write_shift(2,0),M.write_shift(2,0),M.write_shift(2,he),M.write_shift(2,he),M.write_shift(4,Ue),M.write_shift(4,Q),M.write_shift(2,0),Lt([Lt(B),Lt(P),M])}var Mo={htm:"text/html",xml:"text/xml",gif:"image/gif",jpg:"image/jpeg",png:"image/png",mso:"application/x-mso",thmx:"application/vnd.ms-officetheme",sh33tj5:"application/octet-stream"};function q3(T,N){if(T.ctype)return T.ctype;var O=T.name||"",B=O.match(/\.([^\.]+)$/);return B&&Mo[B[1]]||N&&(B=(O=N).match(/[\.\\]([^\.\\])+$/),B&&Mo[B[1]])?Mo[B[1]]:"application/octet-stream"}function J3(T){for(var N=Ui(T),O=[],B=0;B<N.length;B+=76)O.push(N.slice(B,B+76));return O.join(`\r
|
||
`)+`\r
|
||
`}function Z3(T){var N=T.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF=]/g,function(Z){var Q=Z.charCodeAt(0).toString(16).toUpperCase();return"="+(Q.length==1?"0"+Q:Q)});N=N.replace(/ $/mg,"=20").replace(/\t$/mg,"=09"),N.charAt(0)==`
|
||
`&&(N="=0D"+N.slice(1)),N=N.replace(/\r(?!\n)/mg,"=0D").replace(/\n\n/mg,`
|
||
=0A`).replace(/([^\r\n])\n/mg,"$1=0A");for(var O=[],B=N.split(`\r
|
||
`),P=0;P<B.length;++P){var M=B[P];if(M.length==0){O.push("");continue}for(var J=0;J<M.length;){var le=76,q=M.slice(J,J+le);q.charAt(le-1)=="="?le--:q.charAt(le-2)=="="?le-=2:q.charAt(le-3)=="="&&(le-=3),q=M.slice(J,J+le),J+=le,J<M.length&&(q+="="),O.push(q)}}return O.join(`\r
|
||
`)}function Q3(T){for(var N=[],O=0;O<T.length;++O){for(var B=T[O];O<=T.length&&B.charAt(B.length-1)=="=";)B=B.slice(0,B.length-1)+T[++O];N.push(B)}for(var P=0;P<N.length;++P)N[P]=N[P].replace(/[=][0-9A-Fa-f]{2}/g,function(M){return String.fromCharCode(parseInt(M.slice(1),16))});return Sr(N.join(`\r
|
||
`))}function eD(T,N,O){for(var B="",P="",M="",J,le=0;le<10;++le){var q=N[le];if(!q||q.match(/^\s*$/))break;var Z=q.match(/^(.*?):\s*([^\s].*)$/);if(Z)switch(Z[1].toLowerCase()){case"content-location":B=Z[2].trim();break;case"content-type":M=Z[2].trim();break;case"content-transfer-encoding":P=Z[2].trim();break}}switch(++le,P.toLowerCase()){case"base64":J=Sr(Er(N.slice(le).join("")));break;case"quoted-printable":J=Q3(N.slice(le));break;default:throw new Error("Unsupported Content-Transfer-Encoding "+P)}var Q=Qc(T,B.slice(O.length),J,{unsafe:!0});M&&(Q.ctype=M)}function tD(T,N){if(K(T.slice(0,13)).toLowerCase()!="mime-version:")throw new Error("Unsupported MAD header");var O=N&&N.root||"",B=(je&&Buffer.isBuffer(T)?T.toString("binary"):K(T)).split(`\r
|
||
`),P=0,M="";for(P=0;P<B.length;++P)if(M=B[P],!!/^Content-Location:/i.test(M)&&(M=M.slice(M.indexOf("file")),O||(O=M.slice(0,M.lastIndexOf("/")+1)),M.slice(0,O.length)!=O))for(;O.length>0&&(O=O.slice(0,O.length-1),O=O.slice(0,O.lastIndexOf("/")+1),M.slice(0,O.length)!=O););var J=(B[1]||"").match(/boundary="(.*?)"/);if(!J)throw new Error("MAD cannot find boundary");var le="--"+(J[1]||""),q=[],Z=[],Q={FileIndex:q,FullPaths:Z};C(Q);var he,_e=0;for(P=0;P<B.length;++P){var Ee=B[P];Ee!==le&&Ee!==le+"--"||(_e++&&eD(Q,B.slice(he,P),O),he=P)}return Q}function rD(T,N){var O=N||{},B=O.boundary||"SheetJS";B="------="+B;for(var P=["MIME-Version: 1.0",'Content-Type: multipart/related; boundary="'+B.slice(2)+'"',"","",""],M=T.FullPaths[0],J=M,le=T.FileIndex[0],q=1;q<T.FullPaths.length;++q)if(J=T.FullPaths[q].slice(M.length),le=T.FileIndex[q],!(!le.size||!le.content||J=="Sh33tJ5")){J=J.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g,function(Ue){return"_x"+Ue.charCodeAt(0).toString(16)+"_"}).replace(/[\u0080-\uFFFF]/g,function(Ue){return"_u"+Ue.charCodeAt(0).toString(16)+"_"});for(var Z=le.content,Q=je&&Buffer.isBuffer(Z)?Z.toString("binary"):K(Z),he=0,_e=Math.min(1024,Q.length),Ee=0,pe=0;pe<=_e;++pe)(Ee=Q.charCodeAt(pe))>=32&&Ee<128&&++he;var ke=he>=_e*4/5;P.push(B),P.push("Content-Location: "+(O.root||"file:///C:/SheetJS/")+J),P.push("Content-Transfer-Encoding: "+(ke?"quoted-printable":"base64")),P.push("Content-Type: "+q3(le,J)),P.push(""),P.push(ke?Z3(Q):J3(Q))}return P.push(B+`--\r
|
||
`),P.join(`\r
|
||
`)}function nD(T){var N={};return C(N,T),N}function Qc(T,N,O,B){var P=B&&B.unsafe;P||C(T);var M=!P&&Fe.find(T,N);if(!M){var J=T.FullPaths[0];N.slice(0,J.length)==J?J=N:(J.slice(-1)!="/"&&(J+="/"),J=(J+N).replace("//","/")),M={name:a(N),type:2},T.FileIndex.push(M),T.FullPaths.push(J),P||Fe.utils.cfb_gc(T)}return M.content=O,M.size=O?O.length:0,B&&(B.CLSID&&(M.clsid=B.CLSID),B.mt&&(M.mt=B.mt),B.ct&&(M.ct=B.ct)),M}function aD(T,N){C(T);var O=Fe.find(T,N);if(O){for(var B=0;B<T.FileIndex.length;++B)if(T.FileIndex[B]==O)return T.FileIndex.splice(B,1),T.FullPaths.splice(B,1),!0}return!1}function iD(T,N,O){C(T);var B=Fe.find(T,N);if(B){for(var P=0;P<T.FileIndex.length;++P)if(T.FileIndex[P]==B)return T.FileIndex[P].name=a(O),T.FullPaths[P]=O,!0}return!1}function sD(T){S(T,!0)}return t.find=z,t.read=F,t.parse=u,t.write=we,t.writeFile=de,t.utils={cfb_new:nD,cfb_add:Qc,cfb_del:aD,cfb_mov:iD,cfb_gc:sD,ReadShift:qi,CheckField:Ud,prep_blob:Gt,bconcat:Lt,use_zlib:_,_deflateRaw:Ae,_inflateRaw:rp,consts:se},t}();function x2(e){return typeof e=="string"?io(e):Array.isArray(e)?H_(e):e}function ji(e,t,r){if(typeof Deno<"u"){if(r&&typeof t=="string")switch(r){case"utf8":t=new TextEncoder(r).encode(t);break;case"binary":t=io(t);break;default:throw new Error("Unsupported encoding "+r)}return Deno.writeFileSync(e,t)}var n=r=="utf8"?gn(t):t;if(typeof IE_SaveFile<"u")return IE_SaveFile(n,e);if(typeof Blob<"u"){var a=new Blob([x2(n)],{type:"application/octet-stream"});if(typeof navigator<"u"&&navigator.msSaveBlob)return navigator.msSaveBlob(a,e);if(typeof saveAs<"u")return saveAs(a,e);if(typeof URL<"u"&&typeof document<"u"&&document.createElement&&URL.createObjectURL){var i=URL.createObjectURL(a);if(typeof chrome=="object"&&typeof(chrome.downloads||{}).download=="function")return URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(i)},6e4),chrome.downloads.download({url:i,filename:e,saveAs:!0});var s=document.createElement("a");if(s.download!=null)return s.download=e,s.href=i,document.body.appendChild(s),s.click(),document.body.removeChild(s),URL.revokeObjectURL&&typeof setTimeout<"u"&&setTimeout(function(){URL.revokeObjectURL(i)},6e4),i}}if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var o=File(e);return o.open("w"),o.encoding="binary",Array.isArray(t)&&(t=qn(t)),o.write(t),o.close(),t}catch(c){if(!c.message||!c.message.match(/onstruct/))throw c}throw new Error("cannot save file "+e)}function v2(e){if(typeof Deno<"u")return Deno.readFileSync(e);if(typeof $<"u"&&typeof File<"u"&&typeof Folder<"u")try{var t=File(e);t.open("r"),t.encoding="binary";var r=t.read();return t.close(),r}catch(n){if(!n.message||!n.message.match(/onstruct/))throw n}throw new Error("Cannot access file "+e)}function _t(e){for(var t=Object.keys(e),r=[],n=0;n<t.length;++n)Object.prototype.hasOwnProperty.call(e,t[n])&&r.push(t[n]);return r}function nd(e,t){for(var r=[],n=_t(e),a=0;a!==n.length;++a)r[e[n[a]][t]]==null&&(r[e[n[a]][t]]=n[a]);return r}function co(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]=r[n];return t}function fo(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]=parseInt(r[n],10);return t}function w2(e){for(var t=[],r=_t(e),n=0;n!==r.length;++n)t[e[r[n]]]==null&&(t[e[r[n]]]=[]),t[e[r[n]]].push(r[n]);return t}var uo=new Date(1899,11,30,0,0,0);function Bt(e,t){var r=e.getTime();t&&(r-=1462*24*60*60*1e3);var n=uo.getTime()+(e.getTimezoneOffset()-uo.getTimezoneOffset())*6e4;return(r-n)/(24*60*60*1e3)}var ad=new Date,_2=uo.getTime()+(ad.getTimezoneOffset()-uo.getTimezoneOffset())*6e4,id=ad.getTimezoneOffset();function ho(e){var t=new Date;return t.setTime(e*24*60*60*1e3+_2),t.getTimezoneOffset()!==id&&t.setTime(t.getTime()+(t.getTimezoneOffset()-id)*6e4),t}function y2(e){var t=0,r=0,n=!1,a=e.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/);if(!a)throw new Error("|"+e+"| is not an ISO8601 Duration");for(var i=1;i!=a.length;++i)if(a[i]){switch(r=1,i>3&&(n=!0),a[i].slice(a[i].length-1)){case"Y":throw new Error("Unsupported ISO Duration Field: "+a[i].slice(a[i].length-1));case"D":r*=24;case"H":r*=60;case"M":if(n)r*=60;else throw new Error("Unsupported ISO Duration Field: M")}t+=r*parseInt(a[i],10)}return t}var sd=new Date("2017-02-19T19:06:09.000Z"),od=isNaN(sd.getFullYear())?new Date("2/19/17"):sd,k2=od.getFullYear()==2017;function ot(e,t){var r=new Date(e);if(k2)return t>0?r.setTime(r.getTime()+r.getTimezoneOffset()*60*1e3):t<0&&r.setTime(r.getTime()-r.getTimezoneOffset()*60*1e3),r;if(e instanceof Date)return e;if(od.getFullYear()==1917&&!isNaN(r.getFullYear())){var n=r.getFullYear();return e.indexOf(""+n)>-1||r.setFullYear(r.getFullYear()+100),r}var a=e.match(/\d+/g)||["2017","2","19","0","0","0"],i=new Date(+a[0],+a[1]-1,+a[2],+a[3]||0,+a[4]||0,+a[5]||0);return e.indexOf("Z")>-1&&(i=new Date(i.getTime()-i.getTimezoneOffset()*60*1e3)),i}function pa(e,t){if(je&&Buffer.isBuffer(e)){if(t){if(e[0]==255&&e[1]==254)return gn(e.slice(2).toString("utf16le"));if(e[1]==254&&e[2]==255)return gn(Iu(e.slice(2).toString("binary")))}return e.toString("binary")}if(typeof TextDecoder<"u")try{if(t){if(e[0]==255&&e[1]==254)return gn(new TextDecoder("utf-16le").decode(e.slice(2)));if(e[0]==254&&e[1]==255)return gn(new TextDecoder("utf-16be").decode(e.slice(2)))}var r={"€":"","‚":"",ƒ:"","„":"","…":"
","†":"","‡":"","ˆ":"","‰":"",Š:"","‹":"",Œ:"",Ž:"","‘":"","’":"","“":"","”":"","•":"","–":"","—":"","˜":"","™":"",š:"","›":"",œ:"",ž:"",Ÿ:""};return Array.isArray(e)&&(e=new Uint8Array(e)),new TextDecoder("latin1").decode(e).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g,function(i){return r[i]||i})}catch{}for(var n=[],a=0;a!=e.length;++a)n.push(String.fromCharCode(e[a]));return n.join("")}function lt(e){if(typeof JSON<"u"&&!Array.isArray(e))return JSON.parse(JSON.stringify(e));if(typeof e!="object"||e==null)return e;if(e instanceof Date)return new Date(e.getTime());var t={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=lt(e[r]));return t}function yt(e,t){for(var r="";r.length<t;)r+=e;return r}function qr(e){var t=Number(e);if(!isNaN(t))return isFinite(t)?t:NaN;if(!/\d/.test(e))return t;var r=1,n=e.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g,function(){return r*=100,""});return!isNaN(t=Number(n))||(n=n.replace(/[(](.*)[)]/,function(a,i){return r=-r,i}),!isNaN(t=Number(n)))?t/r:t}var b2=["january","february","march","april","may","june","july","august","september","october","november","december"];function Za(e){var t=new Date(e),r=new Date(NaN),n=t.getYear(),a=t.getMonth(),i=t.getDate();if(isNaN(i))return r;var s=e.toLowerCase();if(s.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)){if(s=s.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""),s.length>3&&b2.indexOf(s)==-1)return r}else if(s.match(/[a-z]/))return r;return n<0||n>8099?r:(a>0||i>1)&&n!=101?t:e.match(/[^-0-9:,\/\\]/)?r:t}var E2=function(){var e="abacaba".split(/(:?b)/i).length==5;return function(r,n,a){if(e||typeof n=="string")return r.split(n);for(var i=r.split(n),s=[i[0]],o=1;o<i.length;++o)s.push(a),s.push(i[o]);return s}}();function ld(e){return e?e.content&&e.type?pa(e.content,!0):e.data?Vi(e.data):e.asNodeBuffer&&je?Vi(e.asNodeBuffer().toString("binary")):e.asBinary?Vi(e.asBinary()):e._data&&e._data.getContent?Vi(pa(Array.prototype.slice.call(e._data.getContent(),0))):null:null}function cd(e){if(!e)return null;if(e.data)return Nu(e.data);if(e.asNodeBuffer&&je)return e.asNodeBuffer();if(e._data&&e._data.getContent){var t=e._data.getContent();return typeof t=="string"?Nu(t):Array.prototype.slice.call(t)}return e.content&&e.type?e.content:null}function S2(e){return e&&e.name.slice(-4)===".bin"?cd(e):ld(e)}function Mr(e,t){for(var r=e.FullPaths||_t(e.files),n=t.toLowerCase().replace(/[\/]/g,"\\"),a=n.replace(/\\/g,"/"),i=0;i<r.length;++i){var s=r[i].replace(/^Root Entry[\/]/,"").toLowerCase();if(n==s||a==s)return e.files?e.files[r[i]]:e.FileIndex[i]}return null}function jl(e,t){var r=Mr(e,t);if(r==null)throw new Error("Cannot find file "+t+" in zip");return r}function Tt(e,t,r){if(!r)return S2(jl(e,t));if(!t)return null;try{return Tt(e,t)}catch{return null}}function Tr(e,t,r){if(!r)return ld(jl(e,t));if(!t)return null;try{return Tr(e,t)}catch{return null}}function fd(e,t,r){if(!r)return cd(jl(e,t));if(!t)return null;try{return fd(e,t)}catch{return null}}function ud(e){for(var t=e.FullPaths||_t(e.files),r=[],n=0;n<t.length;++n)t[n].slice(-1)!="/"&&r.push(t[n].replace(/^Root Entry[\/]/,""));return r.sort()}function He(e,t,r){if(e.FullPaths){if(typeof r=="string"){var n;return je?n=Rn(r):n=j_(r),Fe.utils.cfb_add(e,t,n)}Fe.utils.cfb_add(e,t,r)}else e.file(t,r)}function zl(){return Fe.utils.cfb_new()}function dd(e,t){switch(t.type){case"base64":return Fe.read(e,{type:"base64"});case"binary":return Fe.read(e,{type:"binary"});case"buffer":case"array":return Fe.read(e,{type:"buffer"})}throw new Error("Unrecognized type "+t.type)}function zi(e,t){if(e.charAt(0)=="/")return e.slice(1);var r=t.split("/");t.slice(-1)!="/"&&r.pop();for(var n=e.split("/");n.length!==0;){var a=n.shift();a===".."?r.pop():a!=="."&&r.push(a)}return r.join("/")}var bt=`<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\r
|
||
`,C2=/([^"\s?>\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g,hd=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg,T2=/<[^>]*>/g,qt=bt.match(hd)?hd:T2,F2=/<\w*:/,A2=/<(\/?)\w+:/;function Me(e,t,r){for(var n={},a=0,i=0;a!==e.length&&!((i=e.charCodeAt(a))===32||i===10||i===13);++a);if(t||(n[0]=e.slice(0,a)),a===e.length)return n;var s=e.match(C2),o=0,c="",f=0,u="",d="",h=1;if(s)for(f=0;f!=s.length;++f){for(d=s[f],i=0;i!=d.length&&d.charCodeAt(i)!==61;++i);for(u=d.slice(0,i).trim();d.charCodeAt(i+1)==32;)++i;for(h=(a=d.charCodeAt(i+1))==34||a==39?1:0,c=d.slice(i+1+h,d.length-h),o=0;o!=u.length&&u.charCodeAt(o)!==58;++o);if(o===u.length)u.indexOf("_")>0&&(u=u.slice(0,u.indexOf("_"))),n[u]=c,r||(n[u.toLowerCase()]=c);else{var m=(o===5&&u.slice(0,5)==="xmlns"?"xmlns":"")+u.slice(o+1);if(n[m]&&u.slice(o-3,o)=="ext")continue;n[m]=c,r||(n[m.toLowerCase()]=c)}}return n}function pn(e){return e.replace(A2,"<$1")}var md={""":'"',"'":"'",">":">","<":"<","&":"&"},Gl=co(md),Ke=function(){var e=/&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig,t=/_x([\da-fA-F]{4})_/ig;return function r(n){var a=n+"",i=a.indexOf("<![CDATA[");if(i==-1)return a.replace(e,function(o,c){return md[o]||String.fromCharCode(parseInt(c,o.indexOf("x")>-1?16:10))||o}).replace(t,function(o,c){return String.fromCharCode(parseInt(c,16))});var s=a.indexOf("]]>");return r(a.slice(0,i))+a.slice(i+9,s)+r(a.slice(s+3))}}(),Xl=/[&<>'"]/g,D2=/[\u0000-\u0008\u000b-\u001f]/g;function Qe(e){var t=e+"";return t.replace(Xl,function(r){return Gl[r]}).replace(D2,function(r){return"_x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+"_"})}function pd(e){return Qe(e).replace(/ /g,"_x0020_")}var gd=/[\u0000-\u001f]/g;function Kl(e){var t=e+"";return t.replace(Xl,function(r){return Gl[r]}).replace(/\n/g,"<br/>").replace(gd,function(r){return"&#x"+("000"+r.charCodeAt(0).toString(16)).slice(-4)+";"})}function R2(e){var t=e+"";return t.replace(Xl,function(r){return Gl[r]}).replace(gd,function(r){return"&#x"+r.charCodeAt(0).toString(16).toUpperCase()+";"})}var xd=function(){var e=/&#(\d+);/g;function t(r,n){return String.fromCharCode(parseInt(n,10))}return function(n){return n.replace(e,t)}}();function O2(e){return e.replace(/(\r\n|[\r\n])/g," ")}function ct(e){switch(e){case 1:case!0:case"1":case"true":case"TRUE":return!0;default:return!1}}function Yl(e){for(var t="",r=0,n=0,a=0,i=0,s=0,o=0;r<e.length;){if(n=e.charCodeAt(r++),n<128){t+=String.fromCharCode(n);continue}if(a=e.charCodeAt(r++),n>191&&n<224){s=(n&31)<<6,s|=a&63,t+=String.fromCharCode(s);continue}if(i=e.charCodeAt(r++),n<240){t+=String.fromCharCode((n&15)<<12|(a&63)<<6|i&63);continue}s=e.charCodeAt(r++),o=((n&7)<<18|(a&63)<<12|(i&63)<<6|s&63)-65536,t+=String.fromCharCode(55296+(o>>>10&1023)),t+=String.fromCharCode(56320+(o&1023))}return t}function vd(e){var t=Yn(2*e.length),r,n,a=1,i=0,s=0,o;for(n=0;n<e.length;n+=a)a=1,(o=e.charCodeAt(n))<128?r=o:o<224?(r=(o&31)*64+(e.charCodeAt(n+1)&63),a=2):o<240?(r=(o&15)*4096+(e.charCodeAt(n+1)&63)*64+(e.charCodeAt(n+2)&63),a=3):(a=4,r=(o&7)*262144+(e.charCodeAt(n+1)&63)*4096+(e.charCodeAt(n+2)&63)*64+(e.charCodeAt(n+3)&63),r-=65536,s=55296+(r>>>10&1023),r=56320+(r&1023)),s!==0&&(t[i++]=s&255,t[i++]=s>>>8,s=0),t[i++]=r%256,t[i++]=r>>>8;return t.slice(0,i).toString("ucs2")}function wd(e){return Rn(e,"binary").toString("utf8")}var mo="foo bar bazâð£",nt=je&&(wd(mo)==Yl(mo)&&wd||vd(mo)==Yl(mo)&&vd)||Yl,gn=je?function(e){return Rn(e,"utf8").toString("binary")}:function(e){for(var t=[],r=0,n=0,a=0;r<e.length;)switch(n=e.charCodeAt(r++),!0){case n<128:t.push(String.fromCharCode(n));break;case n<2048:t.push(String.fromCharCode(192+(n>>6))),t.push(String.fromCharCode(128+(n&63)));break;case(n>=55296&&n<57344):n-=55296,a=e.charCodeAt(r++)-56320+(n<<10),t.push(String.fromCharCode(240+(a>>18&7))),t.push(String.fromCharCode(144+(a>>12&63))),t.push(String.fromCharCode(128+(a>>6&63))),t.push(String.fromCharCode(128+(a&63)));break;default:t.push(String.fromCharCode(224+(n>>12))),t.push(String.fromCharCode(128+(n>>6&63))),t.push(String.fromCharCode(128+(n&63)))}return t.join("")},Gi=function(){var e={};return function(r,n){var a=r+"|"+(n||"");return e[a]?e[a]:e[a]=new RegExp("<(?:\\w+:)?"+r+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)</(?:\\w+:)?'+r+">",n||"")}}(),_d=function(){var e=[["nbsp"," "],["middot","·"],["quot",'"'],["apos","'"],["gt",">"],["lt","<"],["amp","&"]].map(function(t){return[new RegExp("&"+t[0]+";","ig"),t[1]]});return function(r){for(var n=r.replace(/^[\t\n\r ]+/,"").replace(/[\t\n\r ]+$/,"").replace(/>\s+/g,">").replace(/\s+</g,"<").replace(/[\t\n\r ]+/g," ").replace(/<\s*[bB][rR]\s*\/?>/g,`
|
||
`).replace(/<[^>]*>/g,""),a=0;a<e.length;++a)n=n.replace(e[a][0],e[a][1]);return n}}(),B2=function(){var e={};return function(r){return e[r]!==void 0?e[r]:e[r]=new RegExp("<(?:vt:)?"+r+">([\\s\\S]*?)</(?:vt:)?"+r+">","g")}}(),N2=/<\/?(?:vt:)?variant>/g,I2=/<(?:vt:)([^>]*)>([\s\S]*)</;function yd(e,t){var r=Me(e),n=e.match(B2(r.baseType))||[],a=[];if(n.length!=r.size){if(t.WTF)throw new Error("unexpected vector length "+n.length+" != "+r.size);return a}return n.forEach(function(i){var s=i.replace(N2,"").match(I2);s&&a.push({v:nt(s[2]),t:s[1]})}),a}var kd=/(^\s|\s$|\n)/;function zt(e,t){return"<"+e+(t.match(kd)?' xml:space="preserve"':"")+">"+t+"</"+e+">"}function Xi(e){return _t(e).map(function(t){return" "+t+'="'+e[t]+'"'}).join("")}function ge(e,t,r){return"<"+e+(r!=null?Xi(r):"")+(t!=null?(t.match(kd)?' xml:space="preserve"':"")+">"+t+"</"+e:"/")+">"}function ql(e,t){try{return e.toISOString().replace(/\.\d*/,"")}catch(r){if(t)throw r}return""}function P2(e,t){switch(typeof e){case"string":var r=ge("vt:lpwstr",Qe(e));return t&&(r=r.replace(/"/g,"_x0022_")),r;case"number":return ge((e|0)==e?"vt:i4":"vt:r8",Qe(String(e)));case"boolean":return ge("vt:bool",e?"true":"false")}if(e instanceof Date)return ge("vt:filetime",ql(e));throw new Error("Unable to serialize "+e)}function Jl(e){if(je&&Buffer.isBuffer(e))return e.toString("utf8");if(typeof e=="string")return e;if(typeof Uint8Array<"u"&&e instanceof Uint8Array)return nt(qn(Ul(e)));throw new Error("Bad input format: expected Buffer or string")}var Ki=/<(\/?)([^\s?><!\/:]*:|)([^\s?<>:\/]+)(?:[\s?:\/][^>]*)?>/mg,Nt={CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/metadata/core-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/custom-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties",CT:"http://schemas.openxmlformats.org/package/2006/content-types",RELS:"http://schemas.openxmlformats.org/package/2006/relationships",TCMNT:"http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments",dc:"http://purl.org/dc/elements/1.1/",dcterms:"http://purl.org/dc/terms/",dcmitype:"http://purl.org/dc/dcmitype/",mx:"http://schemas.microsoft.com/office/mac/excel/2008/main",r:"http://schemas.openxmlformats.org/officeDocument/2006/relationships",sjs:"http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties",vt:"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema"},ga=["http://schemas.openxmlformats.org/spreadsheetml/2006/main","http://purl.oclc.org/ooxml/spreadsheetml/main","http://schemas.microsoft.com/office/excel/2006/main","http://schemas.microsoft.com/office/excel/2006/2"],Fr={o:"urn:schemas-microsoft-com:office:office",x:"urn:schemas-microsoft-com:office:excel",ss:"urn:schemas-microsoft-com:office:spreadsheet",dt:"uuid:C2F41010-65B3-11d1-A29F-00AA00C14882",mv:"http://macVmlSchemaUri",v:"urn:schemas-microsoft-com:vml",html:"http://www.w3.org/TR/REC-html40"};function M2(e,t){for(var r=1-2*(e[t+7]>>>7),n=((e[t+7]&127)<<4)+(e[t+6]>>>4&15),a=e[t+6]&15,i=5;i>=0;--i)a=a*256+e[t+i];return n==2047?a==0?r*(1/0):NaN:(n==0?n=-1022:(n-=1023,a+=Math.pow(2,52)),r*Math.pow(2,n-52)*a)}function L2(e,t,r){var n=(t<0||1/t==-1/0?1:0)<<7,a=0,i=0,s=n?-t:t;isFinite(s)?s==0?a=i=0:(a=Math.floor(Math.log(s)/Math.LN2),i=s*Math.pow(2,52-a),a<=-1023&&(!isFinite(i)||i<Math.pow(2,52))?a=-1022:(i-=Math.pow(2,52),a+=1023)):(a=2047,i=isNaN(t)?26985:0);for(var o=0;o<=5;++o,i/=256)e[r+o]=i&255;e[r+6]=(a&15)<<4|i&15,e[r+7]=a>>4|n}var bd=function(e){for(var t=[],r=10240,n=0;n<e[0].length;++n)if(e[0][n])for(var a=0,i=e[0][n].length;a<i;a+=r)t.push.apply(t,e[0][n].slice(a,a+r));return t},Ed=je?function(e){return e[0].length>0&&Buffer.isBuffer(e[0][0])?Buffer.concat(e[0].map(function(t){return Buffer.isBuffer(t)?t:Rn(t)})):bd(e)}:bd,Sd=function(e,t,r){for(var n=[],a=t;a<r;a+=2)n.push(String.fromCharCode(Bn(e,a)));return n.join("").replace(or,"")},Zl=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("utf16le",t,r).replace(or,""):Sd(e,t,r)}:Sd,Cd=function(e,t,r){for(var n=[],a=t;a<t+r;++a)n.push(("0"+e[a].toString(16)).slice(-2));return n.join("")},Td=je?function(e,t,r){return Buffer.isBuffer(e)?e.toString("hex",t,t+r):Cd(e,t,r)}:Cd,Fd=function(e,t,r){for(var n=[],a=t;a<r;a++)n.push(String.fromCharCode(Qa(e,a)));return n.join("")},Yi=je?function(t,r,n){return Buffer.isBuffer(t)?t.toString("utf8",r,n):Fd(t,r,n)}:Fd,Ad=function(e,t){var r=Ar(e,t);return r>0?Yi(e,t+4,t+4+r-1):""},Dd=Ad,Rd=function(e,t){var r=Ar(e,t);return r>0?Yi(e,t+4,t+4+r-1):""},Od=Rd,Bd=function(e,t){var r=2*Ar(e,t);return r>0?Yi(e,t+4,t+4+r-1):""},Nd=Bd,Id=function(t,r){var n=Ar(t,r);return n>0?Zl(t,r+4,r+4+n):""},Pd=Id,Md=function(e,t){var r=Ar(e,t);return r>0?Yi(e,t+4,t+4+r):""},Ld=Md,Vd=function(e,t){return M2(e,t)},po=Vd,Ql=function(t){return Array.isArray(t)||typeof Uint8Array<"u"&&t instanceof Uint8Array};je&&(Dd=function(t,r){if(!Buffer.isBuffer(t))return Ad(t,r);var n=t.readUInt32LE(r);return n>0?t.toString("utf8",r+4,r+4+n-1):""},Od=function(t,r){if(!Buffer.isBuffer(t))return Rd(t,r);var n=t.readUInt32LE(r);return n>0?t.toString("utf8",r+4,r+4+n-1):""},Nd=function(t,r){if(!Buffer.isBuffer(t))return Bd(t,r);var n=2*t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n-1)},Pd=function(t,r){if(!Buffer.isBuffer(t))return Id(t,r);var n=t.readUInt32LE(r);return t.toString("utf16le",r+4,r+4+n)},Ld=function(t,r){if(!Buffer.isBuffer(t))return Md(t,r);var n=t.readUInt32LE(r);return t.toString("utf8",r+4,r+4+n)},po=function(t,r){return Buffer.isBuffer(t)?t.readDoubleLE(r):Vd(t,r)},Ql=function(t){return Buffer.isBuffer(t)||Array.isArray(t)||typeof Uint8Array<"u"&&t instanceof Uint8Array});var Qa=function(e,t){return e[t]},Bn=function(e,t){return e[t+1]*256+e[t]},V2=function(e,t){var r=e[t+1]*256+e[t];return r<32768?r:(65535-r+1)*-1},Ar=function(e,t){return e[t+3]*(1<<24)+(e[t+2]<<16)+(e[t+1]<<8)+e[t]},xa=function(e,t){return e[t+3]<<24|e[t+2]<<16|e[t+1]<<8|e[t]},U2=function(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]};function qi(e,t){var r="",n,a,i=[],s,o,c,f;switch(t){case"dbcs":if(f=this.l,je&&Buffer.isBuffer(this))r=this.slice(this.l,this.l+2*e).toString("utf16le");else for(c=0;c<e;++c)r+=String.fromCharCode(Bn(this,f)),f+=2;e*=2;break;case"utf8":r=Yi(this,this.l,this.l+e);break;case"utf16le":e*=2,r=Zl(this,this.l,this.l+e);break;case"wstr":return qi.call(this,e,"dbcs");case"lpstr-ansi":r=Dd(this,this.l),e=4+Ar(this,this.l);break;case"lpstr-cp":r=Od(this,this.l),e=4+Ar(this,this.l);break;case"lpwstr":r=Nd(this,this.l),e=4+2*Ar(this,this.l);break;case"lpp4":e=4+Ar(this,this.l),r=Pd(this,this.l),e&2&&(e+=2);break;case"8lpp4":e=4+Ar(this,this.l),r=Ld(this,this.l),e&3&&(e+=4-(e&3));break;case"cstr":for(e=0,r="";(s=Qa(this,this.l+e++))!==0;)i.push(ao(s));r=i.join("");break;case"_wstr":for(e=0,r="";(s=Bn(this,this.l+e))!==0;)i.push(ao(s)),e+=2;e+=2,r=i.join("");break;case"dbcs-cont":for(r="",f=this.l,c=0;c<e;++c){if(this.lens&&this.lens.indexOf(f)!==-1)return s=Qa(this,f),this.l=f+1,o=qi.call(this,e-c,s?"dbcs-cont":"sbcs-cont"),i.join("")+o;i.push(ao(Bn(this,f))),f+=2}r=i.join(""),e*=2;break;case"cpstr":case"sbcs-cont":for(r="",f=this.l,c=0;c!=e;++c){if(this.lens&&this.lens.indexOf(f)!==-1)return s=Qa(this,f),this.l=f+1,o=qi.call(this,e-c,s?"dbcs-cont":"sbcs-cont"),i.join("")+o;i.push(ao(Qa(this,f))),f+=1}r=i.join("");break;default:switch(e){case 1:return n=Qa(this,this.l),this.l++,n;case 2:return n=(t==="i"?V2:Bn)(this,this.l),this.l+=2,n;case 4:case-4:return t==="i"||!(this[this.l+3]&128)?(n=(e>0?xa:U2)(this,this.l),this.l+=4,n):(a=Ar(this,this.l),this.l+=4,a);case 8:case-8:if(t==="f")return e==8?a=po(this,this.l):a=po([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]],0),this.l+=8,a;e=8;case 16:r=Td(this,this.l,e);break}}return this.l+=e,r}var $2=function(e,t,r){e[r]=t&255,e[r+1]=t>>>8&255,e[r+2]=t>>>16&255,e[r+3]=t>>>24&255},W2=function(e,t,r){e[r]=t&255,e[r+1]=t>>8&255,e[r+2]=t>>16&255,e[r+3]=t>>24&255},H2=function(e,t,r){e[r]=t&255,e[r+1]=t>>>8&255};function j2(e,t,r){var n=0,a=0;if(r==="dbcs"){for(a=0;a!=t.length;++a)H2(this,t.charCodeAt(a),this.l+2*a);n=2*t.length}else if(r==="sbcs"){for(t=t.replace(/[^\x00-\x7F]/g,"_"),a=0;a!=t.length;++a)this[this.l+a]=t.charCodeAt(a)&255;n=t.length}else if(r==="hex"){for(;a<e;++a)this[this.l++]=parseInt(t.slice(2*a,2*a+2),16)||0;return this}else if(r==="utf16le"){var i=Math.min(this.l+e,this.length);for(a=0;a<Math.min(t.length,e);++a){var s=t.charCodeAt(a);this[this.l++]=s&255,this[this.l++]=s>>8}for(;this.l<i;)this[this.l++]=0;return this}else switch(e){case 1:n=1,this[this.l]=t&255;break;case 2:n=2,this[this.l]=t&255,t>>>=8,this[this.l+1]=t&255;break;case 3:n=3,this[this.l]=t&255,t>>>=8,this[this.l+1]=t&255,t>>>=8,this[this.l+2]=t&255;break;case 4:n=4,$2(this,t,this.l);break;case 8:if(n=8,r==="f"){L2(this,t,this.l);break}case 16:break;case-4:n=4,W2(this,t,this.l);break}return this.l+=n,this}function Ud(e,t){var r=Td(this,this.l,e.length>>1);if(r!==e)throw new Error(t+"Expected "+e+" saw "+r);this.l+=e.length>>1}function Gt(e,t){e.l=t,e.read_shift=qi,e.chk=Ud,e.write_shift=j2}function Jt(e,t){e.l+=t}function ie(e){var t=Yn(e);return Gt(t,0),t}function Nn(e,t,r){if(e){var n,a,i;Gt(e,e.l||0);for(var s=e.length,o=0,c=0;e.l<s;){o=e.read_shift(1),o&128&&(o=(o&127)+((e.read_shift(1)&127)<<7));var f=ps[o]||ps[65535];for(n=e.read_shift(1),i=n&127,a=1;a<4&&n&128;++a)i+=((n=e.read_shift(1))&127)<<7*a;c=e.l+i;var u=f.f&&f.f(e,i,r);if(e.l=c,t(u,f,o))return}}}function gr(){var e=[],t=je?256:2048,r=function(f){var u=ie(f);return Gt(u,0),u},n=r(t),a=function(){n&&(n.length>n.l&&(n=n.slice(0,n.l),n.l=n.length),n.length>0&&e.push(n),n=null)},i=function(f){return n&&f<n.length-n.l?n:(a(),n=r(Math.max(f+1,t)))},s=function(){return a(),Lt(e)},o=function(f){a(),n=f,n.l==null&&(n.l=n.length),i(t)};return{next:i,push:o,end:s,_bufs:e}}function ce(e,t,r,n){var a=+t,i;if(!isNaN(a)){n||(n=ps[a].p||(r||[]).length||0),i=1+(a>=128?1:0)+1,n>=128&&++i,n>=16384&&++i,n>=2097152&&++i;var s=e.next(i);a<=127?s.write_shift(1,a):(s.write_shift(1,(a&127)+128),s.write_shift(1,a>>7));for(var o=0;o!=4;++o)if(n>=128)s.write_shift(1,(n&127)+128),n>>=7;else{s.write_shift(1,n);break}n>0&&Ql(r)&&e.push(r)}}function Ji(e,t,r){var n=lt(e);if(t.s?(n.cRel&&(n.c+=t.s.c),n.rRel&&(n.r+=t.s.r)):(n.cRel&&(n.c+=t.c),n.rRel&&(n.r+=t.r)),!r||r.biff<12){for(;n.c>=256;)n.c-=256;for(;n.r>=65536;)n.r-=65536}return n}function $d(e,t,r){var n=lt(e);return n.s=Ji(n.s,t.s,r),n.e=Ji(n.e,t.s,r),n}function Zi(e,t){if(e.cRel&&e.c<0)for(e=lt(e);e.c<0;)e.c+=t>8?16384:256;if(e.rRel&&e.r<0)for(e=lt(e);e.r<0;)e.r+=t>8?1048576:t>5?65536:16384;var r=Ne(e);return!e.cRel&&e.cRel!=null&&(r=X2(r)),!e.rRel&&e.rRel!=null&&(r=z2(r)),r}function ec(e,t){return e.s.r==0&&!e.s.rRel&&e.e.r==(t.biff>=12?1048575:t.biff>=8?65536:16384)&&!e.e.rRel?(e.s.cRel?"":"$")+mt(e.s.c)+":"+(e.e.cRel?"":"$")+mt(e.e.c):e.s.c==0&&!e.s.cRel&&e.e.c==(t.biff>=12?16383:255)&&!e.e.cRel?(e.s.rRel?"":"$")+Et(e.s.r)+":"+(e.e.rRel?"":"$")+Et(e.e.r):Zi(e.s,t.biff)+":"+Zi(e.e,t.biff)}function tc(e){return parseInt(G2(e),10)-1}function Et(e){return""+(e+1)}function z2(e){return e.replace(/([A-Z]|^)(\d+)$/,"$1$$$2")}function G2(e){return e.replace(/\$(\d+)$/,"$1")}function rc(e){for(var t=K2(e),r=0,n=0;n!==t.length;++n)r=26*r+t.charCodeAt(n)-64;return r-1}function mt(e){if(e<0)throw new Error("invalid column "+e);var t="";for(++e;e;e=Math.floor((e-1)/26))t=String.fromCharCode((e-1)%26+65)+t;return t}function X2(e){return e.replace(/^([A-Z])/,"$$$1")}function K2(e){return e.replace(/^\$([A-Z])/,"$1")}function Y2(e){return e.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(",")}function pt(e){for(var t=0,r=0,n=0;n<e.length;++n){var a=e.charCodeAt(n);a>=48&&a<=57?t=10*t+(a-48):a>=65&&a<=90&&(r=26*r+(a-64))}return{c:r-1,r:t-1}}function Ne(e){for(var t=e.c+1,r="";t;t=(t-1)/26|0)r=String.fromCharCode((t-1)%26+65)+r;return r+(e.r+1)}function xr(e){var t=e.indexOf(":");return t==-1?{s:pt(e),e:pt(e)}:{s:pt(e.slice(0,t)),e:pt(e.slice(t+1))}}function We(e,t){return typeof t>"u"||typeof t=="number"?We(e.s,e.e):(typeof e!="string"&&(e=Ne(e)),typeof t!="string"&&(t=Ne(t)),e==t?e:e+":"+t)}function Ye(e){var t={s:{c:0,r:0},e:{c:0,r:0}},r=0,n=0,a=0,i=e.length;for(r=0;n<i&&!((a=e.charCodeAt(n)-64)<1||a>26);++n)r=26*r+a;for(t.s.c=--r,r=0;n<i&&!((a=e.charCodeAt(n)-48)<0||a>9);++n)r=10*r+a;if(t.s.r=--r,n===i||a!=10)return t.e.c=t.s.c,t.e.r=t.s.r,t;for(++n,r=0;n!=i&&!((a=e.charCodeAt(n)-64)<1||a>26);++n)r=26*r+a;for(t.e.c=--r,r=0;n!=i&&!((a=e.charCodeAt(n)-48)<0||a>9);++n)r=10*r+a;return t.e.r=--r,t}function Wd(e,t){var r=e.t=="d"&&t instanceof Date;if(e.z!=null)try{return e.w=Cr(e.z,r?Bt(t):t)}catch{}try{return e.w=Cr((e.XF||{}).numFmtId||(r?14:0),r?Bt(t):t)}catch{return""+t}}function In(e,t,r){return e==null||e.t==null||e.t=="z"?"":e.w!==void 0?e.w:(e.t=="d"&&!e.z&&r&&r.dateNF&&(e.z=r.dateNF),e.t=="e"?Pn[e.v]||e.v:t==null?Wd(e,e.v):Wd(e,t))}function Qn(e,t){var r=t&&t.sheet?t.sheet:"Sheet1",n={};return n[r]=e,{SheetNames:[r],Sheets:n}}function Hd(e,t,r){var n=r||{},a=e?Array.isArray(e):n.dense,i=e||(a?[]:{}),s=0,o=0;if(i&&n.origin!=null){if(typeof n.origin=="number")s=n.origin;else{var c=typeof n.origin=="string"?pt(n.origin):n.origin;s=c.r,o=c.c}i["!ref"]||(i["!ref"]="A1:A1")}var f={s:{c:1e7,r:1e7},e:{c:0,r:0}};if(i["!ref"]){var u=Ye(i["!ref"]);f.s.c=u.s.c,f.s.r=u.s.r,f.e.c=Math.max(f.e.c,u.e.c),f.e.r=Math.max(f.e.r,u.e.r),s==-1&&(f.e.r=s=u.e.r+1)}for(var d=0;d!=t.length;++d)if(t[d]){if(!Array.isArray(t[d]))throw new Error("aoa_to_sheet expects an array of arrays");for(var h=0;h!=t[d].length;++h)if(!(typeof t[d][h]>"u")){var m={v:t[d][h]},g=s+d,p=o+h;if(f.s.r>g&&(f.s.r=g),f.s.c>p&&(f.s.c=p),f.e.r<g&&(f.e.r=g),f.e.c<p&&(f.e.c=p),t[d][h]&&typeof t[d][h]=="object"&&!Array.isArray(t[d][h])&&!(t[d][h]instanceof Date))m=t[d][h];else if(Array.isArray(m.v)&&(m.f=t[d][h][1],m.v=m.v[0]),m.v===null)if(m.f)m.t="n";else if(n.nullError)m.t="e",m.v=0;else if(n.sheetStubs)m.t="z";else continue;else typeof m.v=="number"?m.t="n":typeof m.v=="boolean"?m.t="b":m.v instanceof Date?(m.z=n.dateNF||Re[14],n.cellDates?(m.t="d",m.w=Cr(m.z,Bt(m.v))):(m.t="n",m.v=Bt(m.v),m.w=Cr(m.z,m.v))):m.t="s";if(a)i[g]||(i[g]=[]),i[g][p]&&i[g][p].z&&(m.z=i[g][p].z),i[g][p]=m;else{var x=Ne({c:p,r:g});i[x]&&i[x].z&&(m.z=i[x].z),i[x]=m}}}return f.s.c<1e7&&(i["!ref"]=We(f)),i}function ei(e,t){return Hd(null,e,t)}function q2(e){return e.read_shift(4,"i")}function Jr(e,t){return t||(t=ie(4)),t.write_shift(4,e),t}function Zt(e){var t=e.read_shift(4);return t===0?"":e.read_shift(t,"dbcs")}function Vt(e,t){var r=!1;return t==null&&(r=!0,t=ie(4+2*e.length)),t.write_shift(4,e.length),e.length>0&&t.write_shift(0,e,"dbcs"),r?t.slice(0,t.l):t}function J2(e){return{ich:e.read_shift(2),ifnt:e.read_shift(2)}}function Z2(e,t){return t||(t=ie(4)),t.write_shift(2,e.ich||0),t.write_shift(2,e.ifnt||0),t}function nc(e,t){var r=e.l,n=e.read_shift(1),a=Zt(e),i=[],s={t:a,h:a};if(n&1){for(var o=e.read_shift(4),c=0;c!=o;++c)i.push(J2(e));s.r=i}else s.r=[{ich:0,ifnt:0}];return e.l=r+t,s}function Q2(e,t){var r=!1;return t==null&&(r=!0,t=ie(15+4*e.t.length)),t.write_shift(1,0),Vt(e.t,t),r?t.slice(0,t.l):t}var ey=nc;function ty(e,t){var r=!1;return t==null&&(r=!0,t=ie(23+4*e.t.length)),t.write_shift(1,1),Vt(e.t,t),t.write_shift(4,1),Z2({ich:0,ifnt:0},t),r?t.slice(0,t.l):t}function Lr(e){var t=e.read_shift(4),r=e.read_shift(2);return r+=e.read_shift(1)<<16,e.l++,{c:t,iStyleRef:r}}function va(e,t){return t==null&&(t=ie(8)),t.write_shift(-4,e.c),t.write_shift(3,e.iStyleRef||e.s),t.write_shift(1,0),t}function wa(e){var t=e.read_shift(2);return t+=e.read_shift(1)<<16,e.l++,{c:-1,iStyleRef:t}}function _a(e,t){return t==null&&(t=ie(4)),t.write_shift(3,e.iStyleRef||e.s),t.write_shift(1,0),t}var ry=Zt,jd=Vt;function ac(e){var t=e.read_shift(4);return t===0||t===4294967295?"":e.read_shift(t,"dbcs")}function go(e,t){var r=!1;return t==null&&(r=!0,t=ie(127)),t.write_shift(4,e.length>0?e.length:4294967295),e.length>0&&t.write_shift(0,e,"dbcs"),r?t.slice(0,t.l):t}var ny=Zt,ic=ac,sc=go;function oc(e){var t=e.slice(e.l,e.l+4),r=t[0]&1,n=t[0]&2;e.l+=4;var a=n===0?po([0,0,0,0,t[0]&252,t[1],t[2],t[3]],0):xa(t,0)>>2;return r?a/100:a}function zd(e,t){t==null&&(t=ie(4));var r=0,n=0,a=e*100;if(e==(e|0)&&e>=-(1<<29)&&e<1<<29?n=1:a==(a|0)&&a>=-(1<<29)&&a<1<<29&&(n=1,r=1),n)t.write_shift(-4,((r?a:e)<<2)+(r+2));else throw new Error("unsupported RkNumber "+e)}function Gd(e){var t={s:{},e:{}};return t.s.r=e.read_shift(4),t.e.r=e.read_shift(4),t.s.c=e.read_shift(4),t.e.c=e.read_shift(4),t}function ay(e,t){return t||(t=ie(16)),t.write_shift(4,e.s.r),t.write_shift(4,e.e.r),t.write_shift(4,e.s.c),t.write_shift(4,e.e.c),t}var ya=Gd,ti=ay;function Qt(e){if(e.length-e.l<8)throw"XLS Xnum Buffer underflow";return e.read_shift(8,"f")}function ka(e,t){return(t||ie(8)).write_shift(8,e,"f")}function iy(e){var t={},r=e.read_shift(1),n=r>>>1,a=e.read_shift(1),i=e.read_shift(2,"i"),s=e.read_shift(1),o=e.read_shift(1),c=e.read_shift(1);switch(e.l++,n){case 0:t.auto=1;break;case 1:t.index=a;var f=ba[a];f&&(t.rgb=ns(f));break;case 2:t.rgb=ns([s,o,c]);break;case 3:t.theme=a;break}return i!=0&&(t.tint=i>0?i/32767:i/32768),t}function xo(e,t){if(t||(t=ie(8)),!e||e.auto)return t.write_shift(4,0),t.write_shift(4,0),t;e.index!=null?(t.write_shift(1,2),t.write_shift(1,e.index)):e.theme!=null?(t.write_shift(1,6),t.write_shift(1,e.theme)):(t.write_shift(1,5),t.write_shift(1,0));var r=e.tint||0;if(r>0?r*=32767:r<0&&(r*=32768),t.write_shift(2,r),!e.rgb||e.theme!=null)t.write_shift(2,0),t.write_shift(1,0),t.write_shift(1,0);else{var n=e.rgb||"FFFFFF";typeof n=="number"&&(n=("000000"+n.toString(16)).slice(-6)),t.write_shift(1,parseInt(n.slice(0,2),16)),t.write_shift(1,parseInt(n.slice(2,4),16)),t.write_shift(1,parseInt(n.slice(4,6),16)),t.write_shift(1,255)}return t}function sy(e){var t=e.read_shift(1);e.l++;var r={fBold:t&1,fItalic:t&2,fUnderline:t&4,fStrikeout:t&8,fOutline:t&16,fShadow:t&32,fCondense:t&64,fExtend:t&128};return r}function oy(e,t){t||(t=ie(2));var r=(e.italic?2:0)|(e.strike?8:0)|(e.outline?16:0)|(e.shadow?32:0)|(e.condense?64:0)|(e.extend?128:0);return t.write_shift(1,r),t.write_shift(1,0),t}function Xd(e,t){var r={2:"BITMAP",3:"METAFILEPICT",8:"DIB",14:"ENHMETAFILE"},n=e.read_shift(4);switch(n){case 0:return"";case 4294967295:case 4294967294:return r[e.read_shift(4)]||""}if(n>400)throw new Error("Unsupported Clipboard: "+n.toString(16));return e.l-=4,e.read_shift(0,t==1?"lpstr":"lpwstr")}function ly(e){return Xd(e,1)}function cy(e){return Xd(e,2)}var lc=2,vr=3,vo=11,Kd=12,wo=19,_o=64,fy=65,uy=71,dy=4108,hy=4126,Ut=80,Yd=81,my=[Ut,Yd],cc={1:{n:"CodePage",t:lc},2:{n:"Category",t:Ut},3:{n:"PresentationFormat",t:Ut},4:{n:"ByteCount",t:vr},5:{n:"LineCount",t:vr},6:{n:"ParagraphCount",t:vr},7:{n:"SlideCount",t:vr},8:{n:"NoteCount",t:vr},9:{n:"HiddenCount",t:vr},10:{n:"MultimediaClipCount",t:vr},11:{n:"ScaleCrop",t:vo},12:{n:"HeadingPairs",t:dy},13:{n:"TitlesOfParts",t:hy},14:{n:"Manager",t:Ut},15:{n:"Company",t:Ut},16:{n:"LinksUpToDate",t:vo},17:{n:"CharacterCount",t:vr},19:{n:"SharedDoc",t:vo},22:{n:"HyperlinksChanged",t:vo},23:{n:"AppVersion",t:vr,p:"version"},24:{n:"DigSig",t:fy},26:{n:"ContentType",t:Ut},27:{n:"ContentStatus",t:Ut},28:{n:"Language",t:Ut},29:{n:"Version",t:Ut},255:{},2147483648:{n:"Locale",t:wo},2147483651:{n:"Behavior",t:wo},1919054434:{}},fc={1:{n:"CodePage",t:lc},2:{n:"Title",t:Ut},3:{n:"Subject",t:Ut},4:{n:"Author",t:Ut},5:{n:"Keywords",t:Ut},6:{n:"Comments",t:Ut},7:{n:"Template",t:Ut},8:{n:"LastAuthor",t:Ut},9:{n:"RevNumber",t:Ut},10:{n:"EditTime",t:_o},11:{n:"LastPrinted",t:_o},12:{n:"CreatedDate",t:_o},13:{n:"ModifiedDate",t:_o},14:{n:"PageCount",t:vr},15:{n:"WordCount",t:vr},16:{n:"CharCount",t:vr},17:{n:"Thumbnail",t:uy},18:{n:"Application",t:Ut},19:{n:"DocSecurity",t:vr},255:{},2147483648:{n:"Locale",t:wo},2147483651:{n:"Behavior",t:wo},1919054434:{}},qd={1:"US",2:"CA",3:"",7:"RU",20:"EG",30:"GR",31:"NL",32:"BE",33:"FR",34:"ES",36:"HU",39:"IT",41:"CH",43:"AT",44:"GB",45:"DK",46:"SE",47:"NO",48:"PL",49:"DE",52:"MX",55:"BR",61:"AU",64:"NZ",66:"TH",81:"JP",82:"KR",84:"VN",86:"CN",90:"TR",105:"JS",213:"DZ",216:"MA",218:"LY",351:"PT",354:"IS",358:"FI",420:"CZ",886:"TW",961:"LB",962:"JO",963:"SY",964:"IQ",965:"KW",966:"SA",971:"AE",972:"IL",974:"QA",981:"IR",65535:"US"},py=[null,"solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"];function gy(e){return e.map(function(t){return[t>>16&255,t>>8&255,t&255]})}var xy=gy([0,16777215,16711680,65280,255,16776960,16711935,65535,0,16777215,16711680,65280,255,16776960,16711935,65535,8388608,32768,128,8421376,8388736,32896,12632256,8421504,10066431,10040166,16777164,13434879,6684774,16744576,26316,13421823,128,16711935,16776960,65535,8388736,8388608,32896,255,52479,13434879,13434828,16777113,10079487,16751052,13408767,16764057,3368703,3394764,10079232,16763904,16750848,16737792,6710937,9868950,13158,3381606,13056,3355392,10040064,10040166,3355545,3355443,16777215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),ba=lt(xy),Pn={0:"#NULL!",7:"#DIV/0!",15:"#VALUE!",23:"#REF!",29:"#NAME?",36:"#NUM!",42:"#N/A",43:"#GETTING_DATA",255:"#WTF?"},Jd={"#NULL!":0,"#DIV/0!":7,"#VALUE!":15,"#REF!":23,"#NAME?":29,"#NUM!":36,"#N/A":42,"#GETTING_DATA":43,"#WTF?":255},uc={"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":"workbooks","application/vnd.ms-excel.sheet.macroEnabled.main+xml":"workbooks","application/vnd.ms-excel.sheet.binary.macroEnabled.main":"workbooks","application/vnd.ms-excel.addin.macroEnabled.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":"workbooks","application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":"sheets","application/vnd.ms-excel.worksheet":"sheets","application/vnd.ms-excel.binIndexWs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":"charts","application/vnd.ms-excel.chartsheet":"charts","application/vnd.ms-excel.macrosheet+xml":"macros","application/vnd.ms-excel.macrosheet":"macros","application/vnd.ms-excel.intlmacrosheet":"TODO","application/vnd.ms-excel.binIndexMs":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":"dialogs","application/vnd.ms-excel.dialogsheet":"dialogs","application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml":"strs","application/vnd.ms-excel.sharedStrings":"strs","application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":"styles","application/vnd.ms-excel.styles":"styles","application/vnd.openxmlformats-package.core-properties+xml":"coreprops","application/vnd.openxmlformats-officedocument.custom-properties+xml":"custprops","application/vnd.openxmlformats-officedocument.extended-properties+xml":"extprops","application/vnd.openxmlformats-officedocument.customXmlProperties+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":"comments","application/vnd.ms-excel.comments":"comments","application/vnd.ms-excel.threadedcomments+xml":"threadedcomments","application/vnd.ms-excel.person+xml":"people","application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml":"metadata","application/vnd.ms-excel.sheetMetadata":"metadata","application/vnd.ms-excel.pivotTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.chart+xml":"TODO","application/vnd.ms-office.chartcolorstyle+xml":"TODO","application/vnd.ms-office.chartstyle+xml":"TODO","application/vnd.ms-office.chartex+xml":"TODO","application/vnd.ms-excel.calcChain":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml":"calcchains","application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings":"TODO","application/vnd.ms-office.activeX":"TODO","application/vnd.ms-office.activeX+xml":"TODO","application/vnd.ms-excel.attachedToolbars":"TODO","application/vnd.ms-excel.connections":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":"TODO","application/vnd.ms-excel.externalLink":"links","application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml":"links","application/vnd.ms-excel.pivotCacheDefinition":"TODO","application/vnd.ms-excel.pivotCacheRecords":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml":"TODO","application/vnd.ms-excel.queryTable":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml":"TODO","application/vnd.ms-excel.userNames":"TODO","application/vnd.ms-excel.revisionHeaders":"TODO","application/vnd.ms-excel.revisionLog":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml":"TODO","application/vnd.ms-excel.tableSingleCells":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml":"TODO","application/vnd.ms-excel.slicer":"TODO","application/vnd.ms-excel.slicerCache":"TODO","application/vnd.ms-excel.slicer+xml":"TODO","application/vnd.ms-excel.slicerCache+xml":"TODO","application/vnd.ms-excel.wsSortMap":"TODO","application/vnd.ms-excel.table":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":"TODO","application/vnd.openxmlformats-officedocument.theme+xml":"themes","application/vnd.openxmlformats-officedocument.themeOverride+xml":"TODO","application/vnd.ms-excel.Timeline+xml":"TODO","application/vnd.ms-excel.TimelineCache+xml":"TODO","application/vnd.ms-office.vbaProject":"vba","application/vnd.ms-office.vbaProjectSignature":"TODO","application/vnd.ms-office.volatileDependencies":"TODO","application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml":"TODO","application/vnd.ms-excel.controlproperties+xml":"TODO","application/vnd.openxmlformats-officedocument.model+data":"TODO","application/vnd.ms-excel.Survey+xml":"TODO","application/vnd.openxmlformats-officedocument.drawing+xml":"drawings","application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml":"TODO","application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml":"TODO","application/vnd.openxmlformats-officedocument.vmlDrawing":"TODO","application/vnd.openxmlformats-package.relationships+xml":"rels","application/vnd.openxmlformats-officedocument.oleObject":"TODO","image/png":"TODO",sheet:"js"},yo={workbooks:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml",xlsm:"application/vnd.ms-excel.sheet.macroEnabled.main+xml",xlsb:"application/vnd.ms-excel.sheet.binary.macroEnabled.main",xlam:"application/vnd.ms-excel.addin.macroEnabled.main+xml",xltx:"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml"},strs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml",xlsb:"application/vnd.ms-excel.sharedStrings"},comments:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml",xlsb:"application/vnd.ms-excel.comments"},sheets:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml",xlsb:"application/vnd.ms-excel.worksheet"},charts:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml",xlsb:"application/vnd.ms-excel.chartsheet"},dialogs:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml",xlsb:"application/vnd.ms-excel.dialogsheet"},macros:{xlsx:"application/vnd.ms-excel.macrosheet+xml",xlsb:"application/vnd.ms-excel.macrosheet"},metadata:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml",xlsb:"application/vnd.ms-excel.sheetMetadata"},styles:{xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml",xlsb:"application/vnd.ms-excel.styles"}};function dc(){return{workbooks:[],sheets:[],charts:[],dialogs:[],macros:[],rels:[],strs:[],comments:[],threadedcomments:[],links:[],coreprops:[],extprops:[],custprops:[],themes:[],styles:[],calcchains:[],vba:[],drawings:[],metadata:[],people:[],TODO:[],xmlns:""}}function vy(e){var t=dc();if(!e||!e.match)return t;var r={};if((e.match(qt)||[]).forEach(function(n){var a=Me(n);switch(a[0].replace(F2,"<")){case"<?xml":break;case"<Types":t.xmlns=a["xmlns"+(a[0].match(/<(\w+):/)||["",""])[1]];break;case"<Default":r[a.Extension]=a.ContentType;break;case"<Override":t[uc[a.ContentType]]!==void 0&&t[uc[a.ContentType]].push(a.PartName);break}}),t.xmlns!==Nt.CT)throw new Error("Unknown Namespace: "+t.xmlns);return t.calcchain=t.calcchains.length>0?t.calcchains[0]:"",t.sst=t.strs.length>0?t.strs[0]:"",t.style=t.styles.length>0?t.styles[0]:"",t.defaults=r,delete t.calcchains,t}function Zd(e,t){var r=w2(uc),n=[],a;n[n.length]=bt,n[n.length]=ge("Types",null,{xmlns:Nt.CT,"xmlns:xsd":Nt.xsd,"xmlns:xsi":Nt.xsi}),n=n.concat([["xml","application/xml"],["bin","application/vnd.ms-excel.sheet.binary.macroEnabled.main"],["vml","application/vnd.openxmlformats-officedocument.vmlDrawing"],["data","application/vnd.openxmlformats-officedocument.model+data"],["bmp","image/bmp"],["png","image/png"],["gif","image/gif"],["emf","image/x-emf"],["wmf","image/x-wmf"],["jpg","image/jpeg"],["jpeg","image/jpeg"],["tif","image/tiff"],["tiff","image/tiff"],["pdf","application/pdf"],["rels","application/vnd.openxmlformats-package.relationships+xml"]].map(function(c){return ge("Default",null,{Extension:c[0],ContentType:c[1]})}));var i=function(c){e[c]&&e[c].length>0&&(a=e[c][0],n[n.length]=ge("Override",null,{PartName:(a[0]=="/"?"":"/")+a,ContentType:yo[c][t.bookType]||yo[c].xlsx}))},s=function(c){(e[c]||[]).forEach(function(f){n[n.length]=ge("Override",null,{PartName:(f[0]=="/"?"":"/")+f,ContentType:yo[c][t.bookType]||yo[c].xlsx})})},o=function(c){(e[c]||[]).forEach(function(f){n[n.length]=ge("Override",null,{PartName:(f[0]=="/"?"":"/")+f,ContentType:r[c][0]})})};return i("workbooks"),s("sheets"),s("charts"),o("themes"),["strs","styles"].forEach(i),["coreprops","extprops","custprops"].forEach(o),o("vba"),o("comments"),o("threadedcomments"),o("drawings"),s("metadata"),o("people"),n.length>2&&(n[n.length]="</Types>",n[1]=n[1].replace("/>",">")),n.join("")}var ze={WB:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument",SHEET:"http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument",HLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",VML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing",XPATH:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath",XMISS:"http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing",XLINK:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink",CXML:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml",CXMLP:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps",CMNT:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments",CORE_PROPS:"http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties",EXT_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties",CUST_PROPS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties",SST:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings",STY:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles",THEME:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme",CHART:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart",CHARTEX:"http://schemas.microsoft.com/office/2014/relationships/chartEx",CS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet",WS:["http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet","http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet"],DS:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet",MS:"http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet",IMG:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image",DRAW:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing",XLMETA:"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata",TCMNT:"http://schemas.microsoft.com/office/2017/10/relationships/threadedComment",PEOPLE:"http://schemas.microsoft.com/office/2017/10/relationships/person",VBA:"http://schemas.microsoft.com/office/2006/relationships/vbaProject"};function Qi(e){var t=e.lastIndexOf("/");return e.slice(0,t+1)+"_rels/"+e.slice(t+1)+".rels"}function es(e,t){var r={"!id":{}};if(!e)return r;t.charAt(0)!=="/"&&(t="/"+t);var n={};return(e.match(qt)||[]).forEach(function(a){var i=Me(a);if(i[0]==="<Relationship"){var s={};s.Type=i.Type,s.Target=i.Target,s.Id=i.Id,i.TargetMode&&(s.TargetMode=i.TargetMode);var o=i.TargetMode==="External"?i.Target:zi(i.Target,t);r[o]=s,n[i.Id]=s}}),r["!id"]=n,r}function ri(e){var t=[bt,ge("Relationships",null,{xmlns:Nt.RELS})];return _t(e["!id"]).forEach(function(r){t[t.length]=ge("Relationship",null,e["!id"][r])}),t.length>2&&(t[t.length]="</Relationships>",t[1]=t[1].replace("/>",">")),t.join("")}function et(e,t,r,n,a,i){if(a||(a={}),e["!id"]||(e["!id"]={}),e["!idx"]||(e["!idx"]=1),t<0)for(t=e["!idx"];e["!id"]["rId"+t];++t);if(e["!idx"]=t+1,a.Id="rId"+t,a.Type=n,a.Target=r,i?a.TargetMode=i:[ze.HLINK,ze.XPATH,ze.XMISS].indexOf(a.Type)>-1&&(a.TargetMode="External"),e["!id"][a.Id])throw new Error("Cannot rewrite rId "+t);return e["!id"][a.Id]=a,e[("/"+a.Target).replace("//","/")]=a,t}var wy="application/vnd.oasis.opendocument.spreadsheet";function _y(e,t){for(var r=Jl(e),n,a;n=Ki.exec(r);)switch(n[3]){case"manifest":break;case"file-entry":if(a=Me(n[0],!1),a.path=="/"&&a.type!==wy)throw new Error("This OpenDocument is not a spreadsheet");break;case"encryption-data":case"algorithm":case"start-key-generation":case"key-derivation":throw new Error("Unsupported ODS Encryption");default:if(t&&t.WTF)throw n}}function yy(e){var t=[bt];t.push(`<manifest:manifest xmlns:manifest="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" manifest:version="1.2">
|
||
`),t.push(` <manifest:file-entry manifest:full-path="/" manifest:version="1.2" manifest:media-type="application/vnd.oasis.opendocument.spreadsheet"/>
|
||
`);for(var r=0;r<e.length;++r)t.push(' <manifest:file-entry manifest:full-path="'+e[r][0]+'" manifest:media-type="'+e[r][1]+`"/>
|
||
`);return t.push("</manifest:manifest>"),t.join("")}function Qd(e,t,r){return[' <rdf:Description rdf:about="'+e+`">
|
||
`,' <rdf:type rdf:resource="http://docs.oasis-open.org/ns/office/1.2/meta/'+(r||"odf")+"#"+t+`"/>
|
||
`,` </rdf:Description>
|
||
`].join("")}function ky(e,t){return[' <rdf:Description rdf:about="'+e+`">
|
||
`,' <ns0:hasPart xmlns:ns0="http://docs.oasis-open.org/ns/office/1.2/meta/pkg#" rdf:resource="'+t+`"/>
|
||
`,` </rdf:Description>
|
||
`].join("")}function by(e){var t=[bt];t.push(`<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||
`);for(var r=0;r!=e.length;++r)t.push(Qd(e[r][0],e[r][1])),t.push(ky("",e[r][0]));return t.push(Qd("","Document","pkg")),t.push("</rdf:RDF>"),t.join("")}function eh(){return'<office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xlink="http://www.w3.org/1999/xlink" office:version="1.2"><office:meta><meta:generator>SheetJS '+no.version+"</meta:generator></office:meta></office:document-meta>"}var Vr=[["cp:category","Category"],["cp:contentStatus","ContentStatus"],["cp:keywords","Keywords"],["cp:lastModifiedBy","LastAuthor"],["cp:lastPrinted","LastPrinted"],["cp:revision","RevNumber"],["cp:version","Version"],["dc:creator","Author"],["dc:description","Comments"],["dc:identifier","Identifier"],["dc:language","Language"],["dc:subject","Subject"],["dc:title","Title"],["dcterms:created","CreatedDate","date"],["dcterms:modified","ModifiedDate","date"]],Ey=function(){for(var e=new Array(Vr.length),t=0;t<Vr.length;++t){var r=Vr[t],n="(?:"+r[0].slice(0,r[0].indexOf(":"))+":)"+r[0].slice(r[0].indexOf(":")+1);e[t]=new RegExp("<"+n+"[^>]*>([\\s\\S]*?)</"+n+">")}return e}();function th(e){var t={};e=nt(e);for(var r=0;r<Vr.length;++r){var n=Vr[r],a=e.match(Ey[r]);a!=null&&a.length>0&&(t[n[1]]=Ke(a[1])),n[2]==="date"&&t[n[1]]&&(t[n[1]]=ot(t[n[1]]))}return t}function hc(e,t,r,n,a){a[e]!=null||t==null||t===""||(a[e]=t,t=Qe(t),n[n.length]=r?ge(e,t,r):zt(e,t))}function rh(e,t){var r=t||{},n=[bt,ge("cp:coreProperties",null,{"xmlns:cp":Nt.CORE_PROPS,"xmlns:dc":Nt.dc,"xmlns:dcterms":Nt.dcterms,"xmlns:dcmitype":Nt.dcmitype,"xmlns:xsi":Nt.xsi})],a={};if(!e&&!r.Props)return n.join("");e&&(e.CreatedDate!=null&&hc("dcterms:created",typeof e.CreatedDate=="string"?e.CreatedDate:ql(e.CreatedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a),e.ModifiedDate!=null&&hc("dcterms:modified",typeof e.ModifiedDate=="string"?e.ModifiedDate:ql(e.ModifiedDate,r.WTF),{"xsi:type":"dcterms:W3CDTF"},n,a));for(var i=0;i!=Vr.length;++i){var s=Vr[i],o=r.Props&&r.Props[s[1]]!=null?r.Props[s[1]]:e?e[s[1]]:null;o===!0?o="1":o===!1?o="0":typeof o=="number"&&(o=String(o)),o!=null&&hc(s[0],o,null,n,a)}return n.length>2&&(n[n.length]="</cp:coreProperties>",n[1]=n[1].replace("/>",">")),n.join("")}var Ea=[["Application","Application","string"],["AppVersion","AppVersion","string"],["Company","Company","string"],["DocSecurity","DocSecurity","string"],["Manager","Manager","string"],["HyperlinksChanged","HyperlinksChanged","bool"],["SharedDoc","SharedDoc","bool"],["LinksUpToDate","LinksUpToDate","bool"],["ScaleCrop","ScaleCrop","bool"],["HeadingPairs","HeadingPairs","raw"],["TitlesOfParts","TitlesOfParts","raw"]],nh=["Worksheets","SheetNames","NamedRanges","DefinedNames","Chartsheets","ChartNames"];function ah(e,t,r,n){var a=[];if(typeof e=="string")a=yd(e,n);else for(var i=0;i<e.length;++i)a=a.concat(e[i].map(function(u){return{v:u}}));var s=typeof t=="string"?yd(t,n).map(function(u){return u.v}):t,o=0,c=0;if(s.length>0)for(var f=0;f!==a.length;f+=2){switch(c=+a[f+1].v,a[f].v){case"Worksheets":case"工作表":case"Листы":case"أوراق العمل":case"ワークシート":case"גליונות עבודה":case"Arbeitsblätter":case"Çalışma Sayfaları":case"Feuilles de calcul":case"Fogli di lavoro":case"Folhas de cálculo":case"Planilhas":case"Regneark":case"Hojas de cálculo":case"Werkbladen":r.Worksheets=c,r.SheetNames=s.slice(o,o+c);break;case"Named Ranges":case"Rangos con nombre":case"名前付き一覧":case"Benannte Bereiche":case"Navngivne områder":r.NamedRanges=c,r.DefinedNames=s.slice(o,o+c);break;case"Charts":case"Diagramme":r.Chartsheets=c,r.ChartNames=s.slice(o,o+c);break}o+=c}}function Sy(e,t,r){var n={};return t||(t={}),e=nt(e),Ea.forEach(function(a){var i=(e.match(Gi(a[0]))||[])[1];switch(a[2]){case"string":i&&(t[a[1]]=Ke(i));break;case"bool":t[a[1]]=i==="true";break;case"raw":var s=e.match(new RegExp("<"+a[0]+"[^>]*>([\\s\\S]*?)</"+a[0]+">"));s&&s.length>0&&(n[a[1]]=s[1]);break}}),n.HeadingPairs&&n.TitlesOfParts&&ah(n.HeadingPairs,n.TitlesOfParts,t,r),t}function ih(e){var t=[],r=ge;return e||(e={}),e.Application="SheetJS",t[t.length]=bt,t[t.length]=ge("Properties",null,{xmlns:Nt.EXT_PROPS,"xmlns:vt":Nt.vt}),Ea.forEach(function(n){if(e[n[1]]!==void 0){var a;switch(n[2]){case"string":a=Qe(String(e[n[1]]));break;case"bool":a=e[n[1]]?"true":"false";break}a!==void 0&&(t[t.length]=r(n[0],a))}}),t[t.length]=r("HeadingPairs",r("vt:vector",r("vt:variant","<vt:lpstr>Worksheets</vt:lpstr>")+r("vt:variant",r("vt:i4",String(e.Worksheets))),{size:2,baseType:"variant"})),t[t.length]=r("TitlesOfParts",r("vt:vector",e.SheetNames.map(function(n){return"<vt:lpstr>"+Qe(n)+"</vt:lpstr>"}).join(""),{size:e.Worksheets,baseType:"lpstr"})),t.length>2&&(t[t.length]="</Properties>",t[1]=t[1].replace("/>",">")),t.join("")}var Cy=/<[^>]+>[^<]*/g;function Ty(e,t){var r={},n="",a=e.match(Cy);if(a)for(var i=0;i!=a.length;++i){var s=a[i],o=Me(s);switch(o[0]){case"<?xml":break;case"<Properties":break;case"<property":n=Ke(o.name);break;case"</property>":n=null;break;default:if(s.indexOf("<vt:")===0){var c=s.split(">"),f=c[0].slice(4),u=c[1];switch(f){case"lpstr":case"bstr":case"lpwstr":r[n]=Ke(u);break;case"bool":r[n]=ct(u);break;case"i1":case"i2":case"i4":case"i8":case"int":case"uint":r[n]=parseInt(u,10);break;case"r4":case"r8":case"decimal":r[n]=parseFloat(u);break;case"filetime":case"date":r[n]=ot(u);break;case"cy":case"error":r[n]=Ke(u);break;default:if(f.slice(-1)=="/")break;t.WTF&&typeof console<"u"&&console.warn("Unexpected",s,f,c)}}else if(s.slice(0,2)!=="</"){if(t.WTF)throw new Error(s)}}}return r}function sh(e){var t=[bt,ge("Properties",null,{xmlns:Nt.CUST_PROPS,"xmlns:vt":Nt.vt})];if(!e)return t.join("");var r=1;return _t(e).forEach(function(a){++r,t[t.length]=ge("property",P2(e[a],!0),{fmtid:"{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",pid:r,name:Qe(a)})}),t.length>2&&(t[t.length]="</Properties>",t[1]=t[1].replace("/>",">")),t.join("")}var mc={Title:"Title",Subject:"Subject",Author:"Author",Keywords:"Keywords",Comments:"Description",LastAuthor:"LastAuthor",RevNumber:"Revision",Application:"AppName",LastPrinted:"LastPrinted",CreatedDate:"Created",ModifiedDate:"LastSaved",Category:"Category",Manager:"Manager",Company:"Company",AppVersion:"Version",ContentStatus:"ContentStatus",Identifier:"Identifier",Language:"Language"},pc;function Fy(e,t,r){pc||(pc=co(mc)),t=pc[t]||t,e[t]=r}function Ay(e,t){var r=[];return _t(mc).map(function(n){for(var a=0;a<Vr.length;++a)if(Vr[a][1]==n)return Vr[a];for(a=0;a<Ea.length;++a)if(Ea[a][1]==n)return Ea[a];throw n}).forEach(function(n){if(e[n[1]]!=null){var a=t&&t.Props&&t.Props[n[1]]!=null?t.Props[n[1]]:e[n[1]];switch(n[2]){case"date":a=new Date(a).toISOString().replace(/\.\d*Z/,"Z");break}typeof a=="number"?a=String(a):a===!0||a===!1?a=a?"1":"0":a instanceof Date&&(a=new Date(a).toISOString().replace(/\.\d*Z/,"")),r.push(zt(mc[n[1]]||n[1],a))}}),ge("DocumentProperties",r.join(""),{xmlns:Fr.o})}function Dy(e,t){var r=["Worksheets","SheetNames"],n="CustomDocumentProperties",a=[];return e&&_t(e).forEach(function(i){if(Object.prototype.hasOwnProperty.call(e,i)){for(var s=0;s<Vr.length;++s)if(i==Vr[s][1])return;for(s=0;s<Ea.length;++s)if(i==Ea[s][1])return;for(s=0;s<r.length;++s)if(i==r[s])return;var o=e[i],c="string";typeof o=="number"?(c="float",o=String(o)):o===!0||o===!1?(c="boolean",o=o?"1":"0"):o=String(o),a.push(ge(pd(i),o,{"dt:dt":c}))}}),t&&_t(t).forEach(function(i){if(Object.prototype.hasOwnProperty.call(t,i)&&!(e&&Object.prototype.hasOwnProperty.call(e,i))){var s=t[i],o="string";typeof s=="number"?(o="float",s=String(s)):s===!0||s===!1?(o="boolean",s=s?"1":"0"):s instanceof Date?(o="dateTime.tz",s=s.toISOString()):s=String(s),a.push(ge(pd(i),s,{"dt:dt":o}))}}),"<"+n+' xmlns="'+Fr.o+'">'+a.join("")+"</"+n+">"}function gc(e){var t=e.read_shift(4),r=e.read_shift(4);return new Date((r/1e7*Math.pow(2,32)+t/1e7-11644473600)*1e3).toISOString().replace(/\.000/,"")}function Ry(e){var t=typeof e=="string"?new Date(Date.parse(e)):e,r=t.getTime()/1e3+11644473600,n=r%Math.pow(2,32),a=(r-n)/Math.pow(2,32);n*=1e7,a*=1e7;var i=n/Math.pow(2,32)|0;i>0&&(n=n%Math.pow(2,32),a+=i);var s=ie(8);return s.write_shift(4,n),s.write_shift(4,a),s}function oh(e,t,r){var n=e.l,a=e.read_shift(0,"lpstr-cp");if(r)for(;e.l-n&3;)++e.l;return a}function lh(e,t,r){var n=e.read_shift(0,"lpwstr");return r&&(e.l+=4-(n.length+1&3)&3),n}function ch(e,t,r){return t===31?lh(e):oh(e,t,r)}function xc(e,t,r){return ch(e,t,r===!1?0:4)}function Oy(e,t){if(!t)throw new Error("VtUnalignedString must have positive length");return ch(e,t,0)}function By(e){for(var t=e.read_shift(4),r=[],n=0;n!=t;++n){var a=e.l;r[n]=e.read_shift(0,"lpwstr").replace(or,""),e.l-a&2&&(e.l+=2)}return r}function Ny(e){for(var t=e.read_shift(4),r=[],n=0;n!=t;++n)r[n]=e.read_shift(0,"lpstr-cp").replace(or,"");return r}function Iy(e){var t=e.l,r=ko(e,Yd);e[e.l]==0&&e[e.l+1]==0&&e.l-t&2&&(e.l+=2);var n=ko(e,vr);return[r,n]}function Py(e){for(var t=e.read_shift(4),r=[],n=0;n<t/2;++n)r.push(Iy(e));return r}function fh(e,t){for(var r=e.read_shift(4),n={},a=0;a!=r;++a){var i=e.read_shift(4),s=e.read_shift(4);n[i]=e.read_shift(s,t===1200?"utf16le":"utf8").replace(or,"").replace($i,"!"),t===1200&&s%2&&(e.l+=2)}return e.l&3&&(e.l=e.l>>2+1<<2),n}function uh(e){var t=e.read_shift(4),r=e.slice(e.l,e.l+t);return e.l+=t,(t&3)>0&&(e.l+=4-(t&3)&3),r}function My(e){var t={};return t.Size=e.read_shift(4),e.l+=t.Size+3-(t.Size-1)%4,t}function ko(e,t,r){var n=e.read_shift(2),a,i=r||{};if(e.l+=2,t!==Kd&&n!==t&&my.indexOf(t)===-1&&!((t&65534)==4126&&(n&65534)==4126))throw new Error("Expected type "+t+" saw "+n);switch(t===Kd?n:t){case 2:return a=e.read_shift(2,"i"),i.raw||(e.l+=2),a;case 3:return a=e.read_shift(4,"i"),a;case 11:return e.read_shift(4)!==0;case 19:return a=e.read_shift(4),a;case 30:return oh(e,n,4).replace(or,"");case 31:return lh(e);case 64:return gc(e);case 65:return uh(e);case 71:return My(e);case 80:return xc(e,n,!i.raw).replace(or,"");case 81:return Oy(e,n).replace(or,"");case 4108:return Py(e);case 4126:case 4127:return n==4127?By(e):Ny(e);default:throw new Error("TypedPropertyValue unrecognized type "+t+" "+n)}}function dh(e,t){var r=ie(4),n=ie(4);switch(r.write_shift(4,e==80?31:e),e){case 3:n.write_shift(-4,t);break;case 5:n=ie(8),n.write_shift(8,t,"f");break;case 11:n.write_shift(4,t?1:0);break;case 64:n=Ry(t);break;case 31:case 80:for(n=ie(4+2*(t.length+1)+(t.length%2?0:2)),n.write_shift(4,t.length+1),n.write_shift(0,t,"dbcs");n.l!=n.length;)n.write_shift(1,0);break;default:throw new Error("TypedPropertyValue unrecognized type "+e+" "+t)}return Lt([r,n])}function hh(e,t){var r=e.l,n=e.read_shift(4),a=e.read_shift(4),i=[],s=0,o=0,c=-1,f={};for(s=0;s!=a;++s){var u=e.read_shift(4),d=e.read_shift(4);i[s]=[u,d+r]}i.sort(function(y,w){return y[1]-w[1]});var h={};for(s=0;s!=a;++s){if(e.l!==i[s][1]){var m=!0;if(s>0&&t)switch(t[i[s-1][0]].t){case 2:e.l+2===i[s][1]&&(e.l+=2,m=!1);break;case 80:e.l<=i[s][1]&&(e.l=i[s][1],m=!1);break;case 4108:e.l<=i[s][1]&&(e.l=i[s][1],m=!1);break}if((!t||s==0)&&e.l<=i[s][1]&&(m=!1,e.l=i[s][1]),m)throw new Error("Read Error: Expected address "+i[s][1]+" at "+e.l+" :"+s)}if(t){var g=t[i[s][0]];if(h[g.n]=ko(e,g.t,{raw:!0}),g.p==="version"&&(h[g.n]=String(h[g.n]>>16)+"."+("0000"+String(h[g.n]&65535)).slice(-4)),g.n=="CodePage")switch(h[g.n]){case 0:h[g.n]=1252;case 874:case 932:case 936:case 949:case 950:case 1250:case 1251:case 1253:case 1254:case 1255:case 1256:case 1257:case 1258:case 1e4:case 1200:case 1201:case 1252:case 65e3:case-536:case 65001:case-535:Kr(o=h[g.n]>>>0&65535);break;default:throw new Error("Unsupported CodePage: "+h[g.n])}}else if(i[s][0]===1){if(o=h.CodePage=ko(e,lc),Kr(o),c!==-1){var p=e.l;e.l=i[c][1],f=fh(e,o),e.l=p}}else if(i[s][0]===0){if(o===0){c=s,e.l=i[s+1][1];continue}f=fh(e,o)}else{var x=f[i[s][0]],v;switch(e[e.l]){case 65:e.l+=4,v=uh(e);break;case 30:e.l+=4,v=xc(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 31:e.l+=4,v=xc(e,e[e.l-4]).replace(/\u0000+$/,"");break;case 3:e.l+=4,v=e.read_shift(4,"i");break;case 19:e.l+=4,v=e.read_shift(4);break;case 5:e.l+=4,v=e.read_shift(8,"f");break;case 11:e.l+=4,v=St(e,4);break;case 64:e.l+=4,v=ot(gc(e));break;default:throw new Error("unparsed value: "+e[e.l])}h[x]=v}}return e.l=r+n,h}var mh=["CodePage","Thumbnail","_PID_LINKBASE","_PID_HLINKS","SystemIdentifier","FMTID"];function Ly(e){switch(typeof e){case"boolean":return 11;case"number":return(e|0)==e?3:5;case"string":return 31;case"object":if(e instanceof Date)return 64;break}return-1}function ph(e,t,r){var n=ie(8),a=[],i=[],s=8,o=0,c=ie(8),f=ie(8);if(c.write_shift(4,2),c.write_shift(4,1200),f.write_shift(4,1),i.push(c),a.push(f),s+=8+c.length,!t){f=ie(8),f.write_shift(4,0),a.unshift(f);var u=[ie(4)];for(u[0].write_shift(4,e.length),o=0;o<e.length;++o){var d=e[o][0];for(c=ie(4+4+2*(d.length+1)+(d.length%2?0:2)),c.write_shift(4,o+2),c.write_shift(4,d.length+1),c.write_shift(0,d,"dbcs");c.l!=c.length;)c.write_shift(1,0);u.push(c)}c=Lt(u),i.unshift(c),s+=8+c.length}for(o=0;o<e.length;++o)if(!(t&&!t[e[o][0]])&&!(mh.indexOf(e[o][0])>-1||nh.indexOf(e[o][0])>-1)&&e[o][1]!=null){var h=e[o][1],m=0;if(t){m=+t[e[o][0]];var g=r[m];if(g.p=="version"&&typeof h=="string"){var p=h.split(".");h=(+p[0]<<16)+(+p[1]||0)}c=dh(g.t,h)}else{var x=Ly(h);x==-1&&(x=31,h=String(h)),c=dh(x,h)}i.push(c),f=ie(8),f.write_shift(4,t?m:2+o),a.push(f),s+=8+c.length}var v=8*(i.length+1);for(o=0;o<i.length;++o)a[o].write_shift(4,v),v+=i[o].length;return n.write_shift(4,s),n.write_shift(4,i.length),Lt([n].concat(a).concat(i))}function gh(e,t,r){var n=e.content;if(!n)return{};Gt(n,0);var a,i,s,o,c=0;n.chk("feff","Byte Order: "),n.read_shift(2);var f=n.read_shift(4),u=n.read_shift(16);if(u!==Fe.utils.consts.HEADER_CLSID&&u!==r)throw new Error("Bad PropertySet CLSID "+u);if(a=n.read_shift(4),a!==1&&a!==2)throw new Error("Unrecognized #Sets: "+a);if(i=n.read_shift(16),o=n.read_shift(4),a===1&&o!==n.l)throw new Error("Length mismatch: "+o+" !== "+n.l);a===2&&(s=n.read_shift(16),c=n.read_shift(4));var d=hh(n,t),h={SystemIdentifier:f};for(var m in d)h[m]=d[m];if(h.FMTID=i,a===1)return h;if(c-n.l==2&&(n.l+=2),n.l!==c)throw new Error("Length mismatch 2: "+n.l+" !== "+c);var g;try{g=hh(n,null)}catch{}for(m in g)h[m]=g[m];return h.FMTID=[i,s],h}function xh(e,t,r,n,a,i){var s=ie(a?68:48),o=[s];s.write_shift(2,65534),s.write_shift(2,0),s.write_shift(4,842412599),s.write_shift(16,Fe.utils.consts.HEADER_CLSID,"hex"),s.write_shift(4,a?2:1),s.write_shift(16,t,"hex"),s.write_shift(4,a?68:48);var c=ph(e,r,n);if(o.push(c),a){var f=ph(a,null,null);s.write_shift(16,i,"hex"),s.write_shift(4,68+c.length),o.push(f)}return Lt(o)}function ea(e,t){return e.read_shift(t),null}function Vy(e,t){t||(t=ie(e));for(var r=0;r<e;++r)t.write_shift(1,0);return t}function Uy(e,t,r){for(var n=[],a=e.l+t;e.l<a;)n.push(r(e,a-e.l));if(a!==e.l)throw new Error("Slurp error");return n}function St(e,t){return e.read_shift(t)===1}function cr(e,t){return t||(t=ie(2)),t.write_shift(2,+!!e),t}function Ft(e){return e.read_shift(2,"u")}function Ur(e,t){return t||(t=ie(2)),t.write_shift(2,e),t}function vh(e,t){return Uy(e,t,Ft)}function $y(e){var t=e.read_shift(1),r=e.read_shift(1);return r===1?t:t===1}function wh(e,t,r){return r||(r=ie(2)),r.write_shift(1,t=="e"?+e:+!!e),r.write_shift(1,t=="e"?1:0),r}function ts(e,t,r){var n=e.read_shift(r&&r.biff>=12?2:1),a="sbcs-cont";if(r&&r.biff>=8,!r||r.biff==8){var i=e.read_shift(1);i&&(a="dbcs-cont")}else r.biff==12&&(a="wstr");r.biff>=2&&r.biff<=5&&(a="cpstr");var s=n?e.read_shift(n,a):"";return s}function Wy(e){var t=e.read_shift(2),r=e.read_shift(1),n=r&4,a=r&8,i=1+(r&1),s=0,o,c={};a&&(s=e.read_shift(2)),n&&(o=e.read_shift(4));var f=i==2?"dbcs-cont":"sbcs-cont",u=t===0?"":e.read_shift(t,f);return a&&(e.l+=4*s),n&&(e.l+=o),c.t=u,a||(c.raw="<t>"+c.t+"</t>",c.r=c.t),c}function Hy(e){var t=e.t||"",r=ie(3+0);r.write_shift(2,t.length),r.write_shift(1,1);var n=ie(2*t.length);n.write_shift(2*t.length,t,"utf16le");var a=[r,n];return Lt(a)}function Sa(e,t,r){var n;if(r){if(r.biff>=2&&r.biff<=5)return e.read_shift(t,"cpstr");if(r.biff>=12)return e.read_shift(t,"dbcs-cont")}var a=e.read_shift(1);return a===0?n=e.read_shift(t,"sbcs-cont"):n=e.read_shift(t,"dbcs-cont"),n}function rs(e,t,r){var n=e.read_shift(r&&r.biff==2?1:2);return n===0?(e.l++,""):Sa(e,n,r)}function Ca(e,t,r){if(r.biff>5)return rs(e,t,r);var n=e.read_shift(1);return n===0?(e.l++,""):e.read_shift(n,r.biff<=4||!e.lens?"cpstr":"sbcs-cont")}function _h(e,t,r){return r||(r=ie(3+2*e.length)),r.write_shift(2,e.length),r.write_shift(1,1),r.write_shift(31,e,"utf16le"),r}function jy(e){var t=e.read_shift(1);e.l++;var r=e.read_shift(2);return e.l+=2,[t,r]}function zy(e){var t=e.read_shift(4),r=e.l,n=!1;t>24&&(e.l+=t-24,e.read_shift(16)==="795881f43b1d7f48af2c825dc4852763"&&(n=!0),e.l=r);var a=e.read_shift((n?t-24:t)>>1,"utf16le").replace(or,"");return n&&(e.l+=24),a}function Gy(e){for(var t=e.read_shift(2),r="";t-- >0;)r+="../";var n=e.read_shift(0,"lpstr-ansi");if(e.l+=2,e.read_shift(2)!=57005)throw new Error("Bad FileMoniker");var a=e.read_shift(4);if(a===0)return r+n.replace(/\\/g,"/");var i=e.read_shift(4);if(e.read_shift(2)!=3)throw new Error("Bad FileMoniker");var s=e.read_shift(i>>1,"utf16le").replace(or,"");return r+s}function Xy(e,t){var r=e.read_shift(16);switch(r){case"e0c9ea79f9bace118c8200aa004ba90b":return zy(e);case"0303000000000000c000000000000046":return Gy(e);default:throw new Error("Unsupported Moniker "+r)}}function bo(e){var t=e.read_shift(4),r=t>0?e.read_shift(t,"utf16le").replace(or,""):"";return r}function yh(e,t){t||(t=ie(6+e.length*2)),t.write_shift(4,1+e.length);for(var r=0;r<e.length;++r)t.write_shift(2,e.charCodeAt(r));return t.write_shift(2,0),t}function Ky(e,t){var r=e.l+t,n=e.read_shift(4);if(n!==2)throw new Error("Unrecognized streamVersion: "+n);var a=e.read_shift(2);e.l+=2;var i,s,o,c,f="",u,d;a&16&&(i=bo(e,r-e.l)),a&128&&(s=bo(e,r-e.l)),(a&257)===257&&(o=bo(e,r-e.l)),(a&257)===1&&(c=Xy(e,r-e.l)),a&8&&(f=bo(e,r-e.l)),a&32&&(u=e.read_shift(16)),a&64&&(d=gc(e)),e.l=r;var h=s||o||c||"";h&&f&&(h+="#"+f),h||(h="#"+f),a&2&&h.charAt(0)=="/"&&h.charAt(1)!="/"&&(h="file://"+h);var m={Target:h};return u&&(m.guid=u),d&&(m.time=d),i&&(m.Tooltip=i),m}function Yy(e){var t=ie(512),r=0,n=e.Target;n.slice(0,7)=="file://"&&(n=n.slice(7));var a=n.indexOf("#"),i=a>-1?31:23;switch(n.charAt(0)){case"#":i=28;break;case".":i&=-3;break}t.write_shift(4,2),t.write_shift(4,i);var s=[8,6815827,6619237,4849780,83];for(r=0;r<s.length;++r)t.write_shift(4,s[r]);if(i==28)n=n.slice(1),yh(n,t);else if(i&2){for(s="e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),r=0;r<s.length;++r)t.write_shift(1,parseInt(s[r],16));var o=a>-1?n.slice(0,a):n;for(t.write_shift(4,2*(o.length+1)),r=0;r<o.length;++r)t.write_shift(2,o.charCodeAt(r));t.write_shift(2,0),i&8&&yh(a>-1?n.slice(a+1):"",t)}else{for(s="03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "),r=0;r<s.length;++r)t.write_shift(1,parseInt(s[r],16));for(var c=0;n.slice(c*3,c*3+3)=="../"||n.slice(c*3,c*3+3)=="..\\";)++c;for(t.write_shift(2,c),t.write_shift(4,n.length-3*c+1),r=0;r<n.length-3*c;++r)t.write_shift(1,n.charCodeAt(r+3*c)&255);for(t.write_shift(1,0),t.write_shift(2,65535),t.write_shift(2,57005),r=0;r<6;++r)t.write_shift(4,0)}return t.slice(0,t.l)}function kh(e){var t=e.read_shift(1),r=e.read_shift(1),n=e.read_shift(1),a=e.read_shift(1);return[t,r,n,a]}function bh(e,t){var r=kh(e);return r[3]=0,r}function xn(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2);return{r:t,c:r,ixfe:n}}function Ta(e,t,r,n){return n||(n=ie(6)),n.write_shift(2,e),n.write_shift(2,t),n.write_shift(2,r||0),n}function qy(e){var t=e.read_shift(2),r=e.read_shift(2);return e.l+=8,{type:t,flags:r}}function Jy(e,t,r){return t===0?"":Ca(e,t,r)}function Zy(e,t,r){var n=r.biff>8?4:2,a=e.read_shift(n),i=e.read_shift(n,"i"),s=e.read_shift(n,"i");return[a,i,s]}function Eh(e){var t=e.read_shift(2),r=oc(e);return[t,r]}function Qy(e,t,r){e.l+=4,t-=4;var n=e.l+t,a=ts(e,t,r),i=e.read_shift(2);if(n-=e.l,i!==n)throw new Error("Malformed AddinUdf: padding = "+n+" != "+i);return e.l+=i,a}function Eo(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2),a=e.read_shift(2);return{s:{c:n,r:t},e:{c:a,r}}}function Sh(e,t){return t||(t=ie(8)),t.write_shift(2,e.s.r),t.write_shift(2,e.e.r),t.write_shift(2,e.s.c),t.write_shift(2,e.e.c),t}function Ch(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(1),a=e.read_shift(1);return{s:{c:n,r:t},e:{c:a,r}}}var ek=Ch;function Th(e){e.l+=4;var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2);return e.l+=12,[r,t,n]}function tk(e){var t={};return e.l+=4,e.l+=16,t.fSharedNote=e.read_shift(2),e.l+=4,t}function rk(e){var t={};return e.l+=4,e.cf=e.read_shift(2),t}function er(e){e.l+=2,e.l+=e.read_shift(2)}var nk={0:er,4:er,5:er,6:er,7:rk,8:er,9:er,10:er,11:er,12:er,13:tk,14:er,15:er,16:er,17:er,18:er,19:er,20:er,21:Th};function ak(e,t){for(var r=e.l+t,n=[];e.l<r;){var a=e.read_shift(2);e.l-=2;try{n.push(nk[a](e,r-e.l))}catch{return e.l=r,n}}return e.l!=r&&(e.l=r),n}function So(e,t){var r={BIFFVer:0,dt:0};switch(r.BIFFVer=e.read_shift(2),t-=2,t>=2&&(r.dt=e.read_shift(2),e.l-=2),r.BIFFVer){case 1536:case 1280:case 1024:case 768:case 512:case 2:case 7:break;default:if(t>6)throw new Error("Unexpected BIFF Ver "+r.BIFFVer)}return e.read_shift(t),r}function vc(e,t,r){var n=1536,a=16;switch(r.bookType){case"biff8":break;case"biff5":n=1280,a=8;break;case"biff4":n=4,a=6;break;case"biff3":n=3,a=6;break;case"biff2":n=2,a=4;break;case"xla":break;default:throw new Error("unsupported BIFF version")}var i=ie(a);return i.write_shift(2,n),i.write_shift(2,t),a>4&&i.write_shift(2,29282),a>6&&i.write_shift(2,1997),a>8&&(i.write_shift(2,49161),i.write_shift(2,1),i.write_shift(2,1798),i.write_shift(2,0)),i}function ik(e,t){return t===0||e.read_shift(2),1200}function sk(e,t,r){if(r.enc)return e.l+=t,"";var n=e.l,a=Ca(e,0,r);return e.read_shift(t+n-e.l),a}function ok(e,t){var r=!t||t.biff==8,n=ie(r?112:54);for(n.write_shift(t.biff==8?2:1,7),r&&n.write_shift(1,0),n.write_shift(4,859007059),n.write_shift(4,5458548|(r?0:536870912));n.l<n.length;)n.write_shift(1,r?0:32);return n}function lk(e,t,r){var n=r&&r.biff==8||t==2?e.read_shift(2):(e.l+=t,0);return{fDialog:n&16,fBelow:n&64,fRight:n&128}}function ck(e,t,r){var n=e.read_shift(4),a=e.read_shift(1)&3,i=e.read_shift(1);switch(i){case 0:i="Worksheet";break;case 1:i="Macrosheet";break;case 2:i="Chartsheet";break;case 6:i="VBAModule";break}var s=ts(e,0,r);return s.length===0&&(s="Sheet1"),{pos:n,hs:a,dt:i,name:s}}function fk(e,t){var r=!t||t.biff>=8?2:1,n=ie(8+r*e.name.length);n.write_shift(4,e.pos),n.write_shift(1,e.hs||0),n.write_shift(1,e.dt),n.write_shift(1,e.name.length),t.biff>=8&&n.write_shift(1,1),n.write_shift(r*e.name.length,e.name,t.biff<8?"sbcs":"utf16le");var a=n.slice(0,n.l);return a.l=n.l,a}function uk(e,t){for(var r=e.l+t,n=e.read_shift(4),a=e.read_shift(4),i=[],s=0;s!=a&&e.l<r;++s)i.push(Wy(e));return i.Count=n,i.Unique=a,i}function dk(e,t){var r=ie(8);r.write_shift(4,e.Count),r.write_shift(4,e.Unique);for(var n=[],a=0;a<e.length;++a)n[a]=Hy(e[a]);var i=Lt([r].concat(n));return i.parts=[r.length].concat(n.map(function(s){return s.length})),i}function hk(e,t){var r={};return r.dsst=e.read_shift(2),e.l+=t-2,r}function mk(e){var t={};t.r=e.read_shift(2),t.c=e.read_shift(2),t.cnt=e.read_shift(2)-t.c;var r=e.read_shift(2);e.l+=4;var n=e.read_shift(1);return e.l+=3,n&7&&(t.level=n&7),n&32&&(t.hidden=!0),n&64&&(t.hpt=r/20),t}function pk(e){var t=qy(e);if(t.type!=2211)throw new Error("Invalid Future Record "+t.type);var r=e.read_shift(4);return r!==0}function gk(e){return e.read_shift(2),e.read_shift(4)}function Fh(e,t,r){var n=0;r&&r.biff==2||(n=e.read_shift(2));var a=e.read_shift(2);r&&r.biff==2&&(n=1-(a>>15),a&=32767);var i={Unsynced:n&1,DyZero:(n&2)>>1,ExAsc:(n&4)>>2,ExDsc:(n&8)>>3};return[i,a]}function xk(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2),o=e.read_shift(2),c=e.read_shift(2),f=e.read_shift(2);return{Pos:[t,r],Dim:[n,a],Flags:i,CurTab:s,FirstTab:o,Selected:c,TabRatio:f}}function vk(){var e=ie(18);return e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,29280),e.write_shift(2,17600),e.write_shift(2,56),e.write_shift(2,0),e.write_shift(2,0),e.write_shift(2,1),e.write_shift(2,500),e}function wk(e,t,r){if(r&&r.biff>=2&&r.biff<5)return{};var n=e.read_shift(2);return{RTL:n&64}}function _k(e){var t=ie(18),r=1718;return e&&e.RTL&&(r|=64),t.write_shift(2,r),t.write_shift(4,0),t.write_shift(4,64),t.write_shift(4,0),t.write_shift(4,0),t}function yk(){}function kk(e,t,r){var n={dyHeight:e.read_shift(2),fl:e.read_shift(2)};switch(r&&r.biff||8){case 2:break;case 3:case 4:e.l+=2;break;default:e.l+=10;break}return n.name=ts(e,0,r),n}function bk(e,t){var r=e.name||"Arial",n=t&&t.biff==5,a=n?15+r.length:16+2*r.length,i=ie(a);return i.write_shift(2,(e.sz||12)*20),i.write_shift(4,0),i.write_shift(2,400),i.write_shift(4,0),i.write_shift(2,0),i.write_shift(1,r.length),n||i.write_shift(1,1),i.write_shift((n?1:2)*r.length,r,n?"sbcs":"utf16le"),i}function Ek(e){var t=xn(e);return t.isst=e.read_shift(4),t}function Sk(e,t,r,n){var a=ie(10);return Ta(e,t,n,a),a.write_shift(4,r),a}function Ck(e,t,r){r.biffguess&&r.biff==2&&(r.biff=5);var n=e.l+t,a=xn(e);r.biff==2&&e.l++;var i=rs(e,n-e.l,r);return a.val=i,a}function Tk(e,t,r,n,a){var i=!a||a.biff==8,s=ie(6+2+ +i+(1+i)*r.length);return Ta(e,t,n,s),s.write_shift(2,r.length),i&&s.write_shift(1,1),s.write_shift((1+i)*r.length,r,i?"utf16le":"sbcs"),s}function Fk(e,t,r){var n=e.read_shift(2),a=Ca(e,0,r);return[n,a]}function Ak(e,t,r,n){var a=r&&r.biff==5;n||(n=ie(a?3+t.length:5+2*t.length)),n.write_shift(2,e),n.write_shift(a?1:2,t.length),a||n.write_shift(1,1),n.write_shift((a?1:2)*t.length,t,a?"sbcs":"utf16le");var i=n.length>n.l?n.slice(0,n.l):n;return i.l==null&&(i.l=i.length),i}var Dk=Ca;function Ah(e,t,r){var n=e.l+t,a=r.biff==8||!r.biff?4:2,i=e.read_shift(a),s=e.read_shift(a),o=e.read_shift(2),c=e.read_shift(2);return e.l=n,{s:{r:i,c:o},e:{r:s,c}}}function Rk(e,t){var r=t.biff==8||!t.biff?4:2,n=ie(2*r+6);return n.write_shift(r,e.s.r),n.write_shift(r,e.e.r+1),n.write_shift(2,e.s.c),n.write_shift(2,e.e.c+1),n.write_shift(2,0),n}function Ok(e){var t=e.read_shift(2),r=e.read_shift(2),n=Eh(e);return{r:t,c:r,ixfe:n[0],rknum:n[1]}}function Bk(e,t){for(var r=e.l+t-2,n=e.read_shift(2),a=e.read_shift(2),i=[];e.l<r;)i.push(Eh(e));if(e.l!==r)throw new Error("MulRK read error");var s=e.read_shift(2);if(i.length!=s-a+1)throw new Error("MulRK length mismatch");return{r:n,c:a,C:s,rkrec:i}}function Nk(e,t){for(var r=e.l+t-2,n=e.read_shift(2),a=e.read_shift(2),i=[];e.l<r;)i.push(e.read_shift(2));if(e.l!==r)throw new Error("MulBlank read error");var s=e.read_shift(2);if(i.length!=s-a+1)throw new Error("MulBlank length mismatch");return{r:n,c:a,C:s,ixfe:i}}function Ik(e,t,r,n){var a={},i=e.read_shift(4),s=e.read_shift(4),o=e.read_shift(4),c=e.read_shift(2);return a.patternType=py[o>>26],n.cellStyles&&(a.alc=i&7,a.fWrap=i>>3&1,a.alcV=i>>4&7,a.fJustLast=i>>7&1,a.trot=i>>8&255,a.cIndent=i>>16&15,a.fShrinkToFit=i>>20&1,a.iReadOrder=i>>22&2,a.fAtrNum=i>>26&1,a.fAtrFnt=i>>27&1,a.fAtrAlc=i>>28&1,a.fAtrBdr=i>>29&1,a.fAtrPat=i>>30&1,a.fAtrProt=i>>31&1,a.dgLeft=s&15,a.dgRight=s>>4&15,a.dgTop=s>>8&15,a.dgBottom=s>>12&15,a.icvLeft=s>>16&127,a.icvRight=s>>23&127,a.grbitDiag=s>>30&3,a.icvTop=o&127,a.icvBottom=o>>7&127,a.icvDiag=o>>14&127,a.dgDiag=o>>21&15,a.icvFore=c&127,a.icvBack=c>>7&127,a.fsxButton=c>>14&1),a}function Pk(e,t,r){var n={};return n.ifnt=e.read_shift(2),n.numFmtId=e.read_shift(2),n.flags=e.read_shift(2),n.fStyle=n.flags>>2&1,t-=6,n.data=Ik(e,t,n.fStyle,r),n}function Dh(e,t,r,n){var a=r&&r.biff==5;n||(n=ie(a?16:20)),n.write_shift(2,0),e.style?(n.write_shift(2,e.numFmtId||0),n.write_shift(2,65524)):(n.write_shift(2,e.numFmtId||0),n.write_shift(2,t<<4));var i=0;return e.numFmtId>0&&a&&(i|=1024),n.write_shift(4,i),n.write_shift(4,0),a||n.write_shift(4,0),n.write_shift(2,0),n}function Mk(e){e.l+=4;var t=[e.read_shift(2),e.read_shift(2)];if(t[0]!==0&&t[0]--,t[1]!==0&&t[1]--,t[0]>7||t[1]>7)throw new Error("Bad Gutters: "+t.join("|"));return t}function Lk(e){var t=ie(8);return t.write_shift(4,0),t.write_shift(2,e[0]?e[0]+1:0),t.write_shift(2,e[1]?e[1]+1:0),t}function Rh(e,t,r){var n=xn(e);(r.biff==2||t==9)&&++e.l;var a=$y(e);return n.val=a,n.t=a===!0||a===!1?"b":"e",n}function Vk(e,t,r,n,a,i){var s=ie(8);return Ta(e,t,n,s),wh(r,i,s),s}function Uk(e,t,r){r.biffguess&&r.biff==2&&(r.biff=5);var n=xn(e),a=Qt(e);return n.val=a,n}function $k(e,t,r,n){var a=ie(14);return Ta(e,t,n,a),ka(r,a),a}var Oh=Jy;function Wk(e,t,r){var n=e.l+t,a=e.read_shift(2),i=e.read_shift(2);if(r.sbcch=i,i==1025||i==14849)return[i,a];if(i<1||i>255)throw new Error("Unexpected SupBook type: "+i);for(var s=Sa(e,i),o=[];n>e.l;)o.push(rs(e));return[i,a,s,o]}function Bh(e,t,r){var n=e.read_shift(2),a,i={fBuiltIn:n&1,fWantAdvise:n>>>1&1,fWantPict:n>>>2&1,fOle:n>>>3&1,fOleLink:n>>>4&1,cf:n>>>5&1023,fIcon:n>>>15&1};return r.sbcch===14849&&(a=Qy(e,t-2,r)),i.body=a||e.read_shift(t-2),typeof a=="string"&&(i.Name=a),i}var Hk=["_xlnm.Consolidate_Area","_xlnm.Auto_Open","_xlnm.Auto_Close","_xlnm.Extract","_xlnm.Database","_xlnm.Criteria","_xlnm.Print_Area","_xlnm.Print_Titles","_xlnm.Recorder","_xlnm.Data_Form","_xlnm.Auto_Activate","_xlnm.Auto_Deactivate","_xlnm.Sheet_Title","_xlnm._FilterDatabase"];function Nh(e,t,r){var n=e.l+t,a=e.read_shift(2),i=e.read_shift(1),s=e.read_shift(1),o=e.read_shift(r&&r.biff==2?1:2),c=0;(!r||r.biff>=5)&&(r.biff!=5&&(e.l+=2),c=e.read_shift(2),r.biff==5&&(e.l+=2),e.l+=4);var f=Sa(e,s,r);a&32&&(f=Hk[f.charCodeAt(0)]);var u=n-e.l;r&&r.biff==2&&--u;var d=n==e.l||o===0||!(u>0)?[]:aT(e,u,r,o);return{chKey:i,Name:f,itab:c,rgce:d}}function Ih(e,t,r){if(r.biff<8)return jk(e,t,r);for(var n=[],a=e.l+t,i=e.read_shift(r.biff>8?4:2);i--!==0;)n.push(Zy(e,r.biff>8?12:6,r));if(e.l!=a)throw new Error("Bad ExternSheet: "+e.l+" != "+a);return n}function jk(e,t,r){e[e.l+1]==3&&e[e.l]++;var n=ts(e,t,r);return n.charCodeAt(0)==3?n.slice(1):n}function zk(e,t,r){if(r.biff<8){e.l+=t;return}var n=e.read_shift(2),a=e.read_shift(2),i=Sa(e,n,r),s=Sa(e,a,r);return[i,s]}function Gk(e,t,r){var n=Ch(e);e.l++;var a=e.read_shift(1);return t-=8,[iT(e,t,r),a,n]}function Ph(e,t,r){var n=ek(e);switch(r.biff){case 2:e.l++,t-=7;break;case 3:case 4:e.l+=2,t-=8;break;default:e.l+=6,t-=12}return[n,rT(e,t,r)]}function Xk(e){var t=e.read_shift(4)!==0,r=e.read_shift(4)!==0,n=e.read_shift(4);return[t,r,n]}function Kk(e,t,r){if(!(r.biff<8)){var n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2),s=e.read_shift(2),o=Ca(e,0,r);return r.biff<8&&e.read_shift(1),[{r:n,c:a},o,s,i]}}function Yk(e,t,r){return Kk(e,t,r)}function qk(e,t){for(var r=[],n=e.read_shift(2);n--;)r.push(Eo(e));return r}function Jk(e){var t=ie(2+e.length*8);t.write_shift(2,e.length);for(var r=0;r<e.length;++r)Sh(e[r],t);return t}function Zk(e,t,r){if(r&&r.biff<8)return eb(e,t,r);var n=Th(e),a=ak(e,t-22,n[1]);return{cmo:n,ft:a}}var Qk={8:function(e,t){var r=e.l+t;e.l+=10;var n=e.read_shift(2);e.l+=4,e.l+=2,e.l+=2,e.l+=2,e.l+=4;var a=e.read_shift(1);return e.l+=a,e.l=r,{fmt:n}}};function eb(e,t,r){e.l+=4;var n=e.read_shift(2),a=e.read_shift(2),i=e.read_shift(2);e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=2,e.l+=6,t-=36;var s=[];return s.push((Qk[n]||Jt)(e,t,r)),{cmo:[a,n,i],ft:s}}function tb(e,t,r){var n=e.l,a="";try{e.l+=4;var i=(r.lastobj||{cmo:[0,0]}).cmo[1],s;[0,5,7,11,12,14].indexOf(i)==-1?e.l+=6:s=jy(e,6,r);var o=e.read_shift(2);e.read_shift(2),Ft(e,2);var c=e.read_shift(2);e.l+=c;for(var f=1;f<e.lens.length-1;++f){if(e.l-n!=e.lens[f])throw new Error("TxO: bad continue record");var u=e[e.l],d=Sa(e,e.lens[f+1]-e.lens[f]-1);if(a+=d,a.length>=(u?o:2*o))break}if(a.length!==o&&a.length!==o*2)throw new Error("cchText: "+o+" != "+a.length);return e.l=n+t,{t:a}}catch{return e.l=n+t,{t:a}}}function rb(e,t){var r=Eo(e);e.l+=16;var n=Ky(e,t-24);return[r,n]}function nb(e){var t=ie(24),r=pt(e[0]);t.write_shift(2,r.r),t.write_shift(2,r.r),t.write_shift(2,r.c),t.write_shift(2,r.c);for(var n="d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "),a=0;a<16;++a)t.write_shift(1,parseInt(n[a],16));return Lt([t,Yy(e[1])])}function ab(e,t){e.read_shift(2);var r=Eo(e),n=e.read_shift((t-10)/2,"dbcs-cont");return n=n.replace(or,""),[r,n]}function ib(e){var t=e[1].Tooltip,r=ie(10+2*(t.length+1));r.write_shift(2,2048);var n=pt(e[0]);r.write_shift(2,n.r),r.write_shift(2,n.r),r.write_shift(2,n.c),r.write_shift(2,n.c);for(var a=0;a<t.length;++a)r.write_shift(2,t.charCodeAt(a));return r.write_shift(2,0),r}function sb(e){var t=[0,0],r;return r=e.read_shift(2),t[0]=qd[r]||r,r=e.read_shift(2),t[1]=qd[r]||r,t}function ob(e){return e||(e=ie(4)),e.write_shift(2,1),e.write_shift(2,1),e}function lb(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(bh(e));return r}function cb(e){for(var t=e.read_shift(2),r=[];t-- >0;)r.push(bh(e));return r}function fb(e){e.l+=2;var t={cxfs:0,crc:0};return t.cxfs=e.read_shift(2),t.crc=e.read_shift(4),t}function Mh(e,t,r){if(!r.cellStyles)return Jt(e,t);var n=r&&r.biff>=12?4:2,a=e.read_shift(n),i=e.read_shift(n),s=e.read_shift(n),o=e.read_shift(n),c=e.read_shift(2);n==2&&(e.l+=2);var f={s:a,e:i,w:s,ixfe:o,flags:c};return(r.biff>=5||!r.biff)&&(f.level=c>>8&7),f}function ub(e,t){var r=ie(12);r.write_shift(2,t),r.write_shift(2,t),r.write_shift(2,e.width*256),r.write_shift(2,0);var n=0;return e.hidden&&(n|=1),r.write_shift(1,n),n=e.level||0,r.write_shift(1,n),r.write_shift(2,0),r}function db(e,t){var r={};return t<32||(e.l+=16,r.header=Qt(e),r.footer=Qt(e),e.l+=2),r}function hb(e,t,r){var n={area:!1};if(r.biff!=5)return e.l+=t,n;var a=e.read_shift(1);return e.l+=3,a&16&&(n.area=!0),n}function mb(e){for(var t=ie(2*e),r=0;r<e;++r)t.write_shift(2,r+1);return t}var pb=xn,gb=vh,xb=rs;function vb(e){var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(4),a={fmt:t,env:r,len:n,data:e.slice(e.l,e.l+n)};return e.l+=n,a}function wb(e,t,r){r.biffguess&&r.biff==5&&(r.biff=2);var n=xn(e);++e.l;var a=Ca(e,t-7,r);return n.t="str",n.val=a,n}function _b(e){var t=xn(e);++e.l;var r=Qt(e);return t.t="n",t.val=r,t}function yb(e,t,r){var n=ie(15);return gs(n,e,t),n.write_shift(8,r,"f"),n}function kb(e){var t=xn(e);++e.l;var r=e.read_shift(2);return t.t="n",t.val=r,t}function bb(e,t,r){var n=ie(9);return gs(n,e,t),n.write_shift(2,r),n}function Eb(e){var t=e.read_shift(1);return t===0?(e.l++,""):e.read_shift(t,"sbcs-cont")}function Sb(e,t){e.l+=6,e.l+=2,e.l+=1,e.l+=3,e.l+=1,e.l+=t-13}function Cb(e,t,r){var n=e.l+t,a=xn(e),i=e.read_shift(2),s=Sa(e,i,r);return e.l=n,a.t="str",a.val=s,a}var Tb=[2,3,48,49,131,139,140,245],wc=function(){var e={1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127,8:865,9:437,10:850,11:437,13:437,14:850,15:437,16:850,17:437,18:850,19:932,20:850,21:437,22:850,23:865,24:437,25:437,26:850,27:437,28:863,29:850,31:852,34:852,35:852,36:860,37:850,38:866,55:850,64:852,77:936,78:949,79:950,80:874,87:1252,88:1252,89:1252,108:863,134:737,135:852,136:857,204:1257,255:16969},t=co({1:437,2:850,3:1252,4:1e4,100:852,101:866,102:865,103:861,104:895,105:620,106:737,107:857,120:950,121:949,122:936,123:932,124:874,125:1255,126:1256,150:10007,151:10029,152:10006,200:1250,201:1251,202:1254,203:1253,0:20127});function r(o,c){var f=[],u=Yn(1);switch(c.type){case"base64":u=Sr(Er(o));break;case"binary":u=Sr(o);break;case"buffer":case"array":u=o;break}Gt(u,0);var d=u.read_shift(1),h=!!(d&136),m=!1,g=!1;switch(d){case 2:break;case 3:break;case 48:m=!0,h=!0;break;case 49:m=!0,h=!0;break;case 131:break;case 139:break;case 140:g=!0;break;case 245:break;default:throw new Error("DBF Unsupported Version: "+d.toString(16))}var p=0,x=521;d==2&&(p=u.read_shift(2)),u.l+=3,d!=2&&(p=u.read_shift(4)),p>1048576&&(p=1e6),d!=2&&(x=u.read_shift(2));var v=u.read_shift(2),y=c.codepage||1252;d!=2&&(u.l+=16,u.read_shift(1),u[u.l]!==0&&(y=e[u[u.l]]),u.l+=1,u.l+=2),g&&(u.l+=36);for(var w=[],E={},R=Math.min(u.length,d==2?521:x-10-(m?264:0)),F=g?32:11;u.l<R&&u[u.l]!=13;)switch(E={},E.name=Xn.utils.decode(y,u.slice(u.l,u.l+F)).replace(/[\u0000\r\n].*$/g,""),u.l+=F,E.type=String.fromCharCode(u.read_shift(1)),d!=2&&!g&&(E.offset=u.read_shift(4)),E.len=u.read_shift(1),d==2&&(E.offset=u.read_shift(2)),E.dec=u.read_shift(1),E.name.length&&w.push(E),d!=2&&(u.l+=g?13:14),E.type){case"B":(!m||E.len!=8)&&c.WTF&&""+E.name+E.type;break;case"G":case"P":c.WTF&&""+E.name+E.type;break;case"+":case"0":case"@":case"C":case"D":case"F":case"I":case"L":case"M":case"N":case"O":case"T":case"Y":break;default:throw new Error("Unknown Field Type: "+E.type)}if(u[u.l]!==13&&(u.l=x-1),u.read_shift(1)!==13)throw new Error("DBF Terminator not found "+u.l+" "+u[u.l]);u.l=x;var C=0,U=0;for(f[0]=[],U=0;U!=w.length;++U)f[0][U]=w[U].name;for(;p-- >0;){if(u[u.l]===42){u.l+=v;continue}for(++u.l,f[++C]=[],U=0,U=0;U!=w.length;++U){var S=u.slice(u.l,u.l+w[U].len);u.l+=w[U].len,Gt(S,0);var W=Xn.utils.decode(y,S);switch(w[U].type){case"C":W.trim().length&&(f[C][U]=W.replace(/\s+$/,""));break;case"D":W.length===8?f[C][U]=new Date(+W.slice(0,4),+W.slice(4,6)-1,+W.slice(6,8)):f[C][U]=W;break;case"F":f[C][U]=parseFloat(W.trim());break;case"+":case"I":f[C][U]=g?S.read_shift(-4,"i")^2147483648:S.read_shift(4,"i");break;case"L":switch(W.trim().toUpperCase()){case"Y":case"T":f[C][U]=!0;break;case"N":case"F":f[C][U]=!1;break;case"":case"?":break;default:throw new Error("DBF Unrecognized L:|"+W+"|")}break;case"M":if(!h)throw new Error("DBF Unexpected MEMO for type "+d.toString(16));f[C][U]="##MEMO##"+(g?parseInt(W.trim(),10):S.read_shift(4));break;case"N":W=W.replace(/\u0000/g,"").trim(),W&&W!="."&&(f[C][U]=+W||0);break;case"@":f[C][U]=new Date(S.read_shift(-8,"f")-621356832e5);break;case"T":f[C][U]=new Date((S.read_shift(4)-2440588)*864e5+S.read_shift(4));break;case"Y":f[C][U]=S.read_shift(4,"i")/1e4+S.read_shift(4,"i")/1e4*Math.pow(2,32);break;case"O":f[C][U]=-S.read_shift(-8,"f");break;case"B":if(m&&w[U].len==8){f[C][U]=S.read_shift(8,"f");break}case"G":case"P":S.l+=w[U].len;break;case"0":if(w[U].name==="_NullFlags")break;default:throw new Error("DBF Unsupported data type "+w[U].type)}}}if(d!=2&&u.l<u.length&&u[u.l++]!=26)throw new Error("DBF EOF Marker missing "+(u.l-1)+" of "+u.length+" "+u[u.l-1].toString(16));return c&&c.sheetRows&&(f=f.slice(0,c.sheetRows)),c.DBF=w,f}function n(o,c){var f=c||{};f.dateNF||(f.dateNF="yyyymmdd");var u=ei(r(o,f),f);return u["!cols"]=f.DBF.map(function(d){return{wch:d.len,DBF:d}}),delete f.DBF,u}function a(o,c){try{return Qn(n(o,c),c)}catch(f){if(c&&c.WTF)throw f}return{SheetNames:[],Sheets:{}}}var i={B:8,C:250,L:1,D:8,"?":0,"":0};function s(o,c){var f=c||{};if(+f.codepage>=0&&Kr(+f.codepage),f.type=="string")throw new Error("Cannot write DBF to JS string");var u=gr(),d=Io(o,{header:1,raw:!0,cellDates:!0}),h=d[0],m=d.slice(1),g=o["!cols"]||[],p=0,x=0,v=0,y=1;for(p=0;p<h.length;++p){if(((g[p]||{}).DBF||{}).name){h[p]=g[p].DBF.name,++v;continue}if(h[p]!=null){if(++v,typeof h[p]=="number"&&(h[p]=h[p].toString(10)),typeof h[p]!="string")throw new Error("DBF Invalid column name "+h[p]+" |"+typeof h[p]+"|");if(h.indexOf(h[p])!==p){for(x=0;x<1024;++x)if(h.indexOf(h[p]+"_"+x)==-1){h[p]+="_"+x;break}}}}var w=Ye(o["!ref"]),E=[],R=[],F=[];for(p=0;p<=w.e.c-w.s.c;++p){var C="",U="",S=0,W=[];for(x=0;x<m.length;++x)m[x][p]!=null&&W.push(m[x][p]);if(W.length==0||h[p]==null){E[p]="?";continue}for(x=0;x<W.length;++x){switch(typeof W[x]){case"number":U="B";break;case"string":U="C";break;case"boolean":U="L";break;case"object":U=W[x]instanceof Date?"D":"C";break;default:U="C"}S=Math.max(S,String(W[x]).length),C=C&&C!=U?"C":U}S>250&&(S=250),U=((g[p]||{}).DBF||{}).type,U=="C"&&g[p].DBF.len>S&&(S=g[p].DBF.len),C=="B"&&U=="N"&&(C="N",F[p]=g[p].DBF.dec,S=g[p].DBF.len),R[p]=C=="C"||U=="N"?S:i[C]||0,y+=R[p],E[p]=C}var z=u.next(32);for(z.write_shift(4,318902576),z.write_shift(4,m.length),z.write_shift(2,296+32*v),z.write_shift(2,y),p=0;p<4;++p)z.write_shift(4,0);for(z.write_shift(4,0|(+t[Bu]||3)<<8),p=0,x=0;p<h.length;++p)if(h[p]!=null){var V=u.next(32),j=(h[p].slice(-10)+"\0\0\0\0\0\0\0\0\0\0\0").slice(0,11);V.write_shift(1,j,"sbcs"),V.write_shift(1,E[p]=="?"?"C":E[p],"sbcs"),V.write_shift(4,x),V.write_shift(1,R[p]||i[E[p]]||0),V.write_shift(1,F[p]||0),V.write_shift(1,2),V.write_shift(4,0),V.write_shift(1,0),V.write_shift(4,0),V.write_shift(4,0),x+=R[p]||i[E[p]]||0}var H=u.next(264);for(H.write_shift(4,13),p=0;p<65;++p)H.write_shift(4,0);for(p=0;p<m.length;++p){var Y=u.next(y);for(Y.write_shift(1,0),x=0;x<h.length;++x)if(h[x]!=null)switch(E[x]){case"L":Y.write_shift(1,m[p][x]==null?63:m[p][x]?84:70);break;case"B":Y.write_shift(8,m[p][x]||0,"f");break;case"N":var ae="0";for(typeof m[p][x]=="number"&&(ae=m[p][x].toFixed(F[x]||0)),v=0;v<R[x]-ae.length;++v)Y.write_shift(1,32);Y.write_shift(1,ae,"sbcs");break;case"D":m[p][x]?(Y.write_shift(4,("0000"+m[p][x].getFullYear()).slice(-4),"sbcs"),Y.write_shift(2,("00"+(m[p][x].getMonth()+1)).slice(-2),"sbcs"),Y.write_shift(2,("00"+m[p][x].getDate()).slice(-2),"sbcs")):Y.write_shift(8,"00000000","sbcs");break;case"C":var se=String(m[p][x]!=null?m[p][x]:"").slice(0,R[x]);for(Y.write_shift(1,se,"sbcs"),v=0;v<R[x]-se.length;++v)Y.write_shift(1,32);break}}return u.next(1).write_shift(1,26),u.end()}return{to_workbook:a,to_sheet:n,from_sheet:s}}(),Lh=function(){var e={AA:"À",BA:"Á",CA:"Â",DA:195,HA:"Ä",JA:197,AE:"È",BE:"É",CE:"Ê",HE:"Ë",AI:"Ì",BI:"Í",CI:"Î",HI:"Ï",AO:"Ò",BO:"Ó",CO:"Ô",DO:213,HO:"Ö",AU:"Ù",BU:"Ú",CU:"Û",HU:"Ü",Aa:"à",Ba:"á",Ca:"â",Da:227,Ha:"ä",Ja:229,Ae:"è",Be:"é",Ce:"ê",He:"ë",Ai:"ì",Bi:"í",Ci:"î",Hi:"ï",Ao:"ò",Bo:"ó",Co:"ô",Do:245,Ho:"ö",Au:"ù",Bu:"ú",Cu:"û",Hu:"ü",KC:"Ç",Kc:"ç",q:"æ",z:"œ",a:"Æ",j:"Œ",DN:209,Dn:241,Hy:255,S:169,c:170,R:174,"B ":180,0:176,1:177,2:178,3:179,5:181,6:182,7:183,Q:185,k:186,b:208,i:216,l:222,s:240,y:248,"!":161,'"':162,"#":163,"(":164,"%":165,"'":167,"H ":168,"+":171,";":187,"<":188,"=":189,">":190,"?":191,"{":223},t=new RegExp("\x1BN("+_t(e).join("|").replace(/\|\|\|/,"|\\||").replace(/([?()+])/g,"\\$1")+"|\\|)","gm"),r=function(h,m){var g=e[m];return typeof g=="number"?Pu(g):g},n=function(h,m,g){var p=m.charCodeAt(0)-32<<4|g.charCodeAt(0)-48;return p==59?h:Pu(p)};e["|"]=254;function a(h,m){switch(m.type){case"base64":return i(Er(h),m);case"binary":return i(h,m);case"buffer":return i(je&&Buffer.isBuffer(h)?h.toString("binary"):qn(h),m);case"array":return i(pa(h),m)}throw new Error("Unrecognized type "+m.type)}function i(h,m){var g=h.split(/[\n\r]+/),p=-1,x=-1,v=0,y=0,w=[],E=[],R=null,F={},C=[],U=[],S=[],W=0,z;for(+m.codepage>=0&&Kr(+m.codepage);v!==g.length;++v){W=0;var V=g[v].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g,n).replace(t,r),j=V.replace(/;;/g,"\0").split(";").map(function(A){return A.replace(/\u0000/g,";")}),H=j[0],Y;if(V.length>0)switch(H){case"ID":break;case"E":break;case"B":break;case"O":break;case"W":break;case"P":j[1].charAt(0)=="P"&&E.push(V.slice(3).replace(/;;/g,";"));break;case"C":var ae=!1,se=!1,de=!1,K=!1,we=-1,D=-1;for(y=1;y<j.length;++y)switch(j[y].charAt(0)){case"A":break;case"X":x=parseInt(j[y].slice(1))-1,se=!0;break;case"Y":for(p=parseInt(j[y].slice(1))-1,se||(x=0),z=w.length;z<=p;++z)w[z]=[];break;case"K":Y=j[y].slice(1),Y.charAt(0)==='"'?Y=Y.slice(1,Y.length-1):Y==="TRUE"?Y=!0:Y==="FALSE"?Y=!1:isNaN(qr(Y))?isNaN(Za(Y).getDate())||(Y=ot(Y)):(Y=qr(Y),R!==null&&ma(R)&&(Y=ho(Y))),ae=!0;break;case"E":K=!0;var _=si(j[y].slice(1),{r:p,c:x});w[p][x]=[w[p][x],_];break;case"S":de=!0,w[p][x]=[w[p][x],"S5S"];break;case"G":break;case"R":we=parseInt(j[y].slice(1))-1;break;case"C":D=parseInt(j[y].slice(1))-1;break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+V)}if(ae&&(w[p][x]&&w[p][x].length==2?w[p][x][0]=Y:w[p][x]=Y,R=null),de){if(K)throw new Error("SYLK shared formula cannot have own formula");var k=we>-1&&w[we][D];if(!k||!k[1])throw new Error("SYLK shared formula cannot find base");w[p][x][1]=am(k[1],{r:p-we,c:x-D})}break;case"F":var b=0;for(y=1;y<j.length;++y)switch(j[y].charAt(0)){case"X":x=parseInt(j[y].slice(1))-1,++b;break;case"Y":for(p=parseInt(j[y].slice(1))-1,z=w.length;z<=p;++z)w[z]=[];break;case"M":W=parseInt(j[y].slice(1))/20;break;case"F":break;case"G":break;case"P":R=E[parseInt(j[y].slice(1))];break;case"S":break;case"D":break;case"N":break;case"W":for(S=j[y].slice(1).split(" "),z=parseInt(S[0],10);z<=parseInt(S[1],10);++z)W=parseInt(S[2],10),U[z-1]=W===0?{hidden:!0}:{wch:W},ta(U[z-1]);break;case"C":x=parseInt(j[y].slice(1))-1,U[x]||(U[x]={});break;case"R":p=parseInt(j[y].slice(1))-1,C[p]||(C[p]={}),W>0?(C[p].hpt=W,C[p].hpx=ai(W)):W===0&&(C[p].hidden=!0);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+V)}b<1&&(R=null);break;default:if(m&&m.WTF)throw new Error("SYLK bad record "+V)}}return C.length>0&&(F["!rows"]=C),U.length>0&&(F["!cols"]=U),m&&m.sheetRows&&(w=w.slice(0,m.sheetRows)),[w,F]}function s(h,m){var g=a(h,m),p=g[0],x=g[1],v=ei(p,m);return _t(x).forEach(function(y){v[y]=x[y]}),v}function o(h,m){return Qn(s(h,m),m)}function c(h,m,g,p){var x="C;Y"+(g+1)+";X"+(p+1)+";K";switch(h.t){case"n":x+=h.v||0,h.f&&!h.F&&(x+=";E"+Tc(h.f,{r:g,c:p}));break;case"b":x+=h.v?"TRUE":"FALSE";break;case"e":x+=h.w||h.v;break;case"d":x+='"'+(h.w||h.v)+'"';break;case"s":x+='"'+h.v.replace(/"/g,"").replace(/;/g,";;")+'"';break}return x}function f(h,m){m.forEach(function(g,p){var x="F;W"+(p+1)+" "+(p+1)+" ";g.hidden?x+="0":(typeof g.width=="number"&&!g.wpx&&(g.wpx=as(g.width)),typeof g.wpx=="number"&&!g.wch&&(g.wch=is(g.wpx)),typeof g.wch=="number"&&(x+=Math.round(g.wch))),x.charAt(x.length-1)!=" "&&h.push(x)})}function u(h,m){m.forEach(function(g,p){var x="F;";g.hidden?x+="M0;":g.hpt?x+="M"+20*g.hpt+";":g.hpx&&(x+="M"+20*ss(g.hpx)+";"),x.length>2&&h.push(x+"R"+(p+1))})}function d(h,m){var g=["ID;PWXL;N;E"],p=[],x=Ye(h["!ref"]),v,y=Array.isArray(h),w=`\r
|
||
`;g.push("P;PGeneral"),g.push("F;P0;DG0G8;M255"),h["!cols"]&&f(g,h["!cols"]),h["!rows"]&&u(g,h["!rows"]),g.push("B;Y"+(x.e.r-x.s.r+1)+";X"+(x.e.c-x.s.c+1)+";D"+[x.s.c,x.s.r,x.e.c,x.e.r].join(" "));for(var E=x.s.r;E<=x.e.r;++E)for(var R=x.s.c;R<=x.e.c;++R){var F=Ne({r:E,c:R});v=y?(h[E]||[])[R]:h[F],!(!v||v.v==null&&(!v.f||v.F))&&p.push(c(v,h,E,R))}return g.join(w)+w+p.join(w)+w+"E"+w}return{to_workbook:o,to_sheet:s,from_sheet:d}}(),Vh=function(){function e(i,s){switch(s.type){case"base64":return t(Er(i),s);case"binary":return t(i,s);case"buffer":return t(je&&Buffer.isBuffer(i)?i.toString("binary"):qn(i),s);case"array":return t(pa(i),s)}throw new Error("Unrecognized type "+s.type)}function t(i,s){for(var o=i.split(`
|
||
`),c=-1,f=-1,u=0,d=[];u!==o.length;++u){if(o[u].trim()==="BOT"){d[++c]=[],f=0;continue}if(!(c<0)){var h=o[u].trim().split(","),m=h[0],g=h[1];++u;for(var p=o[u]||"";(p.match(/["]/g)||[]).length&1&&u<o.length-1;)p+=`
|
||
`+o[++u];switch(p=p.trim(),+m){case-1:if(p==="BOT"){d[++c]=[],f=0;continue}else if(p!=="EOD")throw new Error("Unrecognized DIF special command "+p);break;case 0:p==="TRUE"?d[c][f]=!0:p==="FALSE"?d[c][f]=!1:isNaN(qr(g))?isNaN(Za(g).getDate())?d[c][f]=g:d[c][f]=ot(g):d[c][f]=qr(g),++f;break;case 1:p=p.slice(1,p.length-1),p=p.replace(/""/g,'"'),p&&p.match(/^=".*"$/)&&(p=p.slice(2,-1)),d[c][f++]=p!==""?p:null;break}if(p==="EOD")break}}return s&&s.sheetRows&&(d=d.slice(0,s.sheetRows)),d}function r(i,s){return ei(e(i,s),s)}function n(i,s){return Qn(r(i,s),s)}var a=function(){var i=function(c,f,u,d,h){c.push(f),c.push(u+","+d),c.push('"'+h.replace(/"/g,'""')+'"')},s=function(c,f,u,d){c.push(f+","+u),c.push(f==1?'"'+d.replace(/"/g,'""')+'"':d)};return function(c){var f=[],u=Ye(c["!ref"]),d,h=Array.isArray(c);i(f,"TABLE",0,1,"sheetjs"),i(f,"VECTORS",0,u.e.r-u.s.r+1,""),i(f,"TUPLES",0,u.e.c-u.s.c+1,""),i(f,"DATA",0,0,"");for(var m=u.s.r;m<=u.e.r;++m){s(f,-1,0,"BOT");for(var g=u.s.c;g<=u.e.c;++g){var p=Ne({r:m,c:g});if(d=h?(c[m]||[])[g]:c[p],!d){s(f,1,0,"");continue}switch(d.t){case"n":var x=d.w;!x&&d.v!=null&&(x=d.v),x==null?d.f&&!d.F?s(f,1,0,"="+d.f):s(f,1,0,""):s(f,0,x,"V");break;case"b":s(f,0,d.v?1:0,d.v?"TRUE":"FALSE");break;case"s":s(f,1,0,isNaN(d.v)?d.v:'="'+d.v+'"');break;case"d":d.w||(d.w=Cr(d.z||Re[14],Bt(ot(d.v)))),s(f,0,d.w,"V");break;default:s(f,1,0,"")}}}s(f,-1,0,"EOD");var v=`\r
|
||
`,y=f.join(v);return y}}();return{to_workbook:n,to_sheet:r,from_sheet:a}}(),Uh=function(){function e(d){return d.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,`
|
||
`)}function t(d){return d.replace(/\\/g,"\\b").replace(/:/g,"\\c").replace(/\n/g,"\\n")}function r(d,h){for(var m=d.split(`
|
||
`),g=-1,p=-1,x=0,v=[];x!==m.length;++x){var y=m[x].trim().split(":");if(y[0]==="cell"){var w=pt(y[1]);if(v.length<=w.r)for(g=v.length;g<=w.r;++g)v[g]||(v[g]=[]);switch(g=w.r,p=w.c,y[2]){case"t":v[g][p]=e(y[3]);break;case"v":v[g][p]=+y[3];break;case"vtf":var E=y[y.length-1];case"vtc":switch(y[3]){case"nl":v[g][p]=!!+y[4];break;default:v[g][p]=+y[4];break}y[2]=="vtf"&&(v[g][p]=[v[g][p],E])}}}return h&&h.sheetRows&&(v=v.slice(0,h.sheetRows)),v}function n(d,h){return ei(r(d,h),h)}function a(d,h){return Qn(n(d,h),h)}var i=["socialcalc:version:1.5","MIME-Version: 1.0","Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave"].join(`
|
||
`),s=["--SocialCalcSpreadsheetControlSave","Content-type: text/plain; charset=UTF-8"].join(`
|
||
`)+`
|
||
`,o=["# SocialCalc Spreadsheet Control Save","part:sheet"].join(`
|
||
`),c="--SocialCalcSpreadsheetControlSave--";function f(d){if(!d||!d["!ref"])return"";for(var h=[],m=[],g,p="",x=xr(d["!ref"]),v=Array.isArray(d),y=x.s.r;y<=x.e.r;++y)for(var w=x.s.c;w<=x.e.c;++w)if(p=Ne({r:y,c:w}),g=v?(d[y]||[])[w]:d[p],!(!g||g.v==null||g.t==="z")){switch(m=["cell",p,"t"],g.t){case"s":case"str":m.push(t(g.v));break;case"n":g.f?(m[2]="vtf",m[3]="n",m[4]=g.v,m[5]=t(g.f)):(m[2]="v",m[3]=g.v);break;case"b":m[2]="vt"+(g.f?"f":"c"),m[3]="nl",m[4]=g.v?"1":"0",m[5]=t(g.f||(g.v?"TRUE":"FALSE"));break;case"d":var E=Bt(ot(g.v));m[2]="vtc",m[3]="nd",m[4]=""+E,m[5]=g.w||Cr(g.z||Re[14],E);break;case"e":continue}h.push(m.join(":"))}return h.push("sheet:c:"+(x.e.c-x.s.c+1)+":r:"+(x.e.r-x.s.r+1)+":tvf:1"),h.push("valueformat:1:text-wiki"),h.join(`
|
||
`)}function u(d){return[i,s,o,s,f(d),c].join(`
|
||
`)}return{to_workbook:a,to_sheet:n,from_sheet:u}}(),ni=function(){function e(u,d,h,m,g){g.raw?d[h][m]=u:u===""||(u==="TRUE"?d[h][m]=!0:u==="FALSE"?d[h][m]=!1:isNaN(qr(u))?isNaN(Za(u).getDate())?d[h][m]=u:d[h][m]=ot(u):d[h][m]=qr(u))}function t(u,d){var h=d||{},m=[];if(!u||u.length===0)return m;for(var g=u.split(/[\r\n]/),p=g.length-1;p>=0&&g[p].length===0;)--p;for(var x=10,v=0,y=0;y<=p;++y)v=g[y].indexOf(" "),v==-1?v=g[y].length:v++,x=Math.max(x,v);for(y=0;y<=p;++y){m[y]=[];var w=0;for(e(g[y].slice(0,x).trim(),m,y,w,h),w=1;w<=(g[y].length-x)/10+1;++w)e(g[y].slice(x+(w-1)*10,x+w*10).trim(),m,y,w,h)}return h.sheetRows&&(m=m.slice(0,h.sheetRows)),m}var r={44:",",9:" ",59:";",124:"|"},n={44:3,9:2,59:1,124:0};function a(u){for(var d={},h=!1,m=0,g=0;m<u.length;++m)(g=u.charCodeAt(m))==34?h=!h:!h&&g in r&&(d[g]=(d[g]||0)+1);g=[];for(m in d)Object.prototype.hasOwnProperty.call(d,m)&&g.push([d[m],m]);if(!g.length){d=n;for(m in d)Object.prototype.hasOwnProperty.call(d,m)&&g.push([d[m],m])}return g.sort(function(p,x){return p[0]-x[0]||n[p[1]]-n[x[1]]}),r[g.pop()[1]]||44}function i(u,d){var h=d||{},m="",g=h.dense?[]:{},p={s:{c:0,r:0},e:{c:0,r:0}};u.slice(0,4)=="sep="?u.charCodeAt(5)==13&&u.charCodeAt(6)==10?(m=u.charAt(4),u=u.slice(7)):u.charCodeAt(5)==13||u.charCodeAt(5)==10?(m=u.charAt(4),u=u.slice(6)):m=a(u.slice(0,1024)):h&&h.FS?m=h.FS:m=a(u.slice(0,1024));var x=0,v=0,y=0,w=0,E=0,R=m.charCodeAt(0),F=!1,C=0,U=u.charCodeAt(0);u=u.replace(/\r\n/mg,`
|
||
`);var S=h.dateNF!=null?m2(h.dateNF):null;function W(){var z=u.slice(w,E),V={};if(z.charAt(0)=='"'&&z.charAt(z.length-1)=='"'&&(z=z.slice(1,-1).replace(/""/g,'"')),z.length===0)V.t="z";else if(h.raw)V.t="s",V.v=z;else if(z.trim().length===0)V.t="s",V.v=z;else if(z.charCodeAt(0)==61)z.charCodeAt(1)==34&&z.charCodeAt(z.length-1)==34?(V.t="s",V.v=z.slice(2,-1).replace(/""/g,'"')):WS(z)?(V.t="n",V.f=z.slice(1)):(V.t="s",V.v=z);else if(z=="TRUE")V.t="b",V.v=!0;else if(z=="FALSE")V.t="b",V.v=!1;else if(!isNaN(y=qr(z)))V.t="n",h.cellText!==!1&&(V.w=z),V.v=y;else if(!isNaN(Za(z).getDate())||S&&z.match(S)){V.z=h.dateNF||Re[14];var j=0;S&&z.match(S)&&(z=p2(z,h.dateNF,z.match(S)||[]),j=1),h.cellDates?(V.t="d",V.v=ot(z,j)):(V.t="n",V.v=Bt(ot(z,j))),h.cellText!==!1&&(V.w=Cr(V.z,V.v instanceof Date?Bt(V.v):V.v)),h.cellNF||delete V.z}else V.t="s",V.v=z;if(V.t=="z"||(h.dense?(g[x]||(g[x]=[]),g[x][v]=V):g[Ne({c:v,r:x})]=V),w=E+1,U=u.charCodeAt(w),p.e.c<v&&(p.e.c=v),p.e.r<x&&(p.e.r=x),C==R)++v;else if(v=0,++x,h.sheetRows&&h.sheetRows<=x)return!0}e:for(;E<u.length;++E)switch(C=u.charCodeAt(E)){case 34:U===34&&(F=!F);break;case R:case 10:case 13:if(!F&&W())break e;break}return E-w>0&&W(),g["!ref"]=We(p),g}function s(u,d){return!(d&&d.PRN)||d.FS||u.slice(0,4)=="sep="||u.indexOf(" ")>=0||u.indexOf(",")>=0||u.indexOf(";")>=0?i(u,d):ei(t(u,d),d)}function o(u,d){var h="",m=d.type=="string"?[0,0,0,0]:jc(u,d);switch(d.type){case"base64":h=Er(u);break;case"binary":h=u;break;case"buffer":d.codepage==65001?h=u.toString("utf8"):d.codepage&&typeof Xn<"u"?h=Xn.utils.decode(d.codepage,u):h=je&&Buffer.isBuffer(u)?u.toString("binary"):qn(u);break;case"array":h=pa(u);break;case"string":h=u;break;default:throw new Error("Unrecognized type "+d.type)}return m[0]==239&&m[1]==187&&m[2]==191?h=nt(h.slice(3)):d.type!="string"&&d.type!="buffer"&&d.codepage==65001?h=nt(h):d.type=="binary"&&typeof Xn<"u"&&d.codepage&&(h=Xn.utils.decode(d.codepage,Xn.utils.encode(28591,h))),h.slice(0,19)=="socialcalc:version:"?Uh.to_sheet(d.type=="string"?h:nt(h),d):s(h,d)}function c(u,d){return Qn(o(u,d),d)}function f(u){for(var d=[],h=Ye(u["!ref"]),m,g=Array.isArray(u),p=h.s.r;p<=h.e.r;++p){for(var x=[],v=h.s.c;v<=h.e.c;++v){var y=Ne({r:p,c:v});if(m=g?(u[p]||[])[v]:u[y],!m||m.v==null){x.push(" ");continue}for(var w=(m.w||(In(m),m.w)||"").slice(0,10);w.length<10;)w+=" ";x.push(w+(v===0?" ":""))}d.push(x.join(""))}return d.join(`
|
||
`)}return{to_workbook:c,to_sheet:o,from_sheet:f}}();function Fb(e,t){var r=t||{},n=!!r.WTF;r.WTF=!0;try{var a=Lh.to_workbook(e,r);return r.WTF=n,a}catch(i){if(r.WTF=n,!i.message.match(/SYLK bad record ID/)&&n)throw i;return ni.to_workbook(e,t)}}var Fa=function(){function e(_,k,b){if(_){Gt(_,_.l||0);for(var A=b.Enum||we;_.l<_.length;){var G=_.read_shift(2),re=A[G]||A[65535],ee=_.read_shift(2),te=_.l+ee,ne=re.f&&re.f(_,ee,b);if(_.l=te,k(ne,re,G))return}}}function t(_,k){switch(k.type){case"base64":return r(Sr(Er(_)),k);case"binary":return r(Sr(_),k);case"buffer":case"array":return r(_,k)}throw"Unsupported type "+k.type}function r(_,k){if(!_)return _;var b=k||{},A=b.dense?[]:{},G="Sheet1",re="",ee=0,te={},ne=[],Ce=[],I={s:{r:0,c:0},e:{r:0,c:0}},fe=b.sheetRows||0;if(_[2]==0&&(_[3]==8||_[3]==9)&&_.length>=16&&_[14]==5&&_[15]===108)throw new Error("Unsupported Works 3 for Mac file");if(_[2]==2)b.Enum=we,e(_,function(me,ht,wr){switch(wr){case 0:b.vers=me,me>=4096&&(b.qpro=!0);break;case 6:I=me;break;case 204:me&&(re=me);break;case 222:re=me;break;case 15:case 51:b.qpro||(me[1].v=me[1].v.slice(1));case 13:case 14:case 16:wr==14&&(me[2]&112)==112&&(me[2]&15)>1&&(me[2]&15)<15&&(me[1].z=b.dateNF||Re[14],b.cellDates&&(me[1].t="d",me[1].v=ho(me[1].v))),b.qpro&&me[3]>ee&&(A["!ref"]=We(I),te[G]=A,ne.push(G),A=b.dense?[]:{},I={s:{r:0,c:0},e:{r:0,c:0}},ee=me[3],G=re||"Sheet"+(ee+1),re="");var jr=b.dense?(A[me[0].r]||[])[me[0].c]:A[Ne(me[0])];if(jr){jr.t=me[1].t,jr.v=me[1].v,me[1].z!=null&&(jr.z=me[1].z),me[1].f!=null&&(jr.f=me[1].f);break}b.dense?(A[me[0].r]||(A[me[0].r]=[]),A[me[0].r][me[0].c]=me[1]):A[Ne(me[0])]=me[1];break}},b);else if(_[2]==26||_[2]==14)b.Enum=D,_[2]==14&&(b.qpro=!0,_.l=0),e(_,function(me,ht,wr){switch(wr){case 204:G=me;break;case 22:me[1].v=me[1].v.slice(1);case 23:case 24:case 25:case 37:case 39:case 40:if(me[3]>ee&&(A["!ref"]=We(I),te[G]=A,ne.push(G),A=b.dense?[]:{},I={s:{r:0,c:0},e:{r:0,c:0}},ee=me[3],G="Sheet"+(ee+1)),fe>0&&me[0].r>=fe)break;b.dense?(A[me[0].r]||(A[me[0].r]=[]),A[me[0].r][me[0].c]=me[1]):A[Ne(me[0])]=me[1],I.e.c<me[0].c&&(I.e.c=me[0].c),I.e.r<me[0].r&&(I.e.r=me[0].r);break;case 27:me[14e3]&&(Ce[me[14e3][0]]=me[14e3][1]);break;case 1537:Ce[me[0]]=me[1],me[0]==ee&&(G=me[1]);break}},b);else throw new Error("Unrecognized LOTUS BOF "+_[2]);if(A["!ref"]=We(I),te[re||G]=A,ne.push(re||G),!Ce.length)return{SheetNames:ne,Sheets:te};for(var ye={},Oe=[],be=0;be<Ce.length;++be)te[ne[be]]?(Oe.push(Ce[be]||ne[be]),ye[Ce[be]]=te[Ce[be]]||te[ne[be]]):(Oe.push(Ce[be]),ye[Ce[be]]={"!ref":"A1"});return{SheetNames:Oe,Sheets:ye}}function n(_,k){var b=k||{};if(+b.codepage>=0&&Kr(+b.codepage),b.type=="string")throw new Error("Cannot write WK1 to JS string");var A=gr(),G=Ye(_["!ref"]),re=Array.isArray(_),ee=[];xe(A,0,i(1030)),xe(A,6,c(G));for(var te=Math.min(G.e.r,8191),ne=G.s.r;ne<=te;++ne)for(var Ce=Et(ne),I=G.s.c;I<=G.e.c;++I){ne===G.s.r&&(ee[I]=mt(I));var fe=ee[I]+Ce,ye=re?(_[ne]||[])[I]:_[fe];if(!(!ye||ye.t=="z"))if(ye.t=="n")(ye.v|0)==ye.v&&ye.v>=-32768&&ye.v<=32767?xe(A,13,m(ne,I,ye.v)):xe(A,14,p(ne,I,ye.v));else{var Oe=In(ye);xe(A,15,d(ne,I,Oe.slice(0,239)))}}return xe(A,1),A.end()}function a(_,k){var b=k||{};if(+b.codepage>=0&&Kr(+b.codepage),b.type=="string")throw new Error("Cannot write WK3 to JS string");var A=gr();xe(A,0,s(_));for(var G=0,re=0;G<_.SheetNames.length;++G)(_.Sheets[_.SheetNames[G]]||{})["!ref"]&&xe(A,27,K(_.SheetNames[G],re++));var ee=0;for(G=0;G<_.SheetNames.length;++G){var te=_.Sheets[_.SheetNames[G]];if(!(!te||!te["!ref"])){for(var ne=Ye(te["!ref"]),Ce=Array.isArray(te),I=[],fe=Math.min(ne.e.r,8191),ye=ne.s.r;ye<=fe;++ye)for(var Oe=Et(ye),be=ne.s.c;be<=ne.e.c;++be){ye===ne.s.r&&(I[be]=mt(be));var me=I[be]+Oe,ht=Ce?(te[ye]||[])[be]:te[me];if(!(!ht||ht.t=="z"))if(ht.t=="n")xe(A,23,W(ye,be,ee,ht.v));else{var wr=In(ht);xe(A,22,C(ye,be,ee,wr.slice(0,239)))}}++ee}}return xe(A,1),A.end()}function i(_){var k=ie(2);return k.write_shift(2,_),k}function s(_){var k=ie(26);k.write_shift(2,4096),k.write_shift(2,4),k.write_shift(4,0);for(var b=0,A=0,G=0,re=0;re<_.SheetNames.length;++re){var ee=_.SheetNames[re],te=_.Sheets[ee];if(!(!te||!te["!ref"])){++G;var ne=xr(te["!ref"]);b<ne.e.r&&(b=ne.e.r),A<ne.e.c&&(A=ne.e.c)}}return b>8191&&(b=8191),k.write_shift(2,b),k.write_shift(1,G),k.write_shift(1,A),k.write_shift(2,0),k.write_shift(2,0),k.write_shift(1,1),k.write_shift(1,2),k.write_shift(4,0),k.write_shift(4,0),k}function o(_,k,b){var A={s:{c:0,r:0},e:{c:0,r:0}};return k==8&&b.qpro?(A.s.c=_.read_shift(1),_.l++,A.s.r=_.read_shift(2),A.e.c=_.read_shift(1),_.l++,A.e.r=_.read_shift(2),A):(A.s.c=_.read_shift(2),A.s.r=_.read_shift(2),k==12&&b.qpro&&(_.l+=2),A.e.c=_.read_shift(2),A.e.r=_.read_shift(2),k==12&&b.qpro&&(_.l+=2),A.s.c==65535&&(A.s.c=A.e.c=A.s.r=A.e.r=0),A)}function c(_){var k=ie(8);return k.write_shift(2,_.s.c),k.write_shift(2,_.s.r),k.write_shift(2,_.e.c),k.write_shift(2,_.e.r),k}function f(_,k,b){var A=[{c:0,r:0},{t:"n",v:0},0,0];return b.qpro&&b.vers!=20768?(A[0].c=_.read_shift(1),A[3]=_.read_shift(1),A[0].r=_.read_shift(2),_.l+=2):(A[2]=_.read_shift(1),A[0].c=_.read_shift(2),A[0].r=_.read_shift(2)),A}function u(_,k,b){var A=_.l+k,G=f(_,k,b);if(G[1].t="s",b.vers==20768){_.l++;var re=_.read_shift(1);return G[1].v=_.read_shift(re,"utf8"),G}return b.qpro&&_.l++,G[1].v=_.read_shift(A-_.l,"cstr"),G}function d(_,k,b){var A=ie(7+b.length);A.write_shift(1,255),A.write_shift(2,k),A.write_shift(2,_),A.write_shift(1,39);for(var G=0;G<A.length;++G){var re=b.charCodeAt(G);A.write_shift(1,re>=128?95:re)}return A.write_shift(1,0),A}function h(_,k,b){var A=f(_,k,b);return A[1].v=_.read_shift(2,"i"),A}function m(_,k,b){var A=ie(7);return A.write_shift(1,255),A.write_shift(2,k),A.write_shift(2,_),A.write_shift(2,b,"i"),A}function g(_,k,b){var A=f(_,k,b);return A[1].v=_.read_shift(8,"f"),A}function p(_,k,b){var A=ie(13);return A.write_shift(1,255),A.write_shift(2,k),A.write_shift(2,_),A.write_shift(8,b,"f"),A}function x(_,k,b){var A=_.l+k,G=f(_,k,b);if(G[1].v=_.read_shift(8,"f"),b.qpro)_.l=A;else{var re=_.read_shift(2);E(_.slice(_.l,_.l+re),G),_.l+=re}return G}function v(_,k,b){var A=k&32768;return k&=-32769,k=(A?_:0)+(k>=8192?k-16384:k),(A?"":"$")+(b?mt(k):Et(k))}var y={51:["FALSE",0],52:["TRUE",0],70:["LEN",1],80:["SUM",69],81:["AVERAGEA",69],82:["COUNTA",69],83:["MINA",69],84:["MAXA",69],111:["T",1]},w=["","","","","","","","","","+","-","*","/","^","=","<>","<=",">=","<",">","","","","","&","","","","","","",""];function E(_,k){Gt(_,0);for(var b=[],A=0,G="",re="",ee="",te="";_.l<_.length;){var ne=_[_.l++];switch(ne){case 0:b.push(_.read_shift(8,"f"));break;case 1:re=v(k[0].c,_.read_shift(2),!0),G=v(k[0].r,_.read_shift(2),!1),b.push(re+G);break;case 2:{var Ce=v(k[0].c,_.read_shift(2),!0),I=v(k[0].r,_.read_shift(2),!1);re=v(k[0].c,_.read_shift(2),!0),G=v(k[0].r,_.read_shift(2),!1),b.push(Ce+I+":"+re+G)}break;case 3:if(_.l<_.length){console.error("WK1 premature formula end");return}break;case 4:b.push("("+b.pop()+")");break;case 5:b.push(_.read_shift(2));break;case 6:{for(var fe="";ne=_[_.l++];)fe+=String.fromCharCode(ne);b.push('"'+fe.replace(/"/g,'""')+'"')}break;case 8:b.push("-"+b.pop());break;case 23:b.push("+"+b.pop());break;case 22:b.push("NOT("+b.pop()+")");break;case 20:case 21:te=b.pop(),ee=b.pop(),b.push(["AND","OR"][ne-20]+"("+ee+","+te+")");break;default:if(ne<32&&w[ne])te=b.pop(),ee=b.pop(),b.push(ee+w[ne]+te);else if(y[ne]){if(A=y[ne][1],A==69&&(A=_[_.l++]),A>b.length){console.error("WK1 bad formula parse 0x"+ne.toString(16)+":|"+b.join("|")+"|");return}var ye=b.slice(-A);b.length-=A,b.push(y[ne][0]+"("+ye.join(",")+")")}else return ne<=7?console.error("WK1 invalid opcode "+ne.toString(16)):ne<=24?console.error("WK1 unsupported op "+ne.toString(16)):ne<=30?console.error("WK1 invalid opcode "+ne.toString(16)):ne<=115?console.error("WK1 unsupported function opcode "+ne.toString(16)):console.error("WK1 unrecognized opcode "+ne.toString(16))}}b.length==1?k[1].f=""+b[0]:console.error("WK1 bad formula parse |"+b.join("|")+"|")}function R(_){var k=[{c:0,r:0},{t:"n",v:0},0];return k[0].r=_.read_shift(2),k[3]=_[_.l++],k[0].c=_[_.l++],k}function F(_,k){var b=R(_);return b[1].t="s",b[1].v=_.read_shift(k-4,"cstr"),b}function C(_,k,b,A){var G=ie(6+A.length);G.write_shift(2,_),G.write_shift(1,b),G.write_shift(1,k),G.write_shift(1,39);for(var re=0;re<A.length;++re){var ee=A.charCodeAt(re);G.write_shift(1,ee>=128?95:ee)}return G.write_shift(1,0),G}function U(_,k){var b=R(_);b[1].v=_.read_shift(2);var A=b[1].v>>1;if(b[1].v&1)switch(A&7){case 0:A=(A>>3)*5e3;break;case 1:A=(A>>3)*500;break;case 2:A=(A>>3)/20;break;case 3:A=(A>>3)/200;break;case 4:A=(A>>3)/2e3;break;case 5:A=(A>>3)/2e4;break;case 6:A=(A>>3)/16;break;case 7:A=(A>>3)/64;break}return b[1].v=A,b}function S(_,k){var b=R(_),A=_.read_shift(4),G=_.read_shift(4),re=_.read_shift(2);if(re==65535)return A===0&&G===3221225472?(b[1].t="e",b[1].v=15):A===0&&G===3489660928?(b[1].t="e",b[1].v=42):b[1].v=0,b;var ee=re&32768;return re=(re&32767)-16446,b[1].v=(1-ee*2)*(G*Math.pow(2,re+32)+A*Math.pow(2,re)),b}function W(_,k,b,A){var G=ie(14);if(G.write_shift(2,_),G.write_shift(1,b),G.write_shift(1,k),A==0)return G.write_shift(4,0),G.write_shift(4,0),G.write_shift(2,65535),G;var re=0,ee=0,te=0,ne=0;return A<0&&(re=1,A=-A),ee=Math.log2(A)|0,A/=Math.pow(2,ee-31),ne=A>>>0,ne&2147483648||(A/=2,++ee,ne=A>>>0),A-=ne,ne|=2147483648,ne>>>=0,A*=Math.pow(2,32),te=A>>>0,G.write_shift(4,te),G.write_shift(4,ne),ee+=16383+(re?32768:0),G.write_shift(2,ee),G}function z(_,k){var b=S(_);return _.l+=k-14,b}function V(_,k){var b=R(_),A=_.read_shift(4);return b[1].v=A>>6,b}function j(_,k){var b=R(_),A=_.read_shift(8,"f");return b[1].v=A,b}function H(_,k){var b=j(_);return _.l+=k-10,b}function Y(_,k){return _[_.l+k-1]==0?_.read_shift(k,"cstr"):""}function ae(_,k){var b=_[_.l++];b>k-1&&(b=k-1);for(var A="";A.length<b;)A+=String.fromCharCode(_[_.l++]);return A}function se(_,k,b){if(!(!b.qpro||k<21)){var A=_.read_shift(1);_.l+=17,_.l+=1,_.l+=2;var G=_.read_shift(k-21,"cstr");return[A,G]}}function de(_,k){for(var b={},A=_.l+k;_.l<A;){var G=_.read_shift(2);if(G==14e3){for(b[G]=[0,""],b[G][0]=_.read_shift(2);_[_.l];)b[G][1]+=String.fromCharCode(_[_.l]),_.l++;_.l++}}return b}function K(_,k){var b=ie(5+_.length);b.write_shift(2,14e3),b.write_shift(2,k);for(var A=0;A<_.length;++A){var G=_.charCodeAt(A);b[b.l++]=G>127?95:G}return b[b.l++]=0,b}var we={0:{n:"BOF",f:Ft},1:{n:"EOF"},2:{n:"CALCMODE"},3:{n:"CALCORDER"},4:{n:"SPLIT"},5:{n:"SYNC"},6:{n:"RANGE",f:o},7:{n:"WINDOW1"},8:{n:"COLW1"},9:{n:"WINTWO"},10:{n:"COLW2"},11:{n:"NAME"},12:{n:"BLANK"},13:{n:"INTEGER",f:h},14:{n:"NUMBER",f:g},15:{n:"LABEL",f:u},16:{n:"FORMULA",f:x},24:{n:"TABLE"},25:{n:"ORANGE"},26:{n:"PRANGE"},27:{n:"SRANGE"},28:{n:"FRANGE"},29:{n:"KRANGE1"},32:{n:"HRANGE"},35:{n:"KRANGE2"},36:{n:"PROTEC"},37:{n:"FOOTER"},38:{n:"HEADER"},39:{n:"SETUP"},40:{n:"MARGINS"},41:{n:"LABELFMT"},42:{n:"TITLES"},43:{n:"SHEETJS"},45:{n:"GRAPH"},46:{n:"NGRAPH"},47:{n:"CALCCOUNT"},48:{n:"UNFORMATTED"},49:{n:"CURSORW12"},50:{n:"WINDOW"},51:{n:"STRING",f:u},55:{n:"PASSWORD"},56:{n:"LOCKED"},60:{n:"QUERY"},61:{n:"QUERYNAME"},62:{n:"PRINT"},63:{n:"PRINTNAME"},64:{n:"GRAPH2"},65:{n:"GRAPHNAME"},66:{n:"ZOOM"},67:{n:"SYMSPLIT"},68:{n:"NSROWS"},69:{n:"NSCOLS"},70:{n:"RULER"},71:{n:"NNAME"},72:{n:"ACOMM"},73:{n:"AMACRO"},74:{n:"PARSE"},102:{n:"PRANGES??"},103:{n:"RRANGES??"},104:{n:"FNAME??"},105:{n:"MRANGES??"},204:{n:"SHEETNAMECS",f:Y},222:{n:"SHEETNAMELP",f:ae},65535:{n:""}},D={0:{n:"BOF"},1:{n:"EOF"},2:{n:"PASSWORD"},3:{n:"CALCSET"},4:{n:"WINDOWSET"},5:{n:"SHEETCELLPTR"},6:{n:"SHEETLAYOUT"},7:{n:"COLUMNWIDTH"},8:{n:"HIDDENCOLUMN"},9:{n:"USERRANGE"},10:{n:"SYSTEMRANGE"},11:{n:"ZEROFORCE"},12:{n:"SORTKEYDIR"},13:{n:"FILESEAL"},14:{n:"DATAFILLNUMS"},15:{n:"PRINTMAIN"},16:{n:"PRINTSTRING"},17:{n:"GRAPHMAIN"},18:{n:"GRAPHSTRING"},19:{n:"??"},20:{n:"ERRCELL"},21:{n:"NACELL"},22:{n:"LABEL16",f:F},23:{n:"NUMBER17",f:S},24:{n:"NUMBER18",f:U},25:{n:"FORMULA19",f:z},26:{n:"FORMULA1A"},27:{n:"XFORMAT",f:de},28:{n:"DTLABELMISC"},29:{n:"DTLABELCELL"},30:{n:"GRAPHWINDOW"},31:{n:"CPA"},32:{n:"LPLAUTO"},33:{n:"QUERY"},34:{n:"HIDDENSHEET"},35:{n:"??"},37:{n:"NUMBER25",f:V},38:{n:"??"},39:{n:"NUMBER27",f:j},40:{n:"FORMULA28",f:H},142:{n:"??"},147:{n:"??"},150:{n:"??"},151:{n:"??"},152:{n:"??"},153:{n:"??"},154:{n:"??"},155:{n:"??"},156:{n:"??"},163:{n:"??"},174:{n:"??"},175:{n:"??"},176:{n:"??"},177:{n:"??"},184:{n:"??"},185:{n:"??"},186:{n:"??"},187:{n:"??"},188:{n:"??"},195:{n:"??"},201:{n:"??"},204:{n:"SHEETNAMECS",f:Y},205:{n:"??"},206:{n:"??"},207:{n:"??"},208:{n:"??"},256:{n:"??"},259:{n:"??"},260:{n:"??"},261:{n:"??"},262:{n:"??"},263:{n:"??"},265:{n:"??"},266:{n:"??"},267:{n:"??"},268:{n:"??"},270:{n:"??"},271:{n:"??"},384:{n:"??"},389:{n:"??"},390:{n:"??"},393:{n:"??"},396:{n:"??"},512:{n:"??"},514:{n:"??"},513:{n:"??"},516:{n:"??"},517:{n:"??"},640:{n:"??"},641:{n:"??"},642:{n:"??"},643:{n:"??"},644:{n:"??"},645:{n:"??"},646:{n:"??"},647:{n:"??"},648:{n:"??"},658:{n:"??"},659:{n:"??"},660:{n:"??"},661:{n:"??"},662:{n:"??"},665:{n:"??"},666:{n:"??"},768:{n:"??"},772:{n:"??"},1537:{n:"SHEETINFOQP",f:se},1600:{n:"??"},1602:{n:"??"},1793:{n:"??"},1794:{n:"??"},1795:{n:"??"},1796:{n:"??"},1920:{n:"??"},2048:{n:"??"},2049:{n:"??"},2052:{n:"??"},2688:{n:"??"},10998:{n:"??"},12849:{n:"??"},28233:{n:"??"},28484:{n:"??"},65535:{n:""}};return{sheet_to_wk1:n,book_to_wk3:a,to_workbook:t}}();function Ab(e){var t={},r=e.match(qt),n=0,a=!1;if(r)for(;n!=r.length;++n){var i=Me(r[n]);switch(i[0].replace(/\w*:/g,"")){case"<condense":break;case"<extend":break;case"<shadow":if(!i.val)break;case"<shadow>":case"<shadow/>":t.shadow=1;break;case"</shadow>":break;case"<charset":if(i.val=="1")break;t.cp=Ml[parseInt(i.val,10)];break;case"<outline":if(!i.val)break;case"<outline>":case"<outline/>":t.outline=1;break;case"</outline>":break;case"<rFont":t.name=i.val;break;case"<sz":t.sz=i.val;break;case"<strike":if(!i.val)break;case"<strike>":case"<strike/>":t.strike=1;break;case"</strike>":break;case"<u":if(!i.val)break;switch(i.val){case"double":t.uval="double";break;case"singleAccounting":t.uval="single-accounting";break;case"doubleAccounting":t.uval="double-accounting";break}case"<u>":case"<u/>":t.u=1;break;case"</u>":break;case"<b":if(i.val=="0")break;case"<b>":case"<b/>":t.b=1;break;case"</b>":break;case"<i":if(i.val=="0")break;case"<i>":case"<i/>":t.i=1;break;case"</i>":break;case"<color":i.rgb&&(t.color=i.rgb.slice(2,8));break;case"<color>":case"<color/>":case"</color>":break;case"<family":t.family=i.val;break;case"<family>":case"<family/>":case"</family>":break;case"<vertAlign":t.valign=i.val;break;case"<vertAlign>":case"<vertAlign/>":case"</vertAlign>":break;case"<scheme":break;case"<scheme>":case"<scheme/>":case"</scheme>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;default:if(i[0].charCodeAt(1)!==47&&!a)throw new Error("Unrecognized rich format "+i[0])}}return t}var Db=function(){var e=Gi("t"),t=Gi("rPr");function r(i){var s=i.match(e);if(!s)return{t:"s",v:""};var o={t:"s",v:Ke(s[1])},c=i.match(t);return c&&(o.s=Ab(c[1])),o}var n=/<(?:\w+:)?r>/g,a=/<\/(?:\w+:)?r>/;return function(s){return s.replace(n,"").split(a).map(r).filter(function(o){return o.v})}}(),Rb=function(){var t=/(\r\n|\n)/g;function r(a,i,s){var o=[];a.u&&o.push("text-decoration: underline;"),a.uval&&o.push("text-underline-style:"+a.uval+";"),a.sz&&o.push("font-size:"+a.sz+"pt;"),a.outline&&o.push("text-effect: outline;"),a.shadow&&o.push("text-shadow: auto;"),i.push('<span style="'+o.join("")+'">'),a.b&&(i.push("<b>"),s.push("</b>")),a.i&&(i.push("<i>"),s.push("</i>")),a.strike&&(i.push("<s>"),s.push("</s>"));var c=a.valign||"";return c=="superscript"||c=="super"?c="sup":c=="subscript"&&(c="sub"),c!=""&&(i.push("<"+c+">"),s.push("</"+c+">")),s.push("</span>"),a}function n(a){var i=[[],a.v,[]];return a.v?(a.s&&r(a.s,i[0],i[2]),i[0].join("")+i[1].replace(t,"<br/>")+i[2].join("")):""}return function(i){return i.map(n).join("")}}(),Ob=/<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g,Bb=/<(?:\w+:)?r>/,Nb=/<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g;function _c(e,t){var r=t?t.cellHTML:!0,n={};return e?(e.match(/^\s*<(?:\w+:)?t[^>]*>/)?(n.t=Ke(nt(e.slice(e.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")),n.r=nt(e),r&&(n.h=Kl(n.t))):e.match(Bb)&&(n.r=nt(e),n.t=Ke(nt((e.replace(Nb,"").match(Ob)||[]).join("").replace(qt,""))),r&&(n.h=Rb(Db(n.r)))),n):{t:""}}var Ib=/<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/,Pb=/<(?:\w+:)?(?:si|sstItem)>/g,Mb=/<\/(?:\w+:)?(?:si|sstItem)>/;function Lb(e,t){var r=[],n="";if(!e)return r;var a=e.match(Ib);if(a){n=a[2].replace(Pb,"").split(Mb);for(var i=0;i!=n.length;++i){var s=_c(n[i].trim(),t);s!=null&&(r[r.length]=s)}a=Me(a[1]),r.Count=a.count,r.Unique=a.uniqueCount}return r}var Vb=/^\s|\s$|[\t\n\r]/;function $h(e,t){if(!t.bookSST)return"";var r=[bt];r[r.length]=ge("sst",null,{xmlns:ga[0],count:e.Count,uniqueCount:e.Unique});for(var n=0;n!=e.length;++n)if(e[n]!=null){var a=e[n],i="<si>";a.r?i+=a.r:(i+="<t",a.t||(a.t=""),a.t.match(Vb)&&(i+=' xml:space="preserve"'),i+=">"+Qe(a.t)+"</t>"),i+="</si>",r[r.length]=i}return r.length>2&&(r[r.length]="</sst>",r[1]=r[1].replace("/>",">")),r.join("")}function Ub(e){return[e.read_shift(4),e.read_shift(4)]}function $b(e,t){var r=[],n=!1;return Nn(e,function(i,s,o){switch(o){case 159:r.Count=i[0],r.Unique=i[1];break;case 19:r.push(i);break;case 160:return!0;case 35:n=!0;break;case 36:n=!1;break;default:if(s.T,!n||t.WTF)throw new Error("Unexpected record 0x"+o.toString(16))}}),r}function Wb(e,t){return t||(t=ie(8)),t.write_shift(4,e.Count),t.write_shift(4,e.Unique),t}var Hb=Q2;function jb(e){var t=gr();ce(t,159,Wb(e));for(var r=0;r<e.length;++r)ce(t,19,Hb(e[r]));return ce(t,160),t.end()}function Wh(e){for(var t=[],r=e.split(""),n=0;n<r.length;++n)t[n]=r[n].charCodeAt(0);return t}function Mn(e,t){var r={};return r.Major=e.read_shift(2),r.Minor=e.read_shift(2),t>=4&&(e.l+=t-4),r}function zb(e){var t={};return t.id=e.read_shift(0,"lpp4"),t.R=Mn(e,4),t.U=Mn(e,4),t.W=Mn(e,4),t}function Gb(e){for(var t=e.read_shift(4),r=e.l+t-4,n={},a=e.read_shift(4),i=[];a-- >0;)i.push({t:e.read_shift(4),v:e.read_shift(0,"lpp4")});if(n.name=e.read_shift(0,"lpp4"),n.comps=i,e.l!=r)throw new Error("Bad DataSpaceMapEntry: "+e.l+" != "+r);return n}function Xb(e){var t=[];e.l+=4;for(var r=e.read_shift(4);r-- >0;)t.push(Gb(e));return t}function Kb(e){var t=[];e.l+=4;for(var r=e.read_shift(4);r-- >0;)t.push(e.read_shift(0,"lpp4"));return t}function Yb(e){var t={};return e.read_shift(4),e.l+=4,t.id=e.read_shift(0,"lpp4"),t.name=e.read_shift(0,"lpp4"),t.R=Mn(e,4),t.U=Mn(e,4),t.W=Mn(e,4),t}function qb(e){var t=Yb(e);if(t.ename=e.read_shift(0,"8lpp4"),t.blksz=e.read_shift(4),t.cmode=e.read_shift(4),e.read_shift(4)!=4)throw new Error("Bad !Primary record");return t}function Hh(e,t){var r=e.l+t,n={};n.Flags=e.read_shift(4)&63,e.l+=4,n.AlgID=e.read_shift(4);var a=!1;switch(n.AlgID){case 26126:case 26127:case 26128:a=n.Flags==36;break;case 26625:a=n.Flags==4;break;case 0:a=n.Flags==16||n.Flags==4||n.Flags==36;break;default:throw"Unrecognized encryption algorithm: "+n.AlgID}if(!a)throw new Error("Encryption Flags/AlgID mismatch");return n.AlgIDHash=e.read_shift(4),n.KeySize=e.read_shift(4),n.ProviderType=e.read_shift(4),e.l+=8,n.CSPName=e.read_shift(r-e.l>>1,"utf16le"),e.l=r,n}function jh(e,t){var r={},n=e.l+t;return e.l+=4,r.Salt=e.slice(e.l,e.l+16),e.l+=16,r.Verifier=e.slice(e.l,e.l+16),e.l+=16,e.read_shift(4),r.VerifierHash=e.slice(e.l,n),e.l=n,r}function Jb(e){var t=Mn(e);switch(t.Minor){case 2:return[t.Minor,Zb(e)];case 3:return[t.Minor,Qb()];case 4:return[t.Minor,eE(e)]}throw new Error("ECMA-376 Encrypted file unrecognized Version: "+t.Minor)}function Zb(e){var t=e.read_shift(4);if((t&63)!=36)throw new Error("EncryptionInfo mismatch");var r=e.read_shift(4),n=Hh(e,r),a=jh(e,e.length-e.l);return{t:"Std",h:n,v:a}}function Qb(){throw new Error("File is password-protected: ECMA-376 Extensible")}function eE(e){var t=["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"];e.l+=4;var r=e.read_shift(e.length-e.l,"utf8"),n={};return r.replace(qt,function(i){var s=Me(i);switch(pn(s[0])){case"<?xml":break;case"<encryption":case"</encryption>":break;case"<keyData":t.forEach(function(o){n[o]=s[o]});break;case"<dataIntegrity":n.encryptedHmacKey=s.encryptedHmacKey,n.encryptedHmacValue=s.encryptedHmacValue;break;case"<keyEncryptors>":case"<keyEncryptors":n.encs=[];break;case"</keyEncryptors>":break;case"<keyEncryptor":n.uri=s.uri;break;case"</keyEncryptor>":break;case"<encryptedKey":n.encs.push(s);break;default:throw s[0]}}),n}function tE(e,t){var r={},n=r.EncryptionVersionInfo=Mn(e,4);if(t-=4,n.Minor!=2)throw new Error("unrecognized minor version code: "+n.Minor);if(n.Major>4||n.Major<2)throw new Error("unrecognized major version code: "+n.Major);r.Flags=e.read_shift(4),t-=4;var a=e.read_shift(4);return t-=4,r.EncryptionHeader=Hh(e,a),t-=a,r.EncryptionVerifier=jh(e,t),r}function rE(e){var t={},r=t.EncryptionVersionInfo=Mn(e,4);if(r.Major!=1||r.Minor!=1)throw"unrecognized version code "+r.Major+" : "+r.Minor;return t.Salt=e.read_shift(16),t.EncryptedVerifier=e.read_shift(16),t.EncryptedVerifierHash=e.read_shift(16),t}function yc(e){var t=0,r,n=Wh(e),a=n.length+1,i,s,o,c,f;for(r=Yn(a),r[0]=n.length,i=1;i!=a;++i)r[i]=n[i-1];for(i=a-1;i>=0;--i)s=r[i],o=t&16384?1:0,c=t<<1&32767,f=o|c,t=f^s;return t^52811}var zh=function(){var e=[187,255,255,186,255,255,185,128,0,190,15,0,191,15,0],t=[57840,7439,52380,33984,4364,3600,61902,12606,6258,57657,54287,34041,10252,43370,20163],r=[44796,19929,39858,10053,20106,40212,10761,31585,63170,64933,60267,50935,40399,11199,17763,35526,1453,2906,5812,11624,23248,885,1770,3540,7080,14160,28320,56640,55369,41139,20807,41614,21821,43642,17621,28485,56970,44341,19019,38038,14605,29210,60195,50791,40175,10751,21502,43004,24537,18387,36774,3949,7898,15796,31592,63184,47201,24803,49606,37805,14203,28406,56812,17824,35648,1697,3394,6788,13576,27152,43601,17539,35078,557,1114,2228,4456,30388,60776,51953,34243,7079,14158,28316,14128,28256,56512,43425,17251,34502,7597,13105,26210,52420,35241,883,1766,3532,4129,8258,16516,33032,4657,9314,18628],n=function(s){return(s/2|s*128)&255},a=function(s,o){return n(s^o)},i=function(s){for(var o=t[s.length-1],c=104,f=s.length-1;f>=0;--f)for(var u=s[f],d=0;d!=7;++d)u&64&&(o^=r[c]),u*=2,--c;return o};return function(s){for(var o=Wh(s),c=i(o),f=o.length,u=Yn(16),d=0;d!=16;++d)u[d]=0;var h,m,g;for((f&1)===1&&(h=c>>8,u[f]=a(e[0],h),--f,h=c&255,m=o[o.length-1],u[f]=a(m,h));f>0;)--f,h=c>>8,u[f]=a(o[f],h),--f,h=c&255,u[f]=a(o[f],h);for(f=15,g=15-o.length;g>0;)h=c>>8,u[f]=a(e[g],h),--f,--g,h=c&255,u[f]=a(o[f],h),--f,--g;return u}}(),nE=function(e,t,r,n,a){a||(a=t),n||(n=zh(e));var i,s;for(i=0;i!=t.length;++i)s=t[i],s^=n[r],s=(s>>5|s<<3)&255,a[i]=s,++r;return[a,r,n]},aE=function(e){var t=0,r=zh(e);return function(n){var a=nE("",n,t,r);return t=a[1],a[0]}};function iE(e,t,r,n){var a={key:Ft(e),verificationBytes:Ft(e)};return r.password&&(a.verifier=yc(r.password)),n.valid=a.verificationBytes===a.verifier,n.valid&&(n.insitu=aE(r.password)),a}function sE(e,t,r){var n=r||{};return n.Info=e.read_shift(2),e.l-=2,n.Info===1?n.Data=rE(e):n.Data=tE(e,t),n}function oE(e,t,r){var n={Type:r.biff>=8?e.read_shift(2):0};return n.Type?sE(e,t-2,n):iE(e,r.biff>=8?t:t-2,r,n),n}var Gh=function(){function e(a,i){switch(i.type){case"base64":return t(Er(a),i);case"binary":return t(a,i);case"buffer":return t(je&&Buffer.isBuffer(a)?a.toString("binary"):qn(a),i);case"array":return t(pa(a),i)}throw new Error("Unrecognized type "+i.type)}function t(a,i){var s=i||{},o=s.dense?[]:{},c=a.match(/\\trowd.*?\\row\b/g);if(!c.length)throw new Error("RTF missing table");var f={s:{c:0,r:0},e:{c:0,r:c.length-1}};return c.forEach(function(u,d){Array.isArray(o)&&(o[d]=[]);for(var h=/\\\w+\b/g,m=0,g,p=-1;g=h.exec(u);){switch(g[0]){case"\\cell":var x=u.slice(m,h.lastIndex-g[0].length);if(x[0]==" "&&(x=x.slice(1)),++p,x.length){var v={v:x,t:"s"};Array.isArray(o)?o[d][p]=v:o[Ne({r:d,c:p})]=v}break}m=h.lastIndex}p>f.e.c&&(f.e.c=p)}),o["!ref"]=We(f),o}function r(a,i){return Qn(e(a,i),i)}function n(a){for(var i=["{\\rtf1\\ansi"],s=Ye(a["!ref"]),o,c=Array.isArray(a),f=s.s.r;f<=s.e.r;++f){i.push("\\trowd\\trautofit1");for(var u=s.s.c;u<=s.e.c;++u)i.push("\\cellx"+(u+1));for(i.push("\\pard\\intbl"),u=s.s.c;u<=s.e.c;++u){var d=Ne({r:f,c:u});o=c?(a[f]||[])[u]:a[d],!(!o||o.v==null&&(!o.f||o.F))&&(i.push(" "+(o.w||(In(o),o.w))),i.push("\\cell"))}i.push("\\pard\\intbl\\row")}return i.join("")+"}"}return{to_workbook:r,to_sheet:e,from_sheet:n}}();function lE(e){var t=e.slice(e[0]==="#"?1:0).slice(0,6);return[parseInt(t.slice(0,2),16),parseInt(t.slice(2,4),16),parseInt(t.slice(4,6),16)]}function ns(e){for(var t=0,r=1;t!=3;++t)r=r*256+(e[t]>255?255:e[t]<0?0:e[t]);return r.toString(16).toUpperCase().slice(1)}function cE(e){var t=e[0]/255,r=e[1]/255,n=e[2]/255,a=Math.max(t,r,n),i=Math.min(t,r,n),s=a-i;if(s===0)return[0,0,t];var o=0,c=0,f=a+i;switch(c=s/(f>1?2-f:f),a){case t:o=((r-n)/s+6)%6;break;case r:o=(n-t)/s+2;break;case n:o=(t-r)/s+4;break}return[o/6,c,f/2]}function fE(e){var t=e[0],r=e[1],n=e[2],a=r*2*(n<.5?n:1-n),i=n-a/2,s=[i,i,i],o=6*t,c;if(r!==0)switch(o|0){case 0:case 6:c=a*o,s[0]+=a,s[1]+=c;break;case 1:c=a*(2-o),s[0]+=c,s[1]+=a;break;case 2:c=a*(o-2),s[1]+=a,s[2]+=c;break;case 3:c=a*(4-o),s[1]+=c,s[2]+=a;break;case 4:c=a*(o-4),s[2]+=a,s[0]+=c;break;case 5:c=a*(6-o),s[2]+=c,s[0]+=a;break}for(var f=0;f!=3;++f)s[f]=Math.round(s[f]*255);return s}function Co(e,t){if(t===0)return e;var r=cE(lE(e));return t<0?r[2]=r[2]*(1+t):r[2]=1-(1-r[2])*(1-t),ns(fE(r))}var Xh=6,uE=15,dE=1,tr=Xh;function as(e){return Math.floor((e+Math.round(128/tr)/256)*tr)}function is(e){return Math.floor((e-5)/tr*100+.5)/100}function To(e){return Math.round((e*tr+5)/tr*256)/256}function kc(e){return To(is(as(e)))}function bc(e){var t=Math.abs(e-kc(e)),r=tr;if(t>.005)for(tr=dE;tr<uE;++tr)Math.abs(e-kc(e))<=t&&(t=Math.abs(e-kc(e)),r=tr);tr=r}function ta(e){e.width?(e.wpx=as(e.width),e.wch=is(e.wpx),e.MDW=tr):e.wpx?(e.wch=is(e.wpx),e.width=To(e.wch),e.MDW=tr):typeof e.wch=="number"&&(e.width=To(e.wch),e.wpx=as(e.width),e.MDW=tr),e.customWidth&&delete e.customWidth}var hE=96,Kh=hE;function ss(e){return e*96/Kh}function ai(e){return e*Kh/96}var mE={None:"none",Solid:"solid",Gray50:"mediumGray",Gray75:"darkGray",Gray25:"lightGray",HorzStripe:"darkHorizontal",VertStripe:"darkVertical",ReverseDiagStripe:"darkDown",DiagStripe:"darkUp",DiagCross:"darkGrid",ThickDiagCross:"darkTrellis",ThinHorzStripe:"lightHorizontal",ThinVertStripe:"lightVertical",ThinReverseDiagStripe:"lightDown",ThinHorzCross:"lightGrid"};function pE(e,t,r,n){t.Borders=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(s);switch(pn(o[0])){case"<borders":case"<borders>":case"</borders>":break;case"<border":case"<border>":case"<border/>":a={},o.diagonalUp&&(a.diagonalUp=ct(o.diagonalUp)),o.diagonalDown&&(a.diagonalDown=ct(o.diagonalDown)),t.Borders.push(a);break;case"</border>":break;case"<left/>":break;case"<left":case"<left>":break;case"</left>":break;case"<right/>":break;case"<right":case"<right>":break;case"</right>":break;case"<top/>":break;case"<top":case"<top>":break;case"</top>":break;case"<bottom/>":break;case"<bottom":case"<bottom>":break;case"</bottom>":break;case"<diagonal":case"<diagonal>":case"<diagonal/>":break;case"</diagonal>":break;case"<horizontal":case"<horizontal>":case"<horizontal/>":break;case"</horizontal>":break;case"<vertical":case"<vertical>":case"<vertical/>":break;case"</vertical>":break;case"<start":case"<start>":case"<start/>":break;case"</start>":break;case"<end":case"<end>":case"<end/>":break;case"</end>":break;case"<color":case"<color>":break;case"<color/>":case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in borders")}})}function gE(e,t,r,n){t.Fills=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(s);switch(pn(o[0])){case"<fills":case"<fills>":case"</fills>":break;case"<fill>":case"<fill":case"<fill/>":a={},t.Fills.push(a);break;case"</fill>":break;case"<gradientFill>":break;case"<gradientFill":case"</gradientFill>":t.Fills.push(a),a={};break;case"<patternFill":case"<patternFill>":o.patternType&&(a.patternType=o.patternType);break;case"<patternFill/>":case"</patternFill>":break;case"<bgColor":a.bgColor||(a.bgColor={}),o.indexed&&(a.bgColor.indexed=parseInt(o.indexed,10)),o.theme&&(a.bgColor.theme=parseInt(o.theme,10)),o.tint&&(a.bgColor.tint=parseFloat(o.tint)),o.rgb&&(a.bgColor.rgb=o.rgb.slice(-6));break;case"<bgColor/>":case"</bgColor>":break;case"<fgColor":a.fgColor||(a.fgColor={}),o.theme&&(a.fgColor.theme=parseInt(o.theme,10)),o.tint&&(a.fgColor.tint=parseFloat(o.tint)),o.rgb!=null&&(a.fgColor.rgb=o.rgb.slice(-6));break;case"<fgColor/>":case"</fgColor>":break;case"<stop":case"<stop/>":break;case"</stop>":break;case"<color":case"<color/>":break;case"</color>":break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in fills")}})}function xE(e,t,r,n){t.Fonts=[];var a={},i=!1;(e[0].match(qt)||[]).forEach(function(s){var o=Me(s);switch(pn(o[0])){case"<fonts":case"<fonts>":case"</fonts>":break;case"<font":case"<font>":break;case"</font>":case"<font/>":t.Fonts.push(a),a={};break;case"<name":o.val&&(a.name=nt(o.val));break;case"<name/>":case"</name>":break;case"<b":a.bold=o.val?ct(o.val):1;break;case"<b/>":a.bold=1;break;case"<i":a.italic=o.val?ct(o.val):1;break;case"<i/>":a.italic=1;break;case"<u":switch(o.val){case"none":a.underline=0;break;case"single":a.underline=1;break;case"double":a.underline=2;break;case"singleAccounting":a.underline=33;break;case"doubleAccounting":a.underline=34;break}break;case"<u/>":a.underline=1;break;case"<strike":a.strike=o.val?ct(o.val):1;break;case"<strike/>":a.strike=1;break;case"<outline":a.outline=o.val?ct(o.val):1;break;case"<outline/>":a.outline=1;break;case"<shadow":a.shadow=o.val?ct(o.val):1;break;case"<shadow/>":a.shadow=1;break;case"<condense":a.condense=o.val?ct(o.val):1;break;case"<condense/>":a.condense=1;break;case"<extend":a.extend=o.val?ct(o.val):1;break;case"<extend/>":a.extend=1;break;case"<sz":o.val&&(a.sz=+o.val);break;case"<sz/>":case"</sz>":break;case"<vertAlign":o.val&&(a.vertAlign=o.val);break;case"<vertAlign/>":case"</vertAlign>":break;case"<family":o.val&&(a.family=parseInt(o.val,10));break;case"<family/>":case"</family>":break;case"<scheme":o.val&&(a.scheme=o.val);break;case"<scheme/>":case"</scheme>":break;case"<charset":if(o.val=="1")break;o.codepage=Ml[parseInt(o.val,10)];break;case"<color":if(a.color||(a.color={}),o.auto&&(a.color.auto=ct(o.auto)),o.rgb)a.color.rgb=o.rgb.slice(-6);else if(o.indexed){a.color.index=parseInt(o.indexed,10);var c=ba[a.color.index];a.color.index==81&&(c=ba[1]),c||(c=ba[1]),a.color.rgb=c[0].toString(16)+c[1].toString(16)+c[2].toString(16)}else o.theme&&(a.color.theme=parseInt(o.theme,10),o.tint&&(a.color.tint=parseFloat(o.tint)),o.theme&&r.themeElements&&r.themeElements.clrScheme&&(a.color.rgb=Co(r.themeElements.clrScheme[a.color.theme].rgb,a.color.tint||0)));break;case"<color/>":case"</color>":break;case"<AlternateContent":i=!0;break;case"</AlternateContent>":i=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":i=!0;break;case"</ext>":i=!1;break;default:if(n&&n.WTF&&!i)throw new Error("unrecognized "+o[0]+" in fonts")}})}function vE(e,t,r){t.NumberFmt=[];for(var n=_t(Re),a=0;a<n.length;++a)t.NumberFmt[n[a]]=Re[n[a]];var i=e[0].match(qt);if(i)for(a=0;a<i.length;++a){var s=Me(i[a]);switch(pn(s[0])){case"<numFmts":case"</numFmts>":case"<numFmts/>":case"<numFmts>":break;case"<numFmt":{var o=Ke(nt(s.formatCode)),c=parseInt(s.numFmtId,10);if(t.NumberFmt[c]=o,c>0){if(c>392){for(c=392;c>60&&t.NumberFmt[c]!=null;--c);t.NumberFmt[c]=o}mn(o,c)}}break;case"</numFmt>":break;default:if(r.WTF)throw new Error("unrecognized "+s[0]+" in numFmts")}}}function wE(e){var t=["<numFmts>"];return[[5,8],[23,26],[41,44],[50,392]].forEach(function(r){for(var n=r[0];n<=r[1];++n)e[n]!=null&&(t[t.length]=ge("numFmt",null,{numFmtId:n,formatCode:Qe(e[n])}))}),t.length===1?"":(t[t.length]="</numFmts>",t[0]=ge("numFmts",null,{count:t.length-2}).replace("/>",">"),t.join(""))}var Fo=["numFmtId","fillId","fontId","borderId","xfId"],Ao=["applyAlignment","applyBorder","applyFill","applyFont","applyNumberFormat","applyProtection","pivotButton","quotePrefix"];function _E(e,t,r){t.CellXf=[];var n,a=!1;(e[0].match(qt)||[]).forEach(function(i){var s=Me(i),o=0;switch(pn(s[0])){case"<cellXfs":case"<cellXfs>":case"<cellXfs/>":case"</cellXfs>":break;case"<xf":case"<xf/>":for(n=s,delete n[0],o=0;o<Fo.length;++o)n[Fo[o]]&&(n[Fo[o]]=parseInt(n[Fo[o]],10));for(o=0;o<Ao.length;++o)n[Ao[o]]&&(n[Ao[o]]=ct(n[Ao[o]]));if(t.NumberFmt&&n.numFmtId>392){for(o=392;o>60;--o)if(t.NumberFmt[n.numFmtId]==t.NumberFmt[o]){n.numFmtId=o;break}}t.CellXf.push(n);break;case"</xf>":break;case"<alignment":case"<alignment/>":var c={};s.vertical&&(c.vertical=s.vertical),s.horizontal&&(c.horizontal=s.horizontal),s.textRotation!=null&&(c.textRotation=s.textRotation),s.indent&&(c.indent=s.indent),s.wrapText&&(c.wrapText=ct(s.wrapText)),n.alignment=c;break;case"</alignment>":break;case"<protection":break;case"</protection>":case"<protection/>":break;case"<AlternateContent":a=!0;break;case"</AlternateContent>":a=!1;break;case"<extLst":case"<extLst>":case"</extLst>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;default:if(r&&r.WTF&&!a)throw new Error("unrecognized "+s[0]+" in cellXfs")}})}function yE(e){var t=[];return t[t.length]=ge("cellXfs",null),e.forEach(function(r){t[t.length]=ge("xf",null,r)}),t[t.length]="</cellXfs>",t.length===2?"":(t[0]=ge("cellXfs",null,{count:t.length-2}).replace("/>",">"),t.join(""))}var kE=function(){var t=/<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/,r=/<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/,n=/<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/,a=/<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/,i=/<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/;return function(o,c,f){var u={};if(!o)return u;o=o.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");var d;return(d=o.match(t))&&vE(d,u,f),(d=o.match(a))&&xE(d,u,c,f),(d=o.match(n))&&gE(d,u,c,f),(d=o.match(i))&&pE(d,u,c,f),(d=o.match(r))&&_E(d,u,f),u}}();function Yh(e,t){var r=[bt,ge("styleSheet",null,{xmlns:ga[0],"xmlns:vt":Nt.vt})],n;return e.SSF&&(n=wE(e.SSF))!=null&&(r[r.length]=n),r[r.length]='<fonts count="1"><font><sz val="12"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts>',r[r.length]='<fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills>',r[r.length]='<borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders>',r[r.length]='<cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs>',(n=yE(t.cellXfs))&&(r[r.length]=n),r[r.length]='<cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles>',r[r.length]='<dxfs count="0"/>',r[r.length]='<tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleMedium4"/>',r.length>2&&(r[r.length]="</styleSheet>",r[1]=r[1].replace("/>",">")),r.join("")}function bE(e,t){var r=e.read_shift(2),n=Zt(e);return[r,n]}function EE(e,t,r){r||(r=ie(6+4*t.length)),r.write_shift(2,e),Vt(t,r);var n=r.length>r.l?r.slice(0,r.l):r;return r.l==null&&(r.l=r.length),n}function SE(e,t,r){var n={};n.sz=e.read_shift(2)/20;var a=sy(e);a.fItalic&&(n.italic=1),a.fCondense&&(n.condense=1),a.fExtend&&(n.extend=1),a.fShadow&&(n.shadow=1),a.fOutline&&(n.outline=1),a.fStrikeout&&(n.strike=1);var i=e.read_shift(2);switch(i===700&&(n.bold=1),e.read_shift(2)){case 1:n.vertAlign="superscript";break;case 2:n.vertAlign="subscript";break}var s=e.read_shift(1);s!=0&&(n.underline=s);var o=e.read_shift(1);o>0&&(n.family=o);var c=e.read_shift(1);switch(c>0&&(n.charset=c),e.l++,n.color=iy(e),e.read_shift(1)){case 1:n.scheme="major";break;case 2:n.scheme="minor";break}return n.name=Zt(e),n}function CE(e,t){t||(t=ie(25+4*32)),t.write_shift(2,e.sz*20),oy(e,t),t.write_shift(2,e.bold?700:400);var r=0;e.vertAlign=="superscript"?r=1:e.vertAlign=="subscript"&&(r=2),t.write_shift(2,r),t.write_shift(1,e.underline||0),t.write_shift(1,e.family||0),t.write_shift(1,e.charset||0),t.write_shift(1,0),xo(e.color,t);var n=0;return e.scheme=="major"&&(n=1),e.scheme=="minor"&&(n=2),t.write_shift(1,n),Vt(e.name,t),t.length>t.l?t.slice(0,t.l):t}var TE=["none","solid","mediumGray","darkGray","lightGray","darkHorizontal","darkVertical","darkDown","darkUp","darkGrid","darkTrellis","lightHorizontal","lightVertical","lightDown","lightUp","lightGrid","lightTrellis","gray125","gray0625"],Ec,FE=Jt;function qh(e,t){t||(t=ie(4*3+8*7+16*1)),Ec||(Ec=co(TE));var r=Ec[e.patternType];r==null&&(r=40),t.write_shift(4,r);var n=0;if(r!=40)for(xo({auto:1},t),xo({auto:1},t);n<12;++n)t.write_shift(4,0);else{for(;n<4;++n)t.write_shift(4,0);for(;n<12;++n)t.write_shift(4,0)}return t.length>t.l?t.slice(0,t.l):t}function AE(e,t){var r=e.l+t,n=e.read_shift(2),a=e.read_shift(2);return e.l=r,{ixfe:n,numFmtId:a}}function Jh(e,t,r){r||(r=ie(16)),r.write_shift(2,t||0),r.write_shift(2,e.numFmtId||0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(1,0),r.write_shift(1,0);var n=0;return r.write_shift(1,n),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(1,0),r}function os(e,t){return t||(t=ie(10)),t.write_shift(1,0),t.write_shift(1,0),t.write_shift(4,0),t.write_shift(4,0),t}var DE=Jt;function RE(e,t){return t||(t=ie(51)),t.write_shift(1,0),os(null,t),os(null,t),os(null,t),os(null,t),os(null,t),t.length>t.l?t.slice(0,t.l):t}function OE(e,t){return t||(t=ie(12+4*10)),t.write_shift(4,e.xfId),t.write_shift(2,1),t.write_shift(1,+e.builtinId),t.write_shift(1,0),go(e.name||"",t),t.length>t.l?t.slice(0,t.l):t}function BE(e,t,r){var n=ie(2052);return n.write_shift(4,e),go(t,n),go(r,n),n.length>n.l?n.slice(0,n.l):n}function NE(e,t,r){var n={};n.NumberFmt=[];for(var a in Re)n.NumberFmt[a]=Re[a];n.CellXf=[],n.Fonts=[];var i=[],s=!1;return Nn(e,function(c,f,u){switch(u){case 44:n.NumberFmt[c[0]]=c[1],mn(c[1],c[0]);break;case 43:n.Fonts.push(c),c.color.theme!=null&&t&&t.themeElements&&t.themeElements.clrScheme&&(c.color.rgb=Co(t.themeElements.clrScheme[c.color.theme].rgb,c.color.tint||0));break;case 1025:break;case 45:break;case 46:break;case 47:i[i.length-1]==617&&n.CellXf.push(c);break;case 48:case 507:case 572:case 475:break;case 1171:case 2102:case 1130:case 512:case 2095:case 3072:break;case 35:s=!0;break;case 36:s=!1;break;case 37:i.push(u),s=!0;break;case 38:i.pop(),s=!1;break;default:if(f.T>0)i.push(u);else if(f.T<0)i.pop();else if(!s||r.WTF&&i[i.length-1]!=37)throw new Error("Unexpected record 0x"+u.toString(16))}}),n}function IE(e,t){if(t){var r=0;[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&++r}),r!=0&&(ce(e,615,Jr(r)),[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&ce(e,44,EE(a,t[a]))}),ce(e,616))}}function PE(e){var t=1;ce(e,611,Jr(t)),ce(e,43,CE({sz:12,color:{theme:1},name:"Calibri",family:2,scheme:"minor"})),ce(e,612)}function ME(e){var t=2;ce(e,603,Jr(t)),ce(e,45,qh({patternType:"none"})),ce(e,45,qh({patternType:"gray125"})),ce(e,604)}function LE(e){var t=1;ce(e,613,Jr(t)),ce(e,46,RE()),ce(e,614)}function VE(e){var t=1;ce(e,626,Jr(t)),ce(e,47,Jh({numFmtId:0,fontId:0,fillId:0,borderId:0},65535)),ce(e,627)}function UE(e,t){ce(e,617,Jr(t.length)),t.forEach(function(r){ce(e,47,Jh(r,0))}),ce(e,618)}function $E(e){var t=1;ce(e,619,Jr(t)),ce(e,48,OE({xfId:0,builtinId:0,name:"Normal"})),ce(e,620)}function WE(e){var t=0;ce(e,505,Jr(t)),ce(e,506)}function HE(e){var t=0;ce(e,508,BE(t,"TableStyleMedium9","PivotStyleMedium4")),ce(e,509)}function jE(e,t){var r=gr();return ce(r,278),IE(r,e.SSF),PE(r),ME(r),LE(r),VE(r),UE(r,t.cellXfs),$E(r),WE(r),HE(r),ce(r,279),r.end()}var zE=["</a:lt1>","</a:dk1>","</a:lt2>","</a:dk2>","</a:accent1>","</a:accent2>","</a:accent3>","</a:accent4>","</a:accent5>","</a:accent6>","</a:hlink>","</a:folHlink>"];function GE(e,t,r){t.themeElements.clrScheme=[];var n={};(e[0].match(qt)||[]).forEach(function(a){var i=Me(a);switch(i[0]){case"<a:clrScheme":case"</a:clrScheme>":break;case"<a:srgbClr":n.rgb=i.val;break;case"<a:sysClr":n.rgb=i.lastClr;break;case"<a:dk1>":case"</a:dk1>":case"<a:lt1>":case"</a:lt1>":case"<a:dk2>":case"</a:dk2>":case"<a:lt2>":case"</a:lt2>":case"<a:accent1>":case"</a:accent1>":case"<a:accent2>":case"</a:accent2>":case"<a:accent3>":case"</a:accent3>":case"<a:accent4>":case"</a:accent4>":case"<a:accent5>":case"</a:accent5>":case"<a:accent6>":case"</a:accent6>":case"<a:hlink>":case"</a:hlink>":case"<a:folHlink>":case"</a:folHlink>":i[0].charAt(1)==="/"?(t.themeElements.clrScheme[zE.indexOf(i[0])]=n,n={}):n.name=i[0].slice(3,i[0].length-1);break;default:if(r&&r.WTF)throw new Error("Unrecognized "+i[0]+" in clrScheme")}})}function XE(){}function KE(){}var YE=/<a:clrScheme([^>]*)>[\s\S]*<\/a:clrScheme>/,qE=/<a:fontScheme([^>]*)>[\s\S]*<\/a:fontScheme>/,JE=/<a:fmtScheme([^>]*)>[\s\S]*<\/a:fmtScheme>/;function ZE(e,t,r){t.themeElements={};var n;[["clrScheme",YE,GE],["fontScheme",qE,XE],["fmtScheme",JE,KE]].forEach(function(a){if(!(n=e.match(a[1])))throw new Error(a[0]+" not found in themeElements");a[2](n,t,r)})}var QE=/<a:themeElements([^>]*)>[\s\S]*<\/a:themeElements>/;function Zh(e,t){(!e||e.length===0)&&(e=Sc());var r,n={};if(!(r=e.match(QE)))throw new Error("themeElements not found in theme");return ZE(r[0],n,t),n.raw=e,n}function Sc(e,t){if(t&&t.themeXLSX)return t.themeXLSX;if(e&&typeof e.raw=="string")return e.raw;var r=[bt];return r[r.length]='<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme">',r[r.length]="<a:themeElements>",r[r.length]='<a:clrScheme name="Office">',r[r.length]='<a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1>',r[r.length]='<a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1>',r[r.length]='<a:dk2><a:srgbClr val="1F497D"/></a:dk2>',r[r.length]='<a:lt2><a:srgbClr val="EEECE1"/></a:lt2>',r[r.length]='<a:accent1><a:srgbClr val="4F81BD"/></a:accent1>',r[r.length]='<a:accent2><a:srgbClr val="C0504D"/></a:accent2>',r[r.length]='<a:accent3><a:srgbClr val="9BBB59"/></a:accent3>',r[r.length]='<a:accent4><a:srgbClr val="8064A2"/></a:accent4>',r[r.length]='<a:accent5><a:srgbClr val="4BACC6"/></a:accent5>',r[r.length]='<a:accent6><a:srgbClr val="F79646"/></a:accent6>',r[r.length]='<a:hlink><a:srgbClr val="0000FF"/></a:hlink>',r[r.length]='<a:folHlink><a:srgbClr val="800080"/></a:folHlink>',r[r.length]="</a:clrScheme>",r[r.length]='<a:fontScheme name="Office">',r[r.length]="<a:majorFont>",r[r.length]='<a:latin typeface="Cambria"/>',r[r.length]='<a:ea typeface=""/>',r[r.length]='<a:cs typeface=""/>',r[r.length]='<a:font script="Jpan" typeface="MS Pゴシック"/>',r[r.length]='<a:font script="Hang" typeface="맑은 고딕"/>',r[r.length]='<a:font script="Hans" typeface="宋体"/>',r[r.length]='<a:font script="Hant" typeface="新細明體"/>',r[r.length]='<a:font script="Arab" typeface="Times New Roman"/>',r[r.length]='<a:font script="Hebr" typeface="Times New Roman"/>',r[r.length]='<a:font script="Thai" typeface="Tahoma"/>',r[r.length]='<a:font script="Ethi" typeface="Nyala"/>',r[r.length]='<a:font script="Beng" typeface="Vrinda"/>',r[r.length]='<a:font script="Gujr" typeface="Shruti"/>',r[r.length]='<a:font script="Khmr" typeface="MoolBoran"/>',r[r.length]='<a:font script="Knda" typeface="Tunga"/>',r[r.length]='<a:font script="Guru" typeface="Raavi"/>',r[r.length]='<a:font script="Cans" typeface="Euphemia"/>',r[r.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',r[r.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',r[r.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',r[r.length]='<a:font script="Thaa" typeface="MV Boli"/>',r[r.length]='<a:font script="Deva" typeface="Mangal"/>',r[r.length]='<a:font script="Telu" typeface="Gautami"/>',r[r.length]='<a:font script="Taml" typeface="Latha"/>',r[r.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',r[r.length]='<a:font script="Orya" typeface="Kalinga"/>',r[r.length]='<a:font script="Mlym" typeface="Kartika"/>',r[r.length]='<a:font script="Laoo" typeface="DokChampa"/>',r[r.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',r[r.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>',r[r.length]='<a:font script="Viet" typeface="Times New Roman"/>',r[r.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',r[r.length]='<a:font script="Geor" typeface="Sylfaen"/>',r[r.length]="</a:majorFont>",r[r.length]="<a:minorFont>",r[r.length]='<a:latin typeface="Calibri"/>',r[r.length]='<a:ea typeface=""/>',r[r.length]='<a:cs typeface=""/>',r[r.length]='<a:font script="Jpan" typeface="MS Pゴシック"/>',r[r.length]='<a:font script="Hang" typeface="맑은 고딕"/>',r[r.length]='<a:font script="Hans" typeface="宋体"/>',r[r.length]='<a:font script="Hant" typeface="新細明體"/>',r[r.length]='<a:font script="Arab" typeface="Arial"/>',r[r.length]='<a:font script="Hebr" typeface="Arial"/>',r[r.length]='<a:font script="Thai" typeface="Tahoma"/>',r[r.length]='<a:font script="Ethi" typeface="Nyala"/>',r[r.length]='<a:font script="Beng" typeface="Vrinda"/>',r[r.length]='<a:font script="Gujr" typeface="Shruti"/>',r[r.length]='<a:font script="Khmr" typeface="DaunPenh"/>',r[r.length]='<a:font script="Knda" typeface="Tunga"/>',r[r.length]='<a:font script="Guru" typeface="Raavi"/>',r[r.length]='<a:font script="Cans" typeface="Euphemia"/>',r[r.length]='<a:font script="Cher" typeface="Plantagenet Cherokee"/>',r[r.length]='<a:font script="Yiii" typeface="Microsoft Yi Baiti"/>',r[r.length]='<a:font script="Tibt" typeface="Microsoft Himalaya"/>',r[r.length]='<a:font script="Thaa" typeface="MV Boli"/>',r[r.length]='<a:font script="Deva" typeface="Mangal"/>',r[r.length]='<a:font script="Telu" typeface="Gautami"/>',r[r.length]='<a:font script="Taml" typeface="Latha"/>',r[r.length]='<a:font script="Syrc" typeface="Estrangelo Edessa"/>',r[r.length]='<a:font script="Orya" typeface="Kalinga"/>',r[r.length]='<a:font script="Mlym" typeface="Kartika"/>',r[r.length]='<a:font script="Laoo" typeface="DokChampa"/>',r[r.length]='<a:font script="Sinh" typeface="Iskoola Pota"/>',r[r.length]='<a:font script="Mong" typeface="Mongolian Baiti"/>',r[r.length]='<a:font script="Viet" typeface="Arial"/>',r[r.length]='<a:font script="Uigh" typeface="Microsoft Uighur"/>',r[r.length]='<a:font script="Geor" typeface="Sylfaen"/>',r[r.length]="</a:minorFont>",r[r.length]="</a:fontScheme>",r[r.length]='<a:fmtScheme name="Office">',r[r.length]="<a:fillStyleLst>",r[r.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:lin ang="16200000" scaled="1"/>',r[r.length]="</a:gradFill>",r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="100000"/><a:shade val="100000"/><a:satMod val="130000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="50000"/><a:shade val="100000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:lin ang="16200000" scaled="0"/>',r[r.length]="</a:gradFill>",r[r.length]="</a:fillStyleLst>",r[r.length]="<a:lnStyleLst>",r[r.length]='<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]='<a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]='<a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln>',r[r.length]="</a:lnStyleLst>",r[r.length]="<a:effectStyleLst>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]="</a:effectStyle>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]="</a:effectStyle>",r[r.length]="<a:effectStyle>",r[r.length]="<a:effectLst>",r[r.length]='<a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw>',r[r.length]="</a:effectLst>",r[r.length]='<a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d>',r[r.length]='<a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d>',r[r.length]="</a:effectStyle>",r[r.length]="</a:effectStyleLst>",r[r.length]="<a:bgFillStyleLst>",r[r.length]='<a:solidFill><a:schemeClr val="phClr"/></a:solidFill>',r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path>',r[r.length]="</a:gradFill>",r[r.length]='<a:gradFill rotWithShape="1">',r[r.length]="<a:gsLst>",r[r.length]='<a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs>',r[r.length]='<a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs>',r[r.length]="</a:gsLst>",r[r.length]='<a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path>',r[r.length]="</a:gradFill>",r[r.length]="</a:bgFillStyleLst>",r[r.length]="</a:fmtScheme>",r[r.length]="</a:themeElements>",r[r.length]="<a:objectDefaults>",r[r.length]="<a:spDef>",r[r.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="1"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="3"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="2"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="lt1"/></a:fontRef></a:style>',r[r.length]="</a:spDef>",r[r.length]="<a:lnDef>",r[r.length]='<a:spPr/><a:bodyPr/><a:lstStyle/><a:style><a:lnRef idx="2"><a:schemeClr val="accent1"/></a:lnRef><a:fillRef idx="0"><a:schemeClr val="accent1"/></a:fillRef><a:effectRef idx="1"><a:schemeClr val="accent1"/></a:effectRef><a:fontRef idx="minor"><a:schemeClr val="tx1"/></a:fontRef></a:style>',r[r.length]="</a:lnDef>",r[r.length]="</a:objectDefaults>",r[r.length]="<a:extraClrSchemeLst/>",r[r.length]="</a:theme>",r.join("")}function eS(e,t,r){var n=e.l+t,a=e.read_shift(4);if(a!==124226){if(!r.cellStyles){e.l=n;return}var i=e.slice(e.l);e.l=n;var s;try{s=dd(i,{type:"array"})}catch{return}var o=Tr(s,"theme/theme/theme1.xml",!0);if(o)return Zh(o,r)}}function tS(e){return e.read_shift(4)}function rS(e){var t={};switch(t.xclrType=e.read_shift(2),t.nTintShade=e.read_shift(2),t.xclrType){case 0:e.l+=4;break;case 1:t.xclrValue=nS(e,4);break;case 2:t.xclrValue=kh(e);break;case 3:t.xclrValue=tS(e);break;case 4:e.l+=4;break}return e.l+=8,t}function nS(e,t){return Jt(e,t)}function aS(e,t){return Jt(e,t)}function iS(e){var t=e.read_shift(2),r=e.read_shift(2)-4,n=[t];switch(t){case 4:case 5:case 7:case 8:case 9:case 10:case 11:case 13:n[1]=rS(e);break;case 6:n[1]=aS(e,r);break;case 14:case 15:n[1]=e.read_shift(r===1?1:2);break;default:throw new Error("Unrecognized ExtProp type: "+t+" "+r)}return n}function sS(e,t){var r=e.l+t;e.l+=2;var n=e.read_shift(2);e.l+=2;for(var a=e.read_shift(2),i=[];a-- >0;)i.push(iS(e,r-e.l));return{ixfe:n,ext:i}}function oS(e,t){t.forEach(function(r){switch(r[0]){}})}function lS(e,t){return{flags:e.read_shift(4),version:e.read_shift(4),name:Zt(e)}}function cS(e){var t=ie(12+2*e.name.length);return t.write_shift(4,e.flags),t.write_shift(4,e.version),Vt(e.name,t),t.slice(0,t.l)}function fS(e){for(var t=[],r=e.read_shift(4);r-- >0;)t.push([e.read_shift(4),e.read_shift(4)]);return t}function uS(e){var t=ie(4+8*e.length);t.write_shift(4,e.length);for(var r=0;r<e.length;++r)t.write_shift(4,e[r][0]),t.write_shift(4,e[r][1]);return t}function dS(e,t){var r=ie(8+2*t.length);return r.write_shift(4,e),Vt(t,r),r.slice(0,r.l)}function hS(e){return e.l+=4,e.read_shift(4)!=0}function mS(e,t){var r=ie(8);return r.write_shift(4,e),r.write_shift(4,t?1:0),r}function pS(e,t,r){var n={Types:[],Cell:[],Value:[]},a=r||{},i=[],s=!1,o=2;return Nn(e,function(c,f,u){switch(u){case 335:n.Types.push({name:c.name});break;case 51:c.forEach(function(d){o==1?n.Cell.push({type:n.Types[d[0]-1].name,index:d[1]}):o==0&&n.Value.push({type:n.Types[d[0]-1].name,index:d[1]})});break;case 337:o=c?1:0;break;case 338:o=2;break;case 35:i.push(u),s=!0;break;case 36:i.pop(),s=!1;break;default:if(!f.T){if(!s||a.WTF&&i[i.length-1]!=35)throw new Error("Unexpected record 0x"+u.toString(16))}}}),n}function gS(){var e=gr();return ce(e,332),ce(e,334,Jr(1)),ce(e,335,cS({name:"XLDAPR",version:12e4,flags:3496657072})),ce(e,336),ce(e,339,dS(1,"XLDAPR")),ce(e,52),ce(e,35,Jr(514)),ce(e,4096,Jr(0)),ce(e,4097,Ur(1)),ce(e,36),ce(e,53),ce(e,340),ce(e,337,mS(1,!0)),ce(e,51,uS([[1,0]])),ce(e,338),ce(e,333),e.end()}function xS(e,t,r){var n={Types:[],Cell:[],Value:[]};if(!e)return n;var a=!1,i=2,s;return e.replace(qt,function(o){var c=Me(o);switch(pn(c[0])){case"<?xml":break;case"<metadata":case"</metadata>":break;case"<metadataTypes":case"</metadataTypes>":break;case"<metadataType":n.Types.push({name:c.name});break;case"</metadataType>":break;case"<futureMetadata":for(var f=0;f<n.Types.length;++f)n.Types[f].name==c.name&&(s=n.Types[f]);break;case"</futureMetadata>":break;case"<bk>":break;case"</bk>":break;case"<rc":i==1?n.Cell.push({type:n.Types[c.t-1].name,index:+c.v}):i==0&&n.Value.push({type:n.Types[c.t-1].name,index:+c.v});break;case"</rc>":break;case"<cellMetadata":i=1;break;case"</cellMetadata>":i=2;break;case"<valueMetadata":i=0;break;case"</valueMetadata>":i=2;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":a=!0;break;case"</ext>":a=!1;break;case"<rvb":if(!s)break;s.offsets||(s.offsets=[]),s.offsets.push(+c.i);break;default:if(!a&&r.WTF)throw new Error("unrecognized "+c[0]+" in metadata")}return o}),n}function Qh(){var e=[bt];return e.push(`<metadata xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:xlrd="http://schemas.microsoft.com/office/spreadsheetml/2017/richdata" xmlns:xda="http://schemas.microsoft.com/office/spreadsheetml/2017/dynamicarray">
|
||
<metadataTypes count="1">
|
||
<metadataType name="XLDAPR" minSupportedVersion="120000" copy="1" pasteAll="1" pasteValues="1" merge="1" splitFirst="1" rowColShift="1" clearFormats="1" clearComments="1" assign="1" coerce="1" cellMeta="1"/>
|
||
</metadataTypes>
|
||
<futureMetadata name="XLDAPR" count="1">
|
||
<bk>
|
||
<extLst>
|
||
<ext uri="{bdbb8cdc-fa1e-496e-a857-3c3f30c029c3}">
|
||
<xda:dynamicArrayProperties fDynamic="1" fCollapsed="0"/>
|
||
</ext>
|
||
</extLst>
|
||
</bk>
|
||
</futureMetadata>
|
||
<cellMetadata count="1">
|
||
<bk>
|
||
<rc t="1" v="0"/>
|
||
</bk>
|
||
</cellMetadata>
|
||
</metadata>`),e.join("")}function vS(e){var t=[];if(!e)return t;var r=1;return(e.match(qt)||[]).forEach(function(n){var a=Me(n);switch(a[0]){case"<?xml":break;case"<calcChain":case"<calcChain>":case"</calcChain>":break;case"<c":delete a[0],a.i?r=a.i:a.i=r,t.push(a);break}}),t}function wS(e){var t={};t.i=e.read_shift(4);var r={};r.r=e.read_shift(4),r.c=e.read_shift(4),t.r=Ne(r);var n=e.read_shift(1);return n&2&&(t.l="1"),n&8&&(t.a="1"),t}function _S(e,t,r){var n=[];return Nn(e,function(i,s,o){switch(o){case 63:n.push(i);break;default:if(!s.T)throw new Error("Unexpected record 0x"+o.toString(16))}}),n}function HD(){}function yS(e,t,r,n){if(!e)return e;var a=n||{},i=!1;Nn(e,function(o,c,f){switch(f){case 359:case 363:case 364:case 366:case 367:case 368:case 369:case 370:case 371:case 472:case 577:case 578:case 579:case 580:case 581:case 582:case 583:case 584:case 585:case 586:case 587:break;case 35:i=!0;break;case 36:i=!1;break;default:if(!c.T){if(!i||a.WTF)throw new Error("Unexpected record 0x"+f.toString(16))}}},a)}function kS(e,t){if(!e)return"??";var r=(e.match(/<c:chart [^>]*r:id="([^"]*)"/)||["",""])[1];return t["!id"][r].Target}var ii=1024;function em(e,t){for(var r=[21600,21600],n=["m0,0l0",r[1],r[0],r[1],r[0],"0xe"].join(","),a=[ge("xml",null,{"xmlns:v":Fr.v,"xmlns:o":Fr.o,"xmlns:x":Fr.x,"xmlns:mv":Fr.mv}).replace(/\/>/,">"),ge("o:shapelayout",ge("o:idmap",null,{"v:ext":"edit",data:e}),{"v:ext":"edit"}),ge("v:shapetype",[ge("v:stroke",null,{joinstyle:"miter"}),ge("v:path",null,{gradientshapeok:"t","o:connecttype":"rect"})].join(""),{id:"_x0000_t202","o:spt":202,coordsize:r.join(","),path:n})];ii<e*1e3;)ii+=1e3;return t.forEach(function(i){var s=pt(i[0]),o={color2:"#BEFF82",type:"gradient"};o.type=="gradient"&&(o.angle="-180");var c=o.type=="gradient"?ge("o:fill",null,{type:"gradientUnscaled","v:ext":"view"}):null,f=ge("v:fill",c,o),u={on:"t",obscured:"t"};++ii,a=a.concat(["<v:shape"+Xi({id:"_x0000_s"+ii,type:"#_x0000_t202",style:"position:absolute; margin-left:80pt;margin-top:5pt;width:104pt;height:64pt;z-index:10"+(i[1].hidden?";visibility:hidden":""),fillcolor:"#ECFAD4",strokecolor:"#edeaa1"})+">",f,ge("v:shadow",null,u),ge("v:path",null,{"o:connecttype":"none"}),'<v:textbox><div style="text-align:left"></div></v:textbox>','<x:ClientData ObjectType="Note">',"<x:MoveWithCells/>","<x:SizeWithCells/>",zt("x:Anchor",[s.c+1,0,s.r+1,0,s.c+3,20,s.r+5,20].join(",")),zt("x:AutoFill","False"),zt("x:Row",String(s.r)),zt("x:Column",String(s.c)),i[1].hidden?"":"<x:Visible/>","</x:ClientData>","</v:shape>"])}),a.push("</xml>"),a.join("")}function tm(e,t,r,n){var a=Array.isArray(e),i;t.forEach(function(s){var o=pt(s.ref);if(a?(e[o.r]||(e[o.r]=[]),i=e[o.r][o.c]):i=e[s.ref],!i){i={t:"z"},a?e[o.r][o.c]=i:e[s.ref]=i;var c=Ye(e["!ref"]||"BDWGO1000001:A1");c.s.r>o.r&&(c.s.r=o.r),c.e.r<o.r&&(c.e.r=o.r),c.s.c>o.c&&(c.s.c=o.c),c.e.c<o.c&&(c.e.c=o.c);var f=We(c);f!==e["!ref"]&&(e["!ref"]=f)}i.c||(i.c=[]);var u={a:s.author,t:s.t,r:s.r,T:r};s.h&&(u.h=s.h);for(var d=i.c.length-1;d>=0;--d){if(!r&&i.c[d].T)return;r&&!i.c[d].T&&i.c.splice(d,1)}if(r&&n){for(d=0;d<n.length;++d)if(u.a==n[d].id){u.a=n[d].name||u.a;break}}i.c.push(u)})}function bS(e,t){if(e.match(/<(?:\w+:)?comments *\/>/))return[];var r=[],n=[],a=e.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/);a&&a[1]&&a[1].split(/<\/\w*:?author>/).forEach(function(s){if(!(s===""||s.trim()==="")){var o=s.match(/<(?:\w+:)?author[^>]*>(.*)/);o&&r.push(o[1])}});var i=e.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/);return i&&i[1]&&i[1].split(/<\/\w*:?comment>/).forEach(function(s){if(!(s===""||s.trim()==="")){var o=s.match(/<(?:\w+:)?comment[^>]*>/);if(o){var c=Me(o[0]),f={author:c.authorId&&r[c.authorId]||"sheetjsghost",ref:c.ref,guid:c.guid},u=pt(c.ref);if(!(t.sheetRows&&t.sheetRows<=u.r)){var d=s.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/),h=!!d&&!!d[1]&&_c(d[1])||{r:"",t:"",h:""};f.r=h.r,h.r=="<t></t>"&&(h.t=h.h=""),f.t=(h.t||"").replace(/\r\n/g,`
|
||
`).replace(/\r/g,`
|
||
`),t.cellHTML&&(f.h=h.h),n.push(f)}}}}),n}function rm(e){var t=[bt,ge("comments",null,{xmlns:ga[0]})],r=[];return t.push("<authors>"),e.forEach(function(n){n[1].forEach(function(a){var i=Qe(a.a);r.indexOf(i)==-1&&(r.push(i),t.push("<author>"+i+"</author>")),a.T&&a.ID&&r.indexOf("tc="+a.ID)==-1&&(r.push("tc="+a.ID),t.push("<author>tc="+a.ID+"</author>"))})}),r.length==0&&(r.push("SheetJ5"),t.push("<author>SheetJ5</author>")),t.push("</authors>"),t.push("<commentList>"),e.forEach(function(n){var a=0,i=[];if(n[1][0]&&n[1][0].T&&n[1][0].ID?a=r.indexOf("tc="+n[1][0].ID):n[1].forEach(function(c){c.a&&(a=r.indexOf(Qe(c.a))),i.push(c.t||"")}),t.push('<comment ref="'+n[0]+'" authorId="'+a+'"><text>'),i.length<=1)t.push(zt("t",Qe(i[0]||"")));else{for(var s=`Comment:
|
||
`+i[0]+`
|
||
`,o=1;o<i.length;++o)s+=`Reply:
|
||
`+i[o]+`
|
||
`;t.push(zt("t",Qe(s)))}t.push("</text></comment>")}),t.push("</commentList>"),t.length>2&&(t[t.length]="</comments>",t[1]=t[1].replace("/>",">")),t.join("")}function ES(e,t){var r=[],n=!1,a={},i=0;return e.replace(qt,function(o,c){var f=Me(o);switch(pn(f[0])){case"<?xml":break;case"<ThreadedComments":break;case"</ThreadedComments>":break;case"<threadedComment":a={author:f.personId,guid:f.id,ref:f.ref,T:1};break;case"</threadedComment>":a.t!=null&&r.push(a);break;case"<text>":case"<text":i=c+o.length;break;case"</text>":a.t=e.slice(i,c).replace(/\r\n/g,`
|
||
`).replace(/\r/g,`
|
||
`);break;case"<mentions":case"<mentions>":n=!0;break;case"</mentions>":n=!1;break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;default:if(!n&&t.WTF)throw new Error("unrecognized "+f[0]+" in threaded comments")}return o}),r}function SS(e,t,r){var n=[bt,ge("ThreadedComments",null,{xmlns:Nt.TCMNT}).replace(/[\/]>/,">")];return e.forEach(function(a){var i="";(a[1]||[]).forEach(function(s,o){if(!s.T){delete s.ID;return}s.a&&t.indexOf(s.a)==-1&&t.push(s.a);var c={ref:a[0],id:"{54EE7951-7262-4200-6969-"+("000000000000"+r.tcid++).slice(-12)+"}"};o==0?i=c.id:c.parentId=i,s.ID=c.id,s.a&&(c.personId="{54EE7950-7262-4200-6969-"+("000000000000"+t.indexOf(s.a)).slice(-12)+"}"),n.push(ge("threadedComment",zt("text",s.t||""),c))})}),n.push("</ThreadedComments>"),n.join("")}function CS(e,t){var r=[],n=!1;return e.replace(qt,function(i){var s=Me(i);switch(pn(s[0])){case"<?xml":break;case"<personList":break;case"</personList>":break;case"<person":r.push({name:s.displayname,id:s.id});break;case"</person>":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;default:if(!n&&t.WTF)throw new Error("unrecognized "+s[0]+" in threaded comments")}return i}),r}function TS(e){var t=[bt,ge("personList",null,{xmlns:Nt.TCMNT,"xmlns:x":ga[0]}).replace(/[\/]>/,">")];return e.forEach(function(r,n){t.push(ge("person",null,{displayName:r,id:"{54EE7950-7262-4200-6969-"+("000000000000"+n).slice(-12)+"}",userId:r,providerId:"None"}))}),t.push("</personList>"),t.join("")}function FS(e){var t={};t.iauthor=e.read_shift(4);var r=ya(e);return t.rfx=r.s,t.ref=Ne(r.s),e.l+=16,t}function AS(e,t){return t==null&&(t=ie(36)),t.write_shift(4,e[1].iauthor),ti(e[0],t),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t.write_shift(4,0),t}var DS=Zt;function RS(e){return Vt(e.slice(0,54))}function OS(e,t){var r=[],n=[],a={},i=!1;return Nn(e,function(o,c,f){switch(f){case 632:n.push(o);break;case 635:a=o;break;case 637:a.t=o.t,a.h=o.h,a.r=o.r;break;case 636:if(a.author=n[a.iauthor],delete a.iauthor,t.sheetRows&&a.rfx&&t.sheetRows<=a.rfx.r)break;a.t||(a.t=""),delete a.rfx,r.push(a);break;case 3072:break;case 35:i=!0;break;case 36:i=!1;break;case 37:break;case 38:break;default:if(!c.T){if(!i||t.WTF)throw new Error("Unexpected record 0x"+f.toString(16))}}}),r}function BS(e){var t=gr(),r=[];return ce(t,628),ce(t,630),e.forEach(function(n){n[1].forEach(function(a){r.indexOf(a.a)>-1||(r.push(a.a.slice(0,54)),ce(t,632,RS(a.a)))})}),ce(t,631),ce(t,633),e.forEach(function(n){n[1].forEach(function(a){a.iauthor=r.indexOf(a.a);var i={s:pt(n[0]),e:pt(n[0])};ce(t,635,AS([i,a])),a.t&&a.t.length>0&&ce(t,637,ty(a)),ce(t,636),delete a.iauthor})}),ce(t,634),ce(t,629),t.end()}var NS="application/vnd.ms-office.vbaProject";function IS(e){var t=Fe.utils.cfb_new({root:"R"});return e.FullPaths.forEach(function(r,n){if(!(r.slice(-1)==="/"||!r.match(/_VBA_PROJECT_CUR/))){var a=r.replace(/^[^\/]*/,"R").replace(/\/_VBA_PROJECT_CUR\u0000*/,"");Fe.utils.cfb_add(t,a,e.FileIndex[n].content)}}),Fe.write(t)}function PS(e,t){t.FullPaths.forEach(function(r,n){if(n!=0){var a=r.replace(/[^\/]*[\/]/,"/_VBA_PROJECT_CUR/");a.slice(-1)!=="/"&&Fe.utils.cfb_add(e,a,t.FileIndex[n].content)}})}var nm=["xlsb","xlsm","xlam","biff8","xla"];function MS(){return{"!type":"dialog"}}function LS(){return{"!type":"dialog"}}function VS(){return{"!type":"macro"}}function US(){return{"!type":"macro"}}var si=function(){var e=/(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g,t={r:0,c:0};function r(n,a,i,s){var o=!1,c=!1;i.length==0?c=!0:i.charAt(0)=="["&&(c=!0,i=i.slice(1,-1)),s.length==0?o=!0:s.charAt(0)=="["&&(o=!0,s=s.slice(1,-1));var f=i.length>0?parseInt(i,10)|0:0,u=s.length>0?parseInt(s,10)|0:0;return o?u+=t.c:--u,c?f+=t.r:--f,a+(o?"":"$")+mt(u)+(c?"":"$")+Et(f)}return function(a,i){return t=i,a.replace(e,r)}}(),Cc=/(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g,Tc=function(){return function(t,r){return t.replace(Cc,function(n,a,i,s,o,c){var f=rc(s)-(i?0:r.c),u=tc(c)-(o?0:r.r),d=u==0?"":o?u+1:"["+u+"]",h=f==0?"":i?f+1:"["+f+"]";return a+"R"+d+"C"+h})}}();function am(e,t){return e.replace(Cc,function(r,n,a,i,s,o){return n+(a=="$"?a+i:mt(rc(i)+t.c))+(s=="$"?s+o:Et(tc(o)+t.r))})}function $S(e,t,r){var n=xr(t),a=n.s,i=pt(r),s={r:i.r-a.r,c:i.c-a.c};return am(e,s)}function WS(e){return e.length!=1}function im(e){return e.replace(/_xlfn\./g,"")}function At(e){e.l+=1}function ra(e,t){var r=e.read_shift(t==1?1:2);return[r&16383,r>>14&1,r>>15&1]}function sm(e,t,r){var n=2;if(r){if(r.biff>=2&&r.biff<=5)return om(e);r.biff==12&&(n=4)}var a=e.read_shift(n),i=e.read_shift(n),s=ra(e,2),o=ra(e,2);return{s:{r:a,c:s[0],cRel:s[1],rRel:s[2]},e:{r:i,c:o[0],cRel:o[1],rRel:o[2]}}}function om(e){var t=ra(e,2),r=ra(e,2),n=e.read_shift(1),a=e.read_shift(1);return{s:{r:t[0],c:n,cRel:t[1],rRel:t[2]},e:{r:r[0],c:a,cRel:r[1],rRel:r[2]}}}function HS(e,t,r){if(r.biff<8)return om(e);var n=e.read_shift(r.biff==12?4:2),a=e.read_shift(r.biff==12?4:2),i=ra(e,2),s=ra(e,2);return{s:{r:n,c:i[0],cRel:i[1],rRel:i[2]},e:{r:a,c:s[0],cRel:s[1],rRel:s[2]}}}function lm(e,t,r){if(r&&r.biff>=2&&r.biff<=5)return jS(e);var n=e.read_shift(r&&r.biff==12?4:2),a=ra(e,2);return{r:n,c:a[0],cRel:a[1],rRel:a[2]}}function jS(e){var t=ra(e,2),r=e.read_shift(1);return{r:t[0],c:r,cRel:t[1],rRel:t[2]}}function zS(e){var t=e.read_shift(2),r=e.read_shift(2);return{r:t,c:r&255,fQuoted:!!(r&16384),cRel:r>>15,rRel:r>>15}}function GS(e,t,r){var n=r&&r.biff?r.biff:8;if(n>=2&&n<=5)return XS(e);var a=e.read_shift(n>=12?4:2),i=e.read_shift(2),s=(i&16384)>>14,o=(i&32768)>>15;if(i&=16383,o==1)for(;a>524287;)a-=1048576;if(s==1)for(;i>8191;)i=i-16384;return{r:a,c:i,cRel:s,rRel:o}}function XS(e){var t=e.read_shift(2),r=e.read_shift(1),n=(t&32768)>>15,a=(t&16384)>>14;return t&=16383,n==1&&t>=8192&&(t=t-16384),a==1&&r>=128&&(r=r-256),{r:t,c:r,cRel:a,rRel:n}}function KS(e,t,r){var n=(e[e.l++]&96)>>5,a=sm(e,r.biff>=2&&r.biff<=5?6:8,r);return[n,a]}function YS(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2,"i"),i=8;if(r)switch(r.biff){case 5:e.l+=12,i=6;break;case 12:i=12;break}var s=sm(e,i,r);return[n,a,s]}function qS(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r&&r.biff>8?12:r.biff<8?6:8,[n]}function JS(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2),i=8;if(r)switch(r.biff){case 5:e.l+=12,i=6;break;case 12:i=12;break}return e.l+=i,[n,a]}function ZS(e,t,r){var n=(e[e.l++]&96)>>5,a=HS(e,t-1,r);return[n,a]}function QS(e,t,r){var n=(e[e.l++]&96)>>5;return e.l+=r.biff==2?6:r.biff==12?14:7,[n]}function cm(e){var t=e[e.l+1]&1,r=1;return e.l+=4,[t,r]}function eC(e,t,r){e.l+=2;for(var n=e.read_shift(r&&r.biff==2?1:2),a=[],i=0;i<=n;++i)a.push(e.read_shift(r&&r.biff==2?1:2));return a}function tC(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function rC(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=2,[n,e.read_shift(r&&r.biff==2?1:2)]}function nC(e){var t=e[e.l+1]&255?1:0;return e.l+=2,[t,e.read_shift(2)]}function aC(e,t,r){var n=e[e.l+1]&255?1:0;return e.l+=r&&r.biff==2?3:4,[n]}function fm(e){var t=e.read_shift(1),r=e.read_shift(1);return[t,r]}function iC(e){return e.read_shift(2),fm(e)}function sC(e){return e.read_shift(2),fm(e)}function oC(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=lm(e,0,r);return[n,a]}function lC(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=GS(e,0,r);return[n,a]}function cC(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=e.read_shift(2);r&&r.biff==5&&(e.l+=12);var i=lm(e,0,r);return[n,a,i]}function fC(e,t,r){var n=(e[e.l]&96)>>5;e.l+=1;var a=e.read_shift(r&&r.biff<=3?1:2);return[hT[a],pm[a],n]}function uC(e,t,r){var n=e[e.l++],a=e.read_shift(1),i=r&&r.biff<=3?[n==88?-1:0,e.read_shift(1)]:dC(e);return[a,(i[0]===0?pm:dT)[i[1]]]}function dC(e){return[e[e.l+1]>>7,e.read_shift(2)&32767]}function hC(e,t,r){e.l+=r&&r.biff==2?3:4}function mC(e,t,r){if(e.l++,r&&r.biff==12)return[e.read_shift(4,"i"),0];var n=e.read_shift(2),a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function pC(e){return e.l++,Pn[e.read_shift(1)]}function gC(e){return e.l++,e.read_shift(2)}function xC(e){return e.l++,e.read_shift(1)!==0}function vC(e){return e.l++,Qt(e)}function wC(e,t,r){return e.l++,ts(e,t-1,r)}function _C(e,t){var r=[e.read_shift(1)];if(t==12)switch(r[0]){case 2:r[0]=4;break;case 4:r[0]=16;break;case 0:r[0]=1;break;case 1:r[0]=2;break}switch(r[0]){case 4:r[1]=St(e,1)?"TRUE":"FALSE",t!=12&&(e.l+=7);break;case 37:case 16:r[1]=Pn[e[e.l]],e.l+=t==12?4:8;break;case 0:e.l+=8;break;case 1:r[1]=Qt(e);break;case 2:r[1]=Ca(e,0,{biff:t>0&&t<8?2:t});break;default:throw new Error("Bad SerAr: "+r[0])}return r}function yC(e,t,r){for(var n=e.read_shift(r.biff==12?4:2),a=[],i=0;i!=n;++i)a.push((r.biff==12?ya:Eo)(e));return a}function kC(e,t,r){var n=0,a=0;r.biff==12?(n=e.read_shift(4),a=e.read_shift(4)):(a=1+e.read_shift(1),n=1+e.read_shift(2)),r.biff>=2&&r.biff<8&&(--n,--a==0&&(a=256));for(var i=0,s=[];i!=n&&(s[i]=[]);++i)for(var o=0;o!=a;++o)s[i][o]=_C(e,r.biff);return s}function bC(e,t,r){var n=e.read_shift(1)>>>5&3,a=!r||r.biff>=8?4:2,i=e.read_shift(a);switch(r.biff){case 2:e.l+=5;break;case 3:case 4:e.l+=8;break;case 5:e.l+=12;break}return[n,0,i]}function EC(e,t,r){if(r.biff==5)return SC(e);var n=e.read_shift(1)>>>5&3,a=e.read_shift(2),i=e.read_shift(4);return[n,a,i]}function SC(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2,"i");e.l+=8;var n=e.read_shift(2);return e.l+=12,[t,r,n]}function CC(e,t,r){var n=e.read_shift(1)>>>5&3;e.l+=r&&r.biff==2?3:4;var a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function TC(e,t,r){var n=e.read_shift(1)>>>5&3,a=e.read_shift(r&&r.biff==2?1:2);return[n,a]}function FC(e,t,r){var n=e.read_shift(1)>>>5&3;return e.l+=4,r.biff<8&&e.l--,r.biff==12&&(e.l+=2),[n]}function AC(e,t,r){var n=(e[e.l++]&96)>>5,a=e.read_shift(2),i=4;if(r)switch(r.biff){case 5:i=15;break;case 12:i=6;break}return e.l+=i,[n,a]}var DC=Jt,RC=Jt,OC=Jt;function ls(e,t,r){return e.l+=2,[zS(e)]}function Fc(e){return e.l+=6,[]}var BC=ls,NC=Fc,IC=Fc,PC=ls;function um(e){return e.l+=2,[Ft(e),e.read_shift(2)&1]}var MC=ls,LC=um,VC=Fc,UC=ls,$C=ls,WC=["Data","All","Headers","??","?Data2","??","?DataHeaders","??","Totals","??","??","??","?DataTotals","??","??","??","?Current"];function HC(e){e.l+=2;var t=e.read_shift(2),r=e.read_shift(2),n=e.read_shift(4),a=e.read_shift(2),i=e.read_shift(2),s=WC[r>>2&31];return{ixti:t,coltype:r&3,rt:s,idx:n,c:a,C:i}}function jC(e){return e.l+=2,[e.read_shift(4)]}function zC(e,t,r){return e.l+=5,e.l+=2,e.l+=r.biff==2?1:4,["PTGSHEET"]}function GC(e,t,r){return e.l+=r.biff==2?4:5,["PTGENDSHEET"]}function XC(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function KC(e){var t=e.read_shift(1)>>>5&3,r=e.read_shift(2);return[t,r]}function YC(e){return e.l+=4,[0,0]}var dm={1:{n:"PtgExp",f:mC},2:{n:"PtgTbl",f:OC},3:{n:"PtgAdd",f:At},4:{n:"PtgSub",f:At},5:{n:"PtgMul",f:At},6:{n:"PtgDiv",f:At},7:{n:"PtgPower",f:At},8:{n:"PtgConcat",f:At},9:{n:"PtgLt",f:At},10:{n:"PtgLe",f:At},11:{n:"PtgEq",f:At},12:{n:"PtgGe",f:At},13:{n:"PtgGt",f:At},14:{n:"PtgNe",f:At},15:{n:"PtgIsect",f:At},16:{n:"PtgUnion",f:At},17:{n:"PtgRange",f:At},18:{n:"PtgUplus",f:At},19:{n:"PtgUminus",f:At},20:{n:"PtgPercent",f:At},21:{n:"PtgParen",f:At},22:{n:"PtgMissArg",f:At},23:{n:"PtgStr",f:wC},26:{n:"PtgSheet",f:zC},27:{n:"PtgEndSheet",f:GC},28:{n:"PtgErr",f:pC},29:{n:"PtgBool",f:xC},30:{n:"PtgInt",f:gC},31:{n:"PtgNum",f:vC},32:{n:"PtgArray",f:QS},33:{n:"PtgFunc",f:fC},34:{n:"PtgFuncVar",f:uC},35:{n:"PtgName",f:bC},36:{n:"PtgRef",f:oC},37:{n:"PtgArea",f:KS},38:{n:"PtgMemArea",f:CC},39:{n:"PtgMemErr",f:DC},40:{n:"PtgMemNoMem",f:RC},41:{n:"PtgMemFunc",f:TC},42:{n:"PtgRefErr",f:FC},43:{n:"PtgAreaErr",f:qS},44:{n:"PtgRefN",f:lC},45:{n:"PtgAreaN",f:ZS},46:{n:"PtgMemAreaN",f:XC},47:{n:"PtgMemNoMemN",f:KC},57:{n:"PtgNameX",f:EC},58:{n:"PtgRef3d",f:cC},59:{n:"PtgArea3d",f:YS},60:{n:"PtgRefErr3d",f:AC},61:{n:"PtgAreaErr3d",f:JS},255:{}},qC={64:32,96:32,65:33,97:33,66:34,98:34,67:35,99:35,68:36,100:36,69:37,101:37,70:38,102:38,71:39,103:39,72:40,104:40,73:41,105:41,74:42,106:42,75:43,107:43,76:44,108:44,77:45,109:45,78:46,110:46,79:47,111:47,88:34,120:34,89:57,121:57,90:58,122:58,91:59,123:59,92:60,124:60,93:61,125:61},JC={1:{n:"PtgElfLel",f:um},2:{n:"PtgElfRw",f:UC},3:{n:"PtgElfCol",f:BC},6:{n:"PtgElfRwV",f:$C},7:{n:"PtgElfColV",f:PC},10:{n:"PtgElfRadical",f:MC},11:{n:"PtgElfRadicalS",f:VC},13:{n:"PtgElfColS",f:NC},15:{n:"PtgElfColSV",f:IC},16:{n:"PtgElfRadicalLel",f:LC},25:{n:"PtgList",f:HC},29:{n:"PtgSxName",f:jC},255:{}},ZC={0:{n:"PtgAttrNoop",f:YC},1:{n:"PtgAttrSemi",f:aC},2:{n:"PtgAttrIf",f:rC},4:{n:"PtgAttrChoose",f:eC},8:{n:"PtgAttrGoto",f:tC},16:{n:"PtgAttrSum",f:hC},32:{n:"PtgAttrBaxcel",f:cm},33:{n:"PtgAttrBaxcel",f:cm},64:{n:"PtgAttrSpace",f:iC},65:{n:"PtgAttrSpaceSemi",f:sC},128:{n:"PtgAttrIfError",f:nC},255:{}};function cs(e,t,r,n){if(n.biff<8)return Jt(e,t);for(var a=e.l+t,i=[],s=0;s!==r.length;++s)switch(r[s][0]){case"PtgArray":r[s][1]=kC(e,0,n),i.push(r[s][1]);break;case"PtgMemArea":r[s][2]=yC(e,r[s][1],n),i.push(r[s][2]);break;case"PtgExp":n&&n.biff==12&&(r[s][1][1]=e.read_shift(4),i.push(r[s][1]));break;case"PtgList":case"PtgElfRadicalS":case"PtgElfColS":case"PtgElfColSV":throw"Unsupported "+r[s][0]}return t=a-e.l,t!==0&&i.push(Jt(e,t)),i}function fs(e,t,r){for(var n=e.l+t,a,i,s=[];n!=e.l;)t=n-e.l,i=e[e.l],a=dm[i]||dm[qC[i]],(i===24||i===25)&&(a=(i===24?JC:ZC)[e[e.l+1]]),!a||!a.f?Jt(e,t):s.push([a.n,a.f(e,t,r)]);return s}function QC(e){for(var t=[],r=0;r<e.length;++r){for(var n=e[r],a=[],i=0;i<n.length;++i){var s=n[i];if(s)switch(s[0]){case 2:a.push('"'+s[1].replace(/"/g,'""')+'"');break;default:a.push(s[1])}else a.push("")}t.push(a.join(","))}return t.join(";")}var eT={PtgAdd:"+",PtgConcat:"&",PtgDiv:"/",PtgEq:"=",PtgGe:">=",PtgGt:">",PtgLe:"<=",PtgLt:"<",PtgMul:"*",PtgNe:"<>",PtgPower:"^",PtgSub:"-"};function tT(e,t){if(!e&&!(t&&t.biff<=5&&t.biff>=2))throw new Error("empty sheet name");return/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(e)?"'"+e+"'":e}function hm(e,t,r){if(!e)return"SH33TJSERR0";if(r.biff>8&&(!e.XTI||!e.XTI[t]))return e.SheetNames[t];if(!e.XTI)return"SH33TJSERR6";var n=e.XTI[t];if(r.biff<8)return t>1e4&&(t-=65536),t<0&&(t=-t),t==0?"":e.XTI[t-1];if(!n)return"SH33TJSERR1";var a="";if(r.biff>8)switch(e[n[0]][0]){case 357:return a=n[1]==-1?"#REF":e.SheetNames[n[1]],n[1]==n[2]?a:a+":"+e.SheetNames[n[2]];case 358:return r.SID!=null?e.SheetNames[r.SID]:"SH33TJSSAME"+e[n[0]][0];case 355:default:return"SH33TJSSRC"+e[n[0]][0]}switch(e[n[0]][0][0]){case 1025:return a=n[1]==-1?"#REF":e.SheetNames[n[1]]||"SH33TJSERR3",n[1]==n[2]?a:a+":"+e.SheetNames[n[2]];case 14849:return e[n[0]].slice(1).map(function(i){return i.Name}).join(";;");default:return e[n[0]][0][3]?(a=n[1]==-1?"#REF":e[n[0]][0][3][n[1]]||"SH33TJSERR4",n[1]==n[2]?a:a+":"+e[n[0]][0][3][n[2]]):"SH33TJSERR2"}}function mm(e,t,r){var n=hm(e,t,r);return n=="#REF"?n:tT(n,r)}function rr(e,t,r,n,a){var i=a&&a.biff||8,s={s:{c:0,r:0},e:{c:0,r:0}},o=[],c,f,u,d=0,h=0,m,g="";if(!e[0]||!e[0][0])return"";for(var p=-1,x="",v=0,y=e[0].length;v<y;++v){var w=e[0][v];switch(w[0]){case"PtgUminus":o.push("-"+o.pop());break;case"PtgUplus":o.push("+"+o.pop());break;case"PtgPercent":o.push(o.pop()+"%");break;case"PtgAdd":case"PtgConcat":case"PtgDiv":case"PtgEq":case"PtgGe":case"PtgGt":case"PtgLe":case"PtgLt":case"PtgMul":case"PtgNe":case"PtgPower":case"PtgSub":if(c=o.pop(),f=o.pop(),p>=0){switch(e[0][p][1][0]){case 0:x=yt(" ",e[0][p][1][1]);break;case 1:x=yt("\r",e[0][p][1][1]);break;default:if(x="",a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}f=f+x,p=-1}o.push(f+eT[w[0]]+c);break;case"PtgIsect":c=o.pop(),f=o.pop(),o.push(f+" "+c);break;case"PtgUnion":c=o.pop(),f=o.pop(),o.push(f+","+c);break;case"PtgRange":c=o.pop(),f=o.pop(),o.push(f+":"+c);break;case"PtgAttrChoose":break;case"PtgAttrGoto":break;case"PtgAttrIf":break;case"PtgAttrIfError":break;case"PtgRef":u=Ji(w[1][1],s,a),o.push(Zi(u,i));break;case"PtgRefN":u=r?Ji(w[1][1],r,a):w[1][1],o.push(Zi(u,i));break;case"PtgRef3d":d=w[1][1],u=Ji(w[1][2],s,a),g=mm(n,d,a),o.push(g+"!"+Zi(u,i));break;case"PtgFunc":case"PtgFuncVar":var E=w[1][0],R=w[1][1];E||(E=0),E&=127;var F=E==0?[]:o.slice(-E);o.length-=E,R==="User"&&(R=F.shift()),o.push(R+"("+F.join(",")+")");break;case"PtgBool":o.push(w[1]?"TRUE":"FALSE");break;case"PtgInt":o.push(w[1]);break;case"PtgNum":o.push(String(w[1]));break;case"PtgStr":o.push('"'+w[1].replace(/"/g,'""')+'"');break;case"PtgErr":o.push(w[1]);break;case"PtgAreaN":m=$d(w[1][1],r?{s:r}:s,a),o.push(ec(m,a));break;case"PtgArea":m=$d(w[1][1],s,a),o.push(ec(m,a));break;case"PtgArea3d":d=w[1][1],m=w[1][2],g=mm(n,d,a),o.push(g+"!"+ec(m,a));break;case"PtgAttrSum":o.push("SUM("+o.pop()+")");break;case"PtgAttrBaxcel":case"PtgAttrSemi":break;case"PtgName":h=w[1][2];var C=(n.names||[])[h-1]||(n[0]||[])[h],U=C?C.Name:"SH33TJSNAME"+String(h);U&&U.slice(0,6)=="_xlfn."&&!a.xlfn&&(U=U.slice(6)),o.push(U);break;case"PtgNameX":var S=w[1][1];h=w[1][2];var W;if(a.biff<=5)S<0&&(S=-S),n[S]&&(W=n[S][h]);else{var z="";if(((n[S]||[])[0]||[])[0]==14849||(((n[S]||[])[0]||[])[0]==1025?n[S][h]&&n[S][h].itab>0&&(z=n.SheetNames[n[S][h].itab-1]+"!"):z=n.SheetNames[h-1]+"!"),n[S]&&n[S][h])z+=n[S][h].Name;else if(n[0]&&n[0][h])z+=n[0][h].Name;else{var V=(hm(n,S,a)||"").split(";;");V[h-1]?z=V[h-1]:z+="SH33TJSERRX"}o.push(z);break}W||(W={Name:"SH33TJSERRY"}),o.push(W.Name);break;case"PtgParen":var j="(",H=")";if(p>=0){switch(x="",e[0][p][1][0]){case 2:j=yt(" ",e[0][p][1][1])+j;break;case 3:j=yt("\r",e[0][p][1][1])+j;break;case 4:H=yt(" ",e[0][p][1][1])+H;break;case 5:H=yt("\r",e[0][p][1][1])+H;break;default:if(a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+e[0][p][1][0])}p=-1}o.push(j+o.pop()+H);break;case"PtgRefErr":o.push("#REF!");break;case"PtgRefErr3d":o.push("#REF!");break;case"PtgExp":u={c:w[1][1],r:w[1][0]};var Y={c:r.c,r:r.r};if(n.sharedf[Ne(u)]){var ae=n.sharedf[Ne(u)];o.push(rr(ae,s,Y,n,a))}else{var se=!1;for(c=0;c!=n.arrayf.length;++c)if(f=n.arrayf[c],!(u.c<f[0].s.c||u.c>f[0].e.c)&&!(u.r<f[0].s.r||u.r>f[0].e.r)){o.push(rr(f[1],s,Y,n,a)),se=!0;break}se||o.push(w[1])}break;case"PtgArray":o.push("{"+QC(w[1])+"}");break;case"PtgMemArea":break;case"PtgAttrSpace":case"PtgAttrSpaceSemi":p=v;break;case"PtgTbl":break;case"PtgMemErr":break;case"PtgMissArg":o.push("");break;case"PtgAreaErr":o.push("#REF!");break;case"PtgAreaErr3d":o.push("#REF!");break;case"PtgList":o.push("Table"+w[1].idx+"[#"+w[1].rt+"]");break;case"PtgMemAreaN":case"PtgMemNoMemN":case"PtgAttrNoop":case"PtgSheet":case"PtgEndSheet":break;case"PtgMemFunc":break;case"PtgMemNoMem":break;case"PtgElfCol":case"PtgElfColS":case"PtgElfColSV":case"PtgElfColV":case"PtgElfLel":case"PtgElfRadical":case"PtgElfRadicalLel":case"PtgElfRadicalS":case"PtgElfRw":case"PtgElfRwV":throw new Error("Unsupported ELFs");case"PtgSxName":throw new Error("Unrecognized Formula Token: "+String(w));default:throw new Error("Unrecognized Formula Token: "+String(w))}var de=["PtgAttrSpace","PtgAttrSpaceSemi","PtgAttrGoto"];if(a.biff!=3&&p>=0&&de.indexOf(e[0][v][0])==-1){w=e[0][p];var K=!0;switch(w[1][0]){case 4:K=!1;case 0:x=yt(" ",w[1][1]);break;case 5:K=!1;case 1:x=yt("\r",w[1][1]);break;default:if(x="",a.WTF)throw new Error("Unexpected PtgAttrSpaceType "+w[1][0])}o.push((K?x:"")+o.pop()+(K?"":x)),p=-1}}if(o.length>1&&a.WTF)throw new Error("bad formula stack");return o[0]}function rT(e,t,r){var n=e.l+t,a=r.biff==2?1:2,i,s=e.read_shift(a);if(s==65535)return[[],Jt(e,t-2)];var o=fs(e,s,r);return t!==s+a&&(i=cs(e,t-s-a,o,r)),e.l=n,[o,i]}function nT(e,t,r){var n=e.l+t,a=r.biff==2?1:2,i,s=e.read_shift(a);if(s==65535)return[[],Jt(e,t-2)];var o=fs(e,s,r);return t!==s+a&&(i=cs(e,t-s-a,o,r)),e.l=n,[o,i]}function aT(e,t,r,n){var a=e.l+t,i=fs(e,n,r),s;return a!==e.l&&(s=cs(e,a-e.l,i,r)),[i,s]}function iT(e,t,r){var n=e.l+t,a,i=e.read_shift(2),s=fs(e,i,r);return i==65535?[[],Jt(e,t-2)]:(t!==i+2&&(a=cs(e,n-i-2,s,r)),[s,a])}function sT(e){var t;if(Bn(e,e.l+6)!==65535)return[Qt(e),"n"];switch(e[e.l]){case 0:return e.l+=8,["String","s"];case 1:return t=e[e.l+2]===1,e.l+=8,[t,"b"];case 2:return t=e[e.l+2],e.l+=8,[t,"e"];case 3:return e.l+=8,["","s"]}return[]}function oT(e){if(e==null){var t=ie(8);return t.write_shift(1,3),t.write_shift(1,0),t.write_shift(2,0),t.write_shift(2,0),t.write_shift(2,65535),t}else if(typeof e=="number")return ka(e);return ka(0)}function Ac(e,t,r){var n=e.l+t,a=xn(e);r.biff==2&&++e.l;var i=sT(e),s=e.read_shift(1);r.biff!=2&&(e.read_shift(1),r.biff>=5&&e.read_shift(4));var o=nT(e,n-e.l,r);return{cell:a,val:i[0],formula:o,shared:s>>3&1,tt:i[1]}}function lT(e,t,r,n,a){var i=Ta(t,r,a),s=oT(e.v),o=ie(6),c=33;o.write_shift(2,c),o.write_shift(4,0);for(var f=ie(e.bf.length),u=0;u<e.bf.length;++u)f[u]=e.bf[u];var d=Lt([i,s,o,f]);return d}function Do(e,t,r){var n=e.read_shift(4),a=fs(e,n,r),i=e.read_shift(4),s=i>0?cs(e,i,a,r):null;return[a,s]}var cT=Do,Ro=Do,fT=Do,uT=Do,dT={0:"BEEP",1:"OPEN",2:"OPEN.LINKS",3:"CLOSE.ALL",4:"SAVE",5:"SAVE.AS",6:"FILE.DELETE",7:"PAGE.SETUP",8:"PRINT",9:"PRINTER.SETUP",10:"QUIT",11:"NEW.WINDOW",12:"ARRANGE.ALL",13:"WINDOW.SIZE",14:"WINDOW.MOVE",15:"FULL",16:"CLOSE",17:"RUN",22:"SET.PRINT.AREA",23:"SET.PRINT.TITLES",24:"SET.PAGE.BREAK",25:"REMOVE.PAGE.BREAK",26:"FONT",27:"DISPLAY",28:"PROTECT.DOCUMENT",29:"PRECISION",30:"A1.R1C1",31:"CALCULATE.NOW",32:"CALCULATION",34:"DATA.FIND",35:"EXTRACT",36:"DATA.DELETE",37:"SET.DATABASE",38:"SET.CRITERIA",39:"SORT",40:"DATA.SERIES",41:"TABLE",42:"FORMAT.NUMBER",43:"ALIGNMENT",44:"STYLE",45:"BORDER",46:"CELL.PROTECTION",47:"COLUMN.WIDTH",48:"UNDO",49:"CUT",50:"COPY",51:"PASTE",52:"CLEAR",53:"PASTE.SPECIAL",54:"EDIT.DELETE",55:"INSERT",56:"FILL.RIGHT",57:"FILL.DOWN",61:"DEFINE.NAME",62:"CREATE.NAMES",63:"FORMULA.GOTO",64:"FORMULA.FIND",65:"SELECT.LAST.CELL",66:"SHOW.ACTIVE.CELL",67:"GALLERY.AREA",68:"GALLERY.BAR",69:"GALLERY.COLUMN",70:"GALLERY.LINE",71:"GALLERY.PIE",72:"GALLERY.SCATTER",73:"COMBINATION",74:"PREFERRED",75:"ADD.OVERLAY",76:"GRIDLINES",77:"SET.PREFERRED",78:"AXES",79:"LEGEND",80:"ATTACH.TEXT",81:"ADD.ARROW",82:"SELECT.CHART",83:"SELECT.PLOT.AREA",84:"PATTERNS",85:"MAIN.CHART",86:"OVERLAY",87:"SCALE",88:"FORMAT.LEGEND",89:"FORMAT.TEXT",90:"EDIT.REPEAT",91:"PARSE",92:"JUSTIFY",93:"HIDE",94:"UNHIDE",95:"WORKSPACE",96:"FORMULA",97:"FORMULA.FILL",98:"FORMULA.ARRAY",99:"DATA.FIND.NEXT",100:"DATA.FIND.PREV",101:"FORMULA.FIND.NEXT",102:"FORMULA.FIND.PREV",103:"ACTIVATE",104:"ACTIVATE.NEXT",105:"ACTIVATE.PREV",106:"UNLOCKED.NEXT",107:"UNLOCKED.PREV",108:"COPY.PICTURE",109:"SELECT",110:"DELETE.NAME",111:"DELETE.FORMAT",112:"VLINE",113:"HLINE",114:"VPAGE",115:"HPAGE",116:"VSCROLL",117:"HSCROLL",118:"ALERT",119:"NEW",120:"CANCEL.COPY",121:"SHOW.CLIPBOARD",122:"MESSAGE",124:"PASTE.LINK",125:"APP.ACTIVATE",126:"DELETE.ARROW",127:"ROW.HEIGHT",128:"FORMAT.MOVE",129:"FORMAT.SIZE",130:"FORMULA.REPLACE",131:"SEND.KEYS",132:"SELECT.SPECIAL",133:"APPLY.NAMES",134:"REPLACE.FONT",135:"FREEZE.PANES",136:"SHOW.INFO",137:"SPLIT",138:"ON.WINDOW",139:"ON.DATA",140:"DISABLE.INPUT",142:"OUTLINE",143:"LIST.NAMES",144:"FILE.CLOSE",145:"SAVE.WORKBOOK",146:"DATA.FORM",147:"COPY.CHART",148:"ON.TIME",149:"WAIT",150:"FORMAT.FONT",151:"FILL.UP",152:"FILL.LEFT",153:"DELETE.OVERLAY",155:"SHORT.MENUS",159:"SET.UPDATE.STATUS",161:"COLOR.PALETTE",162:"DELETE.STYLE",163:"WINDOW.RESTORE",164:"WINDOW.MAXIMIZE",166:"CHANGE.LINK",167:"CALCULATE.DOCUMENT",168:"ON.KEY",169:"APP.RESTORE",170:"APP.MOVE",171:"APP.SIZE",172:"APP.MINIMIZE",173:"APP.MAXIMIZE",174:"BRING.TO.FRONT",175:"SEND.TO.BACK",185:"MAIN.CHART.TYPE",186:"OVERLAY.CHART.TYPE",187:"SELECT.END",188:"OPEN.MAIL",189:"SEND.MAIL",190:"STANDARD.FONT",191:"CONSOLIDATE",192:"SORT.SPECIAL",193:"GALLERY.3D.AREA",194:"GALLERY.3D.COLUMN",195:"GALLERY.3D.LINE",196:"GALLERY.3D.PIE",197:"VIEW.3D",198:"GOAL.SEEK",199:"WORKGROUP",200:"FILL.GROUP",201:"UPDATE.LINK",202:"PROMOTE",203:"DEMOTE",204:"SHOW.DETAIL",206:"UNGROUP",207:"OBJECT.PROPERTIES",208:"SAVE.NEW.OBJECT",209:"SHARE",210:"SHARE.NAME",211:"DUPLICATE",212:"APPLY.STYLE",213:"ASSIGN.TO.OBJECT",214:"OBJECT.PROTECTION",215:"HIDE.OBJECT",216:"SET.EXTRACT",217:"CREATE.PUBLISHER",218:"SUBSCRIBE.TO",219:"ATTRIBUTES",220:"SHOW.TOOLBAR",222:"PRINT.PREVIEW",223:"EDIT.COLOR",224:"SHOW.LEVELS",225:"FORMAT.MAIN",226:"FORMAT.OVERLAY",227:"ON.RECALC",228:"EDIT.SERIES",229:"DEFINE.STYLE",240:"LINE.PRINT",243:"ENTER.DATA",249:"GALLERY.RADAR",250:"MERGE.STYLES",251:"EDITION.OPTIONS",252:"PASTE.PICTURE",253:"PASTE.PICTURE.LINK",254:"SPELLING",256:"ZOOM",259:"INSERT.OBJECT",260:"WINDOW.MINIMIZE",265:"SOUND.NOTE",266:"SOUND.PLAY",267:"FORMAT.SHAPE",268:"EXTEND.POLYGON",269:"FORMAT.AUTO",272:"GALLERY.3D.BAR",273:"GALLERY.3D.SURFACE",274:"FILL.AUTO",276:"CUSTOMIZE.TOOLBAR",277:"ADD.TOOL",278:"EDIT.OBJECT",279:"ON.DOUBLECLICK",280:"ON.ENTRY",281:"WORKBOOK.ADD",282:"WORKBOOK.MOVE",283:"WORKBOOK.COPY",284:"WORKBOOK.OPTIONS",285:"SAVE.WORKSPACE",288:"CHART.WIZARD",289:"DELETE.TOOL",290:"MOVE.TOOL",291:"WORKBOOK.SELECT",292:"WORKBOOK.ACTIVATE",293:"ASSIGN.TO.TOOL",295:"COPY.TOOL",296:"RESET.TOOL",297:"CONSTRAIN.NUMERIC",298:"PASTE.TOOL",302:"WORKBOOK.NEW",305:"SCENARIO.CELLS",306:"SCENARIO.DELETE",307:"SCENARIO.ADD",308:"SCENARIO.EDIT",309:"SCENARIO.SHOW",310:"SCENARIO.SHOW.NEXT",311:"SCENARIO.SUMMARY",312:"PIVOT.TABLE.WIZARD",313:"PIVOT.FIELD.PROPERTIES",314:"PIVOT.FIELD",315:"PIVOT.ITEM",316:"PIVOT.ADD.FIELDS",318:"OPTIONS.CALCULATION",319:"OPTIONS.EDIT",320:"OPTIONS.VIEW",321:"ADDIN.MANAGER",322:"MENU.EDITOR",323:"ATTACH.TOOLBARS",324:"VBAActivate",325:"OPTIONS.CHART",328:"VBA.INSERT.FILE",330:"VBA.PROCEDURE.DEFINITION",336:"ROUTING.SLIP",338:"ROUTE.DOCUMENT",339:"MAIL.LOGON",342:"INSERT.PICTURE",343:"EDIT.TOOL",344:"GALLERY.DOUGHNUT",350:"CHART.TREND",352:"PIVOT.ITEM.PROPERTIES",354:"WORKBOOK.INSERT",355:"OPTIONS.TRANSITION",356:"OPTIONS.GENERAL",370:"FILTER.ADVANCED",373:"MAIL.ADD.MAILER",374:"MAIL.DELETE.MAILER",375:"MAIL.REPLY",376:"MAIL.REPLY.ALL",377:"MAIL.FORWARD",378:"MAIL.NEXT.LETTER",379:"DATA.LABEL",380:"INSERT.TITLE",381:"FONT.PROPERTIES",382:"MACRO.OPTIONS",383:"WORKBOOK.HIDE",384:"WORKBOOK.UNHIDE",385:"WORKBOOK.DELETE",386:"WORKBOOK.NAME",388:"GALLERY.CUSTOM",390:"ADD.CHART.AUTOFORMAT",391:"DELETE.CHART.AUTOFORMAT",392:"CHART.ADD.DATA",393:"AUTO.OUTLINE",394:"TAB.ORDER",395:"SHOW.DIALOG",396:"SELECT.ALL",397:"UNGROUP.SHEETS",398:"SUBTOTAL.CREATE",399:"SUBTOTAL.REMOVE",400:"RENAME.OBJECT",412:"WORKBOOK.SCROLL",413:"WORKBOOK.NEXT",414:"WORKBOOK.PREV",415:"WORKBOOK.TAB.SPLIT",416:"FULL.SCREEN",417:"WORKBOOK.PROTECT",420:"SCROLLBAR.PROPERTIES",421:"PIVOT.SHOW.PAGES",422:"TEXT.TO.COLUMNS",423:"FORMAT.CHARTTYPE",424:"LINK.FORMAT",425:"TRACER.DISPLAY",430:"TRACER.NAVIGATE",431:"TRACER.CLEAR",432:"TRACER.ERROR",433:"PIVOT.FIELD.GROUP",434:"PIVOT.FIELD.UNGROUP",435:"CHECKBOX.PROPERTIES",436:"LABEL.PROPERTIES",437:"LISTBOX.PROPERTIES",438:"EDITBOX.PROPERTIES",439:"PIVOT.REFRESH",440:"LINK.COMBO",441:"OPEN.TEXT",442:"HIDE.DIALOG",443:"SET.DIALOG.FOCUS",444:"ENABLE.OBJECT",445:"PUSHBUTTON.PROPERTIES",446:"SET.DIALOG.DEFAULT",447:"FILTER",448:"FILTER.SHOW.ALL",449:"CLEAR.OUTLINE",450:"FUNCTION.WIZARD",451:"ADD.LIST.ITEM",452:"SET.LIST.ITEM",453:"REMOVE.LIST.ITEM",454:"SELECT.LIST.ITEM",455:"SET.CONTROL.VALUE",456:"SAVE.COPY.AS",458:"OPTIONS.LISTS.ADD",459:"OPTIONS.LISTS.DELETE",460:"SERIES.AXES",461:"SERIES.X",462:"SERIES.Y",463:"ERRORBAR.X",464:"ERRORBAR.Y",465:"FORMAT.CHART",466:"SERIES.ORDER",467:"MAIL.LOGOFF",468:"CLEAR.ROUTING.SLIP",469:"APP.ACTIVATE.MICROSOFT",470:"MAIL.EDIT.MAILER",471:"ON.SHEET",472:"STANDARD.WIDTH",473:"SCENARIO.MERGE",474:"SUMMARY.INFO",475:"FIND.FILE",476:"ACTIVE.CELL.FONT",477:"ENABLE.TIPWIZARD",478:"VBA.MAKE.ADDIN",480:"INSERTDATATABLE",481:"WORKGROUP.OPTIONS",482:"MAIL.SEND.MAILER",485:"AUTOCORRECT",489:"POST.DOCUMENT",491:"PICKLIST",493:"VIEW.SHOW",494:"VIEW.DEFINE",495:"VIEW.DELETE",509:"SHEET.BACKGROUND",510:"INSERT.MAP.OBJECT",511:"OPTIONS.MENONO",517:"MSOCHECKS",518:"NORMAL",519:"LAYOUT",520:"RM.PRINT.AREA",521:"CLEAR.PRINT.AREA",522:"ADD.PRINT.AREA",523:"MOVE.BRK",545:"HIDECURR.NOTE",546:"HIDEALL.NOTES",547:"DELETE.NOTE",548:"TRAVERSE.NOTES",549:"ACTIVATE.NOTES",620:"PROTECT.REVISIONS",621:"UNPROTECT.REVISIONS",647:"OPTIONS.ME",653:"WEB.PUBLISH",667:"NEWWEBQUERY",673:"PIVOT.TABLE.CHART",753:"OPTIONS.SAVE",755:"OPTIONS.SPELL",808:"HIDEALL.INKANNOTS"},pm={0:"COUNT",1:"IF",2:"ISNA",3:"ISERROR",4:"SUM",5:"AVERAGE",6:"MIN",7:"MAX",8:"ROW",9:"COLUMN",10:"NA",11:"NPV",12:"STDEV",13:"DOLLAR",14:"FIXED",15:"SIN",16:"COS",17:"TAN",18:"ATAN",19:"PI",20:"SQRT",21:"EXP",22:"LN",23:"LOG10",24:"ABS",25:"INT",26:"SIGN",27:"ROUND",28:"LOOKUP",29:"INDEX",30:"REPT",31:"MID",32:"LEN",33:"VALUE",34:"TRUE",35:"FALSE",36:"AND",37:"OR",38:"NOT",39:"MOD",40:"DCOUNT",41:"DSUM",42:"DAVERAGE",43:"DMIN",44:"DMAX",45:"DSTDEV",46:"VAR",47:"DVAR",48:"TEXT",49:"LINEST",50:"TREND",51:"LOGEST",52:"GROWTH",53:"GOTO",54:"HALT",55:"RETURN",56:"PV",57:"FV",58:"NPER",59:"PMT",60:"RATE",61:"MIRR",62:"IRR",63:"RAND",64:"MATCH",65:"DATE",66:"TIME",67:"DAY",68:"MONTH",69:"YEAR",70:"WEEKDAY",71:"HOUR",72:"MINUTE",73:"SECOND",74:"NOW",75:"AREAS",76:"ROWS",77:"COLUMNS",78:"OFFSET",79:"ABSREF",80:"RELREF",81:"ARGUMENT",82:"SEARCH",83:"TRANSPOSE",84:"ERROR",85:"STEP",86:"TYPE",87:"ECHO",88:"SET.NAME",89:"CALLER",90:"DEREF",91:"WINDOWS",92:"SERIES",93:"DOCUMENTS",94:"ACTIVE.CELL",95:"SELECTION",96:"RESULT",97:"ATAN2",98:"ASIN",99:"ACOS",100:"CHOOSE",101:"HLOOKUP",102:"VLOOKUP",103:"LINKS",104:"INPUT",105:"ISREF",106:"GET.FORMULA",107:"GET.NAME",108:"SET.VALUE",109:"LOG",110:"EXEC",111:"CHAR",112:"LOWER",113:"UPPER",114:"PROPER",115:"LEFT",116:"RIGHT",117:"EXACT",118:"TRIM",119:"REPLACE",120:"SUBSTITUTE",121:"CODE",122:"NAMES",123:"DIRECTORY",124:"FIND",125:"CELL",126:"ISERR",127:"ISTEXT",128:"ISNUMBER",129:"ISBLANK",130:"T",131:"N",132:"FOPEN",133:"FCLOSE",134:"FSIZE",135:"FREADLN",136:"FREAD",137:"FWRITELN",138:"FWRITE",139:"FPOS",140:"DATEVALUE",141:"TIMEVALUE",142:"SLN",143:"SYD",144:"DDB",145:"GET.DEF",146:"REFTEXT",147:"TEXTREF",148:"INDIRECT",149:"REGISTER",150:"CALL",151:"ADD.BAR",152:"ADD.MENU",153:"ADD.COMMAND",154:"ENABLE.COMMAND",155:"CHECK.COMMAND",156:"RENAME.COMMAND",157:"SHOW.BAR",158:"DELETE.MENU",159:"DELETE.COMMAND",160:"GET.CHART.ITEM",161:"DIALOG.BOX",162:"CLEAN",163:"MDETERM",164:"MINVERSE",165:"MMULT",166:"FILES",167:"IPMT",168:"PPMT",169:"COUNTA",170:"CANCEL.KEY",171:"FOR",172:"WHILE",173:"BREAK",174:"NEXT",175:"INITIATE",176:"REQUEST",177:"POKE",178:"EXECUTE",179:"TERMINATE",180:"RESTART",181:"HELP",182:"GET.BAR",183:"PRODUCT",184:"FACT",185:"GET.CELL",186:"GET.WORKSPACE",187:"GET.WINDOW",188:"GET.DOCUMENT",189:"DPRODUCT",190:"ISNONTEXT",191:"GET.NOTE",192:"NOTE",193:"STDEVP",194:"VARP",195:"DSTDEVP",196:"DVARP",197:"TRUNC",198:"ISLOGICAL",199:"DCOUNTA",200:"DELETE.BAR",201:"UNREGISTER",204:"USDOLLAR",205:"FINDB",206:"SEARCHB",207:"REPLACEB",208:"LEFTB",209:"RIGHTB",210:"MIDB",211:"LENB",212:"ROUNDUP",213:"ROUNDDOWN",214:"ASC",215:"DBCS",216:"RANK",219:"ADDRESS",220:"DAYS360",221:"TODAY",222:"VDB",223:"ELSE",224:"ELSE.IF",225:"END.IF",226:"FOR.CELL",227:"MEDIAN",228:"SUMPRODUCT",229:"SINH",230:"COSH",231:"TANH",232:"ASINH",233:"ACOSH",234:"ATANH",235:"DGET",236:"CREATE.OBJECT",237:"VOLATILE",238:"LAST.ERROR",239:"CUSTOM.UNDO",240:"CUSTOM.REPEAT",241:"FORMULA.CONVERT",242:"GET.LINK.INFO",243:"TEXT.BOX",244:"INFO",245:"GROUP",246:"GET.OBJECT",247:"DB",248:"PAUSE",251:"RESUME",252:"FREQUENCY",253:"ADD.TOOLBAR",254:"DELETE.TOOLBAR",255:"User",256:"RESET.TOOLBAR",257:"EVALUATE",258:"GET.TOOLBAR",259:"GET.TOOL",260:"SPELLING.CHECK",261:"ERROR.TYPE",262:"APP.TITLE",263:"WINDOW.TITLE",264:"SAVE.TOOLBAR",265:"ENABLE.TOOL",266:"PRESS.TOOL",267:"REGISTER.ID",268:"GET.WORKBOOK",269:"AVEDEV",270:"BETADIST",271:"GAMMALN",272:"BETAINV",273:"BINOMDIST",274:"CHIDIST",275:"CHIINV",276:"COMBIN",277:"CONFIDENCE",278:"CRITBINOM",279:"EVEN",280:"EXPONDIST",281:"FDIST",282:"FINV",283:"FISHER",284:"FISHERINV",285:"FLOOR",286:"GAMMADIST",287:"GAMMAINV",288:"CEILING",289:"HYPGEOMDIST",290:"LOGNORMDIST",291:"LOGINV",292:"NEGBINOMDIST",293:"NORMDIST",294:"NORMSDIST",295:"NORMINV",296:"NORMSINV",297:"STANDARDIZE",298:"ODD",299:"PERMUT",300:"POISSON",301:"TDIST",302:"WEIBULL",303:"SUMXMY2",304:"SUMX2MY2",305:"SUMX2PY2",306:"CHITEST",307:"CORREL",308:"COVAR",309:"FORECAST",310:"FTEST",311:"INTERCEPT",312:"PEARSON",313:"RSQ",314:"STEYX",315:"SLOPE",316:"TTEST",317:"PROB",318:"DEVSQ",319:"GEOMEAN",320:"HARMEAN",321:"SUMSQ",322:"KURT",323:"SKEW",324:"ZTEST",325:"LARGE",326:"SMALL",327:"QUARTILE",328:"PERCENTILE",329:"PERCENTRANK",330:"MODE",331:"TRIMMEAN",332:"TINV",334:"MOVIE.COMMAND",335:"GET.MOVIE",336:"CONCATENATE",337:"POWER",338:"PIVOT.ADD.DATA",339:"GET.PIVOT.TABLE",340:"GET.PIVOT.FIELD",341:"GET.PIVOT.ITEM",342:"RADIANS",343:"DEGREES",344:"SUBTOTAL",345:"SUMIF",346:"COUNTIF",347:"COUNTBLANK",348:"SCENARIO.GET",349:"OPTIONS.LISTS.GET",350:"ISPMT",351:"DATEDIF",352:"DATESTRING",353:"NUMBERSTRING",354:"ROMAN",355:"OPEN.DIALOG",356:"SAVE.DIALOG",357:"VIEW.GET",358:"GETPIVOTDATA",359:"HYPERLINK",360:"PHONETIC",361:"AVERAGEA",362:"MAXA",363:"MINA",364:"STDEVPA",365:"VARPA",366:"STDEVA",367:"VARA",368:"BAHTTEXT",369:"THAIDAYOFWEEK",370:"THAIDIGIT",371:"THAIMONTHOFYEAR",372:"THAINUMSOUND",373:"THAINUMSTRING",374:"THAISTRINGLENGTH",375:"ISTHAIDIGIT",376:"ROUNDBAHTDOWN",377:"ROUNDBAHTUP",378:"THAIYEAR",379:"RTD",380:"CUBEVALUE",381:"CUBEMEMBER",382:"CUBEMEMBERPROPERTY",383:"CUBERANKEDMEMBER",384:"HEX2BIN",385:"HEX2DEC",386:"HEX2OCT",387:"DEC2BIN",388:"DEC2HEX",389:"DEC2OCT",390:"OCT2BIN",391:"OCT2HEX",392:"OCT2DEC",393:"BIN2DEC",394:"BIN2OCT",395:"BIN2HEX",396:"IMSUB",397:"IMDIV",398:"IMPOWER",399:"IMABS",400:"IMSQRT",401:"IMLN",402:"IMLOG2",403:"IMLOG10",404:"IMSIN",405:"IMCOS",406:"IMEXP",407:"IMARGUMENT",408:"IMCONJUGATE",409:"IMAGINARY",410:"IMREAL",411:"COMPLEX",412:"IMSUM",413:"IMPRODUCT",414:"SERIESSUM",415:"FACTDOUBLE",416:"SQRTPI",417:"QUOTIENT",418:"DELTA",419:"GESTEP",420:"ISEVEN",421:"ISODD",422:"MROUND",423:"ERF",424:"ERFC",425:"BESSELJ",426:"BESSELK",427:"BESSELY",428:"BESSELI",429:"XIRR",430:"XNPV",431:"PRICEMAT",432:"YIELDMAT",433:"INTRATE",434:"RECEIVED",435:"DISC",436:"PRICEDISC",437:"YIELDDISC",438:"TBILLEQ",439:"TBILLPRICE",440:"TBILLYIELD",441:"PRICE",442:"YIELD",443:"DOLLARDE",444:"DOLLARFR",445:"NOMINAL",446:"EFFECT",447:"CUMPRINC",448:"CUMIPMT",449:"EDATE",450:"EOMONTH",451:"YEARFRAC",452:"COUPDAYBS",453:"COUPDAYS",454:"COUPDAYSNC",455:"COUPNCD",456:"COUPNUM",457:"COUPPCD",458:"DURATION",459:"MDURATION",460:"ODDLPRICE",461:"ODDLYIELD",462:"ODDFPRICE",463:"ODDFYIELD",464:"RANDBETWEEN",465:"WEEKNUM",466:"AMORDEGRC",467:"AMORLINC",468:"CONVERT",724:"SHEETJS",469:"ACCRINT",470:"ACCRINTM",471:"WORKDAY",472:"NETWORKDAYS",473:"GCD",474:"MULTINOMIAL",475:"LCM",476:"FVSCHEDULE",477:"CUBEKPIMEMBER",478:"CUBESET",479:"CUBESETCOUNT",480:"IFERROR",481:"COUNTIFS",482:"SUMIFS",483:"AVERAGEIF",484:"AVERAGEIFS"},hT={2:1,3:1,10:0,15:1,16:1,17:1,18:1,19:0,20:1,21:1,22:1,23:1,24:1,25:1,26:1,27:2,30:2,31:3,32:1,33:1,34:0,35:0,38:1,39:2,40:3,41:3,42:3,43:3,44:3,45:3,47:3,48:2,53:1,61:3,63:0,65:3,66:3,67:1,68:1,69:1,70:1,71:1,72:1,73:1,74:0,75:1,76:1,77:1,79:2,80:2,83:1,85:0,86:1,89:0,90:1,94:0,95:0,97:2,98:1,99:1,101:3,102:3,105:1,106:1,108:2,111:1,112:1,113:1,114:1,117:2,118:1,119:4,121:1,126:1,127:1,128:1,129:1,130:1,131:1,133:1,134:1,135:1,136:2,137:2,138:2,140:1,141:1,142:3,143:4,144:4,161:1,162:1,163:1,164:1,165:2,172:1,175:2,176:2,177:3,178:2,179:1,184:1,186:1,189:3,190:1,195:3,196:3,197:1,198:1,199:3,201:1,207:4,210:3,211:1,212:2,213:2,214:1,215:1,225:0,229:1,230:1,231:1,232:1,233:1,234:1,235:3,244:1,247:4,252:2,257:1,261:1,271:1,273:4,274:2,275:2,276:2,277:3,278:3,279:1,280:3,281:3,282:3,283:1,284:1,285:2,286:4,287:3,288:2,289:4,290:3,291:3,292:3,293:4,294:1,295:3,296:1,297:3,298:1,299:2,300:3,301:3,302:4,303:2,304:2,305:2,306:2,307:2,308:2,309:3,310:2,311:2,312:2,313:2,314:2,315:2,316:4,325:2,326:2,327:2,328:2,331:2,332:2,337:2,342:1,343:1,346:2,347:1,350:4,351:3,352:1,353:2,360:1,368:1,369:1,370:1,371:1,372:1,373:1,374:1,375:1,376:1,377:1,378:1,382:3,385:1,392:1,393:1,396:2,397:2,398:2,399:1,400:1,401:1,402:1,403:1,404:1,405:1,406:1,407:1,408:1,409:1,410:1,414:4,415:1,416:1,417:2,420:1,421:1,422:2,424:1,425:2,426:2,427:2,428:2,430:3,438:3,439:3,440:3,443:2,444:2,445:2,446:2,447:6,448:6,449:2,450:2,464:2,468:3,476:2,479:1,480:2,65535:0};function gm(e){return e.slice(0,3)=="of:"&&(e=e.slice(3)),e.charCodeAt(0)==61&&(e=e.slice(1),e.charCodeAt(0)==61&&(e=e.slice(1))),e=e.replace(/COM\.MICROSOFT\./g,""),e=e.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g,function(t,r){return r.replace(/\./g,"")}),e=e.replace(/\[.(#[A-Z]*[?!])\]/g,"$1"),e.replace(/[;~]/g,",").replace(/\|/g,";")}function mT(e){var t="of:="+e.replace(Cc,"$1[.$2$3$4$5]").replace(/\]:\[/g,":");return t.replace(/;/g,"|").replace(/,/g,";")}function Dc(e){var t=e.split(":"),r=t[0].split(".")[0];return[r,t[0].split(".")[1]+(t.length>1?":"+(t[1].split(".")[1]||t[1].split(".")[0]):"")]}function pT(e){return e.replace(/\./,"!")}var us={},oi={},ds=typeof Map<"u";function Rc(e,t,r){var n=0,a=e.length;if(r){if(ds?r.has(t):Object.prototype.hasOwnProperty.call(r,t)){for(var i=ds?r.get(t):r[t];n<i.length;++n)if(e[i[n]].t===t)return e.Count++,i[n]}}else for(;n<a;++n)if(e[n].t===t)return e.Count++,n;return e[a]={t},e.Count++,e.Unique++,r&&(ds?(r.has(t)||r.set(t,[]),r.get(t).push(a)):(Object.prototype.hasOwnProperty.call(r,t)||(r[t]=[]),r[t].push(a))),a}function Oo(e,t){var r={min:e+1,max:e+1},n=-1;return t.MDW&&(tr=t.MDW),t.width!=null?r.customWidth=1:t.wpx!=null?n=is(t.wpx):t.wch!=null&&(n=t.wch),n>-1?(r.width=To(n),r.customWidth=1):t.width!=null&&(r.width=t.width),t.hidden&&(r.hidden=!0),t.level!=null&&(r.outlineLevel=r.level=t.level),r}function Aa(e,t){if(e){var r=[.7,.7,.75,.75,.3,.3];t=="xlml"&&(r=[1,1,1,1,.5,.5]),e.left==null&&(e.left=r[0]),e.right==null&&(e.right=r[1]),e.top==null&&(e.top=r[2]),e.bottom==null&&(e.bottom=r[3]),e.header==null&&(e.header=r[4]),e.footer==null&&(e.footer=r[5])}}function na(e,t,r){var n=r.revssf[t.z!=null?t.z:"General"],a=60,i=e.length;if(n==null&&r.ssf){for(;a<392;++a)if(r.ssf[a]==null){mn(t.z,a),r.ssf[a]=t.z,r.revssf[t.z]=n=a;break}}for(a=0;a!=i;++a)if(e[a].numFmtId===n)return a;return e[i]={numFmtId:n,fontId:0,fillId:0,borderId:0,xfId:0,applyNumberFormat:1},i}function xm(e,t,r,n,a,i){try{n.cellNF&&(e.z=Re[t])}catch(o){if(n.WTF)throw o}if(!(e.t==="z"&&!n.cellStyles)){if(e.t==="d"&&typeof e.v=="string"&&(e.v=ot(e.v)),(!n||n.cellText!==!1)&&e.t!=="z")try{if(Re[t]==null&&mn(h2[t]||"General",t),e.t==="e")e.w=e.w||Pn[e.v];else if(t===0)if(e.t==="n")(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Wi(e.v);else if(e.t==="d"){var s=Bt(e.v);(s|0)===s?e.w=s.toString(10):e.w=Wi(s)}else{if(e.v===void 0)return"";e.w=ha(e.v,oi)}else e.t==="d"?e.w=Cr(t,Bt(e.v),oi):e.w=Cr(t,e.v,oi)}catch(o){if(n.WTF)throw o}if(n.cellStyles&&r!=null)try{e.s=i.Fills[r],e.s.fgColor&&e.s.fgColor.theme&&!e.s.fgColor.rgb&&(e.s.fgColor.rgb=Co(a.themeElements.clrScheme[e.s.fgColor.theme].rgb,e.s.fgColor.tint||0),n.WTF&&(e.s.fgColor.raw_rgb=a.themeElements.clrScheme[e.s.fgColor.theme].rgb)),e.s.bgColor&&e.s.bgColor.theme&&(e.s.bgColor.rgb=Co(a.themeElements.clrScheme[e.s.bgColor.theme].rgb,e.s.bgColor.tint||0),n.WTF&&(e.s.bgColor.raw_rgb=a.themeElements.clrScheme[e.s.bgColor.theme].rgb))}catch(o){if(n.WTF&&i.Fills)throw o}}}function gT(e,t,r){if(e&&e["!ref"]){var n=Ye(e["!ref"]);if(n.e.c<n.s.c||n.e.r<n.s.r)throw new Error("Bad range ("+r+"): "+e["!ref"])}}function xT(e,t){var r=Ye(t);r.s.r<=r.e.r&&r.s.c<=r.e.c&&r.s.r>=0&&r.s.c>=0&&(e["!ref"]=We(r))}var vT=/<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g,wT=/<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/,_T=/<(?:\w:)?hyperlink [^>]*>/mg,yT=/"(\w*:\w*)"/,kT=/<(?:\w:)?col\b[^>]*[\/]?>/g,bT=/<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g,ET=/<(?:\w:)?pageMargins[^>]*\/>/g,vm=/<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/,ST=/<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/,CT=/<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/;function TT(e,t,r,n,a,i,s){if(!e)return e;n||(n={"!id":{}});var o=t.dense?[]:{},c={s:{r:2e6,c:2e6},e:{r:0,c:0}},f="",u="",d=e.match(wT);d?(f=e.slice(0,d.index),u=e.slice(d.index+d[0].length)):f=u=e;var h=f.match(vm);h?Oc(h[0],o,a,r):(h=f.match(ST))&&AT(h[0],h[1]||"",o,a,r);var m=(f.match(/<(?:\w*:)?dimension/)||{index:-1}).index;if(m>0){var g=f.slice(m,m+50).match(yT);g&&xT(o,g[1])}var p=f.match(CT);p&&p[1]&&WT(p[1],a);var x=[];if(t.cellStyles){var v=f.match(kT);v&&MT(x,v)}d&&zT(d[1],o,t,c,i,s);var y=u.match(bT);y&&(o["!autofilter"]=VT(y[0]));var w=[],E=u.match(vT);if(E)for(m=0;m!=E.length;++m)w[m]=Ye(E[m].slice(E[m].indexOf('"')+1));var R=u.match(_T);R&&NT(o,R,n);var F=u.match(ET);if(F&&(o["!margins"]=IT(Me(F[0]))),!o["!ref"]&&c.e.c>=c.s.c&&c.e.r>=c.s.r&&(o["!ref"]=We(c)),t.sheetRows>0&&o["!ref"]){var C=Ye(o["!ref"]);t.sheetRows<=+C.e.r&&(C.e.r=t.sheetRows-1,C.e.r>c.e.r&&(C.e.r=c.e.r),C.e.r<C.s.r&&(C.s.r=C.e.r),C.e.c>c.e.c&&(C.e.c=c.e.c),C.e.c<C.s.c&&(C.s.c=C.e.c),o["!fullref"]=o["!ref"],o["!ref"]=We(C))}return x.length>0&&(o["!cols"]=x),w.length>0&&(o["!merges"]=w),o}function FT(e){if(e.length===0)return"";for(var t='<mergeCells count="'+e.length+'">',r=0;r!=e.length;++r)t+='<mergeCell ref="'+We(e[r])+'"/>';return t+"</mergeCells>"}function Oc(e,t,r,n){var a=Me(e);r.Sheets[n]||(r.Sheets[n]={}),a.codeName&&(r.Sheets[n].CodeName=Ke(nt(a.codeName)))}function AT(e,t,r,n,a){Oc(e.slice(0,e.indexOf(">")),r,n,a)}function DT(e,t,r,n,a){var i=!1,s={},o=null;if(n.bookType!=="xlsx"&&t.vbaraw){var c=t.SheetNames[r];try{t.Workbook&&(c=t.Workbook.Sheets[r].CodeName||c)}catch{}i=!0,s.codeName=gn(Qe(c))}if(e&&e["!outline"]){var f={summaryBelow:1,summaryRight:1};e["!outline"].above&&(f.summaryBelow=0),e["!outline"].left&&(f.summaryRight=0),o=(o||"")+ge("outlinePr",null,f)}!i&&!o||(a[a.length]=ge("sheetPr",o,s))}var RT=["objects","scenarios","selectLockedCells","selectUnlockedCells"],OT=["formatColumns","formatRows","formatCells","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","sort","autoFilter","pivotTables"];function BT(e){var t={sheet:1};return RT.forEach(function(r){e[r]!=null&&e[r]&&(t[r]="1")}),OT.forEach(function(r){e[r]!=null&&!e[r]&&(t[r]="0")}),e.password&&(t.password=yc(e.password).toString(16).toUpperCase()),ge("sheetProtection",null,t)}function NT(e,t,r){for(var n=Array.isArray(e),a=0;a!=t.length;++a){var i=Me(nt(t[a]),!0);if(!i.ref)return;var s=((r||{})["!id"]||[])[i.id];s?(i.Target=s.Target,i.location&&(i.Target+="#"+Ke(i.location))):(i.Target="#"+Ke(i.location),s={Target:i.Target,TargetMode:"Internal"}),i.Rel=s,i.tooltip&&(i.Tooltip=i.tooltip,delete i.tooltip);for(var o=Ye(i.ref),c=o.s.r;c<=o.e.r;++c)for(var f=o.s.c;f<=o.e.c;++f){var u=Ne({c:f,r:c});n?(e[c]||(e[c]=[]),e[c][f]||(e[c][f]={t:"z",v:void 0}),e[c][f].l=i):(e[u]||(e[u]={t:"z",v:void 0}),e[u].l=i)}}}function IT(e){var t={};return["left","right","top","bottom","header","footer"].forEach(function(r){e[r]&&(t[r]=parseFloat(e[r]))}),t}function PT(e){return Aa(e),ge("pageMargins",null,e)}function MT(e,t){for(var r=!1,n=0;n!=t.length;++n){var a=Me(t[n],!0);a.hidden&&(a.hidden=ct(a.hidden));var i=parseInt(a.min,10)-1,s=parseInt(a.max,10)-1;for(a.outlineLevel&&(a.level=+a.outlineLevel||0),delete a.min,delete a.max,a.width=+a.width,!r&&a.width&&(r=!0,bc(a.width)),ta(a);i<=s;)e[i++]=lt(a)}}function LT(e,t){for(var r=["<cols>"],n,a=0;a!=t.length;++a)(n=t[a])&&(r[r.length]=ge("col",null,Oo(a,n)));return r[r.length]="</cols>",r.join("")}function VT(e){var t={ref:(e.match(/ref="([^"]*)"/)||[])[1]};return t}function UT(e,t,r,n){var a=typeof e.ref=="string"?e.ref:We(e.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var i=r.Workbook.Names,s=xr(a);s.s.r==s.e.r&&(s.e.r=xr(t["!ref"]).e.r,a=We(s));for(var o=0;o<i.length;++o){var c=i[o];if(c.Name=="_xlnm._FilterDatabase"&&c.Sheet==n){c.Ref="'"+r.SheetNames[n]+"'!"+a;break}}return o==i.length&&i.push({Name:"_xlnm._FilterDatabase",Sheet:n,Ref:"'"+r.SheetNames[n]+"'!"+a}),ge("autoFilter",null,{ref:a})}var $T=/<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/;function WT(e,t){t.Views||(t.Views=[{}]),(e.match($T)||[]).forEach(function(r,n){var a=Me(r);t.Views[n]||(t.Views[n]={}),+a.zoomScale&&(t.Views[n].zoom=+a.zoomScale),ct(a.rightToLeft)&&(t.Views[n].RTL=!0)})}function HT(e,t,r,n){var a={workbookViewId:"0"};return(((n||{}).Workbook||{}).Views||[])[0]&&(a.rightToLeft=n.Workbook.Views[0].RTL?"1":"0"),ge("sheetViews",ge("sheetView",null,a),{})}function jT(e,t,r,n){if(e.c&&r["!comments"].push([t,e.c]),e.v===void 0&&typeof e.f!="string"||e.t==="z"&&!e.f)return"";var a="",i=e.t,s=e.v;if(e.t!=="z")switch(e.t){case"b":a=e.v?"1":"0";break;case"n":a=""+e.v;break;case"e":a=Pn[e.v];break;case"d":n&&n.cellDates?a=ot(e.v,-1).toISOString():(e=lt(e),e.t="n",a=""+(e.v=Bt(ot(e.v)))),typeof e.z>"u"&&(e.z=Re[14]);break;default:a=e.v;break}var o=zt("v",Qe(a)),c={r:t},f=na(n.cellXfs,e,n);switch(f!==0&&(c.s=f),e.t){case"n":break;case"d":c.t="d";break;case"b":c.t="b";break;case"e":c.t="e";break;case"z":break;default:if(e.v==null){delete e.t;break}if(e.v.length>32767)throw new Error("Text length must not exceed 32767 characters");if(n&&n.bookSST){o=zt("v",""+Rc(n.Strings,e.v,n.revStrings)),c.t="s";break}c.t="str";break}if(e.t!=i&&(e.t=i,e.v=s),typeof e.f=="string"&&e.f){var u=e.F&&e.F.slice(0,t.length)==t?{t:"array",ref:e.F}:null;o=ge("f",Qe(e.f),u)+(e.v!=null?o:"")}return e.l&&r["!links"].push([t,e.l]),e.D&&(c.cm=1),ge("c",o,c)}var zT=function(){var e=/<(?:\w+:)?c[ \/>]/,t=/<\/(?:\w+:)?row>/,r=/r=["']([^"']*)["']/,n=/<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/,a=/ref=["']([^"']*)["']/,i=Gi("v"),s=Gi("f");return function(c,f,u,d,h,m){for(var g=0,p="",x=[],v=[],y=0,w=0,E=0,R="",F,C,U=0,S=0,W,z,V=0,j=0,H=Array.isArray(m.CellXf),Y,ae=[],se=[],de=Array.isArray(f),K=[],we={},D=!1,_=!!u.sheetStubs,k=c.split(t),b=0,A=k.length;b!=A;++b){p=k[b].trim();var G=p.length;if(G!==0){var re=0;e:for(g=0;g<G;++g)switch(p[g]){case">":if(p[g-1]!="/"){++g;break e}if(u&&u.cellStyles){if(C=Me(p.slice(re,g),!0),U=C.r!=null?parseInt(C.r,10):U+1,S=-1,u.sheetRows&&u.sheetRows<U)continue;we={},D=!1,C.ht&&(D=!0,we.hpt=parseFloat(C.ht),we.hpx=ai(we.hpt)),C.hidden=="1"&&(D=!0,we.hidden=!0),C.outlineLevel!=null&&(D=!0,we.level=+C.outlineLevel),D&&(K[U-1]=we)}break;case"<":re=g;break}if(re>=g)break;if(C=Me(p.slice(re,g),!0),U=C.r!=null?parseInt(C.r,10):U+1,S=-1,!(u.sheetRows&&u.sheetRows<U)){d.s.r>U-1&&(d.s.r=U-1),d.e.r<U-1&&(d.e.r=U-1),u&&u.cellStyles&&(we={},D=!1,C.ht&&(D=!0,we.hpt=parseFloat(C.ht),we.hpx=ai(we.hpt)),C.hidden=="1"&&(D=!0,we.hidden=!0),C.outlineLevel!=null&&(D=!0,we.level=+C.outlineLevel),D&&(K[U-1]=we)),x=p.slice(g).split(e);for(var ee=0;ee!=x.length&&x[ee].trim().charAt(0)=="<";++ee);for(x=x.slice(ee),g=0;g!=x.length;++g)if(p=x[g].trim(),p.length!==0){if(v=p.match(r),y=g,w=0,E=0,p="<c "+(p.slice(0,1)=="<"?">":"")+p,v!=null&&v.length===2){for(y=0,R=v[1],w=0;w!=R.length&&!((E=R.charCodeAt(w)-64)<1||E>26);++w)y=26*y+E;--y,S=y}else++S;for(w=0;w!=p.length&&p.charCodeAt(w)!==62;++w);if(++w,C=Me(p.slice(0,w),!0),C.r||(C.r=Ne({r:U-1,c:S})),R=p.slice(w),F={t:""},(v=R.match(i))!=null&&v[1]!==""&&(F.v=Ke(v[1])),u.cellFormula){if((v=R.match(s))!=null&&v[1]!==""){if(F.f=Ke(nt(v[1])).replace(/\r\n/g,`
|
||
`),u.xlfn||(F.f=im(F.f)),v[0].indexOf('t="array"')>-1)F.F=(R.match(a)||[])[1],F.F.indexOf(":")>-1&&ae.push([Ye(F.F),F.F]);else if(v[0].indexOf('t="shared"')>-1){z=Me(v[0]);var te=Ke(nt(v[1]));u.xlfn||(te=im(te)),se[parseInt(z.si,10)]=[z,te,C.r]}}else(v=R.match(/<f[^>]*\/>/))&&(z=Me(v[0]),se[z.si]&&(F.f=$S(se[z.si][1],se[z.si][2],C.r)));var ne=pt(C.r);for(w=0;w<ae.length;++w)ne.r>=ae[w][0].s.r&&ne.r<=ae[w][0].e.r&&ne.c>=ae[w][0].s.c&&ne.c<=ae[w][0].e.c&&(F.F=ae[w][1])}if(C.t==null&&F.v===void 0)if(F.f||F.F)F.v=0,F.t="n";else if(_)F.t="z";else continue;else F.t=C.t||"n";switch(d.s.c>S&&(d.s.c=S),d.e.c<S&&(d.e.c=S),F.t){case"n":if(F.v==""||F.v==null){if(!_)continue;F.t="z"}else F.v=parseFloat(F.v);break;case"s":if(typeof F.v>"u"){if(!_)continue;F.t="z"}else W=us[parseInt(F.v,10)],F.v=W.t,F.r=W.r,u.cellHTML&&(F.h=W.h);break;case"str":F.t="s",F.v=F.v!=null?nt(F.v):"",u.cellHTML&&(F.h=Kl(F.v));break;case"inlineStr":v=R.match(n),F.t="s",v!=null&&(W=_c(v[1]))?(F.v=W.t,u.cellHTML&&(F.h=W.h)):F.v="";break;case"b":F.v=ct(F.v);break;case"d":u.cellDates?F.v=ot(F.v,1):(F.v=Bt(ot(F.v,1)),F.t="n");break;case"e":(!u||u.cellText!==!1)&&(F.w=F.v),F.v=Jd[F.v];break}if(V=j=0,Y=null,H&&C.s!==void 0&&(Y=m.CellXf[C.s],Y!=null&&(Y.numFmtId!=null&&(V=Y.numFmtId),u.cellStyles&&Y.fillId!=null&&(j=Y.fillId))),xm(F,V,j,u,h,m),u.cellDates&&H&&F.t=="n"&&ma(Re[V])&&(F.t="d",F.v=ho(F.v)),C.cm&&u.xlmeta){var Ce=(u.xlmeta.Cell||[])[+C.cm-1];Ce&&Ce.type=="XLDAPR"&&(F.D=!0)}if(de){var I=pt(C.r);f[I.r]||(f[I.r]=[]),f[I.r][I.c]=F}else f[C.r]=F}}}}K.length>0&&(f["!rows"]=K)}}();function GT(e,t,r,n){var a=[],i=[],s=Ye(e["!ref"]),o="",c,f="",u=[],d=0,h=0,m=e["!rows"],g=Array.isArray(e),p={r:f},x,v=-1;for(h=s.s.c;h<=s.e.c;++h)u[h]=mt(h);for(d=s.s.r;d<=s.e.r;++d){for(i=[],f=Et(d),h=s.s.c;h<=s.e.c;++h){c=u[h]+f;var y=g?(e[d]||[])[h]:e[c];y!==void 0&&(o=jT(y,c,e,t))!=null&&i.push(o)}(i.length>0||m&&m[d])&&(p={r:f},m&&m[d]&&(x=m[d],x.hidden&&(p.hidden=1),v=-1,x.hpx?v=ss(x.hpx):x.hpt&&(v=x.hpt),v>-1&&(p.ht=v,p.customHeight=1),x.level&&(p.outlineLevel=x.level)),a[a.length]=ge("row",i.join(""),p))}if(m)for(;d<m.length;++d)m&&m[d]&&(p={r:d+1},x=m[d],x.hidden&&(p.hidden=1),v=-1,x.hpx?v=ss(x.hpx):x.hpt&&(v=x.hpt),v>-1&&(p.ht=v,p.customHeight=1),x.level&&(p.outlineLevel=x.level),a[a.length]=ge("row","",p));return a.join("")}function wm(e,t,r,n){var a=[bt,ge("worksheet",null,{xmlns:ga[0],"xmlns:r":Nt.r})],i=r.SheetNames[e],s=0,o="",c=r.Sheets[i];c==null&&(c={});var f=c["!ref"]||"A1",u=Ye(f);if(u.e.c>16383||u.e.r>1048575){if(t.WTF)throw new Error("Range "+f+" exceeds format limit A1:XFD1048576");u.e.c=Math.min(u.e.c,16383),u.e.r=Math.min(u.e.c,1048575),f=We(u)}n||(n={}),c["!comments"]=[];var d=[];DT(c,r,e,t,a),a[a.length]=ge("dimension",null,{ref:f}),a[a.length]=HT(c,t,e,r),t.sheetFormat&&(a[a.length]=ge("sheetFormatPr",null,{defaultRowHeight:t.sheetFormat.defaultRowHeight||"16",baseColWidth:t.sheetFormat.baseColWidth||"10",outlineLevelRow:t.sheetFormat.outlineLevelRow||"7"})),c["!cols"]!=null&&c["!cols"].length>0&&(a[a.length]=LT(c,c["!cols"])),a[s=a.length]="<sheetData/>",c["!links"]=[],c["!ref"]!=null&&(o=GT(c,t),o.length>0&&(a[a.length]=o)),a.length>s+1&&(a[a.length]="</sheetData>",a[s]=a[s].replace("/>",">")),c["!protect"]&&(a[a.length]=BT(c["!protect"])),c["!autofilter"]!=null&&(a[a.length]=UT(c["!autofilter"],c,r,e)),c["!merges"]!=null&&c["!merges"].length>0&&(a[a.length]=FT(c["!merges"]));var h=-1,m,g=-1;return c["!links"].length>0&&(a[a.length]="<hyperlinks>",c["!links"].forEach(function(p){p[1].Target&&(m={ref:p[0]},p[1].Target.charAt(0)!="#"&&(g=et(n,-1,Qe(p[1].Target).replace(/#.*$/,""),ze.HLINK),m["r:id"]="rId"+g),(h=p[1].Target.indexOf("#"))>-1&&(m.location=Qe(p[1].Target.slice(h+1))),p[1].Tooltip&&(m.tooltip=Qe(p[1].Tooltip)),a[a.length]=ge("hyperlink",null,m))}),a[a.length]="</hyperlinks>"),delete c["!links"],c["!margins"]!=null&&(a[a.length]=PT(c["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&(a[a.length]=zt("ignoredErrors",ge("ignoredError",null,{numberStoredAsText:1,sqref:f}))),d.length>0&&(g=et(n,-1,"../drawings/drawing"+(e+1)+".xml",ze.DRAW),a[a.length]=ge("drawing",null,{"r:id":"rId"+g}),c["!drawing"]=d),c["!comments"].length>0&&(g=et(n,-1,"../drawings/vmlDrawing"+(e+1)+".vml",ze.VML),a[a.length]=ge("legacyDrawing",null,{"r:id":"rId"+g}),c["!legacy"]=g),a.length>1&&(a[a.length]="</worksheet>",a[1]=a[1].replace("/>",">")),a.join("")}function XT(e,t){var r={},n=e.l+t;r.r=e.read_shift(4),e.l+=4;var a=e.read_shift(2);e.l+=1;var i=e.read_shift(1);return e.l=n,i&7&&(r.level=i&7),i&16&&(r.hidden=!0),i&32&&(r.hpt=a/20),r}function KT(e,t,r){var n=ie(145),a=(r["!rows"]||[])[e]||{};n.write_shift(4,e),n.write_shift(4,0);var i=320;a.hpx?i=ss(a.hpx)*20:a.hpt&&(i=a.hpt*20),n.write_shift(2,i),n.write_shift(1,0);var s=0;a.level&&(s|=a.level),a.hidden&&(s|=16),(a.hpx||a.hpt)&&(s|=32),n.write_shift(1,s),n.write_shift(1,0);var o=0,c=n.l;n.l+=4;for(var f={r:e,c:0},u=0;u<16;++u)if(!(t.s.c>u+1<<10||t.e.c<u<<10)){for(var d=-1,h=-1,m=u<<10;m<u+1<<10;++m){f.c=m;var g=Array.isArray(r)?(r[f.r]||[])[f.c]:r[Ne(f)];g&&(d<0&&(d=m),h=m)}d<0||(++o,n.write_shift(4,d),n.write_shift(4,h))}var p=n.l;return n.l=c,n.write_shift(4,o),n.l=p,n.length>n.l?n.slice(0,n.l):n}function YT(e,t,r,n){var a=KT(n,r,t);(a.length>17||(t["!rows"]||[])[n])&&ce(e,0,a)}var qT=ya,JT=ti;function ZT(){}function QT(e,t){var r={},n=e[e.l];return++e.l,r.above=!(n&64),r.left=!(n&128),e.l+=18,r.name=ry(e),r}function eF(e,t,r){r==null&&(r=ie(84+4*e.length));var n=192;t&&(t.above&&(n&=-65),t.left&&(n&=-129)),r.write_shift(1,n);for(var a=1;a<3;++a)r.write_shift(1,0);return xo({auto:1},r),r.write_shift(-4,-1),r.write_shift(-4,-1),jd(e,r),r.slice(0,r.l)}function tF(e){var t=Lr(e);return[t]}function rF(e,t,r){return r==null&&(r=ie(8)),va(t,r)}function nF(e){var t=wa(e);return[t]}function aF(e,t,r){return r==null&&(r=ie(4)),_a(t,r)}function iF(e){var t=Lr(e),r=e.read_shift(1);return[t,r,"b"]}function sF(e,t,r){return r==null&&(r=ie(9)),va(t,r),r.write_shift(1,e.v?1:0),r}function oF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"b"]}function lF(e,t,r){return r==null&&(r=ie(5)),_a(t,r),r.write_shift(1,e.v?1:0),r}function cF(e){var t=Lr(e),r=e.read_shift(1);return[t,r,"e"]}function fF(e,t,r){return r==null&&(r=ie(9)),va(t,r),r.write_shift(1,e.v),r}function uF(e){var t=wa(e),r=e.read_shift(1);return[t,r,"e"]}function dF(e,t,r){return r==null&&(r=ie(8)),_a(t,r),r.write_shift(1,e.v),r.write_shift(2,0),r.write_shift(1,0),r}function hF(e){var t=Lr(e),r=e.read_shift(4);return[t,r,"s"]}function mF(e,t,r){return r==null&&(r=ie(12)),va(t,r),r.write_shift(4,t.v),r}function pF(e){var t=wa(e),r=e.read_shift(4);return[t,r,"s"]}function gF(e,t,r){return r==null&&(r=ie(8)),_a(t,r),r.write_shift(4,t.v),r}function xF(e){var t=Lr(e),r=Qt(e);return[t,r,"n"]}function vF(e,t,r){return r==null&&(r=ie(16)),va(t,r),ka(e.v,r),r}function _m(e){var t=wa(e),r=Qt(e);return[t,r,"n"]}function wF(e,t,r){return r==null&&(r=ie(12)),_a(t,r),ka(e.v,r),r}function _F(e){var t=Lr(e),r=oc(e);return[t,r,"n"]}function yF(e,t,r){return r==null&&(r=ie(12)),va(t,r),zd(e.v,r),r}function kF(e){var t=wa(e),r=oc(e);return[t,r,"n"]}function bF(e,t,r){return r==null&&(r=ie(8)),_a(t,r),zd(e.v,r),r}function EF(e){var t=Lr(e),r=nc(e);return[t,r,"is"]}function SF(e){var t=Lr(e),r=Zt(e);return[t,r,"str"]}function CF(e,t,r){return r==null&&(r=ie(12+4*e.v.length)),va(t,r),Vt(e.v,r),r.length>r.l?r.slice(0,r.l):r}function TF(e){var t=wa(e),r=Zt(e);return[t,r,"str"]}function FF(e,t,r){return r==null&&(r=ie(8+4*e.v.length)),_a(t,r),Vt(e.v,r),r.length>r.l?r.slice(0,r.l):r}function AF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=e.read_shift(1),s=[a,i,"b"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function DF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=e.read_shift(1),s=[a,i,"e"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function RF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=Qt(e),s=[a,i,"n"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}function OF(e,t,r){var n=e.l+t,a=Lr(e);a.r=r["!row"];var i=Zt(e),s=[a,i,"str"];if(r.cellFormula){e.l+=2;var o=Ro(e,n-e.l,r);s[3]=rr(o,null,a,r.supbooks,r)}else e.l=n;return s}var BF=ya,NF=ti;function IF(e,t){return t==null&&(t=ie(4)),t.write_shift(4,e),t}function PF(e,t){var r=e.l+t,n=ya(e),a=ac(e),i=Zt(e),s=Zt(e),o=Zt(e);e.l=r;var c={rfx:n,relId:a,loc:i,display:o};return s&&(c.Tooltip=s),c}function MF(e,t){var r=ie(50+4*(e[1].Target.length+(e[1].Tooltip||"").length));ti({s:pt(e[0]),e:pt(e[0])},r),sc("rId"+t,r);var n=e[1].Target.indexOf("#"),a=n==-1?"":e[1].Target.slice(n+1);return Vt(a||"",r),Vt(e[1].Tooltip||"",r),Vt("",r),r.slice(0,r.l)}function LF(){}function VF(e,t,r){var n=e.l+t,a=Gd(e),i=e.read_shift(1),s=[a];if(s[2]=i,r.cellFormula){var o=cT(e,n-e.l,r);s[1]=o}else e.l=n;return s}function UF(e,t,r){var n=e.l+t,a=ya(e),i=[a];if(r.cellFormula){var s=uT(e,n-e.l,r);i[1]=s,e.l=n}else e.l=n;return i}function $F(e,t,r){r==null&&(r=ie(18));var n=Oo(e,t);r.write_shift(-4,e),r.write_shift(-4,e),r.write_shift(4,(n.width||10)*256),r.write_shift(4,0);var a=0;return t.hidden&&(a|=1),typeof n.width=="number"&&(a|=2),t.level&&(a|=t.level<<8),r.write_shift(2,a),r}var ym=["left","right","top","bottom","header","footer"];function WF(e){var t={};return ym.forEach(function(r){t[r]=Qt(e)}),t}function HF(e,t){return t==null&&(t=ie(6*8)),Aa(e),ym.forEach(function(r){ka(e[r],t)}),t}function jF(e){var t=e.read_shift(2);return e.l+=28,{RTL:t&32}}function zF(e,t,r){r==null&&(r=ie(30));var n=924;return(((t||{}).Views||[])[0]||{}).RTL&&(n|=32),r.write_shift(2,n),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(1,0),r.write_shift(1,0),r.write_shift(2,0),r.write_shift(2,100),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(2,0),r.write_shift(4,0),r}function GF(e){var t=ie(24);return t.write_shift(4,4),t.write_shift(4,1),ti(e,t),t}function XF(e,t){return t==null&&(t=ie(16*4+2)),t.write_shift(2,e.password?yc(e.password):0),t.write_shift(4,1),[["objects",!1],["scenarios",!1],["formatCells",!0],["formatColumns",!0],["formatRows",!0],["insertColumns",!0],["insertRows",!0],["insertHyperlinks",!0],["deleteColumns",!0],["deleteRows",!0],["selectLockedCells",!1],["sort",!0],["autoFilter",!0],["pivotTables",!0],["selectUnlockedCells",!1]].forEach(function(r){r[1]?t.write_shift(4,e[r[0]]!=null&&!e[r[0]]?1:0):t.write_shift(4,e[r[0]]!=null&&e[r[0]]?0:1)}),t}function KF(){}function YF(){}function qF(e,t,r,n,a,i,s){if(!e)return e;var o=t||{};n||(n={"!id":{}});var c=o.dense?[]:{},f,u={s:{r:2e6,c:2e6},e:{r:0,c:0}},d=!1,h=!1,m,g,p,x,v,y,w,E,R,F=[];o.biff=12,o["!row"]=0;var C=0,U=!1,S=[],W={},z=o.supbooks||a.supbooks||[[]];if(z.sharedf=W,z.arrayf=S,z.SheetNames=a.SheetNames||a.Sheets.map(function(de){return de.name}),!o.supbooks&&(o.supbooks=z,a.Names))for(var V=0;V<a.Names.length;++V)z[0][V+1]=a.Names[V];var j=[],H=[],Y=!1;ps[16]={n:"BrtShortReal",f:_m};var ae;if(Nn(e,function(K,we,D){if(!h)switch(D){case 148:f=K;break;case 0:m=K,o.sheetRows&&o.sheetRows<=m.r&&(h=!0),E=Et(x=m.r),o["!row"]=m.r,(K.hidden||K.hpt||K.level!=null)&&(K.hpt&&(K.hpx=ai(K.hpt)),H[K.r]=K);break;case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 14:case 15:case 16:case 17:case 18:case 62:switch(g={t:K[2]},K[2]){case"n":g.v=K[1];break;case"s":w=us[K[1]],g.v=w.t,g.r=w.r;break;case"b":g.v=!!K[1];break;case"e":g.v=K[1],o.cellText!==!1&&(g.w=Pn[g.v]);break;case"str":g.t="s",g.v=K[1];break;case"is":g.t="s",g.v=K[1].t;break}if((p=s.CellXf[K[0].iStyleRef])&&xm(g,p.numFmtId,null,o,i,s),v=K[0].c==-1?v+1:K[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+E]=g,o.cellFormula){for(U=!1,C=0;C<S.length;++C){var _=S[C];m.r>=_[0].s.r&&m.r<=_[0].e.r&&v>=_[0].s.c&&v<=_[0].e.c&&(g.F=We(_[0]),U=!0)}!U&&K.length>3&&(g.f=K[3])}if(u.s.r>m.r&&(u.s.r=m.r),u.s.c>v&&(u.s.c=v),u.e.r<m.r&&(u.e.r=m.r),u.e.c<v&&(u.e.c=v),o.cellDates&&p&&g.t=="n"&&ma(Re[p.numFmtId])){var k=Jn(g.v);k&&(g.t="d",g.v=new Date(k.y,k.m-1,k.d,k.H,k.M,k.S,k.u))}ae&&(ae.type=="XLDAPR"&&(g.D=!0),ae=void 0);break;case 1:case 12:if(!o.sheetStubs||d)break;g={t:"z",v:void 0},v=K[0].c==-1?v+1:K[0].c,o.dense?(c[x]||(c[x]=[]),c[x][v]=g):c[mt(v)+E]=g,u.s.r>m.r&&(u.s.r=m.r),u.s.c>v&&(u.s.c=v),u.e.r<m.r&&(u.e.r=m.r),u.e.c<v&&(u.e.c=v),ae&&(ae.type=="XLDAPR"&&(g.D=!0),ae=void 0);break;case 176:F.push(K);break;case 49:ae=((o.xlmeta||{}).Cell||[])[K-1];break;case 494:var b=n["!id"][K.relId];for(b?(K.Target=b.Target,K.loc&&(K.Target+="#"+K.loc),K.Rel=b):K.relId==""&&(K.Target="#"+K.loc),x=K.rfx.s.r;x<=K.rfx.e.r;++x)for(v=K.rfx.s.c;v<=K.rfx.e.c;++v)o.dense?(c[x]||(c[x]=[]),c[x][v]||(c[x][v]={t:"z",v:void 0}),c[x][v].l=K):(y=Ne({c:v,r:x}),c[y]||(c[y]={t:"z",v:void 0}),c[y].l=K);break;case 426:if(!o.cellFormula)break;S.push(K),R=o.dense?c[x][v]:c[mt(v)+E],R.f=rr(K[1],u,{r:m.r,c:v},z,o),R.F=We(K[0]);break;case 427:if(!o.cellFormula)break;W[Ne(K[0].s)]=K[1],R=o.dense?c[x][v]:c[mt(v)+E],R.f=rr(K[1],u,{r:m.r,c:v},z,o);break;case 60:if(!o.cellStyles)break;for(;K.e>=K.s;)j[K.e--]={width:K.w/256,hidden:!!(K.flags&1),level:K.level},Y||(Y=!0,bc(K.w/256)),ta(j[K.e+1]);break;case 161:c["!autofilter"]={ref:We(K)};break;case 476:c["!margins"]=K;break;case 147:a.Sheets[r]||(a.Sheets[r]={}),K.name&&(a.Sheets[r].CodeName=K.name),(K.above||K.left)&&(c["!outline"]={above:K.above,left:K.left});break;case 137:a.Views||(a.Views=[{}]),a.Views[0]||(a.Views[0]={}),K.RTL&&(a.Views[0].RTL=!0);break;case 485:break;case 64:case 1053:break;case 151:break;case 152:case 175:case 644:case 625:case 562:case 396:case 1112:case 1146:case 471:case 1050:case 649:case 1105:case 589:case 607:case 564:case 1055:case 168:case 174:case 1180:case 499:case 507:case 550:case 171:case 167:case 1177:case 169:case 1181:case 551:case 552:case 661:case 639:case 478:case 537:case 477:case 536:case 1103:case 680:case 1104:case 1024:case 663:case 535:case 678:case 504:case 1043:case 428:case 170:case 3072:case 50:case 2070:case 1045:break;case 35:d=!0;break;case 36:d=!1;break;case 37:d=!0;break;case 38:d=!1;break;default:if(!we.T){if(!d||o.WTF)throw new Error("Unexpected record 0x"+D.toString(16))}}},o),delete o.supbooks,delete o["!row"],!c["!ref"]&&(u.s.r<2e6||f&&(f.e.r>0||f.e.c>0||f.s.r>0||f.s.c>0))&&(c["!ref"]=We(f||u)),o.sheetRows&&c["!ref"]){var se=Ye(c["!ref"]);o.sheetRows<=+se.e.r&&(se.e.r=o.sheetRows-1,se.e.r>u.e.r&&(se.e.r=u.e.r),se.e.r<se.s.r&&(se.s.r=se.e.r),se.e.c>u.e.c&&(se.e.c=u.e.c),se.e.c<se.s.c&&(se.s.c=se.e.c),c["!fullref"]=c["!ref"],c["!ref"]=We(se))}return F.length>0&&(c["!merges"]=F),j.length>0&&(c["!cols"]=j),H.length>0&&(c["!rows"]=H),c}function JF(e,t,r,n,a,i,s){if(t.v===void 0)return!1;var o="";switch(t.t){case"b":o=t.v?"1":"0";break;case"d":t=lt(t),t.z=t.z||Re[14],t.v=Bt(ot(t.v)),t.t="n";break;case"n":case"e":o=""+t.v;break;default:o=t.v;break}var c={r,c:n};switch(c.s=na(a.cellXfs,t,a),t.l&&i["!links"].push([Ne(c),t.l]),t.c&&i["!comments"].push([Ne(c),t.c]),t.t){case"s":case"str":return a.bookSST?(o=Rc(a.Strings,t.v,a.revStrings),c.t="s",c.v=o,s?ce(e,18,gF(t,c)):ce(e,7,mF(t,c))):(c.t="str",s?ce(e,17,FF(t,c)):ce(e,6,CF(t,c))),!0;case"n":return t.v==(t.v|0)&&t.v>-1e3&&t.v<1e3?s?ce(e,13,bF(t,c)):ce(e,2,yF(t,c)):s?ce(e,16,wF(t,c)):ce(e,5,vF(t,c)),!0;case"b":return c.t="b",s?ce(e,15,lF(t,c)):ce(e,4,sF(t,c)),!0;case"e":return c.t="e",s?ce(e,14,dF(t,c)):ce(e,3,fF(t,c)),!0}return s?ce(e,12,aF(t,c)):ce(e,1,rF(t,c)),!0}function ZF(e,t,r,n){var a=Ye(t["!ref"]||"A1"),i,s="",o=[];ce(e,145);var c=Array.isArray(t),f=a.e.r;t["!rows"]&&(f=Math.max(a.e.r,t["!rows"].length-1));for(var u=a.s.r;u<=f;++u){s=Et(u),YT(e,t,a,u);var d=!1;if(u<=a.e.r)for(var h=a.s.c;h<=a.e.c;++h){u===a.s.r&&(o[h]=mt(h)),i=o[h]+s;var m=c?(t[u]||[])[h]:t[i];if(!m){d=!1;continue}d=JF(e,m,u,h,n,t,d)}}ce(e,146)}function QF(e,t){!t||!t["!merges"]||(ce(e,177,IF(t["!merges"].length)),t["!merges"].forEach(function(r){ce(e,176,NF(r))}),ce(e,178))}function e4(e,t){!t||!t["!cols"]||(ce(e,390),t["!cols"].forEach(function(r,n){r&&ce(e,60,$F(n,r))}),ce(e,391))}function t4(e,t){!t||!t["!ref"]||(ce(e,648),ce(e,649,GF(Ye(t["!ref"]))),ce(e,650))}function r4(e,t,r){t["!links"].forEach(function(n){if(n[1].Target){var a=et(r,-1,n[1].Target.replace(/#.*$/,""),ze.HLINK);ce(e,494,MF(n,a))}}),delete t["!links"]}function n4(e,t,r,n){if(t["!comments"].length>0){var a=et(n,-1,"../drawings/vmlDrawing"+(r+1)+".vml",ze.VML);ce(e,551,sc("rId"+a)),t["!legacy"]=a}}function a4(e,t,r,n){if(t["!autofilter"]){var a=t["!autofilter"],i=typeof a.ref=="string"?a.ref:We(a.ref);r.Workbook||(r.Workbook={Sheets:[]}),r.Workbook.Names||(r.Workbook.Names=[]);var s=r.Workbook.Names,o=xr(i);o.s.r==o.e.r&&(o.e.r=xr(t["!ref"]).e.r,i=We(o));for(var c=0;c<s.length;++c){var f=s[c];if(f.Name=="_xlnm._FilterDatabase"&&f.Sheet==n){f.Ref="'"+r.SheetNames[n]+"'!"+i;break}}c==s.length&&s.push({Name:"_xlnm._FilterDatabase",Sheet:n,Ref:"'"+r.SheetNames[n]+"'!"+i}),ce(e,161,ti(Ye(i))),ce(e,162)}}function i4(e,t,r){ce(e,133),ce(e,137,zF(t,r)),ce(e,138),ce(e,134)}function s4(e,t){t["!protect"]&&ce(e,535,XF(t["!protect"]))}function o4(e,t,r,n){var a=gr(),i=r.SheetNames[e],s=r.Sheets[i]||{},o=i;try{r&&r.Workbook&&(o=r.Workbook.Sheets[e].CodeName||o)}catch{}var c=Ye(s["!ref"]||"A1");if(c.e.c>16383||c.e.r>1048575){if(t.WTF)throw new Error("Range "+(s["!ref"]||"A1")+" exceeds format limit A1:XFD1048576");c.e.c=Math.min(c.e.c,16383),c.e.r=Math.min(c.e.c,1048575)}return s["!links"]=[],s["!comments"]=[],ce(a,129),(r.vbaraw||s["!outline"])&&ce(a,147,eF(o,s["!outline"])),ce(a,148,JT(c)),i4(a,s,r.Workbook),e4(a,s),ZF(a,s,e,t),s4(a,s),a4(a,s,r,e),QF(a,s),r4(a,s,n),s["!margins"]&&ce(a,476,HF(s["!margins"])),(!t||t.ignoreEC||t.ignoreEC==null)&&t4(a,s),n4(a,s,e,n),ce(a,130),a.end()}function l4(e){var t=[],r=e.match(/^<c:numCache>/),n;(e.match(/<c:pt idx="(\d*)">(.*?)<\/c:pt>/mg)||[]).forEach(function(i){var s=i.match(/<c:pt idx="(\d*?)"><c:v>(.*)<\/c:v><\/c:pt>/);s&&(t[+s[1]]=r?+s[2]:s[2])});var a=Ke((e.match(/<c:formatCode>([\s\S]*?)<\/c:formatCode>/)||["","General"])[1]);return(e.match(/<c:f>(.*?)<\/c:f>/mg)||[]).forEach(function(i){n=i.replace(/<.*?>/g,"")}),[t,a,n]}function c4(e,t,r,n,a,i){var s=i||{"!type":"chart"};if(!e)return i;var o=0,c=0,f="A",u={s:{r:2e6,c:2e6},e:{r:0,c:0}};return(e.match(/<c:numCache>[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(d){var h=l4(d);u.s.r=u.s.c=0,u.e.c=o,f=mt(o),h[0].forEach(function(m,g){s[f+Et(g)]={t:"n",v:m,z:h[1]},c=g}),u.e.r<c&&(u.e.r=c),++o}),o>0&&(s["!ref"]=We(u)),s}function f4(e,t,r,n,a){if(!e)return e;n||(n={"!id":{}});var i={"!type":"chart","!drawel":null,"!rel":""},s,o=e.match(vm);return o&&Oc(o[0],i,a,r),(s=e.match(/drawing r:id="(.*?)"/))&&(i["!rel"]=s[1]),n["!id"][i["!rel"]]&&(i["!drawel"]=n["!id"][i["!rel"]]),i}function u4(e,t){e.l+=10;var r=Zt(e);return{name:r}}function d4(e,t,r,n,a){if(!e)return e;n||(n={"!id":{}});var i={"!type":"chart","!drawel":null,"!rel":""},s=!1;return Nn(e,function(c,f,u){switch(u){case 550:i["!rel"]=c;break;case 651:a.Sheets[r]||(a.Sheets[r]={}),c.name&&(a.Sheets[r].CodeName=c.name);break;case 562:case 652:case 669:case 679:case 551:case 552:case 476:case 3072:break;case 35:s=!0;break;case 36:s=!1;break;case 37:break;case 38:break;default:if(!(f.T>0)){if(!(f.T<0)){if(!s||t.WTF)throw new Error("Unexpected record 0x"+u.toString(16))}}}},t),n["!id"][i["!rel"]]&&(i["!drawel"]=n["!id"][i["!rel"]]),i}var Bc=[["allowRefreshQuery",!1,"bool"],["autoCompressPictures",!0,"bool"],["backupFile",!1,"bool"],["checkCompatibility",!1,"bool"],["CodeName",""],["date1904",!1,"bool"],["defaultThemeVersion",0,"int"],["filterPrivacy",!1,"bool"],["hidePivotFieldList",!1,"bool"],["promptedSolutions",!1,"bool"],["publishItems",!1,"bool"],["refreshAllConnections",!1,"bool"],["saveExternalLinkValues",!0,"bool"],["showBorderUnselectedTables",!0,"bool"],["showInkAnnotation",!0,"bool"],["showObjects","all"],["showPivotChartFilter",!1,"bool"],["updateLinks","userSet"]],h4=[["activeTab",0,"int"],["autoFilterDateGrouping",!0,"bool"],["firstSheet",0,"int"],["minimized",!1,"bool"],["showHorizontalScroll",!0,"bool"],["showSheetTabs",!0,"bool"],["showVerticalScroll",!0,"bool"],["tabRatio",600,"int"],["visibility","visible"]],m4=[],p4=[["calcCompleted","true"],["calcMode","auto"],["calcOnSave","true"],["concurrentCalc","true"],["fullCalcOnLoad","false"],["fullPrecision","true"],["iterate","false"],["iterateCount","100"],["iterateDelta","0.001"],["refMode","A1"]];function km(e,t){for(var r=0;r!=e.length;++r)for(var n=e[r],a=0;a!=t.length;++a){var i=t[a];if(n[i[0]]==null)n[i[0]]=i[1];else switch(i[2]){case"bool":typeof n[i[0]]=="string"&&(n[i[0]]=ct(n[i[0]]));break;case"int":typeof n[i[0]]=="string"&&(n[i[0]]=parseInt(n[i[0]],10));break}}}function bm(e,t){for(var r=0;r!=t.length;++r){var n=t[r];if(e[n[0]]==null)e[n[0]]=n[1];else switch(n[2]){case"bool":typeof e[n[0]]=="string"&&(e[n[0]]=ct(e[n[0]]));break;case"int":typeof e[n[0]]=="string"&&(e[n[0]]=parseInt(e[n[0]],10));break}}}function Em(e){bm(e.WBProps,Bc),bm(e.CalcPr,p4),km(e.WBView,h4),km(e.Sheets,m4),oi.date1904=ct(e.WBProps.date1904)}function g4(e){return!e.Workbook||!e.Workbook.WBProps?"false":ct(e.Workbook.WBProps.date1904)?"true":"false"}var x4="][*?/\\".split("");function Sm(e,t){if(e.length>31){if(t)return!1;throw new Error("Sheet names cannot exceed 31 chars")}var r=!0;return x4.forEach(function(n){if(e.indexOf(n)!=-1){if(!t)throw new Error("Sheet name cannot contain : \\ / ? * [ ]");r=!1}}),r}function v4(e,t,r){e.forEach(function(n,a){Sm(n);for(var i=0;i<a;++i)if(n==e[i])throw new Error("Duplicate Sheet Name: "+n);if(r){var s=t&&t[a]&&t[a].CodeName||n;if(s.charCodeAt(0)==95&&s.length>22)throw new Error("Bad Code Name: Worksheet"+s)}})}function w4(e){if(!e||!e.SheetNames||!e.Sheets)throw new Error("Invalid Workbook");if(!e.SheetNames.length)throw new Error("Workbook is empty");var t=e.Workbook&&e.Workbook.Sheets||[];v4(e.SheetNames,t,!!e.vbaraw);for(var r=0;r<e.SheetNames.length;++r)gT(e.Sheets[e.SheetNames[r]],e.SheetNames[r],r)}var _4=/<\w+:workbook/;function y4(e,t){if(!e)throw new Error("Could not find file");var r={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},Names:[],xmlns:""},n=!1,a="xmlns",i={},s=0;if(e.replace(qt,function(c,f){var u=Me(c);switch(pn(u[0])){case"<?xml":break;case"<workbook":c.match(_4)&&(a="xmlns"+c.match(/<(\w+):/)[1]),r.xmlns=u[a];break;case"</workbook>":break;case"<fileVersion":delete u[0],r.AppVersion=u;break;case"<fileVersion/>":case"</fileVersion>":break;case"<fileSharing":break;case"<fileSharing/>":break;case"<workbookPr":case"<workbookPr/>":Bc.forEach(function(d){if(u[d[0]]!=null)switch(d[2]){case"bool":r.WBProps[d[0]]=ct(u[d[0]]);break;case"int":r.WBProps[d[0]]=parseInt(u[d[0]],10);break;default:r.WBProps[d[0]]=u[d[0]]}}),u.codeName&&(r.WBProps.CodeName=nt(u.codeName));break;case"</workbookPr>":break;case"<workbookProtection":break;case"<workbookProtection/>":break;case"<bookViews":case"<bookViews>":case"</bookViews>":break;case"<workbookView":case"<workbookView/>":delete u[0],r.WBView.push(u);break;case"</workbookView>":break;case"<sheets":case"<sheets>":case"</sheets>":break;case"<sheet":switch(u.state){case"hidden":u.Hidden=1;break;case"veryHidden":u.Hidden=2;break;default:u.Hidden=0}delete u.state,u.name=Ke(nt(u.name)),delete u[0],r.Sheets.push(u);break;case"</sheet>":break;case"<functionGroups":case"<functionGroups/>":break;case"<functionGroup":break;case"<externalReferences":case"</externalReferences>":case"<externalReferences>":break;case"<externalReference":break;case"<definedNames/>":break;case"<definedNames>":case"<definedNames":n=!0;break;case"</definedNames>":n=!1;break;case"<definedName":i={},i.Name=nt(u.name),u.comment&&(i.Comment=u.comment),u.localSheetId&&(i.Sheet=+u.localSheetId),ct(u.hidden||"0")&&(i.Hidden=!0),s=f+c.length;break;case"</definedName>":i.Ref=Ke(nt(e.slice(s,f))),r.Names.push(i);break;case"<definedName/>":break;case"<calcPr":delete u[0],r.CalcPr=u;break;case"<calcPr/>":delete u[0],r.CalcPr=u;break;case"</calcPr>":break;case"<oleSize":break;case"<customWorkbookViews>":case"</customWorkbookViews>":case"<customWorkbookViews":break;case"<customWorkbookView":case"</customWorkbookView>":break;case"<pivotCaches>":case"</pivotCaches>":case"<pivotCaches":break;case"<pivotCache":break;case"<smartTagPr":case"<smartTagPr/>":break;case"<smartTagTypes":case"<smartTagTypes>":case"</smartTagTypes>":break;case"<smartTagType":break;case"<webPublishing":case"<webPublishing/>":break;case"<fileRecoveryPr":case"<fileRecoveryPr/>":break;case"<webPublishObjects>":case"<webPublishObjects":case"</webPublishObjects>":break;case"<webPublishObject":break;case"<extLst":case"<extLst>":case"</extLst>":case"<extLst/>":break;case"<ext":n=!0;break;case"</ext>":n=!1;break;case"<ArchID":break;case"<AlternateContent":case"<AlternateContent>":n=!0;break;case"</AlternateContent>":n=!1;break;case"<revisionPtr":break;default:if(!n&&t.WTF)throw new Error("unrecognized "+u[0]+" in workbook")}return c}),ga.indexOf(r.xmlns)===-1)throw new Error("Unknown Namespace: "+r.xmlns);return Em(r),r}function Cm(e){var t=[bt];t[t.length]=ge("workbook",null,{xmlns:ga[0],"xmlns:r":Nt.r});var r=e.Workbook&&(e.Workbook.Names||[]).length>0,n={codeName:"ThisWorkbook"};e.Workbook&&e.Workbook.WBProps&&(Bc.forEach(function(o){e.Workbook.WBProps[o[0]]!=null&&e.Workbook.WBProps[o[0]]!=o[1]&&(n[o[0]]=e.Workbook.WBProps[o[0]])}),e.Workbook.WBProps.CodeName&&(n.codeName=e.Workbook.WBProps.CodeName,delete n.CodeName)),t[t.length]=ge("workbookPr",null,n);var a=e.Workbook&&e.Workbook.Sheets||[],i=0;if(a&&a[0]&&a[0].Hidden){for(t[t.length]="<bookViews>",i=0;i!=e.SheetNames.length&&!(!a[i]||!a[i].Hidden);++i);i==e.SheetNames.length&&(i=0),t[t.length]='<workbookView firstSheet="'+i+'" activeTab="'+i+'"/>',t[t.length]="</bookViews>"}for(t[t.length]="<sheets>",i=0;i!=e.SheetNames.length;++i){var s={name:Qe(e.SheetNames[i].slice(0,31))};if(s.sheetId=""+(i+1),s["r:id"]="rId"+(i+1),a[i])switch(a[i].Hidden){case 1:s.state="hidden";break;case 2:s.state="veryHidden";break}t[t.length]=ge("sheet",null,s)}return t[t.length]="</sheets>",r&&(t[t.length]="<definedNames>",e.Workbook&&e.Workbook.Names&&e.Workbook.Names.forEach(function(o){var c={name:o.Name};o.Comment&&(c.comment=o.Comment),o.Sheet!=null&&(c.localSheetId=""+o.Sheet),o.Hidden&&(c.hidden="1"),o.Ref&&(t[t.length]=ge("definedName",Qe(o.Ref),c))}),t[t.length]="</definedNames>"),t.length>2&&(t[t.length]="</workbook>",t[1]=t[1].replace("/>",">")),t.join("")}function k4(e,t){var r={};return r.Hidden=e.read_shift(4),r.iTabID=e.read_shift(4),r.strRelID=ic(e),r.name=Zt(e),r}function b4(e,t){return t||(t=ie(127)),t.write_shift(4,e.Hidden),t.write_shift(4,e.iTabID),sc(e.strRelID,t),Vt(e.name.slice(0,31),t),t.length>t.l?t.slice(0,t.l):t}function E4(e,t){var r={},n=e.read_shift(4);r.defaultThemeVersion=e.read_shift(4);var a=t>8?Zt(e):"";return a.length>0&&(r.CodeName=a),r.autoCompressPictures=!!(n&65536),r.backupFile=!!(n&64),r.checkCompatibility=!!(n&4096),r.date1904=!!(n&1),r.filterPrivacy=!!(n&8),r.hidePivotFieldList=!!(n&1024),r.promptedSolutions=!!(n&16),r.publishItems=!!(n&2048),r.refreshAllConnections=!!(n&262144),r.saveExternalLinkValues=!!(n&128),r.showBorderUnselectedTables=!!(n&4),r.showInkAnnotation=!!(n&32),r.showObjects=["all","placeholders","none"][n>>13&3],r.showPivotChartFilter=!!(n&32768),r.updateLinks=["userSet","never","always"][n>>8&3],r}function S4(e,t){t||(t=ie(72));var r=0;return e&&e.filterPrivacy&&(r|=8),t.write_shift(4,r),t.write_shift(4,0),jd(e&&e.CodeName||"ThisWorkbook",t),t.slice(0,t.l)}function C4(e,t){var r={};return e.read_shift(4),r.ArchID=e.read_shift(4),e.l+=t-8,r}function T4(e,t,r){var n=e.l+t;e.l+=4,e.l+=1;var a=e.read_shift(4),i=ny(e),s=fT(e,0,r),o=ac(e);e.l=n;var c={Name:i,Ptg:s};return a<268435455&&(c.Sheet=a),o&&(c.Comment=o),c}function F4(e,t){var r={AppVersion:{},WBProps:{},WBView:[],Sheets:[],CalcPr:{},xmlns:""},n=[],a=!1;t||(t={}),t.biff=12;var i=[],s=[[]];return s.SheetNames=[],s.XTI=[],ps[16]={n:"BrtFRTArchID$",f:C4},Nn(e,function(c,f,u){switch(u){case 156:s.SheetNames.push(c.name),r.Sheets.push(c);break;case 153:r.WBProps=c;break;case 39:c.Sheet!=null&&(t.SID=c.Sheet),c.Ref=rr(c.Ptg,null,null,s,t),delete t.SID,delete c.Ptg,i.push(c);break;case 1036:break;case 357:case 358:case 355:case 667:s[0].length?s.push([u,c]):s[0]=[u,c],s[s.length-1].XTI=[];break;case 362:s.length===0&&(s[0]=[],s[0].XTI=[]),s[s.length-1].XTI=s[s.length-1].XTI.concat(c),s.XTI=s.XTI.concat(c);break;case 361:break;case 2071:case 158:case 143:case 664:case 353:break;case 3072:case 3073:case 534:case 677:case 157:case 610:case 2050:case 155:case 548:case 676:case 128:case 665:case 2128:case 2125:case 549:case 2053:case 596:case 2076:case 2075:case 2082:case 397:case 154:case 1117:case 553:case 2091:break;case 35:n.push(u),a=!0;break;case 36:n.pop(),a=!1;break;case 37:n.push(u),a=!0;break;case 38:n.pop(),a=!1;break;case 16:break;default:if(!f.T){if(!a||t.WTF&&n[n.length-1]!=37&&n[n.length-1]!=35)throw new Error("Unexpected record 0x"+u.toString(16))}}},t),Em(r),r.Names=i,r.supbooks=s,r}function A4(e,t){ce(e,143);for(var r=0;r!=t.SheetNames.length;++r){var n=t.Workbook&&t.Workbook.Sheets&&t.Workbook.Sheets[r]&&t.Workbook.Sheets[r].Hidden||0,a={Hidden:n,iTabID:r+1,strRelID:"rId"+(r+1),name:t.SheetNames[r]};ce(e,156,b4(a))}ce(e,144)}function D4(e,t){t||(t=ie(127));for(var r=0;r!=4;++r)t.write_shift(4,0);return Vt("SheetJS",t),Vt(no.version,t),Vt(no.version,t),Vt("7262",t),t.length>t.l?t.slice(0,t.l):t}function R4(e,t){t||(t=ie(29)),t.write_shift(-4,0),t.write_shift(-4,460),t.write_shift(4,28800),t.write_shift(4,17600),t.write_shift(4,500),t.write_shift(4,e),t.write_shift(4,e);var r=120;return t.write_shift(1,r),t.length>t.l?t.slice(0,t.l):t}function O4(e,t){if(!(!t.Workbook||!t.Workbook.Sheets)){for(var r=t.Workbook.Sheets,n=0,a=-1,i=-1;n<r.length;++n)!r[n]||!r[n].Hidden&&a==-1?a=n:r[n].Hidden==1&&i==-1&&(i=n);i>a||(ce(e,135),ce(e,158,R4(a)),ce(e,136))}}function B4(e,t){var r=gr();return ce(r,131),ce(r,128,D4()),ce(r,153,S4(e.Workbook&&e.Workbook.WBProps||null)),O4(r,e),A4(r,e),ce(r,132),r.end()}function N4(e,t,r){return t.slice(-4)===".bin"?F4(e,r):y4(e,r)}function I4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?qF(e,n,r,a,i,s,o):TT(e,n,r,a,i,s,o)}function P4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?d4(e,n,r,a,i):f4(e,n,r,a,i)}function M4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?VS():US()}function L4(e,t,r,n,a,i,s,o){return t.slice(-4)===".bin"?MS():LS()}function V4(e,t,r,n){return t.slice(-4)===".bin"?NE(e,r,n):kE(e,r,n)}function U4(e,t,r){return Zh(e,r)}function $4(e,t,r){return t.slice(-4)===".bin"?$b(e,r):Lb(e,r)}function W4(e,t,r){return t.slice(-4)===".bin"?OS(e,r):bS(e,r)}function H4(e,t,r){return t.slice(-4)===".bin"?_S(e):vS(e)}function j4(e,t,r,n){return r.slice(-4)===".bin"?yS(e,t,r,n):void 0}function z4(e,t,r){return t.slice(-4)===".bin"?pS(e,t,r):xS(e,t,r)}function G4(e,t,r){return(t.slice(-4)===".bin"?B4:Cm)(e)}function X4(e,t,r,n,a){return(t.slice(-4)===".bin"?o4:wm)(e,r,n,a)}function K4(e,t,r){return(t.slice(-4)===".bin"?jE:Yh)(e,r)}function Y4(e,t,r){return(t.slice(-4)===".bin"?jb:$h)(e,r)}function q4(e,t,r){return(t.slice(-4)===".bin"?BS:rm)(e)}function J4(e){return(e.slice(-4)===".bin"?gS:Qh)()}var Tm=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g,Fm=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/;function Zr(e,t){var r=e.split(/\s+/),n=[];if(t||(n[0]=r[0]),r.length===1)return n;var a=e.match(Tm),i,s,o,c;if(a)for(c=0;c!=a.length;++c)i=a[c].match(Fm),(s=i[1].indexOf(":"))===-1?n[i[1]]=i[2].slice(1,i[2].length-1):(i[1].slice(0,6)==="xmlns:"?o="xmlns"+i[1].slice(6):o=i[1].slice(s+1),n[o]=i[2].slice(1,i[2].length-1));return n}function Z4(e){var t=e.split(/\s+/),r={};if(t.length===1)return r;var n=e.match(Tm),a,i,s,o;if(n)for(o=0;o!=n.length;++o)a=n[o].match(Fm),(i=a[1].indexOf(":"))===-1?r[a[1]]=a[2].slice(1,a[2].length-1):(a[1].slice(0,6)==="xmlns:"?s="xmlns"+a[1].slice(6):s=a[1].slice(i+1),r[s]=a[2].slice(1,a[2].length-1));return r}var hs;function Q4(e,t){var r=hs[e]||Ke(e);return r==="General"?ha(t):Cr(r,t)}function eA(e,t,r,n){var a=n;switch((r[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]){case"boolean":a=ct(n);break;case"i2":case"int":a=parseInt(n,10);break;case"r4":case"float":a=parseFloat(n);break;case"date":case"dateTime.tz":a=ot(n);break;case"i8":case"string":case"fixed":case"uuid":case"bin.base64":break;default:throw new Error("bad custprop:"+r[0])}e[Ke(t)]=a}function tA(e,t,r){if(e.t!=="z"){if(!r||r.cellText!==!1)try{e.t==="e"?e.w=e.w||Pn[e.v]:t==="General"?e.t==="n"?(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Wi(e.v):e.w=ha(e.v):e.w=Q4(t||"General",e.v)}catch(i){if(r.WTF)throw i}try{var n=hs[t]||t||"General";if(r.cellNF&&(e.z=n),r.cellDates&&e.t=="n"&&ma(n)){var a=Jn(e.v);a&&(e.t="d",e.v=new Date(a.y,a.m-1,a.d,a.H,a.M,a.S,a.u))}}catch(i){if(r.WTF)throw i}}}function rA(e,t,r){if(r.cellStyles&&t.Interior){var n=t.Interior;n.Pattern&&(n.patternType=mE[n.Pattern]||n.Pattern)}e[t.ID]=t}function nA(e,t,r,n,a,i,s,o,c,f){var u="General",d=n.StyleID,h={};f=f||{};var m=[],g=0;for(d===void 0&&o&&(d=o.StyleID),d===void 0&&s&&(d=s.StyleID);i[d]!==void 0&&(i[d].nf&&(u=i[d].nf),i[d].Interior&&m.push(i[d].Interior),!!i[d].Parent);)d=i[d].Parent;switch(r.Type){case"Boolean":n.t="b",n.v=ct(e);break;case"String":n.t="s",n.r=xd(Ke(e)),n.v=e.indexOf("<")>-1?Ke(t||e).replace(/<.*?>/g,""):n.r;break;case"DateTime":e.slice(-1)!="Z"&&(e+="Z"),n.v=(ot(e)-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3),n.v!==n.v?n.v=Ke(e):n.v<60&&(n.v=n.v-1),(!u||u=="General")&&(u="yyyy-mm-dd");case"Number":n.v===void 0&&(n.v=+e),n.t||(n.t="n");break;case"Error":n.t="e",n.v=Jd[e],f.cellText!==!1&&(n.w=e);break;default:e==""&&t==""?n.t="z":(n.t="s",n.v=xd(t||e));break}if(tA(n,u,f),f.cellFormula!==!1)if(n.Formula){var p=Ke(n.Formula);p.charCodeAt(0)==61&&(p=p.slice(1)),n.f=si(p,a),delete n.Formula,n.ArrayRange=="RC"?n.F=si("RC:RC",a):n.ArrayRange&&(n.F=si(n.ArrayRange,a),c.push([Ye(n.F),n.F]))}else for(g=0;g<c.length;++g)a.r>=c[g][0].s.r&&a.r<=c[g][0].e.r&&a.c>=c[g][0].s.c&&a.c<=c[g][0].e.c&&(n.F=c[g][1]);f.cellStyles&&(m.forEach(function(x){!h.patternType&&x.patternType&&(h.patternType=x.patternType)}),n.s=h),n.StyleID!==void 0&&(n.ixfe=n.StyleID)}function aA(e){e.t=e.v||"",e.t=e.t.replace(/\r\n/g,`
|
||
`).replace(/\r/g,`
|
||
`),e.v=e.w=e.ixfe=void 0}function Nc(e,t){var r=t||{};Ja();var n=Vi(Jl(e));(r.type=="binary"||r.type=="array"||r.type=="base64")&&(n=nt(n));var a=n.slice(0,1024).toLowerCase(),i=!1;if(a=a.replace(/".*?"/g,""),(a.indexOf(">")&1023)>Math.min(a.indexOf(",")&1023,a.indexOf(";")&1023)){var s=lt(r);return s.type="string",ni.to_workbook(n,s)}if(a.indexOf("<?xml")==-1&&["html","table","head","meta","script","style","div"].forEach(function(ht){a.indexOf("<"+ht)>=0&&(i=!0)}),i)return HA(n,r);hs={"General Number":"General","General Date":Re[22],"Long Date":"dddd, mmmm dd, yyyy","Medium Date":Re[15],"Short Date":Re[14],"Long Time":Re[19],"Medium Time":Re[18],"Short Time":Re[20],Currency:'"$"#,##0.00_);[Red]\\("$"#,##0.00\\)',Fixed:Re[2],Standard:Re[4],Percent:Re[10],Scientific:Re[11],"Yes/No":'"Yes";"Yes";"No";@',"True/False":'"True";"True";"False";@',"On/Off":'"Yes";"Yes";"No";@'};var o,c=[],f,u={},d=[],h=r.dense?[]:{},m="",g={},p={},x=Zr('<Data ss:Type="String">'),v=0,y=0,w=0,E={s:{r:2e6,c:2e6},e:{r:0,c:0}},R={},F={},C="",U=0,S=[],W={},z={},V=0,j=[],H=[],Y={},ae=[],se,de=!1,K=[],we=[],D={},_=0,k=0,b={Sheets:[],WBProps:{date1904:!1}},A={};Ki.lastIndex=0,n=n.replace(/<!--([\s\S]*?)-->/mg,"");for(var G="";o=Ki.exec(n);)switch(o[3]=(G=o[3]).toLowerCase()){case"data":if(G=="data"){if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break}if(c[c.length-1][1])break;o[1]==="/"?nA(n.slice(v,o.index),C,x,c[c.length-1][0]=="comment"?Y:g,{c:y,r:w},R,ae[y],p,K,r):(C="",x=Zr(o[0]),v=o.index+o[0].length);break;case"cell":if(o[1]==="/")if(H.length>0&&(g.c=H),(!r.sheetRows||r.sheetRows>w)&&g.v!==void 0&&(r.dense?(h[w]||(h[w]=[]),h[w][y]=g):h[mt(y)+Et(w)]=g),g.HRef&&(g.l={Target:Ke(g.HRef)},g.HRefScreenTip&&(g.l.Tooltip=g.HRefScreenTip),delete g.HRef,delete g.HRefScreenTip),(g.MergeAcross||g.MergeDown)&&(_=y+(parseInt(g.MergeAcross,10)|0),k=w+(parseInt(g.MergeDown,10)|0),S.push({s:{c:y,r:w},e:{c:_,r:k}})),!r.sheetStubs)g.MergeAcross?y=_+1:++y;else if(g.MergeAcross||g.MergeDown){for(var re=y;re<=_;++re)for(var ee=w;ee<=k;++ee)(re>y||ee>w)&&(r.dense?(h[ee]||(h[ee]=[]),h[ee][re]={t:"z"}):h[mt(re)+Et(ee)]={t:"z"});y=_+1}else++y;else g=Z4(o[0]),g.Index&&(y=+g.Index-1),y<E.s.c&&(E.s.c=y),y>E.e.c&&(E.e.c=y),o[0].slice(-2)==="/>"&&++y,H=[];break;case"row":o[1]==="/"||o[0].slice(-2)==="/>"?(w<E.s.r&&(E.s.r=w),w>E.e.r&&(E.e.r=w),o[0].slice(-2)==="/>"&&(p=Zr(o[0]),p.Index&&(w=+p.Index-1)),y=0,++w):(p=Zr(o[0]),p.Index&&(w=+p.Index-1),D={},(p.AutoFitHeight=="0"||p.Height)&&(D.hpx=parseInt(p.Height,10),D.hpt=ss(D.hpx),we[w]=D),p.Hidden=="1"&&(D.hidden=!0,we[w]=D));break;case"worksheet":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"));d.push(m),E.s.r<=E.e.r&&E.s.c<=E.e.c&&(h["!ref"]=We(E),r.sheetRows&&r.sheetRows<=E.e.r&&(h["!fullref"]=h["!ref"],E.e.r=r.sheetRows-1,h["!ref"]=We(E))),S.length&&(h["!merges"]=S),ae.length>0&&(h["!cols"]=ae),we.length>0&&(h["!rows"]=we),u[m]=h}else E={s:{r:2e6,c:2e6},e:{r:0,c:0}},w=y=0,c.push([o[3],!1]),f=Zr(o[0]),m=Ke(f.Name),h=r.dense?[]:{},S=[],K=[],we=[],A={name:m,Hidden:0},b.Sheets.push(A);break;case"table":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else{if(o[0].slice(-2)=="/>")break;c.push([o[3],!1]),ae=[],de=!1}break;case"style":o[1]==="/"?rA(R,F,r):F=Zr(o[0]);break;case"numberformat":F.nf=Ke(Zr(o[0]).Format||"General"),hs[F.nf]&&(F.nf=hs[F.nf]);for(var te=0;te!=392&&Re[te]!=F.nf;++te);if(te==392){for(te=57;te!=392;++te)if(Re[te]==null){mn(F.nf,te);break}}break;case"column":if(c[c.length-1][0]!=="table")break;if(se=Zr(o[0]),se.Hidden&&(se.hidden=!0,delete se.Hidden),se.Width&&(se.wpx=parseInt(se.Width,10)),!de&&se.wpx>10){de=!0,tr=Xh;for(var ne=0;ne<ae.length;++ne)ae[ne]&&ta(ae[ne])}de&&ta(se),ae[se.Index-1||ae.length]=se;for(var Ce=0;Ce<+se.Span;++Ce)ae[ae.length]=lt(se);break;case"namedrange":if(o[1]==="/")break;b.Names||(b.Names=[]);var I=Me(o[0]),fe={Name:I.Name,Ref:si(I.RefersTo.slice(1),{r:0,c:0})};b.Sheets.length>0&&(fe.Sheet=b.Sheets.length-1),b.Names.push(fe);break;case"namedcell":break;case"b":break;case"i":break;case"u":break;case"s":break;case"em":break;case"h2":break;case"h3":break;case"sub":break;case"sup":break;case"span":break;case"alignment":break;case"borders":break;case"border":break;case"font":if(o[0].slice(-2)==="/>")break;o[1]==="/"?C+=n.slice(U,o.index):U=o.index+o[0].length;break;case"interior":if(!r.cellStyles)break;F.Interior=Zr(o[0]);break;case"protection":break;case"author":case"title":case"description":case"created":case"keywords":case"subject":case"category":case"company":case"lastauthor":case"lastsaved":case"lastprinted":case"version":case"revision":case"totaltime":case"hyperlinkbase":case"manager":case"contentstatus":case"identifier":case"language":case"appname":if(o[0].slice(-2)==="/>")break;o[1]==="/"?Fy(W,G,n.slice(V,o.index)):V=o.index+o[0].length;break;case"paragraphs":break;case"styles":case"workbook":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else c.push([o[3],!1]);break;case"comment":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"));aA(Y),H.push(Y)}else c.push([o[3],!1]),f=Zr(o[0]),Y={a:f.Author};break;case"autofilter":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else if(o[0].charAt(o[0].length-2)!=="/"){var ye=Zr(o[0]);h["!autofilter"]={ref:si(ye.Range).replace(/\$/g,"")},c.push([o[3],!0])}break;case"name":break;case"datavalidation":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break;case"pixelsperinch":break;case"componentoptions":case"documentproperties":case"customdocumentproperties":case"officedocumentsettings":case"pivottable":case"pivotcache":case"names":case"mapinfo":case"pagebreaks":case"querytable":case"sorting":case"schema":case"conditionalformatting":case"smarttagtype":case"smarttags":case"excelworkbook":case"workbookoptions":case"worksheetoptions":if(o[1]==="/"){if((f=c.pop())[0]!==o[3])throw new Error("Bad state: "+f.join("|"))}else o[0].charAt(o[0].length-2)!=="/"&&c.push([o[3],!0]);break;case"null":break;default:if(c.length==0&&o[3]=="document"||c.length==0&&o[3]=="uof")return Um(n,r);var Oe=!0;switch(c[c.length-1][0]){case"officedocumentsettings":switch(o[3]){case"allowpng":break;case"removepersonalinformation":break;case"downloadcomponents":break;case"locationofcomponents":break;case"colors":break;case"color":break;case"index":break;case"rgb":break;case"targetscreensize":break;case"readonlyrecommended":break;default:Oe=!1}break;case"componentoptions":switch(o[3]){case"toolbar":break;case"hideofficelogo":break;case"spreadsheetautofit":break;case"label":break;case"caption":break;case"maxheight":break;case"maxwidth":break;case"nextsheetnumber":break;default:Oe=!1}break;case"excelworkbook":switch(o[3]){case"date1904":b.WBProps.date1904=!0;break;case"windowheight":break;case"windowwidth":break;case"windowtopx":break;case"windowtopy":break;case"tabratio":break;case"protectstructure":break;case"protectwindow":break;case"protectwindows":break;case"activesheet":break;case"displayinknotes":break;case"firstvisiblesheet":break;case"supbook":break;case"sheetname":break;case"sheetindex":break;case"sheetindexfirst":break;case"sheetindexlast":break;case"dll":break;case"acceptlabelsinformulas":break;case"donotsavelinkvalues":break;case"iteration":break;case"maxiterations":break;case"maxchange":break;case"path":break;case"xct":break;case"count":break;case"selectedsheets":break;case"calculation":break;case"uncalced":break;case"startupprompt":break;case"crn":break;case"externname":break;case"formula":break;case"colfirst":break;case"collast":break;case"wantadvise":break;case"boolean":break;case"error":break;case"text":break;case"ole":break;case"noautorecover":break;case"publishobjects":break;case"donotcalculatebeforesave":break;case"number":break;case"refmoder1c1":break;case"embedsavesmarttags":break;default:Oe=!1}break;case"workbookoptions":switch(o[3]){case"owcversion":break;case"height":break;case"width":break;default:Oe=!1}break;case"worksheetoptions":switch(o[3]){case"visible":if(o[0].slice(-2)!=="/>")if(o[1]==="/")switch(n.slice(V,o.index)){case"SheetHidden":A.Hidden=1;break;case"SheetVeryHidden":A.Hidden=2;break}else V=o.index+o[0].length;break;case"header":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Me(o[0]).Margin)||(h["!margins"].header=+Me(o[0]).Margin);break;case"footer":h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+Me(o[0]).Margin)||(h["!margins"].footer=+Me(o[0]).Margin);break;case"pagemargins":var be=Me(o[0]);h["!margins"]||Aa(h["!margins"]={},"xlml"),isNaN(+be.Top)||(h["!margins"].top=+be.Top),isNaN(+be.Left)||(h["!margins"].left=+be.Left),isNaN(+be.Right)||(h["!margins"].right=+be.Right),isNaN(+be.Bottom)||(h["!margins"].bottom=+be.Bottom);break;case"displayrighttoleft":b.Views||(b.Views=[]),b.Views[0]||(b.Views[0]={}),b.Views[0].RTL=!0;break;case"freezepanes":break;case"frozennosplit":break;case"splithorizontal":case"splitvertical":break;case"donotdisplaygridlines":break;case"activerow":break;case"activecol":break;case"toprowbottompane":break;case"leftcolumnrightpane":break;case"unsynced":break;case"print":break;case"printerrors":break;case"panes":break;case"scale":break;case"pane":break;case"number":break;case"layout":break;case"pagesetup":break;case"selected":break;case"protectobjects":break;case"enableselection":break;case"protectscenarios":break;case"validprinterinfo":break;case"horizontalresolution":break;case"verticalresolution":break;case"numberofcopies":break;case"activepane":break;case"toprowvisible":break;case"leftcolumnvisible":break;case"fittopage":break;case"rangeselection":break;case"papersizeindex":break;case"pagelayoutzoom":break;case"pagebreakzoom":break;case"filteron":break;case"fitwidth":break;case"fitheight":break;case"commentslayout":break;case"zoom":break;case"lefttoright":break;case"gridlines":break;case"allowsort":break;case"allowfilter":break;case"allowinsertrows":break;case"allowdeleterows":break;case"allowinsertcols":break;case"allowdeletecols":break;case"allowinserthyperlinks":break;case"allowformatcells":break;case"allowsizecols":break;case"allowsizerows":break;case"nosummaryrowsbelowdetail":h["!outline"]||(h["!outline"]={}),h["!outline"].above=!0;break;case"tabcolorindex":break;case"donotdisplayheadings":break;case"showpagelayoutzoom":break;case"nosummarycolumnsrightdetail":h["!outline"]||(h["!outline"]={}),h["!outline"].left=!0;break;case"blackandwhite":break;case"donotdisplayzeros":break;case"displaypagebreak":break;case"rowcolheadings":break;case"donotdisplayoutline":break;case"noorientation":break;case"allowusepivottables":break;case"zeroheight":break;case"viewablerange":break;case"selection":break;case"protectcontents":break;default:Oe=!1}break;case"pivottable":case"pivotcache":switch(o[3]){case"immediateitemsondrop":break;case"showpagemultipleitemlabel":break;case"compactrowindent":break;case"location":break;case"pivotfield":break;case"orientation":break;case"layoutform":break;case"layoutsubtotallocation":break;case"layoutcompactrow":break;case"position":break;case"pivotitem":break;case"datatype":break;case"datafield":break;case"sourcename":break;case"parentfield":break;case"ptlineitems":break;case"ptlineitem":break;case"countofsameitems":break;case"item":break;case"itemtype":break;case"ptsource":break;case"cacheindex":break;case"consolidationreference":break;case"filename":break;case"reference":break;case"nocolumngrand":break;case"norowgrand":break;case"blanklineafteritems":break;case"hidden":break;case"subtotal":break;case"basefield":break;case"mapchilditems":break;case"function":break;case"refreshonfileopen":break;case"printsettitles":break;case"mergelabels":break;case"defaultversion":break;case"refreshname":break;case"refreshdate":break;case"refreshdatecopy":break;case"versionlastrefresh":break;case"versionlastupdate":break;case"versionupdateablemin":break;case"versionrefreshablemin":break;case"calculation":break;default:Oe=!1}break;case"pagebreaks":switch(o[3]){case"colbreaks":break;case"colbreak":break;case"rowbreaks":break;case"rowbreak":break;case"colstart":break;case"colend":break;case"rowend":break;default:Oe=!1}break;case"autofilter":switch(o[3]){case"autofiltercolumn":break;case"autofiltercondition":break;case"autofilterand":break;case"autofilteror":break;default:Oe=!1}break;case"querytable":switch(o[3]){case"id":break;case"autoformatfont":break;case"autoformatpattern":break;case"querysource":break;case"querytype":break;case"enableredirections":break;case"refreshedinxl9":break;case"urlstring":break;case"htmltables":break;case"connection":break;case"commandtext":break;case"refreshinfo":break;case"notitles":break;case"nextid":break;case"columninfo":break;case"overwritecells":break;case"donotpromptforfile":break;case"textwizardsettings":break;case"source":break;case"number":break;case"decimal":break;case"thousandseparator":break;case"trailingminusnumbers":break;case"formatsettings":break;case"fieldtype":break;case"delimiters":break;case"tab":break;case"comma":break;case"autoformatname":break;case"versionlastedit":break;case"versionlastrefresh":break;default:Oe=!1}break;case"datavalidation":switch(o[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;case"cellrangelist":break;default:Oe=!1}break;case"sorting":case"conditionalformatting":switch(o[3]){case"range":break;case"type":break;case"min":break;case"max":break;case"sort":break;case"descending":break;case"order":break;case"casesensitive":break;case"value":break;case"errorstyle":break;case"errormessage":break;case"errortitle":break;case"cellrangelist":break;case"inputmessage":break;case"inputtitle":break;case"combohide":break;case"inputhide":break;case"condition":break;case"qualifier":break;case"useblank":break;case"value1":break;case"value2":break;case"format":break;default:Oe=!1}break;case"mapinfo":case"schema":case"data":switch(o[3]){case"map":break;case"entry":break;case"range":break;case"xpath":break;case"field":break;case"xsdtype":break;case"filteron":break;case"aggregate":break;case"elementtype":break;case"attributetype":break;case"schema":case"element":case"complextype":case"datatype":case"all":case"attribute":case"extends":break;case"row":break;default:Oe=!1}break;case"smarttags":break;default:Oe=!1;break}if(Oe||o[3].match(/!\[CDATA/))break;if(!c[c.length-1][1])throw"Unrecognized tag: "+o[3]+"|"+c.join("|");if(c[c.length-1][0]==="customdocumentproperties"){if(o[0].slice(-2)==="/>")break;o[1]==="/"?eA(z,G,j,n.slice(V,o.index)):(j=o,V=o.index+o[0].length);break}if(r.WTF)throw"Unrecognized tag: "+o[3]+"|"+c.join("|")}var me={};return!r.bookSheets&&!r.bookProps&&(me.Sheets=u),me.SheetNames=d,me.Workbook=b,me.SSF=lt(Re),me.Props=W,me.Custprops=z,me}function Ic(e,t){switch(Wc(t=t||{}),t.type||"base64"){case"base64":return Nc(Er(e),t);case"binary":case"buffer":case"file":return Nc(e,t);case"array":return Nc(qn(e),t)}}function iA(e,t){var r=[];return e.Props&&r.push(Ay(e.Props,t)),e.Custprops&&r.push(Dy(e.Props,e.Custprops)),r.join("")}function sA(){return""}function oA(e,t){var r=['<Style ss:ID="Default" ss:Name="Normal"><NumberFormat/></Style>'];return t.cellXfs.forEach(function(n,a){var i=[];i.push(ge("NumberFormat",null,{"ss:Format":Qe(Re[n.numFmtId])}));var s={"ss:ID":"s"+(21+a)};r.push(ge("Style",i.join(""),s))}),ge("Styles",r.join(""))}function Am(e){return ge("NamedRange",null,{"ss:Name":e.Name,"ss:RefersTo":"="+Tc(e.Ref,{r:0,c:0})})}function lA(e){if(!((e||{}).Workbook||{}).Names)return"";for(var t=e.Workbook.Names,r=[],n=0;n<t.length;++n){var a=t[n];a.Sheet==null&&(a.Name.match(/^_xlfn\./)||r.push(Am(a)))}return ge("Names",r.join(""))}function cA(e,t,r,n){if(!e||!((n||{}).Workbook||{}).Names)return"";for(var a=n.Workbook.Names,i=[],s=0;s<a.length;++s){var o=a[s];o.Sheet==r&&(o.Name.match(/^_xlfn\./)||i.push(Am(o)))}return i.join("")}function fA(e,t,r,n){if(!e)return"";var a=[];if(e["!margins"]&&(a.push("<PageSetup>"),e["!margins"].header&&a.push(ge("Header",null,{"x:Margin":e["!margins"].header})),e["!margins"].footer&&a.push(ge("Footer",null,{"x:Margin":e["!margins"].footer})),a.push(ge("PageMargins",null,{"x:Bottom":e["!margins"].bottom||"0.75","x:Left":e["!margins"].left||"0.7","x:Right":e["!margins"].right||"0.7","x:Top":e["!margins"].top||"0.75"})),a.push("</PageSetup>")),n&&n.Workbook&&n.Workbook.Sheets&&n.Workbook.Sheets[r])if(n.Workbook.Sheets[r].Hidden)a.push(ge("Visible",n.Workbook.Sheets[r].Hidden==1?"SheetHidden":"SheetVeryHidden",{}));else{for(var i=0;i<r&&!(n.Workbook.Sheets[i]&&!n.Workbook.Sheets[i].Hidden);++i);i==r&&a.push("<Selected/>")}return((((n||{}).Workbook||{}).Views||[])[0]||{}).RTL&&a.push("<DisplayRightToLeft/>"),e["!protect"]&&(a.push(zt("ProtectContents","True")),e["!protect"].objects&&a.push(zt("ProtectObjects","True")),e["!protect"].scenarios&&a.push(zt("ProtectScenarios","True")),e["!protect"].selectLockedCells!=null&&!e["!protect"].selectLockedCells?a.push(zt("EnableSelection","NoSelection")):e["!protect"].selectUnlockedCells!=null&&!e["!protect"].selectUnlockedCells&&a.push(zt("EnableSelection","UnlockedCells")),[["formatCells","AllowFormatCells"],["formatColumns","AllowSizeCols"],["formatRows","AllowSizeRows"],["insertColumns","AllowInsertCols"],["insertRows","AllowInsertRows"],["insertHyperlinks","AllowInsertHyperlinks"],["deleteColumns","AllowDeleteCols"],["deleteRows","AllowDeleteRows"],["sort","AllowSort"],["autoFilter","AllowFilter"],["pivotTables","AllowUsePivotTables"]].forEach(function(s){e["!protect"][s[0]]&&a.push("<"+s[1]+"/>")})),a.length==0?"":ge("WorksheetOptions",a.join(""),{xmlns:Fr.x})}function uA(e){return e.map(function(t){var r=O2(t.t||""),n=ge("ss:Data",r,{xmlns:"http://www.w3.org/TR/REC-html40"});return ge("Comment",n,{"ss:Author":t.a})}).join("")}function dA(e,t,r,n,a,i,s){if(!e||e.v==null&&e.f==null)return"";var o={};if(e.f&&(o["ss:Formula"]="="+Qe(Tc(e.f,s))),e.F&&e.F.slice(0,t.length)==t){var c=pt(e.F.slice(t.length+1));o["ss:ArrayRange"]="RC:R"+(c.r==s.r?"":"["+(c.r-s.r)+"]")+"C"+(c.c==s.c?"":"["+(c.c-s.c)+"]")}if(e.l&&e.l.Target&&(o["ss:HRef"]=Qe(e.l.Target),e.l.Tooltip&&(o["x:HRefScreenTip"]=Qe(e.l.Tooltip))),r["!merges"])for(var f=r["!merges"],u=0;u!=f.length;++u)f[u].s.c!=s.c||f[u].s.r!=s.r||(f[u].e.c>f[u].s.c&&(o["ss:MergeAcross"]=f[u].e.c-f[u].s.c),f[u].e.r>f[u].s.r&&(o["ss:MergeDown"]=f[u].e.r-f[u].s.r));var d="",h="";switch(e.t){case"z":if(!n.sheetStubs)return"";break;case"n":d="Number",h=String(e.v);break;case"b":d="Boolean",h=e.v?"1":"0";break;case"e":d="Error",h=Pn[e.v];break;case"d":d="DateTime",h=new Date(e.v).toISOString(),e.z==null&&(e.z=e.z||Re[14]);break;case"s":d="String",h=R2(e.v||"");break}var m=na(n.cellXfs,e,n);o["ss:StyleID"]="s"+(21+m),o["ss:Index"]=s.c+1;var g=e.v!=null?h:"",p=e.t=="z"?"":'<Data ss:Type="'+d+'">'+g+"</Data>";return(e.c||[]).length>0&&(p+=uA(e.c)),ge("Cell",p,o)}function hA(e,t){var r='<Row ss:Index="'+(e+1)+'"';return t&&(t.hpt&&!t.hpx&&(t.hpx=ai(t.hpt)),t.hpx&&(r+=' ss:AutoFitHeight="0" ss:Height="'+t.hpx+'"'),t.hidden&&(r+=' ss:Hidden="1"')),r+">"}function mA(e,t,r,n){if(!e["!ref"])return"";var a=Ye(e["!ref"]),i=e["!merges"]||[],s=0,o=[];e["!cols"]&&e["!cols"].forEach(function(x,v){ta(x);var y=!!x.width,w=Oo(v,x),E={"ss:Index":v+1};y&&(E["ss:Width"]=as(w.width)),x.hidden&&(E["ss:Hidden"]="1"),o.push(ge("Column",null,E))});for(var c=Array.isArray(e),f=a.s.r;f<=a.e.r;++f){for(var u=[hA(f,(e["!rows"]||[])[f])],d=a.s.c;d<=a.e.c;++d){var h=!1;for(s=0;s!=i.length;++s)if(!(i[s].s.c>d)&&!(i[s].s.r>f)&&!(i[s].e.c<d)&&!(i[s].e.r<f)){(i[s].s.c!=d||i[s].s.r!=f)&&(h=!0);break}if(!h){var m={r:f,c:d},g=Ne(m),p=c?(e[f]||[])[d]:e[g];u.push(dA(p,g,e,t,r,n,m))}}u.push("</Row>"),u.length>2&&o.push(u.join(""))}return o.join("")}function pA(e,t,r){var n=[],a=r.SheetNames[e],i=r.Sheets[a],s=i?cA(i,t,e,r):"";return s.length>0&&n.push("<Names>"+s+"</Names>"),s=i?mA(i,t,e,r):"",s.length>0&&n.push("<Table>"+s+"</Table>"),n.push(fA(i,t,e,r)),n.join("")}function gA(e,t){t||(t={}),e.SSF||(e.SSF=lt(Re)),e.SSF&&(Ja(),Hi(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF,t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}));var r=[];r.push(iA(e,t)),r.push(sA()),r.push(""),r.push("");for(var n=0;n<e.SheetNames.length;++n)r.push(ge("Worksheet",pA(n,t,e),{"ss:Name":Qe(e.SheetNames[n])}));return r[2]=oA(e,t),r[3]=lA(e),bt+ge("Workbook",r.join(""),{xmlns:Fr.ss,"xmlns:o":Fr.o,"xmlns:x":Fr.x,"xmlns:ss":Fr.ss,"xmlns:dt":Fr.dt,"xmlns:html":Fr.html})}function xA(e){var t={},r=e.content;if(r.l=28,t.AnsiUserType=r.read_shift(0,"lpstr-ansi"),t.AnsiClipboardFormat=ly(r),r.length-r.l<=4)return t;var n=r.read_shift(4);if(n==0||n>40||(r.l-=4,t.Reserved1=r.read_shift(0,"lpstr-ansi"),r.length-r.l<=4)||(n=r.read_shift(4),n!==1907505652)||(t.UnicodeClipboardFormat=cy(r),n=r.read_shift(4),n==0||n>40))return t;r.l-=4,t.Reserved2=r.read_shift(0,"lpwstr")}var vA=[60,1084,2066,2165,2175];function wA(e,t,r,n,a){var i=n,s=[],o=r.slice(r.l,r.l+i);if(a&&a.enc&&a.enc.insitu&&o.length>0)switch(e){case 9:case 521:case 1033:case 2057:case 47:case 405:case 225:case 406:case 312:case 404:case 10:break;case 133:break;default:a.enc.insitu(o)}s.push(o),r.l+=i;for(var c=Bn(r,r.l),f=Pc[c],u=0;f!=null&&vA.indexOf(c)>-1;)i=Bn(r,r.l+2),u=r.l+4,c==2066?u+=4:(c==2165||c==2175)&&(u+=12),o=r.slice(u,r.l+4+i),s.push(o),r.l+=4+i,f=Pc[c=Bn(r,r.l)];var d=Lt(s);Gt(d,0);var h=0;d.lens=[];for(var m=0;m<s.length;++m)d.lens.push(h),h+=s[m].length;if(d.length<n)throw"XLS Record 0x"+e.toString(16)+" Truncated: "+d.length+" < "+n;return t.f(d,d.length,a)}function vn(e,t,r){if(e.t!=="z"&&e.XF){var n=0;try{n=e.z||e.XF.numFmtId||0,t.cellNF&&(e.z=Re[n])}catch(i){if(t.WTF)throw i}if(!t||t.cellText!==!1)try{e.t==="e"?e.w=e.w||Pn[e.v]:n===0||n=="General"?e.t==="n"?(e.v|0)===e.v?e.w=e.v.toString(10):e.w=Wi(e.v):e.w=ha(e.v):e.w=Cr(n,e.v,{date1904:!!r,dateNF:t&&t.dateNF})}catch(i){if(t.WTF)throw i}if(t.cellDates&&n&&e.t=="n"&&ma(Re[n]||String(n))){var a=Jn(e.v);a&&(e.t="d",e.v=new Date(a.y,a.m-1,a.d,a.H,a.M,a.S,a.u))}}}function Bo(e,t,r){return{v:e,ixfe:t,t:r}}function _A(e,t){var r={opts:{}},n={},a=t.dense?[]:{},i={},s={},o=null,c=[],f="",u={},d,h="",m,g,p,x,v={},y=[],w,E,R=[],F=[],C={Sheets:[],WBProps:{date1904:!1},Views:[{}]},U={},S=function(Ae){return Ae<8?ba[Ae]:Ae<64&&F[Ae-8]||ba[Ae]},W=function(Ae,it,hr){var Pt=it.XF.data;if(!(!Pt||!Pt.patternType||!hr||!hr.cellStyles)){it.s={},it.s.patternType=Pt.patternType;var Pa;(Pa=ns(S(Pt.icvFore)))&&(it.s.fgColor={rgb:Pa}),(Pa=ns(S(Pt.icvBack)))&&(it.s.bgColor={rgb:Pa})}},z=function(Ae,it,hr){if(!(D>1)&&!(hr.sheetRows&&Ae.r>=hr.sheetRows)){if(hr.cellStyles&&it.XF&&it.XF.data&&W(Ae,it,hr),delete it.ixfe,delete it.XF,d=Ae,h=Ne(Ae),(!s||!s.s||!s.e)&&(s={s:{r:0,c:0},e:{r:0,c:0}}),Ae.r<s.s.r&&(s.s.r=Ae.r),Ae.c<s.s.c&&(s.s.c=Ae.c),Ae.r+1>s.e.r&&(s.e.r=Ae.r+1),Ae.c+1>s.e.c&&(s.e.c=Ae.c+1),hr.cellFormula&&it.f){for(var Pt=0;Pt<y.length;++Pt)if(!(y[Pt][0].s.c>Ae.c||y[Pt][0].s.r>Ae.r)&&!(y[Pt][0].e.c<Ae.c||y[Pt][0].e.r<Ae.r)){it.F=We(y[Pt][0]),(y[Pt][0].s.c!=Ae.c||y[Pt][0].s.r!=Ae.r)&&delete it.f,it.f&&(it.f=""+rr(y[Pt][1],s,Ae,K,V));break}}hr.dense?(a[Ae.r]||(a[Ae.r]=[]),a[Ae.r][Ae.c]=it):a[h]=it}},V={enc:!1,sbcch:0,snames:[],sharedf:v,arrayf:y,rrtabid:[],lastuser:"",biff:8,codepage:0,winlocked:0,cellStyles:!!t&&!!t.cellStyles,WTF:!!t&&!!t.wtf};t.password&&(V.password=t.password);var j,H=[],Y=[],ae=[],se=[],de=!1,K=[];K.SheetNames=V.snames,K.sharedf=V.sharedf,K.arrayf=V.arrayf,K.names=[],K.XTI=[];var we=0,D=0,_=0,k=[],b=[],A;V.codepage=1200,Kr(1200);for(var G=!1;e.l<e.length-1;){var re=e.l,ee=e.read_shift(2);if(ee===0&&we===10)break;var te=e.l===e.length?0:e.read_shift(2),ne=Pc[ee];if(ne&&ne.f){if(t.bookSheets&&we===133&&ee!==133)break;if(we=ee,ne.r===2||ne.r==12){var Ce=e.read_shift(2);if(te-=2,!V.enc&&Ce!==ee&&((Ce&255)<<8|Ce>>8)!==ee)throw new Error("rt mismatch: "+Ce+"!="+ee);ne.r==12&&(e.l+=10,te-=10)}var I={};if(ee===10?I=ne.f(e,te,V):I=wA(ee,ne,e,te,V),D==0&&[9,521,1033,2057].indexOf(we)===-1)continue;switch(ee){case 34:r.opts.Date1904=C.WBProps.date1904=I;break;case 134:r.opts.WriteProtect=!0;break;case 47:if(V.enc||(e.l=0),V.enc=I,!t.password)throw new Error("File is password-protected");if(I.valid==null)throw new Error("Encryption scheme unsupported");if(!I.valid)throw new Error("Password is incorrect");break;case 92:V.lastuser=I;break;case 66:var fe=Number(I);switch(fe){case 21010:fe=1200;break;case 32768:fe=1e4;break;case 32769:fe=1252;break}Kr(V.codepage=fe),G=!0;break;case 317:V.rrtabid=I;break;case 25:V.winlocked=I;break;case 439:r.opts.RefreshAll=I;break;case 12:r.opts.CalcCount=I;break;case 16:r.opts.CalcDelta=I;break;case 17:r.opts.CalcIter=I;break;case 13:r.opts.CalcMode=I;break;case 14:r.opts.CalcPrecision=I;break;case 95:r.opts.CalcSaveRecalc=I;break;case 15:V.CalcRefMode=I;break;case 2211:r.opts.FullCalc=I;break;case 129:I.fDialog&&(a["!type"]="dialog"),I.fBelow||((a["!outline"]||(a["!outline"]={})).above=!0),I.fRight||((a["!outline"]||(a["!outline"]={})).left=!0);break;case 224:R.push(I);break;case 430:K.push([I]),K[K.length-1].XTI=[];break;case 35:case 547:K[K.length-1].push(I);break;case 24:case 536:A={Name:I.Name,Ref:rr(I.rgce,s,null,K,V)},I.itab>0&&(A.Sheet=I.itab-1),K.names.push(A),K[0]||(K[0]=[],K[0].XTI=[]),K[K.length-1].push(I),I.Name=="_xlnm._FilterDatabase"&&I.itab>0&&I.rgce&&I.rgce[0]&&I.rgce[0][0]&&I.rgce[0][0][0]=="PtgArea3d"&&(b[I.itab-1]={ref:We(I.rgce[0][0][1][2])});break;case 22:V.ExternCount=I;break;case 23:K.length==0&&(K[0]=[],K[0].XTI=[]),K[K.length-1].XTI=K[K.length-1].XTI.concat(I),K.XTI=K.XTI.concat(I);break;case 2196:if(V.biff<8)break;A!=null&&(A.Comment=I[1]);break;case 18:a["!protect"]=I;break;case 19:I!==0&&V.WTF&&console.error("Password verifier: "+I);break;case 133:i[I.pos]=I,V.snames.push(I.name);break;case 10:{if(--D)break;if(s.e){if(s.e.r>0&&s.e.c>0){if(s.e.r--,s.e.c--,a["!ref"]=We(s),t.sheetRows&&t.sheetRows<=s.e.r){var ye=s.e.r;s.e.r=t.sheetRows-1,a["!fullref"]=a["!ref"],a["!ref"]=We(s),s.e.r=ye}s.e.r++,s.e.c++}H.length>0&&(a["!merges"]=H),Y.length>0&&(a["!objects"]=Y),ae.length>0&&(a["!cols"]=ae),se.length>0&&(a["!rows"]=se),C.Sheets.push(U)}f===""?u=a:n[f]=a,a=t.dense?[]:{}}break;case 9:case 521:case 1033:case 2057:{if(V.biff===8&&(V.biff={9:2,521:3,1033:4}[ee]||{512:2,768:3,1024:4,1280:5,1536:8,2:2,7:2}[I.BIFFVer]||8),V.biffguess=I.BIFFVer==0,I.BIFFVer==0&&I.dt==4096&&(V.biff=5,G=!0,Kr(V.codepage=28591)),V.biff==8&&I.BIFFVer==0&&I.dt==16&&(V.biff=2),D++)break;if(a=t.dense?[]:{},V.biff<8&&!G&&(G=!0,Kr(V.codepage=t.codepage||1252)),V.biff<5||I.BIFFVer==0&&I.dt==4096){f===""&&(f="Sheet1"),s={s:{r:0,c:0},e:{r:0,c:0}};var Oe={pos:e.l-te,name:f};i[Oe.pos]=Oe,V.snames.push(f)}else f=(i[re]||{name:""}).name;I.dt==32&&(a["!type"]="chart"),I.dt==64&&(a["!type"]="macro"),H=[],Y=[],V.arrayf=y=[],ae=[],se=[],de=!1,U={Hidden:(i[re]||{hs:0}).hs,name:f}}break;case 515:case 3:case 2:a["!type"]=="chart"&&(t.dense?(a[I.r]||[])[I.c]:a[Ne({c:I.c,r:I.r})])&&++I.c,w={ixfe:I.ixfe,XF:R[I.ixfe]||{},v:I.val,t:"n"},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t);break;case 5:case 517:w={ixfe:I.ixfe,XF:R[I.ixfe],v:I.val,t:I.t},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t);break;case 638:w={ixfe:I.ixfe,XF:R[I.ixfe],v:I.rknum,t:"n"},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t);break;case 189:for(var be=I.c;be<=I.C;++be){var me=I.rkrec[be-I.c][0];w={ixfe:me,XF:R[me],v:I.rkrec[be-I.c][1],t:"n"},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:be,r:I.r},w,t)}break;case 6:case 518:case 1030:{if(I.val=="String"){o=I;break}if(w=Bo(I.val,I.cell.ixfe,I.tt),w.XF=R[w.ixfe],t.cellFormula){var ht=I.formula;if(ht&&ht[0]&&ht[0][0]&&ht[0][0][0]=="PtgExp"){var wr=ht[0][0][1][0],jr=ht[0][0][1][1],zr=Ne({r:wr,c:jr});v[zr]?w.f=""+rr(I.formula,s,I.cell,K,V):w.F=((t.dense?(a[wr]||[])[jr]:a[zr])||{}).F}else w.f=""+rr(I.formula,s,I.cell,K,V)}_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z(I.cell,w,t),o=I}break;case 7:case 519:if(o)o.val=I,w=Bo(I,o.cell.ixfe,"s"),w.XF=R[w.ixfe],t.cellFormula&&(w.f=""+rr(o.formula,s,o.cell,K,V)),_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z(o.cell,w,t),o=null;else throw new Error("String record expects Formula");break;case 33:case 545:{y.push(I);var gi=Ne(I[0].s);if(m=t.dense?(a[I[0].s.r]||[])[I[0].s.c]:a[gi],t.cellFormula&&m){if(!o||!gi||!m)break;m.f=""+rr(I[1],s,I[0],K,V),m.F=We(I[0])}}break;case 1212:{if(!t.cellFormula)break;if(h){if(!o)break;v[Ne(o.cell)]=I[0],m=t.dense?(a[o.cell.r]||[])[o.cell.c]:a[Ne(o.cell)],(m||{}).f=""+rr(I[0],s,d,K,V)}}break;case 253:w=Bo(c[I.isst].t,I.ixfe,"s"),c[I.isst].h&&(w.h=c[I.isst].h),w.XF=R[w.ixfe],_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t);break;case 513:t.sheetStubs&&(w={ixfe:I.ixfe,XF:R[I.ixfe],t:"z"},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t));break;case 190:if(t.sheetStubs)for(var bn=I.c;bn<=I.C;++bn){var dr=I.ixfe[bn-I.c];w={ixfe:dr,XF:R[dr],t:"z"},_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:bn,r:I.r},w,t)}break;case 214:case 516:case 4:w=Bo(I.val,I.ixfe,"s"),w.XF=R[w.ixfe],_>0&&(w.z=k[w.ixfe>>8&63]),vn(w,t,r.opts.Date1904),z({c:I.c,r:I.r},w,t);break;case 0:case 512:D===1&&(s=I);break;case 252:c=I;break;case 1054:if(V.biff==4){k[_++]=I[1];for(var ln=0;ln<_+163&&Re[ln]!=I[1];++ln);ln>=163&&mn(I[1],_+163)}else mn(I[1],I[0]);break;case 30:{k[_++]=I;for(var En=0;En<_+163&&Re[En]!=I;++En);En>=163&&mn(I,_+163)}break;case 229:H=H.concat(I);break;case 93:Y[I.cmo[0]]=V.lastobj=I;break;case 438:V.lastobj.TxO=I;break;case 127:V.lastobj.ImData=I;break;case 440:for(x=I[0].s.r;x<=I[0].e.r;++x)for(p=I[0].s.c;p<=I[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&(m.l=I[1]);break;case 2048:for(x=I[0].s.r;x<=I[0].e.r;++x)for(p=I[0].s.c;p<=I[0].e.c;++p)m=t.dense?(a[x]||[])[p]:a[Ne({c:p,r:x})],m&&m.l&&(m.l.Tooltip=I[1]);break;case 28:{if(V.biff<=5&&V.biff>=2)break;m=t.dense?(a[I[0].r]||[])[I[0].c]:a[Ne(I[0])];var Ia=Y[I[2]];m||(t.dense?(a[I[0].r]||(a[I[0].r]=[]),m=a[I[0].r][I[0].c]={t:"z"}):m=a[Ne(I[0])]={t:"z"},s.e.r=Math.max(s.e.r,I[0].r),s.s.r=Math.min(s.s.r,I[0].r),s.e.c=Math.max(s.e.c,I[0].c),s.s.c=Math.min(s.s.c,I[0].c)),m.c||(m.c=[]),g={a:I[1],t:Ia.TxO.t},m.c.push(g)}break;case 2173:oS(R[I.ixfe],I.ext);break;case 125:{if(!V.cellStyles)break;for(;I.e>=I.s;)ae[I.e--]={width:I.w/256,level:I.level||0,hidden:!!(I.flags&1)},de||(de=!0,bc(I.w/256)),ta(ae[I.e+1])}break;case 520:{var st={};I.level!=null&&(se[I.r]=st,st.level=I.level),I.hidden&&(se[I.r]=st,st.hidden=!0),I.hpt&&(se[I.r]=st,st.hpt=I.hpt,st.hpx=ai(I.hpt))}break;case 38:case 39:case 40:case 41:a["!margins"]||Aa(a["!margins"]={}),a["!margins"][{38:"left",39:"right",40:"top",41:"bottom"}[ee]]=I;break;case 161:a["!margins"]||Aa(a["!margins"]={}),a["!margins"].header=I.header,a["!margins"].footer=I.footer;break;case 574:I.RTL&&(C.Views[0].RTL=!0);break;case 146:F=I;break;case 2198:j=I;break;case 140:E=I;break;case 442:f?U.CodeName=I||U.name:C.WBProps.CodeName=I||"ThisWorkbook";break}}else ne||console.error("Missing Info for XLS Record 0x"+ee.toString(16)),e.l+=te}return r.SheetNames=_t(i).sort(function(Ht,Ae){return Number(Ht)-Number(Ae)}).map(function(Ht){return i[Ht].name}),t.bookSheets||(r.Sheets=n),!r.SheetNames.length&&u["!ref"]?(r.SheetNames.push("Sheet1"),r.Sheets&&(r.Sheets.Sheet1=u)):r.Preamble=u,r.Sheets&&b.forEach(function(Ht,Ae){r.Sheets[r.SheetNames[Ae]]["!autofilter"]=Ht}),r.Strings=c,r.SSF=lt(Re),V.enc&&(r.Encryption=V.enc),j&&(r.Themes=j),r.Metadata={},E!==void 0&&(r.Metadata.Country=E),K.names.length>0&&(C.Names=K.names),r.Workbook=C,r}var ms={SI:"e0859ff2f94f6810ab9108002b27b3d9",DSI:"02d5cdd59c2e1b10939708002b2cf9ae",UDI:"05d5cdd59c2e1b10939708002b2cf9ae"};function yA(e,t,r){var n=Fe.find(e,"/!DocumentSummaryInformation");if(n&&n.size>0)try{var a=gh(n,cc,ms.DSI);for(var i in a)t[i]=a[i]}catch(f){if(r.WTF)throw f}var s=Fe.find(e,"/!SummaryInformation");if(s&&s.size>0)try{var o=gh(s,fc,ms.SI);for(var c in o)t[c]==null&&(t[c]=o[c])}catch(f){if(r.WTF)throw f}t.HeadingPairs&&t.TitlesOfParts&&(ah(t.HeadingPairs,t.TitlesOfParts,t,r),delete t.HeadingPairs,delete t.TitlesOfParts)}function kA(e,t){var r=[],n=[],a=[],i=0,s,o=nd(cc,"n"),c=nd(fc,"n");if(e.Props)for(s=_t(e.Props),i=0;i<s.length;++i)(Object.prototype.hasOwnProperty.call(o,s[i])?r:Object.prototype.hasOwnProperty.call(c,s[i])?n:a).push([s[i],e.Props[s[i]]]);if(e.Custprops)for(s=_t(e.Custprops),i=0;i<s.length;++i)Object.prototype.hasOwnProperty.call(e.Props||{},s[i])||(Object.prototype.hasOwnProperty.call(o,s[i])?r:Object.prototype.hasOwnProperty.call(c,s[i])?n:a).push([s[i],e.Custprops[s[i]]]);var f=[];for(i=0;i<a.length;++i)mh.indexOf(a[i][0])>-1||nh.indexOf(a[i][0])>-1||a[i][1]!=null&&f.push(a[i]);n.length&&Fe.utils.cfb_add(t,"/SummaryInformation",xh(n,ms.SI,c,fc)),(r.length||f.length)&&Fe.utils.cfb_add(t,"/DocumentSummaryInformation",xh(r,ms.DSI,o,cc,f.length?f:null,ms.UDI))}function Dm(e,t){t||(t={}),Wc(t),Vl(),t.codepage&&Ll(t.codepage);var r,n;if(e.FullPaths){if(Fe.find(e,"/encryption"))throw new Error("File is password-protected");r=Fe.find(e,"!CompObj"),n=Fe.find(e,"/Workbook")||Fe.find(e,"/Book")}else{switch(t.type){case"base64":e=Sr(Er(e));break;case"binary":e=Sr(e);break;case"buffer":break;case"array":Array.isArray(e)||(e=Array.prototype.slice.call(e));break}Gt(e,0),n={content:e}}var a,i;if(r&&xA(r),t.bookProps&&!t.bookSheets)a={};else{var s=je?"buffer":"array";if(n&&n.content)a=_A(n.content,t);else if((i=Fe.find(e,"PerfectOffice_MAIN"))&&i.content)a=Fa.to_workbook(i.content,(t.type=s,t));else if((i=Fe.find(e,"NativeContent_MAIN"))&&i.content)a=Fa.to_workbook(i.content,(t.type=s,t));else throw(i=Fe.find(e,"MN0"))&&i.content?new Error("Unsupported Works 4 for Mac file"):new Error("Cannot find Workbook stream");t.bookVBA&&e.FullPaths&&Fe.find(e,"/_VBA_PROJECT_CUR/VBA/dir")&&(a.vbaraw=IS(e))}var o={};return e.FullPaths&&yA(e,o,t),a.Props=a.Custprops=o,t.bookFiles&&(a.cfb=e),a}function bA(e,t){var r=t||{},n=Fe.utils.cfb_new({root:"R"}),a="/Workbook";switch(r.bookType||"xls"){case"xls":r.bookType="biff8";case"xla":r.bookType||(r.bookType="xla");case"biff8":a="/Workbook",r.biff=8;break;case"biff5":a="/Book",r.biff=5;break;default:throw new Error("invalid type "+r.bookType+" for XLS CFB")}return Fe.utils.cfb_add(n,a,Rm(e,r)),r.biff==8&&(e.Props||e.Custprops)&&kA(e,n),r.biff==8&&e.vbaraw&&PS(n,Fe.read(e.vbaraw,{type:typeof e.vbaraw=="string"?"binary":"buffer"})),n}var ps={0:{f:XT},1:{f:tF},2:{f:_F},3:{f:cF},4:{f:iF},5:{f:xF},6:{f:SF},7:{f:hF},8:{f:OF},9:{f:RF},10:{f:AF},11:{f:DF},12:{f:nF},13:{f:kF},14:{f:uF},15:{f:oF},16:{f:_m},17:{f:TF},18:{f:pF},19:{f:nc},20:{},21:{},22:{},23:{},24:{},25:{},26:{},27:{},28:{},29:{},30:{},31:{},32:{},33:{},34:{},35:{T:1},36:{T:-1},37:{T:1},38:{T:-1},39:{f:T4},40:{},42:{},43:{f:SE},44:{f:bE},45:{f:FE},46:{f:DE},47:{f:AE},48:{},49:{f:q2},50:{},51:{f:fS},52:{T:1},53:{T:-1},54:{T:1},55:{T:-1},56:{T:1},57:{T:-1},58:{},59:{},60:{f:Mh},62:{f:EF},63:{f:wS},64:{f:KF},65:{},66:{},67:{},68:{},69:{},70:{},128:{},129:{T:1},130:{T:-1},131:{T:1,f:Jt,p:0},132:{T:-1},133:{T:1},134:{T:-1},135:{T:1},136:{T:-1},137:{T:1,f:jF},138:{T:-1},139:{T:1},140:{T:-1},141:{T:1},142:{T:-1},143:{T:1},144:{T:-1},145:{T:1},146:{T:-1},147:{f:QT},148:{f:qT,p:16},151:{f:LF},152:{},153:{f:E4},154:{},155:{},156:{f:k4},157:{},158:{},159:{T:1,f:Ub},160:{T:-1},161:{T:1,f:ya},162:{T:-1},163:{T:1},164:{T:-1},165:{T:1},166:{T:-1},167:{},168:{},169:{},170:{},171:{},172:{T:1},173:{T:-1},174:{},175:{},176:{f:BF},177:{T:1},178:{T:-1},179:{T:1},180:{T:-1},181:{T:1},182:{T:-1},183:{T:1},184:{T:-1},185:{T:1},186:{T:-1},187:{T:1},188:{T:-1},189:{T:1},190:{T:-1},191:{T:1},192:{T:-1},193:{T:1},194:{T:-1},195:{T:1},196:{T:-1},197:{T:1},198:{T:-1},199:{T:1},200:{T:-1},201:{T:1},202:{T:-1},203:{T:1},204:{T:-1},205:{T:1},206:{T:-1},207:{T:1},208:{T:-1},209:{T:1},210:{T:-1},211:{T:1},212:{T:-1},213:{T:1},214:{T:-1},215:{T:1},216:{T:-1},217:{T:1},218:{T:-1},219:{T:1},220:{T:-1},221:{T:1},222:{T:-1},223:{T:1},224:{T:-1},225:{T:1},226:{T:-1},227:{T:1},228:{T:-1},229:{T:1},230:{T:-1},231:{T:1},232:{T:-1},233:{T:1},234:{T:-1},235:{T:1},236:{T:-1},237:{T:1},238:{T:-1},239:{T:1},240:{T:-1},241:{T:1},242:{T:-1},243:{T:1},244:{T:-1},245:{T:1},246:{T:-1},247:{T:1},248:{T:-1},249:{T:1},250:{T:-1},251:{T:1},252:{T:-1},253:{T:1},254:{T:-1},255:{T:1},256:{T:-1},257:{T:1},258:{T:-1},259:{T:1},260:{T:-1},261:{T:1},262:{T:-1},263:{T:1},264:{T:-1},265:{T:1},266:{T:-1},267:{T:1},268:{T:-1},269:{T:1},270:{T:-1},271:{T:1},272:{T:-1},273:{T:1},274:{T:-1},275:{T:1},276:{T:-1},277:{},278:{T:1},279:{T:-1},280:{T:1},281:{T:-1},282:{T:1},283:{T:1},284:{T:-1},285:{T:1},286:{T:-1},287:{T:1},288:{T:-1},289:{T:1},290:{T:-1},291:{T:1},292:{T:-1},293:{T:1},294:{T:-1},295:{T:1},296:{T:-1},297:{T:1},298:{T:-1},299:{T:1},300:{T:-1},301:{T:1},302:{T:-1},303:{T:1},304:{T:-1},305:{T:1},306:{T:-1},307:{T:1},308:{T:-1},309:{T:1},310:{T:-1},311:{T:1},312:{T:-1},313:{T:-1},314:{T:1},315:{T:-1},316:{T:1},317:{T:-1},318:{T:1},319:{T:-1},320:{T:1},321:{T:-1},322:{T:1},323:{T:-1},324:{T:1},325:{T:-1},326:{T:1},327:{T:-1},328:{T:1},329:{T:-1},330:{T:1},331:{T:-1},332:{T:1},333:{T:-1},334:{T:1},335:{f:lS},336:{T:-1},337:{f:hS,T:1},338:{T:-1},339:{T:1},340:{T:-1},341:{T:1},342:{T:-1},343:{T:1},344:{T:-1},345:{T:1},346:{T:-1},347:{T:1},348:{T:-1},349:{T:1},350:{T:-1},351:{},352:{},353:{T:1},354:{T:-1},355:{f:ic},357:{},358:{},359:{},360:{T:1},361:{},362:{f:Ih},363:{},364:{},366:{},367:{},368:{},369:{},370:{},371:{},372:{T:1},373:{T:-1},374:{T:1},375:{T:-1},376:{T:1},377:{T:-1},378:{T:1},379:{T:-1},380:{T:1},381:{T:-1},382:{T:1},383:{T:-1},384:{T:1},385:{T:-1},386:{T:1},387:{T:-1},388:{T:1},389:{T:-1},390:{T:1},391:{T:-1},392:{T:1},393:{T:-1},394:{T:1},395:{T:-1},396:{},397:{},398:{},399:{},400:{},401:{T:1},403:{},404:{},405:{},406:{},407:{},408:{},409:{},410:{},411:{},412:{},413:{},414:{},415:{},416:{},417:{},418:{},419:{},420:{},421:{},422:{T:1},423:{T:1},424:{T:-1},425:{T:-1},426:{f:VF},427:{f:UF},428:{},429:{T:1},430:{T:-1},431:{T:1},432:{T:-1},433:{T:1},434:{T:-1},435:{T:1},436:{T:-1},437:{T:1},438:{T:-1},439:{T:1},440:{T:-1},441:{T:1},442:{T:-1},443:{T:1},444:{T:-1},445:{T:1},446:{T:-1},447:{T:1},448:{T:-1},449:{T:1},450:{T:-1},451:{T:1},452:{T:-1},453:{T:1},454:{T:-1},455:{T:1},456:{T:-1},457:{T:1},458:{T:-1},459:{T:1},460:{T:-1},461:{T:1},462:{T:-1},463:{T:1},464:{T:-1},465:{T:1},466:{T:-1},467:{T:1},468:{T:-1},469:{T:1},470:{T:-1},471:{},472:{},473:{T:1},474:{T:-1},475:{},476:{f:WF},477:{},478:{},479:{T:1},480:{T:-1},481:{T:1},482:{T:-1},483:{T:1},484:{T:-1},485:{f:ZT},486:{T:1},487:{T:-1},488:{T:1},489:{T:-1},490:{T:1},491:{T:-1},492:{T:1},493:{T:-1},494:{f:PF},495:{T:1},496:{T:-1},497:{T:1},498:{T:-1},499:{},500:{T:1},501:{T:-1},502:{T:1},503:{T:-1},504:{},505:{T:1},506:{T:-1},507:{},508:{T:1},509:{T:-1},510:{T:1},511:{T:-1},512:{},513:{},514:{T:1},515:{T:-1},516:{T:1},517:{T:-1},518:{T:1},519:{T:-1},520:{T:1},521:{T:-1},522:{},523:{},524:{},525:{},526:{},527:{},528:{T:1},529:{T:-1},530:{T:1},531:{T:-1},532:{T:1},533:{T:-1},534:{},535:{},536:{},537:{},538:{T:1},539:{T:-1},540:{T:1},541:{T:-1},542:{T:1},548:{},549:{},550:{f:ic},551:{},552:{},553:{},554:{T:1},555:{T:-1},556:{T:1},557:{T:-1},558:{T:1},559:{T:-1},560:{T:1},561:{T:-1},562:{},564:{},565:{T:1},566:{T:-1},569:{T:1},570:{T:-1},572:{},573:{T:1},574:{T:-1},577:{},578:{},579:{},580:{},581:{},582:{},583:{},584:{},585:{},586:{},587:{},588:{T:-1},589:{},590:{T:1},591:{T:-1},592:{T:1},593:{T:-1},594:{T:1},595:{T:-1},596:{},597:{T:1},598:{T:-1},599:{T:1},600:{T:-1},601:{T:1},602:{T:-1},603:{T:1},604:{T:-1},605:{T:1},606:{T:-1},607:{},608:{T:1},609:{T:-1},610:{},611:{T:1},612:{T:-1},613:{T:1},614:{T:-1},615:{T:1},616:{T:-1},617:{T:1},618:{T:-1},619:{T:1},620:{T:-1},625:{},626:{T:1},627:{T:-1},628:{T:1},629:{T:-1},630:{T:1},631:{T:-1},632:{f:DS},633:{T:1},634:{T:-1},635:{T:1,f:FS},636:{T:-1},637:{f:ey},638:{T:1},639:{},640:{T:-1},641:{T:1},642:{T:-1},643:{T:1},644:{},645:{T:-1},646:{T:1},648:{T:1},649:{},650:{T:-1},651:{f:u4},652:{},653:{T:1},654:{T:-1},655:{T:1},656:{T:-1},657:{T:1},658:{T:-1},659:{},660:{T:1},661:{},662:{T:-1},663:{},664:{T:1},665:{},666:{T:-1},667:{},668:{},669:{},671:{T:1},672:{T:-1},673:{T:1},674:{T:-1},675:{},676:{},677:{},678:{},679:{},680:{},681:{},1024:{},1025:{},1026:{T:1},1027:{T:-1},1028:{T:1},1029:{T:-1},1030:{},1031:{T:1},1032:{T:-1},1033:{T:1},1034:{T:-1},1035:{},1036:{},1037:{},1038:{T:1},1039:{T:-1},1040:{},1041:{T:1},1042:{T:-1},1043:{},1044:{},1045:{},1046:{T:1},1047:{T:-1},1048:{T:1},1049:{T:-1},1050:{},1051:{T:1},1052:{T:1},1053:{f:YF},1054:{T:1},1055:{},1056:{T:1},1057:{T:-1},1058:{T:1},1059:{T:-1},1061:{},1062:{T:1},1063:{T:-1},1064:{T:1},1065:{T:-1},1066:{T:1},1067:{T:-1},1068:{T:1},1069:{T:-1},1070:{T:1},1071:{T:-1},1072:{T:1},1073:{T:-1},1075:{T:1},1076:{T:-1},1077:{T:1},1078:{T:-1},1079:{T:1},1080:{T:-1},1081:{T:1},1082:{T:-1},1083:{T:1},1084:{T:-1},1085:{},1086:{T:1},1087:{T:-1},1088:{T:1},1089:{T:-1},1090:{T:1},1091:{T:-1},1092:{T:1},1093:{T:-1},1094:{T:1},1095:{T:-1},1096:{},1097:{T:1},1098:{},1099:{T:-1},1100:{T:1},1101:{T:-1},1102:{},1103:{},1104:{},1105:{},1111:{},1112:{},1113:{T:1},1114:{T:-1},1115:{T:1},1116:{T:-1},1117:{},1118:{T:1},1119:{T:-1},1120:{T:1},1121:{T:-1},1122:{T:1},1123:{T:-1},1124:{T:1},1125:{T:-1},1126:{},1128:{T:1},1129:{T:-1},1130:{},1131:{T:1},1132:{T:-1},1133:{T:1},1134:{T:-1},1135:{T:1},1136:{T:-1},1137:{T:1},1138:{T:-1},1139:{T:1},1140:{T:-1},1141:{},1142:{T:1},1143:{T:-1},1144:{T:1},1145:{T:-1},1146:{},1147:{T:1},1148:{T:-1},1149:{T:1},1150:{T:-1},1152:{T:1},1153:{T:-1},1154:{T:-1},1155:{T:-1},1156:{T:-1},1157:{T:1},1158:{T:-1},1159:{T:1},1160:{T:-1},1161:{T:1},1162:{T:-1},1163:{T:1},1164:{T:-1},1165:{T:1},1166:{T:-1},1167:{T:1},1168:{T:-1},1169:{T:1},1170:{T:-1},1171:{},1172:{T:1},1173:{T:-1},1177:{},1178:{T:1},1180:{},1181:{},1182:{},2048:{T:1},2049:{T:-1},2050:{},2051:{T:1},2052:{T:-1},2053:{},2054:{},2055:{T:1},2056:{T:-1},2057:{T:1},2058:{T:-1},2060:{},2067:{},2068:{T:1},2069:{T:-1},2070:{},2071:{},2072:{T:1},2073:{T:-1},2075:{},2076:{},2077:{T:1},2078:{T:-1},2079:{},2080:{T:1},2081:{T:-1},2082:{},2083:{T:1},2084:{T:-1},2085:{T:1},2086:{T:-1},2087:{T:1},2088:{T:-1},2089:{T:1},2090:{T:-1},2091:{},2092:{},2093:{T:1},2094:{T:-1},2095:{},2096:{T:1},2097:{T:-1},2098:{T:1},2099:{T:-1},2100:{T:1},2101:{T:-1},2102:{},2103:{T:1},2104:{T:-1},2105:{},2106:{T:1},2107:{T:-1},2108:{},2109:{T:1},2110:{T:-1},2111:{T:1},2112:{T:-1},2113:{T:1},2114:{T:-1},2115:{},2116:{},2117:{},2118:{T:1},2119:{T:-1},2120:{},2121:{T:1},2122:{T:-1},2123:{T:1},2124:{T:-1},2125:{},2126:{T:1},2127:{T:-1},2128:{},2129:{T:1},2130:{T:-1},2131:{T:1},2132:{T:-1},2133:{T:1},2134:{},2135:{},2136:{},2137:{T:1},2138:{T:-1},2139:{T:1},2140:{T:-1},2141:{},3072:{},3073:{},4096:{T:1},4097:{T:-1},5002:{T:1},5003:{T:-1},5081:{T:1},5082:{T:-1},5083:{},5084:{T:1},5085:{T:-1},5086:{T:1},5087:{T:-1},5088:{},5089:{},5090:{},5092:{T:1},5093:{T:-1},5094:{},5095:{T:1},5096:{T:-1},5097:{},5099:{},65535:{n:""}},Pc={6:{f:Ac},10:{f:ea},12:{f:Ft},13:{f:Ft},14:{f:St},15:{f:St},16:{f:Qt},17:{f:St},18:{f:St},19:{f:Ft},20:{f:Oh},21:{f:Oh},23:{f:Ih},24:{f:Nh},25:{f:St},26:{},27:{},28:{f:Yk},29:{},34:{f:St},35:{f:Bh},38:{f:Qt},39:{f:Qt},40:{f:Qt},41:{f:Qt},42:{f:St},43:{f:St},47:{f:oE},49:{f:kk},51:{f:Ft},60:{},61:{f:xk},64:{f:St},65:{f:yk},66:{f:Ft},77:{},80:{},81:{},82:{},85:{f:Ft},89:{},90:{},91:{},92:{f:sk},93:{f:Zk},94:{},95:{f:St},96:{},97:{},99:{f:St},125:{f:Mh},128:{f:Mk},129:{f:lk},130:{f:Ft},131:{f:St},132:{f:St},133:{f:ck},134:{},140:{f:sb},141:{f:Ft},144:{},146:{f:cb},151:{},152:{},153:{},154:{},155:{},156:{f:Ft},157:{},158:{},160:{f:gb},161:{f:db},174:{},175:{},176:{},177:{},178:{},180:{},181:{},182:{},184:{},185:{},189:{f:Bk},190:{f:Nk},193:{f:ea},197:{},198:{},199:{},200:{},201:{},202:{f:St},203:{},204:{},205:{},206:{},207:{},208:{},209:{},210:{},211:{},213:{},215:{},216:{},217:{},218:{f:Ft},220:{},221:{f:St},222:{},224:{f:Pk},225:{f:ik},226:{f:ea},227:{},229:{f:qk},233:{},235:{},236:{},237:{},239:{},240:{},241:{},242:{},244:{},245:{},246:{},247:{},248:{},249:{},251:{},252:{f:uk},253:{f:Ek},255:{f:hk},256:{},259:{},290:{},311:{},312:{},315:{},317:{f:vh},318:{},319:{},320:{},330:{},331:{},333:{},334:{},335:{},336:{},337:{},338:{},339:{},340:{},351:{},352:{f:St},353:{f:ea},401:{},402:{},403:{},404:{},405:{},406:{},407:{},408:{},425:{},426:{},427:{},428:{},429:{},430:{f:Wk},431:{f:St},432:{},433:{},434:{},437:{},438:{f:tb},439:{f:St},440:{f:rb},441:{},442:{f:rs},443:{},444:{f:Ft},445:{},446:{},448:{f:ea},449:{f:gk,r:2},450:{f:ea},512:{f:Ah},513:{f:pb},515:{f:Uk},516:{f:Ck},517:{f:Rh},519:{f:xb},520:{f:mk},523:{},545:{f:Ph},549:{f:Fh},566:{},574:{f:wk},638:{f:Ok},659:{},1048:{},1054:{f:Fk},1084:{},1212:{f:Gk},2048:{f:ab},2049:{},2050:{},2051:{},2052:{},2053:{},2054:{},2055:{},2056:{},2057:{f:So},2058:{},2059:{},2060:{},2061:{},2062:{},2063:{},2064:{},2066:{},2067:{},2128:{},2129:{},2130:{},2131:{},2132:{},2133:{},2134:{},2135:{},2136:{},2137:{},2138:{},2146:{},2147:{r:12},2148:{},2149:{},2150:{},2151:{f:ea},2152:{},2154:{},2155:{},2156:{},2161:{},2162:{},2164:{},2165:{},2166:{},2167:{},2168:{},2169:{},2170:{},2171:{},2172:{f:fb,r:12},2173:{f:sS,r:12},2174:{},2175:{},2180:{},2181:{},2182:{},2183:{},2184:{},2185:{},2186:{},2187:{},2188:{f:St,r:12},2189:{},2190:{r:12},2191:{},2192:{},2194:{},2195:{},2196:{f:zk,r:12},2197:{},2198:{f:eS,r:12},2199:{},2200:{},2201:{},2202:{f:Xk,r:12},2203:{f:ea},2204:{},2205:{},2206:{},2207:{},2211:{f:pk},2212:{},2213:{},2214:{},2215:{},4097:{},4098:{},4099:{},4102:{},4103:{},4105:{},4106:{},4107:{},4108:{},4109:{},4116:{},4117:{},4118:{},4119:{},4120:{},4121:{},4122:{},4123:{},4124:{},4125:{},4126:{},4127:{},4128:{},4129:{},4130:{},4132:{},4133:{},4134:{f:Ft},4135:{},4146:{},4147:{},4148:{},4149:{},4154:{},4156:{},4157:{},4158:{},4159:{},4160:{},4161:{},4163:{},4164:{f:hb},4165:{},4166:{},4168:{},4170:{},4171:{},4174:{},4175:{},4176:{},4177:{},4187:{},4188:{f:lb},4189:{},4191:{},4192:{},4193:{},4194:{},4195:{},4196:{},4197:{},4198:{},4199:{},4200:{},0:{f:Ah},1:{},2:{f:kb},3:{f:_b},4:{f:wb},5:{f:Rh},7:{f:Eb},8:{},9:{f:So},11:{},22:{f:Ft},30:{f:Dk},31:{},32:{},33:{f:Ph},36:{},37:{f:Fh},50:{f:Sb},62:{},52:{},67:{},68:{f:Ft},69:{},86:{},126:{},127:{f:vb},135:{},136:{},137:{},145:{},148:{},149:{},150:{},169:{},171:{},188:{},191:{},192:{},194:{},195:{},214:{f:Cb},223:{},234:{},354:{},421:{},518:{f:Ac},521:{f:So},536:{f:Nh},547:{f:Bh},561:{},579:{},1030:{f:Ac},1033:{f:So},1091:{},2157:{},2163:{},2177:{},2240:{},2241:{},2242:{},2243:{},2244:{},2245:{},2246:{},2247:{},2248:{},2249:{},2250:{},2251:{},2262:{r:12},29282:{}};function xe(e,t,r,n){var a=t;if(!isNaN(a)){var i=n||(r||[]).length||0,s=e.next(4);s.write_shift(2,a),s.write_shift(2,i),i>0&&Ql(r)&&e.push(r)}}function EA(e,t,r,n){var a=n||(r||[]).length||0;if(a<=8224)return xe(e,t,r,a);var i=t;if(!isNaN(i)){for(var s=r.parts||[],o=0,c=0,f=0;f+(s[o]||8224)<=8224;)f+=s[o]||8224,o++;var u=e.next(4);for(u.write_shift(2,i),u.write_shift(2,f),e.push(r.slice(c,c+f)),c+=f;c<a;){for(u=e.next(4),u.write_shift(2,60),f=0;f+(s[o]||8224)<=8224;)f+=s[o]||8224,o++;u.write_shift(2,f),e.push(r.slice(c,c+f)),c+=f}}}function gs(e,t,r){return e||(e=ie(7)),e.write_shift(2,t),e.write_shift(2,r),e.write_shift(2,0),e.write_shift(1,0),e}function SA(e,t,r,n){var a=ie(9);return gs(a,e,t),wh(r,n||"b",a),a}function CA(e,t,r){var n=ie(8+2*r.length);return gs(n,e,t),n.write_shift(1,r.length),n.write_shift(r.length,r,"sbcs"),n.l<n.length?n.slice(0,n.l):n}function TA(e,t,r,n){if(t.v!=null)switch(t.t){case"d":case"n":var a=t.t=="d"?Bt(ot(t.v)):t.v;a==(a|0)&&a>=0&&a<65536?xe(e,2,bb(r,n,a)):xe(e,3,yb(r,n,a));return;case"b":case"e":xe(e,5,SA(r,n,t.v,t.t));return;case"s":case"str":xe(e,4,CA(r,n,(t.v||"").slice(0,255)));return}xe(e,1,gs(null,r,n))}function FA(e,t,r,n){var a=Array.isArray(t),i=Ye(t["!ref"]||"A1"),s,o="",c=[];if(i.e.c>255||i.e.r>16383){if(n.WTF)throw new Error("Range "+(t["!ref"]||"A1")+" exceeds format limit A1:IV16384");i.e.c=Math.min(i.e.c,255),i.e.r=Math.min(i.e.c,16383),s=We(i)}for(var f=i.s.r;f<=i.e.r;++f){o=Et(f);for(var u=i.s.c;u<=i.e.c;++u){f===i.s.r&&(c[u]=mt(u)),s=c[u]+o;var d=a?(t[f]||[])[u]:t[s];d&&TA(e,d,f,u)}}}function AA(e,t){for(var r=t||{},n=gr(),a=0,i=0;i<e.SheetNames.length;++i)e.SheetNames[i]==r.sheet&&(a=i);if(a==0&&r.sheet&&e.SheetNames[0]!=r.sheet)throw new Error("Sheet not found: "+r.sheet);return xe(n,r.biff==4?1033:r.biff==3?521:9,vc(e,16,r)),FA(n,e.Sheets[e.SheetNames[a]],a,r),xe(n,10),n.end()}function DA(e,t,r){xe(e,49,bk({sz:12,color:{theme:1},name:"Arial",family:2,scheme:"minor"},r))}function RA(e,t,r){t&&[[5,8],[23,26],[41,44],[50,392]].forEach(function(n){for(var a=n[0];a<=n[1];++a)t[a]!=null&&xe(e,1054,Ak(a,t[a],r))})}function OA(e,t){var r=ie(19);r.write_shift(4,2151),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(2,3),r.write_shift(1,1),r.write_shift(4,0),xe(e,2151,r),r=ie(39),r.write_shift(4,2152),r.write_shift(4,0),r.write_shift(4,0),r.write_shift(2,3),r.write_shift(1,0),r.write_shift(4,0),r.write_shift(2,1),r.write_shift(4,4),r.write_shift(2,0),Sh(Ye(t["!ref"]||"A1"),r),r.write_shift(4,4),xe(e,2152,r)}function BA(e,t){for(var r=0;r<16;++r)xe(e,224,Dh({numFmtId:0,style:!0},0,t));t.cellXfs.forEach(function(n){xe(e,224,Dh(n,0,t))})}function NA(e,t){for(var r=0;r<t["!links"].length;++r){var n=t["!links"][r];xe(e,440,nb(n)),n[1].Tooltip&&xe(e,2048,ib(n))}delete t["!links"]}function IA(e,t){if(t){var r=0;t.forEach(function(n,a){++r<=256&&n&&xe(e,125,ub(Oo(a,n),a))})}}function PA(e,t,r,n,a){var i=16+na(a.cellXfs,t,a);if(t.v==null&&!t.bf){xe(e,513,Ta(r,n,i));return}if(t.bf)xe(e,6,lT(t,r,n,a,i));else switch(t.t){case"d":case"n":var s=t.t=="d"?Bt(ot(t.v)):t.v;xe(e,515,$k(r,n,s,i));break;case"b":case"e":xe(e,517,Vk(r,n,t.v,i,a,t.t));break;case"s":case"str":if(a.bookSST){var o=Rc(a.Strings,t.v,a.revStrings);xe(e,253,Sk(r,n,o,i))}else xe(e,516,Tk(r,n,(t.v||"").slice(0,255),i,a));break;default:xe(e,513,Ta(r,n,i))}}function MA(e,t,r){var n=gr(),a=r.SheetNames[e],i=r.Sheets[a]||{},s=(r||{}).Workbook||{},o=(s.Sheets||[])[e]||{},c=Array.isArray(i),f=t.biff==8,u,d="",h=[],m=Ye(i["!ref"]||"A1"),g=f?65536:16384;if(m.e.c>255||m.e.r>=g){if(t.WTF)throw new Error("Range "+(i["!ref"]||"A1")+" exceeds format limit A1:IV16384");m.e.c=Math.min(m.e.c,255),m.e.r=Math.min(m.e.c,g-1)}xe(n,2057,vc(r,16,t)),xe(n,13,Ur(1)),xe(n,12,Ur(100)),xe(n,15,cr(!0)),xe(n,17,cr(!1)),xe(n,16,ka(.001)),xe(n,95,cr(!0)),xe(n,42,cr(!1)),xe(n,43,cr(!1)),xe(n,130,Ur(1)),xe(n,128,Lk([0,0])),xe(n,131,cr(!1)),xe(n,132,cr(!1)),f&&IA(n,i["!cols"]),xe(n,512,Rk(m,t)),f&&(i["!links"]=[]);for(var p=m.s.r;p<=m.e.r;++p){d=Et(p);for(var x=m.s.c;x<=m.e.c;++x){p===m.s.r&&(h[x]=mt(x)),u=h[x]+d;var v=c?(i[p]||[])[x]:i[u];v&&(PA(n,v,p,x,t),f&&v.l&&i["!links"].push([u,v.l]))}}var y=o.CodeName||o.name||a;return f&&xe(n,574,_k((s.Views||[])[0])),f&&(i["!merges"]||[]).length&&xe(n,229,Jk(i["!merges"])),f&&NA(n,i),xe(n,442,_h(y)),f&&OA(n,i),xe(n,10),n.end()}function LA(e,t,r){var n=gr(),a=(e||{}).Workbook||{},i=a.Sheets||[],s=a.WBProps||{},o=r.biff==8,c=r.biff==5;if(xe(n,2057,vc(e,5,r)),r.bookType=="xla"&&xe(n,135),xe(n,225,o?Ur(1200):null),xe(n,193,Vy(2)),c&&xe(n,191),c&&xe(n,192),xe(n,226),xe(n,92,ok("SheetJS",r)),xe(n,66,Ur(o?1200:1252)),o&&xe(n,353,Ur(0)),o&&xe(n,448),xe(n,317,mb(e.SheetNames.length)),o&&e.vbaraw&&xe(n,211),o&&e.vbaraw){var f=s.CodeName||"ThisWorkbook";xe(n,442,_h(f))}xe(n,156,Ur(17)),xe(n,25,cr(!1)),xe(n,18,cr(!1)),xe(n,19,Ur(0)),o&&xe(n,431,cr(!1)),o&&xe(n,444,Ur(0)),xe(n,61,vk()),xe(n,64,cr(!1)),xe(n,141,Ur(0)),xe(n,34,cr(g4(e)=="true")),xe(n,14,cr(!0)),o&&xe(n,439,cr(!1)),xe(n,218,Ur(0)),DA(n,e,r),RA(n,e.SSF,r),BA(n,r),o&&xe(n,352,cr(!1));var u=n.end(),d=gr();o&&xe(d,140,ob()),o&&r.Strings&&EA(d,252,dk(r.Strings)),xe(d,10);var h=d.end(),m=gr(),g=0,p=0;for(p=0;p<e.SheetNames.length;++p)g+=(o?12:11)+(o?2:1)*e.SheetNames[p].length;var x=u.length+g+h.length;for(p=0;p<e.SheetNames.length;++p){var v=i[p]||{};xe(m,133,fk({pos:x,hs:v.Hidden||0,dt:0,name:e.SheetNames[p]},r)),x+=t[p].length}var y=m.end();if(g!=y.length)throw new Error("BS8 "+g+" != "+y.length);var w=[];return u.length&&w.push(u),y.length&&w.push(y),h.length&&w.push(h),Lt(w)}function VA(e,t){var r=t||{},n=[];e&&!e.SSF&&(e.SSF=lt(Re)),e&&e.SSF&&(Ja(),Hi(e.SSF),r.revssf=fo(e.SSF),r.revssf[e.SSF[65535]]=0,r.ssf=e.SSF),r.Strings=[],r.Strings.Count=0,r.Strings.Unique=0,Hc(r),r.cellXfs=[],na(r.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={});for(var a=0;a<e.SheetNames.length;++a)n[n.length]=MA(a,r,e);return n.unshift(LA(e,n,r)),Lt(n)}function Rm(e,t){for(var r=0;r<=e.SheetNames.length;++r){var n=e.Sheets[e.SheetNames[r]];if(!(!n||!n["!ref"])){var a=xr(n["!ref"]);a.e.c>255&&typeof console<"u"&&console.error&&console.error("Worksheet '"+e.SheetNames[r]+"' extends beyond column IV (255). Data may be lost.")}}var i=t||{};switch(i.biff||2){case 8:case 5:return VA(e,t);case 4:case 3:case 2:return AA(e,t)}throw new Error("invalid type "+i.bookType+" for BIFF")}function Om(e,t){var r=t||{},n=r.dense?[]:{};e=e.replace(/<!--.*?-->/g,"");var a=e.match(/<table/i);if(!a)throw new Error("Invalid HTML: could not find <table>");var i=e.match(/<\/table/i),s=a.index,o=i&&i.index||e.length,c=E2(e.slice(s,o),/(:?<tr[^>]*>)/i,"<tr>"),f=-1,u=0,d=0,h=0,m={s:{r:1e7,c:1e7},e:{r:0,c:0}},g=[];for(s=0;s<c.length;++s){var p=c[s].trim(),x=p.slice(0,3).toLowerCase();if(x=="<tr"){if(++f,r.sheetRows&&r.sheetRows<=f){--f;break}u=0;continue}if(!(x!="<td"&&x!="<th")){var v=p.split(/<\/t[dh]>/i);for(o=0;o<v.length;++o){var y=v[o].trim();if(y.match(/<t[dh]/i)){for(var w=y,E=0;w.charAt(0)=="<"&&(E=w.indexOf(">"))>-1;)w=w.slice(E+1);for(var R=0;R<g.length;++R){var F=g[R];F.s.c==u&&F.s.r<f&&f<=F.e.r&&(u=F.e.c+1,R=-1)}var C=Me(y.slice(0,y.indexOf(">")));h=C.colspan?+C.colspan:1,((d=+C.rowspan)>1||h>1)&&g.push({s:{r:f,c:u},e:{r:f+(d||1)-1,c:u+h-1}});var U=C.t||C["data-t"]||"";if(!w.length){u+=h;continue}if(w=_d(w),m.s.r>f&&(m.s.r=f),m.e.r<f&&(m.e.r=f),m.s.c>u&&(m.s.c=u),m.e.c<u&&(m.e.c=u),!w.length){u+=h;continue}var S={t:"s",v:w};r.raw||!w.trim().length||U=="s"||(w==="TRUE"?S={t:"b",v:!0}:w==="FALSE"?S={t:"b",v:!1}:isNaN(qr(w))?isNaN(Za(w).getDate())||(S={t:"d",v:ot(w)},r.cellDates||(S={t:"n",v:Bt(S.v)}),S.z=r.dateNF||Re[14]):S={t:"n",v:qr(w)}),r.dense?(n[f]||(n[f]=[]),n[f][u]=S):n[Ne({r:f,c:u})]=S,u+=h}}}}return n["!ref"]=We(m),g.length&&(n["!merges"]=g),n}function UA(e,t,r,n){for(var a=e["!merges"]||[],i=[],s=t.s.c;s<=t.e.c;++s){for(var o=0,c=0,f=0;f<a.length;++f)if(!(a[f].s.r>r||a[f].s.c>s)&&!(a[f].e.r<r||a[f].e.c<s)){if(a[f].s.r<r||a[f].s.c<s){o=-1;break}o=a[f].e.r-a[f].s.r+1,c=a[f].e.c-a[f].s.c+1;break}if(!(o<0)){var u=Ne({r,c:s}),d=n.dense?(e[r]||[])[s]:e[u],h=d&&d.v!=null&&(d.h||Kl(d.w||(In(d),d.w)||""))||"",m={};o>1&&(m.rowspan=o),c>1&&(m.colspan=c),n.editable?h='<span contenteditable="true">'+h+"</span>":d&&(m["data-t"]=d&&d.t||"z",d.v!=null&&(m["data-v"]=d.v),d.z!=null&&(m["data-z"]=d.z),d.l&&(d.l.Target||"#").charAt(0)!="#"&&(h='<a href="'+d.l.Target+'">'+h+"</a>")),m.id=(n.id||"sjs")+"-"+u,i.push(ge("td",h,m))}}var g="<tr>";return g+i.join("")+"</tr>"}var $A='<html><head><meta charset="utf-8"/><title>SheetJS Table Export</title></head><body>',WA="</body></html>";function HA(e,t){var r=e.match(/<table[\s\S]*?>[\s\S]*?<\/table>/gi);if(!r||r.length==0)throw new Error("Invalid HTML: could not find <table>");if(r.length==1)return Qn(Om(r[0],t),t);var n=Kc();return r.forEach(function(a,i){Yc(n,Om(a,t),"Sheet"+(i+1))}),n}function jA(e,t,r){var n=[];return n.join("")+"<table"+(r&&r.id?' id="'+r.id+'"':"")+">"}function Bm(e,t){var r=t||{},n=r.header!=null?r.header:$A,a=r.footer!=null?r.footer:WA,i=[n],s=xr(e["!ref"]);r.dense=Array.isArray(e),i.push(jA(e,s,r));for(var o=s.s.r;o<=s.e.r;++o)i.push(UA(e,s,o,r));return i.push("</table>"+a),i.join("")}function Nm(e,t,r){var n=r||{},a=0,i=0;if(n.origin!=null)if(typeof n.origin=="number")a=n.origin;else{var s=typeof n.origin=="string"?pt(n.origin):n.origin;a=s.r,i=s.c}var o=t.getElementsByTagName("tr"),c=Math.min(n.sheetRows||1e7,o.length),f={s:{r:0,c:0},e:{r:a,c:i}};if(e["!ref"]){var u=xr(e["!ref"]);f.s.r=Math.min(f.s.r,u.s.r),f.s.c=Math.min(f.s.c,u.s.c),f.e.r=Math.max(f.e.r,u.e.r),f.e.c=Math.max(f.e.c,u.e.c),a==-1&&(f.e.r=a=u.e.r+1)}var d=[],h=0,m=e["!rows"]||(e["!rows"]=[]),g=0,p=0,x=0,v=0,y=0,w=0;for(e["!cols"]||(e["!cols"]=[]);g<o.length&&p<c;++g){var E=o[g];if(Pm(E)){if(n.display)continue;m[p]={hidden:!0}}var R=E.children;for(x=v=0;x<R.length;++x){var F=R[x];if(!(n.display&&Pm(F))){var C=F.hasAttribute("data-v")?F.getAttribute("data-v"):F.hasAttribute("v")?F.getAttribute("v"):_d(F.innerHTML),U=F.getAttribute("data-z")||F.getAttribute("z");for(h=0;h<d.length;++h){var S=d[h];S.s.c==v+i&&S.s.r<p+a&&p+a<=S.e.r&&(v=S.e.c+1-i,h=-1)}w=+F.getAttribute("colspan")||1,((y=+F.getAttribute("rowspan")||1)>1||w>1)&&d.push({s:{r:p+a,c:v+i},e:{r:p+a+(y||1)-1,c:v+i+(w||1)-1}});var W={t:"s",v:C},z=F.getAttribute("data-t")||F.getAttribute("t")||"";C!=null&&(C.length==0?W.t=z||"z":n.raw||C.trim().length==0||z=="s"||(C==="TRUE"?W={t:"b",v:!0}:C==="FALSE"?W={t:"b",v:!1}:isNaN(qr(C))?isNaN(Za(C).getDate())||(W={t:"d",v:ot(C)},n.cellDates||(W={t:"n",v:Bt(W.v)}),W.z=n.dateNF||Re[14]):W={t:"n",v:qr(C)})),W.z===void 0&&U!=null&&(W.z=U);var V="",j=F.getElementsByTagName("A");if(j&&j.length)for(var H=0;H<j.length&&!(j[H].hasAttribute("href")&&(V=j[H].getAttribute("href"),V.charAt(0)!="#"));++H);V&&V.charAt(0)!="#"&&(W.l={Target:V}),n.dense?(e[p+a]||(e[p+a]=[]),e[p+a][v+i]=W):e[Ne({c:v+i,r:p+a})]=W,f.e.c<v+i&&(f.e.c=v+i),v+=w}}++p}return d.length&&(e["!merges"]=(e["!merges"]||[]).concat(d)),f.e.r=Math.max(f.e.r,p-1+a),e["!ref"]=We(f),p>=c&&(e["!fullref"]=We((f.e.r=o.length-g+p-1+a,f))),e}function Im(e,t){var r=t||{},n=r.dense?[]:{};return Nm(n,e,t)}function zA(e,t){return Qn(Im(e,t),t)}function Pm(e){var t="",r=GA(e);return r&&(t=r(e).getPropertyValue("display")),t||(t=e.style&&e.style.display),t==="none"}function GA(e){return e.ownerDocument.defaultView&&typeof e.ownerDocument.defaultView.getComputedStyle=="function"?e.ownerDocument.defaultView.getComputedStyle:typeof getComputedStyle=="function"?getComputedStyle:null}function XA(e){var t=e.replace(/[\t\r\n]/g," ").trim().replace(/ +/g," ").replace(/<text:s\/>/g," ").replace(/<text:s text:c="(\d+)"\/>/g,function(n,a){return Array(parseInt(a,10)+1).join(" ")}).replace(/<text:tab[^>]*\/>/g," ").replace(/<text:line-break\/>/g,`
|
||
`),r=Ke(t.replace(/<[^>]*>/g,""));return[r]}var Mm={day:["d","dd"],month:["m","mm"],year:["y","yy"],hours:["h","hh"],minutes:["m","mm"],seconds:["s","ss"],"am-pm":["A/P","AM/PM"],"day-of-week":["ddd","dddd"],era:["e","ee"],quarter:["\\Qm",'m\\"th quarter"']};function Lm(e,t){var r=t||{},n=Jl(e),a=[],i,s,o={name:""},c="",f=0,u,d,h={},m=[],g=r.dense?[]:{},p,x,v={value:""},y="",w=0,E=[],R=-1,F=-1,C={s:{r:1e6,c:1e7},e:{r:0,c:0}},U=0,S={},W=[],z={},V=0,j=0,H=[],Y=1,ae=1,se=[],de={Names:[]},K={},we=["",""],D=[],_={},k="",b=0,A=!1,G=!1,re=0;for(Ki.lastIndex=0,n=n.replace(/<!--([\s\S]*?)-->/mg,"").replace(/<!DOCTYPE[^\[]*\[[^\]]*\]>/gm,"");p=Ki.exec(n);)switch(p[3]=p[3].replace(/_.*$/,"")){case"table":case"工作表":p[1]==="/"?(C.e.c>=C.s.c&&C.e.r>=C.s.r?g["!ref"]=We(C):g["!ref"]="A1:A1",r.sheetRows>0&&r.sheetRows<=C.e.r&&(g["!fullref"]=g["!ref"],C.e.r=r.sheetRows-1,g["!ref"]=We(C)),W.length&&(g["!merges"]=W),H.length&&(g["!rows"]=H),u.name=u.名称||u.name,typeof JSON<"u"&&JSON.stringify(u),m.push(u.name),h[u.name]=g,G=!1):p[0].charAt(p[0].length-2)!=="/"&&(u=Me(p[0],!1),R=F=-1,C.s.r=C.s.c=1e7,C.e.r=C.e.c=0,g=r.dense?[]:{},W=[],H=[],G=!0);break;case"table-row-group":p[1]==="/"?--U:++U;break;case"table-row":case"行":if(p[1]==="/"){R+=Y,Y=1;break}if(d=Me(p[0],!1),d.行号?R=d.行号-1:R==-1&&(R=0),Y=+d["number-rows-repeated"]||1,Y<10)for(re=0;re<Y;++re)U>0&&(H[R+re]={level:U});F=-1;break;case"covered-table-cell":p[1]!=="/"&&++F,r.sheetStubs&&(r.dense?(g[R]||(g[R]=[]),g[R][F]={t:"z"}):g[Ne({r:R,c:F})]={t:"z"}),y="",E=[];break;case"table-cell":case"数据":if(p[0].charAt(p[0].length-2)==="/")++F,v=Me(p[0],!1),ae=parseInt(v["number-columns-repeated"]||"1",10),x={t:"z",v:null},v.formula&&r.cellFormula!=!1&&(x.f=gm(Ke(v.formula))),(v.数据类型||v["value-type"])=="string"&&(x.t="s",x.v=Ke(v["string-value"]||""),r.dense?(g[R]||(g[R]=[]),g[R][F]=x):g[Ne({r:R,c:F})]=x),F+=ae-1;else if(p[1]!=="/"){++F,y="",w=0,E=[],ae=1;var ee=Y?R+Y-1:R;if(F>C.e.c&&(C.e.c=F),F<C.s.c&&(C.s.c=F),R<C.s.r&&(C.s.r=R),ee>C.e.r&&(C.e.r=ee),v=Me(p[0],!1),D=[],_={},x={t:v.数据类型||v["value-type"],v:null},r.cellFormula)if(v.formula&&(v.formula=Ke(v.formula)),v["number-matrix-columns-spanned"]&&v["number-matrix-rows-spanned"]&&(V=parseInt(v["number-matrix-rows-spanned"],10)||0,j=parseInt(v["number-matrix-columns-spanned"],10)||0,z={s:{r:R,c:F},e:{r:R+V-1,c:F+j-1}},x.F=We(z),se.push([z,x.F])),v.formula)x.f=gm(v.formula);else for(re=0;re<se.length;++re)R>=se[re][0].s.r&&R<=se[re][0].e.r&&F>=se[re][0].s.c&&F<=se[re][0].e.c&&(x.F=se[re][1]);switch((v["number-columns-spanned"]||v["number-rows-spanned"])&&(V=parseInt(v["number-rows-spanned"],10)||0,j=parseInt(v["number-columns-spanned"],10)||0,z={s:{r:R,c:F},e:{r:R+V-1,c:F+j-1}},W.push(z)),v["number-columns-repeated"]&&(ae=parseInt(v["number-columns-repeated"],10)),x.t){case"boolean":x.t="b",x.v=ct(v["boolean-value"]);break;case"float":x.t="n",x.v=parseFloat(v.value);break;case"percentage":x.t="n",x.v=parseFloat(v.value);break;case"currency":x.t="n",x.v=parseFloat(v.value);break;case"date":x.t="d",x.v=ot(v["date-value"]),r.cellDates||(x.t="n",x.v=Bt(x.v)),x.z="m/d/yy";break;case"time":x.t="n",x.v=y2(v["time-value"])/86400,r.cellDates&&(x.t="d",x.v=ho(x.v)),x.z="HH:MM:SS";break;case"number":x.t="n",x.v=parseFloat(v.数据数值);break;default:if(x.t==="string"||x.t==="text"||!x.t)x.t="s",v["string-value"]!=null&&(y=Ke(v["string-value"]),E=[]);else throw new Error("Unsupported value type "+x.t)}}else{if(A=!1,x.t==="s"&&(x.v=y||"",E.length&&(x.R=E),A=w==0),K.Target&&(x.l=K),D.length>0&&(x.c=D,D=[]),y&&r.cellText!==!1&&(x.w=y),A&&(x.t="z",delete x.v),(!A||r.sheetStubs)&&!(r.sheetRows&&r.sheetRows<=R))for(var te=0;te<Y;++te){if(ae=parseInt(v["number-columns-repeated"]||"1",10),r.dense)for(g[R+te]||(g[R+te]=[]),g[R+te][F]=te==0?x:lt(x);--ae>0;)g[R+te][F+ae]=lt(x);else for(g[Ne({r:R+te,c:F})]=x;--ae>0;)g[Ne({r:R+te,c:F+ae})]=lt(x);C.e.c<=F&&(C.e.c=F)}ae=parseInt(v["number-columns-repeated"]||"1",10),F+=ae-1,ae=0,x={},y="",E=[]}K={};break;case"document":case"document-content":case"电子表格文档":case"spreadsheet":case"主体":case"scripts":case"styles":case"font-face-decls":case"master-styles":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!0]);break;case"annotation":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i;_.t=y,E.length&&(_.R=E),_.a=k,D.push(_)}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!1]);k="",b=0,y="",w=0,E=[];break;case"creator":p[1]==="/"?k=n.slice(b,p.index):b=p.index+p[0].length;break;case"meta":case"元数据":case"settings":case"config-item-set":case"config-item-map-indexed":case"config-item-map-entry":case"config-item-map-named":case"shapes":case"frame":case"text-box":case"image":case"data-pilot-tables":case"list-style":case"form":case"dde-links":case"event-listeners":case"chart":if(p[1]==="/"){if((i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&a.push([p[3],!1]);y="",w=0,E=[];break;case"scientific-number":break;case"currency-symbol":break;case"currency-style":break;case"number-style":case"percentage-style":case"date-style":case"time-style":if(p[1]==="/"){if(S[o.name]=c,(i=a.pop())[0]!==p[3])throw"Bad state: "+i}else p[0].charAt(p[0].length-2)!=="/"&&(c="",o=Me(p[0],!1),a.push([p[3],!0]));break;case"script":break;case"libraries":break;case"automatic-styles":break;case"default-style":case"page-layout":break;case"style":break;case"map":break;case"font-face":break;case"paragraph-properties":break;case"table-properties":break;case"table-column-properties":break;case"table-row-properties":break;case"table-cell-properties":break;case"number":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Me(p[0],!1),c+=Mm[p[3]][s.style==="long"?1:0];break}break;case"fraction":break;case"day":case"month":case"year":case"era":case"day-of-week":case"week-of-year":case"quarter":case"hours":case"minutes":case"seconds":case"am-pm":switch(a[a.length-1][0]){case"time-style":case"date-style":s=Me(p[0],!1),c+=Mm[p[3]][s.style==="long"?1:0];break}break;case"boolean-style":break;case"boolean":break;case"text-style":break;case"text":if(p[0].slice(-2)==="/>")break;if(p[1]==="/")switch(a[a.length-1][0]){case"number-style":case"date-style":case"time-style":c+=n.slice(f,p.index);break}else f=p.index+p[0].length;break;case"named-range":s=Me(p[0],!1),we=Dc(s["cell-range-address"]);var ne={Name:s.name,Ref:we[0]+"!"+we[1]};G&&(ne.Sheet=m.length),de.Names.push(ne);break;case"text-content":break;case"text-properties":break;case"embedded-text":break;case"body":case"电子表格":break;case"forms":break;case"table-column":break;case"table-header-rows":break;case"table-rows":break;case"table-column-group":break;case"table-header-columns":break;case"table-columns":break;case"null-date":break;case"graphic-properties":break;case"calculation-settings":break;case"named-expressions":break;case"label-range":break;case"label-ranges":break;case"named-expression":break;case"sort":break;case"sort-by":break;case"sort-groups":break;case"tab":break;case"line-break":break;case"span":break;case"p":case"文本串":if(["master-styles"].indexOf(a[a.length-1][0])>-1)break;if(p[1]==="/"&&(!v||!v["string-value"])){var Ce=XA(n.slice(w,p.index));y=(y.length>0?y+`
|
||
`:"")+Ce[0]}else Me(p[0],!1),w=p.index+p[0].length;break;case"s":break;case"database-range":if(p[1]==="/")break;try{we=Dc(Me(p[0])["target-range-address"]),h[we[0]]["!autofilter"]={ref:we[1]}}catch{}break;case"date":break;case"object":break;case"title":case"标题":break;case"desc":break;case"binary-data":break;case"table-source":break;case"scenario":break;case"iteration":break;case"content-validations":break;case"content-validation":break;case"help-message":break;case"error-message":break;case"database-ranges":break;case"filter":break;case"filter-and":break;case"filter-or":break;case"filter-condition":break;case"list-level-style-bullet":break;case"list-level-style-number":break;case"list-level-properties":break;case"sender-firstname":case"sender-lastname":case"sender-initials":case"sender-title":case"sender-position":case"sender-email":case"sender-phone-private":case"sender-fax":case"sender-company":case"sender-phone-work":case"sender-street":case"sender-city":case"sender-postal-code":case"sender-country":case"sender-state-or-province":case"author-name":case"author-initials":case"chapter":case"file-name":case"template-name":case"sheet-name":break;case"event-listener":break;case"initial-creator":case"creation-date":case"print-date":case"generator":case"document-statistic":case"user-defined":case"editing-duration":case"editing-cycles":break;case"config-item":break;case"page-number":break;case"page-count":break;case"time":break;case"cell-range-source":break;case"detective":break;case"operation":break;case"highlighted-range":break;case"data-pilot-table":case"source-cell-range":case"source-service":case"data-pilot-field":case"data-pilot-level":case"data-pilot-subtotals":case"data-pilot-subtotal":case"data-pilot-members":case"data-pilot-member":case"data-pilot-display-info":case"data-pilot-sort-info":case"data-pilot-layout-info":case"data-pilot-field-reference":case"data-pilot-groups":case"data-pilot-group":case"data-pilot-group-member":break;case"rect":break;case"dde-connection-decls":case"dde-connection-decl":case"dde-link":case"dde-source":break;case"properties":break;case"property":break;case"a":if(p[1]!=="/"){if(K=Me(p[0],!1),!K.href)break;K.Target=Ke(K.href),delete K.href,K.Target.charAt(0)=="#"&&K.Target.indexOf(".")>-1?(we=Dc(K.Target.slice(1)),K.Target="#"+we[0]+"!"+we[1]):K.Target.match(/^\.\.[\\\/]/)&&(K.Target=K.Target.slice(3))}break;case"table-protection":break;case"data-pilot-grand-total":break;case"office-document-common-attrs":break;default:switch(p[2]){case"dc:":case"calcext:":case"loext:":case"ooo:":case"chartooo:":case"draw:":case"style:":case"chart:":case"form:":case"uof:":case"表:":case"字:":break;default:if(r.WTF)throw new Error(p)}}var I={Sheets:h,SheetNames:m,Workbook:de};return r.bookSheets&&delete I.Sheets,I}function Vm(e,t){t=t||{},Mr(e,"META-INF/manifest.xml")&&_y(Tt(e,"META-INF/manifest.xml"),t);var r=Tr(e,"content.xml");if(!r)throw new Error("Missing content.xml in ODS / UOF file");var n=Lm(nt(r),t);return Mr(e,"meta.xml")&&(n.Props=th(Tt(e,"meta.xml"))),n}function Um(e,t){return Lm(e,t)}var KA=function(){var e=["<office:master-styles>",'<style:master-page style:name="mp1" style:page-layout-name="mp1">',"<style:header/>",'<style:header-left style:display="false"/>',"<style:footer/>",'<style:footer-left style:display="false"/>',"</style:master-page>","</office:master-styles>"].join(""),t="<office:document-styles "+Xi({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","office:version":"1.2"})+">"+e+"</office:document-styles>";return function(){return bt+t}}(),$m=function(){var e=function(i){return Qe(i).replace(/ +/g,function(s){return'<text:s text:c="'+s.length+'"/>'}).replace(/\t/g,"<text:tab/>").replace(/\n/g,"</text:p><text:p>").replace(/^ /,"<text:s/>").replace(/ $/,"<text:s/>")},t=` <table:table-cell />
|
||
`,r=` <table:covered-table-cell/>
|
||
`,n=function(i,s,o){var c=[];c.push(' <table:table table:name="'+Qe(s.SheetNames[o])+`" table:style-name="ta1">
|
||
`);var f=0,u=0,d=xr(i["!ref"]||"A1"),h=i["!merges"]||[],m=0,g=Array.isArray(i);if(i["!cols"])for(u=0;u<=d.e.c;++u)c.push(" <table:table-column"+(i["!cols"][u]?' table:style-name="co'+i["!cols"][u].ods+'"':"")+`></table:table-column>
|
||
`);var p="",x=i["!rows"]||[];for(f=0;f<d.s.r;++f)p=x[f]?' table:style-name="ro'+x[f].ods+'"':"",c.push(" <table:table-row"+p+`></table:table-row>
|
||
`);for(;f<=d.e.r;++f){for(p=x[f]?' table:style-name="ro'+x[f].ods+'"':"",c.push(" <table:table-row"+p+`>
|
||
`),u=0;u<d.s.c;++u)c.push(t);for(;u<=d.e.c;++u){var v=!1,y={},w="";for(m=0;m!=h.length;++m)if(!(h[m].s.c>u)&&!(h[m].s.r>f)&&!(h[m].e.c<u)&&!(h[m].e.r<f)){(h[m].s.c!=u||h[m].s.r!=f)&&(v=!0),y["table:number-columns-spanned"]=h[m].e.c-h[m].s.c+1,y["table:number-rows-spanned"]=h[m].e.r-h[m].s.r+1;break}if(v){c.push(r);continue}var E=Ne({r:f,c:u}),R=g?(i[f]||[])[u]:i[E];if(R&&R.f&&(y["table:formula"]=Qe(mT(R.f)),R.F&&R.F.slice(0,E.length)==E)){var F=xr(R.F);y["table:number-matrix-columns-spanned"]=F.e.c-F.s.c+1,y["table:number-matrix-rows-spanned"]=F.e.r-F.s.r+1}if(!R){c.push(t);continue}switch(R.t){case"b":w=R.v?"TRUE":"FALSE",y["office:value-type"]="boolean",y["office:boolean-value"]=R.v?"true":"false";break;case"n":w=R.w||String(R.v||0),y["office:value-type"]="float",y["office:value"]=R.v||0;break;case"s":case"str":w=R.v==null?"":R.v,y["office:value-type"]="string";break;case"d":w=R.w||ot(R.v).toISOString(),y["office:value-type"]="date",y["office:date-value"]=ot(R.v).toISOString(),y["table:style-name"]="ce1";break;default:c.push(t);continue}var C=e(w);if(R.l&&R.l.Target){var U=R.l.Target;U=U.charAt(0)=="#"?"#"+pT(U.slice(1)):U,U.charAt(0)!="#"&&!U.match(/^\w+:/)&&(U="../"+U),C=ge("text:a",C,{"xlink:href":U.replace(/&/g,"&")})}c.push(" "+ge("table:table-cell",ge("text:p",C,{}),y)+`
|
||
`)}c.push(` </table:table-row>
|
||
`)}return c.push(` </table:table>
|
||
`),c.join("")},a=function(i,s){i.push(` <office:automatic-styles>
|
||
`),i.push(` <number:date-style style:name="N37" number:automatic-order="true">
|
||
`),i.push(` <number:month number:style="long"/>
|
||
`),i.push(` <number:text>/</number:text>
|
||
`),i.push(` <number:day number:style="long"/>
|
||
`),i.push(` <number:text>/</number:text>
|
||
`),i.push(` <number:year/>
|
||
`),i.push(` </number:date-style>
|
||
`);var o=0;s.SheetNames.map(function(f){return s.Sheets[f]}).forEach(function(f){if(f&&f["!cols"]){for(var u=0;u<f["!cols"].length;++u)if(f["!cols"][u]){var d=f["!cols"][u];if(d.width==null&&d.wpx==null&&d.wch==null)continue;ta(d),d.ods=o;var h=f["!cols"][u].wpx+"px";i.push(' <style:style style:name="co'+o+`" style:family="table-column">
|
||
`),i.push(' <style:table-column-properties fo:break-before="auto" style:column-width="'+h+`"/>
|
||
`),i.push(` </style:style>
|
||
`),++o}}});var c=0;s.SheetNames.map(function(f){return s.Sheets[f]}).forEach(function(f){if(f&&f["!rows"]){for(var u=0;u<f["!rows"].length;++u)if(f["!rows"][u]){f["!rows"][u].ods=c;var d=f["!rows"][u].hpx+"px";i.push(' <style:style style:name="ro'+c+`" style:family="table-row">
|
||
`),i.push(' <style:table-row-properties fo:break-before="auto" style:row-height="'+d+`"/>
|
||
`),i.push(` </style:style>
|
||
`),++c}}}),i.push(` <style:style style:name="ta1" style:family="table" style:master-page-name="mp1">
|
||
`),i.push(` <style:table-properties table:display="true" style:writing-mode="lr-tb"/>
|
||
`),i.push(` </style:style>
|
||
`),i.push(` <style:style style:name="ce1" style:family="table-cell" style:parent-style-name="Default" style:data-style-name="N37"/>
|
||
`),i.push(` </office:automatic-styles>
|
||
`)};return function(s,o){var c=[bt],f=Xi({"xmlns:office":"urn:oasis:names:tc:opendocument:xmlns:office:1.0","xmlns:table":"urn:oasis:names:tc:opendocument:xmlns:table:1.0","xmlns:style":"urn:oasis:names:tc:opendocument:xmlns:style:1.0","xmlns:text":"urn:oasis:names:tc:opendocument:xmlns:text:1.0","xmlns:draw":"urn:oasis:names:tc:opendocument:xmlns:drawing:1.0","xmlns:fo":"urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0","xmlns:xlink":"http://www.w3.org/1999/xlink","xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:meta":"urn:oasis:names:tc:opendocument:xmlns:meta:1.0","xmlns:number":"urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0","xmlns:presentation":"urn:oasis:names:tc:opendocument:xmlns:presentation:1.0","xmlns:svg":"urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0","xmlns:chart":"urn:oasis:names:tc:opendocument:xmlns:chart:1.0","xmlns:dr3d":"urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0","xmlns:math":"http://www.w3.org/1998/Math/MathML","xmlns:form":"urn:oasis:names:tc:opendocument:xmlns:form:1.0","xmlns:script":"urn:oasis:names:tc:opendocument:xmlns:script:1.0","xmlns:ooo":"http://openoffice.org/2004/office","xmlns:ooow":"http://openoffice.org/2004/writer","xmlns:oooc":"http://openoffice.org/2004/calc","xmlns:dom":"http://www.w3.org/2001/xml-events","xmlns:xforms":"http://www.w3.org/2002/xforms","xmlns:xsd":"http://www.w3.org/2001/XMLSchema","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance","xmlns:sheet":"urn:oasis:names:tc:opendocument:sh33tjs:1.0","xmlns:rpt":"http://openoffice.org/2005/report","xmlns:of":"urn:oasis:names:tc:opendocument:xmlns:of:1.2","xmlns:xhtml":"http://www.w3.org/1999/xhtml","xmlns:grddl":"http://www.w3.org/2003/g/data-view#","xmlns:tableooo":"http://openoffice.org/2009/table","xmlns:drawooo":"http://openoffice.org/2010/draw","xmlns:calcext":"urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0","xmlns:loext":"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0","xmlns:field":"urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0","xmlns:formx":"urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0","xmlns:css3t":"http://www.w3.org/TR/css3-text/","office:version":"1.2"}),u=Xi({"xmlns:config":"urn:oasis:names:tc:opendocument:xmlns:config:1.0","office:mimetype":"application/vnd.oasis.opendocument.spreadsheet"});o.bookType=="fods"?(c.push("<office:document"+f+u+`>
|
||
`),c.push(eh().replace(/office:document-meta/g,"office:meta"))):c.push("<office:document-content"+f+`>
|
||
`),a(c,s),c.push(` <office:body>
|
||
`),c.push(` <office:spreadsheet>
|
||
`);for(var d=0;d!=s.SheetNames.length;++d)c.push(n(s.Sheets[s.SheetNames[d]],s,d));return c.push(` </office:spreadsheet>
|
||
`),c.push(` </office:body>
|
||
`),o.bookType=="fods"?c.push("</office:document>"):c.push("</office:document-content>"),c.join("")}}();function Wm(e,t){if(t.bookType=="fods")return $m(e,t);var r=zl(),n="",a=[],i=[];return n="mimetype",He(r,n,"application/vnd.oasis.opendocument.spreadsheet"),n="content.xml",He(r,n,$m(e,t)),a.push([n,"text/xml"]),i.push([n,"ContentFile"]),n="styles.xml",He(r,n,KA(e,t)),a.push([n,"text/xml"]),i.push([n,"StylesFile"]),n="meta.xml",He(r,n,bt+eh()),a.push([n,"text/xml"]),i.push([n,"MetadataFile"]),n="manifest.rdf",He(r,n,by(i)),a.push([n,"application/rdf+xml"]),n="META-INF/manifest.xml",He(r,n,yy(a)),r}/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */function Da(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function Mc(e){return typeof TextDecoder<"u"?new TextDecoder().decode(e):nt(qn(e))}function YA(e){return typeof TextEncoder<"u"?new TextEncoder().encode(e):Sr(gn(e))}function qA(e,t){e:for(var r=0;r<=e.length-t.length;++r){for(var n=0;n<t.length;++n)if(e[r+n]!=t[n])continue e;return!0}return!1}function aa(e){var t=e.reduce(function(a,i){return a+i.length},0),r=new Uint8Array(t),n=0;return e.forEach(function(a){r.set(a,n),n+=a.length}),r}function Hm(e){return e-=e>>1&1431655765,e=(e&858993459)+(e>>2&858993459),(e+(e>>4)&252645135)*16843009>>>24}function JA(e,t){for(var r=(e[t+15]&127)<<7|e[t+14]>>1,n=e[t+14]&1,a=t+13;a>=t;--a)n=n*256+e[a];return(e[t+15]&128?-n:n)*Math.pow(10,r-6176)}function ZA(e,t,r){var n=Math.floor(r==0?0:Math.LOG10E*Math.log(Math.abs(r)))+6176-20,a=r/Math.pow(10,n-6176);e[t+15]|=n>>7,e[t+14]|=(n&127)<<1;for(var i=0;a>=1;++i,a/=256)e[t+i]=a&255;e[t+15]|=r>=0?0:128}function xs(e,t){var r=t?t[0]:0,n=e[r]&127;e:if(e[r++]>=128&&(n|=(e[r]&127)<<7,e[r++]<128||(n|=(e[r]&127)<<14,e[r++]<128)||(n|=(e[r]&127)<<21,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,28),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,35),++r,e[r++]<128)||(n+=(e[r]&127)*Math.pow(2,42),++r,e[r++]<128)))break e;return t&&(t[0]=r),n}function tt(e){var t=new Uint8Array(7);t[0]=e&127;var r=1;e:if(e>127){if(t[r-1]|=128,t[r]=e>>7&127,++r,e<=16383||(t[r-1]|=128,t[r]=e>>14&127,++r,e<=2097151)||(t[r-1]|=128,t[r]=e>>21&127,++r,e<=268435455)||(t[r-1]|=128,t[r]=e/256>>>21&127,++r,e<=34359738367)||(t[r-1]|=128,t[r]=e/65536>>>21&127,++r,e<=4398046511103))break e;t[r-1]|=128,t[r]=e/16777216>>>21&127,++r}return t.slice(0,r)}function kt(e){var t=0,r=e[t]&127;e:if(e[t++]>=128){if(r|=(e[t]&127)<<7,e[t++]<128||(r|=(e[t]&127)<<14,e[t++]<128)||(r|=(e[t]&127)<<21,e[t++]<128))break e;r|=(e[t]&127)<<28}return r}function qe(e){for(var t=[],r=[0];r[0]<e.length;){var n=r[0],a=xs(e,r),i=a&7;a=Math.floor(a/8);var s=0,o;if(a==0)break;switch(i){case 0:{for(var c=r[0];e[r[0]++]>=128;);o=e.slice(c,r[0])}break;case 5:s=4,o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 1:s=8,o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 2:s=xs(e,r),o=e.slice(r[0],r[0]+s),r[0]+=s;break;case 3:case 4:default:throw new Error("PB Type ".concat(i," for Field ").concat(a," at offset ").concat(n))}var f={data:o,type:i};t[a]==null?t[a]=[f]:t[a].push(f)}return t}function Xt(e){var t=[];return e.forEach(function(r,n){r.forEach(function(a){a.data&&(t.push(tt(n*8+a.type)),a.type==2&&t.push(tt(a.data.length)),t.push(a.data))})}),aa(t)}function Lc(e,t){return(e==null?void 0:e.map(function(r){return t(r.data)}))||[]}function $r(e){for(var t,r=[],n=[0];n[0]<e.length;){var a=xs(e,n),i=qe(e.slice(n[0],n[0]+a));n[0]+=a;var s={id:kt(i[1][0].data),messages:[]};i[2].forEach(function(o){var c=qe(o.data),f=kt(c[3][0].data);s.messages.push({meta:c,data:e.slice(n[0],n[0]+f)}),n[0]+=f}),(t=i[3])!=null&&t[0]&&(s.merge=kt(i[3][0].data)>>>0>0),r.push(s)}return r}function li(e){var t=[];return e.forEach(function(r){var n=[];n[1]=[{data:tt(r.id),type:0}],n[2]=[],r.merge!=null&&(n[3]=[{data:tt(+!!r.merge),type:0}]);var a=[];r.messages.forEach(function(s){a.push(s.data),s.meta[3]=[{type:0,data:tt(s.data.length)}],n[2].push({data:Xt(s.meta),type:2})});var i=Xt(n);t.push(tt(i.length)),t.push(i),a.forEach(function(s){return t.push(s)})}),aa(t)}function QA(e,t){if(e!=0)throw new Error("Unexpected Snappy chunk type ".concat(e));for(var r=[0],n=xs(t,r),a=[];r[0]<t.length;){var i=t[r[0]]&3;if(i==0){var s=t[r[0]++]>>2;if(s<60)++s;else{var o=s-59;s=t[r[0]],o>1&&(s|=t[r[0]+1]<<8),o>2&&(s|=t[r[0]+2]<<16),o>3&&(s|=t[r[0]+3]<<24),s>>>=0,s++,r[0]+=o}a.push(t.slice(r[0],r[0]+s)),r[0]+=s;continue}else{var c=0,f=0;if(i==1?(f=(t[r[0]]>>2&7)+4,c=(t[r[0]++]&224)<<3,c|=t[r[0]++]):(f=(t[r[0]++]>>2)+1,i==2?(c=t[r[0]]|t[r[0]+1]<<8,r[0]+=2):(c=(t[r[0]]|t[r[0]+1]<<8|t[r[0]+2]<<16|t[r[0]+3]<<24)>>>0,r[0]+=4)),a=[aa(a)],c==0)throw new Error("Invalid offset 0");if(c>a[0].length)throw new Error("Invalid offset beyond length");if(f>=c)for(a.push(a[0].slice(-c)),f-=c;f>=a[a.length-1].length;)a.push(a[a.length-1]),f-=a[a.length-1].length;a.push(a[0].slice(-c,-c+f))}}var u=aa(a);if(u.length!=n)throw new Error("Unexpected length: ".concat(u.length," != ").concat(n));return u}function Wr(e){for(var t=[],r=0;r<e.length;){var n=e[r++],a=e[r]|e[r+1]<<8|e[r+2]<<16;r+=3,t.push(QA(n,e.slice(r,r+a))),r+=a}if(r!==e.length)throw new Error("data is not a valid framed stream!");return aa(t)}function ci(e){for(var t=[],r=0;r<e.length;){var n=Math.min(e.length-r,268435455),a=new Uint8Array(4);t.push(a);var i=tt(n),s=i.length;t.push(i),n<=60?(s++,t.push(new Uint8Array([n-1<<2]))):n<=256?(s+=2,t.push(new Uint8Array([240,n-1&255]))):n<=65536?(s+=3,t.push(new Uint8Array([244,n-1&255,n-1>>8&255]))):n<=16777216?(s+=4,t.push(new Uint8Array([248,n-1&255,n-1>>8&255,n-1>>16&255]))):n<=4294967296&&(s+=5,t.push(new Uint8Array([252,n-1&255,n-1>>8&255,n-1>>16&255,n-1>>>24&255]))),t.push(e.slice(r,r+n)),s+=n,a[0]=0,a[1]=s&255,a[2]=s>>8&255,a[3]=s>>16&255,r+=n}return aa(t)}function e3(e,t,r,n){var a=Da(e),i=a.getUint32(4,!0),s=(n>1?12:8)+Hm(i&(n>1?3470:398))*4,o=-1,c=-1,f=NaN,u=new Date(2001,0,1);i&512&&(o=a.getUint32(s,!0),s+=4),s+=Hm(i&(n>1?12288:4096))*4,i&16&&(c=a.getUint32(s,!0),s+=4),i&32&&(f=a.getFloat64(s,!0),s+=8),i&64&&(u.setTime(u.getTime()+a.getFloat64(s,!0)*1e3),s+=8);var d;switch(e[2]){case 0:break;case 2:d={t:"n",v:f};break;case 3:d={t:"s",v:t[c]};break;case 5:d={t:"d",v:u};break;case 6:d={t:"b",v:f>0};break;case 7:d={t:"n",v:f/86400};break;case 8:d={t:"e",v:0};break;case 9:if(o>-1)d={t:"s",v:r[o]};else if(c>-1)d={t:"s",v:t[c]};else if(!isNaN(f))d={t:"n",v:f};else throw new Error("Unsupported cell type ".concat(e.slice(0,4)));break;default:throw new Error("Unsupported cell type ".concat(e.slice(0,4)))}return d}function t3(e,t,r){var n=Da(e),a=n.getUint32(8,!0),i=12,s=-1,o=-1,c=NaN,f=NaN,u=new Date(2001,0,1);a&1&&(c=JA(e,i),i+=16),a&2&&(f=n.getFloat64(i,!0),i+=8),a&4&&(u.setTime(u.getTime()+n.getFloat64(i,!0)*1e3),i+=8),a&8&&(o=n.getUint32(i,!0),i+=4),a&16&&(s=n.getUint32(i,!0),i+=4);var d;switch(e[1]){case 0:break;case 2:d={t:"n",v:c};break;case 3:d={t:"s",v:t[o]};break;case 5:d={t:"d",v:u};break;case 6:d={t:"b",v:f>0};break;case 7:d={t:"n",v:f/86400};break;case 8:d={t:"e",v:0};break;case 9:if(s>-1)d={t:"s",v:r[s]};else throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)));break;case 10:d={t:"n",v:c};break;default:throw new Error("Unsupported cell type ".concat(e[1]," : ").concat(a&31," : ").concat(e.slice(0,4)))}return d}function Vc(e,t){var r=new Uint8Array(32),n=Da(r),a=12,i=0;switch(r[0]=5,e.t){case"n":r[1]=2,ZA(r,a,e.v),i|=1,a+=16;break;case"b":r[1]=6,n.setFloat64(a,e.v?1:0,!0),i|=2,a+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[1]=3,n.setUint32(a,t.indexOf(e.v),!0),i|=8,a+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(8,i,!0),r.slice(0,a)}function Uc(e,t){var r=new Uint8Array(32),n=Da(r),a=12,i=0;switch(r[0]=3,e.t){case"n":r[2]=2,n.setFloat64(a,e.v,!0),i|=32,a+=8;break;case"b":r[2]=6,n.setFloat64(a,e.v?1:0,!0),i|=32,a+=8;break;case"s":if(t.indexOf(e.v)==-1)throw new Error("Value ".concat(e.v," missing from SST!"));r[2]=3,n.setUint32(a,t.indexOf(e.v),!0),i|=16,a+=4;break;default:throw"unsupported cell type "+e.t}return n.setUint32(4,i,!0),r.slice(0,a)}function r3(e,t,r){switch(e[0]){case 0:case 1:case 2:case 3:return e3(e,t,r,e[0]);case 5:return t3(e,t,r);default:throw new Error("Unsupported payload version ".concat(e[0]))}}function nr(e){var t=qe(e);return xs(t[1][0].data)}function jm(e,t){var r=qe(t.data),n=kt(r[1][0].data),a=r[3],i=[];return(a||[]).forEach(function(s){var o=qe(s.data),c=kt(o[1][0].data)>>>0;switch(n){case 1:i[c]=Mc(o[3][0].data);break;case 8:{var f=e[nr(o[9][0].data)][0],u=qe(f.data),d=e[nr(u[1][0].data)][0],h=kt(d.meta[1][0].data);if(h!=2001)throw new Error("2000 unexpected reference to ".concat(h));var m=qe(d.data);i[c]=m[3].map(function(g){return Mc(g.data)}).join("")}break}}),i}function n3(e,t){var r,n,a,i,s,o,c,f,u,d,h,m,g,p,x=qe(e),v=kt(x[1][0].data)>>>0,y=kt(x[2][0].data)>>>0,w=((n=(r=x[8])==null?void 0:r[0])==null?void 0:n.data)&&kt(x[8][0].data)>0||!1,E,R;if((i=(a=x[7])==null?void 0:a[0])!=null&&i.data&&t!=0)E=(o=(s=x[7])==null?void 0:s[0])==null?void 0:o.data,R=(f=(c=x[6])==null?void 0:c[0])==null?void 0:f.data;else if((d=(u=x[4])==null?void 0:u[0])!=null&&d.data&&t!=1)E=(m=(h=x[4])==null?void 0:h[0])==null?void 0:m.data,R=(p=(g=x[3])==null?void 0:g[0])==null?void 0:p.data;else throw"NUMBERS Tile missing ".concat(t," cell storage");for(var F=w?4:1,C=Da(E),U=[],S=0;S<E.length/2;++S){var W=C.getUint16(S*2,!0);W<65535&&U.push([S,W])}if(U.length!=y)throw"Expected ".concat(y," cells, found ").concat(U.length);var z=[];for(S=0;S<U.length-1;++S)z[U[S][0]]=R.subarray(U[S][1]*F,U[S+1][1]*F);return U.length>=1&&(z[U[U.length-1][0]]=R.subarray(U[U.length-1][1]*F)),{R:v,cells:z}}function a3(e,t){var r,n=qe(t.data),a=(r=n==null?void 0:n[7])!=null&&r[0]?kt(n[7][0].data)>>>0>0?1:0:-1,i=Lc(n[5],function(s){return n3(s,a)});return{nrows:kt(n[4][0].data)>>>0,data:i.reduce(function(s,o){return s[o.R]||(s[o.R]=[]),o.cells.forEach(function(c,f){if(s[o.R][f])throw new Error("Duplicate cell r=".concat(o.R," c=").concat(f));s[o.R][f]=c}),s},[])}}function i3(e,t,r){var n,a=qe(t.data),i={s:{r:0,c:0},e:{r:0,c:0}};if(i.e.r=(kt(a[6][0].data)>>>0)-1,i.e.r<0)throw new Error("Invalid row varint ".concat(a[6][0].data));if(i.e.c=(kt(a[7][0].data)>>>0)-1,i.e.c<0)throw new Error("Invalid col varint ".concat(a[7][0].data));r["!ref"]=We(i);var s=qe(a[4][0].data),o=jm(e,e[nr(s[4][0].data)][0]),c=(n=s[17])!=null&&n[0]?jm(e,e[nr(s[17][0].data)][0]):[],f=qe(s[3][0].data),u=0;f[1].forEach(function(d){var h=qe(d.data),m=e[nr(h[2][0].data)][0],g=kt(m.meta[1][0].data);if(g!=6002)throw new Error("6001 unexpected reference to ".concat(g));var p=a3(e,m);p.data.forEach(function(x,v){x.forEach(function(y,w){var E=Ne({r:u+v,c:w}),R=r3(y,o,c);R&&(r[E]=R)})}),u+=p.nrows})}function s3(e,t){var r=qe(t.data),n={"!ref":"A1"},a=e[nr(r[2][0].data)],i=kt(a[0].meta[1][0].data);if(i!=6001)throw new Error("6000 unexpected reference to ".concat(i));return i3(e,a[0],n),n}function o3(e,t){var r,n=qe(t.data),a={name:(r=n[1])!=null&&r[0]?Mc(n[1][0].data):"",sheets:[]},i=Lc(n[2],nr);return i.forEach(function(s){e[s].forEach(function(o){var c=kt(o.meta[1][0].data);c==6e3&&a.sheets.push(s3(e,o))})}),a}function l3(e,t){var r=Kc(),n=qe(t.data),a=Lc(n[1],nr);if(a.forEach(function(i){e[i].forEach(function(s){var o=kt(s.meta[1][0].data);if(o==2){var c=o3(e,s);c.sheets.forEach(function(f,u){Yc(r,f,u==0?c.name:c.name+"_"+u,!0)})}})}),r.SheetNames.length==0)throw new Error("Empty NUMBERS file");return r}function $c(e){var t,r,n,a,i={},s=[];if(e.FullPaths.forEach(function(c){if(c.match(/\.iwpv2/))throw new Error("Unsupported password protection")}),e.FileIndex.forEach(function(c){if(c.name.match(/\.iwa$/)){var f;try{f=Wr(c.content)}catch(d){return console.log("?? "+c.content.length+" "+(d.message||d))}var u;try{u=$r(f)}catch(d){return console.log("## "+(d.message||d))}u.forEach(function(d){i[d.id]=d.messages,s.push(d.id)})}}),!s.length)throw new Error("File has no messages");var o=((a=(n=(r=(t=i==null?void 0:i[1])==null?void 0:t[0])==null?void 0:r.meta)==null?void 0:n[1])==null?void 0:a[0].data)&&kt(i[1][0].meta[1][0].data)==1&&i[1][0];if(o||s.forEach(function(c){i[c].forEach(function(f){var u=kt(f.meta[1][0].data)>>>0;if(u==1)if(!o)o=f;else throw new Error("Document has multiple roots")})}),!o)throw new Error("Cannot find Document root");return l3(i,o)}function c3(e,t,r){var n,a,i,s;if(!((n=e[6])!=null&&n[0])||!((a=e[7])!=null&&a[0]))throw"Mutation only works on post-BNC storages!";var o=((s=(i=e[8])==null?void 0:i[0])==null?void 0:s.data)&&kt(e[8][0].data)>0||!1;if(o)throw"Math only works with normal offsets";for(var c=0,f=Da(e[7][0].data),u=0,d=[],h=Da(e[4][0].data),m=0,g=[],p=0;p<t.length;++p){if(t[p]==null){f.setUint16(p*2,65535,!0),h.setUint16(p*2,65535);continue}f.setUint16(p*2,u,!0),h.setUint16(p*2,m,!0);var x,v;switch(typeof t[p]){case"string":x=Vc({t:"s",v:t[p]},r),v=Uc({t:"s",v:t[p]},r);break;case"number":x=Vc({t:"n",v:t[p]},r),v=Uc({t:"n",v:t[p]},r);break;case"boolean":x=Vc({t:"b",v:t[p]},r),v=Uc({t:"b",v:t[p]},r);break;default:throw new Error("Unsupported value "+t[p])}d.push(x),u+=x.length,g.push(v),m+=v.length,++c}for(e[2][0].data=tt(c);p<e[7][0].data.length/2;++p)f.setUint16(p*2,65535,!0),h.setUint16(p*2,65535,!0);return e[6][0].data=aa(d),e[3][0].data=aa(g),c}function f3(e,t){if(!t||!t.numbers)throw new Error("Must pass a `numbers` option -- check the README");var r=e.Sheets[e.SheetNames[0]];e.SheetNames.length>1&&console.error("The Numbers writer currently writes only the first table");var n=xr(r["!ref"]);n.s.r=n.s.c=0;var a=!1;n.e.c>9&&(a=!0,n.e.c=9),n.e.r>49&&(a=!0,n.e.r=49),a&&console.error("The Numbers writer is currently limited to ".concat(We(n)));var i=Io(r,{range:n,header:1}),s=["~Sh33tJ5~"];i.forEach(function(k){return k.forEach(function(b){typeof b=="string"&&s.push(b)})});var o={},c=[],f=Fe.read(t.numbers,{type:"base64"});f.FileIndex.map(function(k,b){return[k,f.FullPaths[b]]}).forEach(function(k){var b=k[0],A=k[1];if(b.type==2&&b.name.match(/\.iwa/)){var G=b.content,re=Wr(G),ee=$r(re);ee.forEach(function(te){c.push(te.id),o[te.id]={deps:[],location:A,type:kt(te.messages[0].meta[1][0].data)}})}}),c.sort(function(k,b){return k-b});var u=c.filter(function(k){return k>1}).map(function(k){return[k,tt(k)]});f.FileIndex.map(function(k,b){return[k,f.FullPaths[b]]}).forEach(function(k){var b=k[0];if(k[1],!!b.name.match(/\.iwa/)){var A=$r(Wr(b.content));A.forEach(function(G){G.messages.forEach(function(re){u.forEach(function(ee){G.messages.some(function(te){return kt(te.meta[1][0].data)!=11006&&qA(te.data,ee[1])})&&o[ee[0]].deps.push(G.id)})})})}});for(var d=Fe.find(f,o[1].location),h=$r(Wr(d.content)),m,g=0;g<h.length;++g){var p=h[g];p.id==1&&(m=p)}var x=nr(qe(m.messages[0].data)[1][0].data);for(d=Fe.find(f,o[x].location),h=$r(Wr(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);for(x=nr(qe(m.messages[0].data)[2][0].data),d=Fe.find(f,o[x].location),h=$r(Wr(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);for(x=nr(qe(m.messages[0].data)[2][0].data),d=Fe.find(f,o[x].location),h=$r(Wr(d.content)),g=0;g<h.length;++g)p=h[g],p.id==x&&(m=p);var v=qe(m.messages[0].data);{v[6][0].data=tt(n.e.r+1),v[7][0].data=tt(n.e.c+1);var y=nr(v[46][0].data),w=Fe.find(f,o[y].location),E=$r(Wr(w.content));{for(var R=0;R<E.length&&E[R].id!=y;++R);if(E[R].id!=y)throw"Bad ColumnRowUIDMapArchive";var F=qe(E[R].messages[0].data);F[1]=[],F[2]=[],F[3]=[];for(var C=0;C<=n.e.c;++C){var U=[];U[1]=U[2]=[{type:0,data:tt(C+420690)}],F[1].push({type:2,data:Xt(U)}),F[2].push({type:0,data:tt(C)}),F[3].push({type:0,data:tt(C)})}F[4]=[],F[5]=[],F[6]=[];for(var S=0;S<=n.e.r;++S)U=[],U[1]=U[2]=[{type:0,data:tt(S+726270)}],F[4].push({type:2,data:Xt(U)}),F[5].push({type:0,data:tt(S)}),F[6].push({type:0,data:tt(S)});E[R].messages[0].data=Xt(F)}w.content=ci(li(E)),w.size=w.content.length,delete v[46];var W=qe(v[4][0].data);{W[7][0].data=tt(n.e.r+1);var z=qe(W[1][0].data),V=nr(z[2][0].data);w=Fe.find(f,o[V].location),E=$r(Wr(w.content));{if(E[0].id!=V)throw"Bad HeaderStorageBucket";var j=qe(E[0].messages[0].data);for(S=0;S<i.length;++S){var H=qe(j[2][0].data);H[1][0].data=tt(S),H[4][0].data=tt(i[S].length),j[2][S]={type:j[2][0].type,data:Xt(H)}}E[0].messages[0].data=Xt(j)}w.content=ci(li(E)),w.size=w.content.length;var Y=nr(W[2][0].data);w=Fe.find(f,o[Y].location),E=$r(Wr(w.content));{if(E[0].id!=Y)throw"Bad HeaderStorageBucket";for(j=qe(E[0].messages[0].data),C=0;C<=n.e.c;++C)H=qe(j[2][0].data),H[1][0].data=tt(C),H[4][0].data=tt(n.e.r+1),j[2][C]={type:j[2][0].type,data:Xt(H)};E[0].messages[0].data=Xt(j)}w.content=ci(li(E)),w.size=w.content.length;var ae=nr(W[4][0].data);(function(){for(var k=Fe.find(f,o[ae].location),b=$r(Wr(k.content)),A,G=0;G<b.length;++G){var re=b[G];re.id==ae&&(A=re)}var ee=qe(A.messages[0].data);{ee[3]=[];var te=[];s.forEach(function(I,fe){te[1]=[{type:0,data:tt(fe)}],te[2]=[{type:0,data:tt(1)}],te[3]=[{type:2,data:YA(I)}],ee[3].push({type:2,data:Xt(te)})})}A.messages[0].data=Xt(ee);var ne=li(b),Ce=ci(ne);k.content=Ce,k.size=k.content.length})();var se=qe(W[3][0].data);{var de=se[1][0];delete se[2];var K=qe(de.data);{var we=nr(K[2][0].data);(function(){for(var k=Fe.find(f,o[we].location),b=$r(Wr(k.content)),A,G=0;G<b.length;++G){var re=b[G];re.id==we&&(A=re)}var ee=qe(A.messages[0].data);{delete ee[6],delete se[7];var te=new Uint8Array(ee[5][0].data);ee[5]=[];for(var ne=0,Ce=0;Ce<=n.e.r;++Ce){var I=qe(te);ne+=c3(I,i[Ce],s),I[1][0].data=tt(Ce),ee[5].push({data:Xt(I),type:2})}ee[1]=[{type:0,data:tt(n.e.c+1)}],ee[2]=[{type:0,data:tt(n.e.r+1)}],ee[3]=[{type:0,data:tt(ne)}],ee[4]=[{type:0,data:tt(n.e.r+1)}]}A.messages[0].data=Xt(ee);var fe=li(b),ye=ci(fe);k.content=ye,k.size=k.content.length})()}de.data=Xt(K)}W[3][0].data=Xt(se)}v[4][0].data=Xt(W)}m.messages[0].data=Xt(v);var D=li(h),_=ci(D);return d.content=_,d.size=d.content.length,f}function zm(e){return function(r){for(var n=0;n!=e.length;++n){var a=e[n];r[a[0]]===void 0&&(r[a[0]]=a[1]),a[2]==="n"&&(r[a[0]]=Number(r[a[0]]))}}}function Wc(e){zm([["cellNF",!1],["cellHTML",!0],["cellFormula",!0],["cellStyles",!1],["cellText",!0],["cellDates",!1],["sheetStubs",!1],["sheetRows",0,"n"],["bookDeps",!1],["bookSheets",!1],["bookProps",!1],["bookFiles",!1],["bookVBA",!1],["password",""],["WTF",!1]])(e)}function Hc(e){zm([["cellDates",!1],["bookSST",!1],["bookType","xlsx"],["compression",!1],["WTF",!1]])(e)}function u3(e){return ze.WS.indexOf(e)>-1?"sheet":e==ze.CS?"chart":e==ze.DS?"dialog":e==ze.MS?"macro":e&&e.length?e:"sheet"}function d3(e,t){if(!e)return 0;try{e=t.map(function(n){return n.id||(n.id=n.strRelID),[n.name,e["!id"][n.id].Target,u3(e["!id"][n.id].Type)]})}catch{return null}return!e||e.length===0?null:e}function h3(e,t,r,n,a,i,s,o,c,f,u,d){try{i[n]=es(Tr(e,r,!0),t);var h=Tt(e,t),m;switch(o){case"sheet":m=I4(h,t,a,c,i[n],f,u,d);break;case"chart":if(m=P4(h,t,a,c,i[n],f,u,d),!m||!m["!drawel"])break;var g=zi(m["!drawel"].Target,t),p=Qi(g),x=kS(Tr(e,g,!0),es(Tr(e,p,!0),g)),v=zi(x,g),y=Qi(v);m=c4(Tr(e,v,!0),v,c,es(Tr(e,y,!0),v),f,m);break;case"macro":m=M4(h,t,a,c,i[n],f,u,d);break;case"dialog":m=L4(h,t,a,c,i[n],f,u,d);break;default:throw new Error("Unrecognized sheet type "+o)}s[n]=m;var w=[];i&&i[n]&&_t(i[n]).forEach(function(E){var R="";if(i[n][E].Type==ze.CMNT){R=zi(i[n][E].Target,t);var F=W4(Tt(e,R,!0),R,c);if(!F||!F.length)return;tm(m,F,!1)}i[n][E].Type==ze.TCMNT&&(R=zi(i[n][E].Target,t),w=w.concat(ES(Tt(e,R,!0),c)))}),w&&w.length&&tm(m,w,!0,c.people||[])}catch(E){if(c.WTF)throw E}}function Hr(e){return e.charAt(0)=="/"?e.slice(1):e}function m3(e,t){if(Ja(),t=t||{},Wc(t),Mr(e,"META-INF/manifest.xml")||Mr(e,"objectdata.xml"))return Vm(e,t);if(Mr(e,"Index/Document.iwa")){if(typeof Uint8Array>"u")throw new Error("NUMBERS file parsing requires Uint8Array support");if(typeof $c<"u"){if(e.FileIndex)return $c(e);var r=Fe.utils.cfb_new();return ud(e).forEach(function(H){He(r,H,fd(e,H))}),$c(r)}throw new Error("Unsupported NUMBERS file")}if(!Mr(e,"[Content_Types].xml"))throw Mr(e,"index.xml.gz")?new Error("Unsupported NUMBERS 08 file"):Mr(e,"index.xml")?new Error("Unsupported NUMBERS 09 file"):new Error("Unsupported ZIP file");var n=ud(e),a=vy(Tr(e,"[Content_Types].xml")),i=!1,s,o;if(a.workbooks.length===0&&(o="xl/workbook.xml",Tt(e,o,!0)&&a.workbooks.push(o)),a.workbooks.length===0){if(o="xl/workbook.bin",!Tt(e,o,!0))throw new Error("Could not find workbook");a.workbooks.push(o),i=!0}a.workbooks[0].slice(-3)=="bin"&&(i=!0);var c={},f={};if(!t.bookSheets&&!t.bookProps){if(us=[],a.sst)try{us=$4(Tt(e,Hr(a.sst)),a.sst,t)}catch(H){if(t.WTF)throw H}t.cellStyles&&a.themes.length&&(c=U4(Tr(e,a.themes[0].replace(/^\//,""),!0)||"",a.themes[0],t)),a.style&&(f=V4(Tt(e,Hr(a.style)),a.style,c,t))}a.links.map(function(H){try{var Y=es(Tr(e,Qi(Hr(H))),H);return j4(Tt(e,Hr(H)),Y,H,t)}catch{}});var u=N4(Tt(e,Hr(a.workbooks[0])),a.workbooks[0],t),d={},h="";a.coreprops.length&&(h=Tt(e,Hr(a.coreprops[0]),!0),h&&(d=th(h)),a.extprops.length!==0&&(h=Tt(e,Hr(a.extprops[0]),!0),h&&Sy(h,d,t)));var m={};(!t.bookSheets||t.bookProps)&&a.custprops.length!==0&&(h=Tr(e,Hr(a.custprops[0]),!0),h&&(m=Ty(h,t)));var g={};if((t.bookSheets||t.bookProps)&&(u.Sheets?s=u.Sheets.map(function(Y){return Y.name}):d.Worksheets&&d.SheetNames.length>0&&(s=d.SheetNames),t.bookProps&&(g.Props=d,g.Custprops=m),t.bookSheets&&typeof s<"u"&&(g.SheetNames=s),t.bookSheets?g.SheetNames:t.bookProps))return g;s={};var p={};t.bookDeps&&a.calcchain&&(p=H4(Tt(e,Hr(a.calcchain)),a.calcchain));var x=0,v={},y,w;{var E=u.Sheets;d.Worksheets=E.length,d.SheetNames=[];for(var R=0;R!=E.length;++R)d.SheetNames[R]=E[R].name}var F=i?"bin":"xml",C=a.workbooks[0].lastIndexOf("/"),U=(a.workbooks[0].slice(0,C+1)+"_rels/"+a.workbooks[0].slice(C+1)+".rels").replace(/^\//,"");Mr(e,U)||(U="xl/_rels/workbook."+F+".rels");var S=es(Tr(e,U,!0),U.replace(/_rels.*/,"s5s"));(a.metadata||[]).length>=1&&(t.xlmeta=z4(Tt(e,Hr(a.metadata[0])),a.metadata[0],t)),(a.people||[]).length>=1&&(t.people=CS(Tt(e,Hr(a.people[0])),t)),S&&(S=d3(S,u.Sheets));var W=Tt(e,"xl/worksheets/sheet.xml",!0)?1:0;e:for(x=0;x!=d.Worksheets;++x){var z="sheet";if(S&&S[x]?(y="xl/"+S[x][1].replace(/[\/]?xl\//,""),Mr(e,y)||(y=S[x][1]),Mr(e,y)||(y=U.replace(/_rels\/.*$/,"")+S[x][1]),z=S[x][2]):(y="xl/worksheets/sheet"+(x+1-W)+"."+F,y=y.replace(/sheet0\./,"sheet.")),w=y.replace(/^(.*)(\/)([^\/]*)$/,"$1/_rels/$3.rels"),t&&t.sheets!=null)switch(typeof t.sheets){case"number":if(x!=t.sheets)continue e;break;case"string":if(d.SheetNames[x].toLowerCase()!=t.sheets.toLowerCase())continue e;break;default:if(Array.isArray&&Array.isArray(t.sheets)){for(var V=!1,j=0;j!=t.sheets.length;++j)typeof t.sheets[j]=="number"&&t.sheets[j]==x&&(V=1),typeof t.sheets[j]=="string"&&t.sheets[j].toLowerCase()==d.SheetNames[x].toLowerCase()&&(V=1);if(!V)continue e}}h3(e,y,w,d.SheetNames[x],x,v,s,z,t,u,c,f)}return g={Directory:a,Workbook:u,Props:d,Custprops:m,Deps:p,Sheets:s,SheetNames:d.SheetNames,Strings:us,Styles:f,Themes:c,SSF:lt(Re)},t&&t.bookFiles&&(e.files?(g.keys=n,g.files=e.files):(g.keys=[],g.files={},e.FullPaths.forEach(function(H,Y){H=H.replace(/^Root Entry[\/]/,""),g.keys.push(H),g.files[H]=e.FileIndex[Y]}))),t&&t.bookVBA&&(a.vba.length>0?g.vbaraw=Tt(e,Hr(a.vba[0]),!0):a.defaults&&a.defaults.bin===NS&&(g.vbaraw=Tt(e,"xl/vbaProject.bin",!0))),g}function p3(e,t){var r=t||{},n="Workbook",a=Fe.find(e,n);try{if(n="/!DataSpaces/Version",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(zb(a.content),n="/!DataSpaces/DataSpaceMap",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var i=Xb(a.content);if(i.length!==1||i[0].comps.length!==1||i[0].comps[0].t!==0||i[0].name!=="StrongEncryptionDataSpace"||i[0].comps[0].v!=="EncryptedPackage")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var s=Kb(a.content);if(s.length!=1||s[0]!="StrongEncryptionTransform")throw new Error("ECMA-376 Encrypted file bad "+n);if(n="/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);qb(a.content)}catch{}if(n="/EncryptionInfo",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);var o=Jb(a.content);if(n="/EncryptedPackage",a=Fe.find(e,n),!a||!a.content)throw new Error("ECMA-376 Encrypted file missing "+n);if(o[0]==4&&typeof decrypt_agile<"u")return decrypt_agile(o[1],a.content,r.password||"",r);if(o[0]==2&&typeof decrypt_std76<"u")return decrypt_std76(o[1],a.content,r.password||"",r);throw new Error("File is password-protected")}function g3(e,t){return t.bookType=="ods"?Wm(e,t):t.bookType=="numbers"?f3(e,t):t.bookType=="xlsb"?x3(e,t):v3(e,t)}function x3(e,t){ii=1024,e&&!e.SSF&&(e.SSF=lt(Re)),e&&e.SSF&&(Ja(),Hi(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,ds?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r=t.bookType=="xlsb"?"bin":"xml",n=nm.indexOf(t.bookType)>-1,a=dc();Hc(t=t||{});var i=zl(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,rh(e.Props,t)),a.coreprops.push(s),et(t.rels,2,s,ze.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],f=0;f<e.SheetNames.length;++f)(e.Workbook.Sheets[f]||{}).Hidden!=2&&c.push(e.SheetNames[f]);e.Props.SheetNames=c}for(e.Props.Worksheets=e.Props.SheetNames.length,He(i,s,ih(e.Props)),a.extprops.push(s),et(t.rels,3,s,ze.EXT_PROPS),e.Custprops!==e.Props&&_t(e.Custprops||{}).length>0&&(s="docProps/custom.xml",He(i,s,sh(e.Custprops)),a.custprops.push(s),et(t.rels,4,s,ze.CUST_PROPS)),o=1;o<=e.SheetNames.length;++o){var u={"!id":{}},d=e.Sheets[e.SheetNames[o-1]],h=(d||{})["!type"]||"sheet";switch(h){case"chart":default:s="xl/worksheets/sheet"+o+"."+r,He(i,s,X4(o-1,s,t,e,u)),a.sheets.push(s),et(t.wbrels,-1,"worksheets/sheet"+o+"."+r,ze.WS[0])}if(d){var m=d["!comments"],g=!1,p="";m&&m.length>0&&(p="xl/comments"+o+"."+r,He(i,p,q4(m,p)),a.comments.push(p),et(u,-1,"../comments"+o+"."+r,ze.CMNT),g=!0),d["!legacy"]&&g&&He(i,"xl/drawings/vmlDrawing"+o+".vml",em(o,d["!comments"])),delete d["!comments"],delete d["!legacy"]}u["!id"].rId1&&He(i,Qi(s),ri(u))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,He(i,s,Y4(t.Strings,s,t)),a.strs.push(s),et(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,G4(e,s)),a.workbooks.push(s),et(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Sc(e.Themes,t)),a.themes.push(s),et(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,K4(e,s,t)),a.styles.push(s),et(t.wbrels,-1,"styles."+r,ze.STY),e.vbaraw&&n&&(s="xl/vbaProject.bin",He(i,s,e.vbaraw),a.vba.push(s),et(t.wbrels,-1,"vbaProject.bin",ze.VBA)),s="xl/metadata."+r,He(i,s,J4(s)),a.metadata.push(s),et(t.wbrels,-1,"metadata."+r,ze.XLMETA),He(i,"[Content_Types].xml",Zd(a,t)),He(i,"_rels/.rels",ri(t.rels)),He(i,"xl/_rels/workbook."+r+".rels",ri(t.wbrels)),delete t.revssf,delete t.ssf,i}function v3(e,t){ii=1024,e&&!e.SSF&&(e.SSF=lt(Re)),e&&e.SSF&&(Ja(),Hi(e.SSF),t.revssf=fo(e.SSF),t.revssf[e.SSF[65535]]=0,t.ssf=e.SSF),t.rels={},t.wbrels={},t.Strings=[],t.Strings.Count=0,t.Strings.Unique=0,ds?t.revStrings=new Map:(t.revStrings={},t.revStrings.foo=[],delete t.revStrings.foo);var r="xml",n=nm.indexOf(t.bookType)>-1,a=dc();Hc(t=t||{});var i=zl(),s="",o=0;if(t.cellXfs=[],na(t.cellXfs,{},{revssf:{General:0}}),e.Props||(e.Props={}),s="docProps/core.xml",He(i,s,rh(e.Props,t)),a.coreprops.push(s),et(t.rels,2,s,ze.CORE_PROPS),s="docProps/app.xml",!(e.Props&&e.Props.SheetNames))if(!e.Workbook||!e.Workbook.Sheets)e.Props.SheetNames=e.SheetNames;else{for(var c=[],f=0;f<e.SheetNames.length;++f)(e.Workbook.Sheets[f]||{}).Hidden!=2&&c.push(e.SheetNames[f]);e.Props.SheetNames=c}e.Props.Worksheets=e.Props.SheetNames.length,He(i,s,ih(e.Props)),a.extprops.push(s),et(t.rels,3,s,ze.EXT_PROPS),e.Custprops!==e.Props&&_t(e.Custprops||{}).length>0&&(s="docProps/custom.xml",He(i,s,sh(e.Custprops)),a.custprops.push(s),et(t.rels,4,s,ze.CUST_PROPS));var u=["SheetJ5"];for(t.tcid=0,o=1;o<=e.SheetNames.length;++o){var d={"!id":{}},h=e.Sheets[e.SheetNames[o-1]],m=(h||{})["!type"]||"sheet";switch(m){case"chart":default:s="xl/worksheets/sheet"+o+"."+r,He(i,s,wm(o-1,t,e,d)),a.sheets.push(s),et(t.wbrels,-1,"worksheets/sheet"+o+"."+r,ze.WS[0])}if(h){var g=h["!comments"],p=!1,x="";if(g&&g.length>0){var v=!1;g.forEach(function(y){y[1].forEach(function(w){w.T==!0&&(v=!0)})}),v&&(x="xl/threadedComments/threadedComment"+o+"."+r,He(i,x,SS(g,u,t)),a.threadedcomments.push(x),et(d,-1,"../threadedComments/threadedComment"+o+"."+r,ze.TCMNT)),x="xl/comments"+o+"."+r,He(i,x,rm(g)),a.comments.push(x),et(d,-1,"../comments"+o+"."+r,ze.CMNT),p=!0}h["!legacy"]&&p&&He(i,"xl/drawings/vmlDrawing"+o+".vml",em(o,h["!comments"])),delete h["!comments"],delete h["!legacy"]}d["!id"].rId1&&He(i,Qi(s),ri(d))}return t.Strings!=null&&t.Strings.length>0&&(s="xl/sharedStrings."+r,He(i,s,$h(t.Strings,t)),a.strs.push(s),et(t.wbrels,-1,"sharedStrings."+r,ze.SST)),s="xl/workbook."+r,He(i,s,Cm(e)),a.workbooks.push(s),et(t.rels,1,s,ze.WB),s="xl/theme/theme1.xml",He(i,s,Sc(e.Themes,t)),a.themes.push(s),et(t.wbrels,-1,"theme/theme1.xml",ze.THEME),s="xl/styles."+r,He(i,s,Yh(e,t)),a.styles.push(s),et(t.wbrels,-1,"styles."+r,ze.STY),e.vbaraw&&n&&(s="xl/vbaProject.bin",He(i,s,e.vbaraw),a.vba.push(s),et(t.wbrels,-1,"vbaProject.bin",ze.VBA)),s="xl/metadata."+r,He(i,s,Qh()),a.metadata.push(s),et(t.wbrels,-1,"metadata."+r,ze.XLMETA),u.length>1&&(s="xl/persons/person.xml",He(i,s,TS(u)),a.people.push(s),et(t.wbrels,-1,"persons/person.xml",ze.PEOPLE)),He(i,"[Content_Types].xml",Zd(a,t)),He(i,"_rels/.rels",ri(t.rels)),He(i,"xl/_rels/workbook."+r+".rels",ri(t.wbrels)),delete t.revssf,delete t.ssf,i}function jc(e,t){var r="";switch((t||{}).type||"base64"){case"buffer":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];case"base64":r=Er(e.slice(0,12));break;case"binary":r=e;break;case"array":return[e[0],e[1],e[2],e[3],e[4],e[5],e[6],e[7]];default:throw new Error("Unrecognized type "+(t&&t.type||"undefined"))}return[r.charCodeAt(0),r.charCodeAt(1),r.charCodeAt(2),r.charCodeAt(3),r.charCodeAt(4),r.charCodeAt(5),r.charCodeAt(6),r.charCodeAt(7)]}function w3(e,t){return Fe.find(e,"EncryptedPackage")?p3(e,t):Dm(e,t)}function _3(e,t){var r,n=e,a=t||{};return a.type||(a.type=je&&Buffer.isBuffer(e)?"buffer":"base64"),r=dd(n,a),m3(r,a)}function Gm(e,t){var r=0;e:for(;r<e.length;)switch(e.charCodeAt(r)){case 10:case 13:case 32:++r;break;case 60:return Ic(e.slice(r),t);default:break e}return ni.to_workbook(e,t)}function y3(e,t){var r="",n=jc(e,t);switch(t.type){case"base64":r=Er(e);break;case"binary":r=e;break;case"buffer":r=e.toString("binary");break;case"array":r=pa(e);break;default:throw new Error("Unrecognized type "+t.type)}return n[0]==239&&n[1]==187&&n[2]==191&&(r=nt(r)),t.type="binary",Gm(r,t)}function k3(e,t){var r=e;return t.type=="base64"&&(r=Er(r)),r=Xn.utils.decode(1200,r.slice(2),"str"),t.type="binary",Gm(r,t)}function b3(e){return e.match(/[^\x00-\x7F]/)?gn(e):e}function zc(e,t,r,n){return n?(r.type="string",ni.to_workbook(e,r)):ni.to_workbook(t,r)}function Gc(e,t){Vl();var r=t||{};if(typeof ArrayBuffer<"u"&&e instanceof ArrayBuffer)return Gc(new Uint8Array(e),(r=lt(r),r.type="array",r));typeof Uint8Array<"u"&&e instanceof Uint8Array&&!r.type&&(r.type=typeof Deno<"u"?"buffer":"array");var n=e,a=[0,0,0,0],i=!1;if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),oi={},r.dateNF&&(oi.dateNF=r.dateNF),r.type||(r.type=je&&Buffer.isBuffer(e)?"buffer":"base64"),r.type=="file"&&(r.type=je?"buffer":"binary",n=v2(e),typeof Uint8Array<"u"&&!je&&(r.type="array")),r.type=="string"&&(i=!0,r.type="binary",r.codepage=65001,n=b3(e)),r.type=="array"&&typeof Uint8Array<"u"&&e instanceof Uint8Array&&typeof ArrayBuffer<"u"){var s=new ArrayBuffer(3),o=new Uint8Array(s);if(o.foo="bar",!o.foo)return r=lt(r),r.type="array",Gc(Ul(n),r)}switch((a=jc(n,r))[0]){case 208:if(a[1]===207&&a[2]===17&&a[3]===224&&a[4]===161&&a[5]===177&&a[6]===26&&a[7]===225)return w3(Fe.read(n,r),r);break;case 9:if(a[1]<=8)return Dm(n,r);break;case 60:return Ic(n,r);case 73:if(a[1]===73&&a[2]===42&&a[3]===0)throw new Error("TIFF Image File is not a spreadsheet");if(a[1]===68)return Fb(n,r);break;case 84:if(a[1]===65&&a[2]===66&&a[3]===76)return Vh.to_workbook(n,r);break;case 80:return a[1]===75&&a[2]<9&&a[3]<9?_3(n,r):zc(e,n,r,i);case 239:return a[3]===60?Ic(n,r):zc(e,n,r,i);case 255:if(a[1]===254)return k3(n,r);if(a[1]===0&&a[2]===2&&a[3]===0)return Fa.to_workbook(n,r);break;case 0:if(a[1]===0&&(a[2]>=2&&a[3]===0||a[2]===0&&(a[3]===8||a[3]===9)))return Fa.to_workbook(n,r);break;case 3:case 131:case 139:case 140:return wc.to_workbook(n,r);case 123:if(a[1]===92&&a[2]===114&&a[3]===116)return Gh.to_workbook(n,r);break;case 10:case 13:case 32:return y3(n,r);case 137:if(a[1]===80&&a[2]===78&&a[3]===71)throw new Error("PNG Image File is not a spreadsheet");break}return Tb.indexOf(a[0])>-1&&a[2]<=12&&a[3]<=31?wc.to_workbook(n,r):zc(e,n,r,i)}function Xm(e,t){switch(t.type){case"base64":case"binary":break;case"buffer":case"array":t.type="";break;case"file":return ji(t.file,Fe.write(e,{type:je?"buffer":""}));case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");default:throw new Error("Unrecognized type "+t.type)}return Fe.write(e,t)}function E3(e,t){var r=lt(t||{}),n=g3(e,r);return S3(n,r)}function S3(e,t){var r={},n=je?"nodebuffer":typeof Uint8Array<"u"?"array":"string";if(t.compression&&(r.compression="DEFLATE"),t.password)r.type=n;else switch(t.type){case"base64":r.type="base64";break;case"binary":r.type="string";break;case"string":throw new Error("'string' output type invalid for '"+t.bookType+"' files");case"buffer":case"file":r.type=n;break;default:throw new Error("Unrecognized type "+t.type)}var a=e.FullPaths?Fe.write(e,{fileType:"zip",type:{nodebuffer:"buffer",string:"binary"}[r.type]||r.type,compression:!!t.compression}):e.generate(r);if(typeof Deno<"u"&&typeof a=="string"){if(t.type=="binary"||t.type=="base64")return a;a=new Uint8Array(io(a))}return t.password&&typeof encrypt_agile<"u"?Xm(encrypt_agile(a,t.password),t):t.type==="file"?ji(t.file,a):t.type=="string"?nt(a):a}function C3(e,t){var r=t||{},n=bA(e,r);return Xm(n,r)}function wn(e,t,r){r||(r="");var n=r+e;switch(t.type){case"base64":return Ui(gn(n));case"binary":return gn(n);case"string":return e;case"file":return ji(t.file,n,"utf8");case"buffer":return je?Rn(n,"utf8"):typeof TextEncoder<"u"?new TextEncoder().encode(n):wn(n,{type:"binary"}).split("").map(function(a){return a.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function T3(e,t){switch(t.type){case"base64":return Ui(e);case"binary":return e;case"string":return e;case"file":return ji(t.file,e,"binary");case"buffer":return je?Rn(e,"binary"):e.split("").map(function(r){return r.charCodeAt(0)})}throw new Error("Unrecognized type "+t.type)}function No(e,t){switch(t.type){case"string":case"base64":case"binary":for(var r="",n=0;n<e.length;++n)r+=String.fromCharCode(e[n]);return t.type=="base64"?Ui(r):t.type=="string"?nt(r):r;case"file":return ji(t.file,e);case"buffer":return e;default:throw new Error("Unrecognized type "+t.type)}}function Km(e,t){Vl(),w4(e);var r=lt(t||{});if(r.cellStyles&&(r.cellNF=!0,r.sheetStubs=!0),r.type=="array"){r.type="binary";var n=Km(e,r);return r.type="array",io(n)}var a=0;if(r.sheet&&(typeof r.sheet=="number"?a=r.sheet:a=e.SheetNames.indexOf(r.sheet),!e.SheetNames[a]))throw new Error("Sheet not found: "+r.sheet+" : "+typeof r.sheet);switch(r.bookType||"xlsb"){case"xml":case"xlml":return wn(gA(e,r),r);case"slk":case"sylk":return wn(Lh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"htm":case"html":return wn(Bm(e.Sheets[e.SheetNames[a]],r),r);case"txt":return T3(qm(e.Sheets[e.SheetNames[a]],r),r);case"csv":return wn(Xc(e.Sheets[e.SheetNames[a]],r),r,"\uFEFF");case"dif":return wn(Vh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"dbf":return No(wc.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"prn":return wn(ni.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"rtf":return wn(Gh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"eth":return wn(Uh.from_sheet(e.Sheets[e.SheetNames[a]],r),r);case"fods":return wn(Wm(e,r),r);case"wk1":return No(Fa.sheet_to_wk1(e.Sheets[e.SheetNames[a]],r),r);case"wk3":return No(Fa.book_to_wk3(e,r),r);case"biff2":r.biff||(r.biff=2);case"biff3":r.biff||(r.biff=3);case"biff4":return r.biff||(r.biff=4),No(Rm(e,r),r);case"biff5":r.biff||(r.biff=5);case"biff8":case"xla":case"xls":return r.biff||(r.biff=8),C3(e,r);case"xlsx":case"xlsm":case"xlam":case"xlsb":case"numbers":case"ods":return E3(e,r);default:throw new Error("Unrecognized bookType |"+r.bookType+"|")}}function F3(e,t,r,n,a,i,s,o){var c=Et(r),f=o.defval,u=o.raw||!Object.prototype.hasOwnProperty.call(o,"raw"),d=!0,h=a===1?[]:{};if(a!==1)if(Object.defineProperty)try{Object.defineProperty(h,"__rowNum__",{value:r,enumerable:!1})}catch{h.__rowNum__=r}else h.__rowNum__=r;if(!s||e[r])for(var m=t.s.c;m<=t.e.c;++m){var g=s?e[r][m]:e[n[m]+c];if(g===void 0||g.t===void 0){if(f===void 0)continue;i[m]!=null&&(h[i[m]]=f);continue}var p=g.v;switch(g.t){case"z":if(p==null)break;continue;case"e":p=p==0?null:void 0;break;case"s":case"d":case"b":case"n":break;default:throw new Error("unrecognized type "+g.t)}if(i[m]!=null){if(p==null)if(g.t=="e"&&p===null)h[i[m]]=null;else if(f!==void 0)h[i[m]]=f;else if(u&&p===null)h[i[m]]=null;else continue;else h[i[m]]=u&&(g.t!=="n"||g.t==="n"&&o.rawNumbers!==!1)?p:In(g,p,o);p!=null&&(d=!1)}}return{row:h,isempty:d}}function Io(e,t){if(e==null||e["!ref"]==null)return[];var r={t:"n",v:0},n=0,a=1,i=[],s=0,o="",c={s:{r:0,c:0},e:{r:0,c:0}},f=t||{},u=f.range!=null?f.range:e["!ref"];switch(f.header===1?n=1:f.header==="A"?n=2:Array.isArray(f.header)?n=3:f.header==null&&(n=0),typeof u){case"string":c=Ye(u);break;case"number":c=Ye(e["!ref"]),c.s.r=u;break;default:c=u}n>0&&(a=0);var d=Et(c.s.r),h=[],m=[],g=0,p=0,x=Array.isArray(e),v=c.s.r,y=0,w={};x&&!e[v]&&(e[v]=[]);var E=f.skipHidden&&e["!cols"]||[],R=f.skipHidden&&e["!rows"]||[];for(y=c.s.c;y<=c.e.c;++y)if(!(E[y]||{}).hidden)switch(h[y]=mt(y),r=x?e[v][y]:e[h[y]+d],n){case 1:i[y]=y-c.s.c;break;case 2:i[y]=h[y];break;case 3:i[y]=f.header[y-c.s.c];break;default:if(r==null&&(r={w:"__EMPTY",t:"s"}),o=s=In(r,null,f),p=w[s]||0,!p)w[s]=1;else{do o=s+"_"+p++;while(w[o]);w[s]=p,w[o]=1}i[y]=o}for(v=c.s.r+a;v<=c.e.r;++v)if(!(R[v]||{}).hidden){var F=F3(e,c,v,h,n,i,x,f);(F.isempty===!1||(n===1?f.blankrows!==!1:f.blankrows))&&(m[g++]=F.row)}return m.length=g,m}var Ym=/"/g;function A3(e,t,r,n,a,i,s,o){for(var c=!0,f=[],u="",d=Et(r),h=t.s.c;h<=t.e.c;++h)if(n[h]){var m=o.dense?(e[r]||[])[h]:e[n[h]+d];if(m==null)u="";else if(m.v!=null){c=!1,u=""+(o.rawNumbers&&m.t=="n"?m.v:In(m,null,o));for(var g=0,p=0;g!==u.length;++g)if((p=u.charCodeAt(g))===a||p===i||p===34||o.forceQuotes){u='"'+u.replace(Ym,'""')+'"';break}u=="ID"&&(u='"ID"')}else m.f!=null&&!m.F?(c=!1,u="="+m.f,u.indexOf(",")>=0&&(u='"'+u.replace(Ym,'""')+'"')):u="";f.push(u)}return o.blankrows===!1&&c?null:f.join(s)}function Xc(e,t){var r=[],n=t??{};if(e==null||e["!ref"]==null)return"";var a=Ye(e["!ref"]),i=n.FS!==void 0?n.FS:",",s=i.charCodeAt(0),o=n.RS!==void 0?n.RS:`
|
||
`,c=o.charCodeAt(0),f=new RegExp((i=="|"?"\\|":i)+"+$"),u="",d=[];n.dense=Array.isArray(e);for(var h=n.skipHidden&&e["!cols"]||[],m=n.skipHidden&&e["!rows"]||[],g=a.s.c;g<=a.e.c;++g)(h[g]||{}).hidden||(d[g]=mt(g));for(var p=0,x=a.s.r;x<=a.e.r;++x)(m[x]||{}).hidden||(u=A3(e,a,x,d,s,c,i,n),u!=null&&(n.strip&&(u=u.replace(f,"")),(u||n.blankrows!==!1)&&r.push((p++?o:"")+u)));return delete n.dense,r.join("")}function qm(e,t){t||(t={}),t.FS=" ",t.RS=`
|
||
`;var r=Xc(e,t);return r}function D3(e){var t="",r,n="";if(e==null||e["!ref"]==null)return[];var a=Ye(e["!ref"]),i="",s=[],o,c=[],f=Array.isArray(e);for(o=a.s.c;o<=a.e.c;++o)s[o]=mt(o);for(var u=a.s.r;u<=a.e.r;++u)for(i=Et(u),o=a.s.c;o<=a.e.c;++o)if(t=s[o]+i,r=f?(e[u]||[])[o]:e[t],n="",r!==void 0){if(r.F!=null){if(t=r.F,!r.f)continue;n=r.f,t.indexOf(":")==-1&&(t=t+":"+t)}if(r.f!=null)n=r.f;else{if(r.t=="z")continue;if(r.t=="n"&&r.v!=null)n=""+r.v;else if(r.t=="b")n=r.v?"TRUE":"FALSE";else if(r.w!==void 0)n="'"+r.w;else{if(r.v===void 0)continue;r.t=="s"?n="'"+r.v:n=""+r.v}}c[c.length]=t+"="+n}return c}function Jm(e,t,r){var n=r||{},a=+!n.skipHeader,i=e||{},s=0,o=0;if(i&&n.origin!=null)if(typeof n.origin=="number")s=n.origin;else{var c=typeof n.origin=="string"?pt(n.origin):n.origin;s=c.r,o=c.c}var f,u={s:{c:0,r:0},e:{c:o,r:s+t.length-1+a}};if(i["!ref"]){var d=Ye(i["!ref"]);u.e.c=Math.max(u.e.c,d.e.c),u.e.r=Math.max(u.e.r,d.e.r),s==-1&&(s=d.e.r+1,u.e.r=s+t.length-1+a)}else s==-1&&(s=0,u.e.r=t.length-1+a);var h=n.header||[],m=0;t.forEach(function(p,x){_t(p).forEach(function(v){(m=h.indexOf(v))==-1&&(h[m=h.length]=v);var y=p[v],w="z",E="",R=Ne({c:o+m,r:s+x+a});f=vs(i,R),y&&typeof y=="object"&&!(y instanceof Date)?i[R]=y:(typeof y=="number"?w="n":typeof y=="boolean"?w="b":typeof y=="string"?w="s":y instanceof Date?(w="d",n.cellDates||(w="n",y=Bt(y)),E=n.dateNF||Re[14]):y===null&&n.nullError&&(w="e",y=0),f?(f.t=w,f.v=y,delete f.w,delete f.R,E&&(f.z=E)):i[R]=f={t:w,v:y},E&&(f.z=E))})}),u.e.c=Math.max(u.e.c,o+h.length-1);var g=Et(s);if(a)for(m=0;m<h.length;++m)i[mt(m+o)+g]={t:"s",v:h[m]};return i["!ref"]=We(u),i}function R3(e,t){return Jm(null,e,t)}function vs(e,t,r){if(typeof t=="string"){if(Array.isArray(e)){var n=pt(t);return e[n.r]||(e[n.r]=[]),e[n.r][n.c]||(e[n.r][n.c]={t:"z"})}return e[t]||(e[t]={t:"z"})}return typeof t!="number"?vs(e,Ne(t)):vs(e,Ne({r:t,c:r||0}))}function O3(e,t){if(typeof t=="number"){if(t>=0&&e.SheetNames.length>t)return t;throw new Error("Cannot find sheet # "+t)}else if(typeof t=="string"){var r=e.SheetNames.indexOf(t);if(r>-1)return r;throw new Error("Cannot find sheet name |"+t+"|")}else throw new Error("Cannot find sheet |"+t+"|")}function Kc(){return{SheetNames:[],Sheets:{}}}function Yc(e,t,r,n){var a=1;if(!r)for(;a<=65535&&e.SheetNames.indexOf(r="Sheet"+a)!=-1;++a,r=void 0);if(!r||e.SheetNames.length>=65535)throw new Error("Too many worksheets");if(n&&e.SheetNames.indexOf(r)>=0){var i=r.match(/(^.*?)(\d+)$/);a=i&&+i[2]||0;var s=i&&i[1]||r;for(++a;a<=65535&&e.SheetNames.indexOf(r=s+a)!=-1;++a);}if(Sm(r),e.SheetNames.indexOf(r)>=0)throw new Error("Worksheet with name |"+r+"| already exists!");return e.SheetNames.push(r),e.Sheets[r]=t,r}function B3(e,t,r){e.Workbook||(e.Workbook={}),e.Workbook.Sheets||(e.Workbook.Sheets=[]);var n=O3(e,t);switch(e.Workbook.Sheets[n]||(e.Workbook.Sheets[n]={}),r){case 0:case 1:case 2:break;default:throw new Error("Bad sheet visibility setting "+r)}e.Workbook.Sheets[n].Hidden=r}function N3(e,t){return e.z=t,e}function Zm(e,t,r){return t?(e.l={Target:t},r&&(e.l.Tooltip=r)):delete e.l,e}function I3(e,t,r){return Zm(e,"#"+t,r)}function P3(e,t,r){e.c||(e.c=[]),e.c.push({t,a:r||"SheetJS"})}function M3(e,t,r,n){for(var a=typeof t!="string"?t:Ye(t),i=typeof t=="string"?t:We(t),s=a.s.r;s<=a.e.r;++s)for(var o=a.s.c;o<=a.e.c;++o){var c=vs(e,s,o);c.t="n",c.F=i,delete c.v,s==a.s.r&&o==a.s.c&&(c.f=r,n&&(c.D=!0))}return e}var qc={encode_col:mt,encode_row:Et,encode_cell:Ne,encode_range:We,decode_col:rc,decode_row:tc,split_cell:Y2,decode_cell:pt,decode_range:xr,format_cell:In,sheet_add_aoa:Hd,sheet_add_json:Jm,sheet_add_dom:Nm,aoa_to_sheet:ei,json_to_sheet:R3,table_to_sheet:Im,table_to_book:zA,sheet_to_csv:Xc,sheet_to_txt:qm,sheet_to_json:Io,sheet_to_html:Bm,sheet_to_formulae:D3,sheet_to_row_object_array:Io,sheet_get_cell:vs,book_new:Kc,book_append_sheet:Yc,book_set_sheet_visibility:B3,cell_set_number_format:N3,cell_set_hyperlink:Zm,cell_set_internal_link:I3,cell_add_comment:P3,sheet_set_array_formula:M3,consts:{SHEET_VISIBLE:0,SHEET_HIDDEN:1,SHEET_VERY_HIDDEN:2}};function L3(e,t){t&&(e+=1462);var r=Date.parse(e);return(r-new Date(Date.UTC(1899,11,30)))/(24*60*60*1e3)}function V3(e,t={}){for(var r={},n={s:{c:1e7,r:1e7},e:{c:0,r:0}},a=0;a!=e.length;++a)for(var i=0;i!=e[a].length;++i){n.s.r>a&&(n.s.r=a),n.s.c>i&&(n.s.c=i),n.e.r<a&&(n.e.r=a),n.e.c<i&&(n.e.c=i);var s={v:e[a][i]};if(s.v!=null){var o=qc.encode_cell({c:i,r:a});typeof s.v=="number"?s.t="n":typeof s.v=="boolean"?s.t="b":s.v instanceof Date?(s.t="n",s.z=td._table[14],s.v=L3(s.v)):s.t="s",r[o]=s}}return n.s.c<1e7&&(r["!ref"]=qc.encode_range(n)),r}function Jc(){if(!(this instanceof Jc))return new Jc;this.SheetNames=[],this.Sheets={}}function U3(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n!=e.length;++n)r[n]=e.charCodeAt(n)&255;return t}function $3(e,t,r,n={merges:[],header:null,cols:null}){var a=t;a.unshift(e),n.header&&a.unshift([n.header]);var i="SheetJS";const s={};var o=new Jc,c=V3(a,s);let{merges:f}=n;typeof f[0]=="string"&&f.length==2&&(f=[f]),f=f.map(h=>h instanceof Array?{s:h[0],e:h[1]}:h),c["!merges"]=f,n.cols&&(c["!cols"]=n.cols),o.SheetNames.push(i),o.Sheets[i]=c;var u=Km(o,{bookType:"xlsx",bookSST:!1,type:"binary"}),d=r||"列表";Ou.saveAs(new Blob([U3(u)],{type:"application/octet-stream"}),d+".xlsx")}const W3=e=>{const t=e.split(/\r\n|\n/),r=t[0].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/),n=[];for(let i=1;i<t.length;i++){const s=t[i].split(/,(?![^"]*"(?:(?:[^"]*"){2})*[^"]*$)/);if(r&&s.length==r.length){const o={};for(let c=0;c<r.length;c++){let f=s[c];f.length>0&&(f[0]=='"'&&(f=f.substring(1,f.length-1)),f[f.length-1]=='"'&&(f=f.substring(f.length-2,1))),r[c]&&(o[r[c]]=f)}Object.values(o).filter(c=>c).length>0&&n.push(o)}}const a=r.map(i=>({title:i,key:i}));return{data:n,columns:a}};async function H3(e){const t=new FileReader;return new Promise((r,n)=>{t.onload=a=>{const i=a.target.result,s=Gc(i,{type:"binary"}),o=s.SheetNames[0],c=s.Sheets[o],f=qc.sheet_to_csv(c),u=W3(f);r(u)},t.onerror=a=>{n(a)},t.readAsBinaryString(e)})}function j3(e){return e.map(t=>({prop:t.key,label:t.title}))}const Qm=Object.freeze(Object.defineProperty({__proto__:null,exportUtil:{csv(e){return new Promise((t,r)=>{const a=Object.assign({},{columns:[],data:[],filename:"table",noHeader:!1},e),i=L_(j3(a.columns),a.data,e,a.noHeader);I_.download(a.filename,i),t()})},excel(e){return new Promise((t,r)=>{const a=Object.assign({},{columns:[],data:[],filename:"table",header:null,merges:[]},e),i=a.columns.map(c=>c.title),s=a.data.map(c=>a.columns.map(f=>c[f.key])),o=a.columns.map(c=>{const f={...c};return delete f.title,delete f.key,f});$3(i,s,a.filename,{merges:a.merges,header:a.header,cols:o}),t()})},txt(e){return new Promise((t,r)=>{const a=Object.assign({},{text:"",filename:"文本"},e),i=new Blob([a.text],{type:"text/plain;charset=utf-8"});Ou.saveAs(i,a.filename+".txt"),t()})}},importUtil:{async csv(e){return await H3(e)}}},Symbol.toStringTag,{value:"Module"}));Object.defineProperty(oe,"uiContext",{enumerable:!0,get:()=>ue.uiContext}),Object.defineProperty(oe,"useUi",{enumerable:!0,get:()=>ue.useUi}),oe.AsyncComputeValue=Ds,oe.ColumnsFilterProvideKey=Us,oe.ComputeValue=yi,oe.Dict=il,oe.FastCrud=Du,oe.FsActionbar=A0,oe.FsBox=s0,oe.FsButton=e0,oe.FsCell=C0,oe.FsColumnsFilterLayoutDefault=uu,oe.FsComponentRender=l0,oe.FsContainer=Jf,oe.FsCrud=p0,oe.FsDateFormat=Su,oe.FsDictCascader=ku,oe.FsDictCascaderFormat=yu,oe.FsDictCheckbox=bu,oe.FsDictRadio=vu,oe.FsDictSelect=wu,oe.FsDictSwitch=Eu,oe.FsDictTree=Cu,oe.FsEditable=F0,oe.FsEditableCell=T0,oe.FsEditableSelect=Fu,oe.FsForm=f0,oe.FsFormHelper=h0,oe.FsFormItem=u0,oe.FsFormItemCol=d0,oe.FsFormProvider=m0,oe.FsFormWrapper=$a,oe.FsIcon=t0,oe.FsIconSelector=xu,oe.FsIconSvg=n0,oe.FsIconify=r0,oe.FsLabel=a0,oe.FsLayoutCard=Qf,oe.FsLayoutDefault=Zf,oe.FsLoading=i0,oe.FsPage=bf,oe.FsRender=sl,oe.FsRowHandle=g0,oe.FsSearch=hu,oe.FsSearchLayoutDefault=pu,oe.FsSearchV1=mu,oe.FsSlotRender=c0,oe.FsTable=S0,oe.FsTableColumnsFixedController=Bl,oe.FsTableSelect=Tu,oe.FsTabsFilter=gu,oe.FsToolbar=D0,oe.FsValuesFormat=_u,oe.GlobalConfig=qf,oe.SetFormDataOptions=cv,oe.asyncCompute=Ff,oe.buildTableColumnsFlatMap=Rs,oe.compute=Tf,oe.crudOptionsPlugins=el,oe.default=Du,oe.dict=Xf,oe.exportTable=Pf,oe.forEachColumns=Ei,oe.forEachTableColumns=Os,oe.fsColumnsFilterNestList=Nl,oe.getCrudOptionsPlugin=Mf,oe.importTable=W1,oe.loadFsExportUtil=Nf,oe.loadFsImportUtil=If,oe.registerCrudOptionsPlugin=tl,oe.registerMergeColumnPlugin=Ko,oe.setLogger=cf,oe.useColumns=Bs,oe.useCompute=Nr,oe.useCrud=Lf,oe.useDict=Tn,oe.useDictDefine=Kf,oe.useDrag=Yf,oe.useExpose=Qo,oe.useFormWrapper=Of,oe.useFs=H1,oe.useFsAsync=Uf,oe.useFsRef=$f,oe.useI18n=Kt,oe.useMerge=Ze,oe.useTypes=X1,oe.utils=mr,Object.keys(ue).forEach(e=>{e!=="default"&&!Object.prototype.hasOwnProperty.call(oe,e)&&Object.defineProperty(oe,e,{enumerable:!0,get:()=>ue[e]})}),Object.defineProperties(oe,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFzdC1jcnVkLnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3VzZS9kZWZhdWx0LWNydWQtb3B0aW9ucy50cyIsIi4uLy4uL3NyYy91dGlscy91dGlsLmxvZy50cyIsIi4uLy4uL3NyYy91dGlscy91dGlsLnN0cmluZy50cyIsIi4uLy4uL3NyYy91dGlscy91dGlsLnRyYWNlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwudml0ZS50cyIsIi4uLy4uL3NyYy91dGlscy91dGlsLnN0b3JlLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlZXBkYXNoL3ByaXZhdGUvZ2V0UGF0aFRvU3RyaW5nLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlZXBkYXNoL3ByaXZhdGUvZ2V0SXRlcmF0ZS50cyIsIi4uLy4uL3NyYy91dGlscy9kZWVwZGFzaC9nZXQtZWFjaC1kZWVwLnRzIiwiLi4vLi4vc3JjL3V0aWxzL2RlZXBkYXNoL2luZGV4LnRzIiwiLi4vLi4vc3JjL3V0aWxzL2luZGV4LnRzIiwiLi4vLi4vc3JjL3V0aWxzL3V0aWwuZGFzaC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Fzc2lzdC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2J1dHRvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2Nhc2NhZGVyLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL3poLWNuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9sYW5nL2VuLnRzIiwiLi4vLi4vc3JjL2xvY2FsZS9pbmRleC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9kYXlqc0AxLjExLjEzL25vZGVfbW9kdWxlcy9kYXlqcy9wbHVnaW4vYWR2YW5jZWRGb3JtYXQuanMiLCIuLi8uLi9zcmMvdHlwZXMvZnVuY3Rpb25zLnRzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrT2ZZZWFyLmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi93ZWVrZGF5LmpzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2RheWpzQDEuMTEuMTMvbm9kZV9tb2R1bGVzL2RheWpzL3BsdWdpbi9sb2NhbGVEYXRhLmpzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvZGF0ZS50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L2VsLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvaWNvbi50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L251bWJlci50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3Bob25lLnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3Qvc2VsZWN0LnRzIiwiLi4vLi4vc3JjL3R5cGVzL2xpc3QvdGV4dC50cyIsIi4uLy4uL3NyYy90eXBlcy9saXN0L3RyZWUudHMiLCIuLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtcGFnZS52dWUiLCIuLi8uLi9zcmMvdXNlL3VzZS1tZXJnZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLWNvbXB1dGUudHMiLCIuLi8uLi9zcmMvdXRpbHMvdXRpbC5jb25zdGFudHMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jb2x1bW5zLnRzeCIsIi4uLy4uL3NyYy91c2UvdXNlLWZvcm0udHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1leHBvc2UudHMiLCIuLi8uLi9zcmMvbGliL2ZzLWV4cG9ydC9pbmRleC50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXBsdWdpbnMudHMiLCIuLi8uLi9zcmMvdXNlL3VzZS1jcnVkLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZGljdC50cyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9scnUtY2FjaGVAMTAuNC4zL25vZGVfbW9kdWxlcy9scnUtY2FjaGUvZGlzdC9lc20vaW5kZXguanMiLCIuLi8uLi9zcmMvdXNlL3VzZS1kaWN0LWRlZmluZS50cyIsIi4uLy4uL3NyYy91c2UvdXNlLXR5cGVzLnRzIiwiLi4vLi4vc3JjL3VzZS91c2UtZHJhZy50cyIsIi4uLy4uL3NyYy91c2UvY29uZmlnLnRzIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWNvbnRhaW5lci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtY29udGFpbmVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jb250YWluZXIvZnMtbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY29udGFpbmVyL2ZzLWxheW91dC1jYXJkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NvbnRhaW5lci9mcy1sYXlvdXQtY2FyZC52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1idXR0b24udHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi50c3giLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1pY29uaWZ5LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2Jhc2ljL2ZzLWljb25pZnkudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtaWNvbi1zdmcudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbGFiZWwudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtbG9hZGluZy52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9iYXNpYy9mcy1ib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYmFzaWMvZnMtYm94LnZ1ZSIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1jb21wb25lbnQtcmVuZGVyLnRzeCIsIi4uLy4uL3NyYy9jb21wb25lbnRzL3JlbmRlci9mcy1zbG90LXJlbmRlci50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9yZW5kZXIvZnMtcmVuZGVyLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWl0ZW0tY29sLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtZm9ybS1oZWxwZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy1mb3JtLWhlbHBlci52dWUiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0td3JhcHBlci50c3giLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWZvcm0tcHJvdmlkZXIudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZnMtY3J1ZC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9mcy1jcnVkLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZnMtcm93LWhhbmRsZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLXJvdy1oYW5kbGUudnVlIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2FzeW5jLXZhbGlkYXRvckA0LjIuNS9ub2RlX21vZHVsZXMvYXN5bmMtdmFsaWRhdG9yL2Rpc3Qtd2ViL2luZGV4LmpzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9lZGl0YWJsZS92YWxpZGF0b3IudHMiLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2VkaXRhYmxlL3VzZS1lZGl0YWJsZS50cyIsIi4uLy4uL3NyYy9jb21wb25lbnRzL2NydWQvdXNlL3Byb3ZpZGVyLnRzIiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9mcy10YWJsZS50c3giLCIuLi8uLi9zcmMvY29tcG9uZW50cy9jcnVkL2ZzLWNlbGwudHN4IiwiLi4vLi4vc3JjL2NvbXBvbmVudHMvY3J1ZC9lZGl0YWJsZS9mcy1lZGl0YWJsZS1jZWxsLnRzeCIsIi4uL3NyYy9jb21wb25lbnRzL2NydWQvZWRpdGFibGUvZnMtZWRpdGFibGUudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvYWN0aW9uYmFyL2luZGV4LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2FjdGlvbmJhci9pbmRleC52dWUiLCIuLi8uLi9zcmMvZC9leHBvc2UudHMiLCIuLi8uLi9zcmMvZC9jb2x1bW5zLWZpbHRlci50cyIsIi4uL3NyYy9jb21wb25lbnRzL3Rvb2xiYXIvZnMtdGFibGUtY29sdW1ucy1maWx0ZXIvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvdG9vbGJhci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2luZGV4LnZ1ZSIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9zb3J0YWJsZWpzQDEuMTQuMC9ub2RlX21vZHVsZXMvc29ydGFibGVqcy9tb2R1bGFyL3NvcnRhYmxlLmVzbS5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS92dWVkcmFnZ2FibGUtZXNANC4xLjFfdnVlQDMuNS4xOF90eXBlc2NyaXB0QDUuMS42Xy9ub2RlX21vZHVsZXMvdnVlZHJhZ2dhYmxlLWVzL2Rpc3QvaW5kZXguZXMuanMiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLWNvbHVtbnMtZmlsdGVyLW5lc3QtbGlzdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy90b29sYmFyL2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyL2ZzLWNvbHVtbnMtZmlsdGVyLWxheW91dC1kZWZhdWx0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9idXR0b25zLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9idXR0b25zLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvaW5kZXgudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL3NlYXJjaF92MS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvc2VhcmNoX3YxLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL3NlYXJjaC9sYXlvdXQtZGVmYXVsdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9zZWFyY2gvbGF5b3V0LWRlZmF1bHQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvc2VhcmNoL3RhYnMtZmlsdGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtaWNvbi1zZWxlY3Rvci9pbmRleC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtcmFkaW8udnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LXJhZGlvLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1zZWxlY3QudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy12YWx1ZXMtZm9ybWF0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtdmFsdWVzLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2FzY2FkZXItZm9ybWF0LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jYXNjYWRlci1mb3JtYXQudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNhc2NhZGVyLnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1jYXNjYWRlci52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtY2hlY2tib3gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kaWN0LWNoZWNrYm94LnZ1ZSIsIi4uL3NyYy9jb21wb25lbnRzL2V4dGVuZHMvZnMtZGljdC1zd2l0Y2gudnVlIiwiLi4vc3JjL2NvbXBvbmVudHMvZXh0ZW5kcy9mcy1kYXRlLWZvcm1hdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtdHJlZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWRpY3QtdHJlZS52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLXRhYmxlLXNlbGVjdC52dWUiLCIuLi9zcmMvY29tcG9uZW50cy9leHRlbmRzL2ZzLWVkaXRhYmxlLXNlbGVjdC52dWUiLCIuLi8uLi9zcmMvaW5kZXgudHMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2V4cG9ydC1jc3YuanMiLCIuLi9zcmMvbGliL2ZzLWV4cG9ydC9saWIvX2Nzdi5qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fYmxvYi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9maWxlLXNhdmVyQDIuMC41L25vZGVfbW9kdWxlcy9maWxlLXNhdmVyL2Rpc3QvRmlsZVNhdmVyLm1pbi5qcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS94bHN4QDAuMTguNS9ub2RlX21vZHVsZXMveGxzeC94bHN4Lm1qcyIsIi4uL3NyYy9saWIvZnMtZXhwb3J0L2xpYi9fZXhwb3J0MkV4Y2VsLmpzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL19pbXBvcnQuY3N2LnRzIiwiLi4vLi4vc3JjL2xpYi9mcy1leHBvcnQvbGliL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBnbG9iYWxUaGlzP2dsb2JhbFRoaXM6ZXx8c2VsZikuZGF5anNfcGx1Z2luX2FkdmFuY2VkRm9ybWF0PXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSx0KXt2YXIgcj10LnByb3RvdHlwZSxuPXIuZm9ybWF0O3IuZm9ybWF0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMscj10aGlzLiRsb2NhbGUoKTtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG4uYmluZCh0aGlzKShlKTt2YXIgcz10aGlzLiR1dGlscygpLGE9KGV8fFwiWVlZWS1NTS1ERFRISDptbTpzc1pcIikucmVwbGFjZSgvXFxbKFteXFxdXSspXXxRfHdvfHd3fHd8V1d8V3x6enp8enxnZ2dnfEdHR0d8RG98WHx4fGt7MSwyfXxTL2csKGZ1bmN0aW9uKGUpe3N3aXRjaChlKXtjYXNlXCJRXCI6cmV0dXJuIE1hdGguY2VpbCgodC4kTSsxKS8zKTtjYXNlXCJEb1wiOnJldHVybiByLm9yZGluYWwodC4kRCk7Y2FzZVwiZ2dnZ1wiOnJldHVybiB0LndlZWtZZWFyKCk7Y2FzZVwiR0dHR1wiOnJldHVybiB0Lmlzb1dlZWtZZWFyKCk7Y2FzZVwid29cIjpyZXR1cm4gci5vcmRpbmFsKHQud2VlaygpLFwiV1wiKTtjYXNlXCJ3XCI6Y2FzZVwid3dcIjpyZXR1cm4gcy5zKHQud2VlaygpLFwid1wiPT09ZT8xOjIsXCIwXCIpO2Nhc2VcIldcIjpjYXNlXCJXV1wiOnJldHVybiBzLnModC5pc29XZWVrKCksXCJXXCI9PT1lPzE6MixcIjBcIik7Y2FzZVwia1wiOmNhc2VcImtrXCI6cmV0dXJuIHMucyhTdHJpbmcoMD09PXQuJEg/MjQ6dC4kSCksXCJrXCI9PT1lPzE6MixcIjBcIik7Y2FzZVwiWFwiOnJldHVybiBNYXRoLmZsb29yKHQuJGQuZ2V0VGltZSgpLzFlMyk7Y2FzZVwieFwiOnJldHVybiB0LiRkLmdldFRpbWUoKTtjYXNlXCJ6XCI6cmV0dXJuXCJbXCIrdC5vZmZzZXROYW1lKCkrXCJdXCI7Y2FzZVwienp6XCI6cmV0dXJuXCJbXCIrdC5vZmZzZXROYW1lKFwibG9uZ1wiKStcIl1cIjtkZWZhdWx0OnJldHVybiBlfX0pKTtyZXR1cm4gbi5iaW5kKHRoaXMpKGEpfX19KSk7IixudWxsLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLmRheWpzX3BsdWdpbl93ZWVrT2ZZZWFyPXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZT1cIndlZWtcIix0PVwieWVhclwiO3JldHVybiBmdW5jdGlvbihpLG4scil7dmFyIGY9bi5wcm90b3R5cGU7Zi53ZWVrPWZ1bmN0aW9uKGkpe2lmKHZvaWQgMD09PWkmJihpPW51bGwpLG51bGwhPT1pKXJldHVybiB0aGlzLmFkZCg3KihpLXRoaXMud2VlaygpKSxcImRheVwiKTt2YXIgbj10aGlzLiRsb2NhbGUoKS55ZWFyU3RhcnR8fDE7aWYoMTE9PT10aGlzLm1vbnRoKCkmJnRoaXMuZGF0ZSgpPjI1KXt2YXIgZj1yKHRoaXMpLnN0YXJ0T2YodCkuYWRkKDEsdCkuZGF0ZShuKSxzPXIodGhpcykuZW5kT2YoZSk7aWYoZi5pc0JlZm9yZShzKSlyZXR1cm4gMX12YXIgYT1yKHRoaXMpLnN0YXJ0T2YodCkuZGF0ZShuKS5zdGFydE9mKGUpLnN1YnRyYWN0KDEsXCJtaWxsaXNlY29uZFwiKSxvPXRoaXMuZGlmZihhLGUsITApO3JldHVybiBvPDA/cih0aGlzKS5zdGFydE9mKFwid2Vla1wiKS53ZWVrKCk6TWF0aC5jZWlsKG8pfSxmLndlZWtzPWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lJiYoZT1udWxsKSx0aGlzLndlZWsoZSl9fX0pKTsiLCIhZnVuY3Rpb24oZSx0KXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSh0KTooZT1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOmV8fHNlbGYpLmRheWpzX3BsdWdpbl93ZWVrZGF5PXQoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24oZSx0KXt0LnByb3RvdHlwZS53ZWVrZGF5PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJGxvY2FsZSgpLndlZWtTdGFydHx8MCxpPXRoaXMuJFcsbj0oaTx0P2krNzppKS10O3JldHVybiB0aGlzLiR1dGlscygpLnUoZSk/bjp0aGlzLnN1YnRyYWN0KG4sXCJkYXlcIikuYWRkKGUsXCJkYXlcIil9fX0pKTsiLCIhZnVuY3Rpb24obixlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToobj1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOm58fHNlbGYpLmRheWpzX3BsdWdpbl9sb2NhbGVEYXRhPWUoKX0odGhpcywoZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjtyZXR1cm4gZnVuY3Rpb24obixlLHQpe3ZhciByPWUucHJvdG90eXBlLG89ZnVuY3Rpb24obil7cmV0dXJuIG4mJihuLmluZGV4T2Y/bjpuLnMpfSx1PWZ1bmN0aW9uKG4sZSx0LHIsdSl7dmFyIGk9bi5uYW1lP246bi4kbG9jYWxlKCksYT1vKGlbZV0pLHM9byhpW3RdKSxmPWF8fHMubWFwKChmdW5jdGlvbihuKXtyZXR1cm4gbi5zbGljZSgwLHIpfSkpO2lmKCF1KXJldHVybiBmO3ZhciBkPWkud2Vla1N0YXJ0O3JldHVybiBmLm1hcCgoZnVuY3Rpb24obixlKXtyZXR1cm4gZlsoZSsoZHx8MCkpJTddfSkpfSxpPWZ1bmN0aW9uKCl7cmV0dXJuIHQuTHNbdC5sb2NhbGUoKV19LGE9ZnVuY3Rpb24obixlKXtyZXR1cm4gbi5mb3JtYXRzW2VdfHxmdW5jdGlvbihuKXtyZXR1cm4gbi5yZXBsYWNlKC8oXFxbW15cXF1dK10pfChNTU1NfE1NfEREfGRkZGQpL2csKGZ1bmN0aW9uKG4sZSx0KXtyZXR1cm4gZXx8dC5zbGljZSgxKX0pKX0obi5mb3JtYXRzW2UudG9VcHBlckNhc2UoKV0pfSxzPWZ1bmN0aW9uKCl7dmFyIG49dGhpcztyZXR1cm57bW9udGhzOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiTU1NTVwiKTp1KG4sXCJtb250aHNcIil9LG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiTU1NXCIpOnUobixcIm1vbnRoc1Nob3J0XCIsXCJtb250aHNcIiwzKX0sZmlyc3REYXlPZldlZWs6ZnVuY3Rpb24oKXtyZXR1cm4gbi4kbG9jYWxlKCkud2Vla1N0YXJ0fHwwfSx3ZWVrZGF5czpmdW5jdGlvbihlKXtyZXR1cm4gZT9lLmZvcm1hdChcImRkZGRcIik6dShuLFwid2Vla2RheXNcIil9LHdlZWtkYXlzTWluOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UuZm9ybWF0KFwiZGRcIik6dShuLFwid2Vla2RheXNNaW5cIixcIndlZWtkYXlzXCIsMil9LHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU/ZS5mb3JtYXQoXCJkZGRcIik6dShuLFwid2Vla2RheXNTaG9ydFwiLFwid2Vla2RheXNcIiwzKX0sbG9uZ0RhdGVGb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGEobi4kbG9jYWxlKCksZSl9LG1lcmlkaWVtOnRoaXMuJGxvY2FsZSgpLm1lcmlkaWVtLG9yZGluYWw6dGhpcy4kbG9jYWxlKCkub3JkaW5hbH19O3IubG9jYWxlRGF0YT1mdW5jdGlvbigpe3JldHVybiBzLmJpbmQodGhpcykoKX0sdC5sb2NhbGVEYXRhPWZ1bmN0aW9uKCl7dmFyIG49aSgpO3JldHVybntmaXJzdERheU9mV2VlazpmdW5jdGlvbigpe3JldHVybiBuLndlZWtTdGFydHx8MH0sd2Vla2RheXM6ZnVuY3Rpb24oKXtyZXR1cm4gdC53ZWVrZGF5cygpfSx3ZWVrZGF5c1Nob3J0OmZ1bmN0aW9uKCl7cmV0dXJuIHQud2Vla2RheXNTaG9ydCgpfSx3ZWVrZGF5c01pbjpmdW5jdGlvbigpe3JldHVybiB0LndlZWtkYXlzTWluKCl9LG1vbnRoczpmdW5jdGlvbigpe3JldHVybiB0Lm1vbnRocygpfSxtb250aHNTaG9ydDpmdW5jdGlvbigpe3JldHVybiB0Lm1vbnRoc1Nob3J0KCl9LGxvbmdEYXRlRm9ybWF0OmZ1bmN0aW9uKGUpe3JldHVybiBhKG4sZSl9LG1lcmlkaWVtOm4ubWVyaWRpZW0sb3JkaW5hbDpuLm9yZGluYWx9fSx0Lm1vbnRocz1mdW5jdGlvbigpe3JldHVybiB1KGkoKSxcIm1vbnRoc1wiKX0sdC5tb250aHNTaG9ydD1mdW5jdGlvbigpe3JldHVybiB1KGkoKSxcIm1vbnRoc1Nob3J0XCIsXCJtb250aHNcIiwzKX0sdC53ZWVrZGF5cz1mdW5jdGlvbihuKXtyZXR1cm4gdShpKCksXCJ3ZWVrZGF5c1wiLG51bGwsbnVsbCxuKX0sdC53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKG4pe3JldHVybiB1KGkoKSxcIndlZWtkYXlzU2hvcnRcIixcIndlZWtkYXlzXCIsMyxuKX0sdC53ZWVrZGF5c01pbj1mdW5jdGlvbihuKXtyZXR1cm4gdShpKCksXCJ3ZWVrZGF5c01pblwiLFwid2Vla2RheXNcIiwyLG4pfX19KSk7IixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxuICA8ZGl2IHJlZj1cInBhZ2VSZWZcIiBjbGFzcz1cImZzLXBhZ2VcIj5cbiAgICA8ZGl2IHYtaWY9XCIkc2xvdHMuaGVhZGVyICE9IG51bGxcIiBjbGFzcz1cImZzLXBhZ2UtaGVhZGVyXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZzLXBhZ2UtY29udGVudFwiPlxuICAgICAgPHNsb3Q+PC9zbG90PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1pZj1cIiRzbG90cy5mb290ZXIgIT0gbnVsbFwiIGNsYXNzPVwiZnMtcGFnZS1mb290ZXJcIj5cbiAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgb25Nb3VudGVkLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzUGFnZVwiLFxuICBzZXR1cCgpIHtcbiAgICBjb25zdCBwYWdlUmVmOiBSZWYgPSByZWYoKTtcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFnZVJlZi52YWx1ZS5wYXJlbnROb2RlKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBvc2l0aW9uXCIpO1xuICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IFwicmVsYXRpdmVcIikge1xuICAgICAgICB1dGlscy5sb2dnZXIud2FybihcbiAgICAgICAgICBcImZzLXBhZ2XniLboioLngrnnmoRwb3NpdGlvbuW7uuiuruS4unJlbGF0aXZlLOWboOS4umZzLXBhZ2XkuLrnm7jlr7nlrprkvY3vvIhwb3NpdGlvbjphYnNvbHV0Ze+8ie+8jOWmguaenOagt+W8j+ayoeacieW8guW4uO+8jOS9oOWPr+S7peW/veeVpeatpOitpuWRilwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VSZWZcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1wYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgLmZzLXBhZ2UtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gICAgPiAudGl0bGUge1xuICAgICAgZmxleDogMTtcbiAgICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcbiAgICAgIHBhZGRpbmc6IDE4cHg7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGNvbG9yOiAjNDQ0O1xuXG4gICAgICAuc3ViIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogZ3JheTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBsaWdodGVyO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tb3JlIHtcbiAgICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuICAuZnMtcGFnZS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IHJlZj1cInBhZ2VSZWZcIiBjbGFzcz1cImZzLXBhZ2VcIj5cbiAgICA8ZGl2IHYtaWY9XCIkc2xvdHMuaGVhZGVyICE9IG51bGxcIiBjbGFzcz1cImZzLXBhZ2UtaGVhZGVyXCI+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZzLXBhZ2UtY29udGVudFwiPlxuICAgICAgPHNsb3Q+PC9zbG90PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgdi1pZj1cIiRzbG90cy5mb290ZXIgIT0gbnVsbFwiIGNsYXNzPVwiZnMtcGFnZS1mb290ZXJcIj5cbiAgICAgIDxzbG90IG5hbWU9XCJmb290ZXJcIj48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgb25Nb3VudGVkLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzUGFnZVwiLFxuICBzZXR1cCgpIHtcbiAgICBjb25zdCBwYWdlUmVmOiBSZWYgPSByZWYoKTtcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgY29uc3Qgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUocGFnZVJlZi52YWx1ZS5wYXJlbnROb2RlKTtcbiAgICAgIGNvbnN0IHBvc2l0aW9uVmFsdWUgPSBzdHlsZXMuZ2V0UHJvcGVydHlWYWx1ZShcInBvc2l0aW9uXCIpO1xuICAgICAgaWYgKHBvc2l0aW9uVmFsdWUgIT09IFwicmVsYXRpdmVcIikge1xuICAgICAgICB1dGlscy5sb2dnZXIud2FybihcbiAgICAgICAgICBcImZzLXBhZ2XniLboioLngrnnmoRwb3NpdGlvbuW7uuiuruS4unJlbGF0aXZlLOWboOS4umZzLXBhZ2XkuLrnm7jlr7nlrprkvY3vvIhwb3NpdGlvbjphYnNvbHV0Ze+8ie+8jOWmguaenOagt+W8j+ayoeacieW8guW4uO+8jOS9oOWPr+S7peW/veeVpeatpOitpuWRilwiXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhZ2VSZWZcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1wYWdlIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRvcDogMDtcbiAgYm90dG9tOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgLmZzLXBhZ2UtaGVhZGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkZGQ7XG4gICAgPiAudGl0bGUge1xuICAgICAgZmxleDogMTtcbiAgICAgIGp1c3RpZnktc2VsZjogZmxleC1zdGFydDtcbiAgICAgIHBhZGRpbmc6IDE4cHg7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGNvbG9yOiAjNDQ0O1xuXG4gICAgICAuc3ViIHtcbiAgICAgICAgZm9udC1zaXplOiAxMnB4O1xuICAgICAgICBjb2xvcjogZ3JheTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBsaWdodGVyO1xuICAgICAgfVxuICAgIH1cbiAgICA+IC5tb3JlIHtcbiAgICAgIGp1c3RpZnktc2VsZjogZmxleC1lbmQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDE4cHg7XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgfVxuICAuZnMtcGFnZS1jb250ZW50IHtcbiAgICBmbGV4OiAxO1xuICAgIG92ZXJmbG93OiBhdXRvO1xuICB9XG59XG48L3N0eWxlPlxuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCxudWxsLCIvKipcbiAqIEBtb2R1bGUgTFJVQ2FjaGVcbiAqL1xuY29uc3QgcGVyZiA9IHR5cGVvZiBwZXJmb3JtYW5jZSA9PT0gJ29iamVjdCcgJiZcbiAgICBwZXJmb3JtYW5jZSAmJlxuICAgIHR5cGVvZiBwZXJmb3JtYW5jZS5ub3cgPT09ICdmdW5jdGlvbidcbiAgICA/IHBlcmZvcm1hbmNlXG4gICAgOiBEYXRlO1xuY29uc3Qgd2FybmVkID0gbmV3IFNldCgpO1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5jb25zdCBQUk9DRVNTID0gKHR5cGVvZiBwcm9jZXNzID09PSAnb2JqZWN0JyAmJiAhIXByb2Nlc3MgPyBwcm9jZXNzIDoge30pO1xuLyogYzggaWdub3JlIHN0YXJ0ICovXG5jb25zdCBlbWl0V2FybmluZyA9IChtc2csIHR5cGUsIGNvZGUsIGZuKSA9PiB7XG4gICAgdHlwZW9mIFBST0NFU1MuZW1pdFdhcm5pbmcgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBQUk9DRVNTLmVtaXRXYXJuaW5nKG1zZywgdHlwZSwgY29kZSwgZm4pXG4gICAgICAgIDogY29uc29sZS5lcnJvcihgWyR7Y29kZX1dICR7dHlwZX06ICR7bXNnfWApO1xufTtcbmxldCBBQyA9IGdsb2JhbFRoaXMuQWJvcnRDb250cm9sbGVyO1xubGV0IEFTID0gZ2xvYmFsVGhpcy5BYm9ydFNpZ25hbDtcbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaWYgKHR5cGVvZiBBQyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAvL0B0cy1pZ25vcmVcbiAgICBBUyA9IGNsYXNzIEFib3J0U2lnbmFsIHtcbiAgICAgICAgb25hYm9ydDtcbiAgICAgICAgX29uYWJvcnQgPSBbXTtcbiAgICAgICAgcmVhc29uO1xuICAgICAgICBhYm9ydGVkID0gZmFsc2U7XG4gICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoXywgZm4pIHtcbiAgICAgICAgICAgIHRoaXMuX29uYWJvcnQucHVzaChmbik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIEFDID0gY2xhc3MgQWJvcnRDb250cm9sbGVyIHtcbiAgICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICB3YXJuQUNQb2x5ZmlsbCgpO1xuICAgICAgICB9XG4gICAgICAgIHNpZ25hbCA9IG5ldyBBUygpO1xuICAgICAgICBhYm9ydChyZWFzb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNpZ25hbC5hYm9ydGVkKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdGhpcy5zaWduYWwucmVhc29uID0gcmVhc29uO1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICB0aGlzLnNpZ25hbC5hYm9ydGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgZm9yIChjb25zdCBmbiBvZiB0aGlzLnNpZ25hbC5fb25hYm9ydCkge1xuICAgICAgICAgICAgICAgIGZuKHJlYXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNpZ25hbC5vbmFib3J0Py4ocmVhc29uKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgbGV0IHByaW50QUNQb2x5ZmlsbFdhcm5pbmcgPSBQUk9DRVNTLmVudj8uTFJVX0NBQ0hFX0lHTk9SRV9BQ19XQVJOSU5HICE9PSAnMSc7XG4gICAgY29uc3Qgd2FybkFDUG9seWZpbGwgPSAoKSA9PiB7XG4gICAgICAgIGlmICghcHJpbnRBQ1BvbHlmaWxsV2FybmluZylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcHJpbnRBQ1BvbHlmaWxsV2FybmluZyA9IGZhbHNlO1xuICAgICAgICBlbWl0V2FybmluZygnQWJvcnRDb250cm9sbGVyIGlzIG5vdCBkZWZpbmVkLiBJZiB1c2luZyBscnUtY2FjaGUgaW4gJyArXG4gICAgICAgICAgICAnbm9kZSAxNCwgbG9hZCBhbiBBYm9ydENvbnRyb2xsZXIgcG9seWZpbGwgZnJvbSB0aGUgJyArXG4gICAgICAgICAgICAnYG5vZGUtYWJvcnQtY29udHJvbGxlcmAgcGFja2FnZS4gQSBtaW5pbWFsIHBvbHlmaWxsIGlzICcgK1xuICAgICAgICAgICAgJ3Byb3ZpZGVkIGZvciB1c2UgYnkgTFJVQ2FjaGUuZmV0Y2goKSwgYnV0IGl0IHNob3VsZCBub3QgYmUgJyArXG4gICAgICAgICAgICAncmVsaWVkIHVwb24gaW4gb3RoZXIgY29udGV4dHMgKGVnLCBwYXNzaW5nIGl0IHRvIG90aGVyIEFQSXMgdGhhdCAnICtcbiAgICAgICAgICAgICd1c2UgQWJvcnRDb250cm9sbGVyL0Fib3J0U2lnbmFsIG1pZ2h0IGhhdmUgdW5kZXNpcmFibGUgZWZmZWN0cykuICcgK1xuICAgICAgICAgICAgJ1lvdSBtYXkgZGlzYWJsZSB0aGlzIHdpdGggTFJVX0NBQ0hFX0lHTk9SRV9BQ19XQVJOSU5HPTEgaW4gdGhlIGVudi4nLCAnTk9fQUJPUlRfQ09OVFJPTExFUicsICdFTk9UU1VQJywgd2FybkFDUG9seWZpbGwpO1xuICAgIH07XG59XG4vKiBjOCBpZ25vcmUgc3RvcCAqL1xuY29uc3Qgc2hvdWxkV2FybiA9IChjb2RlKSA9PiAhd2FybmVkLmhhcyhjb2RlKTtcbmNvbnN0IFRZUEUgPSBTeW1ib2woJ3R5cGUnKTtcbmNvbnN0IGlzUG9zSW50ID0gKG4pID0+IG4gJiYgbiA9PT0gTWF0aC5mbG9vcihuKSAmJiBuID4gMCAmJiBpc0Zpbml0ZShuKTtcbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuLy8gVGhpcyBpcyBhIGxpdHRsZSBiaXQgcmlkaWN1bG91cywgdGJoLlxuLy8gVGhlIG1heGltdW0gYXJyYXkgbGVuZ3RoIGlzIDJeMzItMSBvciB0aGVyZWFib3V0cyBvbiBtb3N0IEpTIGltcGxzLlxuLy8gQW5kIHdlbGwgYmVmb3JlIHRoYXQgcG9pbnQsIHlvdSdyZSBjYWNoaW5nIHRoZSBlbnRpcmUgd29ybGQsIEkgbWVhbixcbi8vIHRoYXQncyB+MzJHQiBvZiBqdXN0IGludGVnZXJzIGZvciB0aGUgbmV4dC9wcmV2IGxpbmtzLCBwbHVzIHdoYXRldmVyXG4vLyBlbHNlIHRvIGhvbGQgdGhhdCBtYW55IGtleXMgYW5kIHZhbHVlcy4gIEp1c3QgZmlsbGluZyB0aGUgbWVtb3J5IHdpdGhcbi8vIHplcm9lcyBhdCBpbml0IHRpbWUgaXMgYnJ1dGFsIHdoZW4geW91IGdldCB0aGF0IGJpZy5cbi8vIEJ1dCB3aHkgbm90IGJlIGNvbXBsZXRlP1xuLy8gTWF5YmUgaW4gdGhlIGZ1dHVyZSwgdGhlc2UgbGltaXRzIHdpbGwgaGF2ZSBleHBhbmRlZC5cbmNvbnN0IGdldFVpbnRBcnJheSA9IChtYXgpID0+ICFpc1Bvc0ludChtYXgpXG4gICAgPyBudWxsXG4gICAgOiBtYXggPD0gTWF0aC5wb3coMiwgOClcbiAgICAgICAgPyBVaW50OEFycmF5XG4gICAgICAgIDogbWF4IDw9IE1hdGgucG93KDIsIDE2KVxuICAgICAgICAgICAgPyBVaW50MTZBcnJheVxuICAgICAgICAgICAgOiBtYXggPD0gTWF0aC5wb3coMiwgMzIpXG4gICAgICAgICAgICAgICAgPyBVaW50MzJBcnJheVxuICAgICAgICAgICAgICAgIDogbWF4IDw9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXG4gICAgICAgICAgICAgICAgICAgID8gWmVyb0FycmF5XG4gICAgICAgICAgICAgICAgICAgIDogbnVsbDtcbi8qIGM4IGlnbm9yZSBzdG9wICovXG5jbGFzcyBaZXJvQXJyYXkgZXh0ZW5kcyBBcnJheSB7XG4gICAgY29uc3RydWN0b3Ioc2l6ZSkge1xuICAgICAgICBzdXBlcihzaXplKTtcbiAgICAgICAgdGhpcy5maWxsKDApO1xuICAgIH1cbn1cbmNsYXNzIFN0YWNrIHtcbiAgICBoZWFwO1xuICAgIGxlbmd0aDtcbiAgICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yXG4gICAgc3RhdGljICNjb25zdHJ1Y3RpbmcgPSBmYWxzZTtcbiAgICBzdGF0aWMgY3JlYXRlKG1heCkge1xuICAgICAgICBjb25zdCBIZWFwQ2xzID0gZ2V0VWludEFycmF5KG1heCk7XG4gICAgICAgIGlmICghSGVhcENscylcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgU3RhY2suI2NvbnN0cnVjdGluZyA9IHRydWU7XG4gICAgICAgIGNvbnN0IHMgPSBuZXcgU3RhY2sobWF4LCBIZWFwQ2xzKTtcbiAgICAgICAgU3RhY2suI2NvbnN0cnVjdGluZyA9IGZhbHNlO1xuICAgICAgICByZXR1cm4gcztcbiAgICB9XG4gICAgY29uc3RydWN0b3IobWF4LCBIZWFwQ2xzKSB7XG4gICAgICAgIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICAgICAgICBpZiAoIVN0YWNrLiNjb25zdHJ1Y3RpbmcpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2luc3RhbnRpYXRlIFN0YWNrIHVzaW5nIFN0YWNrLmNyZWF0ZShuKScpO1xuICAgICAgICB9XG4gICAgICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgICAgIHRoaXMuaGVhcCA9IG5ldyBIZWFwQ2xzKG1heCk7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgcHVzaChuKSB7XG4gICAgICAgIHRoaXMuaGVhcFt0aGlzLmxlbmd0aCsrXSA9IG47XG4gICAgfVxuICAgIHBvcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGVhcFstLXRoaXMubGVuZ3RoXTtcbiAgICB9XG59XG4vKipcbiAqIERlZmF1bHQgZXhwb3J0LCB0aGUgdGhpbmcgeW91J3JlIHVzaW5nIHRoaXMgbW9kdWxlIHRvIGdldC5cbiAqXG4gKiBUaGUgYEtgIGFuZCBgVmAgdHlwZXMgZGVmaW5lIHRoZSBrZXkgYW5kIHZhbHVlIHR5cGVzLCByZXNwZWN0aXZlbHkuIFRoZVxuICogb3B0aW9uYWwgYEZDYCB0eXBlIGRlZmluZXMgdGhlIHR5cGUgb2YgdGhlIGBjb250ZXh0YCBvYmplY3QgcGFzc2VkIHRvXG4gKiBgY2FjaGUuZmV0Y2goKWAgYW5kIGBjYWNoZS5tZW1vKClgLlxuICpcbiAqIEtleXMgYW5kIHZhbHVlcyAqKm11c3Qgbm90KiogYmUgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICpcbiAqIEFsbCBwcm9wZXJ0aWVzIGZyb20gdGhlIG9wdGlvbnMgb2JqZWN0ICh3aXRoIHRoZSBleGNlcHRpb24gb2YgYG1heGAsXG4gKiBgbWF4U2l6ZWAsIGBmZXRjaE1ldGhvZGAsIGBtZW1vTWV0aG9kYCwgYGRpc3Bvc2VgIGFuZCBgZGlzcG9zZUFmdGVyYCkgYXJlXG4gKiBhZGRlZCBhcyBub3JtYWwgcHVibGljIG1lbWJlcnMuIChUaGUgbGlzdGVkIG9wdGlvbnMgYXJlIHJlYWQtb25seSBnZXR0ZXJzLilcbiAqXG4gKiBDaGFuZ2luZyBhbnkgb2YgdGhlc2Ugd2lsbCBhbHRlciB0aGUgZGVmYXVsdHMgZm9yIHN1YnNlcXVlbnQgbWV0aG9kIGNhbGxzLlxuICovXG5leHBvcnQgY2xhc3MgTFJVQ2FjaGUge1xuICAgIC8vIG9wdGlvbnMgdGhhdCBjYW5ub3QgYmUgY2hhbmdlZCB3aXRob3V0IGRpc2FzdGVyXG4gICAgI21heDtcbiAgICAjbWF4U2l6ZTtcbiAgICAjZGlzcG9zZTtcbiAgICAjZGlzcG9zZUFmdGVyO1xuICAgICNmZXRjaE1ldGhvZDtcbiAgICAjbWVtb01ldGhvZDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudHRsfVxuICAgICAqL1xuICAgIHR0bDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudHRsUmVzb2x1dGlvbn1cbiAgICAgKi9cbiAgICB0dGxSZXNvbHV0aW9uO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS50dGxBdXRvcHVyZ2V9XG4gICAgICovXG4gICAgdHRsQXV0b3B1cmdlO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS51cGRhdGVBZ2VPbkdldH1cbiAgICAgKi9cbiAgICB1cGRhdGVBZ2VPbkdldDtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UudXBkYXRlQWdlT25IYXN9XG4gICAgICovXG4gICAgdXBkYXRlQWdlT25IYXM7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmFsbG93U3RhbGV9XG4gICAgICovXG4gICAgYWxsb3dTdGFsZTtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2Uubm9EaXNwb3NlT25TZXR9XG4gICAgICovXG4gICAgbm9EaXNwb3NlT25TZXQ7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLm5vVXBkYXRlVFRMfVxuICAgICAqL1xuICAgIG5vVXBkYXRlVFRMO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5tYXhFbnRyeVNpemV9XG4gICAgICovXG4gICAgbWF4RW50cnlTaXplO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5zaXplQ2FsY3VsYXRpb259XG4gICAgICovXG4gICAgc2l6ZUNhbGN1bGF0aW9uO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb259XG4gICAgICovXG4gICAgbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5ub0RlbGV0ZU9uU3RhbGVHZXR9XG4gICAgICovXG4gICAgbm9EZWxldGVPblN0YWxlR2V0O1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5hbGxvd1N0YWxlT25GZXRjaEFib3J0fVxuICAgICAqL1xuICAgIGFsbG93U3RhbGVPbkZldGNoQWJvcnQ7XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9ufVxuICAgICAqL1xuICAgIGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uO1xuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5pZ25vcmVGZXRjaEFib3J0fVxuICAgICAqL1xuICAgIGlnbm9yZUZldGNoQWJvcnQ7XG4gICAgLy8gY29tcHV0ZWQgcHJvcGVydGllc1xuICAgICNzaXplO1xuICAgICNjYWxjdWxhdGVkU2l6ZTtcbiAgICAja2V5TWFwO1xuICAgICNrZXlMaXN0O1xuICAgICN2YWxMaXN0O1xuICAgICNuZXh0O1xuICAgICNwcmV2O1xuICAgICNoZWFkO1xuICAgICN0YWlsO1xuICAgICNmcmVlO1xuICAgICNkaXNwb3NlZDtcbiAgICAjc2l6ZXM7XG4gICAgI3N0YXJ0cztcbiAgICAjdHRscztcbiAgICAjaGFzRGlzcG9zZTtcbiAgICAjaGFzRmV0Y2hNZXRob2Q7XG4gICAgI2hhc0Rpc3Bvc2VBZnRlcjtcbiAgICAvKipcbiAgICAgKiBEbyBub3QgY2FsbCB0aGlzIG1ldGhvZCB1bmxlc3MgeW91IG5lZWQgdG8gaW5zcGVjdCB0aGVcbiAgICAgKiBpbm5lciB3b3JraW5ncyBvZiB0aGUgY2FjaGUuICBJZiBhbnl0aGluZyByZXR1cm5lZCBieSB0aGlzXG4gICAgICogb2JqZWN0IGlzIG1vZGlmaWVkIGluIGFueSB3YXksIHN0cmFuZ2UgYnJlYWthZ2UgbWF5IG9jY3VyLlxuICAgICAqXG4gICAgICogVGhlc2UgZmllbGRzIGFyZSBwcml2YXRlIGZvciBhIHJlYXNvbiFcbiAgICAgKlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHN0YXRpYyB1bnNhZmVFeHBvc2VJbnRlcm5hbHMoYykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLy8gcHJvcGVydGllc1xuICAgICAgICAgICAgc3RhcnRzOiBjLiNzdGFydHMsXG4gICAgICAgICAgICB0dGxzOiBjLiN0dGxzLFxuICAgICAgICAgICAgc2l6ZXM6IGMuI3NpemVzLFxuICAgICAgICAgICAga2V5TWFwOiBjLiNrZXlNYXAsXG4gICAgICAgICAgICBrZXlMaXN0OiBjLiNrZXlMaXN0LFxuICAgICAgICAgICAgdmFsTGlzdDogYy4jdmFsTGlzdCxcbiAgICAgICAgICAgIG5leHQ6IGMuI25leHQsXG4gICAgICAgICAgICBwcmV2OiBjLiNwcmV2LFxuICAgICAgICAgICAgZ2V0IGhlYWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuI2hlYWQ7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHRhaWwoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuI3RhaWw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZnJlZTogYy4jZnJlZSxcbiAgICAgICAgICAgIC8vIG1ldGhvZHNcbiAgICAgICAgICAgIGlzQmFja2dyb3VuZEZldGNoOiAocCkgPT4gYy4jaXNCYWNrZ3JvdW5kRmV0Y2gocCksXG4gICAgICAgICAgICBiYWNrZ3JvdW5kRmV0Y2g6IChrLCBpbmRleCwgb3B0aW9ucywgY29udGV4dCkgPT4gYy4jYmFja2dyb3VuZEZldGNoKGssIGluZGV4LCBvcHRpb25zLCBjb250ZXh0KSxcbiAgICAgICAgICAgIG1vdmVUb1RhaWw6IChpbmRleCkgPT4gYy4jbW92ZVRvVGFpbChpbmRleCksXG4gICAgICAgICAgICBpbmRleGVzOiAob3B0aW9ucykgPT4gYy4jaW5kZXhlcyhvcHRpb25zKSxcbiAgICAgICAgICAgIHJpbmRleGVzOiAob3B0aW9ucykgPT4gYy4jcmluZGV4ZXMob3B0aW9ucyksXG4gICAgICAgICAgICBpc1N0YWxlOiAoaW5kZXgpID0+IGMuI2lzU3RhbGUoaW5kZXgpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBQcm90ZWN0ZWQgcmVhZC1vbmx5IG1lbWJlcnNcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UubWF4fSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBtYXgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiNtYXg7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5tYXhTaXplfSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBtYXhTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jbWF4U2l6ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhlIHRvdGFsIGNvbXB1dGVkIHNpemUgb2YgaXRlbXMgaW4gdGhlIGNhY2hlIChyZWFkLW9ubHkpXG4gICAgICovXG4gICAgZ2V0IGNhbGN1bGF0ZWRTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jY2FsY3VsYXRlZFNpemU7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgaXRlbXMgc3RvcmVkIGluIHRoZSBjYWNoZSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBzaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jc2l6ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmZldGNoTWV0aG9kfSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBmZXRjaE1ldGhvZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2ZldGNoTWV0aG9kO1xuICAgIH1cbiAgICBnZXQgbWVtb01ldGhvZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI21lbW9NZXRob2Q7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIHtAbGluayBMUlVDYWNoZS5PcHRpb25zQmFzZS5kaXNwb3NlfSAocmVhZC1vbmx5KVxuICAgICAqL1xuICAgIGdldCBkaXNwb3NlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jZGlzcG9zZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmRpc3Bvc2VBZnRlcn0gKHJlYWQtb25seSlcbiAgICAgKi9cbiAgICBnZXQgZGlzcG9zZUFmdGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jZGlzcG9zZUFmdGVyO1xuICAgIH1cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHsgbWF4ID0gMCwgdHRsLCB0dGxSZXNvbHV0aW9uID0gMSwgdHRsQXV0b3B1cmdlLCB1cGRhdGVBZ2VPbkdldCwgdXBkYXRlQWdlT25IYXMsIGFsbG93U3RhbGUsIGRpc3Bvc2UsIGRpc3Bvc2VBZnRlciwgbm9EaXNwb3NlT25TZXQsIG5vVXBkYXRlVFRMLCBtYXhTaXplID0gMCwgbWF4RW50cnlTaXplID0gMCwgc2l6ZUNhbGN1bGF0aW9uLCBmZXRjaE1ldGhvZCwgbWVtb01ldGhvZCwgbm9EZWxldGVPbkZldGNoUmVqZWN0aW9uLCBub0RlbGV0ZU9uU3RhbGVHZXQsIGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLCBhbGxvd1N0YWxlT25GZXRjaEFib3J0LCBpZ25vcmVGZXRjaEFib3J0LCB9ID0gb3B0aW9ucztcbiAgICAgICAgaWYgKG1heCAhPT0gMCAmJiAhaXNQb3NJbnQobWF4KSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG9wdGlvbiBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IFVpbnRBcnJheSA9IG1heCA/IGdldFVpbnRBcnJheShtYXgpIDogQXJyYXk7XG4gICAgICAgIGlmICghVWludEFycmF5KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgbWF4IHZhbHVlOiAnICsgbWF4KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNtYXggPSBtYXg7XG4gICAgICAgIHRoaXMuI21heFNpemUgPSBtYXhTaXplO1xuICAgICAgICB0aGlzLm1heEVudHJ5U2l6ZSA9IG1heEVudHJ5U2l6ZSB8fCB0aGlzLiNtYXhTaXplO1xuICAgICAgICB0aGlzLnNpemVDYWxjdWxhdGlvbiA9IHNpemVDYWxjdWxhdGlvbjtcbiAgICAgICAgaWYgKHRoaXMuc2l6ZUNhbGN1bGF0aW9uKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuI21heFNpemUgJiYgIXRoaXMubWF4RW50cnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2Fubm90IHNldCBzaXplQ2FsY3VsYXRpb24gd2l0aG91dCBzZXR0aW5nIG1heFNpemUgb3IgbWF4RW50cnlTaXplJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2l6ZUNhbGN1bGF0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZUNhbGN1bGF0aW9uIHNldCB0byBub24tZnVuY3Rpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtb01ldGhvZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0eXBlb2YgbWVtb01ldGhvZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVtb01ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgZGVmaW5lZCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI21lbW9NZXRob2QgPSBtZW1vTWV0aG9kO1xuICAgICAgICBpZiAoZmV0Y2hNZXRob2QgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgdHlwZW9mIGZldGNoTWV0aG9kICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdmZXRjaE1ldGhvZCBtdXN0IGJlIGEgZnVuY3Rpb24gaWYgc3BlY2lmaWVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jZmV0Y2hNZXRob2QgPSBmZXRjaE1ldGhvZDtcbiAgICAgICAgdGhpcy4jaGFzRmV0Y2hNZXRob2QgPSAhIWZldGNoTWV0aG9kO1xuICAgICAgICB0aGlzLiNrZXlNYXAgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuI2tleUxpc3QgPSBuZXcgQXJyYXkobWF4KS5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuI3ZhbExpc3QgPSBuZXcgQXJyYXkobWF4KS5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIHRoaXMuI25leHQgPSBuZXcgVWludEFycmF5KG1heCk7XG4gICAgICAgIHRoaXMuI3ByZXYgPSBuZXcgVWludEFycmF5KG1heCk7XG4gICAgICAgIHRoaXMuI2hlYWQgPSAwO1xuICAgICAgICB0aGlzLiN0YWlsID0gMDtcbiAgICAgICAgdGhpcy4jZnJlZSA9IFN0YWNrLmNyZWF0ZShtYXgpO1xuICAgICAgICB0aGlzLiNzaXplID0gMDtcbiAgICAgICAgdGhpcy4jY2FsY3VsYXRlZFNpemUgPSAwO1xuICAgICAgICBpZiAodHlwZW9mIGRpc3Bvc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2UgPSBkaXNwb3NlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgZGlzcG9zZUFmdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXIgPSBkaXNwb3NlQWZ0ZXI7XG4gICAgICAgICAgICB0aGlzLiNkaXNwb3NlZCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jaGFzRGlzcG9zZSA9ICEhdGhpcy4jZGlzcG9zZTtcbiAgICAgICAgdGhpcy4jaGFzRGlzcG9zZUFmdGVyID0gISF0aGlzLiNkaXNwb3NlQWZ0ZXI7XG4gICAgICAgIHRoaXMubm9EaXNwb3NlT25TZXQgPSAhIW5vRGlzcG9zZU9uU2V0O1xuICAgICAgICB0aGlzLm5vVXBkYXRlVFRMID0gISFub1VwZGF0ZVRUTDtcbiAgICAgICAgdGhpcy5ub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24gPSAhIW5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtcbiAgICAgICAgdGhpcy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbiA9ICEhYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb247XG4gICAgICAgIHRoaXMuYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCA9ICEhYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydDtcbiAgICAgICAgdGhpcy5pZ25vcmVGZXRjaEFib3J0ID0gISFpZ25vcmVGZXRjaEFib3J0O1xuICAgICAgICAvLyBOQjogbWF4RW50cnlTaXplIGlzIHNldCB0byBtYXhTaXplIGlmIGl0J3Mgc2V0XG4gICAgICAgIGlmICh0aGlzLm1heEVudHJ5U2l6ZSAhPT0gMCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuI21heFNpemUgIT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAoIWlzUG9zSW50KHRoaXMuI21heFNpemUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heFNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc1Bvc0ludCh0aGlzLm1heEVudHJ5U2l6ZSkpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXhFbnRyeVNpemUgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIgaWYgc3BlY2lmaWVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNpbml0aWFsaXplU2l6ZVRyYWNraW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hbGxvd1N0YWxlID0gISFhbGxvd1N0YWxlO1xuICAgICAgICB0aGlzLm5vRGVsZXRlT25TdGFsZUdldCA9ICEhbm9EZWxldGVPblN0YWxlR2V0O1xuICAgICAgICB0aGlzLnVwZGF0ZUFnZU9uR2V0ID0gISF1cGRhdGVBZ2VPbkdldDtcbiAgICAgICAgdGhpcy51cGRhdGVBZ2VPbkhhcyA9ICEhdXBkYXRlQWdlT25IYXM7XG4gICAgICAgIHRoaXMudHRsUmVzb2x1dGlvbiA9XG4gICAgICAgICAgICBpc1Bvc0ludCh0dGxSZXNvbHV0aW9uKSB8fCB0dGxSZXNvbHV0aW9uID09PSAwXG4gICAgICAgICAgICAgICAgPyB0dGxSZXNvbHV0aW9uXG4gICAgICAgICAgICAgICAgOiAxO1xuICAgICAgICB0aGlzLnR0bEF1dG9wdXJnZSA9ICEhdHRsQXV0b3B1cmdlO1xuICAgICAgICB0aGlzLnR0bCA9IHR0bCB8fCAwO1xuICAgICAgICBpZiAodGhpcy50dGwpIHtcbiAgICAgICAgICAgIGlmICghaXNQb3NJbnQodGhpcy50dGwpKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndHRsIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmIHNwZWNpZmllZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy4jaW5pdGlhbGl6ZVRUTFRyYWNraW5nKCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZG8gbm90IGFsbG93IGNvbXBsZXRlbHkgdW5ib3VuZGVkIGNhY2hlc1xuICAgICAgICBpZiAodGhpcy4jbWF4ID09PSAwICYmIHRoaXMudHRsID09PSAwICYmIHRoaXMuI21heFNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0F0IGxlYXN0IG9uZSBvZiBtYXgsIG1heFNpemUsIG9yIHR0bCBpcyByZXF1aXJlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50dGxBdXRvcHVyZ2UgJiYgIXRoaXMuI21heCAmJiAhdGhpcy4jbWF4U2l6ZSkge1xuICAgICAgICAgICAgY29uc3QgY29kZSA9ICdMUlVfQ0FDSEVfVU5CT1VOREVEJztcbiAgICAgICAgICAgIGlmIChzaG91bGRXYXJuKGNvZGUpKSB7XG4gICAgICAgICAgICAgICAgd2FybmVkLmFkZChjb2RlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBtc2cgPSAnVFRMIGNhY2hpbmcgd2l0aG91dCB0dGxBdXRvcHVyZ2UsIG1heCwgb3IgbWF4U2l6ZSBjYW4gJyArXG4gICAgICAgICAgICAgICAgICAgICdyZXN1bHQgaW4gdW5ib3VuZGVkIG1lbW9yeSBjb25zdW1wdGlvbi4nO1xuICAgICAgICAgICAgICAgIGVtaXRXYXJuaW5nKG1zZywgJ1VuYm91bmRlZENhY2hlV2FybmluZycsIGNvZGUsIExSVUNhY2hlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBtcyBsZWZ0IGluIHRoZSBpdGVtJ3MgVFRMLiBJZiBpdGVtIGlzIG5vdCBpbiBjYWNoZSxcbiAgICAgKiByZXR1cm5zIGAwYC4gUmV0dXJucyBgSW5maW5pdHlgIGlmIGl0ZW0gaXMgaW4gY2FjaGUgd2l0aG91dCBhIGRlZmluZWQgVFRMLlxuICAgICAqL1xuICAgIGdldFJlbWFpbmluZ1RUTChrZXkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2tleU1hcC5oYXMoa2V5KSA/IEluZmluaXR5IDogMDtcbiAgICB9XG4gICAgI2luaXRpYWxpemVUVExUcmFja2luZygpIHtcbiAgICAgICAgY29uc3QgdHRscyA9IG5ldyBaZXJvQXJyYXkodGhpcy4jbWF4KTtcbiAgICAgICAgY29uc3Qgc3RhcnRzID0gbmV3IFplcm9BcnJheSh0aGlzLiNtYXgpO1xuICAgICAgICB0aGlzLiN0dGxzID0gdHRscztcbiAgICAgICAgdGhpcy4jc3RhcnRzID0gc3RhcnRzO1xuICAgICAgICB0aGlzLiNzZXRJdGVtVFRMID0gKGluZGV4LCB0dGwsIHN0YXJ0ID0gcGVyZi5ub3coKSkgPT4ge1xuICAgICAgICAgICAgc3RhcnRzW2luZGV4XSA9IHR0bCAhPT0gMCA/IHN0YXJ0IDogMDtcbiAgICAgICAgICAgIHR0bHNbaW5kZXhdID0gdHRsO1xuICAgICAgICAgICAgaWYgKHR0bCAhPT0gMCAmJiB0aGlzLnR0bEF1dG9wdXJnZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2lzU3RhbGUoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkZWxldGUodGhpcy4ja2V5TGlzdFtpbmRleF0sICdleHBpcmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHR0bCArIDEpO1xuICAgICAgICAgICAgICAgIC8vIHVucmVmKCkgbm90IHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZvcm1zXG4gICAgICAgICAgICAgICAgLyogYzggaWdub3JlIHN0YXJ0ICovXG4gICAgICAgICAgICAgICAgaWYgKHQudW5yZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgdC51bnJlZigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvKiBjOCBpZ25vcmUgc3RvcCAqL1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLiN1cGRhdGVJdGVtQWdlID0gaW5kZXggPT4ge1xuICAgICAgICAgICAgc3RhcnRzW2luZGV4XSA9IHR0bHNbaW5kZXhdICE9PSAwID8gcGVyZi5ub3coKSA6IDA7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuI3N0YXR1c1RUTCA9IChzdGF0dXMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAodHRsc1tpbmRleF0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCB0dGwgPSB0dGxzW2luZGV4XTtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0c1tpbmRleF07XG4gICAgICAgICAgICAgICAgLyogYzggaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgICAgICBpZiAoIXR0bCB8fCAhc3RhcnQpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBzdGF0dXMudHRsID0gdHRsO1xuICAgICAgICAgICAgICAgIHN0YXR1cy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICAgICAgICAgIHN0YXR1cy5ub3cgPSBjYWNoZWROb3cgfHwgZ2V0Tm93KCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWdlID0gc3RhdHVzLm5vdyAtIHN0YXJ0O1xuICAgICAgICAgICAgICAgIHN0YXR1cy5yZW1haW5pbmdUVEwgPSB0dGwgLSBhZ2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIC8vIGRlYm91bmNlIGNhbGxzIHRvIHBlcmYubm93KCkgdG8gMXMgc28gd2UncmUgbm90IGhpdHRpbmdcbiAgICAgICAgLy8gdGhhdCBjb3N0bHkgY2FsbCByZXBlYXRlZGx5LlxuICAgICAgICBsZXQgY2FjaGVkTm93ID0gMDtcbiAgICAgICAgY29uc3QgZ2V0Tm93ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbiA9IHBlcmYubm93KCk7XG4gICAgICAgICAgICBpZiAodGhpcy50dGxSZXNvbHV0aW9uID4gMCkge1xuICAgICAgICAgICAgICAgIGNhY2hlZE5vdyA9IG47XG4gICAgICAgICAgICAgICAgY29uc3QgdCA9IHNldFRpbWVvdXQoKCkgPT4gKGNhY2hlZE5vdyA9IDApLCB0aGlzLnR0bFJlc29sdXRpb24pO1xuICAgICAgICAgICAgICAgIC8vIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtc1xuICAgICAgICAgICAgICAgIC8qIGM4IGlnbm9yZSBzdGFydCAqL1xuICAgICAgICAgICAgICAgIGlmICh0LnVucmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHQudW5yZWYoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyogYzggaWdub3JlIHN0b3AgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmdldFJlbWFpbmluZ1RUTCA9IGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoa2V5KTtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0dGwgPSB0dGxzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gc3RhcnRzW2luZGV4XTtcbiAgICAgICAgICAgIGlmICghdHRsIHx8ICFzdGFydCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBJbmZpbml0eTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFnZSA9IChjYWNoZWROb3cgfHwgZ2V0Tm93KCkpIC0gc3RhcnQ7XG4gICAgICAgICAgICByZXR1cm4gdHRsIC0gYWdlO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNpc1N0YWxlID0gaW5kZXggPT4ge1xuICAgICAgICAgICAgY29uc3QgcyA9IHN0YXJ0c1tpbmRleF07XG4gICAgICAgICAgICBjb25zdCB0ID0gdHRsc1tpbmRleF07XG4gICAgICAgICAgICByZXR1cm4gISF0ICYmICEhcyAmJiAoY2FjaGVkTm93IHx8IGdldE5vdygpKSAtIHMgPiB0O1xuICAgICAgICB9O1xuICAgIH1cbiAgICAvLyBjb25kaXRpb25hbGx5IHNldCBwcml2YXRlIG1ldGhvZHMgcmVsYXRlZCB0byBUVExcbiAgICAjdXBkYXRlSXRlbUFnZSA9ICgpID0+IHsgfTtcbiAgICAjc3RhdHVzVFRMID0gKCkgPT4geyB9O1xuICAgICNzZXRJdGVtVFRMID0gKCkgPT4geyB9O1xuICAgIC8qIGM4IGlnbm9yZSBzdG9wICovXG4gICAgI2lzU3RhbGUgPSAoKSA9PiBmYWxzZTtcbiAgICAjaW5pdGlhbGl6ZVNpemVUcmFja2luZygpIHtcbiAgICAgICAgY29uc3Qgc2l6ZXMgPSBuZXcgWmVyb0FycmF5KHRoaXMuI21heCk7XG4gICAgICAgIHRoaXMuI2NhbGN1bGF0ZWRTaXplID0gMDtcbiAgICAgICAgdGhpcy4jc2l6ZXMgPSBzaXplcztcbiAgICAgICAgdGhpcy4jcmVtb3ZlSXRlbVNpemUgPSBpbmRleCA9PiB7XG4gICAgICAgICAgICB0aGlzLiNjYWxjdWxhdGVkU2l6ZSAtPSBzaXplc1tpbmRleF07XG4gICAgICAgICAgICBzaXplc1tpbmRleF0gPSAwO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLiNyZXF1aXJlU2l6ZSA9IChrLCB2LCBzaXplLCBzaXplQ2FsY3VsYXRpb24pID0+IHtcbiAgICAgICAgICAgIC8vIHByb3Zpc2lvbmFsbHkgYWNjZXB0IGJhY2tncm91bmQgZmV0Y2hlcy5cbiAgICAgICAgICAgIC8vIGFjdHVhbCB2YWx1ZSBzaXplIHdpbGwgYmUgY2hlY2tlZCB3aGVuIHRoZXkgcmV0dXJuLlxuICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWlzUG9zSW50KHNpemUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpemVDYWxjdWxhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNpemVDYWxjdWxhdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2l6ZUNhbGN1bGF0aW9uIG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNpemUgPSBzaXplQ2FsY3VsYXRpb24odiwgayk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghaXNQb3NJbnQoc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NpemVDYWxjdWxhdGlvbiByZXR1cm4gaW52YWxpZCAoZXhwZWN0IHBvc2l0aXZlIGludGVnZXIpJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludmFsaWQgc2l6ZSB2YWx1ZSAobXVzdCBiZSBwb3NpdGl2ZSBpbnRlZ2VyKS4gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnV2hlbiBtYXhTaXplIG9yIG1heEVudHJ5U2l6ZSBpcyB1c2VkLCBzaXplQ2FsY3VsYXRpb24gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAnb3Igc2l6ZSBtdXN0IGJlIHNldC4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy4jYWRkSXRlbVNpemUgPSAoaW5kZXgsIHNpemUsIHN0YXR1cykgPT4ge1xuICAgICAgICAgICAgc2l6ZXNbaW5kZXhdID0gc2l6ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLiNtYXhTaXplKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgbWF4U2l6ZSA9IHRoaXMuI21heFNpemUgLSBzaXplc1tpbmRleF07XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuI2NhbGN1bGF0ZWRTaXplID4gbWF4U2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNldmljdCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLiNjYWxjdWxhdGVkU2l6ZSArPSBzaXplc1tpbmRleF07XG4gICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmVudHJ5U2l6ZSA9IHNpemU7XG4gICAgICAgICAgICAgICAgc3RhdHVzLnRvdGFsQ2FsY3VsYXRlZFNpemUgPSB0aGlzLiNjYWxjdWxhdGVkU2l6ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG4gICAgI3JlbW92ZUl0ZW1TaXplID0gX2kgPT4geyB9O1xuICAgICNhZGRJdGVtU2l6ZSA9IChfaSwgX3MsIF9zdCkgPT4geyB9O1xuICAgICNyZXF1aXJlU2l6ZSA9IChfaywgX3YsIHNpemUsIHNpemVDYWxjdWxhdGlvbikgPT4ge1xuICAgICAgICBpZiAoc2l6ZSB8fCBzaXplQ2FsY3VsYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2Nhbm5vdCBzZXQgc2l6ZSB3aXRob3V0IHNldHRpbmcgbWF4U2l6ZSBvciBtYXhFbnRyeVNpemUgb24gY2FjaGUnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gMDtcbiAgICB9O1xuICAgICojaW5kZXhlcyh7IGFsbG93U3RhbGUgPSB0aGlzLmFsbG93U3RhbGUgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLiNzaXplKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy4jdGFpbDsgdHJ1ZTspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuI2lzVmFsaWRJbmRleChpKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFsbG93U3RhbGUgfHwgIXRoaXMuI2lzU3RhbGUoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuI2hlYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy4jcHJldltpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgKiNyaW5kZXhlcyh7IGFsbG93U3RhbGUgPSB0aGlzLmFsbG93U3RhbGUgfSA9IHt9KSB7XG4gICAgICAgIGlmICh0aGlzLiNzaXplKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy4jaGVhZDsgdHJ1ZTspIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuI2lzVmFsaWRJbmRleChpKSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGFsbG93U3RhbGUgfHwgIXRoaXMuI2lzU3RhbGUoaSkpIHtcbiAgICAgICAgICAgICAgICAgICAgeWllbGQgaTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGkgPT09IHRoaXMuI3RhaWwpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpID0gdGhpcy4jbmV4dFtpXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgI2lzVmFsaWRJbmRleChpbmRleCkge1xuICAgICAgICByZXR1cm4gKGluZGV4ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMuI2tleU1hcC5nZXQodGhpcy4ja2V5TGlzdFtpbmRleF0pID09PSBpbmRleCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyBgW2tleSwgdmFsdWVdYCBwYWlycyxcbiAgICAgKiBpbiBvcmRlciBmcm9tIG1vc3QgcmVjZW50bHkgdXNlZCB0byBsZWFzdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICplbnRyaWVzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy4jdmFsTGlzdFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy4ja2V5TGlzdFtpXSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHRoaXMuI3ZhbExpc3RbaV0pKSB7XG4gICAgICAgICAgICAgICAgeWllbGQgW3RoaXMuI2tleUxpc3RbaV0sIHRoaXMuI3ZhbExpc3RbaV1dO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEludmVyc2Ugb3JkZXIgdmVyc2lvbiBvZiB7QGxpbmsgTFJVQ2FjaGUuZW50cmllc31cbiAgICAgKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyBgW2tleSwgdmFsdWVdYCBwYWlycyxcbiAgICAgKiBpbiBvcmRlciBmcm9tIGxlYXN0IHJlY2VudGx5IHVzZWQgdG8gbW9zdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICpyZW50cmllcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI3JpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLiN2YWxMaXN0W2ldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICB0aGlzLiNrZXlMaXN0W2ldICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBbdGhpcy4ja2V5TGlzdFtpXSwgdGhpcy4jdmFsTGlzdFtpXV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJuIGEgZ2VuZXJhdG9yIHlpZWxkaW5nIHRoZSBrZXlzIGluIHRoZSBjYWNoZSxcbiAgICAgKiBpbiBvcmRlciBmcm9tIG1vc3QgcmVjZW50bHkgdXNlZCB0byBsZWFzdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICprZXlzKCkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBrID0gdGhpcy4ja2V5TGlzdFtpXTtcbiAgICAgICAgICAgIGlmIChrICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEludmVyc2Ugb3JkZXIgdmVyc2lvbiBvZiB7QGxpbmsgTFJVQ2FjaGUua2V5c31cbiAgICAgKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyB0aGUga2V5cyBpbiB0aGUgY2FjaGUsXG4gICAgICogaW4gb3JkZXIgZnJvbSBsZWFzdCByZWNlbnRseSB1c2VkIHRvIG1vc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqcmtleXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNyaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCBrID0gdGhpcy4ja2V5TGlzdFtpXTtcbiAgICAgICAgICAgIGlmIChrICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godGhpcy4jdmFsTGlzdFtpXSkpIHtcbiAgICAgICAgICAgICAgICB5aWVsZCBrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIGdlbmVyYXRvciB5aWVsZGluZyB0aGUgdmFsdWVzIGluIHRoZSBjYWNoZSxcbiAgICAgKiBpbiBvcmRlciBmcm9tIG1vc3QgcmVjZW50bHkgdXNlZCB0byBsZWFzdCByZWNlbnRseSB1c2VkLlxuICAgICAqL1xuICAgICp2YWx1ZXMoKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSW52ZXJzZSBvcmRlciB2ZXJzaW9uIG9mIHtAbGluayBMUlVDYWNoZS52YWx1ZXN9XG4gICAgICpcbiAgICAgKiBSZXR1cm4gYSBnZW5lcmF0b3IgeWllbGRpbmcgdGhlIHZhbHVlcyBpbiB0aGUgY2FjaGUsXG4gICAgICogaW4gb3JkZXIgZnJvbSBsZWFzdCByZWNlbnRseSB1c2VkIHRvIG1vc3QgcmVjZW50bHkgdXNlZC5cbiAgICAgKi9cbiAgICAqcnZhbHVlcygpIHtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI3JpbmRleGVzKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh0aGlzLiN2YWxMaXN0W2ldKSkge1xuICAgICAgICAgICAgICAgIHlpZWxkIHRoaXMuI3ZhbExpc3RbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogSXRlcmF0aW5nIG92ZXIgdGhlIGNhY2hlIGl0c2VsZiB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0cyBhc1xuICAgICAqIHtAbGluayBMUlVDYWNoZS5lbnRyaWVzfVxuICAgICAqL1xuICAgIFtTeW1ib2wuaXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRyaWVzKCk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEEgU3RyaW5nIHZhbHVlIHRoYXQgaXMgdXNlZCBpbiB0aGUgY3JlYXRpb24gb2YgdGhlIGRlZmF1bHQgc3RyaW5nXG4gICAgICogZGVzY3JpcHRpb24gb2YgYW4gb2JqZWN0LiBDYWxsZWQgYnkgdGhlIGJ1aWx0LWluIG1ldGhvZFxuICAgICAqIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYC5cbiAgICAgKi9cbiAgICBbU3ltYm9sLnRvU3RyaW5nVGFnXSA9ICdMUlVDYWNoZSc7XG4gICAgLyoqXG4gICAgICogRmluZCBhIHZhbHVlIGZvciB3aGljaCB0aGUgc3VwcGxpZWQgZm4gbWV0aG9kIHJldHVybnMgYSB0cnV0aHkgdmFsdWUsXG4gICAgICogc2ltaWxhciB0byBgQXJyYXkuZmluZCgpYC4gZm4gaXMgY2FsbGVkIGFzIGBmbih2YWx1ZSwga2V5LCBjYWNoZSlgLlxuICAgICAqL1xuICAgIGZpbmQoZm4sIGdldE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godilcbiAgICAgICAgICAgICAgICA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICA6IHY7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGlmIChmbih2YWx1ZSwgdGhpcy4ja2V5TGlzdFtpXSwgdGhpcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQodGhpcy4ja2V5TGlzdFtpXSwgZ2V0T3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsbCB0aGUgc3VwcGxpZWQgZnVuY3Rpb24gb24gZWFjaCBpdGVtIGluIHRoZSBjYWNoZSwgaW4gb3JkZXIgZnJvbSBtb3N0XG4gICAgICogcmVjZW50bHkgdXNlZCB0byBsZWFzdCByZWNlbnRseSB1c2VkLlxuICAgICAqXG4gICAgICogYGZuYCBpcyBjYWxsZWQgYXMgYGZuKHZhbHVlLCBrZXksIGNhY2hlKWAuXG4gICAgICpcbiAgICAgKiBJZiBgdGhpc3BgIGlzIHByb3ZpZGVkLCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBpbiB0aGUgYHRoaXNgLWNvbnRleHQgb2ZcbiAgICAgKiB0aGUgcHJvdmlkZWQgb2JqZWN0LCBvciB0aGUgY2FjaGUgaWYgbm8gYHRoaXNwYCBvYmplY3QgaXMgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBEb2VzIG5vdCB1cGRhdGUgYWdlIG9yIHJlY2VudHkgb2YgdXNlLCBvciBpdGVyYXRlIG92ZXIgc3RhbGUgdmFsdWVzLlxuICAgICAqL1xuICAgIGZvckVhY2goZm4sIHRoaXNwID0gdGhpcykge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgdGhpcy4jaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godilcbiAgICAgICAgICAgICAgICA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICA6IHY7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGZuLmNhbGwodGhpc3AsIHZhbHVlLCB0aGlzLiNrZXlMaXN0W2ldLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgTFJVQ2FjaGUuZm9yRWFjaH0gYnV0IGl0ZW1zIGFyZSBpdGVyYXRlZCBvdmVyIGluXG4gICAgICogcmV2ZXJzZSBvcmRlci4gIChpZSwgbGVzcyByZWNlbnRseSB1c2VkIGl0ZW1zIGFyZSBpdGVyYXRlZCBvdmVyIGZpcnN0LilcbiAgICAgKi9cbiAgICByZm9yRWFjaChmbiwgdGhpc3AgPSB0aGlzKSB7XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNyaW5kZXhlcygpKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godilcbiAgICAgICAgICAgICAgICA/IHYuX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICA6IHY7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGZuLmNhbGwodGhpc3AsIHZhbHVlLCB0aGlzLiNrZXlMaXN0W2ldLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZWxldGUgYW55IHN0YWxlIGVudHJpZXMuIFJldHVybnMgdHJ1ZSBpZiBhbnl0aGluZyB3YXMgcmVtb3ZlZCxcbiAgICAgKiBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgcHVyZ2VTdGFsZSgpIHtcbiAgICAgICAgbGV0IGRlbGV0ZWQgPSBmYWxzZTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIHRoaXMuI3JpbmRleGVzKHsgYWxsb3dTdGFsZTogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2lzU3RhbGUoaSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkZWxldGUodGhpcy4ja2V5TGlzdFtpXSwgJ2V4cGlyZScpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZWxldGVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGV4dGVuZGVkIGluZm8gYWJvdXQgYSBnaXZlbiBlbnRyeSwgdG8gZ2V0IGl0cyB2YWx1ZSwgc2l6ZSwgYW5kXG4gICAgICogVFRMIGluZm8gc2ltdWx0YW5lb3VzbHkuIFJldHVybnMgYHVuZGVmaW5lZGAgaWYgdGhlIGtleSBpcyBub3QgcHJlc2VudC5cbiAgICAgKlxuICAgICAqIFVubGlrZSB7QGxpbmsgTFJVQ2FjaGUjZHVtcH0sIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIHBvcnRhYmxlIGFuZCBzdXJ2aXZlXG4gICAgICogc2VyaWFsaXphdGlvbiwgdGhlIGBzdGFydGAgdmFsdWUgaXMgYWx3YXlzIHRoZSBjdXJyZW50IHRpbWVzdGFtcCwgYW5kIHRoZVxuICAgICAqIGB0dGxgIGlzIGEgY2FsY3VsYXRlZCByZW1haW5pbmcgdGltZSB0byBsaXZlIChuZWdhdGl2ZSBpZiBleHBpcmVkKS5cbiAgICAgKlxuICAgICAqIEFsd2F5cyByZXR1cm5zIHN0YWxlIHZhbHVlcywgaWYgdGhlaXIgaW5mbyBpcyBmb3VuZCBpbiB0aGUgY2FjaGUsIHNvIGJlXG4gICAgICogc3VyZSB0byBjaGVjayBmb3IgZXhwaXJhdGlvbnMgKGllLCBhIG5lZ2F0aXZlIHtAbGluayBMUlVDYWNoZS5FbnRyeSN0dGx9KVxuICAgICAqIGlmIHJlbGV2YW50LlxuICAgICAqL1xuICAgIGluZm8oa2V5KSB7XG4gICAgICAgIGNvbnN0IGkgPSB0aGlzLiNrZXlNYXAuZ2V0KGtleSk7XG4gICAgICAgIGlmIChpID09PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpXTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KVxuICAgICAgICAgICAgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nXG4gICAgICAgICAgICA6IHY7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY29uc3QgZW50cnkgPSB7IHZhbHVlIH07XG4gICAgICAgIGlmICh0aGlzLiN0dGxzICYmIHRoaXMuI3N0YXJ0cykge1xuICAgICAgICAgICAgY29uc3QgdHRsID0gdGhpcy4jdHRsc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy4jc3RhcnRzW2ldO1xuICAgICAgICAgICAgaWYgKHR0bCAmJiBzdGFydCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbiA9IHR0bCAtIChwZXJmLm5vdygpIC0gc3RhcnQpO1xuICAgICAgICAgICAgICAgIGVudHJ5LnR0bCA9IHJlbWFpbjtcbiAgICAgICAgICAgICAgICBlbnRyeS5zdGFydCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuI3NpemVzKSB7XG4gICAgICAgICAgICBlbnRyeS5zaXplID0gdGhpcy4jc2l6ZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gYW4gYXJyYXkgb2YgW2tleSwge0BsaW5rIExSVUNhY2hlLkVudHJ5fV0gdHVwbGVzIHdoaWNoIGNhbiBiZVxuICAgICAqIHBhc3NlZCB0byB7QGxpbmsgTFJMVUNhY2hlI2xvYWR9LlxuICAgICAqXG4gICAgICogVGhlIGBzdGFydGAgZmllbGRzIGFyZSBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIGEgcG9ydGFibGUgYERhdGUubm93KClgXG4gICAgICogdGltZXN0YW1wLCBldmVuIGlmIGBwZXJmb3JtYW5jZS5ub3coKWAgaXMgYXZhaWxhYmxlLlxuICAgICAqXG4gICAgICogU3RhbGUgZW50cmllcyBhcmUgYWx3YXlzIGluY2x1ZGVkIGluIHRoZSBgZHVtcGAsIGV2ZW4gaWZcbiAgICAgKiB7QGxpbmsgTFJVQ2FjaGUuT3B0aW9uc0Jhc2UuYWxsb3dTdGFsZX0gaXMgZmFsc2UuXG4gICAgICpcbiAgICAgKiBOb3RlOiB0aGlzIHJldHVybnMgYW4gYWN0dWFsIGFycmF5LCBub3QgYSBnZW5lcmF0b3IsIHNvIGl0IGNhbiBiZSBtb3JlXG4gICAgICogZWFzaWx5IHBhc3NlZCBhcm91bmQuXG4gICAgICovXG4gICAgZHVtcCgpIHtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvciAoY29uc3QgaSBvZiB0aGlzLiNpbmRleGVzKHsgYWxsb3dTdGFsZTogdHJ1ZSB9KSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy4ja2V5TGlzdFtpXTtcbiAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2ldO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiNpc0JhY2tncm91bmRGZXRjaCh2KVxuICAgICAgICAgICAgICAgID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgIDogdjtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IGtleSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY29uc3QgZW50cnkgPSB7IHZhbHVlIH07XG4gICAgICAgICAgICBpZiAodGhpcy4jdHRscyAmJiB0aGlzLiNzdGFydHMpIHtcbiAgICAgICAgICAgICAgICBlbnRyeS50dGwgPSB0aGlzLiN0dGxzW2ldO1xuICAgICAgICAgICAgICAgIC8vIGFsd2F5cyBkdW1wIHRoZSBzdGFydCByZWxhdGl2ZSB0byBhIHBvcnRhYmxlIHRpbWVzdGFtcFxuICAgICAgICAgICAgICAgIC8vIGl0J3Mgb2sgZm9yIHRoaXMgdG8gYmUgYSBiaXQgc2xvdywgaXQncyBhIHJhcmUgb3BlcmF0aW9uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGFnZSA9IHBlcmYubm93KCkgLSB0aGlzLiNzdGFydHNbaV07XG4gICAgICAgICAgICAgICAgZW50cnkuc3RhcnQgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLSBhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuI3NpemVzKSB7XG4gICAgICAgICAgICAgICAgZW50cnkuc2l6ZSA9IHRoaXMuI3NpemVzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJyLnVuc2hpZnQoW2tleSwgZW50cnldKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXNldCB0aGUgY2FjaGUgYW5kIGxvYWQgaW4gdGhlIGl0ZW1zIGluIGVudHJpZXMgaW4gdGhlIG9yZGVyIGxpc3RlZC5cbiAgICAgKlxuICAgICAqIFRoZSBzaGFwZSBvZiB0aGUgcmVzdWx0aW5nIGNhY2hlIG1heSBiZSBkaWZmZXJlbnQgaWYgdGhlIHNhbWUgb3B0aW9ucyBhcmVcbiAgICAgKiBub3QgdXNlZCBpbiBib3RoIGNhY2hlcy5cbiAgICAgKlxuICAgICAqIFRoZSBgc3RhcnRgIGZpZWxkcyBhcmUgYXNzdW1lZCB0byBiZSBjYWxjdWxhdGVkIHJlbGF0aXZlIHRvIGEgcG9ydGFibGVcbiAgICAgKiBgRGF0ZS5ub3coKWAgdGltZXN0YW1wLCBldmVuIGlmIGBwZXJmb3JtYW5jZS5ub3coKWAgaXMgYXZhaWxhYmxlLlxuICAgICAqL1xuICAgIGxvYWQoYXJyKSB7XG4gICAgICAgIHRoaXMuY2xlYXIoKTtcbiAgICAgICAgZm9yIChjb25zdCBba2V5LCBlbnRyeV0gb2YgYXJyKSB7XG4gICAgICAgICAgICBpZiAoZW50cnkuc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAvLyBlbnRyeS5zdGFydCBpcyBhIHBvcnRhYmxlIHRpbWVzdGFtcCwgYnV0IHdlIG1heSBiZSB1c2luZ1xuICAgICAgICAgICAgICAgIC8vIG5vZGUncyBwZXJmb3JtYW5jZS5ub3coKSwgc28gY2FsY3VsYXRlIHRoZSBvZmZzZXQsIHNvIHRoYXRcbiAgICAgICAgICAgICAgICAvLyB3ZSBnZXQgdGhlIGludGVuZGVkIHJlbWFpbmluZyBUVEwsIG5vIG1hdHRlciBob3cgbG9uZyBpdCdzXG4gICAgICAgICAgICAgICAgLy8gYmVlbiBvbiBpY2UuXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBpdCdzIG9rIGZvciB0aGlzIHRvIGJlIGEgYml0IHNsb3csIGl0J3MgYSByYXJlIG9wZXJhdGlvbi5cbiAgICAgICAgICAgICAgICBjb25zdCBhZ2UgPSBEYXRlLm5vdygpIC0gZW50cnkuc3RhcnQ7XG4gICAgICAgICAgICAgICAgZW50cnkuc3RhcnQgPSBwZXJmLm5vdygpIC0gYWdlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXQoa2V5LCBlbnRyeS52YWx1ZSwgZW50cnkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEFkZCBhIHZhbHVlIHRvIHRoZSBjYWNoZS5cbiAgICAgKlxuICAgICAqIE5vdGU6IGlmIGB1bmRlZmluZWRgIGlzIHNwZWNpZmllZCBhcyBhIHZhbHVlLCB0aGlzIGlzIGFuIGFsaWFzIGZvclxuICAgICAqIHtAbGluayBMUlVDYWNoZSNkZWxldGV9XG4gICAgICpcbiAgICAgKiBGaWVsZHMgb24gdGhlIHtAbGluayBMUlVDYWNoZS5TZXRPcHRpb25zfSBvcHRpb25zIHBhcmFtIHdpbGwgb3ZlcnJpZGVcbiAgICAgKiB0aGVpciBjb3JyZXNwb25kaW5nIHZhbHVlcyBpbiB0aGUgY29uc3RydWN0b3Igb3B0aW9ucyBmb3IgdGhlIHNjb3BlXG4gICAgICogb2YgdGhpcyBzaW5nbGUgYHNldCgpYCBvcGVyYXRpb24uXG4gICAgICpcbiAgICAgKiBJZiBgc3RhcnRgIGlzIHByb3ZpZGVkLCB0aGVuIHRoYXQgd2lsbCBzZXQgdGhlIGVmZmVjdGl2ZSBzdGFydFxuICAgICAqIHRpbWUgZm9yIHRoZSBUVEwgY2FsY3VsYXRpb24uIE5vdGUgdGhhdCB0aGlzIG11c3QgYmUgYSBwcmV2aW91c1xuICAgICAqIHZhbHVlIG9mIGBwZXJmb3JtYW5jZS5ub3coKWAgaWYgc3VwcG9ydGVkLCBvciBhIHByZXZpb3VzIHZhbHVlIG9mXG4gICAgICogYERhdGUubm93KClgIGlmIG5vdC5cbiAgICAgKlxuICAgICAqIE9wdGlvbnMgb2JqZWN0IG1heSBhbHNvIGluY2x1ZGUgYHNpemVgLCB3aGljaCB3aWxsIHByZXZlbnRcbiAgICAgKiBjYWxsaW5nIHRoZSBgc2l6ZUNhbGN1bGF0aW9uYCBmdW5jdGlvbiBhbmQganVzdCB1c2UgdGhlIHNwZWNpZmllZFxuICAgICAqIG51bWJlciBpZiBpdCBpcyBhIHBvc2l0aXZlIGludGVnZXIsIGFuZCBgbm9EaXNwb3NlT25TZXRgIHdoaWNoXG4gICAgICogd2lsbCBwcmV2ZW50IGNhbGxpbmcgYSBgZGlzcG9zZWAgZnVuY3Rpb24gaW4gdGhlIGNhc2Ugb2ZcbiAgICAgKiBvdmVyd3JpdGVzLlxuICAgICAqXG4gICAgICogSWYgdGhlIGBzaXplYCAob3IgcmV0dXJuIHZhbHVlIG9mIGBzaXplQ2FsY3VsYXRpb25gKSBmb3IgYSBnaXZlblxuICAgICAqIGVudHJ5IGlzIGdyZWF0ZXIgdGhhbiBgbWF4RW50cnlTaXplYCwgdGhlbiB0aGUgaXRlbSB3aWxsIG5vdCBiZVxuICAgICAqIGFkZGVkIHRvIHRoZSBjYWNoZS5cbiAgICAgKlxuICAgICAqIFdpbGwgdXBkYXRlIHRoZSByZWNlbmN5IG9mIHRoZSBlbnRyeS5cbiAgICAgKlxuICAgICAqIElmIHRoZSB2YWx1ZSBpcyBgdW5kZWZpbmVkYCwgdGhlbiB0aGlzIGlzIGFuIGFsaWFzIGZvclxuICAgICAqIGBjYWNoZS5kZWxldGUoa2V5KWAuIGB1bmRlZmluZWRgIGlzIG5ldmVyIHN0b3JlZCBpbiB0aGUgY2FjaGUuXG4gICAgICovXG4gICAgc2V0KGssIHYsIHNldE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmRlbGV0ZShrKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgdHRsID0gdGhpcy50dGwsIHN0YXJ0LCBub0Rpc3Bvc2VPblNldCA9IHRoaXMubm9EaXNwb3NlT25TZXQsIHNpemVDYWxjdWxhdGlvbiA9IHRoaXMuc2l6ZUNhbGN1bGF0aW9uLCBzdGF0dXMsIH0gPSBzZXRPcHRpb25zO1xuICAgICAgICBsZXQgeyBub1VwZGF0ZVRUTCA9IHRoaXMubm9VcGRhdGVUVEwgfSA9IHNldE9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHNpemUgPSB0aGlzLiNyZXF1aXJlU2l6ZShrLCB2LCBzZXRPcHRpb25zLnNpemUgfHwgMCwgc2l6ZUNhbGN1bGF0aW9uKTtcbiAgICAgICAgLy8gaWYgdGhlIGl0ZW0gZG9lc24ndCBmaXQsIGRvbid0IGRvIGFueXRoaW5nXG4gICAgICAgIC8vIE5COiBtYXhFbnRyeVNpemUgc2V0IHRvIG1heFNpemUgYnkgZGVmYXVsdFxuICAgICAgICBpZiAodGhpcy5tYXhFbnRyeVNpemUgJiYgc2l6ZSA+IHRoaXMubWF4RW50cnlTaXplKSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzLnNldCA9ICdtaXNzJztcbiAgICAgICAgICAgICAgICBzdGF0dXMubWF4RW50cnlTaXplRXhjZWVkZWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaGF2ZSB0byBkZWxldGUsIGluIGNhc2Ugc29tZXRoaW5nIGlzIHRoZXJlIGFscmVhZHkuXG4gICAgICAgICAgICB0aGlzLiNkZWxldGUoaywgJ3NldCcpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGluZGV4ID0gdGhpcy4jc2l6ZSA9PT0gMCA/IHVuZGVmaW5lZCA6IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBhZGRpdGlvblxuICAgICAgICAgICAgaW5kZXggPSAodGhpcy4jc2l6ZSA9PT0gMFxuICAgICAgICAgICAgICAgID8gdGhpcy4jdGFpbFxuICAgICAgICAgICAgICAgIDogdGhpcy4jZnJlZS5sZW5ndGggIT09IDBcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLiNmcmVlLnBvcCgpXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy4jc2l6ZSA9PT0gdGhpcy4jbWF4XG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuI2V2aWN0KGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB0aGlzLiNzaXplKTtcbiAgICAgICAgICAgIHRoaXMuI2tleUxpc3RbaW5kZXhdID0gaztcbiAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gdjtcbiAgICAgICAgICAgIHRoaXMuI2tleU1hcC5zZXQoaywgaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy4jbmV4dFt0aGlzLiN0YWlsXSA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy4jcHJldltpbmRleF0gPSB0aGlzLiN0YWlsO1xuICAgICAgICAgICAgdGhpcy4jdGFpbCA9IGluZGV4O1xuICAgICAgICAgICAgdGhpcy4jc2l6ZSsrO1xuICAgICAgICAgICAgdGhpcy4jYWRkSXRlbVNpemUoaW5kZXgsIHNpemUsIHN0YXR1cyk7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5zZXQgPSAnYWRkJztcbiAgICAgICAgICAgIG5vVXBkYXRlVFRMID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyB1cGRhdGVcbiAgICAgICAgICAgIHRoaXMuI21vdmVUb1RhaWwoaW5kZXgpO1xuICAgICAgICAgICAgY29uc3Qgb2xkVmFsID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICBpZiAodiAhPT0gb2xkVmFsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0ZldGNoTWV0aG9kICYmIHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKG9sZFZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgb2xkVmFsLl9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcigncmVwbGFjZWQnKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgX19zdGFsZVdoaWxlRmV0Y2hpbmc6IHMgfSA9IG9sZFZhbDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMgIT09IHVuZGVmaW5lZCAmJiAhbm9EaXNwb3NlT25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZT8uKHMsIGssICdzZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlZD8ucHVzaChbcywgaywgJ3NldCddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICghbm9EaXNwb3NlT25TZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI2Rpc3Bvc2U/LihvbGRWYWwsIGssICdzZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlZD8ucHVzaChbb2xkVmFsLCBrLCAnc2V0J10pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuI3JlbW92ZUl0ZW1TaXplKGluZGV4KTtcbiAgICAgICAgICAgICAgICB0aGlzLiNhZGRJdGVtU2l6ZShpbmRleCwgc2l6ZSwgc3RhdHVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IHY7XG4gICAgICAgICAgICAgICAgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuc2V0ID0gJ3JlcGxhY2UnO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvbGRWYWx1ZSA9IG9sZFZhbCAmJiB0aGlzLiNpc0JhY2tncm91bmRGZXRjaChvbGRWYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IG9sZFZhbC5fX3N0YWxlV2hpbGVGZXRjaGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgOiBvbGRWYWw7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzLnNldCA9ICd1cGRhdGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0dGwgIT09IDAgJiYgIXRoaXMuI3R0bHMpIHtcbiAgICAgICAgICAgIHRoaXMuI2luaXRpYWxpemVUVExUcmFja2luZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLiN0dGxzKSB7XG4gICAgICAgICAgICBpZiAoIW5vVXBkYXRlVFRMKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jc2V0SXRlbVRUTChpbmRleCwgdHRsLCBzdGFydCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgIHRoaXMuI3N0YXR1c1RUTChzdGF0dXMsIGluZGV4KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW5vRGlzcG9zZU9uU2V0ICYmIHRoaXMuI2hhc0Rpc3Bvc2VBZnRlciAmJiB0aGlzLiNkaXNwb3NlZCkge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLiNkaXNwb3NlZDtcbiAgICAgICAgICAgIGxldCB0YXNrO1xuICAgICAgICAgICAgd2hpbGUgKCh0YXNrID0gZHQ/LnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyPy4oLi4udGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEV2aWN0IHRoZSBsZWFzdCByZWNlbnRseSB1c2VkIGl0ZW0sIHJldHVybmluZyBpdHMgdmFsdWUgb3JcbiAgICAgKiBgdW5kZWZpbmVkYCBpZiBjYWNoZSBpcyBlbXB0eS5cbiAgICAgKi9cbiAgICBwb3AoKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy4jc2l6ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuI3ZhbExpc3RbdGhpcy4jaGVhZF07XG4gICAgICAgICAgICAgICAgdGhpcy4jZXZpY3QodHJ1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHZhbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC5fX3N0YWxlV2hpbGVGZXRjaGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbC5fX3N0YWxlV2hpbGVGZXRjaGluZztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIgJiYgdGhpcy4jZGlzcG9zZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkdCA9IHRoaXMuI2Rpc3Bvc2VkO1xuICAgICAgICAgICAgICAgIGxldCB0YXNrO1xuICAgICAgICAgICAgICAgIHdoaWxlICgodGFzayA9IGR0Py5zaGlmdCgpKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXI/LiguLi50YXNrKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgI2V2aWN0KGZyZWUpIHtcbiAgICAgICAgY29uc3QgaGVhZCA9IHRoaXMuI2hlYWQ7XG4gICAgICAgIGNvbnN0IGsgPSB0aGlzLiNrZXlMaXN0W2hlYWRdO1xuICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtoZWFkXTtcbiAgICAgICAgaWYgKHRoaXMuI2hhc0ZldGNoTWV0aG9kICYmIHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICB2Ll9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcignZXZpY3RlZCcpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLiNoYXNEaXNwb3NlIHx8IHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlPy4odiwgaywgJ2V2aWN0Jyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZWQ/LnB1c2goW3YsIGssICdldmljdCddKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNyZW1vdmVJdGVtU2l6ZShoZWFkKTtcbiAgICAgICAgLy8gaWYgd2UgYXJlbid0IGFib3V0IHRvIHVzZSB0aGUgaW5kZXgsIHRoZW4gbnVsbCB0aGVzZSBvdXRcbiAgICAgICAgaWYgKGZyZWUpIHtcbiAgICAgICAgICAgIHRoaXMuI2tleUxpc3RbaGVhZF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2hlYWRdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgdGhpcy4jZnJlZS5wdXNoKGhlYWQpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLiNzaXplID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLiNoZWFkID0gdGhpcy4jdGFpbCA9IDA7XG4gICAgICAgICAgICB0aGlzLiNmcmVlLmxlbmd0aCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLiNoZWFkID0gdGhpcy4jbmV4dFtoZWFkXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLiNrZXlNYXAuZGVsZXRlKGspO1xuICAgICAgICB0aGlzLiNzaXplLS07XG4gICAgICAgIHJldHVybiBoZWFkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiBhIGtleSBpcyBpbiB0aGUgY2FjaGUsIHdpdGhvdXQgdXBkYXRpbmcgdGhlIHJlY2VuY3kgb2YgdXNlLlxuICAgICAqIFdpbGwgcmV0dXJuIGZhbHNlIGlmIHRoZSBpdGVtIGlzIHN0YWxlLCBldmVuIHRob3VnaCBpdCBpcyB0ZWNobmljYWxseVxuICAgICAqIGluIHRoZSBjYWNoZS5cbiAgICAgKlxuICAgICAqIENoZWNrIGlmIGEga2V5IGlzIGluIHRoZSBjYWNoZSwgd2l0aG91dCB1cGRhdGluZyB0aGUgcmVjZW5jeSBvZlxuICAgICAqIHVzZS4gQWdlIGlzIHVwZGF0ZWQgaWYge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnVwZGF0ZUFnZU9uSGFzfSBpcyBzZXRcbiAgICAgKiB0byBgdHJ1ZWAgaW4gZWl0aGVyIHRoZSBvcHRpb25zIG9yIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKlxuICAgICAqIFdpbGwgcmV0dXJuIGBmYWxzZWAgaWYgdGhlIGl0ZW0gaXMgc3RhbGUsIGV2ZW4gdGhvdWdoIGl0IGlzIHRlY2huaWNhbGx5IGluXG4gICAgICogdGhlIGNhY2hlLiBUaGUgZGlmZmVyZW5jZSBjYW4gYmUgZGV0ZXJtaW5lZCAoaWYgaXQgbWF0dGVycykgYnkgdXNpbmcgYVxuICAgICAqIGBzdGF0dXNgIGFyZ3VtZW50LCBhbmQgaW5zcGVjdGluZyB0aGUgYGhhc2AgZmllbGQuXG4gICAgICpcbiAgICAgKiBXaWxsIG5vdCB1cGRhdGUgaXRlbSBhZ2UgdW5sZXNzXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLnVwZGF0ZUFnZU9uSGFzfSBpcyBzZXQuXG4gICAgICovXG4gICAgaGFzKGssIGhhc09wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IHVwZGF0ZUFnZU9uSGFzID0gdGhpcy51cGRhdGVBZ2VPbkhhcywgc3RhdHVzIH0gPSBoYXNPcHRpb25zO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikgJiZcbiAgICAgICAgICAgICAgICB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXRoaXMuI2lzU3RhbGUoaW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUFnZU9uSGFzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3VwZGF0ZUl0ZW1BZ2UoaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5oYXMgPSAnaGl0JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jc3RhdHVzVFRMKHN0YXR1cywgaW5kZXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHN0YXR1cykge1xuICAgICAgICAgICAgICAgIHN0YXR1cy5oYXMgPSAnc3RhbGUnO1xuICAgICAgICAgICAgICAgIHRoaXMuI3N0YXR1c1RUTChzdGF0dXMsIGluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgIHN0YXR1cy5oYXMgPSAnbWlzcyc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBMaWtlIHtAbGluayBMUlVDYWNoZSNnZXR9IGJ1dCBkb2Vzbid0IHVwZGF0ZSByZWNlbmN5IG9yIGRlbGV0ZSBzdGFsZVxuICAgICAqIGl0ZW1zLlxuICAgICAqXG4gICAgICogUmV0dXJucyBgdW5kZWZpbmVkYCBpZiB0aGUgaXRlbSBpcyBzdGFsZSwgdW5sZXNzXG4gICAgICoge0BsaW5rIExSVUNhY2hlLk9wdGlvbnNCYXNlLmFsbG93U3RhbGV9IGlzIHNldC5cbiAgICAgKi9cbiAgICBwZWVrKGssIHBlZWtPcHRpb25zID0ge30pIHtcbiAgICAgICAgY29uc3QgeyBhbGxvd1N0YWxlID0gdGhpcy5hbGxvd1N0YWxlIH0gPSBwZWVrT3B0aW9ucztcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICBpZiAoaW5kZXggPT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgKCFhbGxvd1N0YWxlICYmIHRoaXMuI2lzU3RhbGUoaW5kZXgpKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgLy8gZWl0aGVyIHN0YWxlIGFuZCBhbGxvd2VkLCBvciBmb3JjaW5nIGEgcmVmcmVzaCBvZiBub24tc3RhbGUgdmFsdWVcbiAgICAgICAgcmV0dXJuIHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpID8gdi5fX3N0YWxlV2hpbGVGZXRjaGluZyA6IHY7XG4gICAgfVxuICAgICNiYWNrZ3JvdW5kRmV0Y2goaywgaW5kZXgsIG9wdGlvbnMsIGNvbnRleHQpIHtcbiAgICAgICAgY29uc3QgdiA9IGluZGV4ID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhYyA9IG5ldyBBQygpO1xuICAgICAgICBjb25zdCB7IHNpZ25hbCB9ID0gb3B0aW9ucztcbiAgICAgICAgLy8gd2hlbi9pZiBvdXIgQUMgc2lnbmFscywgdGhlbiBzdG9wIGxpc3RlbmluZyB0byB0aGVpcnMuXG4gICAgICAgIHNpZ25hbD8uYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiBhYy5hYm9ydChzaWduYWwucmVhc29uKSwge1xuICAgICAgICAgICAgc2lnbmFsOiBhYy5zaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBmZXRjaE9wdHMgPSB7XG4gICAgICAgICAgICBzaWduYWw6IGFjLnNpZ25hbCxcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBjYiA9ICh2LCB1cGRhdGVDYWNoZSA9IGZhbHNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFib3J0ZWQgfSA9IGFjLnNpZ25hbDtcbiAgICAgICAgICAgIGNvbnN0IGlnbm9yZUFib3J0ID0gb3B0aW9ucy5pZ25vcmVGZXRjaEFib3J0ICYmIHYgIT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLnN0YXR1cykge1xuICAgICAgICAgICAgICAgIGlmIChhYm9ydGVkICYmICF1cGRhdGVDYWNoZSkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaEFib3J0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaEVycm9yID0gYWMuc2lnbmFsLnJlYXNvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlnbm9yZUFib3J0KVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hBYm9ydElnbm9yZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hSZXNvbHZlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGFib3J0ZWQgJiYgIWlnbm9yZUFib3J0ICYmICF1cGRhdGVDYWNoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmZXRjaEZhaWwoYWMuc2lnbmFsLnJlYXNvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBlaXRoZXIgd2UgZGlkbid0IGFib3J0LCBhbmQgYXJlIHN0aWxsIGhlcmUsIG9yIHdlIGRpZCwgYW5kIGlnbm9yZWRcbiAgICAgICAgICAgIGNvbnN0IGJmID0gcDtcbiAgICAgICAgICAgIGlmICh0aGlzLiN2YWxMaXN0W2luZGV4XSA9PT0gcCkge1xuICAgICAgICAgICAgICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiN2YWxMaXN0W2luZGV4XSA9IGJmLl9fc3RhbGVXaGlsZUZldGNoaW5nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jZGVsZXRlKGssICdmZXRjaCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaFVwZGF0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldChrLCB2LCBmZXRjaE9wdHMub3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGViID0gKGVyKSA9PiB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaFJlamVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnN0YXR1cy5mZXRjaEVycm9yID0gZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmV0Y2hGYWlsKGVyKTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZmV0Y2hGYWlsID0gKGVyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFib3J0ZWQgfSA9IGFjLnNpZ25hbDtcbiAgICAgICAgICAgIGNvbnN0IGFsbG93U3RhbGVBYm9ydGVkID0gYWJvcnRlZCAmJiBvcHRpb25zLmFsbG93U3RhbGVPbkZldGNoQWJvcnQ7XG4gICAgICAgICAgICBjb25zdCBhbGxvd1N0YWxlID0gYWxsb3dTdGFsZUFib3J0ZWQgfHwgb3B0aW9ucy5hbGxvd1N0YWxlT25GZXRjaFJlamVjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IG5vRGVsZXRlID0gYWxsb3dTdGFsZSB8fCBvcHRpb25zLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbjtcbiAgICAgICAgICAgIGNvbnN0IGJmID0gcDtcbiAgICAgICAgICAgIGlmICh0aGlzLiN2YWxMaXN0W2luZGV4XSA9PT0gcCkge1xuICAgICAgICAgICAgICAgIC8vIGlmIHdlIGFsbG93IHN0YWxlIG9uIGZldGNoIHJlamVjdGlvbnMsIHRoZW4gd2UgbmVlZCB0byBlbnN1cmUgdGhhdFxuICAgICAgICAgICAgICAgIC8vIHRoZSBzdGFsZSB2YWx1ZSBpcyBub3QgcmVtb3ZlZCBmcm9tIHRoZSBjYWNoZSB3aGVuIHRoZSBmZXRjaCBmYWlscy5cbiAgICAgICAgICAgICAgICBjb25zdCBkZWwgPSAhbm9EZWxldGUgfHwgYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmcgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBpZiAoZGVsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2RlbGV0ZShrLCAnZmV0Y2gnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWFsbG93U3RhbGVBYm9ydGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHN0aWxsIHJlcGxhY2UgdGhlICpwcm9taXNlKiB3aXRoIHRoZSBzdGFsZSB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgLy8gc2luY2Ugd2UgYXJlIGRvbmUgd2l0aCB0aGUgcHJvbWlzZSBhdCB0aGlzIHBvaW50LlxuICAgICAgICAgICAgICAgICAgICAvLyBsZWF2ZSBpdCB1bnRvdWNoZWQgaWYgd2UncmUgc3RpbGwgd2FpdGluZyBmb3IgYW5cbiAgICAgICAgICAgICAgICAgICAgLy8gYWJvcnRlZCBiYWNrZ3JvdW5kIGZldGNoIHRoYXQgaGFzbid0IHlldCByZXR1cm5lZC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdmFsTGlzdFtpbmRleF0gPSBiZi5fX3N0YWxlV2hpbGVGZXRjaGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWxsb3dTdGFsZSkge1xuICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnN0YXR1cyAmJiBiZi5fX3N0YWxlV2hpbGVGZXRjaGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RhdHVzLnJldHVybmVkU3RhbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYmYuX19zdGFsZVdoaWxlRmV0Y2hpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChiZi5fX3JldHVybmVkID09PSBiZikge1xuICAgICAgICAgICAgICAgIHRocm93IGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBwY2FsbCA9IChyZXMsIHJlaikgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm1wID0gdGhpcy4jZmV0Y2hNZXRob2Q/LihrLCB2LCBmZXRjaE9wdHMpO1xuICAgICAgICAgICAgaWYgKGZtcCAmJiBmbXAgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgICAgICAgICAgZm1wLnRoZW4odiA9PiByZXModiA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogdiksIHJlaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBpZ25vcmVkLCB3ZSBnbyB1bnRpbCB3ZSBmaW5pc2gsIHJlZ2FyZGxlc3MuXG4gICAgICAgICAgICAvLyBkZWZlciBjaGVjayB1bnRpbCB3ZSBhcmUgYWN0dWFsbHkgYWJvcnRpbmcsXG4gICAgICAgICAgICAvLyBzbyBmZXRjaE1ldGhvZCBjYW4gb3ZlcnJpZGUuXG4gICAgICAgICAgICBhYy5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFvcHRpb25zLmlnbm9yZUZldGNoQWJvcnQgfHxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5hbGxvd1N0YWxlT25GZXRjaEFib3J0KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlcyh1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGl0IGV2ZW50dWFsbHkgcmVzb2x2ZXMsIHVwZGF0ZSB0aGUgY2FjaGUuXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmFsbG93U3RhbGVPbkZldGNoQWJvcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHYgPT4gY2IodiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc3RhdHVzKVxuICAgICAgICAgICAgb3B0aW9ucy5zdGF0dXMuZmV0Y2hEaXNwYXRjaGVkID0gdHJ1ZTtcbiAgICAgICAgY29uc3QgcCA9IG5ldyBQcm9taXNlKHBjYWxsKS50aGVuKGNiLCBlYik7XG4gICAgICAgIGNvbnN0IGJmID0gT2JqZWN0LmFzc2lnbihwLCB7XG4gICAgICAgICAgICBfX2Fib3J0Q29udHJvbGxlcjogYWMsXG4gICAgICAgICAgICBfX3N0YWxlV2hpbGVGZXRjaGluZzogdixcbiAgICAgICAgICAgIF9fcmV0dXJuZWQ6IHVuZGVmaW5lZCxcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAvLyBpbnRlcm5hbCwgZG9uJ3QgZXhwb3NlIHN0YXR1cy5cbiAgICAgICAgICAgIHRoaXMuc2V0KGssIGJmLCB7IC4uLmZldGNoT3B0cy5vcHRpb25zLCBzdGF0dXM6IHVuZGVmaW5lZCB9KTtcbiAgICAgICAgICAgIGluZGV4ID0gdGhpcy4ja2V5TWFwLmdldChrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gYmY7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGJmO1xuICAgIH1cbiAgICAjaXNCYWNrZ3JvdW5kRmV0Y2gocCkge1xuICAgICAgICBpZiAoIXRoaXMuI2hhc0ZldGNoTWV0aG9kKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBiID0gcDtcbiAgICAgICAgcmV0dXJuICghIWIgJiZcbiAgICAgICAgICAgIGIgaW5zdGFuY2VvZiBQcm9taXNlICYmXG4gICAgICAgICAgICBiLmhhc093blByb3BlcnR5KCdfX3N0YWxlV2hpbGVGZXRjaGluZycpICYmXG4gICAgICAgICAgICBiLl9fYWJvcnRDb250cm9sbGVyIGluc3RhbmNlb2YgQUMpO1xuICAgIH1cbiAgICBhc3luYyBmZXRjaChrLCBmZXRjaE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB7IFxuICAgICAgICAvLyBnZXQgb3B0aW9uc1xuICAgICAgICBhbGxvd1N0YWxlID0gdGhpcy5hbGxvd1N0YWxlLCB1cGRhdGVBZ2VPbkdldCA9IHRoaXMudXBkYXRlQWdlT25HZXQsIG5vRGVsZXRlT25TdGFsZUdldCA9IHRoaXMubm9EZWxldGVPblN0YWxlR2V0LCBcbiAgICAgICAgLy8gc2V0IG9wdGlvbnNcbiAgICAgICAgdHRsID0gdGhpcy50dGwsIG5vRGlzcG9zZU9uU2V0ID0gdGhpcy5ub0Rpc3Bvc2VPblNldCwgc2l6ZSA9IDAsIHNpemVDYWxjdWxhdGlvbiA9IHRoaXMuc2l6ZUNhbGN1bGF0aW9uLCBub1VwZGF0ZVRUTCA9IHRoaXMubm9VcGRhdGVUVEwsIFxuICAgICAgICAvLyBmZXRjaCBleGNsdXNpdmUgb3B0aW9uc1xuICAgICAgICBub0RlbGV0ZU9uRmV0Y2hSZWplY3Rpb24gPSB0aGlzLm5vRGVsZXRlT25GZXRjaFJlamVjdGlvbiwgYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24gPSB0aGlzLmFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLCBpZ25vcmVGZXRjaEFib3J0ID0gdGhpcy5pZ25vcmVGZXRjaEFib3J0LCBhbGxvd1N0YWxlT25GZXRjaEFib3J0ID0gdGhpcy5hbGxvd1N0YWxlT25GZXRjaEFib3J0LCBjb250ZXh0LCBmb3JjZVJlZnJlc2ggPSBmYWxzZSwgc3RhdHVzLCBzaWduYWwsIH0gPSBmZXRjaE9wdGlvbnM7XG4gICAgICAgIGlmICghdGhpcy4jaGFzRmV0Y2hNZXRob2QpIHtcbiAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgc3RhdHVzLmZldGNoID0gJ2dldCc7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXQoaywge1xuICAgICAgICAgICAgICAgIGFsbG93U3RhbGUsXG4gICAgICAgICAgICAgICAgdXBkYXRlQWdlT25HZXQsXG4gICAgICAgICAgICAgICAgbm9EZWxldGVPblN0YWxlR2V0LFxuICAgICAgICAgICAgICAgIHN0YXR1cyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgICAgICBhbGxvd1N0YWxlLFxuICAgICAgICAgICAgdXBkYXRlQWdlT25HZXQsXG4gICAgICAgICAgICBub0RlbGV0ZU9uU3RhbGVHZXQsXG4gICAgICAgICAgICB0dGwsXG4gICAgICAgICAgICBub0Rpc3Bvc2VPblNldCxcbiAgICAgICAgICAgIHNpemUsXG4gICAgICAgICAgICBzaXplQ2FsY3VsYXRpb24sXG4gICAgICAgICAgICBub1VwZGF0ZVRUTCxcbiAgICAgICAgICAgIG5vRGVsZXRlT25GZXRjaFJlamVjdGlvbixcbiAgICAgICAgICAgIGFsbG93U3RhbGVPbkZldGNoUmVqZWN0aW9uLFxuICAgICAgICAgICAgYWxsb3dTdGFsZU9uRmV0Y2hBYm9ydCxcbiAgICAgICAgICAgIGlnbm9yZUZldGNoQWJvcnQsXG4gICAgICAgICAgICBzdGF0dXMsXG4gICAgICAgICAgICBzaWduYWwsXG4gICAgICAgIH07XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgIHN0YXR1cy5mZXRjaCA9ICdtaXNzJztcbiAgICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLiNiYWNrZ3JvdW5kRmV0Y2goaywgaW5kZXgsIG9wdGlvbnMsIGNvbnRleHQpO1xuICAgICAgICAgICAgcmV0dXJuIChwLl9fcmV0dXJuZWQgPSBwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGluIGNhY2hlLCBtYXliZSBhbHJlYWR5IGZldGNoaW5nXG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFsZSA9IGFsbG93U3RhbGUgJiYgdi5fX3N0YWxlV2hpbGVGZXRjaGluZyAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzLmZldGNoID0gJ2luZmxpZ2h0JztcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0YWxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLnJldHVybmVkU3RhbGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RhbGUgPyB2Ll9fc3RhbGVXaGlsZUZldGNoaW5nIDogKHYuX19yZXR1cm5lZCA9IHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gaWYgd2UgZm9yY2UgYSByZWZyZXNoLCB0aGF0IG1lYW5zIGRvIE5PVCBzZXJ2ZSB0aGUgY2FjaGVkIHZhbHVlLFxuICAgICAgICAgICAgLy8gdW5sZXNzIHdlIGFyZSBhbHJlYWR5IGluIHRoZSBwcm9jZXNzIG9mIHJlZnJlc2hpbmcgdGhlIGNhY2hlLlxuICAgICAgICAgICAgY29uc3QgaXNTdGFsZSA9IHRoaXMuI2lzU3RhbGUoaW5kZXgpO1xuICAgICAgICAgICAgaWYgKCFmb3JjZVJlZnJlc2ggJiYgIWlzU3RhbGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZmV0Y2ggPSAnaGl0JztcbiAgICAgICAgICAgICAgICB0aGlzLiNtb3ZlVG9UYWlsKGluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlQWdlT25HZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdXBkYXRlSXRlbUFnZShpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3N0YXR1c1RUTChzdGF0dXMsIGluZGV4KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG9rLCBpdCBpcyBzdGFsZSBvciBhIGZvcmNlZCByZWZyZXNoLCBhbmQgbm90IGFscmVhZHkgZmV0Y2hpbmcuXG4gICAgICAgICAgICAvLyByZWZyZXNoIHRoZSBjYWNoZS5cbiAgICAgICAgICAgIGNvbnN0IHAgPSB0aGlzLiNiYWNrZ3JvdW5kRmV0Y2goaywgaW5kZXgsIG9wdGlvbnMsIGNvbnRleHQpO1xuICAgICAgICAgICAgY29uc3QgaGFzU3RhbGUgPSBwLl9fc3RhbGVXaGlsZUZldGNoaW5nICE9PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBjb25zdCBzdGFsZVZhbCA9IGhhc1N0YWxlICYmIGFsbG93U3RhbGU7XG4gICAgICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgICAgICAgc3RhdHVzLmZldGNoID0gaXNTdGFsZSA/ICdzdGFsZScgOiAncmVmcmVzaCc7XG4gICAgICAgICAgICAgICAgaWYgKHN0YWxlVmFsICYmIGlzU3RhbGUpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5yZXR1cm5lZFN0YWxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzdGFsZVZhbCA/IHAuX19zdGFsZVdoaWxlRmV0Y2hpbmcgOiAocC5fX3JldHVybmVkID0gcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYXN5bmMgZm9yY2VGZXRjaChrLCBmZXRjaE9wdGlvbnMgPSB7fSkge1xuICAgICAgICBjb25zdCB2ID0gYXdhaXQgdGhpcy5mZXRjaChrLCBmZXRjaE9wdGlvbnMpO1xuICAgICAgICBpZiAodiA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdmZXRjaCgpIHJldHVybmVkIHVuZGVmaW5lZCcpO1xuICAgICAgICByZXR1cm4gdjtcbiAgICB9XG4gICAgbWVtbyhrLCBtZW1vT3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IG1lbW9NZXRob2QgPSB0aGlzLiNtZW1vTWV0aG9kO1xuICAgICAgICBpZiAoIW1lbW9NZXRob2QpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbm8gbWVtb01ldGhvZCBwcm92aWRlZCB0byBjb25zdHJ1Y3RvcicpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgY29udGV4dCwgZm9yY2VSZWZyZXNoLCAuLi5vcHRpb25zIH0gPSBtZW1vT3B0aW9ucztcbiAgICAgICAgY29uc3QgdiA9IHRoaXMuZ2V0KGssIG9wdGlvbnMpO1xuICAgICAgICBpZiAoIWZvcmNlUmVmcmVzaCAmJiB2ICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY29uc3QgdnYgPSBtZW1vTWV0aG9kKGssIHYsIHtcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXQoaywgdnYsIG9wdGlvbnMpO1xuICAgICAgICByZXR1cm4gdnY7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybiBhIHZhbHVlIGZyb20gdGhlIGNhY2hlLiBXaWxsIHVwZGF0ZSB0aGUgcmVjZW5jeSBvZiB0aGUgY2FjaGVcbiAgICAgKiBlbnRyeSBmb3VuZC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBrZXkgaXMgbm90IGZvdW5kLCBnZXQoKSB3aWxsIHJldHVybiBgdW5kZWZpbmVkYC5cbiAgICAgKi9cbiAgICBnZXQoaywgZ2V0T3B0aW9ucyA9IHt9KSB7XG4gICAgICAgIGNvbnN0IHsgYWxsb3dTdGFsZSA9IHRoaXMuYWxsb3dTdGFsZSwgdXBkYXRlQWdlT25HZXQgPSB0aGlzLnVwZGF0ZUFnZU9uR2V0LCBub0RlbGV0ZU9uU3RhbGVHZXQgPSB0aGlzLm5vRGVsZXRlT25TdGFsZUdldCwgc3RhdHVzLCB9ID0gZ2V0T3B0aW9ucztcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLiNrZXlNYXAuZ2V0KGspO1xuICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGZldGNoaW5nID0gdGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godmFsdWUpO1xuICAgICAgICAgICAgaWYgKHN0YXR1cylcbiAgICAgICAgICAgICAgICB0aGlzLiNzdGF0dXNUVEwoc3RhdHVzLCBpbmRleCk7XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNTdGFsZShpbmRleCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdHVzKVxuICAgICAgICAgICAgICAgICAgICBzdGF0dXMuZ2V0ID0gJ3N0YWxlJztcbiAgICAgICAgICAgICAgICAvLyBkZWxldGUgb25seSBpZiBub3QgYW4gaW4tZmxpZ2h0IGJhY2tncm91bmQgZmV0Y2hcbiAgICAgICAgICAgICAgICBpZiAoIWZldGNoaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9EZWxldGVPblN0YWxlR2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkZWxldGUoaywgJ2V4cGlyZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiYgYWxsb3dTdGFsZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5yZXR1cm5lZFN0YWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFsbG93U3RhbGUgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93U3RhbGUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLl9fc3RhbGVXaGlsZUZldGNoaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5yZXR1cm5lZFN0YWxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWxsb3dTdGFsZSA/IHZhbHVlLl9fc3RhbGVXaGlsZUZldGNoaW5nIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0dXMpXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1cy5nZXQgPSAnaGl0JztcbiAgICAgICAgICAgICAgICAvLyBpZiB3ZSdyZSBjdXJyZW50bHkgZmV0Y2hpbmcgaXQsIHdlIGRvbid0IGFjdHVhbGx5IGhhdmUgaXQgeWV0XG4gICAgICAgICAgICAgICAgLy8gaXQncyBub3Qgc3RhbGUsIHdoaWNoIG1lYW5zIHRoaXMgaXNuJ3QgYSBzdGFsZVdoaWxlUmVmZXRjaGluZy5cbiAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIG5vdCBzdGFsZSwgYW5kIGZldGNoaW5nLCBBTkQgaGFzIGEgX19zdGFsZVdoaWxlRmV0Y2hpbmdcbiAgICAgICAgICAgICAgICAvLyB2YWx1ZSwgdGhlbiB0aGF0IG1lYW5zIHRoZSB1c2VyIGZldGNoZWQgd2l0aCB7Zm9yY2VSZWZyZXNoOnRydWV9LFxuICAgICAgICAgICAgICAgIC8vIHNvIGl0J3Mgc2FmZSB0byByZXR1cm4gdGhhdCB2YWx1ZS5cbiAgICAgICAgICAgICAgICBpZiAoZmV0Y2hpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLl9fc3RhbGVXaGlsZUZldGNoaW5nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLiNtb3ZlVG9UYWlsKGluZGV4KTtcbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlQWdlT25HZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4jdXBkYXRlSXRlbUFnZShpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0dXMpIHtcbiAgICAgICAgICAgIHN0YXR1cy5nZXQgPSAnbWlzcyc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgI2Nvbm5lY3QocCwgbikge1xuICAgICAgICB0aGlzLiNwcmV2W25dID0gcDtcbiAgICAgICAgdGhpcy4jbmV4dFtwXSA9IG47XG4gICAgfVxuICAgICNtb3ZlVG9UYWlsKGluZGV4KSB7XG4gICAgICAgIC8vIGlmIHRhaWwgYWxyZWFkeSwgbm90aGluZyB0byBkb1xuICAgICAgICAvLyBpZiBoZWFkLCBtb3ZlIGhlYWQgdG8gbmV4dFtpbmRleF1cbiAgICAgICAgLy8gZWxzZVxuICAgICAgICAvLyAgIG1vdmUgbmV4dFtwcmV2W2luZGV4XV0gdG8gbmV4dFtpbmRleF0gKGhlYWQgaGFzIG5vIHByZXYpXG4gICAgICAgIC8vICAgbW92ZSBwcmV2W25leHRbaW5kZXhdXSB0byBwcmV2W2luZGV4XVxuICAgICAgICAvLyBwcmV2W2luZGV4XSA9IHRhaWxcbiAgICAgICAgLy8gbmV4dFt0YWlsXSA9IGluZGV4XG4gICAgICAgIC8vIHRhaWwgPSBpbmRleFxuICAgICAgICBpZiAoaW5kZXggIT09IHRoaXMuI3RhaWwpIHtcbiAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdGhpcy4jaGVhZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuI2hlYWQgPSB0aGlzLiNuZXh0W2luZGV4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuI2Nvbm5lY3QodGhpcy4jcHJldltpbmRleF0sIHRoaXMuI25leHRbaW5kZXhdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuI2Nvbm5lY3QodGhpcy4jdGFpbCwgaW5kZXgpO1xuICAgICAgICAgICAgdGhpcy4jdGFpbCA9IGluZGV4O1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERlbGV0ZXMgYSBrZXkgb3V0IG9mIHRoZSBjYWNoZS5cbiAgICAgKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUga2V5IHdhcyBkZWxldGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAgICovXG4gICAgZGVsZXRlKGspIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI2RlbGV0ZShrLCAnZGVsZXRlJyk7XG4gICAgfVxuICAgICNkZWxldGUoaywgcmVhc29uKSB7XG4gICAgICAgIGxldCBkZWxldGVkID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLiNzaXplICE9PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuI2tleU1hcC5nZXQoayk7XG4gICAgICAgICAgICBpZiAoaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGRlbGV0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLiNzaXplID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2NsZWFyKHJlYXNvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNyZW1vdmVJdGVtU2l6ZShpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHYgPSB0aGlzLiN2YWxMaXN0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2lzQmFja2dyb3VuZEZldGNoKHYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2Ll9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcignZGVsZXRlZCcpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLiNoYXNEaXNwb3NlIHx8IHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlPy4odiwgaywgcmVhc29uKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlZD8ucHVzaChbdiwgaywgcmVhc29uXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5TWFwLmRlbGV0ZShrKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4ja2V5TGlzdFtpbmRleF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI3ZhbExpc3RbaW5kZXhdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuI3RhaWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI3RhaWwgPSB0aGlzLiNwcmV2W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpbmRleCA9PT0gdGhpcy4jaGVhZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jaGVhZCA9IHRoaXMuI25leHRbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGkgPSB0aGlzLiNwcmV2W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuI25leHRbcGldID0gdGhpcy4jbmV4dFtpbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuaSA9IHRoaXMuI25leHRbaW5kZXhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4jcHJldltuaV0gPSB0aGlzLiNwcmV2W2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNzaXplLS07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuI2ZyZWUucHVzaChpbmRleCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLiNoYXNEaXNwb3NlQWZ0ZXIgJiYgdGhpcy4jZGlzcG9zZWQ/Lmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgZHQgPSB0aGlzLiNkaXNwb3NlZDtcbiAgICAgICAgICAgIGxldCB0YXNrO1xuICAgICAgICAgICAgd2hpbGUgKCh0YXNrID0gZHQ/LnNoaWZ0KCkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4jZGlzcG9zZUFmdGVyPy4oLi4udGFzayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRlbGV0ZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFyIHRoZSBjYWNoZSBlbnRpcmVseSwgdGhyb3dpbmcgYXdheSBhbGwgdmFsdWVzLlxuICAgICAqL1xuICAgIGNsZWFyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4jY2xlYXIoJ2RlbGV0ZScpO1xuICAgIH1cbiAgICAjY2xlYXIocmVhc29uKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgdGhpcy4jcmluZGV4ZXMoeyBhbGxvd1N0YWxlOiB0cnVlIH0pKSB7XG4gICAgICAgICAgICBjb25zdCB2ID0gdGhpcy4jdmFsTGlzdFtpbmRleF07XG4gICAgICAgICAgICBpZiAodGhpcy4jaXNCYWNrZ3JvdW5kRmV0Y2godikpIHtcbiAgICAgICAgICAgICAgICB2Ll9fYWJvcnRDb250cm9sbGVyLmFib3J0KG5ldyBFcnJvcignZGVsZXRlZCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IGsgPSB0aGlzLiNrZXlMaXN0W2luZGV4XTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlPy4odiwgaywgcmVhc29uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuI2hhc0Rpc3Bvc2VBZnRlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlZD8ucHVzaChbdiwgaywgcmVhc29uXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2tleU1hcC5jbGVhcigpO1xuICAgICAgICB0aGlzLiN2YWxMaXN0LmZpbGwodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy4ja2V5TGlzdC5maWxsKHVuZGVmaW5lZCk7XG4gICAgICAgIGlmICh0aGlzLiN0dGxzICYmIHRoaXMuI3N0YXJ0cykge1xuICAgICAgICAgICAgdGhpcy4jdHRscy5maWxsKDApO1xuICAgICAgICAgICAgdGhpcy4jc3RhcnRzLmZpbGwoMCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuI3NpemVzKSB7XG4gICAgICAgICAgICB0aGlzLiNzaXplcy5maWxsKDApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI2hlYWQgPSAwO1xuICAgICAgICB0aGlzLiN0YWlsID0gMDtcbiAgICAgICAgdGhpcy4jZnJlZS5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLiNjYWxjdWxhdGVkU2l6ZSA9IDA7XG4gICAgICAgIHRoaXMuI3NpemUgPSAwO1xuICAgICAgICBpZiAodGhpcy4jaGFzRGlzcG9zZUFmdGVyICYmIHRoaXMuI2Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICBjb25zdCBkdCA9IHRoaXMuI2Rpc3Bvc2VkO1xuICAgICAgICAgICAgbGV0IHRhc2s7XG4gICAgICAgICAgICB3aGlsZSAoKHRhc2sgPSBkdD8uc2hpZnQoKSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLiNkaXNwb3NlQWZ0ZXI/LiguLi50YXNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsbnVsbCxudWxsLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCIgOnN0eWxlPVwiY29tcHV0ZWRJbm5lclN0eWxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8IS0tIGhlYWRlciAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiA6c3R5bGU9XCJjb21wdXRlZEJvZHlTdHlsZVwiPlxuICAgICAgICAgIDwhLS0gYm9keSwg6auY5bqm6Ieq6YCC5bqUIC0tPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICA8IS0tIGZvb3RlciAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxzbG90IG5hbWU9XCJib3hcIj48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbi8qKlxuICogY3J1ZOeahOWuueWZqO+8jOagueaNruWklumDqOmrmOW6puiHqumAguW6lFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzQ29udGFpbmVyXCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5piv5ZCm5Zu65a6a6auY5bqmXG4gICAgICovXG4gICAgZml4ZWRIZWlnaHQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBib2R555qE5qC35byPXG4gICAgICovXG4gICAgYm9keVN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGlubmVy55qE5qC35byPXG4gICAgICovXG4gICAgaW5uZXJTdHlsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBjb21wdXRlZElubmVyU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBtZXJnZSh7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfSwgcHJvcHMuaW5uZXJTdHlsZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMuaW5uZXJTdHlsZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQm9keVN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLmZpeGVkSGVpZ2h0ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gbWVyZ2UoeyBmbGV4OiBcInVuc2V0XCIgfSwgcHJvcHMuYm9keVN0eWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5ib2R5U3R5bGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcHV0ZWRJbm5lclN0eWxlLFxuICAgICAgY29tcHV0ZWRCb2R5U3R5bGVcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1jb250YWluZXIge1xuICAmLmNvbXBhY3Qge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgcGFkZGluZzogMCAyMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC5ib3gge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgLmlubmVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgdG9wOiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAuaGVhZGVyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICB9XG4gICAgICAuZm9vdGVyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCIgOnN0eWxlPVwiY29tcHV0ZWRJbm5lclN0eWxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgICA8IS0tIGhlYWRlciAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJvZHlcIiA6c3R5bGU9XCJjb21wdXRlZEJvZHlTdHlsZVwiPlxuICAgICAgICAgIDwhLS0gYm9keSwg6auY5bqm6Ieq6YCC5bqUIC0tPlxuICAgICAgICAgIDxzbG90Pjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICA8IS0tIGZvb3RlciAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxzbG90IG5hbWU9XCJib3hcIj48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbi8qKlxuICogY3J1ZOeahOWuueWZqO+8jOagueaNruWklumDqOmrmOW6puiHqumAguW6lFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzQ29udGFpbmVyXCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5piv5ZCm5Zu65a6a6auY5bqmXG4gICAgICovXG4gICAgZml4ZWRIZWlnaHQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBib2R555qE5qC35byPXG4gICAgICovXG4gICAgYm9keVN0eWxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGlubmVy55qE5qC35byPXG4gICAgICovXG4gICAgaW5uZXJTdHlsZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBjb21wdXRlZElubmVyU3R5bGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMuZml4ZWRIZWlnaHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBtZXJnZSh7IHBvc2l0aW9uOiBcInJlbGF0aXZlXCIgfSwgcHJvcHMuaW5uZXJTdHlsZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMuaW5uZXJTdHlsZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQm9keVN0eWxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLmZpeGVkSGVpZ2h0ID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gbWVyZ2UoeyBmbGV4OiBcInVuc2V0XCIgfSwgcHJvcHMuYm9keVN0eWxlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5ib2R5U3R5bGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29tcHV0ZWRJbm5lclN0eWxlLFxuICAgICAgY29tcHV0ZWRCb2R5U3R5bGVcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1jb250YWluZXIge1xuICAmLmNvbXBhY3Qge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgcGFkZGluZzogMCAyMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIC5ib3gge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGZsZXg6IDE7XG4gICAgLmlubmVyIHtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgdG9wOiAwO1xuICAgICAgYm90dG9tOiAwO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAuaGVhZGVyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuYm9keSB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICB9XG4gICAgICAuZm9vdGVyIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZnMtY29udGFpbmVyIGNsYXNzPVwiZnMtbGF5b3V0LWRlZmF1bHRcIj5cbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLXRvcFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaFwiPjwvc2xvdD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1taWRkbGVcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLW1pZGRsZVwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyXCI+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLWJvdHRvbVwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYnNcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPCEtLSDpu5jorqTmj5Lmp70gLS0+XG4gICAgPHNsb3Q+PC9zbG90PlxuICAgIDwhLS0gdGFibGUgLS0+XG4gICAgPHNsb3QgbmFtZT1cInRhYmxlXCI+PC9zbG90PlxuXG4gICAgPHNsb3QgbmFtZT1cImZvcm1cIj4gPC9zbG90PlxuXG4gICAgPHRlbXBsYXRlICNmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1mb290ZXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJwYWdpbmF0aW9uXCI+PC9zbG90PlxuICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZnMtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog6buY6K6k5biD5bGAXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNMYXlvdXREZWZhdWx0XCJcbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxheW91dC1kZWZhdWx0IHtcbiAgLmZzLXRhYnMtZmlsdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZnMtY29udGFpbmVyIGNsYXNzPVwiZnMtbGF5b3V0LWRlZmF1bHRcIj5cbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1jcnVkLWhlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLXRvcFwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaFwiPjwvc2xvdD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1taWRkbGVcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLW1pZGRsZVwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJ0b29sYmFyXCI+PC9zbG90PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLWJvdHRvbVwiPlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYnNcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPCEtLSDpu5jorqTmj5Lmp70gLS0+XG4gICAgPHNsb3Q+PC9zbG90PlxuICAgIDwhLS0gdGFibGUgLS0+XG4gICAgPHNsb3QgbmFtZT1cInRhYmxlXCI+PC9zbG90PlxuXG4gICAgPHNsb3QgbmFtZT1cImZvcm1cIj4gPC9zbG90PlxuXG4gICAgPHRlbXBsYXRlICNmb290ZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1mb290ZXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgIDxzbG90IG5hbWU9XCJwYWdpbmF0aW9uXCI+PC9zbG90PlxuICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZnMtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog6buY6K6k5biD5bGAXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNMYXlvdXREZWZhdWx0XCJcbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxheW91dC1kZWZhdWx0IHtcbiAgLmZzLXRhYnMtZmlsdGVyIHtcbiAgICBtYXJnaW4tdG9wOiAxMHB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZnMtY29udGFpbmVyIGNsYXNzPVwiZnMtbGF5b3V0LWNhcmRcIj5cbiAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItdG9wXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItdG9wXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgICA8Y29tcG9uZW50IDppcz1cImNhcmRDb21wb25lbnROYW1lXCIgdi1pZj1cInNlYXJjaFNob3dcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaFwiPjwvc2xvdD5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWhlYWRlci1ib3R0b21cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPGZzLWNvbnRhaW5lcj5cbiAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICA8c2xvdCBuYW1lPVwidGFic1wiPjwvc2xvdD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8Y29tcG9uZW50IDppcz1cImNhcmRDb21wb25lbnROYW1lXCIgY2xhc3M9XCJmcy1sYXlvdXQtY2FyZC1ib2R5XCI+XG4gICAgICAgIDx0ZW1wbGF0ZSAjdGl0bGU+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRvcC1iYXJcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJhY3Rpb25iYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhclwiPjwvc2xvdD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPGZzLWNvbnRhaW5lcj5cbiAgICAgICAgICA8IS0tIOm7mOiupOaPkuanvSAtLT5cbiAgICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICAgICAgPCEtLSB0YWJsZSAtLT5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwidGFibGVcIj48L3Nsb3Q+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cImZvcm1cIj48L3Nsb3Q+XG4gICAgICAgICAgPHRlbXBsYXRlICNmb290ZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJwYWdpbmF0aW9uXCI+PC9zbG90PlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvZnMtY29udGFpbmVyPlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9mcy1jb250YWluZXI+XG4gIDwvZnMtY29udGFpbmVyPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIGluamVjdCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xuLyoqXG4gKiBjYXJk5biD5bGAXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNMYXlvdXRDYXJkXCIsXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IGdldENydWRCaW5kaW5nID0gaW5qZWN0KFwiZ2V0OmNydWRCaW5kaW5nXCIpO1xuICAgIGNvbnN0IHNlYXJjaFNob3cgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoZ2V0Q3J1ZEJpbmRpbmcgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiBnZXRDcnVkQmluZGluZygpPy5zZWFyY2g/LnNob3c7XG4gICAgfSk7XG5cbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG4gICAgY29uc3QgY2FyZENvbXBvbmVudE5hbWUgPSByZWYodWkuY2FyZC5uYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgc2VhcmNoU2hvdyxcbiAgICAgIGNhcmRDb21wb25lbnROYW1lXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtbGF5b3V0LWNhcmQge1xuICAmID4gLmJveCA+IC5pbm5lciA+IC5oZWFkZXIge1xuICAgIG1hcmdpbjogMTBweCAxMHB4IDVweCAxMHB4O1xuICB9XG4gICYgPiAuYm94ID4gLmlubmVyID4gLmJvZHkge1xuICAgIG1hcmdpbjogNXB4IDEwcHggMTBweCAxMHB4O1xuICB9XG4gIC50b3AtYmFyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgfVxuICAuZnMtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIC5ib3gge1xuICAgICAgLmlubmVyIHtcbiAgICAgICAgLmhlYWRlciB7XG4gICAgICAgICAgLmFudC1jYXJkLWJvZHkge1xuICAgICAgICAgICAgcGFkZGluZzogMTRweDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLmZzLWxheW91dC1jYXJkLWJvZHkge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICAuYW50LWNhcmQtaGVhZCB7XG4gICAgICBtaW4taGVpZ2h0OiAwO1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgLmFudC1jYXJkLWhlYWQtdGl0bGUge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5lbC1jYXJkX19oZWFkZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG5cbiAgICAubi1jYXJkLWhlYWRlciB7XG4gICAgICBwYWRkaW5nOiAwcHg7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlZTtcbiAgICB9XG4gICAgLm4tY2FyZF9fY29udGVudCB7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cblxuICAgIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICBtYXJnaW46IDEwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gICAgLmZzLWNydWQtdG9vbGJhciB7XG4gICAgICBtYXJnaW46IDEwcHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuYW50LWNhcmQtYm9keSB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG4gICAgLmVsLWNhcmRfX2JvZHkge1xuICAgICAgZmxleDogMTtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuICB9XG5cbiAgLmZzLXRhYnMtZmlsdGVyIHtcbiAgICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICAgIC5uLXRhYnMgLm4tdGFicy1uYXYubi10YWJzLW5hdi0tY2FyZC10eXBlIC5uLXRhYnMtdGFiIHtcbiAgICAgICYubi10YWJzLXRhYi0tYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY2MDtcbiAgICB9XG5cbiAgICAuZWwtdGFicy0tY2FyZCA+IC5lbC10YWJzX19oZWFkZXIgLmVsLXRhYnNfX2l0ZW0ge1xuICAgICAgJi5pcy1hY3RpdmUge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgICAgfVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjgwO1xuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGZzLWNvbnRhaW5lciBjbGFzcz1cImZzLWxheW91dC1jYXJkXCI+XG4gICAgPHRlbXBsYXRlICNoZWFkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtaGVhZGVyLXRvcFwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLXRvcFwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJjYXJkQ29tcG9uZW50TmFtZVwiIHYtaWY9XCJzZWFyY2hTaG93XCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2hcIj48L3Nsb3Q+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1oZWFkZXItYm90dG9tXCI+XG4gICAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDxmcy1jb250YWluZXI+XG4gICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRhYnNcIj48L3Nsb3Q+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJjYXJkQ29tcG9uZW50TmFtZVwiIGNsYXNzPVwiZnMtbGF5b3V0LWNhcmQtYm9keVwiPlxuICAgICAgICA8dGVtcGxhdGUgI3RpdGxlPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtYmFyXCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyXCI+PC9zbG90PlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0b3AtYmFyXCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyXCI+PC9zbG90PlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXJcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDxmcy1jb250YWluZXI+XG4gICAgICAgICAgPCEtLSDpu5jorqTmj5Lmp70gLS0+XG4gICAgICAgICAgPHNsb3Q+PC9zbG90PlxuICAgICAgICAgIDwhLS0gdGFibGUgLS0+XG4gICAgICAgICAgPHNsb3QgbmFtZT1cInRhYmxlXCI+PC9zbG90PlxuICAgICAgICAgIDxzbG90IG5hbWU9XCJmb3JtXCI+PC9zbG90PlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjZm9vdGVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtZm9vdGVyXCI+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJmb290ZXItdG9wXCI+PC9zbG90PlxuICAgICAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvblwiPjwvc2xvdD5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci1ib3R0b21cIj48L3Nsb3Q+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2ZzLWNvbnRhaW5lcj5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgIDwvZnMtY29udGFpbmVyPlxuICA8L2ZzLWNvbnRhaW5lcj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBpbmplY3QsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcbi8qKlxuICogY2FyZOW4g+WxgFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzTGF5b3V0Q2FyZFwiLFxuICBzZXR1cCgpIHtcbiAgICBjb25zdCBnZXRDcnVkQmluZGluZyA9IGluamVjdChcImdldDpjcnVkQmluZGluZ1wiKTtcbiAgICBjb25zdCBzZWFyY2hTaG93ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKGdldENydWRCaW5kaW5nID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gZ2V0Q3J1ZEJpbmRpbmcoKT8uc2VhcmNoPy5zaG93O1xuICAgIH0pO1xuXG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcblxuICAgIGNvbnN0IGNhcmRDb21wb25lbnROYW1lID0gcmVmKHVpLmNhcmQubmFtZSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlYXJjaFNob3csXG4gICAgICBjYXJkQ29tcG9uZW50TmFtZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxheW91dC1jYXJkIHtcbiAgJiA+IC5ib3ggPiAuaW5uZXIgPiAuaGVhZGVyIHtcbiAgICBtYXJnaW46IDEwcHggMTBweCA1cHggMTBweDtcbiAgfVxuICAmID4gLmJveCA+IC5pbm5lciA+IC5ib2R5IHtcbiAgICBtYXJnaW46IDVweCAxMHB4IDEwcHggMTBweDtcbiAgfVxuICAudG9wLWJhciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gIH1cbiAgLmZzLWNvbnRhaW5lciB7XG4gICAgcGFkZGluZzogMDtcbiAgICAuYm94IHtcbiAgICAgIC5pbm5lciB7XG4gICAgICAgIC5oZWFkZXIge1xuICAgICAgICAgIC5hbnQtY2FyZC1ib2R5IHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDE0cHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIC5mcy1sYXlvdXQtY2FyZC1ib2R5IHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgLmFudC1jYXJkLWhlYWQge1xuICAgICAgbWluLWhlaWdodDogMDtcbiAgICAgIHBhZGRpbmc6IDBweDtcbiAgICAgIC5hbnQtY2FyZC1oZWFkLXRpdGxlIHtcbiAgICAgICAgcGFkZGluZzogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZWwtY2FyZF9faGVhZGVyIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgfVxuXG4gICAgLm4tY2FyZC1oZWFkZXIge1xuICAgICAgcGFkZGluZzogMHB4O1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG4gICAgfVxuICAgIC5uLWNhcmRfX2NvbnRlbnQge1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1hY3Rpb25iYXIge1xuICAgICAgbWFyZ2luOiAxMHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICAgIC5mcy1jcnVkLXRvb2xiYXIge1xuICAgICAgbWFyZ2luOiAxMHB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmFudC1jYXJkLWJvZHkge1xuICAgICAgZmxleDogMTtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuICAgIC5lbC1jYXJkX19ib2R5IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgIH1cbiAgfVxuXG4gIC5mcy10YWJzLWZpbHRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgICAubi10YWJzIC5uLXRhYnMtbmF2Lm4tdGFicy1uYXYtLWNhcmQtdHlwZSAubi10YWJzLXRhYiB7XG4gICAgICAmLm4tdGFicy10YWItLWFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICB9XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmNjA7XG4gICAgfVxuXG4gICAgLmVsLXRhYnMtLWNhcmQgPiAuZWwtdGFic19faGVhZGVyIC5lbC10YWJzX19pdGVtIHtcbiAgICAgICYuaXMtYWN0aXZlIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgIH1cbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY4MDtcbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxuICA8c3BhbiBjbGFzcz1cImZzLWljb25pZnlcIiA6Y2xhc3M9XCJ7ICdmcy1pY29uaWZ5LXNwaW4nOiBzcGluIH1cIj5cbiAgICA8SWNvbiByZWY9XCJpY29uaWZ5UmVmXCIgOmljb249XCJpY29uXCIgOmlubGluZT1cInRydWVcIiAvPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB1bnJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIkBpY29uaWZ5L3Z1ZVwiO1xuLyoqXG4gKiBpY29uaWZ5IOaMiemcgOWKoOi9veWbvuagh+e7hOS7tlxuICogaHR0cHM6Ly9pY29uaWZ5LmRlc2lnbi9pY29uLXNldHMvaW9uL1xuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzSWNvbmlmeVwiLFxuICBjb21wb25lbnRzOiB7IEljb24gfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlm77moIflkI3np7BcbiAgICAgKi9cbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaXi+i9rFxuICAgICAqL1xuICAgIHNwaW46IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IGljb25pZnlSZWYgPSByZWYobnVsbCk7XG4gICAgcmV0dXJuIHsgaWNvbmlmeVJlZiB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtaWNvbmlmeSB7XG4gIC8vZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICYtc3BpbiB7XG4gICAgc3ZnIHtcbiAgICAgIGFuaW1hdGlvbjogZnNMb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcbiAgICB9XG4gIH1cblxuICAmLmZzLWljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICB9XG59XG5cbkBrZXlmcmFtZXMgZnNMb2FkaW5nQ2lyY2xlIHtcbiAgZnJvbSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgdG8ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIGZzTG9hZGluZ0NpcmNsZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbi8vc3Bhbi5pY29uaWZ5IHtcbi8vICBkaXNwbGF5OiBibG9jaztcbi8vICBtaW4td2lkdGg6IDFlbTtcbi8vICBtaW4taGVpZ2h0OiAxZW07XG4vLyAgLy8gYmFja2dyb3VuZC1jb2xvcjogQGljb25pZnktYmctY29sb3I7XG4vLyAgYm9yZGVyLXJhZGl1czogMTAwJTtcbi8vfVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJmcy1pY29uaWZ5XCIgOmNsYXNzPVwieyAnZnMtaWNvbmlmeS1zcGluJzogc3BpbiB9XCI+XG4gICAgPEljb24gcmVmPVwiaWNvbmlmeVJlZlwiIDppY29uPVwiaWNvblwiIDppbmxpbmU9XCJ0cnVlXCIgLz5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlZiwgdW5yZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gXCJAaWNvbmlmeS92dWVcIjtcbi8qKlxuICogaWNvbmlmeSDmjInpnIDliqDovb3lm77moIfnu4Tku7ZcbiAqIGh0dHBzOi8vaWNvbmlmeS5kZXNpZ24vaWNvbi1zZXRzL2lvbi9cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0ljb25pZnlcIixcbiAgY29tcG9uZW50czogeyBJY29uIH0sXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5Zu+5qCH5ZCN56ewXG4gICAgICovXG4gICAgaWNvbjoge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDml4vovaxcbiAgICAgKi9cbiAgICBzcGluOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCBpY29uaWZ5UmVmID0gcmVmKG51bGwpO1xuICAgIHJldHVybiB7IGljb25pZnlSZWYgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWljb25pZnkge1xuICAvL2Rpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAmLXNwaW4ge1xuICAgIHN2ZyB7XG4gICAgICBhbmltYXRpb246IGZzTG9hZGluZ0NpcmNsZSAxcyBpbmZpbml0ZSBsaW5lYXI7XG4gICAgfVxuICB9XG5cbiAgJi5mcy1pY29uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgfVxufVxuXG5Aa2V5ZnJhbWVzIGZzTG9hZGluZ0NpcmNsZSB7XG4gIGZyb20ge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG4gIHRvIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBmc0xvYWRpbmdDaXJjbGUge1xuICBmcm9tIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICB0byB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuXG4vL3NwYW4uaWNvbmlmeSB7XG4vLyAgZGlzcGxheTogYmxvY2s7XG4vLyAgbWluLXdpZHRoOiAxZW07XG4vLyAgbWluLWhlaWdodDogMWVtO1xuLy8gIC8vIGJhY2tncm91bmQtY29sb3I6IEBpY29uaWZ5LWJnLWNvbG9yO1xuLy8gIGJvcmRlci1yYWRpdXM6IDEwMCU7XG4vL31cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzcGFuIDpjbGFzcz1cIlsnZnMtaWNvbi1zdmcnLCBzcGluICYmICdmcy1pY29uLXNwaW4nXVwiPlxuICAgIDxzdmcgY2xhc3M9XCJmcy1pY29uLXN2Zy1jb250ZW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICA8dXNlIDp4bGluazpocmVmPVwic3ltYm9sSWRcIj48L3VzZT5cbiAgICA8L3N2Zz5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgdHlwZSB7IENTU1Byb3BlcnRpZXMgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkIH0gZnJvbSBcInZ1ZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU3ZnSWNvblwiLFxuICBwcm9wczoge1xuICAgIGljb246IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgfSxcbiAgICBzaXplOiB7XG4gICAgICB0eXBlOiBbTnVtYmVyLCBTdHJpbmddLFxuICAgICAgZGVmYXVsdDogMTZcbiAgICB9LFxuICAgIHNwaW46IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICBjb25zdCBzeW1ib2xJZCA9IGNvbXB1dGVkKCgpID0+IGAjJHtwcm9wcy5pY29ufWApO1xuXG4gICAgY29uc3QgZ2V0U3R5bGUgPSBjb21wdXRlZCgoKTogQ1NTUHJvcGVydGllcyA9PiB7XG4gICAgICBjb25zdCB7IHNpemUgfSA9IHByb3BzO1xuICAgICAgbGV0IHMgPSBgJHtzaXplfWA7XG4gICAgICBzID0gYCR7cy5yZXBsYWNlKFwicHhcIiwgXCJcIil9cHhgO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgd2lkdGg6IHMsXG4gICAgICAgIGhlaWdodDogc1xuICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4geyBzeW1ib2xJZCwgZ2V0U3R5bGUgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWljb24tc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAmLmZzLWljb24tc3BpbiB7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nQ2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcbiAgfVxuXG4gIC5mcy1pY29uLXN2Zy1jb250ZW50IHtcbiAgICB3aWR0aDogMWVtO1xuICAgIGhlaWdodDogMWVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xNWVtO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3BhbiA6Y2xhc3M9XCJbJ2ZzLWljb24tc3ZnJywgc3BpbiAmJiAnZnMtaWNvbi1zcGluJ11cIj5cbiAgICA8c3ZnIGNsYXNzPVwiZnMtaWNvbi1zdmctY29udGVudFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxuICAgICAgPHVzZSA6eGxpbms6aHJlZj1cInN5bWJvbElkXCI+PC91c2U+XG4gICAgPC9zdmc+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHR5cGUgeyBDU1NQcm9wZXJ0aWVzIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBjb21wdXRlZCB9IGZyb20gXCJ2dWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1N2Z0ljb25cIixcbiAgcHJvcHM6IHtcbiAgICBpY29uOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIH0sXG4gICAgc2l6ZToge1xuICAgICAgdHlwZTogW051bWJlciwgU3RyaW5nXSxcbiAgICAgIGRlZmF1bHQ6IDE2XG4gICAgfSxcbiAgICBzcGluOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIHNldHVwKHByb3BzKSB7XG4gICAgY29uc3Qgc3ltYm9sSWQgPSBjb21wdXRlZCgoKSA9PiBgIyR7cHJvcHMuaWNvbn1gKTtcblxuICAgIGNvbnN0IGdldFN0eWxlID0gY29tcHV0ZWQoKCk6IENTU1Byb3BlcnRpZXMgPT4ge1xuICAgICAgY29uc3QgeyBzaXplIH0gPSBwcm9wcztcbiAgICAgIGxldCBzID0gYCR7c2l6ZX1gO1xuICAgICAgcyA9IGAke3MucmVwbGFjZShcInB4XCIsIFwiXCIpfXB4YDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBzLFxuICAgICAgICBoZWlnaHQ6IHNcbiAgICAgIH07XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgc3ltYm9sSWQsIGdldFN0eWxlIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1pY29uLXN2ZyB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgJi5mcy1pY29uLXNwaW4ge1xuICAgIGFuaW1hdGlvbjogbG9hZGluZ0NpcmNsZSAxcyBpbmZpbml0ZSBsaW5lYXI7XG4gIH1cblxuICAuZnMtaWNvbi1zdmctY29udGVudCB7XG4gICAgd2lkdGg6IDFlbTtcbiAgICBoZWlnaHQ6IDFlbTtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogLTAuMTVlbTtcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLWxhYmVsXCI+XG4gICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdi1iaW5kPVwibGFiZWxBdHRyc1wiPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDxzbG90IG5hbWU9XCJsYWJlbFwiPjwvc2xvdD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIHYtYmluZD1cImNvbnRlbnRBdHRyc1wiPlxuICAgICAgPHNsb3Q+PC9zbG90PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuXG4vKipcbiAqIGxhYmVs57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNMYWJlbFwiLFxuICBwcm9wczoge1xuICAgIGxhYmVsOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcIlwiXG4gICAgfSxcbiAgICBsYWJlbEF0dHJzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiAoe30pXG4gICAgfSxcbiAgICBjb250ZW50QXR0cnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICB9XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1sYWJlbCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5sYWJlbCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICB9XG4gIC5jb250ZW50IHtcbiAgICBmbGV4OiAxO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWluLXdpZHRoOiAxMDBweDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGZsZXgtd3JhcDogbm93cmFwO1xuICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtbGFiZWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB2LWJpbmQ9XCJsYWJlbEF0dHJzXCI+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgPHNsb3QgbmFtZT1cImxhYmVsXCI+PC9zbG90PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgdi1iaW5kPVwiY29udGVudEF0dHJzXCI+XG4gICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5cbi8qKlxuICogbGFiZWznu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xhYmVsXCIsXG4gIHByb3BzOiB7XG4gICAgbGFiZWw6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiXCJcbiAgICB9LFxuICAgIGxhYmVsQXR0cnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6ICgpID0+ICh7fSlcbiAgICB9LFxuICAgIGNvbnRlbnRBdHRyczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWxhYmVsIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmxhYmVsIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gIH1cbiAgLmNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBtaW4td2lkdGg6IDEwMHB4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgZmxleC13cmFwOiBub3dyYXA7XG4gICAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0xvYWRpbmdcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPGRpdiB2LWlmPVwibG9hZGluZ1wiIGNsYXNzPVwiZnMtbG9hZGluZ1wiPlxuICAgIDxmcy1pY29uIGNsYXNzPVwiZnMtaWNvbi1zcGluXCIgOmljb249XCJpY29uID8/IHVpLmljb25zLnJlZnJlc2hcIj48L2ZzLWljb24+XG4gICAgPHNwYW4gdi1pZj1cInRleHRcIj57eyB0ZXh0IH19PC9zcGFuPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbjtcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPHtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIGljb24/OiBzdHJpbmc7XG4gIHRleHQ/OiBzdHJpbmc7XG59PigpO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1sb2FkaW5nIHtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5mcy1pY29uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBoZWlnaHQ6IDkwJTtcbiAgICBtYXgtd2lkdGg6IDUwcHg7XG4gICAgbWF4LWhlaWdodDogNTBweDtcbiAgICAmLmZzLWljb24tc3BpbiB7XG4gICAgICBzdmcge1xuICAgICAgICBhbmltYXRpb246IGZzLWxvYWRpbmctY2lyY2xlIDFzIGluZmluaXRlIGxpbmVhcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBALXdlYmtpdC1rZXlmcmFtZXMgZnMtbG9hZGluZy1jaXJjbGUge1xuICAgIGZyb20ge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtYm94XCI+XG4gICAgPHNsb3Q+PC9zbG90PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuXG4vKipcbiAqIOWNlee6r+eahOWMheijueS4gOS4quWtkOe7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzQm94XCJcbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1ib3hcIj5cbiAgICA8c2xvdD48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5cbi8qKlxuICog5Y2V57qv55qE5YyF6KO55LiA5Liq5a2Q57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNCb3hcIlxufSk7XG48L3NjcmlwdD5cbiIsbnVsbCxudWxsLG51bGwsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cInVpLmZvcm0ubmFtZVwiXG4gICAgcmVmPVwiZm9ybVJlZlwiXG4gICAgY2xhc3M9XCJmcy1mb3JtXCJcbiAgICA6Y2xhc3M9XCJ7XG4gICAgICAnZnMtZm9ybS1ncmlkJzogZGlzcGxheSA9PT0gJ2dyaWQnLFxuICAgICAgJ2ZzLWZvcm0tZmxleCc6IGRpc3BsYXkgPT09ICdmbGV4JyxcbiAgICAgICdmcy1mb3JtLWludmFsaWQnOiB2YWxpZFJlZiA9PT0gZmFsc2VcbiAgICB9XCJcbiAgICBvbnN1Ym1pdD1cImV2ZW50LnByZXZlbnREZWZhdWx0KCk7XCJcbiAgICA6bW9kZWw9XCJmb3JtXCJcbiAgPlxuICAgIDwhLS0gcm93IC0tPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLXJvd1wiIHYtYmluZD1cInJvd1wiPlxuICAgICAgPCEtLSBjb2wgLS0+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCJpdGVtIGluIGNvbXB1dGVkRGVmYXVsdENvbHVtbnNcIiA6a2V5PVwiaXRlbT8ua2V5XCI+XG4gICAgICAgIDxmcy1mb3JtLWl0ZW0tY29sXG4gICAgICAgICAgOnJlZj1cIlxuICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgZm9ybUl0ZW1SZWZzW2l0ZW0ua2V5XSA9IGVsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXCJcbiAgICAgICAgICA6Y29sPVwibWVyZ2VDb2woaXRlbS5jb2wpXCJcbiAgICAgICAgICA6aXRlbT1cIml0ZW1cIlxuICAgICAgICAgIDpoZWxwZXI9XCJoZWxwZXJcIlxuICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBpdGVtLmtleSlcIlxuICAgICAgICAgIDpzbG90cz1cIm1lcmdlZFNsb3RzWydmb3JtXycgKyBpdGVtLmtleV1cIlxuICAgICAgICAgIDpnZXQtY29udGV4dC1mbj1cImdldENvbnRleHRGblwiXG4gICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInNldChmb3JtLCBpdGVtLmtleSwgJGV2ZW50KVwiXG4gICAgICAgIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvY29tcG9uZW50PlxuICAgIDxjb21wb25lbnRcbiAgICAgIDppcz1cImNvbXB1dGVkR3JvdXAud3JhcHBlci5wYXJlbnRcIlxuICAgICAgdi1pZj1cImNvbXB1dGVkR3JvdXAud3JhcHBlclwiXG4gICAgICB2LW1vZGVsOlt1aS5jb2xsYXBzZS5tb2RlbFZhbHVlXT1cImdyb3VwQWN0aXZlS2V5XCJcbiAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCVcIlxuICAgICAgdi1iaW5kPVwiY29tcHV0ZWRHcm91cFwiXG4gICAgPlxuICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGdyb3VwSXRlbSwgZ3JvdXBLZXkpIG9mIGNvbXB1dGVkR3JvdXAuZ3JvdXBzXCIgOmtleT1cImdyb3VwS2V5XCI+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJjb21wdXRlZEdyb3VwLndyYXBwZXIuY2hpbGRcIlxuICAgICAgICAgIHYtaWY9XCJncm91cEl0ZW1TaG93KGdyb3VwSXRlbSlcIlxuICAgICAgICAgIDpbdWkuY29sbGFwc2Uua2V5TmFtZV09XCJncm91cEtleVwiXG4gICAgICAgICAgdi1iaW5kPVwiZ3JvdXBJdGVtXCJcbiAgICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1mb3JtLWdyb3VwLWVycm9yJzogZXJyb3JzUmVmWydncm91cC4nICsgZ3JvdXBLZXldIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIHNsb3ROYW1lKSBvZiBncm91cEl0ZW0uc2xvdHNcIiA6a2V5PVwic2xvdE5hbWVcIiAjW3Nsb3ROYW1lXT1cInNjb3BlXCI+XG4gICAgICAgICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cIml0ZW1cIiA6c2NvcGU9XCJ7IC4uLnNjb3BlLCBoYXNFcnJvcjogZXJyb3JzUmVmWydncm91cC4nICsgZ3JvdXBLZXldIH1cIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPCEtLSByb3cgLS0+XG4gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtcm93XCIgdi1iaW5kPVwicm93XCI+XG4gICAgICAgICAgICA8IS0tIGNvbCAtLT5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cImtleSBpbiBncm91cEl0ZW0uY29sdW1uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgICAgICAgICAgPGZzLWZvcm0taXRlbS1jb2xcbiAgICAgICAgICAgICAgICB2LWlmPVwiY29tcHV0ZWRDb2x1bW5zW2tleV1cIlxuICAgICAgICAgICAgICAgIDpyZWY9XCJcbiAgICAgICAgICAgICAgICAgIChlbDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgIGZvcm1JdGVtUmVmc1trZXldID0gZWw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgIDpjb2w9XCJtZXJnZUNvbChjb21wdXRlZENvbHVtbnNba2V5XS5jb2wpXCJcbiAgICAgICAgICAgICAgICA6aXRlbT1cImNvbXB1dGVkQ29sdW1uc1trZXldXCJcbiAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwga2V5KVwiXG4gICAgICAgICAgICAgICAgOnNsb3RzPVwibWVyZ2VkU2xvdHNbJ2Zvcm1fJyArIGtleV1cIlxuICAgICAgICAgICAgICAgIDpnZXQtY29udGV4dC1mbj1cImdldENvbnRleHRGblwiXG4gICAgICAgICAgICAgICAgOmhlbHBlcj1cImhlbHBlclwiXG4gICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cInNldChmb3JtLCBrZXksICRldmVudClcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvY29tcG9uZW50PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQge1xuICBjb21wdXRlZCxcbiAgZGVmaW5lQ29tcG9uZW50LFxuICBnZXRDdXJyZW50SW5zdGFuY2UsXG4gIG9uTW91bnRlZCxcbiAgcmVhY3RpdmUsXG4gIFJlZixcbiAgcmVmLFxuICB0b1JhdyxcbiAgdW5yZWYsXG4gIFVud3JhcE5lc3RlZFJlZnMsXG4gIHdhdGNoXG59IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGVhY2gsIHNldCwgY2xvbmVEZWVwLCBlbnRyaWVzLCBnZXQsIHVuc2V0LCBmb3JFYWNoLCBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IENvbXB1dGVWYWx1ZSwgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWNvbXB1dGVcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwubG9nXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEZvcm1TY29wZUNvbnRleHQsIFNldEZvcm1EYXRhT3B0aW9ucywgdXNlVWksIHV0aWxzIH0gZnJvbSBcIi4uLy4uL2luZGV4XCI7XG5cbi8qKlxuICog6YWN572u5YyW55qE6KGo5Y2V57uE5Lu2XG4gKiDmmrTpnLLnmoTmlrnms5XvvJpcbiAqIHJlZi5zdWJtaXQoKSA9IOaPkOS6pOihqOWNlVxuICogcmVmLnJlc2V0KCkgPSDph43nva7ooajljZVcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0Zvcm1cIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDliJ3lp4vooajljZXmlbDmja5cbiAgICAgKiovXG4gICAgaW5pdGlhbEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWtl+auteaooeeJiFxuICAgICAqIHtcbiAgICAgKiAgIGtleTp7XG4gICAgICogICAgIHRpdGxlOiBcIuWtl+auteWQjeensFwiLFxuICAgICAqICAgICBjb21wb25lbnQ6e1xuICAgICAqICAgICAgIG5hbWU6XCLnu4Tku7blkI3np7BcIlxuICAgICAqICAgICAgIC4uLue7hOS7tuWPguaVsFxuICAgICAqICAgICB9XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlrZfmrrXliIbnu4RcbiAgICAgKiB7XG4gICAgICogICB0eXBlOid4eHgnLCAvL+WIhue7hOWxleekuuexu+Wei1xuICAgICAqICAgZ3JvdXBzOnsgLy/liIbnu4TmlbDmja5cbiAgICAgKiAgICAgZ3JvdXBLZXk6eyB0aXRsZToneHh4Jyxjb2x1bW5zOlsnZmllbGRLZXknLCdmaWVsZEtleSddfVxuICAgICAqICAgfVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBncm91cDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDph43nva7ooajljZXlkI7nmoTmk43kvZxcbiAgICAgKi9cbiAgICBkb1Jlc2V0OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Ye75L+d5a2Y5oyJ6ZKu77yM6KGo5Y2V5qCh6aqM5YmN5omn6KGM5pON5L2c77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBiZWZvcmVWYWxpZGF0ZToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOWNleagoemqjOWujOWujOaIkOWQju+8jOaPkOS6pOWJjeWkhOeQhu+8iGFzeW5j77yJXG4gICAgICovXG4gICAgYmVmb3JlU3VibWl0OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Ye75L+d5a2Y5oyJ6ZKu5pe25omn6KGM5pON5L2c77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBkb1N1Ym1pdDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOWNleaPkOS6pOWQjuWkhOeQhu+8iGFzeW5j77yJXG4gICAgICovXG4gICAgYWZ0ZXJTdWJtaXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmj5Lmp73lhoXlrrlcbiAgICAgKi9cbiAgICBzbG90czoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDluIPlsYDmlrnlvI/jgJBmbGV4fGdyaWTjgJFcbiAgICAgKi9cbiAgICBkaXNwbGF5OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcImZsZXhcIiAvLyBmbGV4XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDluo/lj7fvvIznvJbovpHml7bkvJrkvKDlhaVcbiAgICAgKi9cbiAgICBpbmRleDoge1xuICAgICAgdHlwZTogTnVtYmVyLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmqKHlvI8gW2FkZCxlZGl0LHZpZXcs6Ieq5a6a5LmJXVxuICAgICAqL1xuICAgIG1vZGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogYS1yb3fphY3nva5cbiAgICAgKi9cbiAgICByb3c6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogZWwtY29sfGEtY29s6YWN572u77yM5Y+v6YWN572u6Leo5YiXXG4gICAgICovXG4gICAgY29sOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIGZvcm1JdGVt55qE5YWs5YWx6YWN572uXG4gICAgICovXG4gICAgZm9ybUl0ZW06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogaGVscGVy5L2N572u77yae3Bvc2l0aW9uOidsYWJlbCd9XG4gICAgICovXG4gICAgaGVscGVyOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuXG4gICAgd2F0Y2g6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogbnVsbFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInJlc2V0XCIsIFwic3VibWl0XCIsIFwic3VjY2Vzc1wiLCBcInZhbGlkYXRpb25FcnJvclwiLCBcInZhbHVlLWNoYW5nZVwiLCBcImluaXRcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBBc3luY0NvbXB1dGVWYWx1ZSwgZG9Db21wdXRlZCB9ID0gdXNlQ29tcHV0ZSgpO1xuICAgIGNvbnN0IGZvcm1SZWYgPSByZWYoKTtcbiAgICBjb25zdCBmb3JtOiBVbndyYXBOZXN0ZWRSZWZzPGFueT4gPSByZWFjdGl2ZSh7fSk7XG4gICAgY29uc3QgeyBwcm94eSB9ID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG5cbiAgICB1dGlscy50cmFjZShcImZzLWZvcm1cIik7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbS52YWx1ZSAhPSBudWxsICYmIChpdGVtLnZhbHVlIGluc3RhbmNlb2YgQXN5bmNDb21wdXRlVmFsdWUgfHwgaXRlbS52YWx1ZSBpbnN0YW5jZW9mIENvbXB1dGVWYWx1ZSkpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJmb3JtLnZhbHVl6YWN572u5LiN5pSv5oyBQ29tcHV0ZS9Bc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKSB7XG4gICAgICBjb25zdCBmb3JtID0ge307XG4gICAgICAvLyDliJ3lp4vmlbDmja7otYvlgLxcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihpdGVtLnZhbHVlKTtcbiAgICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzZXQoZm9ybSwga2V5LCBkZWZWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgbWVyZ2UoZm9ybSwgY2xvbmVEZWVwKHByb3BzLmluaXRpYWxGb3JtKSk7XG4gICAgICByZXR1cm4gZm9ybTtcbiAgICB9XG5cbiAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgc2V0Rm9ybURhdGEoaW5pdGlhbEZvcm0pO1xuXG4gICAgY29uc3Qgc2NvcGU6IFJlZjxGb3JtU2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvdzogaW5pdGlhbEZvcm0sXG4gICAgICAgIGZvcm0sXG4gICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgbW9kZTogcHJvcHMubW9kZSB8fCBcImFkZFwiLFxuICAgICAgICBhdHRyczogY3R4LmF0dHJzLFxuICAgICAgICBnZXRDb21wb25lbnRSZWZcbiAgICAgIH0gYXMgRm9ybVNjb3BlQ29udGV4dDtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpIHtcbiAgICAgIHJldHVybiBzY29wZS52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcbiAgICB9KTtcbiAgICAvL2Zvcm0udmFsdWVCdWlsZGVyXG5cbiAgICBmdW5jdGlvbiBkb1ZhbHVlQnVpbGRlcihmb3JtOiBhbnkpIHtcbiAgICAgIGlmIChmb3JtID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBnZXQoZm9ybSwga2V5KTtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVCdWlsZGVyKSB7XG4gICAgICAgICAgaXRlbS52YWx1ZUJ1aWxkZXIoe1xuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICByb3c6IGluaXRpYWxGb3JtLFxuICAgICAgICAgICAgZm9ybSxcbiAgICAgICAgICAgIGluZGV4OiBwcm9wcy5pbmRleCxcbiAgICAgICAgICAgIG1vZGU6IHByb3BzLm1vZGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybURhdGEoKSB7XG4gICAgICByZXR1cm4gZm9ybTtcbiAgICB9XG4gICAgZnVuY3Rpb24gc2V0Rm9ybURhdGEoZm9ybURhdGE6IGFueSwgb3B0aW9uczogU2V0Rm9ybURhdGFPcHRpb25zID0ge30pIHtcbiAgICAgIGRvVmFsdWVCdWlsZGVyKGZvcm1EYXRhKTtcblxuICAgICAgaWYgKG9wdGlvbnMubWVyZ2VGb3JtID09PSBmYWxzZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtKSB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1ba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbWVyZ2UoZm9ybSwgZm9ybURhdGEpO1xuICAgICAgY29uc3QgeyB2YWx1ZUNoYW5nZSB9ID0gb3B0aW9ucztcbiAgICAgIGlmICh2YWx1ZUNoYW5nZSkge1xuICAgICAgICBmb3JFYWNoKHByb3BzLmNvbHVtbnMsIChjb2x1bW46IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1ba2V5XTtcbiAgICAgICAgICBkb1ZhbHVlQ2hhbmdlKGtleSwgdmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbCguLi5jb2w6IGFueSkge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5jb2wsIC4uLmNvbCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRJdGVtU2NvcGUoaXRlbTogYW55KTogRm9ybVNjb3BlQ29udGV4dCB7XG4gICAgICByZXR1cm4geyBrZXk6IGl0ZW0ua2V5LCAuLi5zY29wZS52YWx1ZSB9O1xuICAgIH1cblxuICAgIC8vIGRvVmFsdWVCdWlsZGVyKGZvcm0pO1xuXG4gICAgLy8gd2F0Y2goXG4gICAgLy8gICAoKSA9PiBwcm9wcy5pbml0aWFsRm9ybSxcbiAgICAvLyAgICgpID0+IHtcbiAgICAvLyAgICAgc2V0Rm9ybURhdGEoY3JlYXRlSW5pdGlhbEZvcm0oKSwgeyBtZXJnZUZvcm06IGZhbHNlIH0pO1xuICAgIC8vICAgfVxuICAgIC8vICk7XG5cbiAgICBmdW5jdGlvbiBkb1ZhbHVlQ2hhbmdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG4gICAgICBjb25zdCBldmVudCA9IHsga2V5LCB2YWx1ZSwgZm9ybVJlZjogcHJveHksIC4uLnNjb3BlLnZhbHVlLCBpbW1lZGlhdGU6IGZhbHNlIH07XG4gICAgICBjdHguZW1pdChcInZhbHVlLWNoYW5nZVwiLCBldmVudCk7XG4gICAgICBsZXQgdmFsdWVDaGFuZ2UgPSBwcm9wcy5jb2x1bW5zW2tleV0udmFsdWVDaGFuZ2U7XG4gICAgICBpZiAodmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgaWYgKHZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgICAgICB2YWx1ZUNoYW5nZShldmVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWVDaGFuZ2UuaGFuZGxlKSB7XG4gICAgICAgICAgdmFsdWVDaGFuZ2UuaGFuZGxlKGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZvcm1JdGVtUmVmczogUmVmID0gcmVmKHt9KTtcblxuICAgIGZ1bmN0aW9uIGdldEZvcm1JdGVtUmVmKGtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gZm9ybUl0ZW1SZWZzLnZhbHVlW2tleV0uZ2V0Rm9ybUl0ZW1SZWYoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcsIGlzQXN5bmMgPSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGdldEZvcm1JdGVtUmVmKGtleSk/LmdldENvbXBvbmVudFJlZihpc0FzeW5jKTtcbiAgICB9XG5cbiAgICBjb25zdCBncm91cEFjdGl2ZUtleSA9IHJlZihbXSk7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgZm9yRWFjaChwcm9wcy5ncm91cD8uZ3JvdXBzLCAoZ3JvdXBJdGVtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICBpZiAoZ3JvdXBJdGVtLmNvbGxhcHNlZCAhPT0gdHJ1ZSkge1xuICAgICAgICBncm91cEFjdGl2ZUtleS52YWx1ZS5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxuICAgIGlmIChwcm9wcy5ncm91cD8uZ3JvdXBUeXBlID09PSBcInRhYnNcIikge1xuICAgICAgZ3JvdXBBY3RpdmVLZXkudmFsdWUgPSBncm91cEFjdGl2ZUtleS52YWx1ZS5sZW5ndGggPiAwID8gZ3JvdXBBY3RpdmVLZXkudmFsdWVbMF0gOiBudWxsO1xuICAgIH1cblxuICAgIC8v5p6E5bu65YiG57uE5pWw5o2uXG4gICAgY29uc3QgY29tcHV0ZWRHcm91cCA9IGRvQ29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5ncm91cDtcbiAgICAgIH0sXG4gICAgICBnZXRDb250ZXh0Rm4sXG4gICAgICBudWxsLFxuICAgICAgKGdyb3VwID0ge30pID0+IHtcbiAgICAgICAgLy/mib7lh7rmsqHmnInmt7vliqDov5vliIbnu4TnmoTlrZfmrrVcbiAgICAgICAgY29uc3QgZ3JvdXBlZEtleXM6IGFueSA9IHt9O1xuICAgICAgICBmb3JFYWNoKGdyb3VwPy5ncm91cHMsIChncm91cEl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICBmb3JFYWNoKGdyb3VwSXRlbS5jb2x1bW5zLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcHV0ZWRDb2x1bW5zLnZhbHVlW2l0ZW1dID09IG51bGwpIHtcbiAgICAgICAgICAgICAgdXRpbHMubG9nZ2VyLndhcm4oXCLml6DmlYjnmoTliIbnu4TlrZfmrrXvvJpcIiArIGl0ZW0pO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncm91cGVkS2V5c1tpdGVtXSA9IGtleTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgdHlwZSA9IGdyb3VwLmdyb3VwVHlwZTtcbiAgICAgICAgbGV0IHdyYXBwZXIgPSB7XG4gICAgICAgICAgcGFyZW50OiB1aS5jb2xsYXBzZS5uYW1lLFxuICAgICAgICAgIGNoaWxkOiB1aS5jb2xsYXBzZUl0ZW0ubmFtZVxuICAgICAgICB9O1xuICAgICAgICBpZiAodHlwZSA9PT0gXCJ0YWJzXCIpIHtcbiAgICAgICAgICB3cmFwcGVyLnBhcmVudCA9IHVpLnRhYnMubmFtZTtcbiAgICAgICAgICB3cmFwcGVyLmNoaWxkID0gdWkudGFiUGFuZS5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3cmFwcGVyLFxuICAgICAgICAgICAgZ3JvdXBlZEtleXNcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdyb3VwXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNvbXB1dGVkRGVmYXVsdENvbHVtbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBjb2x1bW5zOiBhbnkgPSBbXTtcbiAgICAgIC8vZGVmYXVsdCBjb2x1bW5z5o6S5bqPXG4gICAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKHZhbHVlOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBjbG9uZURlZXAocHJvcHMuZm9ybUl0ZW0gfHwge30pO1xuICAgICAgICB2YWx1ZSA9IG1lcmdlKGl0ZW0sIHZhbHVlKTtcbiAgICAgICAgdmFsdWUua2V5ID0ga2V5O1xuICAgICAgICBpZiAodmFsdWUub3JkZXIgPT0gbnVsbCkge1xuICAgICAgICAgIHZhbHVlLm9yZGVyID0gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXMgPT0gbnVsbCB8fCBjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5c1trZXldID09IG51bGwpIHtcbiAgICAgICAgICBjb2x1bW5zLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHZhbHVlLmNvbCA9IG1lcmdlQ29sKHZhbHVlLmNvbCk7XG4gICAgICB9KTtcbiAgICAgIC8v5o6S5bqPXG4gICAgICBjb2x1bW5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY29sdW1ucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldEZvcm1SZWYoKSB7XG4gICAgICByZXR1cm4gZm9ybVJlZi52YWx1ZTtcbiAgICB9XG4gICAgYXN5bmMgZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChmb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybSk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0KGluaXRpYWxGb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIHVuc2V0KGZvcm0sIGVudHJ5WzBdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXQoZm9ybSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmRvUmVzZXQpIHtcbiAgICAgICAgYXdhaXQgcHJvcHMuZG9SZXNldChzY29wZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcInJlc2V0XCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkUmVmOiBSZWYgPSByZWYoKTtcbiAgICBjb25zdCBlcnJvcnNSZWY6IFJlZiA9IHJlZih7fSk7XG5cbiAgICBmdW5jdGlvbiBmaWxsR3JvdXBFcnJvcihmaWVsZEVycm9yczogYW55KSB7XG4gICAgICBpZiAoIWNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGtleSBpbiBmaWVsZEVycm9ycykge1xuICAgICAgICBjb25zdCBncm91cCA9IGNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzW2tleV07XG4gICAgICAgIGlmIChncm91cCAhPSBudWxsKSB7XG4gICAgICAgICAgZmllbGRFcnJvcnNbXCJncm91cC5cIiArIGdyb3VwXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiB2YWxpZGF0ZSgpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRlU2NvcGUgPSB7IC4uLnNjb3BlLnZhbHVlLCBmb3JtIH07XG4gICAgICBpZiAodmFsaWRhdGVTY29wZS5tb2RlID09PSBcInZpZXdcIikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuYmVmb3JlVmFsaWRhdGUpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgcHJvcHMuYmVmb3JlVmFsaWRhdGUodmFsaWRhdGVTY29wZSk7XG4gICAgICAgIGlmIChyZXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGVycm9yc1JlZi52YWx1ZSA9IHt9O1xuICAgICAgICBhd2FpdCB1aS5mb3JtLnZhbGlkYXRlV3JhcChmb3JtUmVmLnZhbHVlKTtcbiAgICAgICAgdmFsaWRSZWYudmFsdWUgPSB0cnVlO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHZhbGlkUmVmLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IHZhbGlkYXRlRXJyb3JzID0gdWkuZm9ybS50cmFuc2Zvcm1WYWxpZGF0ZUVycm9ycyhlKTtcbiAgICAgICAgZmlsbEdyb3VwRXJyb3IodmFsaWRhdGVFcnJvcnMpO1xuICAgICAgICBlcnJvcnNSZWYudmFsdWUgPSB2YWxpZGF0ZUVycm9ycztcbiAgICAgICAgY3R4LmVtaXQoXCJ2YWxpZGF0aW9uRXJyb3JcIiwgc2NvcGUudmFsdWUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiBzdWJtaXQoKSB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZSgpO1xuICAgICAgY29uc3QgZm9ybURhdGEgPSBjbG9uZURlZXAodG9SYXcoZm9ybSkpO1xuICAgICAgY29uc3Qgc3VibWl0U2NvcGUgPSB7IC4uLnNjb3BlLnZhbHVlLCBmb3JtOiBmb3JtRGF0YSB9O1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiZm9ybSBzdWJtaXRcIiwgSlNPTi5zdHJpbmdpZnkoZm9ybSkpO1xuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBsZXQgdmFsdWUgPSBnZXQoZm9ybURhdGEsIGtleSk7XG4gICAgICAgIGlmIChpdGVtLnZhbHVlUmVzb2x2ZSkge1xuICAgICAgICAgIGl0ZW0udmFsdWVSZXNvbHZlKHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgLi4uc3VibWl0U2NvcGVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wcy5iZWZvcmVTdWJtaXQpIHtcbiAgICAgICAgY29uc3QgcmV0ID0gYXdhaXQgcHJvcHMuYmVmb3JlU3VibWl0KHN1Ym1pdFNjb3BlKTtcbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy/np7vpmaTkuI3lhYHorrjmj5DkuqTnmoTlrZfmrrVcbiAgICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uc3VibWl0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHVuc2V0KGZvcm1EYXRhLCBrZXkpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0uc3VibWl0ID09PSB0cnVlKSB7XG4gICAgICAgICAgLy/orr7nva7lvLrliLbmj5DkuqTnmoTlrZfmrrVcbiAgICAgICAgICBzZXQoZm9ybURhdGEsIGtleSwgZm9ybURhdGFba2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAocHJvcHMuZG9TdWJtaXQpIHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgcHJvcHMuZG9TdWJtaXQoc3VibWl0U2NvcGUpO1xuICAgICAgICBzdWJtaXRTY29wZS5yZXMgPSByZXM7XG4gICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcInN1Ym1pdFwiLCBzdWJtaXRTY29wZSk7XG4gICAgICBpZiAocHJvcHMuYWZ0ZXJTdWJtaXQpIHtcbiAgICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHByb3BzLmFmdGVyU3VibWl0KHN1Ym1pdFNjb3BlKTtcbiAgICAgICAgaWYgKHN1Y2Nlc3MgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcInN1Y2Nlc3NcIiwgc3VibWl0U2NvcGUpO1xuXG4gICAgICByZXR1cm4gc3VibWl0U2NvcGU7XG4gICAgfVxuXG4gICAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAgIC8vIGltbWVkaWF0ZSB2YWx1ZUNoYW5nZeinpuWPkVxuICAgICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHZhbHVlQ2hhbmdlID0gaXRlbS52YWx1ZUNoYW5nZTtcbiAgICAgICAgaWYgKHZhbHVlQ2hhbmdlICYmIHZhbHVlQ2hhbmdlLmltbWVkaWF0ZSA9PT0gdHJ1ZSAmJiB2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcbiAgICAgICAgICBjb25zdCBldmVudCA9IHsga2V5LCB2YWx1ZTogZm9ybVtrZXldLCBmb3JtUmVmOiBwcm94eSwgLi4uc2NvcGUudmFsdWUsIGltbWVkaWF0ZTogdHJ1ZSB9O1xuICAgICAgICAgIGlmICh2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcbiAgICAgICAgICAgIHZhbHVlQ2hhbmdlLmhhbmRsZShldmVudCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGZvcm1JdGVtU2hvdyhpdGVtOiBhbnkpIHtcbiAgICAgIGlmIChpdGVtICYmIHVucmVmKGl0ZW0uc2hvdykgIT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmdW5jdGlvbiBncm91cEl0ZW1TaG93KGdyb3VwSXRlbTogYW55KSB7XG4gICAgICBpZiAoIWdyb3VwSXRlbS5jb2x1bW5zKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGlmICh1bnJlZihncm91cEl0ZW0uc2hvdykgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChsZXQga2V5IG9mIGdyb3VwSXRlbS5jb2x1bW5zKSB7XG4gICAgICAgIGlmIChjb21wdXRlZENvbHVtbnMudmFsdWVba2V5XSA9PSBudWxsKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaXNGaWVsZFNob3cgPSBmb3JtSXRlbVNob3coY29tcHV0ZWRDb2x1bW5zLnZhbHVlW2tleV0pO1xuICAgICAgICBpZiAoaXNGaWVsZFNob3cpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy53YXRjaCkge1xuICAgICAgd2F0Y2goXG4gICAgICAgICgpID0+IHtcbiAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfSxcbiAgICAgICAgKG5ld1ZhbCwgb2xkVmFsKSA9PiB7XG4gICAgICAgICAgaWYgKHByb3BzLndhdGNoKSB7XG4gICAgICAgICAgICBwcm9wcy53YXRjaChzY29wZS52YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgZGVlcDogdHJ1ZSxcbiAgICAgICAgICBpbW1lZGlhdGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpc0RpcnR5KCkge1xuICAgICAgY29uc3QgYmVmb3JlID0gSlNPTi5zdHJpbmdpZnkoaW5pdGlhbEZvcm0pO1xuICAgICAgY29uc3QgYWZ0ZXIgPSBKU09OLnN0cmluZ2lmeShmb3JtKTtcbiAgICAgIHJldHVybiBiZWZvcmUgIT09IGFmdGVyO1xuICAgIH1cblxuICAgIGNvbnN0IG1lcmdlZFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5zbG90cywgY3R4LnNsb3RzKTtcbiAgICB9KTtcblxuICAgIGN0eC5lbWl0KFwiaW5pdFwiLCBzY29wZS52YWx1ZSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAoZm9ybTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0KGZvcm0sIGtleSk7XG4gICAgICB9LFxuICAgICAgc2V0OiAoZm9ybTogYW55LCBrZXk6IHN0cmluZywgdmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBzZXQoZm9ybSwga2V5LCB2YWx1ZSk7XG4gICAgICAgIGRvVmFsdWVDaGFuZ2Uoa2V5LCB2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgdWksXG4gICAgICB2YWxpZFJlZixcbiAgICAgIGVycm9yc1JlZixcbiAgICAgIGZvcm1SZWYsXG4gICAgICBjb21wdXRlZENvbHVtbnMsXG4gICAgICBjb21wdXRlZERlZmF1bHRDb2x1bW5zLFxuICAgICAgc3VibWl0LFxuICAgICAgcmVzZXQsXG4gICAgICBnZXRGb3JtUmVmLFxuICAgICAgc2NvcGUsXG4gICAgICBidWlsZEl0ZW1TY29wZSxcbiAgICAgIGdyb3VwQWN0aXZlS2V5LFxuICAgICAgZm9ybSxcbiAgICAgIGZvcm1JdGVtUmVmcyxcbiAgICAgIGdldEZvcm1EYXRhLFxuICAgICAgc2V0Rm9ybURhdGEsXG4gICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICBtZXJnZUNvbCxcbiAgICAgIHZhbGlkYXRlLFxuICAgICAgY29tcHV0ZWRHcm91cCxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIGZvcm1JdGVtU2hvdyxcbiAgICAgIGdyb3VwSXRlbVNob3csXG4gICAgICBpc0RpcnR5LFxuICAgICAgbWVyZ2VkU2xvdHNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtIHtcbiAgLmVsLWNvbGxhcHNlLWl0ZW1fX2NvbnRlbnQge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgcGFkZGluZy1sZWZ0OiAzMHB4O1xuICAgIHBhZGRpbmctcmlnaHQ6IDMwcHg7XG4gIH1cblxuICAuZnMtZm9ybS1pbnZhbGlkIHtcbiAgfVxuXG4gIC5mcy1mb3JtLWl0ZW0tY29tcG9uZW50IHtcbiAgICAuYW50LXBpY2tlcixcbiAgICAuYW50LWlucHV0LWFmZml4LXdyYXBwZXIsXG4gICAgLmFudC1pbnB1dC1udW1iZXIsXG4gICAgLmVsLWNhc2NhZGVyLFxuICAgIC5lbC1kYXRlLWVkaXRvcixcbiAgICAuZWwtaW5wdXQtbnVtYmVyLFxuICAgIC5lbC1pbnB1dCxcbiAgICA+IC5lbC1zZWxlY3QsXG4gICAgPiAubi1zZWxlY3QsXG4gICAgLm4tZGF0ZS1waWNrZXIsXG4gICAgLm4taW5wdXQtbnVtYmVyIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2ljb24ge1xuICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgfVxuICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2Nsb3NlLWljb24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIH1cblxuICAgIC5lbC1yYW5nZS1lZGl0b3IuZWwtaW5wdXRfX3dyYXBwZXIge1xuICAgICAgcGFkZGluZzogMDtcbiAgICB9XG4gIH1cblxuICAvLy5lbC1kYXRlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XG4gIC8vICB3aWR0aDogMTAwJTtcbiAgLy99XG59XG5cbi5mcy1mb3JtLWdyaWQge1xuICAuZnMtcm93IHtcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNTAlIDUwJTtcbiAgICAvLyBnYXA6IDAgMjBweDsgLy/liJfpl7Tot50gMjBweFxuICAgIC5mcy1jb2wge1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLy8gYW50ZHZcbiAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICB3aWR0aDogMTAwcHg7XG4gICAgICBmbGV4OiBub25lO1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbiAgICAuYW50LWZvcm0taXRlbS1jb250cm9sLXdyYXBwZXIge1xuICAgICAgZmxleDogMTtcbiAgICAgIG1heC13aWR0aDogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBlbGVtZW50XG4gIC5lbC1yb3c6OmFmdGVyLFxuICAuZWwtcm93OjpiZWZvcmUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5mcy1mb3JtLWZsZXgge1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gIGFsaWduLWl0ZW1zOiBiYXNlbGluZTtcbiAgZmxleC13cmFwOiB3cmFwO1xuICAuZnMtcm93IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmZzLWZvcm0tZmxleCB7XG4gICAgLmZzLXJvdyB7XG4gICAgICAuZnMtY29sIHtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZmxleDogMCAwIDEwMCU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA1NzVweCkge1xuICAuZnMtZm9ybS1mbGV4IHtcbiAgICAuZnMtcm93IHtcbiAgICAgIC5mcy1jb2wge1xuICAgICAgICAvLy5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAgICAgLy8gIGZsZXg6IG5vbmU7XG4gICAgICAgIC8vfVxuICAgICAgICAvLy5hbnQtZm9ybS1pdGVtIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xuICAgICAgICAvLyAgZmxleDogMTtcbiAgICAgICAgLy8gIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgLy99XG4gICAgICB9XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcbiAgICByZWY9XCJmb3JtUmVmXCJcbiAgICBjbGFzcz1cImZzLWZvcm1cIlxuICAgIDpjbGFzcz1cIntcbiAgICAgICdmcy1mb3JtLWdyaWQnOiBkaXNwbGF5ID09PSAnZ3JpZCcsXG4gICAgICAnZnMtZm9ybS1mbGV4JzogZGlzcGxheSA9PT0gJ2ZsZXgnLFxuICAgICAgJ2ZzLWZvcm0taW52YWxpZCc6IHZhbGlkUmVmID09PSBmYWxzZVxuICAgIH1cIlxuICAgIG9uc3VibWl0PVwiZXZlbnQucHJldmVudERlZmF1bHQoKTtcIlxuICAgIDptb2RlbD1cImZvcm1cIlxuICA+XG4gICAgPCEtLSByb3cgLS0+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtcm93XCIgdi1iaW5kPVwicm93XCI+XG4gICAgICA8IS0tIGNvbCAtLT5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWREZWZhdWx0Q29sdW1uc1wiIDprZXk9XCJpdGVtPy5rZXlcIj5cbiAgICAgICAgPGZzLWZvcm0taXRlbS1jb2xcbiAgICAgICAgICA6cmVmPVwiXG4gICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBpZiAoZWwpIHtcbiAgICAgICAgICAgICAgICBmb3JtSXRlbVJlZnNbaXRlbS5rZXldID0gZWw7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIlxuICAgICAgICAgIDpjb2w9XCJtZXJnZUNvbChpdGVtLmNvbClcIlxuICAgICAgICAgIDppdGVtPVwiaXRlbVwiXG4gICAgICAgICAgOmhlbHBlcj1cImhlbHBlclwiXG4gICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0KGZvcm0sIGl0ZW0ua2V5KVwiXG4gICAgICAgICAgOnNsb3RzPVwibWVyZ2VkU2xvdHNbJ2Zvcm1fJyArIGl0ZW0ua2V5XVwiXG4gICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0KGZvcm0sIGl0ZW0ua2V5LCAkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9jb21wb25lbnQ+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyLnBhcmVudFwiXG4gICAgICB2LWlmPVwiY29tcHV0ZWRHcm91cC53cmFwcGVyXCJcbiAgICAgIHYtbW9kZWw6W3VpLmNvbGxhcHNlLm1vZGVsVmFsdWVdPVwiZ3JvdXBBY3RpdmVLZXlcIlxuICAgICAgc3R5bGU9XCJ3aWR0aDogMTAwJVwiXG4gICAgICB2LWJpbmQ9XCJjb21wdXRlZEdyb3VwXCJcbiAgICA+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoZ3JvdXBJdGVtLCBncm91cEtleSkgb2YgY29tcHV0ZWRHcm91cC5ncm91cHNcIiA6a2V5PVwiZ3JvdXBLZXlcIj5cbiAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgIDppcz1cImNvbXB1dGVkR3JvdXAud3JhcHBlci5jaGlsZFwiXG4gICAgICAgICAgdi1pZj1cImdyb3VwSXRlbVNob3coZ3JvdXBJdGVtKVwiXG4gICAgICAgICAgOlt1aS5jb2xsYXBzZS5rZXlOYW1lXT1cImdyb3VwS2V5XCJcbiAgICAgICAgICB2LWJpbmQ9XCJncm91cEl0ZW1cIlxuICAgICAgICAgIDpjbGFzcz1cInsgJ2ZzLWZvcm0tZ3JvdXAtZXJyb3InOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgc2xvdE5hbWUpIG9mIGdyb3VwSXRlbS5zbG90c1wiIDprZXk9XCJzbG90TmFtZVwiICNbc2xvdE5hbWVdPVwic2NvcGVcIj5cbiAgICAgICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaXRlbVwiIDpzY29wZT1cInsgLi4uc2NvcGUsIGhhc0Vycm9yOiBlcnJvcnNSZWZbJ2dyb3VwLicgKyBncm91cEtleV0gfVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tIHJvdyAtLT5cbiAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgY2xhc3M9XCJmcy1yb3dcIiB2LWJpbmQ9XCJyb3dcIj5cbiAgICAgICAgICAgIDwhLS0gY29sIC0tPlxuICAgICAgICAgICAgPHRlbXBsYXRlIHYtZm9yPVwia2V5IGluIGdyb3VwSXRlbS5jb2x1bW5zXCIgOmtleT1cImtleVwiPlxuICAgICAgICAgICAgICA8ZnMtZm9ybS1pdGVtLWNvbFxuICAgICAgICAgICAgICAgIHYtaWY9XCJjb21wdXRlZENvbHVtbnNba2V5XVwiXG4gICAgICAgICAgICAgICAgOnJlZj1cIlxuICAgICAgICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybUl0ZW1SZWZzW2tleV0gPSBlbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgOmNvbD1cIm1lcmdlQ29sKGNvbXB1dGVkQ29sdW1uc1trZXldLmNvbClcIlxuICAgICAgICAgICAgICAgIDppdGVtPVwiY29tcHV0ZWRDb2x1bW5zW2tleV1cIlxuICAgICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cImdldChmb3JtLCBrZXkpXCJcbiAgICAgICAgICAgICAgICA6c2xvdHM9XCJtZXJnZWRTbG90c1snZm9ybV8nICsga2V5XVwiXG4gICAgICAgICAgICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgICAgICAgICAgICA6aGVscGVyPVwiaGVscGVyXCJcbiAgICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwic2V0KGZvcm0sIGtleSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7XG4gIGNvbXB1dGVkLFxuICBkZWZpbmVDb21wb25lbnQsXG4gIGdldEN1cnJlbnRJbnN0YW5jZSxcbiAgb25Nb3VudGVkLFxuICByZWFjdGl2ZSxcbiAgUmVmLFxuICByZWYsXG4gIHRvUmF3LFxuICB1bnJlZixcbiAgVW53cmFwTmVzdGVkUmVmcyxcbiAgd2F0Y2hcbn0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZWFjaCwgc2V0LCBjbG9uZURlZXAsIGVudHJpZXMsIGdldCwgdW5zZXQsIGZvckVhY2gsIG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQ29tcHV0ZVZhbHVlLCB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgRm9ybVNjb3BlQ29udGV4dCwgU2V0Rm9ybURhdGFPcHRpb25zLCB1c2VVaSwgdXRpbHMgfSBmcm9tIFwiLi4vLi4vaW5kZXhcIjtcblxuLyoqXG4gKiDphY3nva7ljJbnmoTooajljZXnu4Tku7ZcbiAqIOaatOmcsueahOaWueazle+8mlxuICogcmVmLnN1Ym1pdCgpID0g5o+Q5Lqk6KGo5Y2VXG4gKiByZWYucmVzZXQoKSA9IOmHjee9ruihqOWNlVxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRm9ybVwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWIneWni+ihqOWNleaVsOaNrlxuICAgICAqKi9cbiAgICBpbml0aWFsRm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a2X5q615qih54mIXG4gICAgICoge1xuICAgICAqICAga2V5OntcbiAgICAgKiAgICAgdGl0bGU6IFwi5a2X5q615ZCN56ewXCIsXG4gICAgICogICAgIGNvbXBvbmVudDp7XG4gICAgICogICAgICAgbmFtZTpcIue7hOS7tuWQjeensFwiXG4gICAgICogICAgICAgLi4u57uE5Lu25Y+C5pWwXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKiB9XG4gICAgICogKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWtl+auteWIhue7hFxuICAgICAqIHtcbiAgICAgKiAgIHR5cGU6J3h4eCcsIC8v5YiG57uE5bGV56S657G75Z6LXG4gICAgICogICBncm91cHM6eyAvL+WIhue7hOaVsOaNrlxuICAgICAqICAgICBncm91cEtleTp7IHRpdGxlOid4eHgnLGNvbHVtbnM6WydmaWVsZEtleScsJ2ZpZWxkS2V5J119XG4gICAgICogICB9XG4gICAgICogfVxuICAgICAqL1xuICAgIGdyb3VwOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOmHjee9ruihqOWNleWQjueahOaTjeS9nFxuICAgICAqL1xuICAgIGRvUmVzZXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vkv53lrZjmjInpkq7vvIzooajljZXmoKHpqozliY3miafooYzmk43kvZzvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGJlZm9yZVZhbGlkYXRlOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5qCh6aqM5a6M5a6M5oiQ5ZCO77yM5o+Q5Lqk5YmN5aSE55CG77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBiZWZvcmVTdWJtaXQ6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vkv53lrZjmjInpkq7ml7bmiafooYzmk43kvZzvvIhhc3luY++8iVxuICAgICAqL1xuICAgIGRvU3VibWl0OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5o+Q5Lqk5ZCO5aSE55CG77yIYXN5bmPvvIlcbiAgICAgKi9cbiAgICBhZnRlclN1Ym1pdDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaPkuanveWGheWuuVxuICAgICAqL1xuICAgIHNsb3RzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW4g+WxgOaWueW8j+OAkGZsZXh8Z3JpZOOAkVxuICAgICAqL1xuICAgIGRpc3BsYXk6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiZmxleFwiIC8vIGZsZXhcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW6j+WPt++8jOe8lui+keaXtuS8muS8oOWFpVxuICAgICAqL1xuICAgIGluZGV4OiB7XG4gICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaooeW8jyBbYWRkLGVkaXQsdmlldyzoh6rlrprkuYldXG4gICAgICovXG4gICAgbW9kZToge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBhLXJvd+mFjee9rlxuICAgICAqL1xuICAgIHJvdzoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBlbC1jb2x8YS1jb2zphY3nva7vvIzlj6/phY3nva7ot6jliJdcbiAgICAgKi9cbiAgICBjb2w6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogZm9ybUl0ZW3nmoTlhazlhbHphY3nva5cbiAgICAgKi9cbiAgICBmb3JtSXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBoZWxwZXLkvY3nva7vvJp7cG9zaXRpb246J2xhYmVsJ31cbiAgICAgKi9cbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG5cbiAgICB3YXRjaDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiBudWxsXG4gICAgfVxuICB9LFxuICBlbWl0czogW1wicmVzZXRcIiwgXCJzdWJtaXRcIiwgXCJzdWNjZXNzXCIsIFwidmFsaWRhdGlvbkVycm9yXCIsIFwidmFsdWUtY2hhbmdlXCIsIFwiaW5pdFwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IEFzeW5jQ29tcHV0ZVZhbHVlLCBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgY29uc3QgZm9ybVJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGZvcm06IFVud3JhcE5lc3RlZFJlZnM8YW55PiA9IHJlYWN0aXZlKHt9KTtcbiAgICBjb25zdCB7IHByb3h5IH0gPSBnZXRDdXJyZW50SW5zdGFuY2UoKTtcblxuICAgIHV0aWxzLnRyYWNlKFwiZnMtZm9ybVwiKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgKGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSB8fCBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQ29tcHV0ZVZhbHVlKSkge1xuICAgICAgICBsb2dnZXIud2FybihcImZvcm0udmFsdWXphY3nva7kuI3mlK/mjIFDb21wdXRlL0FzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpIHtcbiAgICAgIGNvbnN0IGZvcm0gPSB7fTtcbiAgICAgIC8vIOWIneWni+aVsOaNrui1i+WAvFxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGl0ZW0udmFsdWUpO1xuICAgICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNldChmb3JtLCBrZXksIGRlZlZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBtZXJnZShmb3JtLCBjbG9uZURlZXAocHJvcHMuaW5pdGlhbEZvcm0pKTtcbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcbiAgICBzZXRGb3JtRGF0YShpbml0aWFsRm9ybSk7XG5cbiAgICBjb25zdCBzY29wZTogUmVmPEZvcm1TY29wZUNvbnRleHQ+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm93OiBpbml0aWFsRm9ybSxcbiAgICAgICAgZm9ybSxcbiAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICBtb2RlOiBwcm9wcy5tb2RlIHx8IFwiYWRkXCIsXG4gICAgICAgIGF0dHJzOiBjdHguYXR0cnMsXG4gICAgICAgIGdldENvbXBvbmVudFJlZlxuICAgICAgfSBhcyBGb3JtU2NvcGVDb250ZXh0O1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q29udGV4dEZuKCkge1xuICAgICAgcmV0dXJuIHNjb3BlLnZhbHVlO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xuICAgIH0pO1xuICAgIC8vZm9ybS52YWx1ZUJ1aWxkZXJcblxuICAgIGZ1bmN0aW9uIGRvVmFsdWVCdWlsZGVyKGZvcm06IGFueSkge1xuICAgICAgaWYgKGZvcm0gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtLCBrZXkpO1xuICAgICAgICBpZiAoaXRlbS52YWx1ZUJ1aWxkZXIpIHtcbiAgICAgICAgICBpdGVtLnZhbHVlQnVpbGRlcih7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIHJvdzogaW5pdGlhbEZvcm0sXG4gICAgICAgICAgICBmb3JtLFxuICAgICAgICAgICAgaW5kZXg6IHByb3BzLmluZGV4LFxuICAgICAgICAgICAgbW9kZTogcHJvcHMubW9kZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtRGF0YSgpIHtcbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzZXRGb3JtRGF0YShmb3JtRGF0YTogYW55LCBvcHRpb25zOiBTZXRGb3JtRGF0YU9wdGlvbnMgPSB7fSkge1xuICAgICAgZG9WYWx1ZUJ1aWxkZXIoZm9ybURhdGEpO1xuXG4gICAgICBpZiAob3B0aW9ucy5tZXJnZUZvcm0gPT09IGZhbHNlKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm0pIHtcbiAgICAgICAgICBkZWxldGUgZm9ybVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBtZXJnZShmb3JtLCBmb3JtRGF0YSk7XG4gICAgICBjb25zdCB7IHZhbHVlQ2hhbmdlIH0gPSBvcHRpb25zO1xuICAgICAgaWYgKHZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGZvckVhY2gocHJvcHMuY29sdW1ucywgKGNvbHVtbjogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybVtrZXldO1xuICAgICAgICAgIGRvVmFsdWVDaGFuZ2Uoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIG1lcmdlQ29sKC4uLmNvbDogYW55KSB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLmNvbCwgLi4uY29sKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEl0ZW1TY29wZShpdGVtOiBhbnkpOiBGb3JtU2NvcGVDb250ZXh0IHtcbiAgICAgIHJldHVybiB7IGtleTogaXRlbS5rZXksIC4uLnNjb3BlLnZhbHVlIH07XG4gICAgfVxuXG4gICAgLy8gZG9WYWx1ZUJ1aWxkZXIoZm9ybSk7XG5cbiAgICAvLyB3YXRjaChcbiAgICAvLyAgICgpID0+IHByb3BzLmluaXRpYWxGb3JtLFxuICAgIC8vICAgKCkgPT4ge1xuICAgIC8vICAgICBzZXRGb3JtRGF0YShjcmVhdGVJbml0aWFsRm9ybSgpLCB7IG1lcmdlRm9ybTogZmFsc2UgfSk7XG4gICAgLy8gICB9XG4gICAgLy8gKTtcblxuICAgIGZ1bmN0aW9uIGRvVmFsdWVDaGFuZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICAgIGNvbnN0IGV2ZW50ID0geyBrZXksIHZhbHVlLCBmb3JtUmVmOiBwcm94eSwgLi4uc2NvcGUudmFsdWUsIGltbWVkaWF0ZTogZmFsc2UgfTtcbiAgICAgIGN0eC5lbWl0KFwidmFsdWUtY2hhbmdlXCIsIGV2ZW50KTtcbiAgICAgIGxldCB2YWx1ZUNoYW5nZSA9IHByb3BzLmNvbHVtbnNba2V5XS52YWx1ZUNoYW5nZTtcbiAgICAgIGlmICh2YWx1ZUNoYW5nZSkge1xuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgICAgICAgIHZhbHVlQ2hhbmdlKGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZUNoYW5nZS5oYW5kbGUpIHtcbiAgICAgICAgICB2YWx1ZUNoYW5nZS5oYW5kbGUoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybUl0ZW1SZWZzOiBSZWYgPSByZWYoe30pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybUl0ZW1SZWYoa2V5OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBmb3JtSXRlbVJlZnMudmFsdWVba2V5XS5nZXRGb3JtSXRlbVJlZigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZywgaXNBc3luYyA9IGZhbHNlKSB7XG4gICAgICByZXR1cm4gZ2V0Rm9ybUl0ZW1SZWYoa2V5KT8uZ2V0Q29tcG9uZW50UmVmKGlzQXN5bmMpO1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwQWN0aXZlS2V5ID0gcmVmKFtdKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2dWUvbm8tc2V0dXAtcHJvcHMtZGVzdHJ1Y3R1cmVcbiAgICBmb3JFYWNoKHByb3BzLmdyb3VwPy5ncm91cHMsIChncm91cEl0ZW06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgIGlmIChncm91cEl0ZW0uY29sbGFwc2VkICE9PSB0cnVlKSB7XG4gICAgICAgIGdyb3VwQWN0aXZlS2V5LnZhbHVlLnB1c2goa2V5KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgaWYgKHByb3BzLmdyb3VwPy5ncm91cFR5cGUgPT09IFwidGFic1wiKSB7XG4gICAgICBncm91cEFjdGl2ZUtleS52YWx1ZSA9IGdyb3VwQWN0aXZlS2V5LnZhbHVlLmxlbmd0aCA+IDAgPyBncm91cEFjdGl2ZUtleS52YWx1ZVswXSA6IG51bGw7XG4gICAgfVxuXG4gICAgLy/mnoTlu7rliIbnu4TmlbDmja5cbiAgICBjb25zdCBjb21wdXRlZEdyb3VwID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmdyb3VwO1xuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIG51bGwsXG4gICAgICAoZ3JvdXAgPSB7fSkgPT4ge1xuICAgICAgICAvL+aJvuWHuuayoeaciea3u+WKoOi/m+WIhue7hOeahOWtl+autVxuICAgICAgICBjb25zdCBncm91cGVkS2V5czogYW55ID0ge307XG4gICAgICAgIGZvckVhY2goZ3JvdXA/Lmdyb3VwcywgKGdyb3VwSXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGZvckVhY2goZ3JvdXBJdGVtLmNvbHVtbnMsIChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wdXRlZENvbHVtbnMudmFsdWVbaXRlbV0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICB1dGlscy5sb2dnZXIud2FybihcIuaXoOaViOeahOWIhue7hOWtl+aute+8mlwiICsgaXRlbSk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyb3VwZWRLZXlzW2l0ZW1dID0ga2V5O1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB0eXBlID0gZ3JvdXAuZ3JvdXBUeXBlO1xuICAgICAgICBsZXQgd3JhcHBlciA9IHtcbiAgICAgICAgICBwYXJlbnQ6IHVpLmNvbGxhcHNlLm5hbWUsXG4gICAgICAgICAgY2hpbGQ6IHVpLmNvbGxhcHNlSXRlbS5uYW1lXG4gICAgICAgIH07XG4gICAgICAgIGlmICh0eXBlID09PSBcInRhYnNcIikge1xuICAgICAgICAgIHdyYXBwZXIucGFyZW50ID0gdWkudGFicy5uYW1lO1xuICAgICAgICAgIHdyYXBwZXIuY2hpbGQgPSB1aS50YWJQYW5lLm5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHdyYXBwZXIsXG4gICAgICAgICAgICBncm91cGVkS2V5c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3JvdXBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgY29tcHV0ZWREZWZhdWx0Q29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbHVtbnM6IGFueSA9IFtdO1xuICAgICAgLy9kZWZhdWx0IGNvbHVtbnPmjpLluo9cbiAgICAgIGZvckVhY2goY29tcHV0ZWRDb2x1bW5zLnZhbHVlLCAodmFsdWU6IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XG4gICAgICAgIHZhbHVlID0gbWVyZ2UoaXRlbSwgdmFsdWUpO1xuICAgICAgICB2YWx1ZS5rZXkgPSBrZXk7XG4gICAgICAgIGlmICh2YWx1ZS5vcmRlciA9PSBudWxsKSB7XG4gICAgICAgICAgdmFsdWUub3JkZXIgPSBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb21wdXRlZEdyb3VwLnZhbHVlPy5ncm91cGVkS2V5cyA9PSBudWxsIHx8IGNvbXB1dGVkR3JvdXAudmFsdWU/Lmdyb3VwZWRLZXlzW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgIGNvbHVtbnMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFsdWUuY29sID0gbWVyZ2VDb2wodmFsdWUuY29sKTtcbiAgICAgIH0pO1xuICAgICAgLy/mjpLluo9cbiAgICAgIGNvbHVtbnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBjb2x1bW5zO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybVJlZigpIHtcbiAgICAgIHJldHVybiBmb3JtUmVmLnZhbHVlO1xuICAgIH1cbiAgICBhc3luYyBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKGZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllc1JldCkge1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdW5zZXQoZm9ybSwgZW50cnlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldChmb3JtLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvcHMuZG9SZXNldCkge1xuICAgICAgICBhd2FpdCBwcm9wcy5kb1Jlc2V0KHNjb3BlLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwicmVzZXRcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRSZWY6IFJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGVycm9yc1JlZjogUmVmID0gcmVmKHt9KTtcblxuICAgIGZ1bmN0aW9uIGZpbGxHcm91cEVycm9yKGZpZWxkRXJyb3JzOiBhbnkpIHtcbiAgICAgIGlmICghY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQga2V5IGluIGZpZWxkRXJyb3JzKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gY29tcHV0ZWRHcm91cC52YWx1ZT8uZ3JvdXBlZEtleXNba2V5XTtcbiAgICAgICAgaWYgKGdyb3VwICE9IG51bGwpIHtcbiAgICAgICAgICBmaWVsZEVycm9yc1tcImdyb3VwLlwiICsgZ3JvdXBdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlKCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm0gfTtcbiAgICAgIGlmICh2YWxpZGF0ZVNjb3BlLm1vZGUgPT09IFwidmlld1wiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5iZWZvcmVWYWxpZGF0ZSkge1xuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBwcm9wcy5iZWZvcmVWYWxpZGF0ZSh2YWxpZGF0ZVNjb3BlKTtcbiAgICAgICAgaWYgKHJldCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdHJ5IHtcbiAgICAgICAgZXJyb3JzUmVmLnZhbHVlID0ge307XG4gICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKGZvcm1SZWYudmFsdWUpO1xuICAgICAgICB2YWxpZFJlZi52YWx1ZSA9IHRydWU7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgdmFsaWRSZWYudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgdmFsaWRhdGVFcnJvcnMgPSB1aS5mb3JtLnRyYW5zZm9ybVZhbGlkYXRlRXJyb3JzKGUpO1xuICAgICAgICBmaWxsR3JvdXBFcnJvcih2YWxpZGF0ZUVycm9ycyk7XG4gICAgICAgIGVycm9yc1JlZi52YWx1ZSA9IHZhbGlkYXRlRXJyb3JzO1xuICAgICAgICBjdHguZW1pdChcInZhbGlkYXRpb25FcnJvclwiLCBzY29wZS52YWx1ZSk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfVxuICAgIGFzeW5jIGZ1bmN0aW9uIHN1Ym1pdCgpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlKCk7XG4gICAgICBjb25zdCBmb3JtRGF0YSA9IGNsb25lRGVlcCh0b1Jhdyhmb3JtKSk7XG4gICAgICBjb25zdCBzdWJtaXRTY29wZSA9IHsgLi4uc2NvcGUudmFsdWUsIGZvcm06IGZvcm1EYXRhIH07XG4gICAgICBsb2dnZXIuZGVidWcoXCJmb3JtIHN1Ym1pdFwiLCBKU09OLnN0cmluZ2lmeShmb3JtKSk7XG4gICAgICBlYWNoKHByb3BzLmNvbHVtbnMsIChpdGVtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IGdldChmb3JtRGF0YSwga2V5KTtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVSZXNvbHZlKSB7XG4gICAgICAgICAgaXRlbS52YWx1ZVJlc29sdmUoe1xuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAuLi5zdWJtaXRTY29wZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKHByb3BzLmJlZm9yZVN1Ym1pdCkge1xuICAgICAgICBjb25zdCByZXQgPSBhd2FpdCBwcm9wcy5iZWZvcmVTdWJtaXQoc3VibWl0U2NvcGUpO1xuICAgICAgICBpZiAocmV0ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL+enu+mZpOS4jeWFgeiuuOaPkOS6pOeahOWtl+autVxuICAgICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbTogYW55LCBrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zdWJtaXQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgdW5zZXQoZm9ybURhdGEsIGtleSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbS5zdWJtaXQgPT09IHRydWUpIHtcbiAgICAgICAgICAvL+iuvue9ruW8uuWItuaPkOS6pOeahOWtl+autVxuICAgICAgICAgIHNldChmb3JtRGF0YSwga2V5LCBmb3JtRGF0YVtrZXldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChwcm9wcy5kb1N1Ym1pdCkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBwcm9wcy5kb1N1Ym1pdChzdWJtaXRTY29wZSk7XG4gICAgICAgIHN1Ym1pdFNjb3BlLnJlcyA9IHJlcztcbiAgICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwic3VibWl0XCIsIHN1Ym1pdFNjb3BlKTtcbiAgICAgIGlmIChwcm9wcy5hZnRlclN1Ym1pdCkge1xuICAgICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgcHJvcHMuYWZ0ZXJTdWJtaXQoc3VibWl0U2NvcGUpO1xuICAgICAgICBpZiAoc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwic3VjY2Vzc1wiLCBzdWJtaXRTY29wZSk7XG5cbiAgICAgIHJldHVybiBzdWJtaXRTY29wZTtcbiAgICB9XG5cbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgLy8gaW1tZWRpYXRlIHZhbHVlQ2hhbmdl6Kem5Y+RXG4gICAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKGl0ZW06IGFueSwga2V5OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0udmFsdWVDaGFuZ2UgPT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBsZXQgdmFsdWVDaGFuZ2UgPSBpdGVtLnZhbHVlQ2hhbmdlO1xuICAgICAgICBpZiAodmFsdWVDaGFuZ2UgJiYgdmFsdWVDaGFuZ2UuaW1tZWRpYXRlID09PSB0cnVlICYmIHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xuICAgICAgICAgIGNvbnN0IGV2ZW50ID0geyBrZXksIHZhbHVlOiBmb3JtW2tleV0sIGZvcm1SZWY6IHByb3h5LCAuLi5zY29wZS52YWx1ZSwgaW1tZWRpYXRlOiB0cnVlIH07XG4gICAgICAgICAgaWYgKHZhbHVlQ2hhbmdlLmhhbmRsZSkge1xuICAgICAgICAgICAgdmFsdWVDaGFuZ2UuaGFuZGxlKGV2ZW50KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZm9ybUl0ZW1TaG93KGl0ZW06IGFueSkge1xuICAgICAgaWYgKGl0ZW0gJiYgdW5yZWYoaXRlbS5zaG93KSAhPT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdyb3VwSXRlbVNob3coZ3JvdXBJdGVtOiBhbnkpIHtcbiAgICAgIGlmICghZ3JvdXBJdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgaWYgKHVucmVmKGdyb3VwSXRlbS5zaG93KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBrZXkgb2YgZ3JvdXBJdGVtLmNvbHVtbnMpIHtcbiAgICAgICAgaWYgKGNvbXB1dGVkQ29sdW1ucy52YWx1ZVtrZXldID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0ZpZWxkU2hvdyA9IGZvcm1JdGVtU2hvdyhjb21wdXRlZENvbHVtbnMudmFsdWVba2V5XSk7XG4gICAgICAgIGlmIChpc0ZpZWxkU2hvdykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLndhdGNoKSB7XG4gICAgICB3YXRjaChcbiAgICAgICAgKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9LFxuICAgICAgICAobmV3VmFsLCBvbGRWYWwpID0+IHtcbiAgICAgICAgICBpZiAocHJvcHMud2F0Y2gpIHtcbiAgICAgICAgICAgIHByb3BzLndhdGNoKHNjb3BlLnZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBkZWVwOiB0cnVlLFxuICAgICAgICAgIGltbWVkaWF0ZTogdHJ1ZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGlzRGlydHkoKSB7XG4gICAgICBjb25zdCBiZWZvcmUgPSBKU09OLnN0cmluZ2lmeShpbml0aWFsRm9ybSk7XG4gICAgICBjb25zdCBhZnRlciA9IEpTT04uc3RyaW5naWZ5KGZvcm0pO1xuICAgICAgcmV0dXJuIGJlZm9yZSAhPT0gYWZ0ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWVyZ2VkU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLnNsb3RzLCBjdHguc2xvdHMpO1xuICAgIH0pO1xuXG4gICAgY3R4LmVtaXQoXCJpbml0XCIsIHNjb3BlLnZhbHVlKTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgIHJldHVybiBnZXQoZm9ybSwga2V5KTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IChmb3JtOiBhbnksIGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIHNldChmb3JtLCBrZXksIHZhbHVlKTtcbiAgICAgICAgZG9WYWx1ZUNoYW5nZShrZXksIHZhbHVlKTtcbiAgICAgIH0sXG4gICAgICB1aSxcbiAgICAgIHZhbGlkUmVmLFxuICAgICAgZXJyb3JzUmVmLFxuICAgICAgZm9ybVJlZixcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcbiAgICAgIGNvbXB1dGVkRGVmYXVsdENvbHVtbnMsXG4gICAgICBzdWJtaXQsXG4gICAgICByZXNldCxcbiAgICAgIGdldEZvcm1SZWYsXG4gICAgICBzY29wZSxcbiAgICAgIGJ1aWxkSXRlbVNjb3BlLFxuICAgICAgZ3JvdXBBY3RpdmVLZXksXG4gICAgICBmb3JtLFxuICAgICAgZm9ybUl0ZW1SZWZzLFxuICAgICAgZ2V0Rm9ybURhdGEsXG4gICAgICBzZXRGb3JtRGF0YSxcbiAgICAgIGdldENvbXBvbmVudFJlZixcbiAgICAgIG1lcmdlQ29sLFxuICAgICAgdmFsaWRhdGUsXG4gICAgICBjb21wdXRlZEdyb3VwLFxuICAgICAgZ2V0Q29udGV4dEZuLFxuICAgICAgZm9ybUl0ZW1TaG93LFxuICAgICAgZ3JvdXBJdGVtU2hvdyxcbiAgICAgIGlzRGlydHksXG4gICAgICBtZXJnZWRTbG90c1xuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWZvcm0ge1xuICAuZWwtY29sbGFwc2UtaXRlbV9fY29udGVudCB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBwYWRkaW5nLWxlZnQ6IDMwcHg7XG4gICAgcGFkZGluZy1yaWdodDogMzBweDtcbiAgfVxuXG4gIC5mcy1mb3JtLWludmFsaWQge1xuICB9XG5cbiAgLmZzLWZvcm0taXRlbS1jb21wb25lbnQge1xuICAgIC5hbnQtcGlja2VyLFxuICAgIC5hbnQtaW5wdXQtYWZmaXgtd3JhcHBlcixcbiAgICAuYW50LWlucHV0LW51bWJlcixcbiAgICAuZWwtY2FzY2FkZXIsXG4gICAgLmVsLWRhdGUtZWRpdG9yLFxuICAgIC5lbC1pbnB1dC1udW1iZXIsXG4gICAgLmVsLWlucHV0LFxuICAgID4gLmVsLXNlbGVjdCxcbiAgICA+IC5uLXNlbGVjdCxcbiAgICAubi1kYXRlLXBpY2tlcixcbiAgICAubi1pbnB1dC1udW1iZXIge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuXG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICB9XG4gICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgfVxuXG4gICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XG4gICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbiAgfVxuXG4gIC8vLmVsLWRhdGUtZWRpdG9yLmVsLWlucHV0X193cmFwcGVyIHtcbiAgLy8gIHdpZHRoOiAxMDAlO1xuICAvL31cbn1cblxuLmZzLWZvcm0tZ3JpZCB7XG4gIC5mcy1yb3cge1xuICAgIGRpc3BsYXk6IGdyaWQ7XG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA1MCUgNTAlO1xuICAgIC8vIGdhcDogMCAyMHB4OyAvL+WIl+mXtOi3nSAyMHB4XG4gICAgLmZzLWNvbCB7XG4gICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBhbnRkdlxuICAgIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAgIHdpZHRoOiAxMDBweDtcbiAgICAgIGZsZXg6IG5vbmU7XG4gICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wtd3JhcHBlciB7XG4gICAgICBmbGV4OiAxO1xuICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIGVsZW1lbnRcbiAgLmVsLXJvdzo6YWZ0ZXIsXG4gIC5lbC1yb3c6OmJlZm9yZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLmZzLWZvcm0tZmxleCB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIC5mcy1yb3cge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbkBtZWRpYSAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZnMtZm9ybS1mbGV4IHtcbiAgICAuZnMtcm93IHtcbiAgICAgIC5mcy1jb2wge1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbGV4OiAwIDAgMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gIC5mcy1mb3JtLWZsZXgge1xuICAgIC5mcy1yb3cge1xuICAgICAgLmZzLWNvbCB7XG4gICAgICAgIC8vLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xuICAgICAgICAvLyAgZmxleDogbm9uZTtcbiAgICAgICAgLy99XG4gICAgICAgIC8vLmFudC1mb3JtLWl0ZW0gLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIC8vICBmbGV4OiAxO1xuICAgICAgICAvLyAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgICAvL31cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCJcbiAgICB2LWlmPVwiY29tcHV0ZWRJdGVtXCJcbiAgICBjbGFzcz1cImZzLWZvcm0taXRlbVwiXG4gICAgOlt1aS5mb3JtSXRlbS5wcm9wXT1cImNvbXB1dGVkS2V5XCJcbiAgICB2LWJpbmQ9XCJjb21wdXRlZEl0ZW1cIlxuICAgIDpwYXRoPVwiY29tcHV0ZWRJdGVtLmtleVwiXG4gICAgOnJ1bGUtcGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxuICA+XG4gICAgPHRlbXBsYXRlICNsYWJlbD5cbiAgICAgIDxzcGFuIHYtaWY9XCJjb21wdXRlZExhYmVsSXNSZW5kZXJcIiBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC10ZXh0XCI+XG4gICAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRMYWJlbFJlbmRlclwiPjwvZnMtcmVuZGVyPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gdi1lbHNlIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLXRleHRcIiA6dGl0bGU9XCJjb21wdXRlZExhYmVsXCI+XG4gICAgICAgIHt7IGNvbXB1dGVkTGFiZWwgfX1cbiAgICAgIDwvc3Bhbj5cblxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS50b29sdGlwLm5hbWVcIlxuICAgICAgICB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uID09PSAnbGFiZWwnXCJcbiAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRIZWxwZXJUb29sdGlwXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlICNbdWkudG9vbHRpcC5jb250ZW50XT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLWZvcm0taGVscGVyLXRvb2x0aXBcIj5cbiAgICAgICAgICAgIDxmcy1mb3JtLWhlbHBlciA6aGVscGVyPVwiY29tcHV0ZWRJdGVtLmhlbHBlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnRvb2x0aXAudHJpZ2dlcl0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtaWNvblwiPlxuICAgICAgICAgICAgPGZzLWljb24gY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbi1pbm5lclwiIDppY29uPVwidWkuaWNvbnMucXVlc3Rpb25cIj48L2ZzLWljb24+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLWNvbnRlbnRcIj5cbiAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS50b3BSZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0udG9wUmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1yZW5kZXJcIj5cbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLnByZWZpeFJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5wcmVmaXhSZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tY29tcG9uZW50XCI+XG4gICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIHYtaWY9XCJmb3JtU2xvdFwiIDpzbG90cz1cImZvcm1TbG90XCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJjb21wdXRlZEl0ZW0uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZVwiPlxuICAgICAgICAgICAgPGZzLXJlbmRlclxuICAgICAgICAgICAgICB2LWlmPVwiXG4gICAgICAgICAgICAgICAgY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyICYmXG4gICAgICAgICAgICAgICAgY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyLm1hdGNoICYmXG4gICAgICAgICAgICAgICAgY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyLm1hdGNoKHNjb3BlRnVuYygpKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uY29uZGl0aW9uYWxSZW5kZXIucmVuZGVyXCJcbiAgICAgICAgICAgICAgOnNjb3BlPVwic2NvcGVGdW5jKClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxmcy1yZW5kZXIgdi1lbHNlLWlmPVwiY29tcHV0ZWRJdGVtLnJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICAgICAgICA8ZnMtY29tcG9uZW50LXJlbmRlclxuICAgICAgICAgICAgICB2LWVsc2VcbiAgICAgICAgICAgICAgcmVmPVwiY29tcG9uZW50UmVuZGVyUmVmXCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRJdGVtLmNvbXBvbmVudFwiXG4gICAgICAgICAgICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxuICAgICAgICAgICAgICA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiXG4gICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJ1cGRhdGVNb2RlbFZhbHVlXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5zdWZmaXhSZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0uc3VmZml4UmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJjb21wdXRlZEl0ZW0uYm90dG9tUmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLmJvdHRvbVJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiY29tcHV0ZWRJdGVtLmhlbHBlciAmJiBjb21wdXRlZEhlbHBlclBvc2l0aW9uICE9PSAnbGFiZWwnXCI+XG4gICAgICAgIDxmcy1mb3JtLWhlbHBlciA6aGVscGVyPVwiY29tcHV0ZWRJdGVtLmhlbHBlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyByZWYsIGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFJlZiwgUHJvcFR5cGUgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgRnNSZW5kZXIgZnJvbSBcIi4uL3JlbmRlci9mcy1yZW5kZXIuanNcIjtcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSwgdXNlQ29tcHV0ZSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbi8qKlxuICogZm9ybS1pdGVt57uE5Lu25bCB6KOFXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNGb3JtSXRlbVwiLFxuICBjb21wb25lbnRzOiB7IEZzUmVuZGVyIH0sXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog6KGo5Y2V5a2X5q615YC8KHYtbW9kZWwpXG4gICAgICovXG4gICAgbW9kZWxWYWx1ZToge30sXG4gICAgLyoqXG4gICAgICog5a2X5q616YWN572uXG4gICAgICovXG4gICAgaXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPGFueT4sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWtl+autee7hOS7tuaPkuanvVxuICAgICAqL1xuICAgIGZvcm1TbG90OiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgZ2V0Q29udGV4dEZuOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgaGVscGVyOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBPYmplY3RdXG4gICAgfVxuICB9LFxuICBlbWl0czogW1widXBkYXRlOm1vZGVsVmFsdWVcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVuZGVyUmVmID0gcmVmKCk7XG5cbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcblxuICAgIHV0aWxzLnRyYWNlKFwiZnMtZm9ybS1pdGVtXCIpO1xuICAgIC8vIGNvbnN0IHNjb3BlQ29tcHV0ZWQ6IFJlZjxTY29wZUNvbnRleHQ+ID0gY29tcHV0ZWQoKCkgPT4ge30pO1xuXG4gICAgY29uc3Qgc2NvcGVGdW5jID0gKCkgPT4ge1xuICAgICAgY29uc3Qgc2NvcGUgPSBwcm9wcy5nZXRDb250ZXh0Rm4gPyBwcm9wcy5nZXRDb250ZXh0Rm4oKSA6IHt9O1xuICAgICAgcmV0dXJuIHsgdmFsdWU6IHByb3BzLm1vZGVsVmFsdWUsIGtleTogcHJvcHMuaXRlbS5rZXksIC4uLnNjb3BlIH07XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHVwZGF0ZU1vZGVsVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCB2YWx1ZSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihpc0FzeW5jID0gZmFsc2UpIHtcbiAgICAgIGlmIChpc0FzeW5jKSB7XG4gICAgICAgIHJldHVybiBjb21wb25lbnRSZW5kZXJSZWYudmFsdWU/LmdldFRhcmdldFJlZkFzeW5jKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWYoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZEl0ZW0gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSB7XG4gICAgICAgIC4uLnByb3BzLml0ZW1cbiAgICAgIH07XG4gICAgICBkZWxldGUgcmVzLnRpdGxlO1xuICAgICAgZGVsZXRlIHJlcy5sYWJlbDtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZEhlbHBlclBvc2l0aW9uID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLml0ZW0/LmhlbHBlcj8ucG9zaXRpb24gfHwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy5wb3NpdGlvbjtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlZEhlbHBlclRvb2x0aXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gbWVyZ2Uoe30sIHByb3BzLml0ZW0uaGVscGVyPy50b29sdGlwLCAocHJvcHMuaGVscGVyIGFzIGFueSk/LnRvb2x0aXApO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkS2V5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLml0ZW0gPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuaXRlbS5rZXkuaW5kZXhPZihcIi5cIikgPj0gMCkge1xuICAgICAgICByZXR1cm4gcHJvcHMuaXRlbS5rZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHByb3BzLml0ZW0ua2V5O1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmxhYmVsIHx8IHByb3BzLml0ZW0udGl0bGU7XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZWRMYWJlbElzUmVuZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUgaW5zdGFuY2VvZiBGdW5jdGlvbjtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxSZW5kZXIgPSAoKSA9PiB7XG4gICAgICByZXR1cm4gY29tcHV0ZWRMYWJlbC52YWx1ZShzY29wZUZ1bmMoKSk7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIHVwZGF0ZU1vZGVsVmFsdWUsXG4gICAgICBzY29wZUZ1bmMsXG4gICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWYsXG4gICAgICBjb21wdXRlZEhlbHBlclBvc2l0aW9uLFxuICAgICAgY29tcHV0ZWRIZWxwZXJUb29sdGlwLFxuICAgICAgY29tcHV0ZWRLZXksXG4gICAgICBjb21wdXRlZExhYmVsSXNSZW5kZXIsXG4gICAgICBjb21wdXRlZExhYmVsLFxuICAgICAgY29tcHV0ZWRMYWJlbFJlbmRlcixcbiAgICAgIGNvbXB1dGVkSXRlbVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWZvcm0taXRlbSB7XG4gIC5hbnQtZm9ybS1pdGVtLWxhYmVsIHtcbiAgICAvL2xpbmUtaGVpZ2h0OiAxO1xuICAgIC5mcy1mb3JtLWl0ZW0tbGFiZWwtdGV4dCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgfVxuICB9XG4gIC5lbC1mb3JtLWl0ZW0ge1xuICAgIC5mcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbiB7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cbiAgLmZzLWZvcm0taXRlbS1sYWJlbC1pY29uIHtcbiAgICBtYXJnaW46IDAgMnB4O1xuICAgIC5mcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbi1pbm5lciB7XG4gICAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICAgIGhlaWdodDogaW5oZXJpdDtcbiAgICB9XG4gIH1cbiAgLmZzLWZvcm0taXRlbS1jb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZmxleDogMTtcbiAgICAuZnMtZm9ybS1pdGVtLXJlbmRlciB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgIC5mcy1mb3JtLWl0ZW0tY29tcG9uZW50IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuLmZzLWZvcm0taGVscGVyLXRvb2x0aXAge1xuICAuZnMtZm9ybS1oZWxwZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiXG4gICAgdi1pZj1cImNvbXB1dGVkSXRlbVwiXG4gICAgY2xhc3M9XCJmcy1mb3JtLWl0ZW1cIlxuICAgIDpbdWkuZm9ybUl0ZW0ucHJvcF09XCJjb21wdXRlZEtleVwiXG4gICAgdi1iaW5kPVwiY29tcHV0ZWRJdGVtXCJcbiAgICA6cGF0aD1cImNvbXB1dGVkSXRlbS5rZXlcIlxuICAgIDpydWxlLXBhdGg9XCJjb21wdXRlZEl0ZW0ua2V5XCJcbiAgPlxuICAgIDx0ZW1wbGF0ZSAjbGFiZWw+XG4gICAgICA8c3BhbiB2LWlmPVwiY29tcHV0ZWRMYWJlbElzUmVuZGVyXCIgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tbGFiZWwtdGV4dFwiPlxuICAgICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkTGFiZWxSZW5kZXJcIj48L2ZzLXJlbmRlcj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIHYtZWxzZSBjbGFzcz1cImZzLWZvcm0taXRlbS1sYWJlbC10ZXh0XCIgOnRpdGxlPVwiY29tcHV0ZWRMYWJlbFwiPlxuICAgICAgICB7eyBjb21wdXRlZExhYmVsIH19XG4gICAgICA8L3NwYW4+XG5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkudG9vbHRpcC5uYW1lXCJcbiAgICAgICAgdi1pZj1cImNvbXB1dGVkSXRlbS5oZWxwZXIgJiYgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiA9PT0gJ2xhYmVsJ1wiXG4gICAgICAgIHYtYmluZD1cImNvbXB1dGVkSGVscGVyVG9vbHRpcFwiXG4gICAgICA+XG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnRvb2x0aXAuY29udGVudF0+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1mb3JtLWhlbHBlci10b29sdGlwXCI+XG4gICAgICAgICAgICA8ZnMtZm9ybS1oZWxwZXIgOmhlbHBlcj1cImNvbXB1dGVkSXRlbS5oZWxwZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLnRyaWdnZXJdPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLWljb25cIj5cbiAgICAgICAgICAgIDxmcy1pY29uIGNsYXNzPVwiZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXJcIiA6aWNvbj1cInVpLmljb25zLnF1ZXN0aW9uXCI+PC9mcy1pY29uPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImZzLWZvcm0taXRlbS1jb250ZW50XCI+XG4gICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJjb21wdXRlZEl0ZW0udG9wUmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnRvcFJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWl0ZW0tcmVuZGVyXCI+XG4gICAgICAgIDxmcy1yZW5kZXIgdi1pZj1cImNvbXB1dGVkSXRlbS5wcmVmaXhSZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0ucHJlZml4UmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1pdGVtLWNvbXBvbmVudFwiPlxuICAgICAgICAgIDxmcy1zbG90LXJlbmRlciB2LWlmPVwiZm9ybVNsb3RcIiA6c2xvdHM9XCJmb3JtU2xvdFwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwiY29tcHV0ZWRJdGVtLmNvbXBvbmVudD8uc2hvdyAhPT0gZmFsc2VcIj5cbiAgICAgICAgICAgIDxmcy1yZW5kZXJcbiAgICAgICAgICAgICAgdi1pZj1cIlxuICAgICAgICAgICAgICAgIGNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlciAmJlxuICAgICAgICAgICAgICAgIGNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5tYXRjaCAmJlxuICAgICAgICAgICAgICAgIGNvbXB1dGVkSXRlbS5jb25kaXRpb25hbFJlbmRlci5tYXRjaChzY29wZUZ1bmMoKSlcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLmNvbmRpdGlvbmFsUmVuZGVyLnJlbmRlclwiXG4gICAgICAgICAgICAgIDpzY29wZT1cInNjb3BlRnVuYygpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8ZnMtcmVuZGVyIHYtZWxzZS1pZj1cImNvbXB1dGVkSXRlbS5yZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJjb21wdXRlZEl0ZW0ucmVuZGVyXCIgOnNjb3BlPVwic2NvcGVGdW5jKClcIiAvPlxuICAgICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcbiAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgIHJlZj1cImNvbXBvbmVudFJlbmRlclJlZlwiXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbXB1dGVkSXRlbS5jb21wb25lbnRcIlxuICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJtb2RlbFZhbHVlXCJcbiAgICAgICAgICAgICAgOnNjb3BlPVwic2NvcGVGdW5jKClcIlxuICAgICAgICAgICAgICBAdXBkYXRlOm1vZGVsLXZhbHVlPVwidXBkYXRlTW9kZWxWYWx1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJjb21wdXRlZEl0ZW0uc3VmZml4UmVuZGVyXCIgOnJlbmRlci1mdW5jPVwiY29tcHV0ZWRJdGVtLnN1ZmZpeFJlbmRlclwiIDpzY29wZT1cInNjb3BlRnVuYygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGZzLXJlbmRlciB2LWlmPVwiY29tcHV0ZWRJdGVtLmJvdHRvbVJlbmRlclwiIDpyZW5kZXItZnVuYz1cImNvbXB1dGVkSXRlbS5ib3R0b21SZW5kZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8dGVtcGxhdGUgdi1pZj1cImNvbXB1dGVkSXRlbS5oZWxwZXIgJiYgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiAhPT0gJ2xhYmVsJ1wiPlxuICAgICAgICA8ZnMtZm9ybS1oZWxwZXIgOmhlbHBlcj1cImNvbXB1dGVkSXRlbS5oZWxwZXJcIiA6c2NvcGU9XCJzY29wZUZ1bmMoKVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBSZWYsIFByb3BUeXBlIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IEZzUmVuZGVyIGZyb20gXCIuLi9yZW5kZXIvZnMtcmVuZGVyLmpzXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSwgdXNlVWksIHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5pbXBvcnQgdXRpbHMgZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG4vKipcbiAqIGZvcm0taXRlbee7hOS7tuWwgeijhVxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRm9ybUl0ZW1cIixcbiAgY29tcG9uZW50czogeyBGc1JlbmRlciB9LFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOihqOWNleWtl+auteWAvCh2LW1vZGVsKVxuICAgICAqL1xuICAgIG1vZGVsVmFsdWU6IHt9LFxuICAgIC8qKlxuICAgICAqIOWtl+autemFjee9rlxuICAgICAqL1xuICAgIGl0ZW06IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlrZfmrrXnu4Tku7bmj5Lmp71cbiAgICAgKi9cbiAgICBmb3JtU2xvdDoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGdldENvbnRleHRGbjoge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIGhlbHBlcjoge1xuICAgICAgdHlwZTogW1N0cmluZywgT2JqZWN0XVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTptb2RlbFZhbHVlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGNvbXBvbmVudFJlbmRlclJlZiA9IHJlZigpO1xuXG4gICAgY29uc3QgeyBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XG5cbiAgICB1dGlscy50cmFjZShcImZzLWZvcm0taXRlbVwiKTtcbiAgICAvLyBjb25zdCBzY29wZUNvbXB1dGVkOiBSZWY8U2NvcGVDb250ZXh0PiA9IGNvbXB1dGVkKCgpID0+IHt9KTtcblxuICAgIGNvbnN0IHNjb3BlRnVuYyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IHNjb3BlID0gcHJvcHMuZ2V0Q29udGV4dEZuID8gcHJvcHMuZ2V0Q29udGV4dEZuKCkgOiB7fTtcbiAgICAgIHJldHVybiB7IHZhbHVlOiBwcm9wcy5tb2RlbFZhbHVlLCBrZXk6IHByb3BzLml0ZW0ua2V5LCAuLi5zY29wZSB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiB1cGRhdGVNb2RlbFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoaXNBc3luYyA9IGZhbHNlKSB7XG4gICAgICBpZiAoaXNBc3luYykge1xuICAgICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmLnZhbHVlPy5nZXRUYXJnZXRSZWZBc3luYygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZi52YWx1ZT8uZ2V0VGFyZ2V0UmVmKCk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgcmVzID0ge1xuICAgICAgICAuLi5wcm9wcy5pdGVtXG4gICAgICB9O1xuICAgICAgZGVsZXRlIHJlcy50aXRsZTtcbiAgICAgIGRlbGV0ZSByZXMubGFiZWw7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5pdGVtPy5oZWxwZXI/LnBvc2l0aW9uIHx8IChwcm9wcy5oZWxwZXIgYXMgYW55KT8ucG9zaXRpb247XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZWRIZWxwZXJUb29sdGlwID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5pdGVtLmhlbHBlcj8udG9vbHRpcCwgKHByb3BzLmhlbHBlciBhcyBhbnkpPy50b29sdGlwKTtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlZEtleSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChwcm9wcy5pdGVtID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLml0ZW0ua2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgICAgcmV0dXJuIHByb3BzLml0ZW0ua2V5LnNwbGl0KFwiLlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5pdGVtLmtleTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMuaXRlbS5sYWJlbCB8fCBwcm9wcy5pdGVtLnRpdGxlO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkTGFiZWxJc1JlbmRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBjb21wdXRlZExhYmVsLnZhbHVlIGluc3RhbmNlb2YgRnVuY3Rpb247XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZExhYmVsUmVuZGVyID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIGNvbXB1dGVkTGFiZWwudmFsdWUoc2NvcGVGdW5jKCkpO1xuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICB1cGRhdGVNb2RlbFZhbHVlLFxuICAgICAgc2NvcGVGdW5jLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgY29tcHV0ZWRIZWxwZXJQb3NpdGlvbixcbiAgICAgIGNvbXB1dGVkSGVscGVyVG9vbHRpcCxcbiAgICAgIGNvbXB1dGVkS2V5LFxuICAgICAgY29tcHV0ZWRMYWJlbElzUmVuZGVyLFxuICAgICAgY29tcHV0ZWRMYWJlbCxcbiAgICAgIGNvbXB1dGVkTGFiZWxSZW5kZXIsXG4gICAgICBjb21wdXRlZEl0ZW1cbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtLWl0ZW0ge1xuICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgLy9saW5lLWhlaWdodDogMTtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLXRleHQge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIH1cbiAgfVxuICAuZWwtZm9ybS1pdGVtIHtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24ge1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tbGFiZWwtaWNvbiB7XG4gICAgbWFyZ2luOiAwIDJweDtcbiAgICAuZnMtZm9ybS1pdGVtLWxhYmVsLWljb24taW5uZXIge1xuICAgICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgICBoZWlnaHQ6IGluaGVyaXQ7XG4gICAgfVxuICB9XG4gIC5mcy1mb3JtLWl0ZW0tY29udGVudCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGZsZXg6IDE7XG4gICAgLmZzLWZvcm0taXRlbS1yZW5kZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG4gICAgICAuZnMtZm9ybS1pdGVtLWNvbXBvbmVudCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbi5mcy1mb3JtLWhlbHBlci10b29sdGlwIHtcbiAgLmZzLWZvcm0taGVscGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudFxuICAgIDppcz1cInVpLmNvbC5uYW1lXCJcbiAgICB2LWlmPVwiY29tcHV0ZWRJdGVtICYmIGNvbXB1dGVkSXRlbS5zaG93ICE9PSBmYWxzZVwiXG4gICAgY2xhc3M9XCJmcy1jb2xcIlxuICAgIHYtYmluZD1cIm1lcmdlKGNvbCwgY29tcHV0ZWRJdGVtPy5jb2wpXCJcbiAgPlxuICAgIDxmcy1mb3JtLWl0ZW1cbiAgICAgIHYtaWY9XCJjb21wdXRlZEl0ZW0gJiYgY29tcHV0ZWRJdGVtPy5ibGFuayAhPT0gdHJ1ZVwiXG4gICAgICByZWY9XCJmb3JtSXRlbVJlZlwiXG4gICAgICA6aXRlbT1cImNvbXB1dGVkSXRlbVwiXG4gICAgICA6Zm9ybS1zbG90PVwic2xvdHNcIlxuICAgICAgOmdldC1jb250ZXh0LWZuPVwiZ2V0Q29udGV4dEZuXCJcbiAgICAgIDpoZWxwZXI9XCJoZWxwZXJcIlxuICAgICAgdi1iaW5kPVwiYXR0cnNcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCIgc2V0dXA+XG5pbXBvcnQgeyB1c2VBdHRycywgZGVmaW5lUHJvcHMsIFByb3BUeXBlLCByZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCJAZmFzdC1jcnVkL3VpLWludGVyZmFjZVwiO1xuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHMoe1xuICAvKipcbiAgICog5a2X5q616YWN572uXG4gICAqL1xuICBpdGVtOiB7XG4gICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPGFueT4sXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gIH0sXG4gIC8qKlxuICAgKiDlrZfmrrXnu4Tku7bmj5Lmp71cbiAgICovXG4gIHNsb3RzOiB7XG4gICAgdHlwZTogRnVuY3Rpb24sXG4gICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gIH0sXG4gIGdldENvbnRleHRGbjoge1xuICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICB9LFxuICBjb2w6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfSxcbiAgaGVscGVyOiB7XG4gICAgdHlwZTogW1N0cmluZywgT2JqZWN0XSxcbiAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgfVxufSk7XG5jb25zdCB7IGRvQ29tcHV0ZWQgfSA9IHVzZUNvbXB1dGUoKTtcbmNvbnN0IGNvbXB1dGVkSXRlbSA9IGRvQ29tcHV0ZWQoXG4gICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHMuaXRlbTtcbiAgfSxcbiAgKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy5nZXRDb250ZXh0Rm4oKTtcbiAgfVxuKTtcblxuY29uc3QgYXR0cnMgPSB1c2VBdHRycygpO1xuY29uc3QgZm9ybUl0ZW1SZWYgPSByZWYoKTtcbmZ1bmN0aW9uIGdldEZvcm1JdGVtUmVmKCkge1xuICByZXR1cm4gZm9ybUl0ZW1SZWYudmFsdWU7XG59XG5cbmRlZmluZUV4cG9zZSh7XG4gIGdldEZvcm1JdGVtUmVmXG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1mb3JtLWl0ZW0tY29sIHtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1mb3JtLWhlbHBlclwiPlxuICAgIDxwcmUgdi1pZj1cInR5cGVvZiBoZWxwZXIgPT09ICdzdHJpbmcnXCI+e3sgaGVscGVyIH19PC9wcmU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cImhlbHBlci5yZW5kZXJcIj5cbiAgICAgIDxmcy1yZW5kZXIgOnJlbmRlci1mdW5jPVwiaGVscGVyLnJlbmRlclwiIDpzY29wZT1cInNjb3BlXCIgLz5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxwcmUgdi1lbHNlLWlmPVwiaGVscGVyLnRleHRcIj57eyBoZWxwZXIudGV4dCB9fTwvcHJlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHV0aWxzIGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG4vKipcbiAqIOihqOWNleWtl+auteW4ruWKqeivtOaYjue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRm9ybUhlbHBlclwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOW4ruWKqeivtOaYjiwgdGV4dDog6K+05piO5paH5a2XLCByZW5kZXI6IGZ1bmN0aW9uKHNjb3BlKSDoh6rlrprkuYnmuLLmn5NcbiAgICAgKi9cbiAgICBoZWxwZXI6IHtcbiAgICAgIHR5cGU6IFtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIHRleHQ6IOivtOaYjuaWh+WtlyxcbiAgICAgICAgICogcmVuZGVyOiBmdW5jdGlvbiAsIOiHquWumuS5iXJlbmRlclxuICAgICAgICAgKi9cbiAgICAgICAgT2JqZWN0LFxuICAgICAgICAvKipcbiAgICAgICAgICog6K+05piO5paH5pysXG4gICAgICAgICAqL1xuICAgICAgICBTdHJpbmdcbiAgICAgIF1cbiAgICB9LFxuICAgIHNjb3BlOiB7fVxuICB9LFxuICBzZXR1cChwcm9wcykge1xuICAgIHV0aWxzLnRyYWNlKFwiZnMtZm9ybS1pdGVtXCIpO1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtZm9ybS1oZWxwZXIge1xuICBjb2xvcjogIzdlN2U3ZTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbiAgbWFyZ2luLXRvcDogNHB4O1xuICBtYXJnaW4tYm90dG9tOiA2cHg7XG5cbiAgZm9udC1zaXplOiAxMnB4O1xuICBwcmUge1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtZm9ybS1oZWxwZXJcIj5cbiAgICA8cHJlIHYtaWY9XCJ0eXBlb2YgaGVscGVyID09PSAnc3RyaW5nJ1wiPnt7IGhlbHBlciB9fTwvcHJlPlxuICAgIDx0ZW1wbGF0ZSB2LWVsc2UtaWY9XCJoZWxwZXIucmVuZGVyXCI+XG4gICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cImhlbHBlci5yZW5kZXJcIiA6c2NvcGU9XCJzY29wZVwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8cHJlIHYtZWxzZS1pZj1cImhlbHBlci50ZXh0XCI+e3sgaGVscGVyLnRleHQgfX08L3ByZT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB1dGlscyBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuLyoqXG4gKiDooajljZXlrZfmrrXluK7liqnor7TmmI7nu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0Zvcm1IZWxwZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDluK7liqnor7TmmI4sIHRleHQ6IOivtOaYjuaWh+WtlywgcmVuZGVyOiBmdW5jdGlvbihzY29wZSkg6Ieq5a6a5LmJ5riy5p+TXG4gICAgICovXG4gICAgaGVscGVyOiB7XG4gICAgICB0eXBlOiBbXG4gICAgICAgIC8qKlxuICAgICAgICAgKiB0ZXh0OiDor7TmmI7mloflrZcsXG4gICAgICAgICAqIHJlbmRlcjogZnVuY3Rpb24gLCDoh6rlrprkuYlyZW5kZXJcbiAgICAgICAgICovXG4gICAgICAgIE9iamVjdCxcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOivtOaYjuaWh+acrFxuICAgICAgICAgKi9cbiAgICAgICAgU3RyaW5nXG4gICAgICBdXG4gICAgfSxcbiAgICBzY29wZToge31cbiAgfSxcbiAgc2V0dXAocHJvcHMpIHtcbiAgICB1dGlscy50cmFjZShcImZzLWZvcm0taXRlbVwiKTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWZvcm0taGVscGVyIHtcbiAgY29sb3I6ICM3ZTdlN2U7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIG1hcmdpbi10b3A6IDRweDtcbiAgbWFyZ2luLWJvdHRvbTogNnB4O1xuXG4gIGZvbnQtc2l6ZTogMTJweDtcbiAgcHJlIHtcbiAgICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIG1hcmdpbi1ib3R0b206IDBweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsbnVsbCwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNGb3JtUHJvdmlkZXJcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPHNsb3Q+PC9zbG90PlxuICA8ZnMtZm9ybS13cmFwcGVyIHYtZm9yPVwiaXRlbSBvZiBmb3JtV3JhcHBlckxpc3RcIiA6a2V5PVwiaXRlbS5pZFwiIHYtYmluZD1cIml0ZW1cIiAvPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHByb3ZpZGUsIFJlZiwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IEZzRm9ybVdyYXBwZXIgZnJvbSBcIi4vZnMtZm9ybS13cmFwcGVyLmpzXCI7XG5pbXBvcnQgeyBPcGVuRGlhbG9nUHJvcHMgfSBmcm9tIFwiLi4vLi4vZFwiO1xuXG47XG5cbmNvbnN0IGZvcm1XcmFwcGVyTGlzdDogUmVmID0gcmVmKHt9KTtcblxuZnVuY3Rpb24gZ2V0TWF4WkluZGV4KCk6IG51bWJlciB7XG4gIGxldCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpO1xuICBsZXQgbWF4WmluZGV4ID0gMTA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgbWF4WmluZGV4ID0gTWF0aC5tYXgobWF4WmluZGV4LCBlbGVtZW50c1tpXS5zdHlsZS56SW5kZXggfHwgMCk7XG4gIH1cbiAgcmV0dXJuIG1heFppbmRleDtcbn1cblxucHJvdmlkZShcInVzZTpmb3JtOndyYXBwZXJcIiwgKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIG9wZW4ob3B0czogT3BlbkRpYWxvZ1Byb3BzKSB7XG4gICAgICBjb25zdCBpZCA9IG9wdHMuaWQgfHwgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTAwMDAwMCkgKyBcIlwiO1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZm9ybVdyYXBwZXJMaXN0LnZhbHVlW2lkXSA9IHtcbiAgICAgICAgICBpZCxcbiAgICAgICAgICAvLyB6SW5kZXg6IGdldE1heFpJbmRleCgpICsgMSxcbiAgICAgICAgICBhc3luYyBvbk1vdW50ZWQoaW5zdGFuY2U6IGFueSkge1xuICAgICAgICAgICAgYXdhaXQgaW5zdGFuY2Uub3BlbihvcHRzKTtcbiAgICAgICAgICAgIHJlc29sdmUoaW5zdGFuY2UpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb25DbG9zZWQoKSB7XG4gICAgICAgICAgICBpZiAoIW9wdHMuaWQpIHtcbiAgICAgICAgICAgICAgLy/lpoLmnpzkuI3mmK/lm7rlrpppZO+8jOWImeWFs+mXreWQjumUgOavgVxuICAgICAgICAgICAgICBkZWxldGUgZm9ybVdyYXBwZXJMaXN0LnZhbHVlW2lkXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwiY29udGFpbmVyPy5pcyB8fCAnZnMtbGF5b3V0LWRlZmF1bHQnXCJcbiAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgIGNsYXNzPVwiZnMtY3J1ZC1jb250YWluZXJcIlxuICAgIHYtYmluZD1cImNvbnRhaW5lclwiXG4gICAgOmNsYXNzPVwiY29tcHV0ZWRDbGFzc1wiXG4gID5cbiAgICA8c2xvdD48L3Nsb3Q+XG5cbiAgICA8dGVtcGxhdGUgI2hlYWRlci10b3A+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLXRvcFwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLWJvdHRvbT5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNoZWFkZXItbWlkZGxlPlxuICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1taWRkbGVcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjc2VhcmNoPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtc2VhcmNoXCI+XG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwic2VhcmNoLmlzIHx8ICdmcy1zZWFyY2gnXCIgcmVmPVwic2VhcmNoUmVmXCIgdi1iaW5kPVwic2VhcmNoXCIgOnNsb3RzPVwiY29tcHV0ZWRTZWFyY2hTbG90c1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNhY3Rpb25iYXI+XG4gICAgICA8ZGl2IHYtaWY9XCJhY3Rpb25iYXIgJiYgYWN0aW9uYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLWFjdGlvbmJhclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyLWxlZnRcIj48L3Nsb3Q+XG4gICAgICAgIDxmcy1hY3Rpb25iYXIgdi1iaW5kPVwiYWN0aW9uYmFyXCIgLz5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhci1yaWdodFwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3Rvb2xiYXI+XG4gICAgICA8ZGl2IHYtaWY9XCJ0b29sYmFyICYmIHRvb2xiYXIuc2hvdyAhPT0gZmFsc2VcIiBjbGFzcz1cImZzLWNydWQtdG9vbGJhclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhci1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8ZnMtdG9vbGJhciByZWY9XCJ0b29sYmFyUmVmXCIgdi1iaW5kPVwidG9vbGJhclwiIDpzbG90cz1cImNvbXB1dGVkVG9vbGJhclNsb3RzXCIgOmNvbHVtbnM9XCJ0YWJsZS5jb2x1bW5zXCIgLz5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXItcmlnaHRcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjdGFicz5cbiAgICAgIDxmcy10YWJzLWZpbHRlciB2LWlmPVwidGFic0JpbmRpbmcuc2hvd1wiIHJlZj1cInRhYnNSZWZcIiBjbGFzcz1cImZzLXRhYnNcIiB2LWJpbmQ9XCJ0YWJzQmluZGluZ1wiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI3RhYmxlPlxuICAgICAgPGZzLXRhYmxlXG4gICAgICAgIHJlZj1cInRhYmxlUmVmXCJcbiAgICAgICAgY2xhc3M9XCJmcy1jcnVkLXRhYmxlXCJcbiAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRUYWJsZVwiXG4gICAgICAgIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiXG4gICAgICAgIDpsb2FkaW5nPVwidGFibGUubG9hZGluZ1wiXG4gICAgICAgIDpyb3ctaGFuZGxlPVwicm93SGFuZGxlXCJcbiAgICAgICAgOmRhdGE9XCJkYXRhXCJcbiAgICAgICAgOmNlbGwtc2xvdHM9XCJjb21wdXRlZENlbGxTbG90c1wiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI2Zvcm0+XG4gICAgICA8ZGl2IHJlZj1cImlubmVyV3JhcHBlclJlZlwiIGNsYXNzPVwiZnMtZm9ybS13cmFwcGVyLWNvbnRhaW5lclwiIDpjbGFzcz1cInsgJ2ZzLWZvcm0taW5uZXItd3JhcHBlcic6IGlzRm9ybUlubmVyIH1cIj5cbiAgICAgICAgPGZzLWZvcm0td3JhcHBlclxuICAgICAgICAgIHJlZj1cImZvcm1XcmFwcGVyUmVmXCJcbiAgICAgICAgICA6c2xvdHM9XCJjb21wdXRlZEZvcm1TbG90c1wiXG4gICAgICAgICAgOmlubmVyLXdyYXBwZXI9XCJpbm5lcldyYXBwZXJSZWZcIlxuICAgICAgICAgIEBpbm5lci1jaGFuZ2U9XCJvbkZvcm1Jbm5lckNoYW5nZVwiXG4gICAgICAgICAgQHZhbHVlLWNoYW5nZT1cIiRlbWl0KCdmb3JtLXZhbHVlLWNoYW5nZScsICRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8IS0tIOe8lui+keWvueivneahhiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3BhZ2luYXRpb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1wYWdpbmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uLWxlZnRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvbi1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb25cIj5cbiAgICAgICAgICA8IS0tIHBhZ2luYXRpb24uY3VycmVudFBhZ2Ug5aaC5p6c5Li656m677yMIGVsZW1lbnTkvJrlh7rorablkYogLS0+XG4gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5wYWdpbmF0aW9uLm5hbWVcIiB2LWlmPVwicGFnaW5hdGlvbi5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cInBhZ2luYXRpb25cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb24tcmlnaHRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvbi1yaWdodFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNmb290ZXItdG9wPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2Zvb3Rlci1ib3R0b20+XG4gICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgUHJvcFR5cGUsIHByb3ZpZGUsIHJlZiwgU2V0dXBDb250ZXh0LCB0b1JlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2ggfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vdWlcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uL3VzZS91c2UtbWVyZ2VcIjtcbmltcG9ydCB1dGlsTG9nIGZyb20gXCIuLi91dGlscy91dGlsLmxvZ1wiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCB7IFJvd1NlbGVjdGlvblByb3BzLCBTZXRTZWFyY2hGb3JtRGF0YVByb3BzIH0gZnJvbSBcIi4uL2RcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uL3VzZVwiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxudXRpbHMudHJhY2UoXCJmcy10YWJsZVwiKTtcbmNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG5cbmZ1bmN0aW9uIHVzZVByb3ZpZGVycyhwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBwcm92aWRlKFwiZ2V0OmNvbHVtbnNcIiwgKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy50YWJsZS5jb2x1bW5zO1xuICB9KTtcbiAgcHJvdmlkZShcInVwZGF0ZTpjb2x1bW5zXCIsIChjb2x1bW5zOiBhbnkpID0+IHtcbiAgICBjdHguZW1pdChcInVwZGF0ZTpjb2x1bW5zXCIsIGNvbHVtbnMpO1xuICB9KTtcblxuICBwcm92aWRlKFwiZ2V0OmNydWRCaW5kaW5nXCIsICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VTZWFyY2gocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgY29uc3Qgc2VhcmNoUmVmID0gcmVmKCk7XG4gIGNvbnN0IGdldFNlYXJjaFJlZiA9ICgpID0+IHtcbiAgICByZXR1cm4gc2VhcmNoUmVmLnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGdldFNlYXJjaEZvcm1EYXRhID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0Rm9ybSgpO1xuICAgIH1cbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hGb3JtRGF0YeS7o+abv1wiKTtcbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgY29uc3QgZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEgPSAoKSA9PiB7XG4gICAgaWYgKHNlYXJjaFJlZi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZS5nZXRWYWxpZGF0ZWRGb3JtKCk7XG4gICAgfVxuICAgIGxvZ2dlci53YXJuKFwi6K+35L2/55SoZXhwb3NlLmdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRh5Luj5pu/XCIpO1xuICAgIHJldHVybiB7fTtcbiAgfTtcblxuICAvKipcbiAgICog6K6+572uZm9ybeWAvFxuICAgKiBAcGFyYW0gZm9ybSBmb3Jt5a+56LGhXG4gICAqIEBwYXJhbSBvcHRzID0ge1xuICAgKiAgICBpc01lcmdlOmZhbHNlIOaYr+WQpuS4juWOn+aciWZvcm3lgLzlkIjlubYsXG4gICAqIH1cbiAgICovXG4gIGZ1bmN0aW9uIHNldFNlYXJjaEZvcm1EYXRhKHsgZm9ybSwgbWVyZ2VGb3JtID0gZmFsc2UgfTogU2V0U2VhcmNoRm9ybURhdGFQcm9wcykge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHNlYXJjaFJlZi52YWx1ZS5zZXRGb3JtKGZvcm0sIG1lcmdlRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWFyY2hSZWYsXG4gICAgZ2V0U2VhcmNoUmVmLFxuICAgIGdldFNlYXJjaEZvcm1EYXRhLFxuICAgIHNldFNlYXJjaEZvcm1EYXRhLFxuICAgIGdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRhXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVRhYnMoc2VhcmNoUmV0OiBhbnksIHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XG4gIGNvbnN0IHRhYnNCaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy50YWJzICYmIHByb3BzLnRhYnMuc2hvdyAmJiBwcm9wcy50YWJzLm5hbWUpIHtcbiAgICAgIGxldCBkaWN0ID0gbnVsbDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUYWJzID0geyAuLi5wcm9wcy50YWJzIH07XG4gICAgICBpZiAocHJvcHMuc2VhcmNoPy5jb2x1bW5zICYmIHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3QpIHtcbiAgICAgICAgZGljdCA9IHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3Q7XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMudmFsdWUgPSBkaWN0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy5sYWJlbCA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMubGFiZWwgPSBkaWN0LmxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy5vcHRpb25zID09IG51bGwpIHtcbiAgICAgICAgICBkZWZhdWx0VGFicy5vcHRpb25zID0gZGljdC5kYXRhIHx8IFtdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRUYWJzLFxuICAgICAgICBtb2RlbFZhbHVlOiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybSAmJiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybVtwcm9wcy50YWJzLm5hbWVdLFxuICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBjdHguZW1pdChcInRhYi1jaGFuZ2VcIiwgeyBbcHJvcHMudGFicy5uYW1lXTogdmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzaG93OiBmYWxzZVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRhYnNCaW5kaW5nXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNsb3RGaWx0ZXIoY3R4U2xvdHM6IGFueSwga2V5UHJlZml4OiBzdHJpbmcpIHtcbiAgaWYgKCFjdHhTbG90cykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBzbG90czogYW55ID0ge307XG4gIGZvckVhY2goY3R4U2xvdHMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKGtleVByZWZpeCkpIHtcbiAgICAgIHNsb3RzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2xvdHM7XG59XG5cbmZ1bmN0aW9uIHVzZUZpeGVkSGVpZ2h0KHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0LCB7IHRhYmxlUmVmLCBjb250YWluZXJSZWYgfTogYW55KSB7XG4gIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xuICBsZXQgdGFibGVDSSA9IHVpLnRhYmxlO1xuICBpZiAocHJvcHMudGFibGU/LnRhYmxlVmVyc2lvbiA9PT0gXCJ2MlwiKSB7XG4gICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XG4gIH1cbiAgaWYgKHRhYmxlQ0kuaGFzTWF4SGVpZ2h0KHByb3BzLnRhYmxlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBpZiAoIXRhYmxlQ0kuZml4ZWRIZWFkZXJOZWVkQ29tcHV0ZUJvZHlIZWlnaHQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgbWF4SGVpZ2h0UmVmID0gcmVmKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNvbXB1dGVCb2R5SGVpZ2h0KCkge1xuICAgIGNvbnN0IHRhYmxlRG9tID0gdGFibGVSZWY/LnZhbHVlPy4kZWw7XG4gICAgaWYgKHRhYmxlRG9tID09IG51bGwgfHwgdGFibGVEb20ucXVlcnlTZWxlY3RvciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhlYWREb20gPSB0YWJsZURvbS5xdWVyeVNlbGVjdG9yKHRhYmxlQ0kuaGVhZGVyRG9tU2VsZWN0b3IpO1xuICAgIGlmIChoZWFkRG9tID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZURvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgY29uc3QgaGVhZEhlaWdodCA9IGhlYWREb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIG1heEhlaWdodFJlZi52YWx1ZSA9IHRhYmxlSGVpZ2h0IC0gaGVhZEhlaWdodCAtIDIgKyAocHJvcHMudGFibGUubWF4SGVpZ2h0QWRqdXN0IHx8IDApO1xuXG4gICAgdXRpbExvZy5kZWJ1ZyhcInRhYmxlIG1heCBoZWlnaHQgcmVjb21wdXRlZCBcIiwgbWF4SGVpZ2h0UmVmLnZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhdGNoQm9keUhlaWdodENoYW5nZSgpIHtcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xuICAgIGlmICh0YWJsZURvbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlV3JhcHBlckRvbSA9IHRhYmxlRG9tLnBhcmVudE5vZGU7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgdXRpbExvZy5kZWJ1ZyhcInRhYmxlIHJlc2l6ZWRcIiwgZW50cmllcyk7XG4gICAgICAvLyDmr4/mrKHooqvop4LmtYvnmoTlhYPntKDlsLrlr7jlj5HnlJ/mlLnlj5jov5nph4zpg73kvJrmiafooYxcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDAgJiYgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPiAwKSB7XG4gICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YWJsZVdyYXBwZXJEb20pOyAvLyDop4LmtYtET03lhYPntKBcbiAgfVxuXG4gIG9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIHdhdGNoQm9keUhlaWdodENoYW5nZSgpO1xuICB9KTtcbiAgcmV0dXJuIHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9O1xufVxuXG5mdW5jdGlvbiB1c2VUYWJsZShwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBjb25zdCB1aSA9IHVpQ29udGV4dC5nZXQoKTtcbiAgY29uc3QgdGFibGVSZWYgPSByZWYoKTtcbiAgY29uc3QgdG9vbGJhclJlZiA9IHJlZigpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSByZWYoKTtcbiAgY29uc3QgeyBtYXhIZWlnaHRSZWYsIGNvbXB1dGVCb2R5SGVpZ2h0IH0gPSB1c2VGaXhlZEhlaWdodChwcm9wcywgY3R4LCB7IHRhYmxlUmVmLCBjb250YWluZXJSZWYgfSk7XG4gIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gIGNvbnN0IHRhYmxlUHJvcFJlZiA9IHRvUmVmKHByb3BzLCBcInRhYmxlXCIpO1xuICBjb25zdCBjb21wdXRlZFRhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIGFudGR2IG5haXZlIOmrmOW6puiHqumAguW6lO+8jCDlpoLmnpznlKjmiLfmnInphY3nva5zY3JvbGzvvIzliJnkvJjlhYjkvb/nlKjnlKjmiLfphY3nva7nmoRcbiAgICBsZXQgZml4ZWRIZWlnaHQgPSB7fTtcbiAgICBpZiAobWF4SGVpZ2h0UmVmPy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZXQgdGFibGVDSSA9IHVpLnRhYmxlO1xuICAgICAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xuICAgICAgICB0YWJsZUNJID0gdWkudGFibGVWMjtcbiAgICAgIH1cbiAgICAgIGZpeGVkSGVpZ2h0ID0gdGFibGVDSS5idWlsZE1heEhlaWdodChtYXhIZWlnaHRSZWYudmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBwQXR0cnMgPSB1dGlscy5kYXNoLm9taXQodGFibGVQcm9wUmVmLCBcImxvYWRpbmdcIiwgXCJjb2x1bW5zXCIsIFwiY29sdW1uc01hcFwiKTtcblxuICAgIHJldHVybiBtZXJnZShmaXhlZEhlaWdodCwgeyAuLi5jdHguYXR0cnMsIC4uLnBBdHRycyB9KTtcbiAgfSk7XG5cbiAgY29uc3QgY29tcHV0ZWRUb29sYmFyID0gdG9SZWYocHJvcHMsIFwidG9vbGJhclwiKTtcblxuICBjb25zdCBjb21wdXRlZENlbGxTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwiY2VsbFwiKTtcbiAgfSk7XG5cbiAgY29uc3QgY29tcHV0ZWRGb3JtU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcImZvcm1cIik7XG4gIH0pO1xuICBjb25zdCBjb21wdXRlZFNlYXJjaFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBzbG90RmlsdGVyKGN0eC5zbG90cywgXCJzZWFyY2hcIik7XG4gIH0pO1xuICBjb25zdCBjb21wdXRlZFRvb2xiYXJTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwidG9vbGJhclwiKTtcbiAgfSk7XG5cbiAgY29uc3QgZm9ybVdyYXBwZXJSZWYgPSByZWYoKTtcblxuICBjb25zdCBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsYXp6OiBhbnkgPSB7IGNvbXBhY3Q6IHByb3BzLnRvb2xiYXIuY29tcGFjdCAhPT0gZmFsc2UgfTtcbiAgICBpZiAocHJvcHMuY3VzdG9tQ2xhc3MpIHtcbiAgICAgIGNsYXp6W3Byb3BzLmN1c3RvbUNsYXNzXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBjbGF6ejtcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJXcmFwcGVyUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgaXNGb3JtSW5uZXIgPSByZWYoZmFsc2UpO1xuICBjb25zdCBvbkZvcm1Jbm5lckNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgaXNGb3JtSW5uZXIudmFsdWUgPSB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlUmVmLFxuICAgIGNvbnRhaW5lclJlZixcbiAgICB0b29sYmFyUmVmLFxuICAgIGNvbXB1dGVkVGFibGUsXG4gICAgY29tcHV0ZWRUb29sYmFyLFxuICAgIGNvbXB1dGVkQ2VsbFNsb3RzLFxuICAgIGZvcm1XcmFwcGVyUmVmLFxuICAgIGlzRm9ybUlubmVyLFxuICAgIG9uRm9ybUlubmVyQ2hhbmdlLFxuICAgIGNvbXB1dGVkRm9ybVNsb3RzLFxuICAgIGNvbXB1dGVkU2VhcmNoU2xvdHMsXG4gICAgY29tcHV0ZWRUb29sYmFyU2xvdHMsXG4gICAgY29tcHV0ZUJvZHlIZWlnaHQsXG4gICAgY29tcHV0ZWRDbGFzcyxcbiAgICBpbm5lcldyYXBwZXJSZWZcbiAgfTtcbn1cblxuLyoqXG4gKiBmcy1jcnVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNDcnVkXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog6KGo5qC8aWRcbiAgICAgKi9cbiAgICBpZDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5qC86YWN572u77yM6KeBRnNUYWJsZVxuICAgICAqL1xuICAgIHRhYmxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajmoLzmlbDmja5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL3JlcXVpcmUtZGVmYXVsdC1wcm9wXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWIl+mFjee9ru+8jOingUZzUm93SGFuZGxlXG4gICAgICovXG4gICAgcm93SGFuZGxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LmoYbphY3nva7vvIzop4FGc1NlYXJjaFxuICAgICAqL1xuICAgIHNlYXJjaDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bel5YW35p2h6YWN572u77yM6KeBRnNUb29sYmFyXG4gICAgICovXG4gICAgdG9vbGJhcjoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5Yqo5L2c5p2h6YWN572u77yM6KeBRnNBY3Rpb25iYXJcbiAgICAgKi9cbiAgICBhY3Rpb25iYXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIHRhYnMgZmlsdGVyXG4gICAgICovXG4gICAgdGFiczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5re75Yqg6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxuICAgICAqL1xuICAgIGFkZEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe8lui+keihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICBlZGl0Rm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l55yL6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxuICAgICAqL1xuICAgIHZpZXdGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnv7vpobXphY3nva4s5pSv5oyBZWwtcGFnaW5hdGlvbnxhLXBhZ2luYXRpb27phY3nva5cbiAgICAgKi9cbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a655Zmo6YWN572u77yM6KeBRnNDb250YWluZXJcbiAgICAgKi9cbiAgICBjb250YWluZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogY3J1ZOWMheijueWuueWZqOeahGNsYXNzXG4gICAgICovXG4gICAgY3VzdG9tQ2xhc3M6IHt9LFxuICAgIC8qKlxuICAgICAqIOS4jeimgeS8oOWIsGZzLXRhYmxl5Y67XG4gICAgICovXG4gICAgZm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDlj6/pgInmi6lcbiAgICAgKi9cbiAgICBzZWxlY3Rpb246IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxSb3dTZWxlY3Rpb25Qcm9wcz4sXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTpzZWFyY2hcIiwgXCJ1cGRhdGU6Y29tcGFjdFwiLCBcInVwZGF0ZTpjb2x1bW5zXCIsIFwiZm9ybS12YWx1ZS1jaGFuZ2VcIiwgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcInRhYi1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICB1c2VQcm92aWRlcnMocHJvcHMsIGN0eCk7XG4gICAgY29uc3Qgc2VhcmNoID0gdXNlU2VhcmNoKHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHRhYnMgPSB1c2VUYWJzKHNlYXJjaCwgcHJvcHMsIGN0eCk7XG4gICAgY29uc3QgdGFibGUgPSB1c2VUYWJsZShwcm9wcywgY3R4KTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICAuLi5zZWFyY2gsXG4gICAgICAuLi50YWJsZSxcbiAgICAgIC4uLnRhYnNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4vL+S9nOS4uuaVsOaNruihqOagvOS9v+eUqOeahOmihOiuvuagt+W8j++8jOmakOiXj2Zvb3Rlcu+8jOihqOagvOmrmOW6pueijuiusOW9leaVsOWinuWKoOiAjOWinuWKoFxuLmZzLWNydWQtYXMtdGFibGUge1xuICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogdW5zZXQ7XG5cbiAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmJveCAuaW5uZXIge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbn1cblxuLmZzLWNydWQtY29udGFpbmVyIHtcbiAgbWluLWhlaWdodDogMzAwcHg7XG5cbiAgJi5jb21wYWN0IHtcbiAgICAuZWwtdGFibGUtLWJvcmRlciB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1oZWFkZXIge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1mb290ZXIge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG4gIH1cblxuICAuZnMtY3J1ZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mcy1oZWFkZXItdG9wIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1jcnVkLXNlYXJjaCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIH1cblxuICAgIC5mcy1oZWFkZXItbWlkZGxlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1oZWFkZXItYm90dG9tIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICAvLyBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDEwMDAwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1pbi13aWR0aDogMXB4O1xuICAgIH1cblxuICAgIC5mcy1jcnVkLXRvb2xiYXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgZmxleDogMTtcbiAgICB9XG4gIH1cblxuICAuZnMtY3J1ZC10YWJsZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG5cbiAgICAuZnMtY3J1ZC1wYWdpbmF0aW9uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1sZWZ0IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1yaWdodCB7XG4gICAgICAgIGZsZXg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5mcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgZmxleDogMTtcblxuICAgICAgICAuYW50LXBhZ2luYXRpb24tb3B0aW9ucyB7XG4gICAgICAgICAgLmFudC1zZWxlY3Qge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmVsLXBhZ2luYXRpb24ge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mcy1wYWdpbmF0aW9uLXJpZ2h0IHtcbiAgICAgICAgZmxleDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mcy1jcnVkLWNvbnRhaW5lciB7XG4gICAgLmJvZHkge1xuICAgICAgb3ZlcmZsb3cteTogdW5zZXQgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmFudC10YWJsZS1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm4tZGF0YS10YWJsZS1iYXNlLXRhYmxlLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1oZWFkZXIgLmZzLWNydWQtYWN0aW9uYmFyIHtcbiAgICAgIGZsZXg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwiY29udGFpbmVyPy5pcyB8fCAnZnMtbGF5b3V0LWRlZmF1bHQnXCJcbiAgICByZWY9XCJjb250YWluZXJSZWZcIlxuICAgIGNsYXNzPVwiZnMtY3J1ZC1jb250YWluZXJcIlxuICAgIHYtYmluZD1cImNvbnRhaW5lclwiXG4gICAgOmNsYXNzPVwiY29tcHV0ZWRDbGFzc1wiXG4gID5cbiAgICA8c2xvdD48L3Nsb3Q+XG5cbiAgICA8dGVtcGxhdGUgI2hlYWRlci10b3A+XG4gICAgICA8c2xvdCBuYW1lPVwiaGVhZGVyLXRvcFwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLWJvdHRvbT5cbiAgICAgIDxzbG90IG5hbWU9XCJoZWFkZXItYm90dG9tXCI+PC9zbG90PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlICNoZWFkZXItbWlkZGxlPlxuICAgICAgPHNsb3QgbmFtZT1cImhlYWRlci1taWRkbGVcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cblxuICAgIDx0ZW1wbGF0ZSAjc2VhcmNoPlxuICAgICAgPGRpdiBjbGFzcz1cImZzLWNydWQtc2VhcmNoXCI+XG4gICAgICAgIDxjb21wb25lbnQgOmlzPVwic2VhcmNoLmlzIHx8ICdmcy1zZWFyY2gnXCIgcmVmPVwic2VhcmNoUmVmXCIgdi1iaW5kPVwic2VhcmNoXCIgOnNsb3RzPVwiY29tcHV0ZWRTZWFyY2hTbG90c1wiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNhY3Rpb25iYXI+XG4gICAgICA8ZGl2IHYtaWY9XCJhY3Rpb25iYXIgJiYgYWN0aW9uYmFyLnNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1jcnVkLWFjdGlvbmJhclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwiYWN0aW9uYmFyLWxlZnRcIj48L3Nsb3Q+XG4gICAgICAgIDxmcy1hY3Rpb25iYXIgdi1iaW5kPVwiYWN0aW9uYmFyXCIgLz5cbiAgICAgICAgPHNsb3QgbmFtZT1cImFjdGlvbmJhci1yaWdodFwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3Rvb2xiYXI+XG4gICAgICA8ZGl2IHYtaWY9XCJ0b29sYmFyICYmIHRvb2xiYXIuc2hvdyAhPT0gZmFsc2VcIiBjbGFzcz1cImZzLWNydWQtdG9vbGJhclwiPlxuICAgICAgICA8c2xvdCBuYW1lPVwidG9vbGJhci1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8ZnMtdG9vbGJhciByZWY9XCJ0b29sYmFyUmVmXCIgdi1iaW5kPVwidG9vbGJhclwiIDpzbG90cz1cImNvbXB1dGVkVG9vbGJhclNsb3RzXCIgOmNvbHVtbnM9XCJ0YWJsZS5jb2x1bW5zXCIgLz5cbiAgICAgICAgPHNsb3QgbmFtZT1cInRvb2xiYXItcmlnaHRcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSAjdGFicz5cbiAgICAgIDxmcy10YWJzLWZpbHRlciB2LWlmPVwidGFic0JpbmRpbmcuc2hvd1wiIHJlZj1cInRhYnNSZWZcIiBjbGFzcz1cImZzLXRhYnNcIiB2LWJpbmQ9XCJ0YWJzQmluZGluZ1wiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI3RhYmxlPlxuICAgICAgPGZzLXRhYmxlXG4gICAgICAgIHJlZj1cInRhYmxlUmVmXCJcbiAgICAgICAgY2xhc3M9XCJmcy1jcnVkLXRhYmxlXCJcbiAgICAgICAgdi1iaW5kPVwiY29tcHV0ZWRUYWJsZVwiXG4gICAgICAgIDpjb2x1bW5zPVwidGFibGUuY29sdW1uc1wiXG4gICAgICAgIDpsb2FkaW5nPVwidGFibGUubG9hZGluZ1wiXG4gICAgICAgIDpyb3ctaGFuZGxlPVwicm93SGFuZGxlXCJcbiAgICAgICAgOmRhdGE9XCJkYXRhXCJcbiAgICAgICAgOmNlbGwtc2xvdHM9XCJjb21wdXRlZENlbGxTbG90c1wiXG4gICAgICAvPlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI2Zvcm0+XG4gICAgICA8ZGl2IHJlZj1cImlubmVyV3JhcHBlclJlZlwiIGNsYXNzPVwiZnMtZm9ybS13cmFwcGVyLWNvbnRhaW5lclwiIDpjbGFzcz1cInsgJ2ZzLWZvcm0taW5uZXItd3JhcHBlcic6IGlzRm9ybUlubmVyIH1cIj5cbiAgICAgICAgPGZzLWZvcm0td3JhcHBlclxuICAgICAgICAgIHJlZj1cImZvcm1XcmFwcGVyUmVmXCJcbiAgICAgICAgICA6c2xvdHM9XCJjb21wdXRlZEZvcm1TbG90c1wiXG4gICAgICAgICAgOmlubmVyLXdyYXBwZXI9XCJpbm5lcldyYXBwZXJSZWZcIlxuICAgICAgICAgIEBpbm5lci1jaGFuZ2U9XCJvbkZvcm1Jbm5lckNoYW5nZVwiXG4gICAgICAgICAgQHZhbHVlLWNoYW5nZT1cIiRlbWl0KCdmb3JtLXZhbHVlLWNoYW5nZScsICRldmVudClcIlxuICAgICAgICAvPlxuICAgICAgICA8IS0tIOe8lui+keWvueivneahhiAtLT5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG5cbiAgICA8dGVtcGxhdGUgI3BhZ2luYXRpb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtY3J1ZC1wYWdpbmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1wYWdpbmF0aW9uLWxlZnRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvbi1sZWZ0XCI+PC9zbG90PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb25cIj5cbiAgICAgICAgICA8IS0tIHBhZ2luYXRpb24uY3VycmVudFBhZ2Ug5aaC5p6c5Li656m677yMIGVsZW1lbnTkvJrlh7rorablkYogLS0+XG4gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5wYWdpbmF0aW9uLm5hbWVcIiB2LWlmPVwicGFnaW5hdGlvbi5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cInBhZ2luYXRpb25cIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZzLXBhZ2luYXRpb24tcmlnaHRcIj5cbiAgICAgICAgICA8c2xvdCBuYW1lPVwicGFnaW5hdGlvbi1yaWdodFwiPjwvc2xvdD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuXG4gICAgPHRlbXBsYXRlICNmb290ZXItdG9wPlxuICAgICAgPHNsb3QgbmFtZT1cImZvb3Rlci10b3BcIj48L3Nsb3Q+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgI2Zvb3Rlci1ib3R0b20+XG4gICAgICA8c2xvdCBuYW1lPVwiZm9vdGVyLWJvdHRvbVwiPjwvc2xvdD5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgUHJvcFR5cGUsIHByb3ZpZGUsIHJlZiwgU2V0dXBDb250ZXh0LCB0b1JlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2ggfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vdWlcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uL3VzZS91c2UtbWVyZ2VcIjtcbmltcG9ydCB1dGlsTG9nIGZyb20gXCIuLi91dGlscy91dGlsLmxvZ1wiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCB7IFJvd1NlbGVjdGlvblByb3BzLCBTZXRTZWFyY2hGb3JtRGF0YVByb3BzIH0gZnJvbSBcIi4uL2RcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uL3VzZVwiO1xuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiLi4vdXRpbHNcIjtcblxudXRpbHMudHJhY2UoXCJmcy10YWJsZVwiKTtcbmNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG5cbmZ1bmN0aW9uIHVzZVByb3ZpZGVycyhwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBwcm92aWRlKFwiZ2V0OmNvbHVtbnNcIiwgKCkgPT4ge1xuICAgIHJldHVybiBwcm9wcy50YWJsZS5jb2x1bW5zO1xuICB9KTtcbiAgcHJvdmlkZShcInVwZGF0ZTpjb2x1bW5zXCIsIChjb2x1bW5zOiBhbnkpID0+IHtcbiAgICBjdHguZW1pdChcInVwZGF0ZTpjb2x1bW5zXCIsIGNvbHVtbnMpO1xuICB9KTtcblxuICBwcm92aWRlKFwiZ2V0OmNydWRCaW5kaW5nXCIsICgpID0+IHtcbiAgICByZXR1cm4gcHJvcHM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiB1c2VTZWFyY2gocHJvcHM6IGFueSwgY3R4OiBTZXR1cENvbnRleHQpIHtcbiAgY29uc3Qgc2VhcmNoUmVmID0gcmVmKCk7XG4gIGNvbnN0IGdldFNlYXJjaFJlZiA9ICgpID0+IHtcbiAgICByZXR1cm4gc2VhcmNoUmVmLnZhbHVlO1xuICB9O1xuXG4gIGNvbnN0IGdldFNlYXJjaEZvcm1EYXRhID0gKCkgPT4ge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHJldHVybiBzZWFyY2hSZWYudmFsdWUuZ2V0Rm9ybSgpO1xuICAgIH1cbiAgICBsb2dnZXIud2FybihcIuivt+S9v+eUqGV4cG9zZS5nZXRTZWFyY2hGb3JtRGF0YeS7o+abv1wiKTtcbiAgICByZXR1cm4ge307XG4gIH07XG5cbiAgY29uc3QgZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEgPSAoKSA9PiB7XG4gICAgaWYgKHNlYXJjaFJlZi52YWx1ZSkge1xuICAgICAgcmV0dXJuIHNlYXJjaFJlZi52YWx1ZS5nZXRWYWxpZGF0ZWRGb3JtKCk7XG4gICAgfVxuICAgIGxvZ2dlci53YXJuKFwi6K+35L2/55SoZXhwb3NlLmdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRh5Luj5pu/XCIpO1xuICAgIHJldHVybiB7fTtcbiAgfTtcblxuICAvKipcbiAgICog6K6+572uZm9ybeWAvFxuICAgKiBAcGFyYW0gZm9ybSBmb3Jt5a+56LGhXG4gICAqIEBwYXJhbSBvcHRzID0ge1xuICAgKiAgICBpc01lcmdlOmZhbHNlIOaYr+WQpuS4juWOn+aciWZvcm3lgLzlkIjlubYsXG4gICAqIH1cbiAgICovXG4gIGZ1bmN0aW9uIHNldFNlYXJjaEZvcm1EYXRhKHsgZm9ybSwgbWVyZ2VGb3JtID0gZmFsc2UgfTogU2V0U2VhcmNoRm9ybURhdGFQcm9wcykge1xuICAgIGlmIChzZWFyY2hSZWYudmFsdWUpIHtcbiAgICAgIHNlYXJjaFJlZi52YWx1ZS5zZXRGb3JtKGZvcm0sIG1lcmdlRm9ybSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWFyY2hSZWYsXG4gICAgZ2V0U2VhcmNoUmVmLFxuICAgIGdldFNlYXJjaEZvcm1EYXRhLFxuICAgIHNldFNlYXJjaEZvcm1EYXRhLFxuICAgIGdldFNlYXJjaFZhbGlkYXRlZEZvcm1EYXRhXG4gIH07XG59XG5cbmZ1bmN0aW9uIHVzZVRhYnMoc2VhcmNoUmV0OiBhbnksIHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0KSB7XG4gIGNvbnN0IHRhYnNCaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmIChwcm9wcy50YWJzICYmIHByb3BzLnRhYnMuc2hvdyAmJiBwcm9wcy50YWJzLm5hbWUpIHtcbiAgICAgIGxldCBkaWN0ID0gbnVsbDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUYWJzID0geyAuLi5wcm9wcy50YWJzIH07XG4gICAgICBpZiAocHJvcHMuc2VhcmNoPy5jb2x1bW5zICYmIHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3QpIHtcbiAgICAgICAgZGljdCA9IHByb3BzLnNlYXJjaD8uY29sdW1uc1twcm9wcy50YWJzLm5hbWVdPy5jb21wb25lbnQ/LmRpY3Q7XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy52YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMudmFsdWUgPSBkaWN0LnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy5sYWJlbCA9PSBudWxsKSB7XG4gICAgICAgICAgZGVmYXVsdFRhYnMubGFiZWwgPSBkaWN0LmxhYmVsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWZhdWx0VGFicy5vcHRpb25zID09IG51bGwpIHtcbiAgICAgICAgICBkZWZhdWx0VGFicy5vcHRpb25zID0gZGljdC5kYXRhIHx8IFtdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRlZmF1bHRUYWJzLFxuICAgICAgICBtb2RlbFZhbHVlOiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybSAmJiBwcm9wcy5zZWFyY2gudmFsaWRhdGVkRm9ybVtwcm9wcy50YWJzLm5hbWVdLFxuICAgICAgICBcIm9uVXBkYXRlOm1vZGVsVmFsdWVcIjogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICBjdHguZW1pdChcInRhYi1jaGFuZ2VcIiwgeyBbcHJvcHMudGFicy5uYW1lXTogdmFsdWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBzaG93OiBmYWxzZVxuICAgIH07XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHRhYnNCaW5kaW5nXG4gIH07XG59XG5cbmZ1bmN0aW9uIHNsb3RGaWx0ZXIoY3R4U2xvdHM6IGFueSwga2V5UHJlZml4OiBzdHJpbmcpIHtcbiAgaWYgKCFjdHhTbG90cykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBjb25zdCBzbG90czogYW55ID0ge307XG4gIGZvckVhY2goY3R4U2xvdHMsICh2YWx1ZSwga2V5KSA9PiB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKGtleVByZWZpeCkpIHtcbiAgICAgIHNsb3RzW2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gc2xvdHM7XG59XG5cbmZ1bmN0aW9uIHVzZUZpeGVkSGVpZ2h0KHByb3BzOiBhbnksIGN0eDogU2V0dXBDb250ZXh0LCB7IHRhYmxlUmVmLCBjb250YWluZXJSZWYgfTogYW55KSB7XG4gIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xuICBsZXQgdGFibGVDSSA9IHVpLnRhYmxlO1xuICBpZiAocHJvcHMudGFibGU/LnRhYmxlVmVyc2lvbiA9PT0gXCJ2MlwiKSB7XG4gICAgdGFibGVDSSA9IHVpLnRhYmxlVjI7XG4gIH1cbiAgaWYgKHRhYmxlQ0kuaGFzTWF4SGVpZ2h0KHByb3BzLnRhYmxlKSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuICBpZiAoIXRhYmxlQ0kuZml4ZWRIZWFkZXJOZWVkQ29tcHV0ZUJvZHlIZWlnaHQpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3QgbWF4SGVpZ2h0UmVmID0gcmVmKG51bGwpO1xuXG4gIGZ1bmN0aW9uIGNvbXB1dGVCb2R5SGVpZ2h0KCkge1xuICAgIGNvbnN0IHRhYmxlRG9tID0gdGFibGVSZWY/LnZhbHVlPy4kZWw7XG4gICAgaWYgKHRhYmxlRG9tID09IG51bGwgfHwgdGFibGVEb20ucXVlcnlTZWxlY3RvciA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGhlYWREb20gPSB0YWJsZURvbS5xdWVyeVNlbGVjdG9yKHRhYmxlQ0kuaGVhZGVyRG9tU2VsZWN0b3IpO1xuICAgIGlmIChoZWFkRG9tID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgdGFibGVIZWlnaHQgPSB0YWJsZURvbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgY29uc3QgaGVhZEhlaWdodCA9IGhlYWREb20uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgIG1heEhlaWdodFJlZi52YWx1ZSA9IHRhYmxlSGVpZ2h0IC0gaGVhZEhlaWdodCAtIDIgKyAocHJvcHMudGFibGUubWF4SGVpZ2h0QWRqdXN0IHx8IDApO1xuXG4gICAgdXRpbExvZy5kZWJ1ZyhcInRhYmxlIG1heCBoZWlnaHQgcmVjb21wdXRlZCBcIiwgbWF4SGVpZ2h0UmVmLnZhbHVlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHdhdGNoQm9keUhlaWdodENoYW5nZSgpIHtcbiAgICBjb25zdCB0YWJsZURvbSA9IHRhYmxlUmVmPy52YWx1ZT8uJGVsO1xuICAgIGlmICh0YWJsZURvbSA9PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlV3JhcHBlckRvbSA9IHRhYmxlRG9tLnBhcmVudE5vZGU7XG5cbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcihmdW5jdGlvbiAoZW50cmllcykge1xuICAgICAgdXRpbExvZy5kZWJ1ZyhcInRhYmxlIHJlc2l6ZWRcIiwgZW50cmllcyk7XG4gICAgICAvLyDmr4/mrKHooqvop4LmtYvnmoTlhYPntKDlsLrlr7jlj5HnlJ/mlLnlj5jov5nph4zpg73kvJrmiafooYxcbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDAgJiYgZW50cmllc1swXS5jb250ZW50UmVjdC5oZWlnaHQgPiAwKSB7XG4gICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGNvbXB1dGVCb2R5SGVpZ2h0KCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh0YWJsZVdyYXBwZXJEb20pOyAvLyDop4LmtYtET03lhYPntKBcbiAgfVxuXG4gIG9uTW91bnRlZChhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIHdhdGNoQm9keUhlaWdodENoYW5nZSgpO1xuICB9KTtcbiAgcmV0dXJuIHsgbWF4SGVpZ2h0UmVmLCBjb21wdXRlQm9keUhlaWdodCB9O1xufVxuXG5mdW5jdGlvbiB1c2VUYWJsZShwcm9wczogYW55LCBjdHg6IFNldHVwQ29udGV4dCkge1xuICBjb25zdCB1aSA9IHVpQ29udGV4dC5nZXQoKTtcbiAgY29uc3QgdGFibGVSZWYgPSByZWYoKTtcbiAgY29uc3QgdG9vbGJhclJlZiA9IHJlZigpO1xuICBjb25zdCBjb250YWluZXJSZWYgPSByZWYoKTtcbiAgY29uc3QgeyBtYXhIZWlnaHRSZWYsIGNvbXB1dGVCb2R5SGVpZ2h0IH0gPSB1c2VGaXhlZEhlaWdodChwcm9wcywgY3R4LCB7IHRhYmxlUmVmLCBjb250YWluZXJSZWYgfSk7XG4gIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gIGNvbnN0IHRhYmxlUHJvcFJlZiA9IHRvUmVmKHByb3BzLCBcInRhYmxlXCIpO1xuICBjb25zdCBjb21wdXRlZFRhYmxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIC8vIGFudGR2IG5haXZlIOmrmOW6puiHqumAguW6lO+8jCDlpoLmnpznlKjmiLfmnInphY3nva5zY3JvbGzvvIzliJnkvJjlhYjkvb/nlKjnlKjmiLfphY3nva7nmoRcbiAgICBsZXQgZml4ZWRIZWlnaHQgPSB7fTtcbiAgICBpZiAobWF4SGVpZ2h0UmVmPy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICBsZXQgdGFibGVDSSA9IHVpLnRhYmxlO1xuICAgICAgaWYgKHByb3BzLnRhYmxlPy50YWJsZVZlcnNpb24gPT09IFwidjJcIikge1xuICAgICAgICB0YWJsZUNJID0gdWkudGFibGVWMjtcbiAgICAgIH1cbiAgICAgIGZpeGVkSGVpZ2h0ID0gdGFibGVDSS5idWlsZE1heEhlaWdodChtYXhIZWlnaHRSZWYudmFsdWUpO1xuICAgIH1cbiAgICBjb25zdCBwQXR0cnMgPSB1dGlscy5kYXNoLm9taXQodGFibGVQcm9wUmVmLCBcImxvYWRpbmdcIiwgXCJjb2x1bW5zXCIsIFwiY29sdW1uc01hcFwiKTtcblxuICAgIHJldHVybiBtZXJnZShmaXhlZEhlaWdodCwgeyAuLi5jdHguYXR0cnMsIC4uLnBBdHRycyB9KTtcbiAgfSk7XG5cbiAgY29uc3QgY29tcHV0ZWRUb29sYmFyID0gdG9SZWYocHJvcHMsIFwidG9vbGJhclwiKTtcblxuICBjb25zdCBjb21wdXRlZENlbGxTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwiY2VsbFwiKTtcbiAgfSk7XG5cbiAgY29uc3QgY29tcHV0ZWRGb3JtU2xvdHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHNsb3RGaWx0ZXIoY3R4LnNsb3RzLCBcImZvcm1cIik7XG4gIH0pO1xuICBjb25zdCBjb21wdXRlZFNlYXJjaFNsb3RzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiBzbG90RmlsdGVyKGN0eC5zbG90cywgXCJzZWFyY2hcIik7XG4gIH0pO1xuICBjb25zdCBjb21wdXRlZFRvb2xiYXJTbG90cyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gc2xvdEZpbHRlcihjdHguc2xvdHMsIFwidG9vbGJhclwiKTtcbiAgfSk7XG5cbiAgY29uc3QgZm9ybVdyYXBwZXJSZWYgPSByZWYoKTtcblxuICBjb25zdCBjb21wdXRlZENsYXNzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IGNsYXp6OiBhbnkgPSB7IGNvbXBhY3Q6IHByb3BzLnRvb2xiYXIuY29tcGFjdCAhPT0gZmFsc2UgfTtcbiAgICBpZiAocHJvcHMuY3VzdG9tQ2xhc3MpIHtcbiAgICAgIGNsYXp6W3Byb3BzLmN1c3RvbUNsYXNzXSA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBjbGF6ejtcbiAgfSk7XG5cbiAgY29uc3QgaW5uZXJXcmFwcGVyUmVmID0gcmVmKCk7XG5cbiAgY29uc3QgaXNGb3JtSW5uZXIgPSByZWYoZmFsc2UpO1xuICBjb25zdCBvbkZvcm1Jbm5lckNoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgaXNGb3JtSW5uZXIudmFsdWUgPSB2YWx1ZTtcbiAgfTtcblxuICByZXR1cm4ge1xuICAgIHRhYmxlUmVmLFxuICAgIGNvbnRhaW5lclJlZixcbiAgICB0b29sYmFyUmVmLFxuICAgIGNvbXB1dGVkVGFibGUsXG4gICAgY29tcHV0ZWRUb29sYmFyLFxuICAgIGNvbXB1dGVkQ2VsbFNsb3RzLFxuICAgIGZvcm1XcmFwcGVyUmVmLFxuICAgIGlzRm9ybUlubmVyLFxuICAgIG9uRm9ybUlubmVyQ2hhbmdlLFxuICAgIGNvbXB1dGVkRm9ybVNsb3RzLFxuICAgIGNvbXB1dGVkU2VhcmNoU2xvdHMsXG4gICAgY29tcHV0ZWRUb29sYmFyU2xvdHMsXG4gICAgY29tcHV0ZUJvZHlIZWlnaHQsXG4gICAgY29tcHV0ZWRDbGFzcyxcbiAgICBpbm5lcldyYXBwZXJSZWZcbiAgfTtcbn1cblxuLyoqXG4gKiBmcy1jcnVkXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNDcnVkXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog6KGo5qC8aWRcbiAgICAgKi9cbiAgICBpZDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5qC86YWN572u77yM6KeBRnNUYWJsZVxuICAgICAqL1xuICAgIHRhYmxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajmoLzmlbDmja5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL3JlcXVpcmUtZGVmYXVsdC1wcm9wXG4gICAgZGF0YToge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWIl+mFjee9ru+8jOingUZzUm93SGFuZGxlXG4gICAgICovXG4gICAgcm93SGFuZGxlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LmoYbphY3nva7vvIzop4FGc1NlYXJjaFxuICAgICAqL1xuICAgIHNlYXJjaDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bel5YW35p2h6YWN572u77yM6KeBRnNUb29sYmFyXG4gICAgICovXG4gICAgdG9vbGJhcjoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5Yqo5L2c5p2h6YWN572u77yM6KeBRnNBY3Rpb25iYXJcbiAgICAgKi9cbiAgICBhY3Rpb25iYXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIHRhYnMgZmlsdGVyXG4gICAgICovXG4gICAgdGFiczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5re75Yqg6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxuICAgICAqL1xuICAgIGFkZEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOe8lui+keihqOWNleWvueivneahhumFjee9ru+8jOingUZzRm9ybVdyYXBwZXJcbiAgICAgKi9cbiAgICBlZGl0Rm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l55yL6KGo5Y2V5a+56K+d5qGG6YWN572u77yM6KeBRnNGb3JtV3JhcHBlclxuICAgICAqL1xuICAgIHZpZXdGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDnv7vpobXphY3nva4s5pSv5oyBZWwtcGFnaW5hdGlvbnxhLXBhZ2luYXRpb27phY3nva5cbiAgICAgKi9cbiAgICBwYWdpbmF0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5a655Zmo6YWN572u77yM6KeBRnNDb250YWluZXJcbiAgICAgKi9cbiAgICBjb250YWluZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogY3J1ZOWMheijueWuueWZqOeahGNsYXNzXG4gICAgICovXG4gICAgY3VzdG9tQ2xhc3M6IHt9LFxuICAgIC8qKlxuICAgICAqIOS4jeimgeS8oOWIsGZzLXRhYmxl5Y67XG4gICAgICovXG4gICAgZm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDlj6/pgInmi6lcbiAgICAgKi9cbiAgICBzZWxlY3Rpb246IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxSb3dTZWxlY3Rpb25Qcm9wcz4sXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4geyBzaG93OiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTpzZWFyY2hcIiwgXCJ1cGRhdGU6Y29tcGFjdFwiLCBcInVwZGF0ZTpjb2x1bW5zXCIsIFwiZm9ybS12YWx1ZS1jaGFuZ2VcIiwgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcInRhYi1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICB1c2VQcm92aWRlcnMocHJvcHMsIGN0eCk7XG4gICAgY29uc3Qgc2VhcmNoID0gdXNlU2VhcmNoKHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHRhYnMgPSB1c2VUYWJzKHNlYXJjaCwgcHJvcHMsIGN0eCk7XG4gICAgY29uc3QgdGFibGUgPSB1c2VUYWJsZShwcm9wcywgY3R4KTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICAuLi5zZWFyY2gsXG4gICAgICAuLi50YWJsZSxcbiAgICAgIC4uLnRhYnNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4vL+S9nOS4uuaVsOaNruihqOagvOS9v+eUqOeahOmihOiuvuagt+W8j++8jOmakOiXj2Zvb3Rlcu+8jOihqOagvOmrmOW6pueijuiusOW9leaVsOWinuWKoOiAjOWinuWKoFxuLmZzLWNydWQtYXMtdGFibGUge1xuICBtaW4taGVpZ2h0OiAwICFpbXBvcnRhbnQ7XG4gIGhlaWdodDogdW5zZXQ7XG5cbiAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG5cbiAgLmJveCAuaW5uZXIge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbn1cblxuLmZzLWNydWQtY29udGFpbmVyIHtcbiAgbWluLWhlaWdodDogMzAwcHg7XG5cbiAgJi5jb21wYWN0IHtcbiAgICAuZWwtdGFibGUtLWJvcmRlciB7XG4gICAgICBib3JkZXItbGVmdDogMDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1oZWFkZXIge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1mb290ZXIge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxMHB4O1xuICAgICAgcGFkZGluZy1yaWdodDogMTBweDtcbiAgICB9XG4gIH1cblxuICAuZnMtY3J1ZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZzogMTBweCAwO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcblxuICAgIC5mcy1oZWFkZXItdG9wIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1jcnVkLXNlYXJjaCB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGdyaWQtY29sdW1uOiBzcGFuIDI7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogNXB4O1xuICAgIH1cblxuICAgIC5mcy1oZWFkZXItbWlkZGxlIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1oZWFkZXItYm90dG9tIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mcy1jcnVkLWFjdGlvbmJhciB7XG4gICAgICAvLyBwYWRkaW5nLXRvcDogNXB4O1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXg6IDEwMDAwO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIG1pbi13aWR0aDogMXB4O1xuICAgIH1cblxuICAgIC5mcy1jcnVkLXRvb2xiYXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgZmxleDogMTtcbiAgICB9XG4gIH1cblxuICAuZnMtY3J1ZC10YWJsZSB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLmZzLWNydWQtZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAxMHB4IDA7XG5cbiAgICAuZnMtY3J1ZC1wYWdpbmF0aW9uIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1sZWZ0IHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgfVxuXG4gICAgICAuZnMtcGFnaW5hdGlvbi1yaWdodCB7XG4gICAgICAgIGZsZXg6IDA7XG4gICAgICB9XG5cbiAgICAgIC5mcy1wYWdpbmF0aW9uIHtcbiAgICAgICAgZmxleDogMTtcblxuICAgICAgICAuYW50LXBhZ2luYXRpb24tb3B0aW9ucyB7XG4gICAgICAgICAgLmFudC1zZWxlY3Qge1xuICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmVsLXBhZ2luYXRpb24ge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mcy1wYWdpbmF0aW9uLXJpZ2h0IHtcbiAgICAgICAgZmxleDogMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gIC5mcy1jcnVkLWNvbnRhaW5lciB7XG4gICAgLmJvZHkge1xuICAgICAgb3ZlcmZsb3cteTogdW5zZXQgIWltcG9ydGFudDtcbiAgICB9XG4gICAgLmFudC10YWJsZS1ib2R5IHtcbiAgICAgIG1heC1oZWlnaHQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICAgIG92ZXJmbG93OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLm4tZGF0YS10YWJsZS1iYXNlLXRhYmxlLWJvZHkge1xuICAgICAgbWF4LWhlaWdodDogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgb3ZlcmZsb3c6IGF1dG8gIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuZnMtY3J1ZC1oZWFkZXIgLmZzLWNydWQtYWN0aW9uYmFyIHtcbiAgICAgIGZsZXg6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICBtYXJnaW4tYm90dG9tOiAycHg7XG4gICAgfVxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtcm93LWhhbmRsZVwiPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1sZWZ0XCIgdi1iaW5kPVwic2NvcGVSZWZcIj48L3Nsb3Q+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBjb21wdXRlZEhhbmRsZUJ0bnNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZSAmJiAhaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleClcIj5cbiAgICAgICAgPGZzLXJlbmRlciB2LWlmPVwiaXRlbS5yZW5kZXJcIiA6cmVuZGVyLWZ1bmM9XCJpdGVtLnJlbmRlclwiIDpzY29wZT1cInNjb3BlUmVmXCIgLz5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2UgY2xhc3M9XCJyb3ctaGFuZGxlLWJ0blwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2suc3RvcD1cImRvQ2xpY2soaXRlbSlcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1taWRkbGVcIiB2LWJpbmQ9XCJzY29wZVwiPjwvc2xvdD5cbiAgICA8IS0tIOS4i+aLieaMiemSruiPnOWNlSAtLT5cbiAgICA8c3BhbiB2LWlmPVwiaGFzRHJvcGRvd25CdG5cIiBjbGFzcz1cInJvdy1oYW5kbGUtYnRuIGZzLWhhbmRsZS1yb3ctZHJvcGRvd25cIj5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZHJvcGRvd24ubmFtZVwiIHYtYmluZD1cImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXCI+XG4gICAgICAgIDxmcy1idXR0b24gdi1iaW5kPVwiZHJvcGRvd24ubW9yZVwiIC8+XG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLmRyb3Bkb3duLnNsb3ROYW1lXT5cbiAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICA6aXM9XCJ1aS5kcm9wZG93bk1lbnUubmFtZVwiXG4gICAgICAgICAgICB2LWlmPVwidWkuZHJvcGRvd24ucmVuZGVyTW9kZSA9PT0gJ3Nsb3QnXCJcbiAgICAgICAgICAgIHYtYmluZD1cInVpLmRyb3Bkb3duTWVudS5jb21tYW5kKGRvRHJvcGRvd25JdGVtQ2xpY2spXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkSGFuZGxlQnRuc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICAgICAgOmlzPVwidWkuZHJvcGRvd25JdGVtLm5hbWVcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlICYmIGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpXCJcbiAgICAgICAgICAgICAgICA6W3VpLmRyb3Bkb3duSXRlbS5jb21tYW5kXT1cIml0ZW0ua2V5XCJcbiAgICAgICAgICAgICAgICB2LWJpbmQ9XCJpdGVtLmRyb3Bkb3duSXRlbVwiXG4gICAgICAgICAgICAgICAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtcm93LWhhbmRsZS1kcm9wZG93bi1pdGVtXCIgdi1iaW5kPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gdi1pZj1cIml0ZW0uaWNvblwiIDppY29uPVwiaXRlbS5pY29uXCIgLz4ge3sgaXRlbS50ZXh0IHx8IGl0ZW0udGl0bGUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9zcGFuPlxuICAgIDxzbG90IG5hbWU9XCJjZWxsLXJvd0hhbmRsZS1yaWdodFwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2gsIHNvcnRCeSwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgU2NvcGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuXG4vKipcbiAqIOaTjeS9nOWIl+mFjee9rlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzUm93SGFuZGxlXCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5oyJ6ZKu5oqY5Y+g6YWN572uXG4gICAgICovXG4gICAgZHJvcGRvd246IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uXG4gICAgICoge1xuICAgICAqICAgdmlldzp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6MX0sXG4gICAgICogICBlZGl0OnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjoyfSxcbiAgICAgKiAgIHJlbW92ZTp7Li4uRnNCdXR0b24sY2xpY2s6RnVuY3Rpb24sb3JkZXI6M30sXG4gICAgICogICAuLi7oh6rlrprkuYlcbiAgICAgKiB9XG4gICAgICovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7liIbnu4Qs5LiK6Z2i55qEYnV0dG9uc+S4uum7mOiupOWIhue7hFxuICAgICAqICB7XG4gICAgICogICAgZ3JvdXBLZXk6e2J1dHRvbktleTp7fSxidXR0b25LZXkyOnt9fVxuICAgICAqICB9XG4gICAgICovXG4gICAgZ3JvdXA6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2T5YmN5r+A5rS75YiG57uEXG4gICAgICovXG4gICAgYWN0aXZlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcImRlZmF1bHRcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICogc2NvcGVcbiAgICAgKi9cbiAgICBzY29wZToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBlbWl0czogW1wiaGFuZGxlXCJdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG5cbiAgICBjb25zdCBzY29wZVJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByb3BzLnNjb3BlLFxuICAgICAgICByb3c6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLnJvd10sXG4gICAgICAgIGluZGV4OiBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF1cbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgZG9DbGljayA9IChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGluZGV4ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4uaW5kZXhdO1xuICAgICAgY29uc3Qgcm93ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XTtcbiAgICAgIGNvbnN0IGU6IFNjb3BlQ29udGV4dCA9IHsga2V5OiBpdGVtLmtleSwgcm93LCBidG46IGl0ZW0sIGluZGV4LCAuLi5wcm9wcy5zY29wZSB9O1xuICAgICAgaWYgKGl0ZW0uY2xpY2spIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uY2xpY2soZSk7XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcImhhbmRsZVwiLCBlKTtcbiAgICB9O1xuICAgIGNvbnN0IHsgZG9Db21wdXRlZCB9ID0gdXNlQ29tcHV0ZSgpO1xuICAgIGNvbnN0IHBpY2tlZFByb3BzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZHJvcGRvd246IHByb3BzLmRyb3Bkb3duLFxuICAgICAgICBidXR0b25zOiBwcm9wcy5idXR0b25zLFxuICAgICAgICBhY3RpdmU6IHByb3BzLmFjdGl2ZSxcbiAgICAgICAgZ3JvdXA6IHByb3BzLmdyb3VwXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVQcm9wcyA9IGRvQ29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwaWNrZWRQcm9wcy52YWx1ZTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4uaW5kZXhdO1xuICAgICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xuICAgICAgICByZXR1cm4geyAuLi5wcm9wcy5zY29wZSwgaW5kZXgsIHJvdyB9O1xuICAgICAgfVxuICAgICk7XG5cbiAgICAvL2NvbnN0IGNvbXB1dGVQcm9wcyA9IHsgdmFsdWU6IHByb3BzIH07XG4gICAgY29uc3QgY29tcHV0ZWRIYW5kbGVCdG5zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgbGV0IG1lcmdlZEJ0bnMgPSBudWxsO1xuICAgICAgaWYgKGNvbXB1dGVQcm9wcy52YWx1ZS5hY3RpdmUgPT0gbnVsbCB8fCBjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICBjb25zdCBkZWZCdG5zID0ge1xuICAgICAgICAgIHZpZXc6IHtcbiAgICAgICAgICAgIGtleTogXCJ2aWV3XCIsXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnZpZXcudGV4dFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29weToge1xuICAgICAgICAgICAga2V5OiBcImNvcHlcIixcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpLFxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUuY29weS50ZXh0XCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBlZGl0OiB7XG4gICAgICAgICAgICBrZXk6IFwiZWRpdFwiLFxuICAgICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLmVkaXQudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLmVkaXQudGV4dFwiKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVtb3ZlOiB7XG4gICAgICAgICAgICBrZXk6IFwicmVtb3ZlXCIsXG4gICAgICAgICAgICAuLi51aS5idXR0b24uY29sb3JzKFwiZGFuZ2VyXCIpLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS5yZW1vdmUudGV4dFwiKSxcbiAgICAgICAgICAgIHRpdGxlOiB0KFwiZnMucm93SGFuZGxlLnJlbW92ZS50ZXh0XCIpXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBtZXJnZWRCdG5zID0gbWVyZ2UoZGVmQnRucywgY29tcHV0ZVByb3BzLnZhbHVlLmJ1dHRvbnMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVyZ2VkQnRucyA9IGNvbXB1dGVQcm9wcy52YWx1ZS5ncm91cFtjb21wdXRlUHJvcHMudmFsdWUuYWN0aXZlXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgYnRuczogQnV0dG9uUHJvcHNbXSA9IFtdO1xuICAgICAgZm9yRWFjaChtZXJnZWRCdG5zLCAoaXRlbSwga2V5KSA9PiB7XG4gICAgICAgIGl0ZW0ua2V5ID0ga2V5O1xuICAgICAgICBpZiAoaXRlbS5zaG93ID09PSBmYWxzZSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBidG5zLnB1c2goaXRlbSk7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHNvcnRCeShidG5zLCAoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb21wdXRlZERyb3Bkb3duQXRMZWFzdCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duID09IG51bGwgfHxcbiAgICAgICAgY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3QgPT0gbnVsbCB8fFxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCA8PSAwIHx8XG4gICAgICAgIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZS5sZW5ndGggPD0gY29tcHV0ZVByb3BzLnZhbHVlLmRyb3Bkb3duLmF0TGVhc3RcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCB8fCAwO1xuICAgIH0pO1xuICAgIGZ1bmN0aW9uIGlzRHJvcGRvd25CdG4oaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSB7XG4gICAgICBpZiAoaXRlbS5kcm9wZG93biA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjb21wdXRlZERyb3Bkb3duQXRMZWFzdC52YWx1ZSA+IDAgJiYgY29tcHV0ZWREcm9wZG93bkF0TGVhc3QudmFsdWUgPCBpbmRleCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgaGFzRHJvcGRvd25CdG4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgaW5kZXggPSAwO1xuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZSkge1xuICAgICAgICBjb25zdCBpcyA9IGlzRHJvcGRvd25CdG4oaXRlbSwgaW5kZXgpO1xuICAgICAgICBpZiAoaXMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBpbmRleCsrO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZG9Ecm9wZG93bkl0ZW1DbGljaygkZXZlbnQ6IGFueSkge1xuICAgICAgZm9yIChsZXQgYnRuIG9mIGNvbXB1dGVkSGFuZGxlQnRucy52YWx1ZSkge1xuICAgICAgICBpZiAoJGV2ZW50ID09PSBidG4ua2V5KSB7XG4gICAgICAgICAgZG9DbGljayhidG4pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgYmluZGluZzogYW55ID0ge307XG4gICAgICBpZiAodWkuZHJvcGRvd24ucmVuZGVyTW9kZSAhPT0gXCJzbG90XCIpIHtcbiAgICAgICAgLy8gbmFpdmUg6YCa6L+Hb3B0aW9uc+mFjee9ruadpeaYvuekuuWtkOmhuVxuICAgICAgICBjb25zdCBidG5zID0gY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlO1xuICAgICAgICBjb25zdCBvcHRzOiBCdXR0b25Qcm9wc1tdID0gW107XG4gICAgICAgIGZvckVhY2goYnRucywgKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGlmICh2YWx1ZS5zaG93ICE9PSBmYWxzZSAmJiBpc0Ryb3Bkb3duQnRuKHZhbHVlLCBpbmRleCkpIHtcbiAgICAgICAgICAgIG9wdHMucHVzaCh7XG4gICAgICAgICAgICAgIFt1aS5kcm9wZG93bi52YWx1ZV06IHZhbHVlLmtleSxcbiAgICAgICAgICAgICAgW3VpLmRyb3Bkb3duLmxhYmVsXTogdmFsdWUudGV4dCxcbiAgICAgICAgICAgICAgdGl0bGU6IHZhbHVlLnRpdGxlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBiaW5kaW5nLm9wdGlvbnMgPSBvcHRzO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ub21pdChwcm9wcy5kcm9wZG93biwgXCJtb3JlXCIsIFwiYXRMZWFzdFwiKSxcbiAgICAgICAgLi4udWkuZHJvcGRvd24uY29tbWFuZChkb0Ryb3Bkb3duSXRlbUNsaWNrKSxcbiAgICAgICAgLi4uYmluZGluZ1xuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGhhc0Ryb3Bkb3duQnRuLFxuICAgICAgY29tcHV0ZWRIYW5kbGVCdG5zLFxuICAgICAgZG9Ecm9wZG93bkl0ZW1DbGljayxcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LFxuICAgICAgZG9DbGljayxcbiAgICAgIGlzRHJvcGRvd25CdG4sXG4gICAgICBzY29wZVJlZixcbiAgICAgIGNvbXB1dGVkRHJvcGRvd25CaW5kaW5nXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtcm93LWhhbmRsZSB7XG4gIC8vIGRpc3BsYXk6IGZsZXggOyAvLyDov5nph4zkuI3og73nlKhmbGV477yM5ZCm5YiZ5Lya56C05Z2PYWxpZ246Y2VudGVy6YWN572uXG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5lbC1idXR0b24gKyAuZWwtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogMnB4O1xuICB9XG4gICYgPiAqIHtcbiAgICBtYXJnaW46IDJweDtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB9XG4gIC5mcy1yb3ctaGFuZGxlLWRyb3Bkb3duLWl0ZW0ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gIH1cblxuICAubi1idXR0b24ge1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWFyZ2luOiAycHg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1yb3ctaGFuZGxlXCI+XG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLWxlZnRcIiB2LWJpbmQ9XCJzY29wZVJlZlwiPjwvc2xvdD5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkSGFuZGxlQnRuc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlICYmICFpc0Ryb3Bkb3duQnRuKGl0ZW0sIGluZGV4KVwiPlxuICAgICAgICA8ZnMtcmVuZGVyIHYtaWY9XCJpdGVtLnJlbmRlclwiIDpyZW5kZXItZnVuYz1cIml0ZW0ucmVuZGVyXCIgOnNjb3BlPVwic2NvcGVSZWZcIiAvPlxuICAgICAgICA8ZnMtYnV0dG9uIHYtZWxzZSBjbGFzcz1cInJvdy1oYW5kbGUtYnRuXCIgdi1iaW5kPVwiaXRlbVwiIEBjbGljay5zdG9wPVwiZG9DbGljayhpdGVtKVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLW1pZGRsZVwiIHYtYmluZD1cInNjb3BlXCI+PC9zbG90PlxuICAgIDwhLS0g5LiL5ouJ5oyJ6ZKu6I+c5Y2VIC0tPlxuICAgIDxzcGFuIHYtaWY9XCJoYXNEcm9wZG93bkJ0blwiIGNsYXNzPVwicm93LWhhbmRsZS1idG4gZnMtaGFuZGxlLXJvdy1kcm9wZG93blwiPlxuICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kcm9wZG93bi5uYW1lXCIgdi1iaW5kPVwiY29tcHV0ZWREcm9wZG93bkJpbmRpbmdcIj5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWJpbmQ9XCJkcm9wZG93bi5tb3JlXCIgLz5cbiAgICAgICAgPHRlbXBsYXRlICNbdWkuZHJvcGRvd24uc2xvdE5hbWVdPlxuICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgIDppcz1cInVpLmRyb3Bkb3duTWVudS5uYW1lXCJcbiAgICAgICAgICAgIHYtaWY9XCJ1aS5kcm9wZG93bi5yZW5kZXJNb2RlID09PSAnc2xvdCdcIlxuICAgICAgICAgICAgdi1iaW5kPVwidWkuZHJvcGRvd25NZW51LmNvbW1hbmQoZG9Ecm9wZG93bkl0ZW1DbGljaylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRIYW5kbGVCdG5zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgICA6aXM9XCJ1aS5kcm9wZG93bkl0ZW0ubmFtZVwiXG4gICAgICAgICAgICAgICAgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2UgJiYgaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleClcIlxuICAgICAgICAgICAgICAgIDpbdWkuZHJvcGRvd25JdGVtLmNvbW1hbmRdPVwiaXRlbS5rZXlcIlxuICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uZHJvcGRvd25JdGVtXCJcbiAgICAgICAgICAgICAgICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1yb3ctaGFuZGxlLWRyb3Bkb3duLWl0ZW1cIiB2LWJpbmQ9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICA8ZnMtaWNvbiB2LWlmPVwiaXRlbS5pY29uXCIgOmljb249XCJpdGVtLmljb25cIiAvPiB7eyBpdGVtLnRleHQgfHwgaXRlbS50aXRsZSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L3NwYW4+XG4gICAgPHNsb3QgbmFtZT1cImNlbGwtcm93SGFuZGxlLXJpZ2h0XCIgdi1iaW5kPVwic2NvcGVcIj48L3Nsb3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZm9yRWFjaCwgc29ydEJ5LCBvbWl0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBTY29wZUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5pON5L2c5YiX6YWN572uXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNSb3dIYW5kbGVcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7mipjlj6DphY3nva5cbiAgICAgKi9cbiAgICBkcm9wZG93bjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKiB7XG4gICAgICogICB2aWV3OnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjoxfSxcbiAgICAgKiAgIGVkaXQ6ey4uLkZzQnV0dG9uLGNsaWNrOkZ1bmN0aW9uLG9yZGVyOjJ9LFxuICAgICAqICAgcmVtb3ZlOnsuLi5Gc0J1dHRvbixjbGljazpGdW5jdGlvbixvcmRlcjozfSxcbiAgICAgKiAgIC4uLuiHquWumuS5iVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMiemSruWIhue7hCzkuIrpnaLnmoRidXR0b25z5Li66buY6K6k5YiG57uEXG4gICAgICogIHtcbiAgICAgKiAgICBncm91cEtleTp7YnV0dG9uS2V5Ont9LGJ1dHRvbktleTI6e319XG4gICAgICogIH1cbiAgICAgKi9cbiAgICBncm91cDoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlvZPliY3mv4DmtLvliIbnu4RcbiAgICAgKi9cbiAgICBhY3RpdmU6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwiZGVmYXVsdFwiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBzY29wZVxuICAgICAqL1xuICAgIHNjb3BlOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0OiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJoYW5kbGVcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcblxuICAgIGNvbnN0IHNjb3BlUmVmID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJvcHMuc2NvcGUsXG4gICAgICAgIHJvdzogcHJvcHMuc2NvcGVbdWkudGFibGVDb2x1bW4ucm93XSxcbiAgICAgICAgaW5kZXg6IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLmluZGV4XVxuICAgICAgfTtcbiAgICB9KTtcbiAgICBjb25zdCBkb0NsaWNrID0gKGl0ZW06IGFueSkgPT4ge1xuICAgICAgY29uc3QgaW5kZXggPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF07XG4gICAgICBjb25zdCByb3cgPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5yb3ddO1xuICAgICAgY29uc3QgZTogU2NvcGVDb250ZXh0ID0geyBrZXk6IGl0ZW0ua2V5LCByb3csIGJ0bjogaXRlbSwgaW5kZXgsIC4uLnByb3BzLnNjb3BlIH07XG4gICAgICBpZiAoaXRlbS5jbGljaykge1xuICAgICAgICByZXR1cm4gaXRlbS5jbGljayhlKTtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwiaGFuZGxlXCIsIGUpO1xuICAgIH07XG4gICAgY29uc3QgeyBkb0NvbXB1dGVkIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgY29uc3QgcGlja2VkUHJvcHMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkcm9wZG93bjogcHJvcHMuZHJvcGRvd24sXG4gICAgICAgIGJ1dHRvbnM6IHByb3BzLmJ1dHRvbnMsXG4gICAgICAgIGFjdGl2ZTogcHJvcHMuYWN0aXZlLFxuICAgICAgICBncm91cDogcHJvcHMuZ3JvdXBcbiAgICAgIH07XG4gICAgfSk7XG4gICAgY29uc3QgY29tcHV0ZVByb3BzID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHBpY2tlZFByb3BzLnZhbHVlO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBwcm9wcy5zY29wZVt1aS50YWJsZUNvbHVtbi5pbmRleF07XG4gICAgICAgIGNvbnN0IHJvdyA9IHByb3BzLnNjb3BlW3VpLnRhYmxlQ29sdW1uLnJvd107XG4gICAgICAgIHJldHVybiB7IC4uLnByb3BzLnNjb3BlLCBpbmRleCwgcm93IH07XG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vY29uc3QgY29tcHV0ZVByb3BzID0geyB2YWx1ZTogcHJvcHMgfTtcbiAgICBjb25zdCBjb21wdXRlZEhhbmRsZUJ0bnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgbWVyZ2VkQnRucyA9IG51bGw7XG4gICAgICBpZiAoY29tcHV0ZVByb3BzLnZhbHVlLmFjdGl2ZSA9PSBudWxsIHx8IGNvbXB1dGVQcm9wcy52YWx1ZS5hY3RpdmUgPT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgIGNvbnN0IGRlZkJ0bnMgPSB7XG4gICAgICAgICAgdmlldzoge1xuICAgICAgICAgICAga2V5OiBcInZpZXdcIixcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUudmlldy50ZXh0XCIpLFxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUudmlldy50ZXh0XCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb3B5OiB7XG4gICAgICAgICAgICBrZXk6IFwiY29weVwiLFxuICAgICAgICAgICAgdGV4dDogdChcImZzLnJvd0hhbmRsZS5jb3B5LnRleHRcIiksXG4gICAgICAgICAgICB0aXRsZTogdChcImZzLnJvd0hhbmRsZS5jb3B5LnRleHRcIilcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVkaXQ6IHtcbiAgICAgICAgICAgIGtleTogXCJlZGl0XCIsXG4gICAgICAgICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5yb3dIYW5kbGUuZWRpdC50ZXh0XCIpLFxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUuZWRpdC50ZXh0XCIpXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZW1vdmU6IHtcbiAgICAgICAgICAgIGtleTogXCJyZW1vdmVcIixcbiAgICAgICAgICAgIC4uLnVpLmJ1dHRvbi5jb2xvcnMoXCJkYW5nZXJcIiksXG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMucm93SGFuZGxlLnJlbW92ZS50ZXh0XCIpLFxuICAgICAgICAgICAgdGl0bGU6IHQoXCJmcy5yb3dIYW5kbGUucmVtb3ZlLnRleHRcIilcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIG1lcmdlZEJ0bnMgPSBtZXJnZShkZWZCdG5zLCBjb21wdXRlUHJvcHMudmFsdWUuYnV0dG9ucyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXJnZWRCdG5zID0gY29tcHV0ZVByb3BzLnZhbHVlLmdyb3VwW2NvbXB1dGVQcm9wcy52YWx1ZS5hY3RpdmVdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBidG5zOiBCdXR0b25Qcm9wc1tdID0gW107XG4gICAgICBmb3JFYWNoKG1lcmdlZEJ0bnMsIChpdGVtLCBrZXkpID0+IHtcbiAgICAgICAgaXRlbS5rZXkgPSBrZXk7XG4gICAgICAgIGlmIChpdGVtLnNob3cgPT09IGZhbHNlKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGJ0bnMucHVzaChpdGVtKTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gc29ydEJ5KGJ0bnMsIChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkRHJvcGRvd25BdExlYXN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24gPT0gbnVsbCB8fFxuICAgICAgICBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdCA9PSBudWxsIHx8XG4gICAgICAgIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0IDw9IDAgfHxcbiAgICAgICAgY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlLmxlbmd0aCA8PSBjb21wdXRlUHJvcHMudmFsdWUuZHJvcGRvd24uYXRMZWFzdFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbXB1dGVQcm9wcy52YWx1ZS5kcm9wZG93bi5hdExlYXN0IHx8IDA7XG4gICAgfSk7XG4gICAgZnVuY3Rpb24gaXNEcm9wZG93bkJ0bihpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpIHtcbiAgICAgIGlmIChpdGVtLmRyb3Bkb3duID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNvbXB1dGVkRHJvcGRvd25BdExlYXN0LnZhbHVlID4gMCAmJiBjb21wdXRlZERyb3Bkb3duQXRMZWFzdC52YWx1ZSA8IGluZGV4KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBoYXNEcm9wZG93bkJ0biA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGxldCBpbmRleCA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGlzID0gaXNEcm9wZG93bkJ0bihpdGVtLCBpbmRleCk7XG4gICAgICAgIGlmIChpcykge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGluZGV4Kys7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBkb0Ryb3Bkb3duSXRlbUNsaWNrKCRldmVudDogYW55KSB7XG4gICAgICBmb3IgKGxldCBidG4gb2YgY29tcHV0ZWRIYW5kbGVCdG5zLnZhbHVlKSB7XG4gICAgICAgIGlmICgkZXZlbnQgPT09IGJ0bi5rZXkpIHtcbiAgICAgICAgICBkb0NsaWNrKGJ0bik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWREcm9wZG93bkJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBiaW5kaW5nOiBhbnkgPSB7fTtcbiAgICAgIGlmICh1aS5kcm9wZG93bi5yZW5kZXJNb2RlICE9PSBcInNsb3RcIikge1xuICAgICAgICAvLyBuYWl2ZSDpgJrov4dvcHRpb25z6YWN572u5p2l5pi+56S65a2Q6aG5XG4gICAgICAgIGNvbnN0IGJ0bnMgPSBjb21wdXRlZEhhbmRsZUJ0bnMudmFsdWU7XG4gICAgICAgIGNvbnN0IG9wdHM6IEJ1dHRvblByb3BzW10gPSBbXTtcbiAgICAgICAgZm9yRWFjaChidG5zLCAodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICAgICAgaWYgKHZhbHVlLnNob3cgIT09IGZhbHNlICYmIGlzRHJvcGRvd25CdG4odmFsdWUsIGluZGV4KSkge1xuICAgICAgICAgICAgb3B0cy5wdXNoKHtcbiAgICAgICAgICAgICAgW3VpLmRyb3Bkb3duLnZhbHVlXTogdmFsdWUua2V5LFxuICAgICAgICAgICAgICBbdWkuZHJvcGRvd24ubGFiZWxdOiB2YWx1ZS50ZXh0LFxuICAgICAgICAgICAgICB0aXRsZTogdmFsdWUudGl0bGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGJpbmRpbmcub3B0aW9ucyA9IG9wdHM7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5vbWl0KHByb3BzLmRyb3Bkb3duLCBcIm1vcmVcIiwgXCJhdExlYXN0XCIpLFxuICAgICAgICAuLi51aS5kcm9wZG93bi5jb21tYW5kKGRvRHJvcGRvd25JdGVtQ2xpY2spLFxuICAgICAgICAuLi5iaW5kaW5nXG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgaGFzRHJvcGRvd25CdG4sXG4gICAgICBjb21wdXRlZEhhbmRsZUJ0bnMsXG4gICAgICBkb0Ryb3Bkb3duSXRlbUNsaWNrLFxuICAgICAgY29tcHV0ZWREcm9wZG93bkF0TGVhc3QsXG4gICAgICBkb0NsaWNrLFxuICAgICAgaXNEcm9wZG93bkJ0bixcbiAgICAgIHNjb3BlUmVmLFxuICAgICAgY29tcHV0ZWREcm9wZG93bkJpbmRpbmdcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1yb3ctaGFuZGxlIHtcbiAgLy8gZGlzcGxheTogZmxleCA7IC8vIOi/memHjOS4jeiDveeUqGZsZXjvvIzlkKbliJnkvJrnoLTlnY9hbGlnbjpjZW50ZXLphY3nva5cbiAgZmxleC13cmFwOiB3cmFwO1xuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgLmVsLWJ1dHRvbiArIC5lbC1idXR0b24ge1xuICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gIH1cbiAgJiA+ICoge1xuICAgIG1hcmdpbjogMnB4O1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cbiAgLmZzLXJvdy1oYW5kbGUtZHJvcGRvd24taXRlbSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5uLWJ1dHRvbiB7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtYXJnaW46IDJweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsImZ1bmN0aW9uIF9leHRlbmRzKCkge1xuICBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn1cblxuZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzLnByb3RvdHlwZSk7XG4gIHN1YkNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IHN1YkNsYXNzO1xuXG4gIF9zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcyk7XG59XG5cbmZ1bmN0aW9uIF9nZXRQcm90b3R5cGVPZihvKSB7XG4gIF9nZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5nZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfZ2V0UHJvdG90eXBlT2Yobykge1xuICAgIHJldHVybiBvLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2Yobyk7XG4gIH07XG4gIHJldHVybiBfZ2V0UHJvdG90eXBlT2Yobyk7XG59XG5cbmZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gIF9zZXRQcm90b3R5cGVPZiA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZi5iaW5kKCkgOiBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICAgIG8uX19wcm90b19fID0gcDtcbiAgICByZXR1cm4gbztcbiAgfTtcbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxuZnVuY3Rpb24gX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpIHtcbiAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcInVuZGVmaW5lZFwiIHx8ICFSZWZsZWN0LmNvbnN0cnVjdCkgcmV0dXJuIGZhbHNlO1xuICBpZiAoUmVmbGVjdC5jb25zdHJ1Y3Quc2hhbSkgcmV0dXJuIGZhbHNlO1xuICBpZiAodHlwZW9mIFByb3h5ID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0cnVlO1xuXG4gIHRyeSB7XG4gICAgQm9vbGVhbi5wcm90b3R5cGUudmFsdWVPZi5jYWxsKFJlZmxlY3QuY29uc3RydWN0KEJvb2xlYW4sIFtdLCBmdW5jdGlvbiAoKSB7fSkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9jb25zdHJ1Y3QoUGFyZW50LCBhcmdzLCBDbGFzcykge1xuICBpZiAoX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCgpKSB7XG4gICAgX2NvbnN0cnVjdCA9IFJlZmxlY3QuY29uc3RydWN0LmJpbmQoKTtcbiAgfSBlbHNlIHtcbiAgICBfY29uc3RydWN0ID0gZnVuY3Rpb24gX2NvbnN0cnVjdChQYXJlbnQsIGFyZ3MsIENsYXNzKSB7XG4gICAgICB2YXIgYSA9IFtudWxsXTtcbiAgICAgIGEucHVzaC5hcHBseShhLCBhcmdzKTtcbiAgICAgIHZhciBDb25zdHJ1Y3RvciA9IEZ1bmN0aW9uLmJpbmQuYXBwbHkoUGFyZW50LCBhKTtcbiAgICAgIHZhciBpbnN0YW5jZSA9IG5ldyBDb25zdHJ1Y3RvcigpO1xuICAgICAgaWYgKENsYXNzKSBfc2V0UHJvdG90eXBlT2YoaW5zdGFuY2UsIENsYXNzLnByb3RvdHlwZSk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfY29uc3RydWN0LmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG59XG5cbmZ1bmN0aW9uIF9pc05hdGl2ZUZ1bmN0aW9uKGZuKSB7XG4gIHJldHVybiBGdW5jdGlvbi50b1N0cmluZy5jYWxsKGZuKS5pbmRleE9mKFwiW25hdGl2ZSBjb2RlXVwiKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIF93cmFwTmF0aXZlU3VwZXIoQ2xhc3MpIHtcbiAgdmFyIF9jYWNoZSA9IHR5cGVvZiBNYXAgPT09IFwiZnVuY3Rpb25cIiA/IG5ldyBNYXAoKSA6IHVuZGVmaW5lZDtcblxuICBfd3JhcE5hdGl2ZVN1cGVyID0gZnVuY3Rpb24gX3dyYXBOYXRpdmVTdXBlcihDbGFzcykge1xuICAgIGlmIChDbGFzcyA9PT0gbnVsbCB8fCAhX2lzTmF0aXZlRnVuY3Rpb24oQ2xhc3MpKSByZXR1cm4gQ2xhc3M7XG5cbiAgICBpZiAodHlwZW9mIENsYXNzICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIF9jYWNoZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgaWYgKF9jYWNoZS5oYXMoQ2xhc3MpKSByZXR1cm4gX2NhY2hlLmdldChDbGFzcyk7XG5cbiAgICAgIF9jYWNoZS5zZXQoQ2xhc3MsIFdyYXBwZXIpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIFdyYXBwZXIoKSB7XG4gICAgICByZXR1cm4gX2NvbnN0cnVjdChDbGFzcywgYXJndW1lbnRzLCBfZ2V0UHJvdG90eXBlT2YodGhpcykuY29uc3RydWN0b3IpO1xuICAgIH1cblxuICAgIFdyYXBwZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShDbGFzcy5wcm90b3R5cGUsIHtcbiAgICAgIGNvbnN0cnVjdG9yOiB7XG4gICAgICAgIHZhbHVlOiBXcmFwcGVyLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBfc2V0UHJvdG90eXBlT2YoV3JhcHBlciwgQ2xhc3MpO1xuICB9O1xuXG4gIHJldHVybiBfd3JhcE5hdGl2ZVN1cGVyKENsYXNzKTtcbn1cblxuLyogZXNsaW50IG5vLWNvbnNvbGU6MCAqL1xudmFyIGZvcm1hdFJlZ0V4cCA9IC8lW3NkaiVdL2c7XG52YXIgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoKSB7fTsgLy8gZG9uJ3QgcHJpbnQgd2FybmluZyBtZXNzYWdlIHdoZW4gaW4gcHJvZHVjdGlvbiBlbnYgb3Igbm9kZSBydW50aW1lXG5cbmlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKHR5cGUsIGVycm9ycykge1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY29uc29sZS53YXJuICYmIHR5cGVvZiBBU1lOQ19WQUxJREFUT1JfTk9fV0FSTklORyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmIChlcnJvcnMuZXZlcnkoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBlID09PSAnc3RyaW5nJztcbiAgICAgIH0pKSB7XG4gICAgICAgIGNvbnNvbGUud2Fybih0eXBlLCBlcnJvcnMpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udmVydEZpZWxkc0Vycm9yKGVycm9ycykge1xuICBpZiAoIWVycm9ycyB8fCAhZXJyb3JzLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIHZhciBmaWVsZHMgPSB7fTtcbiAgZXJyb3JzLmZvckVhY2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgdmFyIGZpZWxkID0gZXJyb3IuZmllbGQ7XG4gICAgZmllbGRzW2ZpZWxkXSA9IGZpZWxkc1tmaWVsZF0gfHwgW107XG4gICAgZmllbGRzW2ZpZWxkXS5wdXNoKGVycm9yKTtcbiAgfSk7XG4gIHJldHVybiBmaWVsZHM7XG59XG5mdW5jdGlvbiBmb3JtYXQodGVtcGxhdGUpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgdmFyIGkgPSAwO1xuICB2YXIgbGVuID0gYXJncy5sZW5ndGg7XG5cbiAgaWYgKHR5cGVvZiB0ZW1wbGF0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiB0ZW1wbGF0ZS5hcHBseShudWxsLCBhcmdzKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgdmFyIHN0ciA9IHRlbXBsYXRlLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbiAoeCkge1xuICAgICAgaWYgKHggPT09ICclJScpIHtcbiAgICAgICAgcmV0dXJuICclJztcbiAgICAgIH1cblxuICAgICAgaWYgKGkgPj0gbGVuKSB7XG4gICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKHgpIHtcbiAgICAgICAgY2FzZSAnJXMnOlxuICAgICAgICAgIHJldHVybiBTdHJpbmcoYXJnc1tpKytdKTtcblxuICAgICAgICBjYXNlICclZCc6XG4gICAgICAgICAgcmV0dXJuIE51bWJlcihhcmdzW2krK10pO1xuXG4gICAgICAgIGNhc2UgJyVqJzpcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgICAgfSBjYXRjaCAoXykge1xuICAgICAgICAgICAgcmV0dXJuICdbQ2lyY3VsYXJdJztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiB4O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBzdHI7XG4gIH1cblxuICByZXR1cm4gdGVtcGxhdGU7XG59XG5cbmZ1bmN0aW9uIGlzTmF0aXZlU3RyaW5nVHlwZSh0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAndXJsJyB8fCB0eXBlID09PSAnaGV4JyB8fCB0eXBlID09PSAnZW1haWwnIHx8IHR5cGUgPT09ICdkYXRlJyB8fCB0eXBlID09PSAncGF0dGVybic7XG59XG5cbmZ1bmN0aW9uIGlzRW1wdHlWYWx1ZSh2YWx1ZSwgdHlwZSkge1xuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGUgPT09ICdhcnJheScgJiYgQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgIXZhbHVlLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGlzTmF0aXZlU3RyaW5nVHlwZSh0eXBlKSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICF2YWx1ZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBhc3luY1BhcmFsbGVsQXJyYXkoYXJyLCBmdW5jLCBjYWxsYmFjaykge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aDtcblxuICBmdW5jdGlvbiBjb3VudChlcnJvcnMpIHtcbiAgICByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgZXJyb3JzIHx8IFtdKTtcbiAgICB0b3RhbCsrO1xuXG4gICAgaWYgKHRvdGFsID09PSBhcnJMZW5ndGgpIHtcbiAgICAgIGNhbGxiYWNrKHJlc3VsdHMpO1xuICAgIH1cbiAgfVxuXG4gIGFyci5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7XG4gICAgZnVuYyhhLCBjb3VudCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhc3luY1NlcmlhbEFycmF5KGFyciwgZnVuYywgY2FsbGJhY2spIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGFyckxlbmd0aCA9IGFyci5sZW5ndGg7XG5cbiAgZnVuY3Rpb24gbmV4dChlcnJvcnMpIHtcbiAgICBpZiAoZXJyb3JzICYmIGVycm9ycy5sZW5ndGgpIHtcbiAgICAgIGNhbGxiYWNrKGVycm9ycyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG9yaWdpbmFsID0gaW5kZXg7XG4gICAgaW5kZXggPSBpbmRleCArIDE7XG5cbiAgICBpZiAob3JpZ2luYWwgPCBhcnJMZW5ndGgpIHtcbiAgICAgIGZ1bmMoYXJyW29yaWdpbmFsXSwgbmV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKFtdKTtcbiAgICB9XG4gIH1cblxuICBuZXh0KFtdKTtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk9iakFycihvYmpBcnIpIHtcbiAgdmFyIHJldCA9IFtdO1xuICBPYmplY3Qua2V5cyhvYmpBcnIpLmZvckVhY2goZnVuY3Rpb24gKGspIHtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIG9iakFycltrXSB8fCBbXSk7XG4gIH0pO1xuICByZXR1cm4gcmV0O1xufVxuXG52YXIgQXN5bmNWYWxpZGF0aW9uRXJyb3IgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9FcnJvcikge1xuICBfaW5oZXJpdHNMb29zZShBc3luY1ZhbGlkYXRpb25FcnJvciwgX0Vycm9yKTtcblxuICBmdW5jdGlvbiBBc3luY1ZhbGlkYXRpb25FcnJvcihlcnJvcnMsIGZpZWxkcykge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX0Vycm9yLmNhbGwodGhpcywgJ0FzeW5jIFZhbGlkYXRpb24gRXJyb3InKSB8fCB0aGlzO1xuICAgIF90aGlzLmVycm9ycyA9IGVycm9ycztcbiAgICBfdGhpcy5maWVsZHMgPSBmaWVsZHM7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIEFzeW5jVmFsaWRhdGlvbkVycm9yO1xufSggLyojX19QVVJFX18qL193cmFwTmF0aXZlU3VwZXIoRXJyb3IpKTtcbmZ1bmN0aW9uIGFzeW5jTWFwKG9iakFyciwgb3B0aW9uLCBmdW5jLCBjYWxsYmFjaywgc291cmNlKSB7XG4gIGlmIChvcHRpb24uZmlyc3QpIHtcbiAgICB2YXIgX3BlbmRpbmcgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9ycyk7XG4gICAgICAgIHJldHVybiBlcnJvcnMubGVuZ3RoID8gcmVqZWN0KG5ldyBBc3luY1ZhbGlkYXRpb25FcnJvcihlcnJvcnMsIGNvbnZlcnRGaWVsZHNFcnJvcihlcnJvcnMpKSkgOiByZXNvbHZlKHNvdXJjZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgZmxhdHRlbkFyciA9IGZsYXR0ZW5PYmpBcnIob2JqQXJyKTtcbiAgICAgIGFzeW5jU2VyaWFsQXJyYXkoZmxhdHRlbkFyciwgZnVuYywgbmV4dCk7XG4gICAgfSk7XG5cbiAgICBfcGVuZGluZ1tcImNhdGNoXCJdKGZ1bmN0aW9uIChlKSB7XG4gICAgICByZXR1cm4gZTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfcGVuZGluZztcbiAgfVxuXG4gIHZhciBmaXJzdEZpZWxkcyA9IG9wdGlvbi5maXJzdEZpZWxkcyA9PT0gdHJ1ZSA/IE9iamVjdC5rZXlzKG9iakFycikgOiBvcHRpb24uZmlyc3RGaWVsZHMgfHwgW107XG4gIHZhciBvYmpBcnJLZXlzID0gT2JqZWN0LmtleXMob2JqQXJyKTtcbiAgdmFyIG9iakFyckxlbmd0aCA9IG9iakFycktleXMubGVuZ3RoO1xuICB2YXIgdG90YWwgPSAwO1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgcGVuZGluZyA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgbmV4dCA9IGZ1bmN0aW9uIG5leHQoZXJyb3JzKSB7XG4gICAgICByZXN1bHRzLnB1c2guYXBwbHkocmVzdWx0cywgZXJyb3JzKTtcbiAgICAgIHRvdGFsKys7XG5cbiAgICAgIGlmICh0b3RhbCA9PT0gb2JqQXJyTGVuZ3RoKSB7XG4gICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpO1xuICAgICAgICByZXR1cm4gcmVzdWx0cy5sZW5ndGggPyByZWplY3QobmV3IEFzeW5jVmFsaWRhdGlvbkVycm9yKHJlc3VsdHMsIGNvbnZlcnRGaWVsZHNFcnJvcihyZXN1bHRzKSkpIDogcmVzb2x2ZShzb3VyY2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIW9iakFycktleXMubGVuZ3RoKSB7XG4gICAgICBjYWxsYmFjayhyZXN1bHRzKTtcbiAgICAgIHJlc29sdmUoc291cmNlKTtcbiAgICB9XG5cbiAgICBvYmpBcnJLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIGFyciA9IG9iakFycltrZXldO1xuXG4gICAgICBpZiAoZmlyc3RGaWVsZHMuaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgICBhc3luY1NlcmlhbEFycmF5KGFyciwgZnVuYywgbmV4dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhc3luY1BhcmFsbGVsQXJyYXkoYXJyLCBmdW5jLCBuZXh0KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG4gIHBlbmRpbmdbXCJjYXRjaFwiXShmdW5jdGlvbiAoZSkge1xuICAgIHJldHVybiBlO1xuICB9KTtcbiAgcmV0dXJuIHBlbmRpbmc7XG59XG5cbmZ1bmN0aW9uIGlzRXJyb3JPYmoob2JqKSB7XG4gIHJldHVybiAhIShvYmogJiYgb2JqLm1lc3NhZ2UgIT09IHVuZGVmaW5lZCk7XG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlKHZhbHVlLCBwYXRoKSB7XG4gIHZhciB2ID0gdmFsdWU7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHYgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdjtcbiAgICB9XG5cbiAgICB2ID0gdltwYXRoW2ldXTtcbiAgfVxuXG4gIHJldHVybiB2O1xufVxuXG5mdW5jdGlvbiBjb21wbGVtZW50RXJyb3IocnVsZSwgc291cmNlKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob2UpIHtcbiAgICB2YXIgZmllbGRWYWx1ZTtcblxuICAgIGlmIChydWxlLmZ1bGxGaWVsZHMpIHtcbiAgICAgIGZpZWxkVmFsdWUgPSBnZXRWYWx1ZShzb3VyY2UsIHJ1bGUuZnVsbEZpZWxkcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkVmFsdWUgPSBzb3VyY2Vbb2UuZmllbGQgfHwgcnVsZS5mdWxsRmllbGRdO1xuICAgIH1cblxuICAgIGlmIChpc0Vycm9yT2JqKG9lKSkge1xuICAgICAgb2UuZmllbGQgPSBvZS5maWVsZCB8fCBydWxlLmZ1bGxGaWVsZDtcbiAgICAgIG9lLmZpZWxkVmFsdWUgPSBmaWVsZFZhbHVlO1xuICAgICAgcmV0dXJuIG9lO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlOiB0eXBlb2Ygb2UgPT09ICdmdW5jdGlvbicgPyBvZSgpIDogb2UsXG4gICAgICBmaWVsZFZhbHVlOiBmaWVsZFZhbHVlLFxuICAgICAgZmllbGQ6IG9lLmZpZWxkIHx8IHJ1bGUuZnVsbEZpZWxkXG4gICAgfTtcbiAgfTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoc291cmNlKSB7XG4gICAgZm9yICh2YXIgcyBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkocykpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gc291cmNlW3NdO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0YXJnZXRbc10gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGFyZ2V0W3NdID0gX2V4dGVuZHMoe30sIHRhcmdldFtzXSwgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcmdldFtzXSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxudmFyIHJlcXVpcmVkJDEgPSBmdW5jdGlvbiByZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHR5cGUpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgKCFzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCkgfHwgaXNFbXB0eVZhbHVlKHZhbHVlLCB0eXBlIHx8IHJ1bGUudHlwZSkpKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMucmVxdWlyZWQsIHJ1bGUuZnVsbEZpZWxkKSk7XG4gIH1cbn07XG5cbi8qKlxuICogIFJ1bGUgZm9yIHZhbGlkYXRpbmcgd2hpdGVzcGFjZS5cbiAqXG4gKiAgQHBhcmFtIHJ1bGUgVGhlIHZhbGlkYXRpb24gcnVsZS5cbiAqICBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBmaWVsZCBvbiB0aGUgc291cmNlIG9iamVjdC5cbiAqICBAcGFyYW0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0IGJlaW5nIHZhbGlkYXRlZC5cbiAqICBAcGFyYW0gZXJyb3JzIEFuIGFycmF5IG9mIGVycm9ycyB0aGF0IHRoaXMgcnVsZSBtYXkgYWRkXG4gKiAgdmFsaWRhdGlvbiBlcnJvcnMgdG8uXG4gKiAgQHBhcmFtIG9wdGlvbnMgVGhlIHZhbGlkYXRpb24gb3B0aW9ucy5cbiAqICBAcGFyYW0gb3B0aW9ucy5tZXNzYWdlcyBUaGUgdmFsaWRhdGlvbiBtZXNzYWdlcy5cbiAqL1xuXG52YXIgd2hpdGVzcGFjZSA9IGZ1bmN0aW9uIHdoaXRlc3BhY2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIGlmICgvXlxccyskLy50ZXN0KHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlcy53aGl0ZXNwYWNlLCBydWxlLmZ1bGxGaWVsZCkpO1xuICB9XG59O1xuXG4vLyBodHRwczovL2dpdGh1Yi5jb20va2V2dmEvdXJsLXJlZ2V4L2Jsb2IvbWFzdGVyL2luZGV4LmpzXG52YXIgdXJsUmVnO1xudmFyIGdldFVybFJlZ2V4ID0gKGZ1bmN0aW9uICgpIHtcbiAgaWYgKHVybFJlZykge1xuICAgIHJldHVybiB1cmxSZWc7XG4gIH1cblxuICB2YXIgd29yZCA9ICdbYS1mQS1GXFxcXGQ6XSc7XG5cbiAgdmFyIGIgPSBmdW5jdGlvbiBiKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLmluY2x1ZGVCb3VuZGFyaWVzID8gXCIoPzooPzw9XFxcXHN8XikoPz1cIiArIHdvcmQgKyBcIil8KD88PVwiICsgd29yZCArIFwiKSg/PVxcXFxzfCQpKVwiIDogJyc7XG4gIH07XG5cbiAgdmFyIHY0ID0gJyg/OjI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV1cXFxcZHxcXFxcZCkoPzpcXFxcLig/OjI1WzAtNV18MlswLTRdXFxcXGR8MVxcXFxkXFxcXGR8WzEtOV1cXFxcZHxcXFxcZCkpezN9JztcbiAgdmFyIHY2c2VnID0gJ1thLWZBLUZcXFxcZF17MSw0fSc7XG4gIHZhciB2NiA9IChcIlxcbig/Olxcbig/OlwiICsgdjZzZWcgKyBcIjopezd9KD86XCIgKyB2NnNlZyArIFwifDopfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE6MjozOjQ6NTo2Ojc6OiAgMToyOjM6NDo1OjY6Nzo4XFxuKD86XCIgKyB2NnNlZyArIFwiOil7Nn0oPzpcIiArIHY0ICsgXCJ8OlwiICsgdjZzZWcgKyBcInw6KXwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE6MjozOjQ6NTo2OjogICAgMToyOjM6NDo1OjY6OjggICAxOjI6Mzo0OjU6Njo6OCAgMToyOjM6NDo1OjY6OjEuMi4zLjRcXG4oPzpcIiArIHY2c2VnICsgXCI6KXs1fSg/OjpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSwyfXw6KXwgICAgICAgICAgICAgICAgICAgLy8gMToyOjM6NDo1OjogICAgICAxOjI6Mzo0OjU6Ojc6OCAgIDE6MjozOjQ6NTo6OCAgICAxOjI6Mzo0OjU6Ojc6MS4yLjMuNFxcbig/OlwiICsgdjZzZWcgKyBcIjopezR9KD86KD86OlwiICsgdjZzZWcgKyBcIil7MCwxfTpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSwzfXw6KXwgLy8gMToyOjM6NDo6ICAgICAgICAxOjI6Mzo0Ojo2Ojc6OCAgIDE6MjozOjQ6OjggICAgICAxOjI6Mzo0Ojo2Ojc6MS4yLjMuNFxcbig/OlwiICsgdjZzZWcgKyBcIjopezN9KD86KD86OlwiICsgdjZzZWcgKyBcIil7MCwyfTpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSw0fXw6KXwgLy8gMToyOjM6OiAgICAgICAgICAxOjI6Mzo6NTo2Ojc6OCAgIDE6MjozOjo4ICAgICAgICAxOjI6Mzo6NTo2Ojc6MS4yLjMuNFxcbig/OlwiICsgdjZzZWcgKyBcIjopezJ9KD86KD86OlwiICsgdjZzZWcgKyBcIil7MCwzfTpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSw1fXw6KXwgLy8gMToyOjogICAgICAgICAgICAxOjI6OjQ6NTo2Ojc6OCAgIDE6Mjo6OCAgICAgICAgICAxOjI6OjQ6NTo2Ojc6MS4yLjMuNFxcbig/OlwiICsgdjZzZWcgKyBcIjopezF9KD86KD86OlwiICsgdjZzZWcgKyBcIil7MCw0fTpcIiArIHY0ICsgXCJ8KD86OlwiICsgdjZzZWcgKyBcIil7MSw2fXw6KXwgLy8gMTo6ICAgICAgICAgICAgICAxOjozOjQ6NTo2Ojc6OCAgIDE6OjggICAgICAgICAgICAxOjozOjQ6NTo2Ojc6MS4yLjMuNFxcbig/OjooPzooPzo6XCIgKyB2NnNlZyArIFwiKXswLDV9OlwiICsgdjQgKyBcInwoPzo6XCIgKyB2NnNlZyArIFwiKXsxLDd9fDopKSAgICAgICAgICAgICAvLyA6OjI6Mzo0OjU6Njo3OjggIDo6MjozOjQ6NTo2Ojc6OCAgOjo4ICAgICAgICAgICAgIDo6MS4yLjMuNFxcbikoPzolWzAtOWEtekEtWl17MSx9KT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAlZXRoMCAgICAgICAgICAgICUxXFxuXCIpLnJlcGxhY2UoL1xccypcXC9cXC8uKiQvZ20sICcnKS5yZXBsYWNlKC9cXG4vZywgJycpLnRyaW0oKTsgLy8gUHJlLWNvbXBpbGUgb25seSB0aGUgZXhhY3QgcmVnZXhlcyBiZWNhdXNlIGFkZGluZyBhIGdsb2JhbCBmbGFnIG1ha2UgcmVnZXhlcyBzdGF0ZWZ1bFxuXG4gIHZhciB2NDZFeGFjdCA9IG5ldyBSZWdFeHAoXCIoPzpeXCIgKyB2NCArIFwiJCl8KD86XlwiICsgdjYgKyBcIiQpXCIpO1xuICB2YXIgdjRleGFjdCA9IG5ldyBSZWdFeHAoXCJeXCIgKyB2NCArIFwiJFwiKTtcbiAgdmFyIHY2ZXhhY3QgPSBuZXcgUmVnRXhwKFwiXlwiICsgdjYgKyBcIiRcIik7XG5cbiAgdmFyIGlwID0gZnVuY3Rpb24gaXAob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuZXhhY3QgPyB2NDZFeGFjdCA6IG5ldyBSZWdFeHAoXCIoPzpcIiArIGIob3B0aW9ucykgKyB2NCArIGIob3B0aW9ucykgKyBcIil8KD86XCIgKyBiKG9wdGlvbnMpICsgdjYgKyBiKG9wdGlvbnMpICsgXCIpXCIsICdnJyk7XG4gIH07XG5cbiAgaXAudjQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHJldHVybiBvcHRpb25zICYmIG9wdGlvbnMuZXhhY3QgPyB2NGV4YWN0IDogbmV3IFJlZ0V4cChcIlwiICsgYihvcHRpb25zKSArIHY0ICsgYihvcHRpb25zKSwgJ2cnKTtcbiAgfTtcblxuICBpcC52NiA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5leGFjdCA/IHY2ZXhhY3QgOiBuZXcgUmVnRXhwKFwiXCIgKyBiKG9wdGlvbnMpICsgdjYgKyBiKG9wdGlvbnMpLCAnZycpO1xuICB9O1xuXG4gIHZhciBwcm90b2NvbCA9IFwiKD86KD86W2Etel0rOik/Ly8pXCI7XG4gIHZhciBhdXRoID0gJyg/OlxcXFxTKyg/OjpcXFxcUyopP0ApPyc7XG4gIHZhciBpcHY0ID0gaXAudjQoKS5zb3VyY2U7XG4gIHZhciBpcHY2ID0gaXAudjYoKS5zb3VyY2U7XG4gIHZhciBob3N0ID0gXCIoPzooPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV1bLV9dKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKylcIjtcbiAgdmFyIGRvbWFpbiA9IFwiKD86XFxcXC4oPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZjAtOV0tKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykqXCI7XG4gIHZhciB0bGQgPSBcIig/OlxcXFwuKD86W2EtelxcXFx1MDBhMS1cXFxcdWZmZmZdezIsfSkpXCI7XG4gIHZhciBwb3J0ID0gJyg/OjpcXFxcZHsyLDV9KT8nO1xuICB2YXIgcGF0aCA9ICcoPzpbLz8jXVteXFxcXHNcIl0qKT8nO1xuICB2YXIgcmVnZXggPSBcIig/OlwiICsgcHJvdG9jb2wgKyBcInx3d3dcXFxcLilcIiArIGF1dGggKyBcIig/OmxvY2FsaG9zdHxcIiArIGlwdjQgKyBcInxcIiArIGlwdjYgKyBcInxcIiArIGhvc3QgKyBkb21haW4gKyB0bGQgKyBcIilcIiArIHBvcnQgKyBwYXRoO1xuICB1cmxSZWcgPSBuZXcgUmVnRXhwKFwiKD86XlwiICsgcmVnZXggKyBcIiQpXCIsICdpJyk7XG4gIHJldHVybiB1cmxSZWc7XG59KTtcblxuLyogZXNsaW50IG1heC1sZW46MCAqL1xuXG52YXIgcGF0dGVybiQyID0ge1xuICAvLyBodHRwOi8vZW1haWxyZWdleC5jb20vXG4gIGVtYWlsOiAvXigoW148PigpXFxbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClcXFtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31dKXwoKFthLXpBLVpcXC0wLTlcXHUwMEEwLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxcdUZGRUZdK1xcLikrW2EtekEtWlxcdTAwQTAtXFx1RDdGRlxcdUY5MDAtXFx1RkRDRlxcdUZERjAtXFx1RkZFRl17Mix9KSkkLyxcbiAgLy8gdXJsOiBuZXcgUmVnRXhwKFxuICAvLyAgICdeKD8hbWFpbHRvOikoPzooPzpodHRwfGh0dHBzfGZ0cCk6Ly98Ly8pKD86XFxcXFMrKD86OlxcXFxTKik/QCk/KD86KD86KD86WzEtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswMV1cXFxcZHwyMlswLTNdKSg/OlxcXFwuKD86MT9cXFxcZHsxLDJ9fDJbMC00XVxcXFxkfDI1WzAtNV0pKXsyfSg/OlxcXFwuKD86WzAtOV1cXFxcZD98MVxcXFxkXFxcXGR8MlswLTRdXFxcXGR8MjVbMC00XSkpfCg/Oig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykoPzpcXFxcLig/OlthLXpcXFxcdTAwYTEtXFxcXHVmZmZmMC05XSstKikqW2EtelxcXFx1MDBhMS1cXFxcdWZmZmYwLTldKykqKD86XFxcXC4oPzpbYS16XFxcXHUwMGExLVxcXFx1ZmZmZl17Mix9KSkpfGxvY2FsaG9zdCkoPzo6XFxcXGR7Miw1fSk/KD86KC98XFxcXD98IylbXlxcXFxzXSopPyQnLFxuICAvLyAgICdpJyxcbiAgLy8gKSxcbiAgaGV4OiAvXiM/KFthLWYwLTldezZ9fFthLWYwLTldezN9KSQvaVxufTtcbnZhciB0eXBlcyA9IHtcbiAgaW50ZWdlcjogZnVuY3Rpb24gaW50ZWdlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlcy5udW1iZXIodmFsdWUpICYmIHBhcnNlSW50KHZhbHVlLCAxMCkgPT09IHZhbHVlO1xuICB9LFxuICBcImZsb2F0XCI6IGZ1bmN0aW9uIGZsb2F0KHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVzLm51bWJlcih2YWx1ZSkgJiYgIXR5cGVzLmludGVnZXIodmFsdWUpO1xuICB9LFxuICBhcnJheTogZnVuY3Rpb24gYXJyYXkodmFsdWUpIHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSk7XG4gIH0sXG4gIHJlZ2V4cDogZnVuY3Rpb24gcmVnZXhwKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgcmV0dXJuICEhbmV3IFJlZ0V4cCh2YWx1ZSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSxcbiAgZGF0ZTogZnVuY3Rpb24gZGF0ZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUuZ2V0VGltZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUuZ2V0TW9udGggPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlLmdldFllYXIgPT09ICdmdW5jdGlvbicgJiYgIWlzTmFOKHZhbHVlLmdldFRpbWUoKSk7XG4gIH0sXG4gIG51bWJlcjogZnVuY3Rpb24gbnVtYmVyKHZhbHVlKSB7XG4gICAgaWYgKGlzTmFOKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICB9LFxuICBvYmplY3Q6IGZ1bmN0aW9uIG9iamVjdCh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICF0eXBlcy5hcnJheSh2YWx1ZSk7XG4gIH0sXG4gIG1ldGhvZDogZnVuY3Rpb24gbWV0aG9kKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgfSxcbiAgZW1haWw6IGZ1bmN0aW9uIGVtYWlsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDw9IDMyMCAmJiAhIXZhbHVlLm1hdGNoKHBhdHRlcm4kMi5lbWFpbCk7XG4gIH0sXG4gIHVybDogZnVuY3Rpb24gdXJsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDw9IDIwNDggJiYgISF2YWx1ZS5tYXRjaChnZXRVcmxSZWdleCgpKTtcbiAgfSxcbiAgaGV4OiBmdW5jdGlvbiBoZXgodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhIXZhbHVlLm1hdGNoKHBhdHRlcm4kMi5oZXgpO1xuICB9XG59O1xuXG52YXIgdHlwZSQxID0gZnVuY3Rpb24gdHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpIHtcbiAgaWYgKHJ1bGUucmVxdWlyZWQgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJlcXVpcmVkJDEocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY3VzdG9tID0gWydpbnRlZ2VyJywgJ2Zsb2F0JywgJ2FycmF5JywgJ3JlZ2V4cCcsICdvYmplY3QnLCAnbWV0aG9kJywgJ2VtYWlsJywgJ251bWJlcicsICdkYXRlJywgJ3VybCcsICdoZXgnXTtcbiAgdmFyIHJ1bGVUeXBlID0gcnVsZS50eXBlO1xuXG4gIGlmIChjdXN0b20uaW5kZXhPZihydWxlVHlwZSkgPiAtMSkge1xuICAgIGlmICghdHlwZXNbcnVsZVR5cGVdKHZhbHVlKSkge1xuICAgICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMudHlwZXNbcnVsZVR5cGVdLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS50eXBlKSk7XG4gICAgfSAvLyBzdHJhaWdodCB0eXBlb2YgY2hlY2tcblxuICB9IGVsc2UgaWYgKHJ1bGVUeXBlICYmIHR5cGVvZiB2YWx1ZSAhPT0gcnVsZS50eXBlKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXMudHlwZXNbcnVsZVR5cGVdLCBydWxlLmZ1bGxGaWVsZCwgcnVsZS50eXBlKSk7XG4gIH1cbn07XG5cbnZhciByYW5nZSA9IGZ1bmN0aW9uIHJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICB2YXIgbGVuID0gdHlwZW9mIHJ1bGUubGVuID09PSAnbnVtYmVyJztcbiAgdmFyIG1pbiA9IHR5cGVvZiBydWxlLm1pbiA9PT0gJ251bWJlcic7XG4gIHZhciBtYXggPSB0eXBlb2YgcnVsZS5tYXggPT09ICdudW1iZXInOyAvLyDmraPliJnljLnphY3noIHngrnojIPlm7Tku45VKzAxMDAwMOS4gOebtOWIsFUrMTBGRkZG55qE5paH5a2X77yI6KGl5YWF5bmz6Z2iU3VwcGxlbWVudGFyeSBQbGFuZe+8iVxuXG4gIHZhciBzcFJlZ2V4cCA9IC9bXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdL2c7XG4gIHZhciB2YWwgPSB2YWx1ZTtcbiAgdmFyIGtleSA9IG51bGw7XG4gIHZhciBudW0gPSB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xuICB2YXIgc3RyID0gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbiAgdmFyIGFyciA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuXG4gIGlmIChudW0pIHtcbiAgICBrZXkgPSAnbnVtYmVyJztcbiAgfSBlbHNlIGlmIChzdHIpIHtcbiAgICBrZXkgPSAnc3RyaW5nJztcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBrZXkgPSAnYXJyYXknO1xuICB9IC8vIGlmIHRoZSB2YWx1ZSBpcyBub3Qgb2YgYSBzdXBwb3J0ZWQgdHlwZSBmb3IgcmFuZ2UgdmFsaWRhdGlvblxuICAvLyB0aGUgdmFsaWRhdGlvbiBydWxlIHJ1bGUgc2hvdWxkIHVzZSB0aGVcbiAgLy8gdHlwZSBwcm9wZXJ0eSB0byBhbHNvIHRlc3QgZm9yIGEgcGFydGljdWxhciB0eXBlXG5cblxuICBpZiAoIWtleSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChhcnIpIHtcbiAgICB2YWwgPSB2YWx1ZS5sZW5ndGg7XG4gIH1cblxuICBpZiAoc3RyKSB7XG4gICAgLy8g5aSE55CG56CB54K55aSn5LqOVSswMTAwMDDnmoTmloflrZdsZW5ndGjlsZ7mgKfkuI3lh4bnoa7nmoRidWfvvIzlpoJcIvCgrrfwoK638KCut1wiLmxlbmdodCAhPT0gM1xuICAgIHZhbCA9IHZhbHVlLnJlcGxhY2Uoc3BSZWdleHAsICdfJykubGVuZ3RoO1xuICB9XG5cbiAgaWYgKGxlbikge1xuICAgIGlmICh2YWwgIT09IHJ1bGUubGVuKSB7XG4gICAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlc1trZXldLmxlbiwgcnVsZS5mdWxsRmllbGQsIHJ1bGUubGVuKSk7XG4gICAgfVxuICB9IGVsc2UgaWYgKG1pbiAmJiAhbWF4ICYmIHZhbCA8IHJ1bGUubWluKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5taW4sIHJ1bGUuZnVsbEZpZWxkLCBydWxlLm1pbikpO1xuICB9IGVsc2UgaWYgKG1heCAmJiAhbWluICYmIHZhbCA+IHJ1bGUubWF4KSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNba2V5XS5tYXgsIHJ1bGUuZnVsbEZpZWxkLCBydWxlLm1heCkpO1xuICB9IGVsc2UgaWYgKG1pbiAmJiBtYXggJiYgKHZhbCA8IHJ1bGUubWluIHx8IHZhbCA+IHJ1bGUubWF4KSkge1xuICAgIGVycm9ycy5wdXNoKGZvcm1hdChvcHRpb25zLm1lc3NhZ2VzW2tleV0ucmFuZ2UsIHJ1bGUuZnVsbEZpZWxkLCBydWxlLm1pbiwgcnVsZS5tYXgpKTtcbiAgfVxufTtcblxudmFyIEVOVU0kMSA9ICdlbnVtJztcblxudmFyIGVudW1lcmFibGUkMSA9IGZ1bmN0aW9uIGVudW1lcmFibGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKSB7XG4gIHJ1bGVbRU5VTSQxXSA9IEFycmF5LmlzQXJyYXkocnVsZVtFTlVNJDFdKSA/IHJ1bGVbRU5VTSQxXSA6IFtdO1xuXG4gIGlmIChydWxlW0VOVU0kMV0uaW5kZXhPZih2YWx1ZSkgPT09IC0xKSB7XG4gICAgZXJyb3JzLnB1c2goZm9ybWF0KG9wdGlvbnMubWVzc2FnZXNbRU5VTSQxXSwgcnVsZS5mdWxsRmllbGQsIHJ1bGVbRU5VTSQxXS5qb2luKCcsICcpKSk7XG4gIH1cbn07XG5cbnZhciBwYXR0ZXJuJDEgPSBmdW5jdGlvbiBwYXR0ZXJuKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucykge1xuICBpZiAocnVsZS5wYXR0ZXJuKSB7XG4gICAgaWYgKHJ1bGUucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgLy8gaWYgYSBSZWdFeHAgaW5zdGFuY2UgaXMgcGFzc2VkLCByZXNldCBgbGFzdEluZGV4YCBpbiBjYXNlIGl0cyBgZ2xvYmFsYFxuICAgICAgLy8gZmxhZyBpcyBhY2NpZGVudGFsbHkgc2V0IHRvIGB0cnVlYCwgd2hpY2ggaW4gYSB2YWxpZGF0aW9uIHNjZW5hcmlvXG4gICAgICAvLyBpcyBub3QgbmVjZXNzYXJ5IGFuZCB0aGUgcmVzdWx0IG1pZ2h0IGJlIG1pc2xlYWRpbmdcbiAgICAgIHJ1bGUucGF0dGVybi5sYXN0SW5kZXggPSAwO1xuXG4gICAgICBpZiAoIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlcy5wYXR0ZXJuLm1pc21hdGNoLCBydWxlLmZ1bGxGaWVsZCwgdmFsdWUsIHJ1bGUucGF0dGVybikpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHJ1bGUucGF0dGVybiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBfcGF0dGVybiA9IG5ldyBSZWdFeHAocnVsZS5wYXR0ZXJuKTtcblxuICAgICAgaWYgKCFfcGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICBlcnJvcnMucHVzaChmb3JtYXQob3B0aW9ucy5tZXNzYWdlcy5wYXR0ZXJuLm1pc21hdGNoLCBydWxlLmZ1bGxGaWVsZCwgdmFsdWUsIHJ1bGUucGF0dGVybikpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxudmFyIHJ1bGVzID0ge1xuICByZXF1aXJlZDogcmVxdWlyZWQkMSxcbiAgd2hpdGVzcGFjZTogd2hpdGVzcGFjZSxcbiAgdHlwZTogdHlwZSQxLFxuICByYW5nZTogcmFuZ2UsXG4gIFwiZW51bVwiOiBlbnVtZXJhYmxlJDEsXG4gIHBhdHRlcm46IHBhdHRlcm4kMVxufTtcblxudmFyIHN0cmluZyA9IGZ1bmN0aW9uIHN0cmluZyhydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUsICdzdHJpbmcnKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCAnc3RyaW5nJyk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgICBydWxlcy5yYW5nZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucGF0dGVybihydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgICBpZiAocnVsZS53aGl0ZXNwYWNlID09PSB0cnVlKSB7XG4gICAgICAgIHJ1bGVzLndoaXRlc3BhY2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIG1ldGhvZCA9IGZ1bmN0aW9uIG1ldGhvZChydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIG51bWJlciA9IGZ1bmN0aW9uIG51bWJlcihydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIHZhbHVlID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBfYm9vbGVhbiA9IGZ1bmN0aW9uIF9ib29sZWFuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgcmVnZXhwID0gZnVuY3Rpb24gcmVnZXhwKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIGludGVnZXIgPSBmdW5jdGlvbiBpbnRlZ2VyKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIGZsb2F0Rm4gPSBmdW5jdGlvbiBmbG9hdEZuKHJ1bGUsIHZhbHVlLCBjYWxsYmFjaywgc291cmNlLCBvcHRpb25zKSB7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSkgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcnVsZXMudHlwZShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgICAgcnVsZXMucmFuZ2UocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIGFycmF5ID0gZnVuY3Rpb24gYXJyYXkocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsICdhcnJheScpO1xuXG4gICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIHJ1bGVzLnJhbmdlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBvYmplY3QgPSBmdW5jdGlvbiBvYmplY3QocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlcy50eXBlKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBFTlVNID0gJ2VudW0nO1xuXG52YXIgZW51bWVyYWJsZSA9IGZ1bmN0aW9uIGVudW1lcmFibGUocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBydWxlc1tFTlVNXShydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGNhbGxiYWNrKGVycm9ycyk7XG59O1xuXG52YXIgcGF0dGVybiA9IGZ1bmN0aW9uIHBhdHRlcm4ocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdmFsaWRhdGUgPSBydWxlLnJlcXVpcmVkIHx8ICFydWxlLnJlcXVpcmVkICYmIHNvdXJjZS5oYXNPd25Qcm9wZXJ0eShydWxlLmZpZWxkKTtcblxuICBpZiAodmFsaWRhdGUpIHtcbiAgICBpZiAoaXNFbXB0eVZhbHVlKHZhbHVlLCAnc3RyaW5nJykgJiYgIXJ1bGUucmVxdWlyZWQpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjaygpO1xuICAgIH1cblxuICAgIHJ1bGVzLnJlcXVpcmVkKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG5cbiAgICBpZiAoIWlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICBydWxlcy5wYXR0ZXJuKHJ1bGUsIHZhbHVlLCBzb3VyY2UsIGVycm9ycywgb3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciBkYXRlID0gZnVuY3Rpb24gZGF0ZShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICAvLyBjb25zb2xlLmxvZygnaW50ZWdlciBydWxlIGNhbGxlZCAlaicsIHJ1bGUpO1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpOyAvLyBjb25zb2xlLmxvZygndmFsaWRhdGUgb24gJXMgdmFsdWUnLCB2YWx1ZSk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgJ2RhdGUnKSAmJiAhcnVsZS5yZXF1aXJlZCkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgIGlmICghaXNFbXB0eVZhbHVlKHZhbHVlLCAnZGF0ZScpKSB7XG4gICAgICB2YXIgZGF0ZU9iamVjdDtcblxuICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICBkYXRlT2JqZWN0ID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkYXRlT2JqZWN0ID0gbmV3IERhdGUodmFsdWUpO1xuICAgICAgfVxuXG4gICAgICBydWxlcy50eXBlKHJ1bGUsIGRhdGVPYmplY3QsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGRhdGVPYmplY3QpIHtcbiAgICAgICAgcnVsZXMucmFuZ2UocnVsZSwgZGF0ZU9iamVjdC5nZXRUaW1lKCksIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIHJlcXVpcmVkID0gZnVuY3Rpb24gcmVxdWlyZWQocnVsZSwgdmFsdWUsIGNhbGxiYWNrLCBzb3VyY2UsIG9wdGlvbnMpIHtcbiAgdmFyIGVycm9ycyA9IFtdO1xuICB2YXIgdHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZTtcbiAgcnVsZXMucmVxdWlyZWQocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zLCB0eXBlKTtcbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciB0eXBlID0gZnVuY3Rpb24gdHlwZShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgcnVsZVR5cGUgPSBydWxlLnR5cGU7XG4gIHZhciBlcnJvcnMgPSBbXTtcbiAgdmFyIHZhbGlkYXRlID0gcnVsZS5yZXF1aXJlZCB8fCAhcnVsZS5yZXF1aXJlZCAmJiBzb3VyY2UuaGFzT3duUHJvcGVydHkocnVsZS5maWVsZCk7XG5cbiAgaWYgKHZhbGlkYXRlKSB7XG4gICAgaWYgKGlzRW1wdHlWYWx1ZSh2YWx1ZSwgcnVsZVR5cGUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMsIHJ1bGVUeXBlKTtcblxuICAgIGlmICghaXNFbXB0eVZhbHVlKHZhbHVlLCBydWxlVHlwZSkpIHtcbiAgICAgIHJ1bGVzLnR5cGUocnVsZSwgdmFsdWUsIHNvdXJjZSwgZXJyb3JzLCBvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBjYWxsYmFjayhlcnJvcnMpO1xufTtcblxudmFyIGFueSA9IGZ1bmN0aW9uIGFueShydWxlLCB2YWx1ZSwgY2FsbGJhY2ssIHNvdXJjZSwgb3B0aW9ucykge1xuICB2YXIgZXJyb3JzID0gW107XG4gIHZhciB2YWxpZGF0ZSA9IHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgc291cmNlLmhhc093blByb3BlcnR5KHJ1bGUuZmllbGQpO1xuXG4gIGlmICh2YWxpZGF0ZSkge1xuICAgIGlmIChpc0VtcHR5VmFsdWUodmFsdWUpICYmICFydWxlLnJlcXVpcmVkKSB7XG4gICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICBydWxlcy5yZXF1aXJlZChydWxlLCB2YWx1ZSwgc291cmNlLCBlcnJvcnMsIG9wdGlvbnMpO1xuICB9XG5cbiAgY2FsbGJhY2soZXJyb3JzKTtcbn07XG5cbnZhciB2YWxpZGF0b3JzID0ge1xuICBzdHJpbmc6IHN0cmluZyxcbiAgbWV0aG9kOiBtZXRob2QsXG4gIG51bWJlcjogbnVtYmVyLFxuICBcImJvb2xlYW5cIjogX2Jvb2xlYW4sXG4gIHJlZ2V4cDogcmVnZXhwLFxuICBpbnRlZ2VyOiBpbnRlZ2VyLFxuICBcImZsb2F0XCI6IGZsb2F0Rm4sXG4gIGFycmF5OiBhcnJheSxcbiAgb2JqZWN0OiBvYmplY3QsXG4gIFwiZW51bVwiOiBlbnVtZXJhYmxlLFxuICBwYXR0ZXJuOiBwYXR0ZXJuLFxuICBkYXRlOiBkYXRlLFxuICB1cmw6IHR5cGUsXG4gIGhleDogdHlwZSxcbiAgZW1haWw6IHR5cGUsXG4gIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgYW55OiBhbnlcbn07XG5cbmZ1bmN0aW9uIG5ld01lc3NhZ2VzKCkge1xuICByZXR1cm4ge1xuICAgIFwiZGVmYXVsdFwiOiAnVmFsaWRhdGlvbiBlcnJvciBvbiBmaWVsZCAlcycsXG4gICAgcmVxdWlyZWQ6ICclcyBpcyByZXF1aXJlZCcsXG4gICAgXCJlbnVtXCI6ICclcyBtdXN0IGJlIG9uZSBvZiAlcycsXG4gICAgd2hpdGVzcGFjZTogJyVzIGNhbm5vdCBiZSBlbXB0eScsXG4gICAgZGF0ZToge1xuICAgICAgZm9ybWF0OiAnJXMgZGF0ZSAlcyBpcyBpbnZhbGlkIGZvciBmb3JtYXQgJXMnLFxuICAgICAgcGFyc2U6ICclcyBkYXRlIGNvdWxkIG5vdCBiZSBwYXJzZWQsICVzIGlzIGludmFsaWQgJyxcbiAgICAgIGludmFsaWQ6ICclcyBkYXRlICVzIGlzIGludmFsaWQnXG4gICAgfSxcbiAgICB0eXBlczoge1xuICAgICAgc3RyaW5nOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgbWV0aG9kOiAnJXMgaXMgbm90IGEgJXMgKGZ1bmN0aW9uKScsXG4gICAgICBhcnJheTogJyVzIGlzIG5vdCBhbiAlcycsXG4gICAgICBvYmplY3Q6ICclcyBpcyBub3QgYW4gJXMnLFxuICAgICAgbnVtYmVyOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgZGF0ZTogJyVzIGlzIG5vdCBhICVzJyxcbiAgICAgIFwiYm9vbGVhblwiOiAnJXMgaXMgbm90IGEgJXMnLFxuICAgICAgaW50ZWdlcjogJyVzIGlzIG5vdCBhbiAlcycsXG4gICAgICBcImZsb2F0XCI6ICclcyBpcyBub3QgYSAlcycsXG4gICAgICByZWdleHA6ICclcyBpcyBub3QgYSB2YWxpZCAlcycsXG4gICAgICBlbWFpbDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJyxcbiAgICAgIHVybDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJyxcbiAgICAgIGhleDogJyVzIGlzIG5vdCBhIHZhbGlkICVzJ1xuICAgIH0sXG4gICAgc3RyaW5nOiB7XG4gICAgICBsZW46ICclcyBtdXN0IGJlIGV4YWN0bHkgJXMgY2hhcmFjdGVycycsXG4gICAgICBtaW46ICclcyBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLFxuICAgICAgbWF4OiAnJXMgY2Fubm90IGJlIGxvbmdlciB0aGFuICVzIGNoYXJhY3RlcnMnLFxuICAgICAgcmFuZ2U6ICclcyBtdXN0IGJlIGJldHdlZW4gJXMgYW5kICVzIGNoYXJhY3RlcnMnXG4gICAgfSxcbiAgICBudW1iZXI6IHtcbiAgICAgIGxlbjogJyVzIG11c3QgZXF1YWwgJXMnLFxuICAgICAgbWluOiAnJXMgY2Fubm90IGJlIGxlc3MgdGhhbiAlcycsXG4gICAgICBtYXg6ICclcyBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuICVzJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcydcbiAgICB9LFxuICAgIGFycmF5OiB7XG4gICAgICBsZW46ICclcyBtdXN0IGJlIGV4YWN0bHkgJXMgaW4gbGVuZ3RoJyxcbiAgICAgIG1pbjogJyVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMgaW4gbGVuZ3RoJyxcbiAgICAgIG1heDogJyVzIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJXMgaW4gbGVuZ3RoJyxcbiAgICAgIHJhbmdlOiAnJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcyBpbiBsZW5ndGgnXG4gICAgfSxcbiAgICBwYXR0ZXJuOiB7XG4gICAgICBtaXNtYXRjaDogJyVzIHZhbHVlICVzIGRvZXMgbm90IG1hdGNoIHBhdHRlcm4gJXMnXG4gICAgfSxcbiAgICBjbG9uZTogZnVuY3Rpb24gY2xvbmUoKSB7XG4gICAgICB2YXIgY2xvbmVkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzKSk7XG4gICAgICBjbG9uZWQuY2xvbmUgPSB0aGlzLmNsb25lO1xuICAgICAgcmV0dXJuIGNsb25lZDtcbiAgICB9XG4gIH07XG59XG52YXIgbWVzc2FnZXMgPSBuZXdNZXNzYWdlcygpO1xuXG4vKipcbiAqICBFbmNhcHN1bGF0ZXMgYSB2YWxpZGF0aW9uIHNjaGVtYS5cbiAqXG4gKiAgQHBhcmFtIGRlc2NyaXB0b3IgQW4gb2JqZWN0IGRlY2xhcmluZyB2YWxpZGF0aW9uIHJ1bGVzXG4gKiAgZm9yIHRoaXMgc2NoZW1hLlxuICovXG5cbnZhciBTY2hlbWEgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09IFN0YXRpYyA9PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PSBJbnN0YW5jZSA9PT09PT09PT09PT09PT09PT09PT09PT1cbiAgZnVuY3Rpb24gU2NoZW1hKGRlc2NyaXB0b3IpIHtcbiAgICB0aGlzLnJ1bGVzID0gbnVsbDtcbiAgICB0aGlzLl9tZXNzYWdlcyA9IG1lc3NhZ2VzO1xuICAgIHRoaXMuZGVmaW5lKGRlc2NyaXB0b3IpO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IFNjaGVtYS5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmRlZmluZSA9IGZ1bmN0aW9uIGRlZmluZShydWxlcykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBpZiAoIXJ1bGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb25maWd1cmUgYSBzY2hlbWEgd2l0aCBubyBydWxlcycpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcnVsZXMgIT09ICdvYmplY3QnIHx8IEFycmF5LmlzQXJyYXkocnVsZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1bGVzIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuXG4gICAgdGhpcy5ydWxlcyA9IHt9O1xuICAgIE9iamVjdC5rZXlzKHJ1bGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgaXRlbSA9IHJ1bGVzW25hbWVdO1xuICAgICAgX3RoaXMucnVsZXNbbmFtZV0gPSBBcnJheS5pc0FycmF5KGl0ZW0pID8gaXRlbSA6IFtpdGVtXTtcbiAgICB9KTtcbiAgfTtcblxuICBfcHJvdG8ubWVzc2FnZXMgPSBmdW5jdGlvbiBtZXNzYWdlcyhfbWVzc2FnZXMpIHtcbiAgICBpZiAoX21lc3NhZ2VzKSB7XG4gICAgICB0aGlzLl9tZXNzYWdlcyA9IGRlZXBNZXJnZShuZXdNZXNzYWdlcygpLCBfbWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9tZXNzYWdlcztcbiAgfTtcblxuICBfcHJvdG8udmFsaWRhdGUgPSBmdW5jdGlvbiB2YWxpZGF0ZShzb3VyY2VfLCBvLCBvYykge1xuICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgaWYgKG8gPT09IHZvaWQgMCkge1xuICAgICAgbyA9IHt9O1xuICAgIH1cblxuICAgIGlmIChvYyA9PT0gdm9pZCAwKSB7XG4gICAgICBvYyA9IGZ1bmN0aW9uIG9jKCkge307XG4gICAgfVxuXG4gICAgdmFyIHNvdXJjZSA9IHNvdXJjZV87XG4gICAgdmFyIG9wdGlvbnMgPSBvO1xuICAgIHZhciBjYWxsYmFjayA9IG9jO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnJ1bGVzIHx8IE9iamVjdC5rZXlzKHRoaXMucnVsZXMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIGNhbGxiYWNrKG51bGwsIHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc291cmNlKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjb21wbGV0ZShyZXN1bHRzKSB7XG4gICAgICB2YXIgZXJyb3JzID0gW107XG4gICAgICB2YXIgZmllbGRzID0ge307XG5cbiAgICAgIGZ1bmN0aW9uIGFkZChlKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGUpKSB7XG4gICAgICAgICAgdmFyIF9lcnJvcnM7XG5cbiAgICAgICAgICBlcnJvcnMgPSAoX2Vycm9ycyA9IGVycm9ycykuY29uY2F0LmFwcGx5KF9lcnJvcnMsIGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVycm9ycy5wdXNoKGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBhZGQocmVzdWx0c1tpXSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghZXJyb3JzLmxlbmd0aCkge1xuICAgICAgICBjYWxsYmFjayhudWxsLCBzb3VyY2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmllbGRzID0gY29udmVydEZpZWxkc0Vycm9yKGVycm9ycyk7XG4gICAgICAgIGNhbGxiYWNrKGVycm9ycywgZmllbGRzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5tZXNzYWdlcykge1xuICAgICAgdmFyIG1lc3NhZ2VzJDEgPSB0aGlzLm1lc3NhZ2VzKCk7XG5cbiAgICAgIGlmIChtZXNzYWdlcyQxID09PSBtZXNzYWdlcykge1xuICAgICAgICBtZXNzYWdlcyQxID0gbmV3TWVzc2FnZXMoKTtcbiAgICAgIH1cblxuICAgICAgZGVlcE1lcmdlKG1lc3NhZ2VzJDEsIG9wdGlvbnMubWVzc2FnZXMpO1xuICAgICAgb3B0aW9ucy5tZXNzYWdlcyA9IG1lc3NhZ2VzJDE7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9wdGlvbnMubWVzc2FnZXMgPSB0aGlzLm1lc3NhZ2VzKCk7XG4gICAgfVxuXG4gICAgdmFyIHNlcmllcyA9IHt9O1xuICAgIHZhciBrZXlzID0gb3B0aW9ucy5rZXlzIHx8IE9iamVjdC5rZXlzKHRoaXMucnVsZXMpO1xuICAgIGtleXMuZm9yRWFjaChmdW5jdGlvbiAoeikge1xuICAgICAgdmFyIGFyciA9IF90aGlzMi5ydWxlc1t6XTtcbiAgICAgIHZhciB2YWx1ZSA9IHNvdXJjZVt6XTtcbiAgICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7XG4gICAgICAgIHZhciBydWxlID0gcjtcblxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaWYgKHNvdXJjZSA9PT0gc291cmNlXykge1xuICAgICAgICAgICAgc291cmNlID0gX2V4dGVuZHMoe30sIHNvdXJjZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFsdWUgPSBzb3VyY2Vbel0gPSBydWxlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHJ1bGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBydWxlID0ge1xuICAgICAgICAgICAgdmFsaWRhdG9yOiBydWxlXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBydWxlID0gX2V4dGVuZHMoe30sIHJ1bGUpO1xuICAgICAgICB9IC8vIEZpbGwgdmFsaWRhdG9yLiBTa2lwIGlmIG5vdGhpbmcgbmVlZCB0byB2YWxpZGF0ZVxuXG5cbiAgICAgICAgcnVsZS52YWxpZGF0b3IgPSBfdGhpczIuZ2V0VmFsaWRhdGlvbk1ldGhvZChydWxlKTtcblxuICAgICAgICBpZiAoIXJ1bGUudmFsaWRhdG9yKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcnVsZS5maWVsZCA9IHo7XG4gICAgICAgIHJ1bGUuZnVsbEZpZWxkID0gcnVsZS5mdWxsRmllbGQgfHwgejtcbiAgICAgICAgcnVsZS50eXBlID0gX3RoaXMyLmdldFR5cGUocnVsZSk7XG4gICAgICAgIHNlcmllc1t6XSA9IHNlcmllc1t6XSB8fCBbXTtcbiAgICAgICAgc2VyaWVzW3pdLnB1c2goe1xuICAgICAgICAgIHJ1bGU6IHJ1bGUsXG4gICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGZpZWxkOiB6XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdmFyIGVycm9yRmllbGRzID0ge307XG4gICAgcmV0dXJuIGFzeW5jTWFwKHNlcmllcywgb3B0aW9ucywgZnVuY3Rpb24gKGRhdGEsIGRvSXQpIHtcbiAgICAgIHZhciBydWxlID0gZGF0YS5ydWxlO1xuICAgICAgdmFyIGRlZXAgPSAocnVsZS50eXBlID09PSAnb2JqZWN0JyB8fCBydWxlLnR5cGUgPT09ICdhcnJheScpICYmICh0eXBlb2YgcnVsZS5maWVsZHMgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBydWxlLmRlZmF1bHRGaWVsZCA9PT0gJ29iamVjdCcpO1xuICAgICAgZGVlcCA9IGRlZXAgJiYgKHJ1bGUucmVxdWlyZWQgfHwgIXJ1bGUucmVxdWlyZWQgJiYgZGF0YS52YWx1ZSk7XG4gICAgICBydWxlLmZpZWxkID0gZGF0YS5maWVsZDtcblxuICAgICAgZnVuY3Rpb24gYWRkRnVsbEZpZWxkKGtleSwgc2NoZW1hKSB7XG4gICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgc2NoZW1hLCB7XG4gICAgICAgICAgZnVsbEZpZWxkOiBydWxlLmZ1bGxGaWVsZCArIFwiLlwiICsga2V5LFxuICAgICAgICAgIGZ1bGxGaWVsZHM6IHJ1bGUuZnVsbEZpZWxkcyA/IFtdLmNvbmNhdChydWxlLmZ1bGxGaWVsZHMsIFtrZXldKSA6IFtrZXldXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBjYihlKSB7XG4gICAgICAgIGlmIChlID09PSB2b2lkIDApIHtcbiAgICAgICAgICBlID0gW107XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZXJyb3JMaXN0ID0gQXJyYXkuaXNBcnJheShlKSA/IGUgOiBbZV07XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLnN1cHByZXNzV2FybmluZyAmJiBlcnJvckxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgU2NoZW1hLndhcm5pbmcoJ2FzeW5jLXZhbGlkYXRvcjonLCBlcnJvckxpc3QpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yTGlzdC5sZW5ndGggJiYgcnVsZS5tZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBlcnJvckxpc3QgPSBbXS5jb25jYXQocnVsZS5tZXNzYWdlKTtcbiAgICAgICAgfSAvLyBGaWxsIGVycm9yIGluZm9cblxuXG4gICAgICAgIHZhciBmaWxsZWRFcnJvcnMgPSBlcnJvckxpc3QubWFwKGNvbXBsZW1lbnRFcnJvcihydWxlLCBzb3VyY2UpKTtcblxuICAgICAgICBpZiAob3B0aW9ucy5maXJzdCAmJiBmaWxsZWRFcnJvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgZXJyb3JGaWVsZHNbcnVsZS5maWVsZF0gPSAxO1xuICAgICAgICAgIHJldHVybiBkb0l0KGZpbGxlZEVycm9ycyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlZXApIHtcbiAgICAgICAgICBkb0l0KGZpbGxlZEVycm9ycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gaWYgcnVsZSBpcyByZXF1aXJlZCBidXQgdGhlIHRhcmdldCBvYmplY3RcbiAgICAgICAgICAvLyBkb2VzIG5vdCBleGlzdCBmYWlsIGF0IHRoZSBydWxlIGxldmVsIGFuZCBkb24ndFxuICAgICAgICAgIC8vIGdvIGRlZXBlclxuICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmICFkYXRhLnZhbHVlKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5tZXNzYWdlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgZmlsbGVkRXJyb3JzID0gW10uY29uY2F0KHJ1bGUubWVzc2FnZSkubWFwKGNvbXBsZW1lbnRFcnJvcihydWxlLCBzb3VyY2UpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5lcnJvcikge1xuICAgICAgICAgICAgICBmaWxsZWRFcnJvcnMgPSBbb3B0aW9ucy5lcnJvcihydWxlLCBmb3JtYXQob3B0aW9ucy5tZXNzYWdlcy5yZXF1aXJlZCwgcnVsZS5maWVsZCkpXTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGRvSXQoZmlsbGVkRXJyb3JzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgZmllbGRzU2NoZW1hID0ge307XG5cbiAgICAgICAgICBpZiAocnVsZS5kZWZhdWx0RmllbGQpIHtcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGEudmFsdWUpLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgIGZpZWxkc1NjaGVtYVtrZXldID0gcnVsZS5kZWZhdWx0RmllbGQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaWVsZHNTY2hlbWEgPSBfZXh0ZW5kcyh7fSwgZmllbGRzU2NoZW1hLCBkYXRhLnJ1bGUuZmllbGRzKTtcbiAgICAgICAgICB2YXIgcGFyZWRGaWVsZHNTY2hlbWEgPSB7fTtcbiAgICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNTY2hlbWEpLmZvckVhY2goZnVuY3Rpb24gKGZpZWxkKSB7XG4gICAgICAgICAgICB2YXIgZmllbGRTY2hlbWEgPSBmaWVsZHNTY2hlbWFbZmllbGRdO1xuICAgICAgICAgICAgdmFyIGZpZWxkU2NoZW1hTGlzdCA9IEFycmF5LmlzQXJyYXkoZmllbGRTY2hlbWEpID8gZmllbGRTY2hlbWEgOiBbZmllbGRTY2hlbWFdO1xuICAgICAgICAgICAgcGFyZWRGaWVsZHNTY2hlbWFbZmllbGRdID0gZmllbGRTY2hlbWFMaXN0Lm1hcChhZGRGdWxsRmllbGQuYmluZChudWxsLCBmaWVsZCkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhciBzY2hlbWEgPSBuZXcgU2NoZW1hKHBhcmVkRmllbGRzU2NoZW1hKTtcbiAgICAgICAgICBzY2hlbWEubWVzc2FnZXMob3B0aW9ucy5tZXNzYWdlcyk7XG5cbiAgICAgICAgICBpZiAoZGF0YS5ydWxlLm9wdGlvbnMpIHtcbiAgICAgICAgICAgIGRhdGEucnVsZS5vcHRpb25zLm1lc3NhZ2VzID0gb3B0aW9ucy5tZXNzYWdlcztcbiAgICAgICAgICAgIGRhdGEucnVsZS5vcHRpb25zLmVycm9yID0gb3B0aW9ucy5lcnJvcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzY2hlbWEudmFsaWRhdGUoZGF0YS52YWx1ZSwgZGF0YS5ydWxlLm9wdGlvbnMgfHwgb3B0aW9ucywgZnVuY3Rpb24gKGVycnMpIHtcbiAgICAgICAgICAgIHZhciBmaW5hbEVycm9ycyA9IFtdO1xuXG4gICAgICAgICAgICBpZiAoZmlsbGVkRXJyb3JzICYmIGZpbGxlZEVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZmluYWxFcnJvcnMucHVzaC5hcHBseShmaW5hbEVycm9ycywgZmlsbGVkRXJyb3JzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVycnMgJiYgZXJycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgZmluYWxFcnJvcnMucHVzaC5hcHBseShmaW5hbEVycm9ycywgZXJycyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRvSXQoZmluYWxFcnJvcnMubGVuZ3RoID8gZmluYWxFcnJvcnMgOiBudWxsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgcmVzO1xuXG4gICAgICBpZiAocnVsZS5hc3luY1ZhbGlkYXRvcikge1xuICAgICAgICByZXMgPSBydWxlLmFzeW5jVmFsaWRhdG9yKHJ1bGUsIGRhdGEudmFsdWUsIGNiLCBkYXRhLnNvdXJjZSwgb3B0aW9ucyk7XG4gICAgICB9IGVsc2UgaWYgKHJ1bGUudmFsaWRhdG9yKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmVzID0gcnVsZS52YWxpZGF0b3IocnVsZSwgZGF0YS52YWx1ZSwgY2IsIGRhdGEuc291cmNlLCBvcHRpb25zKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yID09IG51bGwgPyB2b2lkIDAgOiBjb25zb2xlLmVycm9yKGVycm9yKTsgLy8gcmV0aHJvdyB0byByZXBvcnQgZXJyb3JcblxuICAgICAgICAgIGlmICghb3B0aW9ucy5zdXBwcmVzc1ZhbGlkYXRvckVycm9yKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9LCAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjYihlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXMgPT09IHRydWUpIHtcbiAgICAgICAgICBjYigpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBjYih0eXBlb2YgcnVsZS5tZXNzYWdlID09PSAnZnVuY3Rpb24nID8gcnVsZS5tZXNzYWdlKHJ1bGUuZnVsbEZpZWxkIHx8IHJ1bGUuZmllbGQpIDogcnVsZS5tZXNzYWdlIHx8IChydWxlLmZ1bGxGaWVsZCB8fCBydWxlLmZpZWxkKSArIFwiIGZhaWxzXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgY2IocmVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgIGNiKHJlcy5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzICYmIHJlcy50aGVuKSB7XG4gICAgICAgIHJlcy50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gY2IoKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICByZXR1cm4gY2IoZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgICBjb21wbGV0ZShyZXN1bHRzKTtcbiAgICB9LCBzb3VyY2UpO1xuICB9O1xuXG4gIF9wcm90by5nZXRUeXBlID0gZnVuY3Rpb24gZ2V0VHlwZShydWxlKSB7XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gdW5kZWZpbmVkICYmIHJ1bGUucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgcnVsZS50eXBlID0gJ3BhdHRlcm4nO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgIT09ICdmdW5jdGlvbicgJiYgcnVsZS50eXBlICYmICF2YWxpZGF0b3JzLmhhc093blByb3BlcnR5KHJ1bGUudHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihmb3JtYXQoJ1Vua25vd24gcnVsZSB0eXBlICVzJywgcnVsZS50eXBlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJ1bGUudHlwZSB8fCAnc3RyaW5nJztcbiAgfTtcblxuICBfcHJvdG8uZ2V0VmFsaWRhdGlvbk1ldGhvZCA9IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25NZXRob2QocnVsZSkge1xuICAgIGlmICh0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBydWxlLnZhbGlkYXRvcjtcbiAgICB9XG5cbiAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHJ1bGUpO1xuICAgIHZhciBtZXNzYWdlSW5kZXggPSBrZXlzLmluZGV4T2YoJ21lc3NhZ2UnKTtcblxuICAgIGlmIChtZXNzYWdlSW5kZXggIT09IC0xKSB7XG4gICAgICBrZXlzLnNwbGljZShtZXNzYWdlSW5kZXgsIDEpO1xuICAgIH1cblxuICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSAmJiBrZXlzWzBdID09PSAncmVxdWlyZWQnKSB7XG4gICAgICByZXR1cm4gdmFsaWRhdG9ycy5yZXF1aXJlZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsaWRhdG9yc1t0aGlzLmdldFR5cGUocnVsZSldIHx8IHVuZGVmaW5lZDtcbiAgfTtcblxuICByZXR1cm4gU2NoZW1hO1xufSgpO1xuXG5TY2hlbWEucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3Rlcih0eXBlLCB2YWxpZGF0b3IpIHtcbiAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWdpc3RlciBhIHZhbGlkYXRvciBieSB0eXBlLCB2YWxpZGF0b3IgaXMgbm90IGEgZnVuY3Rpb24nKTtcbiAgfVxuXG4gIHZhbGlkYXRvcnNbdHlwZV0gPSB2YWxpZGF0b3I7XG59O1xuXG5TY2hlbWEud2FybmluZyA9IHdhcm5pbmc7XG5TY2hlbWEubWVzc2FnZXMgPSBtZXNzYWdlcztcblNjaGVtYS52YWxpZGF0b3JzID0gdmFsaWRhdG9ycztcblxuZXhwb3J0IHsgU2NoZW1hIGFzIGRlZmF1bHQgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcFxuIixudWxsLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGVcIj5cbiAgICA8ZGl2IHYtaWY9XCIhZWRpdGluZyB8fCBkaXNhYmxlZFwiIGNsYXNzPVwiZnMtZWRpdGFibGUtaW5uZXIgZnMtZWRpdGFibGUtcG9pbnRlclwiIHYtYmluZD1cImFjdGl2ZVRyaWdnZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1lZGl0YWJsZS1pbnB1dFwiPlxuICAgICAgICA8ZGl2IHYtaWY9XCJkaXJ0eVwiIGNsYXNzPVwiZnMtZWRpdGFibGUtZGlydHlcIiAvPlxuICAgICAgICA8c2xvdD48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgdi1pZj1cInRyaWdnZXIgJiYgIWRpc2FibGVkXCIgY2xhc3M9XCJmcy1lZGl0YWJsZS1hY3Rpb24gZnMtZWRpdGFibGUtaWNvblwiPlxuICAgICAgICA8ZnMtaWNvbiA6aWNvbj1cInVpLmljb25zLmVkaXRcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB2LWVsc2UgY2xhc3M9XCJmcy1lZGl0YWJsZS1pbm5lclwiIDpjbGFzcz1cInsgJ2ZzLXZhbGlkYXRlLWVycm9yJzogaGFzRXJyb3IoKSB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtaW5wdXRcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImVkaXRcIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmcy1lZGl0YWJsZS1hY3Rpb25cIj5cbiAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS50b29sdGlwLm5hbWVcIj5cbiAgICAgICAgICA8dGVtcGxhdGUgI1t1aS50b29sdGlwLmNvbnRlbnRdPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlcnJvci1pY29uXCI+XG4gICAgICAgICAgICAgIHt7IGdldFZhbGlkYXRlRXJyb3JNZXNzYWdlKCkgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnRvb2x0aXAudHJpZ2dlcl0+XG4gICAgICAgICAgICA8ZnMtaWNvbiA6Y2xhc3M9XCJ7IGhpZGRlbjogIWhhc0Vycm9yKCksICdlcnJvci1pY29uJzogdHJ1ZSB9XCIgc2l6ZT1cIm1pbmlcIiA6aWNvbj1cInVpLmljb25zLmluZm9cIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNob3dBY3Rpb25cIj5cbiAgICAgICAgICA8ZnMtaWNvbiB2LWlmPVwibG9hZGluZ1wiIHNpemU9XCJtaW5pXCIgOnNwaW49XCJ0cnVlXCIgOmljb249XCJ1aS5pY29ucy5yZWZyZXNoXCIgLz5cbiAgICAgICAgICA8ZnMtaWNvbiB2LWVsc2Ugc2l6ZT1cIm1pbmlcIiA6aWNvbj1cInVpLmljb25zLmNoZWNrXCIgQGNsaWNrPVwiZG9TdWJtaXRcIiAvPlxuICAgICAgICAgIDxmcy1pY29uIDpjbGFzcz1cInsgaGlkZGVuOiBsb2FkaW5nIH1cIiBzaXplPVwibWluaVwiIDppY29uPVwidWkuaWNvbnMuY2xvc2VcIiBAY2xpY2s9XCJkb0NhbmNlbFwiIC8+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiQGZhc3QtY3J1ZC91aS1pbnRlcmZhY2VcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcInZ1ZVwiO1xuXG50eXBlIEZzRWRpdGFibGVQcm9wcyA9IHtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICBlZGl0aW5nOiBib29sZWFuO1xuICBkaXJ0eT86IGJvb2xlYW47XG4gIHRyaWdnZXI/OiBcIm9uQ2xpY2tcIiB8IFwib25EYkNsaWNrXCIgfCBmYWxzZTtcbiAgbG9hZGluZz86IGJvb2xlYW47XG4gIHNob3dBY3Rpb24/OiBib29sZWFuO1xuICB2YWxpZGF0ZUVycm9ycz86IGFueVtdO1xufTtcbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPEZzRWRpdGFibGVQcm9wcz4oKSwge1xuICBkaXNhYmxlZDogZmFsc2UsXG4gIGVkaXRpbmc6IGZhbHNlLFxuICBkaXJ0eTogZmFsc2UsXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBzaG93QWN0aW9uOiB0cnVlLFxuICB0cmlnZ2VyOiBcIm9uQ2xpY2tcIixcbiAgdmFsaWRhdGVFcnJvcnM6ICgpID0+IHtcbiAgICByZXR1cm4gW107XG4gIH1cbn0pO1xuXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuY29uc3QgZW1pdHMgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6ZWRpdGluZ1wiLCBcInN1Ym1pdFwiLCBcImNhbmNlbFwiXSk7XG5jb25zdCBhY3RpdmVUcmlnZ2VyID0gY29tcHV0ZWQoKCkgPT4ge1xuICBpZiAoIXByb3BzLnRyaWdnZXIpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBbcHJvcHMudHJpZ2dlcl06ICgpID0+IHtcbiAgICAgIGVtaXRzKFwidXBkYXRlOmVkaXRpbmdcIiwgdHJ1ZSk7XG4gICAgfVxuICB9O1xufSk7XG5mdW5jdGlvbiBkb1N1Ym1pdCgpIHtcbiAgZW1pdHMoXCJzdWJtaXRcIik7XG59XG5mdW5jdGlvbiBkb0NhbmNlbCgpIHtcbiAgZW1pdHMoXCJjYW5jZWxcIik7XG59XG5mdW5jdGlvbiBoYXNFcnJvcigpIHtcbiAgcmV0dXJuIHByb3BzLnZhbGlkYXRlRXJyb3JzPy5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gZ2V0VmFsaWRhdGVFcnJvck1lc3NhZ2UoKSB7XG4gIGlmIChwcm9wcy52YWxpZGF0ZUVycm9ycz8ubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHJldHVybiBwcm9wcy52YWxpZGF0ZUVycm9ycz8ubWFwKChpdGVtKSA9PiBpdGVtLm1lc3NhZ2UpLmpvaW4oXCIsXCIpO1xufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWVkaXRhYmxlIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIC5mcy1lZGl0YWJsZS1wb2ludGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbiAgLmZzLWVkaXRhYmxlLWlubmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWluLWhlaWdodDogMjNweDtcbiAgICAuZnMtZWRpdGFibGUtZGlydHkge1xuICAgICAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gICAgICB3aWR0aDogNXB4O1xuICAgICAgaGVpZ2h0OiA1cHg7XG4gICAgICBtYXJnaW4tbGVmdDogLTVweDtcbiAgICAgIGJhY2tncm91bmQ6IHJlZDtcbiAgICB9XG4gICAgLmZzLWVkaXRhYmxlLWlucHV0IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgfVxuICAgIC5mcy1lZGl0YWJsZS1hY3Rpb24ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICBpLFxuICAgICAgLmFudGljb24ge1xuICAgICAgICB3aWR0aDogMjBweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgIH1cbiAgICAgIC5oaWRkZW4ge1xuICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmZzLWVkaXRhYmxlLWljb24ge1xuICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgIH1cbiAgICAmOmhvdmVyIC5mcy1lZGl0YWJsZS1pY29uIHtcbiAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgfVxuXG4gICAgLmVsLXJhZGlvIHtcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgICAgLmVsLXJhZGlvX19sYWJlbCB7XG4gICAgICAgIHBhZGRpbmc6IDJweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmZzLXZhbGlkYXRlLWVycm9yIHtcbiAgICAgIC5lcnJvci1pY29uIHtcbiAgICAgICAgY29sb3I6ICNmZjRkNGY7XG4gICAgICB9XG4gICAgICAuYW50LWlucHV0LWFmZml4LXdyYXBwZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZjRkNGY7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDJweCByZ2IoMjU1IDM4IDUgLyA2JSk7XG4gICAgICB9XG4gICAgICAuZWwtaW5wdXRfX3dyYXBwZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZjRkNGYgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMXB4ICNmZjRkNGYgaW5zZXQgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5uLWlucHV0IC5uLWlucHV0X19zdGF0ZS1ib3JkZXIge1xuICAgICAgICBib3JkZXItY29sb3I6ICNmZjRkNGYgIWltcG9ydGFudDtcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgMnB4IHJnYigyNTUgMzggNSAvIDYlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1hY3Rpb25iYXJcIj5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIodmFsdWUsIGtleSkgaW4gY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImtleVwiPlxuICAgICAgPGZzLWJ1dHRvbiB2LWlmPVwidmFsdWUuc2hvdyAhPT0gZmFsc2VcIiB2LWJpbmQ9XCJ2YWx1ZVwiIEBjbGljaz1cIm9uQ2xpY2soa2V5LCB2YWx1ZSwgJGV2ZW50KVwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgY29tcHV0ZWQsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgQWN0aW9uYmFyQ2xpY2tFdmVudCwgQnV0dG9uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0FjdGlvbmJhclwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaMiemSrumFjee9rlxuICAgICAqIHtcbiAgICAgKiAgYWRkOntcbiAgICAgKiAgICAuLi5Gc0J1dHRvbixcbiAgICAgKiAgICBzaG93OnRydWVcbiAgICAgKiAgfSxcbiAgICAgKiAgY3VzdG9tOnsuLi59XG4gICAgICogfVxuICAgICAqL1xuICAgIGJ1dHRvbnM6IHt9XG4gIH0gYXMgYW55LFxuICBlbWl0czogW1wiYWN0aW9uXCJdLFxuICBzZXR1cChwcm9wcywgY3R4OiBhbnkpIHtcbiAgICBmdW5jdGlvbiBvbkNsaWNrKGtleTogYW55LCBidG46IGFueSwgJGV2ZW50OiBhbnkpIHtcbiAgICAgIGNvbnN0IGUgPSB7IGtleSwgYnRuLCAkZXZlbnQgfTtcbiAgICAgIGlmIChidG4uY2xpY2spIHtcbiAgICAgICAgYnRuLmNsaWNrKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoYnRuLm9uQ2xpY2spIHtcbiAgICAgICAgYnRuLm9uQ2xpY2soZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGN0eC5lbWl0KFwiYWN0aW9uXCIsIGUpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnM6IFJlZiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGxldCBzb3J0QXJyID0gW107XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBmb3IgKGxldCBrZXkgaW4gcHJvcHMuYnV0dG9ucykge1xuICAgICAgICBzb3J0QXJyLnB1c2goe1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAuLi5wcm9wcy5idXR0b25zW2tleV0sXG4gICAgICAgICAgX2tleToga2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICB9KTtcblxuICAgICAgY29uc3Qgc29ydGVkQnV0dG9uczogQnV0dG9uc1Byb3BzPEFjdGlvbmJhckNsaWNrRXZlbnQ+ID0ge307XG5cbiAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvcnRlZEJ1dHRvbnM7XG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIG9uQ2xpY2ssXG4gICAgICBjb21wdXRlZEJ1dHRvbnNcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtYWN0aW9uYmFyIHtcbiAgLmZzLWJ1dHRvbiB7XG4gICAgbWFyZ2luOiAycHg7IC8vIOaNouihjOS5i+WQjuS5n+imgeacieS4gOeCuemXtOmalFxuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtYWN0aW9uYmFyXCI+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIGluIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgIDxmcy1idXR0b24gdi1pZj1cInZhbHVlLnNob3cgIT09IGZhbHNlXCIgdi1iaW5kPVwidmFsdWVcIiBAY2xpY2s9XCJvbkNsaWNrKGtleSwgdmFsdWUsICRldmVudClcIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIGNvbXB1dGVkLCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEFjdGlvbmJhckNsaWNrRXZlbnQsIEJ1dHRvbnNQcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNBY3Rpb25iYXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKiB7XG4gICAgICogIGFkZDp7XG4gICAgICogICAgLi4uRnNCdXR0b24sXG4gICAgICogICAgc2hvdzp0cnVlXG4gICAgICogIH0sXG4gICAgICogIGN1c3RvbTp7Li4ufVxuICAgICAqIH1cbiAgICAgKi9cbiAgICBidXR0b25zOiB7fVxuICB9IGFzIGFueSxcbiAgZW1pdHM6IFtcImFjdGlvblwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eDogYW55KSB7XG4gICAgZnVuY3Rpb24gb25DbGljayhrZXk6IGFueSwgYnRuOiBhbnksICRldmVudDogYW55KSB7XG4gICAgICBjb25zdCBlID0geyBrZXksIGJ0biwgJGV2ZW50IH07XG4gICAgICBpZiAoYnRuLmNsaWNrKSB7XG4gICAgICAgIGJ0bi5jbGljayhlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGJ0bi5vbkNsaWNrKSB7XG4gICAgICAgIGJ0bi5vbkNsaWNrKGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcImFjdGlvblwiLCBlKTtcbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zOiBSZWYgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBsZXQgc29ydEFyciA9IFtdO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZm9yIChsZXQga2V5IGluIHByb3BzLmJ1dHRvbnMpIHtcbiAgICAgICAgc29ydEFyci5wdXNoKHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgLi4ucHJvcHMuYnV0dG9uc1trZXldLFxuICAgICAgICAgIF9rZXk6IGtleVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczxBY3Rpb25iYXJDbGlja0V2ZW50PiA9IHt9O1xuXG4gICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcbiAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcbiAgICAgICAgc29ydGVkQnV0dG9uc1tfa2V5XSA9IGl0ZW07XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzb3J0ZWRCdXR0b25zO1xuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBvbkNsaWNrLFxuICAgICAgY29tcHV0ZWRCdXR0b25zXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWFjdGlvbmJhciB7XG4gIC5mcy1idXR0b24ge1xuICAgIG1hcmdpbjogMnB4OyAvLyDmjaLooYzkuYvlkI7kuZ/opoHmnInkuIDngrnpl7TpmpRcbiAgfVxufVxuPC9zdHlsZT5cbiIsbnVsbCxudWxsLCI8dGVtcGxhdGU+XG4gIDwhLS0g566A5Y2V5qih5byPIC0tPlxuICA8dGVtcGxhdGUgdi1pZj1cIm1vZGUgPT09ICdzaW1wbGUnXCI+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIGNsYXNzPVwiZnMtdGFibGUtY29sdW1ucy1maWx0ZXItc2ltcGxlXCI+XG4gICAgICA8Y29tcG9uZW50XG4gICAgICAgIDppcz1cInVpLmNvbC5uYW1lXCJcbiAgICAgICAgdi1mb3I9XCIoZWxlbWVudCwga2V5KSBpbiBjdXJyZW50Q29sdW1uc1wiXG4gICAgICAgIHYtc2hvdz1cIm9yaWdpbmFsW2VsZW1lbnQua2V5XT8uX19zaG93ICE9PSBmYWxzZVwiXG4gICAgICAgIDprZXk9XCJrZXlcIlxuICAgICAgICA6c3Bhbj1cIjZcIlxuICAgICAgPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwidWkuY2hlY2tib3gubmFtZVwiXG4gICAgICAgICAgdi1tb2RlbDpbdWkuY2hlY2tib3gubW9kZWxWYWx1ZV09XCJlbGVtZW50LnNob3dcIlxuICAgICAgICAgIDpkaXNhYmxlZD1cIm9yaWdpbmFsW2VsZW1lbnQua2V5XT8uX19kaXNhYmxlZCA9PT0gdHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJpdGVtLWxhYmVsXCJcbiAgICAgICAgICA6dGl0bGU9XCJidWlsZFRleHQoZWxlbWVudClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgYnVpbGRUZXh0KGVsZW1lbnQpIH19XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9jb21wb25lbnQ+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5kaXZpZGVyLm5hbWVcIiAvPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIj5cbiAgICAgIDxmcy1idXR0b25cbiAgICAgICAgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweFwiXG4gICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcbiAgICAgICAgOmljb249XCJ1aS5pY29ucy5jaGVja1wiXG4gICAgICAgIDp0ZXh0PVwiX3RleHQuY29uZmlybVwiXG4gICAgICAgIEBjbGljaz1cInNpbXBsZVN1Ym1pdCgpXCJcbiAgICAgIC8+XG4gICAgICA8ZnMtYnV0dG9uIDppY29uPVwidWkuaWNvbnMucmVmcmVzaFwiIDp0ZXh0PVwiX3RleHQucmVzZXRcIiBAY2xpY2s9XCJzaW1wbGVSZXNldFwiIC8+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvdGVtcGxhdGU+XG4gIDwhLS0g5a6M5YWo5qih5byPIC0tPlxuXG4gIDxjb21wb25lbnQgOmlzPVwiY29udGFpbmVyPy5pcyB8fCAnZnMtY29sdW1ucy1maWx0ZXItbGF5b3V0LWRlZmF1bHQnXCIgdi1lbHNlIHYtYmluZD1cImNvbnRhaW5lclwiPlxuICAgIDx0ZW1wbGF0ZSAjYnV0dG9ucz5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkucm93Lm5hbWVcIiBjbGFzcz1cImZzLWRyYXdlci1mb290ZXJcIiA6Z3V0dGVyPVwiMTBcIj5cbiAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2wubmFtZVwiIDpzcGFuPVwiMTJcIj5cbiAgICAgICAgICA8ZnMtYnV0dG9uIDppY29uPVwidWkuaWNvbnMucmVmcmVzaFwiIDp0ZXh0PVwiX3RleHQucmVzZXRcIiBibG9jayBAY2xpY2s9XCJyZXNldFwiIC8+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbC5uYW1lXCIgOnNwYW49XCIxMlwiPlxuICAgICAgICAgIDxmcy1idXR0b24gdHlwZT1cInByaW1hcnlcIiA6aWNvbj1cInVpLmljb25zLmNoZWNrXCIgOnRleHQ9XCJfdGV4dC5jb25maXJtXCIgYmxvY2sgQGNsaWNrPVwic3VibWl0KGZhbHNlKVwiIC8+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuLyoqXG4gKiBGc1RhYmxlQ29sdW1uc0ZpbHRlcu+8jOWIl+iuvue9rue7hOS7tlxuICovXG5pbXBvcnQgeyBvbWl0LCBmb3JFYWNoLCBwaWNrIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IFRhYmxlU3RvcmUgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3V0aWwuc3RvcmVcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgaW5qZWN0LCBuZXh0VGljaywgcHJvdmlkZSwgUmVmLCByZWYsIHdhdGNoIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdWlDb250ZXh0IH0gZnJvbSBcIi4uLy4uLy4uL3VpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi8uLi91c2UvdXNlLW1lcmdlXCI7XG5pbXBvcnQgeyB1c2VSb3V0ZSB9IGZyb20gXCJ2dWUtcm91dGVyXCI7XG5pbXBvcnQge1xuICBDb2x1bW5Qcm9wcyxcbiAgQ29sdW1uc0ZpbHRlckNvbXBvbmVudFByb3BzLFxuICBDb2x1bW5zRmlsdGVySXRlbSxcbiAgQ29sdW1uc0ZpbHRlclByb3ZpZGVLZXksXG4gIFRhYmxlQ29sdW1uc1Byb3BzXG59IGZyb20gXCIuLi8uLi8uLi9kXCI7XG5cbmNvbnN0IHByb3BzID0gd2l0aERlZmF1bHRzKGRlZmluZVByb3BzPENvbHVtbnNGaWx0ZXJDb21wb25lbnRQcm9wcz4oKSwge1xuICBzdG9yYWdlOiB0cnVlLFxuICBtb2RlOiBcImRlZmF1bHRcIixcbiAgY29udGFpbmVyOiAoKSA9PiB7XG4gICAgcmV0dXJuIHsgaXM6IFwiZnMtY29sdW1ucy1maWx0ZXItbGF5b3V0LWRlZmF1bHRcIiB9O1xuICB9XG59KTtcbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6Y29sdW1uc1wiLCBcInVwZGF0ZTpzaG93XCIsIFwicmVzZXRcIiwgXCJzdWJtaXRcIl0pO1xuXG5jb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbmNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xuY29uc3QgYWN0aXZlID0gcmVmKGZhbHNlKTtcbmNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuICBhY3RpdmUudmFsdWUgPSB0cnVlO1xufTtcblxuLy8g5pWw57uE5b2i5byP55qE5Y6f5aeLdHJlZVxuY29uc3Qgb3JpZ2luYWw6IFJlZjxDb2x1bW5zRmlsdGVySXRlbVtdPiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHRyYW5zZm9ybUNvbHVtbnNUcmVlKHByb3BzLm9yaWdpbmFsQ29sdW1ucyk7XG59KTtcbi8v5pWw57uE5b2i5byP55qEdHJlZVxuY29uc3QgY3VycmVudENvbHVtbnM6IFJlZjxDb2x1bW5zRmlsdGVySXRlbVtdPiA9IHJlZihbXSk7XG5cbmNvbnN0IG9yaWdpbmFsQ29sdW1uc01hcDogUmVmPFJlY29yZDxzdHJpbmcsIENvbHVtbnNGaWx0ZXJJdGVtPj4gPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IG1hcDogUmVjb3JkPHN0cmluZywgQ29sdW1uc0ZpbHRlckl0ZW0+ID0ge307XG4gIGVhY2hUcmVlKG9yaWdpbmFsLnZhbHVlLCAoaXRlbTogQ29sdW1uc0ZpbHRlckl0ZW0pID0+IHtcbiAgICBtYXBbaXRlbS5fX2tleV0gPSBpdGVtO1xuICB9KTtcbiAgcmV0dXJuIG1hcDtcbn0pO1xuY29uc3QgeyBtZXJnZSwgY2xvbmVEZWVwIH0gPSB1c2VNZXJnZSgpO1xuXG5jb25zdCBfdGV4dCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgY29uc3QgZGVmID0ge1xuICAgIHRpdGxlOiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIudGl0bGVcIiksXG4gICAgZml4ZWQ6IHQoXCJmcy50b29sYmFyLmNvbHVtbkZpbHRlci5maXhlZFwiKSxcbiAgICBvcmRlcjogdChcImZzLnRvb2xiYXIuY29sdW1uRmlsdGVyLm9yZGVyXCIpLFxuICAgIHJlc2V0OiB0KFwiZnMudG9vbGJhci5jb2x1bW5GaWx0ZXIucmVzZXRcIiksXG4gICAgY29uZmlybTogdChcImZzLnRvb2xiYXIuY29sdW1uRmlsdGVyLmNvbmZpcm1cIiksXG4gICAgdW5uYW1lZDogdChcImZzLnRvb2xiYXIuY29sdW1uRmlsdGVyLnVubmFtZWRcIilcbiAgfTtcbiAgbWVyZ2UoZGVmLCBwcm9wcy50ZXh0KTtcbiAgcmV0dXJuIGRlZjtcbn0pO1xuXG5mdW5jdGlvbiBlYWNoVHJlZSh0cmVlOiBhbnksIGNhbGxiYWNrOiBGdW5jdGlvbikge1xuICBpZiAoIXRyZWUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkodHJlZSkpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdHJlZSkge1xuICAgICAgY2FsbGJhY2soaXRlbSk7XG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICBlYWNoVHJlZShpdGVtLmNoaWxkcmVuLCBjYWxsYmFjayk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHRyZWUpIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0cmVlW2tleV07XG4gICAgICBjYWxsYmFjayhpdGVtKTtcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgIGVhY2hUcmVlKGl0ZW0uY2hpbGRyZW4sIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYnVpbGRDb2x1bW5GaWx0ZXJJdGVtKGl0ZW06IENvbHVtblByb3BzKTogQ29sdW1uc0ZpbHRlckl0ZW0ge1xuICByZXR1cm4ge1xuICAgIGtleTogaXRlbS5rZXksXG4gICAgdGl0bGU6IGl0ZW0udGl0bGUsXG4gICAgZml4ZWQ6IGl0ZW0uZml4ZWQgPz8gZmFsc2UsXG4gICAgc2hvdzogaXRlbS5zaG93ID8/IHRydWUsXG4gICAgX19zaG93OiBpdGVtLmNvbHVtblNldFNob3cgIT09IGZhbHNlLFxuICAgIF9fZGlzYWJsZWQ6IGl0ZW0uY29sdW1uU2V0RGlzYWJsZWQgPz8gZmFsc2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gdHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMocmVzdWx0OiBDb2x1bW5zRmlsdGVySXRlbVtdKSB7XG4gIGNvbnN0IGNvbHVtbnM6IFRhYmxlQ29sdW1uc1Byb3BzID0ge307XG4gIGZvckVhY2gocmVzdWx0LCAoaXRlbSkgPT4ge1xuICAgIGNvbnN0IGNvbHVtbjogQ29sdW1uUHJvcHMgPSBvbWl0KGl0ZW0sIFwiY2hpbGRyZW5cIiwgXCJfX3Nob3dcIiwgXCJfX2Rpc2FibGVkXCIsIFwiX19wYXJlbnRcIiwgXCJfX2tleVwiKTtcbiAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbHVtbi5jaGlsZHJlbiA9IHRyYW5zZm9ybVRvVGFibGVDb2x1bW5zKGl0ZW0uY2hpbGRyZW4pO1xuICAgIH1cbiAgICBjb2x1bW5zW2l0ZW0ua2V5XSA9IGNvbHVtbjtcbiAgfSk7XG4gIHJldHVybiBjb2x1bW5zO1xufVxuXG5mdW5jdGlvbiB0cmFuc2Zvcm1Db2x1bW5zVHJlZSh2YWx1ZTogVGFibGVDb2x1bW5zUHJvcHMsIHBhcmVudD86IENvbHVtbnNGaWx0ZXJJdGVtKTogQ29sdW1uc0ZpbHRlckl0ZW1bXSB7XG4gIGNvbnN0IGNvbHVtbnM6IENvbHVtbnNGaWx0ZXJJdGVtW10gPSBbXTtcbiAgZm9yRWFjaCh2YWx1ZSwgKGl0ZW0pID0+IHtcbiAgICBjb25zdCBjb2x1bW4gPSBidWlsZENvbHVtbkZpbHRlckl0ZW0oaXRlbSk7XG4gICAgY29sdW1uLl9fcGFyZW50ID0gcGFyZW50O1xuICAgIGNvbHVtbi5fX2tleSA9IGAke3BhcmVudD8ua2V5IHx8IFwiXCJ9LiR7aXRlbS5rZXl9YDtcbiAgICBjb2x1bW5zLnB1c2goY29sdW1uKTtcbiAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgY29sdW1uLmNoaWxkcmVuID0gdHJhbnNmb3JtQ29sdW1uc1RyZWUoaXRlbS5jaGlsZHJlbiwgY29sdW1uKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY29sdW1ucztcbn1cblxuZnVuY3Rpb24gc2V0Q3VycmVudFZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgY3VycmVudENvbHVtbnMudmFsdWUgPSB0cmFuc2Zvcm1Db2x1bW5zVHJlZSh2YWx1ZSk7XG59XG5cbi8vIOi/mOWOn1xuYXN5bmMgZnVuY3Rpb24gcmVzZXQoKSB7XG4gIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gdHJhbnNmb3JtQ29sdW1uc1RyZWUocHJvcHMub3JpZ2luYWxDb2x1bW5zKTtcbiAgYXdhaXQgZG9fc2F2ZSh0cnVlKTtcbiAgYXdhaXQgY2xlYXJUaGlzU3RvcmFnZSgpO1xuICBlbWl0KFwicmVzZXRcIik7XG59XG5cbi8vIOehruiupFxuYXN5bmMgZnVuY3Rpb24gZG9fc2F2ZShub1NhdmUgPSBmYWxzZSkge1xuICBpZiAoIW5vU2F2ZSkge1xuICAgIGF3YWl0IHNhdmVPcHRpb25zVG9TdG9yYWdlKGN1cnJlbnRDb2x1bW5zLnZhbHVlKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBjbG9uZURlZXAoY3VycmVudENvbHVtbnMudmFsdWUpO1xuXG4gIC8v6Kej5YazbmFpdmUgdWnkuI7liJforr7nva7lhrLnqoHnmoTpl67pophcbiAgZWFjaFRyZWUocmVzdWx0LCAoaXRlbTogYW55KSA9PiB7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIGRlbGV0ZSBpdGVtLl9fZGlzYWJsZWQ7XG4gICAgICBkZWxldGUgaXRlbS5fX3Nob3c7XG4gICAgICBkZWxldGUgaXRlbS5fX3BhcmVudDtcbiAgICAgIGRlbGV0ZSBpdGVtLl9fa2V5O1xuICAgIH1cbiAgfSk7XG5cbiAgZG9FbWl0KHJlc3VsdCk7XG4gIGFjdGl2ZS52YWx1ZSA9IGZhbHNlO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdWJtaXQobm9TYXZlID0gZmFsc2UpIHtcbiAgY29uc3QgY29sdW1ucyA9IGF3YWl0IGRvX3NhdmUobm9TYXZlKTtcbiAgZW1pdChcInN1Ym1pdFwiLCB7IGNvbHVtbnMgfSk7XG59XG5jb25zdCBjb21wdXRlZE9yaWdpbmFsQ29sdW1ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHByb3BzLm9yaWdpbmFsQ29sdW1ucztcbn0pO1xucHJvdmlkZShDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSwge1xuICBvcmlnaW5hbENvbHVtbnM6IGNvbXB1dGVkT3JpZ2luYWxDb2x1bW5zLFxuICBvcmlnaW5hbENvbHVtbnNNYXA6IG9yaWdpbmFsQ29sdW1uc01hcCxcbiAgY3VycmVudENvbHVtbnMsXG4gIHRleHQ6IF90ZXh0LFxuICBhY3RpdmUsXG4gIHN1Ym1pdCxcbiAgcmVzZXRcbn0pO1xuXG5hc3luYyBmdW5jdGlvbiBzaW1wbGVTdWJtaXQoKSB7XG4gIGF3YWl0IHN1Ym1pdChmYWxzZSk7XG4gIGVtaXQoXCJ1cGRhdGU6c2hvd1wiLCBmYWxzZSk7XG59XG5hc3luYyBmdW5jdGlvbiBzaW1wbGVSZXNldCgpIHtcbiAgYXdhaXQgcmVzZXQoKTtcbiAgZW1pdChcInVwZGF0ZTpzaG93XCIsIGZhbHNlKTtcbn1cblxuZnVuY3Rpb24gZG9FbWl0KHJlc3VsdDogQ29sdW1uc0ZpbHRlckl0ZW1bXSkge1xuICBlbWl0KFwidXBkYXRlOmNvbHVtbnNcIiwgdHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMocmVzdWx0KSk7XG59XG5cbmNvbnN0IGdldENydWRCaW5kaW5nID0gaW5qZWN0KFwiZ2V0OmNydWRCaW5kaW5nXCIsICgpID0+IHtcbiAgcmV0dXJuIHsgaWQ6IFwiXCIgfTtcbn0pO1xuXG5jb25zdCBzdG9yYWdlVGFibGVTdG9yZSA9IHJlZigpO1xuZnVuY3Rpb24gZ2V0U3RvcmFnZVRhYmxlKCkge1xuICAvL3Byb3BzLnN0b3JhZ2XmmK/lkKblrp7njrDkuoZDb2x1bW5GaWx0ZXJTdG9yYWdlIOaOpeWPo1xuICBjb25zdCByZW1vdGVTdG9yYWdlID0gdHlwZW9mIHByb3BzLnN0b3JhZ2UgPT09IFwib2JqZWN0XCIgPyBwcm9wcy5zdG9yYWdlIDogbnVsbDtcbiAgY29uc3Qga2V5VHlwZSA9IHR5cGVvZiBwcm9wcy5zdG9yYWdlID09PSBcInN0cmluZ1wiID8gcHJvcHMuc3RvcmFnZSA6IFwiXCI7XG4gIGlmIChzdG9yYWdlVGFibGVTdG9yZS52YWx1ZSA9PSBudWxsKSB7XG4gICAgY29uc3Qgcm91dGUgPSB1c2VSb3V0ZSgpO1xuICAgIHN0b3JhZ2VUYWJsZVN0b3JlLnZhbHVlID0gbmV3IFRhYmxlU3RvcmUoe1xuICAgICAgJHJvdXRlcjogcm91dGUsXG4gICAgICB0YWJsZU5hbWU6IFwiY29sdW1uc0ZpbHRlclwiLFxuICAgICAga2V5VHlwZToga2V5VHlwZSxcbiAgICAgIHJlbW90ZVN0b3JhZ2VcbiAgICB9KTtcbiAgfVxuICBzdG9yYWdlVGFibGVTdG9yZS52YWx1ZS5pZCA9IGdldENydWRCaW5kaW5nKCkuaWQ7XG4gIHJldHVybiBzdG9yYWdlVGFibGVTdG9yZS52YWx1ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2F2ZU9wdGlvbnNUb1N0b3JhZ2UodmFsdWU6IGFueSkge1xuICBpZiAocHJvcHMuc3RvcmFnZSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3Qgc3RvcmVkT3B0aW9uczogYW55ID0gY2xvbmVEZWVwKHZhbHVlKTtcbiAgLy/liKDpmaRwYXJlbnTlvJXnlKhcbiAgZWFjaFRyZWUoc3RvcmVkT3B0aW9ucywgKGl0ZW06IGFueSkgPT4ge1xuICAgIGRlbGV0ZSBpdGVtLl9fcGFyZW50O1xuICB9KTtcblxuICBhd2FpdCBnZXRTdG9yYWdlVGFibGUoKS51cGRhdGVUYWJsZVZhbHVlKHN0b3JlZE9wdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcHRpb25zRnJvbVN0b3JhZ2UoKSB7XG4gIGlmIChwcm9wcy5zdG9yYWdlID09PSBmYWxzZSkge1xuICAgIHJldHVybjtcbiAgfVxuICByZXR1cm4gYXdhaXQgZ2V0U3RvcmFnZVRhYmxlKCkuZ2V0VGFibGVWYWx1ZSgpO1xufVxuYXN5bmMgZnVuY3Rpb24gY2xlYXJUaGlzU3RvcmFnZSgpIHtcbiAgYXdhaXQgZ2V0U3RvcmFnZVRhYmxlKCkuY2xlYXJUYWJsZVZhbHVlKCk7XG59XG5cbmZ1bmN0aW9uIGdldENvbHVtbnNIYXNoKGNvbHVtbnM6IGFueSkge1xuICBjb25zdCBrZXlzOiBhbnkgPSBbXTtcbiAgZWFjaFRyZWUoY29sdW1ucywgKGl0ZW06IGFueSkgPT4ge1xuICAgIGNvbnN0IHRhcmdldCA9IHBpY2soaXRlbSwgXCJrZXlcIiwgXCJfX3Nob3dcIiwgXCJfX2Rpc2FibGVkXCIpO1xuICAgIGtleXMucHVzaChKU09OLnN0cmluZ2lmeSh0YXJnZXQpKTtcbiAgfSk7XG4gIGtleXMuc29ydCgpO1xuICBsZXQgaGFzaCA9IFwiXCI7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBoYXNoICs9IGtleTtcbiAgfVxuICByZXR1cm4gaGFzaDtcbn1cbndhdGNoKFxuICAoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XG4gIH0sXG4gICh2YWx1ZSkgPT4ge1xuICAgIHNldEN1cnJlbnRWYWx1ZSh2YWx1ZSk7XG4gIH1cbik7XG5cbmNvbnN0IGluaXQgPSBhc3luYyAoKSA9PiB7XG4gIHNldEN1cnJlbnRWYWx1ZShwcm9wcy5jb2x1bW5zKTtcbiAgY29uc3Qgc3RvcmVkT3B0aW9ucyA9IGF3YWl0IGdldE9wdGlvbnNGcm9tU3RvcmFnZSgpO1xuICBpZiAoc3RvcmVkT3B0aW9ucykge1xuICAgIGNvbnN0IHN0b3JlSGFzaCA9IGdldENvbHVtbnNIYXNoKHN0b3JlZE9wdGlvbnMpO1xuICAgIGNvbnN0IG9wdGlvbkhhc2ggPSBnZXRDb2x1bW5zSGFzaChvcmlnaW5hbC52YWx1ZSk7XG4gICAgaWYgKG9wdGlvbkhhc2ggIT09IHN0b3JlSGFzaCkge1xuICAgICAgY29uc29sZS5sb2coXCJjb2x1bW5zIGNoYW5nZWQsIGlnbm9yZSBsb2NhbCBzdG9yYWdlXCIpO1xuICAgICAgLy8g5aaC5p6c5a2X5q615YiX5pyJ6L+H5L+u5pS577yM5YiZ5LiN5L2/55So5pys5Zyw6K6+572uXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gc3RvcmVkT3B0aW9ucztcbiAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgIGF3YWl0IHN1Ym1pdCh0cnVlKTtcbiAgfVxufTtcblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlKGNoYW5nZTogKGN1cnJlbnRDb2x1bW5zOiBSZWY8Q29sdW1uc0ZpbHRlckl0ZW1bXT4pID0+IFByb21pc2U8dm9pZD4pIHtcbiAgYXdhaXQgY2hhbmdlKGN1cnJlbnRDb2x1bW5zKTtcbiAgYXdhaXQgZG9fc2F2ZSgpO1xufVxuXG53YXRjaChcbiAgKCkgPT4ge1xuICAgIHJldHVybiBvcmlnaW5hbC52YWx1ZTtcbiAgfSxcbiAgYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgYXdhaXQgaW5pdCgpO1xuICB9LFxuICB7XG4gICAgaW1tZWRpYXRlOiB0cnVlXG4gIH1cbik7XG5cbmRlZmluZUV4cG9zZSh7XG4gIHN0YXJ0LFxuICBzYXZlOiBkb19zYXZlLFxuICB1cGRhdGUsXG4gIG9yaWdpbmFsLFxuICBjb2x1bW5zOiBjdXJyZW50Q29sdW1uc1xufSk7XG5cbmZ1bmN0aW9uIGJ1aWxkVGV4dChlbGVtZW50OiBhbnkpIHtcbiAgcmV0dXJuIGVsZW1lbnQubGFiZWwgfHwgZWxlbWVudC50aXRsZSB8fCBlbGVtZW50LmtleSB8fCBfdGV4dC52YWx1ZS51bm5hbWVkO1xufVxuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy10YWJsZS1jb2x1bW5zLWZpbHRlci1zaW1wbGUge1xuICBtaW4td2lkdGg6IDc2MHB4O1xuICBwYWRkaW5nLXRvcDogMjBweDtcbn1cblxuLmZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyIHtcbiAgOmZvY3VzIHtcbiAgICBvdXRsaW5lOiAwO1xuICB9XG5cbiAgW2ZsZXh+PVwiY3Jvc3M6Y2VudGVyXCJdIHtcbiAgICAtbXMtZmxleC1hbGlnbjogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIH1cblxuICBbZmxleH49XCJtYWluOmp1c3RpZnlcIl0ge1xuICAgIC1tcy1mbGV4LXBhY2s6IGp1c3RpZnk7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG5cbiAgW2ZsZXhdIHtcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG5cbiAgW2ZsZXgtYm94PVwiMVwiXSB7XG4gICAgZmxleC1ncm93OiAxO1xuICAgIGZsZXgtc2hyaW5rOiAxO1xuICB9XG5cbiAgW2ZsZXhdID4gKiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC5lbC1kcmF3ZXJfX2JvZHkge1xuICAgIGhlaWdodDogMDtcbiAgfVxuXG4gIC5mcy1kcmF3ZXItd3JhcHBlciB7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgfVxuXG4gIC5mcy1kcmF3ZXItZm9vdGVyIHtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICB9XG5cbiAgLmNvbXBvbmVudC0tbGlzdCB7XG4gICAgbWFyZ2luOiAtMjBweDtcblxuICAgIC5pdGVtLWxhYmVsIHtcbiAgICAgIGZsZXg6IDE7XG4gICAgICBtaW4td2lkdGg6IDA7XG5cbiAgICAgIC5hbnQtY2hlY2tib3ggKyBzcGFuIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB9XG4gICAgfVxuICAgIC5pdGVtLXJpZ2h0IHtcbiAgICAgIGZsZXgtc2hyaW5rOiAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG5cbiAgICAudGl0bGUge1xuICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgIH1cblxuICAgIC5jb21wb25lbnQtLWxpc3QtaXRlbSB7XG4gICAgICBwYWRkaW5nOiAxMHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuXG4gICAgICAmLmdob3N0IHtcbiAgICAgICAgb3BhY2l0eTogMC41O1xuICAgICAgfVxuXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gICAgICB9XG5cbiAgICAgIC5jb21wb25lbnQtLWxpc3QtaXRlbS1oYW5kbGUge1xuICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgY3Vyc29yOiBtb3ZlO1xuXG4gICAgICAgICYuZGlzYWJsZWQge1xuICAgICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy10b29sYmFyXCI+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKGl0ZW0sIGtleSkgb2YgY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImtleVwiPlxuICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLnNob3cgIT09IGZhbHNlXCI+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJ1aS5wb3BvdmVyLm5hbWVcIlxuICAgICAgICAgIHYtaWY9XCJrZXkgPT09ICdjb2x1bW5zJyAmJiBjb2x1bW5zRmlsdGVyICYmIGNvbHVtbnNGaWx0ZXI/Lm1vZGUgPT09ICdzaW1wbGUnXCJcbiAgICAgICAgICB2LW1vZGVsOlt1aS5wb3BvdmVyLnZpc2libGVdPVwicG9wb3ZlclZpc2libGVcIlxuICAgICAgICAgIGRpc3BsYXktZGlyZWN0aXZlPVwic2hvd1wiXG4gICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICA6d2lkdGg9XCI3NjBcIlxuICAgICAgICAgIHRyaWdnZXI9XCJjbGlja1wiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgI1t1aS5wb3BvdmVyLnRyaWdnZXJTbG90TmFtZV0+XG4gICAgICAgICAgICA8ZnMtYnV0dG9uIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJoYW5kbGVTaW1wbGVDbGlja1wiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8dGVtcGxhdGUgI1t1aS5wb3BvdmVyLmNvbnRlbnRTbG90TmFtZV0+XG4gICAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICAgIDppcz1cImNvbHVtbnNGaWx0ZXIuaXMgfHwgJ2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyJ1wiXG4gICAgICAgICAgICAgIHYtaWY9XCJjb2x1bW5zXCJcbiAgICAgICAgICAgICAgcmVmPVwiY29sdW1uc0ZpbHRlclJlZlwiXG4gICAgICAgICAgICAgIHYtbW9kZWw6c2hvdz1cInBvcG92ZXJWaXNpYmxlXCJcbiAgICAgICAgICAgICAgbW9kZT1cInNpbXBsZVwiXG4gICAgICAgICAgICAgIHYtYmluZD1cImNvbHVtbnNGaWx0ZXJcIlxuICAgICAgICAgICAgICA6Y29sdW1ucz1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICA6c3RvcmFnZT1cInN0b3JhZ2VcIlxuICAgICAgICAgICAgICBAdXBkYXRlOmNvbHVtbnM9XCIkZW1pdCgndXBkYXRlOmNvbHVtbnMnLCAkZXZlbnQpXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgIDxmcy1idXR0b24gdi1lbHNlIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLmNsaWNrKClcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDxjb21wb25lbnRcbiAgICAgIDppcz1cImNvbHVtbnNGaWx0ZXIuaXMgfHwgJ2ZzLXRhYmxlLWNvbHVtbnMtZmlsdGVyJ1wiXG4gICAgICB2LWlmPVwiY29sdW1ucyAmJiBjb2x1bW5zRmlsdGVyPy5tb2RlICE9PSAnc2ltcGxlJ1wiXG4gICAgICByZWY9XCJjb2x1bW5zRmlsdGVyUmVmXCJcbiAgICAgIDpzdG9yYWdlPVwic3RvcmFnZVwiXG4gICAgICB2LWJpbmQ9XCJjb2x1bW5zRmlsdGVyXCJcbiAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICBAdXBkYXRlOmNvbHVtbnM9XCIkZW1pdCgndXBkYXRlOmNvbHVtbnMnLCAkZXZlbnQpXCJcbiAgICAvPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgRnNUYWJsZUNvbHVtbnNGaWx0ZXIgZnJvbSBcIi4vZnMtdGFibGUtY29sdW1ucy1maWx0ZXIvaW5kZXgudnVlXCI7XG5pbXBvcnQgeyBzb3J0QnkgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBQcm9wVHlwZSwgcmVmLCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwuY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBCdXR0b25Qcm9wcywgQnV0dG9uc1Byb3BzLCBUYWJsZUNvbHVtbnNQcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSwgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG4vKipcbiAqIOW3peWFt+adoVxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzVG9vbGJhclwiLFxuICBjb21wb25lbnRzOiB7IEZzVGFibGVDb2x1bW5zRmlsdGVyIH0sXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uXG4gICAgICp7XG4gICAgICogICBzZWFyY2g6e30sIOafpeivolxuICAgICAqICAgcmVmcmVzaDp7fSwg5Yi35pawXG4gICAgICogICBjb21wYWN0Ont9LCDntKflh5HmqKHlvI9cbiAgICAgKiAgIGV4cG9ydDp7fSwg5a+85Ye6XG4gICAgICogICBjb2x1bW5zOnt9IOWIl+iuvue9rlxuICAgICAqfVxuICAgICAqKi9cbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW9k+WJjeaYr+WQpue0p+WHkeaooeW8j1xuICAgICAqL1xuICAgIGNvbXBhY3Q6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDliJfphY3nva5cbiAgICAgKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3QgYXMgUHJvcFR5cGU8VGFibGVDb2x1bW5zUHJvcHM+LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKbkv53lrZjnlKjmiLfliJforr7nva5cbiAgICAgKiDkvKBzdHJpbmfliJnooajnpLrkvKDlhaXnvJPlrZjnmoTkuLtrZXlcbiAgICAgKi9cbiAgICBzdG9yYWdlOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBCb29sZWFuXSxcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaPkuanvVxuICAgICAqL1xuICAgIHNsb3RzOiB7fSxcblxuICAgIC8qKlxuICAgICAqIOWIl+iuvue9rumFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnNGaWx0ZXI6IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxhbnk+XG4gICAgfVxuICB9LFxuICBlbWl0czogW1widXBkYXRlOmNvbHVtbnNcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eCkge1xuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuICAgIGNvbnN0IGNvbHVtbnNGaWx0ZXJSZWY6IFJlZiA9IHJlZigpO1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBkZWZhdWx0QnV0dG9uczogQnV0dG9uc1Byb3BzPHZvaWQ+ID0ge1xuICAgICAgICBjb2x1bW5zOiB7XG4gICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgIGNvbHVtbnNGaWx0ZXJSZWYudmFsdWUuc3RhcnQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIG1lcmdlKGRlZmF1bHRCdXR0b25zLCBwcm9wcy5idXR0b25zKTtcbiAgICAgIC8vIGlmIChkZWZhdWx0QnV0dG9ucy5zZWFyY2gpIHtcbiAgICAgIC8vICAgZGVmYXVsdEJ1dHRvbnMuc2VhcmNoLnR5cGUgPSBwcm9wcy5zZWFyY2ggPyBcInByaW1hcnlcIiA6IFwiZGVmYXVsdFwiO1xuICAgICAgLy8gfVxuICAgICAgLy8gaWYgKGRlZmF1bHRCdXR0b25zLmNvbXBhY3QpIHtcbiAgICAgIC8vICAgZGVmYXVsdEJ1dHRvbnMuY29tcGFjdC50eXBlID0gcHJvcHMuY29tcGFjdCA/IFwicHJpbWFyeVwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAvLyB9XG5cbiAgICAgIGxldCBzb3J0QXJyOiBCdXR0b25Qcm9wc1tdID0gW107XG4gICAgICBmb3IgKGxldCBkZWZhdWx0QnV0dG9uc0tleSBpbiBkZWZhdWx0QnV0dG9ucykge1xuICAgICAgICBzb3J0QXJyLnB1c2goe1xuICAgICAgICAgIC4uLmRlZmF1bHRCdXR0b25zW2RlZmF1bHRCdXR0b25zS2V5XSxcbiAgICAgICAgICBfa2V5OiBkZWZhdWx0QnV0dG9uc0tleVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBzb3J0ZWRCdXR0b25zOiBCdXR0b25zUHJvcHM8dm9pZD4gPSB7fTtcblxuICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICBzb3J0ZWRCdXR0b25zW19rZXldID0gaXRlbTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNvcnRlZEJ1dHRvbnM7XG4gICAgfSk7XG4gICAgY29uc3QgcG9wb3ZlclZpc2libGUgPSByZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZVNpbXBsZUNsaWNrID0gKCkgPT4ge1xuICAgICAgaWYgKHVpLnR5cGUgPT09IFwiZWxlbWVudFwiKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHBvcG92ZXJWaXNpYmxlLnZhbHVlID0gIXBvcG92ZXJWaXNpYmxlLnZhbHVlO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY29sdW1uc0ZpbHRlclJlZixcbiAgICAgIGNvbXB1dGVkQnV0dG9ucyxcbiAgICAgIHBvcG92ZXJWaXNpYmxlLFxuICAgICAgaGFuZGxlU2ltcGxlQ2xpY2tcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdG9vbGJhciB7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgLmZzLWJ1dHRvbiB7XG4gICAgbWFyZ2luLWxlZnQ6IDVweDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXRvb2xiYXJcIj5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBvZiBjb21wdXRlZEJ1dHRvbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2VcIj5cbiAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgIDppcz1cInVpLnBvcG92ZXIubmFtZVwiXG4gICAgICAgICAgdi1pZj1cImtleSA9PT0gJ2NvbHVtbnMnICYmIGNvbHVtbnNGaWx0ZXIgJiYgY29sdW1uc0ZpbHRlcj8ubW9kZSA9PT0gJ3NpbXBsZSdcIlxuICAgICAgICAgIHYtbW9kZWw6W3VpLnBvcG92ZXIudmlzaWJsZV09XCJwb3BvdmVyVmlzaWJsZVwiXG4gICAgICAgICAgZGlzcGxheS1kaXJlY3RpdmU9XCJzaG93XCJcbiAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgICAgIDp3aWR0aD1cIjc2MFwiXG4gICAgICAgICAgdHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnBvcG92ZXIudHJpZ2dlclNsb3ROYW1lXT5cbiAgICAgICAgICAgIDxmcy1idXR0b24gdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cImhhbmRsZVNpbXBsZUNsaWNrXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjW3VpLnBvcG92ZXIuY29udGVudFNsb3ROYW1lXT5cbiAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcbiAgICAgICAgICAgICAgdi1pZj1cImNvbHVtbnNcIlxuICAgICAgICAgICAgICByZWY9XCJjb2x1bW5zRmlsdGVyUmVmXCJcbiAgICAgICAgICAgICAgdi1tb2RlbDpzaG93PVwicG9wb3ZlclZpc2libGVcIlxuICAgICAgICAgICAgICBtb2RlPVwic2ltcGxlXCJcbiAgICAgICAgICAgICAgdi1iaW5kPVwiY29sdW1uc0ZpbHRlclwiXG4gICAgICAgICAgICAgIDpjb2x1bW5zPVwiY29sdW1uc1wiXG4gICAgICAgICAgICAgIDpzdG9yYWdlPVwic3RvcmFnZVwiXG4gICAgICAgICAgICAgIEB1cGRhdGU6Y29sdW1ucz1cIiRlbWl0KCd1cGRhdGU6Y29sdW1ucycsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWVsc2Ugdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uY2xpY2soKVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29sdW1uc0ZpbHRlci5pcyB8fCAnZnMtdGFibGUtY29sdW1ucy1maWx0ZXInXCJcbiAgICAgIHYtaWY9XCJjb2x1bW5zICYmIGNvbHVtbnNGaWx0ZXI/Lm1vZGUgIT09ICdzaW1wbGUnXCJcbiAgICAgIHJlZj1cImNvbHVtbnNGaWx0ZXJSZWZcIlxuICAgICAgOnN0b3JhZ2U9XCJzdG9yYWdlXCJcbiAgICAgIHYtYmluZD1cImNvbHVtbnNGaWx0ZXJcIlxuICAgICAgOmNvbHVtbnM9XCJjb2x1bW5zXCJcbiAgICAgIEB1cGRhdGU6Y29sdW1ucz1cIiRlbWl0KCd1cGRhdGU6Y29sdW1ucycsICRldmVudClcIlxuICAgIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCBGc1RhYmxlQ29sdW1uc0ZpbHRlciBmcm9tIFwiLi9mcy10YWJsZS1jb2x1bW5zLWZpbHRlci9pbmRleC52dWVcIjtcbmltcG9ydCB7IHNvcnRCeSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFByb3BUeXBlLCByZWYsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEJ1dHRvblByb3BzLCBCdXR0b25zUHJvcHMsIFRhYmxlQ29sdW1uc1Byb3BzIH0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZU1lcmdlLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbi8qKlxuICog5bel5YW35p2hXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNUb29sYmFyXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNUYWJsZUNvbHVtbnNGaWx0ZXIgfSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva5cbiAgICAgKntcbiAgICAgKiAgIHNlYXJjaDp7fSwg5p+l6K+iXG4gICAgICogICByZWZyZXNoOnt9LCDliLfmlrBcbiAgICAgKiAgIGNvbXBhY3Q6e30sIOe0p+WHkeaooeW8j1xuICAgICAqICAgZXhwb3J0Ont9LCDlr7zlh7pcbiAgICAgKiAgIGNvbHVtbnM6e30g5YiX6K6+572uXG4gICAgICp9XG4gICAgICoqL1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2T5YmN5piv5ZCm57Sn5YeR5qih5byPXG4gICAgICovXG4gICAgY29tcGFjdDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIl+mFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxUYWJsZUNvbHVtbnNQcm9wcz4sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuS/neWtmOeUqOaIt+WIl+iuvue9rlxuICAgICAqIOS8oHN0cmluZ+WImeihqOekuuS8oOWFpee8k+WtmOeahOS4u2tleVxuICAgICAqL1xuICAgIHN0b3JhZ2U6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEJvb2xlYW5dLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe9XG4gICAgICovXG4gICAgc2xvdHM6IHt9LFxuXG4gICAgLyoqXG4gICAgICog5YiX6K6+572u6YWN572uXG4gICAgICovXG4gICAgY29sdW1uc0ZpbHRlcjoge1xuICAgICAgdHlwZTogT2JqZWN0IGFzIFByb3BUeXBlPGFueT5cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6Y29sdW1uc1wiXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4KSB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29sdW1uc0ZpbHRlclJlZjogUmVmID0gcmVmKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGRlZmF1bHRCdXR0b25zOiBCdXR0b25zUHJvcHM8dm9pZD4gPSB7XG4gICAgICAgIGNvbHVtbnM6IHtcbiAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgY29sdW1uc0ZpbHRlclJlZi52YWx1ZS5zdGFydCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgbWVyZ2UoZGVmYXVsdEJ1dHRvbnMsIHByb3BzLmJ1dHRvbnMpO1xuICAgICAgLy8gaWYgKGRlZmF1bHRCdXR0b25zLnNlYXJjaCkge1xuICAgICAgLy8gICBkZWZhdWx0QnV0dG9ucy5zZWFyY2gudHlwZSA9IHByb3BzLnNlYXJjaCA/IFwicHJpbWFyeVwiIDogXCJkZWZhdWx0XCI7XG4gICAgICAvLyB9XG4gICAgICAvLyBpZiAoZGVmYXVsdEJ1dHRvbnMuY29tcGFjdCkge1xuICAgICAgLy8gICBkZWZhdWx0QnV0dG9ucy5jb21wYWN0LnR5cGUgPSBwcm9wcy5jb21wYWN0ID8gXCJwcmltYXJ5XCIgOiBcImRlZmF1bHRcIjtcbiAgICAgIC8vIH1cblxuICAgICAgbGV0IHNvcnRBcnI6IEJ1dHRvblByb3BzW10gPSBbXTtcbiAgICAgIGZvciAobGV0IGRlZmF1bHRCdXR0b25zS2V5IGluIGRlZmF1bHRCdXR0b25zKSB7XG4gICAgICAgIHNvcnRBcnIucHVzaCh7XG4gICAgICAgICAgLi4uZGVmYXVsdEJ1dHRvbnNbZGVmYXVsdEJ1dHRvbnNLZXldLFxuICAgICAgICAgIF9rZXk6IGRlZmF1bHRCdXR0b25zS2V5XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IHNvcnRlZEJ1dHRvbnM6IEJ1dHRvbnNQcm9wczx2b2lkPiA9IHt9O1xuXG4gICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XG4gICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XG4gICAgICAgIHNvcnRlZEJ1dHRvbnNbX2tleV0gPSBpdGVtO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gc29ydGVkQnV0dG9ucztcbiAgICB9KTtcbiAgICBjb25zdCBwb3BvdmVyVmlzaWJsZSA9IHJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlU2ltcGxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodWkudHlwZSA9PT0gXCJlbGVtZW50XCIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcG9wb3ZlclZpc2libGUudmFsdWUgPSAhcG9wb3ZlclZpc2libGUudmFsdWU7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjb2x1bW5zRmlsdGVyUmVmLFxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxuICAgICAgcG9wb3ZlclZpc2libGUsXG4gICAgICBoYW5kbGVTaW1wbGVDbGlja1xuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy10b29sYmFyIHtcbiAgZGlzcGxheTogZmxleDtcblxuICAuZnMtYnV0dG9uIHtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICB9XG59XG48L3N0eWxlPlxuIiwiLyoqIVxuICogU29ydGFibGUgMS4xNC4wXG4gKiBAYXV0aG9yXHRSdWJhWGEgICA8dHJhc2hAcnViYXhhLm9yZz5cbiAqIEBhdXRob3JcdG93ZW5tICAgIDxvd2VuMjMzNTVAZ21haWwuY29tPlxuICogQGxpY2Vuc2UgTUlUXG4gKi9cbmZ1bmN0aW9uIG93bktleXMob2JqZWN0LCBlbnVtZXJhYmxlT25seSkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqZWN0KTtcblxuICAgIGlmIChlbnVtZXJhYmxlT25seSkge1xuICAgICAgc3ltYm9scyA9IHN5bWJvbHMuZmlsdGVyKGZ1bmN0aW9uIChzeW0pIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0LCBzeW0pLmVudW1lcmFibGU7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBrZXlzLnB1c2guYXBwbHkoa2V5cywgc3ltYm9scyk7XG4gIH1cblxuICByZXR1cm4ga2V5cztcbn1cblxuZnVuY3Rpb24gX29iamVjdFNwcmVhZDIodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXSAhPSBudWxsID8gYXJndW1lbnRzW2ldIDoge307XG5cbiAgICBpZiAoaSAlIDIpIHtcbiAgICAgIG93bktleXMoT2JqZWN0KHNvdXJjZSksIHRydWUpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBfZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHNvdXJjZVtrZXldKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoc291cmNlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG93bktleXMoT2JqZWN0KHNvdXJjZSkpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF90eXBlb2Yob2JqKSB7XG4gIFwiQGJhYmVsL2hlbHBlcnMgLSB0eXBlb2ZcIjtcblxuICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIpIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICBfdHlwZW9mID0gZnVuY3Rpb24gKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBfdHlwZW9mKG9iaik7XG59XG5cbmZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHtcbiAgaWYgKGtleSBpbiBvYmopIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIG9ialtrZXldID0gdmFsdWU7XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgICAgZm9yICh2YXIga2V5IGluIHNvdXJjZSkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuXG4gIHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7XG4gIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9O1xuICB2YXIgdGFyZ2V0ID0ge307XG4gIHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTtcbiAgdmFyIGtleSwgaTtcblxuICBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIGtleSA9IHNvdXJjZUtleXNbaV07XG4gICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKHNvdXJjZSwgZXhjbHVkZWQpIHtcbiAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307XG5cbiAgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpO1xuXG4gIHZhciBrZXksIGk7XG5cbiAgaWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBzb3VyY2VTeW1ib2xLZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBrZXkgPSBzb3VyY2VTeW1ib2xLZXlzW2ldO1xuICAgICAgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHNvdXJjZSwga2V5KSkgY29udGludWU7XG4gICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0YXJnZXQ7XG59XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHtcbiAgcmV0dXJuIF9hcnJheVdpdGhvdXRIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyKSB8fCBfbm9uSXRlcmFibGVTcHJlYWQoKTtcbn1cblxuZnVuY3Rpb24gX2FycmF5V2l0aG91dEhvbGVzKGFycikge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkoYXJyKTtcbn1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheShpdGVyKSB7XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGl0ZXJbU3ltYm9sLml0ZXJhdG9yXSAhPSBudWxsIHx8IGl0ZXJbXCJAQGl0ZXJhdG9yXCJdICE9IG51bGwpIHJldHVybiBBcnJheS5mcm9tKGl0ZXIpO1xufVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7XG4gIGlmICghbykgcmV0dXJuO1xuICBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pO1xuICB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7XG4gIGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7XG4gIGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pO1xuICBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7XG59XG5cbmZ1bmN0aW9uIF9hcnJheUxpa2VUb0FycmF5KGFyciwgbGVuKSB7XG4gIGlmIChsZW4gPT0gbnVsbCB8fCBsZW4gPiBhcnIubGVuZ3RoKSBsZW4gPSBhcnIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgYXJyMltpXSA9IGFycltpXTtcblxuICByZXR1cm4gYXJyMjtcbn1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlU3ByZWFkKCkge1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIHNwcmVhZCBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTtcbn1cblxudmFyIHZlcnNpb24gPSBcIjEuMTQuMFwiO1xuXG5mdW5jdGlvbiB1c2VyQWdlbnQocGF0dGVybikge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93Lm5hdmlnYXRvcikge1xuICAgIHJldHVybiAhISAvKkBfX1BVUkVfXyovbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaChwYXR0ZXJuKTtcbiAgfVxufVxuXG52YXIgSUUxMU9yTGVzcyA9IHVzZXJBZ2VudCgvKD86VHJpZGVudC4qcnZbIDpdPzExXFwufG1zaWV8aWVtb2JpbGV8V2luZG93cyBQaG9uZSkvaSk7XG52YXIgRWRnZSA9IHVzZXJBZ2VudCgvRWRnZS9pKTtcbnZhciBGaXJlRm94ID0gdXNlckFnZW50KC9maXJlZm94L2kpO1xudmFyIFNhZmFyaSA9IHVzZXJBZ2VudCgvc2FmYXJpL2kpICYmICF1c2VyQWdlbnQoL2Nocm9tZS9pKSAmJiAhdXNlckFnZW50KC9hbmRyb2lkL2kpO1xudmFyIElPUyA9IHVzZXJBZ2VudCgvaVAoYWR8b2R8aG9uZSkvaSk7XG52YXIgQ2hyb21lRm9yQW5kcm9pZCA9IHVzZXJBZ2VudCgvY2hyb21lL2kpICYmIHVzZXJBZ2VudCgvYW5kcm9pZC9pKTtcblxudmFyIGNhcHR1cmVNb2RlID0ge1xuICBjYXB0dXJlOiBmYWxzZSxcbiAgcGFzc2l2ZTogZmFsc2Vcbn07XG5cbmZ1bmN0aW9uIG9uKGVsLCBldmVudCwgZm4pIHtcbiAgZWwuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgZm4sICFJRTExT3JMZXNzICYmIGNhcHR1cmVNb2RlKTtcbn1cblxuZnVuY3Rpb24gb2ZmKGVsLCBldmVudCwgZm4pIHtcbiAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudCwgZm4sICFJRTExT3JMZXNzICYmIGNhcHR1cmVNb2RlKTtcbn1cblxuZnVuY3Rpb24gbWF0Y2hlcyhcbi8qKkhUTUxFbGVtZW50Ki9cbmVsLFxuLyoqU3RyaW5nKi9cbnNlbGVjdG9yKSB7XG4gIGlmICghc2VsZWN0b3IpIHJldHVybjtcbiAgc2VsZWN0b3JbMF0gPT09ICc+JyAmJiAoc2VsZWN0b3IgPSBzZWxlY3Rvci5zdWJzdHJpbmcoMSkpO1xuXG4gIGlmIChlbCkge1xuICAgIHRyeSB7XG4gICAgICBpZiAoZWwubWF0Y2hlcykge1xuICAgICAgICByZXR1cm4gZWwubWF0Y2hlcyhzZWxlY3Rvcik7XG4gICAgICB9IGVsc2UgaWYgKGVsLm1zTWF0Y2hlc1NlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBlbC5tc01hdGNoZXNTZWxlY3RvcihzZWxlY3Rvcik7XG4gICAgICB9IGVsc2UgaWYgKGVsLndlYmtpdE1hdGNoZXNTZWxlY3Rvcikge1xuICAgICAgICByZXR1cm4gZWwud2Via2l0TWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChfKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRQYXJlbnRPckhvc3QoZWwpIHtcbiAgcmV0dXJuIGVsLmhvc3QgJiYgZWwgIT09IGRvY3VtZW50ICYmIGVsLmhvc3Qubm9kZVR5cGUgPyBlbC5ob3N0IDogZWwucGFyZW50Tm9kZTtcbn1cblxuZnVuY3Rpb24gY2xvc2VzdChcbi8qKkhUTUxFbGVtZW50Ki9cbmVsLFxuLyoqU3RyaW5nKi9cbnNlbGVjdG9yLFxuLyoqSFRNTEVsZW1lbnQqL1xuY3R4LCBpbmNsdWRlQ1RYKSB7XG4gIGlmIChlbCkge1xuICAgIGN0eCA9IGN0eCB8fCBkb2N1bWVudDtcblxuICAgIGRvIHtcbiAgICAgIGlmIChzZWxlY3RvciAhPSBudWxsICYmIChzZWxlY3RvclswXSA9PT0gJz4nID8gZWwucGFyZW50Tm9kZSA9PT0gY3R4ICYmIG1hdGNoZXMoZWwsIHNlbGVjdG9yKSA6IG1hdGNoZXMoZWwsIHNlbGVjdG9yKSkgfHwgaW5jbHVkZUNUWCAmJiBlbCA9PT0gY3R4KSB7XG4gICAgICAgIHJldHVybiBlbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsID09PSBjdHgpIGJyZWFrO1xuICAgICAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuICAgIH0gd2hpbGUgKGVsID0gZ2V0UGFyZW50T3JIb3N0KGVsKSk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIFJfU1BBQ0UgPSAvXFxzKy9nO1xuXG5mdW5jdGlvbiB0b2dnbGVDbGFzcyhlbCwgbmFtZSwgc3RhdGUpIHtcbiAgaWYgKGVsICYmIG5hbWUpIHtcbiAgICBpZiAoZWwuY2xhc3NMaXN0KSB7XG4gICAgICBlbC5jbGFzc0xpc3Rbc3RhdGUgPyAnYWRkJyA6ICdyZW1vdmUnXShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNsYXNzTmFtZSA9ICgnICcgKyBlbC5jbGFzc05hbWUgKyAnICcpLnJlcGxhY2UoUl9TUEFDRSwgJyAnKS5yZXBsYWNlKCcgJyArIG5hbWUgKyAnICcsICcgJyk7XG4gICAgICBlbC5jbGFzc05hbWUgPSAoY2xhc3NOYW1lICsgKHN0YXRlID8gJyAnICsgbmFtZSA6ICcnKSkucmVwbGFjZShSX1NQQUNFLCAnICcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjc3MoZWwsIHByb3AsIHZhbCkge1xuICB2YXIgc3R5bGUgPSBlbCAmJiBlbC5zdHlsZTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICBpZiAodmFsID09PSB2b2lkIDApIHtcbiAgICAgIGlmIChkb2N1bWVudC5kZWZhdWx0VmlldyAmJiBkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKSB7XG4gICAgICAgIHZhbCA9IGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZWwsICcnKTtcbiAgICAgIH0gZWxzZSBpZiAoZWwuY3VycmVudFN0eWxlKSB7XG4gICAgICAgIHZhbCA9IGVsLmN1cnJlbnRTdHlsZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHByb3AgPT09IHZvaWQgMCA/IHZhbCA6IHZhbFtwcm9wXTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCEocHJvcCBpbiBzdHlsZSkgJiYgcHJvcC5pbmRleE9mKCd3ZWJraXQnKSA9PT0gLTEpIHtcbiAgICAgICAgcHJvcCA9ICctd2Via2l0LScgKyBwcm9wO1xuICAgICAgfVxuXG4gICAgICBzdHlsZVtwcm9wXSA9IHZhbCArICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyA/ICcnIDogJ3B4Jyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIG1hdHJpeChlbCwgc2VsZk9ubHkpIHtcbiAgdmFyIGFwcGxpZWRUcmFuc2Zvcm1zID0gJyc7XG5cbiAgaWYgKHR5cGVvZiBlbCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcHBsaWVkVHJhbnNmb3JtcyA9IGVsO1xuICB9IGVsc2Uge1xuICAgIGRvIHtcbiAgICAgIHZhciB0cmFuc2Zvcm0gPSBjc3MoZWwsICd0cmFuc2Zvcm0nKTtcblxuICAgICAgaWYgKHRyYW5zZm9ybSAmJiB0cmFuc2Zvcm0gIT09ICdub25lJykge1xuICAgICAgICBhcHBsaWVkVHJhbnNmb3JtcyA9IHRyYW5zZm9ybSArICcgJyArIGFwcGxpZWRUcmFuc2Zvcm1zO1xuICAgICAgfVxuICAgICAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXG4gICAgfSB3aGlsZSAoIXNlbGZPbmx5ICYmIChlbCA9IGVsLnBhcmVudE5vZGUpKTtcbiAgfVxuXG4gIHZhciBtYXRyaXhGbiA9IHdpbmRvdy5ET01NYXRyaXggfHwgd2luZG93LldlYktpdENTU01hdHJpeCB8fCB3aW5kb3cuQ1NTTWF0cml4IHx8IHdpbmRvdy5NU0NTU01hdHJpeDtcbiAgLypqc2hpbnQgLVcwNTYgKi9cblxuICByZXR1cm4gbWF0cml4Rm4gJiYgbmV3IG1hdHJpeEZuKGFwcGxpZWRUcmFuc2Zvcm1zKTtcbn1cblxuZnVuY3Rpb24gZmluZChjdHgsIHRhZ05hbWUsIGl0ZXJhdG9yKSB7XG4gIGlmIChjdHgpIHtcbiAgICB2YXIgbGlzdCA9IGN0eC5nZXRFbGVtZW50c0J5VGFnTmFtZSh0YWdOYW1lKSxcbiAgICAgICAgaSA9IDAsXG4gICAgICAgIG4gPSBsaXN0Lmxlbmd0aDtcblxuICAgIGlmIChpdGVyYXRvcikge1xuICAgICAgZm9yICg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgaXRlcmF0b3IobGlzdFtpXSwgaSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpc3Q7XG4gIH1cblxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKSB7XG4gIHZhciBzY3JvbGxpbmdFbGVtZW50ID0gZG9jdW1lbnQuc2Nyb2xsaW5nRWxlbWVudDtcblxuICBpZiAoc2Nyb2xsaW5nRWxlbWVudCkge1xuICAgIHJldHVybiBzY3JvbGxpbmdFbGVtZW50O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUgXCJib3VuZGluZyBjbGllbnQgcmVjdFwiIG9mIGdpdmVuIGVsZW1lbnRcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbCAgICAgICAgICAgICAgICAgICAgICAgVGhlIGVsZW1lbnQgd2hvc2UgYm91bmRpbmdDbGllbnRSZWN0IGlzIHdhbnRlZFxuICogQHBhcmFtICB7W0Jvb2xlYW5dfSByZWxhdGl2ZVRvQ29udGFpbmluZ0Jsb2NrICBXaGV0aGVyIHRoZSByZWN0IHNob3VsZCBiZSByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyBibG9jayBvZiAoaW5jbHVkaW5nKSB0aGUgY29udGFpbmVyXG4gKiBAcGFyYW0gIHtbQm9vbGVhbl19IHJlbGF0aXZlVG9Ob25TdGF0aWNQYXJlbnQgIFdoZXRoZXIgdGhlIHJlY3Qgc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZSByZWxhdGl2ZSBwYXJlbnQgb2YgKGluY2x1ZGluZykgdGhlIGNvbnRhaWVuclxuICogQHBhcmFtICB7W0Jvb2xlYW5dfSB1bmRvU2NhbGUgICAgICAgICAgICAgICAgICBXaGV0aGVyIHRoZSBjb250YWluZXIncyBzY2FsZSgpIHNob3VsZCBiZSB1bmRvbmVcbiAqIEBwYXJhbSAge1tIVE1MRWxlbWVudF19IGNvbnRhaW5lciAgICAgICAgICAgICAgVGhlIHBhcmVudCB0aGUgZWxlbWVudCB3aWxsIGJlIHBsYWNlZCBpblxuICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgYm91bmRpbmdDbGllbnRSZWN0IG9mIGVsLCB3aXRoIHNwZWNpZmllZCBhZGp1c3RtZW50c1xuICovXG5cblxuZnVuY3Rpb24gZ2V0UmVjdChlbCwgcmVsYXRpdmVUb0NvbnRhaW5pbmdCbG9jaywgcmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCwgdW5kb1NjYWxlLCBjb250YWluZXIpIHtcbiAgaWYgKCFlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgJiYgZWwgIT09IHdpbmRvdykgcmV0dXJuO1xuICB2YXIgZWxSZWN0LCB0b3AsIGxlZnQsIGJvdHRvbSwgcmlnaHQsIGhlaWdodCwgd2lkdGg7XG5cbiAgaWYgKGVsICE9PSB3aW5kb3cgJiYgZWwucGFyZW50Tm9kZSAmJiBlbCAhPT0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpKSB7XG4gICAgZWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdG9wID0gZWxSZWN0LnRvcDtcbiAgICBsZWZ0ID0gZWxSZWN0LmxlZnQ7XG4gICAgYm90dG9tID0gZWxSZWN0LmJvdHRvbTtcbiAgICByaWdodCA9IGVsUmVjdC5yaWdodDtcbiAgICBoZWlnaHQgPSBlbFJlY3QuaGVpZ2h0O1xuICAgIHdpZHRoID0gZWxSZWN0LndpZHRoO1xuICB9IGVsc2Uge1xuICAgIHRvcCA9IDA7XG4gICAgbGVmdCA9IDA7XG4gICAgYm90dG9tID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIHJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGg7XG4gICAgaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgIHdpZHRoID0gd2luZG93LmlubmVyV2lkdGg7XG4gIH1cblxuICBpZiAoKHJlbGF0aXZlVG9Db250YWluaW5nQmxvY2sgfHwgcmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCkgJiYgZWwgIT09IHdpbmRvdykge1xuICAgIC8vIEFkanVzdCBmb3IgdHJhbnNsYXRlKClcbiAgICBjb250YWluZXIgPSBjb250YWluZXIgfHwgZWwucGFyZW50Tm9kZTsgLy8gc29sdmVzICMxMTIzIChzZWU6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8zNzk1MzgwNi82MDg4MzEyKVxuICAgIC8vIE5vdCBuZWVkZWQgb24gPD0gSUUxMVxuXG4gICAgaWYgKCFJRTExT3JMZXNzKSB7XG4gICAgICBkbyB7XG4gICAgICAgIGlmIChjb250YWluZXIgJiYgY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAmJiAoY3NzKGNvbnRhaW5lciwgJ3RyYW5zZm9ybScpICE9PSAnbm9uZScgfHwgcmVsYXRpdmVUb05vblN0YXRpY1BhcmVudCAmJiBjc3MoY29udGFpbmVyLCAncG9zaXRpb24nKSAhPT0gJ3N0YXRpYycpKSB7XG4gICAgICAgICAgdmFyIGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7IC8vIFNldCByZWxhdGl2ZSB0byBlZGdlcyBvZiBwYWRkaW5nIGJveCBvZiBjb250YWluZXJcblxuICAgICAgICAgIHRvcCAtPSBjb250YWluZXJSZWN0LnRvcCArIHBhcnNlSW50KGNzcyhjb250YWluZXIsICdib3JkZXItdG9wLXdpZHRoJykpO1xuICAgICAgICAgIGxlZnQgLT0gY29udGFpbmVyUmVjdC5sZWZ0ICsgcGFyc2VJbnQoY3NzKGNvbnRhaW5lciwgJ2JvcmRlci1sZWZ0LXdpZHRoJykpO1xuICAgICAgICAgIGJvdHRvbSA9IHRvcCArIGVsUmVjdC5oZWlnaHQ7XG4gICAgICAgICAgcmlnaHQgPSBsZWZ0ICsgZWxSZWN0LndpZHRoO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8qIGpzaGludCBib3NzOnRydWUgKi9cblxuICAgICAgfSB3aGlsZSAoY29udGFpbmVyID0gY29udGFpbmVyLnBhcmVudE5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh1bmRvU2NhbGUgJiYgZWwgIT09IHdpbmRvdykge1xuICAgIC8vIEFkanVzdCBmb3Igc2NhbGUoKVxuICAgIHZhciBlbE1hdHJpeCA9IG1hdHJpeChjb250YWluZXIgfHwgZWwpLFxuICAgICAgICBzY2FsZVggPSBlbE1hdHJpeCAmJiBlbE1hdHJpeC5hLFxuICAgICAgICBzY2FsZVkgPSBlbE1hdHJpeCAmJiBlbE1hdHJpeC5kO1xuXG4gICAgaWYgKGVsTWF0cml4KSB7XG4gICAgICB0b3AgLz0gc2NhbGVZO1xuICAgICAgbGVmdCAvPSBzY2FsZVg7XG4gICAgICB3aWR0aCAvPSBzY2FsZVg7XG4gICAgICBoZWlnaHQgLz0gc2NhbGVZO1xuICAgICAgYm90dG9tID0gdG9wICsgaGVpZ2h0O1xuICAgICAgcmlnaHQgPSBsZWZ0ICsgd2lkdGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IHRvcCxcbiAgICBsZWZ0OiBsZWZ0LFxuICAgIGJvdHRvbTogYm90dG9tLFxuICAgIHJpZ2h0OiByaWdodCxcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHRcbiAgfTtcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGEgc2lkZSBvZiBhbiBlbGVtZW50IGlzIHNjcm9sbGVkIHBhc3QgYSBzaWRlIG9mIGl0cyBwYXJlbnRzXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gIGVsICAgICAgICAgICBUaGUgZWxlbWVudCB3aG8ncyBzaWRlIGJlaW5nIHNjcm9sbGVkIG91dCBvZiB2aWV3IGlzIGluIHF1ZXN0aW9uXG4gKiBAcGFyYW0gIHtTdHJpbmd9ICAgICAgIGVsU2lkZSAgICAgICBTaWRlIG9mIHRoZSBlbGVtZW50IGluIHF1ZXN0aW9uICgndG9wJywgJ2xlZnQnLCAncmlnaHQnLCAnYm90dG9tJylcbiAqIEBwYXJhbSAge1N0cmluZ30gICAgICAgcGFyZW50U2lkZSAgIFNpZGUgb2YgdGhlIHBhcmVudCBpbiBxdWVzdGlvbiAoJ3RvcCcsICdsZWZ0JywgJ3JpZ2h0JywgJ2JvdHRvbScpXG4gKiBAcmV0dXJuIHtIVE1MRWxlbWVudH0gICAgICAgICAgICAgICBUaGUgcGFyZW50IHNjcm9sbCBlbGVtZW50IHRoYXQgdGhlIGVsJ3Mgc2lkZSBpcyBzY3JvbGxlZCBwYXN0LCBvciBudWxsIGlmIHRoZXJlIGlzIG5vIHN1Y2ggZWxlbWVudFxuICovXG5cblxuZnVuY3Rpb24gaXNTY3JvbGxlZFBhc3QoZWwsIGVsU2lkZSwgcGFyZW50U2lkZSkge1xuICB2YXIgcGFyZW50ID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZWwsIHRydWUpLFxuICAgICAgZWxTaWRlVmFsID0gZ2V0UmVjdChlbClbZWxTaWRlXTtcbiAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXG4gIHdoaWxlIChwYXJlbnQpIHtcbiAgICB2YXIgcGFyZW50U2lkZVZhbCA9IGdldFJlY3QocGFyZW50KVtwYXJlbnRTaWRlXSxcbiAgICAgICAgdmlzaWJsZSA9IHZvaWQgMDtcblxuICAgIGlmIChwYXJlbnRTaWRlID09PSAndG9wJyB8fCBwYXJlbnRTaWRlID09PSAnbGVmdCcpIHtcbiAgICAgIHZpc2libGUgPSBlbFNpZGVWYWwgPj0gcGFyZW50U2lkZVZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgdmlzaWJsZSA9IGVsU2lkZVZhbCA8PSBwYXJlbnRTaWRlVmFsO1xuICAgIH1cblxuICAgIGlmICghdmlzaWJsZSkgcmV0dXJuIHBhcmVudDtcbiAgICBpZiAocGFyZW50ID09PSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCkpIGJyZWFrO1xuICAgIHBhcmVudCA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KHBhcmVudCwgZmFsc2UpO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuLyoqXG4gKiBHZXRzIG50aCBjaGlsZCBvZiBlbCwgaWdub3JpbmcgaGlkZGVuIGNoaWxkcmVuLCBzb3J0YWJsZSdzIGVsZW1lbnRzIChkb2VzIG5vdCBpZ25vcmUgY2xvbmUgaWYgaXQncyB2aXNpYmxlKVxuICogYW5kIG5vbi1kcmFnZ2FibGUgZWxlbWVudHNcbiAqIEBwYXJhbSAge0hUTUxFbGVtZW50fSBlbCAgICAgICBUaGUgcGFyZW50IGVsZW1lbnRcbiAqIEBwYXJhbSAge051bWJlcn0gY2hpbGROdW0gICAgICBUaGUgaW5kZXggb2YgdGhlIGNoaWxkXG4gKiBAcGFyYW0gIHtPYmplY3R9IG9wdGlvbnMgICAgICAgUGFyZW50IFNvcnRhYmxlJ3Mgb3B0aW9uc1xuICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgICAgICAgIFRoZSBjaGlsZCBhdCBpbmRleCBjaGlsZE51bSwgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAqL1xuXG5cbmZ1bmN0aW9uIGdldENoaWxkKGVsLCBjaGlsZE51bSwgb3B0aW9ucywgaW5jbHVkZURyYWdFbCkge1xuICB2YXIgY3VycmVudENoaWxkID0gMCxcbiAgICAgIGkgPSAwLFxuICAgICAgY2hpbGRyZW4gPSBlbC5jaGlsZHJlbjtcblxuICB3aGlsZSAoaSA8IGNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmIChjaGlsZHJlbltpXS5zdHlsZS5kaXNwbGF5ICE9PSAnbm9uZScgJiYgY2hpbGRyZW5baV0gIT09IFNvcnRhYmxlLmdob3N0ICYmIChpbmNsdWRlRHJhZ0VsIHx8IGNoaWxkcmVuW2ldICE9PSBTb3J0YWJsZS5kcmFnZ2VkKSAmJiBjbG9zZXN0KGNoaWxkcmVuW2ldLCBvcHRpb25zLmRyYWdnYWJsZSwgZWwsIGZhbHNlKSkge1xuICAgICAgaWYgKGN1cnJlbnRDaGlsZCA9PT0gY2hpbGROdW0pIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2ldO1xuICAgICAgfVxuXG4gICAgICBjdXJyZW50Q2hpbGQrKztcbiAgICB9XG5cbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbi8qKlxuICogR2V0cyB0aGUgbGFzdCBjaGlsZCBpbiB0aGUgZWwsIGlnbm9yaW5nIGdob3N0RWwgb3IgaW52aXNpYmxlIGVsZW1lbnRzIChjbG9uZXMpXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgICAgUGFyZW50IGVsZW1lbnRcbiAqIEBwYXJhbSAge3NlbGVjdG9yfSBzZWxlY3RvciAgICBBbnkgb3RoZXIgZWxlbWVudHMgdGhhdCBzaG91bGQgYmUgaWdub3JlZFxuICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgICAgICAgIFRoZSBsYXN0IGNoaWxkLCBpZ25vcmluZyBnaG9zdEVsXG4gKi9cblxuXG5mdW5jdGlvbiBsYXN0Q2hpbGQoZWwsIHNlbGVjdG9yKSB7XG4gIHZhciBsYXN0ID0gZWwubGFzdEVsZW1lbnRDaGlsZDtcblxuICB3aGlsZSAobGFzdCAmJiAobGFzdCA9PT0gU29ydGFibGUuZ2hvc3QgfHwgY3NzKGxhc3QsICdkaXNwbGF5JykgPT09ICdub25lJyB8fCBzZWxlY3RvciAmJiAhbWF0Y2hlcyhsYXN0LCBzZWxlY3RvcikpKSB7XG4gICAgbGFzdCA9IGxhc3QucHJldmlvdXNFbGVtZW50U2libGluZztcbiAgfVxuXG4gIHJldHVybiBsYXN0IHx8IG51bGw7XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4IG9mIGFuIGVsZW1lbnQgd2l0aGluIGl0cyBwYXJlbnQgZm9yIGEgc2VsZWN0ZWQgc2V0IG9mXG4gKiBlbGVtZW50c1xuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsXG4gKiBAcGFyYW0gIHtzZWxlY3Rvcn0gc2VsZWN0b3JcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuXG5cbmZ1bmN0aW9uIGluZGV4KGVsLCBzZWxlY3Rvcikge1xuICB2YXIgaW5kZXggPSAwO1xuXG4gIGlmICghZWwgfHwgIWVsLnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXG5cbiAgd2hpbGUgKGVsID0gZWwucHJldmlvdXNFbGVtZW50U2libGluZykge1xuICAgIGlmIChlbC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpICE9PSAnVEVNUExBVEUnICYmIGVsICE9PSBTb3J0YWJsZS5jbG9uZSAmJiAoIXNlbGVjdG9yIHx8IG1hdGNoZXMoZWwsIHNlbGVjdG9yKSkpIHtcbiAgICAgIGluZGV4Kys7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluZGV4O1xufVxuLyoqXG4gKiBSZXR1cm5zIHRoZSBzY3JvbGwgb2Zmc2V0IG9mIHRoZSBnaXZlbiBlbGVtZW50LCBhZGRlZCB3aXRoIGFsbCB0aGUgc2Nyb2xsIG9mZnNldHMgb2YgcGFyZW50IGVsZW1lbnRzLlxuICogVGhlIHZhbHVlIGlzIHJldHVybmVkIGluIHJlYWwgcGl4ZWxzLlxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGVsXG4gKiBAcmV0dXJuIHtBcnJheX0gICAgICAgICAgICAgT2Zmc2V0cyBpbiB0aGUgZm9ybWF0IG9mIFtsZWZ0LCB0b3BdXG4gKi9cblxuXG5mdW5jdGlvbiBnZXRSZWxhdGl2ZVNjcm9sbE9mZnNldChlbCkge1xuICB2YXIgb2Zmc2V0TGVmdCA9IDAsXG4gICAgICBvZmZzZXRUb3AgPSAwLFxuICAgICAgd2luU2Nyb2xsZXIgPSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG5cbiAgaWYgKGVsKSB7XG4gICAgZG8ge1xuICAgICAgdmFyIGVsTWF0cml4ID0gbWF0cml4KGVsKSxcbiAgICAgICAgICBzY2FsZVggPSBlbE1hdHJpeC5hLFxuICAgICAgICAgIHNjYWxlWSA9IGVsTWF0cml4LmQ7XG4gICAgICBvZmZzZXRMZWZ0ICs9IGVsLnNjcm9sbExlZnQgKiBzY2FsZVg7XG4gICAgICBvZmZzZXRUb3AgKz0gZWwuc2Nyb2xsVG9wICogc2NhbGVZO1xuICAgIH0gd2hpbGUgKGVsICE9PSB3aW5TY3JvbGxlciAmJiAoZWwgPSBlbC5wYXJlbnROb2RlKSk7XG4gIH1cblxuICByZXR1cm4gW29mZnNldExlZnQsIG9mZnNldFRvcF07XG59XG4vKipcbiAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBvYmplY3Qgd2l0aGluIHRoZSBnaXZlbiBhcnJheVxuICogQHBhcmFtICB7QXJyYXl9IGFyciAgIEFycmF5IHRoYXQgbWF5IG9yIG1heSBub3QgaG9sZCB0aGUgb2JqZWN0XG4gKiBAcGFyYW0gIHtPYmplY3R9IG9iaiAgQW4gb2JqZWN0IHRoYXQgaGFzIGEga2V5LXZhbHVlIHBhaXIgdW5pcXVlIHRvIGFuZCBpZGVudGljYWwgdG8gYSBrZXktdmFsdWUgcGFpciBpbiB0aGUgb2JqZWN0IHlvdSB3YW50IHRvIGZpbmRcbiAqIEByZXR1cm4ge051bWJlcn0gICAgICBUaGUgaW5kZXggb2YgdGhlIG9iamVjdCBpbiB0aGUgYXJyYXksIG9yIC0xXG4gKi9cblxuXG5mdW5jdGlvbiBpbmRleE9mT2JqZWN0KGFyciwgb2JqKSB7XG4gIGZvciAodmFyIGkgaW4gYXJyKSB7XG4gICAgaWYgKCFhcnIuaGFzT3duUHJvcGVydHkoaSkpIGNvbnRpbnVlO1xuXG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIG9ialtrZXldID09PSBhcnJbaV1ba2V5XSkgcmV0dXJuIE51bWJlcihpKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTE7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsLCBpbmNsdWRlU2VsZikge1xuICAvLyBza2lwIHRvIHdpbmRvd1xuICBpZiAoIWVsIHx8ICFlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpIHJldHVybiBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG4gIHZhciBlbGVtID0gZWw7XG4gIHZhciBnb3RTZWxmID0gZmFsc2U7XG5cbiAgZG8ge1xuICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gZ2V0IGVsZW0gY3NzIGlmIGl0IGlzbid0IGV2ZW4gb3ZlcmZsb3dpbmcgaW4gdGhlIGZpcnN0IHBsYWNlIChwZXJmb3JtYW5jZSlcbiAgICBpZiAoZWxlbS5jbGllbnRXaWR0aCA8IGVsZW0uc2Nyb2xsV2lkdGggfHwgZWxlbS5jbGllbnRIZWlnaHQgPCBlbGVtLnNjcm9sbEhlaWdodCkge1xuICAgICAgdmFyIGVsZW1DU1MgPSBjc3MoZWxlbSk7XG5cbiAgICAgIGlmIChlbGVtLmNsaWVudFdpZHRoIDwgZWxlbS5zY3JvbGxXaWR0aCAmJiAoZWxlbUNTUy5vdmVyZmxvd1ggPT0gJ2F1dG8nIHx8IGVsZW1DU1Mub3ZlcmZsb3dYID09ICdzY3JvbGwnKSB8fCBlbGVtLmNsaWVudEhlaWdodCA8IGVsZW0uc2Nyb2xsSGVpZ2h0ICYmIChlbGVtQ1NTLm92ZXJmbG93WSA9PSAnYXV0bycgfHwgZWxlbUNTUy5vdmVyZmxvd1kgPT0gJ3Njcm9sbCcpKSB7XG4gICAgICAgIGlmICghZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QgfHwgZWxlbSA9PT0gZG9jdW1lbnQuYm9keSkgcmV0dXJuIGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbiAgICAgICAgaWYgKGdvdFNlbGYgfHwgaW5jbHVkZVNlbGYpIHJldHVybiBlbGVtO1xuICAgICAgICBnb3RTZWxmID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgLyoganNoaW50IGJvc3M6dHJ1ZSAqL1xuXG4gIH0gd2hpbGUgKGVsZW0gPSBlbGVtLnBhcmVudE5vZGUpO1xuXG4gIHJldHVybiBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG59XG5cbmZ1bmN0aW9uIGV4dGVuZChkc3QsIHNyYykge1xuICBpZiAoZHN0ICYmIHNyYykge1xuICAgIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICAgIGlmIChzcmMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBkc3Rba2V5XSA9IHNyY1trZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkc3Q7XG59XG5cbmZ1bmN0aW9uIGlzUmVjdEVxdWFsKHJlY3QxLCByZWN0Mikge1xuICByZXR1cm4gTWF0aC5yb3VuZChyZWN0MS50b3ApID09PSBNYXRoLnJvdW5kKHJlY3QyLnRvcCkgJiYgTWF0aC5yb3VuZChyZWN0MS5sZWZ0KSA9PT0gTWF0aC5yb3VuZChyZWN0Mi5sZWZ0KSAmJiBNYXRoLnJvdW5kKHJlY3QxLmhlaWdodCkgPT09IE1hdGgucm91bmQocmVjdDIuaGVpZ2h0KSAmJiBNYXRoLnJvdW5kKHJlY3QxLndpZHRoKSA9PT0gTWF0aC5yb3VuZChyZWN0Mi53aWR0aCk7XG59XG5cbnZhciBfdGhyb3R0bGVUaW1lb3V0O1xuXG5mdW5jdGlvbiB0aHJvdHRsZShjYWxsYmFjaywgbXMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIV90aHJvdHRsZVRpbWVvdXQpIHtcbiAgICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICAgIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwoX3RoaXMsIGFyZ3NbMF0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FsbGJhY2suYXBwbHkoX3RoaXMsIGFyZ3MpO1xuICAgICAgfVxuXG4gICAgICBfdGhyb3R0bGVUaW1lb3V0ID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aHJvdHRsZVRpbWVvdXQgPSB2b2lkIDA7XG4gICAgICB9LCBtcyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBjYW5jZWxUaHJvdHRsZSgpIHtcbiAgY2xlYXJUaW1lb3V0KF90aHJvdHRsZVRpbWVvdXQpO1xuICBfdGhyb3R0bGVUaW1lb3V0ID0gdm9pZCAwO1xufVxuXG5mdW5jdGlvbiBzY3JvbGxCeShlbCwgeCwgeSkge1xuICBlbC5zY3JvbGxMZWZ0ICs9IHg7XG4gIGVsLnNjcm9sbFRvcCArPSB5O1xufVxuXG5mdW5jdGlvbiBjbG9uZShlbCkge1xuICB2YXIgUG9seW1lciA9IHdpbmRvdy5Qb2x5bWVyO1xuICB2YXIgJCA9IHdpbmRvdy5qUXVlcnkgfHwgd2luZG93LlplcHRvO1xuXG4gIGlmIChQb2x5bWVyICYmIFBvbHltZXIuZG9tKSB7XG4gICAgcmV0dXJuIFBvbHltZXIuZG9tKGVsKS5jbG9uZU5vZGUodHJ1ZSk7XG4gIH0gZWxzZSBpZiAoJCkge1xuICAgIHJldHVybiAkKGVsKS5jbG9uZSh0cnVlKVswXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZWwuY2xvbmVOb2RlKHRydWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldFJlY3QoZWwsIHJlY3QpIHtcbiAgY3NzKGVsLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcbiAgY3NzKGVsLCAndG9wJywgcmVjdC50b3ApO1xuICBjc3MoZWwsICdsZWZ0JywgcmVjdC5sZWZ0KTtcbiAgY3NzKGVsLCAnd2lkdGgnLCByZWN0LndpZHRoKTtcbiAgY3NzKGVsLCAnaGVpZ2h0JywgcmVjdC5oZWlnaHQpO1xufVxuXG5mdW5jdGlvbiB1bnNldFJlY3QoZWwpIHtcbiAgY3NzKGVsLCAncG9zaXRpb24nLCAnJyk7XG4gIGNzcyhlbCwgJ3RvcCcsICcnKTtcbiAgY3NzKGVsLCAnbGVmdCcsICcnKTtcbiAgY3NzKGVsLCAnd2lkdGgnLCAnJyk7XG4gIGNzcyhlbCwgJ2hlaWdodCcsICcnKTtcbn1cblxudmFyIGV4cGFuZG8gPSAnU29ydGFibGUnICsgbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cbmZ1bmN0aW9uIEFuaW1hdGlvblN0YXRlTWFuYWdlcigpIHtcbiAgdmFyIGFuaW1hdGlvblN0YXRlcyA9IFtdLFxuICAgICAgYW5pbWF0aW9uQ2FsbGJhY2tJZDtcbiAgcmV0dXJuIHtcbiAgICBjYXB0dXJlQW5pbWF0aW9uU3RhdGU6IGZ1bmN0aW9uIGNhcHR1cmVBbmltYXRpb25TdGF0ZSgpIHtcbiAgICAgIGFuaW1hdGlvblN0YXRlcyA9IFtdO1xuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSByZXR1cm47XG4gICAgICB2YXIgY2hpbGRyZW4gPSBbXS5zbGljZS5jYWxsKHRoaXMuZWwuY2hpbGRyZW4pO1xuICAgICAgY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKGNzcyhjaGlsZCwgJ2Rpc3BsYXknKSA9PT0gJ25vbmUnIHx8IGNoaWxkID09PSBTb3J0YWJsZS5naG9zdCkgcmV0dXJuO1xuICAgICAgICBhbmltYXRpb25TdGF0ZXMucHVzaCh7XG4gICAgICAgICAgdGFyZ2V0OiBjaGlsZCxcbiAgICAgICAgICByZWN0OiBnZXRSZWN0KGNoaWxkKVxuICAgICAgICB9KTtcblxuICAgICAgICB2YXIgZnJvbVJlY3QgPSBfb2JqZWN0U3ByZWFkMih7fSwgYW5pbWF0aW9uU3RhdGVzW2FuaW1hdGlvblN0YXRlcy5sZW5ndGggLSAxXS5yZWN0KTsgLy8gSWYgYW5pbWF0aW5nOiBjb21wZW5zYXRlIGZvciBjdXJyZW50IGFuaW1hdGlvblxuXG5cbiAgICAgICAgaWYgKGNoaWxkLnRoaXNBbmltYXRpb25EdXJhdGlvbikge1xuICAgICAgICAgIHZhciBjaGlsZE1hdHJpeCA9IG1hdHJpeChjaGlsZCwgdHJ1ZSk7XG5cbiAgICAgICAgICBpZiAoY2hpbGRNYXRyaXgpIHtcbiAgICAgICAgICAgIGZyb21SZWN0LnRvcCAtPSBjaGlsZE1hdHJpeC5mO1xuICAgICAgICAgICAgZnJvbVJlY3QubGVmdCAtPSBjaGlsZE1hdHJpeC5lO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNoaWxkLmZyb21SZWN0ID0gZnJvbVJlY3Q7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIGFkZEFuaW1hdGlvblN0YXRlOiBmdW5jdGlvbiBhZGRBbmltYXRpb25TdGF0ZShzdGF0ZSkge1xuICAgICAgYW5pbWF0aW9uU3RhdGVzLnB1c2goc3RhdGUpO1xuICAgIH0sXG4gICAgcmVtb3ZlQW5pbWF0aW9uU3RhdGU6IGZ1bmN0aW9uIHJlbW92ZUFuaW1hdGlvblN0YXRlKHRhcmdldCkge1xuICAgICAgYW5pbWF0aW9uU3RhdGVzLnNwbGljZShpbmRleE9mT2JqZWN0KGFuaW1hdGlvblN0YXRlcywge1xuICAgICAgICB0YXJnZXQ6IHRhcmdldFxuICAgICAgfSksIDEpO1xuICAgIH0sXG4gICAgYW5pbWF0ZUFsbDogZnVuY3Rpb24gYW5pbWF0ZUFsbChjYWxsYmFjaykge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChhbmltYXRpb25DYWxsYmFja0lkKTtcbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgYW5pbWF0aW5nID0gZmFsc2UsXG4gICAgICAgICAgYW5pbWF0aW9uVGltZSA9IDA7XG4gICAgICBhbmltYXRpb25TdGF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgICAgdmFyIHRpbWUgPSAwLFxuICAgICAgICAgICAgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0LFxuICAgICAgICAgICAgZnJvbVJlY3QgPSB0YXJnZXQuZnJvbVJlY3QsXG4gICAgICAgICAgICB0b1JlY3QgPSBnZXRSZWN0KHRhcmdldCksXG4gICAgICAgICAgICBwcmV2RnJvbVJlY3QgPSB0YXJnZXQucHJldkZyb21SZWN0LFxuICAgICAgICAgICAgcHJldlRvUmVjdCA9IHRhcmdldC5wcmV2VG9SZWN0LFxuICAgICAgICAgICAgYW5pbWF0aW5nUmVjdCA9IHN0YXRlLnJlY3QsXG4gICAgICAgICAgICB0YXJnZXRNYXRyaXggPSBtYXRyaXgodGFyZ2V0LCB0cnVlKTtcblxuICAgICAgICBpZiAodGFyZ2V0TWF0cml4KSB7XG4gICAgICAgICAgLy8gQ29tcGVuc2F0ZSBmb3IgY3VycmVudCBhbmltYXRpb25cbiAgICAgICAgICB0b1JlY3QudG9wIC09IHRhcmdldE1hdHJpeC5mO1xuICAgICAgICAgIHRvUmVjdC5sZWZ0IC09IHRhcmdldE1hdHJpeC5lO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFyZ2V0LnRvUmVjdCA9IHRvUmVjdDtcblxuICAgICAgICBpZiAodGFyZ2V0LnRoaXNBbmltYXRpb25EdXJhdGlvbikge1xuICAgICAgICAgIC8vIENvdWxkIGFsc28gY2hlY2sgaWYgYW5pbWF0aW5nUmVjdCBpcyBiZXR3ZWVuIGZyb21SZWN0IGFuZCB0b1JlY3RcbiAgICAgICAgICBpZiAoaXNSZWN0RXF1YWwocHJldkZyb21SZWN0LCB0b1JlY3QpICYmICFpc1JlY3RFcXVhbChmcm9tUmVjdCwgdG9SZWN0KSAmJiAvLyBNYWtlIHN1cmUgYW5pbWF0aW5nUmVjdCBpcyBvbiBsaW5lIGJldHdlZW4gdG9SZWN0ICYgZnJvbVJlY3RcbiAgICAgICAgICAoYW5pbWF0aW5nUmVjdC50b3AgLSB0b1JlY3QudG9wKSAvIChhbmltYXRpbmdSZWN0LmxlZnQgLSB0b1JlY3QubGVmdCkgPT09IChmcm9tUmVjdC50b3AgLSB0b1JlY3QudG9wKSAvIChmcm9tUmVjdC5sZWZ0IC0gdG9SZWN0LmxlZnQpKSB7XG4gICAgICAgICAgICAvLyBJZiByZXR1cm5pbmcgdG8gc2FtZSBwbGFjZSBhcyBzdGFydGVkIGZyb20gYW5pbWF0aW9uIGFuZCBvbiBzYW1lIGF4aXNcbiAgICAgICAgICAgIHRpbWUgPSBjYWxjdWxhdGVSZWFsVGltZShhbmltYXRpbmdSZWN0LCBwcmV2RnJvbVJlY3QsIHByZXZUb1JlY3QsIF90aGlzLm9wdGlvbnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBpZiBmcm9tUmVjdCAhPSB0b1JlY3Q6IGFuaW1hdGVcblxuXG4gICAgICAgIGlmICghaXNSZWN0RXF1YWwodG9SZWN0LCBmcm9tUmVjdCkpIHtcbiAgICAgICAgICB0YXJnZXQucHJldkZyb21SZWN0ID0gZnJvbVJlY3Q7XG4gICAgICAgICAgdGFyZ2V0LnByZXZUb1JlY3QgPSB0b1JlY3Q7XG5cbiAgICAgICAgICBpZiAoIXRpbWUpIHtcbiAgICAgICAgICAgIHRpbWUgPSBfdGhpcy5vcHRpb25zLmFuaW1hdGlvbjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBfdGhpcy5hbmltYXRlKHRhcmdldCwgYW5pbWF0aW5nUmVjdCwgdG9SZWN0LCB0aW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aW1lKSB7XG4gICAgICAgICAgYW5pbWF0aW5nID0gdHJ1ZTtcbiAgICAgICAgICBhbmltYXRpb25UaW1lID0gTWF0aC5tYXgoYW5pbWF0aW9uVGltZSwgdGltZSk7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KHRhcmdldC5hbmltYXRpb25SZXNldFRpbWVyKTtcbiAgICAgICAgICB0YXJnZXQuYW5pbWF0aW9uUmVzZXRUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGFyZ2V0LmFuaW1hdGlvblRpbWUgPSAwO1xuICAgICAgICAgICAgdGFyZ2V0LnByZXZGcm9tUmVjdCA9IG51bGw7XG4gICAgICAgICAgICB0YXJnZXQuZnJvbVJlY3QgPSBudWxsO1xuICAgICAgICAgICAgdGFyZ2V0LnByZXZUb1JlY3QgPSBudWxsO1xuICAgICAgICAgICAgdGFyZ2V0LnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IG51bGw7XG4gICAgICAgICAgfSwgdGltZSk7XG4gICAgICAgICAgdGFyZ2V0LnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IHRpbWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY2xlYXJUaW1lb3V0KGFuaW1hdGlvbkNhbGxiYWNrSWQpO1xuXG4gICAgICBpZiAoIWFuaW1hdGluZykge1xuICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSBjYWxsYmFjaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYW5pbWF0aW9uQ2FsbGJhY2tJZCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIGNhbGxiYWNrKCk7XG4gICAgICAgIH0sIGFuaW1hdGlvblRpbWUpO1xuICAgICAgfVxuXG4gICAgICBhbmltYXRpb25TdGF0ZXMgPSBbXTtcbiAgICB9LFxuICAgIGFuaW1hdGU6IGZ1bmN0aW9uIGFuaW1hdGUodGFyZ2V0LCBjdXJyZW50UmVjdCwgdG9SZWN0LCBkdXJhdGlvbikge1xuICAgICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIGNzcyh0YXJnZXQsICd0cmFuc2l0aW9uJywgJycpO1xuICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNmb3JtJywgJycpO1xuICAgICAgICB2YXIgZWxNYXRyaXggPSBtYXRyaXgodGhpcy5lbCksXG4gICAgICAgICAgICBzY2FsZVggPSBlbE1hdHJpeCAmJiBlbE1hdHJpeC5hLFxuICAgICAgICAgICAgc2NhbGVZID0gZWxNYXRyaXggJiYgZWxNYXRyaXguZCxcbiAgICAgICAgICAgIHRyYW5zbGF0ZVggPSAoY3VycmVudFJlY3QubGVmdCAtIHRvUmVjdC5sZWZ0KSAvIChzY2FsZVggfHwgMSksXG4gICAgICAgICAgICB0cmFuc2xhdGVZID0gKGN1cnJlbnRSZWN0LnRvcCAtIHRvUmVjdC50b3ApIC8gKHNjYWxlWSB8fCAxKTtcbiAgICAgICAgdGFyZ2V0LmFuaW1hdGluZ1ggPSAhIXRyYW5zbGF0ZVg7XG4gICAgICAgIHRhcmdldC5hbmltYXRpbmdZID0gISF0cmFuc2xhdGVZO1xuICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZTNkKCcgKyB0cmFuc2xhdGVYICsgJ3B4LCcgKyB0cmFuc2xhdGVZICsgJ3B4LDApJyk7XG4gICAgICAgIHRoaXMuZm9yUmVwYWludER1bW15ID0gcmVwYWludCh0YXJnZXQpOyAvLyByZXBhaW50XG5cbiAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zaXRpb24nLCAndHJhbnNmb3JtICcgKyBkdXJhdGlvbiArICdtcycgKyAodGhpcy5vcHRpb25zLmVhc2luZyA/ICcgJyArIHRoaXMub3B0aW9ucy5lYXNpbmcgOiAnJykpO1xuICAgICAgICBjc3ModGFyZ2V0LCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZTNkKDAsMCwwKScpO1xuICAgICAgICB0eXBlb2YgdGFyZ2V0LmFuaW1hdGVkID09PSAnbnVtYmVyJyAmJiBjbGVhclRpbWVvdXQodGFyZ2V0LmFuaW1hdGVkKTtcbiAgICAgICAgdGFyZ2V0LmFuaW1hdGVkID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zaXRpb24nLCAnJyk7XG4gICAgICAgICAgY3NzKHRhcmdldCwgJ3RyYW5zZm9ybScsICcnKTtcbiAgICAgICAgICB0YXJnZXQuYW5pbWF0ZWQgPSBmYWxzZTtcbiAgICAgICAgICB0YXJnZXQuYW5pbWF0aW5nWCA9IGZhbHNlO1xuICAgICAgICAgIHRhcmdldC5hbmltYXRpbmdZID0gZmFsc2U7XG4gICAgICAgIH0sIGR1cmF0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlcGFpbnQodGFyZ2V0KSB7XG4gIHJldHVybiB0YXJnZXQub2Zmc2V0V2lkdGg7XG59XG5cbmZ1bmN0aW9uIGNhbGN1bGF0ZVJlYWxUaW1lKGFuaW1hdGluZ1JlY3QsIGZyb21SZWN0LCB0b1JlY3QsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhmcm9tUmVjdC50b3AgLSBhbmltYXRpbmdSZWN0LnRvcCwgMikgKyBNYXRoLnBvdyhmcm9tUmVjdC5sZWZ0IC0gYW5pbWF0aW5nUmVjdC5sZWZ0LCAyKSkgLyBNYXRoLnNxcnQoTWF0aC5wb3coZnJvbVJlY3QudG9wIC0gdG9SZWN0LnRvcCwgMikgKyBNYXRoLnBvdyhmcm9tUmVjdC5sZWZ0IC0gdG9SZWN0LmxlZnQsIDIpKSAqIG9wdGlvbnMuYW5pbWF0aW9uO1xufVxuXG52YXIgcGx1Z2lucyA9IFtdO1xudmFyIGRlZmF1bHRzID0ge1xuICBpbml0aWFsaXplQnlEZWZhdWx0OiB0cnVlXG59O1xudmFyIFBsdWdpbk1hbmFnZXIgPSB7XG4gIG1vdW50OiBmdW5jdGlvbiBtb3VudChwbHVnaW4pIHtcbiAgICAvLyBTZXQgZGVmYXVsdCBzdGF0aWMgcHJvcGVydGllc1xuICAgIGZvciAodmFyIG9wdGlvbiBpbiBkZWZhdWx0cykge1xuICAgICAgaWYgKGRlZmF1bHRzLmhhc093blByb3BlcnR5KG9wdGlvbikgJiYgIShvcHRpb24gaW4gcGx1Z2luKSkge1xuICAgICAgICBwbHVnaW5bb3B0aW9uXSA9IGRlZmF1bHRzW29wdGlvbl07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwKSB7XG4gICAgICBpZiAocC5wbHVnaW5OYW1lID09PSBwbHVnaW4ucGx1Z2luTmFtZSkge1xuICAgICAgICB0aHJvdyBcIlNvcnRhYmxlOiBDYW5ub3QgbW91bnQgcGx1Z2luIFwiLmNvbmNhdChwbHVnaW4ucGx1Z2luTmFtZSwgXCIgbW9yZSB0aGFuIG9uY2VcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcGx1Z2lucy5wdXNoKHBsdWdpbik7XG4gIH0sXG4gIHBsdWdpbkV2ZW50OiBmdW5jdGlvbiBwbHVnaW5FdmVudChldmVudE5hbWUsIHNvcnRhYmxlLCBldnQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5ldmVudENhbmNlbGVkID0gZmFsc2U7XG5cbiAgICBldnQuY2FuY2VsID0gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMuZXZlbnRDYW5jZWxlZCA9IHRydWU7XG4gICAgfTtcblxuICAgIHZhciBldmVudE5hbWVHbG9iYWwgPSBldmVudE5hbWUgKyAnR2xvYmFsJztcbiAgICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgaWYgKCFzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV0pIHJldHVybjsgLy8gRmlyZSBnbG9iYWwgZXZlbnRzIGlmIGl0IGV4aXN0cyBpbiB0aGlzIHNvcnRhYmxlXG5cbiAgICAgIGlmIChzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV1bZXZlbnROYW1lR2xvYmFsXSkge1xuICAgICAgICBzb3J0YWJsZVtwbHVnaW4ucGx1Z2luTmFtZV1bZXZlbnROYW1lR2xvYmFsXShfb2JqZWN0U3ByZWFkMih7XG4gICAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlXG4gICAgICAgIH0sIGV2dCkpO1xuICAgICAgfSAvLyBPbmx5IGZpcmUgcGx1Z2luIGV2ZW50IGlmIHBsdWdpbiBpcyBlbmFibGVkIGluIHRoaXMgc29ydGFibGUsXG4gICAgICAvLyBhbmQgcGx1Z2luIGhhcyBldmVudCBkZWZpbmVkXG5cblxuICAgICAgaWYgKHNvcnRhYmxlLm9wdGlvbnNbcGx1Z2luLnBsdWdpbk5hbWVdICYmIHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXVtldmVudE5hbWVdKSB7XG4gICAgICAgIHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXVtldmVudE5hbWVdKF9vYmplY3RTcHJlYWQyKHtcbiAgICAgICAgICBzb3J0YWJsZTogc29ydGFibGVcbiAgICAgICAgfSwgZXZ0KSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIGluaXRpYWxpemVQbHVnaW5zOiBmdW5jdGlvbiBpbml0aWFsaXplUGx1Z2lucyhzb3J0YWJsZSwgZWwsIGRlZmF1bHRzLCBvcHRpb25zKSB7XG4gICAgcGx1Z2lucy5mb3JFYWNoKGZ1bmN0aW9uIChwbHVnaW4pIHtcbiAgICAgIHZhciBwbHVnaW5OYW1lID0gcGx1Z2luLnBsdWdpbk5hbWU7XG4gICAgICBpZiAoIXNvcnRhYmxlLm9wdGlvbnNbcGx1Z2luTmFtZV0gJiYgIXBsdWdpbi5pbml0aWFsaXplQnlEZWZhdWx0KSByZXR1cm47XG4gICAgICB2YXIgaW5pdGlhbGl6ZWQgPSBuZXcgcGx1Z2luKHNvcnRhYmxlLCBlbCwgc29ydGFibGUub3B0aW9ucyk7XG4gICAgICBpbml0aWFsaXplZC5zb3J0YWJsZSA9IHNvcnRhYmxlO1xuICAgICAgaW5pdGlhbGl6ZWQub3B0aW9ucyA9IHNvcnRhYmxlLm9wdGlvbnM7XG4gICAgICBzb3J0YWJsZVtwbHVnaW5OYW1lXSA9IGluaXRpYWxpemVkOyAvLyBBZGQgZGVmYXVsdCBvcHRpb25zIGZyb20gcGx1Z2luXG5cbiAgICAgIF9leHRlbmRzKGRlZmF1bHRzLCBpbml0aWFsaXplZC5kZWZhdWx0cyk7XG4gICAgfSk7XG5cbiAgICBmb3IgKHZhciBvcHRpb24gaW4gc29ydGFibGUub3B0aW9ucykge1xuICAgICAgaWYgKCFzb3J0YWJsZS5vcHRpb25zLmhhc093blByb3BlcnR5KG9wdGlvbikpIGNvbnRpbnVlO1xuICAgICAgdmFyIG1vZGlmaWVkID0gdGhpcy5tb2RpZnlPcHRpb24oc29ydGFibGUsIG9wdGlvbiwgc29ydGFibGUub3B0aW9uc1tvcHRpb25dKTtcblxuICAgICAgaWYgKHR5cGVvZiBtb2RpZmllZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgc29ydGFibGUub3B0aW9uc1tvcHRpb25dID0gbW9kaWZpZWQ7XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXRFdmVudFByb3BlcnRpZXM6IGZ1bmN0aW9uIGdldEV2ZW50UHJvcGVydGllcyhuYW1lLCBzb3J0YWJsZSkge1xuICAgIHZhciBldmVudFByb3BlcnRpZXMgPSB7fTtcbiAgICBwbHVnaW5zLmZvckVhY2goZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgaWYgKHR5cGVvZiBwbHVnaW4uZXZlbnRQcm9wZXJ0aWVzICE9PSAnZnVuY3Rpb24nKSByZXR1cm47XG5cbiAgICAgIF9leHRlbmRzKGV2ZW50UHJvcGVydGllcywgcGx1Z2luLmV2ZW50UHJvcGVydGllcy5jYWxsKHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXSwgbmFtZSkpO1xuICAgIH0pO1xuICAgIHJldHVybiBldmVudFByb3BlcnRpZXM7XG4gIH0sXG4gIG1vZGlmeU9wdGlvbjogZnVuY3Rpb24gbW9kaWZ5T3B0aW9uKHNvcnRhYmxlLCBuYW1lLCB2YWx1ZSkge1xuICAgIHZhciBtb2RpZmllZFZhbHVlO1xuICAgIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgICAvLyBQbHVnaW4gbXVzdCBleGlzdCBvbiB0aGUgU29ydGFibGVcbiAgICAgIGlmICghc29ydGFibGVbcGx1Z2luLnBsdWdpbk5hbWVdKSByZXR1cm47IC8vIElmIHN0YXRpYyBvcHRpb24gbGlzdGVuZXIgZXhpc3RzIGZvciB0aGlzIG9wdGlvbiwgY2FsbCBpbiB0aGUgY29udGV4dCBvZiB0aGUgU29ydGFibGUncyBpbnN0YW5jZSBvZiB0aGlzIHBsdWdpblxuXG4gICAgICBpZiAocGx1Z2luLm9wdGlvbkxpc3RlbmVycyAmJiB0eXBlb2YgcGx1Z2luLm9wdGlvbkxpc3RlbmVyc1tuYW1lXSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBtb2RpZmllZFZhbHVlID0gcGx1Z2luLm9wdGlvbkxpc3RlbmVyc1tuYW1lXS5jYWxsKHNvcnRhYmxlW3BsdWdpbi5wbHVnaW5OYW1lXSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtb2RpZmllZFZhbHVlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBkaXNwYXRjaEV2ZW50KF9yZWYpIHtcbiAgdmFyIHNvcnRhYmxlID0gX3JlZi5zb3J0YWJsZSxcbiAgICAgIHJvb3RFbCA9IF9yZWYucm9vdEVsLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIHRhcmdldEVsID0gX3JlZi50YXJnZXRFbCxcbiAgICAgIGNsb25lRWwgPSBfcmVmLmNsb25lRWwsXG4gICAgICB0b0VsID0gX3JlZi50b0VsLFxuICAgICAgZnJvbUVsID0gX3JlZi5mcm9tRWwsXG4gICAgICBvbGRJbmRleCA9IF9yZWYub2xkSW5kZXgsXG4gICAgICBuZXdJbmRleCA9IF9yZWYubmV3SW5kZXgsXG4gICAgICBvbGREcmFnZ2FibGVJbmRleCA9IF9yZWYub2xkRHJhZ2dhYmxlSW5kZXgsXG4gICAgICBuZXdEcmFnZ2FibGVJbmRleCA9IF9yZWYubmV3RHJhZ2dhYmxlSW5kZXgsXG4gICAgICBvcmlnaW5hbEV2ZW50ID0gX3JlZi5vcmlnaW5hbEV2ZW50LFxuICAgICAgcHV0U29ydGFibGUgPSBfcmVmLnB1dFNvcnRhYmxlLFxuICAgICAgZXh0cmFFdmVudFByb3BlcnRpZXMgPSBfcmVmLmV4dHJhRXZlbnRQcm9wZXJ0aWVzO1xuICBzb3J0YWJsZSA9IHNvcnRhYmxlIHx8IHJvb3RFbCAmJiByb290RWxbZXhwYW5kb107XG4gIGlmICghc29ydGFibGUpIHJldHVybjtcbiAgdmFyIGV2dCxcbiAgICAgIG9wdGlvbnMgPSBzb3J0YWJsZS5vcHRpb25zLFxuICAgICAgb25OYW1lID0gJ29uJyArIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnN1YnN0cigxKTsgLy8gU3VwcG9ydCBmb3IgbmV3IEN1c3RvbUV2ZW50IGZlYXR1cmVcblxuICBpZiAod2luZG93LkN1c3RvbUV2ZW50ICYmICFJRTExT3JMZXNzICYmICFFZGdlKSB7XG4gICAgZXZ0ID0gbmV3IEN1c3RvbUV2ZW50KG5hbWUsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZ0LmluaXRFdmVudChuYW1lLCB0cnVlLCB0cnVlKTtcbiAgfVxuXG4gIGV2dC50byA9IHRvRWwgfHwgcm9vdEVsO1xuICBldnQuZnJvbSA9IGZyb21FbCB8fCByb290RWw7XG4gIGV2dC5pdGVtID0gdGFyZ2V0RWwgfHwgcm9vdEVsO1xuICBldnQuY2xvbmUgPSBjbG9uZUVsO1xuICBldnQub2xkSW5kZXggPSBvbGRJbmRleDtcbiAgZXZ0Lm5ld0luZGV4ID0gbmV3SW5kZXg7XG4gIGV2dC5vbGREcmFnZ2FibGVJbmRleCA9IG9sZERyYWdnYWJsZUluZGV4O1xuICBldnQubmV3RHJhZ2dhYmxlSW5kZXggPSBuZXdEcmFnZ2FibGVJbmRleDtcbiAgZXZ0Lm9yaWdpbmFsRXZlbnQgPSBvcmlnaW5hbEV2ZW50O1xuICBldnQucHVsbE1vZGUgPSBwdXRTb3J0YWJsZSA/IHB1dFNvcnRhYmxlLmxhc3RQdXRNb2RlIDogdW5kZWZpbmVkO1xuXG4gIHZhciBhbGxFdmVudFByb3BlcnRpZXMgPSBfb2JqZWN0U3ByZWFkMihfb2JqZWN0U3ByZWFkMih7fSwgZXh0cmFFdmVudFByb3BlcnRpZXMpLCBQbHVnaW5NYW5hZ2VyLmdldEV2ZW50UHJvcGVydGllcyhuYW1lLCBzb3J0YWJsZSkpO1xuXG4gIGZvciAodmFyIG9wdGlvbiBpbiBhbGxFdmVudFByb3BlcnRpZXMpIHtcbiAgICBldnRbb3B0aW9uXSA9IGFsbEV2ZW50UHJvcGVydGllc1tvcHRpb25dO1xuICB9XG5cbiAgaWYgKHJvb3RFbCkge1xuICAgIHJvb3RFbC5kaXNwYXRjaEV2ZW50KGV2dCk7XG4gIH1cblxuICBpZiAob3B0aW9uc1tvbk5hbWVdKSB7XG4gICAgb3B0aW9uc1tvbk5hbWVdLmNhbGwoc29ydGFibGUsIGV2dCk7XG4gIH1cbn1cblxudmFyIF9leGNsdWRlZCA9IFtcImV2dFwiXTtcblxudmFyIHBsdWdpbkV2ZW50ID0gZnVuY3Rpb24gcGx1Z2luRXZlbnQoZXZlbnROYW1lLCBzb3J0YWJsZSkge1xuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDoge30sXG4gICAgICBvcmlnaW5hbEV2ZW50ID0gX3JlZi5ldnQsXG4gICAgICBkYXRhID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgUGx1Z2luTWFuYWdlci5wbHVnaW5FdmVudC5iaW5kKFNvcnRhYmxlKShldmVudE5hbWUsIHNvcnRhYmxlLCBfb2JqZWN0U3ByZWFkMih7XG4gICAgZHJhZ0VsOiBkcmFnRWwsXG4gICAgcGFyZW50RWw6IHBhcmVudEVsLFxuICAgIGdob3N0RWw6IGdob3N0RWwsXG4gICAgcm9vdEVsOiByb290RWwsXG4gICAgbmV4dEVsOiBuZXh0RWwsXG4gICAgbGFzdERvd25FbDogbGFzdERvd25FbCxcbiAgICBjbG9uZUVsOiBjbG9uZUVsLFxuICAgIGNsb25lSGlkZGVuOiBjbG9uZUhpZGRlbixcbiAgICBkcmFnU3RhcnRlZDogbW92ZWQsXG4gICAgcHV0U29ydGFibGU6IHB1dFNvcnRhYmxlLFxuICAgIGFjdGl2ZVNvcnRhYmxlOiBTb3J0YWJsZS5hY3RpdmUsXG4gICAgb3JpZ2luYWxFdmVudDogb3JpZ2luYWxFdmVudCxcbiAgICBvbGRJbmRleDogb2xkSW5kZXgsXG4gICAgb2xkRHJhZ2dhYmxlSW5kZXg6IG9sZERyYWdnYWJsZUluZGV4LFxuICAgIG5ld0luZGV4OiBuZXdJbmRleCxcbiAgICBuZXdEcmFnZ2FibGVJbmRleDogbmV3RHJhZ2dhYmxlSW5kZXgsXG4gICAgaGlkZUdob3N0Rm9yVGFyZ2V0OiBfaGlkZUdob3N0Rm9yVGFyZ2V0LFxuICAgIHVuaGlkZUdob3N0Rm9yVGFyZ2V0OiBfdW5oaWRlR2hvc3RGb3JUYXJnZXQsXG4gICAgY2xvbmVOb3dIaWRkZW46IGZ1bmN0aW9uIGNsb25lTm93SGlkZGVuKCkge1xuICAgICAgY2xvbmVIaWRkZW4gPSB0cnVlO1xuICAgIH0sXG4gICAgY2xvbmVOb3dTaG93bjogZnVuY3Rpb24gY2xvbmVOb3dTaG93bigpIHtcbiAgICAgIGNsb25lSGlkZGVuID0gZmFsc2U7XG4gICAgfSxcbiAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQ6IGZ1bmN0aW9uIGRpc3BhdGNoU29ydGFibGVFdmVudChuYW1lKSB7XG4gICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHNvcnRhYmxlOiBzb3J0YWJsZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogb3JpZ2luYWxFdmVudFxuICAgICAgfSk7XG4gICAgfVxuICB9LCBkYXRhKSk7XG59O1xuXG5mdW5jdGlvbiBfZGlzcGF0Y2hFdmVudChpbmZvKSB7XG4gIGRpc3BhdGNoRXZlbnQoX29iamVjdFNwcmVhZDIoe1xuICAgIHB1dFNvcnRhYmxlOiBwdXRTb3J0YWJsZSxcbiAgICBjbG9uZUVsOiBjbG9uZUVsLFxuICAgIHRhcmdldEVsOiBkcmFnRWwsXG4gICAgcm9vdEVsOiByb290RWwsXG4gICAgb2xkSW5kZXg6IG9sZEluZGV4LFxuICAgIG9sZERyYWdnYWJsZUluZGV4OiBvbGREcmFnZ2FibGVJbmRleCxcbiAgICBuZXdJbmRleDogbmV3SW5kZXgsXG4gICAgbmV3RHJhZ2dhYmxlSW5kZXg6IG5ld0RyYWdnYWJsZUluZGV4XG4gIH0sIGluZm8pKTtcbn1cblxudmFyIGRyYWdFbCxcbiAgICBwYXJlbnRFbCxcbiAgICBnaG9zdEVsLFxuICAgIHJvb3RFbCxcbiAgICBuZXh0RWwsXG4gICAgbGFzdERvd25FbCxcbiAgICBjbG9uZUVsLFxuICAgIGNsb25lSGlkZGVuLFxuICAgIG9sZEluZGV4LFxuICAgIG5ld0luZGV4LFxuICAgIG9sZERyYWdnYWJsZUluZGV4LFxuICAgIG5ld0RyYWdnYWJsZUluZGV4LFxuICAgIGFjdGl2ZUdyb3VwLFxuICAgIHB1dFNvcnRhYmxlLFxuICAgIGF3YWl0aW5nRHJhZ1N0YXJ0ZWQgPSBmYWxzZSxcbiAgICBpZ25vcmVOZXh0Q2xpY2sgPSBmYWxzZSxcbiAgICBzb3J0YWJsZXMgPSBbXSxcbiAgICB0YXBFdnQsXG4gICAgdG91Y2hFdnQsXG4gICAgbGFzdER4LFxuICAgIGxhc3REeSxcbiAgICB0YXBEaXN0YW5jZUxlZnQsXG4gICAgdGFwRGlzdGFuY2VUb3AsXG4gICAgbW92ZWQsXG4gICAgbGFzdFRhcmdldCxcbiAgICBsYXN0RGlyZWN0aW9uLFxuICAgIHBhc3RGaXJzdEludmVydFRocmVzaCA9IGZhbHNlLFxuICAgIGlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQgPSBmYWxzZSxcbiAgICB0YXJnZXRNb3ZlRGlzdGFuY2UsXG4gICAgLy8gRm9yIHBvc2l0aW9uaW5nIGdob3N0IGFic29sdXRlbHlcbmdob3N0UmVsYXRpdmVQYXJlbnQsXG4gICAgZ2hvc3RSZWxhdGl2ZVBhcmVudEluaXRpYWxTY3JvbGwgPSBbXSxcbiAgICAvLyAobGVmdCwgdG9wKVxuX3NpbGVudCA9IGZhbHNlLFxuICAgIHNhdmVkSW5wdXRDaGVja2VkID0gW107XG4vKiogQGNvbnN0ICovXG5cbnZhciBkb2N1bWVudEV4aXN0cyA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcsXG4gICAgUG9zaXRpb25HaG9zdEFic29sdXRlbHkgPSBJT1MsXG4gICAgQ1NTRmxvYXRQcm9wZXJ0eSA9IEVkZ2UgfHwgSUUxMU9yTGVzcyA/ICdjc3NGbG9hdCcgOiAnZmxvYXQnLFxuICAgIC8vIFRoaXMgd2lsbCBub3QgcGFzcyBmb3IgSUU5LCBiZWNhdXNlIElFOSBEbkQgb25seSB3b3JrcyBvbiBhbmNob3JzXG5zdXBwb3J0RHJhZ2dhYmxlID0gZG9jdW1lbnRFeGlzdHMgJiYgIUNocm9tZUZvckFuZHJvaWQgJiYgIUlPUyAmJiAnZHJhZ2dhYmxlJyBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcbiAgICBzdXBwb3J0Q3NzUG9pbnRlckV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCFkb2N1bWVudEV4aXN0cykgcmV0dXJuOyAvLyBmYWxzZSB3aGVuIDw9IElFMTFcblxuICBpZiAoSUUxMU9yTGVzcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3gnKTtcbiAgZWwuc3R5bGUuY3NzVGV4dCA9ICdwb2ludGVyLWV2ZW50czphdXRvJztcbiAgcmV0dXJuIGVsLnN0eWxlLnBvaW50ZXJFdmVudHMgPT09ICdhdXRvJztcbn0oKSxcbiAgICBfZGV0ZWN0RGlyZWN0aW9uID0gZnVuY3Rpb24gX2RldGVjdERpcmVjdGlvbihlbCwgb3B0aW9ucykge1xuICB2YXIgZWxDU1MgPSBjc3MoZWwpLFxuICAgICAgZWxXaWR0aCA9IHBhcnNlSW50KGVsQ1NTLndpZHRoKSAtIHBhcnNlSW50KGVsQ1NTLnBhZGRpbmdMZWZ0KSAtIHBhcnNlSW50KGVsQ1NTLnBhZGRpbmdSaWdodCkgLSBwYXJzZUludChlbENTUy5ib3JkZXJMZWZ0V2lkdGgpIC0gcGFyc2VJbnQoZWxDU1MuYm9yZGVyUmlnaHRXaWR0aCksXG4gICAgICBjaGlsZDEgPSBnZXRDaGlsZChlbCwgMCwgb3B0aW9ucyksXG4gICAgICBjaGlsZDIgPSBnZXRDaGlsZChlbCwgMSwgb3B0aW9ucyksXG4gICAgICBmaXJzdENoaWxkQ1NTID0gY2hpbGQxICYmIGNzcyhjaGlsZDEpLFxuICAgICAgc2Vjb25kQ2hpbGRDU1MgPSBjaGlsZDIgJiYgY3NzKGNoaWxkMiksXG4gICAgICBmaXJzdENoaWxkV2lkdGggPSBmaXJzdENoaWxkQ1NTICYmIHBhcnNlSW50KGZpcnN0Q2hpbGRDU1MubWFyZ2luTGVmdCkgKyBwYXJzZUludChmaXJzdENoaWxkQ1NTLm1hcmdpblJpZ2h0KSArIGdldFJlY3QoY2hpbGQxKS53aWR0aCxcbiAgICAgIHNlY29uZENoaWxkV2lkdGggPSBzZWNvbmRDaGlsZENTUyAmJiBwYXJzZUludChzZWNvbmRDaGlsZENTUy5tYXJnaW5MZWZ0KSArIHBhcnNlSW50KHNlY29uZENoaWxkQ1NTLm1hcmdpblJpZ2h0KSArIGdldFJlY3QoY2hpbGQyKS53aWR0aDtcblxuICBpZiAoZWxDU1MuZGlzcGxheSA9PT0gJ2ZsZXgnKSB7XG4gICAgcmV0dXJuIGVsQ1NTLmZsZXhEaXJlY3Rpb24gPT09ICdjb2x1bW4nIHx8IGVsQ1NTLmZsZXhEaXJlY3Rpb24gPT09ICdjb2x1bW4tcmV2ZXJzZScgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICB9XG5cbiAgaWYgKGVsQ1NTLmRpc3BsYXkgPT09ICdncmlkJykge1xuICAgIHJldHVybiBlbENTUy5ncmlkVGVtcGxhdGVDb2x1bW5zLnNwbGl0KCcgJykubGVuZ3RoIDw9IDEgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICB9XG5cbiAgaWYgKGNoaWxkMSAmJiBmaXJzdENoaWxkQ1NTW1wiZmxvYXRcIl0gJiYgZmlyc3RDaGlsZENTU1tcImZsb2F0XCJdICE9PSAnbm9uZScpIHtcbiAgICB2YXIgdG91Y2hpbmdTaWRlQ2hpbGQyID0gZmlyc3RDaGlsZENTU1tcImZsb2F0XCJdID09PSAnbGVmdCcgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgIHJldHVybiBjaGlsZDIgJiYgKHNlY29uZENoaWxkQ1NTLmNsZWFyID09PSAnYm90aCcgfHwgc2Vjb25kQ2hpbGRDU1MuY2xlYXIgPT09IHRvdWNoaW5nU2lkZUNoaWxkMikgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkMSAmJiAoZmlyc3RDaGlsZENTUy5kaXNwbGF5ID09PSAnYmxvY2snIHx8IGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ2ZsZXgnIHx8IGZpcnN0Q2hpbGRDU1MuZGlzcGxheSA9PT0gJ3RhYmxlJyB8fCBmaXJzdENoaWxkQ1NTLmRpc3BsYXkgPT09ICdncmlkJyB8fCBmaXJzdENoaWxkV2lkdGggPj0gZWxXaWR0aCAmJiBlbENTU1tDU1NGbG9hdFByb3BlcnR5XSA9PT0gJ25vbmUnIHx8IGNoaWxkMiAmJiBlbENTU1tDU1NGbG9hdFByb3BlcnR5XSA9PT0gJ25vbmUnICYmIGZpcnN0Q2hpbGRXaWR0aCArIHNlY29uZENoaWxkV2lkdGggPiBlbFdpZHRoKSA/ICd2ZXJ0aWNhbCcgOiAnaG9yaXpvbnRhbCc7XG59LFxuICAgIF9kcmFnRWxJblJvd0NvbHVtbiA9IGZ1bmN0aW9uIF9kcmFnRWxJblJvd0NvbHVtbihkcmFnUmVjdCwgdGFyZ2V0UmVjdCwgdmVydGljYWwpIHtcbiAgdmFyIGRyYWdFbFMxT3BwID0gdmVydGljYWwgPyBkcmFnUmVjdC5sZWZ0IDogZHJhZ1JlY3QudG9wLFxuICAgICAgZHJhZ0VsUzJPcHAgPSB2ZXJ0aWNhbCA/IGRyYWdSZWN0LnJpZ2h0IDogZHJhZ1JlY3QuYm90dG9tLFxuICAgICAgZHJhZ0VsT3BwTGVuZ3RoID0gdmVydGljYWwgPyBkcmFnUmVjdC53aWR0aCA6IGRyYWdSZWN0LmhlaWdodCxcbiAgICAgIHRhcmdldFMxT3BwID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LmxlZnQgOiB0YXJnZXRSZWN0LnRvcCxcbiAgICAgIHRhcmdldFMyT3BwID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LnJpZ2h0IDogdGFyZ2V0UmVjdC5ib3R0b20sXG4gICAgICB0YXJnZXRPcHBMZW5ndGggPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3Qud2lkdGggOiB0YXJnZXRSZWN0LmhlaWdodDtcbiAgcmV0dXJuIGRyYWdFbFMxT3BwID09PSB0YXJnZXRTMU9wcCB8fCBkcmFnRWxTMk9wcCA9PT0gdGFyZ2V0UzJPcHAgfHwgZHJhZ0VsUzFPcHAgKyBkcmFnRWxPcHBMZW5ndGggLyAyID09PSB0YXJnZXRTMU9wcCArIHRhcmdldE9wcExlbmd0aCAvIDI7XG59LFxuXG4vKipcbiAqIERldGVjdHMgZmlyc3QgbmVhcmVzdCBlbXB0eSBzb3J0YWJsZSB0byBYIGFuZCBZIHBvc2l0aW9uIHVzaW5nIGVtcHR5SW5zZXJ0VGhyZXNob2xkLlxuICogQHBhcmFtICB7TnVtYmVyfSB4ICAgICAgWCBwb3NpdGlvblxuICogQHBhcmFtICB7TnVtYmVyfSB5ICAgICAgWSBwb3NpdGlvblxuICogQHJldHVybiB7SFRNTEVsZW1lbnR9ICAgRWxlbWVudCBvZiB0aGUgZmlyc3QgZm91bmQgbmVhcmVzdCBTb3J0YWJsZVxuICovXG5fZGV0ZWN0TmVhcmVzdEVtcHR5U29ydGFibGUgPSBmdW5jdGlvbiBfZGV0ZWN0TmVhcmVzdEVtcHR5U29ydGFibGUoeCwgeSkge1xuICB2YXIgcmV0O1xuICBzb3J0YWJsZXMuc29tZShmdW5jdGlvbiAoc29ydGFibGUpIHtcbiAgICB2YXIgdGhyZXNob2xkID0gc29ydGFibGVbZXhwYW5kb10ub3B0aW9ucy5lbXB0eUluc2VydFRocmVzaG9sZDtcbiAgICBpZiAoIXRocmVzaG9sZCB8fCBsYXN0Q2hpbGQoc29ydGFibGUpKSByZXR1cm47XG4gICAgdmFyIHJlY3QgPSBnZXRSZWN0KHNvcnRhYmxlKSxcbiAgICAgICAgaW5zaWRlSG9yaXpvbnRhbGx5ID0geCA+PSByZWN0LmxlZnQgLSB0aHJlc2hvbGQgJiYgeCA8PSByZWN0LnJpZ2h0ICsgdGhyZXNob2xkLFxuICAgICAgICBpbnNpZGVWZXJ0aWNhbGx5ID0geSA+PSByZWN0LnRvcCAtIHRocmVzaG9sZCAmJiB5IDw9IHJlY3QuYm90dG9tICsgdGhyZXNob2xkO1xuXG4gICAgaWYgKGluc2lkZUhvcml6b250YWxseSAmJiBpbnNpZGVWZXJ0aWNhbGx5KSB7XG4gICAgICByZXR1cm4gcmV0ID0gc29ydGFibGU7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHJldDtcbn0sXG4gICAgX3ByZXBhcmVHcm91cCA9IGZ1bmN0aW9uIF9wcmVwYXJlR3JvdXAob3B0aW9ucykge1xuICBmdW5jdGlvbiB0b0ZuKHZhbHVlLCBwdWxsKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0bywgZnJvbSwgZHJhZ0VsLCBldnQpIHtcbiAgICAgIHZhciBzYW1lR3JvdXAgPSB0by5vcHRpb25zLmdyb3VwLm5hbWUgJiYgZnJvbS5vcHRpb25zLmdyb3VwLm5hbWUgJiYgdG8ub3B0aW9ucy5ncm91cC5uYW1lID09PSBmcm9tLm9wdGlvbnMuZ3JvdXAubmFtZTtcblxuICAgICAgaWYgKHZhbHVlID09IG51bGwgJiYgKHB1bGwgfHwgc2FtZUdyb3VwKSkge1xuICAgICAgICAvLyBEZWZhdWx0IHB1bGwgdmFsdWVcbiAgICAgICAgLy8gRGVmYXVsdCBwdWxsIGFuZCBwdXQgdmFsdWUgaWYgc2FtZSBncm91cFxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIGlmIChwdWxsICYmIHZhbHVlID09PSAnY2xvbmUnKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiB0b0ZuKHZhbHVlKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCksIHB1bGwpKHRvLCBmcm9tLCBkcmFnRWwsIGV2dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgb3RoZXJHcm91cCA9IChwdWxsID8gdG8gOiBmcm9tKS5vcHRpb25zLmdyb3VwLm5hbWU7XG4gICAgICAgIHJldHVybiB2YWx1ZSA9PT0gdHJ1ZSB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlID09PSBvdGhlckdyb3VwIHx8IHZhbHVlLmpvaW4gJiYgdmFsdWUuaW5kZXhPZihvdGhlckdyb3VwKSA+IC0xO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB2YXIgZ3JvdXAgPSB7fTtcbiAgdmFyIG9yaWdpbmFsR3JvdXAgPSBvcHRpb25zLmdyb3VwO1xuXG4gIGlmICghb3JpZ2luYWxHcm91cCB8fCBfdHlwZW9mKG9yaWdpbmFsR3JvdXApICE9ICdvYmplY3QnKSB7XG4gICAgb3JpZ2luYWxHcm91cCA9IHtcbiAgICAgIG5hbWU6IG9yaWdpbmFsR3JvdXBcbiAgICB9O1xuICB9XG5cbiAgZ3JvdXAubmFtZSA9IG9yaWdpbmFsR3JvdXAubmFtZTtcbiAgZ3JvdXAuY2hlY2tQdWxsID0gdG9GbihvcmlnaW5hbEdyb3VwLnB1bGwsIHRydWUpO1xuICBncm91cC5jaGVja1B1dCA9IHRvRm4ob3JpZ2luYWxHcm91cC5wdXQpO1xuICBncm91cC5yZXZlcnRDbG9uZSA9IG9yaWdpbmFsR3JvdXAucmV2ZXJ0Q2xvbmU7XG4gIG9wdGlvbnMuZ3JvdXAgPSBncm91cDtcbn0sXG4gICAgX2hpZGVHaG9zdEZvclRhcmdldCA9IGZ1bmN0aW9uIF9oaWRlR2hvc3RGb3JUYXJnZXQoKSB7XG4gIGlmICghc3VwcG9ydENzc1BvaW50ZXJFdmVudHMgJiYgZ2hvc3RFbCkge1xuICAgIGNzcyhnaG9zdEVsLCAnZGlzcGxheScsICdub25lJyk7XG4gIH1cbn0sXG4gICAgX3VuaGlkZUdob3N0Rm9yVGFyZ2V0ID0gZnVuY3Rpb24gX3VuaGlkZUdob3N0Rm9yVGFyZ2V0KCkge1xuICBpZiAoIXN1cHBvcnRDc3NQb2ludGVyRXZlbnRzICYmIGdob3N0RWwpIHtcbiAgICBjc3MoZ2hvc3RFbCwgJ2Rpc3BsYXknLCAnJyk7XG4gIH1cbn07IC8vICMxMTg0IGZpeCAtIFByZXZlbnQgY2xpY2sgZXZlbnQgb24gZmFsbGJhY2sgaWYgZHJhZ2dlZCBidXQgaXRlbSBub3QgY2hhbmdlZCBwb3NpdGlvblxuXG5cbmlmIChkb2N1bWVudEV4aXN0cykge1xuICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICBpZiAoaWdub3JlTmV4dENsaWNrKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24gJiYgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZXZ0LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbiAmJiBldnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBpZ25vcmVOZXh0Q2xpY2sgPSBmYWxzZTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIHRydWUpO1xufVxuXG52YXIgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQgPSBmdW5jdGlvbiBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudChldnQpIHtcbiAgaWYgKGRyYWdFbCkge1xuICAgIGV2dCA9IGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQ7XG5cbiAgICB2YXIgbmVhcmVzdCA9IF9kZXRlY3ROZWFyZXN0RW1wdHlTb3J0YWJsZShldnQuY2xpZW50WCwgZXZ0LmNsaWVudFkpO1xuXG4gICAgaWYgKG5lYXJlc3QpIHtcbiAgICAgIC8vIENyZWF0ZSBpbWl0YXRpb24gZXZlbnRcbiAgICAgIHZhciBldmVudCA9IHt9O1xuXG4gICAgICBmb3IgKHZhciBpIGluIGV2dCkge1xuICAgICAgICBpZiAoZXZ0Lmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgZXZlbnRbaV0gPSBldnRbaV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZXZlbnQudGFyZ2V0ID0gZXZlbnQucm9vdEVsID0gbmVhcmVzdDtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0ID0gdm9pZCAwO1xuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uID0gdm9pZCAwO1xuXG4gICAgICBuZWFyZXN0W2V4cGFuZG9dLl9vbkRyYWdPdmVyKGV2ZW50KTtcbiAgICB9XG4gIH1cbn07XG5cbnZhciBfY2hlY2tPdXRzaWRlVGFyZ2V0RWwgPSBmdW5jdGlvbiBfY2hlY2tPdXRzaWRlVGFyZ2V0RWwoZXZ0KSB7XG4gIGlmIChkcmFnRWwpIHtcbiAgICBkcmFnRWwucGFyZW50Tm9kZVtleHBhbmRvXS5faXNPdXRzaWRlVGhpc0VsKGV2dC50YXJnZXQpO1xuICB9XG59O1xuLyoqXG4gKiBAY2xhc3MgIFNvcnRhYmxlXG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gIGVsXG4gKiBAcGFyYW0gIHtPYmplY3R9ICAgICAgIFtvcHRpb25zXVxuICovXG5cblxuZnVuY3Rpb24gU29ydGFibGUoZWwsIG9wdGlvbnMpIHtcbiAgaWYgKCEoZWwgJiYgZWwubm9kZVR5cGUgJiYgZWwubm9kZVR5cGUgPT09IDEpKSB7XG4gICAgdGhyb3cgXCJTb3J0YWJsZTogYGVsYCBtdXN0IGJlIGFuIEhUTUxFbGVtZW50LCBub3QgXCIuY29uY2F0KHt9LnRvU3RyaW5nLmNhbGwoZWwpKTtcbiAgfVxuXG4gIHRoaXMuZWwgPSBlbDsgLy8gcm9vdCBlbGVtZW50XG5cbiAgdGhpcy5vcHRpb25zID0gb3B0aW9ucyA9IF9leHRlbmRzKHt9LCBvcHRpb25zKTsgLy8gRXhwb3J0IGluc3RhbmNlXG5cbiAgZWxbZXhwYW5kb10gPSB0aGlzO1xuICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgZ3JvdXA6IG51bGwsXG4gICAgc29ydDogdHJ1ZSxcbiAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgc3RvcmU6IG51bGwsXG4gICAgaGFuZGxlOiBudWxsLFxuICAgIGRyYWdnYWJsZTogL15bdW9dbCQvaS50ZXN0KGVsLm5vZGVOYW1lKSA/ICc+bGknIDogJz4qJyxcbiAgICBzd2FwVGhyZXNob2xkOiAxLFxuICAgIC8vIHBlcmNlbnRhZ2U7IDAgPD0geCA8PSAxXG4gICAgaW52ZXJ0U3dhcDogZmFsc2UsXG4gICAgLy8gaW52ZXJ0IGFsd2F5c1xuICAgIGludmVydGVkU3dhcFRocmVzaG9sZDogbnVsbCxcbiAgICAvLyB3aWxsIGJlIHNldCB0byBzYW1lIGFzIHN3YXBUaHJlc2hvbGQgaWYgZGVmYXVsdFxuICAgIHJlbW92ZUNsb25lT25IaWRlOiB0cnVlLFxuICAgIGRpcmVjdGlvbjogZnVuY3Rpb24gZGlyZWN0aW9uKCkge1xuICAgICAgcmV0dXJuIF9kZXRlY3REaXJlY3Rpb24oZWwsIHRoaXMub3B0aW9ucyk7XG4gICAgfSxcbiAgICBnaG9zdENsYXNzOiAnc29ydGFibGUtZ2hvc3QnLFxuICAgIGNob3NlbkNsYXNzOiAnc29ydGFibGUtY2hvc2VuJyxcbiAgICBkcmFnQ2xhc3M6ICdzb3J0YWJsZS1kcmFnJyxcbiAgICBpZ25vcmU6ICdhLCBpbWcnLFxuICAgIGZpbHRlcjogbnVsbCxcbiAgICBwcmV2ZW50T25GaWx0ZXI6IHRydWUsXG4gICAgYW5pbWF0aW9uOiAwLFxuICAgIGVhc2luZzogbnVsbCxcbiAgICBzZXREYXRhOiBmdW5jdGlvbiBzZXREYXRhKGRhdGFUcmFuc2ZlciwgZHJhZ0VsKSB7XG4gICAgICBkYXRhVHJhbnNmZXIuc2V0RGF0YSgnVGV4dCcsIGRyYWdFbC50ZXh0Q29udGVudCk7XG4gICAgfSxcbiAgICBkcm9wQnViYmxlOiBmYWxzZSxcbiAgICBkcmFnb3ZlckJ1YmJsZTogZmFsc2UsXG4gICAgZGF0YUlkQXR0cjogJ2RhdGEtaWQnLFxuICAgIGRlbGF5OiAwLFxuICAgIGRlbGF5T25Ub3VjaE9ubHk6IGZhbHNlLFxuICAgIHRvdWNoU3RhcnRUaHJlc2hvbGQ6IChOdW1iZXIucGFyc2VJbnQgPyBOdW1iZXIgOiB3aW5kb3cpLnBhcnNlSW50KHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAxMCkgfHwgMSxcbiAgICBmb3JjZUZhbGxiYWNrOiBmYWxzZSxcbiAgICBmYWxsYmFja0NsYXNzOiAnc29ydGFibGUtZmFsbGJhY2snLFxuICAgIGZhbGxiYWNrT25Cb2R5OiBmYWxzZSxcbiAgICBmYWxsYmFja1RvbGVyYW5jZTogMCxcbiAgICBmYWxsYmFja09mZnNldDoge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9LFxuICAgIHN1cHBvcnRQb2ludGVyOiBTb3J0YWJsZS5zdXBwb3J0UG9pbnRlciAhPT0gZmFsc2UgJiYgJ1BvaW50ZXJFdmVudCcgaW4gd2luZG93ICYmICFTYWZhcmksXG4gICAgZW1wdHlJbnNlcnRUaHJlc2hvbGQ6IDVcbiAgfTtcbiAgUGx1Z2luTWFuYWdlci5pbml0aWFsaXplUGx1Z2lucyh0aGlzLCBlbCwgZGVmYXVsdHMpOyAvLyBTZXQgZGVmYXVsdCBvcHRpb25zXG5cbiAgZm9yICh2YXIgbmFtZSBpbiBkZWZhdWx0cykge1xuICAgICEobmFtZSBpbiBvcHRpb25zKSAmJiAob3B0aW9uc1tuYW1lXSA9IGRlZmF1bHRzW25hbWVdKTtcbiAgfVxuXG4gIF9wcmVwYXJlR3JvdXAob3B0aW9ucyk7IC8vIEJpbmQgYWxsIHByaXZhdGUgbWV0aG9kc1xuXG5cbiAgZm9yICh2YXIgZm4gaW4gdGhpcykge1xuICAgIGlmIChmbi5jaGFyQXQoMCkgPT09ICdfJyAmJiB0eXBlb2YgdGhpc1tmbl0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRoaXNbZm5dID0gdGhpc1tmbl0uYmluZCh0aGlzKTtcbiAgICB9XG4gIH0gLy8gU2V0dXAgZHJhZyBtb2RlXG5cblxuICB0aGlzLm5hdGl2ZURyYWdnYWJsZSA9IG9wdGlvbnMuZm9yY2VGYWxsYmFjayA/IGZhbHNlIDogc3VwcG9ydERyYWdnYWJsZTtcblxuICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAvLyBUb3VjaCBzdGFydCB0aHJlc2hvbGQgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbmF0aXZlIGRyYWdzdGFydCB0aHJlc2hvbGRcbiAgICB0aGlzLm9wdGlvbnMudG91Y2hTdGFydFRocmVzaG9sZCA9IDE7XG4gIH0gLy8gQmluZCBldmVudHNcblxuXG4gIGlmIChvcHRpb25zLnN1cHBvcnRQb2ludGVyKSB7XG4gICAgb24oZWwsICdwb2ludGVyZG93bicsIHRoaXMuX29uVGFwU3RhcnQpO1xuICB9IGVsc2Uge1xuICAgIG9uKGVsLCAnbW91c2Vkb3duJywgdGhpcy5fb25UYXBTdGFydCk7XG4gICAgb24oZWwsICd0b3VjaHN0YXJ0JywgdGhpcy5fb25UYXBTdGFydCk7XG4gIH1cblxuICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICBvbihlbCwgJ2RyYWdvdmVyJywgdGhpcyk7XG4gICAgb24oZWwsICdkcmFnZW50ZXInLCB0aGlzKTtcbiAgfVxuXG4gIHNvcnRhYmxlcy5wdXNoKHRoaXMuZWwpOyAvLyBSZXN0b3JlIHNvcnRpbmdcblxuICBvcHRpb25zLnN0b3JlICYmIG9wdGlvbnMuc3RvcmUuZ2V0ICYmIHRoaXMuc29ydChvcHRpb25zLnN0b3JlLmdldCh0aGlzKSB8fCBbXSk7IC8vIEFkZCBhbmltYXRpb24gc3RhdGUgbWFuYWdlclxuXG4gIF9leHRlbmRzKHRoaXMsIEFuaW1hdGlvblN0YXRlTWFuYWdlcigpKTtcbn1cblxuU29ydGFibGUucHJvdG90eXBlID1cbi8qKiBAbGVuZHMgU29ydGFibGUucHJvdG90eXBlICovXG57XG4gIGNvbnN0cnVjdG9yOiBTb3J0YWJsZSxcbiAgX2lzT3V0c2lkZVRoaXNFbDogZnVuY3Rpb24gX2lzT3V0c2lkZVRoaXNFbCh0YXJnZXQpIHtcbiAgICBpZiAoIXRoaXMuZWwuY29udGFpbnModGFyZ2V0KSAmJiB0YXJnZXQgIT09IHRoaXMuZWwpIHtcbiAgICAgIGxhc3RUYXJnZXQgPSBudWxsO1xuICAgIH1cbiAgfSxcbiAgX2dldERpcmVjdGlvbjogZnVuY3Rpb24gX2dldERpcmVjdGlvbihldnQsIHRhcmdldCkge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcHRpb25zLmRpcmVjdGlvbiA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMub3B0aW9ucy5kaXJlY3Rpb24uY2FsbCh0aGlzLCBldnQsIHRhcmdldCwgZHJhZ0VsKSA6IHRoaXMub3B0aW9ucy5kaXJlY3Rpb247XG4gIH0sXG4gIF9vblRhcFN0YXJ0OiBmdW5jdGlvbiBfb25UYXBTdGFydChcbiAgLyoqIEV2ZW50fFRvdWNoRXZlbnQgKi9cbiAgZXZ0KSB7XG4gICAgaWYgKCFldnQuY2FuY2VsYWJsZSkgcmV0dXJuO1xuXG4gICAgdmFyIF90aGlzID0gdGhpcyxcbiAgICAgICAgZWwgPSB0aGlzLmVsLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICBwcmV2ZW50T25GaWx0ZXIgPSBvcHRpb25zLnByZXZlbnRPbkZpbHRlcixcbiAgICAgICAgdHlwZSA9IGV2dC50eXBlLFxuICAgICAgICB0b3VjaCA9IGV2dC50b3VjaGVzICYmIGV2dC50b3VjaGVzWzBdIHx8IGV2dC5wb2ludGVyVHlwZSAmJiBldnQucG9pbnRlclR5cGUgPT09ICd0b3VjaCcgJiYgZXZ0LFxuICAgICAgICB0YXJnZXQgPSAodG91Y2ggfHwgZXZ0KS50YXJnZXQsXG4gICAgICAgIG9yaWdpbmFsVGFyZ2V0ID0gZXZ0LnRhcmdldC5zaGFkb3dSb290ICYmIChldnQucGF0aCAmJiBldnQucGF0aFswXSB8fCBldnQuY29tcG9zZWRQYXRoICYmIGV2dC5jb21wb3NlZFBhdGgoKVswXSkgfHwgdGFyZ2V0LFxuICAgICAgICBmaWx0ZXIgPSBvcHRpb25zLmZpbHRlcjtcblxuICAgIF9zYXZlSW5wdXRDaGVja2VkU3RhdGUoZWwpOyAvLyBEb24ndCB0cmlnZ2VyIHN0YXJ0IGV2ZW50IHdoZW4gYW4gZWxlbWVudCBpcyBiZWVuIGRyYWdnZWQsIG90aGVyd2lzZSB0aGUgZXZ0Lm9sZGluZGV4IGFsd2F5cyB3cm9uZyB3aGVuIHNldCBvcHRpb24uZ3JvdXAuXG5cblxuICAgIGlmIChkcmFnRWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoL21vdXNlZG93bnxwb2ludGVyZG93bi8udGVzdCh0eXBlKSAmJiBldnQuYnV0dG9uICE9PSAwIHx8IG9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjsgLy8gb25seSBsZWZ0IGJ1dHRvbiBhbmQgZW5hYmxlZFxuICAgIH0gLy8gY2FuY2VsIGRuZCBpZiBvcmlnaW5hbCB0YXJnZXQgaXMgY29udGVudCBlZGl0YWJsZVxuXG5cbiAgICBpZiAob3JpZ2luYWxUYXJnZXQuaXNDb250ZW50RWRpdGFibGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFNhZmFyaSBpZ25vcmVzIGZ1cnRoZXIgZXZlbnQgaGFuZGxpbmcgYWZ0ZXIgbW91c2Vkb3duXG5cblxuICAgIGlmICghdGhpcy5uYXRpdmVEcmFnZ2FibGUgJiYgU2FmYXJpICYmIHRhcmdldCAmJiB0YXJnZXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpID09PSAnU0VMRUNUJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRhcmdldCA9IGNsb3Nlc3QodGFyZ2V0LCBvcHRpb25zLmRyYWdnYWJsZSwgZWwsIGZhbHNlKTtcblxuICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0LmFuaW1hdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGxhc3REb3duRWwgPT09IHRhcmdldCkge1xuICAgICAgLy8gSWdub3JpbmcgZHVwbGljYXRlIGBkb3duYFxuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gR2V0IHRoZSBpbmRleCBvZiB0aGUgZHJhZ2dlZCBlbGVtZW50IHdpdGhpbiBpdHMgcGFyZW50XG5cblxuICAgIG9sZEluZGV4ID0gaW5kZXgodGFyZ2V0KTtcbiAgICBvbGREcmFnZ2FibGVJbmRleCA9IGluZGV4KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUpOyAvLyBDaGVjayBmaWx0ZXJcblxuICAgIGlmICh0eXBlb2YgZmlsdGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZmlsdGVyLmNhbGwodGhpcywgZXZ0LCB0YXJnZXQsIHRoaXMpKSB7XG4gICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICBzb3J0YWJsZTogX3RoaXMsXG4gICAgICAgICAgcm9vdEVsOiBvcmlnaW5hbFRhcmdldCxcbiAgICAgICAgICBuYW1lOiAnZmlsdGVyJyxcbiAgICAgICAgICB0YXJnZXRFbDogdGFyZ2V0LFxuICAgICAgICAgIHRvRWw6IGVsLFxuICAgICAgICAgIGZyb21FbDogZWxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcGx1Z2luRXZlbnQoJ2ZpbHRlcicsIF90aGlzLCB7XG4gICAgICAgICAgZXZ0OiBldnRcbiAgICAgICAgfSk7XG4gICAgICAgIHByZXZlbnRPbkZpbHRlciAmJiBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuOyAvLyBjYW5jZWwgZG5kXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmaWx0ZXIpIHtcbiAgICAgIGZpbHRlciA9IGZpbHRlci5zcGxpdCgnLCcpLnNvbWUoZnVuY3Rpb24gKGNyaXRlcmlhKSB7XG4gICAgICAgIGNyaXRlcmlhID0gY2xvc2VzdChvcmlnaW5hbFRhcmdldCwgY3JpdGVyaWEudHJpbSgpLCBlbCwgZmFsc2UpO1xuXG4gICAgICAgIGlmIChjcml0ZXJpYSkge1xuICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgIHNvcnRhYmxlOiBfdGhpcyxcbiAgICAgICAgICAgIHJvb3RFbDogY3JpdGVyaWEsXG4gICAgICAgICAgICBuYW1lOiAnZmlsdGVyJyxcbiAgICAgICAgICAgIHRhcmdldEVsOiB0YXJnZXQsXG4gICAgICAgICAgICBmcm9tRWw6IGVsLFxuICAgICAgICAgICAgdG9FbDogZWxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHBsdWdpbkV2ZW50KCdmaWx0ZXInLCBfdGhpcywge1xuICAgICAgICAgICAgZXZ0OiBldnRcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmIChmaWx0ZXIpIHtcbiAgICAgICAgcHJldmVudE9uRmlsdGVyICYmIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47IC8vIGNhbmNlbCBkbmRcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy5oYW5kbGUgJiYgIWNsb3Nlc3Qob3JpZ2luYWxUYXJnZXQsIG9wdGlvbnMuaGFuZGxlLCBlbCwgZmFsc2UpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBQcmVwYXJlIGBkcmFnc3RhcnRgXG5cblxuICAgIHRoaXMuX3ByZXBhcmVEcmFnU3RhcnQoZXZ0LCB0b3VjaCwgdGFyZ2V0KTtcbiAgfSxcbiAgX3ByZXBhcmVEcmFnU3RhcnQ6IGZ1bmN0aW9uIF9wcmVwYXJlRHJhZ1N0YXJ0KFxuICAvKiogRXZlbnQgKi9cbiAgZXZ0LFxuICAvKiogVG91Y2ggKi9cbiAgdG91Y2gsXG4gIC8qKiBIVE1MRWxlbWVudCAqL1xuICB0YXJnZXQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzLFxuICAgICAgICBlbCA9IF90aGlzLmVsLFxuICAgICAgICBvcHRpb25zID0gX3RoaXMub3B0aW9ucyxcbiAgICAgICAgb3duZXJEb2N1bWVudCA9IGVsLm93bmVyRG9jdW1lbnQsXG4gICAgICAgIGRyYWdTdGFydEZuO1xuXG4gICAgaWYgKHRhcmdldCAmJiAhZHJhZ0VsICYmIHRhcmdldC5wYXJlbnROb2RlID09PSBlbCkge1xuICAgICAgdmFyIGRyYWdSZWN0ID0gZ2V0UmVjdCh0YXJnZXQpO1xuICAgICAgcm9vdEVsID0gZWw7XG4gICAgICBkcmFnRWwgPSB0YXJnZXQ7XG4gICAgICBwYXJlbnRFbCA9IGRyYWdFbC5wYXJlbnROb2RlO1xuICAgICAgbmV4dEVsID0gZHJhZ0VsLm5leHRTaWJsaW5nO1xuICAgICAgbGFzdERvd25FbCA9IHRhcmdldDtcbiAgICAgIGFjdGl2ZUdyb3VwID0gb3B0aW9ucy5ncm91cDtcbiAgICAgIFNvcnRhYmxlLmRyYWdnZWQgPSBkcmFnRWw7XG4gICAgICB0YXBFdnQgPSB7XG4gICAgICAgIHRhcmdldDogZHJhZ0VsLFxuICAgICAgICBjbGllbnRYOiAodG91Y2ggfHwgZXZ0KS5jbGllbnRYLFxuICAgICAgICBjbGllbnRZOiAodG91Y2ggfHwgZXZ0KS5jbGllbnRZXG4gICAgICB9O1xuICAgICAgdGFwRGlzdGFuY2VMZWZ0ID0gdGFwRXZ0LmNsaWVudFggLSBkcmFnUmVjdC5sZWZ0O1xuICAgICAgdGFwRGlzdGFuY2VUb3AgPSB0YXBFdnQuY2xpZW50WSAtIGRyYWdSZWN0LnRvcDtcbiAgICAgIHRoaXMuX2xhc3RYID0gKHRvdWNoIHx8IGV2dCkuY2xpZW50WDtcbiAgICAgIHRoaXMuX2xhc3RZID0gKHRvdWNoIHx8IGV2dCkuY2xpZW50WTtcbiAgICAgIGRyYWdFbC5zdHlsZVsnd2lsbC1jaGFuZ2UnXSA9ICdhbGwnO1xuXG4gICAgICBkcmFnU3RhcnRGbiA9IGZ1bmN0aW9uIGRyYWdTdGFydEZuKCkge1xuICAgICAgICBwbHVnaW5FdmVudCgnZGVsYXlFbmRlZCcsIF90aGlzLCB7XG4gICAgICAgICAgZXZ0OiBldnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHtcbiAgICAgICAgICBfdGhpcy5fb25Ecm9wKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gRGVsYXllZCBkcmFnIGhhcyBiZWVuIHRyaWdnZXJlZFxuICAgICAgICAvLyB3ZSBjYW4gcmUtZW5hYmxlIHRoZSBldmVudHM6IHRvdWNobW92ZS9tb3VzZW1vdmVcblxuXG4gICAgICAgIF90aGlzLl9kaXNhYmxlRGVsYXllZERyYWdFdmVudHMoKTtcblxuICAgICAgICBpZiAoIUZpcmVGb3ggJiYgX3RoaXMubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgICAgZHJhZ0VsLmRyYWdnYWJsZSA9IHRydWU7XG4gICAgICAgIH0gLy8gQmluZCB0aGUgZXZlbnRzOiBkcmFnc3RhcnQvZHJhZ2VuZFxuXG5cbiAgICAgICAgX3RoaXMuX3RyaWdnZXJEcmFnU3RhcnQoZXZ0LCB0b3VjaCk7IC8vIERyYWcgc3RhcnQgZXZlbnRcblxuXG4gICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICBzb3J0YWJsZTogX3RoaXMsXG4gICAgICAgICAgbmFtZTogJ2Nob29zZScsXG4gICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgIH0pOyAvLyBDaG9zZW4gaXRlbVxuXG5cbiAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmNob3NlbkNsYXNzLCB0cnVlKTtcbiAgICAgIH07IC8vIERpc2FibGUgXCJkcmFnZ2FibGVcIlxuXG5cbiAgICAgIG9wdGlvbnMuaWdub3JlLnNwbGl0KCcsJykuZm9yRWFjaChmdW5jdGlvbiAoY3JpdGVyaWEpIHtcbiAgICAgICAgZmluZChkcmFnRWwsIGNyaXRlcmlhLnRyaW0oKSwgX2Rpc2FibGVEcmFnZ2FibGUpO1xuICAgICAgfSk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAnZHJhZ292ZXInLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAnbW91c2Vtb3ZlJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICAgICAgb24ob3duZXJEb2N1bWVudCwgJ3RvdWNobW92ZScsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICdtb3VzZXVwJywgX3RoaXMuX29uRHJvcCk7XG4gICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2hlbmQnLCBfdGhpcy5fb25Ecm9wKTtcbiAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIF90aGlzLl9vbkRyb3ApOyAvLyBNYWtlIGRyYWdFbCBkcmFnZ2FibGUgKG11c3QgYmUgYmVmb3JlIGRlbGF5IGZvciBGaXJlRm94KVxuXG4gICAgICBpZiAoRmlyZUZveCAmJiB0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMudG91Y2hTdGFydFRocmVzaG9sZCA9IDQ7XG4gICAgICAgIGRyYWdFbC5kcmFnZ2FibGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBwbHVnaW5FdmVudCgnZGVsYXlTdGFydCcsIHRoaXMsIHtcbiAgICAgICAgZXZ0OiBldnRcbiAgICAgIH0pOyAvLyBEZWxheSBpcyBpbXBvc3NpYmxlIGZvciBuYXRpdmUgRG5EIGluIEVkZ2Ugb3IgSUVcblxuICAgICAgaWYgKG9wdGlvbnMuZGVsYXkgJiYgKCFvcHRpb25zLmRlbGF5T25Ub3VjaE9ubHkgfHwgdG91Y2gpICYmICghdGhpcy5uYXRpdmVEcmFnZ2FibGUgfHwgIShFZGdlIHx8IElFMTFPckxlc3MpKSkge1xuICAgICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgICAgIHRoaXMuX29uRHJvcCgpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIElmIHRoZSB1c2VyIG1vdmVzIHRoZSBwb2ludGVyIG9yIGxldCBnbyB0aGUgY2xpY2sgb3IgdG91Y2hcbiAgICAgICAgLy8gYmVmb3JlIHRoZSBkZWxheSBoYXMgYmVlbiByZWFjaGVkOlxuICAgICAgICAvLyBkaXNhYmxlIHRoZSBkZWxheWVkIGRyYWdcblxuXG4gICAgICAgIG9uKG93bmVyRG9jdW1lbnQsICdtb3VzZXVwJywgX3RoaXMuX2Rpc2FibGVEZWxheWVkRHJhZyk7XG4gICAgICAgIG9uKG93bmVyRG9jdW1lbnQsICd0b3VjaGVuZCcsIF90aGlzLl9kaXNhYmxlRGVsYXllZERyYWcpO1xuICAgICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBfdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICAgICAgb24ob3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIF90aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgICAgICBvbihvd25lckRvY3VtZW50LCAndG91Y2htb3ZlJywgX3RoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgICAgIG9wdGlvbnMuc3VwcG9ydFBvaW50ZXIgJiYgb24ob3duZXJEb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgX3RoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgICAgIF90aGlzLl9kcmFnU3RhcnRUaW1lciA9IHNldFRpbWVvdXQoZHJhZ1N0YXJ0Rm4sIG9wdGlvbnMuZGVsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZHJhZ1N0YXJ0Rm4oKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIF9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXI6IGZ1bmN0aW9uIF9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIoXG4gIC8qKiBUb3VjaEV2ZW50fFBvaW50ZXJFdmVudCAqKi9cbiAgZSkge1xuICAgIHZhciB0b3VjaCA9IGUudG91Y2hlcyA/IGUudG91Y2hlc1swXSA6IGU7XG5cbiAgICBpZiAoTWF0aC5tYXgoTWF0aC5hYnModG91Y2guY2xpZW50WCAtIHRoaXMuX2xhc3RYKSwgTWF0aC5hYnModG91Y2guY2xpZW50WSAtIHRoaXMuX2xhc3RZKSkgPj0gTWF0aC5mbG9vcih0aGlzLm9wdGlvbnMudG91Y2hTdGFydFRocmVzaG9sZCAvICh0aGlzLm5hdGl2ZURyYWdnYWJsZSAmJiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSkpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVEZWxheWVkRHJhZygpO1xuICAgIH1cbiAgfSxcbiAgX2Rpc2FibGVEZWxheWVkRHJhZzogZnVuY3Rpb24gX2Rpc2FibGVEZWxheWVkRHJhZygpIHtcbiAgICBkcmFnRWwgJiYgX2Rpc2FibGVEcmFnZ2FibGUoZHJhZ0VsKTtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fZHJhZ1N0YXJ0VGltZXIpO1xuXG4gICAgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzKCk7XG4gIH0sXG4gIF9kaXNhYmxlRGVsYXllZERyYWdFdmVudHM6IGZ1bmN0aW9uIF9kaXNhYmxlRGVsYXllZERyYWdFdmVudHMoKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSB0aGlzLmVsLm93bmVyRG9jdW1lbnQ7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3RvdWNoY2FuY2VsJywgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuX2RlbGF5ZWREcmFnVG91Y2hNb3ZlSGFuZGxlcik7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICAgIG9mZihvd25lckRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9kZWxheWVkRHJhZ1RvdWNoTW92ZUhhbmRsZXIpO1xuICB9LFxuICBfdHJpZ2dlckRyYWdTdGFydDogZnVuY3Rpb24gX3RyaWdnZXJEcmFnU3RhcnQoXG4gIC8qKiBFdmVudCAqL1xuICBldnQsXG4gIC8qKiBUb3VjaCAqL1xuICB0b3VjaCkge1xuICAgIHRvdWNoID0gdG91Y2ggfHwgZXZ0LnBvaW50ZXJUeXBlID09ICd0b3VjaCcgJiYgZXZ0O1xuXG4gICAgaWYgKCF0aGlzLm5hdGl2ZURyYWdnYWJsZSB8fCB0b3VjaCkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zdXBwb3J0UG9pbnRlcikge1xuICAgICAgICBvbihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgICAgfSBlbHNlIGlmICh0b3VjaCkge1xuICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9uKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgdGhpcy5fb25Ub3VjaE1vdmUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbihkcmFnRWwsICdkcmFnZW5kJywgdGhpcyk7XG4gICAgICBvbihyb290RWwsICdkcmFnc3RhcnQnLCB0aGlzLl9vbkRyYWdTdGFydCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHtcbiAgICAgICAgLy8gVGltZW91dCBuZWNjZXNzYXJ5IGZvciBJRTlcbiAgICAgICAgX25leHRUaWNrKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7fVxuICB9LFxuICBfZHJhZ1N0YXJ0ZWQ6IGZ1bmN0aW9uIF9kcmFnU3RhcnRlZChmYWxsYmFjaywgZXZ0KSB7XG5cbiAgICBhd2FpdGluZ0RyYWdTdGFydGVkID0gZmFsc2U7XG5cbiAgICBpZiAocm9vdEVsICYmIGRyYWdFbCkge1xuICAgICAgcGx1Z2luRXZlbnQoJ2RyYWdTdGFydGVkJywgdGhpcywge1xuICAgICAgICBldnQ6IGV2dFxuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICBvbihkb2N1bWVudCwgJ2RyYWdvdmVyJywgX2NoZWNrT3V0c2lkZVRhcmdldEVsKTtcbiAgICAgIH1cblxuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7IC8vIEFwcGx5IGVmZmVjdFxuXG4gICAgICAhZmFsbGJhY2sgJiYgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmRyYWdDbGFzcywgZmFsc2UpO1xuICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBvcHRpb25zLmdob3N0Q2xhc3MsIHRydWUpO1xuICAgICAgU29ydGFibGUuYWN0aXZlID0gdGhpcztcbiAgICAgIGZhbGxiYWNrICYmIHRoaXMuX2FwcGVuZEdob3N0KCk7IC8vIERyYWcgc3RhcnQgZXZlbnRcblxuICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgbmFtZTogJ3N0YXJ0JyxcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fbnVsbGluZygpO1xuICAgIH1cbiAgfSxcbiAgX2VtdWxhdGVEcmFnT3ZlcjogZnVuY3Rpb24gX2VtdWxhdGVEcmFnT3ZlcigpIHtcbiAgICBpZiAodG91Y2hFdnQpIHtcbiAgICAgIHRoaXMuX2xhc3RYID0gdG91Y2hFdnQuY2xpZW50WDtcbiAgICAgIHRoaXMuX2xhc3RZID0gdG91Y2hFdnQuY2xpZW50WTtcblxuICAgICAgX2hpZGVHaG9zdEZvclRhcmdldCgpO1xuXG4gICAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludCh0b3VjaEV2dC5jbGllbnRYLCB0b3VjaEV2dC5jbGllbnRZKTtcbiAgICAgIHZhciBwYXJlbnQgPSB0YXJnZXQ7XG5cbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LnNoYWRvd1Jvb3QpIHtcbiAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0LnNoYWRvd1Jvb3QuZWxlbWVudEZyb21Qb2ludCh0b3VjaEV2dC5jbGllbnRYLCB0b3VjaEV2dC5jbGllbnRZKTtcbiAgICAgICAgaWYgKHRhcmdldCA9PT0gcGFyZW50KSBicmVhaztcbiAgICAgICAgcGFyZW50ID0gdGFyZ2V0O1xuICAgICAgfVxuXG4gICAgICBkcmFnRWwucGFyZW50Tm9kZVtleHBhbmRvXS5faXNPdXRzaWRlVGhpc0VsKHRhcmdldCk7XG5cbiAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIGlmIChwYXJlbnRbZXhwYW5kb10pIHtcbiAgICAgICAgICAgIHZhciBpbnNlcnRlZCA9IHZvaWQgMDtcbiAgICAgICAgICAgIGluc2VydGVkID0gcGFyZW50W2V4cGFuZG9dLl9vbkRyYWdPdmVyKHtcbiAgICAgICAgICAgICAgY2xpZW50WDogdG91Y2hFdnQuY2xpZW50WCxcbiAgICAgICAgICAgICAgY2xpZW50WTogdG91Y2hFdnQuY2xpZW50WSxcbiAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgICAgICAgIHJvb3RFbDogcGFyZW50XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGluc2VydGVkICYmICF0aGlzLm9wdGlvbnMuZHJhZ292ZXJCdWJibGUpIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGFyZ2V0ID0gcGFyZW50OyAvLyBzdG9yZSBsYXN0IGVsZW1lbnRcbiAgICAgICAgfVxuICAgICAgICAvKiBqc2hpbnQgYm9zczp0cnVlICovXG4gICAgICAgIHdoaWxlIChwYXJlbnQgPSBwYXJlbnQucGFyZW50Tm9kZSk7XG4gICAgICB9XG5cbiAgICAgIF91bmhpZGVHaG9zdEZvclRhcmdldCgpO1xuICAgIH1cbiAgfSxcbiAgX29uVG91Y2hNb3ZlOiBmdW5jdGlvbiBfb25Ub3VjaE1vdmUoXG4gIC8qKlRvdWNoRXZlbnQqL1xuICBldnQpIHtcbiAgICBpZiAodGFwRXZ0KSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucyxcbiAgICAgICAgICBmYWxsYmFja1RvbGVyYW5jZSA9IG9wdGlvbnMuZmFsbGJhY2tUb2xlcmFuY2UsXG4gICAgICAgICAgZmFsbGJhY2tPZmZzZXQgPSBvcHRpb25zLmZhbGxiYWNrT2Zmc2V0LFxuICAgICAgICAgIHRvdWNoID0gZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dCxcbiAgICAgICAgICBnaG9zdE1hdHJpeCA9IGdob3N0RWwgJiYgbWF0cml4KGdob3N0RWwsIHRydWUpLFxuICAgICAgICAgIHNjYWxlWCA9IGdob3N0RWwgJiYgZ2hvc3RNYXRyaXggJiYgZ2hvc3RNYXRyaXguYSxcbiAgICAgICAgICBzY2FsZVkgPSBnaG9zdEVsICYmIGdob3N0TWF0cml4ICYmIGdob3N0TWF0cml4LmQsXG4gICAgICAgICAgcmVsYXRpdmVTY3JvbGxPZmZzZXQgPSBQb3NpdGlvbkdob3N0QWJzb2x1dGVseSAmJiBnaG9zdFJlbGF0aXZlUGFyZW50ICYmIGdldFJlbGF0aXZlU2Nyb2xsT2Zmc2V0KGdob3N0UmVsYXRpdmVQYXJlbnQpLFxuICAgICAgICAgIGR4ID0gKHRvdWNoLmNsaWVudFggLSB0YXBFdnQuY2xpZW50WCArIGZhbGxiYWNrT2Zmc2V0LngpIC8gKHNjYWxlWCB8fCAxKSArIChyZWxhdGl2ZVNjcm9sbE9mZnNldCA/IHJlbGF0aXZlU2Nyb2xsT2Zmc2V0WzBdIC0gZ2hvc3RSZWxhdGl2ZVBhcmVudEluaXRpYWxTY3JvbGxbMF0gOiAwKSAvIChzY2FsZVggfHwgMSksXG4gICAgICAgICAgZHkgPSAodG91Y2guY2xpZW50WSAtIHRhcEV2dC5jbGllbnRZICsgZmFsbGJhY2tPZmZzZXQueSkgLyAoc2NhbGVZIHx8IDEpICsgKHJlbGF0aXZlU2Nyb2xsT2Zmc2V0ID8gcmVsYXRpdmVTY3JvbGxPZmZzZXRbMV0gLSBnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbFsxXSA6IDApIC8gKHNjYWxlWSB8fCAxKTsgLy8gb25seSBzZXQgdGhlIHN0YXR1cyB0byBkcmFnZ2luZywgd2hlbiB3ZSBhcmUgYWN0dWFsbHkgZHJhZ2dpbmdcblxuICAgICAgaWYgKCFTb3J0YWJsZS5hY3RpdmUgJiYgIWF3YWl0aW5nRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgICAgaWYgKGZhbGxiYWNrVG9sZXJhbmNlICYmIE1hdGgubWF4KE1hdGguYWJzKHRvdWNoLmNsaWVudFggLSB0aGlzLl9sYXN0WCksIE1hdGguYWJzKHRvdWNoLmNsaWVudFkgLSB0aGlzLl9sYXN0WSkpIDwgZmFsbGJhY2tUb2xlcmFuY2UpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9vbkRyYWdTdGFydChldnQsIHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZ2hvc3RFbCkge1xuICAgICAgICBpZiAoZ2hvc3RNYXRyaXgpIHtcbiAgICAgICAgICBnaG9zdE1hdHJpeC5lICs9IGR4IC0gKGxhc3REeCB8fCAwKTtcbiAgICAgICAgICBnaG9zdE1hdHJpeC5mICs9IGR5IC0gKGxhc3REeSB8fCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBnaG9zdE1hdHJpeCA9IHtcbiAgICAgICAgICAgIGE6IDEsXG4gICAgICAgICAgICBiOiAwLFxuICAgICAgICAgICAgYzogMCxcbiAgICAgICAgICAgIGQ6IDEsXG4gICAgICAgICAgICBlOiBkeCxcbiAgICAgICAgICAgIGY6IGR5XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBjc3NNYXRyaXggPSBcIm1hdHJpeChcIi5jb25jYXQoZ2hvc3RNYXRyaXguYSwgXCIsXCIpLmNvbmNhdChnaG9zdE1hdHJpeC5iLCBcIixcIikuY29uY2F0KGdob3N0TWF0cml4LmMsIFwiLFwiKS5jb25jYXQoZ2hvc3RNYXRyaXguZCwgXCIsXCIpLmNvbmNhdChnaG9zdE1hdHJpeC5lLCBcIixcIikuY29uY2F0KGdob3N0TWF0cml4LmYsIFwiKVwiKTtcbiAgICAgICAgY3NzKGdob3N0RWwsICd3ZWJraXRUcmFuc2Zvcm0nLCBjc3NNYXRyaXgpO1xuICAgICAgICBjc3MoZ2hvc3RFbCwgJ21velRyYW5zZm9ybScsIGNzc01hdHJpeCk7XG4gICAgICAgIGNzcyhnaG9zdEVsLCAnbXNUcmFuc2Zvcm0nLCBjc3NNYXRyaXgpO1xuICAgICAgICBjc3MoZ2hvc3RFbCwgJ3RyYW5zZm9ybScsIGNzc01hdHJpeCk7XG4gICAgICAgIGxhc3REeCA9IGR4O1xuICAgICAgICBsYXN0RHkgPSBkeTtcbiAgICAgICAgdG91Y2hFdnQgPSB0b3VjaDtcbiAgICAgIH1cblxuICAgICAgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9LFxuICBfYXBwZW5kR2hvc3Q6IGZ1bmN0aW9uIF9hcHBlbmRHaG9zdCgpIHtcbiAgICAvLyBCdWcgaWYgdXNpbmcgc2NhbGUoKTogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjYzNzA1OFxuICAgIC8vIE5vdCBiZWluZyBhZGp1c3RlZCBmb3JcbiAgICBpZiAoIWdob3N0RWwpIHtcbiAgICAgIHZhciBjb250YWluZXIgPSB0aGlzLm9wdGlvbnMuZmFsbGJhY2tPbkJvZHkgPyBkb2N1bWVudC5ib2R5IDogcm9vdEVsLFxuICAgICAgICAgIHJlY3QgPSBnZXRSZWN0KGRyYWdFbCwgdHJ1ZSwgUG9zaXRpb25HaG9zdEFic29sdXRlbHksIHRydWUsIGNvbnRhaW5lciksXG4gICAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9uczsgLy8gUG9zaXRpb24gYWJzb2x1dGVseVxuXG4gICAgICBpZiAoUG9zaXRpb25HaG9zdEFic29sdXRlbHkpIHtcbiAgICAgICAgLy8gR2V0IHJlbGF0aXZlbHkgcG9zaXRpb25lZCBwYXJlbnRcbiAgICAgICAgZ2hvc3RSZWxhdGl2ZVBhcmVudCA9IGNvbnRhaW5lcjtcblxuICAgICAgICB3aGlsZSAoY3NzKGdob3N0UmVsYXRpdmVQYXJlbnQsICdwb3NpdGlvbicpID09PSAnc3RhdGljJyAmJiBjc3MoZ2hvc3RSZWxhdGl2ZVBhcmVudCwgJ3RyYW5zZm9ybScpID09PSAnbm9uZScgJiYgZ2hvc3RSZWxhdGl2ZVBhcmVudCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgICBnaG9zdFJlbGF0aXZlUGFyZW50ID0gZ2hvc3RSZWxhdGl2ZVBhcmVudC5wYXJlbnROb2RlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGdob3N0UmVsYXRpdmVQYXJlbnQgIT09IGRvY3VtZW50LmJvZHkgJiYgZ2hvc3RSZWxhdGl2ZVBhcmVudCAhPT0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICAgICAgaWYgKGdob3N0UmVsYXRpdmVQYXJlbnQgPT09IGRvY3VtZW50KSBnaG9zdFJlbGF0aXZlUGFyZW50ID0gZ2V0V2luZG93U2Nyb2xsaW5nRWxlbWVudCgpO1xuICAgICAgICAgIHJlY3QudG9wICs9IGdob3N0UmVsYXRpdmVQYXJlbnQuc2Nyb2xsVG9wO1xuICAgICAgICAgIHJlY3QubGVmdCArPSBnaG9zdFJlbGF0aXZlUGFyZW50LnNjcm9sbExlZnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZ2hvc3RSZWxhdGl2ZVBhcmVudCA9IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGdob3N0UmVsYXRpdmVQYXJlbnRJbml0aWFsU2Nyb2xsID0gZ2V0UmVsYXRpdmVTY3JvbGxPZmZzZXQoZ2hvc3RSZWxhdGl2ZVBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIGdob3N0RWwgPSBkcmFnRWwuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgdG9nZ2xlQ2xhc3MoZ2hvc3RFbCwgb3B0aW9ucy5naG9zdENsYXNzLCBmYWxzZSk7XG4gICAgICB0b2dnbGVDbGFzcyhnaG9zdEVsLCBvcHRpb25zLmZhbGxiYWNrQ2xhc3MsIHRydWUpO1xuICAgICAgdG9nZ2xlQ2xhc3MoZ2hvc3RFbCwgb3B0aW9ucy5kcmFnQ2xhc3MsIHRydWUpO1xuICAgICAgY3NzKGdob3N0RWwsICd0cmFuc2l0aW9uJywgJycpO1xuICAgICAgY3NzKGdob3N0RWwsICd0cmFuc2Zvcm0nLCAnJyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ2JveC1zaXppbmcnLCAnYm9yZGVyLWJveCcpO1xuICAgICAgY3NzKGdob3N0RWwsICdtYXJnaW4nLCAwKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAndG9wJywgcmVjdC50b3ApO1xuICAgICAgY3NzKGdob3N0RWwsICdsZWZ0JywgcmVjdC5sZWZ0KTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnd2lkdGgnLCByZWN0LndpZHRoKTtcbiAgICAgIGNzcyhnaG9zdEVsLCAnaGVpZ2h0JywgcmVjdC5oZWlnaHQpO1xuICAgICAgY3NzKGdob3N0RWwsICdvcGFjaXR5JywgJzAuOCcpO1xuICAgICAgY3NzKGdob3N0RWwsICdwb3NpdGlvbicsIFBvc2l0aW9uR2hvc3RBYnNvbHV0ZWx5ID8gJ2Fic29sdXRlJyA6ICdmaXhlZCcpO1xuICAgICAgY3NzKGdob3N0RWwsICd6SW5kZXgnLCAnMTAwMDAwJyk7XG4gICAgICBjc3MoZ2hvc3RFbCwgJ3BvaW50ZXJFdmVudHMnLCAnbm9uZScpO1xuICAgICAgU29ydGFibGUuZ2hvc3QgPSBnaG9zdEVsO1xuICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGdob3N0RWwpOyAvLyBTZXQgdHJhbnNmb3JtLW9yaWdpblxuXG4gICAgICBjc3MoZ2hvc3RFbCwgJ3RyYW5zZm9ybS1vcmlnaW4nLCB0YXBEaXN0YW5jZUxlZnQgLyBwYXJzZUludChnaG9zdEVsLnN0eWxlLndpZHRoKSAqIDEwMCArICclICcgKyB0YXBEaXN0YW5jZVRvcCAvIHBhcnNlSW50KGdob3N0RWwuc3R5bGUuaGVpZ2h0KSAqIDEwMCArICclJyk7XG4gICAgfVxuICB9LFxuICBfb25EcmFnU3RhcnQ6IGZ1bmN0aW9uIF9vbkRyYWdTdGFydChcbiAgLyoqRXZlbnQqL1xuICBldnQsXG4gIC8qKmJvb2xlYW4qL1xuICBmYWxsYmFjaykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgZGF0YVRyYW5zZmVyID0gZXZ0LmRhdGFUcmFuc2ZlcjtcbiAgICB2YXIgb3B0aW9ucyA9IF90aGlzLm9wdGlvbnM7XG4gICAgcGx1Z2luRXZlbnQoJ2RyYWdTdGFydCcsIHRoaXMsIHtcbiAgICAgIGV2dDogZXZ0XG4gICAgfSk7XG5cbiAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgdGhpcy5fb25Ecm9wKCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBwbHVnaW5FdmVudCgnc2V0dXBDbG9uZScsIHRoaXMpO1xuXG4gICAgaWYgKCFTb3J0YWJsZS5ldmVudENhbmNlbGVkKSB7XG4gICAgICBjbG9uZUVsID0gY2xvbmUoZHJhZ0VsKTtcbiAgICAgIGNsb25lRWwuZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgICBjbG9uZUVsLnN0eWxlWyd3aWxsLWNoYW5nZSddID0gJyc7XG5cbiAgICAgIHRoaXMuX2hpZGVDbG9uZSgpO1xuXG4gICAgICB0b2dnbGVDbGFzcyhjbG9uZUVsLCB0aGlzLm9wdGlvbnMuY2hvc2VuQ2xhc3MsIGZhbHNlKTtcbiAgICAgIFNvcnRhYmxlLmNsb25lID0gY2xvbmVFbDtcbiAgICB9IC8vICMxMTQzOiBJRnJhbWUgc3VwcG9ydCB3b3JrYXJvdW5kXG5cblxuICAgIF90aGlzLmNsb25lSWQgPSBfbmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgcGx1Z2luRXZlbnQoJ2Nsb25lJywgX3RoaXMpO1xuICAgICAgaWYgKFNvcnRhYmxlLmV2ZW50Q2FuY2VsZWQpIHJldHVybjtcblxuICAgICAgaWYgKCFfdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlKSB7XG4gICAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUoY2xvbmVFbCwgZHJhZ0VsKTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuX2hpZGVDbG9uZSgpO1xuXG4gICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgIHNvcnRhYmxlOiBfdGhpcyxcbiAgICAgICAgbmFtZTogJ2Nsb25lJ1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgIWZhbGxiYWNrICYmIHRvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5kcmFnQ2xhc3MsIHRydWUpOyAvLyBTZXQgcHJvcGVyIGRyb3AgZXZlbnRzXG5cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIGlnbm9yZU5leHRDbGljayA9IHRydWU7XG4gICAgICBfdGhpcy5fbG9vcElkID0gc2V0SW50ZXJ2YWwoX3RoaXMuX2VtdWxhdGVEcmFnT3ZlciwgNTApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBVbmRvIHdoYXQgd2FzIHNldCBpbiBfcHJlcGFyZURyYWdTdGFydCBiZWZvcmUgZHJhZyBzdGFydGVkXG4gICAgICBvZmYoZG9jdW1lbnQsICdtb3VzZXVwJywgX3RoaXMuX29uRHJvcCk7XG4gICAgICBvZmYoZG9jdW1lbnQsICd0b3VjaGVuZCcsIF90aGlzLl9vbkRyb3ApO1xuICAgICAgb2ZmKGRvY3VtZW50LCAndG91Y2hjYW5jZWwnLCBfdGhpcy5fb25Ecm9wKTtcblxuICAgICAgaWYgKGRhdGFUcmFuc2Zlcikge1xuICAgICAgICBkYXRhVHJhbnNmZXIuZWZmZWN0QWxsb3dlZCA9ICdtb3ZlJztcbiAgICAgICAgb3B0aW9ucy5zZXREYXRhICYmIG9wdGlvbnMuc2V0RGF0YS5jYWxsKF90aGlzLCBkYXRhVHJhbnNmZXIsIGRyYWdFbCk7XG4gICAgICB9XG5cbiAgICAgIG9uKGRvY3VtZW50LCAnZHJvcCcsIF90aGlzKTsgLy8gIzEyNzYgZml4OlxuXG4gICAgICBjc3MoZHJhZ0VsLCAndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZVooMCknKTtcbiAgICB9XG5cbiAgICBhd2FpdGluZ0RyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICBfdGhpcy5fZHJhZ1N0YXJ0SWQgPSBfbmV4dFRpY2soX3RoaXMuX2RyYWdTdGFydGVkLmJpbmQoX3RoaXMsIGZhbGxiYWNrLCBldnQpKTtcbiAgICBvbihkb2N1bWVudCwgJ3NlbGVjdHN0YXJ0JywgX3RoaXMpO1xuICAgIG1vdmVkID0gdHJ1ZTtcblxuICAgIGlmIChTYWZhcmkpIHtcbiAgICAgIGNzcyhkb2N1bWVudC5ib2R5LCAndXNlci1zZWxlY3QnLCAnbm9uZScpO1xuICAgIH1cbiAgfSxcbiAgLy8gUmV0dXJucyB0cnVlIC0gaWYgbm8gZnVydGhlciBhY3Rpb24gaXMgbmVlZGVkIChlaXRoZXIgaW5zZXJ0ZWQgb3IgYW5vdGhlciBjb25kaXRpb24pXG4gIF9vbkRyYWdPdmVyOiBmdW5jdGlvbiBfb25EcmFnT3ZlcihcbiAgLyoqRXZlbnQqL1xuICBldnQpIHtcbiAgICB2YXIgZWwgPSB0aGlzLmVsLFxuICAgICAgICB0YXJnZXQgPSBldnQudGFyZ2V0LFxuICAgICAgICBkcmFnUmVjdCxcbiAgICAgICAgdGFyZ2V0UmVjdCxcbiAgICAgICAgcmV2ZXJ0LFxuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zLFxuICAgICAgICBncm91cCA9IG9wdGlvbnMuZ3JvdXAsXG4gICAgICAgIGFjdGl2ZVNvcnRhYmxlID0gU29ydGFibGUuYWN0aXZlLFxuICAgICAgICBpc093bmVyID0gYWN0aXZlR3JvdXAgPT09IGdyb3VwLFxuICAgICAgICBjYW5Tb3J0ID0gb3B0aW9ucy5zb3J0LFxuICAgICAgICBmcm9tU29ydGFibGUgPSBwdXRTb3J0YWJsZSB8fCBhY3RpdmVTb3J0YWJsZSxcbiAgICAgICAgdmVydGljYWwsXG4gICAgICAgIF90aGlzID0gdGhpcyxcbiAgICAgICAgY29tcGxldGVkRmlyZWQgPSBmYWxzZTtcblxuICAgIGlmIChfc2lsZW50KSByZXR1cm47XG5cbiAgICBmdW5jdGlvbiBkcmFnT3ZlckV2ZW50KG5hbWUsIGV4dHJhKSB7XG4gICAgICBwbHVnaW5FdmVudChuYW1lLCBfdGhpcywgX29iamVjdFNwcmVhZDIoe1xuICAgICAgICBldnQ6IGV2dCxcbiAgICAgICAgaXNPd25lcjogaXNPd25lcixcbiAgICAgICAgYXhpczogdmVydGljYWwgPyAndmVydGljYWwnIDogJ2hvcml6b250YWwnLFxuICAgICAgICByZXZlcnQ6IHJldmVydCxcbiAgICAgICAgZHJhZ1JlY3Q6IGRyYWdSZWN0LFxuICAgICAgICB0YXJnZXRSZWN0OiB0YXJnZXRSZWN0LFxuICAgICAgICBjYW5Tb3J0OiBjYW5Tb3J0LFxuICAgICAgICBmcm9tU29ydGFibGU6IGZyb21Tb3J0YWJsZSxcbiAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgIGNvbXBsZXRlZDogY29tcGxldGVkLFxuICAgICAgICBvbk1vdmU6IGZ1bmN0aW9uIG9uTW92ZSh0YXJnZXQsIGFmdGVyKSB7XG4gICAgICAgICAgcmV0dXJuIF9vbk1vdmUocm9vdEVsLCBlbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0LCBnZXRSZWN0KHRhcmdldCksIGV2dCwgYWZ0ZXIpO1xuICAgICAgICB9LFxuICAgICAgICBjaGFuZ2VkOiBjaGFuZ2VkXG4gICAgICB9LCBleHRyYSkpO1xuICAgIH0gLy8gQ2FwdHVyZSBhbmltYXRpb24gc3RhdGVcblxuXG4gICAgZnVuY3Rpb24gY2FwdHVyZSgpIHtcbiAgICAgIGRyYWdPdmVyRXZlbnQoJ2RyYWdPdmVyQW5pbWF0aW9uQ2FwdHVyZScpO1xuXG4gICAgICBfdGhpcy5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcblxuICAgICAgaWYgKF90aGlzICE9PSBmcm9tU29ydGFibGUpIHtcbiAgICAgICAgZnJvbVNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgICAgfVxuICAgIH0gLy8gUmV0dXJuIGludm9jYXRpb24gd2hlbiBkcmFnRWwgaXMgaW5zZXJ0ZWQgKG9yIGNvbXBsZXRlZClcblxuXG4gICAgZnVuY3Rpb24gY29tcGxldGVkKGluc2VydGlvbikge1xuICAgICAgZHJhZ092ZXJFdmVudCgnZHJhZ092ZXJDb21wbGV0ZWQnLCB7XG4gICAgICAgIGluc2VydGlvbjogaW5zZXJ0aW9uXG4gICAgICB9KTtcblxuICAgICAgaWYgKGluc2VydGlvbikge1xuICAgICAgICAvLyBDbG9uZXMgbXVzdCBiZSBoaWRkZW4gYmVmb3JlIGZvbGRpbmcgYW5pbWF0aW9uIHRvIGNhcHR1cmUgZHJhZ1JlY3RBYnNvbHV0ZSBwcm9wZXJseVxuICAgICAgICBpZiAoaXNPd25lcikge1xuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLl9oaWRlQ2xvbmUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZS5fc2hvd0Nsb25lKF90aGlzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfdGhpcyAhPT0gZnJvbVNvcnRhYmxlKSB7XG4gICAgICAgICAgLy8gU2V0IGdob3N0IGNsYXNzIHRvIG5ldyBzb3J0YWJsZSdzIGdob3N0IGNsYXNzXG4gICAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBwdXRTb3J0YWJsZSA/IHB1dFNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcyA6IGFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcywgZmFsc2UpO1xuICAgICAgICAgIHRvZ2dsZUNsYXNzKGRyYWdFbCwgb3B0aW9ucy5naG9zdENsYXNzLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwdXRTb3J0YWJsZSAhPT0gX3RoaXMgJiYgX3RoaXMgIT09IFNvcnRhYmxlLmFjdGl2ZSkge1xuICAgICAgICAgIHB1dFNvcnRhYmxlID0gX3RoaXM7XG4gICAgICAgIH0gZWxzZSBpZiAoX3RoaXMgPT09IFNvcnRhYmxlLmFjdGl2ZSAmJiBwdXRTb3J0YWJsZSkge1xuICAgICAgICAgIHB1dFNvcnRhYmxlID0gbnVsbDtcbiAgICAgICAgfSAvLyBBbmltYXRpb25cblxuXG4gICAgICAgIGlmIChmcm9tU29ydGFibGUgPT09IF90aGlzKSB7XG4gICAgICAgICAgX3RoaXMuX2lnbm9yZVdoaWxlQW5pbWF0aW5nID0gdGFyZ2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgX3RoaXMuYW5pbWF0ZUFsbChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZHJhZ092ZXJFdmVudCgnZHJhZ092ZXJBbmltYXRpb25Db21wbGV0ZScpO1xuICAgICAgICAgIF90aGlzLl9pZ25vcmVXaGlsZUFuaW1hdGluZyA9IG51bGw7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChfdGhpcyAhPT0gZnJvbVNvcnRhYmxlKSB7XG4gICAgICAgICAgZnJvbVNvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgICAgICAgICBmcm9tU29ydGFibGUuX2lnbm9yZVdoaWxlQW5pbWF0aW5nID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSAvLyBOdWxsIGxhc3RUYXJnZXQgaWYgaXQgaXMgbm90IGluc2lkZSBhIHByZXZpb3VzbHkgc3dhcHBlZCBlbGVtZW50XG5cblxuICAgICAgaWYgKHRhcmdldCA9PT0gZHJhZ0VsICYmICFkcmFnRWwuYW5pbWF0ZWQgfHwgdGFyZ2V0ID09PSBlbCAmJiAhdGFyZ2V0LmFuaW1hdGVkKSB7XG4gICAgICAgIGxhc3RUYXJnZXQgPSBudWxsO1xuICAgICAgfSAvLyBubyBidWJibGluZyBhbmQgbm90IGZhbGxiYWNrXG5cblxuICAgICAgaWYgKCFvcHRpb25zLmRyYWdvdmVyQnViYmxlICYmICFldnQucm9vdEVsICYmIHRhcmdldCAhPT0gZG9jdW1lbnQpIHtcbiAgICAgICAgZHJhZ0VsLnBhcmVudE5vZGVbZXhwYW5kb10uX2lzT3V0c2lkZVRoaXNFbChldnQudGFyZ2V0KTsgLy8gRG8gbm90IGRldGVjdCBmb3IgZW1wdHkgaW5zZXJ0IGlmIGFscmVhZHkgaW5zZXJ0ZWRcblxuXG4gICAgICAgICFpbnNlcnRpb24gJiYgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQoZXZ0KTtcbiAgICAgIH1cblxuICAgICAgIW9wdGlvbnMuZHJhZ292ZXJCdWJibGUgJiYgZXZ0LnN0b3BQcm9wYWdhdGlvbiAmJiBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gY29tcGxldGVkRmlyZWQgPSB0cnVlO1xuICAgIH0gLy8gQ2FsbCB3aGVuIGRyYWdFbCBoYXMgYmVlbiBpbnNlcnRlZFxuXG5cbiAgICBmdW5jdGlvbiBjaGFuZ2VkKCkge1xuICAgICAgbmV3SW5kZXggPSBpbmRleChkcmFnRWwpO1xuICAgICAgbmV3RHJhZ2dhYmxlSW5kZXggPSBpbmRleChkcmFnRWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcblxuICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICBzb3J0YWJsZTogX3RoaXMsXG4gICAgICAgIG5hbWU6ICdjaGFuZ2UnLFxuICAgICAgICB0b0VsOiBlbCxcbiAgICAgICAgbmV3SW5kZXg6IG5ld0luZGV4LFxuICAgICAgICBuZXdEcmFnZ2FibGVJbmRleDogbmV3RHJhZ2dhYmxlSW5kZXgsXG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGV2dC5wcmV2ZW50RGVmYXVsdCAhPT0gdm9pZCAwKSB7XG4gICAgICBldnQuY2FuY2VsYWJsZSAmJiBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICB0YXJnZXQgPSBjbG9zZXN0KHRhcmdldCwgb3B0aW9ucy5kcmFnZ2FibGUsIGVsLCB0cnVlKTtcbiAgICBkcmFnT3ZlckV2ZW50KCdkcmFnT3ZlcicpO1xuICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSByZXR1cm4gY29tcGxldGVkRmlyZWQ7XG5cbiAgICBpZiAoZHJhZ0VsLmNvbnRhaW5zKGV2dC50YXJnZXQpIHx8IHRhcmdldC5hbmltYXRlZCAmJiB0YXJnZXQuYW5pbWF0aW5nWCAmJiB0YXJnZXQuYW5pbWF0aW5nWSB8fCBfdGhpcy5faWdub3JlV2hpbGVBbmltYXRpbmcgPT09IHRhcmdldCkge1xuICAgICAgcmV0dXJuIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgfVxuXG4gICAgaWdub3JlTmV4dENsaWNrID0gZmFsc2U7XG5cbiAgICBpZiAoYWN0aXZlU29ydGFibGUgJiYgIW9wdGlvbnMuZGlzYWJsZWQgJiYgKGlzT3duZXIgPyBjYW5Tb3J0IHx8IChyZXZlcnQgPSBwYXJlbnRFbCAhPT0gcm9vdEVsKSAvLyBSZXZlcnRpbmcgaXRlbSBpbnRvIHRoZSBvcmlnaW5hbCBsaXN0XG4gICAgOiBwdXRTb3J0YWJsZSA9PT0gdGhpcyB8fCAodGhpcy5sYXN0UHV0TW9kZSA9IGFjdGl2ZUdyb3VwLmNoZWNrUHVsbCh0aGlzLCBhY3RpdmVTb3J0YWJsZSwgZHJhZ0VsLCBldnQpKSAmJiBncm91cC5jaGVja1B1dCh0aGlzLCBhY3RpdmVTb3J0YWJsZSwgZHJhZ0VsLCBldnQpKSkge1xuICAgICAgdmVydGljYWwgPSB0aGlzLl9nZXREaXJlY3Rpb24oZXZ0LCB0YXJnZXQpID09PSAndmVydGljYWwnO1xuICAgICAgZHJhZ1JlY3QgPSBnZXRSZWN0KGRyYWdFbCk7XG4gICAgICBkcmFnT3ZlckV2ZW50KCdkcmFnT3ZlclZhbGlkJyk7XG4gICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkgcmV0dXJuIGNvbXBsZXRlZEZpcmVkO1xuXG4gICAgICBpZiAocmV2ZXJ0KSB7XG4gICAgICAgIHBhcmVudEVsID0gcm9vdEVsOyAvLyBhY3R1YWxpemF0aW9uXG5cbiAgICAgICAgY2FwdHVyZSgpO1xuXG4gICAgICAgIHRoaXMuX2hpZGVDbG9uZSgpO1xuXG4gICAgICAgIGRyYWdPdmVyRXZlbnQoJ3JldmVydCcpO1xuXG4gICAgICAgIGlmICghU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgICAgIGlmIChuZXh0RWwpIHtcbiAgICAgICAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUoZHJhZ0VsLCBuZXh0RWwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByb290RWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29tcGxldGVkKHRydWUpO1xuICAgICAgfVxuXG4gICAgICB2YXIgZWxMYXN0Q2hpbGQgPSBsYXN0Q2hpbGQoZWwsIG9wdGlvbnMuZHJhZ2dhYmxlKTtcblxuICAgICAgaWYgKCFlbExhc3RDaGlsZCB8fCBfZ2hvc3RJc0xhc3QoZXZ0LCB2ZXJ0aWNhbCwgdGhpcykgJiYgIWVsTGFzdENoaWxkLmFuaW1hdGVkKSB7XG4gICAgICAgIC8vIEluc2VydCB0byBlbmQgb2YgbGlzdFxuICAgICAgICAvLyBJZiBhbHJlYWR5IGF0IGVuZCBvZiBsaXN0OiBEbyBub3QgaW5zZXJ0XG4gICAgICAgIGlmIChlbExhc3RDaGlsZCA9PT0gZHJhZ0VsKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZChmYWxzZSk7XG4gICAgICAgIH0gLy8gaWYgdGhlcmUgaXMgYSBsYXN0IGVsZW1lbnQsIGl0IGlzIHRoZSB0YXJnZXRcblxuXG4gICAgICAgIGlmIChlbExhc3RDaGlsZCAmJiBlbCA9PT0gZXZ0LnRhcmdldCkge1xuICAgICAgICAgIHRhcmdldCA9IGVsTGFzdENoaWxkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIHRhcmdldFJlY3QgPSBnZXRSZWN0KHRhcmdldCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoX29uTW92ZShyb290RWwsIGVsLCBkcmFnRWwsIGRyYWdSZWN0LCB0YXJnZXQsIHRhcmdldFJlY3QsIGV2dCwgISF0YXJnZXQpICE9PSBmYWxzZSkge1xuICAgICAgICAgIGNhcHR1cmUoKTtcbiAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkcmFnRWwpO1xuICAgICAgICAgIHBhcmVudEVsID0gZWw7IC8vIGFjdHVhbGl6YXRpb25cblxuICAgICAgICAgIGNoYW5nZWQoKTtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGVsTGFzdENoaWxkICYmIF9naG9zdElzRmlyc3QoZXZ0LCB2ZXJ0aWNhbCwgdGhpcykpIHtcbiAgICAgICAgLy8gSW5zZXJ0IHRvIHN0YXJ0IG9mIGxpc3RcbiAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSBnZXRDaGlsZChlbCwgMCwgb3B0aW9ucywgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKGZpcnN0Q2hpbGQgPT09IGRyYWdFbCkge1xuICAgICAgICAgIHJldHVybiBjb21wbGV0ZWQoZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGFyZ2V0ID0gZmlyc3RDaGlsZDtcbiAgICAgICAgdGFyZ2V0UmVjdCA9IGdldFJlY3QodGFyZ2V0KTtcblxuICAgICAgICBpZiAoX29uTW92ZShyb290RWwsIGVsLCBkcmFnRWwsIGRyYWdSZWN0LCB0YXJnZXQsIHRhcmdldFJlY3QsIGV2dCwgZmFsc2UpICE9PSBmYWxzZSkge1xuICAgICAgICAgIGNhcHR1cmUoKTtcbiAgICAgICAgICBlbC5pbnNlcnRCZWZvcmUoZHJhZ0VsLCBmaXJzdENoaWxkKTtcbiAgICAgICAgICBwYXJlbnRFbCA9IGVsOyAvLyBhY3R1YWxpemF0aW9uXG5cbiAgICAgICAgICBjaGFuZ2VkKCk7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0YXJnZXQucGFyZW50Tm9kZSA9PT0gZWwpIHtcbiAgICAgICAgdGFyZ2V0UmVjdCA9IGdldFJlY3QodGFyZ2V0KTtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IDAsXG4gICAgICAgICAgICB0YXJnZXRCZWZvcmVGaXJzdFN3YXAsXG4gICAgICAgICAgICBkaWZmZXJlbnRMZXZlbCA9IGRyYWdFbC5wYXJlbnROb2RlICE9PSBlbCxcbiAgICAgICAgICAgIGRpZmZlcmVudFJvd0NvbCA9ICFfZHJhZ0VsSW5Sb3dDb2x1bW4oZHJhZ0VsLmFuaW1hdGVkICYmIGRyYWdFbC50b1JlY3QgfHwgZHJhZ1JlY3QsIHRhcmdldC5hbmltYXRlZCAmJiB0YXJnZXQudG9SZWN0IHx8IHRhcmdldFJlY3QsIHZlcnRpY2FsKSxcbiAgICAgICAgICAgIHNpZGUxID0gdmVydGljYWwgPyAndG9wJyA6ICdsZWZ0JyxcbiAgICAgICAgICAgIHNjcm9sbGVkUGFzdFRvcCA9IGlzU2Nyb2xsZWRQYXN0KHRhcmdldCwgJ3RvcCcsICd0b3AnKSB8fCBpc1Njcm9sbGVkUGFzdChkcmFnRWwsICd0b3AnLCAndG9wJyksXG4gICAgICAgICAgICBzY3JvbGxCZWZvcmUgPSBzY3JvbGxlZFBhc3RUb3AgPyBzY3JvbGxlZFBhc3RUb3Auc2Nyb2xsVG9wIDogdm9pZCAwO1xuXG4gICAgICAgIGlmIChsYXN0VGFyZ2V0ICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICB0YXJnZXRCZWZvcmVGaXJzdFN3YXAgPSB0YXJnZXRSZWN0W3NpZGUxXTtcbiAgICAgICAgICBwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggPSBmYWxzZTtcbiAgICAgICAgICBpc0NpcmN1bXN0YW50aWFsSW52ZXJ0ID0gIWRpZmZlcmVudFJvd0NvbCAmJiBvcHRpb25zLmludmVydFN3YXAgfHwgZGlmZmVyZW50TGV2ZWw7XG4gICAgICAgIH1cblxuICAgICAgICBkaXJlY3Rpb24gPSBfZ2V0U3dhcERpcmVjdGlvbihldnQsIHRhcmdldCwgdGFyZ2V0UmVjdCwgdmVydGljYWwsIGRpZmZlcmVudFJvd0NvbCA/IDEgOiBvcHRpb25zLnN3YXBUaHJlc2hvbGQsIG9wdGlvbnMuaW52ZXJ0ZWRTd2FwVGhyZXNob2xkID09IG51bGwgPyBvcHRpb25zLnN3YXBUaHJlc2hvbGQgOiBvcHRpb25zLmludmVydGVkU3dhcFRocmVzaG9sZCwgaXNDaXJjdW1zdGFudGlhbEludmVydCwgbGFzdFRhcmdldCA9PT0gdGFyZ2V0KTtcbiAgICAgICAgdmFyIHNpYmxpbmc7XG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiAhPT0gMCkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIHRhcmdldCBpcyBiZXNpZGUgZHJhZ0VsIGluIHJlc3BlY3RpdmUgZGlyZWN0aW9uIChpZ25vcmluZyBoaWRkZW4gZWxlbWVudHMpXG4gICAgICAgICAgdmFyIGRyYWdJbmRleCA9IGluZGV4KGRyYWdFbCk7XG5cbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICBkcmFnSW5kZXggLT0gZGlyZWN0aW9uO1xuICAgICAgICAgICAgc2libGluZyA9IHBhcmVudEVsLmNoaWxkcmVuW2RyYWdJbmRleF07XG4gICAgICAgICAgfSB3aGlsZSAoc2libGluZyAmJiAoY3NzKHNpYmxpbmcsICdkaXNwbGF5JykgPT09ICdub25lJyB8fCBzaWJsaW5nID09PSBnaG9zdEVsKSk7XG4gICAgICAgIH0gLy8gSWYgZHJhZ0VsIGlzIGFscmVhZHkgYmVzaWRlIHRhcmdldDogRG8gbm90IGluc2VydFxuXG5cbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gMCB8fCBzaWJsaW5nID09PSB0YXJnZXQpIHtcbiAgICAgICAgICByZXR1cm4gY29tcGxldGVkKGZhbHNlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxhc3RUYXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIGxhc3REaXJlY3Rpb24gPSBkaXJlY3Rpb247XG4gICAgICAgIHZhciBuZXh0U2libGluZyA9IHRhcmdldC5uZXh0RWxlbWVudFNpYmxpbmcsXG4gICAgICAgICAgICBhZnRlciA9IGZhbHNlO1xuICAgICAgICBhZnRlciA9IGRpcmVjdGlvbiA9PT0gMTtcblxuICAgICAgICB2YXIgbW92ZVZlY3RvciA9IF9vbk1vdmUocm9vdEVsLCBlbCwgZHJhZ0VsLCBkcmFnUmVjdCwgdGFyZ2V0LCB0YXJnZXRSZWN0LCBldnQsIGFmdGVyKTtcblxuICAgICAgICBpZiAobW92ZVZlY3RvciAhPT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAobW92ZVZlY3RvciA9PT0gMSB8fCBtb3ZlVmVjdG9yID09PSAtMSkge1xuICAgICAgICAgICAgYWZ0ZXIgPSBtb3ZlVmVjdG9yID09PSAxO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIF9zaWxlbnQgPSB0cnVlO1xuICAgICAgICAgIHNldFRpbWVvdXQoX3Vuc2lsZW50LCAzMCk7XG4gICAgICAgICAgY2FwdHVyZSgpO1xuXG4gICAgICAgICAgaWYgKGFmdGVyICYmICFuZXh0U2libGluZykge1xuICAgICAgICAgICAgZWwuYXBwZW5kQ2hpbGQoZHJhZ0VsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGRyYWdFbCwgYWZ0ZXIgPyBuZXh0U2libGluZyA6IHRhcmdldCk7XG4gICAgICAgICAgfSAvLyBVbmRvIGNocm9tZSdzIHNjcm9sbCBhZGp1c3RtZW50IChoYXMgbm8gZWZmZWN0IG9uIG90aGVyIGJyb3dzZXJzKVxuXG5cbiAgICAgICAgICBpZiAoc2Nyb2xsZWRQYXN0VG9wKSB7XG4gICAgICAgICAgICBzY3JvbGxCeShzY3JvbGxlZFBhc3RUb3AsIDAsIHNjcm9sbEJlZm9yZSAtIHNjcm9sbGVkUGFzdFRvcC5zY3JvbGxUb3ApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHBhcmVudEVsID0gZHJhZ0VsLnBhcmVudE5vZGU7IC8vIGFjdHVhbGl6YXRpb25cbiAgICAgICAgICAvLyBtdXN0IGJlIGRvbmUgYmVmb3JlIGFuaW1hdGlvblxuXG4gICAgICAgICAgaWYgKHRhcmdldEJlZm9yZUZpcnN0U3dhcCAhPT0gdW5kZWZpbmVkICYmICFpc0NpcmN1bXN0YW50aWFsSW52ZXJ0KSB7XG4gICAgICAgICAgICB0YXJnZXRNb3ZlRGlzdGFuY2UgPSBNYXRoLmFicyh0YXJnZXRCZWZvcmVGaXJzdFN3YXAgLSBnZXRSZWN0KHRhcmdldClbc2lkZTFdKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjaGFuZ2VkKCk7XG4gICAgICAgICAgcmV0dXJuIGNvbXBsZXRlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZWwuY29udGFpbnMoZHJhZ0VsKSkge1xuICAgICAgICByZXR1cm4gY29tcGxldGVkKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4gIF9pZ25vcmVXaGlsZUFuaW1hdGluZzogbnVsbCxcbiAgX29mZk1vdmVFdmVudHM6IGZ1bmN0aW9uIF9vZmZNb3ZlRXZlbnRzKCkge1xuICAgIG9mZihkb2N1bWVudCwgJ21vdXNlbW92ZScsIHRoaXMuX29uVG91Y2hNb3ZlKTtcbiAgICBvZmYoZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgb2ZmKGRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9vblRvdWNoTW92ZSk7XG4gICAgb2ZmKGRvY3VtZW50LCAnZHJhZ292ZXInLCBuZWFyZXN0RW1wdHlJbnNlcnREZXRlY3RFdmVudCk7XG4gICAgb2ZmKGRvY3VtZW50LCAnbW91c2Vtb3ZlJywgbmVhcmVzdEVtcHR5SW5zZXJ0RGV0ZWN0RXZlbnQpO1xuICAgIG9mZihkb2N1bWVudCwgJ3RvdWNobW92ZScsIG5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50KTtcbiAgfSxcbiAgX29mZlVwRXZlbnRzOiBmdW5jdGlvbiBfb2ZmVXBFdmVudHMoKSB7XG4gICAgdmFyIG93bmVyRG9jdW1lbnQgPSB0aGlzLmVsLm93bmVyRG9jdW1lbnQ7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5fb25Ecm9wKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy5fb25Ecm9wKTtcbiAgICBvZmYob3duZXJEb2N1bWVudCwgJ3BvaW50ZXJ1cCcsIHRoaXMuX29uRHJvcCk7XG4gICAgb2ZmKG93bmVyRG9jdW1lbnQsICd0b3VjaGNhbmNlbCcsIHRoaXMuX29uRHJvcCk7XG4gICAgb2ZmKGRvY3VtZW50LCAnc2VsZWN0c3RhcnQnLCB0aGlzKTtcbiAgfSxcbiAgX29uRHJvcDogZnVuY3Rpb24gX29uRHJvcChcbiAgLyoqRXZlbnQqL1xuICBldnQpIHtcbiAgICB2YXIgZWwgPSB0aGlzLmVsLFxuICAgICAgICBvcHRpb25zID0gdGhpcy5vcHRpb25zOyAvLyBHZXQgdGhlIGluZGV4IG9mIHRoZSBkcmFnZ2VkIGVsZW1lbnQgd2l0aGluIGl0cyBwYXJlbnRcblxuICAgIG5ld0luZGV4ID0gaW5kZXgoZHJhZ0VsKTtcbiAgICBuZXdEcmFnZ2FibGVJbmRleCA9IGluZGV4KGRyYWdFbCwgb3B0aW9ucy5kcmFnZ2FibGUpO1xuICAgIHBsdWdpbkV2ZW50KCdkcm9wJywgdGhpcywge1xuICAgICAgZXZ0OiBldnRcbiAgICB9KTtcbiAgICBwYXJlbnRFbCA9IGRyYWdFbCAmJiBkcmFnRWwucGFyZW50Tm9kZTsgLy8gR2V0IGFnYWluIGFmdGVyIHBsdWdpbiBldmVudFxuXG4gICAgbmV3SW5kZXggPSBpbmRleChkcmFnRWwpO1xuICAgIG5ld0RyYWdnYWJsZUluZGV4ID0gaW5kZXgoZHJhZ0VsLCBvcHRpb25zLmRyYWdnYWJsZSk7XG5cbiAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkge1xuICAgICAgdGhpcy5fbnVsbGluZygpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXRpbmdEcmFnU3RhcnRlZCA9IGZhbHNlO1xuICAgIGlzQ2lyY3Vtc3RhbnRpYWxJbnZlcnQgPSBmYWxzZTtcbiAgICBwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggPSBmYWxzZTtcbiAgICBjbGVhckludGVydmFsKHRoaXMuX2xvb3BJZCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2RyYWdTdGFydFRpbWVyKTtcblxuICAgIF9jYW5jZWxOZXh0VGljayh0aGlzLmNsb25lSWQpO1xuXG4gICAgX2NhbmNlbE5leHRUaWNrKHRoaXMuX2RyYWdTdGFydElkKTsgLy8gVW5iaW5kIGV2ZW50c1xuXG5cbiAgICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgIG9mZihkb2N1bWVudCwgJ2Ryb3AnLCB0aGlzKTtcbiAgICAgIG9mZihlbCwgJ2RyYWdzdGFydCcsIHRoaXMuX29uRHJhZ1N0YXJ0KTtcbiAgICB9XG5cbiAgICB0aGlzLl9vZmZNb3ZlRXZlbnRzKCk7XG5cbiAgICB0aGlzLl9vZmZVcEV2ZW50cygpO1xuXG4gICAgaWYgKFNhZmFyaSkge1xuICAgICAgY3NzKGRvY3VtZW50LmJvZHksICd1c2VyLXNlbGVjdCcsICcnKTtcbiAgICB9XG5cbiAgICBjc3MoZHJhZ0VsLCAndHJhbnNmb3JtJywgJycpO1xuXG4gICAgaWYgKGV2dCkge1xuICAgICAgaWYgKG1vdmVkKSB7XG4gICAgICAgIGV2dC5jYW5jZWxhYmxlICYmIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAhb3B0aW9ucy5kcm9wQnViYmxlICYmIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cblxuICAgICAgZ2hvc3RFbCAmJiBnaG9zdEVsLnBhcmVudE5vZGUgJiYgZ2hvc3RFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGdob3N0RWwpO1xuXG4gICAgICBpZiAocm9vdEVsID09PSBwYXJlbnRFbCB8fCBwdXRTb3J0YWJsZSAmJiBwdXRTb3J0YWJsZS5sYXN0UHV0TW9kZSAhPT0gJ2Nsb25lJykge1xuICAgICAgICAvLyBSZW1vdmUgY2xvbmUocylcbiAgICAgICAgY2xvbmVFbCAmJiBjbG9uZUVsLnBhcmVudE5vZGUgJiYgY2xvbmVFbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb25lRWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAoZHJhZ0VsKSB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICAgIG9mZihkcmFnRWwsICdkcmFnZW5kJywgdGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICBfZGlzYWJsZURyYWdnYWJsZShkcmFnRWwpO1xuXG4gICAgICAgIGRyYWdFbC5zdHlsZVsnd2lsbC1jaGFuZ2UnXSA9ICcnOyAvLyBSZW1vdmUgY2xhc3Nlc1xuICAgICAgICAvLyBnaG9zdENsYXNzIGlzIGFkZGVkIGluIGRyYWdTdGFydGVkXG5cbiAgICAgICAgaWYgKG1vdmVkICYmICFhd2FpdGluZ0RyYWdTdGFydGVkKSB7XG4gICAgICAgICAgdG9nZ2xlQ2xhc3MoZHJhZ0VsLCBwdXRTb3J0YWJsZSA/IHB1dFNvcnRhYmxlLm9wdGlvbnMuZ2hvc3RDbGFzcyA6IHRoaXMub3B0aW9ucy5naG9zdENsYXNzLCBmYWxzZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwsIHRoaXMub3B0aW9ucy5jaG9zZW5DbGFzcywgZmFsc2UpOyAvLyBEcmFnIHN0b3AgZXZlbnRcblxuICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgbmFtZTogJ3VuY2hvb3NlJyxcbiAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICBuZXdJbmRleDogbnVsbCxcbiAgICAgICAgICBuZXdEcmFnZ2FibGVJbmRleDogbnVsbCxcbiAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHJvb3RFbCAhPT0gcGFyZW50RWwpIHtcbiAgICAgICAgICBpZiAobmV3SW5kZXggPj0gMCkge1xuICAgICAgICAgICAgLy8gQWRkIGV2ZW50XG4gICAgICAgICAgICBfZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICAgIHJvb3RFbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIG5hbWU6ICdhZGQnLFxuICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgZnJvbUVsOiByb290RWwsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgfSk7IC8vIFJlbW92ZSBldmVudFxuXG5cbiAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgICAgIG5hbWU6ICdyZW1vdmUnLFxuICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgICB9KTsgLy8gZHJhZyBmcm9tIG9uZSBsaXN0IGFuZCBkcm9wIGludG8gYW5vdGhlclxuXG5cbiAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgcm9vdEVsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgbmFtZTogJ3NvcnQnLFxuICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgZnJvbUVsOiByb290RWwsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgICAgIG5hbWU6ICdzb3J0JyxcbiAgICAgICAgICAgICAgdG9FbDogcGFyZW50RWwsXG4gICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcHV0U29ydGFibGUgJiYgcHV0U29ydGFibGUuc2F2ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChuZXdJbmRleCAhPT0gb2xkSW5kZXgpIHtcbiAgICAgICAgICAgIGlmIChuZXdJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgIC8vIGRyYWcgJiBkcm9wIHdpdGhpbiB0aGUgc2FtZSBsaXN0XG4gICAgICAgICAgICAgIF9kaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICAgICAgICBzb3J0YWJsZTogdGhpcyxcbiAgICAgICAgICAgICAgICBuYW1lOiAndXBkYXRlJyxcbiAgICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICAgIHNvcnRhYmxlOiB0aGlzLFxuICAgICAgICAgICAgICAgIG5hbWU6ICdzb3J0JyxcbiAgICAgICAgICAgICAgICB0b0VsOiBwYXJlbnRFbCxcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFNvcnRhYmxlLmFjdGl2ZSkge1xuICAgICAgICAgIC8qIGpzaGludCBlcW51bGw6dHJ1ZSAqL1xuICAgICAgICAgIGlmIChuZXdJbmRleCA9PSBudWxsIHx8IG5ld0luZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgbmV3SW5kZXggPSBvbGRJbmRleDtcbiAgICAgICAgICAgIG5ld0RyYWdnYWJsZUluZGV4ID0gb2xkRHJhZ2dhYmxlSW5kZXg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgX2Rpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgc29ydGFibGU6IHRoaXMsXG4gICAgICAgICAgICBuYW1lOiAnZW5kJyxcbiAgICAgICAgICAgIHRvRWw6IHBhcmVudEVsLFxuICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0XG4gICAgICAgICAgfSk7IC8vIFNhdmUgc29ydGluZ1xuXG5cbiAgICAgICAgICB0aGlzLnNhdmUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX251bGxpbmcoKTtcbiAgfSxcbiAgX251bGxpbmc6IGZ1bmN0aW9uIF9udWxsaW5nKCkge1xuICAgIHBsdWdpbkV2ZW50KCdudWxsaW5nJywgdGhpcyk7XG4gICAgcm9vdEVsID0gZHJhZ0VsID0gcGFyZW50RWwgPSBnaG9zdEVsID0gbmV4dEVsID0gY2xvbmVFbCA9IGxhc3REb3duRWwgPSBjbG9uZUhpZGRlbiA9IHRhcEV2dCA9IHRvdWNoRXZ0ID0gbW92ZWQgPSBuZXdJbmRleCA9IG5ld0RyYWdnYWJsZUluZGV4ID0gb2xkSW5kZXggPSBvbGREcmFnZ2FibGVJbmRleCA9IGxhc3RUYXJnZXQgPSBsYXN0RGlyZWN0aW9uID0gcHV0U29ydGFibGUgPSBhY3RpdmVHcm91cCA9IFNvcnRhYmxlLmRyYWdnZWQgPSBTb3J0YWJsZS5naG9zdCA9IFNvcnRhYmxlLmNsb25lID0gU29ydGFibGUuYWN0aXZlID0gbnVsbDtcbiAgICBzYXZlZElucHV0Q2hlY2tlZC5mb3JFYWNoKGZ1bmN0aW9uIChlbCkge1xuICAgICAgZWwuY2hlY2tlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgc2F2ZWRJbnB1dENoZWNrZWQubGVuZ3RoID0gbGFzdER4ID0gbGFzdER5ID0gMDtcbiAgfSxcbiAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uIGhhbmRsZUV2ZW50KFxuICAvKipFdmVudCovXG4gIGV2dCkge1xuICAgIHN3aXRjaCAoZXZ0LnR5cGUpIHtcbiAgICAgIGNhc2UgJ2Ryb3AnOlxuICAgICAgY2FzZSAnZHJhZ2VuZCc6XG4gICAgICAgIHRoaXMuX29uRHJvcChldnQpO1xuXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdkcmFnZW50ZXInOlxuICAgICAgY2FzZSAnZHJhZ292ZXInOlxuICAgICAgICBpZiAoZHJhZ0VsKSB7XG4gICAgICAgICAgdGhpcy5fb25EcmFnT3ZlcihldnQpO1xuXG4gICAgICAgICAgX2dsb2JhbERyYWdPdmVyKGV2dCk7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnc2VsZWN0c3RhcnQnOlxuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZXJpYWxpemVzIHRoZSBpdGVtIGludG8gYW4gYXJyYXkgb2Ygc3RyaW5nLlxuICAgKiBAcmV0dXJucyB7U3RyaW5nW119XG4gICAqL1xuICB0b0FycmF5OiBmdW5jdGlvbiB0b0FycmF5KCkge1xuICAgIHZhciBvcmRlciA9IFtdLFxuICAgICAgICBlbCxcbiAgICAgICAgY2hpbGRyZW4gPSB0aGlzLmVsLmNoaWxkcmVuLFxuICAgICAgICBpID0gMCxcbiAgICAgICAgbiA9IGNoaWxkcmVuLmxlbmd0aCxcbiAgICAgICAgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgIGZvciAoOyBpIDwgbjsgaSsrKSB7XG4gICAgICBlbCA9IGNoaWxkcmVuW2ldO1xuXG4gICAgICBpZiAoY2xvc2VzdChlbCwgb3B0aW9ucy5kcmFnZ2FibGUsIHRoaXMuZWwsIGZhbHNlKSkge1xuICAgICAgICBvcmRlci5wdXNoKGVsLmdldEF0dHJpYnV0ZShvcHRpb25zLmRhdGFJZEF0dHIpIHx8IF9nZW5lcmF0ZUlkKGVsKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTb3J0cyB0aGUgZWxlbWVudHMgYWNjb3JkaW5nIHRvIHRoZSBhcnJheS5cbiAgICogQHBhcmFtICB7U3RyaW5nW119ICBvcmRlciAgb3JkZXIgb2YgdGhlIGl0ZW1zXG4gICAqL1xuICBzb3J0OiBmdW5jdGlvbiBzb3J0KG9yZGVyLCB1c2VBbmltYXRpb24pIHtcbiAgICB2YXIgaXRlbXMgPSB7fSxcbiAgICAgICAgcm9vdEVsID0gdGhpcy5lbDtcbiAgICB0aGlzLnRvQXJyYXkoKS5mb3JFYWNoKGZ1bmN0aW9uIChpZCwgaSkge1xuICAgICAgdmFyIGVsID0gcm9vdEVsLmNoaWxkcmVuW2ldO1xuXG4gICAgICBpZiAoY2xvc2VzdChlbCwgdGhpcy5vcHRpb25zLmRyYWdnYWJsZSwgcm9vdEVsLCBmYWxzZSkpIHtcbiAgICAgICAgaXRlbXNbaWRdID0gZWw7XG4gICAgICB9XG4gICAgfSwgdGhpcyk7XG4gICAgdXNlQW5pbWF0aW9uICYmIHRoaXMuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgb3JkZXIuZm9yRWFjaChmdW5jdGlvbiAoaWQpIHtcbiAgICAgIGlmIChpdGVtc1tpZF0pIHtcbiAgICAgICAgcm9vdEVsLnJlbW92ZUNoaWxkKGl0ZW1zW2lkXSk7XG4gICAgICAgIHJvb3RFbC5hcHBlbmRDaGlsZChpdGVtc1tpZF0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHVzZUFuaW1hdGlvbiAmJiB0aGlzLmFuaW1hdGVBbGwoKTtcbiAgfSxcblxuICAvKipcbiAgICogU2F2ZSB0aGUgY3VycmVudCBzb3J0aW5nXG4gICAqL1xuICBzYXZlOiBmdW5jdGlvbiBzYXZlKCkge1xuICAgIHZhciBzdG9yZSA9IHRoaXMub3B0aW9ucy5zdG9yZTtcbiAgICBzdG9yZSAmJiBzdG9yZS5zZXQgJiYgc3RvcmUuc2V0KHRoaXMpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3IgZWFjaCBlbGVtZW50IGluIHRoZSBzZXQsIGdldCB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yIGJ5IHRlc3RpbmcgdGhlIGVsZW1lbnQgaXRzZWxmIGFuZCB0cmF2ZXJzaW5nIHVwIHRocm91Z2ggaXRzIGFuY2VzdG9ycyBpbiB0aGUgRE9NIHRyZWUuXG4gICAqIEBwYXJhbSAgIHtIVE1MRWxlbWVudH0gIGVsXG4gICAqIEBwYXJhbSAgIHtTdHJpbmd9ICAgICAgIFtzZWxlY3Rvcl0gIGRlZmF1bHQ6IGBvcHRpb25zLmRyYWdnYWJsZWBcbiAgICogQHJldHVybnMge0hUTUxFbGVtZW50fG51bGx9XG4gICAqL1xuICBjbG9zZXN0OiBmdW5jdGlvbiBjbG9zZXN0JDEoZWwsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIGNsb3Nlc3QoZWwsIHNlbGVjdG9yIHx8IHRoaXMub3B0aW9ucy5kcmFnZ2FibGUsIHRoaXMuZWwsIGZhbHNlKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0L2dldCBvcHRpb25cbiAgICogQHBhcmFtICAge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0gICB7Kn0gICAgICBbdmFsdWVdXG4gICAqIEByZXR1cm5zIHsqfVxuICAgKi9cbiAgb3B0aW9uOiBmdW5jdGlvbiBvcHRpb24obmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgIGlmICh2YWx1ZSA9PT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gb3B0aW9uc1tuYW1lXTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIG1vZGlmaWVkVmFsdWUgPSBQbHVnaW5NYW5hZ2VyLm1vZGlmeU9wdGlvbih0aGlzLCBuYW1lLCB2YWx1ZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgbW9kaWZpZWRWYWx1ZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgb3B0aW9uc1tuYW1lXSA9IG1vZGlmaWVkVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zW25hbWVdID0gdmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChuYW1lID09PSAnZ3JvdXAnKSB7XG4gICAgICAgIF9wcmVwYXJlR3JvdXAob3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZXN0cm95XG4gICAqL1xuICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgIHBsdWdpbkV2ZW50KCdkZXN0cm95JywgdGhpcyk7XG4gICAgdmFyIGVsID0gdGhpcy5lbDtcbiAgICBlbFtleHBhbmRvXSA9IG51bGw7XG4gICAgb2ZmKGVsLCAnbW91c2Vkb3duJywgdGhpcy5fb25UYXBTdGFydCk7XG4gICAgb2ZmKGVsLCAndG91Y2hzdGFydCcsIHRoaXMuX29uVGFwU3RhcnQpO1xuICAgIG9mZihlbCwgJ3BvaW50ZXJkb3duJywgdGhpcy5fb25UYXBTdGFydCk7XG5cbiAgICBpZiAodGhpcy5uYXRpdmVEcmFnZ2FibGUpIHtcbiAgICAgIG9mZihlbCwgJ2RyYWdvdmVyJywgdGhpcyk7XG4gICAgICBvZmYoZWwsICdkcmFnZW50ZXInLCB0aGlzKTtcbiAgICB9IC8vIFJlbW92ZSBkcmFnZ2FibGUgYXR0cmlidXRlc1xuXG5cbiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkcmFnZ2FibGVdJyksIGZ1bmN0aW9uIChlbCkge1xuICAgICAgZWwucmVtb3ZlQXR0cmlidXRlKCdkcmFnZ2FibGUnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX29uRHJvcCgpO1xuXG4gICAgdGhpcy5fZGlzYWJsZURlbGF5ZWREcmFnRXZlbnRzKCk7XG5cbiAgICBzb3J0YWJsZXMuc3BsaWNlKHNvcnRhYmxlcy5pbmRleE9mKHRoaXMuZWwpLCAxKTtcbiAgICB0aGlzLmVsID0gZWwgPSBudWxsO1xuICB9LFxuICBfaGlkZUNsb25lOiBmdW5jdGlvbiBfaGlkZUNsb25lKCkge1xuICAgIGlmICghY2xvbmVIaWRkZW4pIHtcbiAgICAgIHBsdWdpbkV2ZW50KCdoaWRlQ2xvbmUnLCB0aGlzKTtcbiAgICAgIGlmIChTb3J0YWJsZS5ldmVudENhbmNlbGVkKSByZXR1cm47XG4gICAgICBjc3MoY2xvbmVFbCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlICYmIGNsb25lRWwucGFyZW50Tm9kZSkge1xuICAgICAgICBjbG9uZUVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2xvbmVFbCk7XG4gICAgICB9XG5cbiAgICAgIGNsb25lSGlkZGVuID0gdHJ1ZTtcbiAgICB9XG4gIH0sXG4gIF9zaG93Q2xvbmU6IGZ1bmN0aW9uIF9zaG93Q2xvbmUocHV0U29ydGFibGUpIHtcbiAgICBpZiAocHV0U29ydGFibGUubGFzdFB1dE1vZGUgIT09ICdjbG9uZScpIHtcbiAgICAgIHRoaXMuX2hpZGVDbG9uZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGNsb25lSGlkZGVuKSB7XG4gICAgICBwbHVnaW5FdmVudCgnc2hvd0Nsb25lJywgdGhpcyk7XG4gICAgICBpZiAoU29ydGFibGUuZXZlbnRDYW5jZWxlZCkgcmV0dXJuOyAvLyBzaG93IGNsb25lIGF0IGRyYWdFbCBvciBvcmlnaW5hbCBwb3NpdGlvblxuXG4gICAgICBpZiAoZHJhZ0VsLnBhcmVudE5vZGUgPT0gcm9vdEVsICYmICF0aGlzLm9wdGlvbnMuZ3JvdXAucmV2ZXJ0Q2xvbmUpIHtcbiAgICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShjbG9uZUVsLCBkcmFnRWwpO1xuICAgICAgfSBlbHNlIGlmIChuZXh0RWwpIHtcbiAgICAgICAgcm9vdEVsLmluc2VydEJlZm9yZShjbG9uZUVsLCBuZXh0RWwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcm9vdEVsLmFwcGVuZENoaWxkKGNsb25lRWwpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmdyb3VwLnJldmVydENsb25lKSB7XG4gICAgICAgIHRoaXMuYW5pbWF0ZShkcmFnRWwsIGNsb25lRWwpO1xuICAgICAgfVxuXG4gICAgICBjc3MoY2xvbmVFbCwgJ2Rpc3BsYXknLCAnJyk7XG4gICAgICBjbG9uZUhpZGRlbiA9IGZhbHNlO1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2dsb2JhbERyYWdPdmVyKFxuLyoqRXZlbnQqL1xuZXZ0KSB7XG4gIGlmIChldnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgZXZ0LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gJ21vdmUnO1xuICB9XG5cbiAgZXZ0LmNhbmNlbGFibGUgJiYgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG59XG5cbmZ1bmN0aW9uIF9vbk1vdmUoZnJvbUVsLCB0b0VsLCBkcmFnRWwsIGRyYWdSZWN0LCB0YXJnZXRFbCwgdGFyZ2V0UmVjdCwgb3JpZ2luYWxFdmVudCwgd2lsbEluc2VydEFmdGVyKSB7XG4gIHZhciBldnQsXG4gICAgICBzb3J0YWJsZSA9IGZyb21FbFtleHBhbmRvXSxcbiAgICAgIG9uTW92ZUZuID0gc29ydGFibGUub3B0aW9ucy5vbk1vdmUsXG4gICAgICByZXRWYWw7IC8vIFN1cHBvcnQgZm9yIG5ldyBDdXN0b21FdmVudCBmZWF0dXJlXG5cbiAgaWYgKHdpbmRvdy5DdXN0b21FdmVudCAmJiAhSUUxMU9yTGVzcyAmJiAhRWRnZSkge1xuICAgIGV2dCA9IG5ldyBDdXN0b21FdmVudCgnbW92ZScsIHtcbiAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICBjYW5jZWxhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgZXZ0LmluaXRFdmVudCgnbW92ZScsIHRydWUsIHRydWUpO1xuICB9XG5cbiAgZXZ0LnRvID0gdG9FbDtcbiAgZXZ0LmZyb20gPSBmcm9tRWw7XG4gIGV2dC5kcmFnZ2VkID0gZHJhZ0VsO1xuICBldnQuZHJhZ2dlZFJlY3QgPSBkcmFnUmVjdDtcbiAgZXZ0LnJlbGF0ZWQgPSB0YXJnZXRFbCB8fCB0b0VsO1xuICBldnQucmVsYXRlZFJlY3QgPSB0YXJnZXRSZWN0IHx8IGdldFJlY3QodG9FbCk7XG4gIGV2dC53aWxsSW5zZXJ0QWZ0ZXIgPSB3aWxsSW5zZXJ0QWZ0ZXI7XG4gIGV2dC5vcmlnaW5hbEV2ZW50ID0gb3JpZ2luYWxFdmVudDtcbiAgZnJvbUVsLmRpc3BhdGNoRXZlbnQoZXZ0KTtcblxuICBpZiAob25Nb3ZlRm4pIHtcbiAgICByZXRWYWwgPSBvbk1vdmVGbi5jYWxsKHNvcnRhYmxlLCBldnQsIG9yaWdpbmFsRXZlbnQpO1xuICB9XG5cbiAgcmV0dXJuIHJldFZhbDtcbn1cblxuZnVuY3Rpb24gX2Rpc2FibGVEcmFnZ2FibGUoZWwpIHtcbiAgZWwuZHJhZ2dhYmxlID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIF91bnNpbGVudCgpIHtcbiAgX3NpbGVudCA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBfZ2hvc3RJc0ZpcnN0KGV2dCwgdmVydGljYWwsIHNvcnRhYmxlKSB7XG4gIHZhciByZWN0ID0gZ2V0UmVjdChnZXRDaGlsZChzb3J0YWJsZS5lbCwgMCwgc29ydGFibGUub3B0aW9ucywgdHJ1ZSkpO1xuICB2YXIgc3BhY2VyID0gMTA7XG4gIHJldHVybiB2ZXJ0aWNhbCA/IGV2dC5jbGllbnRYIDwgcmVjdC5sZWZ0IC0gc3BhY2VyIHx8IGV2dC5jbGllbnRZIDwgcmVjdC50b3AgJiYgZXZ0LmNsaWVudFggPCByZWN0LnJpZ2h0IDogZXZ0LmNsaWVudFkgPCByZWN0LnRvcCAtIHNwYWNlciB8fCBldnQuY2xpZW50WSA8IHJlY3QuYm90dG9tICYmIGV2dC5jbGllbnRYIDwgcmVjdC5sZWZ0O1xufVxuXG5mdW5jdGlvbiBfZ2hvc3RJc0xhc3QoZXZ0LCB2ZXJ0aWNhbCwgc29ydGFibGUpIHtcbiAgdmFyIHJlY3QgPSBnZXRSZWN0KGxhc3RDaGlsZChzb3J0YWJsZS5lbCwgc29ydGFibGUub3B0aW9ucy5kcmFnZ2FibGUpKTtcbiAgdmFyIHNwYWNlciA9IDEwO1xuICByZXR1cm4gdmVydGljYWwgPyBldnQuY2xpZW50WCA+IHJlY3QucmlnaHQgKyBzcGFjZXIgfHwgZXZ0LmNsaWVudFggPD0gcmVjdC5yaWdodCAmJiBldnQuY2xpZW50WSA+IHJlY3QuYm90dG9tICYmIGV2dC5jbGllbnRYID49IHJlY3QubGVmdCA6IGV2dC5jbGllbnRYID4gcmVjdC5yaWdodCAmJiBldnQuY2xpZW50WSA+IHJlY3QudG9wIHx8IGV2dC5jbGllbnRYIDw9IHJlY3QucmlnaHQgJiYgZXZ0LmNsaWVudFkgPiByZWN0LmJvdHRvbSArIHNwYWNlcjtcbn1cblxuZnVuY3Rpb24gX2dldFN3YXBEaXJlY3Rpb24oZXZ0LCB0YXJnZXQsIHRhcmdldFJlY3QsIHZlcnRpY2FsLCBzd2FwVGhyZXNob2xkLCBpbnZlcnRlZFN3YXBUaHJlc2hvbGQsIGludmVydFN3YXAsIGlzTGFzdFRhcmdldCkge1xuICB2YXIgbW91c2VPbkF4aXMgPSB2ZXJ0aWNhbCA/IGV2dC5jbGllbnRZIDogZXZ0LmNsaWVudFgsXG4gICAgICB0YXJnZXRMZW5ndGggPSB2ZXJ0aWNhbCA/IHRhcmdldFJlY3QuaGVpZ2h0IDogdGFyZ2V0UmVjdC53aWR0aCxcbiAgICAgIHRhcmdldFMxID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LnRvcCA6IHRhcmdldFJlY3QubGVmdCxcbiAgICAgIHRhcmdldFMyID0gdmVydGljYWwgPyB0YXJnZXRSZWN0LmJvdHRvbSA6IHRhcmdldFJlY3QucmlnaHQsXG4gICAgICBpbnZlcnQgPSBmYWxzZTtcblxuICBpZiAoIWludmVydFN3YXApIHtcbiAgICAvLyBOZXZlciBpbnZlcnQgb3IgY3JlYXRlIGRyYWdFbCBzaGFkb3cgd2hlbiB0YXJnZXQgbW92ZW1lbmV0IGNhdXNlcyBtb3VzZSB0byBtb3ZlIHBhc3QgdGhlIGVuZCBvZiByZWd1bGFyIHN3YXBUaHJlc2hvbGRcbiAgICBpZiAoaXNMYXN0VGFyZ2V0ICYmIHRhcmdldE1vdmVEaXN0YW5jZSA8IHRhcmdldExlbmd0aCAqIHN3YXBUaHJlc2hvbGQpIHtcbiAgICAgIC8vIG11bHRpcGxpZWQgb25seSBieSBzd2FwVGhyZXNob2xkIGJlY2F1c2UgbW91c2Ugd2lsbCBhbHJlYWR5IGJlIGluc2lkZSB0YXJnZXQgYnkgKDEgLSB0aHJlc2hvbGQpICogdGFyZ2V0TGVuZ3RoIC8gMlxuICAgICAgLy8gY2hlY2sgaWYgcGFzdCBmaXJzdCBpbnZlcnQgdGhyZXNob2xkIG9uIHNpZGUgb3Bwb3NpdGUgb2YgbGFzdERpcmVjdGlvblxuICAgICAgaWYgKCFwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggJiYgKGxhc3REaXJlY3Rpb24gPT09IDEgPyBtb3VzZU9uQXhpcyA+IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMiA6IG1vdXNlT25BeGlzIDwgdGFyZ2V0UzIgLSB0YXJnZXRMZW5ndGggKiBpbnZlcnRlZFN3YXBUaHJlc2hvbGQgLyAyKSkge1xuICAgICAgICAvLyBwYXN0IGZpcnN0IGludmVydCB0aHJlc2hvbGQsIGRvIG5vdCByZXN0cmljdCBpbnZlcnRlZCB0aHJlc2hvbGQgdG8gZHJhZ0VsIHNoYWRvd1xuICAgICAgICBwYXN0Rmlyc3RJbnZlcnRUaHJlc2ggPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXBhc3RGaXJzdEludmVydFRocmVzaCkge1xuICAgICAgICAvLyBkcmFnRWwgc2hhZG93ICh0YXJnZXQgbW92ZSBkaXN0YW5jZSBzaGFkb3cpXG4gICAgICAgIGlmIChsYXN0RGlyZWN0aW9uID09PSAxID8gbW91c2VPbkF4aXMgPCB0YXJnZXRTMSArIHRhcmdldE1vdmVEaXN0YW5jZSAvLyBvdmVyIGRyYWdFbCBzaGFkb3dcbiAgICAgICAgOiBtb3VzZU9uQXhpcyA+IHRhcmdldFMyIC0gdGFyZ2V0TW92ZURpc3RhbmNlKSB7XG4gICAgICAgICAgcmV0dXJuIC1sYXN0RGlyZWN0aW9uO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnZlcnQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWd1bGFyXG4gICAgICBpZiAobW91c2VPbkF4aXMgPiB0YXJnZXRTMSArIHRhcmdldExlbmd0aCAqICgxIC0gc3dhcFRocmVzaG9sZCkgLyAyICYmIG1vdXNlT25BeGlzIDwgdGFyZ2V0UzIgLSB0YXJnZXRMZW5ndGggKiAoMSAtIHN3YXBUaHJlc2hvbGQpIC8gMikge1xuICAgICAgICByZXR1cm4gX2dldEluc2VydERpcmVjdGlvbih0YXJnZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGludmVydCA9IGludmVydCB8fCBpbnZlcnRTd2FwO1xuXG4gIGlmIChpbnZlcnQpIHtcbiAgICAvLyBJbnZlcnQgb2YgcmVndWxhclxuICAgIGlmIChtb3VzZU9uQXhpcyA8IHRhcmdldFMxICsgdGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMiB8fCBtb3VzZU9uQXhpcyA+IHRhcmdldFMyIC0gdGFyZ2V0TGVuZ3RoICogaW52ZXJ0ZWRTd2FwVGhyZXNob2xkIC8gMikge1xuICAgICAgcmV0dXJuIG1vdXNlT25BeGlzID4gdGFyZ2V0UzEgKyB0YXJnZXRMZW5ndGggLyAyID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuLyoqXG4gKiBHZXRzIHRoZSBkaXJlY3Rpb24gZHJhZ0VsIG11c3QgYmUgc3dhcHBlZCByZWxhdGl2ZSB0byB0YXJnZXQgaW4gb3JkZXIgdG8gbWFrZSBpdFxuICogc2VlbSB0aGF0IGRyYWdFbCBoYXMgYmVlbiBcImluc2VydGVkXCIgaW50byB0aGF0IGVsZW1lbnQncyBwb3NpdGlvblxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IHRhcmdldCAgICAgICBUaGUgdGFyZ2V0IHdob3NlIHBvc2l0aW9uIGRyYWdFbCBpcyBiZWluZyBpbnNlcnRlZCBhdFxuICogQHJldHVybiB7TnVtYmVyfSAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24gZHJhZ0VsIG11c3QgYmUgc3dhcHBlZFxuICovXG5cblxuZnVuY3Rpb24gX2dldEluc2VydERpcmVjdGlvbih0YXJnZXQpIHtcbiAgaWYgKGluZGV4KGRyYWdFbCkgPCBpbmRleCh0YXJnZXQpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIC0xO1xuICB9XG59XG4vKipcbiAqIEdlbmVyYXRlIGlkXG4gKiBAcGFyYW0gICB7SFRNTEVsZW1lbnR9IGVsXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICogQHByaXZhdGVcbiAqL1xuXG5cbmZ1bmN0aW9uIF9nZW5lcmF0ZUlkKGVsKSB7XG4gIHZhciBzdHIgPSBlbC50YWdOYW1lICsgZWwuY2xhc3NOYW1lICsgZWwuc3JjICsgZWwuaHJlZiArIGVsLnRleHRDb250ZW50LFxuICAgICAgaSA9IHN0ci5sZW5ndGgsXG4gICAgICBzdW0gPSAwO1xuXG4gIHdoaWxlIChpLS0pIHtcbiAgICBzdW0gKz0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gIH1cblxuICByZXR1cm4gc3VtLnRvU3RyaW5nKDM2KTtcbn1cblxuZnVuY3Rpb24gX3NhdmVJbnB1dENoZWNrZWRTdGF0ZShyb290KSB7XG4gIHNhdmVkSW5wdXRDaGVja2VkLmxlbmd0aCA9IDA7XG4gIHZhciBpbnB1dHMgPSByb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpO1xuICB2YXIgaWR4ID0gaW5wdXRzLmxlbmd0aDtcblxuICB3aGlsZSAoaWR4LS0pIHtcbiAgICB2YXIgZWwgPSBpbnB1dHNbaWR4XTtcbiAgICBlbC5jaGVja2VkICYmIHNhdmVkSW5wdXRDaGVja2VkLnB1c2goZWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9uZXh0VGljayhmbikge1xuICByZXR1cm4gc2V0VGltZW91dChmbiwgMCk7XG59XG5cbmZ1bmN0aW9uIF9jYW5jZWxOZXh0VGljayhpZCkge1xuICByZXR1cm4gY2xlYXJUaW1lb3V0KGlkKTtcbn0gLy8gRml4ZWQgIzk3MzpcblxuXG5pZiAoZG9jdW1lbnRFeGlzdHMpIHtcbiAgb24oZG9jdW1lbnQsICd0b3VjaG1vdmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKChTb3J0YWJsZS5hY3RpdmUgfHwgYXdhaXRpbmdEcmFnU3RhcnRlZCkgJiYgZXZ0LmNhbmNlbGFibGUpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfSk7XG59IC8vIEV4cG9ydCB1dGlsc1xuXG5cblNvcnRhYmxlLnV0aWxzID0ge1xuICBvbjogb24sXG4gIG9mZjogb2ZmLFxuICBjc3M6IGNzcyxcbiAgZmluZDogZmluZCxcbiAgaXM6IGZ1bmN0aW9uIGlzKGVsLCBzZWxlY3Rvcikge1xuICAgIHJldHVybiAhIWNsb3Nlc3QoZWwsIHNlbGVjdG9yLCBlbCwgZmFsc2UpO1xuICB9LFxuICBleHRlbmQ6IGV4dGVuZCxcbiAgdGhyb3R0bGU6IHRocm90dGxlLFxuICBjbG9zZXN0OiBjbG9zZXN0LFxuICB0b2dnbGVDbGFzczogdG9nZ2xlQ2xhc3MsXG4gIGNsb25lOiBjbG9uZSxcbiAgaW5kZXg6IGluZGV4LFxuICBuZXh0VGljazogX25leHRUaWNrLFxuICBjYW5jZWxOZXh0VGljazogX2NhbmNlbE5leHRUaWNrLFxuICBkZXRlY3REaXJlY3Rpb246IF9kZXRlY3REaXJlY3Rpb24sXG4gIGdldENoaWxkOiBnZXRDaGlsZFxufTtcbi8qKlxuICogR2V0IHRoZSBTb3J0YWJsZSBpbnN0YW5jZSBvZiBhbiBlbGVtZW50XG4gKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWxlbWVudCBUaGUgZWxlbWVudFxuICogQHJldHVybiB7U29ydGFibGV8dW5kZWZpbmVkfSAgICAgICAgIFRoZSBpbnN0YW5jZSBvZiBTb3J0YWJsZVxuICovXG5cblNvcnRhYmxlLmdldCA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50W2V4cGFuZG9dO1xufTtcbi8qKlxuICogTW91bnQgYSBwbHVnaW4gdG8gU29ydGFibGVcbiAqIEBwYXJhbSAgey4uLlNvcnRhYmxlUGx1Z2lufFNvcnRhYmxlUGx1Z2luW119IHBsdWdpbnMgICAgICAgUGx1Z2lucyBiZWluZyBtb3VudGVkXG4gKi9cblxuXG5Tb3J0YWJsZS5tb3VudCA9IGZ1bmN0aW9uICgpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIHBsdWdpbnMgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgcGx1Z2luc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIGlmIChwbHVnaW5zWzBdLmNvbnN0cnVjdG9yID09PSBBcnJheSkgcGx1Z2lucyA9IHBsdWdpbnNbMF07XG4gIHBsdWdpbnMuZm9yRWFjaChmdW5jdGlvbiAocGx1Z2luKSB7XG4gICAgaWYgKCFwbHVnaW4ucHJvdG90eXBlIHx8ICFwbHVnaW4ucHJvdG90eXBlLmNvbnN0cnVjdG9yKSB7XG4gICAgICB0aHJvdyBcIlNvcnRhYmxlOiBNb3VudGVkIHBsdWdpbiBtdXN0IGJlIGEgY29uc3RydWN0b3IgZnVuY3Rpb24sIG5vdCBcIi5jb25jYXQoe30udG9TdHJpbmcuY2FsbChwbHVnaW4pKTtcbiAgICB9XG5cbiAgICBpZiAocGx1Z2luLnV0aWxzKSBTb3J0YWJsZS51dGlscyA9IF9vYmplY3RTcHJlYWQyKF9vYmplY3RTcHJlYWQyKHt9LCBTb3J0YWJsZS51dGlscyksIHBsdWdpbi51dGlscyk7XG4gICAgUGx1Z2luTWFuYWdlci5tb3VudChwbHVnaW4pO1xuICB9KTtcbn07XG4vKipcbiAqIENyZWF0ZSBzb3J0YWJsZSBpbnN0YW5jZVxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gIGVsXG4gKiBAcGFyYW0ge09iamVjdH0gICAgICBbb3B0aW9uc11cbiAqL1xuXG5cblNvcnRhYmxlLmNyZWF0ZSA9IGZ1bmN0aW9uIChlbCwgb3B0aW9ucykge1xuICByZXR1cm4gbmV3IFNvcnRhYmxlKGVsLCBvcHRpb25zKTtcbn07IC8vIEV4cG9ydFxuXG5cblNvcnRhYmxlLnZlcnNpb24gPSB2ZXJzaW9uO1xuXG52YXIgYXV0b1Njcm9sbHMgPSBbXSxcbiAgICBzY3JvbGxFbCxcbiAgICBzY3JvbGxSb290RWwsXG4gICAgc2Nyb2xsaW5nID0gZmFsc2UsXG4gICAgbGFzdEF1dG9TY3JvbGxYLFxuICAgIGxhc3RBdXRvU2Nyb2xsWSxcbiAgICB0b3VjaEV2dCQxLFxuICAgIHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsO1xuXG5mdW5jdGlvbiBBdXRvU2Nyb2xsUGx1Z2luKCkge1xuICBmdW5jdGlvbiBBdXRvU2Nyb2xsKCkge1xuICAgIHRoaXMuZGVmYXVsdHMgPSB7XG4gICAgICBzY3JvbGw6IHRydWUsXG4gICAgICBmb3JjZUF1dG9TY3JvbGxGYWxsYmFjazogZmFsc2UsXG4gICAgICBzY3JvbGxTZW5zaXRpdml0eTogMzAsXG4gICAgICBzY3JvbGxTcGVlZDogMTAsXG4gICAgICBidWJibGVTY3JvbGw6IHRydWVcbiAgICB9OyAvLyBCaW5kIGFsbCBwcml2YXRlIG1ldGhvZHNcblxuICAgIGZvciAodmFyIGZuIGluIHRoaXMpIHtcbiAgICAgIGlmIChmbi5jaGFyQXQoMCkgPT09ICdfJyAmJiB0eXBlb2YgdGhpc1tmbl0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpc1tmbl0gPSB0aGlzW2ZuXS5iaW5kKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEF1dG9TY3JvbGwucHJvdG90eXBlID0ge1xuICAgIGRyYWdTdGFydGVkOiBmdW5jdGlvbiBkcmFnU3RhcnRlZChfcmVmKSB7XG4gICAgICB2YXIgb3JpZ2luYWxFdmVudCA9IF9yZWYub3JpZ2luYWxFdmVudDtcblxuICAgICAgaWYgKHRoaXMuc29ydGFibGUubmF0aXZlRHJhZ2dhYmxlKSB7XG4gICAgICAgIG9uKGRvY3VtZW50LCAnZHJhZ292ZXInLCB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc3VwcG9ydFBvaW50ZXIpIHtcbiAgICAgICAgICBvbihkb2N1bWVudCwgJ3BvaW50ZXJtb3ZlJywgdGhpcy5faGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKTtcbiAgICAgICAgfSBlbHNlIGlmIChvcmlnaW5hbEV2ZW50LnRvdWNoZXMpIHtcbiAgICAgICAgICBvbihkb2N1bWVudCwgJ3RvdWNobW92ZScsIHRoaXMuX2hhbmRsZUZhbGxiYWNrQXV0b1Njcm9sbCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb24oZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBkcmFnT3ZlckNvbXBsZXRlZDogZnVuY3Rpb24gZHJhZ092ZXJDb21wbGV0ZWQoX3JlZjIpIHtcbiAgICAgIHZhciBvcmlnaW5hbEV2ZW50ID0gX3JlZjIub3JpZ2luYWxFdmVudDtcblxuICAgICAgLy8gRm9yIHdoZW4gYnViYmxpbmcgaXMgY2FuY2VsZWQgYW5kIHVzaW5nIGZhbGxiYWNrIChmYWxsYmFjayAndG91Y2htb3ZlJyBhbHdheXMgcmVhY2hlZClcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLmRyYWdPdmVyQnViYmxlICYmICFvcmlnaW5hbEV2ZW50LnJvb3RFbCkge1xuICAgICAgICB0aGlzLl9oYW5kbGVBdXRvU2Nyb2xsKG9yaWdpbmFsRXZlbnQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZHJvcDogZnVuY3Rpb24gZHJvcCgpIHtcbiAgICAgIGlmICh0aGlzLnNvcnRhYmxlLm5hdGl2ZURyYWdnYWJsZSkge1xuICAgICAgICBvZmYoZG9jdW1lbnQsICdkcmFnb3ZlcicsIHRoaXMuX2hhbmRsZUF1dG9TY3JvbGwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb2ZmKGRvY3VtZW50LCAncG9pbnRlcm1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgICBvZmYoZG9jdW1lbnQsICd0b3VjaG1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgICBvZmYoZG9jdW1lbnQsICdtb3VzZW1vdmUnLCB0aGlzLl9oYW5kbGVGYWxsYmFja0F1dG9TY3JvbGwpO1xuICAgICAgfVxuXG4gICAgICBjbGVhclBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsKCk7XG4gICAgICBjbGVhckF1dG9TY3JvbGxzKCk7XG4gICAgICBjYW5jZWxUaHJvdHRsZSgpO1xuICAgIH0sXG4gICAgbnVsbGluZzogZnVuY3Rpb24gbnVsbGluZygpIHtcbiAgICAgIHRvdWNoRXZ0JDEgPSBzY3JvbGxSb290RWwgPSBzY3JvbGxFbCA9IHNjcm9sbGluZyA9IHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsID0gbGFzdEF1dG9TY3JvbGxYID0gbGFzdEF1dG9TY3JvbGxZID0gbnVsbDtcbiAgICAgIGF1dG9TY3JvbGxzLmxlbmd0aCA9IDA7XG4gICAgfSxcbiAgICBfaGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsOiBmdW5jdGlvbiBfaGFuZGxlRmFsbGJhY2tBdXRvU2Nyb2xsKGV2dCkge1xuICAgICAgdGhpcy5faGFuZGxlQXV0b1Njcm9sbChldnQsIHRydWUpO1xuICAgIH0sXG4gICAgX2hhbmRsZUF1dG9TY3JvbGw6IGZ1bmN0aW9uIF9oYW5kbGVBdXRvU2Nyb2xsKGV2dCwgZmFsbGJhY2spIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciB4ID0gKGV2dC50b3VjaGVzID8gZXZ0LnRvdWNoZXNbMF0gOiBldnQpLmNsaWVudFgsXG4gICAgICAgICAgeSA9IChldnQudG91Y2hlcyA/IGV2dC50b3VjaGVzWzBdIDogZXZ0KS5jbGllbnRZLFxuICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpO1xuICAgICAgdG91Y2hFdnQkMSA9IGV2dDsgLy8gSUUgZG9lcyBub3Qgc2VlbSB0byBoYXZlIG5hdGl2ZSBhdXRvc2Nyb2xsLFxuICAgICAgLy8gRWRnZSdzIGF1dG9zY3JvbGwgc2VlbXMgdG9vIGNvbmRpdGlvbmFsLFxuICAgICAgLy8gTUFDT1MgU2FmYXJpIGRvZXMgbm90IGhhdmUgYXV0b3Njcm9sbCxcbiAgICAgIC8vIEZpcmVmb3ggYW5kIENocm9tZSBhcmUgZ29vZFxuXG4gICAgICBpZiAoZmFsbGJhY2sgfHwgdGhpcy5vcHRpb25zLmZvcmNlQXV0b1Njcm9sbEZhbGxiYWNrIHx8IEVkZ2UgfHwgSUUxMU9yTGVzcyB8fCBTYWZhcmkpIHtcbiAgICAgICAgYXV0b1Njcm9sbChldnQsIHRoaXMub3B0aW9ucywgZWxlbSwgZmFsbGJhY2spOyAvLyBMaXN0ZW5lciBmb3IgcG9pbnRlciBlbGVtZW50IGNoYW5nZVxuXG4gICAgICAgIHZhciBvZ0VsZW1TY3JvbGxlciA9IGdldFBhcmVudEF1dG9TY3JvbGxFbGVtZW50KGVsZW0sIHRydWUpO1xuXG4gICAgICAgIGlmIChzY3JvbGxpbmcgJiYgKCFwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCB8fCB4ICE9PSBsYXN0QXV0b1Njcm9sbFggfHwgeSAhPT0gbGFzdEF1dG9TY3JvbGxZKSkge1xuICAgICAgICAgIHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsICYmIGNsZWFyUG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwoKTsgLy8gRGV0ZWN0IGZvciBwb2ludGVyIGVsZW0gY2hhbmdlLCBlbXVsYXRpbmcgbmF0aXZlIERuRCBiZWhhdmlvdXJcblxuICAgICAgICAgIHBvaW50ZXJFbGVtQ2hhbmdlZEludGVydmFsID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIG5ld0VsZW0gPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChkb2N1bWVudC5lbGVtZW50RnJvbVBvaW50KHgsIHkpLCB0cnVlKTtcblxuICAgICAgICAgICAgaWYgKG5ld0VsZW0gIT09IG9nRWxlbVNjcm9sbGVyKSB7XG4gICAgICAgICAgICAgIG9nRWxlbVNjcm9sbGVyID0gbmV3RWxlbTtcbiAgICAgICAgICAgICAgY2xlYXJBdXRvU2Nyb2xscygpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhdXRvU2Nyb2xsKGV2dCwgX3RoaXMub3B0aW9ucywgbmV3RWxlbSwgZmFsbGJhY2spO1xuICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICBsYXN0QXV0b1Njcm9sbFggPSB4O1xuICAgICAgICAgIGxhc3RBdXRvU2Nyb2xsWSA9IHk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGlmIERuRCBpcyBlbmFibGVkIChhbmQgYnJvd3NlciBoYXMgZ29vZCBhdXRvc2Nyb2xsaW5nKSwgZmlyc3QgYXV0b3Njcm9sbCB3aWxsIGFscmVhZHkgc2Nyb2xsLCBzbyBnZXQgcGFyZW50IGF1dG9zY3JvbGwgb2YgZmlyc3QgYXV0b3Njcm9sbFxuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5idWJibGVTY3JvbGwgfHwgZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQoZWxlbSwgdHJ1ZSkgPT09IGdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQoKSkge1xuICAgICAgICAgIGNsZWFyQXV0b1Njcm9sbHMoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBhdXRvU2Nyb2xsKGV2dCwgdGhpcy5vcHRpb25zLCBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChlbGVtLCBmYWxzZSksIGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcyhBdXRvU2Nyb2xsLCB7XG4gICAgcGx1Z2luTmFtZTogJ3Njcm9sbCcsXG4gICAgaW5pdGlhbGl6ZUJ5RGVmYXVsdDogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXJBdXRvU2Nyb2xscygpIHtcbiAgYXV0b1Njcm9sbHMuZm9yRWFjaChmdW5jdGlvbiAoYXV0b1Njcm9sbCkge1xuICAgIGNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbC5waWQpO1xuICB9KTtcbiAgYXV0b1Njcm9sbHMgPSBbXTtcbn1cblxuZnVuY3Rpb24gY2xlYXJQb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCgpIHtcbiAgY2xlYXJJbnRlcnZhbChwb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCk7XG59XG5cbnZhciBhdXRvU2Nyb2xsID0gdGhyb3R0bGUoZnVuY3Rpb24gKGV2dCwgb3B0aW9ucywgcm9vdEVsLCBpc0ZhbGxiYWNrKSB7XG4gIC8vIEJ1ZzogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTA1NTIxXG4gIGlmICghb3B0aW9ucy5zY3JvbGwpIHJldHVybjtcbiAgdmFyIHggPSAoZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dCkuY2xpZW50WCxcbiAgICAgIHkgPSAoZXZ0LnRvdWNoZXMgPyBldnQudG91Y2hlc1swXSA6IGV2dCkuY2xpZW50WSxcbiAgICAgIHNlbnMgPSBvcHRpb25zLnNjcm9sbFNlbnNpdGl2aXR5LFxuICAgICAgc3BlZWQgPSBvcHRpb25zLnNjcm9sbFNwZWVkLFxuICAgICAgd2luU2Nyb2xsZXIgPSBnZXRXaW5kb3dTY3JvbGxpbmdFbGVtZW50KCk7XG4gIHZhciBzY3JvbGxUaGlzSW5zdGFuY2UgPSBmYWxzZSxcbiAgICAgIHNjcm9sbEN1c3RvbUZuOyAvLyBOZXcgc2Nyb2xsIHJvb3QsIHNldCBzY3JvbGxFbFxuXG4gIGlmIChzY3JvbGxSb290RWwgIT09IHJvb3RFbCkge1xuICAgIHNjcm9sbFJvb3RFbCA9IHJvb3RFbDtcbiAgICBjbGVhckF1dG9TY3JvbGxzKCk7XG4gICAgc2Nyb2xsRWwgPSBvcHRpb25zLnNjcm9sbDtcbiAgICBzY3JvbGxDdXN0b21GbiA9IG9wdGlvbnMuc2Nyb2xsRm47XG5cbiAgICBpZiAoc2Nyb2xsRWwgPT09IHRydWUpIHtcbiAgICAgIHNjcm9sbEVsID0gZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQocm9vdEVsLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICB2YXIgbGF5ZXJzT3V0ID0gMDtcbiAgdmFyIGN1cnJlbnRQYXJlbnQgPSBzY3JvbGxFbDtcblxuICBkbyB7XG4gICAgdmFyIGVsID0gY3VycmVudFBhcmVudCxcbiAgICAgICAgcmVjdCA9IGdldFJlY3QoZWwpLFxuICAgICAgICB0b3AgPSByZWN0LnRvcCxcbiAgICAgICAgYm90dG9tID0gcmVjdC5ib3R0b20sXG4gICAgICAgIGxlZnQgPSByZWN0LmxlZnQsXG4gICAgICAgIHJpZ2h0ID0gcmVjdC5yaWdodCxcbiAgICAgICAgd2lkdGggPSByZWN0LndpZHRoLFxuICAgICAgICBoZWlnaHQgPSByZWN0LmhlaWdodCxcbiAgICAgICAgY2FuU2Nyb2xsWCA9IHZvaWQgMCxcbiAgICAgICAgY2FuU2Nyb2xsWSA9IHZvaWQgMCxcbiAgICAgICAgc2Nyb2xsV2lkdGggPSBlbC5zY3JvbGxXaWR0aCxcbiAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gZWwuc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBlbENTUyA9IGNzcyhlbCksXG4gICAgICAgIHNjcm9sbFBvc1ggPSBlbC5zY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxQb3NZID0gZWwuc2Nyb2xsVG9wO1xuXG4gICAgaWYgKGVsID09PSB3aW5TY3JvbGxlcikge1xuICAgICAgY2FuU2Nyb2xsWCA9IHdpZHRoIDwgc2Nyb2xsV2lkdGggJiYgKGVsQ1NTLm92ZXJmbG93WCA9PT0gJ2F1dG8nIHx8IGVsQ1NTLm92ZXJmbG93WCA9PT0gJ3Njcm9sbCcgfHwgZWxDU1Mub3ZlcmZsb3dYID09PSAndmlzaWJsZScpO1xuICAgICAgY2FuU2Nyb2xsWSA9IGhlaWdodCA8IHNjcm9sbEhlaWdodCAmJiAoZWxDU1Mub3ZlcmZsb3dZID09PSAnYXV0bycgfHwgZWxDU1Mub3ZlcmZsb3dZID09PSAnc2Nyb2xsJyB8fCBlbENTUy5vdmVyZmxvd1kgPT09ICd2aXNpYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhblNjcm9sbFggPSB3aWR0aCA8IHNjcm9sbFdpZHRoICYmIChlbENTUy5vdmVyZmxvd1ggPT09ICdhdXRvJyB8fCBlbENTUy5vdmVyZmxvd1ggPT09ICdzY3JvbGwnKTtcbiAgICAgIGNhblNjcm9sbFkgPSBoZWlnaHQgPCBzY3JvbGxIZWlnaHQgJiYgKGVsQ1NTLm92ZXJmbG93WSA9PT0gJ2F1dG8nIHx8IGVsQ1NTLm92ZXJmbG93WSA9PT0gJ3Njcm9sbCcpO1xuICAgIH1cblxuICAgIHZhciB2eCA9IGNhblNjcm9sbFggJiYgKE1hdGguYWJzKHJpZ2h0IC0geCkgPD0gc2VucyAmJiBzY3JvbGxQb3NYICsgd2lkdGggPCBzY3JvbGxXaWR0aCkgLSAoTWF0aC5hYnMobGVmdCAtIHgpIDw9IHNlbnMgJiYgISFzY3JvbGxQb3NYKTtcbiAgICB2YXIgdnkgPSBjYW5TY3JvbGxZICYmIChNYXRoLmFicyhib3R0b20gLSB5KSA8PSBzZW5zICYmIHNjcm9sbFBvc1kgKyBoZWlnaHQgPCBzY3JvbGxIZWlnaHQpIC0gKE1hdGguYWJzKHRvcCAtIHkpIDw9IHNlbnMgJiYgISFzY3JvbGxQb3NZKTtcblxuICAgIGlmICghYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gbGF5ZXJzT3V0OyBpKyspIHtcbiAgICAgICAgaWYgKCFhdXRvU2Nyb2xsc1tpXSkge1xuICAgICAgICAgIGF1dG9TY3JvbGxzW2ldID0ge307XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoYXV0b1Njcm9sbHNbbGF5ZXJzT3V0XS52eCAhPSB2eCB8fCBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ5ICE9IHZ5IHx8IGF1dG9TY3JvbGxzW2xheWVyc091dF0uZWwgIT09IGVsKSB7XG4gICAgICBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLmVsID0gZWw7XG4gICAgICBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ4ID0gdng7XG4gICAgICBhdXRvU2Nyb2xsc1tsYXllcnNPdXRdLnZ5ID0gdnk7XG4gICAgICBjbGVhckludGVydmFsKGF1dG9TY3JvbGxzW2xheWVyc091dF0ucGlkKTtcblxuICAgICAgaWYgKHZ4ICE9IDAgfHwgdnkgIT0gMCkge1xuICAgICAgICBzY3JvbGxUaGlzSW5zdGFuY2UgPSB0cnVlO1xuICAgICAgICAvKiBqc2hpbnQgbG9vcGZ1bmM6dHJ1ZSAqL1xuXG4gICAgICAgIGF1dG9TY3JvbGxzW2xheWVyc091dF0ucGlkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIC8vIGVtdWxhdGUgZHJhZyBvdmVyIGR1cmluZyBhdXRvc2Nyb2xsIChmYWxsYmFjayksIGVtdWxhdGluZyBuYXRpdmUgRG5EIGJlaGF2aW91clxuICAgICAgICAgIGlmIChpc0ZhbGxiYWNrICYmIHRoaXMubGF5ZXIgPT09IDApIHtcbiAgICAgICAgICAgIFNvcnRhYmxlLmFjdGl2ZS5fb25Ub3VjaE1vdmUodG91Y2hFdnQkMSk7IC8vIFRvIG1vdmUgZ2hvc3QgaWYgaXQgaXMgcG9zaXRpb25lZCBhYnNvbHV0ZWx5XG5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgc2Nyb2xsT2Zmc2V0WSA9IGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLnZ5ID8gYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0udnkgKiBzcGVlZCA6IDA7XG4gICAgICAgICAgdmFyIHNjcm9sbE9mZnNldFggPSBhdXRvU2Nyb2xsc1t0aGlzLmxheWVyXS52eCA/IGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLnZ4ICogc3BlZWQgOiAwO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBzY3JvbGxDdXN0b21GbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgaWYgKHNjcm9sbEN1c3RvbUZuLmNhbGwoU29ydGFibGUuZHJhZ2dlZC5wYXJlbnROb2RlW2V4cGFuZG9dLCBzY3JvbGxPZmZzZXRYLCBzY3JvbGxPZmZzZXRZLCBldnQsIHRvdWNoRXZ0JDEsIGF1dG9TY3JvbGxzW3RoaXMubGF5ZXJdLmVsKSAhPT0gJ2NvbnRpbnVlJykge1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgc2Nyb2xsQnkoYXV0b1Njcm9sbHNbdGhpcy5sYXllcl0uZWwsIHNjcm9sbE9mZnNldFgsIHNjcm9sbE9mZnNldFkpO1xuICAgICAgICB9LmJpbmQoe1xuICAgICAgICAgIGxheWVyOiBsYXllcnNPdXRcbiAgICAgICAgfSksIDI0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsYXllcnNPdXQrKztcbiAgfSB3aGlsZSAob3B0aW9ucy5idWJibGVTY3JvbGwgJiYgY3VycmVudFBhcmVudCAhPT0gd2luU2Nyb2xsZXIgJiYgKGN1cnJlbnRQYXJlbnQgPSBnZXRQYXJlbnRBdXRvU2Nyb2xsRWxlbWVudChjdXJyZW50UGFyZW50LCBmYWxzZSkpKTtcblxuICBzY3JvbGxpbmcgPSBzY3JvbGxUaGlzSW5zdGFuY2U7IC8vIGluIGNhc2UgYW5vdGhlciBmdW5jdGlvbiBjYXRjaGVzIHNjcm9sbGluZyBhcyBmYWxzZSBpbiBiZXR3ZWVuIHdoZW4gaXQgaXMgbm90XG59LCAzMCk7XG5cbnZhciBkcm9wID0gZnVuY3Rpb24gZHJvcChfcmVmKSB7XG4gIHZhciBvcmlnaW5hbEV2ZW50ID0gX3JlZi5vcmlnaW5hbEV2ZW50LFxuICAgICAgcHV0U29ydGFibGUgPSBfcmVmLnB1dFNvcnRhYmxlLFxuICAgICAgZHJhZ0VsID0gX3JlZi5kcmFnRWwsXG4gICAgICBhY3RpdmVTb3J0YWJsZSA9IF9yZWYuYWN0aXZlU29ydGFibGUsXG4gICAgICBkaXNwYXRjaFNvcnRhYmxlRXZlbnQgPSBfcmVmLmRpc3BhdGNoU29ydGFibGVFdmVudCxcbiAgICAgIGhpZGVHaG9zdEZvclRhcmdldCA9IF9yZWYuaGlkZUdob3N0Rm9yVGFyZ2V0LFxuICAgICAgdW5oaWRlR2hvc3RGb3JUYXJnZXQgPSBfcmVmLnVuaGlkZUdob3N0Rm9yVGFyZ2V0O1xuICBpZiAoIW9yaWdpbmFsRXZlbnQpIHJldHVybjtcbiAgdmFyIHRvU29ydGFibGUgPSBwdXRTb3J0YWJsZSB8fCBhY3RpdmVTb3J0YWJsZTtcbiAgaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG4gIHZhciB0b3VjaCA9IG9yaWdpbmFsRXZlbnQuY2hhbmdlZFRvdWNoZXMgJiYgb3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlcy5sZW5ndGggPyBvcmlnaW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzWzBdIDogb3JpZ2luYWxFdmVudDtcbiAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQodG91Y2guY2xpZW50WCwgdG91Y2guY2xpZW50WSk7XG4gIHVuaGlkZUdob3N0Rm9yVGFyZ2V0KCk7XG5cbiAgaWYgKHRvU29ydGFibGUgJiYgIXRvU29ydGFibGUuZWwuY29udGFpbnModGFyZ2V0KSkge1xuICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCgnc3BpbGwnKTtcbiAgICB0aGlzLm9uU3BpbGwoe1xuICAgICAgZHJhZ0VsOiBkcmFnRWwsXG4gICAgICBwdXRTb3J0YWJsZTogcHV0U29ydGFibGVcbiAgICB9KTtcbiAgfVxufTtcblxuZnVuY3Rpb24gUmV2ZXJ0KCkge31cblxuUmV2ZXJ0LnByb3RvdHlwZSA9IHtcbiAgc3RhcnRJbmRleDogbnVsbCxcbiAgZHJhZ1N0YXJ0OiBmdW5jdGlvbiBkcmFnU3RhcnQoX3JlZjIpIHtcbiAgICB2YXIgb2xkRHJhZ2dhYmxlSW5kZXggPSBfcmVmMi5vbGREcmFnZ2FibGVJbmRleDtcbiAgICB0aGlzLnN0YXJ0SW5kZXggPSBvbGREcmFnZ2FibGVJbmRleDtcbiAgfSxcbiAgb25TcGlsbDogZnVuY3Rpb24gb25TcGlsbChfcmVmMykge1xuICAgIHZhciBkcmFnRWwgPSBfcmVmMy5kcmFnRWwsXG4gICAgICAgIHB1dFNvcnRhYmxlID0gX3JlZjMucHV0U29ydGFibGU7XG4gICAgdGhpcy5zb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcblxuICAgIGlmIChwdXRTb3J0YWJsZSkge1xuICAgICAgcHV0U29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG4gICAgfVxuXG4gICAgdmFyIG5leHRTaWJsaW5nID0gZ2V0Q2hpbGQodGhpcy5zb3J0YWJsZS5lbCwgdGhpcy5zdGFydEluZGV4LCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgaWYgKG5leHRTaWJsaW5nKSB7XG4gICAgICB0aGlzLnNvcnRhYmxlLmVsLmluc2VydEJlZm9yZShkcmFnRWwsIG5leHRTaWJsaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0YWJsZS5lbC5hcHBlbmRDaGlsZChkcmFnRWwpO1xuICAgIH1cblxuICAgIHRoaXMuc29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuXG4gICAgaWYgKHB1dFNvcnRhYmxlKSB7XG4gICAgICBwdXRTb3J0YWJsZS5hbmltYXRlQWxsKCk7XG4gICAgfVxuICB9LFxuICBkcm9wOiBkcm9wXG59O1xuXG5fZXh0ZW5kcyhSZXZlcnQsIHtcbiAgcGx1Z2luTmFtZTogJ3JldmVydE9uU3BpbGwnXG59KTtcblxuZnVuY3Rpb24gUmVtb3ZlKCkge31cblxuUmVtb3ZlLnByb3RvdHlwZSA9IHtcbiAgb25TcGlsbDogZnVuY3Rpb24gb25TcGlsbChfcmVmNCkge1xuICAgIHZhciBkcmFnRWwgPSBfcmVmNC5kcmFnRWwsXG4gICAgICAgIHB1dFNvcnRhYmxlID0gX3JlZjQucHV0U29ydGFibGU7XG4gICAgdmFyIHBhcmVudFNvcnRhYmxlID0gcHV0U29ydGFibGUgfHwgdGhpcy5zb3J0YWJsZTtcbiAgICBwYXJlbnRTb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICBkcmFnRWwucGFyZW50Tm9kZSAmJiBkcmFnRWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkcmFnRWwpO1xuICAgIHBhcmVudFNvcnRhYmxlLmFuaW1hdGVBbGwoKTtcbiAgfSxcbiAgZHJvcDogZHJvcFxufTtcblxuX2V4dGVuZHMoUmVtb3ZlLCB7XG4gIHBsdWdpbk5hbWU6ICdyZW1vdmVPblNwaWxsJ1xufSk7XG5cbnZhciBsYXN0U3dhcEVsO1xuXG5mdW5jdGlvbiBTd2FwUGx1Z2luKCkge1xuICBmdW5jdGlvbiBTd2FwKCkge1xuICAgIHRoaXMuZGVmYXVsdHMgPSB7XG4gICAgICBzd2FwQ2xhc3M6ICdzb3J0YWJsZS1zd2FwLWhpZ2hsaWdodCdcbiAgICB9O1xuICB9XG5cbiAgU3dhcC5wcm90b3R5cGUgPSB7XG4gICAgZHJhZ1N0YXJ0OiBmdW5jdGlvbiBkcmFnU3RhcnQoX3JlZikge1xuICAgICAgdmFyIGRyYWdFbCA9IF9yZWYuZHJhZ0VsO1xuICAgICAgbGFzdFN3YXBFbCA9IGRyYWdFbDtcbiAgICB9LFxuICAgIGRyYWdPdmVyVmFsaWQ6IGZ1bmN0aW9uIGRyYWdPdmVyVmFsaWQoX3JlZjIpIHtcbiAgICAgIHZhciBjb21wbGV0ZWQgPSBfcmVmMi5jb21wbGV0ZWQsXG4gICAgICAgICAgdGFyZ2V0ID0gX3JlZjIudGFyZ2V0LFxuICAgICAgICAgIG9uTW92ZSA9IF9yZWYyLm9uTW92ZSxcbiAgICAgICAgICBhY3RpdmVTb3J0YWJsZSA9IF9yZWYyLmFjdGl2ZVNvcnRhYmxlLFxuICAgICAgICAgIGNoYW5nZWQgPSBfcmVmMi5jaGFuZ2VkLFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWYyLmNhbmNlbDtcbiAgICAgIGlmICghYWN0aXZlU29ydGFibGUub3B0aW9ucy5zd2FwKSByZXR1cm47XG4gICAgICB2YXIgZWwgPSB0aGlzLnNvcnRhYmxlLmVsLFxuICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmICh0YXJnZXQgJiYgdGFyZ2V0ICE9PSBlbCkge1xuICAgICAgICB2YXIgcHJldlN3YXBFbCA9IGxhc3RTd2FwRWw7XG5cbiAgICAgICAgaWYgKG9uTW92ZSh0YXJnZXQpICE9PSBmYWxzZSkge1xuICAgICAgICAgIHRvZ2dsZUNsYXNzKHRhcmdldCwgb3B0aW9ucy5zd2FwQ2xhc3MsIHRydWUpO1xuICAgICAgICAgIGxhc3RTd2FwRWwgPSB0YXJnZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGFzdFN3YXBFbCA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldlN3YXBFbCAmJiBwcmV2U3dhcEVsICE9PSBsYXN0U3dhcEVsKSB7XG4gICAgICAgICAgdG9nZ2xlQ2xhc3MocHJldlN3YXBFbCwgb3B0aW9ucy5zd2FwQ2xhc3MsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjaGFuZ2VkKCk7XG4gICAgICBjb21wbGV0ZWQodHJ1ZSk7XG4gICAgICBjYW5jZWwoKTtcbiAgICB9LFxuICAgIGRyb3A6IGZ1bmN0aW9uIGRyb3AoX3JlZjMpIHtcbiAgICAgIHZhciBhY3RpdmVTb3J0YWJsZSA9IF9yZWYzLmFjdGl2ZVNvcnRhYmxlLFxuICAgICAgICAgIHB1dFNvcnRhYmxlID0gX3JlZjMucHV0U29ydGFibGUsXG4gICAgICAgICAgZHJhZ0VsID0gX3JlZjMuZHJhZ0VsO1xuICAgICAgdmFyIHRvU29ydGFibGUgPSBwdXRTb3J0YWJsZSB8fCB0aGlzLnNvcnRhYmxlO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG4gICAgICBsYXN0U3dhcEVsICYmIHRvZ2dsZUNsYXNzKGxhc3RTd2FwRWwsIG9wdGlvbnMuc3dhcENsYXNzLCBmYWxzZSk7XG5cbiAgICAgIGlmIChsYXN0U3dhcEVsICYmIChvcHRpb25zLnN3YXAgfHwgcHV0U29ydGFibGUgJiYgcHV0U29ydGFibGUub3B0aW9ucy5zd2FwKSkge1xuICAgICAgICBpZiAoZHJhZ0VsICE9PSBsYXN0U3dhcEVsKSB7XG4gICAgICAgICAgdG9Tb3J0YWJsZS5jYXB0dXJlQW5pbWF0aW9uU3RhdGUoKTtcbiAgICAgICAgICBpZiAodG9Tb3J0YWJsZSAhPT0gYWN0aXZlU29ydGFibGUpIGFjdGl2ZVNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuICAgICAgICAgIHN3YXBOb2RlcyhkcmFnRWwsIGxhc3RTd2FwRWwpO1xuICAgICAgICAgIHRvU29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICAgICAgICAgIGlmICh0b1NvcnRhYmxlICE9PSBhY3RpdmVTb3J0YWJsZSkgYWN0aXZlU29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBudWxsaW5nOiBmdW5jdGlvbiBudWxsaW5nKCkge1xuICAgICAgbGFzdFN3YXBFbCA9IG51bGw7XG4gICAgfVxuICB9O1xuICByZXR1cm4gX2V4dGVuZHMoU3dhcCwge1xuICAgIHBsdWdpbk5hbWU6ICdzd2FwJyxcbiAgICBldmVudFByb3BlcnRpZXM6IGZ1bmN0aW9uIGV2ZW50UHJvcGVydGllcygpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN3YXBJdGVtOiBsYXN0U3dhcEVsXG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHN3YXBOb2RlcyhuMSwgbjIpIHtcbiAgdmFyIHAxID0gbjEucGFyZW50Tm9kZSxcbiAgICAgIHAyID0gbjIucGFyZW50Tm9kZSxcbiAgICAgIGkxLFxuICAgICAgaTI7XG4gIGlmICghcDEgfHwgIXAyIHx8IHAxLmlzRXF1YWxOb2RlKG4yKSB8fCBwMi5pc0VxdWFsTm9kZShuMSkpIHJldHVybjtcbiAgaTEgPSBpbmRleChuMSk7XG4gIGkyID0gaW5kZXgobjIpO1xuXG4gIGlmIChwMS5pc0VxdWFsTm9kZShwMikgJiYgaTEgPCBpMikge1xuICAgIGkyKys7XG4gIH1cblxuICBwMS5pbnNlcnRCZWZvcmUobjIsIHAxLmNoaWxkcmVuW2kxXSk7XG4gIHAyLmluc2VydEJlZm9yZShuMSwgcDIuY2hpbGRyZW5baTJdKTtcbn1cblxudmFyIG11bHRpRHJhZ0VsZW1lbnRzID0gW10sXG4gICAgbXVsdGlEcmFnQ2xvbmVzID0gW10sXG4gICAgbGFzdE11bHRpRHJhZ1NlbGVjdCxcbiAgICAvLyBmb3Igc2VsZWN0aW9uIHdpdGggbW9kaWZpZXIga2V5IGRvd24gKFNISUZUKVxubXVsdGlEcmFnU29ydGFibGUsXG4gICAgaW5pdGlhbEZvbGRpbmcgPSBmYWxzZSxcbiAgICAvLyBJbml0aWFsIG11bHRpLWRyYWcgZm9sZCB3aGVuIGRyYWcgc3RhcnRlZFxuZm9sZGluZyA9IGZhbHNlLFxuICAgIC8vIEZvbGRpbmcgYW55IG90aGVyIHRpbWVcbmRyYWdTdGFydGVkID0gZmFsc2UsXG4gICAgZHJhZ0VsJDEsXG4gICAgY2xvbmVzRnJvbVJlY3QsXG4gICAgY2xvbmVzSGlkZGVuO1xuXG5mdW5jdGlvbiBNdWx0aURyYWdQbHVnaW4oKSB7XG4gIGZ1bmN0aW9uIE11bHRpRHJhZyhzb3J0YWJsZSkge1xuICAgIC8vIEJpbmQgYWxsIHByaXZhdGUgbWV0aG9kc1xuICAgIGZvciAodmFyIGZuIGluIHRoaXMpIHtcbiAgICAgIGlmIChmbi5jaGFyQXQoMCkgPT09ICdfJyAmJiB0eXBlb2YgdGhpc1tmbl0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgdGhpc1tmbl0gPSB0aGlzW2ZuXS5iaW5kKHRoaXMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzb3J0YWJsZS5vcHRpb25zLnN1cHBvcnRQb2ludGVyKSB7XG4gICAgICBvbihkb2N1bWVudCwgJ3BvaW50ZXJ1cCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb24oZG9jdW1lbnQsICdtb3VzZXVwJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgICAgb24oZG9jdW1lbnQsICd0b3VjaGVuZCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICB9XG5cbiAgICBvbihkb2N1bWVudCwgJ2tleWRvd24nLCB0aGlzLl9jaGVja0tleURvd24pO1xuICAgIG9uKGRvY3VtZW50LCAna2V5dXAnLCB0aGlzLl9jaGVja0tleVVwKTtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgc2VsZWN0ZWRDbGFzczogJ3NvcnRhYmxlLXNlbGVjdGVkJyxcbiAgICAgIG11bHRpRHJhZ0tleTogbnVsbCxcbiAgICAgIHNldERhdGE6IGZ1bmN0aW9uIHNldERhdGEoZGF0YVRyYW5zZmVyLCBkcmFnRWwpIHtcbiAgICAgICAgdmFyIGRhdGEgPSAnJztcblxuICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoICYmIG11bHRpRHJhZ1NvcnRhYmxlID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQsIGkpIHtcbiAgICAgICAgICAgIGRhdGEgKz0gKCFpID8gJycgOiAnLCAnKSArIG11bHRpRHJhZ0VsZW1lbnQudGV4dENvbnRlbnQ7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YSA9IGRyYWdFbC50ZXh0Q29udGVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFUcmFuc2Zlci5zZXREYXRhKCdUZXh0JywgZGF0YSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIE11bHRpRHJhZy5wcm90b3R5cGUgPSB7XG4gICAgbXVsdGlEcmFnS2V5RG93bjogZmFsc2UsXG4gICAgaXNNdWx0aURyYWc6IGZhbHNlLFxuICAgIGRlbGF5U3RhcnRHbG9iYWw6IGZ1bmN0aW9uIGRlbGF5U3RhcnRHbG9iYWwoX3JlZikge1xuICAgICAgdmFyIGRyYWdnZWQgPSBfcmVmLmRyYWdFbDtcbiAgICAgIGRyYWdFbCQxID0gZHJhZ2dlZDtcbiAgICB9LFxuICAgIGRlbGF5RW5kZWQ6IGZ1bmN0aW9uIGRlbGF5RW5kZWQoKSB7XG4gICAgICB0aGlzLmlzTXVsdGlEcmFnID0gfm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZHJhZ0VsJDEpO1xuICAgIH0sXG4gICAgc2V0dXBDbG9uZTogZnVuY3Rpb24gc2V0dXBDbG9uZShfcmVmMikge1xuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjIuc29ydGFibGUsXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjIuY2FuY2VsO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnKSByZXR1cm47XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbXVsdGlEcmFnQ2xvbmVzLnB1c2goY2xvbmUobXVsdGlEcmFnRWxlbWVudHNbaV0pKTtcbiAgICAgICAgbXVsdGlEcmFnQ2xvbmVzW2ldLnNvcnRhYmxlSW5kZXggPSBtdWx0aURyYWdFbGVtZW50c1tpXS5zb3J0YWJsZUluZGV4O1xuICAgICAgICBtdWx0aURyYWdDbG9uZXNbaV0uZHJhZ2dhYmxlID0gZmFsc2U7XG4gICAgICAgIG11bHRpRHJhZ0Nsb25lc1tpXS5zdHlsZVsnd2lsbC1jaGFuZ2UnXSA9ICcnO1xuICAgICAgICB0b2dnbGVDbGFzcyhtdWx0aURyYWdDbG9uZXNbaV0sIHRoaXMub3B0aW9ucy5zZWxlY3RlZENsYXNzLCBmYWxzZSk7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzW2ldID09PSBkcmFnRWwkMSAmJiB0b2dnbGVDbGFzcyhtdWx0aURyYWdDbG9uZXNbaV0sIHRoaXMub3B0aW9ucy5jaG9zZW5DbGFzcywgZmFsc2UpO1xuICAgICAgfVxuXG4gICAgICBzb3J0YWJsZS5faGlkZUNsb25lKCk7XG5cbiAgICAgIGNhbmNlbCgpO1xuICAgIH0sXG4gICAgY2xvbmU6IGZ1bmN0aW9uIGNsb25lKF9yZWYzKSB7XG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmMy5zb3J0YWJsZSxcbiAgICAgICAgICByb290RWwgPSBfcmVmMy5yb290RWwsXG4gICAgICAgICAgZGlzcGF0Y2hTb3J0YWJsZUV2ZW50ID0gX3JlZjMuZGlzcGF0Y2hTb3J0YWJsZUV2ZW50LFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWYzLmNhbmNlbDtcbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZykgcmV0dXJuO1xuXG4gICAgICBpZiAoIXRoaXMub3B0aW9ucy5yZW1vdmVDbG9uZU9uSGlkZSkge1xuICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoICYmIG11bHRpRHJhZ1NvcnRhYmxlID09PSBzb3J0YWJsZSkge1xuICAgICAgICAgIGluc2VydE11bHRpRHJhZ0Nsb25lcyh0cnVlLCByb290RWwpO1xuICAgICAgICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCgnY2xvbmUnKTtcbiAgICAgICAgICBjYW5jZWwoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgc2hvd0Nsb25lOiBmdW5jdGlvbiBzaG93Q2xvbmUoX3JlZjQpIHtcbiAgICAgIHZhciBjbG9uZU5vd1Nob3duID0gX3JlZjQuY2xvbmVOb3dTaG93bixcbiAgICAgICAgICByb290RWwgPSBfcmVmNC5yb290RWwsXG4gICAgICAgICAgY2FuY2VsID0gX3JlZjQuY2FuY2VsO1xuICAgICAgaWYgKCF0aGlzLmlzTXVsdGlEcmFnKSByZXR1cm47XG4gICAgICBpbnNlcnRNdWx0aURyYWdDbG9uZXMoZmFsc2UsIHJvb3RFbCk7XG4gICAgICBtdWx0aURyYWdDbG9uZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUpIHtcbiAgICAgICAgY3NzKGNsb25lLCAnZGlzcGxheScsICcnKTtcbiAgICAgIH0pO1xuICAgICAgY2xvbmVOb3dTaG93bigpO1xuICAgICAgY2xvbmVzSGlkZGVuID0gZmFsc2U7XG4gICAgICBjYW5jZWwoKTtcbiAgICB9LFxuICAgIGhpZGVDbG9uZTogZnVuY3Rpb24gaGlkZUNsb25lKF9yZWY1KSB7XG4gICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmNS5zb3J0YWJsZSxcbiAgICAgICAgICBjbG9uZU5vd0hpZGRlbiA9IF9yZWY1LmNsb25lTm93SGlkZGVuLFxuICAgICAgICAgIGNhbmNlbCA9IF9yZWY1LmNhbmNlbDtcbiAgICAgIGlmICghdGhpcy5pc011bHRpRHJhZykgcmV0dXJuO1xuICAgICAgbXVsdGlEcmFnQ2xvbmVzLmZvckVhY2goZnVuY3Rpb24gKGNsb25lKSB7XG4gICAgICAgIGNzcyhjbG9uZSwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgICAgIGlmIChfdGhpcy5vcHRpb25zLnJlbW92ZUNsb25lT25IaWRlICYmIGNsb25lLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICBjbG9uZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb25lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBjbG9uZU5vd0hpZGRlbigpO1xuICAgICAgY2xvbmVzSGlkZGVuID0gdHJ1ZTtcbiAgICAgIGNhbmNlbCgpO1xuICAgIH0sXG4gICAgZHJhZ1N0YXJ0R2xvYmFsOiBmdW5jdGlvbiBkcmFnU3RhcnRHbG9iYWwoX3JlZjYpIHtcbiAgICAgIHZhciBzb3J0YWJsZSA9IF9yZWY2LnNvcnRhYmxlO1xuXG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcgJiYgbXVsdGlEcmFnU29ydGFibGUpIHtcbiAgICAgICAgbXVsdGlEcmFnU29ydGFibGUubXVsdGlEcmFnLl9kZXNlbGVjdE11bHRpRHJhZygpO1xuICAgICAgfVxuXG4gICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnQuc29ydGFibGVJbmRleCA9IGluZGV4KG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgfSk7IC8vIFNvcnQgbXVsdGktZHJhZyBlbGVtZW50c1xuXG4gICAgICBtdWx0aURyYWdFbGVtZW50cyA9IG11bHRpRHJhZ0VsZW1lbnRzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIGEuc29ydGFibGVJbmRleCAtIGIuc29ydGFibGVJbmRleDtcbiAgICAgIH0pO1xuICAgICAgZHJhZ1N0YXJ0ZWQgPSB0cnVlO1xuICAgIH0sXG4gICAgZHJhZ1N0YXJ0ZWQ6IGZ1bmN0aW9uIGRyYWdTdGFydGVkKF9yZWY3KSB7XG4gICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgdmFyIHNvcnRhYmxlID0gX3JlZjcuc29ydGFibGU7XG4gICAgICBpZiAoIXRoaXMuaXNNdWx0aURyYWcpIHJldHVybjtcblxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3J0KSB7XG4gICAgICAgIC8vIENhcHR1cmUgcmVjdHMsXG4gICAgICAgIC8vIGhpZGUgbXVsdGkgZHJhZyBlbGVtZW50cyAoYnkgcG9zaXRpb25pbmcgdGhlbSBhYnNvbHV0ZSksXG4gICAgICAgIC8vIHNldCBtdWx0aSBkcmFnIGVsZW1lbnRzIHJlY3RzIHRvIGRyYWdSZWN0LFxuICAgICAgICAvLyBzaG93IG11bHRpIGRyYWcgZWxlbWVudHMsXG4gICAgICAgIC8vIGFuaW1hdGUgdG8gcmVjdHMsXG4gICAgICAgIC8vIHVuc2V0IHJlY3RzICYgcmVtb3ZlIGZyb20gRE9NXG4gICAgICAgIHNvcnRhYmxlLmNhcHR1cmVBbmltYXRpb25TdGF0ZSgpO1xuXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuYW5pbWF0aW9uKSB7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgaWYgKG11bHRpRHJhZ0VsZW1lbnQgPT09IGRyYWdFbCQxKSByZXR1cm47XG4gICAgICAgICAgICBjc3MobXVsdGlEcmFnRWxlbWVudCwgJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFyIGRyYWdSZWN0ID0gZ2V0UmVjdChkcmFnRWwkMSwgZmFsc2UsIHRydWUsIHRydWUpO1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50ID09PSBkcmFnRWwkMSkgcmV0dXJuO1xuICAgICAgICAgICAgc2V0UmVjdChtdWx0aURyYWdFbGVtZW50LCBkcmFnUmVjdCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZm9sZGluZyA9IHRydWU7XG4gICAgICAgICAgaW5pdGlhbEZvbGRpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNvcnRhYmxlLmFuaW1hdGVBbGwoZnVuY3Rpb24gKCkge1xuICAgICAgICBmb2xkaW5nID0gZmFsc2U7XG4gICAgICAgIGluaXRpYWxGb2xkaW5nID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKF90aGlzMi5vcHRpb25zLmFuaW1hdGlvbikge1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICAgIHVuc2V0UmVjdChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSAvLyBSZW1vdmUgYWxsIGF1eGlsaWFyeSBtdWx0aWRyYWcgaXRlbXMgZnJvbSBlbCwgaWYgc29ydGluZyBlbmFibGVkXG5cblxuICAgICAgICBpZiAoX3RoaXMyLm9wdGlvbnMuc29ydCkge1xuICAgICAgICAgIHJlbW92ZU11bHRpRHJhZ0VsZW1lbnRzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZHJhZ092ZXI6IGZ1bmN0aW9uIGRyYWdPdmVyKF9yZWY4KSB7XG4gICAgICB2YXIgdGFyZ2V0ID0gX3JlZjgudGFyZ2V0LFxuICAgICAgICAgIGNvbXBsZXRlZCA9IF9yZWY4LmNvbXBsZXRlZCxcbiAgICAgICAgICBjYW5jZWwgPSBfcmVmOC5jYW5jZWw7XG5cbiAgICAgIGlmIChmb2xkaW5nICYmIH5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKHRhcmdldCkpIHtcbiAgICAgICAgY29tcGxldGVkKGZhbHNlKTtcbiAgICAgICAgY2FuY2VsKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICByZXZlcnQ6IGZ1bmN0aW9uIHJldmVydChfcmVmOSkge1xuICAgICAgdmFyIGZyb21Tb3J0YWJsZSA9IF9yZWY5LmZyb21Tb3J0YWJsZSxcbiAgICAgICAgICByb290RWwgPSBfcmVmOS5yb290RWwsXG4gICAgICAgICAgc29ydGFibGUgPSBfcmVmOS5zb3J0YWJsZSxcbiAgICAgICAgICBkcmFnUmVjdCA9IF9yZWY5LmRyYWdSZWN0O1xuXG4gICAgICBpZiAobXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBTZXR1cCB1bmZvbGQgYW5pbWF0aW9uXG4gICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgICBzb3J0YWJsZS5hZGRBbmltYXRpb25TdGF0ZSh7XG4gICAgICAgICAgICB0YXJnZXQ6IG11bHRpRHJhZ0VsZW1lbnQsXG4gICAgICAgICAgICByZWN0OiBmb2xkaW5nID8gZ2V0UmVjdChtdWx0aURyYWdFbGVtZW50KSA6IGRyYWdSZWN0XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdW5zZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnQuZnJvbVJlY3QgPSBkcmFnUmVjdDtcbiAgICAgICAgICBmcm9tU29ydGFibGUucmVtb3ZlQW5pbWF0aW9uU3RhdGUobXVsdGlEcmFnRWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBmb2xkaW5nID0gZmFsc2U7XG4gICAgICAgIGluc2VydE11bHRpRHJhZ0VsZW1lbnRzKCF0aGlzLm9wdGlvbnMucmVtb3ZlQ2xvbmVPbkhpZGUsIHJvb3RFbCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcmFnT3ZlckNvbXBsZXRlZDogZnVuY3Rpb24gZHJhZ092ZXJDb21wbGV0ZWQoX3JlZjEwKSB7XG4gICAgICB2YXIgc29ydGFibGUgPSBfcmVmMTAuc29ydGFibGUsXG4gICAgICAgICAgaXNPd25lciA9IF9yZWYxMC5pc093bmVyLFxuICAgICAgICAgIGluc2VydGlvbiA9IF9yZWYxMC5pbnNlcnRpb24sXG4gICAgICAgICAgYWN0aXZlU29ydGFibGUgPSBfcmVmMTAuYWN0aXZlU29ydGFibGUsXG4gICAgICAgICAgcGFyZW50RWwgPSBfcmVmMTAucGFyZW50RWwsXG4gICAgICAgICAgcHV0U29ydGFibGUgPSBfcmVmMTAucHV0U29ydGFibGU7XG4gICAgICB2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcblxuICAgICAgaWYgKGluc2VydGlvbikge1xuICAgICAgICAvLyBDbG9uZXMgbXVzdCBiZSBoaWRkZW4gYmVmb3JlIGZvbGRpbmcgYW5pbWF0aW9uIHRvIGNhcHR1cmUgZHJhZ1JlY3RBYnNvbHV0ZSBwcm9wZXJseVxuICAgICAgICBpZiAoaXNPd25lcikge1xuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLl9oaWRlQ2xvbmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGluaXRpYWxGb2xkaW5nID0gZmFsc2U7IC8vIElmIGxlYXZpbmcgc29ydDpmYWxzZSByb290LCBvciBhbHJlYWR5IGZvbGRpbmcgLSBGb2xkIHRvIG5ldyBsb2NhdGlvblxuXG4gICAgICAgIGlmIChvcHRpb25zLmFuaW1hdGlvbiAmJiBtdWx0aURyYWdFbGVtZW50cy5sZW5ndGggPiAxICYmIChmb2xkaW5nIHx8ICFpc093bmVyICYmICFhY3RpdmVTb3J0YWJsZS5vcHRpb25zLnNvcnQgJiYgIXB1dFNvcnRhYmxlKSkge1xuICAgICAgICAgIC8vIEZvbGQ6IFNldCBhbGwgbXVsdGkgZHJhZyBlbGVtZW50cydzIHJlY3RzIHRvIGRyYWdFbCdzIHJlY3Qgd2hlbiBtdWx0aS1kcmFnIGVsZW1lbnRzIGFyZSBpbnZpc2libGVcbiAgICAgICAgICB2YXIgZHJhZ1JlY3RBYnNvbHV0ZSA9IGdldFJlY3QoZHJhZ0VsJDEsIGZhbHNlLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudCA9PT0gZHJhZ0VsJDEpIHJldHVybjtcbiAgICAgICAgICAgIHNldFJlY3QobXVsdGlEcmFnRWxlbWVudCwgZHJhZ1JlY3RBYnNvbHV0ZSk7IC8vIE1vdmUgZWxlbWVudChzKSB0byBlbmQgb2YgcGFyZW50RWwgc28gdGhhdCBpdCBkb2VzIG5vdCBpbnRlcmZlcmUgd2l0aCBtdWx0aS1kcmFnIGNsb25lcyBpbnNlcnRpb24gaWYgdGhleSBhcmUgaW5zZXJ0ZWRcbiAgICAgICAgICAgIC8vIHdoaWxlIGZvbGRpbmcsIGFuZCBzbyB0aGF0IHdlIGNhbiBjYXB0dXJlIHRoZW0gYWdhaW4gYmVjYXVzZSBvbGQgc29ydGFibGUgd2lsbCBubyBsb25nZXIgYmUgZnJvbVNvcnRhYmxlXG5cbiAgICAgICAgICAgIHBhcmVudEVsLmFwcGVuZENoaWxkKG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGZvbGRpbmcgPSB0cnVlO1xuICAgICAgICB9IC8vIENsb25lcyBtdXN0IGJlIHNob3duIChhbmQgY2hlY2sgdG8gcmVtb3ZlIG11bHRpIGRyYWdzKSBhZnRlciBmb2xkaW5nIHdoZW4gaW50ZXJmZXJpbmcgbXVsdGlEcmFnRWxlbWVudHMgYXJlIG1vdmVkIG91dFxuXG5cbiAgICAgICAgaWYgKCFpc093bmVyKSB7XG4gICAgICAgICAgLy8gT25seSByZW1vdmUgaWYgbm90IGZvbGRpbmcgKGZvbGRpbmcgd2lsbCByZW1vdmUgdGhlbSBhbnl3YXlzKVxuICAgICAgICAgIGlmICghZm9sZGluZykge1xuICAgICAgICAgICAgcmVtb3ZlTXVsdGlEcmFnRWxlbWVudHMoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAobXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdmFyIGNsb25lc0hpZGRlbkJlZm9yZSA9IGNsb25lc0hpZGRlbjtcblxuICAgICAgICAgICAgYWN0aXZlU29ydGFibGUuX3Nob3dDbG9uZShzb3J0YWJsZSk7IC8vIFVuZm9sZCBhbmltYXRpb24gZm9yIGNsb25lcyBpZiBzaG93aW5nIGZyb20gaGlkZGVuXG5cblxuICAgICAgICAgICAgaWYgKGFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuYW5pbWF0aW9uICYmICFjbG9uZXNIaWRkZW4gJiYgY2xvbmVzSGlkZGVuQmVmb3JlKSB7XG4gICAgICAgICAgICAgIG11bHRpRHJhZ0Nsb25lcy5mb3JFYWNoKGZ1bmN0aW9uIChjbG9uZSkge1xuICAgICAgICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLmFkZEFuaW1hdGlvblN0YXRlKHtcbiAgICAgICAgICAgICAgICAgIHRhcmdldDogY2xvbmUsXG4gICAgICAgICAgICAgICAgICByZWN0OiBjbG9uZXNGcm9tUmVjdFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNsb25lLmZyb21SZWN0ID0gY2xvbmVzRnJvbVJlY3Q7XG4gICAgICAgICAgICAgICAgY2xvbmUudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gbnVsbDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlLl9zaG93Q2xvbmUoc29ydGFibGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgZHJhZ092ZXJBbmltYXRpb25DYXB0dXJlOiBmdW5jdGlvbiBkcmFnT3ZlckFuaW1hdGlvbkNhcHR1cmUoX3JlZjExKSB7XG4gICAgICB2YXIgZHJhZ1JlY3QgPSBfcmVmMTEuZHJhZ1JlY3QsXG4gICAgICAgICAgaXNPd25lciA9IF9yZWYxMS5pc093bmVyLFxuICAgICAgICAgIGFjdGl2ZVNvcnRhYmxlID0gX3JlZjExLmFjdGl2ZVNvcnRhYmxlO1xuICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50LnRoaXNBbmltYXRpb25EdXJhdGlvbiA9IG51bGw7XG4gICAgICB9KTtcblxuICAgICAgaWYgKGFjdGl2ZVNvcnRhYmxlLm9wdGlvbnMuYW5pbWF0aW9uICYmICFpc093bmVyICYmIGFjdGl2ZVNvcnRhYmxlLm11bHRpRHJhZy5pc011bHRpRHJhZykge1xuICAgICAgICBjbG9uZXNGcm9tUmVjdCA9IF9leHRlbmRzKHt9LCBkcmFnUmVjdCk7XG4gICAgICAgIHZhciBkcmFnTWF0cml4ID0gbWF0cml4KGRyYWdFbCQxLCB0cnVlKTtcbiAgICAgICAgY2xvbmVzRnJvbVJlY3QudG9wIC09IGRyYWdNYXRyaXguZjtcbiAgICAgICAgY2xvbmVzRnJvbVJlY3QubGVmdCAtPSBkcmFnTWF0cml4LmU7XG4gICAgICB9XG4gICAgfSxcbiAgICBkcmFnT3ZlckFuaW1hdGlvbkNvbXBsZXRlOiBmdW5jdGlvbiBkcmFnT3ZlckFuaW1hdGlvbkNvbXBsZXRlKCkge1xuICAgICAgaWYgKGZvbGRpbmcpIHtcbiAgICAgICAgZm9sZGluZyA9IGZhbHNlO1xuICAgICAgICByZW1vdmVNdWx0aURyYWdFbGVtZW50cygpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZHJvcDogZnVuY3Rpb24gZHJvcChfcmVmMTIpIHtcbiAgICAgIHZhciBldnQgPSBfcmVmMTIub3JpZ2luYWxFdmVudCxcbiAgICAgICAgICByb290RWwgPSBfcmVmMTIucm9vdEVsLFxuICAgICAgICAgIHBhcmVudEVsID0gX3JlZjEyLnBhcmVudEVsLFxuICAgICAgICAgIHNvcnRhYmxlID0gX3JlZjEyLnNvcnRhYmxlLFxuICAgICAgICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCA9IF9yZWYxMi5kaXNwYXRjaFNvcnRhYmxlRXZlbnQsXG4gICAgICAgICAgb2xkSW5kZXggPSBfcmVmMTIub2xkSW5kZXgsXG4gICAgICAgICAgcHV0U29ydGFibGUgPSBfcmVmMTIucHV0U29ydGFibGU7XG4gICAgICB2YXIgdG9Tb3J0YWJsZSA9IHB1dFNvcnRhYmxlIHx8IHRoaXMuc29ydGFibGU7XG4gICAgICBpZiAoIWV2dCkgcmV0dXJuO1xuICAgICAgdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnMsXG4gICAgICAgICAgY2hpbGRyZW4gPSBwYXJlbnRFbC5jaGlsZHJlbjsgLy8gTXVsdGktZHJhZyBzZWxlY3Rpb25cblxuICAgICAgaWYgKCFkcmFnU3RhcnRlZCkge1xuICAgICAgICBpZiAob3B0aW9ucy5tdWx0aURyYWdLZXkgJiYgIXRoaXMubXVsdGlEcmFnS2V5RG93bikge1xuICAgICAgICAgIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2dnbGVDbGFzcyhkcmFnRWwkMSwgb3B0aW9ucy5zZWxlY3RlZENsYXNzLCAhfm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZHJhZ0VsJDEpKTtcblxuICAgICAgICBpZiAoIX5tdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGRyYWdFbCQxKSkge1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnB1c2goZHJhZ0VsJDEpO1xuICAgICAgICAgIGRpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlLFxuICAgICAgICAgICAgcm9vdEVsOiByb290RWwsXG4gICAgICAgICAgICBuYW1lOiAnc2VsZWN0JyxcbiAgICAgICAgICAgIHRhcmdldEVsOiBkcmFnRWwkMSxcbiAgICAgICAgICAgIG9yaWdpbmFsRXZ0OiBldnRcbiAgICAgICAgICB9KTsgLy8gTW9kaWZpZXIgYWN0aXZhdGVkLCBzZWxlY3QgZnJvbSBsYXN0IHRvIGRyYWdFbFxuXG4gICAgICAgICAgaWYgKGV2dC5zaGlmdEtleSAmJiBsYXN0TXVsdGlEcmFnU2VsZWN0ICYmIHNvcnRhYmxlLmVsLmNvbnRhaW5zKGxhc3RNdWx0aURyYWdTZWxlY3QpKSB7XG4gICAgICAgICAgICB2YXIgbGFzdEluZGV4ID0gaW5kZXgobGFzdE11bHRpRHJhZ1NlbGVjdCksXG4gICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gaW5kZXgoZHJhZ0VsJDEpO1xuXG4gICAgICAgICAgICBpZiAofmxhc3RJbmRleCAmJiB+Y3VycmVudEluZGV4ICYmIGxhc3RJbmRleCAhPT0gY3VycmVudEluZGV4KSB7XG4gICAgICAgICAgICAgIC8vIE11c3QgaW5jbHVkZSBsYXN0TXVsdGlEcmFnU2VsZWN0IChzZWxlY3QgaXQpLCBpbiBjYXNlIG1vZGlmaWVkIHNlbGVjdGlvbiBmcm9tIG5vIHNlbGVjdGlvblxuICAgICAgICAgICAgICAvLyAoYnV0IHByZXZpb3VzIHNlbGVjdGlvbiBleGlzdGVkKVxuICAgICAgICAgICAgICB2YXIgbiwgaTtcblxuICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID4gbGFzdEluZGV4KSB7XG4gICAgICAgICAgICAgICAgaSA9IGxhc3RJbmRleDtcbiAgICAgICAgICAgICAgICBuID0gY3VycmVudEluZGV4O1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGkgPSBjdXJyZW50SW5kZXg7XG4gICAgICAgICAgICAgICAgbiA9IGxhc3RJbmRleCArIDE7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh+bXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihjaGlsZHJlbltpXSkpIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHRvZ2dsZUNsYXNzKGNoaWxkcmVuW2ldLCBvcHRpb25zLnNlbGVjdGVkQ2xhc3MsIHRydWUpO1xuICAgICAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnB1c2goY2hpbGRyZW5baV0pO1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgc29ydGFibGU6IHNvcnRhYmxlLFxuICAgICAgICAgICAgICAgICAgcm9vdEVsOiByb290RWwsXG4gICAgICAgICAgICAgICAgICBuYW1lOiAnc2VsZWN0JyxcbiAgICAgICAgICAgICAgICAgIHRhcmdldEVsOiBjaGlsZHJlbltpXSxcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZ0OiBldnRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsYXN0TXVsdGlEcmFnU2VsZWN0ID0gZHJhZ0VsJDE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbXVsdGlEcmFnU29ydGFibGUgPSB0b1NvcnRhYmxlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLnNwbGljZShtdWx0aURyYWdFbGVtZW50cy5pbmRleE9mKGRyYWdFbCQxKSwgMSk7XG4gICAgICAgICAgbGFzdE11bHRpRHJhZ1NlbGVjdCA9IG51bGw7XG4gICAgICAgICAgZGlzcGF0Y2hFdmVudCh7XG4gICAgICAgICAgICBzb3J0YWJsZTogc29ydGFibGUsXG4gICAgICAgICAgICByb290RWw6IHJvb3RFbCxcbiAgICAgICAgICAgIG5hbWU6ICdkZXNlbGVjdCcsXG4gICAgICAgICAgICB0YXJnZXRFbDogZHJhZ0VsJDEsXG4gICAgICAgICAgICBvcmlnaW5hbEV2dDogZXZ0XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gTXVsdGktZHJhZyBkcm9wXG5cblxuICAgICAgaWYgKGRyYWdTdGFydGVkICYmIHRoaXMuaXNNdWx0aURyYWcpIHtcbiAgICAgICAgZm9sZGluZyA9IGZhbHNlOyAvLyBEbyBub3QgXCJ1bmZvbGRcIiBhZnRlciBhcm91bmQgZHJhZ0VsIGlmIHJldmVydGVkXG5cbiAgICAgICAgaWYgKChwYXJlbnRFbFtleHBhbmRvXS5vcHRpb25zLnNvcnQgfHwgcGFyZW50RWwgIT09IHJvb3RFbCkgJiYgbXVsdGlEcmFnRWxlbWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIHZhciBkcmFnUmVjdCA9IGdldFJlY3QoZHJhZ0VsJDEpLFxuICAgICAgICAgICAgICBtdWx0aURyYWdJbmRleCA9IGluZGV4KGRyYWdFbCQxLCAnOm5vdCguJyArIHRoaXMub3B0aW9ucy5zZWxlY3RlZENsYXNzICsgJyknKTtcbiAgICAgICAgICBpZiAoIWluaXRpYWxGb2xkaW5nICYmIG9wdGlvbnMuYW5pbWF0aW9uKSBkcmFnRWwkMS50aGlzQW5pbWF0aW9uRHVyYXRpb24gPSBudWxsO1xuICAgICAgICAgIHRvU29ydGFibGUuY2FwdHVyZUFuaW1hdGlvblN0YXRlKCk7XG5cbiAgICAgICAgICBpZiAoIWluaXRpYWxGb2xkaW5nKSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5hbmltYXRpb24pIHtcbiAgICAgICAgICAgICAgZHJhZ0VsJDEuZnJvbVJlY3QgPSBkcmFnUmVjdDtcbiAgICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnQudGhpc0FuaW1hdGlvbkR1cmF0aW9uID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50ICE9PSBkcmFnRWwkMSkge1xuICAgICAgICAgICAgICAgICAgdmFyIHJlY3QgPSBmb2xkaW5nID8gZ2V0UmVjdChtdWx0aURyYWdFbGVtZW50KSA6IGRyYWdSZWN0O1xuICAgICAgICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudC5mcm9tUmVjdCA9IHJlY3Q7IC8vIFByZXBhcmUgdW5mb2xkIGFuaW1hdGlvblxuXG4gICAgICAgICAgICAgICAgICB0b1NvcnRhYmxlLmFkZEFuaW1hdGlvblN0YXRlKHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBtdWx0aURyYWdFbGVtZW50LFxuICAgICAgICAgICAgICAgICAgICByZWN0OiByZWN0XG4gICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSAvLyBNdWx0aSBkcmFnIGVsZW1lbnRzIGFyZSBub3QgbmVjZXNzYXJpbHkgcmVtb3ZlZCBmcm9tIHRoZSBET00gb24gZHJvcCwgc28gdG8gcmVpbnNlcnRcbiAgICAgICAgICAgIC8vIHByb3Blcmx5IHRoZXkgbXVzdCBhbGwgYmUgcmVtb3ZlZFxuXG5cbiAgICAgICAgICAgIHJlbW92ZU11bHRpRHJhZ0VsZW1lbnRzKCk7XG4gICAgICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChtdWx0aURyYWdFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGlmIChjaGlsZHJlblttdWx0aURyYWdJbmRleF0pIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRFbC5pbnNlcnRCZWZvcmUobXVsdGlEcmFnRWxlbWVudCwgY2hpbGRyZW5bbXVsdGlEcmFnSW5kZXhdKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXJlbnRFbC5hcHBlbmRDaGlsZChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIG11bHRpRHJhZ0luZGV4Kys7XG4gICAgICAgICAgICB9KTsgLy8gSWYgaW5pdGlhbCBmb2xkaW5nIGlzIGRvbmUsIHRoZSBlbGVtZW50cyBtYXkgaGF2ZSBjaGFuZ2VkIHBvc2l0aW9uIGJlY2F1c2UgdGhleSBhcmUgbm93XG4gICAgICAgICAgICAvLyB1bmZvbGRpbmcgYXJvdW5kIGRyYWdFbCwgZXZlbiB0aG91Z2ggZHJhZ0VsIG1heSBub3QgaGF2ZSBoaXMgaW5kZXggY2hhbmdlZCwgc28gdXBkYXRlIGV2ZW50XG4gICAgICAgICAgICAvLyBtdXN0IGJlIGZpcmVkIGhlcmUgYXMgU29ydGFibGUgd2lsbCBub3QuXG5cbiAgICAgICAgICAgIGlmIChvbGRJbmRleCA9PT0gaW5kZXgoZHJhZ0VsJDEpKSB7XG4gICAgICAgICAgICAgIHZhciB1cGRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGlmIChtdWx0aURyYWdFbGVtZW50LnNvcnRhYmxlSW5kZXggIT09IGluZGV4KG11bHRpRHJhZ0VsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgICB1cGRhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZSkge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoU29ydGFibGVFdmVudCgndXBkYXRlJyk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIE11c3QgYmUgZG9uZSBhZnRlciBjYXB0dXJpbmcgaW5kaXZpZHVhbCByZWN0cyAoc2Nyb2xsIGJhcilcblxuXG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMuZm9yRWFjaChmdW5jdGlvbiAobXVsdGlEcmFnRWxlbWVudCkge1xuICAgICAgICAgICAgdW5zZXRSZWN0KG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRvU29ydGFibGUuYW5pbWF0ZUFsbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgbXVsdGlEcmFnU29ydGFibGUgPSB0b1NvcnRhYmxlO1xuICAgICAgfSAvLyBSZW1vdmUgY2xvbmVzIGlmIG5lY2Vzc2FyeVxuXG5cbiAgICAgIGlmIChyb290RWwgPT09IHBhcmVudEVsIHx8IHB1dFNvcnRhYmxlICYmIHB1dFNvcnRhYmxlLmxhc3RQdXRNb2RlICE9PSAnY2xvbmUnKSB7XG4gICAgICAgIG11bHRpRHJhZ0Nsb25lcy5mb3JFYWNoKGZ1bmN0aW9uIChjbG9uZSkge1xuICAgICAgICAgIGNsb25lLnBhcmVudE5vZGUgJiYgY2xvbmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9uZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgbnVsbGluZ0dsb2JhbDogZnVuY3Rpb24gbnVsbGluZ0dsb2JhbCgpIHtcbiAgICAgIHRoaXMuaXNNdWx0aURyYWcgPSBkcmFnU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgbXVsdGlEcmFnQ2xvbmVzLmxlbmd0aCA9IDA7XG4gICAgfSxcbiAgICBkZXN0cm95R2xvYmFsOiBmdW5jdGlvbiBkZXN0cm95R2xvYmFsKCkge1xuICAgICAgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcoKTtcblxuICAgICAgb2ZmKGRvY3VtZW50LCAncG9pbnRlcnVwJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgICAgb2ZmKGRvY3VtZW50LCAnbW91c2V1cCcsIHRoaXMuX2Rlc2VsZWN0TXVsdGlEcmFnKTtcbiAgICAgIG9mZihkb2N1bWVudCwgJ3RvdWNoZW5kJywgdGhpcy5fZGVzZWxlY3RNdWx0aURyYWcpO1xuICAgICAgb2ZmKGRvY3VtZW50LCAna2V5ZG93bicsIHRoaXMuX2NoZWNrS2V5RG93bik7XG4gICAgICBvZmYoZG9jdW1lbnQsICdrZXl1cCcsIHRoaXMuX2NoZWNrS2V5VXApO1xuICAgIH0sXG4gICAgX2Rlc2VsZWN0TXVsdGlEcmFnOiBmdW5jdGlvbiBfZGVzZWxlY3RNdWx0aURyYWcoZXZ0KSB7XG4gICAgICBpZiAodHlwZW9mIGRyYWdTdGFydGVkICE9PSBcInVuZGVmaW5lZFwiICYmIGRyYWdTdGFydGVkKSByZXR1cm47IC8vIE9ubHkgZGVzZWxlY3QgaWYgc2VsZWN0aW9uIGlzIGluIHRoaXMgc29ydGFibGVcblxuICAgICAgaWYgKG11bHRpRHJhZ1NvcnRhYmxlICE9PSB0aGlzLnNvcnRhYmxlKSByZXR1cm47IC8vIE9ubHkgZGVzZWxlY3QgaWYgdGFyZ2V0IGlzIG5vdCBpdGVtIGluIHRoaXMgc29ydGFibGVcblxuICAgICAgaWYgKGV2dCAmJiBjbG9zZXN0KGV2dC50YXJnZXQsIHRoaXMub3B0aW9ucy5kcmFnZ2FibGUsIHRoaXMuc29ydGFibGUuZWwsIGZhbHNlKSkgcmV0dXJuOyAvLyBPbmx5IGRlc2VsZWN0IGlmIGxlZnQgY2xpY2tcblxuICAgICAgaWYgKGV2dCAmJiBldnQuYnV0dG9uICE9PSAwKSByZXR1cm47XG5cbiAgICAgIHdoaWxlIChtdWx0aURyYWdFbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGVsID0gbXVsdGlEcmFnRWxlbWVudHNbMF07XG4gICAgICAgIHRvZ2dsZUNsYXNzKGVsLCB0aGlzLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgZmFsc2UpO1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5zaGlmdCgpO1xuICAgICAgICBkaXNwYXRjaEV2ZW50KHtcbiAgICAgICAgICBzb3J0YWJsZTogdGhpcy5zb3J0YWJsZSxcbiAgICAgICAgICByb290RWw6IHRoaXMuc29ydGFibGUuZWwsXG4gICAgICAgICAgbmFtZTogJ2Rlc2VsZWN0JyxcbiAgICAgICAgICB0YXJnZXRFbDogZWwsXG4gICAgICAgICAgb3JpZ2luYWxFdnQ6IGV2dFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIF9jaGVja0tleURvd246IGZ1bmN0aW9uIF9jaGVja0tleURvd24oZXZ0KSB7XG4gICAgICBpZiAoZXZ0LmtleSA9PT0gdGhpcy5vcHRpb25zLm11bHRpRHJhZ0tleSkge1xuICAgICAgICB0aGlzLm11bHRpRHJhZ0tleURvd24gPSB0cnVlO1xuICAgICAgfVxuICAgIH0sXG4gICAgX2NoZWNrS2V5VXA6IGZ1bmN0aW9uIF9jaGVja0tleVVwKGV2dCkge1xuICAgICAgaWYgKGV2dC5rZXkgPT09IHRoaXMub3B0aW9ucy5tdWx0aURyYWdLZXkpIHtcbiAgICAgICAgdGhpcy5tdWx0aURyYWdLZXlEb3duID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICByZXR1cm4gX2V4dGVuZHMoTXVsdGlEcmFnLCB7XG4gICAgLy8gU3RhdGljIG1ldGhvZHMgJiBwcm9wZXJ0aWVzXG4gICAgcGx1Z2luTmFtZTogJ211bHRpRHJhZycsXG4gICAgdXRpbHM6IHtcbiAgICAgIC8qKlxuICAgICAgICogU2VsZWN0cyB0aGUgcHJvdmlkZWQgbXVsdGktZHJhZyBpdGVtXG4gICAgICAgKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgVGhlIGVsZW1lbnQgdG8gYmUgc2VsZWN0ZWRcbiAgICAgICAqL1xuICAgICAgc2VsZWN0OiBmdW5jdGlvbiBzZWxlY3QoZWwpIHtcbiAgICAgICAgdmFyIHNvcnRhYmxlID0gZWwucGFyZW50Tm9kZVtleHBhbmRvXTtcbiAgICAgICAgaWYgKCFzb3J0YWJsZSB8fCAhc29ydGFibGUub3B0aW9ucy5tdWx0aURyYWcgfHwgfm11bHRpRHJhZ0VsZW1lbnRzLmluZGV4T2YoZWwpKSByZXR1cm47XG5cbiAgICAgICAgaWYgKG11bHRpRHJhZ1NvcnRhYmxlICYmIG11bHRpRHJhZ1NvcnRhYmxlICE9PSBzb3J0YWJsZSkge1xuICAgICAgICAgIG11bHRpRHJhZ1NvcnRhYmxlLm11bHRpRHJhZy5fZGVzZWxlY3RNdWx0aURyYWcoKTtcblxuICAgICAgICAgIG11bHRpRHJhZ1NvcnRhYmxlID0gc29ydGFibGU7XG4gICAgICAgIH1cblxuICAgICAgICB0b2dnbGVDbGFzcyhlbCwgc29ydGFibGUub3B0aW9ucy5zZWxlY3RlZENsYXNzLCB0cnVlKTtcbiAgICAgICAgbXVsdGlEcmFnRWxlbWVudHMucHVzaChlbCk7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIERlc2VsZWN0cyB0aGUgcHJvdmlkZWQgbXVsdGktZHJhZyBpdGVtXG4gICAgICAgKiBAcGFyYW0gIHtIVE1MRWxlbWVudH0gZWwgICAgVGhlIGVsZW1lbnQgdG8gYmUgZGVzZWxlY3RlZFxuICAgICAgICovXG4gICAgICBkZXNlbGVjdDogZnVuY3Rpb24gZGVzZWxlY3QoZWwpIHtcbiAgICAgICAgdmFyIHNvcnRhYmxlID0gZWwucGFyZW50Tm9kZVtleHBhbmRvXSxcbiAgICAgICAgICAgIGluZGV4ID0gbXVsdGlEcmFnRWxlbWVudHMuaW5kZXhPZihlbCk7XG4gICAgICAgIGlmICghc29ydGFibGUgfHwgIXNvcnRhYmxlLm9wdGlvbnMubXVsdGlEcmFnIHx8ICF+aW5kZXgpIHJldHVybjtcbiAgICAgICAgdG9nZ2xlQ2xhc3MoZWwsIHNvcnRhYmxlLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcywgZmFsc2UpO1xuICAgICAgICBtdWx0aURyYWdFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXZlbnRQcm9wZXJ0aWVzOiBmdW5jdGlvbiBldmVudFByb3BlcnRpZXMoKSB7XG4gICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgdmFyIG9sZEluZGljaWVzID0gW10sXG4gICAgICAgICAgbmV3SW5kaWNpZXMgPSBbXTtcbiAgICAgIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICAgICAgb2xkSW5kaWNpZXMucHVzaCh7XG4gICAgICAgICAgbXVsdGlEcmFnRWxlbWVudDogbXVsdGlEcmFnRWxlbWVudCxcbiAgICAgICAgICBpbmRleDogbXVsdGlEcmFnRWxlbWVudC5zb3J0YWJsZUluZGV4XG4gICAgICAgIH0pOyAvLyBtdWx0aURyYWdFbGVtZW50cyB3aWxsIGFscmVhZHkgYmUgc29ydGVkIGlmIGZvbGRpbmdcblxuICAgICAgICB2YXIgbmV3SW5kZXg7XG5cbiAgICAgICAgaWYgKGZvbGRpbmcgJiYgbXVsdGlEcmFnRWxlbWVudCAhPT0gZHJhZ0VsJDEpIHtcbiAgICAgICAgICBuZXdJbmRleCA9IC0xO1xuICAgICAgICB9IGVsc2UgaWYgKGZvbGRpbmcpIHtcbiAgICAgICAgICBuZXdJbmRleCA9IGluZGV4KG11bHRpRHJhZ0VsZW1lbnQsICc6bm90KC4nICsgX3RoaXMzLm9wdGlvbnMuc2VsZWN0ZWRDbGFzcyArICcpJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3SW5kZXggPSBpbmRleChtdWx0aURyYWdFbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5ld0luZGljaWVzLnB1c2goe1xuICAgICAgICAgIG11bHRpRHJhZ0VsZW1lbnQ6IG11bHRpRHJhZ0VsZW1lbnQsXG4gICAgICAgICAgaW5kZXg6IG5ld0luZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpdGVtczogX3RvQ29uc3VtYWJsZUFycmF5KG11bHRpRHJhZ0VsZW1lbnRzKSxcbiAgICAgICAgY2xvbmVzOiBbXS5jb25jYXQobXVsdGlEcmFnQ2xvbmVzKSxcbiAgICAgICAgb2xkSW5kaWNpZXM6IG9sZEluZGljaWVzLFxuICAgICAgICBuZXdJbmRpY2llczogbmV3SW5kaWNpZXNcbiAgICAgIH07XG4gICAgfSxcbiAgICBvcHRpb25MaXN0ZW5lcnM6IHtcbiAgICAgIG11bHRpRHJhZ0tleTogZnVuY3Rpb24gbXVsdGlEcmFnS2V5KGtleSkge1xuICAgICAgICBrZXkgPSBrZXkudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBpZiAoa2V5ID09PSAnY3RybCcpIHtcbiAgICAgICAgICBrZXkgPSAnQ29udHJvbCc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICBrZXkgPSBrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBrZXkuc3Vic3RyKDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRNdWx0aURyYWdFbGVtZW50cyhjbG9uZXNJbnNlcnRlZCwgcm9vdEVsKSB7XG4gIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQsIGkpIHtcbiAgICB2YXIgdGFyZ2V0ID0gcm9vdEVsLmNoaWxkcmVuW211bHRpRHJhZ0VsZW1lbnQuc29ydGFibGVJbmRleCArIChjbG9uZXNJbnNlcnRlZCA/IE51bWJlcihpKSA6IDApXTtcblxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUobXVsdGlEcmFnRWxlbWVudCwgdGFyZ2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcm9vdEVsLmFwcGVuZENoaWxkKG11bHRpRHJhZ0VsZW1lbnQpO1xuICAgIH1cbiAgfSk7XG59XG4vKipcbiAqIEluc2VydCBtdWx0aS1kcmFnIGNsb25lc1xuICogQHBhcmFtICB7W0Jvb2xlYW5dfSBlbGVtZW50c0luc2VydGVkICBXaGV0aGVyIHRoZSBtdWx0aS1kcmFnIGVsZW1lbnRzIGFyZSBpbnNlcnRlZFxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IHJvb3RFbFxuICovXG5cblxuZnVuY3Rpb24gaW5zZXJ0TXVsdGlEcmFnQ2xvbmVzKGVsZW1lbnRzSW5zZXJ0ZWQsIHJvb3RFbCkge1xuICBtdWx0aURyYWdDbG9uZXMuZm9yRWFjaChmdW5jdGlvbiAoY2xvbmUsIGkpIHtcbiAgICB2YXIgdGFyZ2V0ID0gcm9vdEVsLmNoaWxkcmVuW2Nsb25lLnNvcnRhYmxlSW5kZXggKyAoZWxlbWVudHNJbnNlcnRlZCA/IE51bWJlcihpKSA6IDApXTtcblxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIHJvb3RFbC5pbnNlcnRCZWZvcmUoY2xvbmUsIHRhcmdldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3RFbC5hcHBlbmRDaGlsZChjbG9uZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlTXVsdGlEcmFnRWxlbWVudHMoKSB7XG4gIG11bHRpRHJhZ0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG11bHRpRHJhZ0VsZW1lbnQpIHtcbiAgICBpZiAobXVsdGlEcmFnRWxlbWVudCA9PT0gZHJhZ0VsJDEpIHJldHVybjtcbiAgICBtdWx0aURyYWdFbGVtZW50LnBhcmVudE5vZGUgJiYgbXVsdGlEcmFnRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG11bHRpRHJhZ0VsZW1lbnQpO1xuICB9KTtcbn1cblxuU29ydGFibGUubW91bnQobmV3IEF1dG9TY3JvbGxQbHVnaW4oKSk7XG5Tb3J0YWJsZS5tb3VudChSZW1vdmUsIFJldmVydCk7XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnRhYmxlO1xuZXhwb3J0IHsgTXVsdGlEcmFnUGx1Z2luIGFzIE11bHRpRHJhZywgU29ydGFibGUsIFN3YXBQbHVnaW4gYXMgU3dhcCB9O1xuIiwidmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZlByb3BzID0gT2JqZWN0LmRlZmluZVByb3BlcnRpZXM7XG52YXIgX19nZXRPd25Qcm9wRGVzY3MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycztcbnZhciBfX2dldE93blByb3BTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbnZhciBfX2hhc093blByb3AgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIF9fcHJvcElzRW51bSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19zcHJlYWRWYWx1ZXMgPSAoYSwgYikgPT4ge1xuICBmb3IgKHZhciBwcm9wIGluIGIgfHwgKGIgPSB7fSkpXG4gICAgaWYgKF9faGFzT3duUHJvcC5jYWxsKGIsIHByb3ApKVxuICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICBpZiAoX19nZXRPd25Qcm9wU3ltYm9scylcbiAgICBmb3IgKHZhciBwcm9wIG9mIF9fZ2V0T3duUHJvcFN5bWJvbHMoYikpIHtcbiAgICAgIGlmIChfX3Byb3BJc0VudW0uY2FsbChiLCBwcm9wKSlcbiAgICAgICAgX19kZWZOb3JtYWxQcm9wKGEsIHByb3AsIGJbcHJvcF0pO1xuICAgIH1cbiAgcmV0dXJuIGE7XG59O1xudmFyIF9fc3ByZWFkUHJvcHMgPSAoYSwgYikgPT4gX19kZWZQcm9wcyhhLCBfX2dldE93blByb3BEZXNjcyhiKSk7XG5pbXBvcnQgU29ydGFibGUgZnJvbSBcInNvcnRhYmxlanNcIjtcbmltcG9ydCB7IHJlc29sdmVDb21wb25lbnQsIFRyYW5zaXRpb25Hcm91cCwgZGVmaW5lQ29tcG9uZW50LCBoLCBuZXh0VGljayB9IGZyb20gXCJ2dWVcIjtcbmZ1bmN0aW9uIHJlbW92ZU5vZGUobm9kZSkge1xuICBpZiAobm9kZS5wYXJlbnRFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgbm9kZS5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKG5vZGUpO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnROb2RlQXQoZmF0aGVyTm9kZSwgbm9kZSwgcG9zaXRpb24pIHtcbiAgY29uc3QgcmVmTm9kZSA9IHBvc2l0aW9uID09PSAwID8gZmF0aGVyTm9kZS5jaGlsZHJlblswXSA6IGZhdGhlck5vZGUuY2hpbGRyZW5bcG9zaXRpb24gLSAxXS5uZXh0U2libGluZztcbiAgZmF0aGVyTm9kZS5pbnNlcnRCZWZvcmUobm9kZSwgcmVmTm9kZSk7XG59XG5mdW5jdGlvbiBnZXRDb25zb2xlKCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB3aW5kb3cuY29uc29sZTtcbiAgfVxuICByZXR1cm4gZ2xvYmFsLmNvbnNvbGU7XG59XG5jb25zdCBjb25zb2xlJDEgPSBnZXRDb25zb2xlKCk7XG5mdW5jdGlvbiBjYWNoZWQoZm4pIHtcbiAgY29uc3QgY2FjaGUgPSAvKiBAX19QVVJFX18gKi8gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNhY2hlZEZuKHN0cikge1xuICAgIGNvbnN0IGhpdCA9IGNhY2hlW3N0cl07XG4gICAgcmV0dXJuIGhpdCB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xuICB9O1xufVxuY29uc3QgcmVnZXggPSAvLShcXHcpL2c7XG5jb25zdCBjYW1lbGl6ZSA9IGNhY2hlZCgoc3RyKSA9PiBzdHIucmVwbGFjZShyZWdleCwgKF8sIGMpID0+IGMudG9VcHBlckNhc2UoKSkpO1xuY29uc3QgbWFuYWdlQW5kRW1pdCQxID0gW1wiU3RhcnRcIiwgXCJBZGRcIiwgXCJSZW1vdmVcIiwgXCJVcGRhdGVcIiwgXCJFbmRcIl07XG5jb25zdCBlbWl0JDEgPSBbXCJDaG9vc2VcIiwgXCJVbmNob29zZVwiLCBcIlNvcnRcIiwgXCJGaWx0ZXJcIiwgXCJDbG9uZVwiXTtcbmNvbnN0IG1hbmFnZSQxID0gW1wiTW92ZVwiXTtcbmNvbnN0IGV2ZW50SGFuZGxlck5hbWVzID0gW21hbmFnZSQxLCBtYW5hZ2VBbmRFbWl0JDEsIGVtaXQkMV0uZmxhdE1hcCgoZXZlbnRzMikgPT4gZXZlbnRzMikubWFwKChldnQpID0+IGBvbiR7ZXZ0fWApO1xuY29uc3QgZXZlbnRzID0ge1xuICBtYW5hZ2U6IG1hbmFnZSQxLFxuICBtYW5hZ2VBbmRFbWl0OiBtYW5hZ2VBbmRFbWl0JDEsXG4gIGVtaXQ6IGVtaXQkMVxufTtcbmZ1bmN0aW9uIGlzUmVhZE9ubHkoZXZlbnROYW1lKSB7XG4gIHJldHVybiBldmVudEhhbmRsZXJOYW1lcy5pbmRleE9mKGV2ZW50TmFtZSkgIT09IC0xO1xufVxuY29uc3QgdGFncyA9IFtcbiAgXCJhXCIsXG4gIFwiYWJiclwiLFxuICBcImFkZHJlc3NcIixcbiAgXCJhcmVhXCIsXG4gIFwiYXJ0aWNsZVwiLFxuICBcImFzaWRlXCIsXG4gIFwiYXVkaW9cIixcbiAgXCJiXCIsXG4gIFwiYmFzZVwiLFxuICBcImJkaVwiLFxuICBcImJkb1wiLFxuICBcImJsb2NrcXVvdGVcIixcbiAgXCJib2R5XCIsXG4gIFwiYnJcIixcbiAgXCJidXR0b25cIixcbiAgXCJjYW52YXNcIixcbiAgXCJjYXB0aW9uXCIsXG4gIFwiY2l0ZVwiLFxuICBcImNvZGVcIixcbiAgXCJjb2xcIixcbiAgXCJjb2xncm91cFwiLFxuICBcImRhdGFcIixcbiAgXCJkYXRhbGlzdFwiLFxuICBcImRkXCIsXG4gIFwiZGVsXCIsXG4gIFwiZGV0YWlsc1wiLFxuICBcImRmblwiLFxuICBcImRpYWxvZ1wiLFxuICBcImRpdlwiLFxuICBcImRsXCIsXG4gIFwiZHRcIixcbiAgXCJlbVwiLFxuICBcImVtYmVkXCIsXG4gIFwiZmllbGRzZXRcIixcbiAgXCJmaWdjYXB0aW9uXCIsXG4gIFwiZmlndXJlXCIsXG4gIFwiZm9vdGVyXCIsXG4gIFwiZm9ybVwiLFxuICBcImgxXCIsXG4gIFwiaDJcIixcbiAgXCJoM1wiLFxuICBcImg0XCIsXG4gIFwiaDVcIixcbiAgXCJoNlwiLFxuICBcImhlYWRcIixcbiAgXCJoZWFkZXJcIixcbiAgXCJoZ3JvdXBcIixcbiAgXCJoclwiLFxuICBcImh0bWxcIixcbiAgXCJpXCIsXG4gIFwiaWZyYW1lXCIsXG4gIFwiaW1nXCIsXG4gIFwiaW5wdXRcIixcbiAgXCJpbnNcIixcbiAgXCJrYmRcIixcbiAgXCJsYWJlbFwiLFxuICBcImxlZ2VuZFwiLFxuICBcImxpXCIsXG4gIFwibGlua1wiLFxuICBcIm1haW5cIixcbiAgXCJtYXBcIixcbiAgXCJtYXJrXCIsXG4gIFwibWF0aFwiLFxuICBcIm1lbnVcIixcbiAgXCJtZW51aXRlbVwiLFxuICBcIm1ldGFcIixcbiAgXCJtZXRlclwiLFxuICBcIm5hdlwiLFxuICBcIm5vc2NyaXB0XCIsXG4gIFwib2JqZWN0XCIsXG4gIFwib2xcIixcbiAgXCJvcHRncm91cFwiLFxuICBcIm9wdGlvblwiLFxuICBcIm91dHB1dFwiLFxuICBcInBcIixcbiAgXCJwYXJhbVwiLFxuICBcInBpY3R1cmVcIixcbiAgXCJwcmVcIixcbiAgXCJwcm9ncmVzc1wiLFxuICBcInFcIixcbiAgXCJyYlwiLFxuICBcInJwXCIsXG4gIFwicnRcIixcbiAgXCJydGNcIixcbiAgXCJydWJ5XCIsXG4gIFwic1wiLFxuICBcInNhbXBcIixcbiAgXCJzY3JpcHRcIixcbiAgXCJzZWN0aW9uXCIsXG4gIFwic2VsZWN0XCIsXG4gIFwic2xvdFwiLFxuICBcInNtYWxsXCIsXG4gIFwic291cmNlXCIsXG4gIFwic3BhblwiLFxuICBcInN0cm9uZ1wiLFxuICBcInN0eWxlXCIsXG4gIFwic3ViXCIsXG4gIFwic3VtbWFyeVwiLFxuICBcInN1cFwiLFxuICBcInN2Z1wiLFxuICBcInRhYmxlXCIsXG4gIFwidGJvZHlcIixcbiAgXCJ0ZFwiLFxuICBcInRlbXBsYXRlXCIsXG4gIFwidGV4dGFyZWFcIixcbiAgXCJ0Zm9vdFwiLFxuICBcInRoXCIsXG4gIFwidGhlYWRcIixcbiAgXCJ0aW1lXCIsXG4gIFwidGl0bGVcIixcbiAgXCJ0clwiLFxuICBcInRyYWNrXCIsXG4gIFwidVwiLFxuICBcInVsXCIsXG4gIFwidmFyXCIsXG4gIFwidmlkZW9cIixcbiAgXCJ3YnJcIlxuXTtcbmZ1bmN0aW9uIGlzSHRtbFRhZyhuYW1lKSB7XG4gIHJldHVybiB0YWdzLmluY2x1ZGVzKG5hbWUpO1xufVxuZnVuY3Rpb24gaXNUcmFuc2l0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIFtcInRyYW5zaXRpb24tZ3JvdXBcIiwgXCJUcmFuc2l0aW9uR3JvdXBcIl0uaW5jbHVkZXMobmFtZSk7XG59XG5mdW5jdGlvbiBpc0h0bWxBdHRyaWJ1dGUodmFsdWUpIHtcbiAgcmV0dXJuIFtcImlkXCIsIFwiY2xhc3NcIiwgXCJyb2xlXCIsIFwic3R5bGVcIl0uaW5jbHVkZXModmFsdWUpIHx8IHZhbHVlLnN0YXJ0c1dpdGgoXCJkYXRhLVwiKSB8fCB2YWx1ZS5zdGFydHNXaXRoKFwiYXJpYS1cIikgfHwgdmFsdWUuc3RhcnRzV2l0aChcIm9uXCIpO1xufVxuZnVuY3Rpb24gcHJvamVjdChlbnRyaWVzKSB7XG4gIHJldHVybiBlbnRyaWVzLnJlZHVjZSgocmVzLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICByZXNba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcbn1cbmZ1bmN0aW9uIGdldENvbXBvbmVudEF0dHJpYnV0ZXMoeyAkYXR0cnMsIGNvbXBvbmVudERhdGEgPSB7fSB9KSB7XG4gIGNvbnN0IGF0dHJpYnV0ZXMgPSBwcm9qZWN0KE9iamVjdC5lbnRyaWVzKCRhdHRycykuZmlsdGVyKChba2V5LCBfXSkgPT4gaXNIdG1sQXR0cmlidXRlKGtleSkpKTtcbiAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCBhdHRyaWJ1dGVzKSwgY29tcG9uZW50RGF0YSk7XG59XG5mdW5jdGlvbiBjcmVhdGVTb3J0YWJsZU9wdGlvbih7ICRhdHRycywgY2FsbEJhY2tCdWlsZGVyIH0pIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHByb2plY3QoZ2V0VmFsaWRTb3J0YWJsZUVudHJpZXMoJGF0dHJzKSk7XG4gIE9iamVjdC5lbnRyaWVzKGNhbGxCYWNrQnVpbGRlcikuZm9yRWFjaCgoW2V2ZW50VHlwZSwgZXZlbnRCdWlsZGVyXSkgPT4ge1xuICAgIGV2ZW50c1tldmVudFR5cGVdLmZvckVhY2goKGV2ZW50KSA9PiB7XG4gICAgICBvcHRpb25zW2BvbiR7ZXZlbnR9YF0gPSBldmVudEJ1aWxkZXIoZXZlbnQpO1xuICAgIH0pO1xuICB9KTtcbiAgY29uc3QgZHJhZ2dhYmxlID0gYFtkYXRhLWRyYWdnYWJsZV0ke29wdGlvbnMuZHJhZ2dhYmxlIHx8IFwiXCJ9YDtcbiAgcmV0dXJuIF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIG9wdGlvbnMpLCB7XG4gICAgZHJhZ2dhYmxlXG4gIH0pO1xufVxuZnVuY3Rpb24gZ2V0VmFsaWRTb3J0YWJsZUVudHJpZXModmFsdWUpIHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHZhbHVlKS5maWx0ZXIoKFtrZXksIF9dKSA9PiAhaXNIdG1sQXR0cmlidXRlKGtleSkpLm1hcCgoW2tleSwgdmFsdWUyXSkgPT4gW2NhbWVsaXplKGtleSksIHZhbHVlMl0pLmZpbHRlcigoW2tleSwgX10pID0+ICFpc1JlYWRPbmx5KGtleSkpO1xufVxuY29uc3QgZ2V0SHRtbEVsZW1lbnRGcm9tTm9kZSA9IChub2RlKSA9PiB7XG4gIGNvbnN0IGVsID0gbm9kZS5lbCB8fCBBcnJheS5pc0FycmF5KG5vZGUuY2hpbGRyZW4pICYmIG5vZGUuY2hpbGRyZW5bMF0uZWwucGFyZW50Tm9kZTtcbiAgaWYgKCFlbCkge1xuICAgIGNvbnNvbGUuZXJyb3IoXCJcXHU0RjdGXFx1NzUyOCB0cmFuc2l0aW9uLWdyb3VwICwgXFx1OTcwMFxcdTg5ODFcXHU1NzI4c2xvdFxcdTRFMkR0ZW1wbGF0ZVxcdTUxODVcXHU4MUYzXFx1NUMxMTJcXHU1QzQyaHRtbFxcdTY4MDdcXHU3QjdFXCIpO1xuICB9XG4gIHJldHVybiBlbCB8fCB7fTtcbn07XG5jb25zdCBhZGRDb250ZXh0ID0gKGRvbUVsZW1lbnQsIGNvbnRleHQpID0+IGRvbUVsZW1lbnQuX19kcmFnZ2FibGVfY29udGV4dCA9IGNvbnRleHQ7XG5jb25zdCBnZXRDb250ZXh0ID0gKGRvbUVsZW1lbnQpID0+IGRvbUVsZW1lbnQuX19kcmFnZ2FibGVfY29udGV4dDtcbmNsYXNzIENvbXBvbmVudFN0cnVjdHVyZSB7XG4gIGNvbnN0cnVjdG9yKHtcbiAgICBub2RlczogeyBoZWFkZXIsIGRlZmF1bHQ6IGRlZmF1bHROb2RlcywgZm9vdGVyIH0sXG4gICAgcm9vdCxcbiAgICByZWFsTGlzdFxuICB9KSB7XG4gICAgdGhpcy5kZWZhdWx0Tm9kZXMgPSBkZWZhdWx0Tm9kZXM7XG4gICAgdGhpcy5jaGlsZHJlbiA9IFsuLi5oZWFkZXIsIC4uLmRlZmF1bHROb2RlcywgLi4uZm9vdGVyXTtcbiAgICB0aGlzLmV4dGVybmFsQ29tcG9uZW50ID0gcm9vdC5leHRlcm5hbENvbXBvbmVudDtcbiAgICB0aGlzLnJvb3RUcmFuc2l0aW9uID0gcm9vdC50cmFuc2l0aW9uO1xuICAgIHRoaXMudGFnID0gcm9vdC50YWc7XG4gICAgdGhpcy5yZWFsTGlzdCA9IHJlYWxMaXN0O1xuICB9XG4gIGdldCBfaXNSb290Q29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzLmV4dGVybmFsQ29tcG9uZW50IHx8IHRoaXMucm9vdFRyYW5zaXRpb247XG4gIH1cbiAgcmVuZGVyKGgyLCBhdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgeyB0YWcsIGNoaWxkcmVuLCBfaXNSb290Q29tcG9uZW50IH0gPSB0aGlzO1xuICAgIGNvbnN0IG9wdGlvbiA9ICFfaXNSb290Q29tcG9uZW50ID8gY2hpbGRyZW4gOiB7IGRlZmF1bHQ6ICgpID0+IGNoaWxkcmVuIH07XG4gICAgcmV0dXJuIGgyKHRhZywgYXR0cmlidXRlcywgb3B0aW9uKTtcbiAgfVxuICB1cGRhdGVkKCkge1xuICAgIGNvbnN0IHsgZGVmYXVsdE5vZGVzLCByZWFsTGlzdCB9ID0gdGhpcztcbiAgICBkZWZhdWx0Tm9kZXMuZm9yRWFjaCgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGFkZENvbnRleHQoZ2V0SHRtbEVsZW1lbnRGcm9tTm9kZShub2RlKSwge1xuICAgICAgICBlbGVtZW50OiByZWFsTGlzdFtpbmRleF0sXG4gICAgICAgIGluZGV4XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBnZXRVbmRlcmx5aW5nVm0oZG9tRWxlbWVudCkge1xuICAgIHJldHVybiBnZXRDb250ZXh0KGRvbUVsZW1lbnQpO1xuICB9XG4gIGdldFZtSW5kZXhGcm9tRG9tSW5kZXgoZG9tSW5kZXgsIGVsZW1lbnQpIHtcbiAgICBjb25zdCB7IGRlZmF1bHROb2RlcyB9ID0gdGhpcztcbiAgICBjb25zdCB7IGxlbmd0aCB9ID0gZGVmYXVsdE5vZGVzO1xuICAgIGNvbnN0IGRvbUNoaWxkcmVuID0gZWxlbWVudC5jaGlsZHJlbjtcbiAgICBjb25zdCBkb21FbGVtZW50ID0gZG9tQ2hpbGRyZW4uaXRlbShkb21JbmRleCk7XG4gICAgaWYgKGRvbUVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHQgPSBnZXRDb250ZXh0KGRvbUVsZW1lbnQpO1xuICAgIGlmIChjb250ZXh0KSB7XG4gICAgICByZXR1cm4gY29udGV4dC5pbmRleDtcbiAgICB9XG4gICAgaWYgKGxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0RG9tTGlzdEVsZW1lbnQgPSBnZXRIdG1sRWxlbWVudEZyb21Ob2RlKGRlZmF1bHROb2Rlc1swXSk7XG4gICAgY29uc3QgaW5kZXhGaXJzdERvbUxpc3RFbGVtZW50ID0gWy4uLmRvbUNoaWxkcmVuXS5maW5kSW5kZXgoKGVsZW1lbnQyKSA9PiBlbGVtZW50MiA9PT0gZmlyc3REb21MaXN0RWxlbWVudCk7XG4gICAgcmV0dXJuIGRvbUluZGV4IDwgaW5kZXhGaXJzdERvbUxpc3RFbGVtZW50ID8gMCA6IGxlbmd0aDtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U2xvdChzbG90cywga2V5KSB7XG4gIGNvbnN0IHNsb3RWYWx1ZSA9IHNsb3RzW2tleV07XG4gIHJldHVybiBzbG90VmFsdWUgPyBzbG90VmFsdWUoKSA6IFtdO1xufVxuZnVuY3Rpb24gY29tcHV0ZU5vZGVzKHsgJHNsb3RzLCByZWFsTGlzdCwgZ2V0S2V5IH0pIHtcbiAgY29uc3Qgbm9ybWFsaXplZExpc3QgPSByZWFsTGlzdCB8fCBbXTtcbiAgY29uc3QgW2hlYWRlciwgZm9vdGVyXSA9IFtcImhlYWRlclwiLCBcImZvb3RlclwiXS5tYXAoKG5hbWUpID0+IGdldFNsb3QoJHNsb3RzLCBuYW1lKSk7XG4gIGNvbnN0IHsgaXRlbSB9ID0gJHNsb3RzO1xuICBpZiAoIWl0ZW0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJkcmFnZ2FibGUgZWxlbWVudCBtdXN0IGhhdmUgYW4gaXRlbSBzbG90XCIpO1xuICB9XG4gIGNvbnN0IGRlZmF1bHROb2RlcyA9IG5vcm1hbGl6ZWRMaXN0LmZsYXRNYXAoKGVsZW1lbnQsIGluZGV4KSA9PiBpdGVtKHsgZWxlbWVudCwgaW5kZXggfSkubWFwKChub2RlKSA9PiB7XG4gICAgbm9kZS5rZXkgPSBnZXRLZXkoZWxlbWVudCk7XG4gICAgbm9kZS5wcm9wcyA9IF9fc3ByZWFkUHJvcHMoX19zcHJlYWRWYWx1ZXMoe30sIG5vZGUucHJvcHMgfHwge30pLCB7IFwiZGF0YS1kcmFnZ2FibGVcIjogdHJ1ZSB9KTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfSkpO1xuICBpZiAoZGVmYXVsdE5vZGVzLmxlbmd0aCAhPT0gbm9ybWFsaXplZExpc3QubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSXRlbSBzbG90IG11c3QgaGF2ZSBvbmx5IG9uZSBjaGlsZFwiKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGhlYWRlcixcbiAgICBmb290ZXIsXG4gICAgZGVmYXVsdDogZGVmYXVsdE5vZGVzXG4gIH07XG59XG5mdW5jdGlvbiBnZXRSb290SW5mb3JtYXRpb24odGFnKSB7XG4gIGNvbnN0IHRyYW5zaXRpb24gPSBpc1RyYW5zaXRpb24odGFnKTtcbiAgY29uc3QgZXh0ZXJuYWxDb21wb25lbnQgPSAhaXNIdG1sVGFnKHRhZykgJiYgIXRyYW5zaXRpb247XG4gIHJldHVybiB7XG4gICAgdHJhbnNpdGlvbixcbiAgICBleHRlcm5hbENvbXBvbmVudCxcbiAgICB0YWc6IGV4dGVybmFsQ29tcG9uZW50ID8gcmVzb2x2ZUNvbXBvbmVudCh0YWcpIDogdHJhbnNpdGlvbiA/IFRyYW5zaXRpb25Hcm91cCA6IHRhZ1xuICB9O1xufVxuZnVuY3Rpb24gY29tcHV0ZUNvbXBvbmVudFN0cnVjdHVyZSh7ICRzbG90cywgdGFnLCByZWFsTGlzdCwgZ2V0S2V5IH0pIHtcbiAgY29uc3Qgbm9kZXMgPSBjb21wdXRlTm9kZXMoeyAkc2xvdHMsIHJlYWxMaXN0LCBnZXRLZXkgfSk7XG4gIGNvbnN0IHJvb3QgPSBnZXRSb290SW5mb3JtYXRpb24odGFnKTtcbiAgcmV0dXJuIG5ldyBDb21wb25lbnRTdHJ1Y3R1cmUoeyBub2Rlcywgcm9vdCwgcmVhbExpc3QgfSk7XG59XG5mdW5jdGlvbiBlbWl0KGV2dE5hbWUsIGV2dERhdGEpIHtcbiAgbmV4dFRpY2soKCkgPT4gdGhpcy4kZW1pdChldnROYW1lLnRvTG93ZXJDYXNlKCksIGV2dERhdGEpKTtcbn1cbmZ1bmN0aW9uIG1hbmFnZShldnROYW1lKSB7XG4gIHJldHVybiAoZXZ0RGF0YSwgb3JpZ2luYWxFbGVtZW50KSA9PiB7XG4gICAgaWYgKHRoaXMucmVhbExpc3QgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzW2BvbkRyYWcke2V2dE5hbWV9YF0oZXZ0RGF0YSwgb3JpZ2luYWxFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5mdW5jdGlvbiBtYW5hZ2VBbmRFbWl0KGV2dE5hbWUpIHtcbiAgY29uc3QgZGVsZWdhdGVDYWxsQmFjayA9IG1hbmFnZS5jYWxsKHRoaXMsIGV2dE5hbWUpO1xuICByZXR1cm4gKGV2dERhdGEsIG9yaWdpbmFsRWxlbWVudCkgPT4ge1xuICAgIGRlbGVnYXRlQ2FsbEJhY2suY2FsbCh0aGlzLCBldnREYXRhLCBvcmlnaW5hbEVsZW1lbnQpO1xuICAgIGVtaXQuY2FsbCh0aGlzLCBldnROYW1lLCBldnREYXRhKTtcbiAgfTtcbn1cbmxldCBkcmFnZ2luZ0VsZW1lbnQgPSBudWxsO1xuY29uc3QgcHJvcHMgPSB7XG4gIGxpc3Q6IHtcbiAgICB0eXBlOiBBcnJheSxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9LFxuICBtb2RlbFZhbHVlOiB7XG4gICAgdHlwZTogQXJyYXksXG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgaXRlbUtleToge1xuICAgIHR5cGU6IFtTdHJpbmcsIEZ1bmN0aW9uXSxcbiAgICByZXF1aXJlZDogdHJ1ZVxuICB9LFxuICBjbG9uZToge1xuICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgIGRlZmF1bHQ6IChvcmlnaW5hbCkgPT4ge1xuICAgICAgcmV0dXJuIG9yaWdpbmFsO1xuICAgIH1cbiAgfSxcbiAgdGFnOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IFwiZGl2XCJcbiAgfSxcbiAgbW92ZToge1xuICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgIGRlZmF1bHQ6IG51bGxcbiAgfSxcbiAgY29tcG9uZW50RGF0YToge1xuICAgIHR5cGU6IE9iamVjdCxcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgZGVmYXVsdDogbnVsbFxuICB9XG59O1xuY29uc3QgZW1pdHMgPSBbXG4gIFwidXBkYXRlOm1vZGVsVmFsdWVcIixcbiAgXCJjaGFuZ2VcIixcbiAgLi4uWy4uLmV2ZW50cy5tYW5hZ2VBbmRFbWl0LCAuLi5ldmVudHMuZW1pdF0ubWFwKChldnQpID0+IGV2dC50b0xvd2VyQ2FzZSgpKVxuXTtcbmNvbnN0IGRyYWdnYWJsZUNvbXBvbmVudCA9IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiZHJhZ2dhYmxlXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzLFxuICBlbWl0cyxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3I6IGZhbHNlXG4gICAgfTtcbiAgfSxcbiAgcmVuZGVyKCkge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgICBjb25zdCB7ICRzbG90cywgJGF0dHJzLCB0YWcsIGNvbXBvbmVudERhdGEsIHJlYWxMaXN0LCBnZXRLZXkgfSA9IHRoaXM7XG4gICAgICBjb25zdCBjb21wb25lbnRTdHJ1Y3R1cmUgPSBjb21wdXRlQ29tcG9uZW50U3RydWN0dXJlKHtcbiAgICAgICAgJHNsb3RzLFxuICAgICAgICB0YWcsXG4gICAgICAgIHJlYWxMaXN0LFxuICAgICAgICBnZXRLZXlcbiAgICAgIH0pO1xuICAgICAgdGhpcy5jb21wb25lbnRTdHJ1Y3R1cmUgPSBjb21wb25lbnRTdHJ1Y3R1cmU7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gZ2V0Q29tcG9uZW50QXR0cmlidXRlcyh7ICRhdHRycywgY29tcG9uZW50RGF0YSB9KTtcbiAgICAgIHJldHVybiBjb21wb25lbnRTdHJ1Y3R1cmUucmVuZGVyKGgsIGF0dHJpYnV0ZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICByZXR1cm4gaChcInByZVwiLCB7IHN0eWxlOiB7IGNvbG9yOiBcInJlZFwiIH0gfSwgZXJyLnN0YWNrKTtcbiAgICB9XG4gIH0sXG4gIGNyZWF0ZWQoKSB7XG4gICAgaWYgKHRoaXMubGlzdCAhPT0gbnVsbCAmJiB0aGlzLm1vZGVsVmFsdWUgIT09IG51bGwpIHtcbiAgICAgIGNvbnNvbGUkMS5lcnJvcihcIm1vZGVsVmFsdWUgYW5kIGxpc3QgcHJvcHMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSEgUGxlYXNlIHNldCBvbmUgb3IgYW5vdGhlci5cIik7XG4gICAgfVxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIGlmICh0aGlzLmVycm9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHsgJGF0dHJzLCAkZWwsIGNvbXBvbmVudFN0cnVjdHVyZSB9ID0gdGhpcztcbiAgICBjb21wb25lbnRTdHJ1Y3R1cmUudXBkYXRlZCgpO1xuICAgIGNvbnN0IHNvcnRhYmxlT3B0aW9ucyA9IGNyZWF0ZVNvcnRhYmxlT3B0aW9uKHtcbiAgICAgICRhdHRycyxcbiAgICAgIGNhbGxCYWNrQnVpbGRlcjoge1xuICAgICAgICBtYW5hZ2VBbmRFbWl0OiAoZXZlbnQpID0+IG1hbmFnZUFuZEVtaXQuY2FsbCh0aGlzLCBldmVudCksXG4gICAgICAgIGVtaXQ6IChldmVudCkgPT4gZW1pdC5iaW5kKHRoaXMsIGV2ZW50KSxcbiAgICAgICAgbWFuYWdlOiAoZXZlbnQpID0+IG1hbmFnZS5jYWxsKHRoaXMsIGV2ZW50KVxuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHRhcmdldERvbUVsZW1lbnQgPSAkZWwubm9kZVR5cGUgPT09IDEgPyAkZWwgOiAkZWwucGFyZW50RWxlbWVudDtcbiAgICB0aGlzLl9zb3J0YWJsZSA9IG5ldyBTb3J0YWJsZSh0YXJnZXREb21FbGVtZW50LCBzb3J0YWJsZU9wdGlvbnMpO1xuICAgIHRoaXMudGFyZ2V0RG9tRWxlbWVudCA9IHRhcmdldERvbUVsZW1lbnQ7XG4gICAgdGFyZ2V0RG9tRWxlbWVudC5fX2RyYWdnYWJsZV9jb21wb25lbnRfXyA9IHRoaXM7XG4gIH0sXG4gIHVwZGF0ZWQoKSB7XG4gICAgdGhpcy5jb21wb25lbnRTdHJ1Y3R1cmUudXBkYXRlZCgpO1xuICB9LFxuICBiZWZvcmVVbm1vdW50KCkge1xuICAgIGlmICh0aGlzLl9zb3J0YWJsZSAhPT0gdm9pZCAwKVxuICAgICAgdGhpcy5fc29ydGFibGUuZGVzdHJveSgpO1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHJlYWxMaXN0KCkge1xuICAgICAgY29uc3QgeyBsaXN0IH0gPSB0aGlzO1xuICAgICAgcmV0dXJuIGxpc3QgPyBsaXN0IDogdGhpcy5tb2RlbFZhbHVlO1xuICAgIH0sXG4gICAgZ2V0S2V5KCkge1xuICAgICAgY29uc3QgeyBpdGVtS2V5IH0gPSB0aGlzO1xuICAgICAgaWYgKHR5cGVvZiBpdGVtS2V5ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1LZXk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKGVsZW1lbnQpID0+IGVsZW1lbnRbaXRlbUtleV07XG4gICAgfVxuICB9LFxuICB3YXRjaDoge1xuICAgICRhdHRyczoge1xuICAgICAgaGFuZGxlcihuZXdPcHRpb25WYWx1ZSkge1xuICAgICAgICBjb25zdCB7IF9zb3J0YWJsZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKCFfc29ydGFibGUpXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBnZXRWYWxpZFNvcnRhYmxlRW50cmllcyhuZXdPcHRpb25WYWx1ZSkuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgX3NvcnRhYmxlLm9wdGlvbihrZXksIHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZGVlcDogdHJ1ZVxuICAgIH1cbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGdldFVuZGVybHlpbmdWbShkb21FbGVtZW50KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdHJ1Y3R1cmUuZ2V0VW5kZXJseWluZ1ZtKGRvbUVsZW1lbnQpIHx8IG51bGw7XG4gICAgfSxcbiAgICBnZXRVbmRlcmx5aW5nUG90ZW5jaWFsRHJhZ2dhYmxlQ29tcG9uZW50KGh0bUVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBodG1FbGVtZW50Ll9fZHJhZ2dhYmxlX2NvbXBvbmVudF9fO1xuICAgIH0sXG4gICAgZW1pdENoYW5nZXMoZXZ0KSB7XG4gICAgICBuZXh0VGljaygoKSA9PiB0aGlzLiRlbWl0KFwiY2hhbmdlXCIsIGV2dCkpO1xuICAgIH0sXG4gICAgYWx0ZXJMaXN0KG9uTGlzdCkge1xuICAgICAgaWYgKHRoaXMubGlzdCkge1xuICAgICAgICBvbkxpc3QodGhpcy5saXN0KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi50aGlzLm1vZGVsVmFsdWVdO1xuICAgICAgb25MaXN0KG5ld0xpc3QpO1xuICAgICAgdGhpcy4kZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG5ld0xpc3QpO1xuICAgIH0sXG4gICAgc3BsaWNlTGlzdCgpIHtcbiAgICAgIGNvbnN0IHNwbGljZUxpc3QgPSAobGlzdCkgPT4gbGlzdC5zcGxpY2UoLi4uYXJndW1lbnRzKTtcbiAgICAgIHRoaXMuYWx0ZXJMaXN0KHNwbGljZUxpc3QpO1xuICAgIH0sXG4gICAgdXBkYXRlUG9zaXRpb24ob2xkSW5kZXgsIG5ld0luZGV4KSB7XG4gICAgICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9IChsaXN0KSA9PiBsaXN0LnNwbGljZShuZXdJbmRleCwgMCwgbGlzdC5zcGxpY2Uob2xkSW5kZXgsIDEpWzBdKTtcbiAgICAgIHRoaXMuYWx0ZXJMaXN0KHVwZGF0ZVBvc2l0aW9uKTtcbiAgICB9LFxuICAgIGdldFJlbGF0ZWRDb250ZXh0RnJvbU1vdmVFdmVudCh7IHRvLCByZWxhdGVkIH0pIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudCA9IHRoaXMuZ2V0VW5kZXJseWluZ1BvdGVuY2lhbERyYWdnYWJsZUNvbXBvbmVudCh0byk7XG4gICAgICBpZiAoIWNvbXBvbmVudCkge1xuICAgICAgICByZXR1cm4geyBjb21wb25lbnQgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGxpc3QgPSBjb21wb25lbnQucmVhbExpc3Q7XG4gICAgICBjb25zdCBjb250ZXh0ID0geyBsaXN0LCBjb21wb25lbnQgfTtcbiAgICAgIGlmICh0byAhPT0gcmVsYXRlZCAmJiBsaXN0KSB7XG4gICAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gY29tcG9uZW50LmdldFVuZGVybHlpbmdWbShyZWxhdGVkKSB8fCB7fTtcbiAgICAgICAgcmV0dXJuIF9fc3ByZWFkVmFsdWVzKF9fc3ByZWFkVmFsdWVzKHt9LCBkZXN0aW5hdGlvbiksIGNvbnRleHQpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBnZXRWbUluZGV4RnJvbURvbUluZGV4KGRvbUluZGV4KSB7XG4gICAgICByZXR1cm4gdGhpcy5jb21wb25lbnRTdHJ1Y3R1cmUuZ2V0Vm1JbmRleEZyb21Eb21JbmRleChkb21JbmRleCwgdGhpcy50YXJnZXREb21FbGVtZW50KTtcbiAgICB9LFxuICAgIG9uRHJhZ1N0YXJ0KGV2dCkge1xuICAgICAgdGhpcy5jb250ZXh0ID0gdGhpcy5nZXRVbmRlcmx5aW5nVm0oZXZ0Lml0ZW0pO1xuICAgICAgZXZ0Lml0ZW0uX3VuZGVybHlpbmdfdm1fID0gdGhpcy5jbG9uZSh0aGlzLmNvbnRleHQuZWxlbWVudCk7XG4gICAgICBkcmFnZ2luZ0VsZW1lbnQgPSBldnQuaXRlbTtcbiAgICB9LFxuICAgIG9uRHJhZ0FkZChldnQpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBldnQuaXRlbS5fdW5kZXJseWluZ192bV87XG4gICAgICBpZiAoZWxlbWVudCA9PT0gdm9pZCAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlbW92ZU5vZGUoZXZ0Lml0ZW0pO1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLmdldFZtSW5kZXhGcm9tRG9tSW5kZXgoZXZ0Lm5ld0luZGV4KTtcbiAgICAgIHRoaXMuc3BsaWNlTGlzdChuZXdJbmRleCwgMCwgZWxlbWVudCk7XG4gICAgICBjb25zdCBhZGRlZCA9IHsgZWxlbWVudCwgbmV3SW5kZXggfTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZXMoeyBhZGRlZCB9KTtcbiAgICB9LFxuICAgIG9uRHJhZ1JlbW92ZShldnQpIHtcbiAgICAgIGluc2VydE5vZGVBdCh0aGlzLiRlbCwgZXZ0Lml0ZW0sIGV2dC5vbGRJbmRleCk7XG4gICAgICBpZiAoZXZ0LnB1bGxNb2RlID09PSBcImNsb25lXCIpIHtcbiAgICAgICAgcmVtb3ZlTm9kZShldnQuY2xvbmUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IGluZGV4OiBvbGRJbmRleCwgZWxlbWVudCB9ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdGhpcy5zcGxpY2VMaXN0KG9sZEluZGV4LCAxKTtcbiAgICAgIGNvbnN0IHJlbW92ZWQgPSB7IGVsZW1lbnQsIG9sZEluZGV4IH07XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VzKHsgcmVtb3ZlZCB9KTtcbiAgICB9LFxuICAgIG9uRHJhZ1VwZGF0ZShldnQpIHtcbiAgICAgIHJlbW92ZU5vZGUoZXZ0Lml0ZW0pO1xuICAgICAgaW5zZXJ0Tm9kZUF0KGV2dC5mcm9tLCBldnQuaXRlbSwgZXZ0Lm9sZEluZGV4KTtcbiAgICAgIGNvbnN0IG9sZEluZGV4ID0gdGhpcy5jb250ZXh0LmluZGV4O1xuICAgICAgY29uc3QgbmV3SW5kZXggPSB0aGlzLmdldFZtSW5kZXhGcm9tRG9tSW5kZXgoZXZ0Lm5ld0luZGV4KTtcbiAgICAgIHRoaXMudXBkYXRlUG9zaXRpb24ob2xkSW5kZXgsIG5ld0luZGV4KTtcbiAgICAgIGNvbnN0IG1vdmVkID0geyBlbGVtZW50OiB0aGlzLmNvbnRleHQuZWxlbWVudCwgb2xkSW5kZXgsIG5ld0luZGV4IH07XG4gICAgICB0aGlzLmVtaXRDaGFuZ2VzKHsgbW92ZWQgfSk7XG4gICAgfSxcbiAgICBjb21wdXRlRnV0dXJlSW5kZXgocmVsYXRlZENvbnRleHQsIGV2dCkge1xuICAgICAgaWYgKCFyZWxhdGVkQ29udGV4dC5lbGVtZW50KSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgICAgfVxuICAgICAgY29uc3QgZG9tQ2hpbGRyZW4gPSBbLi4uZXZ0LnRvLmNoaWxkcmVuXS5maWx0ZXIoKGVsKSA9PiBlbC5zdHlsZVtcImRpc3BsYXlcIl0gIT09IFwibm9uZVwiKTtcbiAgICAgIGNvbnN0IGN1cnJlbnREb21JbmRleCA9IGRvbUNoaWxkcmVuLmluZGV4T2YoZXZ0LnJlbGF0ZWQpO1xuICAgICAgY29uc3QgY3VycmVudEluZGV4ID0gcmVsYXRlZENvbnRleHQuY29tcG9uZW50LmdldFZtSW5kZXhGcm9tRG9tSW5kZXgoY3VycmVudERvbUluZGV4KTtcbiAgICAgIGNvbnN0IGRyYWdnZWRJbkxpc3QgPSBkb21DaGlsZHJlbi5pbmRleE9mKGRyYWdnaW5nRWxlbWVudCkgIT09IC0xO1xuICAgICAgcmV0dXJuIGRyYWdnZWRJbkxpc3QgfHwgIWV2dC53aWxsSW5zZXJ0QWZ0ZXIgPyBjdXJyZW50SW5kZXggOiBjdXJyZW50SW5kZXggKyAxO1xuICAgIH0sXG4gICAgb25EcmFnTW92ZShldnQsIG9yaWdpbmFsRXZlbnQpIHtcbiAgICAgIGNvbnN0IHsgbW92ZSwgcmVhbExpc3QgfSA9IHRoaXM7XG4gICAgICBpZiAoIW1vdmUgfHwgIXJlYWxMaXN0KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRlZENvbnRleHQgPSB0aGlzLmdldFJlbGF0ZWRDb250ZXh0RnJvbU1vdmVFdmVudChldnQpO1xuICAgICAgY29uc3QgZnV0dXJlSW5kZXggPSB0aGlzLmNvbXB1dGVGdXR1cmVJbmRleChyZWxhdGVkQ29udGV4dCwgZXZ0KTtcbiAgICAgIGNvbnN0IGRyYWdnZWRDb250ZXh0ID0gX19zcHJlYWRQcm9wcyhfX3NwcmVhZFZhbHVlcyh7fSwgdGhpcy5jb250ZXh0KSwge1xuICAgICAgICBmdXR1cmVJbmRleFxuICAgICAgfSk7XG4gICAgICBjb25zdCBzZW5kRXZlbnQgPSBfX3NwcmVhZFByb3BzKF9fc3ByZWFkVmFsdWVzKHt9LCBldnQpLCB7XG4gICAgICAgIHJlbGF0ZWRDb250ZXh0LFxuICAgICAgICBkcmFnZ2VkQ29udGV4dFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gbW92ZShzZW5kRXZlbnQsIG9yaWdpbmFsRXZlbnQpO1xuICAgIH0sXG4gICAgb25EcmFnRW5kKCkge1xuICAgICAgZHJhZ2dpbmdFbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gIH1cbn0pO1xuZXhwb3J0IHsgZHJhZ2dhYmxlQ29tcG9uZW50IGFzIGRlZmF1bHQgfTtcbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b25Hcm91cC5uYW1lXCIgY2xhc3M9XCJmcy10YWJsZS1jb2x1bW5zLWZpeGVkLWNvbnRyb2xsZXJcIj5cbiAgICA8ZnMtYnV0dG9uXG4gICAgICB2LWZvcj1cIm9wdGlvbiBvZiBvcHRpb25zXCJcbiAgICAgIDprZXk9XCJvcHRpb24uaWNvblwiXG4gICAgICA6dHlwZT1cIm1vZGVsVmFsdWUgPT09IG9wdGlvbi52YWx1ZSA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J1wiXG4gICAgICA6aWNvbj1cIm9wdGlvbi5pY29uXCJcbiAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICBAY2xpY2s9XCJzdWJtaXQob3B0aW9uLnZhbHVlKVwiXG4gICAgLz5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNUYWJsZUNvbHVtbnNGaXhlZENvbnRyb2xsZXJcIixcbiAgcHJvcHM6IHtcbiAgICBtb2RlbFZhbHVlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcInVwZGF0ZTptb2RlbFZhbHVlXCIsIFwiY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBvcHRpb25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiBcImxlZnRcIixcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5sZWZ0IC8vICdlbC1pY29uLWFycm93LWxlZnQnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogZmFsc2UsXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMuY2xvc2UgLy8gJ2VsLWljb24tY2xvc2UnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogXCJyaWdodFwiLFxuICAgICAgICAgIGljb246IHVpLmljb25zLnJpZ2h0IC8vICdlbC1pY29uLWFycm93LXJpZ2h0J1xuICAgICAgICB9XG4gICAgICBdO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gc3VibWl0KHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBvcHRpb25zLFxuICAgICAgc3VibWl0XG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyIHtcbiAgLmZzLWJ1dHRvbiB7XG4gICAgcGFkZGluZzogMnB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxMHB4O1xuICAgIG1pbi1oZWlnaHQ6IGF1dG87XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkuYnV0dG9uR3JvdXAubmFtZVwiIGNsYXNzPVwiZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyXCI+XG4gICAgPGZzLWJ1dHRvblxuICAgICAgdi1mb3I9XCJvcHRpb24gb2Ygb3B0aW9uc1wiXG4gICAgICA6a2V5PVwib3B0aW9uLmljb25cIlxuICAgICAgOnR5cGU9XCJtb2RlbFZhbHVlID09PSBvcHRpb24udmFsdWUgPyAncHJpbWFyeScgOiAnZGVmYXVsdCdcIlxuICAgICAgOmljb249XCJvcHRpb24uaWNvblwiXG4gICAgICBzaXplPVwic21hbGxcIlxuICAgICAgQGNsaWNrPVwic3VibWl0KG9wdGlvbi52YWx1ZSlcIlxuICAgIC8+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3VzZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzVGFibGVDb2x1bW5zRml4ZWRDb250cm9sbGVyXCIsXG4gIHByb3BzOiB7XG4gICAgbW9kZWxWYWx1ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBcImNoYW5nZVwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICB2YWx1ZTogXCJsZWZ0XCIsXG4gICAgICAgICAgaWNvbjogdWkuaWNvbnMubGVmdCAvLyAnZWwtaWNvbi1hcnJvdy1sZWZ0J1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IGZhbHNlLFxuICAgICAgICAgIGljb246IHVpLmljb25zLmNsb3NlIC8vICdlbC1pY29uLWNsb3NlJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdmFsdWU6IFwicmlnaHRcIixcbiAgICAgICAgICBpY29uOiB1aS5pY29ucy5yaWdodCAvLyAnZWwtaWNvbi1hcnJvdy1yaWdodCdcbiAgICAgICAgfVxuICAgICAgXTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHN1Ym1pdCh2YWx1ZTogYW55KSB7XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbHVlKTtcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgb3B0aW9ucyxcbiAgICAgIHN1Ym1pdFxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXRhYmxlLWNvbHVtbnMtZml4ZWQtY29udHJvbGxlciB7XG4gIC5mcy1idXR0b24ge1xuICAgIHBhZGRpbmc6IDJweCAhaW1wb3J0YW50O1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBtaW4taGVpZ2h0OiBhdXRvO1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZHJhZ2dhYmxlIDpsaXN0PVwiY29sdW1uc1wiIGl0ZW0ta2V5PVwia2V5XCIgOm1vdmU9XCJvbkRyYWdnYWJsZU1vdmVcIj5cbiAgICA8dGVtcGxhdGUgI2l0ZW09XCJ7IGVsZW1lbnQsIGluZGV4IH1cIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICB2LXNob3c9XCJvcmlnaW5hbENvbHVtbnNNYXBbZWxlbWVudC5fX2tleV0/Ll9fc2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgIDp0aXRsZT1cImJ1aWxkVGV4dChlbGVtZW50KVwiXG4gICAgICAgICAgY2xhc3M9XCJjb21wb25lbnQtLWxpc3QtaXRlbVwiXG4gICAgICAgICAgZmxleD1cIm1haW46anVzdGlmeSBjcm9zczpjZW50ZXJcIlxuICAgICAgICAgIDppPVwiaW5kZXhcIlxuICAgICAgICA+XG4gICAgICAgICAgPGNvbXBvbmVudFxuICAgICAgICAgICAgOmlzPVwidWkuY2hlY2tib3gubmFtZVwiXG4gICAgICAgICAgICA6W3VpLmNoZWNrYm94Lm1vZGVsVmFsdWVdPVwiZWxlbWVudC5zaG93XCJcbiAgICAgICAgICAgIDpkaXNhYmxlZD1cIm9yaWdpbmFsQ29sdW1uc01hcFtlbGVtZW50Ll9fa2V5XT8uX19kaXNhYmxlZCA9PT0gdHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIml0ZW0tbGFiZWxcIlxuICAgICAgICAgICAgOnRpdGxlPVwiYnVpbGRUZXh0KGVsZW1lbnQpXCJcbiAgICAgICAgICAgIEBbYnVpbGRVcGRhdGVLZXkodWkuY2hlY2tib3gubW9kZWxWYWx1ZSldPVwidXBkYXRlQ2hlY2tlZChlbGVtZW50KVwiXG4gICAgICAgICAgICBAY2hhbmdlPVwib25DaGVja0NoYW5nZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGJ1aWxkVGV4dChlbGVtZW50KSB9fVxuICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXJpZ2h0XCI+XG4gICAgICAgICAgICA8ZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyXG4gICAgICAgICAgICAgIHYtaWY9XCJpc1Jvb3RcIlxuICAgICAgICAgICAgICB2LW1vZGVsPVwiZWxlbWVudC5maXhlZFwiXG4gICAgICAgICAgICAgIGZsZXgtYm94PVwiMFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZDItbXItMTBcIlxuICAgICAgICAgICAgICBAY2hhbmdlPVwiZml4ZWRDaGFuZ2UoaW5kZXgsICRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgZmxleC1ib3g9XCIwXCIgY2xhc3M9XCJjb21wb25lbnQtLWxpc3QtaXRlbS1oYW5kbGUgaGFuZGxlXCI+XG4gICAgICAgICAgICAgIDxmcy1pY29uIDppY29uPVwidWkuaWNvbnMuc29ydFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJtYXJnaW4tbGVmdDogMjBweDsgcGFkZGluZy1sZWZ0OiAxMHB4OyBib3JkZXItbGVmdDogMXB4IHNvbGlkICNlZWVcIj5cbiAgICAgICAgICA8ZnMtY29sdW1ucy1maWx0ZXItbmVzdC1saXN0XG4gICAgICAgICAgICB2LWlmPVwiZWxlbWVudC5jaGlsZHJlblwiXG4gICAgICAgICAgICA6Y29sdW1ucz1cImVsZW1lbnQuY2hpbGRyZW5cIlxuICAgICAgICAgICAgQGNoZWNrLWNoYW5nZWQ9XCJvbkNoZWNrQ2hhbmdlZFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2RyYWdnYWJsZT5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IHNldHVwIGxhbmc9XCJ0c1wiPlxuLy/kuI3opoHliKBcbi8vQHRzLWlnbm9yZVxuaW1wb3J0IGRyYWdnYWJsZSBmcm9tIFwidnVlZHJhZ2dhYmxlLWVzXCI7XG5pbXBvcnQgRnNUYWJsZUNvbHVtbnNGaXhlZENvbnRyb2xsZXIgZnJvbSBcIi4vZnMtdGFibGUtY29sdW1ucy1maXhlZC1jb250cm9sbGVyL2luZGV4LnZ1ZVwiO1xuaW1wb3J0IHsgQ29sdW1uc0ZpbHRlckNvbnRleHQsIENvbHVtbnNGaWx0ZXJJdGVtLCBDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSB9IGZyb20gXCIuLi8uLi8uLi9kXCI7XG5pbXBvcnQgeyBpbmplY3QgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCJAZmFzdC1jcnVkL3VpLWludGVyZmFjZVwiO1xuXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuY29uc3QgZW1pdHMgPSBkZWZpbmVFbWl0cyhbXCJjaGVjay1jaGFuZ2VkXCIsIFwiZml4ZWQtY2hhbmdlZFwiXSk7XG50eXBlIE5lc3RMaXN0UHJvcHMgPSB7XG4gIGNvbHVtbnM6IENvbHVtbnNGaWx0ZXJJdGVtW107XG4gIGlzUm9vdD86IGJvb2xlYW47XG59O1xuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8TmVzdExpc3RQcm9wcz4oKSwge1xuICBpc1Jvb3Q6IGZhbHNlXG59KTtcbmNvbnN0IHsgb3JpZ2luYWxDb2x1bW5zLCBjdXJyZW50Q29sdW1ucywgb3JpZ2luYWxDb2x1bW5zTWFwLCB0ZXh0LCBhY3RpdmUgfSA9XG4gIGluamVjdDxDb2x1bW5zRmlsdGVyQ29udGV4dD4oQ29sdW1uc0ZpbHRlclByb3ZpZGVLZXkpO1xuZnVuY3Rpb24gYnVpbGRUZXh0KGVsZW1lbnQ6IGFueSkge1xuICByZXR1cm4gZWxlbWVudC5sYWJlbCB8fCBlbGVtZW50LnRpdGxlIHx8IGVsZW1lbnQua2V5IHx8IHRleHQudmFsdWUudW5uYW1lZDtcbn1cblxuZnVuY3Rpb24gb25EcmFnZ2FibGVNb3ZlKGU6IGFueSkge1xuICBjb25zdCBkcmFnZWQgPSBlLmRyYWdnZWRDb250ZXh0LmVsZW1lbnQ7XG4gIGNvbnN0IHRhcmdldCA9IGUucmVsYXRlZENvbnRleHQuZWxlbWVudDtcbiAgY29uc3Qgc29ydGVkOiBDb2x1bW5zRmlsdGVySXRlbVtdID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiBjdXJyZW50Q29sdW1ucy52YWx1ZSkge1xuICAgIGlmIChpdGVtLmtleSA9PT0gZHJhZ2VkLmtleSkge1xuICAgICAgc29ydGVkLnB1c2godGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYgKGl0ZW0ua2V5ID09PSB0YXJnZXQua2V5KSB7XG4gICAgICBzb3J0ZWQucHVzaChkcmFnZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb3J0ZWQucHVzaChpdGVtKTtcbiAgICB9XG4gIH1cbiAgLy/nnItrZXnnmoTmjpLliJfmmK/lkKbmraPluLhcbiAgbGV0IGxlZnRJbmRleCA9IDA7XG4gIGxldCByaWdodEluZGV4ID0gc29ydGVkLmxlbmd0aCAtIDE7XG4gIGxldCBtaW5Ob3RJbmRleCA9IHNvcnRlZC5sZW5ndGggLSAxO1xuICBsZXQgbWF4Tm90SW5kZXggPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHNvcnRlZC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGl0ZW0gPSBzb3J0ZWRbaV07XG4gICAgaWYgKGl0ZW0uZml4ZWQgPT09IFwibGVmdFwiKSB7XG4gICAgICBsZWZ0SW5kZXggPSBpO1xuICAgIH0gZWxzZSBpZiAoaXRlbS5maXhlZCA9PT0gXCJyaWdodFwiKSB7XG4gICAgICByaWdodEluZGV4ID0gcmlnaHRJbmRleCA+IGkgPyBpIDogcmlnaHRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWluTm90SW5kZXggPSBtaW5Ob3RJbmRleCA+IGkgPyBpIDogbWluTm90SW5kZXg7XG4gICAgICBtYXhOb3RJbmRleCA9IG1heE5vdEluZGV4IDwgaSA/IGkgOiBtYXhOb3RJbmRleDtcbiAgICB9XG4gIH1cblxuICBpZiAobWluTm90SW5kZXggPCBsZWZ0SW5kZXggfHwgbWF4Tm90SW5kZXggPiByaWdodEluZGV4KSB7XG4gICAgLy91aS5tZXNzYWdlLmVycm9yKFwi6Z2eZml4ZWTlrZfmrrXkuI3lvpfotorov4dmaXhlZOWtl+auteeahOmhuuW6j1wiKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbmZ1bmN0aW9uIGJ1aWxkVXBkYXRlS2V5KGtleSkge1xuICByZXR1cm4gXCJ1cGRhdGU6XCIgKyBrZXk7XG59XG5cbmZ1bmN0aW9uIGZpbmRGcm9tVHJlZSh0cmVlOiBhbnlbXSwga2V5OiBzdHJpbmcpIHtcbiAgZm9yIChjb25zdCBpdGVtIG9mIHRyZWUpIHtcbiAgICBpZiAoaXRlbS5rZXkgPT09IGtleSkge1xuICAgICAgcmV0dXJuIGl0ZW07XG4gICAgfVxuICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSBmaW5kRnJvbVRyZWUoaXRlbS5jaGlsZHJlbiwga2V5KTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiB1cGRhdGVDaGVja2VkKGVsZW1lbnQ6IGFueSkge1xuICBlbGVtZW50LnNob3cgPSAhZWxlbWVudC5zaG93O1xuICAvL+e6p+iBlOmAieS4reWSjOWPlua2iFxuXG4gIGZ1bmN0aW9uIHVwZGF0ZUNoaWxkcmVuKGVsZW1lbnQ6IGFueSkge1xuICAgIGlmIChlbGVtZW50LmNoaWxkcmVuKSB7XG4gICAgICBlbGVtZW50LmNoaWxkcmVuLmZvckVhY2goKGU6IGFueSkgPT4ge1xuICAgICAgICBpZiAoIWUuX19zaG93IHx8IGUuX19kaXNhYmxlZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlLnNob3cgPSBlbGVtZW50LnNob3c7XG4gICAgICAgIHVwZGF0ZUNoaWxkcmVuKGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHVwZGF0ZUNoaWxkcmVuKGVsZW1lbnQpO1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZVBhcmVudChlbGVtZW50KSB7XG4gICAgaWYgKGVsZW1lbnQuX19wYXJlbnQpIHtcbiAgICAgIGNvbnN0IHBhcmVudCA9IGVsZW1lbnQuX19wYXJlbnQ7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHBhcmVudC5zaG93ID0gcGFyZW50LmNoaWxkcmVuLmZpbHRlcigoZTogYW55KSA9PiBlLl9fc2hvdyAmJiBlLnNob3cgPT09IHRydWUpLmxlbmd0aCA+IDA7XG4gICAgICAgIHVwZGF0ZVBhcmVudChwYXJlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICB1cGRhdGVQYXJlbnQoZWxlbWVudCk7XG59XG5mdW5jdGlvbiBvbkNoZWNrQ2hhbmdlZCgpIHtcbiAgZW1pdHMoXCJjaGVjay1jaGFuZ2VkXCIpO1xufVxuZnVuY3Rpb24gZml4ZWRDaGFuZ2UoaW5kZXg6IG51bWJlciwgdmFsdWU6IGFueSkge1xuICBlbWl0cyhcImZpeGVkLWNoYW5nZWRcIiwgaW5kZXgsIHZhbHVlKTtcbn1cbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuZHJhd2VyLm5hbWVcIlxuICAgIGNsYXNzPVwiZnMtY29sdW1ucy1maWx0ZXItbGF5b3V0LWRlZmF1bHRcIlxuICAgIDp0aXRsZT1cInRleHQudGl0bGVcIlxuICAgIHYtYmluZD1cImRyYXdlckJpbmRcIlxuICAgIGFwcGVuZC10by1ib2R5XG4gID5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJ1aS5kcmF3ZXIuaGFzQ29udGVudFdyYXAgfHwgJ2RpdidcIlxuICAgICAgY2xhc3M9XCJmcy1kcmF3ZXItd3JhcHBlciBmcy10YWJsZS1jb2x1bW5zLWZpbHRlclwiXG4gICAgICA6dGl0bGU9XCJ0ZXh0LnRpdGxlXCJcbiAgICA+XG4gICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNhcmQubmFtZVwiIHNoYWRvdz1cIm5ldmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb21wb25lbnQtLWxpc3RcIj5cbiAgICAgICAgICA8ZGl2IGtleT1cIl9fZmlyc3RfX1wiIGNsYXNzPVwiY29tcG9uZW50LS1saXN0LWl0ZW1cIiBmbGV4PVwibWFpbjpqdXN0aWZ5IGNyb3NzOmNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gOnNwYW49XCIxMlwiPlxuICAgICAgICAgICAgICA8IS0tIOWFqOmAiSDlj43pgIkgLS0+XG4gICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuY2hlY2tib3gubmFtZVwiIDppbmRldGVybWluYXRlPVwiaXNJbmRldGVybWluYXRlXCIgdi1iaW5kPVwiY2hlY2tBbGxCaW5kXCI+XG4gICAgICAgICAgICAgICAge3sgc2hvd0xlbmd0aCB9fSAvIHt7IGFsbExlbmd0aCB9fVxuICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj57eyB0ZXh0LmZpeGVkIH19IC8ge3sgdGV4dC5vcmRlciB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxmcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3RcbiAgICAgICAgICAgIDpjb2x1bW5zPVwiY3VycmVudENvbHVtbnNcIlxuICAgICAgICAgICAgOmlzLXJvb3Q9XCJ0cnVlXCJcbiAgICAgICAgICAgIEBjaGVjay1jaGFuZ2VkPVwiYWxsQ2hlY2tlZFVwZGF0ZVwiXG4gICAgICAgICAgICBAZml4ZWQtY2hhbmdlZD1cImZpeGVkQ2hhbmdlXCJcbiAgICAgICAgICA+PC9mcy1jb2x1bW5zLWZpbHRlci1uZXN0LWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8c2xvdCBuYW1lPVwiYnV0dG9uc1wiPjwvc2xvdD5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG4vL+S4jeimgeWIoFxuLy9AdHMtaWdub3JlXG5pbXBvcnQgZHJhZ2dhYmxlIGZyb20gXCJ2dWVkcmFnZ2FibGUtZXNcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uLy4uL3VzZVwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGluamVjdCwgcmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IENvbHVtbnNGaWx0ZXJQcm92aWRlS2V5LCBDb2x1bW5zRmlsdGVyQ29udGV4dCwgQ29sdW1uc0ZpbHRlckNvbnRhaW5lclByb3BzIH0gZnJvbSBcIi4uLy4uLy4uL2QvXCI7XG5pbXBvcnQgRnNDb2x1bW5zRmlsdGVyTmVzdExpc3QgZnJvbSBcIi4vZnMtY29sdW1ucy1maWx0ZXItbmVzdC1saXN0LnZ1ZVwiO1xuXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG5jb25zdCB7IG9yaWdpbmFsQ29sdW1ucywgY3VycmVudENvbHVtbnMsIHRleHQsIGFjdGl2ZSB9ID0gaW5qZWN0PENvbHVtbnNGaWx0ZXJDb250ZXh0PihDb2x1bW5zRmlsdGVyUHJvdmlkZUtleSk7XG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzPENvbHVtbnNGaWx0ZXJDb250YWluZXJQcm9wcz4oKTtcbmNvbnN0IGRyYXdlckJpbmQgPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiBtZXJnZShcbiAgICB7XG4gICAgICBbdWkuZHJhd2VyLnZpc2libGVdOiBhY3RpdmUudmFsdWUsXG4gICAgICBbXCJvblVwZGF0ZTpcIiArIHVpLmRyYXdlci52aXNpYmxlXTogKGU6IGFueSkgPT4ge1xuICAgICAgICBhY3RpdmUudmFsdWUgPSBlO1xuICAgICAgfSxcbiAgICAgIFt1aS5kcmF3ZXIud2lkdGhdOiBwcm9wcy53aWR0aCB8fCBcIjQwMHB4XCJcbiAgICB9LFxuICAgIHByb3BzLmRyYXdlclxuICApO1xufSk7XG5cbmNvbnN0IGNoZWNrQWxsID0gcmVmKGZhbHNlKTtcbi8vIOWFqOmAieWSjOWPjemAieWPkeeUn+WPmOWMluaXtuinpuWPkVxuZnVuY3Rpb24gb25DaGVja0FsbENoYW5nZSh2YWx1ZTogYW55KSB7XG4gIGNoZWNrQWxsLnZhbHVlID0gdmFsdWU7XG4gIGN1cnJlbnRDb2x1bW5zLnZhbHVlID0gY3VycmVudENvbHVtbnMudmFsdWUubWFwKChlOiBhbnkpID0+IHtcbiAgICBpZiAoIWUuX19zaG93IHx8IGUuX19kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIGU7XG4gICAgfVxuICAgIGUuc2hvdyA9IHZhbHVlO1xuICAgIHJldHVybiBlO1xuICB9KTtcbn1cblxuY29uc3QgY2hlY2tBbGxCaW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIFt1aS5jaGVja2JveC5tb2RlbFZhbHVlXTogY2hlY2tBbGwudmFsdWUsXG4gICAgW1wib25VcGRhdGU6XCIgKyB1aS5jaGVja2JveC5tb2RlbFZhbHVlXTogKHY6IGFueSkgPT4ge1xuICAgICAgb25DaGVja0FsbENoYW5nZSh2KTtcbiAgICB9XG4gIH07XG59KTtcblxuY29uc3Qgc2hvd0xlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIGN1cnJlbnRDb2x1bW5zLnZhbHVlLmZpbHRlcigoZTogYW55KSA9PiBlLl9fc2hvdyAmJiBlLnNob3cgPT09IHRydWUpLmxlbmd0aDtcbn0pO1xuY29uc3QgYWxsTGVuZ3RoID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4gY3VycmVudENvbHVtbnMudmFsdWUuZmlsdGVyKChlOiBhbnkpID0+IGUuX19zaG93KS5sZW5ndGg7XG59KTtcbmNvbnN0IGlzSW5kZXRlcm1pbmF0ZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHNob3dMZW5ndGgudmFsdWUgPiAwICYmIHNob3dMZW5ndGgudmFsdWUgPCBhbGxMZW5ndGgudmFsdWU7XG59KTtcblxud2F0Y2goXG4gICgpID0+IHtcbiAgICBjdXJyZW50Q29sdW1ucy52YWx1ZTtcbiAgfSxcbiAgKCkgPT4ge1xuICAgIGFsbENoZWNrZWRVcGRhdGUoKTtcbiAgfSxcbiAgeyBpbW1lZGlhdGU6IHRydWUgfVxuKTtcblxuLy8gZml4ZWQg5Y+Y5YyW5pe26Kem5Y+RXG5mdW5jdGlvbiBmaXhlZENoYW5nZShpbmRleDogbnVtYmVyLCB2YWx1ZTogYW55KSB7XG4gIGlmICh2YWx1ZSkge1xuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlW2luZGV4XS5zaG93ID0gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT09IFwibGVmdFwiKSB7XG4gICAgY3VycmVudENvbHVtbnMudmFsdWUudW5zaGlmdChjdXJyZW50Q29sdW1ucy52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpWzBdKTtcbiAgfVxuICBpZiAodmFsdWUgPT09IFwicmlnaHRcIikge1xuICAgIGN1cnJlbnRDb2x1bW5zLnZhbHVlLnB1c2goY3VycmVudENvbHVtbnMudmFsdWUuc3BsaWNlKGluZGV4LCAxKVswXSk7XG4gIH1cbiAgYWxsQ2hlY2tlZFVwZGF0ZSgpO1xufVxuZnVuY3Rpb24gYWxsQ2hlY2tlZFVwZGF0ZSgpIHtcbiAgY2hlY2tBbGwudmFsdWUgPSBzaG93TGVuZ3RoLnZhbHVlID09PSBhbGxMZW5ndGgudmFsdWU7XG59XG48L3NjcmlwdD5cblxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+PC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLWJ0bnNcIj5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gYnV0dG9uc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICA8ZnMtYnV0dG9uIHYtaWY9XCJpdGVtLnNob3dcIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaXRlbS5fY2xpY2soKVwiIC8+XG4gICAgICA8L3RlbXBsYXRlPlxuICAgIDwvY29tcG9uZW50PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hCdXR0b25zXCIsXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfVxuICB9LFxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIHJldHVybiB7IHVpIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1idG5zXCI+XG4gICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGJ1dHRvbnNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgPGZzLWJ1dHRvbiB2LWlmPVwiaXRlbS5zaG93XCIgdi1iaW5kPVwiaXRlbVwiIEBjbGljaz1cIml0ZW0uX2NsaWNrKClcIiAvPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU2VhcmNoQnV0dG9uc1wiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH1cbiAgfSxcbiAgc2V0dXAoKSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICByZXR1cm4geyB1aSB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoIGZzLXNlYXJjaC12MlwiPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkuY29sbGFwc2VUcmFuc2l0aW9uLm5hbWVcIj5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcbiAgICAgICAgcmVmPVwic2VhcmNoRm9ybVJlZlwiXG4gICAgICAgIDptb2RlbD1cImZvcm1EYXRhXCJcbiAgICAgICAgb25zdWJtaXQ9XCJldmVudC5wcmV2ZW50RGVmYXVsdCgpO1wiXG4gICAgICAgIHYtYmluZD1cIm9wdGlvbnNcIlxuICAgICAgICA6cnVsZXM9XCJjb21wdXRlZFJ1bGVzXCJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXG4gICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKHRydWUpXCJcbiAgICAgICAgQGNvbXBvc2l0aW9uZW5kPVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKGZhbHNlKVwiXG4gICAgICA+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJjb250YWluZXI/LmlzIHx8ICdmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHQnXCJcbiAgICAgICAgICB2LWlmPVwic2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgIHYtYmluZD1cImNvbnRhaW5lclwiXG4gICAgICAgICAgOmNvbHVtbnM9XCJjb21wdXRlZENvbHVtbnNcIlxuICAgICAgICAgIDpnZXQtY29udGV4dC1mbj1cImdldENvbnRleHRGblwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgI3NlYXJjaC1idXR0b25zPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1idXR0b25zXCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRCdXR0b25zXCIgOmtleT1cImluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGZzLWJ1dHRvbiB2LWlmPVwiaXRlbS5zaG93ICE9PSBmYWxzZVwiIHYtYmluZD1cIml0ZW1cIiBAY2xpY2s9XCJpdGVtLl9jbGljaygpXCIgLz5cbiAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgI3NlYXJjaC1sZWZ0PlxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgI3NlYXJjaC1taWRkbGU+XG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgI3NlYXJjaC1yaWdodD5cbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICA8L2NvbXBvbmVudD5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c3hcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCByZWFjdGl2ZSwgcmVmLCBSZWYsIHVucmVmLCB3YXRjaCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IGZvckVhY2gsIGNsb25lRGVlcCwgZWFjaCwga2V5cywgdW5zZXQsIHNldCwgc29ydEJ5LCBlbnRyaWVzLCBkZWJvdW5jZSwgZ2V0IGFzIExvZGFzaEdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBGc1NlYXJjaEJ1dHRvbnMgZnJvbSBcIi4vYnV0dG9ucy52dWVcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgQnV0dG9uc1Byb3BzLFxuICBTZWFyY2hFdmVudENvbnRleHQsXG4gIFNlYXJjaEl0ZW1Qcm9wcyxcbiAgVHlwZU1hcCxcbiAgVmFsdWVDaGFuZ2VDb250ZXh0LFxuICBWYWx1ZUNoYW5nZUhhbmRsZVxufSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xuXG4vKipcbiAqIOafpeivouahhue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU2VhcmNoXCIsXG4gIGNvbXBvbmVudHM6IHsgRnNTZWFyY2hCdXR0b25zIH0sXG4gIGluaGVyaXRBdHRyczogZmFsc2UsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5biD5bGA5a655ZmoXG4gICAgICovXG4gICAgY29udGFpbmVyOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIneWni+afpeivouadoeS7tlxuICAgICAqIOeCueWHu+mHjee9ru+8jOS8mumHjee9ruaIkOivpeadoeS7tlxuICAgICAqL1xuICAgIGluaXRpYWxGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOagoemqjOWQjueahOafpeivouihqOWNleaVsOaNrlxuICAgICAqL1xuICAgIHZhbGlkYXRlZEZvcm06IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6KGo5Y2V5Y+C5pWwXG4gICAgICog5pSv5oyBZWwtZm9ybSB8IGEtZm9ybeeahOWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5a2X5q616YWN572uXG4gICAgICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmjInpkq7phY3nva4s5Y+v5Lul5qC55o2ub3JkZXLmjpLluo9cbiAgICAgKiBge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19YFxuICAgICAqL1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Ye76YeN572u5ZCO5piv5ZCm56uL5Y2z6Kem5Y+R5p+l6K+iXG4gICAgICovXG4gICAgc2VhcmNoQWZ0ZXJSZXNldDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8gOWQr+iHquWKqOafpeivolxuICAgICAqL1xuICAgIGF1dG9TZWFyY2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDoh6rliqjmn6Xor6LvvIzpmLLmipborr7nva5cbiAgICAgKiDkvKBmYWxzZeWImeWFs+mXreiHquWKqOafpeivolxuICAgICAqL1xuICAgIGRlYm91bmNlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe9XG4gICAgICovXG4gICAgc2xvdHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuafpeivouahhlxuICAgICAqL1xuICAgIHNob3c6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblkK/nlKjmoKHpqoxcbiAgICAgKi9cbiAgICB2YWxpZGF0ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5Lu75oSP5YC85Y+Y5YyW5bCx6Kem5Y+R5qCh6aqMXG4gICAgICovXG4gICAgdmFsaWRhdGVPbkNoYW5nZToge1xuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIHR5cGU6IEJvb2xlYW5cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIl+eahOWuveW6puiuvue9ru+8jHNwYW49eHhcbiAgICAgKi9cbiAgICBjb2w6IHt9LFxuXG4gICAgLyoqXG4gICAgICog57uf5LiA5a2X5q6155qEZm9ybUl0ZW3lsZ7mgKdcbiAgICAgKi9cbiAgICBmb3JtSXRlbToge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tlxuICAgICAqKi9cbiAgICBcInNlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tu+8jOatpOS6i+S7tuS+m+ezu+e7n+iwg+eUqFxuICAgICAqL1xuICAgIFwiX3NlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOmHjee9ruS6i+S7tu+8jOS+m+eUqOaIt+S9v+eUqFxuICAgICAqKi9cbiAgICBcInJlc2V0XCIsXG4gICAgLyoqXG4gICAgICog6YeN572u5LqL5Lu277yM5q2k5LqL5Lu25L6b57O757uf6LCD55SoXG4gICAgICovXG4gICAgXCJfcmVzZXRcIixcbiAgICAvKipcbiAgICAgKiDmoKHpqozlpLHotKXkuovku7ZcbiAgICAgKi9cbiAgICBcInZhbGlkYXRlLWVycm9yXCIsXG4gICAgLyoqXG4gICAgICog5qCh6aqM5ZCO55qE6KGo5Y2V5pWw5o2u5Y+Y5YyWXG4gICAgICovXG4gICAgXCJ1cGRhdGU6dmFsaWRhdGVkRm9ybVwiXG4gIF0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCB7IG1lcmdlIH0gPSB1c2VNZXJnZSgpO1xuICAgIGNvbnN0IGRvTWVyZ2UgPSBtZXJnZTtcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQsIEFzeW5jQ29tcHV0ZVZhbHVlLCBDb21wdXRlVmFsdWUgfSA9IHVzZUNvbXB1dGUoKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdnVlL25vLXNldHVwLXByb3BzLWRlc3RydWN0dXJlXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiAoaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlIHx8IGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBDb21wdXRlVmFsdWUpKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKFwic2VhcmNoLnZhbHVl6YWN572u5LiN5pSv5oyBQ29tcHV0ZVZhbHVlL0FzeW5jQ29tcHV0Zeexu+Wei+eahOWKqOaAgeiuoeeul1wiKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGNyZWF0ZUluaXRpYWxGb3JtKCk6IGFueSB7XG4gICAgICAvL+m7mOiupOWAvFxuICAgICAgY29uc3QgZm9ybTogYW55ID0ge307XG5cbiAgICAgIGZvckVhY2gocHJvcHMuY29sdW1ucywgKGNvbHVtbiwga2V5KSA9PiB7XG4gICAgICAgIGlmIChjb2x1bW4udmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZWYWx1ZSA9IHVucmVmKGNvbHVtbi52YWx1ZSk7XG4gICAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5zaG93ICE9PSBmYWxzZSAmJiBjb2x1bW4uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZSkge1xuICAgICAgICAgIC8v6buY6K6k5YC8XG4gICAgICAgICAgZm9ybVtrZXldID0gZGVmVmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gY2xvbmVEZWVwKG1lcmdlKHt9LCBwcm9wcy5pbml0aWFsRm9ybSwgZm9ybSkpO1xuICAgIH1cblxuICAgIGNvbnN0IGZvcm1EYXRhID0gcmVhY3RpdmUoY3JlYXRlSW5pdGlhbEZvcm0oKSk7XG5cbiAgICBsZXQgYXV0b1NlYXJjaDogYW55ID0gbnVsbDtcblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uczogUmVmPFR5cGVNYXA8U2VhcmNoSXRlbVByb3BzPj4gPSBkb0NvbXB1dGVkKFxuICAgICAgKCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcbiAgICAgIH0sXG4gICAgICBnZXRDb250ZXh0Rm4sXG4gICAgICBudWxsLFxuICAgICAgKGNvbHVtbnM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBmb3JtSXRlbSA9IGNsb25lRGVlcChwcm9wcy5mb3JtSXRlbSB8fCB7fSk7XG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICBtZXJnZShpdGVtLCBmb3JtSXRlbSwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBjb2x1bW5zID0gbWVyZ2UoZm9ybUl0ZW0sIGNvbHVtbnMpO1xuICAgICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgICAgLy/lpoLmnpzlhbPpl612YWxpZGF0ZeWImeWOu+aOiXJ1bGVzXG4gICAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZXM7XG4gICAgICAgICAgICBkZWxldGUgaXRlbS5ydWxlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWQiOW5tmNvbFxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XG4gICAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAodikgPT4ge1xuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL2NlbGxSZW5kZXJcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGl0ZW0uX2NlbGxSZW5kZXIgPSAoKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY2VsbFJlbmRlcihpdGVtKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KTtcblxuICAgICAgICAvL+Wtl+auteaOkuW6j1xuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcbiAgICAgICAgZm9yRWFjaChjb2x1bW5zLCAodiwga2V5KSA9PiB7XG4gICAgICAgICAgdi5fa2V5ID0ga2V5O1xuICAgICAgICAgIHNvcnRBcnIucHVzaCh2KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNvcnRBcnIgPSBzb3J0Qnkoc29ydEFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICByZXR1cm4gaXRlbS5vcmRlciA/PyBDb25zdGFudHMub3JkZXJEZWZhdWx0O1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBzb3J0ZWRDb2x1bW5zOiB7XG4gICAgICAgICAgW2tleTogc3RyaW5nXTogU2VhcmNoSXRlbVByb3BzO1xuICAgICAgICB9ID0ge307XG5cbiAgICAgICAgc29ydEFyci5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgbGV0IF9rZXkgPSBpdGVtLl9rZXk7XG4gICAgICAgICAgZGVsZXRlIGl0ZW0uX2tleTtcbiAgICAgICAgICBzb3J0ZWRDb2x1bW5zW19rZXldID0gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBzb3J0ZWRDb2x1bW5zO1xuICAgICAgfVxuICAgICk7XG5cbiAgICBmdW5jdGlvbiBvbkZvcm1WYWxpZGF0ZWQoKSB7XG4gICAgICBjb25zdCB2YWxpZGF0ZWRGb3JtID0gY2xvbmVEZWVwKGZvcm1EYXRhKTtcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOnZhbGlkYXRlZEZvcm1cIiwgdmFsaWRhdGVkRm9ybSk7XG4gICAgfVxuXG4gICAgd2F0Y2goXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy52YWxpZGF0ZWRGb3JtO1xuICAgICAgfSxcbiAgICAgICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1EYXRhKSB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2tleV07XG4gICAgICAgIH1cbiAgICAgICAgbWVyZ2UoZm9ybURhdGEsIHZhbHVlIHx8IHt9KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGRlZXA6IHRydWVcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgZ2V0ID0gKGZvcm06IGFueSwga2V5OiBhbnkpID0+IHtcbiAgICAgIHJldHVybiBMb2Rhc2hHZXQoZm9ybSwga2V5KTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc3BsaXRLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgIGlmIChrZXkgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgICAgcmV0dXJuIGtleS5zcGxpdChcIi5cIik7XG4gICAgICB9XG4gICAgICByZXR1cm4ga2V5O1xuICAgIH1cblxuICAgIC8vIGNvbnN0IGRlYm91bmNlVmFsaWRhdGUgPSBkZWJvdW5jZShhc3luYyAoKSA9PiB7XG4gICAgLy8gICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgLy8gICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgIC8vICAgfVxuICAgIC8vIH0sIDUwMCk7XG5cbiAgICBmdW5jdGlvbiBjZWxsUmVuZGVyKGl0ZW06IGFueSkge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIF9vblVwZGF0ZU1vZGVsVmFsdWUoJGV2ZW50OiBhbnkpIHtcbiAgICAgICAgLy8gYXdhaXQgZGVib3VuY2VWYWxpZGF0ZSgpO1xuICAgICAgICBvblZhbHVlQ2hhbmdlZCgkZXZlbnQsIGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBfb25JbnB1dCgpIHtcbiAgICAgICAgb25JbnB1dChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gb25LZXl1cChpdGVtOiBhbnksIGtleTogYW55KSB7XG4gICAgICAgIGlmIChrZXkuY29kZSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiZW50ZXJcIikge1xuICAgICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IGRlZmF1bHRTbG90OiBhbnkgPSBudWxsO1xuICAgICAgaWYgKHByb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XSkge1xuICAgICAgICBkZWZhdWx0U2xvdCA9IDxmcy1zbG90LXJlbmRlciBzbG90cz17cHJvcHMuc2xvdHNbXCJzZWFyY2hfXCIgKyBrZXldfSBzY29wZT17YnVpbGRGaWVsZENvbnRleHQoa2V5KX0gLz47XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0ucmVuZGVyKSB7XG4gICAgICAgIGRlZmF1bHRTbG90ID0gPGZzLXJlbmRlciByZW5kZXItZnVuYz17aXRlbS5yZW5kZXJ9IHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfSAvPjtcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5jb21wb25lbnQgJiYgaXRlbS5jb21wb25lbnQuc2hvdyAhPT0gZmFsc2UpIHtcbiAgICAgICAgZGVmYXVsdFNsb3QgPSAoXG4gICAgICAgICAgPGZzLWNvbXBvbmVudC1yZW5kZXJcbiAgICAgICAgICAgIHJlZj17KHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgbW9kZWwtdmFsdWU9e2dldChmb3JtRGF0YSwga2V5KX1cbiAgICAgICAgICAgIG9uS2V5dXA9eygkZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBvbktleXVwKGl0ZW0sICRldmVudCk7XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgey4uLml0ZW0uY29tcG9uZW50fVxuICAgICAgICAgICAgc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9XG4gICAgICAgICAgICBvblVwZGF0ZTptb2RlbFZhbHVlPXtfb25VcGRhdGVNb2RlbFZhbHVlfVxuICAgICAgICAgICAgb25JbnB1dD17X29uSW5wdXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3BsaXRlZEtleSA9IHNwbGl0S2V5KGtleSk7XG5cbiAgICAgIHJldHVybiB1aS5mb3JtSXRlbS5yZW5kZXIoe1xuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgbGFiZWw6IGl0ZW0udGl0bGUsXG4gICAgICAgICAgW3VpLmZvcm1JdGVtLnByb3BdOiBzcGxpdGVkS2V5LFxuICAgICAgICAgIHBhdGg6IGtleSxcbiAgICAgICAgICBydWxlUGF0aDoga2V5XG4gICAgICAgIH0sXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0U2xvdDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaEZvcm1SZWYgPSByZWYoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWZzOiBSZWYgPSByZWYoe30pO1xuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gY29tcG9uZW50UmVuZGVyUmVmcy52YWx1ZVtrZXldO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlZihrZXk6IHN0cmluZyk6IGFueSB7XG4gICAgICByZXR1cm4gZ2V0Q29tcG9uZW50UmVuZGVyUmVmKGtleSk/LmdldFRhcmdldFJlZigpO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpOiBTZWFyY2hFdmVudENvbnRleHQge1xuICAgICAgcmV0dXJuIHsgZm9ybTogZm9ybURhdGEsIHZhbGlkYXRlZEZvcm06IHByb3BzLnZhbGlkYXRlZEZvcm0sIGdldENvbXBvbmVudFJlZiwgZG9TZWFyY2gsIGRvUmVzZXQsIGRvVmFsaWRhdGUgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBidWlsZEZpZWxkQ29udGV4dChrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIHsgLi4uZ2V0Q29udGV4dEZuKCksIGtleSwgdmFsdWU6IGdldChmb3JtRGF0YSwga2V5KSB9O1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvVmFsaWRhdGUoc2lsZW50OiBib29sZWFuID0gZmFsc2UsIHRyaWdnZXI6IHN0cmluZyA9IFwic2VhcmNoXCIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgIGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgICAgY3R4LmVtaXQoXCJ2YWxpZGF0ZS1lcnJvclwiLCB7IC4uLmdldENvbnRleHRGbigpLCBlcnJvcjogZSwgdHJpZ2dlciB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1NlYXJjaCgpIHtcbiAgICAgIGlmIChhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxuICAgICAgICBhdXRvU2VhcmNoLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgICBjdHguZW1pdChcIl9zZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICBjdHguZW1pdChcInNlYXJjaFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9SZXNldCgpIHtcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtRGF0YSk7XG4gICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXNSZXQpIHtcbiAgICAgICAgY29uc3QgaW5pdGlhbFZhbHVlID0gZ2V0KGluaXRpYWxGb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIGlmIChpbml0aWFsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICAgIHVuc2V0KGZvcm1EYXRhLCBlbnRyeVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KGZvcm1EYXRhLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYXdhaXQgZG9WYWxpZGF0ZSgpKSB7XG4gICAgICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgICBpZiAocHJvcHMucmVzZXQpIHtcbiAgICAgICAgICBwcm9wcy5yZXNldChnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g6KGo5Y2V6YeN572u5LqL5Lu2XG4gICAgICAgIGN0eC5lbWl0KFwiX3Jlc2V0XCIsIGdldENvbnRleHRGbigpKTtcbiAgICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XG4gICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ0bnM6IGFueSA9IFtdO1xuICAgICAgY29uc3QgZGVmQnRuT3B0aW9uczogQnV0dG9uc1Byb3BzPFNlYXJjaEV2ZW50Q29udGV4dD4gPSB7XG4gICAgICAgIHNlYXJjaDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIHRleHQ6IHQoXCJmcy5zZWFyY2guc2VhcmNoLnRleHRcIikgLy8gJ+afpeivoicsXG4gICAgICAgIH0sXG4gICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBkb1Jlc2V0KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxuICAgICAgICAgIG9yZGVyOiAyXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBtZXJnZShkZWZCdG5PcHRpb25zLCBwcm9wcy5idXR0b25zKTtcbiAgICAgIGZvciAobGV0IGtleSBpbiBkZWZCdG5PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGJ0biA9IGRlZkJ0bk9wdGlvbnNba2V5XTtcbiAgICAgICAgYnRuLl9jbGljayA9ICgpID0+IHtcbiAgICAgICAgICBidG4uY2xpY2soZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICB9O1xuICAgICAgICBidG5zLnB1c2goYnRuKTtcbiAgICAgIH1cblxuICAgICAgYnRucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBidG5zO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gaW5pdEF1dG9TZWFyY2goKSB7XG4gICAgICBpZiAocHJvcHMuYXV0b1NlYXJjaCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8g5p6E5bu66Ziy5oqW5p+l6K+i5Ye95pWwXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XG4gICAgICAgIGxldCB3YWl0ID0gcHJvcHMuZGVib3VuY2U/LndhaXQgfHwgNTAwO1xuICAgICAgICBhdXRvU2VhcmNoID0gZGVib3VuY2UoZG9TZWFyY2gsIHdhaXQsIHByb3BzLmRlYm91bmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0QXV0b1NlYXJjaCgpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcbiAgICAgIHJldHVybiBmb3JtRGF0YTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRWYWxpZGF0ZWRGb3JtKCkge1xuICAgICAgcmV0dXJuIHByb3BzLnZhbGlkYXRlZEZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572uZm9ybeWAvFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldEZvcm0obmV3Rm9ybTogYW55LCBtZXJnZSA9IHRydWUpIHtcbiAgICAgIGlmICghbWVyZ2UpIHtcbiAgICAgICAgZWFjaChrZXlzKGZvcm1EYXRhKSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBkZWxldGUgZm9ybURhdGFbaXRlbV07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZG9NZXJnZShmb3JtRGF0YSwgbmV3Rm9ybSk7XG4gICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dEV2ZW50RGlzYWJsZWQgPSByZWYoZmFsc2UpO1xuXG4gICAgY29uc3QgZG9BdXRvU2VhcmNoID0gKCkgPT4ge1xuICAgICAgbG9nZ2VyLmRlYnVnKFwiZG8gYXV0byBzZWFyY2gsaW5wdXRFdmVudERpc2FibGVkOlwiLCBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUpO1xuICAgICAgaWYgKGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSAhPT0gdHJ1ZSAmJiBhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivolxuICAgICAgICBhdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IG9uSW5wdXQgPSAoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJpbnB1dFwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG4gICAgLy8g6L6T5YWl5rOV55uR5ZCsXG4gICAgY29uc3QgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkID0gKGRpc2FibGVkOiBib29sZWFuKSA9PiB7XG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgPSBkaXNhYmxlZDtcbiAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgIH07XG5cbiAgICBhc3luYyBmdW5jdGlvbiBvblZhbHVlQ2hhbmdlZCh2YWx1ZTogYW55LCBpdGVtOiBTZWFyY2hJdGVtUHJvcHMpIHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgc2V0KGZvcm1EYXRhLCBrZXksIHZhbHVlKTtcblxuICAgICAgY29uc3Qgc2lsZW50ID0gcHJvcHMudmFsaWRhdGVPbkNoYW5nZVNpbGVudDtcbiAgICAgIC8vIGlmIChwcm9wcy52YWxpZGF0ZU9uQ2hhbmdlICYmIChhd2FpdCBkb1ZhbGlkYXRlKHNpbGVudCwgXCJjaGFuZ2VcIikpKSB7XG4gICAgICAvLyAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgICAgLy8gfVxuXG4gICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSkge1xuICAgICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtRGF0YVtrZXldO1xuICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSBnZXRDb21wb25lbnRSZWYoa2V5KTtcbiAgICAgICAgY29uc3QgdmFsdWVDaGFuZ2U6IFZhbHVlQ2hhbmdlSGFuZGxlID1cbiAgICAgICAgICBpdGVtLnZhbHVlQ2hhbmdlIGluc3RhbmNlb2YgRnVuY3Rpb24gPyBpdGVtLnZhbHVlQ2hhbmdlIDogaXRlbS52YWx1ZUNoYW5nZS5oYW5kbGU7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gZ2V0Q29udGV4dEZuKCk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlQ29udGV4dDogVmFsdWVDaGFuZ2VDb250ZXh0ID0ge1xuICAgICAgICAgIGluZGV4OiAwLFxuICAgICAgICAgIHJvdzogc2NvcGUuZm9ybSxcbiAgICAgICAgICBmb3JtOiBzY29wZS5mb3JtLFxuICAgICAgICAgIC4uLnNjb3BlLFxuICAgICAgICAgIGtleSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBjb21wb25lbnRSZWYsXG4gICAgICAgICAgaW1tZWRpYXRlOiBmYWxzZSxcbiAgICAgICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICAgICAgbW9kZTogXCJzZWFyY2hcIlxuICAgICAgICB9O1xuICAgICAgICB2YWx1ZUNoYW5nZSh2YWx1ZUNoYW5nZUNvbnRleHQpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETyDnlLHkuo52YWxpZGF0ZWRGb3JtIOWPkeWwhOWHuuWOu+WQju+8jOS8muabtOaWsGZvcm1EYXRh55qE5pWw5o2u77yM5omA5Lul6KaB5pS+5ZyodmFsdWVDaGFuZ2XlkI7pnaIs5LiN54S25Lya5q275b6q546vXG4gICAgICBpZiAocHJvcHMudmFsaWRhdGVPbkNoYW5nZSAmJiAoYXdhaXQgZG9WYWxpZGF0ZShzaWxlbnQsIFwiY2hhbmdlXCIpKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09IG51bGwgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gdHJ1ZSB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImNoYW5nZVwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkUnVsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xuICAgIH0pO1xuXG4gICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldCxcbiAgICAgIHVpLFxuICAgICAgb25WYWx1ZUNoYW5nZWQsXG4gICAgICBkb1ZhbGlkYXRlLFxuICAgICAgZG9TZWFyY2gsXG4gICAgICBkb1Jlc2V0LFxuICAgICAgZm9ybURhdGEsXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWZzLFxuICAgICAgZ2V0Q29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgZ2V0Rm9ybSxcbiAgICAgIGdldFZhbGlkYXRlZEZvcm0sXG4gICAgICBzZXRGb3JtLFxuICAgICAgc2VhcmNoRm9ybVJlZixcbiAgICAgIG9uSW5wdXQsXG4gICAgICBpbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQsXG4gICAgICBjb21wdXRlZENvbHVtbnMsXG4gICAgICBjb21wdXRlZEJ1dHRvbnMsXG4gICAgICBjb21wdXRlZFJ1bGVzLFxuICAgICAgYnVpbGRGaWVsZENvbnRleHQsXG4gICAgICBnZXRDb250ZXh0Rm5cbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtc2VhcmNoIHtcbiAgJi5mcy1zZWFyY2gtdjIge1xuICAgIC8vZGlzcGxheTogZmxleDtcbiAgICAvL2ZsZXgtd3JhcDogbm93cmFwO1xuICAgIC5mcy1zZWFyY2gtYnV0dG9ucyB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgIH1cbiAgICAuc2VhcmNoLWxlZnQge1xuICAgIH1cblxuICAgIC5zZWFyY2gtcmlnaHQge1xuICAgICAgZmxleDogMTtcbiAgICB9XG5cbiAgICAuYW50LWZvcm0taW5saW5lIHtcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICB9XG5cbiAgICAuZnMtc2VhcmNoLWZvcm0ge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG5cbiAgICAgIC5hbnQtcGlja2VyLFxuICAgICAgLmFudC1zZWxlY3QsXG4gICAgICAubi1kYXRlLXBpY2tlcixcbiAgICAgIC5lbC1zZWxlY3QsXG4gICAgICAuZWwtZGF0ZS1lZGl0b3Ige1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cblxuICAgICAgLmVsLXJhbmdlLWVkaXRvci5lbC1pbnB1dF9fd3JhcHBlciB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICB9XG5cbiAgICAgIC5hbnQtYnRuLWxvYWRpbmctaWNvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAycHg7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgfVxuXG4gICAgICAmLmVsLWZvcm0tLWxhYmVsLXRvcCB7XG4gICAgICAgIC5lbC1mb3JtLWl0ZW0ge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5lbC1mb3JtLWl0ZW0ge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cblxuICAgICAgJi5lbC1mb3JtLS1pbmxpbmUge1xuICAgICAgICAuZWwtaW5wdXQge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIC8vIGFudGR2XG4gICAgICAuYW50LWZvcm0taXRlbS1leHBsYWluLFxuICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBib3R0b206IDNweDtcbiAgICAgICAgcmlnaHQ6IDhweDtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIHRvcDogYXV0bztcbiAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgfVxuXG4gICAgICAuZWwtZm9ybS1pdGVtX19lcnJvciB7XG4gICAgICAgIGJvdHRvbTogMTBweDtcbiAgICAgIH1cblxuICAgICAgJjpob3ZlciB7XG4gICAgICAgIC5hbnQtZm9ybS1pdGVtLWV4cGxhaW4sXG4gICAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcbiAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcbiAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNTc1cHgpIHtcbiAgLmZzLXNlYXJjaCB7XG4gICAgLmZzLXNlYXJjaC1mb3JtIHtcbiAgICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgZmxleDogMTAwJTtcbiAgICAgICAgLy9hbnRkdlxuICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICAgICAgd2lkdGg6IDEyMHB4O1xuICAgICAgICAgIGZsZXg6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaCBmcy1zZWFyY2gtdjJcIj5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbGxhcHNlVHJhbnNpdGlvbi5uYW1lXCI+XG4gICAgICA8Y29tcG9uZW50XG4gICAgICAgIDppcz1cInVpLmZvcm0ubmFtZVwiXG4gICAgICAgIHJlZj1cInNlYXJjaEZvcm1SZWZcIlxuICAgICAgICA6bW9kZWw9XCJmb3JtRGF0YVwiXG4gICAgICAgIG9uc3VibWl0PVwiZXZlbnQucHJldmVudERlZmF1bHQoKTtcIlxuICAgICAgICB2LWJpbmQ9XCJvcHRpb25zXCJcbiAgICAgICAgOnJ1bGVzPVwiY29tcHV0ZWRSdWxlc1wiXG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWZvcm1cIlxuICAgICAgICBAY29tcG9zaXRpb25zdGFydD1cImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCh0cnVlKVwiXG4gICAgICAgIEBjb21wb3NpdGlvbmVuZD1cImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZChmYWxzZSlcIlxuICAgICAgPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwiY29udGFpbmVyPy5pcyB8fCAnZnMtc2VhcmNoLWxheW91dC1kZWZhdWx0J1wiXG4gICAgICAgICAgdi1pZj1cInNob3cgIT09IGZhbHNlXCJcbiAgICAgICAgICB2LWJpbmQ9XCJjb250YWluZXJcIlxuICAgICAgICAgIDpjb2x1bW5zPVwiY29tcHV0ZWRDb2x1bW5zXCJcbiAgICAgICAgICA6Z2V0LWNvbnRleHQtZm49XCJnZXRDb250ZXh0Rm5cIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlICNzZWFyY2gtYnV0dG9ucz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYnV0dG9uc1wiPlxuICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkQnV0dG9uc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgICAgICAgIDxmcy1idXR0b24gdi1pZj1cIml0ZW0uc2hvdyAhPT0gZmFsc2VcIiB2LWJpbmQ9XCJpdGVtXCIgQGNsaWNrPVwiaXRlbS5fY2xpY2soKVwiIC8+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiICNzZWFyY2gtbGVmdD5cbiAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiIDpzY29wZT1cImdldENvbnRleHRGbigpXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiICNzZWFyY2gtbWlkZGxlPlxuICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiICNzZWFyY2gtcmlnaHQ+XG4gICAgICAgICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9jb21wb25lbnQ+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHN4XCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgcmVhY3RpdmUsIHJlZiwgUmVmLCB1bnJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBmb3JFYWNoLCBjbG9uZURlZXAsIGVhY2gsIGtleXMsIHVuc2V0LCBzZXQsIHNvcnRCeSwgZW50cmllcywgZGVib3VuY2UsIGdldCBhcyBMb2Rhc2hHZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwubG9nXCI7XG5pbXBvcnQgRnNTZWFyY2hCdXR0b25zIGZyb20gXCIuL2J1dHRvbnMudnVlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIEJ1dHRvbnNQcm9wcyxcbiAgU2VhcmNoRXZlbnRDb250ZXh0LFxuICBTZWFyY2hJdGVtUHJvcHMsXG4gIFR5cGVNYXAsXG4gIFZhbHVlQ2hhbmdlQ29udGV4dCxcbiAgVmFsdWVDaGFuZ2VIYW5kbGVcbn0gZnJvbSBcIi4uLy4uL2RcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtdWlcIjtcbmltcG9ydCB7IHVzZU1lcmdlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtbWVyZ2VcIjtcblxuLyoqXG4gKiDmn6Xor6LmoYbnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1NlYXJjaFwiLFxuICBjb21wb25lbnRzOiB7IEZzU2VhcmNoQnV0dG9ucyB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOW4g+WxgOWuueWZqFxuICAgICAqL1xuICAgIGNvbnRhaW5lcjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDliJ3lp4vmn6Xor6LmnaHku7ZcbiAgICAgKiDngrnlh7vph43nva7vvIzkvJrph43nva7miJDor6XmnaHku7ZcbiAgICAgKi9cbiAgICBpbml0aWFsRm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmoKHpqozlkI7nmoTmn6Xor6LooajljZXmlbDmja5cbiAgICAgKi9cbiAgICB2YWxpZGF0ZWRGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOWNleWPguaVsFxuICAgICAqIOaUr+aMgWVsLWZvcm0gfCBhLWZvcm3nmoTlsZ7mgKdcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeivouWtl+autemFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uLOWPr+S7peagueaNrm9yZGVy5o6S5bqPXG4gICAgICogYHtzZWFyY2g6ey4uLkZzQnV0dG9ufSxyZXNldDp7Li4uRnNCdXR0b259fWBcbiAgICAgKi9cbiAgICBidXR0b25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOeCueWHu+mHjee9ruWQjuaYr+WQpueri+WNs+inpuWPkeafpeivolxuICAgICAqL1xuICAgIHNlYXJjaEFmdGVyUmVzZXQ6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblvIDlkK/oh6rliqjmn6Xor6JcbiAgICAgKi9cbiAgICBhdXRvU2VhcmNoOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5p+l6K+i77yM6Ziy5oqW6K6+572uXG4gICAgICog5LygZmFsc2XliJnlhbPpl63oh6rliqjmn6Xor6JcbiAgICAgKi9cbiAgICBkZWJvdW5jZToge1xuICAgICAgdHlwZTogW0Jvb2xlYW4sIE9iamVjdF0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaPkuanvVxuICAgICAqL1xuICAgIHNsb3RzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrmn6Xor6LmoYZcbiAgICAgKi9cbiAgICBzaG93OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5ZCv55So5qCh6aqMXG4gICAgICovXG4gICAgdmFsaWRhdGU6IHtcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuS7u+aEj+WAvOWPmOWMluWwseinpuWPkeagoemqjFxuICAgICAqL1xuICAgIHZhbGlkYXRlT25DaGFuZ2U6IHtcbiAgICAgIGRlZmF1bHQ6IHRydWUsXG4gICAgICB0eXBlOiBCb29sZWFuXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDliJfnmoTlrr3luqborr7nva7vvIxzcGFuPXh4XG4gICAgICovXG4gICAgY29sOiB7fSxcblxuICAgIC8qKlxuICAgICAqIOe7n+S4gOWtl+auteeahGZvcm1JdGVt5bGe5oCnXG4gICAgICovXG4gICAgZm9ybUl0ZW06IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDmn6Xor6Lkuovku7ZcbiAgICAgKiovXG4gICAgXCJzZWFyY2hcIixcbiAgICAvKipcbiAgICAgKiDmn6Xor6Lkuovku7bvvIzmraTkuovku7bkvpvns7vnu5/osIPnlKhcbiAgICAgKi9cbiAgICBcIl9zZWFyY2hcIixcbiAgICAvKipcbiAgICAgKiDph43nva7kuovku7bvvIzkvpvnlKjmiLfkvb/nlKhcbiAgICAgKiovXG4gICAgXCJyZXNldFwiLFxuICAgIC8qKlxuICAgICAqIOmHjee9ruS6i+S7tu+8jOatpOS6i+S7tuS+m+ezu+e7n+iwg+eUqFxuICAgICAqL1xuICAgIFwiX3Jlc2V0XCIsXG4gICAgLyoqXG4gICAgICog5qCh6aqM5aSx6LSl5LqL5Lu2XG4gICAgICovXG4gICAgXCJ2YWxpZGF0ZS1lcnJvclwiLFxuICAgIC8qKlxuICAgICAqIOagoemqjOWQjueahOihqOWNleaVsOaNruWPmOWMllxuICAgICAqL1xuICAgIFwidXBkYXRlOnZhbGlkYXRlZEZvcm1cIlxuICBdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBkb01lcmdlID0gbWVyZ2U7XG4gICAgY29uc3QgeyBkb0NvbXB1dGVkLCBBc3luY0NvbXB1dGVWYWx1ZSwgQ29tcHV0ZVZhbHVlIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHZ1ZS9uby1zZXR1cC1wcm9wcy1kZXN0cnVjdHVyZVxuICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgKGl0ZW0udmFsdWUgaW5zdGFuY2VvZiBBc3luY0NvbXB1dGVWYWx1ZSB8fCBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQ29tcHV0ZVZhbHVlKSkge1xuICAgICAgICBsb2dnZXIud2FybihcInNlYXJjaC52YWx1ZemFjee9ruS4jeaUr+aMgUNvbXB1dGVWYWx1ZS9Bc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpOiBhbnkge1xuICAgICAgLy/pu5jorqTlgLxcbiAgICAgIGNvbnN0IGZvcm06IGFueSA9IHt9O1xuXG4gICAgICBmb3JFYWNoKHByb3BzLmNvbHVtbnMsIChjb2x1bW4sIGtleSkgPT4ge1xuICAgICAgICBpZiAoY29sdW1uLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihjb2x1bW4udmFsdWUpO1xuICAgICAgICBpZiAoZGVmVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb2x1bW4uc2hvdyAhPT0gZmFsc2UgJiYgY29sdW1uLmNvbXBvbmVudD8uc2hvdyAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAvL+m7mOiupOWAvFxuICAgICAgICAgIGZvcm1ba2V5XSA9IGRlZlZhbHVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGNsb25lRGVlcChtZXJnZSh7fSwgcHJvcHMuaW5pdGlhbEZvcm0sIGZvcm0pKTtcbiAgICB9XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IHJlYWN0aXZlKGNyZWF0ZUluaXRpYWxGb3JtKCkpO1xuXG4gICAgbGV0IGF1dG9TZWFyY2g6IGFueSA9IG51bGw7XG5cbiAgICBjb25zdCBjb21wdXRlZENvbHVtbnM6IFJlZjxUeXBlTWFwPFNlYXJjaEl0ZW1Qcm9wcz4+ID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BzLmNvbHVtbnM7XG4gICAgICB9LFxuICAgICAgZ2V0Q29udGV4dEZuLFxuICAgICAgbnVsbCxcbiAgICAgIChjb2x1bW5zOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgZm9ybUl0ZW0gPSBjbG9uZURlZXAocHJvcHMuZm9ybUl0ZW0gfHwge30pO1xuICAgICAgICBmb3JFYWNoKGNvbHVtbnMsIChpdGVtKSA9PiB7XG4gICAgICAgICAgbWVyZ2UoaXRlbSwgZm9ybUl0ZW0sIGl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gY29sdW1ucyA9IG1lcmdlKGZvcm1JdGVtLCBjb2x1bW5zKTtcbiAgICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICAgIC8v5aaC5p6c5YWz6ZetdmFsaWRhdGXliJnljrvmjolydWxlc1xuICAgICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnJ1bGVzO1xuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyDlkIjlubZjb2xcbiAgICAgICAgaWYgKHByb3BzLmNvbCkge1xuICAgICAgICAgIGZvckVhY2goY29sdW1ucywgKHYpID0+IHtcbiAgICAgICAgICAgIHYuY29sID0gbWVyZ2Uoe30sIHByb3BzLmNvbCwgdi5jb2wpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9jZWxsUmVuZGVyXG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpdGVtLl9jZWxsUmVuZGVyID0gKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGNlbGxSZW5kZXIoaXRlbSk7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy/lrZfmrrXmjpLluo9cbiAgICAgICAgbGV0IHNvcnRBcnI6IFNlYXJjaEl0ZW1Qcm9wc1tdID0gW107XG4gICAgICAgIGZvckVhY2goY29sdW1ucywgKHYsIGtleSkgPT4ge1xuICAgICAgICAgIHYuX2tleSA9IGtleTtcbiAgICAgICAgICBzb3J0QXJyLnB1c2godik7XG4gICAgICAgIH0pO1xuICAgICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uczoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IFNlYXJjaEl0ZW1Qcm9wcztcbiAgICAgICAgfSA9IHt9O1xuXG4gICAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XG4gICAgICAgICAgc29ydGVkQ29sdW1uc1tfa2V5XSA9IGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc29ydGVkQ29sdW1ucztcbiAgICAgIH1cbiAgICApO1xuXG4gICAgZnVuY3Rpb24gb25Gb3JtVmFsaWRhdGVkKCkge1xuICAgICAgY29uc3QgdmFsaWRhdGVkRm9ybSA9IGNsb25lRGVlcChmb3JtRGF0YSk7XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTp2YWxpZGF0ZWRGb3JtXCIsIHZhbGlkYXRlZEZvcm0pO1xuICAgIH1cblxuICAgIHdhdGNoKFxuICAgICAgKCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJvcHMudmFsaWRhdGVkRm9ybTtcbiAgICAgIH0sXG4gICAgICAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtRGF0YSkge1xuICAgICAgICAgIGRlbGV0ZSBmb3JtRGF0YVtrZXldO1xuICAgICAgICB9XG4gICAgICAgIG1lcmdlKGZvcm1EYXRhLCB2YWx1ZSB8fCB7fSk7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBkZWVwOiB0cnVlXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGdldCA9IChmb3JtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gTG9kYXNoR2V0KGZvcm0sIGtleSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHNwbGl0S2V5KGtleTogc3RyaW5nKSB7XG4gICAgICBpZiAoa2V5ID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGtleS5pbmRleE9mKFwiLlwiKSA+PSAwKSB7XG4gICAgICAgIHJldHVybiBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG5cbiAgICAvLyBjb25zdCBkZWJvdW5jZVZhbGlkYXRlID0gZGVib3VuY2UoYXN5bmMgKCkgPT4ge1xuICAgIC8vICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xuICAgIC8vICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAvLyAgIH1cbiAgICAvLyB9LCA1MDApO1xuXG4gICAgZnVuY3Rpb24gY2VsbFJlbmRlcihpdGVtOiBhbnkpIHtcbiAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuXG4gICAgICBhc3luYyBmdW5jdGlvbiBfb25VcGRhdGVNb2RlbFZhbHVlKCRldmVudDogYW55KSB7XG4gICAgICAgIC8vIGF3YWl0IGRlYm91bmNlVmFsaWRhdGUoKTtcbiAgICAgICAgb25WYWx1ZUNoYW5nZWQoJGV2ZW50LCBpdGVtKTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gX29uSW5wdXQoKSB7XG4gICAgICAgIG9uSW5wdXQoaXRlbSk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIG9uS2V5dXAoaXRlbTogYW55LCBrZXk6IGFueSkge1xuICAgICAgICBpZiAoa2V5LmNvZGUgPT09IFwiRW50ZXJcIikge1xuICAgICAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImVudGVyXCIpIHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxldCBkZWZhdWx0U2xvdDogYW55ID0gbnVsbDtcbiAgICAgIGlmIChwcm9wcy5zbG90c1tcInNlYXJjaF9cIiArIGtleV0pIHtcbiAgICAgICAgZGVmYXVsdFNsb3QgPSA8ZnMtc2xvdC1yZW5kZXIgc2xvdHM9e3Byb3BzLnNsb3RzW1wic2VhcmNoX1wiICsga2V5XX0gc2NvcGU9e2J1aWxkRmllbGRDb250ZXh0KGtleSl9IC8+O1xuICAgICAgfSBlbHNlIGlmIChpdGVtLnJlbmRlcikge1xuICAgICAgICBkZWZhdWx0U2xvdCA9IDxmcy1yZW5kZXIgcmVuZGVyLWZ1bmM9e2l0ZW0ucmVuZGVyfSBzY29wZT17YnVpbGRGaWVsZENvbnRleHQoa2V5KX0gLz47XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uY29tcG9uZW50ICYmIGl0ZW0uY29tcG9uZW50LnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgIGRlZmF1bHRTbG90ID0gKFxuICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICByZWY9eyh2YWx1ZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XSA9IHZhbHVlO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIG1vZGVsLXZhbHVlPXtnZXQoZm9ybURhdGEsIGtleSl9XG4gICAgICAgICAgICBvbktleXVwPXsoJGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgb25LZXl1cChpdGVtLCAkZXZlbnQpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIHsuLi5pdGVtLmNvbXBvbmVudH1cbiAgICAgICAgICAgIHNjb3BlPXtidWlsZEZpZWxkQ29udGV4dChrZXkpfVxuICAgICAgICAgICAgb25VcGRhdGU6bW9kZWxWYWx1ZT17X29uVXBkYXRlTW9kZWxWYWx1ZX1cbiAgICAgICAgICAgIG9uSW5wdXQ9e19vbklucHV0fVxuICAgICAgICAgIC8+XG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHNwbGl0ZWRLZXkgPSBzcGxpdEtleShrZXkpO1xuXG4gICAgICByZXR1cm4gdWkuZm9ybUl0ZW0ucmVuZGVyKHtcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIGxhYmVsOiBpdGVtLnRpdGxlLFxuICAgICAgICAgIFt1aS5mb3JtSXRlbS5wcm9wXTogc3BsaXRlZEtleSxcbiAgICAgICAgICBwYXRoOiBrZXksXG4gICAgICAgICAgcnVsZVBhdGg6IGtleVxuICAgICAgICB9LFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFNsb3Q7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hGb3JtUmVmID0gcmVmKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVuZGVyUmVmczogUmVmID0gcmVmKHt9KTtcblxuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudFJlbmRlclJlZihrZXkpPy5nZXRUYXJnZXRSZWYoKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKTogU2VhcmNoRXZlbnRDb250ZXh0IHtcbiAgICAgIHJldHVybiB7IGZvcm06IGZvcm1EYXRhLCB2YWxpZGF0ZWRGb3JtOiBwcm9wcy52YWxpZGF0ZWRGb3JtLCBnZXRDb21wb25lbnRSZWYsIGRvU2VhcmNoLCBkb1Jlc2V0LCBkb1ZhbGlkYXRlIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYnVpbGRGaWVsZENvbnRleHQoa2V5OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiB7IC4uLmdldENvbnRleHRGbigpLCBrZXksIHZhbHVlOiBnZXQoZm9ybURhdGEsIGtleSkgfTtcbiAgICB9XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1ZhbGlkYXRlKHNpbGVudDogYm9vbGVhbiA9IGZhbHNlLCB0cmlnZ2VyOiBzdHJpbmcgPSBcInNlYXJjaFwiKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICB0cnkge1xuICAgICAgICBpZiAocHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICBhd2FpdCB1aS5mb3JtLnZhbGlkYXRlV3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICAgIGN0eC5lbWl0KFwidmFsaWRhdGUtZXJyb3JcIiwgeyAuLi5nZXRDb250ZXh0Rm4oKSwgZXJyb3I6IGUsIHRyaWdnZXIgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9TZWFyY2goKSB7XG4gICAgICBpZiAoYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6Llj5bmtohcbiAgICAgICAgYXV0b1NlYXJjaC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgY3R4LmVtaXQoXCJfc2VhcmNoXCIsIGdldENvbnRleHRGbigpKTtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWFyY2hcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIGRvUmVzZXQoKSB7XG4gICAgICAvLyB1aS5mb3JtLnJlc2V0V3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlLCB7IGZvcm0sIGluaXRpYWxGb3JtOiBjcmVhdGVJbml0aWFsRm9ybSgpIH0pO1xuICAgICAgY29uc3QgaW5pdGlhbEZvcm0gPSBjcmVhdGVJbml0aWFsRm9ybSgpO1xuICAgICAgY29uc3QgZW50cmllc1JldCA9IGVudHJpZXMoZm9ybURhdGEpO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB1bnNldChmb3JtRGF0YSwgZW50cnlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldChmb3JtRGF0YSwgZW50cnlbMF0sIGluaXRpYWxWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IGRvVmFsaWRhdGUoKSkge1xuICAgICAgICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgaWYgKHByb3BzLnJlc2V0KSB7XG4gICAgICAgICAgcHJvcHMucmVzZXQoZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIOihqOWNlemHjee9ruS6i+S7tlxuICAgICAgICBjdHguZW1pdChcIl9yZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIGN0eC5lbWl0KFwicmVzZXRcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICBpZiAocHJvcHMuc2VhcmNoQWZ0ZXJSZXNldCkge1xuICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZEJ1dHRvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBidG5zOiBhbnkgPSBbXTtcbiAgICAgIGNvbnN0IGRlZkJ0bk9wdGlvbnM6IEJ1dHRvbnNQcm9wczxTZWFyY2hFdmVudENvbnRleHQ+ID0ge1xuICAgICAgICBzZWFyY2g6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIHR5cGU6IFwicHJpbWFyeVwiLFxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnNlYXJjaC50ZXh0XCIpIC8vICfmn6Xor6InLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9SZXNldCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5yZXNldC50ZXh0XCIpLCAvLyAn6YeN572uJyxcbiAgICAgICAgICBvcmRlcjogMlxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgbWVyZ2UoZGVmQnRuT3B0aW9ucywgcHJvcHMuYnV0dG9ucyk7XG4gICAgICBmb3IgKGxldCBrZXkgaW4gZGVmQnRuT3B0aW9ucykge1xuICAgICAgICBjb25zdCBidG4gPSBkZWZCdG5PcHRpb25zW2tleV07XG4gICAgICAgIGJ0bi5fY2xpY2sgPSAoKSA9PiB7XG4gICAgICAgICAgYnRuLmNsaWNrKGdldENvbnRleHRGbigpKTtcbiAgICAgICAgfTtcbiAgICAgICAgYnRucy5wdXNoKGJ0bik7XG4gICAgICB9XG5cbiAgICAgIGJ0bnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYnRucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGluaXRBdXRvU2VhcmNoKCkge1xuICAgICAgaWYgKHByb3BzLmF1dG9TZWFyY2ggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIOaehOW7uumYsuaKluafpeivouWHveaVsFxuICAgICAgaWYgKHByb3BzLmRlYm91bmNlICE9PSBmYWxzZSkge1xuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcbiAgICAgICAgYXV0b1NlYXJjaCA9IGRlYm91bmNlKGRvU2VhcmNoLCB3YWl0LCBwcm9wcy5kZWJvdW5jZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5pdEF1dG9TZWFyY2goKTtcblxuICAgIGZ1bmN0aW9uIGdldEZvcm0oKSB7XG4gICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0VmFsaWRhdGVkRm9ybSgpIHtcbiAgICAgIHJldHVybiBwcm9wcy52YWxpZGF0ZWRGb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rmZvcm3lgLxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRGb3JtKG5ld0Zvcm06IGFueSwgbWVyZ2UgPSB0cnVlKSB7XG4gICAgICBpZiAoIW1lcmdlKSB7XG4gICAgICAgIGVhY2goa2V5cyhmb3JtRGF0YSksIChpdGVtKSA9PiB7XG4gICAgICAgICAgZGVsZXRlIGZvcm1EYXRhW2l0ZW1dO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRvTWVyZ2UoZm9ybURhdGEsIG5ld0Zvcm0pO1xuICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcblxuICAgIGNvbnN0IGRvQXV0b1NlYXJjaCA9ICgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcbiAgICAgIGlmIChpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgIT09IHRydWUgJiYgYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6JcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbklucHV0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiaW5wdXRcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi+k+WFpeazleebkeWQrFxuICAgIGNvbnN0IGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCA9IChkaXNhYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlID0gZGlzYWJsZWQ7XG4gICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICB9O1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gb25WYWx1ZUNoYW5nZWQodmFsdWU6IGFueSwgaXRlbTogU2VhcmNoSXRlbVByb3BzKSB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgIHNldChmb3JtRGF0YSwga2V5LCB2YWx1ZSk7XG5cbiAgICAgIGNvbnN0IHNpbGVudCA9IHByb3BzLnZhbGlkYXRlT25DaGFuZ2VTaWxlbnQ7XG4gICAgICAvLyBpZiAocHJvcHMudmFsaWRhdGVPbkNoYW5nZSAmJiAoYXdhaXQgZG9WYWxpZGF0ZShzaWxlbnQsIFwiY2hhbmdlXCIpKSkge1xuICAgICAgLy8gICBvbkZvcm1WYWxpZGF0ZWQoKTtcbiAgICAgIC8vIH1cblxuICAgICAgaWYgKGl0ZW0udmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybURhdGFba2V5XTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gZ2V0Q29tcG9uZW50UmVmKGtleSk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlOiBWYWx1ZUNoYW5nZUhhbmRsZSA9XG4gICAgICAgICAgaXRlbS52YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gaXRlbS52YWx1ZUNoYW5nZSA6IGl0ZW0udmFsdWVDaGFuZ2UuaGFuZGxlO1xuICAgICAgICBjb25zdCBzY29wZSA9IGdldENvbnRleHRGbigpO1xuICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZUNvbnRleHQ6IFZhbHVlQ2hhbmdlQ29udGV4dCA9IHtcbiAgICAgICAgICBpbmRleDogMCxcbiAgICAgICAgICByb3c6IHNjb3BlLmZvcm0sXG4gICAgICAgICAgZm9ybTogc2NvcGUuZm9ybSxcbiAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgY29tcG9uZW50UmVmLFxuICAgICAgICAgIGltbWVkaWF0ZTogZmFsc2UsXG4gICAgICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgICAgIG1vZGU6IFwic2VhcmNoXCJcbiAgICAgICAgfTtcbiAgICAgICAgdmFsdWVDaGFuZ2UodmFsdWVDaGFuZ2VDb250ZXh0KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE8g55Sx5LqOdmFsaWRhdGVkRm9ybSDlj5HlsITlh7rljrvlkI7vvIzkvJrmm7TmlrBmb3JtRGF0YeeahOaVsOaNru+8jOaJgOS7peimgeaUvuWcqHZhbHVlQ2hhbmdl5ZCO6Z2iLOS4jeeEtuS8muatu+W+queOr1xuICAgICAgaWYgKHByb3BzLnZhbGlkYXRlT25DaGFuZ2UgJiYgKGF3YWl0IGRvVmFsaWRhdGUoc2lsZW50LCBcImNoYW5nZVwiKSkpIHtcbiAgICAgICAgb25Gb3JtVmFsaWRhdGVkKCk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PSBudWxsIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IHRydWUgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gXCJjaGFuZ2VcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZFJ1bGVzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9ucy5ydWxlcztcbiAgICB9KTtcblxuICAgIG9uRm9ybVZhbGlkYXRlZCgpO1xuICAgIHJldHVybiB7XG4gICAgICBnZXQsXG4gICAgICB1aSxcbiAgICAgIG9uVmFsdWVDaGFuZ2VkLFxuICAgICAgZG9WYWxpZGF0ZSxcbiAgICAgIGRvU2VhcmNoLFxuICAgICAgZG9SZXNldCxcbiAgICAgIGZvcm1EYXRhLFxuICAgICAgY29tcG9uZW50UmVuZGVyUmVmcyxcbiAgICAgIGdldENvbXBvbmVudFJlbmRlclJlZixcbiAgICAgIGdldENvbXBvbmVudFJlZixcbiAgICAgIGdldEZvcm0sXG4gICAgICBnZXRWYWxpZGF0ZWRGb3JtLFxuICAgICAgc2V0Rm9ybSxcbiAgICAgIHNlYXJjaEZvcm1SZWYsXG4gICAgICBvbklucHV0LFxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxuICAgICAgY29tcHV0ZWRSdWxlcyxcbiAgICAgIGJ1aWxkRmllbGRDb250ZXh0LFxuICAgICAgZ2V0Q29udGV4dEZuXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXNlYXJjaCB7XG4gICYuZnMtc2VhcmNoLXYyIHtcbiAgICAvL2Rpc3BsYXk6IGZsZXg7XG4gICAgLy9mbGV4LXdyYXA6IG5vd3JhcDtcbiAgICAuZnMtc2VhcmNoLWJ1dHRvbnMge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICB9XG4gICAgLnNlYXJjaC1sZWZ0IHtcbiAgICB9XG5cbiAgICAuc2VhcmNoLXJpZ2h0IHtcbiAgICAgIGZsZXg6IDE7XG4gICAgfVxuXG4gICAgLmFudC1mb3JtLWlubGluZSB7XG4gICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgfVxuXG4gICAgLmZzLXNlYXJjaC1mb3JtIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgZmxleC13cmFwOiB3cmFwO1xuXG4gICAgICAuYW50LXBpY2tlcixcbiAgICAgIC5hbnQtc2VsZWN0LFxuICAgICAgLm4tZGF0ZS1waWNrZXIsXG4gICAgICAuZWwtc2VsZWN0LFxuICAgICAgLmVsLWRhdGUtZWRpdG9yIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG5cbiAgICAgIC5lbC1yYW5nZS1lZGl0b3IuZWwtaW5wdXRfX3dyYXBwZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgfVxuXG4gICAgICAuYW50LWJ0bi1sb2FkaW5nLWljb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBtYXJnaW4tbGVmdDogMnB4O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDJweDtcbiAgICAgIH1cblxuICAgICAgJi5lbC1mb3JtLS1sYWJlbC10b3Age1xuICAgICAgICAuZWwtZm9ybS1pdGVtIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuZWwtZm9ybS1pdGVtIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICB9XG5cbiAgICAgICYuZWwtZm9ybS0taW5saW5lIHtcbiAgICAgICAgLmVsLWlucHV0IHtcbiAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZnMtc2VhcmNoLWNvbCB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAvLyBhbnRkdlxuICAgICAgLmFudC1mb3JtLWl0ZW0tZXhwbGFpbixcbiAgICAgIC5lbC1mb3JtLWl0ZW1fX2Vycm9yIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgYm90dG9tOiAzcHg7XG4gICAgICAgIHJpZ2h0OiA4cHg7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICB0b3A6IGF1dG87XG4gICAgICAgIGxlZnQ6IGF1dG87XG4gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgIH1cblxuICAgICAgLmVsLWZvcm0taXRlbV9fZXJyb3Ige1xuICAgICAgICBib3R0b206IDEwcHg7XG4gICAgICB9XG5cbiAgICAgICY6aG92ZXIge1xuICAgICAgICAuYW50LWZvcm0taXRlbS1leHBsYWluLFxuICAgICAgICAuZWwtZm9ybS1pdGVtX19lcnJvciB7XG4gICAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5uLWZvcm0taXRlbS1ibGFuayB7XG4gIH1cbn1cblxuQG1lZGlhIChtYXgtd2lkdGg6IDU3NXB4KSB7XG4gIC5mcy1zZWFyY2gge1xuICAgIC5mcy1zZWFyY2gtZm9ybSB7XG4gICAgICAuZnMtc2VhcmNoLWNvbCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXgtd2lkdGg6IDEwMCU7XG4gICAgICAgIGZsZXg6IDEwMCU7XG4gICAgICAgIC8vYW50ZHZcbiAgICAgICAgLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xuICAgICAgICAgIHdpZHRoOiAxMjBweDtcbiAgICAgICAgICBmbGV4OiBub25lO1xuICAgICAgICB9XG4gICAgICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xuICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkuY29sbGFwc2VUcmFuc2l0aW9uLm5hbWVcIj5cbiAgICA8ZGl2IHYtaWY9XCJzaG93ICE9PSBmYWxzZVwiIGNsYXNzPVwiZnMtc2VhcmNoXCIgOmNsYXNzPVwieyAnZnMtc2VhcmNoLW11bHRpLWxpbmUnOiBjb21wdXRlZElzTXVsdGlMaW5lIH1cIj5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkuZm9ybS5uYW1lXCJcbiAgICAgICAgcmVmPVwic2VhcmNoRm9ybVJlZlwiXG4gICAgICAgIDptb2RlbD1cImZvcm1cIlxuICAgICAgICB2LWJpbmQ9XCJvcHRpb25zXCJcbiAgICAgICAgOnJ1bGVzPVwiY29tcHV0ZWRSdWxlc1wiXG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWZvcm1cIlxuICAgICAgICBAY29tcG9zaXRpb25zdGFydD1cImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCh0cnVlKVwiXG4gICAgICAgIEBjb21wb3NpdGlvbmVuZD1cImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZChmYWxzZSlcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWJveFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtbWFpblwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1jb2x1bW5zXCJcbiAgICAgICAgICAgICAgOmNsYXNzPVwieyAnZnMtc2VhcmNoLWNvbGxhcHNlJzogY29sbGFwc2UgfVwiXG4gICAgICAgICAgICAgIDpzdHlsZT1cInsgaGVpZ2h0OiBjb21wdXRlZENvbHVtbkJveEhlaWdodCB9XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIHJlZj1cImNvbHVtbnNSb3dSZWZcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiPlxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLWxlZnQnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBpbiBjb21wdXRlZENvbHVtbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cImNvbXB1dGVkQ29sTmFtZVwiIHYtaWY9XCJpdGVtLnNob3cgPT09IHRydWVcIiBjbGFzcz1cImZzLXNlYXJjaC1jb2xcIiB2LWJpbmQ9XCJpdGVtLmNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIiB2LWJpbmQ9XCJpdGVtXCIgOlt1aS5mb3JtSXRlbS5wcm9wXT1cImtleVwiIDpsYWJlbD1cIml0ZW0udGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cInNsb3RzWydzZWFyY2hfJyArIGtleV1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoXycgKyBrZXldXCIgOnNjb3BlPVwieyAuLi5zZWFyY2hFdmVudENvbnRleHRSZWYsIGtleSB9XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZnMtY29tcG9uZW50LXJlbmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LWlmPVwiaXRlbS5jb21wb25lbnQgJiYgaXRlbS5jb21wb25lbnQuc2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6cmVmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVsOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRSZW5kZXJSZWZzW2l0ZW0ua2V5XSA9IGVsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOm1vZGVsLXZhbHVlPVwiZ2V0KGZvcm0sIGtleSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB2LWJpbmQ9XCJpdGVtLmNvbXBvbmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEB1cGRhdGU6bW9kZWwtdmFsdWU9XCJvblZhbHVlQ2hhbmdlZCgkZXZlbnQsIGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQGlucHV0PVwib25JbnB1dChpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLW1pZGRsZVwiPlxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLW1pZGRsZSddXCIgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxmcy1zZWFyY2gtYnV0dG9ucyB2LWlmPVwiIWNvbXB1dGVkSXNNdWx0aUxpbmVcIiA6YnV0dG9ucz1cImNvbXB1dGVkQnV0dG9uc1wiPjwvZnMtc2VhcmNoLWJ1dHRvbnM+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2xvdHNbJ3NlYXJjaC1yaWdodCddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1yaWdodFwiPlxuICAgICAgICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZnMtc2VhcmNoLWJ1dHRvbnMgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiA6YnV0dG9ucz1cImNvbXB1dGVkQnV0dG9uc1wiPjwvZnMtc2VhcmNoLWJ1dHRvbnM+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2IHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgY2xhc3M9XCJmcy1zZWFyY2gtYWN0aW9uXCI+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgPGZzLWJ1dHRvbiA6aWNvbj1cImNvbGxhcHNlID8gdWkuaWNvbnMuY2FyZXRVcCA6IHVpLmljb25zLmNhcmV0RG93blwiIEBjbGljaz1cInRvZ2dsZUNvbGxhcHNlXCIgLz5cbiAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvY29tcG9uZW50PlxuICAgIDwvZGl2PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBuZXh0VGljaywgb25Nb3VudGVkLCByZWFjdGl2ZSwgcmVmLCBSZWYsIHVucmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgZWFjaCwgZm9yRWFjaCwgc29ydEJ5LCBlbnRyaWVzLCB1bnNldCwgc2V0LCBrZXlzLCBnZXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyB1c2VDb21wdXRlIH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtY29tcHV0ZVwiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcbmltcG9ydCBsb2dnZXIgZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWwubG9nXCI7XG5pbXBvcnQgRnNTZWFyY2hCdXR0b25zIGZyb20gXCIuL2J1dHRvbnMudnVlXCI7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5jb25zdGFudHNcIjtcbmltcG9ydCB7IEJ1dHRvbnNQcm9wcywgU2VhcmNoRXZlbnRDb250ZXh0LCBTZWFyY2hJdGVtUHJvcHMgfSBmcm9tIFwiLi4vLi4vZFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS11aVwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1tZXJnZVwiO1xuXG4vKipcbiAqIOafpeivouahhue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzU2VhcmNoVjFcIixcbiAgY29tcG9uZW50czogeyBGc1NlYXJjaEJ1dHRvbnMgfSxcbiAgaW5oZXJpdEF0dHJzOiBmYWxzZSxcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDliJ3lp4vmn6Xor6LmnaHku7ZcbiAgICAgKiDngrnlh7vph43nva7vvIzkvJrph43nva7miJDor6XmnaHku7ZcbiAgICAgKi9cbiAgICBpbml0aWFsRm9ybToge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDooajljZXlj4LmlbBcbiAgICAgKiDmlK/mjIFlbC1mb3JtIHwgYS1mb3Jt55qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LlrZfmrrXphY3nva5cbiAgICAgKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIHRhYnNcbiAgICAgKiB7IHNob3cgLCBvcHRpb25zLGtleSwgZGVmYXVsdH1cbiAgICAgKi9cbiAgICB0YWJzOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaMiemSrumFjee9rizlj6/ku6XmoLnmja5vcmRlcuaOkuW6j1xuICAgICAqIHtzZWFyY2g6ey4uLkZzQnV0dG9ufSxyZXNldDp7Li4uRnNCdXR0b259fVxuICAgICAqL1xuICAgIGJ1dHRvbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog54K55Ye76YeN572u5ZCO5piv5ZCm56uL5Y2z6Kem5Y+R5p+l6K+iXG4gICAgICovXG4gICAgc2VhcmNoQWZ0ZXJSZXNldDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuW8gOWQr+iHquWKqOafpeivolxuICAgICAqL1xuICAgIGF1dG9TZWFyY2g6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDoh6rliqjmn6Xor6LvvIzpmLLmipborr7nva5cbiAgICAgKiDkvKBmYWxzZeWImeWFs+mXreiHquWKqOafpeivolxuICAgICAqL1xuICAgIGRlYm91bmNlOiB7XG4gICAgICB0eXBlOiBbQm9vbGVhbiwgT2JqZWN0XSxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5o+S5qe9XG4gICAgICovXG4gICAgc2xvdHM6IHtcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuafpeivouahhlxuICAgICAqL1xuICAgIHNob3c6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmK/lkKblkK/nlKjmoKHpqoxcbiAgICAgKi9cbiAgICB2YWxpZGF0ZToge1xuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW4g+WxgCwgc2luZ2xlLWxpbmUg5Y2V6KGM77yMIG11bHRpLWxpbmUg5aSa6KGM77yI5pSv5oyB5bGV5byA5pS26LW377yJXG4gICAgICovXG4gICAgbGF5b3V0OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZWZhdWx0OiBcInNpbmdsZS1saW5lXCJcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWIl+eahOWuveW6puiuvue9ru+8jHNwYW49eHhcbiAgICAgKi9cbiAgICBjb2w6IHt9LFxuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5oqY5Y+gXG4gICAgICovXG4gICAgY29sbGFwc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDmn6Xor6Lkuovku7ZcbiAgICAgKiovXG4gICAgXCJzZWFyY2hcIixcbiAgICAvKipcbiAgICAgKiDph43nva7kuovku7ZcbiAgICAgKiovXG4gICAgXCJyZXNldFwiLFxuICAgIFwiY29sbGFwc2VcIixcbiAgICBcInVwZGF0ZTpjb2xsYXBzZVwiXG4gIF0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIC8vIOW8guatpXNldHVw6ZyA6KaB5pS+5Zyo56ys5LiA5LiqYXdhaXTkuYvliY1cbiAgICAvLyBvbk1vdW50ZWQgaXMgY2FsbGVkIHdoZW4gdGhlcmUgaXMgbm8gYWN0aXZlIGNvbXBvbmVudCBpbnN0YW5jZSB0byBiZSBhc3NvY2lhdGVkIHdpdGguXG4gICAgLy/kuLrllaXkvJrmnInov5nkuKrorablkYpcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgaWYgKGNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgJiYgY29sdW1uc1Jvd1JlZi52YWx1ZSkge1xuICAgICAgICBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBjb2x1bW5zTGlzdCA9IGNvbHVtbnNSb3dSZWYudmFsdWUuJGVsLmNoaWxkcmVuO1xuICAgICAgICBpZiAoY29sdW1uc0xpc3QgJiYgY29sdW1uc0xpc3QubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc0xpc3RbMV0ub2Zmc2V0SGVpZ2h0ICsgMjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IGF1dG9TZWFyY2g6IGFueSA9IG51bGw7XG4gICAgZnVuY3Rpb24gY3JlYXRlSW5pdGlhbEZvcm0oKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiBjbG9uZURlZXAocHJvcHMuaW5pdGlhbEZvcm0gfHwge30pO1xuICAgIH1cbiAgICBjb25zdCBmb3JtID0gcmVhY3RpdmUoY3JlYXRlSW5pdGlhbEZvcm0oKSk7XG4gICAgY29uc3QgeyBkb0NvbXB1dGVkLCBBc3luY0NvbXB1dGVWYWx1ZSB9ID0gdXNlQ29tcHV0ZSgpO1xuICAgIC8vQHRzLWlnbm9yZVxuICAgIGVhY2gocHJvcHMuY29sdW1ucywgKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLnZhbHVlICE9IG51bGwgJiYgaXRlbS52YWx1ZSBpbnN0YW5jZW9mIEFzeW5jQ29tcHV0ZVZhbHVlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKFwic2VhcmNoLnZhbHVl6YWN572u5LiN5pSv5oyBQXN5bmNDb21wdXRl57G75Z6L55qE5Yqo5oCB6K6h566XXCIpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG4gICAgY29uc3QgZG9NZXJnZSA9IG1lcmdlO1xuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1ucyA9IGRvQ29tcHV0ZWQoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICByZXR1cm4gcHJvcHMuY29sdW1ucztcbiAgICAgIH0sXG4gICAgICBnZXRDb250ZXh0Rm4sXG4gICAgICBudWxsLFxuICAgICAgKHZhbHVlKSA9PiB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBpZiAoIXByb3BzLnZhbGlkYXRlKSB7XG4gICAgICAgICAgLy/lpoLmnpzlhbPpl612YWxpZGF0ZeWImeWOu+aOiXJ1bGVzXG4gICAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGRlbGV0ZSBpdGVtLnJ1bGVzO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIC8vIOWQiOW5tmNvbFxuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgaWYgKHByb3BzLmNvbCkge1xuICAgICAgICAgIGZvckVhY2godmFsdWUsICh2KSA9PiB7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHYuY29sID0gbWVyZ2Uoe30sIHByb3BzLmNvbCwgdi5jb2wpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy/lrZfmrrXmjpLluo9cbiAgICAgICAgbGV0IHNvcnRBcnI6IFNlYXJjaEl0ZW1Qcm9wc1tdID0gW107XG4gICAgICAgIGZvckVhY2godmFsdWUsICh2LCBrZXkpID0+IHtcbiAgICAgICAgICB2Ll9rZXkgPSBrZXk7XG4gICAgICAgICAgc29ydEFyci5wdXNoKHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgc29ydEFyciA9IHNvcnRCeShzb3J0QXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBpdGVtLm9yZGVyID8/IENvbnN0YW50cy5vcmRlckRlZmF1bHQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IHNvcnRlZENvbHVtbnM6IHtcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBTZWFyY2hJdGVtUHJvcHM7XG4gICAgICAgIH0gPSB7fTtcblxuICAgICAgICBzb3J0QXJyLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBsZXQgX2tleSA9IGl0ZW0uX2tleTtcbiAgICAgICAgICBkZWxldGUgaXRlbS5fa2V5O1xuICAgICAgICAgIHNvcnRlZENvbHVtbnNbX2tleV0gPSBpdGVtO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZENvbHVtbnM7XG4gICAgICB9XG4gICAgKTtcblxuICAgIC8v6buY6K6k5YC8XG4gICAgZm9yRWFjaChjb21wdXRlZENvbHVtbnMudmFsdWUsIChjb2x1bW4sIGtleSkgPT4ge1xuICAgICAgaWYgKGNvbHVtbi52YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlZlZhbHVlID0gdW5yZWYoY29sdW1uLnZhbHVlKTtcbiAgICAgIGlmIChkZWZWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGNvbHVtbi5zaG93ICE9PSBmYWxzZSAmJiBjb2x1bW4uY29tcG9uZW50Py5zaG93ICE9PSBmYWxzZSkge1xuICAgICAgICAvL+m7mOiupOWAvFxuICAgICAgICBmb3JtW2tleV0gPSBkZWZWYWx1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWFyY2hGb3JtUmVmID0gcmVmKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29tcG9uZW50UmVuZGVyUmVmczogUmVmID0gcmVmKHt9KTtcbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZW5kZXJSZWYoa2V5OiBzdHJpbmcpIHtcbiAgICAgIHJldHVybiBjb21wb25lbnRSZW5kZXJSZWZzLnZhbHVlW2tleV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0Q29tcG9uZW50UmVmKGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgIHJldHVybiBnZXRDb21wb25lbnRSZW5kZXJSZWYoa2V5KT8uJHJlZnM/LnRhcmdldFJlZjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb250ZXh0Rm4oKTogU2VhcmNoRXZlbnRDb250ZXh0IHtcbiAgICAgIHJldHVybiB7IGZvcm0sIHZhbGlkYXRlZEZvcm06IGZvcm0sIGdldENvbXBvbmVudFJlZiwgZG9WYWxpZGF0ZTogbnVsbCB9O1xuICAgIH1cblxuICAgIGNvbnN0IHNlYXJjaEV2ZW50Q29udGV4dFJlZjogUmVmPFNlYXJjaEV2ZW50Q29udGV4dD4gPSByZWYoZ2V0Q29udGV4dEZuKCkpO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gZG9TZWFyY2goKSB7XG4gICAgICBpZiAoYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6Llj5bmtohcbiAgICAgICAgYXV0b1NlYXJjaC5jYW5jZWwoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdmFsaWQgPSBhd2FpdCB1aS5mb3JtLnZhbGlkYXRlV3JhcChzZWFyY2hGb3JtUmVmLnZhbHVlKTtcbiAgICAgIGlmICh2YWxpZCkge1xuICAgICAgICBjdHguZW1pdChcInNlYXJjaFwiLCBzZWFyY2hFdmVudENvbnRleHRSZWYudmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWkubWVzc2FnZS5lcnJvcih7XG4gICAgICAgICAgbWVzc2FnZTogdChcImZzLnNlYXJjaC5lcnJvci5tZXNzYWdlXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZG9SZXNldCgpIHtcbiAgICAgIC8vIHVpLmZvcm0ucmVzZXRXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUsIHsgZm9ybSwgaW5pdGlhbEZvcm06IGNyZWF0ZUluaXRpYWxGb3JtKCkgfSk7XG4gICAgICBjb25zdCBpbml0aWFsRm9ybSA9IGNyZWF0ZUluaXRpYWxGb3JtKCk7XG4gICAgICBjb25zdCBlbnRyaWVzUmV0ID0gZW50cmllcyhmb3JtKTtcbiAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllc1JldCkge1xuICAgICAgICBjb25zdCBpbml0aWFsVmFsdWUgPSBnZXQoaW5pdGlhbEZvcm0sIGVudHJ5WzBdKTtcbiAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgICAgdW5zZXQoZm9ybSwgZW50cnlbMF0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldChmb3JtLCBlbnRyeVswXSwgaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMucmVzZXQpIHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHByb3BzLnJlc2V0KHNlYXJjaEV2ZW50Q29udGV4dFJlZi52YWx1ZSk7XG4gICAgICB9XG4gICAgICAvLyDooajljZXph43nva7kuovku7ZcbiAgICAgIGN0eC5lbWl0KFwicmVzZXRcIiwgZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuc2VhcmNoQWZ0ZXJSZXNldCkge1xuICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgZG9TZWFyY2goKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNvbXB1dGVkQnV0dG9ucyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGJ0bnM6IGFueSA9IFtdO1xuICAgICAgY29uc3QgZGVmQnRuT3B0aW9uczogQnV0dG9uc1Byb3BzPFNlYXJjaEV2ZW50Q29udGV4dD4gPSB7XG4gICAgICAgIHNlYXJjaDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgdHlwZTogXCJwcmltYXJ5XCIsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBkb1NlYXJjaCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5zZWFyY2gudGV4dFwiKSAvLyAn5p+l6K+iJyxcbiAgICAgICAgfSxcbiAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICAgICAgICBjbGljazogKGNvbnRleHQ6IFNlYXJjaEV2ZW50Q29udGV4dCkgPT4ge1xuICAgICAgICAgICAgZG9SZXNldCgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgdGV4dDogdChcImZzLnNlYXJjaC5yZXNldC50ZXh0XCIpLCAvLyAn6YeN572uJyxcbiAgICAgICAgICBvcmRlcjogMlxuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBtZXJnZShkZWZCdG5PcHRpb25zLCBwcm9wcy5idXR0b25zKTtcbiAgICAgIGZvciAobGV0IGtleSBpbiBkZWZCdG5PcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGJ0biA9IGRlZkJ0bk9wdGlvbnNba2V5XTtcbiAgICAgICAgYnRuLl9jbGljayA9ICgpID0+IHtcbiAgICAgICAgICBidG4uY2xpY2soZ2V0Q29udGV4dEZuKCkpO1xuICAgICAgICB9O1xuICAgICAgICBidG5zLnB1c2goYnRuKTtcbiAgICAgIH1cblxuICAgICAgYnRucy5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gYS5vcmRlciAtIGIub3JkZXI7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBidG5zO1xuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gaW5pdEF1dG9TZWFyY2goKSB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5hdXRvU2VhcmNoID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyDmnoTlu7rpmLLmipbmn6Xor6Llh73mlbBcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLmRlYm91bmNlICE9PSBmYWxzZSkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgbGV0IHdhaXQgPSBwcm9wcy5kZWJvdW5jZT8ud2FpdCB8fCA1MDA7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBhdXRvU2VhcmNoID0gZGVib3VuY2UoZG9TZWFyY2gsIHdhaXQsIHByb3BzLmRlYm91bmNlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbml0QXV0b1NlYXJjaCgpO1xuXG4gICAgZnVuY3Rpb24gZ2V0Rm9ybSgpIHtcbiAgICAgIHJldHVybiBmb3JtO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rmZvcm3lgLxcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBzZXRGb3JtKG5ld0Zvcm06IGFueSwgbWVyZ2UgPSB0cnVlKSB7XG4gICAgICBpZiAoIW1lcmdlKSB7XG4gICAgICAgIGVhY2goa2V5cyhmb3JtKSwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBkZWxldGUgZm9ybVtpdGVtXTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBkb01lcmdlKGZvcm0sIG5ld0Zvcm0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlucHV0RXZlbnREaXNhYmxlZCA9IHJlZihmYWxzZSk7XG5cbiAgICBjb25zdCBkb0F1dG9TZWFyY2ggPSAoKSA9PiB7XG4gICAgICBsb2dnZXIuZGVidWcoXCJkbyBhdXRvIHNlYXJjaCxpbnB1dEV2ZW50RGlzYWJsZWQ6XCIsIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSk7XG4gICAgICBpZiAoaW5wdXRFdmVudERpc2FibGVkLnZhbHVlICE9PSB0cnVlICYmIGF1dG9TZWFyY2gpIHtcbiAgICAgICAgLy8g6Ziy5oqW5p+l6K+iXG4gICAgICAgIGF1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3Qgb25JbnB1dCA9IChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImlucHV0XCIpIHtcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfTtcbiAgICAvLyDovpPlhaXms5Xnm5HlkKxcbiAgICBjb25zdCBjaGFuZ2VJbnB1dEV2ZW50RGlzYWJsZWQgPSAoZGlzYWJsZWQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZC52YWx1ZSA9IGRpc2FibGVkO1xuICAgICAgZG9BdXRvU2VhcmNoKCk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIG9uVmFsdWVDaGFuZ2VkKHZhbHVlOiBhbnksIGl0ZW06IFNlYXJjaEl0ZW1Qcm9wcykge1xuICAgICAgY29uc3Qga2V5ID0gaXRlbS5rZXk7XG4gICAgICBzZXQoZm9ybSwga2V5LCB2YWx1ZSk7XG4gICAgICBpZiAoaXRlbS52YWx1ZUNoYW5nZSkge1xuICAgICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBmb3JtW2tleV07XG4gICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IGdldENvbXBvbmVudFJlZihrZXkpO1xuICAgICAgICBjb25zdCB2YWx1ZUNoYW5nZSA9IGl0ZW0udmFsdWVDaGFuZ2UgaW5zdGFuY2VvZiBGdW5jdGlvbiA/IGl0ZW0udmFsdWVDaGFuZ2UgOiBpdGVtLnZhbHVlQ2hhbmdlLmhhbmRsZTtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHZhbHVlQ2hhbmdlKHsga2V5LCB2YWx1ZSwgY29tcG9uZW50UmVmLCAuLi5nZXRDb250ZXh0Rm4oKSwgaW1taWRpYXRlOiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09IG51bGwgfHwgaXRlbS5hdXRvU2VhcmNoVHJpZ2dlciA9PT0gdHJ1ZSB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSBcImNoYW5nZVwiKSB7XG4gICAgICAgIGRvQXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkUnVsZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9ucy5ydWxlcztcbiAgICB9KTtcblxuICAgIC8vLS0tLS3lpJrooYzmqKHlvI/mipjlj6BcblxuICAgIGNvbnN0IGNvbHVtbnNSb3dSZWYgPSByZWYoKTtcbiAgICBjb25zdCBjb2x1bW5zQm94SGVpZ2h0UmVmID0gcmVmKDApO1xuICAgIGNvbnN0IGNvbHVtbnNMaW5lSGVpZ2h0UmVmID0gcmVmKDApO1xuXG4gICAgY29uc3QgdG9nZ2xlQ29sbGFwc2UgPSAoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGN0eC5lbWl0KFwidXBkYXRlOmNvbGxhcHNlXCIsICFwcm9wcy5jb2xsYXBzZSk7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGN0eC5lbWl0KFwiY29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcbiAgICB9O1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2xOYW1lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMubGF5b3V0ID09PSBcIm11bHRpLWxpbmVcIikge1xuICAgICAgICByZXR1cm4gdWkuY29sLm5hbWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gXCJkaXZcIjtcbiAgICB9KTtcbiAgICBjb25zdCBjb21wdXRlZElzTXVsdGlMaW5lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICByZXR1cm4gcHJvcHMubGF5b3V0ID09PSBcIm11bHRpLWxpbmVcIjtcbiAgICAgIC8v5LiN6KaB6L+Z5Liq77yM5Lya5q275b6q546v77yMICYmIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKCFjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBcImF1dG9cIjtcbiAgICAgIH1cbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLmNvbGxhcHNlKSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlICsgXCJweFwiIDogXCJcIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZ2V0OiAoZm9ybTogYW55LCBrZXk6IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gZ2V0KGZvcm0sIGtleSk7XG4gICAgICB9LFxuICAgICAgdWksXG4gICAgICBvblZhbHVlQ2hhbmdlZCxcbiAgICAgIGRvU2VhcmNoLFxuICAgICAgZG9SZXNldCxcbiAgICAgIGZvcm0sXG4gICAgICBjb21wb25lbnRSZW5kZXJSZWZzLFxuICAgICAgZ2V0Q29tcG9uZW50UmVuZGVyUmVmLFxuICAgICAgZ2V0Q29tcG9uZW50UmVmLFxuICAgICAgZ2V0Rm9ybSxcbiAgICAgIHNldEZvcm0sXG4gICAgICBzZWFyY2hGb3JtUmVmLFxuICAgICAgb25JbnB1dCxcbiAgICAgIGlucHV0RXZlbnREaXNhYmxlZCxcbiAgICAgIGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCxcbiAgICAgIGNvbXB1dGVkQ29sdW1ucyxcbiAgICAgIGNvbXB1dGVkQnV0dG9ucyxcbiAgICAgIGNvbXB1dGVkUnVsZXMsXG4gICAgICBjb2x1bW5zUm93UmVmLFxuICAgICAgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQsXG4gICAgICBjb21wdXRlZENvbE5hbWUsXG4gICAgICBjb21wdXRlZElzTXVsdGlMaW5lLFxuICAgICAgdG9nZ2xlQ29sbGFwc2UsXG4gICAgICBzZWFyY2hFdmVudENvbnRleHRSZWZcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtc2VhcmNoIHtcbiAgLy9kaXNwbGF5OiBmbGV4O1xuICAvL2ZsZXgtd3JhcDogbm93cmFwO1xuICAuc2VhcmNoLWxlZnQge1xuICB9XG4gIC5zZWFyY2gtcmlnaHQge1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLmFudC1mb3JtLWlubGluZSB7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICB9XG4gIC5mcy1zZWFyY2gtZm9ybSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAvLyYgPiAqIHtcbiAgICAvLyAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgIC8vICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgLy8gIG1hcmdpbi1yaWdodDogMTBweDtcbiAgICAvL31cblxuICAgIC5mcy1zZWFyY2gtYm94IHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAuZnMtc2VhcmNoLW1haW4ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgICAgfVxuICAgIH1cbiAgICAuZnMtc2VhcmNoLWNvbCB7XG4gICAgICAmID4gKiB7XG4gICAgICAgIG1hcmdpbjogMHB4IDVweDtcbiAgICAgIH1cbiAgICAgIG1hcmdpbjogMXB4IDA7XG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgLy8gbWFyZ2luLWxlZnQ6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmVsLWZvcm0taXRlbSB7XG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG5cbiAgICAuZWwtZm9ybS0taW5saW5lIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5lbC1mb3JtLWl0ZW1fX2NvbnRlbnQge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuICB9XG5cbiAgLmZzLXNlYXJjaC1idG5zIHtcbiAgICAuZnMtYnV0dG9uIHtcbiAgICAgIG1hcmdpbi1yaWdodDogNXB4O1xuICAgIH1cbiAgfVxuXG4gICYuZnMtc2VhcmNoLW11bHRpLWxpbmUge1xuICAgIC5mcy1zZWFyY2gtYm94IHtcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIC5mcy1zZWFyY2gtY29sdW1ucyB7XG4gICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93LXk6IGhpZGRlbjtcbiAgICAgICAgICAvLyB0cmFuc2l0aW9uOiBhbGwgMC4zcyBsaW5lYXI7XG4gICAgICAgICAgLy8gd2lsbC1jaGFuZ2U6IGhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICAuZnMtc2VhcmNoLWJ0bnMge1xuICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgICAgICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAubi1mb3JtLWl0ZW0tYmxhbmsge1xuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAuZnMtc2VhcmNoLWFjdGlvbiB7XG4gICAgICAuYW50LWZvcm0taXRlbSB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMnB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4uZnMtc2VhcmNoIHtcbiAgLm4tZm9ybS1pdGVtLWJsYW5rIHtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2xsYXBzZVRyYW5zaXRpb24ubmFtZVwiPlxuICAgIDxkaXYgdi1pZj1cInNob3cgIT09IGZhbHNlXCIgY2xhc3M9XCJmcy1zZWFyY2hcIiA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtbXVsdGktbGluZSc6IGNvbXB1dGVkSXNNdWx0aUxpbmUgfVwiPlxuICAgICAgPGNvbXBvbmVudFxuICAgICAgICA6aXM9XCJ1aS5mb3JtLm5hbWVcIlxuICAgICAgICByZWY9XCJzZWFyY2hGb3JtUmVmXCJcbiAgICAgICAgOm1vZGVsPVwiZm9ybVwiXG4gICAgICAgIHYtYmluZD1cIm9wdGlvbnNcIlxuICAgICAgICA6cnVsZXM9XCJjb21wdXRlZFJ1bGVzXCJcbiAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtZm9ybVwiXG4gICAgICAgIEBjb21wb3NpdGlvbnN0YXJ0PVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKHRydWUpXCJcbiAgICAgICAgQGNvbXBvc2l0aW9uZW5kPVwiY2hhbmdlSW5wdXRFdmVudERpc2FibGVkKGZhbHNlKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZzLXNlYXJjaC1tYWluXCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIlxuICAgICAgICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtY29sbGFwc2UnOiBjb2xsYXBzZSB9XCJcbiAgICAgICAgICAgICAgOnN0eWxlPVwieyBoZWlnaHQ6IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0IH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgcmVmPVwiY29sdW1uc1Jvd1JlZlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgdi1pZj1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgY2xhc3M9XCJmcy1zZWFyY2gtY29sXCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbGVmdCddXCIgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIGluIGNvbXB1dGVkQ29sdW1uc1wiIDprZXk9XCJrZXlcIj5cbiAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwiY29tcHV0ZWRDb2xOYW1lXCIgdi1pZj1cIml0ZW0uc2hvdyA9PT0gdHJ1ZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIml0ZW0uY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiIHYtYmluZD1cIml0ZW1cIiA6W3VpLmZvcm1JdGVtLnByb3BdPVwia2V5XCIgOmxhYmVsPVwiaXRlbS50aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSB2LWlmPVwic2xvdHNbJ3NlYXJjaF8nICsga2V5XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2hfJyArIGtleV1cIiA6c2NvcGU9XCJ7IC4uLnNlYXJjaEV2ZW50Q29udGV4dFJlZiwga2V5IH1cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmcy1jb21wb25lbnQtcmVuZGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJpdGVtLmNvbXBvbmVudCAmJiBpdGVtLmNvbXBvbmVudC5zaG93ICE9PSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpyZWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWw6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudFJlbmRlclJlZnNbaXRlbS5rZXldID0gZWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICA6bW9kZWwtdmFsdWU9XCJnZXQoZm9ybSwga2V5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtYmluZD1cIml0ZW0uY29tcG9uZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgOnNjb3BlPVwic2VhcmNoRXZlbnRDb250ZXh0UmVmXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cIm9uVmFsdWVDaGFuZ2VkKCRldmVudCwgaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBAaW5wdXQ9XCJvbklucHV0KGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic2xvdHNbJ3NlYXJjaC1taWRkbGUnXVwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtbWlkZGxlXCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtbWlkZGxlJ11cIiA6c2NvcGU9XCJzZWFyY2hFdmVudENvbnRleHRSZWZcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGZzLXNlYXJjaC1idXR0b25zIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzbG90c1snc2VhcmNoLXJpZ2h0J11cIiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZzLXNsb3QtcmVuZGVyIDpzbG90cz1cInNsb3RzWydzZWFyY2gtcmlnaHQnXVwiIDpzY29wZT1cInNlYXJjaEV2ZW50Q29udGV4dFJlZlwiIC8+XG4gICAgICAgICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxmcy1zZWFyY2gtYnV0dG9ucyB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIDpidXR0b25zPVwiY29tcHV0ZWRCdXR0b25zXCI+PC9mcy1zZWFyY2gtYnV0dG9ucz5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgdi1pZj1cImNvbXB1dGVkSXNNdWx0aUxpbmVcIiBjbGFzcz1cImZzLXNlYXJjaC1hY3Rpb25cIj5cbiAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZm9ybUl0ZW0ubmFtZVwiPlxuICAgICAgICAgICAgICA8ZnMtYnV0dG9uIDppY29uPVwiY29sbGFwc2UgPyB1aS5pY29ucy5jYXJldFVwIDogdWkuaWNvbnMuY2FyZXREb3duXCIgQGNsaWNrPVwidG9nZ2xlQ29sbGFwc2VcIiAvPlxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9kaXY+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIG5leHRUaWNrLCBvbk1vdW50ZWQsIHJlYWN0aXZlLCByZWYsIFJlZiwgdW5yZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBlYWNoLCBmb3JFYWNoLCBzb3J0QnksIGVudHJpZXMsIHVuc2V0LCBzZXQsIGtleXMsIGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUNvbXB1dGUgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1jb21wdXRlXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IGxvZ2dlciBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbC5sb2dcIjtcbmltcG9ydCBGc1NlYXJjaEJ1dHRvbnMgZnJvbSBcIi4vYnV0dG9ucy52dWVcIjtcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gXCIuLi8uLi91dGlscy91dGlsLmNvbnN0YW50c1wiO1xuaW1wb3J0IHsgQnV0dG9uc1Byb3BzLCBTZWFyY2hFdmVudENvbnRleHQsIFNlYXJjaEl0ZW1Qcm9wcyB9IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLXVpXCI7XG5pbXBvcnQgeyB1c2VNZXJnZSB9IGZyb20gXCIuLi8uLi91c2UvdXNlLW1lcmdlXCI7XG5cbi8qKlxuICog5p+l6K+i5qGG57uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hWMVwiLFxuICBjb21wb25lbnRzOiB7IEZzU2VhcmNoQnV0dG9ucyB9LFxuICBpbmhlcml0QXR0cnM6IGZhbHNlLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWIneWni+afpeivouadoeS7tlxuICAgICAqIOeCueWHu+mHjee9ru+8jOS8mumHjee9ruaIkOivpeadoeS7tlxuICAgICAqL1xuICAgIGluaXRpYWxGb3JtOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOihqOWNleWPguaVsFxuICAgICAqIOaUr+aMgWVsLWZvcm0gfCBhLWZvcm3nmoTlsZ7mgKdcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOafpeivouWtl+autemFjee9rlxuICAgICAqL1xuICAgIGNvbHVtbnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICogdGFic1xuICAgICAqIHsgc2hvdyAsIG9wdGlvbnMsa2V5LCBkZWZhdWx0fVxuICAgICAqL1xuICAgIHRhYnM6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5oyJ6ZKu6YWN572uLOWPr+S7peagueaNrm9yZGVy5o6S5bqPXG4gICAgICoge3NlYXJjaDp7Li4uRnNCdXR0b259LHJlc2V0OnsuLi5Gc0J1dHRvbn19XG4gICAgICovXG4gICAgYnV0dG9uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDngrnlh7vph43nva7lkI7mmK/lkKbnq4vljbPop6blj5Hmn6Xor6JcbiAgICAgKi9cbiAgICBzZWFyY2hBZnRlclJlc2V0OiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogdHJ1ZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5byA5ZCv6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgYXV0b1NlYXJjaDoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWKqOafpeivou+8jOmYsuaKluiuvue9rlxuICAgICAqIOS8oGZhbHNl5YiZ5YWz6Zet6Ieq5Yqo5p+l6K+iXG4gICAgICovXG4gICAgZGVib3VuY2U6IHtcbiAgICAgIHR5cGU6IFtCb29sZWFuLCBPYmplY3RdLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmj5Lmp71cbiAgICAgKi9cbiAgICBzbG90czoge1xuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S65p+l6K+i5qGGXG4gICAgICovXG4gICAgc2hvdzoge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWQr+eUqOagoemqjFxuICAgICAqL1xuICAgIHZhbGlkYXRlOiB7XG4gICAgICBkZWZhdWx0OiBmYWxzZVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5biD5bGALCBzaW5nbGUtbGluZSDljZXooYzvvIwgbXVsdGktbGluZSDlpJrooYzvvIjmlK/mjIHlsZXlvIDmlLbotbfvvIlcbiAgICAgKi9cbiAgICBsYXlvdXQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwic2luZ2xlLWxpbmVcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YiX55qE5a695bqm6K6+572u77yMc3Bhbj14eFxuICAgICAqL1xuICAgIGNvbDoge30sXG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmipjlj6BcbiAgICAgKi9cbiAgICBjb2xsYXBzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOafpeivouS6i+S7tlxuICAgICAqKi9cbiAgICBcInNlYXJjaFwiLFxuICAgIC8qKlxuICAgICAqIOmHjee9ruS6i+S7tlxuICAgICAqKi9cbiAgICBcInJlc2V0XCIsXG4gICAgXCJjb2xsYXBzZVwiLFxuICAgIFwidXBkYXRlOmNvbGxhcHNlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgLy8g5byC5q2lc2V0dXDpnIDopoHmlL7lnKjnrKzkuIDkuKphd2FpdOS5i+WJjVxuICAgIC8vIG9uTW91bnRlZCBpcyBjYWxsZWQgd2hlbiB0aGVyZSBpcyBubyBhY3RpdmUgY29tcG9uZW50IGluc3RhbmNlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aC5cbiAgICAvL+S4uuWVpeS8muaciei/meS4quitpuWRilxuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICBpZiAoY29tcHV0ZWRJc011bHRpTGluZS52YWx1ZSAmJiBjb2x1bW5zUm93UmVmLnZhbHVlKSB7XG4gICAgICAgIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zUm93UmVmLnZhbHVlLiRlbC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNvbHVtbnNMaXN0ID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwuY2hpbGRyZW47XG4gICAgICAgIGlmIChjb2x1bW5zTGlzdCAmJiBjb2x1bW5zTGlzdC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgPSBjb2x1bW5zTGlzdFsxXS5vZmZzZXRIZWlnaHQgKyAyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBsZXQgYXV0b1NlYXJjaDogYW55ID0gbnVsbDtcbiAgICBmdW5jdGlvbiBjcmVhdGVJbml0aWFsRm9ybSgpIHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIGNsb25lRGVlcChwcm9wcy5pbml0aWFsRm9ybSB8fCB7fSk7XG4gICAgfVxuICAgIGNvbnN0IGZvcm0gPSByZWFjdGl2ZShjcmVhdGVJbml0aWFsRm9ybSgpKTtcbiAgICBjb25zdCB7IGRvQ29tcHV0ZWQsIEFzeW5jQ29tcHV0ZVZhbHVlIH0gPSB1c2VDb21wdXRlKCk7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgZWFjaChwcm9wcy5jb2x1bW5zLCAoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udmFsdWUgIT0gbnVsbCAmJiBpdGVtLnZhbHVlIGluc3RhbmNlb2YgQXN5bmNDb21wdXRlVmFsdWUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXCJzZWFyY2gudmFsdWXphY3nva7kuI3mlK/mjIFBc3luY0NvbXB1dGXnsbvlnovnmoTliqjmgIHorqHnrpdcIik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcbiAgICBjb25zdCBkb01lcmdlID0gbWVyZ2U7XG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5zID0gZG9Db21wdXRlZChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHJldHVybiBwcm9wcy5jb2x1bW5zO1xuICAgICAgfSxcbiAgICAgIGdldENvbnRleHRGbixcbiAgICAgIG51bGwsXG4gICAgICAodmFsdWUpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGlmICghcHJvcHMudmFsaWRhdGUpIHtcbiAgICAgICAgICAvL+WmguaenOWFs+mXrXZhbGlkYXRl5YiZ5Y675o6JcnVsZXNcbiAgICAgICAgICBmb3JFYWNoKHZhbHVlLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgZGVsZXRlIGl0ZW0ucnVsZXM7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8g5ZCI5bm2Y29sXG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBpZiAocHJvcHMuY29sKSB7XG4gICAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKHYpID0+IHtcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICAgICAgdi5jb2wgPSBtZXJnZSh7fSwgcHJvcHMuY29sLCB2LmNvbCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvL+Wtl+auteaOkuW6j1xuICAgICAgICBsZXQgc29ydEFycjogU2VhcmNoSXRlbVByb3BzW10gPSBbXTtcbiAgICAgICAgZm9yRWFjaCh2YWx1ZSwgKHYsIGtleSkgPT4ge1xuICAgICAgICAgIHYuX2tleSA9IGtleTtcbiAgICAgICAgICBzb3J0QXJyLnB1c2godik7XG4gICAgICAgIH0pO1xuICAgICAgICBzb3J0QXJyID0gc29ydEJ5KHNvcnRBcnIsIChpdGVtKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGl0ZW0ub3JkZXIgPz8gQ29uc3RhbnRzLm9yZGVyRGVmYXVsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc29ydGVkQ29sdW1uczoge1xuICAgICAgICAgIFtrZXk6IHN0cmluZ106IFNlYXJjaEl0ZW1Qcm9wcztcbiAgICAgICAgfSA9IHt9O1xuXG4gICAgICAgIHNvcnRBcnIuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGxldCBfa2V5ID0gaXRlbS5fa2V5O1xuICAgICAgICAgIGRlbGV0ZSBpdGVtLl9rZXk7XG4gICAgICAgICAgc29ydGVkQ29sdW1uc1tfa2V5XSA9IGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc29ydGVkQ29sdW1ucztcbiAgICAgIH1cbiAgICApO1xuXG4gICAgLy/pu5jorqTlgLxcbiAgICBmb3JFYWNoKGNvbXB1dGVkQ29sdW1ucy52YWx1ZSwgKGNvbHVtbiwga2V5KSA9PiB7XG4gICAgICBpZiAoY29sdW1uLnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZGVmVmFsdWUgPSB1bnJlZihjb2x1bW4udmFsdWUpO1xuICAgICAgaWYgKGRlZlZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29sdW1uLnNob3cgIT09IGZhbHNlICYmIGNvbHVtbi5jb21wb25lbnQ/LnNob3cgIT09IGZhbHNlKSB7XG4gICAgICAgIC8v6buY6K6k5YC8XG4gICAgICAgIGZvcm1ba2V5XSA9IGRlZlZhbHVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNlYXJjaEZvcm1SZWYgPSByZWYoKTtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCBjb21wb25lbnRSZW5kZXJSZWZzOiBSZWYgPSByZWYoe30pO1xuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudFJlbmRlclJlZihrZXk6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGNvbXBvbmVudFJlbmRlclJlZnMudmFsdWVba2V5XTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb21wb25lbnRSZWYoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgICAgcmV0dXJuIGdldENvbXBvbmVudFJlbmRlclJlZihrZXkpPy4kcmVmcz8udGFyZ2V0UmVmO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbnRleHRGbigpOiBTZWFyY2hFdmVudENvbnRleHQge1xuICAgICAgcmV0dXJuIHsgZm9ybSwgdmFsaWRhdGVkRm9ybTogZm9ybSwgZ2V0Q29tcG9uZW50UmVmLCBkb1ZhbGlkYXRlOiBudWxsIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoRXZlbnRDb250ZXh0UmVmOiBSZWY8U2VhcmNoRXZlbnRDb250ZXh0PiA9IHJlZihnZXRDb250ZXh0Rm4oKSk7XG5cbiAgICBhc3luYyBmdW5jdGlvbiBkb1NlYXJjaCgpIHtcbiAgICAgIGlmIChhdXRvU2VhcmNoKSB7XG4gICAgICAgIC8vIOmYsuaKluafpeivouWPlua2iFxuICAgICAgICBhdXRvU2VhcmNoLmNhbmNlbCgpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB2YWxpZCA9IGF3YWl0IHVpLmZvcm0udmFsaWRhdGVXcmFwKHNlYXJjaEZvcm1SZWYudmFsdWUpO1xuICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VhcmNoXCIsIHNlYXJjaEV2ZW50Q29udGV4dFJlZi52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aS5tZXNzYWdlLmVycm9yKHtcbiAgICAgICAgICBtZXNzYWdlOiB0KFwiZnMuc2VhcmNoLmVycm9yLm1lc3NhZ2VcIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBkb1Jlc2V0KCkge1xuICAgICAgLy8gdWkuZm9ybS5yZXNldFdyYXAoc2VhcmNoRm9ybVJlZi52YWx1ZSwgeyBmb3JtLCBpbml0aWFsRm9ybTogY3JlYXRlSW5pdGlhbEZvcm0oKSB9KTtcbiAgICAgIGNvbnN0IGluaXRpYWxGb3JtID0gY3JlYXRlSW5pdGlhbEZvcm0oKTtcbiAgICAgIGNvbnN0IGVudHJpZXNSZXQgPSBlbnRyaWVzKGZvcm0pO1xuICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzUmV0KSB7XG4gICAgICAgIGNvbnN0IGluaXRpYWxWYWx1ZSA9IGdldChpbml0aWFsRm9ybSwgZW50cnlbMF0pO1xuICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICB1bnNldChmb3JtLCBlbnRyeVswXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0KGZvcm0sIGVudHJ5WzBdLCBpbml0aWFsVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5yZXNldCkge1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgcHJvcHMucmVzZXQoc2VhcmNoRXZlbnRDb250ZXh0UmVmLnZhbHVlKTtcbiAgICAgIH1cbiAgICAgIC8vIOihqOWNlemHjee9ruS6i+S7tlxuICAgICAgY3R4LmVtaXQoXCJyZXNldFwiLCBnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5zZWFyY2hBZnRlclJlc2V0KSB7XG4gICAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICBkb1NlYXJjaCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRCdXR0b25zID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgY29uc3QgYnRuczogYW55ID0gW107XG4gICAgICBjb25zdCBkZWZCdG5PcHRpb25zOiBCdXR0b25zUHJvcHM8U2VhcmNoRXZlbnRDb250ZXh0PiA9IHtcbiAgICAgICAgc2VhcmNoOiB7XG4gICAgICAgICAgc2hvdzogdHJ1ZSxcbiAgICAgICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgICAgICBkaXNhYmxlZDogZmFsc2UsXG4gICAgICAgICAgY2xpY2s6IChjb250ZXh0OiBTZWFyY2hFdmVudENvbnRleHQpID0+IHtcbiAgICAgICAgICAgIGRvU2VhcmNoKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnNlYXJjaC50ZXh0XCIpIC8vICfmn6Xor6InLFxuICAgICAgICB9LFxuICAgICAgICByZXNldDoge1xuICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGNsaWNrOiAoY29udGV4dDogU2VhcmNoRXZlbnRDb250ZXh0KSA9PiB7XG4gICAgICAgICAgICBkb1Jlc2V0KCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZXh0OiB0KFwiZnMuc2VhcmNoLnJlc2V0LnRleHRcIiksIC8vICfph43nva4nLFxuICAgICAgICAgIG9yZGVyOiAyXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIG1lcmdlKGRlZkJ0bk9wdGlvbnMsIHByb3BzLmJ1dHRvbnMpO1xuICAgICAgZm9yIChsZXQga2V5IGluIGRlZkJ0bk9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgYnRuID0gZGVmQnRuT3B0aW9uc1trZXldO1xuICAgICAgICBidG4uX2NsaWNrID0gKCkgPT4ge1xuICAgICAgICAgIGJ0bi5jbGljayhnZXRDb250ZXh0Rm4oKSk7XG4gICAgICAgIH07XG4gICAgICAgIGJ0bnMucHVzaChidG4pO1xuICAgICAgfVxuXG4gICAgICBidG5zLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBhLm9yZGVyIC0gYi5vcmRlcjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJ0bnM7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBpbml0QXV0b1NlYXJjaCgpIHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKHByb3BzLmF1dG9TZWFyY2ggPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIOaehOW7uumYsuaKluafpeivouWHveaVsFxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuZGVib3VuY2UgIT09IGZhbHNlKSB7XG4gICAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgICBsZXQgd2FpdCA9IHByb3BzLmRlYm91bmNlPy53YWl0IHx8IDUwMDtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGF1dG9TZWFyY2ggPSBkZWJvdW5jZShkb1NlYXJjaCwgd2FpdCwgcHJvcHMuZGVib3VuY2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluaXRBdXRvU2VhcmNoKCk7XG5cbiAgICBmdW5jdGlvbiBnZXRGb3JtKCkge1xuICAgICAgcmV0dXJuIGZvcm07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572uZm9ybeWAvFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIHNldEZvcm0obmV3Rm9ybTogYW55LCBtZXJnZSA9IHRydWUpIHtcbiAgICAgIGlmICghbWVyZ2UpIHtcbiAgICAgICAgZWFjaChrZXlzKGZvcm0pLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGRlbGV0ZSBmb3JtW2l0ZW1dO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGRvTWVyZ2UoZm9ybSwgbmV3Rm9ybSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXRFdmVudERpc2FibGVkID0gcmVmKGZhbHNlKTtcblxuICAgIGNvbnN0IGRvQXV0b1NlYXJjaCA9ICgpID0+IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhcImRvIGF1dG8gc2VhcmNoLGlucHV0RXZlbnREaXNhYmxlZDpcIiwgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlKTtcbiAgICAgIGlmIChpbnB1dEV2ZW50RGlzYWJsZWQudmFsdWUgIT09IHRydWUgJiYgYXV0b1NlYXJjaCkge1xuICAgICAgICAvLyDpmLLmipbmn6Xor6JcbiAgICAgICAgYXV0b1NlYXJjaCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBvbklucHV0ID0gKGl0ZW06IGFueSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiaW5wdXRcIikge1xuICAgICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIC8vIOi+k+WFpeazleebkeWQrFxuICAgIGNvbnN0IGNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCA9IChkaXNhYmxlZDogYm9vbGVhbikgPT4ge1xuICAgICAgaW5wdXRFdmVudERpc2FibGVkLnZhbHVlID0gZGlzYWJsZWQ7XG4gICAgICBkb0F1dG9TZWFyY2goKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gb25WYWx1ZUNoYW5nZWQodmFsdWU6IGFueSwgaXRlbTogU2VhcmNoSXRlbVByb3BzKSB7XG4gICAgICBjb25zdCBrZXkgPSBpdGVtLmtleTtcbiAgICAgIHNldChmb3JtLCBrZXksIHZhbHVlKTtcbiAgICAgIGlmIChpdGVtLnZhbHVlQ2hhbmdlKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGl0ZW0ua2V5O1xuICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1ba2V5XTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gZ2V0Q29tcG9uZW50UmVmKGtleSk7XG4gICAgICAgIGNvbnN0IHZhbHVlQ2hhbmdlID0gaXRlbS52YWx1ZUNoYW5nZSBpbnN0YW5jZW9mIEZ1bmN0aW9uID8gaXRlbS52YWx1ZUNoYW5nZSA6IGl0ZW0udmFsdWVDaGFuZ2UuaGFuZGxlO1xuICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgdmFsdWVDaGFuZ2UoeyBrZXksIHZhbHVlLCBjb21wb25lbnRSZWYsIC4uLmdldENvbnRleHRGbigpLCBpbW1pZGlhdGU6IGZhbHNlIH0pO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT0gbnVsbCB8fCBpdGVtLmF1dG9TZWFyY2hUcmlnZ2VyID09PSB0cnVlIHx8IGl0ZW0uYXV0b1NlYXJjaFRyaWdnZXIgPT09IFwiY2hhbmdlXCIpIHtcbiAgICAgICAgZG9BdXRvU2VhcmNoKCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRSdWxlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgaWYgKCFwcm9wcy52YWxpZGF0ZSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25zLnJ1bGVzO1xuICAgIH0pO1xuXG4gICAgLy8tLS0tLeWkmuihjOaooeW8j+aKmOWPoFxuXG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xuICAgIGNvbnN0IGNvbHVtbnNCb3hIZWlnaHRSZWYgPSByZWYoMCk7XG4gICAgY29uc3QgY29sdW1uc0xpbmVIZWlnaHRSZWYgPSByZWYoMCk7XG5cbiAgICBjb25zdCB0b2dnbGVDb2xsYXBzZSA9ICgpID0+IHtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcbiAgICAgIC8vQHRzLWlnbm9yZVxuICAgICAgY3R4LmVtaXQoXCJjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgIH07XG5cbiAgICBjb25zdCBjb21wdXRlZENvbE5hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIGlmIChwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiKSB7XG4gICAgICAgIHJldHVybiB1aS5jb2wubmFtZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBcImRpdlwiO1xuICAgIH0pO1xuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvL0B0cy1pZ25vcmVcbiAgICAgIHJldHVybiBwcm9wcy5sYXlvdXQgPT09IFwibXVsdGktbGluZVwiO1xuICAgICAgLy/kuI3opoHov5nkuKrvvIzkvJrmrbvlvqrnjq/vvIwgJiYgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA+IGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIFwiYXV0b1wiO1xuICAgICAgfVxuICAgICAgLy9AdHMtaWdub3JlXG4gICAgICBpZiAocHJvcHMuY29sbGFwc2UpIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNMaW5lSGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPyBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlICsgXCJweFwiIDogXCJcIjtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBnZXQ6IChmb3JtOiBhbnksIGtleTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBnZXQoZm9ybSwga2V5KTtcbiAgICAgIH0sXG4gICAgICB1aSxcbiAgICAgIG9uVmFsdWVDaGFuZ2VkLFxuICAgICAgZG9TZWFyY2gsXG4gICAgICBkb1Jlc2V0LFxuICAgICAgZm9ybSxcbiAgICAgIGNvbXBvbmVudFJlbmRlclJlZnMsXG4gICAgICBnZXRDb21wb25lbnRSZW5kZXJSZWYsXG4gICAgICBnZXRDb21wb25lbnRSZWYsXG4gICAgICBnZXRGb3JtLFxuICAgICAgc2V0Rm9ybSxcbiAgICAgIHNlYXJjaEZvcm1SZWYsXG4gICAgICBvbklucHV0LFxuICAgICAgaW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY2hhbmdlSW5wdXRFdmVudERpc2FibGVkLFxuICAgICAgY29tcHV0ZWRDb2x1bW5zLFxuICAgICAgY29tcHV0ZWRCdXR0b25zLFxuICAgICAgY29tcHV0ZWRSdWxlcyxcbiAgICAgIGNvbHVtbnNSb3dSZWYsXG4gICAgICBjb21wdXRlZENvbHVtbkJveEhlaWdodCxcbiAgICAgIGNvbXB1dGVkQ29sTmFtZSxcbiAgICAgIGNvbXB1dGVkSXNNdWx0aUxpbmUsXG4gICAgICB0b2dnbGVDb2xsYXBzZSxcbiAgICAgIHNlYXJjaEV2ZW50Q29udGV4dFJlZlxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1zZWFyY2gge1xuICAvL2Rpc3BsYXk6IGZsZXg7XG4gIC8vZmxleC13cmFwOiBub3dyYXA7XG4gIC5zZWFyY2gtbGVmdCB7XG4gIH1cbiAgLnNlYXJjaC1yaWdodCB7XG4gICAgZmxleDogMTtcbiAgfVxuICAuYW50LWZvcm0taW5saW5lIHtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gIH1cbiAgLmZzLXNlYXJjaC1mb3JtIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIC8vJiA+ICoge1xuICAgIC8vICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgLy8gIG1hcmdpbi10b3A6IDRweDtcbiAgICAvLyAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgIC8vfVxuXG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgICB9XG4gICAgfVxuICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgICYgPiAqIHtcbiAgICAgICAgbWFyZ2luOiAwcHggNXB4O1xuICAgICAgfVxuICAgICAgbWFyZ2luOiAxcHggMDtcbiAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAuZWwtZm9ybS1pdGVtIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIH1cblxuICAgIC5lbC1mb3JtLS1pbmxpbmUge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfVxuXG4gICAgLmVsLWZvcm0taXRlbV9fY29udGVudCB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB9XG4gIH1cblxuICAuZnMtc2VhcmNoLWJ0bnMge1xuICAgIC5mcy1idXR0b24ge1xuICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gICAgfVxuICB9XG5cbiAgJi5mcy1zZWFyY2gtbXVsdGktbGluZSB7XG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgLmZzLXNlYXJjaC1jb2x1bW5zIHtcbiAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgb3ZlcmZsb3cteTogaGlkZGVuO1xuICAgICAgICAgIC8vIHRyYW5zaXRpb246IGFsbCAwLjNzIGxpbmVhcjtcbiAgICAgICAgICAvLyB3aWxsLWNoYW5nZTogaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIC5mcy1zZWFyY2gtYnRucyB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICAgICAgICAuZWwtZm9ybS1pdGVtX19jb250ZW50IHtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC5uLWZvcm0taXRlbS1ibGFuayB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC5mcy1zZWFyY2gtYWN0aW9uIHtcbiAgICAgIC5hbnQtZm9ybS1pdGVtIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAycHg7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi5mcy1zZWFyY2gge1xuICAubi1mb3JtLWl0ZW0tYmxhbmsge1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWxheW91dC1kZWZhdWx0XCIgOmNsYXNzPVwieyAnZnMtc2VhcmNoLW11bHRpLWxpbmUnOiBjb21wdXRlZElzTXVsdGlMaW5lIH1cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZnMtc2VhcmNoLWJveFwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1tYWluXCJcbiAgICAgICAgOmNsYXNzPVwieyAnZnMtc2VhcmNoLWNvbGxhcHNlJzogY29sbGFwc2UgfVwiXG4gICAgICAgIDpzdHlsZT1cInsgbWF4SGVpZ2h0OiBjb21wdXRlZENvbHVtbkJveEhlaWdodCB9XCJcbiAgICAgID5cbiAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5yb3cubmFtZVwiIHJlZj1cImNvbHVtbnNSb3dSZWZcIiBjbGFzcz1cImZzLXNlYXJjaC1jb2x1bW5zXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1zbG90XCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWxlZnRcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwhLS0g5p+l6K+i5a2X5q61cmVuZGVy77yM6ZyA6KaB5a6a5LmJcHJvcHMuY29sdW1ucyAtLT5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwga2V5KSBvZiBjb2x1bW5zXCIgOmtleT1cImtleVwiPlxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jb2wubmFtZVwiIHYtaWY9XCJpdGVtLnNob3dcIiBjbGFzcz1cImZzLXNlYXJjaC1jb2xcIiB2LWJpbmQ9XCJtZXJnZUNvbChpdGVtLmNvbClcIj5cbiAgICAgICAgICAgICAgPGZzLXJlbmRlciA6cmVuZGVyLWZ1bmM9XCJpdGVtLl9jZWxsUmVuZGVyXCIgOnNjb3BlPVwiZ2V0Q29udGV4dEZuKClcIiAvPlxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtbWlkZGxlXCI+PC9zbG90PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgICA6aXM9XCJ1aS5jb2wubmFtZVwiXG4gICAgICAgICAgICB2LWlmPVwiIWNvbXB1dGVkSXNNdWx0aUxpbmVcIlxuICAgICAgICAgICAgY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1idXR0b25zLWdyb3VwXCJcbiAgICAgICAgICAgIHYtYmluZD1cIm1lcmdlQ29sKGFjdGlvbj8uY29sKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5mb3JtSXRlbS5uYW1lXCIgOlt1aS5mb3JtSXRlbS5sYWJlbF09XCJhY3Rpb24/LmxhYmVsXCI+XG4gICAgICAgICAgICAgIDwhLS0g5p+l6K+i5oyJ6ZKu5o+S5qe9LS0+XG4gICAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtYnV0dG9uc1wiIHYtYmluZD1cImdldENvbnRleHRGbigpXCI+PC9zbG90PlxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmcy1zZWFyY2gtY29sIGZzLXNlYXJjaC1zbG90XCI+XG4gICAgICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLXJpZ2h0XCIgdi1iaW5kPVwiZ2V0Q29udGV4dEZuKClcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiB2LWlmPVwiY29tcHV0ZWRJc011bHRpTGluZVwiIGNsYXNzPVwiZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXAgZnMtc2VhcmNoLW11bHRpLWxpbmUtYnV0dG9uc1wiPlxuICAgICAgICA8IS0tIOWkmuihjOaooeW8j+aXtueahOafpeivouaMiemSri0tPlxuICAgICAgICA8c2xvdCBuYW1lPVwic2VhcmNoLWJ1dHRvbnNcIj48L3Nsb3Q+XG4gICAgICAgIDxmcy1idXR0b25cbiAgICAgICAgICB2LWlmPVwiY29sbGFwc2VCdXR0b24/LnNob3cgIT09IGZhbHNlXCJcbiAgICAgICAgICA6aWNvbj1cImNvbGxhcHNlID8gdWkuaWNvbnMuY2FyZXREb3duIDogdWkuaWNvbnMuY2FyZXRVcFwiXG4gICAgICAgICAgOnRleHQ9XCJcbiAgICAgICAgICAgIGNvbGxhcHNlXG4gICAgICAgICAgICAgID8gdCgnZnMuc2VhcmNoLmNvbnRhaW5lci5jb2xsYXBzZUJ1dHRvbi50ZXh0LmV4cGFuZCcpXG4gICAgICAgICAgICAgIDogdCgnZnMuc2VhcmNoLmNvbnRhaW5lci5jb2xsYXBzZUJ1dHRvbi50ZXh0LmNvbGxhcHNlJylcbiAgICAgICAgICBcIlxuICAgICAgICAgIHYtYmluZD1cImNvbGxhcHNlQnV0dG9uXCJcbiAgICAgICAgICBAY2xpY2s9XCJ0b2dnbGVDb2xsYXBzZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgb25Nb3VudGVkLCByZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBtZXJnZSB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNTZWFyY2hMYXlvdXREZWZhdWx0XCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5piv5ZCm5pS257ypXG4gICAgICovXG4gICAgY29sbGFwc2U6IHtcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZWZhdWx0OiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlsZXlvIDmjInpkq5cbiAgICAgKi9cbiAgICBjb2xsYXBzZUJ1dHRvbjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcblxuICAgIGFjdGlvbjoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDluIPlsYDmqKHlvI9cbiAgICAgKi9cbiAgICBsYXlvdXQ6IHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlZmF1bHQ6IFwic2luZ2xlLWxpbmVcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5p+l6K+i5a2X5q615YiX6KGo77yM5Y+v5Lul57K+57uG5YyW6Ieq5a6a5LmJ5p+l6K+i5a2X5q615biD5bGAXG4gICAgICovXG4gICAgY29sdW1uczoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDpu5jorqTnmoRjb2zphY3nva5cbiAgICAgKi9cbiAgICBjb2w6IHtcbiAgICAgIHR5cGU6IE9iamVjdFxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDojrflj5bmn6Xor6LkuIrkuIvmlodcbiAgICAgKi9cbiAgICBnZXRDb250ZXh0Rm46IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfVxuICB9LFxuICBlbWl0czogW1widXBkYXRlOmNvbGxhcHNlXCIsIFwiY29sbGFwc2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuICAgIGNvbnN0IGNvbHVtbnNSb3dSZWYgPSByZWYoKTtcbiAgICBjb25zdCBjb21wdXRlZElzTXVsdGlMaW5lID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLmxheW91dCA9PT0gXCJtdWx0aS1saW5lXCI7XG4gICAgICAvL+S4jeimgei/meS4qu+8jOS8muatu+W+queOr++8jCAmJiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID4gY29sdW1uc0xpbmVIZWlnaHRSZWYudmFsdWU7XG4gICAgfSk7XG4gICAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAgIGlmIChjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlICYmIGNvbHVtbnNSb3dSZWYudmFsdWUpIHtcbiAgICAgICAgY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA9IGNvbHVtbnNSb3dSZWYudmFsdWUuJGVsLm9mZnNldEhlaWdodDtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKCFjb21wdXRlZElzTXVsdGlMaW5lLnZhbHVlIHx8ICFwcm9wcy5jb2xsYXBzZSkge1xuICAgICAgICByZXR1cm4gXCJhdXRvXCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSA/IGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgKyBcInB4XCIgOiBcIlwiO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY29sdW1uc0JveEhlaWdodFJlZiA9IHJlZigwKTtcblxuICAgIGNvbnN0IHRvZ2dsZUNvbGxhcHNlID0gKCkgPT4ge1xuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6Y29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcbiAgICAgIGN0eC5lbWl0KFwiY29sbGFwc2VcIiwgIXByb3BzLmNvbGxhcHNlKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gbWVyZ2VDb2woY29sOiBhbnkpIHtcbiAgICAgIHJldHVybiBtZXJnZSh7fSwgcHJvcHMuY29sLCBjb2wpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbHVtbnNSb3dSZWYsXG4gICAgICBjb21wdXRlZENvbHVtbkJveEhlaWdodCxcbiAgICAgIGNvbXB1dGVkSXNNdWx0aUxpbmUsXG4gICAgICB0b2dnbGVDb2xsYXBzZSxcbiAgICAgIG1lcmdlQ29sLFxuICAgICAgdFxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHQge1xuICB3aWR0aDogMTAwJTtcblxuICAuZnMtc2VhcmNoLWJveCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5mcy1zZWFyY2gtbWFpbiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBoZWlnaHQ6IGF1dG87XG5cbiAgICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xuICAgICAgICB3aWR0aDogNTAlO1xuICAgICAgfVxuXG4gICAgICAuZnMtc2VhcmNoLWNvbHVtbnMge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC13cmFwOiB3cmFwO1xuICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDRweCAwIDRweCAwO1xuXG4gICAgICAgIC5mcy1zZWFyY2gtY29sIHtcbiAgICAgICAgICBtaW4td2lkdGg6IDE4MHB4O1xuICAgICAgICAgICYuZnMtc2VhcmNoLXNsb3Qge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICAmID4gKiB7XG4gICAgICAgICAgICBtYXJnaW46IDBweCA0cHg7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWFyZ2luOiA0cHggMDtcblxuICAgICAgICAgICY6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgLy8gbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmFudC1mb3JtLWl0ZW0tbGFiZWwge1xuICAgICAgICAgICAgbWF4LXdpZHRoOiA1MCU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLmFudC1pbnB1dC1udW1iZXIsXG4gICAgICAgICAgLmFudC1waWNrZXIsXG4gICAgICAgICAgLmVsLWlucHV0LW51bWJlcixcbiAgICAgICAgICAuZWwtY2FzY2FkZXIsXG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yLFxuICAgICAgICAgIC5uLXNlbGVjdCxcbiAgICAgICAgICAubi1kYXRlLXBpY2tlcixcbiAgICAgICAgICAubi1pbnB1dC1udW1iZXIge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2ljb24ge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC5lbC1kYXRlLWVkaXRvciAuZWwtcmFuZ2VfX2Nsb3NlLWljb24ge1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5mcy1zZWFyY2gtYnV0dG9ucy1ncm91cCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgLmZzLWJ1dHRvbiB7XG4gICAgICBtYXJnaW46IDAgMnB4IDAgMnB4O1xuICAgIH1cbiAgfVxuXG4gICYuZnMtc2VhcmNoLW11bHRpLWxpbmUge1xuICAgIC5mcy1zZWFyY2gtYm94IHtcbiAgICAgIC5mcy1zZWFyY2gtbWFpbiB7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCAwLjJzIGVhc2U7XG4gICAgICAgICYuZnMtc2VhcmNoLWNvbGxhcHNlIHtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA0MnB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAuYW50LWZvcm0taXRlbSB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAuYW50LWZvcm0tcm93IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICAuYW50LWZvcm0taXRlbS1yb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5hbnQtZm9ybS1pdGVtLWNvbnRyb2wge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtbGF5b3V0LWRlZmF1bHRcIiA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtbXVsdGktbGluZSc6IGNvbXB1dGVkSXNNdWx0aUxpbmUgfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmcy1zZWFyY2gtYm94XCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZnMtc2VhcmNoLW1haW5cIlxuICAgICAgICA6Y2xhc3M9XCJ7ICdmcy1zZWFyY2gtY29sbGFwc2UnOiBjb2xsYXBzZSB9XCJcbiAgICAgICAgOnN0eWxlPVwieyBtYXhIZWlnaHQ6IGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0IH1cIlxuICAgICAgPlxuICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLnJvdy5uYW1lXCIgcmVmPVwiY29sdW1uc1Jvd1JlZlwiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbHVtbnNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtbGVmdFwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPCEtLSDmn6Xor6LlrZfmrrVyZW5kZXLvvIzpnIDopoHlrprkuYlwcm9wcy5jb2x1bW5zIC0tPlxuICAgICAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBrZXkpIG9mIGNvbHVtbnNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmNvbC5uYW1lXCIgdi1pZj1cIml0ZW0uc2hvd1wiIGNsYXNzPVwiZnMtc2VhcmNoLWNvbFwiIHYtYmluZD1cIm1lcmdlQ29sKGl0ZW0uY29sKVwiPlxuICAgICAgICAgICAgICA8ZnMtcmVuZGVyIDpyZW5kZXItZnVuYz1cIml0ZW0uX2NlbGxSZW5kZXJcIiA6c2NvcGU9XCJnZXRDb250ZXh0Rm4oKVwiIC8+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnMtc2VhcmNoLWNvbCBmcy1zZWFyY2gtc2xvdFwiPlxuICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1taWRkbGVcIj48L3Nsb3Q+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgIDppcz1cInVpLmNvbC5uYW1lXCJcbiAgICAgICAgICAgIHYtaWY9XCIhY29tcHV0ZWRJc011bHRpTGluZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLWJ1dHRvbnMtZ3JvdXBcIlxuICAgICAgICAgICAgdi1iaW5kPVwibWVyZ2VDb2woYWN0aW9uPy5jb2wpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLm5hbWVcIiA6W3VpLmZvcm1JdGVtLmxhYmVsXT1cImFjdGlvbj8ubGFiZWxcIj5cbiAgICAgICAgICAgICAgPCEtLSDmn6Xor6LmjInpkq7mj5Lmp70tLT5cbiAgICAgICAgICAgICAgPHNsb3QgbmFtZT1cInNlYXJjaC1idXR0b25zXCIgdi1iaW5kPVwiZ2V0Q29udGV4dEZuKClcIj48L3Nsb3Q+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImZzLXNlYXJjaC1jb2wgZnMtc2VhcmNoLXNsb3RcIj5cbiAgICAgICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtcmlnaHRcIiB2LWJpbmQ9XCJnZXRDb250ZXh0Rm4oKVwiPjwvc2xvdD5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IHYtaWY9XCJjb21wdXRlZElzTXVsdGlMaW5lXCIgY2xhc3M9XCJmcy1zZWFyY2gtYnV0dG9ucy1ncm91cCBmcy1zZWFyY2gtbXVsdGktbGluZS1idXR0b25zXCI+XG4gICAgICAgIDwhLS0g5aSa6KGM5qih5byP5pe255qE5p+l6K+i5oyJ6ZKuLS0+XG4gICAgICAgIDxzbG90IG5hbWU9XCJzZWFyY2gtYnV0dG9uc1wiPjwvc2xvdD5cbiAgICAgICAgPGZzLWJ1dHRvblxuICAgICAgICAgIHYtaWY9XCJjb2xsYXBzZUJ1dHRvbj8uc2hvdyAhPT0gZmFsc2VcIlxuICAgICAgICAgIDppY29uPVwiY29sbGFwc2UgPyB1aS5pY29ucy5jYXJldERvd24gOiB1aS5pY29ucy5jYXJldFVwXCJcbiAgICAgICAgICA6dGV4dD1cIlxuICAgICAgICAgICAgY29sbGFwc2VcbiAgICAgICAgICAgICAgPyB0KCdmcy5zZWFyY2guY29udGFpbmVyLmNvbGxhcHNlQnV0dG9uLnRleHQuZXhwYW5kJylcbiAgICAgICAgICAgICAgOiB0KCdmcy5zZWFyY2guY29udGFpbmVyLmNvbGxhcHNlQnV0dG9uLnRleHQuY29sbGFwc2UnKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgdi1iaW5kPVwiY29sbGFwc2VCdXR0b25cIlxuICAgICAgICAgIEBjbGljaz1cInRvZ2dsZUNvbGxhcHNlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IG1lcmdlIH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdXNlSTE4biB9IGZyb20gXCIuLi8uLi9sb2NhbGVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1NlYXJjaExheW91dERlZmF1bHRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlLbnvKlcbiAgICAgKi9cbiAgICBjb2xsYXBzZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOWxleW8gOaMiemSrlxuICAgICAqL1xuICAgIGNvbGxhcHNlQnV0dG9uOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuXG4gICAgYWN0aW9uOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW4g+WxgOaooeW8j1xuICAgICAqL1xuICAgIGxheW91dDoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVmYXVsdDogXCJzaW5nbGUtbGluZVwiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmn6Xor6LlrZfmrrXliJfooajvvIzlj6/ku6Xnsr7nu4bljJboh6rlrprkuYnmn6Xor6LlrZfmrrXluIPlsYBcbiAgICAgKi9cbiAgICBjb2x1bW5zOiB7XG4gICAgICB0eXBlOiBPYmplY3RcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOm7mOiupOeahGNvbOmFjee9rlxuICAgICAqL1xuICAgIGNvbDoge1xuICAgICAgdHlwZTogT2JqZWN0XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOiOt+WPluafpeivouS4iuS4i+aWh1xuICAgICAqL1xuICAgIGdldENvbnRleHRGbjoge1xuICAgICAgdHlwZTogRnVuY3Rpb25cbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJ1cGRhdGU6Y29sbGFwc2VcIiwgXCJjb2xsYXBzZVwiXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgY29sdW1uc1Jvd1JlZiA9IHJlZigpO1xuICAgIGNvbnN0IGNvbXB1dGVkSXNNdWx0aUxpbmUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMubGF5b3V0ID09PSBcIm11bHRpLWxpbmVcIjtcbiAgICAgIC8v5LiN6KaB6L+Z5Liq77yM5Lya5q275b6q546v77yMICYmIGNvbHVtbnNCb3hIZWlnaHRSZWYudmFsdWUgPiBjb2x1bW5zTGluZUhlaWdodFJlZi52YWx1ZTtcbiAgICB9KTtcbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgaWYgKGNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgJiYgY29sdW1uc1Jvd1JlZi52YWx1ZSkge1xuICAgICAgICBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID0gY29sdW1uc1Jvd1JlZi52YWx1ZS4kZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29tcHV0ZWRDb2x1bW5Cb3hIZWlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAoIWNvbXB1dGVkSXNNdWx0aUxpbmUudmFsdWUgfHwgIXByb3BzLmNvbGxhcHNlKSB7XG4gICAgICAgIHJldHVybiBcImF1dG9cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb2x1bW5zQm94SGVpZ2h0UmVmLnZhbHVlID8gY29sdW1uc0JveEhlaWdodFJlZi52YWx1ZSArIFwicHhcIiA6IFwiXCI7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjb2x1bW5zQm94SGVpZ2h0UmVmID0gcmVmKDApO1xuXG4gICAgY29uc3QgdG9nZ2xlQ29sbGFwc2UgPSAoKSA9PiB7XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTpjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgICAgY3R4LmVtaXQoXCJjb2xsYXBzZVwiLCAhcHJvcHMuY29sbGFwc2UpO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtZXJnZUNvbChjb2w6IGFueSkge1xuICAgICAgcmV0dXJuIG1lcmdlKHt9LCBwcm9wcy5jb2wsIGNvbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY29sdW1uc1Jvd1JlZixcbiAgICAgIGNvbXB1dGVkQ29sdW1uQm94SGVpZ2h0LFxuICAgICAgY29tcHV0ZWRJc011bHRpTGluZSxcbiAgICAgIHRvZ2dsZUNvbGxhcHNlLFxuICAgICAgbWVyZ2VDb2wsXG4gICAgICB0XG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXNlYXJjaC1sYXlvdXQtZGVmYXVsdCB7XG4gIHdpZHRoOiAxMDAlO1xuXG4gIC5mcy1zZWFyY2gtYm94IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIHdpZHRoOiA1MCU7XG4gICAgICB9XG5cbiAgICAgIC5mcy1zZWFyY2gtY29sdW1ucyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgcGFkZGluZzogNHB4IDAgNHB4IDA7XG5cbiAgICAgICAgLmZzLXNlYXJjaC1jb2wge1xuICAgICAgICAgIG1pbi13aWR0aDogMTgwcHg7XG4gICAgICAgICAgJi5mcy1zZWFyY2gtc2xvdCB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgICYgPiAqIHtcbiAgICAgICAgICAgIG1hcmdpbjogMHB4IDRweDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtYXJnaW46IDRweCAwO1xuXG4gICAgICAgICAgJjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAvLyBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuYW50LWZvcm0taXRlbS1sYWJlbCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDUwJTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAuYW50LWlucHV0LW51bWJlcixcbiAgICAgICAgICAuYW50LXBpY2tlcixcbiAgICAgICAgICAuZWwtaW5wdXQtbnVtYmVyLFxuICAgICAgICAgIC5lbC1jYXNjYWRlcixcbiAgICAgICAgICAuZWwtZGF0ZS1lZGl0b3IsXG4gICAgICAgICAgLm4tc2VsZWN0LFxuICAgICAgICAgIC5uLWRhdGUtcGlja2VyLFxuICAgICAgICAgIC5uLWlucHV0LW51bWJlciB7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9faWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMTBweDtcbiAgICAgICAgICB9XG4gICAgICAgICAgLmVsLWRhdGUtZWRpdG9yIC5lbC1yYW5nZV9fY2xvc2UtaWNvbiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmZzLXNlYXJjaC1idXR0b25zLWdyb3VwIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICAuZnMtYnV0dG9uIHtcbiAgICAgIG1hcmdpbjogMCAycHggMCAycHg7XG4gICAgfVxuICB9XG5cbiAgJi5mcy1zZWFyY2gtbXVsdGktbGluZSB7XG4gICAgLmZzLXNlYXJjaC1ib3gge1xuICAgICAgLmZzLXNlYXJjaC1tYWluIHtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZTtcbiAgICAgICAgJi5mcy1zZWFyY2gtY29sbGFwc2Uge1xuICAgICAgICAgIG1heC1oZWlnaHQ6IDQycHggIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC5hbnQtZm9ybS1pdGVtIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIC5hbnQtZm9ybS1yb3cge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIC5hbnQtZm9ybS1pdGVtLXJvdyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgfVxuICAgICAgLmFudC1mb3JtLWl0ZW0tY29udHJvbCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuPC9zdHlsZT5cbiIsIjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQgYXMgX19NQUNST1NfZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQgLyojX19QVVJFX18qLyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzVGFic0ZpbHRlclwiLFxuICBpbmhlcml0QXR0cnM6IGZhbHNlXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtdGFicy1maWx0ZXJcIj5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLnRhYnMubmFtZVwiIHYtYmluZD1cImJpbmRpbmdcIj5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkudGFiUGFuZS5uYW1lXCJcbiAgICAgICAgdi1pZj1cImRlZmF1bHRPcHRpb24uc2hvd1wiXG4gICAgICAgIDpbdWkudGFiUGFuZS5rZXldPVwiX19ERUZBVUxUX19cIlxuICAgICAgICA6W3VpLnRhYlBhbmUudGFiXT1cImRlZmF1bHRPcHRpb24ubGFiZWxcIlxuICAgICAgLz5cbiAgICAgIDxjb21wb25lbnRcbiAgICAgICAgOmlzPVwidWkudGFiUGFuZS5uYW1lXCJcbiAgICAgICAgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIG9mIG9wdGlvbnNcIlxuICAgICAgICA6a2V5PVwiaW5kZXhcIlxuICAgICAgICA6W3VpLnRhYlBhbmUua2V5XT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgICAgOlt1aS50YWJQYW5lLnRhYl09XCJnZXRMYWJlbChpdGVtKVwiXG4gICAgICAvPlxuICAgIDwvY29tcG9uZW50PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiIHNldHVwPlxuaW1wb3J0IHsgY29tcHV0ZWQsIHVzZUF0dHJzIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuO1xuXG50eXBlIFRhYnNGaWx0ZXJEZWZhdWx0T3B0aW9uID0geyBzaG93PzogYm9vbGVhbjsgdmFsdWU/OiBhbnk7IGxhYmVsPzogc3RyaW5nIH07XG50eXBlIFRhYnNGaWx0ZXJPcHRpb24gPSB7IHZhbHVlOiBhbnk7IGxhYmVsOiBzdHJpbmc7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuaW50ZXJmYWNlIFRhYnNGaWx0ZXJQcm9wcyB7XG4gIG5hbWU6IHN0cmluZzsgLy/mn6Xor6LlrZfmrrXnmoRrZXksc2VhcmNo5Y+C5pWwa2V5XG4gIHNob3c/OiBib29sZWFuO1xuICBkZWZhdWx0T3B0aW9uPzogVGFic0ZpbHRlckRlZmF1bHRPcHRpb247XG4gIG9wdGlvbnM6IFRhYnNGaWx0ZXJPcHRpb25bXTtcbiAgbW9kZWxWYWx1ZTogYW55O1xuICB2YWx1ZT86IHN0cmluZztcbiAgbGFiZWw/OiBzdHJpbmc7XG59XG5cbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKTtcbmNvbnN0IHsgbWVyZ2UgfSA9IHVzZU1lcmdlKCk7XG5jb25zdCBwcm9wcyA9IHdpdGhEZWZhdWx0cyhkZWZpbmVQcm9wczxUYWJzRmlsdGVyUHJvcHM+KCksIHtcbiAgc2hvdzogZmFsc2UsXG4gIHZhbHVlOiBcInZhbHVlXCIsXG4gIGxhYmVsOiBcImxhYmVsXCIsXG4gIGRlZmF1bHRPcHRpb246IHVuZGVmaW5lZCxcbiAgb3B0aW9uczogKCkgPT4ge1xuICAgIHJldHVybiBbXTtcbiAgfVxufSk7XG5cbmNvbnN0IGRlZmF1bHRPcHRpb24gPSBjb21wdXRlZCgoKSA9PiB7XG4gIGNvbnN0IGRlZiA9IHtcbiAgICBzaG93OiB0cnVlLFxuICAgIHZhbHVlOiBudWxsLFxuICAgIGxhYmVsOiBcIuWFqOmDqFwiXG4gIH0gYXMgVGFic0ZpbHRlckRlZmF1bHRPcHRpb247XG4gIHJldHVybiBtZXJnZShkZWYsIHByb3BzLmRlZmF1bHRPcHRpb24gfHwge30pO1xufSk7XG5cbmNvbnN0IF9fREVGQVVMVF9fID0gXCJfZGVmYXVsdF9rZXlfXCI7XG5jb25zdCBiaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCB2YWx1ZSA9XG4gICAgcHJvcHMubW9kZWxWYWx1ZSA9PSBudWxsIHx8IHByb3BzLm1vZGVsVmFsdWUgPT09IGRlZmF1bHRPcHRpb24udmFsdWUudmFsdWUgPyBfX0RFRkFVTFRfXyA6IHByb3BzLm1vZGVsVmFsdWU7XG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJjYXJkXCIsXG4gICAgLi4uYXR0cnMsXG4gICAgW3VpLnRhYnMubW9kZWxWYWx1ZV06IHZhbHVlLFxuICAgIFtcIm9uVXBkYXRlOlwiICsgdWkudGFicy5tb2RlbFZhbHVlXTogb25VcGRhdGVBY3RpdmVLZXlcbiAgfTtcbn0pO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1widXBkYXRlOm1vZGVsVmFsdWVcIiwgXCJjaGFuZ2VcIl0pO1xuXG5mdW5jdGlvbiBvblVwZGF0ZUFjdGl2ZUtleSh2YWx1ZTogYW55KSB7XG4gIGlmIChfX0RFRkFVTFRfXyA9PT0gdmFsdWUpIHtcbiAgICB2YWx1ZSA9IGRlZmF1bHRPcHRpb24udmFsdWUudmFsdWU7XG4gIH1cbiAgY29uc3Qgb2xkVmFsdWUgPSBwcm9wcy5tb2RlbFZhbHVlO1xuICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICBpZiAob2xkVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWUob3B0aW9uOiBUYWJzRmlsdGVyT3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb25bcHJvcHMudmFsdWVdO1xufVxuZnVuY3Rpb24gZ2V0TGFiZWwob3B0aW9uOiBUYWJzRmlsdGVyT3B0aW9uKSB7XG4gIHJldHVybiBvcHRpb25bcHJvcHMubGFiZWxdO1xufVxuXG5jb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLXRhYnMtZmlsdGVyIHtcbiAgbWFyZ2luOiAwO1xuICB3aWR0aDogMTAwJTtcbiAgLy93aWR0aDogMTAwJTtcbiAgLmFudC10YWJzID4gLmFudC10YWJzLW5hdixcbiAgLmFudC10YWJzID4gZGl2ID4gLmFudC10YWJzLW5hdiB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5lbC10YWJzLS1jYXJkID4gLmVsLXRhYnNfX2hlYWRlciB7XG4gICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgfVxuXG4gIC5uLXRhYi1wYW5lIHtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0ljb25TZWxlY3RvclwiXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtaWNvbi1zZWxlY3RvclwiPlxuICAgIDxjb21wb25lbnQgOmlzPVwidWkuaW5wdXQubmFtZVwiIHYtYmluZD1cImlucHV0QmluZGluZ1wiIEBjbGljaz1cImhhbmRsZUNsaWNrXCI+XG4gICAgICA8dGVtcGxhdGUgI3ByZWZpeD5cbiAgICAgICAgPGZzLWljb24gdi1pZj1cIm1vZGVsVmFsdWVcIiBjbGFzcz1cImZzLWljb24tc2VsZWN0b3ItaW5wdXQtcHJlZml4XCIgOmljb249XCJtb2RlbFZhbHVlXCI+PC9mcy1pY29uPlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L2NvbXBvbmVudD5cblxuICAgIDxkaXYgdi1pZj1cImRpYWxvZ09wZW5lZFwiIGNsYXNzPVwiZnMtaWNvbi1zZWxlY3Rvci1kaWFsb2dcIj5cbiAgICAgIDxjb21wb25lbnQgOmlzPVwidWkuZGlhbG9nLm5hbWVcIiBwcmVzZXQ9XCJkaWFsb2dcIiB2LWJpbmQ9XCJjb21wdXRlZERpYWxvZ1wiIDpmb290ZXI9XCJudWxsXCI+XG4gICAgICAgIDx0ZW1wbGF0ZSAjW3VpLmRpYWxvZy50aXRsZVNsb3ROYW1lXT5cbiAgICAgICAgICA8ZnMtaWNvbiBpY29uPVwiaWNvbi1zZWxlY3RcIiBjbGFzcz1cIm1yLTJcIj48L2ZzLWljb24+XG4gICAgICAgICAg6YCJ5oup5Zu+5qCHXG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmcy1pY29uLXNlbGVjdG9yLWRpYWxvZy1jb250ZW50IG1iLTRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbi10YWJzLWJveCBtdC0xMCBtYi0xMFwiPlxuICAgICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS50YWJzLm5hbWVcIiB2LWJpbmQ9XCJjb21wdXRlVGFic1wiIHR5cGU9XCJjYXJkXCI+XG4gICAgICAgICAgICAgIDxjb21wb25lbnQgOmlzPVwidWkudGFiUGFuZS5uYW1lXCIga2V5PVwiYWxsXCIgOlt1aS50YWJQYW5lLmtleV09XCInYWxsJ1wiIDpbdWkudGFiUGFuZS50YWJdPVwiJ+WFqOmDqCdcIj5cbiAgICAgICAgICAgICAgPC9jb21wb25lbnQ+XG4gICAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgICA6aXM9XCJ1aS50YWJQYW5lLm5hbWVcIlxuICAgICAgICAgICAgICAgIHYtZm9yPVwic2V0IG9mIGljb25TZXRzXCJcbiAgICAgICAgICAgICAgICA6a2V5PVwic2V0XCJcbiAgICAgICAgICAgICAgICA6W3VpLnRhYlBhbmUua2V5XT1cInNldFwiXG4gICAgICAgICAgICAgICAgOlt1aS50YWJQYW5lLnRhYl09XCJzZXRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgICAgICAgPC9jb21wb25lbnQ+XG5cbiAgICAgICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICAgICAgOmlzPVwidWkuaW5wdXQubmFtZVwiXG4gICAgICAgICAgICAgIHYtbW9kZWw6W3VpLmlucHV0Lm1vZGVsVmFsdWVdPVwic2VhcmNoS2V5XCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLmkJzntKLlm77moIcsIOWPjOWHu+mAieaLqVwiXG4gICAgICAgICAgICAgIEBrZXlkb3duLmVudGVyPVwiaGFuZGxlU2VhcmNoXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHRlbXBsYXRlICNzdWZmaXg+XG4gICAgICAgICAgICAgICAgPGZzLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIHNpemU9XCJzbWFsbFwiIDppY29uPVwidWkuaWNvbnMuc2VhcmNoXCIgQGNsaWNrPVwiaGFuZGxlU2VhcmNoXCI+PC9mcy1idXR0b24+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2NvbXBvbmVudD5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWxpc3RcIj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICB2LWZvcj1cImljb24gaW4gcGFnZXIucmVjb3Jkc1wiXG4gICAgICAgICAgICAgICAgICA6a2V5PVwiaWNvblwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24taXRlbVwiXG4gICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJ7IGFjdGl2ZTogaWNvbiA9PT0gY3VycmVudCB9XCJcbiAgICAgICAgICAgICAgICAgIDp0aXRsZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiaGFuZGxlSWNvblNlbGVjdChpY29uLCBmYWxzZSlcIlxuICAgICAgICAgICAgICAgICAgQGRibGNsaWNrPVwiaGFuZGxlSWNvblNlbGVjdChpY29uLCB0cnVlKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJpY29uXCIgY2xhc3M9XCJ0ZXh0LTJ4bFwiPjwvZnMtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxvYWQtbW9yZVwiPlxuICAgICAgICAgICAgICAgIDxmcy1sb2FkaW5nIHYtaWY9XCJwYWdlci5sb2FkaW5nXCIgOmxvYWRpbmc9XCJwYWdlci5sb2FkaW5nXCIgdGV4dD1cIuWKoOi9veS4rVwiIC8+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJwYWdlci50b3RhbCA9PSBudWxsIHx8IHBhZ2VyLnRvdGFsID09IDBcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXY+5pqC5peg5pWw5o2uPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJwYWdlci50b3RhbCA+IHBhZ2VyLnN0YXJ0ICsgcGFnZXIubGltaXRcIiBAY2xpY2s9XCJsb2FkTW9yZVwiPlxuICAgICAgICAgICAgICAgICAgPGRpdj7liqDovb3mm7TlpJo8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgICAgICAgPGZzLWJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiIEBjbGljaz1cIm9uQ29uZmlybVwiPuehruWumjwvZnMtYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9jb21wb25lbnQ+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIiBzZXR1cD5cbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIkBmYXN0LWNydWQvdWktaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyByZWYsIHVzZUF0dHJzLCBSZWYsIGNvbXB1dGVkIH0gZnJvbSBcInZ1ZVwiO1xuXG47XG5cbmNvbnN0IGVtaXQgPSBkZWZpbmVFbWl0cyhbXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSk7XG5jb25zdCBkZWZhdWx0TGltaXQgPSAxMzY7XG5jb25zdCBwcm9wcyA9IGRlZmluZVByb3BzKHtcbiAgbW9kZWxWYWx1ZToge1xuICAgIHR5cGU6IFN0cmluZyxcbiAgICBkZWZhdWx0OiBcIlwiXG4gIH0sXG4gIGRpYWxvZzoge1xuICAgIHR5cGU6IE9iamVjdCxcbiAgICBkZWZhdWx0OiAoKSA9PiAoe30pXG4gIH0sXG4gIHRhYnM6IHtcbiAgICB0eXBlOiBPYmplY3QsXG4gICAgZGVmYXVsdDogKCkgPT4gKHt9KVxuICB9LFxuICAvLyDpmZDliLbmr4/pobXmmL7npLrmlbDph49cbiAgbGltaXQ6IHtcbiAgICB0eXBlOiBOdW1iZXIsXG4gICAgZGVmYXVsdDogMTM2XG4gIH0sXG4gIGljb25TZXRzOiB7XG4gICAgdHlwZTogQXJyYXk8c3RyaW5nPixcbiAgICBkZWZhdWx0OiAoKSA9PiBbXCJjYXJib25cIiwgXCJpb25cIiwgXCJhbnQtZGVzaWduXCIsIFwiZmEtc29saWRcIiwgXCJmYS1icmFuZHNcIiwgXCJmYS1yZWd1bGFyXCIsIFwibWRpXCJdXG4gIH0sXG4gIGFwaVByb3ZpZGVyOiB7XG4gICAgdHlwZTogU3RyaW5nLFxuICAgIGRlZmF1bHQ6IFwiaHR0cHM6Ly9hcGkuaWNvbmlmeS5kZXNpZ25cIlxuICB9XG59KTtcbmNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5cbmNvbnN0IGRpYWxvZ09wZW5lZCA9IHJlZihmYWxzZSk7XG5jb25zdCBjb21wdXRlZERpYWxvZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogMTAyNCxcbiAgICBzdHlsZToge1xuICAgICAgd2lkdGg6IFwiMTAyNHB4XCJcbiAgICB9LFxuICAgIC4uLnByb3BzLmRpYWxvZyxcbiAgICBbdWkuZGlhbG9nLnZpc2libGVdOiBkaWFsb2dPcGVuZWQudmFsdWUsXG4gICAgW2BvblVwZGF0ZToke3VpLmRpYWxvZy52aXNpYmxlfWBdOiAodmFsOiBib29sZWFuKSA9PiB7XG4gICAgICBkaWFsb2dPcGVuZWQudmFsdWUgPSB2YWw7XG4gICAgfVxuICB9O1xufSk7XG5cbmNvbnN0IGZvcm1JdGVtQ29udGV4dCA9IHVpLmZvcm1JdGVtLmluamVjdEZvcm1JdGVtQ29udGV4dCgpO1xuY29uc3QgaW5wdXRCaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLmF0dHJzLFxuICAgIFt1aS5pbnB1dC5tb2RlbFZhbHVlXTogcHJvcHMubW9kZWxWYWx1ZSxcbiAgICBbYG9uVXBkYXRlOiR7dWkuaW5wdXQubW9kZWxWYWx1ZX1gXTogKHZhbDogc3RyaW5nKSA9PiB7XG4gICAgICBlbWl0Q2hhbmdlKHZhbCk7XG4gICAgfVxuICB9O1xufSk7XG5cbmNvbnN0IGVtaXRDaGFuZ2UgPSAodmFsOiBzdHJpbmcpID0+IHtcbiAgZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIHZhbCk7XG4gIGZvcm1JdGVtQ29udGV4dD8ub25DaGFuZ2UoKTtcbn07XG5cbmNvbnN0IGhhbmRsZUNsaWNrID0gKCkgPT4ge1xuICBkaWFsb2dPcGVuZWQudmFsdWUgPSB0cnVlO1xuICBpZiAocHJvcHMuaWNvblNldHMubGVuZ3RoID4gMCAmJiBwYWdlci52YWx1ZS5yZWNvcmRzLmxlbmd0aCA9PT0gMCkge1xuICAgIG9uVGFiQ2hhbmdlKHByb3BzLmljb25TZXRzWzBdIGFzIHN0cmluZyk7XG4gIH1cbn07XG5cbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKTtcblxuY29uc3QgYXBpID0ge1xuICBhc3luYyBnZXRDb2xsZWN0aW9ucygpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hcGlQcm92aWRlcn0vY29sbGVjdGlvbnNgKTtcbiAgICByZXR1cm4gYXdhaXQgcmVzLmpzb24oKTtcbiAgfSxcbiAgYXN5bmMgZ2V0SWNvbnMocHJlZml4OiBzdHJpbmcpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtwcm9wcy5hcGlQcm92aWRlcn0vY29sbGVjdGlvbj9wcmVmaXg9JHtwcmVmaXh9YCk7XG4gICAgcmV0dXJuIGF3YWl0IHJlcy5qc29uKCk7XG4gIH0sXG4gIGFzeW5jIHNlYXJjaChxdWVyeTogc3RyaW5nLCBwYWdlcjogYW55KSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwYWdlci5zdGFydCA/PyAwO1xuICAgIGNvbnN0IGxpbWl0ID0gcGFnZXIubGltaXQgPz8gNTA7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7cHJvcHMuYXBpUHJvdmlkZXJ9L3NlYXJjaD9xdWVyeT0ke3F1ZXJ5fSZzdGFydD0ke3N0YXJ0fSZsaW1pdD0ke2xpbWl0fWApO1xuICAgIHJldHVybiBhd2FpdCByZXMuanNvbigpO1xuICB9XG59O1xuXG5jb25zdCBpY29uU3RvcmU6IFJlZiA9IHJlZih7fSk7XG5cbmNvbnN0IGxvYWRJY29uU2V0ID0gYXN5bmMgKHByZWZpeDogc3RyaW5nKSA9PiB7XG4gIGxldCBzZXRzID0gaWNvblN0b3JlLnZhbHVlW3ByZWZpeF07XG4gIGlmICghc2V0cykge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGFwaS5nZXRJY29ucyhwcmVmaXgpO1xuICAgIGNvbnN0IHVuY2F0ZWdvcmllcyA9IHJlcy51bmNhdGVnb3JpemVkID8/IFtdO1xuICAgIGNvbnN0IGNhdGVnb3JpZXMgPSByZXMuY2F0ZWdvcmllcyA/PyBbXTtcbiAgICBzZXRzID0gdW5jYXRlZ29yaWVzO1xuICAgIGZvciAoY29uc3Qga2V5IGluIGNhdGVnb3JpZXMpIHtcbiAgICAgIHNldHMgPSBzZXRzLmNvbmNhdChjYXRlZ29yaWVzW2tleV0pO1xuICAgIH1cbiAgICBzZXRzID0gc2V0cy5tYXAoKGl0ZW06IGFueSkgPT4gYCR7cHJlZml4fToke2l0ZW19YCk7XG4gICAgaWNvblN0b3JlLnZhbHVlW3ByZWZpeF0gPSBzZXRzO1xuICB9XG4gIHJldHVybiBzZXRzO1xufTtcblxuY29uc3Qgc2VhcmNoS2V5ID0gcmVmKFwiXCIpO1xuY29uc3QgdGFiS2V5ID0gcmVmKFwiYWxsXCIpO1xuY29uc3Qgb25UYWJDaGFuZ2UgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgdGFiS2V5LnZhbHVlID0ga2V5O1xuICBzZWFyY2hLZXkudmFsdWUgPSBcIlwiO1xuICByZXNldFBhZ2VyKCk7XG4gIGhhbmRsZVNlYXJjaCgpO1xufTtcblxuY29uc3QgcmVzZXRQYWdlciA9ICgpID0+IHtcbiAgcGFnZXIudmFsdWUuc3RhcnQgPSAwO1xuICBwYWdlci52YWx1ZS5yZWNvcmRzID0gW107XG4gIHBhZ2VyLnZhbHVlLnRvdGFsID0gMDtcbiAgcGFnZXIudmFsdWUubGltaXQgPSBwcm9wcy5saW1pdCA/PyBkZWZhdWx0TGltaXQ7XG59O1xuXG5jb25zdCBwYWdlciA9IHJlZih7XG4gIGxvYWRpbmc6IGZhbHNlLFxuICBzdGFydDogMCxcbiAgbGltaXQ6IHByb3BzLmxpbWl0ID8/IGRlZmF1bHRMaW1pdCxcbiAgdG90YWw6IG51bGwsXG4gIHF1ZXJ5OiBcIlwiLFxuICByZWNvcmRzOiBbXVxufSk7XG5cbmNvbnN0IGhhbmRsZVNlYXJjaCA9IGFzeW5jICgpID0+IHtcbiAgaWYgKHBhZ2VyLnZhbHVlLmxvYWRpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHBhZ2VyLnZhbHVlLnF1ZXJ5ICE9PSBzZWFyY2hLZXkudmFsdWUpIHtcbiAgICAvL+mHjee9rnN0YXJ0XG4gICAgcmVzZXRQYWdlcigpO1xuICB9XG5cbiAgcGFnZXIudmFsdWUubG9hZGluZyA9IHRydWU7XG4gIHRyeSB7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgZG9TZWFyY2goKTtcbiAgICBwYWdlci52YWx1ZS5yZWNvcmRzID0gcGFnZXIudmFsdWUucmVjb3Jkcy5jb25jYXQocmVzLmljb25zKTtcbiAgICBwYWdlci52YWx1ZS50b3RhbCA9IHJlcy50b3RhbDtcbiAgICBwYWdlci52YWx1ZS5saW1pdCA9IHJlcy5saW1pdDtcbiAgICBwYWdlci52YWx1ZS5xdWVyeSA9IHNlYXJjaEtleS52YWx1ZTtcbiAgfSBmaW5hbGx5IHtcbiAgICBwYWdlci52YWx1ZS5sb2FkaW5nID0gZmFsc2U7XG4gIH1cbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGRvU2VhcmNoKCkge1xuICBpZiAodGFiS2V5LnZhbHVlID09PSBcImFsbFwiKSB7XG4gICAgaWYgKCFzZWFyY2hLZXkudmFsdWUpIHtcbiAgICAgIHVpLm5vdGlmaWNhdGlvbi53YXJuKFwi6K+36L6T5YWl5pCc57Si5YWz6ZSu5a2XXCIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgYXBpLnNlYXJjaChzZWFyY2hLZXkudmFsdWUsIHBhZ2VyLnZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0UGFnZXJGcm9tSWNvblNldCh0YWJLZXkudmFsdWUpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFBhZ2VyRnJvbUljb25TZXQocHJlZml4OiBzdHJpbmcpIHtcbiAgY29uc3QgaWNvbnMgPSBhd2FpdCBsb2FkSWNvblNldChwcmVmaXgpO1xuICBsZXQgZmlsdGVycyA9IGljb25zO1xuICBpZiAoc2VhcmNoS2V5LnZhbHVlKSB7XG4gICAgZmlsdGVycyA9IGljb25zLmZpbHRlcigoaWNvbjogc3RyaW5nKSA9PiBpY29uLmluY2x1ZGVzKHNlYXJjaEtleS52YWx1ZSkpO1xuICB9XG4gIGxldCBlbmQgPSBwYWdlci52YWx1ZS5zdGFydCArIHBhZ2VyLnZhbHVlLmxpbWl0O1xuICBpZiAoZW5kID4gZmlsdGVycy5sZW5ndGgpIHtcbiAgICBlbmQgPSBmaWx0ZXJzLmxlbmd0aDtcbiAgfVxuICBjb25zdCBwYWdlckljb25zID0gZmlsdGVycy5zbGljZShwYWdlci52YWx1ZS5zdGFydCwgZW5kKTtcbiAgcmV0dXJuIHtcbiAgICBpY29uczogcGFnZXJJY29ucyxcbiAgICB0b3RhbDogZmlsdGVycy5sZW5ndGgsXG4gICAgbGltaXQ6IHBhZ2VyLnZhbHVlLmxpbWl0LFxuICAgIHN0YXJ0OiBwYWdlci52YWx1ZS5zdGFydFxuICB9O1xufVxuXG5jb25zdCBjdXJyZW50ID0gcmVmKHByb3BzLm1vZGVsVmFsdWUpO1xuY29uc3QgaGFuZGxlSWNvblNlbGVjdCA9IChpY29uOiBzdHJpbmcsIGNvbmZpcm0gPSBmYWxzZSkgPT4ge1xuICBjdXJyZW50LnZhbHVlID0gaWNvbjtcbiAgaWYgKGNvbmZpcm0pIHtcbiAgICBvbkNvbmZpcm0oKTtcbiAgfVxufTtcblxuY29uc3Qgb25Db25maXJtID0gKCkgPT4ge1xuICBkaWFsb2dPcGVuZWQudmFsdWUgPSBmYWxzZTtcbiAgZW1pdENoYW5nZShjdXJyZW50LnZhbHVlKTtcbn07XG5cbmNvbnN0IGxvYWRNb3JlID0gYXN5bmMgKCkgPT4ge1xuICBwYWdlci52YWx1ZS5zdGFydCArPSBwYWdlci52YWx1ZS5saW1pdDtcbiAgYXdhaXQgaGFuZGxlU2VhcmNoKCk7XG59O1xuXG5jb25zdCBjb21wdXRlVGFicyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAuLi5wcm9wcy50YWJzLFxuICAgIFt1aS50YWJzLm1vZGVsVmFsdWVdOiB0YWJLZXkudmFsdWUsXG4gICAgW2BvblVwZGF0ZToke3VpLnRhYnMubW9kZWxWYWx1ZX1gXTogb25UYWJDaGFuZ2VcbiAgfTtcbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy1pY29uLXNlbGVjdG9yIHtcbiAgLmZzLWljb24tc2VsZWN0b3ItaW5wdXQtcHJlZml4IHtcbiAgICBmb250LXNpemU6IDE4cHg7XG4gICAgbWFyZ2luLXJpZ2h0OiA1cHg7XG4gIH1cbn1cbi5mcy1pY29uLXNlbGVjdG9yLWRpYWxvZy1jb250ZW50IHtcbiAgLmljb24tdGFicy1ib3gge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBtaW4taGVpZ2h0OiA1MDBweDtcbiAgICBtYXgtaGVpZ2h0OiA2MHZoO1xuXG4gICAgLmxvYWQtbW9yZSB7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgcGFkZGluZzogMTBweDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgIH1cblxuICAgIC5mb290ZXIge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGp1c3RpZnktY29udGVudDogZW5kO1xuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgIHBhZGRpbmc6IDEwcHg7XG4gICAgfVxuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgLmljb24tY29udGFpbmVyIHtcbiAgICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgICBmbGV4OiAxO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgICAgLmljb24tbGlzdCB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIC5pY29uLWl0ZW0ge1xuICAgICAgICAgIHdpZHRoOiA1MHB4O1xuICAgICAgICAgIGhlaWdodDogNTBweDtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICAgIG1hcmdpbjogMnB4O1xuICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM0MDllZmY7XG4gICAgICAgICAgfVxuICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzZjYjNmODtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmZzLWljb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMzBweDtcbiAgICAgICAgICBtYXgtd2lkdGg6IDk2JTtcbiAgICAgICAgICBtYXgtaGVpZ2h0OiA5NiU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkucmFkaW9Hcm91cC5uYW1lXCIgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIj5cbiAgICA8Y29tcG9uZW50XG4gICAgICA6aXM9XCJjb21wdXRlZFJhZGlvTmFtZVwiXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcbiAgICAgIHJlZj1cInJhZGlvUmVmXCJcbiAgICAgIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICA6W3VpLnJhZGlvLnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcbiAgICA+XG4gICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxuICAgIDwvY29tcG9uZW50PlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xuaW1wb3J0IHsgcmVmLCBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG4vKipcbiAqIOWtl+WFuOWNlemAieahhlxuICog5pSv5oyBZWwtcmFkaW8tZ3JvdXB8YS1yYWRpby1ncm91cOeahOWPguaVsFxuICpcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RSYWRpb1wiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcblxuICAgIC8qKlxuICAgICAqIHJhZGlv57uE5Lu25ZCN56ewXG4gICAgICogYW50ZHbkvb/nlKhidXR0b27moLflvI/nmoTml7blgJnmnInnlKhcbiAgICAgKiDljbPlsIblup/lvIMs6K+35L2/55Sob3B0aW9uTmFtZVxuICAgICAqL1xuICAgIHJhZGlvTmFtZToge30sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcbiAgICAgKi9cbiAgICBvcHRpb25OYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uUHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICBzZXR1cChwcm9wczogYW55LCBjdHg6IGFueSkge1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG5cbiAgICBpZiAocHJvcHMucmFkaW9OYW1lKSB7XG4gICAgICBjb25zb2xlLndhcm4oXCLlj4LmlbByYWRpb05hbWXljbPlsIblup/lvIPvvIzor7fmlLnmiJBvcHRpb25OYW1lXCIpO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZFJhZGlvTmFtZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5vcHRpb25OYW1lID8/IHByb3BzLnJhZGlvTmFtZSA/PyB1aS5yYWRpby5uYW1lO1xuICAgIH0pO1xuXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4LCB1aS5yYWRpb0dyb3VwLm1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUgJiYgdmFsdWUudGFyZ2V0KSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudGFyZ2V0LnZhbHVlO1xuICAgICAgfVxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCAmJiBkaWN0LmRhdGFNYXBbdmFsdWVdKSB7XG4gICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFt2YWx1ZV07XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY29tcHV0ZWRSYWRpb05hbWUsXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLnJhZGlvR3JvdXAubmFtZVwiIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCI+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwiY29tcHV0ZWRSYWRpb05hbWVcIlxuICAgICAgdi1mb3I9XCJpdGVtIG9mIGNvbXB1dGVkT3B0aW9uc1wiXG4gICAgICByZWY9XCJyYWRpb1JlZlwiXG4gICAgICA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIlxuICAgICAgOlt1aS5yYWRpby52YWx1ZV09XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICB2LWJpbmQ9XCJvcHRpb25Qcm9wc1wiXG4gICAgPlxuICAgICAge3sgZ2V0TGFiZWwoaXRlbSkgfX1cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1aUNvbnRleHQgfSBmcm9tIFwiLi4vLi4vdWlcIjtcbmltcG9ydCB7IHJlZiwgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuLyoqXG4gKiDlrZflhbjljZXpgInmoYZcbiAqIOaUr+aMgWVsLXJhZGlvLWdyb3VwfGEtcmFkaW8tZ3JvdXDnmoTlj4LmlbBcbiAqXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0UmFkaW9cIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDmlbDmja7lrZflhbjphY3nva5cbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDlj6/pgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXG5cbiAgICAvKipcbiAgICAgKiByYWRpb+e7hOS7tuWQjeensFxuICAgICAqIGFudGR25L2/55SoYnV0dG9u5qC35byP55qE5pe25YCZ5pyJ55SoXG4gICAgICog5Y2z5bCG5bqf5byDLOivt+S9v+eUqG9wdGlvbk5hbWVcbiAgICAgKi9cbiAgICByYWRpb05hbWU6IHt9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE57uE5Lu25ZCN56ewXG4gICAgICovXG4gICAgb3B0aW9uTmFtZToge1xuICAgICAgdHlwZTogU3RyaW5nXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOWxnuaAp1xuICAgICAqL1xuICAgIG9wdGlvblByb3BzOiB7XG4gICAgICB0eXBlOiBPYmplY3QsXG4gICAgICBkZWZhdWx0KCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDovazmjaJEaWN0RGF0YVxuICAgICAqL1xuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImRpY3QtY2hhbmdlXCIsXG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lgLzlj5jljJbkuovku7bvvIzlj6/ku6Xojrflj5bliLDlvZPliY3pgInkuK3nmoRvcHRpb27lr7nosaFcbiAgICAgKi9cbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiY2hhbmdlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuXG4gICAgaWYgKHByb3BzLnJhZGlvTmFtZSkge1xuICAgICAgY29uc29sZS53YXJuKFwi5Y+C5pWwcmFkaW9OYW1l5Y2z5bCG5bqf5byD77yM6K+35pS55oiQb3B0aW9uTmFtZVwiKTtcbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRSYWRpb05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMub3B0aW9uTmFtZSA/PyBwcm9wcy5yYWRpb05hbWUgPz8gdWkucmFkaW8ubmFtZTtcbiAgICB9KTtcblxuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkucmFkaW9Hcm91cC5tb2RlbFZhbHVlKTtcbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLnRhcmdldCkge1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnRhcmdldC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXAgJiYgZGljdC5kYXRhTWFwW3ZhbHVlXSkge1xuICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbdmFsdWVdO1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBvcHQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbXB1dGVkUmFkaW9OYW1lLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjxzY3JpcHQgbGFuZz1cInRzeFwiPlxuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IGFzIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmV4cG9ydCBkZWZhdWx0IC8qI19fUFVSRV9fKi8gX19NQUNST1NfZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RTZWxlY3RcIlxufSk7XG48L3NjcmlwdD5cbjx0ZW1wbGF0ZT5cbiAgPHJlbmRlcj48L3JlbmRlcj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c3hcIiBzZXR1cD5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiwgcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQsIHVzZUF0dHJzIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjpgInmi6nmoYZcbiAqIOaUr+aMgWVsLXNlbGVjdHxhLXNlbGVjdOeahOWxnuaAp+mFjee9rlxuICovXG5cbjtcblxudHlwZSBQcm9wc1R5cGUgPSB7XG4gIC8qKlxuICAgKiDlrZflhbhcbiAgICovXG4gIGRpY3Q/OiBhbnk7XG4gIC8qKlxuICAgKiDlj6/pgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICovXG4gIG9wdGlvbnM/OiBhbnlbXTtcblxuICAvKipcbiAgICogc2VsZWN057uE5Lu255qE5o+S5qe9XG4gICAqL1xuICBzbG90cz86IGFueTtcblxuICAvKipcbiAgICog6Ieq5a6a5LmJbGFiZWznmoRyZW5kZXLmlrnms5VcbiAgICovXG4gIHJlbmRlckxhYmVsPzogKGl0ZW06IGFueSkgPT4gYW55O1xuICAvKipcbiAgICog6L2s5o2iRGljdERhdGFcbiAgICovXG4gIHRyYW5zZm9ybURpY3REYXRhPzogKGl0ZW06IGFueSkgPT4gYW55O1xufTtcblxuY29uc3QgcHJvcHMgPSBkZWZpbmVQcm9wczxQcm9wc1R5cGU+KCk7XG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1wiZGljdC1jaGFuZ2VcIiwgXCJzZWxlY3RlZC1jaGFuZ2VcIiwgXCJjaGFuZ2VcIl0pO1xuXG5jb25zdCBzZWxlY3RSZWYgPSByZWYoKTtcbmNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuY29uc3QgY29tcHV0ZWRQbGFjZWhvbGRlciA9IGNvbXB1dGVkKCgpID0+IHtcbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gcHJvcHMucGxhY2Vob2xkZXIgfHwgdChcImZzLmNvbXBvbmVudC5zZWxlY3QucGxhY2Vob2xkZXJcIik7XG59KTtcblxuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IGF0dHJzID0gdXNlQXR0cnMoKTtcbmNvbnN0IGN0eCA9IHtcbiAgZW1pdCxcbiAgYXR0cnNcbn07XG5jb25zdCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuc2VsZWN0Lm1vZGVsVmFsdWUpO1xuY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG5cbmNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICBlbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgLy/lpoLmnpzmmK/mlbDnu4RcbiAgaWYgKHZhbHVlICYmIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBvcHRzID0gW107XG4gICAgZm9yIChjb25zdCB2IG9mIHZhbHVlKSB7XG4gICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXAgJiYgZGljdC5kYXRhTWFwW3ZdKSB7XG4gICAgICAgIG9wdHMucHVzaChkaWN0LmRhdGFNYXBbdl0pO1xuICAgICAgfVxuICAgIH1cbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdHMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCAmJiBkaWN0LmRhdGFNYXBbdmFsdWVdKSB7XG4gICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW3ZhbHVlXTtcbiAgICBlbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG9wdCk7XG4gIH0gZWxzZSB7XG4gICAgZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgfVxufTtcblxuY29uc3QgdGVtcFNsb3RzID0gZGVmaW5lU2xvdHMoKTtcblxuZGVmaW5lRXhwb3NlKHtcbiAgc2VsZWN0UmVmLFxuICBjb21wdXRlZFBsYWNlaG9sZGVyLFxuICAuLi51c2VkRGljdCxcbiAgY29tcHV0ZWRPcHRpb25zLFxuICBvblNlbGVjdGVkQ2hhbmdlXG59KTtcblxuY29uc3QgcmVuZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICBjb25zdCBzZWxlY3RDb21wID0gcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQodWkuc2VsZWN0Lm5hbWUpO1xuICBjb25zdCB2TW9kZWwgPSB1aS5zZWxlY3QubW9kZWxWYWx1ZTtcbiAgaWYgKHVpLm9wdGlvbi5uYW1lID09IG51bGwpIHtcbiAgICAvL25haXZlIHVpXG4gICAgLy/ku6VvcHRpb25z5Y+C5pWw5L2c5Li6b3B0aW9uc1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb21wdXRlZE9wdGlvbnMudmFsdWUgfHwgW107XG4gICAgY29uc3QgYmluZGluZzogYW55ID0ge1xuICAgICAgW2BvblVwZGF0ZToke3ZNb2RlbH1gXTogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIHRoaXMuJGVtaXQoYG9uVXBkYXRlOiR7dk1vZGVsfWAsIHZhbHVlKTtcbiAgICAgICAgb25TZWxlY3RlZENoYW5nZSh2YWx1ZSk7XG4gICAgICB9LFxuICAgICAgLi4uYXR0cnNcbiAgICB9O1xuICAgIGNvbnN0IHRoaXNTbG90cyA9IHtcbiAgICAgIC4uLnRlbXBTbG90cyxcbiAgICAgIC4uLnByb3BzLnNsb3RzXG4gICAgfTtcbiAgICByZXR1cm4gKFxuICAgICAgPHNlbGVjdENvbXBcbiAgICAgICAgcmVmPXtcInNlbGVjdFJlZlwifVxuICAgICAgICBwbGFjZWhvbGRlcj17Y29tcHV0ZWRQbGFjZWhvbGRlci52YWx1ZX1cbiAgICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgICAgcmVuZGVyTGFiZWw9e3Byb3BzLnJlbmRlckxhYmVsfVxuICAgICAgICB2LXNsb3RzPXt0aGlzU2xvdHN9XG4gICAgICAgIHsuLi5iaW5kaW5nfVxuICAgICAgLz5cbiAgICApO1xuICB9XG4gIC8vIG9wdGlvbnMg5Li65a2Q57uE5Lu2XG4gIGNvbnN0IG9wdGlvbnMgPSBbXTtcbiAgY29uc3Qgb3B0aW9uQ29tcCA9IHJlc29sdmVEeW5hbWljQ29tcG9uZW50KHVpLm9wdGlvbi5uYW1lKTtcbiAgY29uc3QgY29zID0gY29tcHV0ZWRPcHRpb25zLnZhbHVlIHx8IFtdO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2YgY29zKSB7XG4gICAgY29uc3Qgb3B0aW9uID0gKFxuICAgICAgPG9wdGlvbkNvbXAgey4uLml0ZW19IHZhbHVlPXt1c2VkRGljdC5nZXRWYWx1ZShpdGVtKX0gbGFiZWw9e3VzZWREaWN0LmdldExhYmVsKGl0ZW0pfT5cbiAgICAgICAge3Byb3BzLnJlbmRlckxhYmVsID8gcHJvcHMucmVuZGVyTGFiZWwoaXRlbSkgOiB1c2VkRGljdC5nZXRMYWJlbChpdGVtKX1cbiAgICAgIDwvb3B0aW9uQ29tcD5cbiAgICApO1xuICAgIG9wdGlvbnMucHVzaChvcHRpb24pO1xuICB9XG4gIGNvbnN0IHRoaXNTbG90cyA9IHtcbiAgICBkZWZhdWx0OiAoKSA9PiBvcHRpb25zLFxuICAgIC4uLnRlbXBTbG90cyxcbiAgICAuLi5wcm9wcy5zbG90c1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxzZWxlY3RDb21wXG4gICAgICByZWY9e1wic2VsZWN0UmVmXCJ9XG4gICAgICBwbGFjZWhvbGRlcj17Y29tcHV0ZWRQbGFjZWhvbGRlci52YWx1ZX1cbiAgICAgIHYtc2xvdHM9e3RoaXNTbG90c31cbiAgICAgIG9uQ2hhbmdlPXtvblNlbGVjdGVkQ2hhbmdlfVxuICAgICAgey4uLmF0dHJzfVxuICAgIC8+XG4gICk7XG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5hbnQtc2VsZWN0LW11bHRpcGxlIHtcbiAgbWluLXdpZHRoOiAxMDBweDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxzcGFuIGNsYXNzPVwiZnMtdmFsdWVzLWZvcm1hdFwiPlxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiaXRlbVJlbmRlclwiPlxuICAgICAgPGZzLXJlbmRlciB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCIgOnJlbmRlci1mdW5jPVwiaXRlbVJlbmRlclwiIDpzY29wZT1cIml0ZW1cIiAvPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZS1pZj1cInR5cGUgPT09ICd0ZXh0J1wiPlxuICAgICAgPHNwYW4gdi1mb3I9XCJpdGVtIGluIGNvbXB1dGVkVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICA8L3RlbXBsYXRlPlxuICAgIDx0ZW1wbGF0ZSB2LWVsc2U+XG4gICAgICA8dGVtcGxhdGUgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGNvbXB1dGVkVmFsdWVJdGVtc1wiIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiPlxuICAgICAgICA8Y29tcG9uZW50XG4gICAgICAgICAgOmlzPVwidWkudGFnLm5hbWVcIlxuICAgICAgICAgIGNsYXNzPVwiZnMtdGFnXCJcbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIDpjbG9zYWJsZT1cImNsb3NhYmxlXCJcbiAgICAgICAgICB2LWJpbmQ9XCJpdGVtXCJcbiAgICAgICAgICA6aWNvbj1cIm51bGxcIlxuICAgICAgICAgIDpuYW1lPVwibnVsbFwiXG4gICAgICAgICAgQGNsb3NlPVwiZG9DbG9zZShpbmRleCwgaXRlbSlcIlxuICAgICAgICAgIEBjbGljaz1cImRvQ2xpY2soaXRlbSlcIlxuICAgICAgICA+XG4gICAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgIDxmcy1pY29uIDppY29uPVwiaXRlbS5pY29uXCIgOnNwaW49XCJpdGVtLmljb25TcGluXCIgY2xhc3M9XCJmcy10YWctaWNvblwiIC8+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICB7eyBnZXRMYWJlbChpdGVtKSB9fVxuICAgICAgICA8L2NvbXBvbmVudD5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9zcGFuPlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGZvckVhY2gsIG9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgZGVmaW5lQ29tcG9uZW50LCBSZWYgfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5mdW5jdGlvbiBnZXRIYXNoQ29kZShzdHI6IHN0cmluZykge1xuICBpZiAoc3RyID09IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBpZiAodHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHN0ciA9IEpTT04uc3RyaW5naWZ5KHN0cik7XG4gIH1cbiAgbGV0IGhhc2ggPSAwO1xuICBsZXQgaTtcbiAgbGV0IGNocjtcbiAgbGV0IGxlbjtcbiAgaWYgKHN0ci5sZW5ndGggPT09IDApIHJldHVybiBoYXNoO1xuICBmb3IgKGkgPSAwLCBsZW4gPSBzdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjaHIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICBoYXNoID0gKGhhc2ggPDwgNSkgLSBoYXNoICsgY2hyO1xuICAgIGhhc2ggfD0gMDsgLy8gQ29udmVydCB0byAzMmJpdCBpbnRlZ2VyXG4gIH1cbiAgcmV0dXJuIE1hdGguYWJzKGhhc2gpO1xufVxuXG5mdW5jdGlvbiBidWlsZEFycmF5VmFsdWUocHJvcHM6IGFueSkge1xuICBsZXQgdmFsdWVBcnIgPSBbXTtcbiAgaWYgKHR5cGVvZiBwcm9wcy5tb2RlbFZhbHVlID09PSBcInN0cmluZ1wiICYmIHByb3BzLm11bHRpcGxlICYmIHByb3BzLnNlcGFyYXRvciAhPSBudWxsICYmIHByb3BzLnNlcGFyYXRvciAhPT0gXCJcIikge1xuICAgIHZhbHVlQXJyID0gcHJvcHMubW9kZWxWYWx1ZS5zcGxpdChwcm9wcy5zZXBhcmF0b3IpO1xuICB9IGVsc2UgaWYgKHByb3BzLm1vZGVsVmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgIC8vIOacrOadpeWwseaYr+aVsOe7hOeahFxuICAgIHZhbHVlQXJyID0gcHJvcHMubW9kZWxWYWx1ZTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZUFyciA9IFtwcm9wcy5tb2RlbFZhbHVlXTtcbiAgfVxuICByZXR1cm4gdmFsdWVBcnI7XG59XG5cbi8qKlxuICogdmFsdWXmoLzlvI/ljJblsZXnpLrnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc1ZhbHVlc0Zvcm1hdFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWAvFxuICAgICAqL1xuICAgIG1vZGVsVmFsdWU6IHt9LFxuICAgIC8qKlxuICAgICAqIOWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqL1xuICAgIG11bHRpcGxlOiB7IGRlZmF1bHQ6IHRydWUgfSxcbiAgICAvKipcbiAgICAgKiDliIbpmpTnrKY8YnIvPlxuICAgICAqIOWkmumAieaXtu+8jOWmguaenHZhbHVl5Li6c3RyaW5n77yM5YiZ5Lul6K+l5YiG6ZqU56ym5YiG5Ymy5oiQ5aSa5Liq5bGV56S6PGJyLz5cbiAgICAgKiDkvKDlhaXnqbrlrZfnrKbkuLLvvIzooajnpLrkuI3liIblibI8YnIvPlxuICAgICAqL1xuICAgIHNlcGFyYXRvcjogeyBkZWZhdWx0OiBcIixcIiB9LFxuXG4gICAgLyoqXG4gICAgICog6aKc6ImyXG4gICAgICogZWxlbWVudD3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXIgLGluZm/jgJFcbiAgICAgKiBhbnRkdj3jgJBhdXRvLCBwcmltYXJ5LCBzdWNjZXNzLCBibHVlLHJlZCwuLi7jgJFcbiAgICAgKiDphY3nva5hdXRv77yM5YiZ6Ieq5Yqo5qC55o2udmFsdWXlgLxoYXNoY29kZeWIhumFjeminOiJsuWAvFxuICAgICAqL1xuICAgIGNvbG9yOiB7fSxcbiAgICAvKipcbiAgICAgKiDmlYjmnpzvvIjku4VlbGVtZW5077yJXG4gICAgICoqL1xuICAgIGVmZmVjdDoge30sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5p+T6Imy6aKc6Imy5YC85YiX6KGoXG4gICAgICovXG4gICAgYXV0b0NvbG9yczoge1xuICAgICAgdHlwZTogQXJyYXlcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWKqOS4u+mimOWIl+ihqO+8iOS7hWVsZW1lbnTvvIlcbiAgICAgKiDjgJAgbGlnaHQsIHBsYWluIOOAkVxuICAgICAqL1xuICAgIGF1dG9FZmZlY3RzOiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5pi+56S657G75Z6L77ya44CQdGV4dCwgdGFn44CRXG4gICAgICovXG4gICAgdHlwZToge1xuICAgICAgZGVmYXVsdDogXCJ0YWdcIlxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5YC855qE57G75Z6L77yM44CQIHZhbHVlIHwgb2JqZWN044CRXG4gICAgICovXG4gICAgdmFsdWVUeXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOW9k3ZhbHVl5YC85LiN5Zyo5a2X5YW45Lit5pe26buY6K6k5pi+56S655qE5paH5pysXG4gICAgICovXG4gICAgZGVmYXVsdExhYmVsOiB7fSxcblxuICAgIC8qKlxuICAgICAqIGxhYmVs6Ieq5a6a5LmJcmVuZGVyXG4gICAgICovXG4gICAgbGFiZWxGb3JtYXR0ZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDoh6rlrprkuYnpgInpoblyZW5kZXJcbiAgICAgKi9cbiAgICBpdGVtUmVuZGVyOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvblxuICAgIH0sXG5cbiAgICBjbG9zYWJsZToge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXG4gICAgfVxuICB9LFxuICBlbWl0czogW1wiY2xpY2tcIiwgXCJkaWN0LWNoYW5nZVwiLCBcImNsb3NlXCIsIFwidXBkYXRlOm1vZGVsVmFsdWVcIl0sXG4gIHNldHVwKHByb3BzOiBhbnksIGN0eDogYW55KSB7XG4gICAgLy8gdHJhY2UudHJhY2UoXCJ2YWx1ZXMtZm9ybWF0XCIpO1xuICAgIC8vIGNvbnNvbGUubG9nKFwidmFsdWVzLWZvcm1hdCBpbml0XCIsIHByb3BzLm1vZGVsVmFsdWUpO1xuICAgIC8vY29uc3QgZGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBDT0xPUl9MSVNUID0gdWkudGFnLmNvbG9ycztcbiAgICBjb25zdCBFRkZFQ1RfTElTVCA9IFtcInBsYWluXCIsIFwibGlnaHRcIl07XG5cbiAgICBjb25zdCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyBnZXRDb2xvciwgZ2V0VmFsdWUsIHJlbW92ZVByb3BWYWx1ZSB9ID0gdXNlZERpY3Q7XG4gICAgdXNlZERpY3Qud2F0Y2hWYWx1ZSgpO1xuICAgIGZ1bmN0aW9uIHNldENvbG9yKHByb3BzOiBhbnksIGl0ZW06IGFueSkge1xuICAgICAgaWYgKCFpdGVtLmVmZmVjdCAmJiBwcm9wcy5lZmZlY3QpIHtcbiAgICAgICAgaXRlbS5lZmZlY3QgPSBwcm9wcy5lZmZlY3Q7XG4gICAgICB9XG4gICAgICBjb25zdCB0eXBlS2V5ID0gdWkudGFnLnR5cGU7XG4gICAgICBjb25zdCBjb2xvciA9IGdldENvbG9yKGl0ZW0pO1xuICAgICAgaWYgKGNvbG9yICE9IG51bGwpIHtcbiAgICAgICAgLy/lpoLmnpzlt7Lnu4/phY3nva7kuoZjb2xvclxuICAgICAgICBpZiAodHlwZW9mIGNvbG9yICE9IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy/lsIbljp/mnInnmoRjb2xvcuWtl+auteWIoOaOie+8jOmBv+WFjW5haXZlIGNvbG9y5oql6ZSZXG4gICAgICAgIHJlbW92ZVByb3BWYWx1ZShpdGVtLCBcImNvbG9yXCIpO1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gY29sb3I7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jb2xvciA9PT0gXCJhdXRvXCIpIHtcbiAgICAgICAgY29uc3QgaGFzaGNvZGUgPSBnZXRIYXNoQ29kZShnZXRWYWx1ZShpdGVtKSk7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiaGFzaGNvZGVcIiwgZ2V0VmFsdWUoaXRlbSksIGhhc2hjb2RlKTtcbiAgICAgICAgY29uc3QgY29sb3JzID0gcHJvcHMuYXV0b0NvbG9ycyA/IHByb3BzLmF1dG9Db2xvcnMgOiBDT0xPUl9MSVNUO1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gY29sb3JzW2hhc2hjb2RlICUgY29sb3JzLmxlbmd0aF07XG4gICAgICAgIGNvbnN0IGVmZmVjdHMgPSBwcm9wcy5hdXRvRWZmZWN0cyA/IHByb3BzLmF1dG9FZmZlY3RzIDogRUZGRUNUX0xJU1Q7XG4gICAgICAgIGl0ZW0uZWZmZWN0ID0gZWZmZWN0c1tNYXRoLmZsb29yKGhhc2hjb2RlIC8gY29sb3JzLmxlbmd0aCkgJSBlZmZlY3RzLmxlbmd0aF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtW3R5cGVLZXldID0gcHJvcHMuY29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcHV0ZWRWYWx1ZUl0ZW1zOiBSZWY8YW55W10+ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgaWYgKHByb3BzLnZhbHVlVHlwZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSAmJiAhQXJyYXkuaXNBcnJheShwcm9wcy5tb2RlbFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBbcHJvcHMubW9kZWxWYWx1ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHByb3BzLm1vZGVsVmFsdWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICBpZiAocHJvcHMubW9kZWxWYWx1ZSA9PSBudWxsIHx8IHByb3BzLm1vZGVsVmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgdmFsdWVBcnIgPSBidWlsZEFycmF5VmFsdWUocHJvcHMpO1xuXG4gICAgICBsZXQgb3B0aW9ucyA9IFtdO1xuXG4gICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wcy5kaWN0Py52YWx1ZSB8fCBcInZhbHVlXCI7XG4gICAgICBjb25zdCBsYWJlbFByb3AgPSBwcm9wcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCI7XG5cbiAgICAgIGlmIChkaWN0KSB7XG4gICAgICAgIG9wdGlvbnMgPSBkaWN0LmdldE5vZGVzRnJvbURhdGFNYXAodmFsdWVBcnIpO1xuICAgICAgICAvL+iuvue9rum7mOiupGxhYmVsXG4gICAgICAgIGZvckVhY2gob3B0aW9ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbVtsYWJlbFByb3BdID09IG51bGwpIHtcbiAgICAgICAgICAgIGl0ZW1bbGFiZWxQcm9wXSA9IHByb3BzLmRlZmF1bHRMYWJlbCB8fCBpdGVtW3ZhbHVlUHJvcF07XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yRWFjaCh2YWx1ZUFyciwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbSBpbnN0YW5jZW9mIE9iamVjdCkge1xuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goe1xuICAgICAgICAgICAgICBbdmFsdWVQcm9wXTogaXRlbSxcbiAgICAgICAgICAgICAgW2xhYmVsUHJvcF06IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbG9yZnVsT3B0aW9uczogYW55ID0gW107XG4gICAgICBmb3JFYWNoKG9wdGlvbnMsIChpdGVtKSA9PiB7XG4gICAgICAgIGNvbG9yZnVsT3B0aW9ucy5wdXNoKG9taXQoaXRlbSwgXCJjaGlsZHJlblwiKSk7XG4gICAgICB9KTtcbiAgICAgIGZvckVhY2goY29sb3JmdWxPcHRpb25zLCAoaXRlbSkgPT4ge1xuICAgICAgICBzZXRDb2xvcihwcm9wcywgaXRlbSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBjb2xvcmZ1bE9wdGlvbnM7XG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBkb0NsaWNrKGl0ZW06IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJjbGlja1wiLCB7IGl0ZW06IGl0ZW0gfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGRvQ2xvc2UoaW5kZXg6IG51bWJlciwgaXRlbTogYW55KSB7XG4gICAgICBjdHguZW1pdChcImNsb3NlXCIsIHsgaXRlbSwgaW5kZXggfSk7XG4gICAgICBjb25zdCBuZXdWYWx1ZXM6IGFueVtdID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaSAhPT0gaW5kZXgpIHtcbiAgICAgICAgICBuZXdWYWx1ZXMucHVzaChnZXRWYWx1ZShjb21wdXRlZFZhbHVlSXRlbXMudmFsdWVbaV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY3R4LmVtaXQoXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiLCBuZXdWYWx1ZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgZG9DbGljayxcbiAgICAgIGNvbXB1dGVkVmFsdWVJdGVtcyxcbiAgICAgIGRvQ2xvc2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdmFsdWVzLWZvcm1hdCAuZnMtdGFnIHtcbiAgbWFyZ2luOiAycHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLmZzLXRhZy1pY29uIHtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4gY2xhc3M9XCJmcy12YWx1ZXMtZm9ybWF0XCI+XG4gICAgPHRlbXBsYXRlIHYtaWY9XCJpdGVtUmVuZGVyXCI+XG4gICAgICA8ZnMtcmVuZGVyIHYtZm9yPVwiaXRlbSBpbiBjb21wdXRlZFZhbHVlSXRlbXNcIiA6a2V5PVwiZ2V0VmFsdWUoaXRlbSlcIiA6cmVuZGVyLWZ1bmM9XCJpdGVtUmVuZGVyXCIgOnNjb3BlPVwiaXRlbVwiIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgdi1lbHNlLWlmPVwidHlwZSA9PT0gJ3RleHQnXCI+XG4gICAgICA8c3BhbiB2LWZvcj1cIml0ZW0gaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCIgQGNsaWNrPVwiZG9DbGljayhpdGVtKVwiPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDx0ZW1wbGF0ZSB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gY29tcHV0ZWRWYWx1ZUl0ZW1zXCIgOmtleT1cImdldFZhbHVlKGl0ZW0pXCI+XG4gICAgICAgIDxjb21wb25lbnRcbiAgICAgICAgICA6aXM9XCJ1aS50YWcubmFtZVwiXG4gICAgICAgICAgY2xhc3M9XCJmcy10YWdcIlxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgOmNsb3NhYmxlPVwiY2xvc2FibGVcIlxuICAgICAgICAgIHYtYmluZD1cIml0ZW1cIlxuICAgICAgICAgIDppY29uPVwibnVsbFwiXG4gICAgICAgICAgOm5hbWU9XCJudWxsXCJcbiAgICAgICAgICBAY2xvc2U9XCJkb0Nsb3NlKGluZGV4LCBpdGVtKVwiXG4gICAgICAgICAgQGNsaWNrPVwiZG9DbGljayhpdGVtKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8dGVtcGxhdGUgdi1pZj1cIml0ZW0uaWNvblwiPlxuICAgICAgICAgICAgPGZzLWljb24gOmljb249XCJpdGVtLmljb25cIiA6c3Bpbj1cIml0ZW0uaWNvblNwaW5cIiBjbGFzcz1cImZzLXRhZy1pY29uXCIgLz5cbiAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgIHt7IGdldExhYmVsKGl0ZW0pIH19XG4gICAgICAgIDwvY29tcG9uZW50PlxuICAgICAgPC90ZW1wbGF0ZT5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgZm9yRWFjaCwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIFJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmZ1bmN0aW9uIGdldEhhc2hDb2RlKHN0cjogc3RyaW5nKSB7XG4gIGlmIChzdHIgPT0gbnVsbCkge1xuICAgIHJldHVybiAwO1xuICB9XG4gIGlmICh0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgc3RyID0gSlNPTi5zdHJpbmdpZnkoc3RyKTtcbiAgfVxuICBsZXQgaGFzaCA9IDA7XG4gIGxldCBpO1xuICBsZXQgY2hyO1xuICBsZXQgbGVuO1xuICBpZiAoc3RyLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGhhc2g7XG4gIGZvciAoaSA9IDAsIGxlbiA9IHN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNociA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgIGhhc2ggPSAoaGFzaCA8PCA1KSAtIGhhc2ggKyBjaHI7XG4gICAgaGFzaCB8PSAwOyAvLyBDb252ZXJ0IHRvIDMyYml0IGludGVnZXJcbiAgfVxuICByZXR1cm4gTWF0aC5hYnMoaGFzaCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQXJyYXlWYWx1ZShwcm9wczogYW55KSB7XG4gIGxldCB2YWx1ZUFyciA9IFtdO1xuICBpZiAodHlwZW9mIHByb3BzLm1vZGVsVmFsdWUgPT09IFwic3RyaW5nXCIgJiYgcHJvcHMubXVsdGlwbGUgJiYgcHJvcHMuc2VwYXJhdG9yICE9IG51bGwgJiYgcHJvcHMuc2VwYXJhdG9yICE9PSBcIlwiKSB7XG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlLnNwbGl0KHByb3BzLnNlcGFyYXRvcik7XG4gIH0gZWxzZSBpZiAocHJvcHMubW9kZWxWYWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgLy8g5pys5p2l5bCx5piv5pWw57uE55qEXG4gICAgdmFsdWVBcnIgPSBwcm9wcy5tb2RlbFZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlQXJyID0gW3Byb3BzLm1vZGVsVmFsdWVdO1xuICB9XG4gIHJldHVybiB2YWx1ZUFycjtcbn1cblxuLyoqXG4gKiB2YWx1ZeagvOW8j+WMluWxleekuue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzVmFsdWVzRm9ybWF0XCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5YC8XG4gICAgICovXG4gICAgbW9kZWxWYWx1ZToge30sXG4gICAgLyoqXG4gICAgICog5a2X5YW46YWN572uXG4gICAgICovXG4gICAgZGljdDoge30sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICovXG4gICAgbXVsdGlwbGU6IHsgZGVmYXVsdDogdHJ1ZSB9LFxuICAgIC8qKlxuICAgICAqIOWIhumalOespjxici8+XG4gICAgICog5aSa6YCJ5pe277yM5aaC5p6cdmFsdWXkuLpzdHJpbmfvvIzliJnku6Xor6XliIbpmpTnrKbliIblibLmiJDlpJrkuKrlsZXnpLo8YnIvPlxuICAgICAqIOS8oOWFpeepuuWtl+espuS4su+8jOihqOekuuS4jeWIhuWJsjxici8+XG4gICAgICovXG4gICAgc2VwYXJhdG9yOiB7IGRlZmF1bHQ6IFwiLFwiIH0sXG5cbiAgICAvKipcbiAgICAgKiDpopzoibJcbiAgICAgKiBlbGVtZW50PeOAkGF1dG8sIHByaW1hcnksIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlciAsaW5mb+OAkVxuICAgICAqIGFudGR2PeOAkGF1dG8sIHByaW1hcnksIHN1Y2Nlc3MsIGJsdWUscmVkLC4uLuOAkVxuICAgICAqIOmFjee9rmF1dG/vvIzliJnoh6rliqjmoLnmja52YWx1ZeWAvGhhc2hjb2Rl5YiG6YWN6aKc6Imy5YC8XG4gICAgICovXG4gICAgY29sb3I6IHt9LFxuICAgIC8qKlxuICAgICAqIOaViOaenO+8iOS7hWVsZW1lbnTvvIlcbiAgICAgKiovXG4gICAgZWZmZWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDoh6rliqjmn5PoibLpopzoibLlgLzliJfooahcbiAgICAgKi9cbiAgICBhdXRvQ29sb3JzOiB7XG4gICAgICB0eXBlOiBBcnJheVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6Ieq5Yqo5Li76aKY5YiX6KGo77yI5LuFZWxlbWVudO+8iVxuICAgICAqIOOAkCBsaWdodCwgcGxhaW4g44CRXG4gICAgICovXG4gICAgYXV0b0VmZmVjdHM6IHtcbiAgICAgIHR5cGU6IEFycmF5XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDmmL7npLrnsbvlnovvvJrjgJB0ZXh0LCB0YWfjgJFcbiAgICAgKi9cbiAgICB0eXBlOiB7XG4gICAgICBkZWZhdWx0OiBcInRhZ1wiXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlgLznmoTnsbvlnovvvIzjgJAgdmFsdWUgfCBvYmplY3TjgJFcbiAgICAgKi9cbiAgICB2YWx1ZVR5cGU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG4gICAgLyoqXG4gICAgICog5b2TdmFsdWXlgLzkuI3lnKjlrZflhbjkuK3ml7bpu5jorqTmmL7npLrnmoTmlofmnKxcbiAgICAgKi9cbiAgICBkZWZhdWx0TGFiZWw6IHt9LFxuXG4gICAgLyoqXG4gICAgICogbGFiZWzoh6rlrprkuYlyZW5kZXJcbiAgICAgKi9cbiAgICBsYWJlbEZvcm1hdHRlcjoge1xuICAgICAgdHlwZTogRnVuY3Rpb25cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOiHquWumuS5iemAiemhuXJlbmRlclxuICAgICAqL1xuICAgIGl0ZW1SZW5kZXI6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uXG4gICAgfSxcblxuICAgIGNsb3NhYmxlOiB7XG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVmYXVsdDogZmFsc2VcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXCJjbGlja1wiLCBcImRpY3QtY2hhbmdlXCIsIFwiY2xvc2VcIiwgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXSxcbiAgc2V0dXAocHJvcHM6IGFueSwgY3R4OiBhbnkpIHtcbiAgICAvLyB0cmFjZS50cmFjZShcInZhbHVlcy1mb3JtYXRcIik7XG4gICAgLy8gY29uc29sZS5sb2coXCJ2YWx1ZXMtZm9ybWF0IGluaXRcIiwgcHJvcHMubW9kZWxWYWx1ZSk7XG4gICAgLy9jb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IENPTE9SX0xJU1QgPSB1aS50YWcuY29sb3JzO1xuICAgIGNvbnN0IEVGRkVDVF9MSVNUID0gW1wicGxhaW5cIiwgXCJsaWdodFwiXTtcblxuICAgIGNvbnN0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICBjb25zdCB7IGdldENvbG9yLCBnZXRWYWx1ZSwgcmVtb3ZlUHJvcFZhbHVlIH0gPSB1c2VkRGljdDtcbiAgICB1c2VkRGljdC53YXRjaFZhbHVlKCk7XG4gICAgZnVuY3Rpb24gc2V0Q29sb3IocHJvcHM6IGFueSwgaXRlbTogYW55KSB7XG4gICAgICBpZiAoIWl0ZW0uZWZmZWN0ICYmIHByb3BzLmVmZmVjdCkge1xuICAgICAgICBpdGVtLmVmZmVjdCA9IHByb3BzLmVmZmVjdDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGVLZXkgPSB1aS50YWcudHlwZTtcbiAgICAgIGNvbnN0IGNvbG9yID0gZ2V0Q29sb3IoaXRlbSk7XG4gICAgICBpZiAoY29sb3IgIT0gbnVsbCkge1xuICAgICAgICAvL+WmguaenOW3sue7j+mFjee9ruS6hmNvbG9yXG4gICAgICAgIGlmICh0eXBlb2YgY29sb3IgIT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvL+WwhuWOn+acieeahGNvbG9y5a2X5q615Yig5o6J77yM6YG/5YWNbmFpdmUgY29sb3LmiqXplJlcbiAgICAgICAgcmVtb3ZlUHJvcFZhbHVlKGl0ZW0sIFwiY29sb3JcIik7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcjtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNvbG9yID09PSBcImF1dG9cIikge1xuICAgICAgICBjb25zdCBoYXNoY29kZSA9IGdldEhhc2hDb2RlKGdldFZhbHVlKGl0ZW0pKTtcbiAgICAgICAgY29uc29sZS5sb2coXCJoYXNoY29kZVwiLCBnZXRWYWx1ZShpdGVtKSwgaGFzaGNvZGUpO1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBwcm9wcy5hdXRvQ29sb3JzID8gcHJvcHMuYXV0b0NvbG9ycyA6IENPTE9SX0xJU1Q7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBjb2xvcnNbaGFzaGNvZGUgJSBjb2xvcnMubGVuZ3RoXTtcbiAgICAgICAgY29uc3QgZWZmZWN0cyA9IHByb3BzLmF1dG9FZmZlY3RzID8gcHJvcHMuYXV0b0VmZmVjdHMgOiBFRkZFQ1RfTElTVDtcbiAgICAgICAgaXRlbS5lZmZlY3QgPSBlZmZlY3RzW01hdGguZmxvb3IoaGFzaGNvZGUgLyBjb2xvcnMubGVuZ3RoKSAlIGVmZmVjdHMubGVuZ3RoXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW1bdHlwZUtleV0gPSBwcm9wcy5jb2xvcjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZFZhbHVlSXRlbXM6IFJlZjxhbnlbXT4gPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGlmIChwcm9wcy5tb2RlbFZhbHVlICYmICFBcnJheS5pc0FycmF5KHByb3BzLm1vZGVsVmFsdWUpKSB7XG4gICAgICAgICAgcmV0dXJuIFtwcm9wcy5tb2RlbFZhbHVlXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcHMubW9kZWxWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgIGlmIChwcm9wcy5tb2RlbFZhbHVlID09IG51bGwgfHwgcHJvcHMubW9kZWxWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCB2YWx1ZUFyciA9IGJ1aWxkQXJyYXlWYWx1ZShwcm9wcyk7XG5cbiAgICAgIGxldCBvcHRpb25zID0gW107XG5cbiAgICAgIGNvbnN0IHZhbHVlUHJvcCA9IHByb3BzLmRpY3Q/LnZhbHVlIHx8IFwidmFsdWVcIjtcbiAgICAgIGNvbnN0IGxhYmVsUHJvcCA9IHByb3BzLmRpY3Q/LmxhYmVsIHx8IFwibGFiZWxcIjtcblxuICAgICAgaWYgKGRpY3QpIHtcbiAgICAgICAgb3B0aW9ucyA9IGRpY3QuZ2V0Tm9kZXNGcm9tRGF0YU1hcCh2YWx1ZUFycik7XG4gICAgICAgIC8v6K6+572u6buY6K6kbGFiZWxcbiAgICAgICAgZm9yRWFjaChvcHRpb25zLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtW2xhYmVsUHJvcF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgaXRlbVtsYWJlbFByb3BdID0gcHJvcHMuZGVmYXVsdExhYmVsIHx8IGl0ZW1bdmFsdWVQcm9wXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucyA9IFtdO1xuICAgICAgICBmb3JFYWNoKHZhbHVlQXJyLCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgICAgICAgICBvcHRpb25zLnB1c2goaXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgIFt2YWx1ZVByb3BdOiBpdGVtLFxuICAgICAgICAgICAgICBbbGFiZWxQcm9wXTogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgY29sb3JmdWxPcHRpb25zOiBhbnkgPSBbXTtcbiAgICAgIGZvckVhY2gob3B0aW9ucywgKGl0ZW0pID0+IHtcbiAgICAgICAgY29sb3JmdWxPcHRpb25zLnB1c2gob21pdChpdGVtLCBcImNoaWxkcmVuXCIpKTtcbiAgICAgIH0pO1xuICAgICAgZm9yRWFjaChjb2xvcmZ1bE9wdGlvbnMsIChpdGVtKSA9PiB7XG4gICAgICAgIHNldENvbG9yKHByb3BzLCBpdGVtKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGNvbG9yZnVsT3B0aW9ucztcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGRvQ2xpY2soaXRlbTogYW55KSB7XG4gICAgICBjdHguZW1pdChcImNsaWNrXCIsIHsgaXRlbTogaXRlbSB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZG9DbG9zZShpbmRleDogbnVtYmVyLCBpdGVtOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwiY2xvc2VcIiwgeyBpdGVtLCBpbmRleCB9KTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlczogYW55W10gPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29tcHV0ZWRWYWx1ZUl0ZW1zLnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChpICE9PSBpbmRleCkge1xuICAgICAgICAgIG5ld1ZhbHVlcy5wdXNoKGdldFZhbHVlKGNvbXB1dGVkVmFsdWVJdGVtcy52YWx1ZVtpXSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjdHguZW1pdChcInVwZGF0ZTptb2RlbFZhbHVlXCIsIG5ld1ZhbHVlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBkb0NsaWNrLFxuICAgICAgY29tcHV0ZWRWYWx1ZUl0ZW1zLFxuICAgICAgZG9DbG9zZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG48c3R5bGUgbGFuZz1cImxlc3NcIj5cbi5mcy12YWx1ZXMtZm9ybWF0IC5mcy10YWcge1xuICBtYXJnaW46IDJweDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICAuZnMtdGFnLWljb24ge1xuICB9XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8c3Bhbj5cbiAgICA8dGVtcGxhdGUgdi1pZj1cImNvbXB1dGVkTXVsdGlwbGVcIj5cbiAgICAgIDxkaXYgdi1mb3I9XCIoTGFiZWxzLCBJbmRleCkgaW4gbXVsdGlwbGVMYWJlbHNcIiA6a2V5PVwiSW5kZXhcIj5cbiAgICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIExhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICAgIDxzcGFuIHYtaWY9XCJpbmRleCAhPT0gMFwiPiAvIDwvc3Bhbj5cbiAgICAgICAgICA8c3Bhbj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8dGVtcGxhdGUgdi1lbHNlPlxuICAgICAgPHNwYW4gdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIGxhYmVsc1wiIDprZXk9XCJpbmRleFwiPlxuICAgICAgICA8c3BhbiB2LWlmPVwiaW5kZXggIT09IDBcIj4gLyA8L3NwYW4+XG4gICAgICAgIDxzcGFuPnt7IGdldExhYmVsKGl0ZW0pIH19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvdGVtcGxhdGU+XG4gIDwvc3Bhbj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog57qn6IGU5pWw5o2u5qC85byP5YyW5bGV56S657uE5Lu2XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJGb3JtYXRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiAgIOWAvDxici8+XG4gICAgICogICDljZXpgInml7YgJzEsMiwzJyDmiJYgWzEsMiwzXTxici8+XG4gICAgICogICDlpJrpgIlbWzEsMiwzXSxbNCw1LDZdXTxici8+XG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG1vZGVsVmFsdWU6IHtcbiAgICAgIHR5cGU6IFtTdHJpbmcsIEFycmF5XSxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmU6IHRydWVcbiAgICB9LFxuICAgIC8qKlxuICAgICAqICB2YWx1ZeeahOWIhumalOespjxici8+XG4gICAgICogIOWkmumAieaXtu+8jOWmguaenHZhbHVl5Li6c3RyaW5n77yM5YiZ5Lul6K+l5YiG6ZqU56ym5YiG5Ymy5oiQ5aSa5Liq5bGV56S6PGJyLz5cbiAgICAgKiAg5Lyg5YWl56m65a2X56ym5Liy77yM6KGo56S65LiN5YiG5YmyPGJyLz5cbiAgICAgKi9cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgc2VwYXJhdG9yOiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogXCIsXCIsIHJlcXVpcmU6IGZhbHNlIH0sXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSa6YCJXG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG11bHRpcGxlOiB7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IGZhbHNlIH0sXG4gICAgLyoqXG4gICAgICog5pWw5o2u5a2X5YW4XG4gICAgICovXG4gICAgZGljdDoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkLFxuICAgICAgcmVxdWlyZTogZmFsc2VcbiAgICB9XG4gIH0gYXMgYW55LFxuICBlbWl0czogW1wiZGljdC1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCBkaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHByb3BzLmRpY3Q/LmdldE5vZGVzQnlWYWx1ZXMpIHtcbiAgICAgIGRpY3Qud2F0Y2hWYWx1ZSgpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXB1dGVkTXVsdGlwbGUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICByZXR1cm4gcHJvcHMubXVsdGlwbGU7XG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uZGljdCxcbiAgICAgIGNvbXB1dGVkTXVsdGlwbGVcbiAgICB9O1xuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7fTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBsYWJlbHMoKSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodGhpcy5tb2RlbFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHRoaXMuYnVpbGRWYWx1ZUl0ZW0odGhpcy5tb2RlbFZhbHVlKTtcbiAgICB9LFxuICAgIG11bHRpcGxlTGFiZWxzKCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFyciA9IFtdO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFyci5wdXNoKHRoaXMuYnVpbGRWYWx1ZUl0ZW0oaXRlbSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBnZXRWYWx1ZUFycih2YWx1ZXM6IGFueSkge1xuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICB2YWx1ZXMgPSBbXTtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMubW9kZWxWYWx1ZSkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzdWIgb2YgaXRlbSkge1xuICAgICAgICAgICAgICB2YWx1ZXMucHVzaChzdWIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgdmFsdWVzID0gdGhpcy5tb2RlbFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVzID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgbGV0IGFyciA9IG51bGw7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBpZiAodHlwZW9mIHZhbHVlcyA9PT0gXCJzdHJpbmdcIiAmJiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnNlcGFyYXRvciAhPSBudWxsICYmIHRoaXMuc2VwYXJhdG9yICE9PSBcIlwiKSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgYXJyID0gdmFsdWVzLnNwbGl0KHRoaXMuc2VwYXJhdG9yKTtcbiAgICAgIH0gZWxzZSBpZiAodmFsdWVzIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgYXJyID0gdmFsdWVzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJyID0gW3ZhbHVlc107XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyO1xuICAgIH0sXG4gICAgYnVpbGRWYWx1ZUl0ZW0odmFsdWVzOiBhbnkpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGFyciA9IHRoaXMuZ2V0VmFsdWVBcnIodmFsdWVzKTtcblxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgZGljdCA9IHRoaXMuZ2V0RGljdCgpO1xuICAgICAgaWYgKGRpY3QpIHtcbiAgICAgICAgcmV0dXJuIGRpY3QuZ2V0Tm9kZXNGcm9tRGF0YU1hcChhcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4+XG4gICAgPHRlbXBsYXRlIHYtaWY9XCJjb21wdXRlZE11bHRpcGxlXCI+XG4gICAgICA8ZGl2IHYtZm9yPVwiKExhYmVscywgSW5kZXgpIGluIG11bHRpcGxlTGFiZWxzXCIgOmtleT1cIkluZGV4XCI+XG4gICAgICAgIDxzcGFuIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBMYWJlbHNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgICA8c3BhbiB2LWlmPVwiaW5kZXggIT09IDBcIj4gLyA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4+e3sgZ2V0TGFiZWwoaXRlbSkgfX08L3NwYW4+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvdGVtcGxhdGU+XG4gICAgPHRlbXBsYXRlIHYtZWxzZT5cbiAgICAgIDxzcGFuIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiBsYWJlbHNcIiA6a2V5PVwiaW5kZXhcIj5cbiAgICAgICAgPHNwYW4gdi1pZj1cImluZGV4ICE9PSAwXCI+IC8gPC9zcGFuPlxuICAgICAgICA8c3Bhbj57eyBnZXRMYWJlbChpdGVtKSB9fTwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG4vKipcbiAqIOe6p+iBlOaVsOaNruagvOW8j+WMluWxleekuue7hOS7tlxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdENhc2NhZGVyRm9ybWF0XCIsXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICogICDlgLw8YnIvPlxuICAgICAqICAg5Y2V6YCJ5pe2ICcxLDIsMycg5oiWIFsxLDIsM108YnIvPlxuICAgICAqICAg5aSa6YCJW1sxLDIsM10sWzQsNSw2XV08YnIvPlxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBtb2RlbFZhbHVlOiB7XG4gICAgICB0eXBlOiBbU3RyaW5nLCBBcnJheV0sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gICAgICByZXF1aXJlOiB0cnVlXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiAgdmFsdWXnmoTliIbpmpTnrKY8YnIvPlxuICAgICAqICDlpJrpgInml7bvvIzlpoLmnpx2YWx1ZeS4unN0cmluZ++8jOWImeS7peivpeWIhumalOespuWIhuWJsuaIkOWkmuS4quWxleekujxici8+XG4gICAgICogIOS8oOWFpeepuuWtl+espuS4su+8jOihqOekuuS4jeWIhuWJsjxici8+XG4gICAgICovXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHNlcGFyYXRvcjogeyB0eXBlOiBTdHJpbmcsIGRlZmF1bHQ6IFwiLFwiLCByZXF1aXJlOiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqIOaYr+WQpuWkmumAiVxuICAgICAqL1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBtdWx0aXBsZTogeyB0eXBlOiBCb29sZWFuLCBkZWZhdWx0OiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgICAgIHJlcXVpcmU6IGZhbHNlXG4gICAgfVxuICB9IGFzIGFueSxcbiAgZW1pdHM6IFtcImRpY3QtY2hhbmdlXCJdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgZGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChwcm9wcy5kaWN0Py5nZXROb2Rlc0J5VmFsdWVzKSB7XG4gICAgICBkaWN0LndhdGNoVmFsdWUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wdXRlZE11bHRpcGxlID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgcmV0dXJuIHByb3BzLm11bHRpcGxlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmRpY3QsXG4gICAgICBjb21wdXRlZE11bHRpcGxlXG4gICAgfTtcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge307XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgbGFiZWxzKCkge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHRoaXMubW9kZWxWYWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHJldHVybiB0aGlzLmJ1aWxkVmFsdWVJdGVtKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgfSxcbiAgICBtdWx0aXBsZUxhYmVscygpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBhcnIucHVzaCh0aGlzLmJ1aWxkVmFsdWVJdGVtKGl0ZW0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcnI7XG4gICAgfVxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgZ2V0VmFsdWVBcnIodmFsdWVzOiBhbnkpIHtcbiAgICAgIGlmICh2YWx1ZXMgPT0gbnVsbCkge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgdmFsdWVzID0gW107XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiB0aGlzLm1vZGVsVmFsdWUpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc3ViIG9mIGl0ZW0pIHtcbiAgICAgICAgICAgICAgdmFsdWVzLnB1c2goc3ViKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHZhbHVlcyA9IHRoaXMubW9kZWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhbHVlcyA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cbiAgICAgIGxldCBhcnIgPSBudWxsO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZXMgPT09IFwic3RyaW5nXCIgJiYgIXRoaXMubXVsdGlwbGUgJiYgdGhpcy5zZXBhcmF0b3IgIT0gbnVsbCAmJiB0aGlzLnNlcGFyYXRvciAhPT0gXCJcIikge1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGFyciA9IHZhbHVlcy5zcGxpdCh0aGlzLnNlcGFyYXRvcik7XG4gICAgICB9IGVsc2UgaWYgKHZhbHVlcyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGFyciA9IHZhbHVlcztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyciA9IFt2YWx1ZXNdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFycjtcbiAgICB9LFxuICAgIGJ1aWxkVmFsdWVJdGVtKHZhbHVlczogYW55KSB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBhcnIgPSB0aGlzLmdldFZhbHVlQXJyKHZhbHVlcyk7XG5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IGRpY3QgPSB0aGlzLmdldERpY3QoKTtcbiAgICAgIGlmIChkaWN0KSB7XG4gICAgICAgIHJldHVybiBkaWN0LmdldE5vZGVzRnJvbURhdGFNYXAoYXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS5jYXNjYWRlci5uYW1lXCJcbiAgICByZWY9XCJjYXNjYWRlclJlZlwiXG4gICAgOm9wdGlvbnM9XCJjb21wdXRlZE9wdGlvbnNcIlxuICAgIHYtYmluZD1cImZpZWxkTmFtZXNCaW5kZXJcIlxuICAgIEBjaGFuZ2U9XCJvblNlbGVjdENoYW5nZVwiXG4gIC8+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDlrZflhbjnuqfogZTnu4Tku7ZcbiAqIOaUr+aMgWVsLWNhc2NhZGVyfGEtY2FzY2FkZXLnu4Tku7bnmoTlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RDYXNjYWRlclwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOmFjee9rlxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAvKipcbiAgICAgKiDovazmjaJEaWN0RGF0YVxuICAgICAqL1xuICAgIHRyYW5zZm9ybURpY3REYXRhOiB7XG4gICAgICB0eXBlOiBGdW5jdGlvbixcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxuICAgIH1cbiAgfSxcbiAgZW1pdHM6IFtcbiAgICAvKipcbiAgICAgKiDlrZflhbjmlbDmja7lj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImRpY3QtY2hhbmdlXCIsXG5cbiAgICAvKipcbiAgICAgKiDpgInkuK3lgLzlj5jljJbkuovku7bvvIzlj6/ku6Xojrflj5bliLDlvZPliY3pgInkuK3nmoRvcHRpb27lr7nosaFcbiAgICAgKi9cbiAgICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAgIC8qKlxuICAgICAqIOWAvOWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiY2hhbmdlXCJcbiAgXSxcbiAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgIGNvbnN0IGNhc2NhZGVyUmVmID0gcmVmKCk7XG4gICAgY29uc3QgZGljdFVzZVJldCA9IHVzZURpY3QocHJvcHMsIGN0eCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBmaWVsZE5hbWVzQmluZGVyID0gcmVmKCk7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChwcm9wcy5kaWN0KSB7XG4gICAgICBmaWVsZE5hbWVzQmluZGVyLnZhbHVlID0gdWkuY2FzY2FkZXIuZmllbGROYW1lcyh7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdmFsdWU6IHByb3BzLmRpY3QudmFsdWUsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgbGFiZWw6IHByb3BzLmRpY3QubGFiZWwsXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgY2hpbGRyZW46IHByb3BzLmRpY3QuY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSBkaWN0VXNlUmV0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuXG4gICAgZnVuY3Rpb24gb25TZWxlY3RDaGFuZ2UodmFsdWU6IGFueSkge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGxldCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgY29uc3QgZGljdCA9IGRpY3RVc2VSZXQuZ2V0RGljdCgpO1xuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XG4gICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjYXNjYWRlclJlZixcbiAgICAgIC4uLmRpY3RVc2VSZXQsXG4gICAgICBmaWVsZE5hbWVzQmluZGVyLFxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxuICAgICAgb25TZWxlY3RDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkuY2FzY2FkZXIubmFtZVwiXG4gICAgcmVmPVwiY2FzY2FkZXJSZWZcIlxuICAgIDpvcHRpb25zPVwiY29tcHV0ZWRPcHRpb25zXCJcbiAgICB2LWJpbmQ9XCJmaWVsZE5hbWVzQmluZGVyXCJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RDaGFuZ2VcIlxuICAvPlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbi8qKlxuICog5a2X5YW457qn6IGU57uE5Lu2XG4gKiDmlK/mjIFlbC1jYXNjYWRlcnxhLWNhc2NhZGVy57uE5Lu255qE5Y+C5pWwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2FzY2FkZXJcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlrZflhbjphY3nva5cbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDpgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5IH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCBjYXNjYWRlclJlZiA9IHJlZigpO1xuICAgIGNvbnN0IGRpY3RVc2VSZXQgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xuICAgIGNvbnN0IHsgdWkgfSA9IHVzZVVpKCk7XG4gICAgY29uc3QgZmllbGROYW1lc0JpbmRlciA9IHJlZigpO1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAocHJvcHMuZGljdCkge1xuICAgICAgZmllbGROYW1lc0JpbmRlci52YWx1ZSA9IHVpLmNhc2NhZGVyLmZpZWxkTmFtZXMoe1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHZhbHVlOiBwcm9wcy5kaWN0LnZhbHVlLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGxhYmVsOiBwcm9wcy5kaWN0LmxhYmVsLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIGNoaWxkcmVuOiBwcm9wcy5kaWN0LmNoaWxkcmVuXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gZGljdFVzZVJldC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGZ1bmN0aW9uIG9uU2VsZWN0Q2hhbmdlKHZhbHVlOiBhbnkpIHtcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIGNvbnN0IGRpY3QgPSBkaWN0VXNlUmV0LmdldERpY3QoKTtcbiAgICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xuICAgICAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgICBzZWxlY3RlZE9wdGlvbnMucHVzaChvcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBzZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHVpLFxuICAgICAgY2FzY2FkZXJSZWYsXG4gICAgICAuLi5kaWN0VXNlUmV0LFxuICAgICAgZmllbGROYW1lc0JpbmRlcixcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0Q2hhbmdlXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGNvbXBvbmVudCA6aXM9XCJ1aS5jaGVja2JveEdyb3VwLm5hbWVcIiBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiPlxuICAgIDxjb21wb25lbnRcbiAgICAgIDppcz1cIm9wdGlvbk5hbWUgfHwgdWkuY2hlY2tib3gubmFtZVwiXG4gICAgICB2LWZvcj1cIml0ZW0gb2YgY29tcHV0ZWRPcHRpb25zXCJcbiAgICAgIHJlZj1cImNoZWNrYm94UmVmXCJcbiAgICAgIDprZXk9XCJnZXRWYWx1ZShpdGVtKVwiXG4gICAgICA6W3VpLmNoZWNrYm94LnZhbHVlXT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIHYtYmluZD1cIm9wdGlvblByb3BzXCJcbiAgICAgID57eyBnZXRMYWJlbChpdGVtKSB9fTwvY29tcG9uZW50XG4gICAgPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuXG4vKipcbiAqIOWtl+WFuGNoZWNrYm94XG4gKiDmlK/mjIFlbC1jaGVja2JveHxhLWNoZWNrYm945Y+C5pWwXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbXBvbmVudCh7XG4gIG5hbWU6IFwiRnNEaWN0Q2hlY2tib3hcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDlrZflhbhcbiAgICAgKi9cbiAgICBkaWN0OiB7fSxcbiAgICAvKipcbiAgICAgKiDpgInpobnvvIzmr5RkaWN0LmRhdGHkvJjlhYjnuqfpq5hcbiAgICAgKi9cbiAgICBvcHRpb25zOiB7IHR5cGU6IEFycmF5LCBkZWZhdWx0OiB1bmRlZmluZWQsIHJlcXVpcmU6IGZhbHNlIH0sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTnu4Tku7blkI3np7BcbiAgICAgKi9cbiAgICBvcHRpb25OYW1lOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog6YCJ6aG555qE5bGe5oCnXG4gICAgICovXG4gICAgb3B0aW9uUHJvcHM6IHtcbiAgICAgIHR5cGU6IE9iamVjdCxcbiAgICAgIGRlZmF1bHQoKSB7XG4gICAgICAgIHJldHVybiB7fTtcbiAgICAgIH1cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgsIHVpLmNoZWNrYm94R3JvdXAubW9kZWxWYWx1ZSk7XG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkT3B0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xuICAgICAgICBpZiAoZGljdCAmJiBkaWN0LmRhdGFNYXApIHtcbiAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICBjb25zdCBvcHQgPSBkaWN0LmRhdGFNYXBbaXRlbV07XG4gICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIG51bGwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2VcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50IDppcz1cInVpLmNoZWNrYm94R3JvdXAubmFtZVwiIEBjaGFuZ2U9XCJvblNlbGVjdGVkQ2hhbmdlXCI+XG4gICAgPGNvbXBvbmVudFxuICAgICAgOmlzPVwib3B0aW9uTmFtZSB8fCB1aS5jaGVja2JveC5uYW1lXCJcbiAgICAgIHYtZm9yPVwiaXRlbSBvZiBjb21wdXRlZE9wdGlvbnNcIlxuICAgICAgcmVmPVwiY2hlY2tib3hSZWZcIlxuICAgICAgOmtleT1cImdldFZhbHVlKGl0ZW0pXCJcbiAgICAgIDpbdWkuY2hlY2tib3gudmFsdWVdPVwiZ2V0VmFsdWUoaXRlbSlcIlxuICAgICAgdi1iaW5kPVwib3B0aW9uUHJvcHNcIlxuICAgICAgPnt7IGdldExhYmVsKGl0ZW0pIH19PC9jb21wb25lbnRcbiAgICA+XG4gIDwvY29tcG9uZW50PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQgbGFuZz1cInRzXCI+XG5pbXBvcnQgeyB1c2VEaWN0IH0gZnJvbSBcIi4uLy4uL3VzZS91c2UtZGljdFwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5a2X5YW4Y2hlY2tib3hcbiAqIOaUr+aMgWVsLWNoZWNrYm94fGEtY2hlY2tib3jlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RDaGVja2JveFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOmAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXksIGRlZmF1bHQ6IHVuZGVmaW5lZCwgcmVxdWlyZTogZmFsc2UgfSxcblxuICAgIC8qKlxuICAgICAqIOmAiemhueeahOe7hOS7tuWQjeensFxuICAgICAqL1xuICAgIG9wdGlvbk5hbWU6IHtcbiAgICAgIHR5cGU6IFN0cmluZ1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDpgInpobnnmoTlsZ7mgKdcbiAgICAgKi9cbiAgICBvcHRpb25Qcm9wczoge1xuICAgICAgdHlwZTogT2JqZWN0LFxuICAgICAgZGVmYXVsdCgpIHtcbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuY2hlY2tib3hHcm91cC5tb2RlbFZhbHVlKTtcbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcbiAgICBjb25zdCBvblNlbGVjdGVkQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGN0eC5lbWl0KFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xuICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcbiAgICAgICAgICAgIGlmIChvcHQpIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgY29tcHV0ZWRPcHRpb25zLFxuICAgICAgb25TZWxlY3RlZENoYW5nZVxuICAgIH07XG4gIH1cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnQgOmlzPVwidWkuc3dpdGNoLm5hbWVcIiByZWY9XCJzd2l0Y2hSZWZcIiB2LWJpbmQ9XCJiaW5kaW5nXCIgLz5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVpQ29udGV4dCB9IGZyb20gXCIuLi8uLi91aVwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBQcm9wVHlwZSB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IERpY3RPcHRpb25zLCB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjlvIDlhbNcbiAqIOaUr+aMgWVsLXN3aXRjaHxhLXN3aXRjaOeahOWxnuaAp1xuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdFN3aXRjaFwiLFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOesrOS4gOS4quS4uuW8gOWQr1xuICAgICAqIOesrOS6jOS4quS4uuWFs+mXrVxuICAgICAqL1xuICAgIGRpY3Q6IHtcbiAgICAgIHR5cGU6IE9iamVjdCBhcyBQcm9wVHlwZTxEaWN0T3B0aW9uczxhbnk+PlxuICAgIH0sXG4gICAgb3B0aW9uczoge30sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0gYXMgYW55LFxuICBlbWl0czogW1wiZGljdC1jaGFuZ2VcIl0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGxldCB1c2VkRGljdCA9IHVzZURpY3QocHJvcHMsIGN0eCwgdWkuc3dpdGNoLm1vZGVsVmFsdWUpO1xuICAgIGNvbnN0IGNvbXB1dGVkT3B0aW9ucyA9IHVzZWREaWN0LmNyZWF0ZUNvbXB1dGVkT3B0aW9ucygpO1xuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIC4uLnVzZWREaWN0LFxuICAgICAgY29tcHV0ZWRPcHRpb25zXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBfYWN0aXZlKCkge1xuICAgICAgaWYgKHRoaXMuY29tcHV0ZWRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRPcHRpb25zWzBdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgX2luQWN0aXZlKCkge1xuICAgICAgaWYgKHRoaXMuY29tcHV0ZWRPcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcHV0ZWRPcHRpb25zWzFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH0sXG4gICAgYmluZGluZygpIHtcbiAgICAgIGNvbnN0IHVpID0gdWlDb250ZXh0LmdldCgpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZVRleHRdOiB0aGlzLl9hY3RpdmVbdGhpcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guaW5hY3RpdmVUZXh0XTogdGhpcy5faW5BY3RpdmVbdGhpcy5kaWN0Py5sYWJlbCB8fCBcImxhYmVsXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guYWN0aXZlQ29sb3JdOiB0aGlzLl9hY3RpdmVbdGhpcy5kaWN0Py5jb2xvciB8fCBcImNvbG9yXCJdLFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIFt1aS5zd2l0Y2guaW5hY3RpdmVDb2xvcl06IHRoaXMuX2luQWN0aXZlW3RoaXMuZGljdD8uY29sb3IgfHwgXCJjb2xvclwiXSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmFjdGl2ZVZhbHVlXTogdGhpcy5fYWN0aXZlW3RoaXMuZGljdD8udmFsdWUgfHwgXCJ2YWx1ZVwiXSxcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBbdWkuc3dpdGNoLmluYWN0aXZlVmFsdWVdOiB0aGlzLl9pbkFjdGl2ZVt0aGlzLmRpY3Q/LnZhbHVlIHx8IFwidmFsdWVcIl1cbiAgICAgIH07XG4gICAgfVxuICB9XG59KTtcbjwvc2NyaXB0PiIsIjx0ZW1wbGF0ZT5cbiAgPHNwYW4+e3sgZG9Gb3JtYXQgfX08L3NwYW4+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50IH0gZnJvbSBcInZ1ZVwiO1xuLyoqXG4gKiDml6XmnJ/moLzlvI/ljJblsZXnpLrnu4Tku7ZcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RhdGVGb3JtYXRcIixcbiAgcHJvcHM6IHtcbiAgICAvKipcbiAgICAgKiDml6XmnJ/ml7bpl7TlgLzvvIzmlK/mjIFsb25nLHN0cmluZyxkYXRl562J77yM55SxZGF5anPovazljJZcbiAgICAgKi9cbiAgICBtb2RlbFZhbHVlOiB7IHJlcXVpcmVkOiBmYWxzZSB9LFxuICAgIC8qKlxuICAgICAqICDovpPlhaXmoLzlvI/ljJbvvIzkuI3kvKDliJnnlLFkYXlqc+iHquWKqOi9rOWMllxuICAgICAqL1xuICAgIHZhbHVlRm9ybWF0OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogdW5kZWZpbmVkLCByZXF1aXJlZDogZmFsc2UgfSxcbiAgICAvKipcbiAgICAgKiAg6L6T5Ye65qC85byP5YyWXG4gICAgICovXG4gICAgZm9ybWF0OiB7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogXCJZWVlZLU1NLUREIEhIOm1tOnNzXCIsIHJlcXVpcmVkOiBmYWxzZSB9XG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW06IHt9XG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBkb0Zvcm1hdCgpIHtcbiAgICAgIGlmICh0aGlzLm1vZGVsVmFsdWUgPT0gbnVsbCB8fCB0aGlzLm1vZGVsVmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICBsZXQgZGF0ZSA9IG51bGw7XG4gICAgICBpZiAodGhpcy52YWx1ZUZvcm1hdCAhPSBudWxsKSB7XG4gICAgICAgIGRhdGUgPSBkYXlqcyh0aGlzLm1vZGVsVmFsdWUsIHRoaXMudmFsdWVGb3JtYXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0ZSA9IGRheWpzKHRoaXMubW9kZWxWYWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZGF0ZS5mb3JtYXQodGhpcy5mb3JtYXQpO1xuICAgIH1cbiAgfSBhcyBhbnksXG4gIGNyZWF0ZWQoKSB7fSxcbiAgbWV0aG9kczoge31cbn0pO1xuPC9zY3JpcHQ+XG4iLCI8dGVtcGxhdGU+XG4gIDxjb21wb25lbnRcbiAgICA6aXM9XCJ1aS50cmVlU2VsZWN0Lm5hbWVcIlxuICAgIHJlZj1cInRyZWVSZWZcIlxuICAgIDpbdWkudHJlZVNlbGVjdC5vcHRpb25zXT1cImNvbXB1dGVkT3B0aW9uc1wiXG4gICAgOnBsYWNlaG9sZGVyPVwiY29tcHV0ZWRQbGFjZWhvbGRlclwiXG4gICAgdi1iaW5kPVwiY29tcHV0ZWRCaW5kaW5nXCJcbiAgICBAY2hhbmdlPVwib25TZWxlY3RlZENoYW5nZVwiXG4gID5cbiAgICA8dGVtcGxhdGUgdi1mb3I9XCIodmFsdWUsIGtleSkgb2Ygc2xvdHNcIiA6a2V5PVwia2V5XCIgI1trZXldPVwic2NvcGVcIj5cbiAgICAgIDxmcy1zbG90LXJlbmRlciA6c2xvdHM9XCJ2YWx1ZVwiIDpzY29wZT1cInNjb3BlXCI+PC9mcy1zbG90LXJlbmRlcj5cbiAgICA8L3RlbXBsYXRlPlxuICA8L2NvbXBvbmVudD5cbjwvdGVtcGxhdGU+XG48c2NyaXB0IGxhbmc9XCJ0c1wiPlxuaW1wb3J0IHsgY29tcHV0ZWQsIGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSBcInZ1ZVwiO1xuaW1wb3J0IHsgdXNlRGljdCB9IGZyb20gXCIuLi8uLi91c2UvdXNlLWRpY3RcIjtcbmltcG9ydCB7IHVzZUkxOG4gfSBmcm9tIFwiLi4vLi4vbG9jYWxlXCI7XG5pbXBvcnQgeyB1c2VVaSB9IGZyb20gXCIuLi8uLi91c2VcIjtcblxuLyoqXG4gKiDlrZflhbjmoJHpgInmi6nnu4Tku7ZcbiAqIOaUr+aMgSBhLXRyZWUtc2VsZWN0IOWPguaVsFxuICovXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICBuYW1lOiBcIkZzRGljdFRyZWVcIixcbiAgY29tcG9uZW50czoge30sXG4gIHByb3BzOiB7XG4gICAgLyoqXG4gICAgICog5pWw5o2u5a2X5YW4XG4gICAgICovXG4gICAgZGljdDoge30sXG4gICAgLyoqXG4gICAgICog5Y+v6YCJ6aG577yM5q+UZGljdC5kYXRh5LyY5YWI57qn6auYXG4gICAgICovXG4gICAgb3B0aW9uczogeyB0eXBlOiBBcnJheSB9LFxuICAgIC8qKlxuICAgICAqIHBsYWNlaG9sZGVyXG4gICAgICovXG4gICAgcGxhY2Vob2xkZXI6IHsgdHlwZTogU3RyaW5nIH0sXG4gICAgLyoqXG4gICAgICog6L2s5o2iRGljdERhdGFcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm1EaWN0RGF0YToge1xuICAgICAgdHlwZTogRnVuY3Rpb24sXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcbiAgICB9XG4gIH0sXG4gIGVtaXRzOiBbXG4gICAgLyoqXG4gICAgICog5a2X5YW45pWw5o2u5Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJkaWN0LWNoYW5nZVwiLFxuXG4gICAgLyoqXG4gICAgICog6YCJ5Lit5YC85Y+Y5YyW5LqL5Lu277yM5Y+v5Lul6I635Y+W5Yiw5b2T5YmN6YCJ5Lit55qEb3B0aW9u5a+56LGhXG4gICAgICovXG4gICAgXCJzZWxlY3RlZC1jaGFuZ2VcIixcbiAgICAvKipcbiAgICAgKiDlgLzlj5jljJbkuovku7ZcbiAgICAgKi9cbiAgICBcImNoYW5nZVwiXG4gIF0sXG4gIC8vIHJlbmRlciAoKSB7XG4gIC8vICAgcmV0dXJuIHRoaXMucmVuZGVyRnVuYyh7IGRhdGE6IHRoaXMuZGF0YSwgZGF0YU1hcDogdGhpcy5kYXRhTWFwLCBzY29wZTogdGhpcy5zY29wZSwgYXR0cnM6IHRoaXMuJGF0dHJzIH0pXG4gIC8vIH0sXG4gIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICBjb25zdCB7IHQgfSA9IHVzZUkxOG4oKTtcbiAgICBjb25zdCB7IHVpIH0gPSB1c2VVaSgpO1xuICAgIGNvbnN0IGNvbXB1dGVkUGxhY2Vob2xkZXIgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICByZXR1cm4gcHJvcHMucGxhY2Vob2xkZXIgfHwgdChcImZzLmNvbXBvbmVudC5zZWxlY3QucGxhY2Vob2xkZXJcIik7XG4gICAgfSk7XG5cbiAgICBsZXQgdXNlZERpY3QgPSB1c2VEaWN0KHByb3BzLCBjdHgpO1xuXG4gICAgY29uc3Qgc2xvdHMgPSBjdHguc2xvdHM7XG5cbiAgICBjb25zdCBjb21wdXRlZE9wdGlvbnMgPSB1c2VkRGljdC5jcmVhdGVDb21wdXRlZE9wdGlvbnMoKTtcblxuICAgIGNvbnN0IGNvbXB1dGVkQmluZGluZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICByZXR1cm4gdWkudHJlZVNlbGVjdC5idWlsZE9wdGlvbktleXNOYW1lQmluZGluZyh7XG4gICAgICAgIGxhYmVsOiBkaWN0LmxhYmVsLFxuICAgICAgICB2YWx1ZTogZGljdC52YWx1ZSxcbiAgICAgICAgY2hpbGRyZW46IGRpY3QuY2hpbGRyZW5cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3Qgb25TZWxlY3RlZENoYW5nZSA9ICh2YWx1ZTogYW55KSA9PiB7XG4gICAgICBjdHguZW1pdChcImNoYW5nZVwiLCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgY29uc3QgZGljdCA9IHVzZWREaWN0LmdldERpY3QoKTtcbiAgICAgICAgaWYgKGRpY3QgJiYgZGljdC5kYXRhTWFwKSB7XG4gICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZE9wdGlvbnMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3B0ID0gZGljdC5kYXRhTWFwW2l0ZW1dO1xuICAgICAgICAgICAgICBpZiAob3B0KSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRPcHRpb25zLnB1c2gob3B0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgc2VsZWN0ZWRPcHRpb25zKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgZGljdC5kYXRhTWFwW3ZhbHVlXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjdHguZW1pdChcInNlbGVjdGVkLWNoYW5nZVwiLCBudWxsKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgY29uc3QgdHJlZVJlZiA9IHJlZigpO1xuICAgIHJldHVybiB7XG4gICAgICB1aSxcbiAgICAgIGNvbXB1dGVkQmluZGluZyxcbiAgICAgIGNvbXB1dGVkUGxhY2Vob2xkZXIsXG4gICAgICAuLi51c2VkRGljdCxcbiAgICAgIGNvbXB1dGVkT3B0aW9ucyxcbiAgICAgIG9uU2VsZWN0ZWRDaGFuZ2UsXG4gICAgICBzbG90cyxcbiAgICAgIHRyZWVSZWZcbiAgICB9O1xuICB9XG59KTtcbjwvc2NyaXB0PlxuIiwiPHRlbXBsYXRlPlxuICA8Y29tcG9uZW50XG4gICAgOmlzPVwidWkudHJlZVNlbGVjdC5uYW1lXCJcbiAgICByZWY9XCJ0cmVlUmVmXCJcbiAgICA6W3VpLnRyZWVTZWxlY3Qub3B0aW9uc109XCJjb21wdXRlZE9wdGlvbnNcIlxuICAgIDpwbGFjZWhvbGRlcj1cImNvbXB1dGVkUGxhY2Vob2xkZXJcIlxuICAgIHYtYmluZD1cImNvbXB1dGVkQmluZGluZ1wiXG4gICAgQGNoYW5nZT1cIm9uU2VsZWN0ZWRDaGFuZ2VcIlxuICA+XG4gICAgPHRlbXBsYXRlIHYtZm9yPVwiKHZhbHVlLCBrZXkpIG9mIHNsb3RzXCIgOmtleT1cImtleVwiICNba2V5XT1cInNjb3BlXCI+XG4gICAgICA8ZnMtc2xvdC1yZW5kZXIgOnNsb3RzPVwidmFsdWVcIiA6c2NvcGU9XCJzY29wZVwiPjwvZnMtc2xvdC1yZW5kZXI+XG4gICAgPC90ZW1wbGF0ZT5cbiAgPC9jb21wb25lbnQ+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGNvbXB1dGVkLCBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gXCJ2dWVcIjtcbmltcG9ydCB7IHVzZURpY3QgfSBmcm9tIFwiLi4vLi4vdXNlL3VzZS1kaWN0XCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuaW1wb3J0IHsgdXNlVWkgfSBmcm9tIFwiLi4vLi4vdXNlXCI7XG5cbi8qKlxuICog5a2X5YW45qCR6YCJ5oup57uE5Lu2XG4gKiDmlK/mjIEgYS10cmVlLXNlbGVjdCDlj4LmlbBcbiAqL1xuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KHtcbiAgbmFtZTogXCJGc0RpY3RUcmVlXCIsXG4gIGNvbXBvbmVudHM6IHt9LFxuICBwcm9wczoge1xuICAgIC8qKlxuICAgICAqIOaVsOaNruWtl+WFuFxuICAgICAqL1xuICAgIGRpY3Q6IHt9LFxuICAgIC8qKlxuICAgICAqIOWPr+mAiemhue+8jOavlGRpY3QuZGF0YeS8mOWFiOe6p+mrmFxuICAgICAqL1xuICAgIG9wdGlvbnM6IHsgdHlwZTogQXJyYXkgfSxcbiAgICAvKipcbiAgICAgKiBwbGFjZWhvbGRlclxuICAgICAqL1xuICAgIHBsYWNlaG9sZGVyOiB7IHR5cGU6IFN0cmluZyB9LFxuICAgIC8qKlxuICAgICAqIOi9rOaNokRpY3REYXRhXG4gICAgICovXG4gICAgdHJhbnNmb3JtRGljdERhdGE6IHtcbiAgICAgIHR5cGU6IEZ1bmN0aW9uLFxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXG4gICAgfVxuICB9LFxuICBlbWl0czogW1xuICAgIC8qKlxuICAgICAqIOWtl+WFuOaVsOaNruWPmOWMluS6i+S7tlxuICAgICAqL1xuICAgIFwiZGljdC1jaGFuZ2VcIixcblxuICAgIC8qKlxuICAgICAqIOmAieS4reWAvOWPmOWMluS6i+S7tu+8jOWPr+S7peiOt+WPluWIsOW9k+WJjemAieS4reeahG9wdGlvbuWvueixoVxuICAgICAqL1xuICAgIFwic2VsZWN0ZWQtY2hhbmdlXCIsXG4gICAgLyoqXG4gICAgICog5YC85Y+Y5YyW5LqL5Lu2XG4gICAgICovXG4gICAgXCJjaGFuZ2VcIlxuICBdLFxuICAvLyByZW5kZXIgKCkge1xuICAvLyAgIHJldHVybiB0aGlzLnJlbmRlckZ1bmMoeyBkYXRhOiB0aGlzLmRhdGEsIGRhdGFNYXA6IHRoaXMuZGF0YU1hcCwgc2NvcGU6IHRoaXMuc2NvcGUsIGF0dHJzOiB0aGlzLiRhdHRycyB9KVxuICAvLyB9LFxuICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgY29uc3QgeyB0IH0gPSB1c2VJMThuKCk7XG4gICAgY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbiAgICBjb25zdCBjb21wdXRlZFBsYWNlaG9sZGVyID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgcmV0dXJuIHByb3BzLnBsYWNlaG9sZGVyIHx8IHQoXCJmcy5jb21wb25lbnQuc2VsZWN0LnBsYWNlaG9sZGVyXCIpO1xuICAgIH0pO1xuXG4gICAgbGV0IHVzZWREaWN0ID0gdXNlRGljdChwcm9wcywgY3R4KTtcblxuICAgIGNvbnN0IHNsb3RzID0gY3R4LnNsb3RzO1xuXG4gICAgY29uc3QgY29tcHV0ZWRPcHRpb25zID0gdXNlZERpY3QuY3JlYXRlQ29tcHV0ZWRPcHRpb25zKCk7XG5cbiAgICBjb25zdCBjb21wdXRlZEJpbmRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgICBjb25zdCBkaWN0ID0gdXNlZERpY3QuZ2V0RGljdCgpO1xuICAgICAgcmV0dXJuIHVpLnRyZWVTZWxlY3QuYnVpbGRPcHRpb25LZXlzTmFtZUJpbmRpbmcoe1xuICAgICAgICBsYWJlbDogZGljdC5sYWJlbCxcbiAgICAgICAgdmFsdWU6IGRpY3QudmFsdWUsXG4gICAgICAgIGNoaWxkcmVuOiBkaWN0LmNoaWxkcmVuXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGNvbnN0IG9uU2VsZWN0ZWRDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge1xuICAgICAgY3R4LmVtaXQoXCJjaGFuZ2VcIiwgdmFsdWUpO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGRpY3QgPSB1c2VkRGljdC5nZXREaWN0KCk7XG4gICAgICAgIGlmIChkaWN0ICYmIGRpY3QuZGF0YU1hcCkge1xuICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRPcHRpb25zID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIHZhbHVlKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wdCA9IGRpY3QuZGF0YU1hcFtpdGVtXTtcbiAgICAgICAgICAgICAgaWYgKG9wdCkge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkT3B0aW9ucy5wdXNoKG9wdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIHNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN0eC5lbWl0KFwic2VsZWN0ZWQtY2hhbmdlXCIsIGRpY3QuZGF0YU1hcFt2YWx1ZV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY3R4LmVtaXQoXCJzZWxlY3RlZC1jaGFuZ2VcIiwgbnVsbCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IHRyZWVSZWYgPSByZWYoKTtcbiAgICByZXR1cm4ge1xuICAgICAgdWksXG4gICAgICBjb21wdXRlZEJpbmRpbmcsXG4gICAgICBjb21wdXRlZFBsYWNlaG9sZGVyLFxuICAgICAgLi4udXNlZERpY3QsXG4gICAgICBjb21wdXRlZE9wdGlvbnMsXG4gICAgICBvblNlbGVjdGVkQ2hhbmdlLFxuICAgICAgc2xvdHMsXG4gICAgICB0cmVlUmVmXG4gICAgfTtcbiAgfVxufSk7XG48L3NjcmlwdD5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImZzLXRhYmxlLXNlbGVjdFwiPlxuICAgIDx0ZW1wbGF0ZSB2LWlmPVwiIXNsb3RzPy5kZWZhdWx0ICYmICF2aWV3TW9kZVwiPlxuICAgICAgPGZzLWRpY3Qtc2VsZWN0XG4gICAgICAgIHJlZj1cImRpY3RTZWxlY3RSZWZcIlxuICAgICAgICB2LWJpbmQ9XCJjb21wdXRlZFNlbGVjdFwiXG4gICAgICAgIDpvcGVuPVwiZmFsc2VcIlxuICAgICAgICA6ZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXG4gICAgICAgIDpyZWFkb25seT1cInJlYWRvbmx5XCJcbiAgICAgICAgOmRpY3Q9XCJkaWN0XCJcbiAgICAgICAgQGNsaWNrPVwib3BlblRhYmxlU2VsZWN0XCJcbiAgICAgIC8+XG4gICAgPC90ZW1wbGF0ZT5cbiAgICA8c2xvdCB2LWJpbmQ9XCJzY29wZVJlZlwiPjwvc2xvdD5cbiAgICA8Y29tcG9uZW50IDppcz1cInVpLmZvcm1JdGVtLnNraXBWYWxpZGF0aW9uV3JhcHBlclwiPlxuICAgICAgPGZzLWZvcm0td3JhcHBlciByZWY9XCJmb3JtV3JhcHBlclJlZlwiIHYtYmluZD1cImZvcm1XcmFwcGVyT3B0aW9uc1wiIEBjbG9zZWQ9XCJvbkNsb3NlXCIgQG9wZW49XCJvbk9wZW5cIj5cbiAgICAgICAgPHRlbXBsYXRlICNmb3JtLWJvZHktdG9wPlxuICAgICAgICAgIDxkaXYgdi1pZj1cImRpYWxvZ09wZW4gfHwgZGVzdHJveU9uQ2xvc2UgPT09IGZhbHNlXCIgOnN0eWxlPVwieyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6IGhlaWdodCB8fCAnNzB2aCcgfVwiPlxuICAgICAgICAgICAgPGZzLWNydWQgcmVmPVwiY3J1ZFJlZlwiIHYtYmluZD1cImNydWRCaW5kaW5nXCI+XG4gICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyLXRvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzaG93Q3VycmVudCAhPT0gZmFsc2UgJiYgIXZpZXdNb2RlXCIgY2xhc3M9XCJmcy10YWJsZS1zZWxlY3QtY3VycmVudFwiPlxuICAgICAgICAgICAgICAgICAg5b2T5YmN6YCJ5Lit77yaXG4gICAgICAgICAgICAgICAgICA8ZnMtdmFsdWVzLWZvcm1hdFxuICAgICAgICAgICAgICAgICAgICByZWY9XCJ2YWx1ZXNGb3JtYXRSZWZcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwic2VsZWN0ZWRSb3dLZXlzXCJcbiAgICAgICAgICAgICAgICAgICAgOmRpY3Q9XCJkaWN0XCJcbiAgICAgICAgICAgICAgICAgICAgOmNsb3NhYmxlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHYtYmluZD1cImNvbXB1dGVkVmFsdWVzRm9ybWF0XCJcbiAgICAgICAgICAgICAgICAgID48L2ZzLXZhbHVlcy1mb3JtYXQ+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgICAgICA8L2ZzLWNydWQ+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L2ZzLWZvcm0td3JhcHBlcj5cbiAgICAgIDwhLS0gICAgICA8Y29tcG9uZW50IDppcz1cInVpLmRpYWxvZy5uYW1lXCIgdi1tb2RlbDpbdWkuZGlhbG9nLnZpc2libGVdPVwiZGlhbG9nT3BlblwiIHYtYmluZD1cImNvbXB1dGVkRGlhbG9nQmluZGluZ1wiPi0tPlxuICAgICAgPCEtLSAgICAgICAgPHRlbXBsYXRlICNbdWkuZGlhbG9nLmZvb3RlclNsb3ROYW1lXT4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b24ubmFtZVwiIHYtaWY9XCIhdmlld01vZGVcIiBAY2xpY2s9XCJkaWFsb2dPcGVuID0gZmFsc2VcIj7lj5bmtog8L2NvbXBvbmVudD4tLT5cbiAgICAgIDwhLS0gICAgICAgICAgPGNvbXBvbmVudCA6aXM9XCJ1aS5idXR0b24ubmFtZVwiIHR5cGU9XCJwcmltYXJ5XCIgQGNsaWNrPVwib25Pa1wiPuehruiupDwvY29tcG9uZW50Pi0tPlxuICAgICAgPCEtLSAgICAgICAgPC90ZW1wbGF0ZT4tLT5cbiAgICAgIDwhLS0gICAgICA8L2NvbXBvbmVudD4tLT5cbiAgICA8L2NvbXBvbmVudD5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuPHNjcmlwdCBsYW5nPVwidHN4XCIgc2V0dXA+XG5pbXBvcnQgeyBEaWN0LCB1c2VDb21wdXRlLCB1c2VGc0FzeW5jLCB1c2VGc1JlZiwgdXNlTWVyZ2UsIHVzZVVpIH0gZnJvbSBcIi4uLy4uL3VzZVwiO1xuaW1wb3J0IHsgY29tcHV0ZWQsIG5leHRUaWNrLCByZWYsIFJlZiwgd2F0Y2ggfSBmcm9tIFwidnVlXCI7XG5pbXBvcnQgeyBDcmVhdGVDcnVkT3B0aW9ucywgRHluYW1pY2FsbHlDcnVkT3B0aW9ucyB9IGZyb20gXCIuLi8uLi9kXCI7XG5pbXBvcnQgeyB1c2VJMThuIH0gZnJvbSBcIi4uLy4uL2xvY2FsZVwiO1xuXG50eXBlIEZzVGFibGVTZWxlY3RQcm9wcyA9IHtcbiAgLyoqXG4gICAqIG1vZGVsVmFsdWVcbiAgICovXG4gIG1vZGVsVmFsdWU6IGFueTtcbiAgLyoqXG4gICAqIGNydWRPcHRpb25z5Yib5bu65pa55rOVXG4gICAqL1xuICBjcmVhdGVDcnVkT3B0aW9uczogQ3JlYXRlQ3J1ZE9wdGlvbnM7XG4gIC8qKlxuICAgKiBjcnVkT3B0aW9ucyDopobnm5bphY3nva5cbiAgICovXG4gIGNydWRPcHRpb25zT3ZlcnJpZGU/OiBEeW5hbWljYWxseUNydWRPcHRpb25zO1xuXG4gIC8qKlxuICAgKiDmiZPlvIDlr7nor53moYbliY3vvIzlj6/ku6Xkv67mlLnphY3nva5cbiAgICogQHBhcmFtIG9wdGlvbnNcbiAgICovXG4gIGJlZm9yZU9wZW4/OiAob3B0aW9uczoge1xuICAgIGNydWRPcHRpb25zOiBEeW5hbWljYWxseUNydWRPcHRpb25zO1xuICAgIHNlbGVjdGVkUm93S2V5czogYW55O1xuICAgIG9wZW46IGFueTtcbiAgICBvcGVuZWQ6IGFueTtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIH0pID0+IFByb21pc2U8dm9pZD47XG4gIC8qKlxuICAgKiDmlbDmja7lrZflhbhcbiAgICog5b+F6aCI6YWN572uYGdldE5vZGVzQnlWYWx1ZXNg5Y+C5pWwLOS9oOmcgOimgeWunueOsO+8muagueaNrmlk5YiX6KGo5ZCR5ZCO5Y+w6K+35rGC5aSa6KGM5pWw5o2u5bm26L+U5ZueXG4gICAqIGBkaWN0LnZhbHVl5b+F6aG75LiOdGFibGUucm93S2V55LiA6Ie0YFxuICAgKi9cbiAgZGljdDogRGljdDtcbiAgLyoqXG4gICAqIOmAieaLqeahhiBmcy1kaWN0LXNlbGVjdOmFjee9rlxuICAgKi9cbiAgc2VsZWN0PzogYW55O1xuXG4gIC8qKlxuICAgKiDmmK/lkKbmmL7npLrpgInmi6nmoYZcbiAgICog5pyJ5pe25YCZ5L2g5Y+q5piv5oOz6KaB6YKj5Liq6YCJ5oup55qERGlhbG9n77yM6YKj5LmI5L2g5Y+v5Lul6ZqQ6JePc2VsZWN077yM54S25ZCO6Ieq5a6a5LmJ5r+A5rS75pa55byPXG4gICAqL1xuICBzaG93U2VsZWN0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOWvueivneahhumFjee9rlxuICAgKi9cbiAgZGlhbG9nPzogYW55O1xuXG4gIC8qKlxuICAgKiDlr7nor53moYbkuK3mmK/lkKbmmL7npLrlvZPliY3pgInkuK3lgLxcbiAgICovXG4gIHNob3dDdXJyZW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIOW9k+WJjemAieS4reWAvCBmcy12YWx1ZXMtZm9ybWF057uE5Lu2IOmFjee9rlxuICAgKi9cbiAgdmFsdWVzRm9ybWF0PzogYW55O1xuXG4gIC8qKlxuICAgKiBjcnVk6auY5bqmXG4gICAqL1xuICBoZWlnaHQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiDmmK/lkKblpJrpgIlcbiAgICovXG4gIG11bHRpcGxlPzogYm9vbGVhbjsgLy/ljZXpgInov5jmmK/lpJrpgIlcbiAgLyoqXG4gICAqIOi3qOmhtemAieS4rVxuICAgKi9cbiAgY3Jvc3NQYWdlPzogYm9vbGVhbjsgLy/ot6jpobXpgInkuK1cblxuICAvKipcbiAgICog5Y+v6YCJLGVsZW1lbnQtcGx1c+W/heS8oFxuICAgKi9cbiAgcm93S2V5Pzogc3RyaW5nO1xuXG4gIGRpc2FibGVkPzogYm9vbGVhbjtcblxuICByZWFkb25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIOWAvOexu+Wei1xuICAgKi9cbiAgdmFsdWVUeXBlPzogXCJ2YWx1ZVwiIHwgXCJvYmplY3RcIjtcblxuICAvKipcbiAgICog5piv5ZCm5p+l55yL5qih5byPXG4gICAqL1xuICB2aWV3TW9kZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiDmn6XnnIvmqKHlvI/kuIvmmK/lkKbop6blj5FjaGFuZ2Xkuovku7ZcbiAgICovXG4gIGVtaXRPblZpZXdNb2RlbD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRhYmxl5piv5ZCm6Lef6ZqP56qX5Y+j5YWz6Zet6ICM6ZSA5q+BXG4gICAqL1xuICBkZXN0cm95T25DbG9zZT86IGJvb2xlYW47XG59O1xuY29uc3QgcHJvcHMgPSB3aXRoRGVmYXVsdHMoZGVmaW5lUHJvcHM8RnNUYWJsZVNlbGVjdFByb3BzPigpLCB7XG4gIGNyb3NzUGFnZTogdHJ1ZSxcbiAgcm93S2V5OiB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBmYWxzZSxcbiAgcmVhZG9ubHk6IGZhbHNlLFxuICBoZWlnaHQ6IHVuZGVmaW5lZCxcbiAgdmFsdWVzRm9ybWF0OiB1bmRlZmluZWQsXG4gIGRpYWxvZzogdW5kZWZpbmVkLFxuICBzZWxlY3Q6IHVuZGVmaW5lZCxcbiAgY3J1ZE9wdGlvbnNPdmVycmlkZTogdW5kZWZpbmVkLFxuICB2YWx1ZVR5cGU6IFwidmFsdWVcIixcbiAgc2hvd1NlbGVjdDogdHJ1ZSxcbiAgc2hvd0N1cnJlbnQ6IHRydWUsXG4gIHZpZXdNb2RlOiBmYWxzZSxcbiAgZW1pdE9uVmlld01vZGVsOiB0cnVlLFxuICBkZXN0cm95T25DbG9zZTogdHJ1ZSxcbiAgLyoqXG4gICAqIGNyZWF0ZUNydWRPcHRpb25z5pa55rOV5piv5ZCM5q2l6L+Y5piv5byC5q2lXG4gICAqL1xuICBJc1N5bmNDcmVhdGU6IGZhbHNlXG59KTtcblxuY29uc3Qgc2xvdHMgPSBkZWZpbmVTbG90czx7XG4gIC8qKmBcbiAgICog6buY6K6k5o+S5qe9XG4gICAqIGBgYGpzXG4gICAqIHNjb3BlID0ge1xuICAgKiAgLy/mmK/lkKblt7LmiZPlvIBcbiAgICogIG9wZW5lZDpib29sZWFuLFxuICAgKiAgLy/miZPlvIDmlrnms5VcbiAgICogIG9wZW46KCk9PnZvaWRcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGRlZmF1bHQ6IGFueTtcbn0+KCk7XG5cbmNvbnN0IGVtaXRzID0gZGVmaW5lRW1pdHMoW1xuICBcImNoYW5nZVwiLFxuICBcInVwZGF0ZTptb2RlbFZhbHVlXCIsXG4gIC8qIOmAieS4reihjOWPmOWMluS6i+S7tiAqL1xuICBcInNlbGVjdGVkLWNoYW5nZVwiLFxuICAvKuWvueivneahhuWNs+WwhuWFs+mXrSovXG4gIFwiZGlhbG9nLWNsb3NlXCIsXG4gIC8q5a+56K+d5qGG5bey5YWz6ZetKi9cbiAgXCJkaWFsb2ctY2xvc2VkXCJcbl0pO1xuY29uc3QgeyB1aSB9ID0gdXNlVWkoKTtcbmNvbnN0IHsgdCB9ID0gdXNlSTE4bigpO1xuY29uc3QgZGljdFNlbGVjdFJlZiA9IHJlZigpO1xuY29uc3QgdmFsdWVzRm9ybWF0UmVmID0gcmVmKCk7XG5jb25zdCBkaWFsb2dPcGVuID0gcmVmKGZhbHNlKTtcblxuZnVuY3Rpb24gb25DbG9zZSgpIHtcbiAgZGlhbG9nT3Blbi52YWx1ZSA9IGZhbHNlO1xufVxuZnVuY3Rpb24gb25PcGVuKCkge1xuICBkaWFsb2dPcGVuLnZhbHVlID0gdHJ1ZTtcbn1cblxuY29uc3QgeyBjcnVkUmVmLCBjcnVkQmluZGluZywgY3J1ZEV4cG9zZSB9ID0gdXNlRnNSZWYoKTtcblxuZnVuY3Rpb24gaW5pdFNlbGVjdGVkS2V5cyhtb2RlbFZhbHVlOiBhbnkpIHtcbiAgaWYgKG1vZGVsVmFsdWUgPT0gbnVsbCB8fCAoQXJyYXkuaXNBcnJheShtb2RlbFZhbHVlKSAmJiBtb2RlbFZhbHVlLmxlbmd0aCA9PSAwKSkge1xuICAgIHNlbGVjdGVkUm93S2V5cy52YWx1ZSA9IFtdO1xuICB9IGVsc2Uge1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xuICAgICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gbW9kZWxWYWx1ZSB8fCBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VsZWN0ZWRSb3dLZXlzLnZhbHVlID0gW21vZGVsVmFsdWVdO1xuICAgIH1cbiAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBzZWxlY3RlZFJvd0tleXMudmFsdWUubWFwKChpdGVtKSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5kaWN0LmdldFZhbHVlKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGZvcm1XcmFwcGVyUmVmID0gcmVmKCk7XG5jb25zdCBmb3JtV3JhcHBlck9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgd3JhcHBlcjoge31cbiAgfTtcbn0pO1xuXG5jb25zdCBvcGVuVGFibGVTZWxlY3QgPSBhc3luYyAob3Blbk9wdGlvbnM6IHsgY3J1ZE9wdGlvbnM/OiBEeW5hbWljYWxseUNydWRPcHRpb25zOyBjb250ZXh0PzogYW55IH0gPSB7fSkgPT4ge1xuICBpZiAocHJvcHMuZGlzYWJsZWQgfHwgcHJvcHMucmVhZG9ubHkgfHwgcHJvcHMuc2VsZWN0Py5kaXNhYmxlZCB8fCBwcm9wcy5zZWxlY3Q/LnJlYWRvbmx5KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9wcy5kaWN0ID09IG51bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCLlv4XpobvphY3nva5kaWN077yM5LiU5b+F6aG76YWN572uZGljdC5nZXROb2Rlc0J5VmFsdWVzXCIpO1xuICB9XG5cbiAgY29uc3QgcmV0ID0gYXdhaXQgdXNlRnNBc3luYyh7XG4gICAgY3J1ZEJpbmRpbmcsXG4gICAgY3J1ZFJlZixcbiAgICBjcmVhdGVDcnVkT3B0aW9uczogcHJvcHMuY3JlYXRlQ3J1ZE9wdGlvbnMsXG4gICAgY3J1ZE9wdGlvbnNPdmVycmlkZTogYnVpbGRNZXJnZWRDcnVkT3B0aW9ucygpLFxuICAgIGNvbnRleHQ6IHtcbiAgICAgIHQsXG4gICAgICB1aSxcbiAgICAgIC4uLm9wZW5PcHRpb25zPy5jb250ZXh0XG4gICAgfSxcbiAgICBjcnVkRXhwb3NlXG4gIH0pO1xuXG4gIGluaXRTZWxlY3RlZEtleXMocHJvcHMubW9kZWxWYWx1ZSk7XG4gIGlmIChwcm9wcy5iZWZvcmVPcGVuKSB7XG4gICAgYXdhaXQgcHJvcHMuYmVmb3JlT3Blbih7XG4gICAgICBjcnVkT3B0aW9uczogb3Blbk9wdGlvbnM/LmNydWRPcHRpb25zLFxuICAgICAgLi4uZ2V0U2NvcGVDb250ZXh0KClcbiAgICB9KTtcbiAgfVxuICBpZiAob3Blbk9wdGlvbnMpIHtcbiAgICByZXQuYXBwZW5kQ3J1ZE9wdGlvbnMob3Blbk9wdGlvbnM/LmNydWRPcHRpb25zKTtcbiAgfVxuICBjb25zdCB3cmFwcGVyT3B0aW9ucyA9IG1lcmdlKFxuICAgIHtcbiAgICAgIHdyYXBwZXI6IHtcbiAgICAgICAgdGl0bGU6IHByb3BzLnZpZXdNb2RlID8gdChcImZzLmV4dGVuZHMudGFibGVTZWxlY3Qudmlld1wiKSA6IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0LnNlbGVjdFwiKSxcbiAgICAgICAgd2lkdGg6IFwiODAlXCIsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgICAgaXM6IHVpLmRpYWxvZy5uYW1lLFxuICAgICAgICBmb290ZXI6IGZhbHNlLFxuICAgICAgICAuLi51aS5mb3JtV3JhcHBlci5idWlsZEluaXRCaW5kKHVpLmRpYWxvZy5uYW1lKSxcbiAgICAgICAgYnV0dG9uczoge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgY2FuY2VsOiB7XG4gICAgICAgICAgICB0ZXh0OiB0KFwiZnMuZXh0ZW5kcy50YWJsZVNlbGVjdC5jYW5jZWxcIiksXG4gICAgICAgICAgICBhc3luYyBjbGljaygpIHtcbiAgICAgICAgICAgICAgZm9ybVdyYXBwZXJSZWYudmFsdWUuY2xvc2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIG9rOiB7XG4gICAgICAgICAgICB0eXBlOiBcInByaW1hcnlcIixcbiAgICAgICAgICAgIHRleHQ6IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0Lm9rXCIpLFxuICAgICAgICAgICAgYXN5bmMgY2xpY2soKSB7XG4gICAgICAgICAgICAgIGF3YWl0IG9uT2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIHdyYXBwZXI6IHByb3BzLmRpYWxvZ1xuICAgIH1cbiAgKTtcbiAgZm9ybVdyYXBwZXJSZWYudmFsdWUub3Blbih3cmFwcGVyT3B0aW9ucyk7XG5cbiAgYXdhaXQgbmV4dFRpY2soKTtcbiAgYXdhaXQgY3J1ZEV4cG9zZS5kb1JlZnJlc2goKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbmNvbnN0IGNvbXB1dGVkVmFsdWVzRm9ybWF0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIC4uLnByb3BzLnZhbHVlc0Zvcm1hdFxuICB9O1xufSk7XG5cbmNvbnN0IGNvbXB1dGVkU2VsZWN0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICBjb25zdCB1cGRhdGVLZXkgPSBgb25VcGRhdGU6JHt1aS5zZWxlY3QubW9kZWxWYWx1ZX1gO1xuXG4gIGxldCB2YWx1ZSA9IHByb3BzLm1vZGVsVmFsdWU7XG4gIGlmIChwcm9wcy52YWx1ZVR5cGUgPT09IFwib2JqZWN0XCIgJiYgcHJvcHMubW9kZWxWYWx1ZSkge1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSkge1xuICAgICAgdmFsdWUgPSBwcm9wcy5tb2RlbFZhbHVlLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgIHJldHVybiBwcm9wcy5kaWN0LmdldFZhbHVlKGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlID0gcHJvcHMuZGljdC5nZXRWYWx1ZShwcm9wcy5tb2RlbFZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBbdWkuc2VsZWN0Lm1vZGVsVmFsdWVdOiB2YWx1ZSxcbiAgICBbdXBkYXRlS2V5XTogKHZhbHVlOiBhbnkpID0+IHtcbiAgICAgIGVtaXRzKFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIH0sXG4gICAgW3VpLnNlbGVjdC5jbGVhcmFibGVdOiB0cnVlLFxuICAgIC4uLnVpLnNlbGVjdC5idWlsZE11bHRpQmluZGluZyhwcm9wcy5tdWx0aXBsZSksXG4gICAgc2hvdzogZmFsc2UsXG4gICAgLi4ucHJvcHMuc2VsZWN0XG4gIH07XG59KTtcblxuLy8gY29uc3QgY29tcHV0ZWREaWFsb2dCaW5kaW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuLy8gICBjb25zdCBiYXNlID0gdWkuZGlhbG9nLmJ1aWxkUHJvcHMoe1xuLy8gICAgIHRpdGxlOiBwcm9wcy52aWV3TW9kZSA/IHQoXCJmcy5leHRlbmRzLnRhYmxlU2VsZWN0LnZpZXdcIikgOiB0KFwiZnMuZXh0ZW5kcy50YWJsZVNlbGVjdC5zZWxlY3RcIiksXG4vLyAgICAgd2lkdGg6IFwiODAlXCJcbi8vICAgfSk7XG4vLyAgIHJldHVybiBtZXJnZShiYXNlLCBwcm9wcy5kaWFsb2cpO1xuLy8gfSk7XG5cbndhdGNoKFxuICAoKSA9PiB7XG4gICAgcmV0dXJuIHByb3BzLm1vZGVsVmFsdWU7XG4gIH0sXG4gIGFzeW5jICh2YWx1ZSkgPT4ge1xuICAgIGlmICh2YWx1ZSA9PT0gc2VsZWN0ZWRSb3dLZXlzLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluaXRTZWxlY3RlZEtleXModmFsdWUpO1xuICAgIGF3YWl0IG5leHRUaWNrKCk7XG4gICAgYXdhaXQgcHJvcHMuZGljdC5hcHBlbmRCeVZhbHVlcyhzZWxlY3RlZFJvd0tleXMudmFsdWUpO1xuICAgIC8vIGRpY3RTZWxlY3RSZWYudmFsdWUucmVsb2FkRGljdCgpO1xuICB9XG4pO1xuY29uc3Qgc2VsZWN0ZWRSb3dLZXlzOiBSZWY8YW55W10+ID0gcmVmKFtdKTtcblxuZnVuY3Rpb24gZ2V0Um93S2V5KCkge1xuICByZXR1cm4gcHJvcHMucm93S2V5IHx8IGNydWRCaW5kaW5nLnZhbHVlLnRhYmxlLnJvd0tleSB8fCBcImlkXCI7XG59XG5jb25zdCByZWZyZXNoaW5nID0gcmVmKGZhbHNlKTtcblxuZnVuY3Rpb24gYnVpbGRNZXJnZWRDcnVkT3B0aW9ucygpIHtcbiAgbGV0IHRhYmxlQ0kgPSB1aS50YWJsZTtcbiAgaWYgKGNydWRCaW5kaW5nLnZhbHVlPy50YWJsZT8udGFibGVWZXJzaW9uID09PSBcInYyXCIpIHtcbiAgICB0YWJsZUNJID0gdWkudGFibGVWMjtcbiAgfVxuICBsZXQgc2VsZWN0aW9uT3B0aW9ucyA9IHRhYmxlQ0kuYnVpbGRTZWxlY3Rpb25DcnVkT3B0aW9ucyh7XG4gICAgY3Jvc3NQYWdlOiBwcm9wcy5jcm9zc1BhZ2UsXG4gICAgc2VsZWN0T25DbGlja1JvdzogdHJ1ZSxcbiAgICBnZXRSb3dLZXksXG4gICAgZ2V0UGFnZURhdGEoKSB7XG4gICAgICByZXR1cm4gY3J1ZEJpbmRpbmcudmFsdWUuZGF0YTtcbiAgICB9LFxuICAgIHVzZUNvbXB1dGU6IHVzZUNvbXB1dGUsXG4gICAgbXVsdGlwbGU6IHByb3BzLm11bHRpcGxlLFxuICAgIHNlbGVjdGVkUm93S2V5cyxcbiAgICBvblNlbGVjdGVkS2V5c0NoYW5nZWQ6IGFzeW5jIChjaGFuZ2VkKSA9PiB7XG4gICAgICBzZWxlY3RlZFJvd0tleXMudmFsdWUgPSBbLi4uY2hhbmdlZF07XG4gICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgYXdhaXQgcHJvcHMuZGljdC5hcHBlbmRCeVZhbHVlcyhzZWxlY3RlZFJvd0tleXMudmFsdWUpO1xuICAgICAgLy8gaWYgKHZhbHVlc0Zvcm1hdFJlZi52YWx1ZSkge1xuICAgICAgLy8gICB2YWx1ZXNGb3JtYXRSZWYudmFsdWUucmVsb2FkRGljdCgpO1xuICAgICAgLy8gfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGNydWRPcHRpb25zID0ge1xuICAgIHRhYmxlOiB7XG4gICAgICBhc3luYyBvblJlZnJlc2hlZCgpIHtcbiAgICAgICAgaWYgKHRhYmxlQ0kuc2V0U2VsZWN0ZWRSb3dzKSB7XG4gICAgICAgICAgcmVmcmVzaGluZy52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgYXdhaXQgbmV4dFRpY2soKTtcbiAgICAgICAgICBhd2FpdCBuZXh0VGljaygpO1xuICAgICAgICAgIGNvbnN0IGJhc2VUYWJsZVJlZiA9IGNydWRFeHBvc2UuZ2V0QmFzZVRhYmxlUmVmKCk7XG4gICAgICAgICAgdGFibGVDSS5zZXRTZWxlY3RlZFJvd3Moe1xuICAgICAgICAgICAgZ2V0Um93S2V5LFxuICAgICAgICAgICAgbXVsdGlwbGU6IHByb3BzLm11bHRpcGxlLFxuICAgICAgICAgICAgdGFibGVSZWY6IGJhc2VUYWJsZVJlZixcbiAgICAgICAgICAgIHNlbGVjdGVkUm93S2V5c1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJlZnJlc2hpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgcmV0dXJuIG1lcmdlKGNydWRPcHRpb25zLCBzZWxlY3Rpb25PcHRpb25zLCBwcm9wcy5jcnVkT3B0aW9uc092ZXJyaWRlKTtcbn1cblxuY29uc3QgeyBtZXJnZSB9ID0gdXNlTWVyZ2UoKTtcblxuLy8gd2F0Y2goXG4vLyAgICgpID0+IHtcbi8vICAgICByZXR1cm4gcHJvcHMuY3J1ZE9wdGlvbnNPdmVycmlkZTtcbi8vICAgfSxcbi8vICAgYXN5bmMgKHZhbHVlLCBvbGRWYWx1ZSkgPT4ge1xuLy8gICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWx1ZSkgPT09IEpTT04uc3RyaW5naWZ5KG9sZFZhbHVlKSkge1xuLy8gICAgICAgcmV0dXJuO1xuLy8gICAgIH1cbi8vICAgICBjb25zdCBjdXIgPSBjcnVkQmluZGluZy52YWx1ZT8ucGFnaW5hdGlvblt1aS5wYWdpbmF0aW9uLmN1cnJlbnRQYWdlXTtcbi8vICAgICBhcHBlbmRDcnVkT3B0aW9ucyh2YWx1ZSk7XG4vLyAgICAgaWYgKGNydWRSZWYudmFsdWUpIHtcbi8vICAgICAgIGNydWRCaW5kaW5nLnZhbHVlLnBhZ2luYXRpb25bdWkucGFnaW5hdGlvbi5jdXJyZW50UGFnZV0gPSBjdXI7XG4vLyAgICAgICBhd2FpdCBjcnVkRXhwb3NlLmRvUmVmcmVzaCh7IGdvRmlyc3RQYWdlOiBmYWxzZSB9KTtcbi8vICAgICB9XG4vLyAgIH1cbi8vICk7XG5cbmFzeW5jIGZ1bmN0aW9uIG9uT2soKSB7XG4gIGlmIChwcm9wcy5kaWN0LmxvYWRpbmcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IHZhbHVlID0gbnVsbDtcbiAgbGV0IHJvd3MgPSBudWxsO1xuICBpZiAoc2VsZWN0ZWRSb3dLZXlzLnZhbHVlPy5sZW5ndGggPiAwKSB7XG4gICAgdmFsdWUgPSBbLi4uc2VsZWN0ZWRSb3dLZXlzLnZhbHVlXTtcblxuICAgIHJvd3MgPSB2YWx1ZS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJldHVybiBwcm9wcy5kaWN0LmdldERpY3RNYXAoKVtpdGVtXTtcbiAgICB9KTtcbiAgICBpZiAocHJvcHMudmFsdWVUeXBlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICB2YWx1ZSA9IHJvd3M7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm11bHRpcGxlICE9PSB0cnVlICYmIHZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgIHZhbHVlID0gdmFsdWVbMF07XG4gICAgfVxuICB9XG5cbiAgaWYgKCFwcm9wcy52aWV3TW9kZSB8fCBwcm9wcy5lbWl0T25WaWV3TW9kZWwpIHtcbiAgICAvL+mdnnZpZXfmqKHlvI/kuIvvvIzpnIDopoHmm7TmlrB2YWx1ZVxuICAgIGVtaXRzKFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xuICAgIGVtaXRzKFwiY2hhbmdlXCIsIHZhbHVlKTtcbiAgICBlbWl0cyhcInNlbGVjdGVkLWNoYW5nZVwiLCByb3dzKTtcbiAgfVxuICBsZXQgc2NvcGUgPSB7XG4gICAgdmFsdWUsXG4gICAgcm93cyxcbiAgICBzZWxlY3RlZFJvd0tleXM6IHNlbGVjdGVkUm93S2V5cy52YWx1ZVxuICB9O1xuICBlbWl0cyhcImRpYWxvZy1jbG9zZVwiLCBzY29wZSk7XG4gIGF3YWl0IG5leHRUaWNrKCk7XG4gIGF3YWl0IGZvcm1XcmFwcGVyUmVmLnZhbHVlLmNsb3NlKCk7XG4gIGNvbnNvbGUubG9nKFwiZGlhbG9nT3BlblwiLCBkaWFsb2dPcGVuLnZhbHVlKTtcbiAgZW1pdHMoXCJkaWFsb2ctY2xvc2VkXCIsIHNjb3BlKTtcbn1cblxuY29uc3QgZ2V0U2NvcGVDb250ZXh0ID0gKCkgPT4ge1xuICByZXR1cm4ge1xuICAgIG9wZW5lZDogZGlhbG9nT3BlbixcbiAgICBvcGVuOiBvcGVuVGFibGVTZWxlY3QsXG4gICAgc2VsZWN0ZWRSb3dLZXlzLFxuICAgIGRpY3RTZWxlY3RSZWYsXG4gICAgdmFsdWVzRm9ybWF0UmVmLFxuICAgIGNydWRSZWYsXG4gICAgY3J1ZEJpbmRpbmcsXG4gICAgY3J1ZEV4cG9zZVxuICB9O1xufTtcblxuY29uc3Qgc2NvcGVSZWYgPSByZWYoZ2V0U2NvcGVDb250ZXh0KCkpO1xuZGVmaW5lRXhwb3NlKHNjb3BlUmVmLnZhbHVlKTtcbjwvc2NyaXB0PlxuPHN0eWxlIGxhbmc9XCJsZXNzXCI+XG4uZnMtdGFibGUtc2VsZWN0IHtcbiAgd2lkdGg6IDEwMCU7XG4gIC5lbC1kaWFsb2dfX2JvZHkge1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICB9XG59XG4uZnMtdGFibGUtc2VsZWN0LWN1cnJlbnQge1xuICAvL2JvcmRlcjogMXB4IHNvbGlkICNlZWU7XG4gIC8vYm9yZGVyLXJhZGl1czogM3B4O1xuICBwYWRkaW5nOiAxMHB4IDA7XG59XG48L3N0eWxlPlxuIiwiPHNjcmlwdCBsYW5nPVwidHNcIj5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCBhcyBfX01BQ1JPU19kZWZpbmVDb21wb25lbnQgfSBmcm9tIFwidnVlXCI7XG5leHBvcnQgZGVmYXVsdCAvKiNfX1BVUkVfXyovIF9fTUFDUk9TX2RlZmluZUNvbXBvbmVudCh7XG4gIC8qKlxuICAgKiDlj6/nvJbovpHpgInmi6nlmahcbiAgICovXG4gIG5hbWU6IFwiRnNFZGl0YWJsZVNlbGVjdFwiXG59KTtcbjwvc2NyaXB0PlxuPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZnMtZWRpdGFibGUtc2VsZWN0XCI+XG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdFwiPlxuICAgICAgPGZzLWRpY3Qtc2VsZWN0IDp2YWx1ZT1cIm1vZGVsVmFsdWVcIiA6ZGljdD1cImRpY3RcIiB2LWJpbmQ9XCJkaWN0U2VsZWN0XCIgQHVwZGF0ZTp2YWx1ZT1cImRvVXBkYXRlXCI+PC9mcy1kaWN0LXNlbGVjdD5cbiAgICA8L2Rpdj5cblxuICAgIDxmcy10YWJsZS1zZWxlY3RcbiAgICAgIGNsYXNzPVwidGFibGUtc2VsZWN0XCJcbiAgICAgIDptb2RlbC12YWx1ZT1cIm1vZGVsVmFsdWVcIlxuICAgICAgOmRpY3Q9XCJkaWN0XCJcbiAgICAgIDpkZXN0cm95LW9uLWNsb3NlPVwiZmFsc2VcIlxuICAgICAgaGVpZ2h0PVwiNDAwcHhcIlxuICAgICAgdi1iaW5kPVwidGFibGVTZWxlY3RcIlxuICAgICAgQHVwZGF0ZTptb2RlbC12YWx1ZT1cImRvVXBkYXRlXCJcbiAgICAgIEBkaWFsb2ctY2xvc2VkPVwiZG9SZWZyZXNoXCJcbiAgICA+XG4gICAgICA8dGVtcGxhdGUgI2RlZmF1bHQ9XCJzY29wZVwiPlxuICAgICAgICA8ZnMtYnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgaWNvbj1cImFudC1kZXNpZ246ZWRpdC1vdXRsaW5lZFwiIHYtYmluZD1cImJ1dHRvblwiIEBjbGljaz1cInNjb3BlLm9wZW5cIj48L2ZzLWJ1dHRvbj5cbiAgICAgIDwvdGVtcGxhdGU+XG4gICAgPC9mcy10YWJsZS1zZWxlY3Q+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdCBzZXR1cCBsYW5nPVwidHNcIj5cbmNvbnN0IHByb3BzID0gZGVmaW5lUHJvcHM8e1xuICAvKipcbiAgICog5YC8XG4gICAqL1xuICBtb2RlbFZhbHVlPzogbnVtYmVyO1xuICAvKipcbiAgICog5pWw5o2u5a2X5YW4XG4gICAqL1xuICBkaWN0OiBhbnk7XG4gIC8qKlxuICAgKiB0YWJsZS1zZWxlY3Tlj4LmlbBcbiAgICovXG4gIHRhYmxlU2VsZWN0OiBhbnk7XG4gIC8qKlxuICAgKiBkaWN0LXNlbGVjdOWPguaVsFxuICAgKi9cbiAgZGljdFNlbGVjdD86IGFueTtcbiAgLyoqXG4gICAqIOaMiemSruWPguaVsFxuICAgKi9cbiAgYnV0dG9uPzogYW55O1xufT4oKTtcblxuO1xuXG5jb25zdCBlbWl0ID0gZGVmaW5lRW1pdHMoW1xuICAvKipcbiAgICog5YWz6Zet5a+56K+d5qGG5pe26Kem5Y+RXG4gICAqL1xuICBcInJlZnJlc2hcIixcbiAgXCJ1cGRhdGU6bW9kZWxWYWx1ZVwiXG5dKTtcbmZ1bmN0aW9uIGRvUmVmcmVzaCgpIHtcbiAgZW1pdChcInJlZnJlc2hcIik7XG4gIHByb3BzLmRpY3Q/LnJlbG9hZERpY3QoKTtcbn1cblxuZnVuY3Rpb24gZG9VcGRhdGUodmFsdWU6IGFueSkge1xuICBlbWl0KFwidXBkYXRlOm1vZGVsVmFsdWVcIiwgdmFsdWUpO1xufVxuPC9zY3JpcHQ+XG5cbjxzdHlsZSBsYW5nPVwibGVzc1wiPlxuLmZzLWVkaXRhYmxlLXNlbGVjdCB7XG4gIGRpc3BsYXk6IGZsZXg7XG5cbiAgLnNlbGVjdCB7XG4gICAgZmxleDogMTtcbiAgfVxuICAudGFibGUtc2VsZWN0IHtcbiAgICBmbGV4OiAwO1xuICAgIG1hcmdpbi1sZWZ0OiA1cHg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLG51bGwsIi8qIGVzbGludC1kaXNhYmxlICovXG5cbi8qXG4gIOatpOS7o+eggeadpea6kOS6jml2aWV36KGo5qC857uE5Lu255qEQ1NW5a+85Ye66YOo5YiGXG4gIGh0dHBzOi8vZ2l0aHViLmNvbS9pdmlldy9pdmlld1xuKi9cblxuZnVuY3Rpb24gaGFzIChicm93c2VyKSB7XG4gICAgY29uc3QgdWEgPSBuYXZpZ2F0b3IudXNlckFnZW50O1xuICAgIGlmIChicm93c2VyID09PSAnaWUnKSB7XG4gICAgICAgIGNvbnN0IGlzSUUgPSB1YS5pbmRleE9mKCdjb21wYXRpYmxlJykgPiAtMSAmJiB1YS5pbmRleE9mKCdNU0lFJykgPiAtMTtcbiAgICAgICAgaWYgKGlzSUUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlSUUgPSBuZXcgUmVnRXhwKCdNU0lFIChcXFxcZCtcXFxcLlxcXFxkKyk7Jyk7XG4gICAgICAgICAgICByZUlFLnRlc3QodWEpO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQoUmVnRXhwWyckMSddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB1YS5pbmRleE9mKGJyb3dzZXIpID4gLTE7XG4gICAgfVxufVxuXG5jb25zdCBjc3YgPSB7XG4gICAgX2lzSUUxMSAoKSB7XG4gICAgICAgIGxldCBpZXYgPSAwO1xuICAgICAgICBjb25zdCBpZW9sZCA9ICgvTVNJRSAoXFxkK1xcLlxcZCspOy8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSk7XG4gICAgICAgIGNvbnN0IHRyaWRlbnQgPSAhIW5hdmlnYXRvci51c2VyQWdlbnQubWF0Y2goL1RyaWRlbnRcXC83LjAvKTtcbiAgICAgICAgY29uc3QgcnYgPSBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ3J2OjExLjAnKTtcblxuICAgICAgICBpZiAoaWVvbGQpIHtcbiAgICAgICAgICAgIGlldiA9IE51bWJlcihSZWdFeHAuJDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmRleE9mKCdNU0lFIDEwJykgIT09IC0xKSB7XG4gICAgICAgICAgICBpZXYgPSAxMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHJpZGVudCAmJiBydiAhPT0gLTEpIHtcbiAgICAgICAgICAgIGlldiA9IDExO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGlldiA9PT0gMTE7XG4gICAgfSxcblxuICAgIF9pc0VkZ2UgKCkge1xuICAgICAgICByZXR1cm4gL0VkZ2UvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgfSxcblxuICAgIF9nZXREb3dubG9hZFVybCAodGV4dCkge1xuICAgICAgICBjb25zdCBCT00gPSAnXFx1RkVGRic7XG4gICAgICAgIC8vIEFkZCBCT00gdG8gdGV4dCBmb3Igb3BlbiBpbiBleGNlbCBjb3JyZWN0bHlcbiAgICAgICAgaWYgKHdpbmRvdy5CbG9iICYmIHdpbmRvdy5VUkwgJiYgd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwpIHtcbiAgICAgICAgICAgIGNvbnN0IGNzdkRhdGEgPSBuZXcgQmxvYihbQk9NICsgdGV4dF0sIHsgdHlwZTogJ3RleHQvY3N2JyB9KTtcbiAgICAgICAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKGNzdkRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdkYXRhOmF0dGFjaG1lbnQvY3N2O2NoYXJzZXQ9dXRmLTgsJyArIEJPTSArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXh0KTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBkb3dubG9hZCAoZmlsZW5hbWUsIHRleHQpIHtcbiAgICAgICAgaWYgKGhhcygnaWUnKSAmJiBoYXMoJ2llJykgPCAxMCkge1xuICAgICAgICAgICAgLy8gaGFzIG1vZHVsZSB1bmFibGUgaWRlbnRpZnkgaWUxMSBhbmQgRWRnZVxuICAgICAgICAgICAgY29uc3Qgb1dpbiA9IHdpbmRvdy50b3Aub3BlbignYWJvdXQ6YmxhbmsnLCAnX2JsYW5rJyk7XG4gICAgICAgICAgICBvV2luLmRvY3VtZW50LmNoYXJzZXQgPSAndXRmLTgnO1xuICAgICAgICAgICAgb1dpbi5kb2N1bWVudC53cml0ZSh0ZXh0KTtcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuY2xvc2UoKTtcbiAgICAgICAgICAgIG9XaW4uZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NhdmVBcycsIGZpbGVuYW1lICsgJy5jc3YnKTtcbiAgICAgICAgICAgIG9XaW4uY2xvc2UoKTtcbiAgICAgICAgfSBlbHNlIGlmIChoYXMoJ2llJykgPT09IDEwIHx8IHRoaXMuX2lzSUUxMSgpIHx8IHRoaXMuX2lzRWRnZSgpKSB7XG4gICAgICAgICAgICBjb25zdCBCT00gPSAnXFx1RkVGRic7XG4gICAgICAgICAgICBjb25zdCBjc3ZEYXRhID0gbmV3IEJsb2IoW0JPTSArIHRleHRdLCB7IHR5cGU6ICd0ZXh0L2NzdicgfSk7XG4gICAgICAgICAgICBuYXZpZ2F0b3IubXNTYXZlQmxvYihjc3ZEYXRhLCBmaWxlbmFtZSArICcuY3N2Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICAgICAgbGluay5kb3dubG9hZCA9IGZpbGVuYW1lICsgJy5jc3YnO1xuICAgICAgICAgICAgbGluay5ocmVmID0gdGhpcy5fZ2V0RG93bmxvYWRVcmwodGV4dCk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNzdjsiLCIvKlxuICBpbnNwaXJlZCBieSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9yZWFjdC1jc3YtZG93bmxvYWRlclxuICBub3cgcmVtb3ZlZCBmcm9tIEdpdGh1YlxuICBpbnNwaXJlZCBieSBodHRwczovL2dpdGh1Yi5jb20vaXZpZXcvaXZpZXdcbiovXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5cbmNvbnN0IG5ld0xpbmUgPSAnXFxyXFxuJztcbmNvbnN0IGFwcGVuZExpbmUgPSAoY29udGVudCwgcm93LCB7IHNlcGFyYXRvciwgcXVvdGVkIH0pID0+IHtcbiAgICBjb25zdCBsaW5lID0gcm93Lm1hcChkYXRhID0+IHtcbiAgICAgICAgaWYgKCFxdW90ZWQpIHJldHVybiBkYXRhO1xuICAgICAgICAvLyBxdW90ZSBkYXRhXG4gICAgICAgIGRhdGEgPSB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycgPyBkYXRhLnJlcGxhY2UoL1wiL2csICdcIicpIDogZGF0YTtcbiAgICAgICAgcmV0dXJuIGBcIiR7ZGF0YX1cImA7XG4gICAgfSk7XG4gICAgY29udGVudC5wdXNoKGxpbmUuam9pbihzZXBhcmF0b3IpKTtcbn07XG5cbmNvbnN0IGRlZmF1bHRzID0ge1xuICAgIHNlcGFyYXRvcjogJywnLFxuICAgIHF1b3RlZDogZmFsc2Vcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNzdihjb2x1bW5zLCBkYXRhcywgb3B0aW9ucywgbm9IZWFkZXIgPSBmYWxzZSkge1xuICAgIG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gICAgbGV0IGNvbHVtbk9yZGVyO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBbXTtcbiAgICBjb25zdCBjb2x1bW4gPSBbXTtcblxuICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICAgIGNvbHVtbk9yZGVyID0gY29sdW1ucy5tYXAodiA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSByZXR1cm4gdjtcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW4ucHVzaCh0eXBlb2Ygdi5sYWJlbCAhPT0gJ3VuZGVmaW5lZCcgPyB2LmxhYmVsIDogdi5wcm9wKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB2LnByb3A7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoY29sdW1uLmxlbmd0aCA+IDApIGFwcGVuZExpbmUoY29udGVudCwgY29sdW1uLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW5PcmRlciA9IFtdO1xuICAgICAgICBkYXRhcy5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uT3JkZXIgPSBjb2x1bW5PcmRlci5jb25jYXQoT2JqZWN0LmtleXModikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGNvbHVtbk9yZGVyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbHVtbk9yZGVyID0gY29sdW1uT3JkZXIuZmlsdGVyKCh2YWx1ZSwgaW5kZXgsIHNlbGYpID0+IHNlbGYuaW5kZXhPZih2YWx1ZSkgPT09IGluZGV4KTtcbiAgICAgICAgICAgIGlmICghbm9IZWFkZXIpIGFwcGVuZExpbmUoY29udGVudCwgY29sdW1uT3JkZXIsIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YXMpKSB7XG4gICAgICAgIGRhdGFzLmZvckVhY2gocm93ID0+IHtcbiAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3cpKSB7XG4gICAgICAgICAgICAgICAgcm93ID0gY29sdW1uT3JkZXIubWFwKGsgPT4gKHR5cGVvZiByb3dba10gIT09ICd1bmRlZmluZWQnID8gcm93W2tdIDogJycpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFwcGVuZExpbmUoY29udGVudCwgcm93LCBvcHRpb25zKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBjb250ZW50LmpvaW4obmV3TGluZSk7XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuLyogQmxvYi5qc1xuICogQSBCbG9iIGltcGxlbWVudGF0aW9uLlxuICogMjAxNC0wNS0yN1xuICpcbiAqIEJ5IEVsaSBHcmV5LCBodHRwOi8vZWxpZ3JleS5jb21cbiAqIEJ5IERldmluIFNhbWFyaW4sIGh0dHBzOi8vZ2l0aHViLmNvbS9lYm95anJcbiAqIExpY2Vuc2U6IFgxMS9NSVRcbiAqICAgU2VlIExJQ0VOU0UubWRcbiAqL1xuXG4vKmdsb2JhbCBzZWxmLCB1bmVzY2FwZSAqL1xuLypqc2xpbnQgYml0d2lzZTogdHJ1ZSwgcmVnZXhwOiB0cnVlLCBjb25mdXNpb246IHRydWUsIGVzNTogdHJ1ZSwgdmFyczogdHJ1ZSwgd2hpdGU6IHRydWUsXG4gcGx1c3BsdXM6IHRydWUgKi9cblxuLyohIEBzb3VyY2UgaHR0cDovL3B1cmwuZWxpZ3JleS5jb20vZ2l0aHViL0Jsb2IuanMvYmxvYi9tYXN0ZXIvQmxvYi5qcyAqL1xuXG4oZnVuY3Rpb24gKHZpZXcpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIHZpZXcuVVJMID0gdmlldy5VUkwgfHwgdmlldy53ZWJraXRVUkw7XG5cbiAgICBpZiAodmlldy5CbG9iICYmIHZpZXcuVVJMKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBuZXcgQmxvYjtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICB9XG5cbiAgICAvLyBJbnRlcm5hbGx5IHdlIHVzZSBhIEJsb2JCdWlsZGVyIGltcGxlbWVudGF0aW9uIHRvIGJhc2UgQmxvYiBvZmYgb2ZcbiAgICAvLyBpbiBvcmRlciB0byBzdXBwb3J0IG9sZGVyIGJyb3dzZXJzIHRoYXQgb25seSBoYXZlIEJsb2JCdWlsZGVyXG4gICAgdmFyIEJsb2JCdWlsZGVyID0gdmlldy5CbG9iQnVpbGRlciB8fCB2aWV3LldlYktpdEJsb2JCdWlsZGVyIHx8IHZpZXcuTW96QmxvYkJ1aWxkZXIgfHwgKGZ1bmN0aW9uKHZpZXcpIHtcbiAgICAgICAgICAgIHZhclxuICAgICAgICAgICAgICAgIGdldF9jbGFzcyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkubWF0Y2goL15cXFtvYmplY3RcXHMoLiopXFxdJC8pWzFdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAsIEZha2VCbG9iQnVpbGRlciA9IGZ1bmN0aW9uIEJsb2JCdWlsZGVyKCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBGYWtlQmxvYiA9IGZ1bmN0aW9uIEJsb2IoZGF0YSwgdHlwZSwgZW5jb2RpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaXplID0gZGF0YS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudHlwZSA9IHR5cGU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLCBGQkJfcHJvdG8gPSBGYWtlQmxvYkJ1aWxkZXIucHJvdG90eXBlXG4gICAgICAgICAgICAgICAgLCBGQl9wcm90byA9IEZha2VCbG9iLnByb3RvdHlwZVxuICAgICAgICAgICAgICAgICwgRmlsZVJlYWRlclN5bmMgPSB2aWV3LkZpbGVSZWFkZXJTeW5jXG4gICAgICAgICAgICAgICAgLCBGaWxlRXhjZXB0aW9uID0gZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvZGUgPSB0aGlzW3RoaXMubmFtZSA9IHR5cGVdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAsIGZpbGVfZXhfY29kZXMgPSAoXG4gICAgICAgICAgICAgICAgICAgIFwiTk9UX0ZPVU5EX0VSUiBTRUNVUklUWV9FUlIgQUJPUlRfRVJSIE5PVF9SRUFEQUJMRV9FUlIgRU5DT0RJTkdfRVJSIFwiXG4gICAgICAgICAgICAgICAgICAgICsgXCJOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlIgSU5WQUxJRF9TVEFURV9FUlIgU1lOVEFYX0VSUlwiXG4gICAgICAgICAgICAgICAgKS5zcGxpdChcIiBcIilcbiAgICAgICAgICAgICAgICAsIGZpbGVfZXhfY29kZSA9IGZpbGVfZXhfY29kZXMubGVuZ3RoXG4gICAgICAgICAgICAgICAgLCByZWFsX1VSTCA9IHZpZXcuVVJMIHx8IHZpZXcud2Via2l0VVJMIHx8IHZpZXdcbiAgICAgICAgICAgICAgICAsIHJlYWxfY3JlYXRlX29iamVjdF9VUkwgPSByZWFsX1VSTC5jcmVhdGVPYmplY3RVUkxcbiAgICAgICAgICAgICAgICAsIHJlYWxfcmV2b2tlX29iamVjdF9VUkwgPSByZWFsX1VSTC5yZXZva2VPYmplY3RVUkxcbiAgICAgICAgICAgICAgICAsIFVSTCA9IHJlYWxfVVJMXG4gICAgICAgICAgICAgICAgLCBidG9hID0gdmlldy5idG9hXG4gICAgICAgICAgICAgICAgLCBhdG9iID0gdmlldy5hdG9iXG5cbiAgICAgICAgICAgICAgICAsIEFycmF5QnVmZmVyID0gdmlldy5BcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgICwgVWludDhBcnJheSA9IHZpZXcuVWludDhBcnJheVxuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgIEZha2VCbG9iLmZha2UgPSBGQl9wcm90by5mYWtlID0gdHJ1ZTtcbiAgICAgICAgICAgIHdoaWxlIChmaWxlX2V4X2NvZGUtLSkge1xuICAgICAgICAgICAgICAgIEZpbGVFeGNlcHRpb24ucHJvdG90eXBlW2ZpbGVfZXhfY29kZXNbZmlsZV9leF9jb2RlXV0gPSBmaWxlX2V4X2NvZGUgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFyZWFsX1VSTC5jcmVhdGVPYmplY3RVUkwpIHtcbiAgICAgICAgICAgICAgICBVUkwgPSB2aWV3LlVSTCA9IHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgVVJMLmNyZWF0ZU9iamVjdFVSTCA9IGZ1bmN0aW9uKGJsb2IpIHtcbiAgICAgICAgICAgICAgICB2YXJcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGJsb2IudHlwZVxuICAgICAgICAgICAgICAgICAgICAsIGRhdGFfVVJJX2hlYWRlclxuICAgICAgICAgICAgICAgICAgICA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChibG9iIGluc3RhbmNlb2YgRmFrZUJsb2IpIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YV9VUklfaGVhZGVyID0gXCJkYXRhOlwiICsgdHlwZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2IuZW5jb2RpbmcgPT09IFwiYmFzZTY0XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIjtiYXNlNjQsXCIgKyBibG9iLmRhdGE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmxvYi5lbmNvZGluZyA9PT0gXCJVUklcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGFfVVJJX2hlYWRlciArIFwiLFwiICsgZGVjb2RlVVJJQ29tcG9uZW50KGJsb2IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gaWYgKGJ0b2EpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhX1VSSV9oZWFkZXIgKyBcIjtiYXNlNjQsXCIgKyBidG9hKGJsb2IuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YV9VUklfaGVhZGVyICsgXCIsXCIgKyBlbmNvZGVVUklDb21wb25lbnQoYmxvYi5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVhbF9jcmVhdGVfb2JqZWN0X1VSTCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVhbF9jcmVhdGVfb2JqZWN0X1VSTC5jYWxsKHJlYWxfVVJMLCBibG9iKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCA9IGZ1bmN0aW9uKG9iamVjdF9VUkwpIHtcbiAgICAgICAgICAgICAgICBpZiAob2JqZWN0X1VSTC5zdWJzdHJpbmcoMCwgNSkgIT09IFwiZGF0YTpcIiAmJiByZWFsX3Jldm9rZV9vYmplY3RfVVJMKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlYWxfcmV2b2tlX29iamVjdF9VUkwuY2FsbChyZWFsX1VSTCwgb2JqZWN0X1VSTCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCQl9wcm90by5hcHBlbmQgPSBmdW5jdGlvbihkYXRhLyosIGVuZGluZ3MqLykge1xuICAgICAgICAgICAgICAgIHZhciBiYiA9IHRoaXMuZGF0YTtcbiAgICAgICAgICAgICAgICAvLyBkZWNvZGUgZGF0YSB0byBhIGJpbmFyeSBzdHJpbmdcbiAgICAgICAgICAgICAgICBpZiAoVWludDhBcnJheSAmJiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyIHx8IGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICwgYnVmID0gbmV3IFVpbnQ4QXJyYXkoZGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICwgaSA9IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICwgYnVmX2xlbiA9IGJ1Zi5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICAgICAgZm9yICg7IGkgPCBidWZfbGVuOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYmIucHVzaChzdHIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZ2V0X2NsYXNzKGRhdGEpID09PSBcIkJsb2JcIiB8fCBnZXRfY2xhc3MoZGF0YSkgPT09IFwiRmlsZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChGaWxlUmVhZGVyU3luYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZyID0gbmV3IEZpbGVSZWFkZXJTeW5jO1xuICAgICAgICAgICAgICAgICAgICAgICAgYmIucHVzaChmci5yZWFkQXNCaW5hcnlTdHJpbmcoZGF0YSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXN5bmMgRmlsZVJlYWRlciB3b24ndCB3b3JrIGFzIEJsb2JCdWlsZGVyIGlzIHN5bmNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGaWxlRXhjZXB0aW9uKFwiTk9UX1JFQURBQkxFX0VSUlwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YSBpbnN0YW5jZW9mIEZha2VCbG9iKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLmVuY29kaW5nID09PSBcImJhc2U2NFwiICYmIGF0b2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLnB1c2goYXRvYihkYXRhLmRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmVuY29kaW5nID09PSBcIlVSSVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGRlY29kZVVSSUNvbXBvbmVudChkYXRhLmRhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhLmVuY29kaW5nID09PSBcInJhd1wiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5wdXNoKGRhdGEuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRhdGEgIT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gXCJcIjsgLy8gY29udmVydCB1bnN1cHBvcnRlZCB0eXBlcyB0byBzdHJpbmdzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gZGVjb2RlIFVURi0xNiB0byBiaW5hcnkgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIGJiLnB1c2godW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGRhdGEpKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIEZCQl9wcm90by5nZXRCbG9iID0gZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0eXBlID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGYWtlQmxvYih0aGlzLmRhdGEuam9pbihcIlwiKSwgdHlwZSwgXCJyYXdcIik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJCX3Byb3RvLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiW29iamVjdCBCbG9iQnVpbGRlcl1cIjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBGQl9wcm90by5zbGljZSA9IGZ1bmN0aW9uKHN0YXJ0LCBlbmQsIHR5cGUpIHtcbiAgICAgICAgICAgICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3MgPCAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGUgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZha2VCbG9iKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc2xpY2Uoc3RhcnQsIGFyZ3MgPiAxID8gZW5kIDogdGhpcy5kYXRhLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgLCB0eXBlXG4gICAgICAgICAgICAgICAgICAgICwgdGhpcy5lbmNvZGluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJfcHJvdG8udG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJbb2JqZWN0IEJsb2JdXCI7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgRkJfcHJvdG8uY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNpemUgPSB0aGlzLmRhdGEubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICByZXR1cm4gRmFrZUJsb2JCdWlsZGVyO1xuICAgICAgICB9KHZpZXcpKTtcblxuICAgIHZpZXcuQmxvYiA9IGZ1bmN0aW9uIEJsb2IoYmxvYlBhcnRzLCBvcHRpb25zKSB7XG4gICAgICAgIHZhciB0eXBlID0gb3B0aW9ucyA/IChvcHRpb25zLnR5cGUgfHwgXCJcIikgOiBcIlwiO1xuICAgICAgICB2YXIgYnVpbGRlciA9IG5ldyBCbG9iQnVpbGRlcigpO1xuICAgICAgICBpZiAoYmxvYlBhcnRzKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYmxvYlBhcnRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoYmxvYlBhcnRzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYnVpbGRlci5nZXRCbG9iKHR5cGUpO1xuICAgIH07XG59KHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYgfHwgdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB3aW5kb3cgfHwgdGhpcy5jb250ZW50IHx8IHRoaXMpKTtcbiIsIihmdW5jdGlvbihhLGIpe2lmKFwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZClkZWZpbmUoW10sYik7ZWxzZSBpZihcInVuZGVmaW5lZFwiIT10eXBlb2YgZXhwb3J0cyliKCk7ZWxzZXtiKCksYS5GaWxlU2F2ZXI9e2V4cG9ydHM6e319LmV4cG9ydHN9fSkodGhpcyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIGIoYSxiKXtyZXR1cm5cInVuZGVmaW5lZFwiPT10eXBlb2YgYj9iPXthdXRvQm9tOiExfTpcIm9iamVjdFwiIT10eXBlb2YgYiYmKGNvbnNvbGUud2FybihcIkRlcHJlY2F0ZWQ6IEV4cGVjdGVkIHRoaXJkIGFyZ3VtZW50IHRvIGJlIGEgb2JqZWN0XCIpLGI9e2F1dG9Cb206IWJ9KSxiLmF1dG9Cb20mJi9eXFxzKig/OnRleHRcXC9cXFMqfGFwcGxpY2F0aW9uXFwveG1sfFxcUypcXC9cXFMqXFwreG1sKVxccyo7LipjaGFyc2V0XFxzKj1cXHMqdXRmLTgvaS50ZXN0KGEudHlwZSk/bmV3IEJsb2IoW1wiXFx1RkVGRlwiLGFdLHt0eXBlOmEudHlwZX0pOmF9ZnVuY3Rpb24gYyhhLGIsYyl7dmFyIGQ9bmV3IFhNTEh0dHBSZXF1ZXN0O2Qub3BlbihcIkdFVFwiLGEpLGQucmVzcG9uc2VUeXBlPVwiYmxvYlwiLGQub25sb2FkPWZ1bmN0aW9uKCl7ZyhkLnJlc3BvbnNlLGIsYyl9LGQub25lcnJvcj1mdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoXCJjb3VsZCBub3QgZG93bmxvYWQgZmlsZVwiKX0sZC5zZW5kKCl9ZnVuY3Rpb24gZChhKXt2YXIgYj1uZXcgWE1MSHR0cFJlcXVlc3Q7Yi5vcGVuKFwiSEVBRFwiLGEsITEpO3RyeXtiLnNlbmQoKX1jYXRjaChhKXt9cmV0dXJuIDIwMDw9Yi5zdGF0dXMmJjI5OT49Yi5zdGF0dXN9ZnVuY3Rpb24gZShhKXt0cnl7YS5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpfWNhdGNoKGMpe3ZhciBiPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiTW91c2VFdmVudHNcIik7Yi5pbml0TW91c2VFdmVudChcImNsaWNrXCIsITAsITAsd2luZG93LDAsMCwwLDgwLDIwLCExLCExLCExLCExLDAsbnVsbCksYS5kaXNwYXRjaEV2ZW50KGIpfX12YXIgZj1cIm9iamVjdFwiPT10eXBlb2Ygd2luZG93JiZ3aW5kb3cud2luZG93PT09d2luZG93P3dpbmRvdzpcIm9iamVjdFwiPT10eXBlb2Ygc2VsZiYmc2VsZi5zZWxmPT09c2VsZj9zZWxmOlwib2JqZWN0XCI9PXR5cGVvZiBnbG9iYWwmJmdsb2JhbC5nbG9iYWw9PT1nbG9iYWw/Z2xvYmFsOnZvaWQgMCxhPWYubmF2aWdhdG9yJiYvTWFjaW50b3NoLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpJiYvQXBwbGVXZWJLaXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkmJiEvU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLGc9Zi5zYXZlQXN8fChcIm9iamVjdFwiIT10eXBlb2Ygd2luZG93fHx3aW5kb3chPT1mP2Z1bmN0aW9uKCl7fTpcImRvd25sb2FkXCJpbiBIVE1MQW5jaG9yRWxlbWVudC5wcm90b3R5cGUmJiFhP2Z1bmN0aW9uKGIsZyxoKXt2YXIgaT1mLlVSTHx8Zi53ZWJraXRVUkwsaj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtnPWd8fGIubmFtZXx8XCJkb3dubG9hZFwiLGouZG93bmxvYWQ9ZyxqLnJlbD1cIm5vb3BlbmVyXCIsXCJzdHJpbmdcIj09dHlwZW9mIGI/KGouaHJlZj1iLGoub3JpZ2luPT09bG9jYXRpb24ub3JpZ2luP2Uoaik6ZChqLmhyZWYpP2MoYixnLGgpOmUoaixqLnRhcmdldD1cIl9ibGFua1wiKSk6KGouaHJlZj1pLmNyZWF0ZU9iamVjdFVSTChiKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aS5yZXZva2VPYmplY3RVUkwoai5ocmVmKX0sNEU0KSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShqKX0sMCkpfTpcIm1zU2F2ZU9yT3BlbkJsb2JcImluIG5hdmlnYXRvcj9mdW5jdGlvbihmLGcsaCl7aWYoZz1nfHxmLm5hbWV8fFwiZG93bmxvYWRcIixcInN0cmluZ1wiIT10eXBlb2YgZiluYXZpZ2F0b3IubXNTYXZlT3JPcGVuQmxvYihiKGYsaCksZyk7ZWxzZSBpZihkKGYpKWMoZixnLGgpO2Vsc2V7dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7aS5ocmVmPWYsaS50YXJnZXQ9XCJfYmxhbmtcIixzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZShpKX0pfX06ZnVuY3Rpb24oYixkLGUsZyl7aWYoZz1nfHxvcGVuKFwiXCIsXCJfYmxhbmtcIiksZyYmKGcuZG9jdW1lbnQudGl0bGU9Zy5kb2N1bWVudC5ib2R5LmlubmVyVGV4dD1cImRvd25sb2FkaW5nLi4uXCIpLFwic3RyaW5nXCI9PXR5cGVvZiBiKXJldHVybiBjKGIsZCxlKTt2YXIgaD1cImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiPT09Yi50eXBlLGk9L2NvbnN0cnVjdG9yL2kudGVzdChmLkhUTUxFbGVtZW50KXx8Zi5zYWZhcmksaj0vQ3JpT1NcXC9bXFxkXSsvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7aWYoKGp8fGgmJml8fGEpJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgRmlsZVJlYWRlcil7dmFyIGs9bmV3IEZpbGVSZWFkZXI7ay5vbmxvYWRlbmQ9ZnVuY3Rpb24oKXt2YXIgYT1rLnJlc3VsdDthPWo/YTphLnJlcGxhY2UoL15kYXRhOlteO10qOy8sXCJkYXRhOmF0dGFjaG1lbnQvZmlsZTtcIiksZz9nLmxvY2F0aW9uLmhyZWY9YTpsb2NhdGlvbj1hLGc9bnVsbH0say5yZWFkQXNEYXRhVVJMKGIpfWVsc2V7dmFyIGw9Zi5VUkx8fGYud2Via2l0VVJMLG09bC5jcmVhdGVPYmplY3RVUkwoYik7Zz9nLmxvY2F0aW9uPW06bG9jYXRpb24uaHJlZj1tLGc9bnVsbCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5yZXZva2VPYmplY3RVUkwobSl9LDRFNCl9fSk7Zi5zYXZlQXM9Zy5zYXZlQXM9ZyxcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiYobW9kdWxlLmV4cG9ydHM9Zyl9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9RmlsZVNhdmVyLm1pbi5qcy5tYXAiLCIvKiEgeGxzeC5qcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG4vKiB2aW06IHNldCB0cz0yOiAqL1xuLypleHBvcnRlZCBYTFNYICovXG4vKmdsb2JhbCBwcm9jZXNzOmZhbHNlLCBCdWZmZXI6ZmFsc2UsIEFycmF5QnVmZmVyOmZhbHNlLCBEYXRhVmlldzpmYWxzZSwgRGVubzpmYWxzZSAqL1xudmFyIFhMU1ggPSB7fTtcblhMU1gudmVyc2lvbiA9ICcwLjE4LjUnO1xudmFyIGN1cnJlbnRfY29kZXBhZ2UgPSAxMjAwLCBjdXJyZW50X2Fuc2kgPSAxMjUyO1xuXG52YXIgVkFMSURfQU5TSSA9IFsgODc0LCA5MzIsIDkzNiwgOTQ5LCA5NTAsIDEyNTAsIDEyNTEsIDEyNTIsIDEyNTMsIDEyNTQsIDEyNTUsIDEyNTYsIDEyNTcsIDEyNTgsIDEwMDAwIF07XG4vKiBFQ01BLTM3NiBQYXJ0IEkgMTguNC4xIGNoYXJzZXQgdG8gY29kZXBhZ2UgbWFwcGluZyAqL1xudmFyIENTMkNQID0gKHtcblx0Lyo6OlsqLzAvKjo6XSovOiAgICAxMjUyLCAvKiBBTlNJICovXG5cdC8qOjpbKi8xLyo6Ol0qLzogICA2NTAwMSwgLyogREVGQVVMVCAqL1xuXHQvKjo6WyovMi8qOjpdKi86ICAgNjUwMDEsIC8qIFNZTUJPTCAqL1xuXHQvKjo6WyovNzcvKjo6XSovOiAgMTAwMDAsIC8qIE1BQyAqL1xuXHQvKjo6WyovMTI4Lyo6Ol0qLzogICA5MzIsIC8qIFNISUZUSklTICovXG5cdC8qOjpbKi8xMjkvKjo6XSovOiAgIDk0OSwgLyogSEFOR1VMICovXG5cdC8qOjpbKi8xMzAvKjo6XSovOiAgMTM2MSwgLyogSk9IQUIgKi9cblx0Lyo6OlsqLzEzNC8qOjpdKi86ICAgOTM2LCAvKiBHQjIzMTIgKi9cblx0Lyo6OlsqLzEzNi8qOjpdKi86ICAgOTUwLCAvKiBDSElORVNFQklHNSAqL1xuXHQvKjo6WyovMTYxLyo6Ol0qLzogIDEyNTMsIC8qIEdSRUVLICovXG5cdC8qOjpbKi8xNjIvKjo6XSovOiAgMTI1NCwgLyogVFVSS0lTSCAqL1xuXHQvKjo6WyovMTYzLyo6Ol0qLzogIDEyNTgsIC8qIFZJRVROQU1FU0UgKi9cblx0Lyo6OlsqLzE3Ny8qOjpdKi86ICAxMjU1LCAvKiBIRUJSRVcgKi9cblx0Lyo6OlsqLzE3OC8qOjpdKi86ICAxMjU2LCAvKiBBUkFCSUMgKi9cblx0Lyo6OlsqLzE4Ni8qOjpdKi86ICAxMjU3LCAvKiBCQUxUSUMgKi9cblx0Lyo6OlsqLzIwNC8qOjpdKi86ICAxMjUxLCAvKiBSVVNTSUFOICovXG5cdC8qOjpbKi8yMjIvKjo6XSovOiAgIDg3NCwgLyogVEhBSSAqL1xuXHQvKjo6WyovMjM4Lyo6Ol0qLzogIDEyNTAsIC8qIEVBU1RFVVJPUEUgKi9cblx0Lyo6OlsqLzI1NS8qOjpdKi86ICAxMjUyLCAvKiBPRU0gKi9cblx0Lyo6OlsqLzY5Lyo6Ol0qLzogICA2OTY5ICAvKiBNSVNDICovXG59Lyo6YW55Ki8pO1xuXG52YXIgc2V0X2Fuc2kgPSBmdW5jdGlvbihjcC8qOm51bWJlciovKSB7IGlmKFZBTElEX0FOU0kuaW5kZXhPZihjcCkgPT0gLTEpIHJldHVybjsgY3VycmVudF9hbnNpID0gQ1MyQ1BbMF0gPSBjcDsgfTtcbmZ1bmN0aW9uIHJlc2V0X2Fuc2koKSB7IHNldF9hbnNpKDEyNTIpOyB9XG5cbnZhciBzZXRfY3AgPSBmdW5jdGlvbihjcC8qOm51bWJlciovKSB7IGN1cnJlbnRfY29kZXBhZ2UgPSBjcDsgc2V0X2Fuc2koY3ApOyB9O1xuZnVuY3Rpb24gcmVzZXRfY3AoKSB7IHNldF9jcCgxMjAwKTsgcmVzZXRfYW5zaSgpOyB9XG5cbmZ1bmN0aW9uIGNoYXJfY29kZXMoZGF0YS8qOnN0cmluZyovKS8qOkFycmF5PG51bWJlcj4qLyB7IHZhciBvLyo6QXJyYXk8bnVtYmVyPiovID0gW107IGZvcih2YXIgaSA9IDAsIGxlbiA9IGRhdGEubGVuZ3RoOyBpIDwgbGVuOyArK2kpIG9baV0gPSBkYXRhLmNoYXJDb2RlQXQoaSk7IHJldHVybiBvOyB9XG5cbmZ1bmN0aW9uIHV0ZjE2bGVyZWFkKGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAoZGF0YS5sZW5ndGg+PjEpOyArK2kpIG9baV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGEuY2hhckNvZGVBdCgyKmkpICsgKGRhdGEuY2hhckNvZGVBdCgyKmkrMSk8PDgpKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHV0ZjE2YmVyZWFkKGRhdGEvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCAoZGF0YS5sZW5ndGg+PjEpOyArK2kpIG9baV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGRhdGEuY2hhckNvZGVBdCgyKmkrMSkgKyAoZGF0YS5jaGFyQ29kZUF0KDIqaSk8PDgpKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxudmFyIGRlYm9tID0gZnVuY3Rpb24oZGF0YS8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGMxID0gZGF0YS5jaGFyQ29kZUF0KDApLCBjMiA9IGRhdGEuY2hhckNvZGVBdCgxKTtcblx0aWYoYzEgPT0gMHhGRiAmJiBjMiA9PSAweEZFKSByZXR1cm4gdXRmMTZsZXJlYWQoZGF0YS5zbGljZSgyKSk7XG5cdGlmKGMxID09IDB4RkUgJiYgYzIgPT0gMHhGRikgcmV0dXJuIHV0ZjE2YmVyZWFkKGRhdGEuc2xpY2UoMikpO1xuXHRpZihjMSA9PSAweEZFRkYpIHJldHVybiBkYXRhLnNsaWNlKDEpO1xuXHRyZXR1cm4gZGF0YTtcbn07XG5cbnZhciBfZ2V0Y2hhciA9IGZ1bmN0aW9uIF9nYzEoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoeCk7IH07XG52YXIgX2dldGFuc2kgPSBmdW5jdGlvbiBfZ2ExKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHgpOyB9O1xuXG52YXIgJGNwdGFibGU7XG5mdW5jdGlvbiBzZXRfY3B0YWJsZShjcHRhYmxlKSB7XG5cdCRjcHRhYmxlID0gY3B0YWJsZTtcblx0c2V0X2NwID0gZnVuY3Rpb24oY3AvKjpudW1iZXIqLykgeyBjdXJyZW50X2NvZGVwYWdlID0gY3A7IHNldF9hbnNpKGNwKTsgfTtcblx0ZGVib20gPSBmdW5jdGlvbihkYXRhLyo6c3RyaW5nKi8pIHtcblx0XHRpZihkYXRhLmNoYXJDb2RlQXQoMCkgPT09IDB4RkYgJiYgZGF0YS5jaGFyQ29kZUF0KDEpID09PSAweEZFKSB7IHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoMTIwMCwgY2hhcl9jb2RlcyhkYXRhLnNsaWNlKDIpKSk7IH1cblx0XHRyZXR1cm4gZGF0YTtcblx0fTtcblx0X2dldGNoYXIgPSBmdW5jdGlvbiBfZ2MyKHgvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdFx0aWYoY3VycmVudF9jb2RlcGFnZSA9PT0gMTIwMCkgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoeCk7XG5cdFx0cmV0dXJuICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2NvZGVwYWdlLCBbeCYyNTUseD4+OF0pWzBdO1xuXHR9O1xuXHRfZ2V0YW5zaSA9IGZ1bmN0aW9uIF9nYTIoeC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0XHRyZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfYW5zaSwgW3hdKVswXTtcblx0fTtcblx0Y3Bkb2l0KCk7XG59XG5leHBvcnQgeyBzZXRfY3B0YWJsZSB9O1xudmFyIERFTlNFID0gbnVsbDtcbnZhciBESUZfWEwgPSB0cnVlO1xudmFyIEJhc2U2NF9tYXAgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCI7XG5mdW5jdGlvbiBCYXNlNjRfZW5jb2RlKGlucHV0KSB7XG4gIHZhciBvID0gXCJcIjtcbiAgdmFyIGMxID0gMCwgYzIgPSAwLCBjMyA9IDAsIGUxID0gMCwgZTIgPSAwLCBlMyA9IDAsIGU0ID0gMDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7ICkge1xuICAgIGMxID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuICAgIGUxID0gYzEgPj4gMjtcbiAgICBjMiA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcbiAgICBlMiA9IChjMSAmIDMpIDw8IDQgfCBjMiA+PiA0O1xuICAgIGMzID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuICAgIGUzID0gKGMyICYgMTUpIDw8IDIgfCBjMyA+PiA2O1xuICAgIGU0ID0gYzMgJiA2MztcbiAgICBpZiAoaXNOYU4oYzIpKSB7XG4gICAgICBlMyA9IGU0ID0gNjQ7XG4gICAgfSBlbHNlIGlmIChpc05hTihjMykpIHtcbiAgICAgIGU0ID0gNjQ7XG4gICAgfVxuICAgIG8gKz0gQmFzZTY0X21hcC5jaGFyQXQoZTEpICsgQmFzZTY0X21hcC5jaGFyQXQoZTIpICsgQmFzZTY0X21hcC5jaGFyQXQoZTMpICsgQmFzZTY0X21hcC5jaGFyQXQoZTQpO1xuICB9XG4gIHJldHVybiBvO1xufVxuZnVuY3Rpb24gQmFzZTY0X2RlY29kZShpbnB1dCkge1xuICB2YXIgbyA9IFwiXCI7XG4gIHZhciBjMSA9IDAsIGMyID0gMCwgYzMgPSAwLCBlMSA9IDAsIGUyID0gMCwgZTMgPSAwLCBlNCA9IDA7XG4gIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW15cXHdcXCtcXC9cXD1dL2csIFwiXCIpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgKSB7XG4gICAgZTEgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGUyID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBjMSA9IGUxIDw8IDIgfCBlMiA+PiA0O1xuICAgIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjMSk7XG4gICAgZTMgPSBCYXNlNjRfbWFwLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpO1xuICAgIGMyID0gKGUyICYgMTUpIDw8IDQgfCBlMyA+PiAyO1xuICAgIGlmIChlMyAhPT0gNjQpIHtcbiAgICAgIG8gKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjMik7XG4gICAgfVxuICAgIGU0ID0gQmFzZTY0X21hcC5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTtcbiAgICBjMyA9IChlMyAmIDMpIDw8IDYgfCBlNDtcbiAgICBpZiAoZTQgIT09IDY0KSB7XG4gICAgICBvICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYzMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbztcbn1cbnZhciBoYXNfYnVmID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHsgcmV0dXJuIHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgcHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgISFwcm9jZXNzLnZlcnNpb25zLm5vZGU7IH0pKCk7XG5cbnZhciBCdWZmZXJfZnJvbSA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGlmKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0dmFyIG5iZnMgPSAhQnVmZmVyLmZyb207XG5cdFx0aWYoIW5iZnMpIHRyeSB7IEJ1ZmZlci5mcm9tKFwiZm9vXCIsIFwidXRmOFwiKTsgfSBjYXRjaChlKSB7IG5iZnMgPSB0cnVlOyB9XG5cdFx0cmV0dXJuIG5iZnMgPyBmdW5jdGlvbihidWYsIGVuYykgeyByZXR1cm4gKGVuYykgPyBuZXcgQnVmZmVyKGJ1ZiwgZW5jKSA6IG5ldyBCdWZmZXIoYnVmKTsgfSA6IEJ1ZmZlci5mcm9tLmJpbmQoQnVmZmVyKTtcblx0fVxuXHRyZXR1cm4gZnVuY3Rpb24oKSB7fTtcbn0pKCk7XG5cblxuZnVuY3Rpb24gbmV3X3Jhd19idWYobGVuLyo6bnVtYmVyKi8pIHtcblx0LyoganNoaW50IC1XMDU2ICovXG5cdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXIuYWxsb2MgPyBCdWZmZXIuYWxsb2MobGVuKSA6IG5ldyBCdWZmZXIobGVuKTtcblx0cmV0dXJuIHR5cGVvZiBVaW50OEFycmF5ICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVWludDhBcnJheShsZW4pIDogbmV3IEFycmF5KGxlbik7XG5cdC8qIGpzaGludCArVzA1NiAqL1xufVxuXG5mdW5jdGlvbiBuZXdfdW5zYWZlX2J1ZihsZW4vKjpudW1iZXIqLykge1xuXHQvKiBqc2hpbnQgLVcwNTYgKi9cblx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlci5hbGxvY1Vuc2FmZSA/IEJ1ZmZlci5hbGxvY1Vuc2FmZShsZW4pIDogbmV3IEJ1ZmZlcihsZW4pO1xuXHRyZXR1cm4gdHlwZW9mIFVpbnQ4QXJyYXkgIT0gXCJ1bmRlZmluZWRcIiA/IG5ldyBVaW50OEFycmF5KGxlbikgOiBuZXcgQXJyYXkobGVuKTtcblx0LyoganNoaW50ICtXMDU2ICovXG59XG5cbnZhciBzMmEgPSBmdW5jdGlvbiBzMmEocy8qOnN0cmluZyovKS8qOmFueSovIHtcblx0aWYoaGFzX2J1ZikgcmV0dXJuIEJ1ZmZlcl9mcm9tKHMsIFwiYmluYXJ5XCIpO1xuXHRyZXR1cm4gcy5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24oeC8qOnN0cmluZyovKS8qOm51bWJlcioveyByZXR1cm4geC5jaGFyQ29kZUF0KDApICYgMHhmZjsgfSk7XG59O1xuXG5mdW5jdGlvbiBzMmFiKHMvKjpzdHJpbmcqLykvKjphbnkqLyB7XG5cdGlmKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHJldHVybiBzMmEocyk7XG5cdHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpLCB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcblx0Zm9yICh2YXIgaT0wOyBpIT1zLmxlbmd0aDsgKytpKSB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcblx0cmV0dXJuIGJ1Zjtcbn1cblxuZnVuY3Rpb24gYTJzKGRhdGEvKjphbnkqLykvKjpzdHJpbmcqLyB7XG5cdGlmKEFycmF5LmlzQXJyYXkoZGF0YSkpIHJldHVybiBkYXRhLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpOyB9KS5qb2luKFwiXCIpO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdOyBmb3IodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZGF0YVtpXSk7IHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIGEydShkYXRhLyo6QXJyYXk8bnVtYmVyPiovKS8qOlVpbnQ4QXJyYXkqLyB7XG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ID09PSAndW5kZWZpbmVkJykgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWRcIik7XG5cdHJldHVybiBuZXcgVWludDhBcnJheShkYXRhKTtcbn1cblxuZnVuY3Rpb24gYWIyYShkYXRhLyo6QXJyYXlCdWZmZXJ8VWludDhBcnJheSovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGlmKHR5cGVvZiBBcnJheUJ1ZmZlciA9PSAndW5kZWZpbmVkJykgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWRcIik7XG5cdGlmKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgcmV0dXJuIGFiMmEobmV3IFVpbnQ4QXJyYXkoZGF0YSkpO1xuXHQvKjo6IGlmKGRhdGEgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdHZhciBvID0gbmV3IEFycmF5KGRhdGEubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIG9baV0gPSBkYXRhW2ldO1xuXHRyZXR1cm4gbztcbn1cblxudmFyIGJjb25jYXQgPSBoYXNfYnVmID8gZnVuY3Rpb24oYnVmcykgeyByZXR1cm4gQnVmZmVyLmNvbmNhdChidWZzLm1hcChmdW5jdGlvbihidWYpIHsgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihidWYpID8gYnVmIDogQnVmZmVyX2Zyb20oYnVmKTsgfSkpOyB9IDogZnVuY3Rpb24oYnVmcykge1xuXHRpZih0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdHZhciBpID0gMCwgbWF4bGVuID0gMDtcblx0XHRmb3IoaSA9IDA7IGkgPCBidWZzLmxlbmd0aDsgKytpKSBtYXhsZW4gKz0gYnVmc1tpXS5sZW5ndGg7XG5cdFx0dmFyIG8gPSBuZXcgVWludDhBcnJheShtYXhsZW4pO1xuXHRcdHZhciBsZW4gPSAwO1xuXHRcdGZvcihpID0gMCwgbWF4bGVuID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyBtYXhsZW4gKz0gbGVuLCArK2kpIHtcblx0XHRcdGxlbiA9IGJ1ZnNbaV0ubGVuZ3RoO1xuXHRcdFx0aWYoYnVmc1tpXSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIG8uc2V0KGJ1ZnNbaV0sIG1heGxlbik7XG5cdFx0XHRlbHNlIGlmKHR5cGVvZiBidWZzW2ldID09IFwic3RyaW5nXCIpIHsgdGhyb3cgXCJ3dGZcIjsgfVxuXHRcdFx0ZWxzZSBvLnNldChuZXcgVWludDhBcnJheShidWZzW2ldKSwgbWF4bGVuKTtcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0cmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgYnVmcy5tYXAoZnVuY3Rpb24oYnVmKSB7IHJldHVybiBBcnJheS5pc0FycmF5KGJ1ZikgPyBidWYgOiBbXS5zbGljZS5jYWxsKGJ1Zik7IH0pKTtcbn07XG5cbmZ1bmN0aW9uIHV0ZjhkZWNvZGUoY29udGVudC8qOnN0cmluZyovKSB7XG5cdHZhciBvdXQgPSBbXSwgd2lkeCA9IDAsIEwgPSBjb250ZW50Lmxlbmd0aCArIDI1MDtcblx0dmFyIG8gPSBuZXdfcmF3X2J1Zihjb250ZW50Lmxlbmd0aCArIDI1NSk7XG5cdGZvcih2YXIgcmlkeCA9IDA7IHJpZHggPCBjb250ZW50Lmxlbmd0aDsgKytyaWR4KSB7XG5cdFx0dmFyIGMgPSBjb250ZW50LmNoYXJDb2RlQXQocmlkeCk7XG5cdFx0aWYoYyA8IDB4ODApIG9bd2lkeCsrXSA9IGM7XG5cdFx0ZWxzZSBpZihjIDwgMHg4MDApIHtcblx0XHRcdG9bd2lkeCsrXSA9ICgxOTJ8KChjPj42KSYzMSkpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoYyY2MykpO1xuXHRcdH0gZWxzZSBpZihjID49IDB4RDgwMCAmJiBjIDwgMHhFMDAwKSB7XG5cdFx0XHRjID0gKGMmMTAyMykrNjQ7XG5cdFx0XHR2YXIgZCA9IGNvbnRlbnQuY2hhckNvZGVBdCgrK3JpZHgpJjEwMjM7XG5cdFx0XHRvW3dpZHgrK10gPSAoMjQwfCgoYz4+OCkmNykpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoKGM+PjIpJjYzKSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fCgoZD4+NikmMTUpfCgoYyYzKTw8NCkpO1xuXHRcdFx0b1t3aWR4KytdID0gKDEyOHwoZCY2MykpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvW3dpZHgrK10gPSAoMjI0fCgoYz4+MTIpJjE1KSk7XG5cdFx0XHRvW3dpZHgrK10gPSAoMTI4fCgoYz4+NikmNjMpKTtcblx0XHRcdG9bd2lkeCsrXSA9ICgxMjh8KGMmNjMpKTtcblx0XHR9XG5cdFx0aWYod2lkeCA+IEwpIHtcblx0XHRcdG91dC5wdXNoKG8uc2xpY2UoMCwgd2lkeCkpO1xuXHRcdFx0d2lkeCA9IDA7XG5cdFx0XHRvID0gbmV3X3Jhd19idWYoNjU1MzUpO1xuXHRcdFx0TCA9IDY1NTMwO1xuXHRcdH1cblx0fVxuXHRvdXQucHVzaChvLnNsaWNlKDAsIHdpZHgpKTtcblx0cmV0dXJuIGJjb25jYXQob3V0KTtcbn1cblxudmFyIGNocjAgPSAvXFx1MDAwMC9nLCBjaHIxID0gL1tcXHUwMDAxLVxcdTAwMDZdL2c7XG4vKjo6XG5kZWNsYXJlIHR5cGUgQmxvY2sgPSBhbnk7XG5kZWNsYXJlIHR5cGUgQnVmQXJyYXkgPSB7XG5cdG5ld2JsayhzejpudW1iZXIpOkJsb2NrO1xuXHRuZXh0KHN6Om51bWJlcik6QmxvY2s7XG5cdGVuZCgpOmFueTtcblx0cHVzaChidWY6QmxvY2spOnZvaWQ7XG59O1xuXG50eXBlIFJlY29yZEhvcHBlckNCID0geyhkOmFueSwgUm46c3RyaW5nLCBSVDpudW1iZXIpOj9ib29sZWFuO307XG5cbnR5cGUgRXZlcnRUeXBlID0ge1tzdHJpbmddOnN0cmluZ307XG50eXBlIEV2ZXJ0TnVtVHlwZSA9IHtbc3RyaW5nXTpudW1iZXJ9O1xudHlwZSBFdmVydEFyclR5cGUgPSB7W3N0cmluZ106QXJyYXk8c3RyaW5nPn07XG5cbnR5cGUgU3RyaW5nQ29udiA9IHsoc3RyaW5nKTpzdHJpbmd9O1xuXG4qL1xuLyogc3NmLmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qanNoaW50IC1XMDQxICovXG5mdW5jdGlvbiBfc3RycmV2KHgvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHZhciBvID0gXCJcIiwgaSA9IHgubGVuZ3RoLTE7IHdoaWxlKGk+PTApIG8gKz0geC5jaGFyQXQoaS0tKTsgcmV0dXJuIG87IH1cbmZ1bmN0aW9uIHBhZDAodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7IHJldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJzAnLGQtdC5sZW5ndGgpK3Q7fVxuZnVuY3Rpb24gcGFkXyh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrdjtyZXR1cm4gdC5sZW5ndGg+PWQ/dDpmaWxsKCcgJyxkLXQubGVuZ3RoKSt0O31cbmZ1bmN0aW9uIHJwYWRfKHYvKjphbnkqLyxkLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97dmFyIHQ9XCJcIit2OyByZXR1cm4gdC5sZW5ndGg+PWQ/dDp0K2ZpbGwoJyAnLGQtdC5sZW5ndGgpO31cbmZ1bmN0aW9uIHBhZDByMSh2Lyo6YW55Ki8sZC8qOm51bWJlciovKS8qOnN0cmluZyove3ZhciB0PVwiXCIrTWF0aC5yb3VuZCh2KTsgcmV0dXJuIHQubGVuZ3RoPj1kP3Q6ZmlsbCgnMCcsZC10Lmxlbmd0aCkrdDt9XG5mdW5jdGlvbiBwYWQwcjIodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3t2YXIgdD1cIlwiK3Y7IHJldHVybiB0Lmxlbmd0aD49ZD90OmZpbGwoJzAnLGQtdC5sZW5ndGgpK3Q7fVxudmFyIHAyXzMyID0gLyojX19QVVJFX18qL01hdGgucG93KDIsMzIpO1xuZnVuY3Rpb24gcGFkMHIodi8qOmFueSovLGQvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tpZih2PnAyXzMyfHx2PC1wMl8zMikgcmV0dXJuIHBhZDByMSh2LGQpOyB2YXIgaSA9IE1hdGgucm91bmQodik7IHJldHVybiBwYWQwcjIoaSxkKTsgfVxuLyogeWVzLCBpbiAyMDIyIHRoaXMgaXMgc3RpbGwgZmFzdGVyIHRoYW4gc3RyaW5nIGNvbXBhcmUgKi9cbmZ1bmN0aW9uIFNTRl9pc2dlbmVyYWwocy8qOnN0cmluZyovLCBpLyo6P251bWJlciovKS8qOmJvb2xlYW4qLyB7IGkgPSBpIHx8IDA7IHJldHVybiBzLmxlbmd0aCA+PSA3ICsgaSAmJiAocy5jaGFyQ29kZUF0KGkpfDMyKSA9PT0gMTAzICYmIChzLmNoYXJDb2RlQXQoaSsxKXwzMikgPT09IDEwMSAmJiAocy5jaGFyQ29kZUF0KGkrMil8MzIpID09PSAxMTAgJiYgKHMuY2hhckNvZGVBdChpKzMpfDMyKSA9PT0gMTAxICYmIChzLmNoYXJDb2RlQXQoaSs0KXwzMikgPT09IDExNCAmJiAocy5jaGFyQ29kZUF0KGkrNSl8MzIpID09PSA5NyAmJiAocy5jaGFyQ29kZUF0KGkrNil8MzIpID09PSAxMDg7IH1cbnZhciBkYXlzLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFsnU3VuJywgJ1N1bmRheSddLFxuXHRbJ01vbicsICdNb25kYXknXSxcblx0WydUdWUnLCAnVHVlc2RheSddLFxuXHRbJ1dlZCcsICdXZWRuZXNkYXknXSxcblx0WydUaHUnLCAnVGh1cnNkYXknXSxcblx0WydGcmknLCAnRnJpZGF5J10sXG5cdFsnU2F0JywgJ1NhdHVyZGF5J11cbl07XG52YXIgbW9udGhzLyo6QXJyYXk8QXJyYXk8c3RyaW5nPiA+Ki8gPSBbXG5cdFsnSicsICdKYW4nLCAnSmFudWFyeSddLFxuXHRbJ0YnLCAnRmViJywgJ0ZlYnJ1YXJ5J10sXG5cdFsnTScsICdNYXInLCAnTWFyY2gnXSxcblx0WydBJywgJ0FwcicsICdBcHJpbCddLFxuXHRbJ00nLCAnTWF5JywgJ01heSddLFxuXHRbJ0onLCAnSnVuJywgJ0p1bmUnXSxcblx0WydKJywgJ0p1bCcsICdKdWx5J10sXG5cdFsnQScsICdBdWcnLCAnQXVndXN0J10sXG5cdFsnUycsICdTZXAnLCAnU2VwdGVtYmVyJ10sXG5cdFsnTycsICdPY3QnLCAnT2N0b2JlciddLFxuXHRbJ04nLCAnTm92JywgJ05vdmVtYmVyJ10sXG5cdFsnRCcsICdEZWMnLCAnRGVjZW1iZXInXVxuXTtcbmZ1bmN0aW9uIFNTRl9pbml0X3RhYmxlKHQvKjphbnkqLykge1xuXHRpZighdCkgdCA9IHt9O1xuXHR0WzBdPSAgJ0dlbmVyYWwnO1xuXHR0WzFdPSAgJzAnO1xuXHR0WzJdPSAgJzAuMDAnO1xuXHR0WzNdPSAgJyMsIyMwJztcblx0dFs0XT0gICcjLCMjMC4wMCc7XG5cdHRbOV09ICAnMCUnO1xuXHR0WzEwXT0gJzAuMDAlJztcblx0dFsxMV09ICcwLjAwRSswMCc7XG5cdHRbMTJdPSAnIyA/Lz8nO1xuXHR0WzEzXT0gJyMgPz8vPz8nO1xuXHR0WzE0XT0gJ20vZC95eSc7XG5cdHRbMTVdPSAnZC1tbW0teXknO1xuXHR0WzE2XT0gJ2QtbW1tJztcblx0dFsxN109ICdtbW0teXknO1xuXHR0WzE4XT0gJ2g6bW0gQU0vUE0nO1xuXHR0WzE5XT0gJ2g6bW06c3MgQU0vUE0nO1xuXHR0WzIwXT0gJ2g6bW0nO1xuXHR0WzIxXT0gJ2g6bW06c3MnO1xuXHR0WzIyXT0gJ20vZC95eSBoOm1tJztcblx0dFszN109ICcjLCMjMCA7KCMsIyMwKSc7XG5cdHRbMzhdPSAnIywjIzAgO1tSZWRdKCMsIyMwKSc7XG5cdHRbMzldPSAnIywjIzAuMDA7KCMsIyMwLjAwKSc7XG5cdHRbNDBdPSAnIywjIzAuMDA7W1JlZF0oIywjIzAuMDApJztcblx0dFs0NV09ICdtbTpzcyc7XG5cdHRbNDZdPSAnW2hdOm1tOnNzJztcblx0dFs0N109ICdtbXNzLjAnO1xuXHR0WzQ4XT0gJyMjMC4wRSswJztcblx0dFs0OV09ICdAJztcblx0dFs1Nl09ICdcIuS4iuWNiC/kuIvljYggXCJoaFwi5pmCXCJtbVwi5YiGXCJzc1wi56eSIFwiJztcblx0cmV0dXJuIHQ7XG59XG4vKiByZXBlYXRlZCB0byBzYXRpYXRlIHdlYnBhY2sgKi9cbnZhciB0YWJsZV9mbXQgPSB7XG5cdDA6ICAnR2VuZXJhbCcsXG5cdDE6ICAnMCcsXG5cdDI6ICAnMC4wMCcsXG5cdDM6ICAnIywjIzAnLFxuXHQ0OiAgJyMsIyMwLjAwJyxcblx0OTogICcwJScsXG5cdDEwOiAnMC4wMCUnLFxuXHQxMTogJzAuMDBFKzAwJyxcblx0MTI6ICcjID8vPycsXG5cdDEzOiAnIyA/Py8/PycsXG5cdDE0OiAnbS9kL3l5Jyxcblx0MTU6ICdkLW1tbS15eScsXG5cdDE2OiAnZC1tbW0nLFxuXHQxNzogJ21tbS15eScsXG5cdDE4OiAnaDptbSBBTS9QTScsXG5cdDE5OiAnaDptbTpzcyBBTS9QTScsXG5cdDIwOiAnaDptbScsXG5cdDIxOiAnaDptbTpzcycsXG5cdDIyOiAnbS9kL3l5IGg6bW0nLFxuXHQzNzogJyMsIyMwIDsoIywjIzApJyxcblx0Mzg6ICcjLCMjMCA7W1JlZF0oIywjIzApJyxcblx0Mzk6ICcjLCMjMC4wMDsoIywjIzAuMDApJyxcblx0NDA6ICcjLCMjMC4wMDtbUmVkXSgjLCMjMC4wMCknLFxuXHQ0NTogJ21tOnNzJyxcblx0NDY6ICdbaF06bW06c3MnLFxuXHQ0NzogJ21tc3MuMCcsXG5cdDQ4OiAnIyMwLjBFKzAnLFxuXHQ0OTogJ0AnLFxuXHQ1NjogJ1wi5LiK5Y2IL+S4i+WNiCBcImhoXCLmmYJcIm1tXCLliIZcInNzXCLnp5IgXCInXG59O1xuXG4vKiBEZWZhdWx0cyBkZXRlcm1pbmVkIGJ5IHN5c3RlbWF0aWNhbGx5IHRlc3RpbmcgaW4gRXhjZWwgMjAxOSAqL1xuXG4vKiBUaGVzZSBmb3JtYXRzIGFwcGVhciB0byBkZWZhdWx0IHRvIG90aGVyIGZvcm1hdHMgaW4gdGhlIHRhYmxlICovXG52YXIgU1NGX2RlZmF1bHRfbWFwID0ge1xuXHQ1OiAgMzcsIDY6ICAzOCwgNzogIDM5LCA4OiAgNDAsICAgICAgICAgLy8gIDUgLT4gMzcgLi4uICA4IC0+IDQwXG5cblx0MjM6ICAwLCAyNDogIDAsIDI1OiAgMCwgMjY6ICAwLCAgICAgICAgIC8vIDIzIC0+ICAwIC4uLiAyNiAtPiAgMFxuXG5cdDI3OiAxNCwgMjg6IDE0LCAyOTogMTQsIDMwOiAxNCwgMzE6IDE0LCAvLyAyNyAtPiAxNCAuLi4gMzEgLT4gMTRcblxuXHQ1MDogMTQsIDUxOiAxNCwgNTI6IDE0LCA1MzogMTQsIDU0OiAxNCwgLy8gNTAgLT4gMTQgLi4uIDU4IC0+IDE0XG5cdDU1OiAxNCwgNTY6IDE0LCA1NzogMTQsIDU4OiAxNCxcblx0NTk6ICAxLCA2MDogIDIsIDYxOiAgMywgNjI6ICA0LCAgICAgICAgIC8vIDU5IC0+ICAxIC4uLiA2MiAtPiAgNFxuXG5cdDY3OiAgOSwgNjg6IDEwLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyA2NyAtPiAgOSAuLi4gNjggLT4gMTBcblx0Njk6IDEyLCA3MDogMTMsIDcxOiAxNCwgICAgICAgICAgICAgICAgIC8vIDY5IC0+IDEyIC4uLiA3MSAtPiAxNFxuXHQ3MjogMTQsIDczOiAxNSwgNzQ6IDE2LCA3NTogMTcsICAgICAgICAgLy8gNzIgLT4gMTQgLi4uIDc1IC0+IDE3XG5cdDc2OiAyMCwgNzc6IDIxLCA3ODogMjIsICAgICAgICAgICAgICAgICAvLyA3NiAtPiAyMCAuLi4gNzggLT4gMjJcblx0Nzk6IDQ1LCA4MDogNDYsIDgxOiA0NywgICAgICAgICAgICAgICAgIC8vIDc5IC0+IDQ1IC4uLiA4MSAtPiA0N1xuXHQ4MjogMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gODIgLT4gIDAgLi4uIDY1NTM2IC0+IDAgKG9taXR0ZWQpXG59O1xuXG5cbi8qIFRoZXNlIGZvcm1hdHMgdGVjaG5pY2FsbHkgcmVmZXIgdG8gQWNjb3VudGluZyBmb3JtYXRzIHdpdGggbm8gZXF1aXZhbGVudCAqL1xudmFyIFNTRl9kZWZhdWx0X3N0ciA9IHtcblx0Ly8gIDUgLS0gQ3VycmVuY3ksICAgMCBkZWNpbWFsLCBibGFjayBuZWdhdGl2ZVxuXHQ1OiAgJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdDYzOiAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblxuXHQvLyAgNiAtLSBDdXJyZW5jeSwgICAwIGRlY2ltYWwsIHJlZCAgIG5lZ2F0aXZlXG5cdDY6ICAnXCIkXCIjLCMjMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwXFxcXCknLFxuXHQ2NDogJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblxuXHQvLyAgNyAtLSBDdXJyZW5jeSwgICAyIGRlY2ltYWwsIGJsYWNrIG5lZ2F0aXZlXG5cdDc6ICAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0NjU6ICdcIiRcIiMsIyMwLjAwXyk7XFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXG5cdC8vICA4IC0tIEN1cnJlbmN5LCAgIDIgZGVjaW1hbCwgcmVkICAgbmVnYXRpdmVcblx0ODogICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdDY2OiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXG5cdC8vIDQxIC0tIEFjY291bnRpbmcsIDAgZGVjaW1hbCwgTm8gU3ltYm9sXG5cdDQxOiAnXygqICMsIyMwXyk7XygqIFxcXFwoIywjIzBcXFxcKTtfKCogXCItXCJfKTtfKEBfKScsXG5cblx0Ly8gNDIgLS0gQWNjb3VudGluZywgMCBkZWNpbWFsLCAkICBTeW1ib2xcblx0NDI6ICdfKFwiJFwiKiAjLCMjMF8pO18oXCIkXCIqIFxcXFwoIywjIzBcXFxcKTtfKFwiJFwiKiBcIi1cIl8pO18oQF8pJyxcblxuXHQvLyA0MyAtLSBBY2NvdW50aW5nLCAyIGRlY2ltYWwsIE5vIFN5bWJvbFxuXHQ0MzogJ18oKiAjLCMjMC4wMF8pO18oKiBcXFxcKCMsIyMwLjAwXFxcXCk7XygqIFwiLVwiPz9fKTtfKEBfKScsXG5cblx0Ly8gNDQgLS0gQWNjb3VudGluZywgMiBkZWNpbWFsLCAkICBTeW1ib2xcblx0NDQ6ICdfKFwiJFwiKiAjLCMjMC4wMF8pO18oXCIkXCIqIFxcXFwoIywjIzAuMDBcXFxcKTtfKFwiJFwiKiBcIi1cIj8/Xyk7XyhAXyknXG59O1xuXG5mdW5jdGlvbiBTU0ZfZnJhYyh4Lyo6bnVtYmVyKi8sIEQvKjpudW1iZXIqLywgbWl4ZWQvKjo/Ym9vbGVhbiovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdHZhciBzZ24gPSB4IDwgMCA/IC0xIDogMTtcblx0dmFyIEIgPSB4ICogc2duO1xuXHR2YXIgUF8yID0gMCwgUF8xID0gMSwgUCA9IDA7XG5cdHZhciBRXzIgPSAxLCBRXzEgPSAwLCBRID0gMDtcblx0dmFyIEEgPSBNYXRoLmZsb29yKEIpO1xuXHR3aGlsZShRXzEgPCBEKSB7XG5cdFx0QSA9IE1hdGguZmxvb3IoQik7XG5cdFx0UCA9IEEgKiBQXzEgKyBQXzI7XG5cdFx0USA9IEEgKiBRXzEgKyBRXzI7XG5cdFx0aWYoKEIgLSBBKSA8IDAuMDAwMDAwMDUpIGJyZWFrO1xuXHRcdEIgPSAxIC8gKEIgLSBBKTtcblx0XHRQXzIgPSBQXzE7IFBfMSA9IFA7XG5cdFx0UV8yID0gUV8xOyBRXzEgPSBRO1xuXHR9XG5cdGlmKFEgPiBEKSB7IGlmKFFfMSA+IEQpIHsgUSA9IFFfMjsgUCA9IFBfMjsgfSBlbHNlIHsgUSA9IFFfMTsgUCA9IFBfMTsgfSB9XG5cdGlmKCFtaXhlZCkgcmV0dXJuIFswLCBzZ24gKiBQLCBRXTtcblx0dmFyIHEgPSBNYXRoLmZsb29yKHNnbiAqIFAvUSk7XG5cdHJldHVybiBbcSwgc2duKlAgLSBxKlEsIFFdO1xufVxuZnVuY3Rpb24gU1NGX3BhcnNlX2RhdGVfY29kZSh2Lyo6bnVtYmVyKi8sb3B0cy8qOj9hbnkqLyxiMi8qOj9ib29sZWFuKi8pIHtcblx0aWYodiA+IDI5NTg0NjUgfHwgdiA8IDApIHJldHVybiBudWxsO1xuXHR2YXIgZGF0ZSA9ICh2fDApLCB0aW1lID0gTWF0aC5mbG9vcig4NjQwMCAqICh2IC0gZGF0ZSkpLCBkb3c9MDtcblx0dmFyIGRvdXQ9W107XG5cdHZhciBvdXQ9e0Q6ZGF0ZSwgVDp0aW1lLCB1Ojg2NDAwKih2LWRhdGUpLXRpbWUseTowLG06MCxkOjAsSDowLE06MCxTOjAscTowfTtcblx0aWYoTWF0aC5hYnMob3V0LnUpIDwgMWUtNikgb3V0LnUgPSAwO1xuXHRpZihvcHRzICYmIG9wdHMuZGF0ZTE5MDQpIGRhdGUgKz0gMTQ2Mjtcblx0aWYob3V0LnUgPiAwLjk5OTkpIHtcblx0XHRvdXQudSA9IDA7XG5cdFx0aWYoKyt0aW1lID09IDg2NDAwKSB7IG91dC5UID0gdGltZSA9IDA7ICsrZGF0ZTsgKytvdXQuRDsgfVxuXHR9XG5cdGlmKGRhdGUgPT09IDYwKSB7ZG91dCA9IGIyID8gWzEzMTcsMTAsMjldIDogWzE5MDAsMiwyOV07IGRvdz0zO31cblx0ZWxzZSBpZihkYXRlID09PSAwKSB7ZG91dCA9IGIyID8gWzEzMTcsOCwyOV0gOiBbMTkwMCwxLDBdOyBkb3c9Njt9XG5cdGVsc2Uge1xuXHRcdGlmKGRhdGUgPiA2MCkgLS1kYXRlO1xuXHRcdC8qIDEgPSBKYW4gMSAxOTAwIGluIEdyZWdvcmlhbiAqL1xuXHRcdHZhciBkID0gbmV3IERhdGUoMTkwMCwgMCwgMSk7XG5cdFx0ZC5zZXREYXRlKGQuZ2V0RGF0ZSgpICsgZGF0ZSAtIDEpO1xuXHRcdGRvdXQgPSBbZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCkrMSxkLmdldERhdGUoKV07XG5cdFx0ZG93ID0gZC5nZXREYXkoKTtcblx0XHRpZihkYXRlIDwgNjApIGRvdyA9IChkb3cgKyA2KSAlIDc7XG5cdFx0aWYoYjIpIGRvdyA9IFNTRl9maXhfaGlqcmkoZCwgZG91dCk7XG5cdH1cblx0b3V0LnkgPSBkb3V0WzBdOyBvdXQubSA9IGRvdXRbMV07IG91dC5kID0gZG91dFsyXTtcblx0b3V0LlMgPSB0aW1lICUgNjA7IHRpbWUgPSBNYXRoLmZsb29yKHRpbWUgLyA2MCk7XG5cdG91dC5NID0gdGltZSAlIDYwOyB0aW1lID0gTWF0aC5mbG9vcih0aW1lIC8gNjApO1xuXHRvdXQuSCA9IHRpbWU7XG5cdG91dC5xID0gZG93O1xuXHRyZXR1cm4gb3V0O1xufVxudmFyIFNTRmJhc2VkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE4OTksIDExLCAzMSwgMCwgMCwgMCk7XG52YXIgU1NGZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovU1NGYmFzZWRhdGUuZ2V0VGltZSgpO1xudmFyIFNTRmJhc2UxOTA0ID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE5MDAsIDIsIDEsIDAsIDAsIDApO1xuZnVuY3Rpb24gZGF0ZW51bV9sb2NhbCh2Lyo6RGF0ZSovLCBkYXRlMTkwNC8qOj9ib29sZWFuKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgZXBvY2ggPSAvKiNfX1BVUkVfXyovdi5nZXRUaW1lKCk7XG5cdGlmKGRhdGUxOTA0KSBlcG9jaCAtPSAxNDYxKjI0KjYwKjYwKjEwMDA7XG5cdGVsc2UgaWYodiA+PSBTU0ZiYXNlMTkwNCkgZXBvY2ggKz0gMjQqNjAqNjAqMTAwMDtcblx0cmV0dXJuIChlcG9jaCAtIChTU0ZkbnRocmVzaCArICgvKiNfX1BVUkVfXyovdi5nZXRUaW1lem9uZU9mZnNldCgpIC0gLyojX19QVVJFX18qL1NTRmJhc2VkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkpICogNjAwMDApKSAvICgyNCAqIDYwICogNjAgKiAxMDAwKTtcbn1cbi8qIEVDTUEtMzc2IDE4LjguMzAgbnVtRm10Ki9cbi8qIE5vdGU6IGB0b1ByZWNpc2lvbmAgdXNlcyBzdGFuZGFyZCBmb3JtIHdoZW4gcHJlYyA+IEUgYW5kIEUgPj0gLTYgKi9cbi8qIGV4cG9uZW50ID49IC05IGFuZCA8PSA5ICovXG5mdW5jdGlvbiBTU0Zfc3RyaXBfZGVjaW1hbChvLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gKG8uaW5kZXhPZihcIi5cIikgPT0gLTEpID8gbyA6IG8ucmVwbGFjZSgvKD86XFwuMCp8KFxcLlxcZCpbMS05XSkwKykkLywgXCIkMVwiKTtcbn1cblxuLyogR2VuZXJhbCBFeHBvbmVudGlhbCBhbHdheXMgc2hvd3MgMiBkaWdpdHMgZXhwIGFuZCB0cmltcyB0aGUgbWFudGlzc2EgKi9cbmZ1bmN0aW9uIFNTRl9ub3JtYWxpemVfZXhwKG8vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKG8uaW5kZXhPZihcIkVcIikgPT0gLTEpIHJldHVybiBvO1xuXHRyZXR1cm4gby5yZXBsYWNlKC8oPzpcXC4wKnwoXFwuXFxkKlsxLTldKTArKVtFZV0vLFwiJDFFXCIpLnJlcGxhY2UoLyhFWystXSkoXFxkKSQvLFwiJDEwJDJcIik7XG59XG5cbi8qIGV4cG9uZW50ID49IC05IGFuZCA8PSA5ICovXG5mdW5jdGlvbiBTU0Zfc21hbGxfZXhwKHYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciB3ID0gKHY8MD8xMjoxMSk7XG5cdHZhciBvID0gU1NGX3N0cmlwX2RlY2ltYWwodi50b0ZpeGVkKDEyKSk7IGlmKG8ubGVuZ3RoIDw9IHcpIHJldHVybiBvO1xuXHRvID0gdi50b1ByZWNpc2lvbigxMCk7IGlmKG8ubGVuZ3RoIDw9IHcpIHJldHVybiBvO1xuXHRyZXR1cm4gdi50b0V4cG9uZW50aWFsKDUpO1xufVxuXG4vKiBleHBvbmVudCA+PSAxMSBvciA8PSAtMTAgbGlrZWx5IGV4cG9uZW50aWFsICovXG5mdW5jdGlvbiBTU0ZfbGFyZ2VfZXhwKHYvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gU1NGX3N0cmlwX2RlY2ltYWwodi50b0ZpeGVkKDExKSk7XG5cdHJldHVybiAoby5sZW5ndGggPiAodjwwPzEyOjExKSB8fCBvID09PSBcIjBcIiB8fCBvID09PSBcIi0wXCIpID8gdi50b1ByZWNpc2lvbig2KSA6IG87XG59XG5cbmZ1bmN0aW9uIFNTRl9nZW5lcmFsX251bSh2Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgViA9IE1hdGguZmxvb3IoTWF0aC5sb2coTWF0aC5hYnModikpKk1hdGguTE9HMTBFKSwgbztcblxuXHRpZihWID49IC00ICYmIFYgPD0gLTEpIG8gPSB2LnRvUHJlY2lzaW9uKDEwK1YpO1xuXHRlbHNlIGlmKE1hdGguYWJzKFYpIDw9IDkpIG8gPSBTU0Zfc21hbGxfZXhwKHYpO1xuXHRlbHNlIGlmKFYgPT09IDEwKSBvID0gdi50b0ZpeGVkKDEwKS5zdWJzdHIoMCwxMik7XG5cdGVsc2UgbyA9IFNTRl9sYXJnZV9leHAodik7XG5cblx0cmV0dXJuIFNTRl9zdHJpcF9kZWNpbWFsKFNTRl9ub3JtYWxpemVfZXhwKG8udG9VcHBlckNhc2UoKSkpO1xufVxuXG5cbi8qXG5cdFwiR2VuZXJhbFwiIHJ1bGVzOlxuXHQtIHRleHQgaXMgcGFzc2VkIHRocm91Z2ggKFwiQFwiKVxuXHQtIGJvb2xlYW5zIGFyZSByZW5kZXJlZCBhcyBUUlVFL0ZBTFNFXG5cdC0gXCJ1cCB0byAxMSBjaGFyYWN0ZXJzXCIgZGlzcGxheWVkIGZvciBudW1iZXJzXG5cdC0gRGVmYXVsdCBkYXRlIGZvcm1hdCAoY29kZSAxNCkgdXNlZCBmb3IgRGF0ZXNcblxuXHRUaGUgbG9uZ2VzdCAzMi1iaXQgaW50ZWdlciB0ZXh0IGlzIFwiLTIxNDc0ODM2NDhcIiwgZXhhY3RseSAxMSBjaGFyc1xuXHRUT0RPOiB0ZWNobmljYWxseSB0aGUgZGlzcGxheSBkZXBlbmRzIG9uIHRoZSB3aWR0aCBvZiB0aGUgY2VsbFxuKi9cbmZ1bmN0aW9uIFNTRl9nZW5lcmFsKHYvKjphbnkqLywgb3B0cy8qOmFueSovKSB7XG5cdHN3aXRjaCh0eXBlb2Ygdikge1xuXHRcdGNhc2UgJ3N0cmluZyc6IHJldHVybiB2O1xuXHRcdGNhc2UgJ2Jvb2xlYW4nOiByZXR1cm4gdiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuXHRcdGNhc2UgJ251bWJlcic6IHJldHVybiAodnwwKSA9PT0gdiA/IHYudG9TdHJpbmcoMTApIDogU1NGX2dlbmVyYWxfbnVtKHYpO1xuXHRcdGNhc2UgJ3VuZGVmaW5lZCc6IHJldHVybiBcIlwiO1xuXHRcdGNhc2UgJ29iamVjdCc6XG5cdFx0XHRpZih2ID09IG51bGwpIHJldHVybiBcIlwiO1xuXHRcdFx0aWYodiBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBTU0ZfZm9ybWF0KDE0LCBkYXRlbnVtX2xvY2FsKHYsIG9wdHMgJiYgb3B0cy5kYXRlMTkwNCksIG9wdHMpO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIHZhbHVlIGluIEdlbmVyYWwgZm9ybWF0OiBcIiArIHYpO1xufVxuXG5mdW5jdGlvbiBTU0ZfZml4X2hpanJpKGRhdGUvKjpEYXRlKi8sIG8vKjpbbnVtYmVyLCBudW1iZXIsIG51bWJlcl0qLykge1xuICAvKiBUT0RPOiBwcm9wZXJseSBhZGp1c3QgeS9tL2QgYW5kICAqL1xuICBvWzBdIC09IDU4MTtcbiAgdmFyIGRvdyA9IGRhdGUuZ2V0RGF5KCk7XG4gIGlmKGRhdGUgPCA2MCkgZG93ID0gKGRvdyArIDYpICUgNztcbiAgcmV0dXJuIGRvdztcbn1cbi8vdmFyIFRIQUlfRElHSVRTID0gXCJcXHUwRTUwXFx1MEU1MVxcdTBFNTJcXHUwRTUzXFx1MEU1NFxcdTBFNTVcXHUwRTU2XFx1MEU1N1xcdTBFNThcXHUwRTU5XCIuc3BsaXQoXCJcIik7XG5mdW5jdGlvbiBTU0Zfd3JpdGVfZGF0ZSh0eXBlLyo6bnVtYmVyKi8sIGZtdC8qOnN0cmluZyovLCB2YWwsIHNzMC8qOj9udW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvPVwiXCIsIHNzPTAsIHR0PTAsIHkgPSB2YWwueSwgb3V0LCBvdXRsID0gMDtcblx0c3dpdGNoKHR5cGUpIHtcblx0XHRjYXNlIDk4OiAvKiAnYicgYnVkZGhpc3QgeWVhciAqL1xuXHRcdFx0eSA9IHZhbC55ICsgNTQzO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgMTIxOiAvKiAneScgeWVhciAqL1xuXHRcdHN3aXRjaChmbXQubGVuZ3RoKSB7XG5cdFx0XHRjYXNlIDE6IGNhc2UgMjogb3V0ID0geSAlIDEwMDsgb3V0bCA9IDI7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogb3V0ID0geSAlIDEwMDAwOyBvdXRsID0gNDsgYnJlYWs7XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDEwOTogLyogJ20nIG1vbnRoICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwubTsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiByZXR1cm4gbW9udGhzW3ZhbC5tLTFdWzFdO1xuXHRcdFx0Y2FzZSA1OiByZXR1cm4gbW9udGhzW3ZhbC5tLTFdWzBdO1xuXHRcdFx0ZGVmYXVsdDogcmV0dXJuIG1vbnRoc1t2YWwubS0xXVsyXTtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgMTAwOiAvKiAnZCcgZGF5ICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuZDsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAzOiByZXR1cm4gZGF5c1t2YWwucV1bMF07XG5cdFx0XHRkZWZhdWx0OiByZXR1cm4gZGF5c1t2YWwucV1bMV07XG5cdFx0fSBicmVhaztcblx0XHRjYXNlIDEwNDogLyogJ2gnIDEyLWhvdXIgKi9cblx0XHRzd2l0Y2goZm10Lmxlbmd0aCkge1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IG91dCA9IDErKHZhbC5IKzExKSUxMjsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBob3VyIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgNzI6IC8qICdIJyAyNC1ob3VyICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuSDsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBob3VyIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IGJyZWFrO1xuXHRcdGNhc2UgNzc6IC8qICdNJyBtaW51dGVzICovXG5cdFx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRcdGNhc2UgMTogY2FzZSAyOiBvdXQgPSB2YWwuTTsgb3V0bCA9IGZtdC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBtaW51dGUgZm9ybWF0OiAnICsgZm10O1xuXHRcdH0gYnJlYWs7XG5cdFx0Y2FzZSAxMTU6IC8qICdzJyBzZWNvbmRzICovXG5cdFx0XHRpZihmbXQgIT0gJ3MnICYmIGZtdCAhPSAnc3MnICYmIGZtdCAhPSAnLjAnICYmIGZtdCAhPSAnLjAwJyAmJiBmbXQgIT0gJy4wMDAnKSB0aHJvdyAnYmFkIHNlY29uZCBmb3JtYXQ6ICcgKyBmbXQ7XG5cdFx0XHRpZih2YWwudSA9PT0gMCAmJiAoZm10ID09IFwic1wiIHx8IGZtdCA9PSBcInNzXCIpKSByZXR1cm4gcGFkMCh2YWwuUywgZm10Lmxlbmd0aCk7XG5cdFx0XHQvKjo6aWYoIXNzMCkgc3MwID0gMDsgKi9cblx0XHRcdGlmKHNzMCA+PSAyKSB0dCA9IHNzMCA9PT0gMyA/IDEwMDAgOiAxMDA7XG5cdFx0XHRlbHNlIHR0ID0gc3MwID09PSAxID8gMTAgOiAxO1xuXHRcdFx0c3MgPSBNYXRoLnJvdW5kKCh0dCkqKHZhbC5TICsgdmFsLnUpKTtcblx0XHRcdGlmKHNzID49IDYwKnR0KSBzcyA9IDA7XG5cdFx0XHRpZihmbXQgPT09ICdzJykgcmV0dXJuIHNzID09PSAwID8gXCIwXCIgOiBcIlwiK3NzL3R0O1xuXHRcdFx0byA9IHBhZDAoc3MsMiArIHNzMCk7XG5cdFx0XHRpZihmbXQgPT09ICdzcycpIHJldHVybiBvLnN1YnN0cigwLDIpO1xuXHRcdFx0cmV0dXJuIFwiLlwiICsgby5zdWJzdHIoMixmbXQubGVuZ3RoLTEpO1xuXHRcdGNhc2UgOTA6IC8qICdaJyBhYnNvbHV0ZSB0aW1lICovXG5cdFx0c3dpdGNoKGZtdCkge1xuXHRcdFx0Y2FzZSAnW2hdJzogY2FzZSAnW2hoXSc6IG91dCA9IHZhbC5EKjI0K3ZhbC5IOyBicmVhaztcblx0XHRcdGNhc2UgJ1ttXSc6IGNhc2UgJ1ttbV0nOiBvdXQgPSAodmFsLkQqMjQrdmFsLkgpKjYwK3ZhbC5NOyBicmVhaztcblx0XHRcdGNhc2UgJ1tzXSc6IGNhc2UgJ1tzc10nOiBvdXQgPSAoKHZhbC5EKjI0K3ZhbC5IKSo2MCt2YWwuTSkqNjArTWF0aC5yb3VuZCh2YWwuUyt2YWwudSk7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgJ2JhZCBhYnN0aW1lIGZvcm1hdDogJyArIGZtdDtcblx0XHR9IG91dGwgPSBmbXQubGVuZ3RoID09PSAzID8gMSA6IDI7IGJyZWFrO1xuXHRcdGNhc2UgMTAxOiAvKiAnZScgZXJhICovXG5cdFx0XHRvdXQgPSB5OyBvdXRsID0gMTsgYnJlYWs7XG5cdH1cblx0dmFyIG91dHN0ciA9IG91dGwgPiAwID8gcGFkMChvdXQsIG91dGwpIDogXCJcIjtcblx0cmV0dXJuIG91dHN0cjtcbn1cblxuXG4vKmpzaGludCAtVzA4NiAqL1xuLypqc2hpbnQgK1cwODYgKi9cbmZ1bmN0aW9uIGNvbW1haWZ5KHMvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciB3ID0gMztcblx0aWYocy5sZW5ndGggPD0gdykgcmV0dXJuIHM7XG5cdHZhciBqID0gKHMubGVuZ3RoICUgdyksIG8gPSBzLnN1YnN0cigwLGopO1xuXHRmb3IoOyBqIT1zLmxlbmd0aDsgais9dykgbys9KG8ubGVuZ3RoID4gMCA/IFwiLFwiIDogXCJcIikgKyBzLnN1YnN0cihqLHcpO1xuXHRyZXR1cm4gbztcbn1cbnZhciBwY3QxID0gLyUvZztcbmZ1bmN0aW9uIHdyaXRlX251bV9wY3QodHlwZS8qOnN0cmluZyovLCBmbXQvKjpzdHJpbmcqLywgdmFsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi97XG5cdHZhciBzZm10ID0gZm10LnJlcGxhY2UocGN0MSxcIlwiKSwgbXVsID0gZm10Lmxlbmd0aCAtIHNmbXQubGVuZ3RoO1xuXHRyZXR1cm4gd3JpdGVfbnVtKHR5cGUsIHNmbXQsIHZhbCAqIE1hdGgucG93KDEwLDIqbXVsKSkgKyBmaWxsKFwiJVwiLG11bCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX251bV9jbSh0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIGlkeCA9IGZtdC5sZW5ndGggLSAxO1xuXHR3aGlsZShmbXQuY2hhckNvZGVBdChpZHgtMSkgPT09IDQ0KSAtLWlkeDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBmbXQuc3Vic3RyKDAsaWR4KSwgdmFsIC8gTWF0aC5wb3coMTAsMyooZm10Lmxlbmd0aC1pZHgpKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX251bV9leHAoZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyove1xuXHR2YXIgby8qOnN0cmluZyovO1xuXHR2YXIgaWR4ID0gZm10LmluZGV4T2YoXCJFXCIpIC0gZm10LmluZGV4T2YoXCIuXCIpIC0gMTtcblx0aWYoZm10Lm1hdGNoKC9eIyswLjBFXFwrMCQvKSkge1xuXHRcdGlmKHZhbCA9PSAwKSByZXR1cm4gXCIwLjBFKzBcIjtcblx0XHRlbHNlIGlmKHZhbCA8IDApIHJldHVybiBcIi1cIiArIHdyaXRlX251bV9leHAoZm10LCAtdmFsKTtcblx0XHR2YXIgcGVyaW9kID0gZm10LmluZGV4T2YoXCIuXCIpOyBpZihwZXJpb2QgPT09IC0xKSBwZXJpb2Q9Zm10LmluZGV4T2YoJ0UnKTtcblx0XHR2YXIgZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpJXBlcmlvZDtcblx0XHRpZihlZSA8IDApIGVlICs9IHBlcmlvZDtcblx0XHRvID0gKHZhbC9NYXRoLnBvdygxMCxlZSkpLnRvUHJlY2lzaW9uKGlkeCsxKyhwZXJpb2QrZWUpJXBlcmlvZCk7XG5cdFx0aWYoby5pbmRleE9mKFwiZVwiKSA9PT0gLTEpIHtcblx0XHRcdHZhciBmYWtlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSk7XG5cdFx0XHRpZihvLmluZGV4T2YoXCIuXCIpID09PSAtMSkgbyA9IG8uY2hhckF0KDApICsgXCIuXCIgKyBvLnN1YnN0cigxKSArIFwiRStcIiArIChmYWtlZSAtIG8ubGVuZ3RoK2VlKTtcblx0XHRcdGVsc2UgbyArPSBcIkUrXCIgKyAoZmFrZWUgLSBlZSk7XG5cdFx0XHR3aGlsZShvLnN1YnN0cigwLDIpID09PSBcIjAuXCIpIHtcblx0XHRcdFx0byA9IG8uY2hhckF0KDApICsgby5zdWJzdHIoMixwZXJpb2QpICsgXCIuXCIgKyBvLnN1YnN0cigyK3BlcmlvZCk7XG5cdFx0XHRcdG8gPSBvLnJlcGxhY2UoL14wKyhbMS05XSkvLFwiJDFcIikucmVwbGFjZSgvXjArXFwuLyxcIjAuXCIpO1xuXHRcdFx0fVxuXHRcdFx0byA9IG8ucmVwbGFjZSgvXFwrLS8sXCItXCIpO1xuXHRcdH1cblx0XHRvID0gby5yZXBsYWNlKC9eKFsrLV0/KShcXGQqKVxcLihcXGQqKVtFZV0vLGZ1bmN0aW9uKCQkLCQxLCQyLCQzKSB7IHJldHVybiAkMSArICQyICsgJDMuc3Vic3RyKDAsKHBlcmlvZCtlZSklcGVyaW9kKSArIFwiLlwiICsgJDMuc3Vic3RyKGVlKSArIFwiRVwiOyB9KTtcblx0fSBlbHNlIG8gPSB2YWwudG9FeHBvbmVudGlhbChpZHgpO1xuXHRpZihmbXQubWF0Y2goL0VcXCswMCQvKSAmJiBvLm1hdGNoKC9lWystXVxcZCQvKSkgbyA9IG8uc3Vic3RyKDAsby5sZW5ndGgtMSkgKyBcIjBcIiArIG8uY2hhckF0KG8ubGVuZ3RoLTEpO1xuXHRpZihmbXQubWF0Y2goL0VcXC0vKSAmJiBvLm1hdGNoKC9lXFwrLykpIG8gPSBvLnJlcGxhY2UoL2VcXCsvLFwiZVwiKTtcblx0cmV0dXJuIG8ucmVwbGFjZShcImVcIixcIkVcIik7XG59XG52YXIgZnJhYzEgPSAvIyAoXFw/KykoID8pXFwvKCA/KShcXGQrKS87XG5mdW5jdGlvbiB3cml0ZV9udW1fZjEoci8qOkFycmF5PHN0cmluZz4qLywgYXZhbC8qOm51bWJlciovLCBzaWduLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgZGVuID0gcGFyc2VJbnQocls0XSwxMCksIHJyID0gTWF0aC5yb3VuZChhdmFsICogZGVuKSwgYmFzZSA9IE1hdGguZmxvb3IocnIvZGVuKTtcblx0dmFyIG15biA9IChyciAtIGJhc2UqZGVuKSwgbXlkID0gZGVuO1xuXHRyZXR1cm4gc2lnbiArIChiYXNlID09PSAwID8gXCJcIiA6IFwiXCIrYmFzZSkgKyBcIiBcIiArIChteW4gPT09IDAgPyBmaWxsKFwiIFwiLCByWzFdLmxlbmd0aCArIDEgKyByWzRdLmxlbmd0aCkgOiBwYWRfKG15bixyWzFdLmxlbmd0aCkgKyByWzJdICsgXCIvXCIgKyByWzNdICsgcGFkMChteWQscls0XS5sZW5ndGgpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9mMihyLyo6QXJyYXk8c3RyaW5nPiovLCBhdmFsLyo6bnVtYmVyKi8sIHNpZ24vKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHJldHVybiBzaWduICsgKGF2YWwgPT09IDAgPyBcIlwiIDogXCJcIithdmFsKSArIGZpbGwoXCIgXCIsIHJbMV0ubGVuZ3RoICsgMiArIHJbNF0ubGVuZ3RoKTtcbn1cbnZhciBkZWMxID0gL14jKjAqXFwuKFswI10rKS87XG52YXIgY2xvc2VwYXJlbiA9IC9cXCkuKlswI10vO1xudmFyIHBob25lID0gL1xcKCMjI1xcKSAjIyNcXFxcPy0jIyMjLztcbmZ1bmN0aW9uIGhhc2hxKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBcIlwiLCBjYztcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBzdHIubGVuZ3RoOyArK2kpIHN3aXRjaCgoY2M9c3RyLmNoYXJDb2RlQXQoaSkpKSB7XG5cdFx0Y2FzZSAzNTogYnJlYWs7XG5cdFx0Y2FzZSA2Mzogbys9IFwiIFwiOyBicmVhaztcblx0XHRjYXNlIDQ4OiBvKz0gXCIwXCI7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IG8rPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHJuZCh2YWwvKjpudW1iZXIqLywgZC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgdmFyIGRkID0gTWF0aC5wb3coMTAsZCk7IHJldHVybiBcIlwiKyhNYXRoLnJvdW5kKHZhbCAqIGRkKS9kZCk7IH1cbmZ1bmN0aW9uIGRlYyh2YWwvKjpudW1iZXIqLywgZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIF9mcmFjID0gdmFsIC0gTWF0aC5mbG9vcih2YWwpLCBkZCA9IE1hdGgucG93KDEwLGQpO1xuXHRpZiAoZCA8ICgnJyArIE1hdGgucm91bmQoX2ZyYWMgKiBkZCkpLmxlbmd0aCkgcmV0dXJuIDA7XG5cdHJldHVybiBNYXRoLnJvdW5kKF9mcmFjICogZGQpO1xufVxuZnVuY3Rpb24gY2FycnkodmFsLyo6bnVtYmVyKi8sIGQvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7XG5cdGlmIChkIDwgKCcnICsgTWF0aC5yb3VuZCgodmFsLU1hdGguZmxvb3IodmFsKSkqTWF0aC5wb3coMTAsZCkpKS5sZW5ndGgpIHtcblx0XHRyZXR1cm4gMTtcblx0fVxuXHRyZXR1cm4gMDtcbn1cbmZ1bmN0aW9uIGZscih2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHZhbCA8IDIxNDc0ODM2NDcgJiYgdmFsID4gLTIxNDc0ODM2NDgpIHJldHVybiBcIlwiKyh2YWwgPj0gMCA/ICh2YWx8MCkgOiAodmFsLTF8MCkpO1xuXHRyZXR1cm4gXCJcIitNYXRoLmZsb29yKHZhbCk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fZmx0KHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYodHlwZS5jaGFyQ29kZUF0KDApID09PSA0MCAmJiAhZm10Lm1hdGNoKGNsb3NlcGFyZW4pKSB7XG5cdFx0dmFyIGZmbXQgPSBmbXQucmVwbGFjZSgvXFwoICovLFwiXCIpLnJlcGxhY2UoLyBcXCkvLFwiXCIpLnJlcGxhY2UoL1xcKS8sXCJcIik7XG5cdFx0aWYodmFsID49IDApIHJldHVybiB3cml0ZV9udW1fZmx0KCduJywgZmZtdCwgdmFsKTtcblx0XHRyZXR1cm4gJygnICsgd3JpdGVfbnVtX2ZsdCgnbicsIGZmbXQsIC12YWwpICsgJyknO1xuXHR9XG5cdGlmKGZtdC5jaGFyQ29kZUF0KGZtdC5sZW5ndGggLSAxKSA9PT0gNDQpIHJldHVybiB3cml0ZV9udW1fY20odHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignJScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9wY3QodHlwZSwgZm10LCB2YWwpO1xuXHRpZihmbXQuaW5kZXhPZignRScpICE9PSAtMSkgcmV0dXJuIHdyaXRlX251bV9leHAoZm10LCB2YWwpO1xuXHRpZihmbXQuY2hhckNvZGVBdCgwKSA9PT0gMzYpIHJldHVybiBcIiRcIit3cml0ZV9udW1fZmx0KHR5cGUsZm10LnN1YnN0cihmbXQuY2hhckF0KDEpPT0nICc/MjoxKSx2YWwpO1xuXHR2YXIgbztcblx0dmFyIHIvKjo/QXJyYXk8c3RyaW5nPiovLCByaSwgZmYsIGF2YWwgPSBNYXRoLmFicyh2YWwpLCBzaWduID0gdmFsIDwgMCA/IFwiLVwiIDogXCJcIjtcblx0aWYoZm10Lm1hdGNoKC9eMDArJC8pKSByZXR1cm4gc2lnbiArIHBhZDByKGF2YWwsZm10Lmxlbmd0aCk7XG5cdGlmKGZtdC5tYXRjaCgvXlsjP10rJC8pKSB7XG5cdFx0byA9IHBhZDByKHZhbCwwKTsgaWYobyA9PT0gXCIwXCIpIG8gPSBcIlwiO1xuXHRcdHJldHVybiBvLmxlbmd0aCA+IGZtdC5sZW5ndGggPyBvIDogaGFzaHEoZm10LnN1YnN0cigwLGZtdC5sZW5ndGgtby5sZW5ndGgpKSArIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goZnJhYzEpKSkgcmV0dXJuIHdyaXRlX251bV9mMShyLCBhdmFsLCBzaWduKTtcblx0aWYoZm10Lm1hdGNoKC9eIyswKyQvKSkgcmV0dXJuIHNpZ24gKyBwYWQwcihhdmFsLGZtdC5sZW5ndGggLSBmbXQuaW5kZXhPZihcIjBcIikpO1xuXHRpZigociA9IGZtdC5tYXRjaChkZWMxKSkpIHtcblx0XHRvID0gcm5kKHZhbCwgclsxXS5sZW5ndGgpLnJlcGxhY2UoL14oW15cXC5dKykkLyxcIiQxLlwiK2hhc2hxKHJbMV0pKS5yZXBsYWNlKC9cXC4kLyxcIi5cIitoYXNocShyWzFdKSkucmVwbGFjZSgvXFwuKFxcZCopJC8sZnVuY3Rpb24oJCQsICQxKSB7IHJldHVybiBcIi5cIiArICQxICsgZmlsbChcIjBcIiwgaGFzaHEoLyo6OigqL3IvKjo6fHxbXCJcIl0pKi9bMV0pLmxlbmd0aC0kMS5sZW5ndGgpOyB9KTtcblx0XHRyZXR1cm4gZm10LmluZGV4T2YoXCIwLlwiKSAhPT0gLTEgPyBvIDogby5yZXBsYWNlKC9eMFxcLi8sXCIuXCIpO1xuXHR9XG5cdGZtdCA9IGZtdC5yZXBsYWNlKC9eIysoWzAuXSkvLCBcIiQxXCIpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXigwKilcXC4oIyopJC8pKSkge1xuXHRcdHJldHVybiBzaWduICsgcm5kKGF2YWwsIHJbMl0ubGVuZ3RoKS5yZXBsYWNlKC9cXC4oXFxkKlsxLTldKTAqJC8sXCIuJDFcIikucmVwbGFjZSgvXigtP1xcZCopJC8sXCIkMS5cIikucmVwbGFjZSgvXjBcXC4vLHJbMV0ubGVuZ3RoP1wiMC5cIjpcIi5cIik7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jezEsM30sIyMwKFxcLj8pJC8pKSkgcmV0dXJuIHNpZ24gKyBjb21tYWlmeShwYWQwcihhdmFsLDApKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMjMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1fZmx0KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShcIlwiKyhNYXRoLmZsb29yKHZhbCkgKyBjYXJyeSh2YWwsIHJbMV0ubGVuZ3RoKSkpICsgXCIuXCIgKyBwYWQwKGRlYyh2YWwsIHJbMV0ubGVuZ3RoKSxyWzFdLmxlbmd0aCk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMqLCMwLykpKSByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLGZtdC5yZXBsYWNlKC9eIywjKiwvLFwiXCIpLHZhbCk7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFswI10rKShcXFxcPy0oWzAjXSspKSskLykpKSB7XG5cdFx0byA9IF9zdHJyZXYod3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQucmVwbGFjZSgvW1xcXFwtXS9nLFwiXCIpLCB2YWwpKTtcblx0XHRyaSA9IDA7XG5cdFx0cmV0dXJuIF9zdHJyZXYoX3N0cnJldihmbXQucmVwbGFjZSgvXFxcXC9nLFwiXCIpKS5yZXBsYWNlKC9bMCNdL2csZnVuY3Rpb24oeCl7cmV0dXJuIHJpPG8ubGVuZ3RoP28uY2hhckF0KHJpKyspOng9PT0nMCc/JzAnOlwiXCI7fSkpO1xuXHR9XG5cdGlmKGZtdC5tYXRjaChwaG9uZSkpIHtcblx0XHRvID0gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMjIyMjIyMjIyNcIiwgdmFsKTtcblx0XHRyZXR1cm4gXCIoXCIgKyBvLnN1YnN0cigwLDMpICsgXCIpIFwiICsgby5zdWJzdHIoMywgMykgKyBcIi1cIiArIG8uc3Vic3RyKDYpO1xuXHR9XG5cdHZhciBvYSA9IFwiXCI7XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbigvKjo6U3RyaW5nKCovcls0XS8qOjopKi8ubGVuZ3RoLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIGZhbHNlKTtcblx0XHRvID0gXCJcIiArIHNpZ247XG5cdFx0b2EgPSB3cml0ZV9udW0oXCJuXCIsIC8qOjpTdHJpbmcoKi9yWzFdLyo6OikqLywgZmZbMV0pO1xuXHRcdGlmKG9hLmNoYXJBdChvYS5sZW5ndGgtMSkgPT0gXCIgXCIpIG9hID0gb2Euc3Vic3RyKDAsb2EubGVuZ3RoLTEpICsgXCIwXCI7XG5cdFx0byArPSBvYSArIC8qOjpTdHJpbmcoKi9yWzJdLyo6OikqLyArIFwiL1wiICsgLyo6OlN0cmluZygqL3JbM10vKjo6KSovO1xuXHRcdG9hID0gcnBhZF8oZmZbMl0scmkpO1xuXHRcdGlmKG9hLmxlbmd0aCA8IHJbNF0ubGVuZ3RoKSBvYSA9IGhhc2hxKHJbNF0uc3Vic3RyKHJbNF0ubGVuZ3RoLW9hLmxlbmd0aCkpICsgb2E7XG5cdFx0byArPSBvYTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiMgKFsjMD9dKykoID8pXFwvKCA/KShbIzA/XSspLykpKSB7XG5cdFx0cmkgPSBNYXRoLm1pbihNYXRoLm1heChyWzFdLmxlbmd0aCwgcls0XS5sZW5ndGgpLDcpO1xuXHRcdGZmID0gU1NGX2ZyYWMoYXZhbCwgTWF0aC5wb3coMTAscmkpLTEsIHRydWUpO1xuXHRcdHJldHVybiBzaWduICsgKGZmWzBdfHwoZmZbMV0gPyBcIlwiIDogXCIwXCIpKSArIFwiIFwiICsgKGZmWzFdID8gcGFkXyhmZlsxXSxyaSkgKyByWzJdICsgXCIvXCIgKyByWzNdICsgcnBhZF8oZmZbMl0scmkpOiBmaWxsKFwiIFwiLCAyKnJpKzEgKyByWzJdLmxlbmd0aCArIHJbM10ubGVuZ3RoKSk7XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL15bIzA/XSskLykpKSB7XG5cdFx0byA9IHBhZDByKHZhbCwgMCk7XG5cdFx0aWYoZm10Lmxlbmd0aCA8PSBvLmxlbmd0aCkgcmV0dXJuIG87XG5cdFx0cmV0dXJuIGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eKFsjMD9dKylcXC4oWyMwXSspJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsLnRvRml4ZWQoTWF0aC5taW4oclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLFwiJDFcIik7XG5cdFx0cmkgPSBvLmluZGV4T2YoXCIuXCIpO1xuXHRcdHZhciBscmVzID0gZm10LmluZGV4T2YoXCIuXCIpIC0gcmksIHJyZXMgPSBmbXQubGVuZ3RoIC0gby5sZW5ndGggLSBscmVzO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsbHJlcykgKyBvICsgZm10LnN1YnN0cihmbXQubGVuZ3RoLXJyZXMpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXjAwLDAwMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJpID0gZGVjKHZhbCwgclsxXS5sZW5ndGgpO1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1fZmx0KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShmbHIodmFsKSkucmVwbGFjZSgvXlxcZCxcXGR7M30kLyxcIjAkJlwiKS5yZXBsYWNlKC9eXFxkKiQvLGZ1bmN0aW9uKCQkKSB7IHJldHVybiBcIjAwLFwiICsgKCQkLmxlbmd0aCA8IDMgPyBwYWQwKDAsMy0kJC5sZW5ndGgpIDogXCJcIikgKyAkJDsgfSkgKyBcIi5cIiArIHBhZDAocmksclsxXS5sZW5ndGgpO1xuXHR9XG5cdHN3aXRjaChmbXQpIHtcblx0XHRjYXNlIFwiIyMjLCMjMC4wMFwiOiByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMsIyMwLjAwXCIsIHZhbCk7XG5cdFx0Y2FzZSBcIiMjIywjIyNcIjpcblx0XHRjYXNlIFwiIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMsIyMjXCI6IHZhciB4ID0gY29tbWFpZnkocGFkMHIoYXZhbCwwKSk7IHJldHVybiB4ICE9PSBcIjBcIiA/IHNpZ24gKyB4IDogXCJcIjtcblx0XHRjYXNlIFwiIyMjLCMjIy4wMFwiOiByZXR1cm4gd3JpdGVfbnVtX2ZsdCh0eXBlLCBcIiMjIywjIzAuMDBcIix2YWwpLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdFx0Y2FzZSBcIiMsIyMjLjAwXCI6IHJldHVybiB3cml0ZV9udW1fZmx0KHR5cGUsIFwiIywjIzAuMDBcIix2YWwpLnJlcGxhY2UoL14wXFwuLyxcIi5cIik7XG5cdFx0ZGVmYXVsdDpcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBmb3JtYXQgfFwiICsgZm10ICsgXCJ8XCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtX2NtMih0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIGlkeCA9IGZtdC5sZW5ndGggLSAxO1xuXHR3aGlsZShmbXQuY2hhckNvZGVBdChpZHgtMSkgPT09IDQ0KSAtLWlkeDtcblx0cmV0dXJuIHdyaXRlX251bSh0eXBlLCBmbXQuc3Vic3RyKDAsaWR4KSwgdmFsIC8gTWF0aC5wb3coMTAsMyooZm10Lmxlbmd0aC1pZHgpKSk7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1fcGN0Mih0eXBlLyo6c3RyaW5nKi8sIGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIHNmbXQgPSBmbXQucmVwbGFjZShwY3QxLFwiXCIpLCBtdWwgPSBmbXQubGVuZ3RoIC0gc2ZtdC5sZW5ndGg7XG5cdHJldHVybiB3cml0ZV9udW0odHlwZSwgc2ZtdCwgdmFsICogTWF0aC5wb3coMTAsMiptdWwpKSArIGZpbGwoXCIlXCIsbXVsKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX251bV9leHAyKGZtdC8qOnN0cmluZyovLCB2YWwvKjpudW1iZXIqLykvKjpzdHJpbmcqL3tcblx0dmFyIG8vKjpzdHJpbmcqLztcblx0dmFyIGlkeCA9IGZtdC5pbmRleE9mKFwiRVwiKSAtIGZtdC5pbmRleE9mKFwiLlwiKSAtIDE7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMC4wRVxcKzAkLykpIHtcblx0XHRpZih2YWwgPT0gMCkgcmV0dXJuIFwiMC4wRSswXCI7XG5cdFx0ZWxzZSBpZih2YWwgPCAwKSByZXR1cm4gXCItXCIgKyB3cml0ZV9udW1fZXhwMihmbXQsIC12YWwpO1xuXHRcdHZhciBwZXJpb2QgPSBmbXQuaW5kZXhPZihcIi5cIik7IGlmKHBlcmlvZCA9PT0gLTEpIHBlcmlvZD1mbXQuaW5kZXhPZignRScpO1xuXHRcdHZhciBlZSA9IE1hdGguZmxvb3IoTWF0aC5sb2codmFsKSpNYXRoLkxPRzEwRSklcGVyaW9kO1xuXHRcdGlmKGVlIDwgMCkgZWUgKz0gcGVyaW9kO1xuXHRcdG8gPSAodmFsL01hdGgucG93KDEwLGVlKSkudG9QcmVjaXNpb24oaWR4KzErKHBlcmlvZCtlZSklcGVyaW9kKTtcblx0XHRpZighby5tYXRjaCgvW0VlXS8pKSB7XG5cdFx0XHR2YXIgZmFrZWUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbCkqTWF0aC5MT0cxMEUpO1xuXHRcdFx0aWYoby5pbmRleE9mKFwiLlwiKSA9PT0gLTEpIG8gPSBvLmNoYXJBdCgwKSArIFwiLlwiICsgby5zdWJzdHIoMSkgKyBcIkUrXCIgKyAoZmFrZWUgLSBvLmxlbmd0aCtlZSk7XG5cdFx0XHRlbHNlIG8gKz0gXCJFK1wiICsgKGZha2VlIC0gZWUpO1xuXHRcdFx0byA9IG8ucmVwbGFjZSgvXFwrLS8sXCItXCIpO1xuXHRcdH1cblx0XHRvID0gby5yZXBsYWNlKC9eKFsrLV0/KShcXGQqKVxcLihcXGQqKVtFZV0vLGZ1bmN0aW9uKCQkLCQxLCQyLCQzKSB7IHJldHVybiAkMSArICQyICsgJDMuc3Vic3RyKDAsKHBlcmlvZCtlZSklcGVyaW9kKSArIFwiLlwiICsgJDMuc3Vic3RyKGVlKSArIFwiRVwiOyB9KTtcblx0fSBlbHNlIG8gPSB2YWwudG9FeHBvbmVudGlhbChpZHgpO1xuXHRpZihmbXQubWF0Y2goL0VcXCswMCQvKSAmJiBvLm1hdGNoKC9lWystXVxcZCQvKSkgbyA9IG8uc3Vic3RyKDAsby5sZW5ndGgtMSkgKyBcIjBcIiArIG8uY2hhckF0KG8ubGVuZ3RoLTEpO1xuXHRpZihmbXQubWF0Y2goL0VcXC0vKSAmJiBvLm1hdGNoKC9lXFwrLykpIG8gPSBvLnJlcGxhY2UoL2VcXCsvLFwiZVwiKTtcblx0cmV0dXJuIG8ucmVwbGFjZShcImVcIixcIkVcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1faW50KHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYodHlwZS5jaGFyQ29kZUF0KDApID09PSA0MCAmJiAhZm10Lm1hdGNoKGNsb3NlcGFyZW4pKSB7XG5cdFx0dmFyIGZmbXQgPSBmbXQucmVwbGFjZSgvXFwoICovLFwiXCIpLnJlcGxhY2UoLyBcXCkvLFwiXCIpLnJlcGxhY2UoL1xcKS8sXCJcIik7XG5cdFx0aWYodmFsID49IDApIHJldHVybiB3cml0ZV9udW1faW50KCduJywgZmZtdCwgdmFsKTtcblx0XHRyZXR1cm4gJygnICsgd3JpdGVfbnVtX2ludCgnbicsIGZmbXQsIC12YWwpICsgJyknO1xuXHR9XG5cdGlmKGZtdC5jaGFyQ29kZUF0KGZtdC5sZW5ndGggLSAxKSA9PT0gNDQpIHJldHVybiB3cml0ZV9udW1fY20yKHR5cGUsIGZtdCwgdmFsKTtcblx0aWYoZm10LmluZGV4T2YoJyUnKSAhPT0gLTEpIHJldHVybiB3cml0ZV9udW1fcGN0Mih0eXBlLCBmbXQsIHZhbCk7XG5cdGlmKGZtdC5pbmRleE9mKCdFJykgIT09IC0xKSByZXR1cm4gd3JpdGVfbnVtX2V4cDIoZm10LCB2YWwpO1xuXHRpZihmbXQuY2hhckNvZGVBdCgwKSA9PT0gMzYpIHJldHVybiBcIiRcIit3cml0ZV9udW1faW50KHR5cGUsZm10LnN1YnN0cihmbXQuY2hhckF0KDEpPT0nICc/MjoxKSx2YWwpO1xuXHR2YXIgbztcblx0dmFyIHIvKjo/QXJyYXk8c3RyaW5nPiovLCByaSwgZmYsIGF2YWwgPSBNYXRoLmFicyh2YWwpLCBzaWduID0gdmFsIDwgMCA/IFwiLVwiIDogXCJcIjtcblx0aWYoZm10Lm1hdGNoKC9eMDArJC8pKSByZXR1cm4gc2lnbiArIHBhZDAoYXZhbCxmbXQubGVuZ3RoKTtcblx0aWYoZm10Lm1hdGNoKC9eWyM/XSskLykpIHtcblx0XHRvID0gKFwiXCIrdmFsKTsgaWYodmFsID09PSAwKSBvID0gXCJcIjtcblx0XHRyZXR1cm4gby5sZW5ndGggPiBmbXQubGVuZ3RoID8gbyA6IGhhc2hxKGZtdC5zdWJzdHIoMCxmbXQubGVuZ3RoLW8ubGVuZ3RoKSkgKyBvO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKGZyYWMxKSkpIHJldHVybiB3cml0ZV9udW1fZjIociwgYXZhbCwgc2lnbik7XG5cdGlmKGZtdC5tYXRjaCgvXiMrMCskLykpIHJldHVybiBzaWduICsgcGFkMChhdmFsLGZtdC5sZW5ndGggLSBmbXQuaW5kZXhPZihcIjBcIikpO1xuXHRpZigociA9IGZtdC5tYXRjaChkZWMxKSkpIHtcblx0XHQvKjo6IGlmKCFBcnJheS5pc0FycmF5KHIpKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRvID0gKFwiXCIrdmFsKS5yZXBsYWNlKC9eKFteXFwuXSspJC8sXCIkMS5cIitoYXNocShyWzFdKSkucmVwbGFjZSgvXFwuJC8sXCIuXCIraGFzaHEoclsxXSkpO1xuXHRcdG8gPSBvLnJlcGxhY2UoL1xcLihcXGQqKSQvLGZ1bmN0aW9uKCQkLCAkMSkge1xuXHRcdC8qOjogaWYoIUFycmF5LmlzQXJyYXkocikpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0cmV0dXJuIFwiLlwiICsgJDEgKyBmaWxsKFwiMFwiLCBoYXNocShyWzFdKS5sZW5ndGgtJDEubGVuZ3RoKTsgfSk7XG5cdFx0cmV0dXJuIGZtdC5pbmRleE9mKFwiMC5cIikgIT09IC0xID8gbyA6IG8ucmVwbGFjZSgvXjBcXC4vLFwiLlwiKTtcblx0fVxuXHRmbXQgPSBmbXQucmVwbGFjZSgvXiMrKFswLl0pLywgXCIkMVwiKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14oMCopXFwuKCMqKSQvKSkpIHtcblx0XHRyZXR1cm4gc2lnbiArIChcIlwiK2F2YWwpLnJlcGxhY2UoL1xcLihcXGQqWzEtOV0pMCokLyxcIi4kMVwiKS5yZXBsYWNlKC9eKC0/XFxkKikkLyxcIiQxLlwiKS5yZXBsYWNlKC9eMFxcLi8sclsxXS5sZW5ndGg/XCIwLlwiOlwiLlwiKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXiN7MSwzfSwjIzAoXFwuPykkLykpKSByZXR1cm4gc2lnbiArIGNvbW1haWZ5KChcIlwiK2F2YWwpKTtcblx0aWYoKHIgPSBmbXQubWF0Y2goL14jLCMjMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1faW50KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeSgoXCJcIit2YWwpKSArIFwiLlwiICsgZmlsbCgnMCcsclsxXS5sZW5ndGgpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eIywjKiwjMC8pKSkgcmV0dXJuIHdyaXRlX251bV9pbnQodHlwZSxmbXQucmVwbGFjZSgvXiMsIyosLyxcIlwiKSx2YWwpO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbMCNdKykoXFxcXD8tKFswI10rKSkrJC8pKSkge1xuXHRcdG8gPSBfc3RycmV2KHdyaXRlX251bV9pbnQodHlwZSwgZm10LnJlcGxhY2UoL1tcXFxcLV0vZyxcIlwiKSwgdmFsKSk7XG5cdFx0cmkgPSAwO1xuXHRcdHJldHVybiBfc3RycmV2KF9zdHJyZXYoZm10LnJlcGxhY2UoL1xcXFwvZyxcIlwiKSkucmVwbGFjZSgvWzAjXS9nLGZ1bmN0aW9uKHgpe3JldHVybiByaTxvLmxlbmd0aD9vLmNoYXJBdChyaSsrKTp4PT09JzAnPycwJzpcIlwiO30pKTtcblx0fVxuXHRpZihmbXQubWF0Y2gocGhvbmUpKSB7XG5cdFx0byA9IHdyaXRlX251bV9pbnQodHlwZSwgXCIjIyMjIyMjIyMjXCIsIHZhbCk7XG5cdFx0cmV0dXJuIFwiKFwiICsgby5zdWJzdHIoMCwzKSArIFwiKSBcIiArIG8uc3Vic3RyKDMsIDMpICsgXCItXCIgKyBvLnN1YnN0cig2KTtcblx0fVxuXHR2YXIgb2EgPSBcIlwiO1xuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oLyo6OlN0cmluZygqL3JbNF0vKjo6KSovLmxlbmd0aCw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCBmYWxzZSk7XG5cdFx0byA9IFwiXCIgKyBzaWduO1xuXHRcdG9hID0gd3JpdGVfbnVtKFwiblwiLCAvKjo6U3RyaW5nKCovclsxXS8qOjopKi8sIGZmWzFdKTtcblx0XHRpZihvYS5jaGFyQXQob2EubGVuZ3RoLTEpID09IFwiIFwiKSBvYSA9IG9hLnN1YnN0cigwLG9hLmxlbmd0aC0xKSArIFwiMFwiO1xuXHRcdG8gKz0gb2EgKyAvKjo6U3RyaW5nKCovclsyXS8qOjopKi8gKyBcIi9cIiArIC8qOjpTdHJpbmcoKi9yWzNdLyo6OikqLztcblx0XHRvYSA9IHJwYWRfKGZmWzJdLHJpKTtcblx0XHRpZihvYS5sZW5ndGggPCByWzRdLmxlbmd0aCkgb2EgPSBoYXNocShyWzRdLnN1YnN0cihyWzRdLmxlbmd0aC1vYS5sZW5ndGgpKSArIG9hO1xuXHRcdG8gKz0gb2E7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0aWYoKHIgPSBmbXQubWF0Y2goL14jIChbIzA/XSspKCA/KVxcLyggPykoWyMwP10rKS8pKSkge1xuXHRcdHJpID0gTWF0aC5taW4oTWF0aC5tYXgoclsxXS5sZW5ndGgsIHJbNF0ubGVuZ3RoKSw3KTtcblx0XHRmZiA9IFNTRl9mcmFjKGF2YWwsIE1hdGgucG93KDEwLHJpKS0xLCB0cnVlKTtcblx0XHRyZXR1cm4gc2lnbiArIChmZlswXXx8KGZmWzFdID8gXCJcIiA6IFwiMFwiKSkgKyBcIiBcIiArIChmZlsxXSA/IHBhZF8oZmZbMV0scmkpICsgclsyXSArIFwiL1wiICsgclszXSArIHJwYWRfKGZmWzJdLHJpKTogZmlsbChcIiBcIiwgMipyaSsxICsgclsyXS5sZW5ndGggKyByWzNdLmxlbmd0aCkpO1xuXHR9XG5cdGlmKChyID0gZm10Lm1hdGNoKC9eWyMwP10rJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsO1xuXHRcdGlmKGZtdC5sZW5ndGggPD0gby5sZW5ndGgpIHJldHVybiBvO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsZm10Lmxlbmd0aC1vLmxlbmd0aCkpICsgbztcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXihbIzBdKylcXC4oWyMwXSspJC8pKSkge1xuXHRcdG8gPSBcIlwiICsgdmFsLnRvRml4ZWQoTWF0aC5taW4oclsyXS5sZW5ndGgsMTApKS5yZXBsYWNlKC8oW14wXSkwKyQvLFwiJDFcIik7XG5cdFx0cmkgPSBvLmluZGV4T2YoXCIuXCIpO1xuXHRcdHZhciBscmVzID0gZm10LmluZGV4T2YoXCIuXCIpIC0gcmksIHJyZXMgPSBmbXQubGVuZ3RoIC0gby5sZW5ndGggLSBscmVzO1xuXHRcdHJldHVybiBoYXNocShmbXQuc3Vic3RyKDAsbHJlcykgKyBvICsgZm10LnN1YnN0cihmbXQubGVuZ3RoLXJyZXMpKTtcblx0fVxuXHRpZigociA9IGZtdC5tYXRjaCgvXjAwLDAwMFxcLihbIzBdKjApJC8pKSkge1xuXHRcdHJldHVybiB2YWwgPCAwID8gXCItXCIgKyB3cml0ZV9udW1faW50KHR5cGUsIGZtdCwgLXZhbCkgOiBjb21tYWlmeShcIlwiK3ZhbCkucmVwbGFjZSgvXlxcZCxcXGR7M30kLyxcIjAkJlwiKS5yZXBsYWNlKC9eXFxkKiQvLGZ1bmN0aW9uKCQkKSB7IHJldHVybiBcIjAwLFwiICsgKCQkLmxlbmd0aCA8IDMgPyBwYWQwKDAsMy0kJC5sZW5ndGgpIDogXCJcIikgKyAkJDsgfSkgKyBcIi5cIiArIHBhZDAoMCxyWzFdLmxlbmd0aCk7XG5cdH1cblx0c3dpdGNoKGZtdCkge1xuXHRcdGNhc2UgXCIjIyMsIyMjXCI6XG5cdFx0Y2FzZSBcIiMjLCMjI1wiOlxuXHRcdGNhc2UgXCIjLCMjI1wiOiB2YXIgeCA9IGNvbW1haWZ5KFwiXCIrYXZhbCk7IHJldHVybiB4ICE9PSBcIjBcIiA/IHNpZ24gKyB4IDogXCJcIjtcblx0XHRkZWZhdWx0OlxuXHRcdFx0aWYoZm10Lm1hdGNoKC9cXC5bMCM/XSokLykpIHJldHVybiB3cml0ZV9udW1faW50KHR5cGUsIGZtdC5zbGljZSgwLGZtdC5sYXN0SW5kZXhPZihcIi5cIikpLCB2YWwpICsgaGFzaHEoZm10LnNsaWNlKGZtdC5sYXN0SW5kZXhPZihcIi5cIikpKTtcblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBmb3JtYXQgfFwiICsgZm10ICsgXCJ8XCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfbnVtKHR5cGUvKjpzdHJpbmcqLywgZm10Lyo6c3RyaW5nKi8sIHZhbC8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuICh2YWx8MCkgPT09IHZhbCA/IHdyaXRlX251bV9pbnQodHlwZSwgZm10LCB2YWwpIDogd3JpdGVfbnVtX2ZsdCh0eXBlLCBmbXQsIHZhbCk7XG59XG5mdW5jdGlvbiBTU0Zfc3BsaXRfZm10KGZtdC8qOnN0cmluZyovKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIGluX3N0ciA9IGZhbHNlLyosIGNjKi87XG5cdGZvcih2YXIgaSA9IDAsIGogPSAwOyBpIDwgZm10Lmxlbmd0aDsgKytpKSBzd2l0Y2goKC8qY2M9Ki9mbXQuY2hhckNvZGVBdChpKSkpIHtcblx0XHRjYXNlIDM0OiAvKiAnXCInICovXG5cdFx0XHRpbl9zdHIgPSAhaW5fc3RyOyBicmVhaztcblx0XHRjYXNlIDk1OiBjYXNlIDQyOiBjYXNlIDkyOiAvKiAnXycgJyonICdcXFxcJyAqL1xuXHRcdFx0KytpOyBicmVhaztcblx0XHRjYXNlIDU5OiAvKiAnOycgKi9cblx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IGZtdC5zdWJzdHIoaixpLWopO1xuXHRcdFx0aiA9IGkrMTtcblx0fVxuXHRvdXRbb3V0Lmxlbmd0aF0gPSBmbXQuc3Vic3RyKGopO1xuXHRpZihpbl9zdHIgPT09IHRydWUpIHRocm93IG5ldyBFcnJvcihcIkZvcm1hdCB8XCIgKyBmbXQgKyBcInwgdW50ZXJtaW5hdGVkIHN0cmluZyBcIik7XG5cdHJldHVybiBvdXQ7XG59XG5cbnZhciBTU0ZfYWJzdGltZSA9IC9cXFtbSGhNbVNzXFx1MEUwQVxcdTBFMTlcXHUwRTE3XSpcXF0vO1xuZnVuY3Rpb24gZm10X2lzX2RhdGUoZm10Lyo6c3RyaW5nKi8pLyo6Ym9vbGVhbiovIHtcblx0dmFyIGkgPSAwLCAvKmNjID0gMCwqLyBjID0gXCJcIiwgbyA9IFwiXCI7XG5cdHdoaWxlKGkgPCBmbXQubGVuZ3RoKSB7XG5cdFx0c3dpdGNoKChjID0gZm10LmNoYXJBdChpKSkpIHtcblx0XHRcdGNhc2UgJ0cnOiBpZihTU0ZfaXNnZW5lcmFsKGZtdCwgaSkpIGkrPSA2OyBpKys7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXCInOiBmb3IoOygvKmNjPSovZm10LmNoYXJDb2RlQXQoKytpKSkgIT09IDM0ICYmIGkgPCBmbXQubGVuZ3RoOyl7LyplbXB0eSovfSArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXFxcXCc6IGkrPTI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXyc6IGkrPTI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQCc6ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdCJzogY2FzZSAnYic6XG5cdFx0XHRcdGlmKGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIxXCIgfHwgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIikgcmV0dXJuIHRydWU7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ00nOiBjYXNlICdEJzogY2FzZSAnWSc6IGNhc2UgJ0gnOiBjYXNlICdTJzogY2FzZSAnRSc6XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ20nOiBjYXNlICdkJzogY2FzZSAneSc6IGNhc2UgJ2gnOiBjYXNlICdzJzogY2FzZSAnZSc6IGNhc2UgJ2cnOiByZXR1cm4gdHJ1ZTtcblx0XHRcdGNhc2UgJ0EnOiBjYXNlICdhJzogY2FzZSAn5LiKJzpcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCAzKS50b1VwcGVyQ2FzZSgpID09PSBcIkEvUFwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCA1KS50b1VwcGVyQ2FzZSgpID09PSBcIkFNL1BNXCIpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRpZihmbXQuc3Vic3RyKGksIDUpLnRvVXBwZXJDYXNlKCkgPT09IFwi5LiK5Y2IL+S4i+WNiFwiKSByZXR1cm4gdHJ1ZTtcblx0XHRcdFx0KytpOyBicmVhaztcblx0XHRcdGNhc2UgJ1snOlxuXHRcdFx0XHRvID0gYztcblx0XHRcdFx0d2hpbGUoZm10LmNoYXJBdChpKyspICE9PSAnXScgJiYgaSA8IGZtdC5sZW5ndGgpIG8gKz0gZm10LmNoYXJBdChpKTtcblx0XHRcdFx0aWYoby5tYXRjaChTU0ZfYWJzdGltZSkpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJy4nOlxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICcwJzogY2FzZSAnIyc6XG5cdFx0XHRcdHdoaWxlKGkgPCBmbXQubGVuZ3RoICYmIChcIjAjPy4sRSstJVwiLmluZGV4T2YoYz1mbXQuY2hhckF0KCsraSkpID4gLTEgfHwgKGM9PSdcXFxcJyAmJiBmbXQuY2hhckF0KGkrMSkgPT0gXCItXCIgJiYgXCIwI1wiLmluZGV4T2YoZm10LmNoYXJBdChpKzIpKT4tMSkpKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc/Jzogd2hpbGUoZm10LmNoYXJBdCgrK2kpID09PSBjKXsvKiBlbXB0eSAqL30gYnJlYWs7XG5cdFx0XHRjYXNlICcqJzogKytpOyBpZihmbXQuY2hhckF0KGkpID09ICcgJyB8fCBmbXQuY2hhckF0KGkpID09ICcqJykgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJygnOiBjYXNlICcpJzogKytpOyBicmVhaztcblx0XHRcdGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG5cdFx0XHRcdHdoaWxlKGkgPCBmbXQubGVuZ3RoICYmIFwiMDEyMzQ1Njc4OVwiLmluZGV4T2YoZm10LmNoYXJBdCgrK2kpKSA+IC0xKXsvKiBlbXB0eSAqL30gYnJlYWs7XG5cdFx0XHRjYXNlICcgJzogKytpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6ICsraTsgYnJlYWs7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gZXZhbF9mbXQoZm10Lyo6c3RyaW5nKi8sIHYvKjphbnkqLywgb3B0cy8qOmFueSovLCBmbGVuLyo6bnVtYmVyKi8pIHtcblx0dmFyIG91dCA9IFtdLCBvID0gXCJcIiwgaSA9IDAsIGMgPSBcIlwiLCBsc3Q9J3QnLCBkdCwgaiwgY2M7XG5cdHZhciBocj0nSCc7XG5cdC8qIFRva2VuaXplICovXG5cdHdoaWxlKGkgPCBmbXQubGVuZ3RoKSB7XG5cdFx0c3dpdGNoKChjID0gZm10LmNoYXJBdChpKSkpIHtcblx0XHRcdGNhc2UgJ0cnOiAvKiBHZW5lcmFsICovXG5cdFx0XHRcdGlmKCFTU0ZfaXNnZW5lcmFsKGZtdCwgaSkpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIGNoYXJhY3RlciAnICsgYyArICcgaW4gJyArZm10KTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J0cnLCB2OidHZW5lcmFsJ307IGkrPTc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXCInOiAvKiBMaXRlcmFsIHRleHQgKi9cblx0XHRcdFx0Zm9yKG89XCJcIjsoY2M9Zm10LmNoYXJDb2RlQXQoKytpKSkgIT09IDM0ICYmIGkgPCBmbXQubGVuZ3RoOykgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0XHRcdFx0b3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2Om99OyArK2k7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnXFxcXCc6IHZhciB3ID0gZm10LmNoYXJBdCgrK2kpLCB0ID0gKHcgPT09IFwiKFwiIHx8IHcgPT09IFwiKVwiKSA/IHcgOiAndCc7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OnQsIHY6d307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdfJzogb3V0W291dC5sZW5ndGhdID0ge3Q6J3QnLCB2OlwiIFwifTsgaSs9MjsgYnJlYWs7XG5cdFx0XHRjYXNlICdAJzogLyogVGV4dCBQbGFjZWhvbGRlciAqL1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonVCcsIHY6dn07ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICdCJzogY2FzZSAnYic6XG5cdFx0XHRcdGlmKGZtdC5jaGFyQXQoaSsxKSA9PT0gXCIxXCIgfHwgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIikge1xuXHRcdFx0XHRcdGlmKGR0PT1udWxsKSB7IGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cywgZm10LmNoYXJBdChpKzEpID09PSBcIjJcIik7IGlmKGR0PT1udWxsKSByZXR1cm4gXCJcIjsgfVxuXHRcdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidYJywgdjpmbXQuc3Vic3RyKGksMil9OyBsc3QgPSBjOyBpKz0yOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdNJzogY2FzZSAnRCc6IGNhc2UgJ1knOiBjYXNlICdIJzogY2FzZSAnUyc6IGNhc2UgJ0UnOlxuXHRcdFx0XHRjID0gYy50b0xvd2VyQ2FzZSgpO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdtJzogY2FzZSAnZCc6IGNhc2UgJ3knOiBjYXNlICdoJzogY2FzZSAncyc6IGNhc2UgJ2UnOiBjYXNlICdnJzpcblx0XHRcdFx0aWYodiA8IDApIHJldHVybiBcIlwiO1xuXHRcdFx0XHRpZihkdD09bnVsbCkgeyBkdD1TU0ZfcGFyc2VfZGF0ZV9jb2RlKHYsIG9wdHMpOyBpZihkdD09bnVsbCkgcmV0dXJuIFwiXCI7IH1cblx0XHRcdFx0byA9IGM7IHdoaWxlKCsraSA8IGZtdC5sZW5ndGggJiYgZm10LmNoYXJBdChpKS50b0xvd2VyQ2FzZSgpID09PSBjKSBvKz1jO1xuXHRcdFx0XHRpZihjID09PSAnbScgJiYgbHN0LnRvTG93ZXJDYXNlKCkgPT09ICdoJykgYyA9ICdNJztcblx0XHRcdFx0aWYoYyA9PT0gJ2gnKSBjID0gaHI7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OmMsIHY6b307IGxzdCA9IGM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnQSc6IGNhc2UgJ2EnOiBjYXNlICfkuIonOlxuXHRcdFx0XHR2YXIgcT17dDpjLCB2OmN9O1xuXHRcdFx0XHRpZihkdD09bnVsbCkgZHQ9U1NGX3BhcnNlX2RhdGVfY29kZSh2LCBvcHRzKTtcblx0XHRcdFx0aWYoZm10LnN1YnN0cihpLCAzKS50b1VwcGVyQ2FzZSgpID09PSBcIkEvUFwiKSB7IGlmKGR0IT1udWxsKSBxLnYgPSBkdC5IID49IDEyID8gXCJQXCIgOiBcIkFcIjsgcS50ID0gJ1QnOyBocj0naCc7aSs9Mzt9XG5cdFx0XHRcdGVsc2UgaWYoZm10LnN1YnN0cihpLDUpLnRvVXBwZXJDYXNlKCkgPT09IFwiQU0vUE1cIikgeyBpZihkdCE9bnVsbCkgcS52ID0gZHQuSCA+PSAxMiA/IFwiUE1cIiA6IFwiQU1cIjsgcS50ID0gJ1QnOyBpKz01OyBocj0naCc7IH1cblx0XHRcdFx0ZWxzZSBpZihmbXQuc3Vic3RyKGksNSkudG9VcHBlckNhc2UoKSA9PT0gXCLkuIrljYgv5LiL5Y2IXCIpIHsgaWYoZHQhPW51bGwpIHEudiA9IGR0LkggPj0gMTIgPyBcIuS4i+WNiFwiIDogXCLkuIrljYhcIjsgcS50ID0gJ1QnOyBpKz01OyBocj0naCc7IH1cblx0XHRcdFx0ZWxzZSB7IHEudCA9IFwidFwiOyArK2k7IH1cblx0XHRcdFx0aWYoZHQ9PW51bGwgJiYgcS50ID09PSAnVCcpIHJldHVybiBcIlwiO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSBxOyBsc3QgPSBjOyBicmVhaztcblx0XHRcdGNhc2UgJ1snOlxuXHRcdFx0XHRvID0gYztcblx0XHRcdFx0d2hpbGUoZm10LmNoYXJBdChpKyspICE9PSAnXScgJiYgaSA8IGZtdC5sZW5ndGgpIG8gKz0gZm10LmNoYXJBdChpKTtcblx0XHRcdFx0aWYoby5zbGljZSgtMSkgIT09ICddJykgdGhyb3cgJ3VudGVybWluYXRlZCBcIltcIiBibG9jazogfCcgKyBvICsgJ3wnO1xuXHRcdFx0XHRpZihvLm1hdGNoKFNTRl9hYnN0aW1lKSkge1xuXHRcdFx0XHRcdGlmKGR0PT1udWxsKSB7IGR0PVNTRl9wYXJzZV9kYXRlX2NvZGUodiwgb3B0cyk7IGlmKGR0PT1udWxsKSByZXR1cm4gXCJcIjsgfVxuXHRcdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidaJywgdjpvLnRvTG93ZXJDYXNlKCl9O1xuXHRcdFx0XHRcdGxzdCA9IG8uY2hhckF0KDEpO1xuXHRcdFx0XHR9IGVsc2UgaWYoby5pbmRleE9mKFwiJFwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0byA9IChvLm1hdGNoKC9cXCQoW14tXFxbXFxdXSopLyl8fFtdKVsxXXx8XCIkXCI7XG5cdFx0XHRcdFx0aWYoIWZtdF9pc19kYXRlKGZtdCkpIG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0Jyx2Om99O1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0LyogTnVtYmVycyAqL1xuXHRcdFx0Y2FzZSAnLic6XG5cdFx0XHRcdGlmKGR0ICE9IG51bGwpIHtcblx0XHRcdFx0XHRvID0gYzsgd2hpbGUoKytpIDwgZm10Lmxlbmd0aCAmJiAoYz1mbXQuY2hhckF0KGkpKSA9PT0gXCIwXCIpIG8gKz0gYztcblx0XHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDoncycsIHY6b307IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzAnOiBjYXNlICcjJzpcblx0XHRcdFx0byA9IGM7IHdoaWxlKCsraSA8IGZtdC5sZW5ndGggJiYgXCIwIz8uLEUrLSVcIi5pbmRleE9mKGM9Zm10LmNoYXJBdChpKSkgPiAtMSkgbyArPSBjO1xuXHRcdFx0XHRvdXRbb3V0Lmxlbmd0aF0gPSB7dDonbicsIHY6b307IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPyc6XG5cdFx0XHRcdG8gPSBjOyB3aGlsZShmbXQuY2hhckF0KCsraSkgPT09IGMpIG8rPWM7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OmMsIHY6b307IGxzdCA9IGM7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnKic6ICsraTsgaWYoZm10LmNoYXJBdChpKSA9PSAnICcgfHwgZm10LmNoYXJBdChpKSA9PSAnKicpICsraTsgYnJlYWs7IC8vICoqXG5cdFx0XHRjYXNlICcoJzogY2FzZSAnKSc6IG91dFtvdXQubGVuZ3RoXSA9IHt0OihmbGVuPT09MT8ndCc6YyksIHY6Y307ICsraTsgYnJlYWs7XG5cdFx0XHRjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzogY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOlxuXHRcdFx0XHRvID0gYzsgd2hpbGUoaSA8IGZtdC5sZW5ndGggJiYgXCIwMTIzNDU2Nzg5XCIuaW5kZXhPZihmbXQuY2hhckF0KCsraSkpID4gLTEpIG8rPWZtdC5jaGFyQXQoaSk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0OidEJywgdjpvfTsgYnJlYWs7XG5cdFx0XHRjYXNlICcgJzogb3V0W291dC5sZW5ndGhdID0ge3Q6YywgdjpjfTsgKytpOyBicmVhaztcblx0XHRcdGNhc2UgJyQnOiBvdXRbb3V0Lmxlbmd0aF0gPSB7dDondCcsIHY6JyQnfTsgKytpOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFwiLCQtKy8oKTohXiYnfnt9PD494oKsYWNmaWprbG9wcXJ0dXZ3eHpQXCIuaW5kZXhPZihjKSA9PT0gLTEpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIGNoYXJhY3RlciAnICsgYyArICcgaW4gJyArIGZtdCk7XG5cdFx0XHRcdG91dFtvdXQubGVuZ3RoXSA9IHt0Oid0JywgdjpjfTsgKytpOyBicmVhaztcblx0XHR9XG5cdH1cblxuXHQvKiBTY2FuIGZvciBkYXRlL3RpbWUgcGFydHMgKi9cblx0dmFyIGJ0ID0gMCwgc3MwID0gMCwgc3NtO1xuXHRmb3IoaT1vdXQubGVuZ3RoLTEsIGxzdD0ndCc7IGkgPj0gMDsgLS1pKSB7XG5cdFx0c3dpdGNoKG91dFtpXS50KSB7XG5cdFx0XHRjYXNlICdoJzogY2FzZSAnSCc6IG91dFtpXS50ID0gaHI7IGxzdD0naCc7IGlmKGJ0IDwgMSkgYnQgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJ3MnOlxuXHRcdFx0XHRpZigoc3NtPW91dFtpXS52Lm1hdGNoKC9cXC4wKyQvKSkpIHNzMD1NYXRoLm1heChzczAsc3NtWzBdLmxlbmd0aC0xKTtcblx0XHRcdFx0aWYoYnQgPCAzKSBidCA9IDM7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdkJzogY2FzZSAneSc6IGNhc2UgJ00nOiBjYXNlICdlJzogbHN0PW91dFtpXS50OyBicmVhaztcblx0XHRcdGNhc2UgJ20nOiBpZihsc3QgPT09ICdzJykgeyBvdXRbaV0udCA9ICdNJzsgaWYoYnQgPCAyKSBidCA9IDI7IH0gYnJlYWs7XG5cdFx0XHRjYXNlICdYJzogLyppZihvdXRbaV0udiA9PT0gXCJCMlwiKTsqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1onOlxuXHRcdFx0XHRpZihidCA8IDEgJiYgb3V0W2ldLnYubWF0Y2goL1tIaF0vKSkgYnQgPSAxO1xuXHRcdFx0XHRpZihidCA8IDIgJiYgb3V0W2ldLnYubWF0Y2goL1tNbV0vKSkgYnQgPSAyO1xuXHRcdFx0XHRpZihidCA8IDMgJiYgb3V0W2ldLnYubWF0Y2goL1tTc10vKSkgYnQgPSAzO1xuXHRcdH1cblx0fVxuXHQvKiB0aW1lIHJvdW5kaW5nIGRlcGVuZHMgb24gcHJlc2VuY2Ugb2YgbWludXRlIC8gc2Vjb25kIC8gdXNlYyBmaWVsZHMgKi9cblx0c3dpdGNoKGJ0KSB7XG5cdFx0Y2FzZSAwOiBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHQvKjo6aWYoIWR0KSBicmVhazsqL1xuXHRcdFx0aWYoZHQudSA+PSAwLjUpIHsgZHQudSA9IDA7ICsrZHQuUzsgfVxuXHRcdFx0aWYoZHQuUyA+PSAgNjApIHsgZHQuUyA9IDA7ICsrZHQuTTsgfVxuXHRcdFx0aWYoZHQuTSA+PSAgNjApIHsgZHQuTSA9IDA7ICsrZHQuSDsgfVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0Lyo6OmlmKCFkdCkgYnJlYWs7Ki9cblx0XHRcdGlmKGR0LnUgPj0gMC41KSB7IGR0LnUgPSAwOyArK2R0LlM7IH1cblx0XHRcdGlmKGR0LlMgPj0gIDYwKSB7IGR0LlMgPSAwOyArK2R0Lk07IH1cblx0XHRcdGJyZWFrO1xuXHR9XG5cblx0LyogcmVwbGFjZSBmaWVsZHMgKi9cblx0dmFyIG5zdHIgPSBcIlwiLCBqajtcblx0Zm9yKGk9MDsgaSA8IG91dC5sZW5ndGg7ICsraSkge1xuXHRcdHN3aXRjaChvdXRbaV0udCkge1xuXHRcdFx0Y2FzZSAndCc6IGNhc2UgJ1QnOiBjYXNlICcgJzogY2FzZSAnRCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnWCc6IG91dFtpXS52ID0gXCJcIjsgb3V0W2ldLnQgPSBcIjtcIjsgYnJlYWs7XG5cdFx0XHRjYXNlICdkJzogY2FzZSAnbSc6IGNhc2UgJ3knOiBjYXNlICdoJzogY2FzZSAnSCc6IGNhc2UgJ00nOiBjYXNlICdzJzogY2FzZSAnZSc6IGNhc2UgJ2InOiBjYXNlICdaJzpcblx0XHRcdFx0Lyo6OmlmKCFkdCkgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0XHRvdXRbaV0udiA9IFNTRl93cml0ZV9kYXRlKG91dFtpXS50LmNoYXJDb2RlQXQoMCksIG91dFtpXS52LCBkdCwgc3MwKTtcblx0XHRcdFx0b3V0W2ldLnQgPSAndCc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbic6IGNhc2UgJz8nOlxuXHRcdFx0XHRqaiA9IGkrMTtcblx0XHRcdFx0d2hpbGUob3V0W2pqXSAhPSBudWxsICYmIChcblx0XHRcdFx0XHQoYz1vdXRbampdLnQpID09PSBcIj9cIiB8fCBjID09PSBcIkRcIiB8fFxuXHRcdFx0XHRcdCgoYyA9PT0gXCIgXCIgfHwgYyA9PT0gXCJ0XCIpICYmIG91dFtqaisxXSAhPSBudWxsICYmIChvdXRbamorMV0udCA9PT0gJz8nIHx8IG91dFtqaisxXS50ID09PSBcInRcIiAmJiBvdXRbamorMV0udiA9PT0gJy8nKSkgfHxcblx0XHRcdFx0XHQob3V0W2ldLnQgPT09ICcoJyAmJiAoYyA9PT0gJyAnIHx8IGMgPT09ICduJyB8fCBjID09PSAnKScpKSB8fFxuXHRcdFx0XHRcdChjID09PSAndCcgJiYgKG91dFtqal0udiA9PT0gJy8nIHx8IG91dFtqal0udiA9PT0gJyAnICYmIG91dFtqaisxXSAhPSBudWxsICYmIG91dFtqaisxXS50ID09ICc/JykpXG5cdFx0XHRcdCkpIHtcblx0XHRcdFx0XHRvdXRbaV0udiArPSBvdXRbampdLnY7XG5cdFx0XHRcdFx0b3V0W2pqXSA9IHt2OlwiXCIsIHQ6XCI7XCJ9OyArK2pqO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG5zdHIgKz0gb3V0W2ldLnY7XG5cdFx0XHRcdGkgPSBqai0xOyBicmVhaztcblx0XHRcdGNhc2UgJ0cnOiBvdXRbaV0udCA9ICd0Jzsgb3V0W2ldLnYgPSBTU0ZfZ2VuZXJhbCh2LG9wdHMpOyBicmVhaztcblx0XHR9XG5cdH1cblx0dmFyIHZ2ID0gXCJcIiwgbXl2LCBvc3RyO1xuXHRpZihuc3RyLmxlbmd0aCA+IDApIHtcblx0XHRpZihuc3RyLmNoYXJDb2RlQXQoMCkgPT0gNDApIC8qICcoJyAqLyB7XG5cdFx0XHRteXYgPSAodjwwJiZuc3RyLmNoYXJDb2RlQXQoMCkgPT09IDQ1ID8gLXYgOiB2KTtcblx0XHRcdG9zdHIgPSB3cml0ZV9udW0oJ24nLCBuc3RyLCBteXYpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRteXYgPSAodjwwICYmIGZsZW4gPiAxID8gLXYgOiB2KTtcblx0XHRcdG9zdHIgPSB3cml0ZV9udW0oJ24nLCBuc3RyLCBteXYpO1xuXHRcdFx0aWYobXl2IDwgMCAmJiBvdXRbMF0gJiYgb3V0WzBdLnQgPT0gJ3QnKSB7XG5cdFx0XHRcdG9zdHIgPSBvc3RyLnN1YnN0cigxKTtcblx0XHRcdFx0b3V0WzBdLnYgPSBcIi1cIiArIG91dFswXS52O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRqaj1vc3RyLmxlbmd0aC0xO1xuXHRcdHZhciBkZWNwdCA9IG91dC5sZW5ndGg7XG5cdFx0Zm9yKGk9MDsgaSA8IG91dC5sZW5ndGg7ICsraSkgaWYob3V0W2ldICE9IG51bGwgJiYgb3V0W2ldLnQgIT0gJ3QnICYmIG91dFtpXS52LmluZGV4T2YoXCIuXCIpID4gLTEpIHsgZGVjcHQgPSBpOyBicmVhazsgfVxuXHRcdHZhciBsYXN0aT1vdXQubGVuZ3RoO1xuXHRcdGlmKGRlY3B0ID09PSBvdXQubGVuZ3RoICYmIG9zdHIuaW5kZXhPZihcIkVcIikgPT09IC0xKSB7XG5cdFx0XHRmb3IoaT1vdXQubGVuZ3RoLTE7IGk+PSAwOy0taSkge1xuXHRcdFx0XHRpZihvdXRbaV0gPT0gbnVsbCB8fCAnbj8nLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSkgY29udGludWU7XG5cdFx0XHRcdGlmKGpqPj1vdXRbaV0udi5sZW5ndGgtMSkgeyBqaiAtPSBvdXRbaV0udi5sZW5ndGg7IG91dFtpXS52ID0gb3N0ci5zdWJzdHIoamorMSwgb3V0W2ldLnYubGVuZ3RoKTsgfVxuXHRcdFx0XHRlbHNlIGlmKGpqIDwgMCkgb3V0W2ldLnYgPSBcIlwiO1xuXHRcdFx0XHRlbHNlIHsgb3V0W2ldLnYgPSBvc3RyLnN1YnN0cigwLCBqaisxKTsgamogPSAtMTsgfVxuXHRcdFx0XHRvdXRbaV0udCA9ICd0Jztcblx0XHRcdFx0bGFzdGkgPSBpO1xuXHRcdFx0fVxuXHRcdFx0aWYoamo+PTAgJiYgbGFzdGk8b3V0Lmxlbmd0aCkgb3V0W2xhc3RpXS52ID0gb3N0ci5zdWJzdHIoMCxqaisxKSArIG91dFtsYXN0aV0udjtcblx0XHR9XG5cdFx0ZWxzZSBpZihkZWNwdCAhPT0gb3V0Lmxlbmd0aCAmJiBvc3RyLmluZGV4T2YoXCJFXCIpID09PSAtMSkge1xuXHRcdFx0amogPSBvc3RyLmluZGV4T2YoXCIuXCIpLTE7XG5cdFx0XHRmb3IoaT1kZWNwdDsgaT49IDA7IC0taSkge1xuXHRcdFx0XHRpZihvdXRbaV0gPT0gbnVsbCB8fCAnbj8nLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSkgY29udGludWU7XG5cdFx0XHRcdGo9b3V0W2ldLnYuaW5kZXhPZihcIi5cIik+LTEmJmk9PT1kZWNwdD9vdXRbaV0udi5pbmRleE9mKFwiLlwiKS0xOm91dFtpXS52Lmxlbmd0aC0xO1xuXHRcdFx0XHR2diA9IG91dFtpXS52LnN1YnN0cihqKzEpO1xuXHRcdFx0XHRmb3IoOyBqPj0wOyAtLWopIHtcblx0XHRcdFx0XHRpZihqaj49MCAmJiAob3V0W2ldLnYuY2hhckF0KGopID09PSBcIjBcIiB8fCBvdXRbaV0udi5jaGFyQXQoaikgPT09IFwiI1wiKSkgdnYgPSBvc3RyLmNoYXJBdChqai0tKSArIHZ2O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dFtpXS52ID0gdnY7XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnO1xuXHRcdFx0XHRsYXN0aSA9IGk7XG5cdFx0XHR9XG5cdFx0XHRpZihqaj49MCAmJiBsYXN0aTxvdXQubGVuZ3RoKSBvdXRbbGFzdGldLnYgPSBvc3RyLnN1YnN0cigwLGpqKzEpICsgb3V0W2xhc3RpXS52O1xuXHRcdFx0amogPSBvc3RyLmluZGV4T2YoXCIuXCIpKzE7XG5cdFx0XHRmb3IoaT1kZWNwdDsgaTxvdXQubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYob3V0W2ldID09IG51bGwgfHwgKCduPygnLmluZGV4T2Yob3V0W2ldLnQpID09PSAtMSAmJiBpICE9PSBkZWNwdCkpIGNvbnRpbnVlO1xuXHRcdFx0XHRqPW91dFtpXS52LmluZGV4T2YoXCIuXCIpPi0xJiZpPT09ZGVjcHQ/b3V0W2ldLnYuaW5kZXhPZihcIi5cIikrMTowO1xuXHRcdFx0XHR2diA9IG91dFtpXS52LnN1YnN0cigwLGopO1xuXHRcdFx0XHRmb3IoOyBqPG91dFtpXS52Lmxlbmd0aDsgKytqKSB7XG5cdFx0XHRcdFx0aWYoamo8b3N0ci5sZW5ndGgpIHZ2ICs9IG9zdHIuY2hhckF0KGpqKyspO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG91dFtpXS52ID0gdnY7XG5cdFx0XHRcdG91dFtpXS50ID0gJ3QnO1xuXHRcdFx0XHRsYXN0aSA9IGk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGZvcihpPTA7IGk8b3V0Lmxlbmd0aDsgKytpKSBpZihvdXRbaV0gIT0gbnVsbCAmJiAnbj8nLmluZGV4T2Yob3V0W2ldLnQpPi0xKSB7XG5cdFx0bXl2ID0gKGZsZW4gPjEgJiYgdiA8IDAgJiYgaT4wICYmIG91dFtpLTFdLnYgPT09IFwiLVwiID8gLXY6dik7XG5cdFx0b3V0W2ldLnYgPSB3cml0ZV9udW0ob3V0W2ldLnQsIG91dFtpXS52LCBteXYpO1xuXHRcdG91dFtpXS50ID0gJ3QnO1xuXHR9XG5cdHZhciByZXR2YWwgPSBcIlwiO1xuXHRmb3IoaT0wOyBpICE9PSBvdXQubGVuZ3RoOyArK2kpIGlmKG91dFtpXSAhPSBudWxsKSByZXR2YWwgKz0gb3V0W2ldLnY7XG5cdHJldHVybiByZXR2YWw7XG59XG5cbnZhciBjZnJlZ2V4MiA9IC9cXFsoPXw+Wz1dP3w8Wz49XT8pKC0/XFxkKyg/OlxcLlxcZCopPylcXF0vO1xuZnVuY3Rpb24gY2hrY29uZCh2LCBycikge1xuXHRpZihyciA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cdHZhciB0aHJlc2ggPSBwYXJzZUZsb2F0KHJyWzJdKTtcblx0c3dpdGNoKHJyWzFdKSB7XG5cdFx0Y2FzZSBcIj1cIjogIGlmKHYgPT0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIj5cIjogIGlmKHYgPiAgdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjxcIjogIGlmKHYgPCAgdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjw+XCI6IGlmKHYgIT0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIj49XCI6IGlmKHYgPj0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdFx0Y2FzZSBcIjw9XCI6IGlmKHYgPD0gdGhyZXNoKSByZXR1cm4gdHJ1ZTsgYnJlYWs7XG5cdH1cblx0cmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gY2hvb3NlX2ZtdChmLyo6c3RyaW5nKi8sIHYvKjphbnkqLykge1xuXHR2YXIgZm10ID0gU1NGX3NwbGl0X2ZtdChmKTtcblx0dmFyIGwgPSBmbXQubGVuZ3RoLCBsYXQgPSBmbXRbbC0xXS5pbmRleE9mKFwiQFwiKTtcblx0aWYobDw0ICYmIGxhdD4tMSkgLS1sO1xuXHRpZihmbXQubGVuZ3RoID4gNCkgdGhyb3cgbmV3IEVycm9yKFwiY2Fubm90IGZpbmQgcmlnaHQgZm9ybWF0IGZvciB8XCIgKyBmbXQuam9pbihcInxcIikgKyBcInxcIik7XG5cdGlmKHR5cGVvZiB2ICE9PSBcIm51bWJlclwiKSByZXR1cm4gWzQsIGZtdC5sZW5ndGggPT09IDQgfHwgbGF0Pi0xP2ZtdFtmbXQubGVuZ3RoLTFdOlwiQFwiXTtcblx0c3dpdGNoKGZtdC5sZW5ndGgpIHtcblx0XHRjYXNlIDE6IGZtdCA9IGxhdD4tMSA/IFtcIkdlbmVyYWxcIiwgXCJHZW5lcmFsXCIsIFwiR2VuZXJhbFwiLCBmbXRbMF1dIDogW2ZtdFswXSwgZm10WzBdLCBmbXRbMF0sIFwiQFwiXTsgYnJlYWs7XG5cdFx0Y2FzZSAyOiBmbXQgPSBsYXQ+LTEgPyBbZm10WzBdLCBmbXRbMF0sIGZtdFswXSwgZm10WzFdXSA6IFtmbXRbMF0sIGZtdFsxXSwgZm10WzBdLCBcIkBcIl07IGJyZWFrO1xuXHRcdGNhc2UgMzogZm10ID0gbGF0Pi0xID8gW2ZtdFswXSwgZm10WzFdLCBmbXRbMF0sIGZtdFsyXV0gOiBbZm10WzBdLCBmbXRbMV0sIGZtdFsyXSwgXCJAXCJdOyBicmVhaztcblx0XHRjYXNlIDQ6IGJyZWFrO1xuXHR9XG5cdHZhciBmZiA9IHYgPiAwID8gZm10WzBdIDogdiA8IDAgPyBmbXRbMV0gOiBmbXRbMl07XG5cdGlmKGZtdFswXS5pbmRleE9mKFwiW1wiKSA9PT0gLTEgJiYgZm10WzFdLmluZGV4T2YoXCJbXCIpID09PSAtMSkgcmV0dXJuIFtsLCBmZl07XG5cdGlmKGZtdFswXS5tYXRjaCgvXFxbWz08Pl0vKSAhPSBudWxsIHx8IGZtdFsxXS5tYXRjaCgvXFxbWz08Pl0vKSAhPSBudWxsKSB7XG5cdFx0dmFyIG0xID0gZm10WzBdLm1hdGNoKGNmcmVnZXgyKTtcblx0XHR2YXIgbTIgPSBmbXRbMV0ubWF0Y2goY2ZyZWdleDIpO1xuXHRcdHJldHVybiBjaGtjb25kKHYsIG0xKSA/IFtsLCBmbXRbMF1dIDogY2hrY29uZCh2LCBtMikgPyBbbCwgZm10WzFdXSA6IFtsLCBmbXRbbTEgIT0gbnVsbCAmJiBtMiAhPSBudWxsID8gMiA6IDFdXTtcblx0fVxuXHRyZXR1cm4gW2wsIGZmXTtcbn1cbmZ1bmN0aW9uIFNTRl9mb3JtYXQoZm10Lyo6c3RyaW5nfG51bWJlciovLHYvKjphbnkqLyxvLyo6P2FueSovKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IHt9O1xuXHR2YXIgc2ZtdCA9IFwiXCI7XG5cdHN3aXRjaCh0eXBlb2YgZm10KSB7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOlxuXHRcdFx0aWYoZm10ID09IFwibS9kL3l5XCIgJiYgby5kYXRlTkYpIHNmbXQgPSBvLmRhdGVORjtcblx0XHRcdGVsc2Ugc2ZtdCA9IGZtdDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJudW1iZXJcIjpcblx0XHRcdGlmKGZtdCA9PSAxNCAmJiBvLmRhdGVORikgc2ZtdCA9IG8uZGF0ZU5GO1xuXHRcdFx0ZWxzZSBzZm10ID0gKG8udGFibGUgIT0gbnVsbCA/IChvLnRhYmxlLyo6YW55Ki8pIDogdGFibGVfZm10KVtmbXRdO1xuXHRcdFx0aWYoc2ZtdCA9PSBudWxsKSBzZm10ID0gKG8udGFibGUgJiYgby50YWJsZVtTU0ZfZGVmYXVsdF9tYXBbZm10XV0pIHx8IHRhYmxlX2ZtdFtTU0ZfZGVmYXVsdF9tYXBbZm10XV07XG5cdFx0XHRpZihzZm10ID09IG51bGwpIHNmbXQgPSBTU0ZfZGVmYXVsdF9zdHJbZm10XSB8fCBcIkdlbmVyYWxcIjtcblx0XHRcdGJyZWFrO1xuXHR9XG5cdGlmKFNTRl9pc2dlbmVyYWwoc2ZtdCwwKSkgcmV0dXJuIFNTRl9nZW5lcmFsKHYsIG8pO1xuXHRpZih2IGluc3RhbmNlb2YgRGF0ZSkgdiA9IGRhdGVudW1fbG9jYWwodiwgby5kYXRlMTkwNCk7XG5cdHZhciBmID0gY2hvb3NlX2ZtdChzZm10LCB2KTtcblx0aWYoU1NGX2lzZ2VuZXJhbChmWzFdKSkgcmV0dXJuIFNTRl9nZW5lcmFsKHYsIG8pO1xuXHRpZih2ID09PSB0cnVlKSB2ID0gXCJUUlVFXCI7IGVsc2UgaWYodiA9PT0gZmFsc2UpIHYgPSBcIkZBTFNFXCI7XG5cdGVsc2UgaWYodiA9PT0gXCJcIiB8fCB2ID09IG51bGwpIHJldHVybiBcIlwiO1xuXHRyZXR1cm4gZXZhbF9mbXQoZlsxXSwgdiwgbywgZlswXSk7XG59XG5mdW5jdGlvbiBTU0ZfbG9hZChmbXQvKjpzdHJpbmcqLywgaWR4Lyo6P251bWJlciovKS8qOm51bWJlciovIHtcblx0aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykge1xuXHRcdGlkeCA9ICtpZHggfHwgLTE7XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCAweDAxODg7ICsraSkge1xuLyo6OmlmKHR5cGVvZiBpZHggIT0gJ251bWJlcicpIHJldHVybiAweDE4ODsgKi9cblx0XHRcdGlmKHRhYmxlX2ZtdFtpXSA9PSB1bmRlZmluZWQpIHsgaWYoaWR4IDwgMCkgaWR4ID0gaTsgY29udGludWU7IH1cblx0XHRcdGlmKHRhYmxlX2ZtdFtpXSA9PSBmbXQpIHsgaWR4ID0gaTsgYnJlYWs7IH1cblx0XHR9XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHRcdGlmKGlkeCA8IDApIGlkeCA9IDB4MTg3O1xuXHR9XG4vKjo6aWYodHlwZW9mIGlkeCAhPSAnbnVtYmVyJykgcmV0dXJuIDB4MTg4OyAqL1xuXHR0YWJsZV9mbXRbaWR4XSA9IGZtdDtcblx0cmV0dXJuIGlkeDtcbn1cbmZ1bmN0aW9uIFNTRl9sb2FkX3RhYmxlKHRibC8qOlNTRlRhYmxlKi8pLyo6dm9pZCovIHtcblx0Zm9yKHZhciBpPTA7IGkhPTB4MDE4ODsgKytpKVxuXHRcdGlmKHRibFtpXSAhPT0gdW5kZWZpbmVkKSBTU0ZfbG9hZCh0YmxbaV0sIGkpO1xufVxuXG5mdW5jdGlvbiBtYWtlX3NzZigpIHtcblx0dGFibGVfZm10ID0gU1NGX2luaXRfdGFibGUoKTtcbn1cblxudmFyIFNTRiA9IHtcblx0Zm9ybWF0OiBTU0ZfZm9ybWF0LFxuXHRsb2FkOiBTU0ZfbG9hZCxcblx0X3RhYmxlOiB0YWJsZV9mbXQsXG5cdGxvYWRfdGFibGU6IFNTRl9sb2FkX3RhYmxlLFxuXHRwYXJzZV9kYXRlX2NvZGU6IFNTRl9wYXJzZV9kYXRlX2NvZGUsXG5cdGlzX2RhdGU6IGZtdF9pc19kYXRlLFxuXHRnZXRfdGFibGU6IGZ1bmN0aW9uIGdldF90YWJsZSgpIHsgcmV0dXJuIFNTRi5fdGFibGUgPSB0YWJsZV9mbXQ7IH1cbn07XG5cbnZhciBTU0ZJbXBsaWNpdC8qe1tudW1iZXJdOnN0cmluZ30qLyA9ICh7XG5cdFwiNVwiOiAnXCIkXCIjLCMjMF8pO1xcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI2XCI6ICdcIiRcIiMsIyMwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiN1wiOiAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCI4XCI6ICdcIiRcIiMsIyMwLjAwXyk7W1JlZF1cXFxcKFwiJFwiIywjIzAuMDBcXFxcKScsXG5cdFwiMjNcIjogJ0dlbmVyYWwnLCBcIjI0XCI6ICdHZW5lcmFsJywgXCIyNVwiOiAnR2VuZXJhbCcsIFwiMjZcIjogJ0dlbmVyYWwnLFxuXHRcIjI3XCI6ICdtL2QveXknLCBcIjI4XCI6ICdtL2QveXknLCBcIjI5XCI6ICdtL2QveXknLCBcIjMwXCI6ICdtL2QveXknLCBcIjMxXCI6ICdtL2QveXknLFxuXHRcIjMyXCI6ICdoOm1tOnNzJywgXCIzM1wiOiAnaDptbTpzcycsIFwiMzRcIjogJ2g6bW06c3MnLCBcIjM1XCI6ICdoOm1tOnNzJyxcblx0XCIzNlwiOiAnbS9kL3l5Jyxcblx0XCI0MVwiOiAnXygqICMsIyMwXyk7XygqIFxcKCMsIyMwXFwpO18oKiBcIi1cIl8pO18oQF8pJyxcblx0XCI0MlwiOiAnXyhcIiRcIiogIywjIzBfKTtfKFwiJFwiKiBcXCgjLCMjMFxcKTtfKFwiJFwiKiBcIi1cIl8pO18oQF8pJyxcblx0XCI0M1wiOiAnXygqICMsIyMwLjAwXyk7XygqIFxcKCMsIyMwLjAwXFwpO18oKiBcIi1cIj8/Xyk7XyhAXyknLFxuXHRcIjQ0XCI6ICdfKFwiJFwiKiAjLCMjMC4wMF8pO18oXCIkXCIqIFxcKCMsIyMwLjAwXFwpO18oXCIkXCIqIFwiLVwiPz9fKTtfKEBfKScsXG5cdFwiNTBcIjogJ20vZC95eScsIFwiNTFcIjogJ20vZC95eScsIFwiNTJcIjogJ20vZC95eScsIFwiNTNcIjogJ20vZC95eScsIFwiNTRcIjogJ20vZC95eScsXG5cdFwiNTVcIjogJ20vZC95eScsIFwiNTZcIjogJ20vZC95eScsIFwiNTdcIjogJ20vZC95eScsIFwiNThcIjogJ20vZC95eScsXG5cdFwiNTlcIjogJzAnLFxuXHRcIjYwXCI6ICcwLjAwJyxcblx0XCI2MVwiOiAnIywjIzAnLFxuXHRcIjYyXCI6ICcjLCMjMC4wMCcsXG5cdFwiNjNcIjogJ1wiJFwiIywjIzBfKTtcXFxcKFwiJFwiIywjIzBcXFxcKScsXG5cdFwiNjRcIjogJ1wiJFwiIywjIzBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMFxcXFwpJyxcblx0XCI2NVwiOiAnXCIkXCIjLCMjMC4wMF8pO1xcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XCI2NlwiOiAnXCIkXCIjLCMjMC4wMF8pO1tSZWRdXFxcXChcIiRcIiMsIyMwLjAwXFxcXCknLFxuXHRcIjY3XCI6ICcwJScsXG5cdFwiNjhcIjogJzAuMDAlJyxcblx0XCI2OVwiOiAnIyA/Lz8nLFxuXHRcIjcwXCI6ICcjID8/Lz8/Jyxcblx0XCI3MVwiOiAnbS9kL3l5Jyxcblx0XCI3MlwiOiAnbS9kL3l5Jyxcblx0XCI3M1wiOiAnZC1tbW0teXknLFxuXHRcIjc0XCI6ICdkLW1tbScsXG5cdFwiNzVcIjogJ21tbS15eScsXG5cdFwiNzZcIjogJ2g6bW0nLFxuXHRcIjc3XCI6ICdoOm1tOnNzJyxcblx0XCI3OFwiOiAnbS9kL3l5IGg6bW0nLFxuXHRcIjc5XCI6ICdtbTpzcycsXG5cdFwiODBcIjogJ1toXTptbTpzcycsXG5cdFwiODFcIjogJ21tc3MuMCdcbn0vKjphbnkqLyk7XG5cbi8qIGRhdGVORiBwYXJzZSBUT0RPOiBtb3ZlIHRvIFNTRiAqL1xudmFyIGRhdGVORnJlZ2V4ID0gL1tkRF0rfFttTV0rfFt5WWVFXSt8W0hoXSt8W1NzXSsvZztcbmZ1bmN0aW9uIGRhdGVORl9yZWdleChkYXRlTkYvKjpzdHJpbmd8bnVtYmVyKi8pLyo6UmVnRXhwKi8ge1xuXHR2YXIgZm10ID0gdHlwZW9mIGRhdGVORiA9PSBcIm51bWJlclwiID8gdGFibGVfZm10W2RhdGVORl0gOiBkYXRlTkY7XG5cdGZtdCA9IGZtdC5yZXBsYWNlKGRhdGVORnJlZ2V4LCBcIihcXFxcZCspXCIpO1xuXHRyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIiArIGZtdCArIFwiJFwiKTtcbn1cbmZ1bmN0aW9uIGRhdGVORl9maXgoc3RyLyo6c3RyaW5nKi8sIGRhdGVORi8qOnN0cmluZyovLCBtYXRjaC8qOkFycmF5PHN0cmluZz4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBZID0gLTEsIG0gPSAtMSwgZCA9IC0xLCBIID0gLTEsIE0gPSAtMSwgUyA9IC0xO1xuXHQoZGF0ZU5GLm1hdGNoKGRhdGVORnJlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24obiwgaSkge1xuXHRcdHZhciB2ID0gcGFyc2VJbnQobWF0Y2hbaSsxXSwgMTApO1xuXHRcdHN3aXRjaChuLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApKSB7XG5cdFx0XHRjYXNlICd5JzogWSA9IHY7IGJyZWFrOyBjYXNlICdkJzogZCA9IHY7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnaCc6IEggPSB2OyBicmVhazsgY2FzZSAncyc6IFMgPSB2OyBicmVhaztcblx0XHRcdGNhc2UgJ20nOiBpZihIID49IDApIE0gPSB2OyBlbHNlIG0gPSB2OyBicmVhaztcblx0XHR9XG5cdH0pO1xuXHRpZihTID49IDAgJiYgTSA9PSAtMSAmJiBtID49IDApIHsgTSA9IG07IG0gPSAtMTsgfVxuXHR2YXIgZGF0ZXN0ciA9ICgoXCJcIiArIChZPj0wP1k6IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSkpLnNsaWNlKC00KSArIFwiLVwiICsgKFwiMDBcIiArIChtPj0xP206MSkpLnNsaWNlKC0yKSArIFwiLVwiICsgKFwiMDBcIiArIChkPj0xP2Q6MSkpLnNsaWNlKC0yKSk7XG5cdGlmKGRhdGVzdHIubGVuZ3RoID09IDcpIGRhdGVzdHIgPSBcIjBcIiArIGRhdGVzdHI7XG5cdGlmKGRhdGVzdHIubGVuZ3RoID09IDgpIGRhdGVzdHIgPSBcIjIwXCIgKyBkYXRlc3RyO1xuXHR2YXIgdGltZXN0ciA9ICgoXCIwMFwiICsgKEg+PTA/SDowKSkuc2xpY2UoLTIpICsgXCI6XCIgKyAoXCIwMFwiICsgKE0+PTA/TTowKSkuc2xpY2UoLTIpICsgXCI6XCIgKyAoXCIwMFwiICsgKFM+PTA/UzowKSkuc2xpY2UoLTIpKTtcblx0aWYoSCA9PSAtMSAmJiBNID09IC0xICYmIFMgPT0gLTEpIHJldHVybiBkYXRlc3RyO1xuXHRpZihZID09IC0xICYmIG0gPT0gLTEgJiYgZCA9PSAtMSkgcmV0dXJuIHRpbWVzdHI7XG5cdHJldHVybiBkYXRlc3RyICsgXCJUXCIgKyB0aW1lc3RyO1xufVxuXG4vKjo6XG5kZWNsYXJlIHZhciBSZWFkU2hpZnQ6YW55O1xuZGVjbGFyZSB2YXIgQ2hlY2tGaWVsZDphbnk7XG5kZWNsYXJlIHZhciBwcmVwX2Jsb2I6YW55O1xuZGVjbGFyZSB2YXIgX19yZWFkVUludDMyTEU6YW55O1xuZGVjbGFyZSB2YXIgX19yZWFkSW50MzJMRTphbnk7XG5kZWNsYXJlIHZhciBfX3RvQnVmZmVyOmFueTtcbmRlY2xhcmUgdmFyIF9fdXRmMTZsZTphbnk7XG5kZWNsYXJlIHZhciBiY29uY2F0OmFueTtcbmRlY2xhcmUgdmFyIHMyYTphbnk7XG5kZWNsYXJlIHZhciBjaHIwOmFueTtcbmRlY2xhcmUgdmFyIGNocjE6YW55O1xuZGVjbGFyZSB2YXIgaGFzX2J1Zjpib29sZWFuO1xuZGVjbGFyZSB2YXIgbmV3X2J1Zjphbnk7XG5kZWNsYXJlIHZhciBuZXdfcmF3X2J1Zjphbnk7XG5kZWNsYXJlIHZhciBuZXdfdW5zYWZlX2J1Zjphbnk7XG5kZWNsYXJlIHZhciBCdWZmZXJfZnJvbTphbnk7XG4qL1xuLyogY2ZiLmpzIChDKSAyMDEzLXByZXNlbnQgU2hlZXRKUyAtLSBodHRwOi8vc2hlZXRqcy5jb20gKi9cbi8qIHZpbTogc2V0IHRzPTI6ICovXG4vKmpzaGludCBlcW51bGw6dHJ1ZSAqL1xuLypleHBvcnRlZCBDRkIgKi9cbi8qZ2xvYmFsIFVpbnQ4QXJyYXk6ZmFsc2UsIFVpbnQxNkFycmF5OmZhbHNlICovXG5cbi8qOjpcbnR5cGUgU2VjdG9yRW50cnkgPSB7XG5cdG5hbWU/OnN0cmluZztcblx0bm9kZXM/OkFycmF5PG51bWJlcj47XG5cdGRhdGE6UmF3Qnl0ZXM7XG59O1xudHlwZSBTZWN0b3JMaXN0ID0ge1xuXHRbazpzdHJpbmd8bnVtYmVyXTpTZWN0b3JFbnRyeTtcblx0bmFtZTo/c3RyaW5nO1xuXHRmYXRfYWRkcnM6QXJyYXk8bnVtYmVyPjtcblx0c3N6Om51bWJlcjtcbn1cbnR5cGUgQ0ZCRmlsZXMgPSB7W246c3RyaW5nXTpDRkJFbnRyeX07XG4qL1xuLyogY3JjMzIuanMgKEMpIDIwMTQtcHJlc2VudCBTaGVldEpTIC0tIGh0dHA6Ly9zaGVldGpzLmNvbSAqL1xuLyogdmltOiBzZXQgdHM9MjogKi9cbi8qZXhwb3J0ZWQgQ1JDMzIgKi9cbnZhciBDUkMzMiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG52YXIgQ1JDMzIgPSB7fTtcbkNSQzMyLnZlcnNpb24gPSAnMS4yLjAnO1xuLyogc2VlIHBlcmYvY3JjMzJ0YWJsZS5qcyAqL1xuLypnbG9iYWwgSW50MzJBcnJheSAqL1xuZnVuY3Rpb24gc2lnbmVkX2NyY190YWJsZSgpLyo6YW55Ki8ge1xuXHR2YXIgYyA9IDAsIHRhYmxlLyo6QXJyYXk8bnVtYmVyPiovID0gbmV3IEFycmF5KDI1Nik7XG5cblx0Zm9yKHZhciBuID0wOyBuICE9IDI1NjsgKytuKXtcblx0XHRjID0gbjtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHRjID0gKChjJjEpID8gKC0zMDY2NzQ5MTIgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcblx0XHR0YWJsZVtuXSA9IGM7XG5cdH1cblxuXHRyZXR1cm4gdHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnID8gbmV3IEludDMyQXJyYXkodGFibGUpIDogdGFibGU7XG59XG5cbnZhciBUMCA9IHNpZ25lZF9jcmNfdGFibGUoKTtcbmZ1bmN0aW9uIHNsaWNlX2J5XzE2X3RhYmxlcyhUKSB7XG5cdHZhciBjID0gMCwgdiA9IDAsIG4gPSAwLCB0YWJsZS8qOkFycmF5PG51bWJlcj4qLyA9IHR5cGVvZiBJbnQzMkFycmF5ICE9PSAndW5kZWZpbmVkJyA/IG5ldyBJbnQzMkFycmF5KDQwOTYpIDogbmV3IEFycmF5KDQwOTYpIDtcblxuXHRmb3IobiA9IDA7IG4gIT0gMjU2OyArK24pIHRhYmxlW25dID0gVFtuXTtcblx0Zm9yKG4gPSAwOyBuICE9IDI1NjsgKytuKSB7XG5cdFx0diA9IFRbbl07XG5cdFx0Zm9yKGMgPSAyNTYgKyBuOyBjIDwgNDA5NjsgYyArPSAyNTYpIHYgPSB0YWJsZVtjXSA9ICh2ID4+PiA4KSBeIFRbdiAmIDB4RkZdO1xuXHR9XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yKG4gPSAxOyBuICE9IDE2OyArK24pIG91dFtuIC0gMV0gPSB0eXBlb2YgSW50MzJBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyB0YWJsZS5zdWJhcnJheShuICogMjU2LCBuICogMjU2ICsgMjU2KSA6IHRhYmxlLnNsaWNlKG4gKiAyNTYsIG4gKiAyNTYgKyAyNTYpO1xuXHRyZXR1cm4gb3V0O1xufVxudmFyIFRUID0gc2xpY2VfYnlfMTZfdGFibGVzKFQwKTtcbnZhciBUMSA9IFRUWzBdLCAgVDIgPSBUVFsxXSwgIFQzID0gVFRbMl0sICBUNCA9IFRUWzNdLCAgVDUgPSBUVFs0XTtcbnZhciBUNiA9IFRUWzVdLCAgVDcgPSBUVFs2XSwgIFQ4ID0gVFRbN10sICBUOSA9IFRUWzhdLCAgVGEgPSBUVFs5XTtcbnZhciBUYiA9IFRUWzEwXSwgVGMgPSBUVFsxMV0sIFRkID0gVFRbMTJdLCBUZSA9IFRUWzEzXSwgVGYgPSBUVFsxNF07XG5mdW5jdGlvbiBjcmMzMl9ic3RyKGJzdHIvKjpzdHJpbmcqLywgc2VlZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIEMgPSBzZWVkLyo6OiA/IDAgOiAwICovIF4gLTE7XG5cdGZvcih2YXIgaSA9IDAsIEwgPSBic3RyLmxlbmd0aDsgaSA8IEw7KSBDID0gKEM+Pj44KSBeIFQwWyhDXmJzdHIuY2hhckNvZGVBdChpKyspKSYweEZGXTtcblx0cmV0dXJuIH5DO1xufVxuXG5mdW5jdGlvbiBjcmMzMl9idWYoQi8qOlVpbnQ4QXJyYXl8QXJyYXk8bnVtYmVyPiovLCBzZWVkLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgQyA9IHNlZWQvKjo6ID8gMCA6IDAgKi8gXiAtMSwgTCA9IEIubGVuZ3RoIC0gMTUsIGkgPSAwO1xuXHRmb3IoOyBpIDwgTDspIEMgPVxuXHRcdFRmW0JbaSsrXSBeIChDICYgMjU1KV0gXlxuXHRcdFRlW0JbaSsrXSBeICgoQyA+PiA4KSAmIDI1NSldIF5cblx0XHRUZFtCW2krK10gXiAoKEMgPj4gMTYpICYgMjU1KV0gXlxuXHRcdFRjW0JbaSsrXSBeIChDID4+PiAyNCldIF5cblx0XHRUYltCW2krK11dIF4gVGFbQltpKytdXSBeIFQ5W0JbaSsrXV0gXiBUOFtCW2krK11dIF5cblx0XHRUN1tCW2krK11dIF4gVDZbQltpKytdXSBeIFQ1W0JbaSsrXV0gXiBUNFtCW2krK11dIF5cblx0XHRUM1tCW2krK11dIF4gVDJbQltpKytdXSBeIFQxW0JbaSsrXV0gXiBUMFtCW2krK11dO1xuXHRMICs9IDE1O1xuXHR3aGlsZShpIDwgTCkgQyA9IChDPj4+OCkgXiBUMFsoQ15CW2krK10pJjB4RkZdO1xuXHRyZXR1cm4gfkM7XG59XG5cbmZ1bmN0aW9uIGNyYzMyX3N0cihzdHIvKjpzdHJpbmcqLywgc2VlZC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIEMgPSBzZWVkIF4gLTE7XG5cdGZvcih2YXIgaSA9IDAsIEwgPSBzdHIubGVuZ3RoLCBjID0gMCwgZCA9IDA7IGkgPCBMOykge1xuXHRcdGMgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmKGMgPCAweDgwKSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDXmMpJjB4RkZdO1xuXHRcdH0gZWxzZSBpZihjIDwgMHg4MDApIHtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTkyfCgoYz4+NikmMzEpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoYyY2MykpKSYweEZGXTtcblx0XHR9IGVsc2UgaWYoYyA+PSAweEQ4MDAgJiYgYyA8IDB4RTAwMCkge1xuXHRcdFx0YyA9IChjJjEwMjMpKzY0OyBkID0gc3RyLmNoYXJDb2RlQXQoaSsrKSYxMDIzO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgyNDB8KChjPj44KSY3KSkpJjB4RkZdO1xuXHRcdFx0QyA9IChDPj4+OCkgXiBUMFsoQyBeICgxMjh8KChjPj4yKSY2MykpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoZD4+NikmMTUpfCgoYyYzKTw8NCkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fChkJjYzKSkpJjB4RkZdO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDIyNHwoKGM+PjEyKSYxNSkpKSYweEZGXTtcblx0XHRcdEMgPSAoQz4+PjgpIF4gVDBbKEMgXiAoMTI4fCgoYz4+NikmNjMpKSkmMHhGRl07XG5cdFx0XHRDID0gKEM+Pj44KSBeIFQwWyhDIF4gKDEyOHwoYyY2MykpKSYweEZGXTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIH5DO1xufVxuQ1JDMzIudGFibGUgPSBUMDtcbkNSQzMyLmJzdHIgPSBjcmMzMl9ic3RyO1xuQ1JDMzIuYnVmID0gY3JjMzJfYnVmO1xuQ1JDMzIuc3RyID0gY3JjMzJfc3RyO1xucmV0dXJuIENSQzMyO1xufSkoKTtcbi8qIFtNUy1DRkJdIHYyMDE3MTIwMSAqL1xudmFyIENGQiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gX0NGQigpe1xudmFyIGV4cG9ydHMgPSB7fTtcbmV4cG9ydHMudmVyc2lvbiA9ICcxLjIuMSc7XG4vKiBbTVMtQ0ZCXSAyLjYuNCAqL1xuZnVuY3Rpb24gbmFtZWNtcChsLyo6c3RyaW5nKi8sIHIvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdHZhciBMID0gbC5zcGxpdChcIi9cIiksIFIgPSByLnNwbGl0KFwiL1wiKTtcblx0Zm9yKHZhciBpID0gMCwgYyA9IDAsIFogPSBNYXRoLm1pbihMLmxlbmd0aCwgUi5sZW5ndGgpOyBpIDwgWjsgKytpKSB7XG5cdFx0aWYoKGMgPSBMW2ldLmxlbmd0aCAtIFJbaV0ubGVuZ3RoKSkgcmV0dXJuIGM7XG5cdFx0aWYoTFtpXSAhPSBSW2ldKSByZXR1cm4gTFtpXSA8IFJbaV0gPyAtMSA6IDE7XG5cdH1cblx0cmV0dXJuIEwubGVuZ3RoIC0gUi5sZW5ndGg7XG59XG5mdW5jdGlvbiBkaXJuYW1lKHAvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHAuY2hhckF0KHAubGVuZ3RoIC0gMSkgPT0gXCIvXCIpIHJldHVybiAocC5zbGljZSgwLC0xKS5pbmRleE9mKFwiL1wiKSA9PT0gLTEpID8gcCA6IGRpcm5hbWUocC5zbGljZSgwLCAtMSkpO1xuXHR2YXIgYyA9IHAubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRyZXR1cm4gKGMgPT09IC0xKSA/IHAgOiBwLnNsaWNlKDAsIGMrMSk7XG59XG5cbmZ1bmN0aW9uIGZpbGVuYW1lKHAvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHAuY2hhckF0KHAubGVuZ3RoIC0gMSkgPT0gXCIvXCIpIHJldHVybiBmaWxlbmFtZShwLnNsaWNlKDAsIC0xKSk7XG5cdHZhciBjID0gcC5sYXN0SW5kZXhPZihcIi9cIik7XG5cdHJldHVybiAoYyA9PT0gLTEpID8gcCA6IHAuc2xpY2UoYysxKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG4vKiBET1MgRGF0ZSBmb3JtYXQ6XG4gICBoaWdofFlZWVlZWVltLm1tbWRkZGRkLkhISEhITU1NLk1NTVNTU1NTfGxvd1xuICAgYWRkIDE5ODAgdG8gc3RvcmVkIHllYXJcbiAgIHN0b3JlZCBzZWNvbmQgc2hvdWxkIGJlIGRvdWJsZWRcbiovXG5cbi8qIHdyaXRlIEpTIGRhdGUgdG8gYnVmIGFzIGEgRE9TIGRhdGUgKi9cbmZ1bmN0aW9uIHdyaXRlX2Rvc19kYXRlKGJ1Zi8qOkNGQmxvYiovLCBkYXRlLyo6RGF0ZXxzdHJpbmcqLykge1xuXHRpZih0eXBlb2YgZGF0ZSA9PT0gXCJzdHJpbmdcIikgZGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuXHR2YXIgaG1zLyo6bnVtYmVyKi8gPSBkYXRlLmdldEhvdXJzKCk7XG5cdGhtcyA9IGhtcyA8PCA2IHwgZGF0ZS5nZXRNaW51dGVzKCk7XG5cdGhtcyA9IGhtcyA8PCA1IHwgKGRhdGUuZ2V0U2Vjb25kcygpPj4+MSk7XG5cdGJ1Zi53cml0ZV9zaGlmdCgyLCBobXMpO1xuXHR2YXIgeW1kLyo6bnVtYmVyKi8gPSAoZGF0ZS5nZXRGdWxsWWVhcigpIC0gMTk4MCk7XG5cdHltZCA9IHltZCA8PCA0IHwgKGRhdGUuZ2V0TW9udGgoKSsxKTtcblx0eW1kID0geW1kIDw8IDUgfCBkYXRlLmdldERhdGUoKTtcblx0YnVmLndyaXRlX3NoaWZ0KDIsIHltZCk7XG59XG5cbi8qIHJlYWQgZm91ciBieXRlcyBmcm9tIGJ1ZiBhbmQgaW50ZXJwcmV0IGFzIGEgRE9TIGRhdGUgKi9cbmZ1bmN0aW9uIHBhcnNlX2Rvc19kYXRlKGJ1Zi8qOkNGQmxvYiovKS8qOkRhdGUqLyB7XG5cdHZhciBobXMgPSBidWYucmVhZF9zaGlmdCgyKSAmIDB4RkZGRjtcblx0dmFyIHltZCA9IGJ1Zi5yZWFkX3NoaWZ0KDIpICYgMHhGRkZGO1xuXHR2YXIgdmFsID0gbmV3IERhdGUoKTtcblx0dmFyIGQgPSB5bWQgJiAweDFGOyB5bWQgPj4+PSA1O1xuXHR2YXIgbSA9IHltZCAmIDB4MEY7IHltZCA+Pj49IDQ7XG5cdHZhbC5zZXRNaWxsaXNlY29uZHMoMCk7XG5cdHZhbC5zZXRGdWxsWWVhcih5bWQgKyAxOTgwKTtcblx0dmFsLnNldE1vbnRoKG0tMSk7XG5cdHZhbC5zZXREYXRlKGQpO1xuXHR2YXIgUyA9IGhtcyAmIDB4MUY7IGhtcyA+Pj49IDU7XG5cdHZhciBNID0gaG1zICYgMHgzRjsgaG1zID4+Pj0gNjtcblx0dmFsLnNldEhvdXJzKGhtcyk7XG5cdHZhbC5zZXRNaW51dGVzKE0pO1xuXHR2YWwuc2V0U2Vjb25kcyhTPDwxKTtcblx0cmV0dXJuIHZhbDtcbn1cbmZ1bmN0aW9uIHBhcnNlX2V4dHJhX2ZpZWxkKGJsb2IvKjpDRkJsb2IqLykvKjphbnkqLyB7XG5cdHByZXBfYmxvYihibG9iLCAwKTtcblx0dmFyIG8gPSAvKjo6KCove30vKjo6IDphbnkpKi87XG5cdHZhciBmbGFncyA9IDA7XG5cdHdoaWxlKGJsb2IubCA8PSBibG9iLmxlbmd0aCAtIDQpIHtcblx0XHR2YXIgdHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoMiksIHRndCA9IGJsb2IubCArIHN6O1xuXHRcdHZhciBwID0ge307XG5cdFx0c3dpdGNoKHR5cGUpIHtcblx0XHRcdC8qIFVOSVgtc3R5bGUgVGltZXN0YW1wcyAqL1xuXHRcdFx0Y2FzZSAweDU0NTU6IHtcblx0XHRcdFx0ZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0XHRcdGlmKGZsYWdzICYgMSkgcC5tdGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRcdFx0LyogZm9yIHNvbWUgcmVhc29uLCBDRCBmbGFnIGNvcnJlc3BvbmRzIHRvIExGSCAqL1xuXHRcdFx0XHRpZihzeiA+IDUpIHtcblx0XHRcdFx0XHRpZihmbGFncyAmIDIpIHAuYXRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdFx0aWYoZmxhZ3MgJiA0KSBwLmN0aW1lID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmKHAubXRpbWUpIHAubXQgPSBuZXcgRGF0ZShwLm10aW1lKjEwMDApO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGJsb2IubCA9IHRndDtcblx0XHRvW3R5cGVdID0gcDtcblx0fVxuXHRyZXR1cm4gbztcbn1cbnZhciBmcy8qOjogPSByZXF1aXJlKCdmcycpOyAqLztcbmZ1bmN0aW9uIGdldF9mcygpIHsgcmV0dXJuIGZzIHx8IChmcyA9IHt9KTsgfVxuZnVuY3Rpb24gcGFyc2UoZmlsZS8qOlJhd0J5dGVzKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKS8qOkNGQkNvbnRhaW5lciovIHtcbmlmKGZpbGVbMF0gPT0gMHg1MCAmJiBmaWxlWzFdID09IDB4NGIpIHJldHVybiBwYXJzZV96aXAoZmlsZSwgb3B0aW9ucyk7XG5pZigoZmlsZVswXSB8IDB4MjApID09IDB4NmQgJiYgKGZpbGVbMV18MHgyMCkgPT0gMHg2OSkgcmV0dXJuIHBhcnNlX21hZChmaWxlLCBvcHRpb25zKTtcbmlmKGZpbGUubGVuZ3RoIDwgNTEyKSB0aHJvdyBuZXcgRXJyb3IoXCJDRkIgZmlsZSBzaXplIFwiICsgZmlsZS5sZW5ndGggKyBcIiA8IDUxMlwiKTtcbnZhciBtdmVyID0gMztcbnZhciBzc3ogPSA1MTI7XG52YXIgbm1mcyA9IDA7IC8vIG51bWJlciBvZiBtaW5pIEZBVCBzZWN0b3JzXG52YXIgZGlmYXRfc2VjX2NudCA9IDA7XG52YXIgZGlyX3N0YXJ0ID0gMDtcbnZhciBtaW5pZmF0X3N0YXJ0ID0gMDtcbnZhciBkaWZhdF9zdGFydCA9IDA7XG5cbnZhciBmYXRfYWRkcnMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTsgLy8gbG9jYXRpb25zIG9mIEZBVCBzZWN0b3JzXG5cbi8qIFtNUy1DRkJdIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAqL1xudmFyIGJsb2IvKjpDRkJsb2IqLyA9IC8qOjooKi9maWxlLnNsaWNlKDAsNTEyKS8qOjogOmFueSkqLztcbnByZXBfYmxvYihibG9iLCAwKTtcblxuLyogbWFqb3IgdmVyc2lvbiAqL1xudmFyIG12ID0gY2hlY2tfZ2V0X212ZXIoYmxvYik7XG5tdmVyID0gbXZbMF07XG5zd2l0Y2gobXZlcikge1xuXHRjYXNlIDM6IHNzeiA9IDUxMjsgYnJlYWs7IGNhc2UgNDogc3N6ID0gNDA5NjsgYnJlYWs7XG5cdGNhc2UgMDogaWYobXZbMV0gPT0gMCkgcmV0dXJuIHBhcnNlX3ppcChmaWxlLCBvcHRpb25zKTtcblx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJNYWpvciBWZXJzaW9uOiBFeHBlY3RlZCAzIG9yIDQgc2F3IFwiICsgbXZlcik7XG59XG5cbi8qIHJlcHJvY2VzcyBoZWFkZXIgKi9cbmlmKHNzeiAhPT0gNTEyKSB7IGJsb2IgPSAvKjo6KCovZmlsZS5zbGljZSgwLHNzeikvKjo6IDphbnkpKi87IHByZXBfYmxvYihibG9iLCAyOCAvKiBibG9iLmwgKi8pOyB9XG4vKiBTYXZlIGhlYWRlciBmb3IgZmluYWwgb2JqZWN0ICovXG52YXIgaGVhZGVyLyo6UmF3Qnl0ZXMqLyA9IGZpbGUuc2xpY2UoMCxzc3opO1xuXG5jaGVja19zaGlmdHMoYmxvYiwgbXZlcik7XG5cbi8vIE51bWJlciBvZiBEaXJlY3RvcnkgU2VjdG9yc1xudmFyIGRpcl9jbnQvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuaWYobXZlciA9PT0gMyAmJiBkaXJfY250ICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJyMgRGlyZWN0b3J5IFNlY3RvcnM6IEV4cGVjdGVkIDAgc2F3ICcgKyBkaXJfY250KTtcblxuLy8gTnVtYmVyIG9mIEZBVCBTZWN0b3JzXG5ibG9iLmwgKz0gNDtcblxuLy8gRmlyc3QgRGlyZWN0b3J5IFNlY3RvciBMb2NhdGlvblxuZGlyX3N0YXJ0ID0gYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyk7XG5cbi8vIFRyYW5zYWN0aW9uIFNpZ25hdHVyZVxuYmxvYi5sICs9IDQ7XG5cbi8vIE1pbmkgU3RyZWFtIEN1dG9mZiBTaXplXG5ibG9iLmNoaygnMDAxMDAwMDAnLCAnTWluaSBTdHJlYW0gQ3V0b2ZmIFNpemU6ICcpO1xuXG4vLyBGaXJzdCBNaW5pIEZBVCBTZWN0b3IgTG9jYXRpb25cbm1pbmlmYXRfc3RhcnQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gTnVtYmVyIG9mIE1pbmkgRkFUIFNlY3RvcnNcbm5tZnMgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblxuLy8gRmlyc3QgRElGQVQgc2VjdG9yIGxvY2F0aW9uXG5kaWZhdF9zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBOdW1iZXIgb2YgRElGQVQgU2VjdG9yc1xuZGlmYXRfc2VjX2NudCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXG4vLyBHcmFiIEZBVCBTZWN0b3IgTG9jYXRpb25zXG5mb3IodmFyIHEgPSAtMSwgaiA9IDA7IGogPCAxMDk7ICsraikgeyAvKiAxMDkgPSAoNTEyIC0gYmxvYi5sKT4+PjI7ICovXG5cdHEgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTtcblx0aWYocTwwKSBicmVhaztcblx0ZmF0X2FkZHJzW2pdID0gcTtcbn1cblxuLyoqIEJyZWFrIHRoZSBmaWxlIHVwIGludG8gc2VjdG9ycyAqL1xudmFyIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLyA9IHNlY3RvcmlmeShmaWxlLCBzc3opO1xuXG5zbGV1dGhfZmF0KGRpZmF0X3N0YXJ0LCBkaWZhdF9zZWNfY250LCBzZWN0b3JzLCBzc3osIGZhdF9hZGRycyk7XG5cbi8qKiBDaGFpbnMgKi9cbnZhciBzZWN0b3JfbGlzdC8qOlNlY3Rvckxpc3QqLyA9IG1ha2Vfc2VjdG9yX2xpc3Qoc2VjdG9ycywgZGlyX3N0YXJ0LCBmYXRfYWRkcnMsIHNzeik7XG5cbnNlY3Rvcl9saXN0W2Rpcl9zdGFydF0ubmFtZSA9IFwiIURpcmVjdG9yeVwiO1xuaWYobm1mcyA+IDAgJiYgbWluaWZhdF9zdGFydCAhPT0gRU5ET0ZDSEFJTikgc2VjdG9yX2xpc3RbbWluaWZhdF9zdGFydF0ubmFtZSA9IFwiIU1pbmlGQVRcIjtcbnNlY3Rvcl9saXN0W2ZhdF9hZGRyc1swXV0ubmFtZSA9IFwiIUZBVFwiO1xuc2VjdG9yX2xpc3QuZmF0X2FkZHJzID0gZmF0X2FkZHJzO1xuc2VjdG9yX2xpc3Quc3N6ID0gc3N6O1xuXG4vKiBbTVMtQ0ZCXSAyLjYuMSBDb21wb3VuZCBGaWxlIERpcmVjdG9yeSBFbnRyeSAqL1xudmFyIGZpbGVzLyo6Q0ZCRmlsZXMqLyA9IHt9LCBQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBGaWxlSW5kZXgvKjpDRkJGaWxlSW5kZXgqLyA9IFtdLCBGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcbnJlYWRfZGlyZWN0b3J5KGRpcl9zdGFydCwgc2VjdG9yX2xpc3QsIHNlY3RvcnMsIFBhdGhzLCBubWZzLCBmaWxlcywgRmlsZUluZGV4LCBtaW5pZmF0X3N0YXJ0KTtcblxuYnVpbGRfZnVsbF9wYXRocyhGaWxlSW5kZXgsIEZ1bGxQYXRocywgUGF0aHMpO1xuUGF0aHMuc2hpZnQoKTtcblxudmFyIG8gPSB7XG5cdEZpbGVJbmRleDogRmlsZUluZGV4LFxuXHRGdWxsUGF0aHM6IEZ1bGxQYXRoc1xufTtcblxuLy8gJEZsb3dJZ25vcmVcbmlmKG9wdGlvbnMgJiYgb3B0aW9ucy5yYXcpIG8ucmF3ID0ge2hlYWRlcjogaGVhZGVyLCBzZWN0b3JzOiBzZWN0b3JzfTtcbnJldHVybiBvO1xufSAvLyBwYXJzZVxuXG4vKiBbTVMtQ0ZCXSAyLjIgQ29tcG91bmQgRmlsZSBIZWFkZXIgLS0gcmVhZCB1cCB0byBtYWpvciB2ZXJzaW9uICovXG5mdW5jdGlvbiBjaGVja19nZXRfbXZlcihibG9iLyo6Q0ZCbG9iKi8pLyo6W251bWJlciwgbnVtYmVyXSovIHtcblx0aWYoYmxvYltibG9iLmxdID09IDB4NTAgJiYgYmxvYltibG9iLmwgKyAxXSA9PSAweDRiKSByZXR1cm4gWzAsIDBdO1xuXHQvLyBoZWFkZXIgc2lnbmF0dXJlIDhcblx0YmxvYi5jaGsoSEVBREVSX1NJR05BVFVSRSwgJ0hlYWRlciBTaWduYXR1cmU6ICcpO1xuXG5cdC8vIGNsc2lkIDE2XG5cdC8vYmxvYi5jaGsoSEVBREVSX0NMU0lELCAnQ0xTSUQ6ICcpO1xuXHRibG9iLmwgKz0gMTY7XG5cblx0Ly8gbWlub3IgdmVyc2lvbiAyXG5cdHZhciBtdmVyLyo6bnVtYmVyKi8gPSBibG9iLnJlYWRfc2hpZnQoMiwgJ3UnKTtcblxuXHRyZXR1cm4gW2Jsb2IucmVhZF9zaGlmdCgyLCd1JyksIG12ZXJdO1xufVxuZnVuY3Rpb24gY2hlY2tfc2hpZnRzKGJsb2IvKjpDRkJsb2IqLywgbXZlci8qOm51bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciBzaGlmdCA9IDB4MDk7XG5cblx0Ly8gQnl0ZSBPcmRlclxuXHQvL2Jsb2IuY2hrKCdmZWZmJywgJ0J5dGUgT3JkZXI6ICcpOyAvLyBub3RlOiBzb21lIHdyaXRlcnMgcHV0IDB4ZmZmZlxuXHRibG9iLmwgKz0gMjtcblxuXHQvLyBTZWN0b3IgU2hpZnRcblx0c3dpdGNoKChzaGlmdCA9IGJsb2IucmVhZF9zaGlmdCgyKSkpIHtcblx0XHRjYXNlIDB4MDk6IGlmKG12ZXIgIT0gMykgdGhyb3cgbmV3IEVycm9yKCdTZWN0b3IgU2hpZnQ6IEV4cGVjdGVkIDkgc2F3ICcgKyBzaGlmdCk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwYzogaWYobXZlciAhPSA0KSB0aHJvdyBuZXcgRXJyb3IoJ1NlY3RvciBTaGlmdDogRXhwZWN0ZWQgMTIgc2F3ICcgKyBzaGlmdCk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignU2VjdG9yIFNoaWZ0OiBFeHBlY3RlZCA5IG9yIDEyIHNhdyAnICsgc2hpZnQpO1xuXHR9XG5cblx0Ly8gTWluaSBTZWN0b3IgU2hpZnRcblx0YmxvYi5jaGsoJzA2MDAnLCAnTWluaSBTZWN0b3IgU2hpZnQ6ICcpO1xuXG5cdC8vIFJlc2VydmVkXG5cdGJsb2IuY2hrKCcwMDAwMDAwMDAwMDAnLCAnUmVzZXJ2ZWQ6ICcpO1xufVxuXG4vKiogQnJlYWsgdGhlIGZpbGUgdXAgaW50byBzZWN0b3JzICovXG5mdW5jdGlvbiBzZWN0b3JpZnkoZmlsZS8qOlJhd0J5dGVzKi8sIHNzei8qOm51bWJlciovKS8qOkFycmF5PFJhd0J5dGVzPiovIHtcblx0dmFyIG5zZWN0b3JzID0gTWF0aC5jZWlsKGZpbGUubGVuZ3RoL3NzeiktMTtcblx0dmFyIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLyA9IFtdO1xuXHRmb3IodmFyIGk9MTsgaSA8IG5zZWN0b3JzOyArK2kpIHNlY3RvcnNbaS0xXSA9IGZpbGUuc2xpY2UoaSpzc3osKGkrMSkqc3N6KTtcblx0c2VjdG9yc1tuc2VjdG9ycy0xXSA9IGZpbGUuc2xpY2UobnNlY3RvcnMqc3N6KTtcblx0cmV0dXJuIHNlY3RvcnM7XG59XG5cbi8qIFtNUy1DRkJdIDIuNi40IFJlZC1CbGFjayBUcmVlICovXG5mdW5jdGlvbiBidWlsZF9mdWxsX3BhdGhzKEZJLyo6Q0ZCRmlsZUluZGV4Ki8sIEZQLyo6QXJyYXk8c3RyaW5nPiovLCBQYXRocy8qOkFycmF5PHN0cmluZz4qLykvKjp2b2lkKi8ge1xuXHR2YXIgaSA9IDAsIEwgPSAwLCBSID0gMCwgQyA9IDAsIGogPSAwLCBwbCA9IFBhdGhzLmxlbmd0aDtcblx0dmFyIGRhZC8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBxLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cblx0Zm9yKDsgaSA8IHBsOyArK2kpIHsgZGFkW2ldPXFbaV09aTsgRlBbaV09UGF0aHNbaV07IH1cblxuXHRmb3IoOyBqIDwgcS5sZW5ndGg7ICsraikge1xuXHRcdGkgPSBxW2pdO1xuXHRcdEwgPSBGSVtpXS5MOyBSID0gRklbaV0uUjsgQyA9IEZJW2ldLkM7XG5cdFx0aWYoZGFkW2ldID09PSBpKSB7XG5cdFx0XHRpZihMICE9PSAtMSAvKk5PU1RSRUFNKi8gJiYgZGFkW0xdICE9PSBMKSBkYWRbaV0gPSBkYWRbTF07XG5cdFx0XHRpZihSICE9PSAtMSAmJiBkYWRbUl0gIT09IFIpIGRhZFtpXSA9IGRhZFtSXTtcblx0XHR9XG5cdFx0aWYoQyAhPT0gLTEgLypOT1NUUkVBTSovKSBkYWRbQ10gPSBpO1xuXHRcdGlmKEwgIT09IC0xICYmIGkgIT0gZGFkW2ldKSB7IGRhZFtMXSA9IGRhZFtpXTsgaWYocS5sYXN0SW5kZXhPZihMKSA8IGopIHEucHVzaChMKTsgfVxuXHRcdGlmKFIgIT09IC0xICYmIGkgIT0gZGFkW2ldKSB7IGRhZFtSXSA9IGRhZFtpXTsgaWYocS5sYXN0SW5kZXhPZihSKSA8IGopIHEucHVzaChSKTsgfVxuXHR9XG5cdGZvcihpPTE7IGkgPCBwbDsgKytpKSBpZihkYWRbaV0gPT09IGkpIHtcblx0XHRpZihSICE9PSAtMSAvKk5PU1RSRUFNKi8gJiYgZGFkW1JdICE9PSBSKSBkYWRbaV0gPSBkYWRbUl07XG5cdFx0ZWxzZSBpZihMICE9PSAtMSAmJiBkYWRbTF0gIT09IEwpIGRhZFtpXSA9IGRhZFtMXTtcblx0fVxuXG5cdGZvcihpPTE7IGkgPCBwbDsgKytpKSB7XG5cdFx0aWYoRklbaV0udHlwZSA9PT0gMCAvKiB1bmtub3duICovKSBjb250aW51ZTtcblx0XHRqID0gaTtcblx0XHRpZihqICE9IGRhZFtqXSkgZG8ge1xuXHRcdFx0aiA9IGRhZFtqXTtcblx0XHRcdEZQW2ldID0gRlBbal0gKyBcIi9cIiArIEZQW2ldO1xuXHRcdH0gd2hpbGUgKGogIT09IDAgJiYgLTEgIT09IGRhZFtqXSAmJiBqICE9IGRhZFtqXSk7XG5cdFx0ZGFkW2ldID0gLTE7XG5cdH1cblxuXHRGUFswXSArPSBcIi9cIjtcblx0Zm9yKGk9MTsgaSA8IHBsOyArK2kpIHtcblx0XHRpZihGSVtpXS50eXBlICE9PSAyIC8qIHN0cmVhbSAqLykgRlBbaV0gKz0gXCIvXCI7XG5cdH1cbn1cblxuZnVuY3Rpb24gZ2V0X21mYXRfZW50cnkoZW50cnkvKjpDRkJFbnRyeSovLCBwYXlsb2FkLyo6UmF3Qnl0ZXMqLywgbWluaS8qOj9SYXdCeXRlcyovKS8qOkNGQmxvYiovIHtcblx0dmFyIHN0YXJ0ID0gZW50cnkuc3RhcnQsIHNpemUgPSBlbnRyeS5zaXplO1xuXHQvL3JldHVybiAocGF5bG9hZC5zbGljZShzdGFydCpNU1NaLCBzdGFydCpNU1NaICsgc2l6ZSkvKjphbnkqLyk7XG5cdHZhciBvID0gW107XG5cdHZhciBpZHggPSBzdGFydDtcblx0d2hpbGUobWluaSAmJiBzaXplID4gMCAmJiBpZHggPj0gMCkge1xuXHRcdG8ucHVzaChwYXlsb2FkLnNsaWNlKGlkeCAqIE1TU1osIGlkeCAqIE1TU1ogKyBNU1NaKSk7XG5cdFx0c2l6ZSAtPSBNU1NaO1xuXHRcdGlkeCA9IF9fcmVhZEludDMyTEUobWluaSwgaWR4ICogNCk7XG5cdH1cblx0aWYoby5sZW5ndGggPT09IDApIHJldHVybiAobmV3X2J1ZigwKS8qOmFueSovKTtcblx0cmV0dXJuIChiY29uY2F0KG8pLnNsaWNlKDAsIGVudHJ5LnNpemUpLyo6YW55Ki8pO1xufVxuXG4vKiogQ2hhc2UgZG93biB0aGUgcmVzdCBvZiB0aGUgRElGQVQgY2hhaW4gdG8gYnVpbGQgYSBjb21wcmVoZW5zaXZlIGxpc3RcbiAgICBESUZBVCBjaGFpbnMgYnkgc3RvcmluZyB0aGUgbmV4dCBzZWN0b3IgbnVtYmVyIGFzIHRoZSBsYXN0IDMyIGJpdHMgKi9cbmZ1bmN0aW9uIHNsZXV0aF9mYXQoaWR4Lyo6bnVtYmVyKi8sIGNudC8qOm51bWJlciovLCBzZWN0b3JzLyo6QXJyYXk8UmF3Qnl0ZXM+Ki8sIHNzei8qOm51bWJlciovLCBmYXRfYWRkcnMpLyo6dm9pZCovIHtcblx0dmFyIHEvKjpudW1iZXIqLyA9IEVORE9GQ0hBSU47XG5cdGlmKGlkeCA9PT0gRU5ET0ZDSEFJTikge1xuXHRcdGlmKGNudCAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiRElGQVQgY2hhaW4gc2hvcnRlciB0aGFuIGV4cGVjdGVkXCIpO1xuXHR9IGVsc2UgaWYoaWR4ICE9PSAtMSAvKkZSRUVTRUNUKi8pIHtcblx0XHR2YXIgc2VjdG9yID0gc2VjdG9yc1tpZHhdLCBtID0gKHNzej4+PjIpLTE7XG5cdFx0aWYoIXNlY3RvcikgcmV0dXJuO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgPCBtOyArK2kpIHtcblx0XHRcdGlmKChxID0gX19yZWFkSW50MzJMRShzZWN0b3IsaSo0KSkgPT09IEVORE9GQ0hBSU4pIGJyZWFrO1xuXHRcdFx0ZmF0X2FkZHJzLnB1c2gocSk7XG5cdFx0fVxuXHRcdHNsZXV0aF9mYXQoX19yZWFkSW50MzJMRShzZWN0b3Isc3N6LTQpLGNudCAtIDEsIHNlY3RvcnMsIHNzeiwgZmF0X2FkZHJzKTtcblx0fVxufVxuXG4vKiogRm9sbG93IHRoZSBsaW5rZWQgbGlzdCBvZiBzZWN0b3JzIGZvciBhIGdpdmVuIHN0YXJ0aW5nIHBvaW50ICovXG5mdW5jdGlvbiBnZXRfc2VjdG9yX2xpc3Qoc2VjdG9ycy8qOkFycmF5PFJhd0J5dGVzPiovLCBzdGFydC8qOm51bWJlciovLCBmYXRfYWRkcnMvKjpBcnJheTxudW1iZXI+Ki8sIHNzei8qOm51bWJlciovLCBjaGtkLyo6P0FycmF5PGJvb2xlYW4+Ki8pLyo6U2VjdG9yRW50cnkqLyB7XG5cdHZhciBidWYvKjpBcnJheTxudW1iZXI+Ki8gPSBbXSwgYnVmX2NoYWluLyo6QXJyYXk8YW55PiovID0gW107XG5cdGlmKCFjaGtkKSBjaGtkID0gW107XG5cdHZhciBtb2R1bHVzID0gc3N6IC0gMSwgaiA9IDAsIGpqID0gMDtcblx0Zm9yKGo9c3RhcnQ7IGo+PTA7KSB7XG5cdFx0Y2hrZFtqXSA9IHRydWU7XG5cdFx0YnVmW2J1Zi5sZW5ndGhdID0gajtcblx0XHRidWZfY2hhaW4ucHVzaChzZWN0b3JzW2pdKTtcblx0XHR2YXIgYWRkciA9IGZhdF9hZGRyc1tNYXRoLmZsb29yKGoqNC9zc3opXTtcblx0XHRqaiA9ICgoaio0KSAmIG1vZHVsdXMpO1xuXHRcdGlmKHNzeiA8IDQgKyBqaikgdGhyb3cgbmV3IEVycm9yKFwiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6IFwiICsgaiArIFwiIDQgXCIrc3N6KTtcblx0XHRpZighc2VjdG9yc1thZGRyXSkgYnJlYWs7XG5cdFx0aiA9IF9fcmVhZEludDMyTEUoc2VjdG9yc1thZGRyXSwgamopO1xuXHR9XG5cdHJldHVybiB7bm9kZXM6IGJ1ZiwgZGF0YTpfX3RvQnVmZmVyKFtidWZfY2hhaW5dKX07XG59XG5cbi8qKiBDaGFzZSBkb3duIHRoZSBzZWN0b3IgbGlua2VkIGxpc3RzICovXG5mdW5jdGlvbiBtYWtlX3NlY3Rvcl9saXN0KHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgZGlyX3N0YXJ0Lyo6bnVtYmVyKi8sIGZhdF9hZGRycy8qOkFycmF5PG51bWJlcj4qLywgc3N6Lyo6bnVtYmVyKi8pLyo6U2VjdG9yTGlzdCovIHtcblx0dmFyIHNsID0gc2VjdG9ycy5sZW5ndGgsIHNlY3Rvcl9saXN0Lyo6U2VjdG9yTGlzdCovID0gKFtdLyo6YW55Ki8pO1xuXHR2YXIgY2hrZC8qOkFycmF5PGJvb2xlYW4+Ki8gPSBbXSwgYnVmLyo6QXJyYXk8bnVtYmVyPiovID0gW10sIGJ1Zl9jaGFpbi8qOkFycmF5PFJhd0J5dGVzPiovID0gW107XG5cdHZhciBtb2R1bHVzID0gc3N6IC0gMSwgaT0wLCBqPTAsIGs9MCwgamo9MDtcblx0Zm9yKGk9MDsgaSA8IHNsOyArK2kpIHtcblx0XHRidWYgPSAoW10vKjpBcnJheTxudW1iZXI+Ki8pO1xuXHRcdGsgPSAoaSArIGRpcl9zdGFydCk7IGlmKGsgPj0gc2wpIGstPXNsO1xuXHRcdGlmKGNoa2Rba10pIGNvbnRpbnVlO1xuXHRcdGJ1Zl9jaGFpbiA9IFtdO1xuXHRcdHZhciBzZWVuID0gW107XG5cdFx0Zm9yKGo9azsgaj49MDspIHtcblx0XHRcdHNlZW5bal0gPSB0cnVlO1xuXHRcdFx0Y2hrZFtqXSA9IHRydWU7XG5cdFx0XHRidWZbYnVmLmxlbmd0aF0gPSBqO1xuXHRcdFx0YnVmX2NoYWluLnB1c2goc2VjdG9yc1tqXSk7XG5cdFx0XHR2YXIgYWRkci8qOm51bWJlciovID0gZmF0X2FkZHJzW01hdGguZmxvb3Ioaio0L3NzeildO1xuXHRcdFx0amogPSAoKGoqNCkgJiBtb2R1bHVzKTtcblx0XHRcdGlmKHNzeiA8IDQgKyBqaikgdGhyb3cgbmV3IEVycm9yKFwiRkFUIGJvdW5kYXJ5IGNyb3NzZWQ6IFwiICsgaiArIFwiIDQgXCIrc3N6KTtcblx0XHRcdGlmKCFzZWN0b3JzW2FkZHJdKSBicmVhaztcblx0XHRcdGogPSBfX3JlYWRJbnQzMkxFKHNlY3RvcnNbYWRkcl0sIGpqKTtcblx0XHRcdGlmKHNlZW5bal0pIGJyZWFrO1xuXHRcdH1cblx0XHRzZWN0b3JfbGlzdFtrXSA9ICh7bm9kZXM6IGJ1ZiwgZGF0YTpfX3RvQnVmZmVyKFtidWZfY2hhaW5dKX0vKjpTZWN0b3JFbnRyeSovKTtcblx0fVxuXHRyZXR1cm4gc2VjdG9yX2xpc3Q7XG59XG5cbi8qIFtNUy1DRkJdIDIuNi4xIENvbXBvdW5kIEZpbGUgRGlyZWN0b3J5IEVudHJ5ICovXG5mdW5jdGlvbiByZWFkX2RpcmVjdG9yeShkaXJfc3RhcnQvKjpudW1iZXIqLywgc2VjdG9yX2xpc3QvKjpTZWN0b3JMaXN0Ki8sIHNlY3RvcnMvKjpBcnJheTxSYXdCeXRlcz4qLywgUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8sIG5tZnMsIGZpbGVzLCBGaWxlSW5kZXgsIG1pbmkpIHtcblx0dmFyIG1pbmlmYXRfc3RvcmUgPSAwLCBwbCA9IChQYXRocy5sZW5ndGg/MjowKTtcblx0dmFyIHNlY3RvciA9IHNlY3Rvcl9saXN0W2Rpcl9zdGFydF0uZGF0YTtcblx0dmFyIGkgPSAwLCBuYW1lbGVuID0gMCwgbmFtZTtcblx0Zm9yKDsgaSA8IHNlY3Rvci5sZW5ndGg7IGkrPSAxMjgpIHtcblx0XHR2YXIgYmxvYi8qOkNGQmxvYiovID0gLyo6OigqL3NlY3Rvci5zbGljZShpLCBpKzEyOCkvKjo6IDphbnkpKi87XG5cdFx0cHJlcF9ibG9iKGJsb2IsIDY0KTtcblx0XHRuYW1lbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdG5hbWUgPSBfX3V0ZjE2bGUoYmxvYiwwLG5hbWVsZW4tcGwpO1xuXHRcdFBhdGhzLnB1c2gobmFtZSk7XG5cdFx0dmFyIG8vKjpDRkJFbnRyeSovID0gKHtcblx0XHRcdG5hbWU6ICBuYW1lLFxuXHRcdFx0dHlwZTogIGJsb2IucmVhZF9zaGlmdCgxKSxcblx0XHRcdGNvbG9yOiBibG9iLnJlYWRfc2hpZnQoMSksXG5cdFx0XHRMOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRSOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRDOiAgICAgYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksXG5cdFx0XHRjbHNpZDogYmxvYi5yZWFkX3NoaWZ0KDE2KSxcblx0XHRcdHN0YXRlOiBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKSxcblx0XHRcdHN0YXJ0OiAwLFxuXHRcdFx0c2l6ZTogMFxuXHRcdH0pO1xuXHRcdHZhciBjdGltZS8qOm51bWJlciovID0gYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpICsgYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKGN0aW1lICE9PSAwKSBvLmN0ID0gcmVhZF9kYXRlKGJsb2IsIGJsb2IubC04KTtcblx0XHR2YXIgbXRpbWUvKjpudW1iZXIqLyA9IGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKSArIGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihtdGltZSAhPT0gMCkgby5tdCA9IHJlYWRfZGF0ZShibG9iLCBibG9iLmwtOCk7XG5cdFx0by5zdGFydCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXHRcdG8uc2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpO1xuXHRcdGlmKG8uc2l6ZSA8IDAgJiYgby5zdGFydCA8IDApIHsgby5zaXplID0gby50eXBlID0gMDsgby5zdGFydCA9IEVORE9GQ0hBSU47IG8ubmFtZSA9IFwiXCI7IH1cblx0XHRpZihvLnR5cGUgPT09IDUpIHsgLyogcm9vdCAqL1xuXHRcdFx0bWluaWZhdF9zdG9yZSA9IG8uc3RhcnQ7XG5cdFx0XHRpZihubWZzID4gMCAmJiBtaW5pZmF0X3N0b3JlICE9PSBFTkRPRkNIQUlOKSBzZWN0b3JfbGlzdFttaW5pZmF0X3N0b3JlXS5uYW1lID0gXCIhU3RyZWFtRGF0YVwiO1xuXHRcdFx0LyptaW5pZmF0X3NpemUgPSBvLnNpemU7Ki9cblx0XHR9IGVsc2UgaWYoby5zaXplID49IDQwOTYgLyogTVNDU1ogKi8pIHtcblx0XHRcdG8uc3RvcmFnZSA9ICdmYXQnO1xuXHRcdFx0aWYoc2VjdG9yX2xpc3Rbby5zdGFydF0gPT09IHVuZGVmaW5lZCkgc2VjdG9yX2xpc3Rbby5zdGFydF0gPSBnZXRfc2VjdG9yX2xpc3Qoc2VjdG9ycywgby5zdGFydCwgc2VjdG9yX2xpc3QuZmF0X2FkZHJzLCBzZWN0b3JfbGlzdC5zc3opO1xuXHRcdFx0c2VjdG9yX2xpc3Rbby5zdGFydF0ubmFtZSA9IG8ubmFtZTtcblx0XHRcdG8uY29udGVudCA9IChzZWN0b3JfbGlzdFtvLnN0YXJ0XS5kYXRhLnNsaWNlKDAsby5zaXplKS8qOmFueSovKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0by5zdG9yYWdlID0gJ21pbmlmYXQnO1xuXHRcdFx0aWYoby5zaXplIDwgMCkgby5zaXplID0gMDtcblx0XHRcdGVsc2UgaWYobWluaWZhdF9zdG9yZSAhPT0gRU5ET0ZDSEFJTiAmJiBvLnN0YXJ0ICE9PSBFTkRPRkNIQUlOICYmIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RvcmVdKSB7XG5cdFx0XHRcdG8uY29udGVudCA9IGdldF9tZmF0X2VudHJ5KG8sIHNlY3Rvcl9saXN0W21pbmlmYXRfc3RvcmVdLmRhdGEsIChzZWN0b3JfbGlzdFttaW5pXXx8e30pLmRhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihvLmNvbnRlbnQpIHByZXBfYmxvYihvLmNvbnRlbnQsIDApO1xuXHRcdGZpbGVzW25hbWVdID0gbztcblx0XHRGaWxlSW5kZXgucHVzaChvKTtcblx0fVxufVxuXG5mdW5jdGlvbiByZWFkX2RhdGUoYmxvYi8qOlJhd0J5dGVzfENGQmxvYiovLCBvZmZzZXQvKjpudW1iZXIqLykvKjpEYXRlKi8ge1xuXHRyZXR1cm4gbmV3IERhdGUoKCAoIChfX3JlYWRVSW50MzJMRShibG9iLG9mZnNldCs0KS8xZTcpKk1hdGgucG93KDIsMzIpK19fcmVhZFVJbnQzMkxFKGJsb2Isb2Zmc2V0KS8xZTcgKSAtIDExNjQ0NDczNjAwKSoxMDAwKTtcbn1cblxuZnVuY3Rpb24gcmVhZF9maWxlKGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdGlvbnMvKjpDRkJSZWFkT3B0cyovKSB7XG5cdGdldF9mcygpO1xuXHRyZXR1cm4gcGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVuYW1lKSwgb3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIHJlYWQoYmxvYi8qOlJhd0J5dGVzfHN0cmluZyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykge1xuXHR2YXIgdHlwZSA9IG9wdGlvbnMgJiYgb3B0aW9ucy50eXBlO1xuXHRpZighdHlwZSkge1xuXHRcdGlmKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGJsb2IpKSB0eXBlID0gXCJidWZmZXJcIjtcblx0fVxuXHRzd2l0Y2godHlwZSB8fCBcImJhc2U2NFwiKSB7XG5cdFx0Y2FzZSBcImZpbGVcIjogLyo6OiBpZih0eXBlb2YgYmxvYiAhPT0gJ3N0cmluZycpIHRocm93IFwiTXVzdCBwYXNzIGEgZmlsZW5hbWUgd2hlbiB0eXBlPSdmaWxlJ1wiOyAqL3JldHVybiByZWFkX2ZpbGUoYmxvYiwgb3B0aW9ucyk7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiAvKjo6IGlmKHR5cGVvZiBibG9iICE9PSAnc3RyaW5nJykgdGhyb3cgXCJNdXN0IHBhc3MgYSBiYXNlNjQtZW5jb2RlZCBiaW5hcnkgc3RyaW5nIHdoZW4gdHlwZT0nZmlsZSdcIjsgKi9yZXR1cm4gcGFyc2UoczJhKEJhc2U2NF9kZWNvZGUoYmxvYikpLCBvcHRpb25zKTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IC8qOjogaWYodHlwZW9mIGJsb2IgIT09ICdzdHJpbmcnKSB0aHJvdyBcIk11c3QgcGFzcyBhIGJpbmFyeSBzdHJpbmcgd2hlbiB0eXBlPSdmaWxlJ1wiOyAqL3JldHVybiBwYXJzZShzMmEoYmxvYiksIG9wdGlvbnMpO1xuXHR9XG5cdHJldHVybiBwYXJzZSgvKjo6dHlwZW9mIGJsb2IgPT0gJ3N0cmluZycgPyBuZXcgQnVmZmVyKGJsb2IsICd1dGYtOCcpIDogKi9ibG9iLCBvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gaW5pdF9jZmIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdHMvKjo/YW55Ki8pLyo6dm9pZCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9LCByb290ID0gby5yb290IHx8IFwiUm9vdCBFbnRyeVwiO1xuXHRpZighY2ZiLkZ1bGxQYXRocykgY2ZiLkZ1bGxQYXRocyA9IFtdO1xuXHRpZighY2ZiLkZpbGVJbmRleCkgY2ZiLkZpbGVJbmRleCA9IFtdO1xuXHRpZihjZmIuRnVsbFBhdGhzLmxlbmd0aCAhPT0gY2ZiLkZpbGVJbmRleC5sZW5ndGgpIHRocm93IG5ldyBFcnJvcihcImluY29uc2lzdGVudCBDRkIgc3RydWN0dXJlXCIpO1xuXHRpZihjZmIuRnVsbFBhdGhzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGNmYi5GdWxsUGF0aHNbMF0gPSByb290ICsgXCIvXCI7XG5cdFx0Y2ZiLkZpbGVJbmRleFswXSA9ICh7IG5hbWU6IHJvb3QsIHR5cGU6IDUgfS8qOmFueSovKTtcblx0fVxuXHRpZihvLkNMU0lEKSBjZmIuRmlsZUluZGV4WzBdLmNsc2lkID0gby5DTFNJRDtcblx0c2VlZF9jZmIoY2ZiKTtcbn1cbmZ1bmN0aW9uIHNlZWRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovKS8qOnZvaWQqLyB7XG5cdHZhciBubSA9IFwiXFx1MDAwMVNoMzN0SjVcIjtcblx0aWYoQ0ZCLmZpbmQoY2ZiLCBcIi9cIiArIG5tKSkgcmV0dXJuO1xuXHR2YXIgcCA9IG5ld19idWYoNCk7IHBbMF0gPSA1NTsgcFsxXSA9IHBbM10gPSA1MDsgcFsyXSA9IDU0O1xuXHRjZmIuRmlsZUluZGV4LnB1c2goKHsgbmFtZTogbm0sIHR5cGU6IDIsIGNvbnRlbnQ6cCwgc2l6ZTo0LCBMOjY5LCBSOjY5LCBDOjY5IH0vKjphbnkqLykpO1xuXHRjZmIuRnVsbFBhdGhzLnB1c2goY2ZiLkZ1bGxQYXRoc1swXSArIG5tKTtcblx0cmVidWlsZF9jZmIoY2ZiKTtcbn1cbmZ1bmN0aW9uIHJlYnVpbGRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovLCBmLyo6P2Jvb2xlYW4qLykvKjp2b2lkKi8ge1xuXHRpbml0X2NmYihjZmIpO1xuXHR2YXIgZ2MgPSBmYWxzZSwgcyA9IGZhbHNlO1xuXHRmb3IodmFyIGkgPSBjZmIuRnVsbFBhdGhzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG5cdFx0dmFyIF9maWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRzd2l0Y2goX2ZpbGUudHlwZSkge1xuXHRcdFx0Y2FzZSAwOlxuXHRcdFx0XHRpZihzKSBnYyA9IHRydWU7XG5cdFx0XHRcdGVsc2UgeyBjZmIuRmlsZUluZGV4LnBvcCgpOyBjZmIuRnVsbFBhdGhzLnBvcCgpOyB9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAxOiBjYXNlIDI6IGNhc2UgNTpcblx0XHRcdFx0cyA9IHRydWU7XG5cdFx0XHRcdGlmKGlzTmFOKF9maWxlLlIgKiBfZmlsZS5MICogX2ZpbGUuQykpIGdjID0gdHJ1ZTtcblx0XHRcdFx0aWYoX2ZpbGUuUiA+IC0xICYmIF9maWxlLkwgPiAtMSAmJiBfZmlsZS5SID09IF9maWxlLkwpIGdjID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBnYyA9IHRydWU7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHRpZighZ2MgJiYgIWYpIHJldHVybjtcblxuXHR2YXIgbm93ID0gbmV3IERhdGUoMTk4NywgMSwgMTkpLCBqID0gMDtcblx0Ly8gVHJhY2sgd2hpY2ggbmFtZXMgZXhpc3Rcblx0dmFyIGZ1bGxQYXRocyA9IE9iamVjdC5jcmVhdGUgPyBPYmplY3QuY3JlYXRlKG51bGwpIDoge307XG5cdHZhciBkYXRhLyo6QXJyYXk8W3N0cmluZywgQ0ZCRW50cnldPiovID0gW107XG5cdGZvcihpID0gMDsgaSA8IGNmYi5GdWxsUGF0aHMubGVuZ3RoOyArK2kpIHtcblx0XHRmdWxsUGF0aHNbY2ZiLkZ1bGxQYXRoc1tpXV0gPSB0cnVlO1xuXHRcdGlmKGNmYi5GaWxlSW5kZXhbaV0udHlwZSA9PT0gMCkgY29udGludWU7XG5cdFx0ZGF0YS5wdXNoKFtjZmIuRnVsbFBhdGhzW2ldLCBjZmIuRmlsZUluZGV4W2ldXSk7XG5cdH1cblx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBkYWQgPSBkaXJuYW1lKGRhdGFbaV1bMF0pO1xuXHRcdHMgPSBmdWxsUGF0aHNbZGFkXTtcblx0XHRpZighcykge1xuXHRcdFx0ZGF0YS5wdXNoKFtkYWQsICh7XG5cdFx0XHRcdG5hbWU6IGZpbGVuYW1lKGRhZCkucmVwbGFjZShcIi9cIixcIlwiKSxcblx0XHRcdFx0dHlwZTogMSxcblx0XHRcdFx0Y2xzaWQ6IEhFQURFUl9DTFNJRCxcblx0XHRcdFx0Y3Q6IG5vdywgbXQ6IG5vdyxcblx0XHRcdFx0Y29udGVudDogbnVsbFxuXHRcdFx0fS8qOmFueSovKV0pO1xuXHRcdFx0Ly8gQWRkIG5hbWUgdG8gc2V0XG5cdFx0XHRmdWxsUGF0aHNbZGFkXSA9IHRydWU7XG5cdFx0fVxuXHR9XG5cblx0ZGF0YS5zb3J0KGZ1bmN0aW9uKHgseSkgeyByZXR1cm4gbmFtZWNtcCh4WzBdLCB5WzBdKTsgfSk7XG5cdGNmYi5GdWxsUGF0aHMgPSBbXTsgY2ZiLkZpbGVJbmRleCA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7IGNmYi5GdWxsUGF0aHNbaV0gPSBkYXRhW2ldWzBdOyBjZmIuRmlsZUluZGV4W2ldID0gZGF0YVtpXVsxXTsgfVxuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGVsdCA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0dmFyIG5tID0gY2ZiLkZ1bGxQYXRoc1tpXTtcblxuXHRcdGVsdC5uYW1lID0gIGZpbGVuYW1lKG5tKS5yZXBsYWNlKFwiL1wiLFwiXCIpO1xuXHRcdGVsdC5MID0gZWx0LlIgPSBlbHQuQyA9IC0oZWx0LmNvbG9yID0gMSk7XG5cdFx0ZWx0LnNpemUgPSBlbHQuY29udGVudCA/IGVsdC5jb250ZW50Lmxlbmd0aCA6IDA7XG5cdFx0ZWx0LnN0YXJ0ID0gMDtcblx0XHRlbHQuY2xzaWQgPSAoZWx0LmNsc2lkIHx8IEhFQURFUl9DTFNJRCk7XG5cdFx0aWYoaSA9PT0gMCkge1xuXHRcdFx0ZWx0LkMgPSBkYXRhLmxlbmd0aCA+IDEgPyAxIDogLTE7XG5cdFx0XHRlbHQuc2l6ZSA9IDA7XG5cdFx0XHRlbHQudHlwZSA9IDU7XG5cdFx0fSBlbHNlIGlmKG5tLnNsaWNlKC0xKSA9PSBcIi9cIikge1xuXHRcdFx0Zm9yKGo9aSsxO2ogPCBkYXRhLmxlbmd0aDsgKytqKSBpZihkaXJuYW1lKGNmYi5GdWxsUGF0aHNbal0pPT1ubSkgYnJlYWs7XG5cdFx0XHRlbHQuQyA9IGogPj0gZGF0YS5sZW5ndGggPyAtMSA6IGo7XG5cdFx0XHRmb3Ioaj1pKzE7aiA8IGRhdGEubGVuZ3RoOyArK2opIGlmKGRpcm5hbWUoY2ZiLkZ1bGxQYXRoc1tqXSk9PWRpcm5hbWUobm0pKSBicmVhaztcblx0XHRcdGVsdC5SID0gaiA+PSBkYXRhLmxlbmd0aCA/IC0xIDogajtcblx0XHRcdGVsdC50eXBlID0gMTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoZGlybmFtZShjZmIuRnVsbFBhdGhzW2krMV18fFwiXCIpID09IGRpcm5hbWUobm0pKSBlbHQuUiA9IGkgKyAxO1xuXHRcdFx0ZWx0LnR5cGUgPSAyO1xuXHRcdH1cblx0fVxuXG59XG5cbmZ1bmN0aW9uIF93cml0ZShjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOlJhd0J5dGVzfHN0cmluZyovIHtcblx0dmFyIF9vcHRzID0gb3B0aW9ucyB8fCB7fTtcblx0LyogTUFEIGlzIG9yZGVyLXNlbnNpdGl2ZSwgc2tpcCByZWJ1aWxkIGFuZCBzb3J0ICovXG5cdGlmKF9vcHRzLmZpbGVUeXBlID09ICdtYWQnKSByZXR1cm4gd3JpdGVfbWFkKGNmYiwgX29wdHMpO1xuXHRyZWJ1aWxkX2NmYihjZmIpO1xuXHRzd2l0Y2goX29wdHMuZmlsZVR5cGUpIHtcblx0XHRjYXNlICd6aXAnOiByZXR1cm4gd3JpdGVfemlwKGNmYiwgX29wdHMpO1xuXHRcdC8vY2FzZSAnbWFkJzogcmV0dXJuIHdyaXRlX21hZChjZmIsIF9vcHRzKTtcblx0fVxuXHR2YXIgTCA9IChmdW5jdGlvbihjZmIvKjpDRkJDb250YWluZXIqLykvKjpBcnJheTxudW1iZXI+Ki97XG5cdFx0dmFyIG1pbmlfc2l6ZSA9IDAsIGZhdF9zaXplID0gMDtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGZpbGUgPSBjZmIuRmlsZUluZGV4W2ldO1xuXHRcdFx0aWYoIWZpbGUuY29udGVudCkgY29udGludWU7XG5cdFx0XHQvKjo6IGlmKGZpbGUuY29udGVudCA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHZhciBmbGVuID0gZmlsZS5jb250ZW50Lmxlbmd0aDtcblx0XHRcdGlmKGZsZW4gPiAwKXtcblx0XHRcdFx0aWYoZmxlbiA8IDB4MTAwMCkgbWluaV9zaXplICs9IChmbGVuICsgMHgzRikgPj4gNjtcblx0XHRcdFx0ZWxzZSBmYXRfc2l6ZSArPSAoZmxlbiArIDB4MDFGRikgPj4gOTtcblx0XHRcdH1cblx0XHR9XG5cdFx0dmFyIGRpcl9jbnQgPSAoY2ZiLkZ1bGxQYXRocy5sZW5ndGggKzMpID4+IDI7XG5cdFx0dmFyIG1pbmlfY250ID0gKG1pbmlfc2l6ZSArIDcpID4+IDM7XG5cdFx0dmFyIG1mYXRfY250ID0gKG1pbmlfc2l6ZSArIDB4N0YpID4+IDc7XG5cdFx0dmFyIGZhdF9iYXNlID0gbWluaV9jbnQgKyBmYXRfc2l6ZSArIGRpcl9jbnQgKyBtZmF0X2NudDtcblx0XHR2YXIgZmF0X2NudCA9IChmYXRfYmFzZSArIDB4N0YpID4+IDc7XG5cdFx0dmFyIGRpZmF0X2NudCA9IGZhdF9jbnQgPD0gMTA5ID8gMCA6IE1hdGguY2VpbCgoZmF0X2NudC0xMDkpLzB4N0YpO1xuXHRcdHdoaWxlKCgoZmF0X2Jhc2UgKyBmYXRfY250ICsgZGlmYXRfY250ICsgMHg3RikgPj4gNykgPiBmYXRfY250KSBkaWZhdF9jbnQgPSArK2ZhdF9jbnQgPD0gMTA5ID8gMCA6IE1hdGguY2VpbCgoZmF0X2NudC0xMDkpLzB4N0YpO1xuXHRcdHZhciBMID0gIFsxLCBkaWZhdF9jbnQsIGZhdF9jbnQsIG1mYXRfY250LCBkaXJfY250LCBmYXRfc2l6ZSwgbWluaV9zaXplLCAwXTtcblx0XHRjZmIuRmlsZUluZGV4WzBdLnNpemUgPSBtaW5pX3NpemUgPDwgNjtcblx0XHRMWzddID0gKGNmYi5GaWxlSW5kZXhbMF0uc3RhcnQ9TFswXStMWzFdK0xbMl0rTFszXStMWzRdK0xbNV0pKygoTFs2XSs3KSA+PiAzKTtcblx0XHRyZXR1cm4gTDtcblx0fSkoY2ZiKTtcblx0dmFyIG8gPSBuZXdfYnVmKExbN10gPDwgOSk7XG5cdHZhciBpID0gMCwgVCA9IDA7XG5cdHtcblx0XHRmb3IoaSA9IDA7IGkgPCA4OyArK2kpIG8ud3JpdGVfc2hpZnQoMSwgSEVBREVSX1NJR1tpXSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgODsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDNFKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAwMyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkUpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHgwMDA5KTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4MDAwNik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgMzsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBMWzJdKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbMF0gKyBMWzFdICsgTFsyXSArIExbM10gLSAxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMTw8MTIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFszXSA/IExbMF0gKyBMWzFdICsgTFsyXSAtIDE6IEVORE9GQ0hBSU4pO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgTFszXSk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgTFsxXSA/IExbMF0gLSAxOiBFTkRPRkNIQUlOKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIExbMV0pO1xuXHRcdGZvcihpID0gMDsgaSA8IDEwOTsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBpIDwgTFsyXSA/IExbMV0gKyBpIDogLTEpO1xuXHR9XG5cdGlmKExbMV0pIHtcblx0XHRmb3IoVCA9IDA7IFQgPCBMWzFdOyArK1QpIHtcblx0XHRcdGZvcig7IGkgPCAyMzYgKyBUICogMTI3OyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGkgPCBMWzJdID8gTFsxXSArIGkgOiAtMSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KC00LCBUID09PSBMWzFdIC0gMSA/IEVORE9GQ0hBSU4gOiBUICsgMSk7XG5cdFx0fVxuXHR9XG5cdHZhciBjaGFpbml0ID0gZnVuY3Rpb24ody8qOm51bWJlciovKS8qOnZvaWQqLyB7XG5cdFx0Zm9yKFQgKz0gdzsgaTxULTE7ICsraSkgby53cml0ZV9zaGlmdCgtNCwgaSsxKTtcblx0XHRpZih3KSB7ICsraTsgby53cml0ZV9zaGlmdCgtNCwgRU5ET0ZDSEFJTik7IH1cblx0fTtcblx0VCA9IGkgPSAwO1xuXHRmb3IoVCs9TFsxXTsgaTxUOyArK2kpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5ESUZTRUNUKTtcblx0Zm9yKFQrPUxbMl07IGk8VDsgKytpKSBvLndyaXRlX3NoaWZ0KC00LCBjb25zdHMuRkFUU0VDVCk7XG5cdGNoYWluaXQoTFszXSk7XG5cdGNoYWluaXQoTFs0XSk7XG5cdHZhciBqLyo6bnVtYmVyKi8gPSAwLCBmbGVuLyo6bnVtYmVyKi8gPSAwO1xuXHR2YXIgZmlsZS8qOkNGQkVudHJ5Ki8gPSBjZmIuRmlsZUluZGV4WzBdO1xuXHRmb3IoOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikge1xuXHRcdGZpbGUgPSBjZmIuRmlsZUluZGV4W2pdO1xuXHRcdGlmKCFmaWxlLmNvbnRlbnQpIGNvbnRpbnVlO1xuXHRcdC8qOjogaWYoZmlsZS5jb250ZW50ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGZsZW4gPSBmaWxlLmNvbnRlbnQubGVuZ3RoO1xuXHRcdGlmKGZsZW4gPCAweDEwMDApIGNvbnRpbnVlO1xuXHRcdGZpbGUuc3RhcnQgPSBUO1xuXHRcdGNoYWluaXQoKGZsZW4gKyAweDAxRkYpID4+IDkpO1xuXHR9XG5cdGNoYWluaXQoKExbNl0gKyA3KSA+PiAzKTtcblx0d2hpbGUoby5sICYgMHgxRkYpIG8ud3JpdGVfc2hpZnQoLTQsIGNvbnN0cy5FTkRPRkNIQUlOKTtcblx0VCA9IGkgPSAwO1xuXHRmb3IoaiA9IDA7IGogPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytqKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbal07XG5cdFx0aWYoIWZpbGUuY29udGVudCkgY29udGludWU7XG5cdFx0Lyo6OiBpZihmaWxlLmNvbnRlbnQgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdFx0ZmxlbiA9IGZpbGUuY29udGVudC5sZW5ndGg7XG5cdFx0aWYoIWZsZW4gfHwgZmxlbiA+PSAweDEwMDApIGNvbnRpbnVlO1xuXHRcdGZpbGUuc3RhcnQgPSBUO1xuXHRcdGNoYWluaXQoKGZsZW4gKyAweDNGKSA+PiA2KTtcblx0fVxuXHR3aGlsZShvLmwgJiAweDFGRikgby53cml0ZV9zaGlmdCgtNCwgY29uc3RzLkVORE9GQ0hBSU4pO1xuXHRmb3IoaSA9IDA7IGkgPCBMWzRdPDwyOyArK2kpIHtcblx0XHR2YXIgbm0gPSBjZmIuRnVsbFBhdGhzW2ldO1xuXHRcdGlmKCFubSB8fCBubS5sZW5ndGggPT09IDApIHtcblx0XHRcdGZvcihqID0gMDsgaiA8IDE3OyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRmb3IoaiA9IDA7IGogPCAzOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgLTEpO1xuXHRcdFx0Zm9yKGogPSAwOyBqIDwgMTI7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZihpID09PSAwKSBmaWxlLnN0YXJ0ID0gZmlsZS5zaXplID8gZmlsZS5zdGFydCAtIDEgOiBFTkRPRkNIQUlOO1xuXHRcdHZhciBfbm0vKjpzdHJpbmcqLyA9IChpID09PSAwICYmIF9vcHRzLnJvb3QpIHx8IGZpbGUubmFtZTtcblx0XHRmbGVuID0gMiooX25tLmxlbmd0aCsxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDY0LCBfbm0sIFwidXRmMTZsZVwiKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIGZsZW4pO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgZmlsZS50eXBlKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIGZpbGUuY29sb3IpO1xuXHRcdG8ud3JpdGVfc2hpZnQoLTQsIGZpbGUuTCk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgZmlsZS5SKTtcblx0XHRvLndyaXRlX3NoaWZ0KC00LCBmaWxlLkMpO1xuXHRcdGlmKCFmaWxlLmNsc2lkKSBmb3IoaiA9IDA7IGogPCA0OyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0ZWxzZSBvLndyaXRlX3NoaWZ0KDE2LCBmaWxlLmNsc2lkLCBcImhleFwiKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIGZpbGUuc3RhdGUgfHwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlsZS5zdGFydCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCBmaWxlLnNpemUpOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR9XG5cdGZvcihpID0gMTsgaSA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2kpIHtcblx0XHRmaWxlID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHQvKjo6IGlmKCFmaWxlLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGlmKGZpbGUuc2l6ZSA+PSAweDEwMDApIHtcblx0XHRcdG8ubCA9IChmaWxlLnN0YXJ0KzEpIDw8IDk7XG5cdFx0XHRpZiAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZmlsZS5jb250ZW50KSkge1xuXHRcdFx0XHRmaWxlLmNvbnRlbnQuY29weShvLCBvLmwsIDAsIGZpbGUuc2l6ZSk7XG5cdFx0XHRcdC8vIG8gaXMgYSAwLWZpbGxlZCBCdWZmZXIgc28ganVzdCBzZXQgbmV4dCBvZmZzZXRcblx0XHRcdFx0by5sICs9IChmaWxlLnNpemUgKyA1MTEpICYgLTUxMjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZvcihqID0gMDsgaiA8IGZpbGUuc2l6ZTsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIGZpbGUuY29udGVudFtqXSk7XG5cdFx0XHRcdGZvcig7IGogJiAweDFGRjsgKytqKSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRmb3IoaSA9IDE7IGkgPCBjZmIuRmlsZUluZGV4Lmxlbmd0aDsgKytpKSB7XG5cdFx0ZmlsZSA9IGNmYi5GaWxlSW5kZXhbaV07XG5cdFx0Lyo6OiBpZighZmlsZS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRpZihmaWxlLnNpemUgPiAwICYmIGZpbGUuc2l6ZSA8IDB4MTAwMCkge1xuXHRcdFx0aWYgKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGZpbGUuY29udGVudCkpIHtcblx0XHRcdFx0ZmlsZS5jb250ZW50LmNvcHkobywgby5sLCAwLCBmaWxlLnNpemUpO1xuXHRcdFx0XHQvLyBvIGlzIGEgMC1maWxsZWQgQnVmZmVyIHNvIGp1c3Qgc2V0IG5leHQgb2Zmc2V0XG5cdFx0XHRcdG8ubCArPSAoZmlsZS5zaXplICsgNjMpICYgLTY0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm9yKGogPSAwOyBqIDwgZmlsZS5zaXplOyArK2opIG8ud3JpdGVfc2hpZnQoMSwgZmlsZS5jb250ZW50W2pdKTtcblx0XHRcdFx0Zm9yKDsgaiAmIDB4M0Y7ICsraikgby53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYgKGhhc19idWYpIHtcblx0XHRvLmwgPSBvLmxlbmd0aDtcblx0fSBlbHNlIHtcblx0XHQvLyBXaGVuIHVzaW5nIEJ1ZmZlciwgYWxyZWFkeSAwLWZpbGxlZFxuXHRcdHdoaWxlKG8ubCA8IG8ubGVuZ3RoKSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR9XG5cdHJldHVybiBvO1xufVxuLyogW01TLUNGQl0gMi42LjQgKFVuaWNvZGUgMy4wLjEgY2FzZSBjb252ZXJzaW9uKSAqL1xuZnVuY3Rpb24gZmluZChjZmIvKjpDRkJDb250YWluZXIqLywgcGF0aC8qOnN0cmluZyovKS8qOj9DRkJFbnRyeSovIHtcblx0dmFyIFVDRnVsbFBhdGhzLyo6QXJyYXk8c3RyaW5nPiovID0gY2ZiLkZ1bGxQYXRocy5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC50b1VwcGVyQ2FzZSgpOyB9KTtcblx0dmFyIFVDUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBVQ0Z1bGxQYXRocy5tYXAoZnVuY3Rpb24oeCkgeyB2YXIgeSA9IHguc3BsaXQoXCIvXCIpOyByZXR1cm4geVt5Lmxlbmd0aCAtICh4LnNsaWNlKC0xKSA9PSBcIi9cIiA/IDIgOiAxKV07IH0pO1xuXHR2YXIgay8qOmJvb2xlYW4qLyA9IGZhbHNlO1xuXHRpZihwYXRoLmNoYXJDb2RlQXQoMCkgPT09IDQ3IC8qIFwiL1wiICovKSB7IGsgPSB0cnVlOyBwYXRoID0gVUNGdWxsUGF0aHNbMF0uc2xpY2UoMCwgLTEpICsgcGF0aDsgfVxuXHRlbHNlIGsgPSBwYXRoLmluZGV4T2YoXCIvXCIpICE9PSAtMTtcblx0dmFyIFVDUGF0aC8qOnN0cmluZyovID0gcGF0aC50b1VwcGVyQ2FzZSgpO1xuXHR2YXIgdy8qOm51bWJlciovID0gayA9PT0gdHJ1ZSA/IFVDRnVsbFBhdGhzLmluZGV4T2YoVUNQYXRoKSA6IFVDUGF0aHMuaW5kZXhPZihVQ1BhdGgpO1xuXHRpZih3ICE9PSAtMSkgcmV0dXJuIGNmYi5GaWxlSW5kZXhbd107XG5cblx0dmFyIG0gPSAhVUNQYXRoLm1hdGNoKGNocjEpO1xuXHRVQ1BhdGggPSBVQ1BhdGgucmVwbGFjZShjaHIwLCcnKTtcblx0aWYobSkgVUNQYXRoID0gVUNQYXRoLnJlcGxhY2UoY2hyMSwnIScpO1xuXHRmb3IodyA9IDA7IHcgPCBVQ0Z1bGxQYXRocy5sZW5ndGg7ICsrdykge1xuXHRcdGlmKChtID8gVUNGdWxsUGF0aHNbd10ucmVwbGFjZShjaHIxLCchJykgOiBVQ0Z1bGxQYXRoc1t3XSkucmVwbGFjZShjaHIwLCcnKSA9PSBVQ1BhdGgpIHJldHVybiBjZmIuRmlsZUluZGV4W3ddO1xuXHRcdGlmKChtID8gVUNQYXRoc1t3XS5yZXBsYWNlKGNocjEsJyEnKSA6IFVDUGF0aHNbd10pLnJlcGxhY2UoY2hyMCwnJykgPT0gVUNQYXRoKSByZXR1cm4gY2ZiLkZpbGVJbmRleFt3XTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cbi8qKiBDRkIgQ29uc3RhbnRzICovXG52YXIgTVNTWiA9IDY0OyAvKiBNaW5pIFNlY3RvciBTaXplID0gMTw8NiAqL1xuLy92YXIgTVNDU1ogPSA0MDk2OyAvKiBNaW5pIFN0cmVhbSBDdXRvZmYgU2l6ZSAqL1xuLyogMi4xIENvbXBvdW5kIEZpbGUgU2VjdG9yIE51bWJlcnMgYW5kIFR5cGVzICovXG52YXIgRU5ET0ZDSEFJTiA9IC0yO1xuLyogMi4yIENvbXBvdW5kIEZpbGUgSGVhZGVyICovXG52YXIgSEVBREVSX1NJR05BVFVSRSA9ICdkMGNmMTFlMGExYjExYWUxJztcbnZhciBIRUFERVJfU0lHID0gWzB4RDAsIDB4Q0YsIDB4MTEsIDB4RTAsIDB4QTEsIDB4QjEsIDB4MUEsIDB4RTFdO1xudmFyIEhFQURFUl9DTFNJRCA9ICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc7XG52YXIgY29uc3RzID0ge1xuXHQvKiAyLjEgQ29tcHVuZCBGaWxlIFNlY3RvciBOdW1iZXJzIGFuZCBUeXBlcyAqL1xuXHRNQVhSRUdTRUNUOiAtNixcblx0RElGU0VDVDogLTQsXG5cdEZBVFNFQ1Q6IC0zLFxuXHRFTkRPRkNIQUlOOiBFTkRPRkNIQUlOLFxuXHRGUkVFU0VDVDogLTEsXG5cdC8qIDIuMiBDb21wb3VuZCBGaWxlIEhlYWRlciAqL1xuXHRIRUFERVJfU0lHTkFUVVJFOiBIRUFERVJfU0lHTkFUVVJFLFxuXHRIRUFERVJfTUlOT1JfVkVSU0lPTjogJzNlMDAnLFxuXHRNQVhSRUdTSUQ6IC02LFxuXHROT1NUUkVBTTogLTEsXG5cdEhFQURFUl9DTFNJRDogSEVBREVSX0NMU0lELFxuXHQvKiAyLjYuMSBDb21wb3VuZCBGaWxlIERpcmVjdG9yeSBFbnRyeSAqL1xuXHRFbnRyeVR5cGVzOiBbJ3Vua25vd24nLCdzdG9yYWdlJywnc3RyZWFtJywnbG9ja2J5dGVzJywncHJvcGVydHknLCdyb290J11cbn07XG5cbmZ1bmN0aW9uIHdyaXRlX2ZpbGUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjp2b2lkKi8ge1xuXHRnZXRfZnMoKTtcblx0dmFyIG8gPSBfd3JpdGUoY2ZiLCBvcHRpb25zKTtcblx0Lyo6OiBpZih0eXBlb2YgQnVmZmVyID09ICd1bmRlZmluZWQnIHx8ICFCdWZmZXIuaXNCdWZmZXIobykgfHwgIShvIGluc3RhbmNlb2YgQnVmZmVyKSkgdGhyb3cgbmV3IEVycm9yKFwidW5yZWFjaGFibGVcIik7ICovXG5cdGZzLndyaXRlRmlsZVN5bmMoZmlsZW5hbWUsIG8pO1xufVxuXG5mdW5jdGlvbiBhMnMoby8qOlJhd0J5dGVzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgb3V0ID0gbmV3IEFycmF5KG8ubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIG91dFtpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUob1tpXSk7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gd3JpdGUoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG9wdGlvbnMvKjpDRkJXcml0ZU9wdHMqLykvKjpSYXdCeXRlc3xzdHJpbmcqLyB7XG5cdHZhciBvID0gX3dyaXRlKGNmYiwgb3B0aW9ucyk7XG5cdHN3aXRjaChvcHRpb25zICYmIG9wdGlvbnMudHlwZSB8fCBcImJ1ZmZlclwiKSB7XG5cdFx0Y2FzZSBcImZpbGVcIjogZ2V0X2ZzKCk7IGZzLndyaXRlRmlsZVN5bmMob3B0aW9ucy5maWxlbmFtZSwgKG8vKjphbnkqLykpOyByZXR1cm4gbztcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiB0eXBlb2YgbyA9PSBcInN0cmluZ1wiID8gbyA6IGEycyhvKTtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBCYXNlNjRfZW5jb2RlKHR5cGVvZiBvID09IFwic3RyaW5nXCIgPyBvIDogYTJzKG8pKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IGlmKGhhc19idWYpIHJldHVybiBCdWZmZXIuaXNCdWZmZXIobykgPyBvIDogQnVmZmVyX2Zyb20obyk7XG5cdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSBcImFycmF5XCI6IHJldHVybiB0eXBlb2YgbyA9PSBcInN0cmluZ1wiID8gczJhKG8pIDogbztcblx0fVxuXHRyZXR1cm4gbztcbn1cbi8qIG5vZGUgPCA4LjEgemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkLCBzbyBkZWZhdWx0IHRvIHB1cmUgSlMgKi9cbnZhciBfemxpYjtcbmZ1bmN0aW9uIHVzZV96bGliKHpsaWIpIHsgdHJ5IHtcblx0dmFyIEluZmxhdGVSYXcgPSB6bGliLkluZmxhdGVSYXc7XG5cdHZhciBJbmZsUmF3ID0gbmV3IEluZmxhdGVSYXcoKTtcblx0SW5mbFJhdy5fcHJvY2Vzc0NodW5rKG5ldyBVaW50OEFycmF5KFszLCAwXSksIEluZmxSYXcuX2ZpbmlzaEZsdXNoRmxhZyk7XG5cdGlmKEluZmxSYXcuYnl0ZXNSZWFkKSBfemxpYiA9IHpsaWI7XG5cdGVsc2UgdGhyb3cgbmV3IEVycm9yKFwiemxpYiBkb2VzIG5vdCBleHBvc2UgYnl0ZXNSZWFkXCIpO1xufSBjYXRjaChlKSB7Y29uc29sZS5lcnJvcihcImNhbm5vdCB1c2UgbmF0aXZlIHpsaWI6IFwiICsgKGUubWVzc2FnZSB8fCBlKSk7IH0gfVxuXG5mdW5jdGlvbiBfaW5mbGF0ZVJhd1N5bmMocGF5bG9hZCwgdXN6KSB7XG5cdGlmKCFfemxpYikgcmV0dXJuIF9pbmZsYXRlKHBheWxvYWQsIHVzeik7XG5cdHZhciBJbmZsYXRlUmF3ID0gX3psaWIuSW5mbGF0ZVJhdztcblx0dmFyIEluZmxSYXcgPSBuZXcgSW5mbGF0ZVJhdygpO1xuXHR2YXIgb3V0ID0gSW5mbFJhdy5fcHJvY2Vzc0NodW5rKHBheWxvYWQuc2xpY2UocGF5bG9hZC5sKSwgSW5mbFJhdy5fZmluaXNoRmx1c2hGbGFnKTtcblx0cGF5bG9hZC5sICs9IEluZmxSYXcuYnl0ZXNSZWFkO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBfZGVmbGF0ZVJhd1N5bmMocGF5bG9hZCkge1xuXHRyZXR1cm4gX3psaWIgPyBfemxpYi5kZWZsYXRlUmF3U3luYyhwYXlsb2FkKSA6IF9kZWZsYXRlKHBheWxvYWQpO1xufVxudmFyIENMRU5fT1JERVIgPSBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuLyogIExFTl9JRCA9IFsgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjEsIDI2MiwgMjYzLCAyNjQsIDI2NSwgMjY2LCAyNjcsIDI2OCwgMjY5LCAyNzAsIDI3MSwgMjcyLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAyNzksIDI4MCwgMjgxLCAyODIsIDI4MywgMjg0LCAyODUgXTsgKi9cbnZhciBMRU5fTE4gPSBbICAgMywgICA0LCAgIDUsICAgNiwgICA3LCAgIDgsICAgOSwgIDEwLCAgMTEsICAxMyAsIDE1LCAgMTcsICAxOSwgIDIzLCAgMjcsICAzMSwgIDM1LCAgNDMsICA1MSwgIDU5LCAgNjcsICA4MywgIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4IF07XG5cbi8qICBEU1RfSUQgPSBbICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LCAxMCwgMTEsIDEyLCAxMywgIDE0LCAgMTUsICAxNiwgIDE3LCAgMTgsICAxOSwgICAyMCwgICAyMSwgICAyMiwgICAyMywgICAyNCwgICAyNSwgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSBdOyAqL1xudmFyIERTVF9MTiA9IFsgIDEsICAyLCAgMywgIDQsICA1LCAgNywgIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LCA4MTkzLCAxMjI4OSwgMTYzODUsIDI0NTc3IF07XG5cbmZ1bmN0aW9uIGJpdF9zd2FwXzgobikgeyB2YXIgdCA9ICgoKCgobjw8MSl8KG48PDExKSkgJiAweDIyMTEwKSB8ICgoKG48PDUpfChuPDwxNSkpICYgMHg4ODQ0MCkpKTsgcmV0dXJuICgodD4+MTYpIHwgKHQ+PjgpIHx0KSYweEZGOyB9XG5cbnZhciB1c2VfdHlwZWRfYXJyYXlzID0gdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnO1xuXG52YXIgYml0c3dhcDggPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMTw8OCkgOiBbXTtcbmZvcih2YXIgcSA9IDA7IHEgPCAoMTw8OCk7ICsrcSkgYml0c3dhcDhbcV0gPSBiaXRfc3dhcF84KHEpO1xuXG5mdW5jdGlvbiBiaXRfc3dhcF9uKG4sIGIpIHtcblx0dmFyIHJldiA9IGJpdHN3YXA4W24gJiAweEZGXTtcblx0aWYoYiA8PSA4KSByZXR1cm4gcmV2ID4+PiAoOC1iKTtcblx0cmV2ID0gKHJldiA8PCA4KSB8IGJpdHN3YXA4WyhuPj44KSYweEZGXTtcblx0aWYoYiA8PSAxNikgcmV0dXJuIHJldiA+Pj4gKDE2LWIpO1xuXHRyZXYgPSAocmV2IDw8IDgpIHwgYml0c3dhcDhbKG4+PjE2KSYweEZGXTtcblx0cmV0dXJuIHJldiA+Pj4gKDI0LWIpO1xufVxuXG4vKiBoZWxwZXJzIGZvciB1bmFsaWduZWQgYml0IHJlYWRzICovXG5mdW5jdGlvbiByZWFkX2JpdHNfMihidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSA2ID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgwMzsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzMoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gNSA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4MDc7IH1cbmZ1bmN0aW9uIHJlYWRfYml0c180KGJ1ZiwgYmwpIHsgdmFyIHcgPSAoYmwmNyksIGggPSAoYmw+Pj4zKTsgcmV0dXJuICgoYnVmW2hdfCh3IDw9IDQgPyAwIDogYnVmW2grMV08PDgpKT4+PncpJiAweDBGOyB9XG5mdW5jdGlvbiByZWFkX2JpdHNfNShidWYsIGJsKSB7IHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+Myk7IHJldHVybiAoKGJ1ZltoXXwodyA8PSAzID8gMCA6IGJ1ZltoKzFdPDw4KSk+Pj53KSYgMHgxRjsgfVxuZnVuY3Rpb24gcmVhZF9iaXRzXzcoYnVmLCBibCkgeyB2YXIgdyA9IChibCY3KSwgaCA9IChibD4+PjMpOyByZXR1cm4gKChidWZbaF18KHcgPD0gMSA/IDAgOiBidWZbaCsxXTw8OCkpPj4+dykmIDB4N0Y7IH1cblxuLyogd29ya3MgdXAgdG8gbiA9IDMgKiA4ICsgMSA9IDI1ICovXG5mdW5jdGlvbiByZWFkX2JpdHNfbihidWYsIGJsLCBuKSB7XG5cdHZhciB3ID0gKGJsJjcpLCBoID0gKGJsPj4+MyksIGYgPSAoKDE8PG4pLTEpO1xuXHR2YXIgdiA9IGJ1ZltoXSA+Pj4gdztcblx0aWYobiA8IDggLSB3KSByZXR1cm4gdiAmIGY7XG5cdHYgfD0gYnVmW2grMV08PCg4LXcpO1xuXHRpZihuIDwgMTYgLSB3KSByZXR1cm4gdiAmIGY7XG5cdHYgfD0gYnVmW2grMl08PCgxNi13KTtcblx0aWYobiA8IDI0IC0gdykgcmV0dXJuIHYgJiBmO1xuXHR2IHw9IGJ1ZltoKzNdPDwoMjQtdyk7XG5cdHJldHVybiB2ICYgZjtcbn1cblxuLyogaGVscGVycyBmb3IgdW5hbGlnbmVkIGJpdCB3cml0ZXMgKi9cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfMyhidWYsIGJsLCB2KSB7IHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdGlmKHcgPD0gNSkgYnVmW2hdIHw9ICh2ICYgNykgPDwgdztcblx0ZWxzZSB7XG5cdFx0YnVmW2hdIHw9ICh2IDw8IHcpICYgMHhGRjtcblx0XHRidWZbaCsxXSA9ICh2JjcpID4+ICg4LXcpO1xuXHR9XG5cdHJldHVybiBibCArIDM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfMShidWYsIGJsLCB2KSB7XG5cdHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdHYgPSAodiYxKSA8PCB3O1xuXHRidWZbaF0gfD0gdjtcblx0cmV0dXJuIGJsICsgMTtcbn1cbmZ1bmN0aW9uIHdyaXRlX2JpdHNfOChidWYsIGJsLCB2KSB7XG5cdHZhciB3ID0gYmwgJiA3LCBoID0gYmwgPj4+IDM7XG5cdHYgPDw9IHc7XG5cdGJ1ZltoXSB8PSAgdiAmIDB4RkY7IHYgPj4+PSA4O1xuXHRidWZbaCsxXSA9IHY7XG5cdHJldHVybiBibCArIDg7XG59XG5mdW5jdGlvbiB3cml0ZV9iaXRzXzE2KGJ1ZiwgYmwsIHYpIHtcblx0dmFyIHcgPSBibCAmIDcsIGggPSBibCA+Pj4gMztcblx0diA8PD0gdztcblx0YnVmW2hdIHw9ICB2ICYgMHhGRjsgdiA+Pj49IDg7XG5cdGJ1ZltoKzFdID0gdiAmIDB4RkY7XG5cdGJ1ZltoKzJdID0gdiA+Pj4gODtcblx0cmV0dXJuIGJsICsgMTY7XG59XG5cbi8qIHVudGlsIEFycmF5QnVmZmVyI3JlYWxsb2MgaXMgYSB0aGluZywgZmFrZSBhIHJlYWxsb2MgKi9cbmZ1bmN0aW9uIHJlYWxsb2MoYiwgc3ovKjpudW1iZXIqLykge1xuXHR2YXIgTCA9IGIubGVuZ3RoLCBNID0gMipMID4gc3ogPyAyKkwgOiBzeiArIDUsIGkgPSAwO1xuXHRpZihMID49IHN6KSByZXR1cm4gYjtcblx0aWYoaGFzX2J1Zikge1xuXHRcdHZhciBvID0gbmV3X3Vuc2FmZV9idWYoTSk7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZihiLmNvcHkpIGIuY29weShvKTtcblx0XHRlbHNlIGZvcig7IGkgPCBiLmxlbmd0aDsgKytpKSBvW2ldID0gYltpXTtcblx0XHRyZXR1cm4gbztcblx0fSBlbHNlIGlmKHVzZV90eXBlZF9hcnJheXMpIHtcblx0XHR2YXIgYSA9IG5ldyBVaW50OEFycmF5KE0pO1xuXHRcdGlmKGEuc2V0KSBhLnNldChiKTtcblx0XHRlbHNlIGZvcig7IGkgPCBMOyArK2kpIGFbaV0gPSBiW2ldO1xuXHRcdHJldHVybiBhO1xuXHR9XG5cdGIubGVuZ3RoID0gTTtcblx0cmV0dXJuIGI7XG59XG5cbi8qIHplcm8tZmlsbGVkIGFycmF5cyBmb3Igb2xkZXIgYnJvd3NlcnMgKi9cbmZ1bmN0aW9uIHplcm9fZmlsbF9hcnJheShuKSB7XG5cdHZhciBvID0gbmV3IEFycmF5KG4pO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbjsgKytpKSBvW2ldID0gMDtcblx0cmV0dXJuIG87XG59XG5cbi8qIGJ1aWxkIHRyZWUgKHVzZWQgZm9yIGxpdGVyYWxzIGFuZCBsZW5ndGhzKSAqL1xuZnVuY3Rpb24gYnVpbGRfdHJlZShjbGVucywgY21hcCwgTUFYLyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8ge1xuXHR2YXIgbWF4bGVuID0gMSwgdyA9IDAsIGkgPSAwLCBqID0gMCwgY2NvZGUgPSAwLCBMID0gY2xlbnMubGVuZ3RoO1xuXG5cdHZhciBibF9jb3VudCAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyKSA6IHplcm9fZmlsbF9hcnJheSgzMik7XG5cdGZvcihpID0gMDsgaSA8IDMyOyArK2kpIGJsX2NvdW50W2ldID0gMDtcblxuXHRmb3IoaSA9IEw7IGkgPCBNQVg7ICsraSkgY2xlbnNbaV0gPSAwO1xuXHRMID0gY2xlbnMubGVuZ3RoO1xuXG5cdHZhciBjdHJlZSA9IHVzZV90eXBlZF9hcnJheXMgPyBuZXcgVWludDE2QXJyYXkoTCkgOiB6ZXJvX2ZpbGxfYXJyYXkoTCk7IC8vIFtdXG5cblx0LyogYnVpbGQgY29kZSB0cmVlICovXG5cdGZvcihpID0gMDsgaSA8IEw7ICsraSkge1xuXHRcdGJsX2NvdW50Wyh3ID0gY2xlbnNbaV0pXSsrO1xuXHRcdGlmKG1heGxlbiA8IHcpIG1heGxlbiA9IHc7XG5cdFx0Y3RyZWVbaV0gPSAwO1xuXHR9XG5cdGJsX2NvdW50WzBdID0gMDtcblx0Zm9yKGkgPSAxOyBpIDw9IG1heGxlbjsgKytpKSBibF9jb3VudFtpKzE2XSA9IChjY29kZSA9IChjY29kZSArIGJsX2NvdW50W2ktMV0pPDwxKTtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0Y2NvZGUgPSBjbGVuc1tpXTtcblx0XHRpZihjY29kZSAhPSAwKSBjdHJlZVtpXSA9IGJsX2NvdW50W2Njb2RlKzE2XSsrO1xuXHR9XG5cblx0LyogY21hcFttYXhsZW4gKyA0IGJpdHNdID0gKG9mZiYxNSkgKyAobGl0PDw0KSByZXZlcnNlIG1hcHBpbmcgKi9cblx0dmFyIGNsZW5pID0gMDtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSB7XG5cdFx0Y2xlbmkgPSBjbGVuc1tpXTtcblx0XHRpZihjbGVuaSAhPSAwKSB7XG5cdFx0XHRjY29kZSA9IGJpdF9zd2FwX24oY3RyZWVbaV0sIG1heGxlbik+PihtYXhsZW4tY2xlbmkpO1xuXHRcdFx0Zm9yKGogPSAoMTw8KG1heGxlbiArIDQgLSBjbGVuaSkpIC0gMTsgaj49MDsgLS1qKVxuXHRcdFx0XHRjbWFwW2Njb2RlfChqPDxjbGVuaSldID0gKGNsZW5pJjE1KSB8IChpPDw0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIG1heGxlbjtcbn1cblxuLyogRml4ZWQgSHVmZm1hbiAqL1xudmFyIGZpeF9sbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSg1MTIpIDogemVyb19maWxsX2FycmF5KDUxMik7XG52YXIgZml4X2RtYXAgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDMyKSAgOiB6ZXJvX2ZpbGxfYXJyYXkoMzIpO1xuaWYoIXVzZV90eXBlZF9hcnJheXMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDUxMjsgKytpKSBmaXhfbG1hcFtpXSA9IDA7XG5cdGZvcihpID0gMDsgaSA8IDMyOyArK2kpIGZpeF9kbWFwW2ldID0gMDtcbn1cbihmdW5jdGlvbigpIHtcblx0dmFyIGRsZW5zLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdHZhciBpID0gMDtcblx0Zm9yKDtpPDMyOyBpKyspIGRsZW5zLnB1c2goNSk7XG5cdGJ1aWxkX3RyZWUoZGxlbnMsIGZpeF9kbWFwLCAzMik7XG5cblx0dmFyIGNsZW5zLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdGkgPSAwO1xuXHRmb3IoOyBpPD0xNDM7IGkrKykgY2xlbnMucHVzaCg4KTtcblx0Zm9yKDsgaTw9MjU1OyBpKyspIGNsZW5zLnB1c2goOSk7XG5cdGZvcig7IGk8PTI3OTsgaSsrKSBjbGVucy5wdXNoKDcpO1xuXHRmb3IoOyBpPD0yODc7IGkrKykgY2xlbnMucHVzaCg4KTtcblx0YnVpbGRfdHJlZShjbGVucywgZml4X2xtYXAsIDI4OCk7XG59KSgpO3ZhciBfZGVmbGF0ZVJhdyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24gX2RlZmxhdGVSYXdJSUZFKCkge1xuXHR2YXIgRFNUX0xOX1JFID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDB4ODAwMCkgOiBbXTtcblx0dmFyIGogPSAwLCBrID0gMDtcblx0Zm9yKDsgaiA8IERTVF9MTi5sZW5ndGggLSAxOyArK2opIHtcblx0XHRmb3IoOyBrIDwgRFNUX0xOW2orMV07ICsraykgRFNUX0xOX1JFW2tdID0gajtcblx0fVxuXHRmb3IoO2sgPCAzMjc2ODsgKytrKSBEU1RfTE5fUkVba10gPSAyOTtcblxuXHR2YXIgTEVOX0xOX1JFID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDB4MTAzKSA6IFtdO1xuXHRmb3IoaiA9IDAsIGsgPSAwOyBqIDwgTEVOX0xOLmxlbmd0aCAtIDE7ICsraikge1xuXHRcdGZvcig7IGsgPCBMRU5fTE5baisxXTsgKytrKSBMRU5fTE5fUkVba10gPSBqO1xuXHR9XG5cblx0ZnVuY3Rpb24gd3JpdGVfc3RvcmVkKGRhdGEsIG91dCkge1xuXHRcdHZhciBib2ZmID0gMDtcblx0XHR3aGlsZShib2ZmIDwgZGF0YS5sZW5ndGgpIHtcblx0XHRcdHZhciBMID0gTWF0aC5taW4oMHhGRkZGLCBkYXRhLmxlbmd0aCAtIGJvZmYpO1xuXHRcdFx0dmFyIGggPSBib2ZmICsgTCA9PSBkYXRhLmxlbmd0aDtcblx0XHRcdG91dC53cml0ZV9zaGlmdCgxLCAraCk7XG5cdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgTCk7XG5cdFx0XHRvdXQud3JpdGVfc2hpZnQoMiwgKH5MKSAmIDB4RkZGRik7XG5cdFx0XHR3aGlsZShMLS0gPiAwKSBvdXRbb3V0LmwrK10gPSBkYXRhW2JvZmYrK107XG5cdFx0fVxuXHRcdHJldHVybiBvdXQubDtcblx0fVxuXG5cdC8qIEZpeGVkIEh1ZmZtYW4gKi9cblx0ZnVuY3Rpb24gd3JpdGVfaHVmZl9maXhlZChkYXRhLCBvdXQpIHtcblx0XHR2YXIgYmwgPSAwO1xuXHRcdHZhciBib2ZmID0gMDtcblx0XHR2YXIgYWRkcnMgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQxNkFycmF5KDB4ODAwMCkgOiBbXTtcblx0XHR3aGlsZShib2ZmIDwgZGF0YS5sZW5ndGgpIHtcblx0XHRcdHZhciBMID0gLyogZGF0YS5sZW5ndGggLSBib2ZmOyAqLyBNYXRoLm1pbigweEZGRkYsIGRhdGEubGVuZ3RoIC0gYm9mZik7XG5cblx0XHRcdC8qIHdyaXRlIGEgc3RvcmVkIGJsb2NrIGZvciBzaG9ydCBkYXRhICovXG5cdFx0XHRpZihMIDwgMTApIHtcblx0XHRcdFx0YmwgPSB3cml0ZV9iaXRzXzMob3V0LCBibCwgKyEhKGJvZmYgKyBMID09IGRhdGEubGVuZ3RoKSk7IC8vIGpzaGludCBpZ25vcmU6bGluZVxuXHRcdFx0XHRpZihibCAmIDcpIGJsICs9IDggLSAoYmwgJiA3KTtcblx0XHRcdFx0b3V0LmwgPSAoYmwgLyA4KSB8IDA7XG5cdFx0XHRcdG91dC53cml0ZV9zaGlmdCgyLCBMKTtcblx0XHRcdFx0b3V0LndyaXRlX3NoaWZ0KDIsICh+TCkgJiAweEZGRkYpO1xuXHRcdFx0XHR3aGlsZShMLS0gPiAwKSBvdXRbb3V0LmwrK10gPSBkYXRhW2JvZmYrK107XG5cdFx0XHRcdGJsID0gb3V0LmwgKiA4O1xuXHRcdFx0XHRjb250aW51ZTtcblx0XHRcdH1cblxuXHRcdFx0YmwgPSB3cml0ZV9iaXRzXzMob3V0LCBibCwgKyEhKGJvZmYgKyBMID09IGRhdGEubGVuZ3RoKSArIDIpOyAvLyBqc2hpbnQgaWdub3JlOmxpbmVcblx0XHRcdHZhciBoYXNoID0gMDtcblx0XHRcdHdoaWxlKEwtLSA+IDApIHtcblx0XHRcdFx0dmFyIGQgPSBkYXRhW2JvZmZdO1xuXHRcdFx0XHRoYXNoID0gKChoYXNoIDw8IDUpIF4gZCkgJiAweDdGRkY7XG5cblx0XHRcdFx0dmFyIG1hdGNoID0gLTEsIG1sZW4gPSAwO1xuXG5cdFx0XHRcdGlmKChtYXRjaCA9IGFkZHJzW2hhc2hdKSkge1xuXHRcdFx0XHRcdG1hdGNoIHw9IGJvZmYgJiB+MHg3RkZGO1xuXHRcdFx0XHRcdGlmKG1hdGNoID4gYm9mZikgbWF0Y2ggLT0gMHg4MDAwO1xuXHRcdFx0XHRcdGlmKG1hdGNoIDwgYm9mZikgd2hpbGUoZGF0YVttYXRjaCArIG1sZW5dID09IGRhdGFbYm9mZiArIG1sZW5dICYmIG1sZW4gPCAyNTApICsrbWxlbjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmKG1sZW4gPiAyKSB7XG5cdFx0XHRcdFx0LyogQ29weSBUb2tlbiAgKi9cblx0XHRcdFx0XHRkID0gTEVOX0xOX1JFW21sZW5dO1xuXHRcdFx0XHRcdGlmKGQgPD0gMjIpIGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2QrMV0+PjEpIC0gMTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfOChvdXQsIGJsLCAzKTtcblx0XHRcdFx0XHRcdGJsICs9IDU7XG5cdFx0XHRcdFx0XHR3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZC0yM10+PjUpO1xuXHRcdFx0XHRcdFx0YmwgKz0gMztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGxlbl9lYiA9IChkIDwgOCkgPyAwIDogKChkIC0gNCk+PjIpO1xuXHRcdFx0XHRcdGlmKGxlbl9lYiA+IDApIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfMTYob3V0LCBibCwgbWxlbiAtIExFTl9MTltkXSk7XG5cdFx0XHRcdFx0XHRibCArPSBsZW5fZWI7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0ZCA9IERTVF9MTl9SRVtib2ZmIC0gbWF0Y2hdO1xuXHRcdFx0XHRcdGJsID0gd3JpdGVfYml0c184KG91dCwgYmwsIGJpdHN3YXA4W2RdPj4zKTtcblx0XHRcdFx0XHRibCAtPSAzO1xuXG5cdFx0XHRcdFx0dmFyIGRzdF9lYiA9IGQgPCA0ID8gMCA6IChkLTIpPj4xO1xuXHRcdFx0XHRcdGlmKGRzdF9lYiA+IDApIHtcblx0XHRcdFx0XHRcdHdyaXRlX2JpdHNfMTYob3V0LCBibCwgYm9mZiAtIG1hdGNoIC0gRFNUX0xOW2RdKTtcblx0XHRcdFx0XHRcdGJsICs9IGRzdF9lYjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Zm9yKHZhciBxID0gMDsgcSA8IG1sZW47ICsrcSkge1xuXHRcdFx0XHRcdFx0YWRkcnNbaGFzaF0gPSBib2ZmICYgMHg3RkZGO1xuXHRcdFx0XHRcdFx0aGFzaCA9ICgoaGFzaCA8PCA1KSBeIGRhdGFbYm9mZl0pICYgMHg3RkZGO1xuXHRcdFx0XHRcdFx0Kytib2ZmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRMLT0gbWxlbiAtIDE7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0LyogTGl0ZXJhbCBUb2tlbiAqL1xuXHRcdFx0XHRcdGlmKGQgPD0gMTQzKSBkID0gZCArIDQ4O1xuXHRcdFx0XHRcdGVsc2UgYmwgPSB3cml0ZV9iaXRzXzEob3V0LCBibCwgMSk7XG5cdFx0XHRcdFx0YmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgYml0c3dhcDhbZF0pO1xuXHRcdFx0XHRcdGFkZHJzW2hhc2hdID0gYm9mZiAmIDB4N0ZGRjtcblx0XHRcdFx0XHQrK2JvZmY7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YmwgPSB3cml0ZV9iaXRzXzgob3V0LCBibCwgMCkgLSAxO1xuXHRcdH1cblx0XHRvdXQubCA9ICgoYmwgKyA3KS84KXwwO1xuXHRcdHJldHVybiBvdXQubDtcblx0fVxuXHRyZXR1cm4gZnVuY3Rpb24gX2RlZmxhdGVSYXcoZGF0YSwgb3V0KSB7XG5cdFx0aWYoZGF0YS5sZW5ndGggPCA4KSByZXR1cm4gd3JpdGVfc3RvcmVkKGRhdGEsIG91dCk7XG5cdFx0cmV0dXJuIHdyaXRlX2h1ZmZfZml4ZWQoZGF0YSwgb3V0KTtcblx0fTtcbn0pKCk7XG5cbmZ1bmN0aW9uIF9kZWZsYXRlKGRhdGEpIHtcblx0dmFyIGJ1ZiA9IG5ld19idWYoNTArTWF0aC5mbG9vcihkYXRhLmxlbmd0aCoxLjEpKTtcblx0dmFyIG9mZiA9IF9kZWZsYXRlUmF3KGRhdGEsIGJ1Zik7XG5cdHJldHVybiBidWYuc2xpY2UoMCwgb2ZmKTtcbn1cbi8qIG1vZGlmaWVkIGluZmxhdGUgZnVuY3Rpb24gYWxzbyBtb3ZlcyBvcmlnaW5hbCByZWFkIGhlYWQgKi9cblxudmFyIGR5bl9sbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMjc2OCkgOiB6ZXJvX2ZpbGxfYXJyYXkoMzI3NjgpO1xudmFyIGR5bl9kbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgzMjc2OCkgOiB6ZXJvX2ZpbGxfYXJyYXkoMzI3NjgpO1xudmFyIGR5bl9jbWFwID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50MTZBcnJheSgxMjgpICAgOiB6ZXJvX2ZpbGxfYXJyYXkoMTI4KTtcbnZhciBkeW5fbGVuXzEgPSAxLCBkeW5fbGVuXzIgPSAxO1xuXG4vKiA1LjUuMyBFeHBhbmRpbmcgSHVmZm1hbiBDb2RlcyAqL1xuZnVuY3Rpb24gZHluKGRhdGEsIGJvZmYvKjpudW1iZXIqLykge1xuXHQvKiBub21lbmNsYXR1cmUgZnJvbSBSRkMxOTUxIHJlZmVycyB0byBiaXQgdmFsdWVzOyB0aGVzZSBhcmUgb2Zmc2V0IGJ5IHRoZSBpbXBsaWNpdCBjb25zdGFudCAqL1xuXHR2YXIgX0hMSVQgPSByZWFkX2JpdHNfNShkYXRhLCBib2ZmKSArIDI1NzsgYm9mZiArPSA1O1xuXHR2YXIgX0hESVNUID0gcmVhZF9iaXRzXzUoZGF0YSwgYm9mZikgKyAxOyBib2ZmICs9IDU7XG5cdHZhciBfSENMRU4gPSByZWFkX2JpdHNfNChkYXRhLCBib2ZmKSArIDQ7IGJvZmYgKz0gNDtcblx0dmFyIHcgPSAwO1xuXG5cdC8qIGdyYWIgYW5kIHN0b3JlIGNvZGUgbGVuZ3RocyAqL1xuXHR2YXIgY2xlbnMgPSB1c2VfdHlwZWRfYXJyYXlzID8gbmV3IFVpbnQ4QXJyYXkoMTkpIDogemVyb19maWxsX2FycmF5KDE5KTtcblx0dmFyIGN0cmVlID0gWyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIF07XG5cdHZhciBtYXhsZW4gPSAxO1xuXHR2YXIgYmxfY291bnQgPSAgdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDgpIDogemVyb19maWxsX2FycmF5KDgpO1xuXHR2YXIgbmV4dF9jb2RlID0gdXNlX3R5cGVkX2FycmF5cyA/IG5ldyBVaW50OEFycmF5KDgpIDogemVyb19maWxsX2FycmF5KDgpO1xuXHR2YXIgTCA9IGNsZW5zLmxlbmd0aDsgLyogMTkgKi9cblx0Zm9yKHZhciBpID0gMDsgaSA8IF9IQ0xFTjsgKytpKSB7XG5cdFx0Y2xlbnNbQ0xFTl9PUkRFUltpXV0gPSB3ID0gcmVhZF9iaXRzXzMoZGF0YSwgYm9mZik7XG5cdFx0aWYobWF4bGVuIDwgdykgbWF4bGVuID0gdztcblx0XHRibF9jb3VudFt3XSsrO1xuXHRcdGJvZmYgKz0gMztcblx0fVxuXG5cdC8qIGJ1aWxkIGNvZGUgdHJlZSAqL1xuXHR2YXIgY2NvZGUgPSAwO1xuXHRibF9jb3VudFswXSA9IDA7XG5cdGZvcihpID0gMTsgaSA8PSBtYXhsZW47ICsraSkgbmV4dF9jb2RlW2ldID0gY2NvZGUgPSAoY2NvZGUgKyBibF9jb3VudFtpLTFdKTw8MTtcblx0Zm9yKGkgPSAwOyBpIDwgTDsgKytpKSBpZigoY2NvZGUgPSBjbGVuc1tpXSkgIT0gMCkgY3RyZWVbaV0gPSBuZXh0X2NvZGVbY2NvZGVdKys7XG5cdC8qIGNtYXBbNyBiaXRzIGZyb20gc3RyZWFtXSA9IChvZmYmNykgKyAobGl0PDwzKSAqL1xuXHR2YXIgY2xlbmkgPSAwO1xuXHRmb3IoaSA9IDA7IGkgPCBMOyArK2kpIHtcblx0XHRjbGVuaSA9IGNsZW5zW2ldO1xuXHRcdGlmKGNsZW5pICE9IDApIHtcblx0XHRcdGNjb2RlID0gYml0c3dhcDhbY3RyZWVbaV1dPj4oOC1jbGVuaSk7XG5cdFx0XHRmb3IodmFyIGogPSAoMTw8KDctY2xlbmkpKS0xOyBqPj0wOyAtLWopIGR5bl9jbWFwW2Njb2RlfChqPDxjbGVuaSldID0gKGNsZW5pJjcpIHwgKGk8PDMpO1xuXHRcdH1cblx0fVxuXG5cdC8qIHJlYWQgbGl0ZXJhbCBhbmQgZGlzdCBjb2RlcyBhdCBvbmNlICovXG5cdHZhciBoY29kZXMvKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0bWF4bGVuID0gMTtcblx0Zm9yKDsgaGNvZGVzLmxlbmd0aCA8IF9ITElUICsgX0hESVNUOykge1xuXHRcdGNjb2RlID0gZHluX2NtYXBbcmVhZF9iaXRzXzcoZGF0YSwgYm9mZildO1xuXHRcdGJvZmYgKz0gY2NvZGUgJiA3O1xuXHRcdHN3aXRjaCgoY2NvZGUgPj4+PSAzKSkge1xuXHRcdFx0Y2FzZSAxNjpcblx0XHRcdFx0dyA9IDMgKyByZWFkX2JpdHNfMihkYXRhLCBib2ZmKTsgYm9mZiArPSAyO1xuXHRcdFx0XHRjY29kZSA9IGhjb2Rlc1toY29kZXMubGVuZ3RoIC0gMV07XG5cdFx0XHRcdHdoaWxlKHctLSA+IDApIGhjb2Rlcy5wdXNoKGNjb2RlKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDE3OlxuXHRcdFx0XHR3ID0gMyArIHJlYWRfYml0c18zKGRhdGEsIGJvZmYpOyBib2ZmICs9IDM7XG5cdFx0XHRcdHdoaWxlKHctLSA+IDApIGhjb2Rlcy5wdXNoKDApO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMTg6XG5cdFx0XHRcdHcgPSAxMSArIHJlYWRfYml0c183KGRhdGEsIGJvZmYpOyBib2ZmICs9IDc7XG5cdFx0XHRcdHdoaWxlKHcgLS0gPiAwKSBoY29kZXMucHVzaCgwKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRoY29kZXMucHVzaChjY29kZSk7XG5cdFx0XHRcdGlmKG1heGxlbiA8IGNjb2RlKSBtYXhsZW4gPSBjY29kZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0LyogYnVpbGQgbGl0ZXJhbCAvIGxlbmd0aCB0cmVlcyAqL1xuXHR2YXIgaDEgPSBoY29kZXMuc2xpY2UoMCwgX0hMSVQpLCBoMiA9IGhjb2Rlcy5zbGljZShfSExJVCk7XG5cdGZvcihpID0gX0hMSVQ7IGkgPCAyODY7ICsraSkgaDFbaV0gPSAwO1xuXHRmb3IoaSA9IF9IRElTVDsgaSA8IDMwOyArK2kpIGgyW2ldID0gMDtcblx0ZHluX2xlbl8xID0gYnVpbGRfdHJlZShoMSwgZHluX2xtYXAsIDI4Nik7XG5cdGR5bl9sZW5fMiA9IGJ1aWxkX3RyZWUoaDIsIGR5bl9kbWFwLCAzMCk7XG5cdHJldHVybiBib2ZmO1xufVxuXG4vKiByZXR1cm4gWyBkYXRhLCBieXRlc1JlYWQgXSAqL1xuZnVuY3Rpb24gaW5mbGF0ZShkYXRhLCB1c3ovKjpudW1iZXIqLykge1xuXHQvKiBzaG9ydGNpcmN1aXQgZm9yIGVtcHR5IGJ1ZmZlciBbMHgwMywgMHgwMF0gKi9cblx0aWYoZGF0YVswXSA9PSAzICYmICEoZGF0YVsxXSAmIDB4MykpIHsgcmV0dXJuIFtuZXdfcmF3X2J1Zih1c3opLCAyXTsgfVxuXG5cdC8qIGJpdCBvZmZzZXQgKi9cblx0dmFyIGJvZmYgPSAwO1xuXG5cdC8qIGhlYWRlciBpbmNsdWRlcyBmaW5hbCBiaXQgYW5kIHR5cGUgYml0cyAqL1xuXHR2YXIgaGVhZGVyID0gMDtcblxuXHR2YXIgb3V0YnVmID0gbmV3X3Vuc2FmZV9idWYodXN6ID8gdXN6IDogKDE8PDE4KSk7XG5cdHZhciB3b2ZmID0gMDtcblx0dmFyIE9MID0gb3V0YnVmLmxlbmd0aD4+PjA7XG5cdHZhciBtYXhfbGVuXzEgPSAwLCBtYXhfbGVuXzIgPSAwO1xuXG5cdHdoaWxlKChoZWFkZXImMSkgPT0gMCkge1xuXHRcdGhlYWRlciA9IHJlYWRfYml0c18zKGRhdGEsIGJvZmYpOyBib2ZmICs9IDM7XG5cdFx0aWYoKGhlYWRlciA+Pj4gMSkgPT0gMCkge1xuXHRcdFx0LyogU3RvcmVkIGJsb2NrICovXG5cdFx0XHRpZihib2ZmICYgNykgYm9mZiArPSA4IC0gKGJvZmYmNyk7XG5cdFx0XHQvKiAyIGJ5dGVzIHN6LCAyIGJ5dGVzIGJpdCBpbnZlcnNlICovXG5cdFx0XHR2YXIgc3ogPSBkYXRhW2JvZmY+Pj4zXSB8IGRhdGFbKGJvZmY+Pj4zKSsxXTw8ODtcblx0XHRcdGJvZmYgKz0gMzI7XG5cdFx0XHQvKiBwdXNoIHN6IGJ5dGVzICovXG5cdFx0XHRpZihzeiA+IDApIHtcblx0XHRcdFx0aWYoIXVzeiAmJiBPTCA8IHdvZmYgKyBzeikgeyBvdXRidWYgPSByZWFsbG9jKG91dGJ1Ziwgd29mZiArIHN6KTsgT0wgPSBvdXRidWYubGVuZ3RoOyB9XG5cdFx0XHRcdHdoaWxlKHN6LS0gPiAwKSB7IG91dGJ1Zlt3b2ZmKytdID0gZGF0YVtib2ZmPj4+M107IGJvZmYgKz0gODsgfVxuXHRcdFx0fVxuXHRcdFx0Y29udGludWU7XG5cdFx0fSBlbHNlIGlmKChoZWFkZXIgPj4gMSkgPT0gMSkge1xuXHRcdFx0LyogRml4ZWQgSHVmZm1hbiAqL1xuXHRcdFx0bWF4X2xlbl8xID0gOTsgbWF4X2xlbl8yID0gNTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0LyogRHluYW1pYyBIdWZmbWFuICovXG5cdFx0XHRib2ZmID0gZHluKGRhdGEsIGJvZmYpO1xuXHRcdFx0bWF4X2xlbl8xID0gZHluX2xlbl8xOyBtYXhfbGVuXzIgPSBkeW5fbGVuXzI7XG5cdFx0fVxuXHRcdGZvcig7OykgeyAvLyB3aGlsZSh0cnVlKSBpcyBhcHBhcmVudGx5IG91dCBvZiB2b2d1ZSBpbiBtb2Rlcm4gSlMgY2lyY2xlc1xuXHRcdFx0aWYoIXVzeiAmJiAoT0wgPCB3b2ZmICsgMzI3NjcpKSB7IG91dGJ1ZiA9IHJlYWxsb2Mob3V0YnVmLCB3b2ZmICsgMzI3NjcpOyBPTCA9IG91dGJ1Zi5sZW5ndGg7IH1cblx0XHRcdC8qIGluZ2VzdCBjb2RlIGFuZCBtb3ZlIHJlYWQgaGVhZCAqL1xuXHRcdFx0dmFyIGJpdHMgPSByZWFkX2JpdHNfbihkYXRhLCBib2ZmLCBtYXhfbGVuXzEpO1xuXHRcdFx0dmFyIGNvZGUgPSAoaGVhZGVyPj4+MSkgPT0gMSA/IGZpeF9sbWFwW2JpdHNdIDogZHluX2xtYXBbYml0c107XG5cdFx0XHRib2ZmICs9IGNvZGUgJiAxNTsgY29kZSA+Pj49IDQ7XG5cdFx0XHQvKiAwLTI1NSBhcmUgbGl0ZXJhbHMsIDI1NiBpcyBlbmQgb2YgYmxvY2sgdG9rZW4sIDI1NysgYXJlIGNvcHkgdG9rZW5zICovXG5cdFx0XHRpZigoKGNvZGU+Pj44KSYweEZGKSA9PT0gMCkgb3V0YnVmW3dvZmYrK10gPSBjb2RlO1xuXHRcdFx0ZWxzZSBpZihjb2RlID09IDI1NikgYnJlYWs7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0Y29kZSAtPSAyNTc7XG5cdFx0XHRcdHZhciBsZW5fZWIgPSAoY29kZSA8IDgpID8gMCA6ICgoY29kZS00KT4+Mik7IGlmKGxlbl9lYiA+IDUpIGxlbl9lYiA9IDA7XG5cdFx0XHRcdHZhciB0Z3QgPSB3b2ZmICsgTEVOX0xOW2NvZGVdO1xuXHRcdFx0XHQvKiBsZW5ndGggZXh0cmEgYml0cyAqL1xuXHRcdFx0XHRpZihsZW5fZWIgPiAwKSB7XG5cdFx0XHRcdFx0dGd0ICs9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIGxlbl9lYik7XG5cdFx0XHRcdFx0Ym9mZiArPSBsZW5fZWI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvKiBkaXN0IGNvZGUgKi9cblx0XHRcdFx0Yml0cyA9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIG1heF9sZW5fMik7XG5cdFx0XHRcdGNvZGUgPSAoaGVhZGVyPj4+MSkgPT0gMSA/IGZpeF9kbWFwW2JpdHNdIDogZHluX2RtYXBbYml0c107XG5cdFx0XHRcdGJvZmYgKz0gY29kZSAmIDE1OyBjb2RlID4+Pj0gNDtcblx0XHRcdFx0dmFyIGRzdF9lYiA9IChjb2RlIDwgNCA/IDAgOiAoY29kZS0yKT4+MSk7XG5cdFx0XHRcdHZhciBkc3QgPSBEU1RfTE5bY29kZV07XG5cdFx0XHRcdC8qIGRpc3QgZXh0cmEgYml0cyAqL1xuXHRcdFx0XHRpZihkc3RfZWIgPiAwKSB7XG5cdFx0XHRcdFx0ZHN0ICs9IHJlYWRfYml0c19uKGRhdGEsIGJvZmYsIGRzdF9lYik7XG5cdFx0XHRcdFx0Ym9mZiArPSBkc3RfZWI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvKiBpbiB0aGUgY29tbW9uIGNhc2UsIG1hbnVhbCBieXRlIGNvcHkgaXMgZmFzdGVyIHRoYW4gVEEgc2V0IC8gQnVmZmVyIGNvcHkgKi9cblx0XHRcdFx0aWYoIXVzeiAmJiBPTCA8IHRndCkgeyBvdXRidWYgPSByZWFsbG9jKG91dGJ1ZiwgdGd0ICsgMTAwKTsgT0wgPSBvdXRidWYubGVuZ3RoOyB9XG5cdFx0XHRcdHdoaWxlKHdvZmYgPCB0Z3QpIHsgb3V0YnVmW3dvZmZdID0gb3V0YnVmW3dvZmYgLSBkc3RdOyArK3dvZmY7IH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYodXN6KSByZXR1cm4gW291dGJ1ZiwgKGJvZmYrNyk+Pj4zXTtcblx0cmV0dXJuIFtvdXRidWYuc2xpY2UoMCwgd29mZiksIChib2ZmKzcpPj4+M107XG59XG5cbmZ1bmN0aW9uIF9pbmZsYXRlKHBheWxvYWQsIHVzeikge1xuXHR2YXIgZGF0YSA9IHBheWxvYWQuc2xpY2UocGF5bG9hZC5sfHwwKTtcblx0dmFyIG91dCA9IGluZmxhdGUoZGF0YSwgdXN6KTtcblx0cGF5bG9hZC5sICs9IG91dFsxXTtcblx0cmV0dXJuIG91dFswXTtcbn1cblxuZnVuY3Rpb24gd2Fybl9vcl90aHJvdyh3cm4sIG1zZykge1xuXHRpZih3cm4pIHsgaWYodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSBjb25zb2xlLmVycm9yKG1zZyk7IH1cblx0ZWxzZSB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfemlwKGZpbGUvKjpSYXdCeXRlcyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdHZhciBibG9iLyo6Q0ZCbG9iKi8gPSAvKjo6KCovZmlsZS8qOjogOmFueSkqLztcblx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXG5cdHZhciBGaWxlSW5kZXgvKjpDRkJGaWxlSW5kZXgqLyA9IFtdLCBGdWxsUGF0aHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIG8gPSB7XG5cdFx0RmlsZUluZGV4OiBGaWxlSW5kZXgsXG5cdFx0RnVsbFBhdGhzOiBGdWxsUGF0aHNcblx0fTtcblx0aW5pdF9jZmIobywgeyByb290OiBvcHRpb25zLnJvb3QgfSk7XG5cblx0LyogZmluZCBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnksIHN0YXJ0IGp1c3QgYWZ0ZXIgc2lnbmF0dXJlICovXG5cdHZhciBpID0gYmxvYi5sZW5ndGggLSA0O1xuXHR3aGlsZSgoYmxvYltpXSAhPSAweDUwIHx8IGJsb2JbaSsxXSAhPSAweDRiIHx8IGJsb2JbaSsyXSAhPSAweDA1IHx8IGJsb2JbaSszXSAhPSAweDA2KSAmJiBpID49IDApIC0taTtcblx0YmxvYi5sID0gaSArIDQ7XG5cblx0LyogcGFyc2UgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdGJsb2IubCArPSA0O1xuXHR2YXIgZmNudCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDY7XG5cdHZhciBzdGFydF9jZCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblxuXHQvKiBwYXJzZSBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRibG9iLmwgPSBzdGFydF9jZDtcblxuXHRmb3IoaSA9IDA7IGkgPCBmY250OyArK2kpIHtcblx0XHQvKiB0cnVzdCBsb2NhbCBmaWxlIGhlYWRlciBpbnN0ZWFkIG9mIENEIGVudHJ5ICovXG5cdFx0YmxvYi5sICs9IDIwO1xuXHRcdHZhciBjc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIHVzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgbmFtZWxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgZWZzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgZmNzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRibG9iLmwgKz0gODtcblx0XHR2YXIgb2Zmc2V0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBFRiA9IHBhcnNlX2V4dHJhX2ZpZWxkKC8qOjooKi9ibG9iLnNsaWNlKGJsb2IubCtuYW1lbGVuLCBibG9iLmwrbmFtZWxlbitlZnN6KS8qOjogOmFueSkqLyk7XG5cdFx0YmxvYi5sICs9IG5hbWVsZW4gKyBlZnN6ICsgZmNzejtcblxuXHRcdHZhciBMID0gYmxvYi5sO1xuXHRcdGJsb2IubCA9IG9mZnNldCArIDQ7XG5cdFx0cGFyc2VfbG9jYWxfZmlsZShibG9iLCBjc3osIHVzeiwgbywgRUYpO1xuXHRcdGJsb2IubCA9IEw7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cblxuLyogaGVhZCBzdGFydHMganVzdCBhZnRlciBsb2NhbCBmaWxlIGhlYWRlciBzaWduYXR1cmUgKi9cbmZ1bmN0aW9uIHBhcnNlX2xvY2FsX2ZpbGUoYmxvYi8qOkNGQmxvYiovLCBjc3ovKjpudW1iZXIqLywgdXN6Lyo6bnVtYmVyKi8sIG8vKjpDRkJDb250YWluZXIqLywgRUYpIHtcblx0LyogW2xvY2FsIGZpbGUgaGVhZGVyXSAqL1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbWV0aCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGRhdGUgPSBwYXJzZV9kb3NfZGF0ZShibG9iKTtcblxuXHRpZihmbGFncyAmIDB4MjA0MSkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgWklQIGVuY3J5cHRpb25cIik7XG5cdHZhciBjcmMzMiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIF9jc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBfdXN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXG5cdHZhciBuYW1lbGVuID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZWZzeiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblxuXHQvLyBUT0RPOiBmbGFncyAmICgxPDwxMSkgLy8gVVRGOFxuXHR2YXIgbmFtZSA9IFwiXCI7IGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lbGVuOyArK2kpIG5hbWUgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShibG9iW2Jsb2IubCsrXSk7XG5cdGlmKGVmc3opIHtcblx0XHR2YXIgZWYgPSBwYXJzZV9leHRyYV9maWVsZCgvKjo6KCovYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCArIGVmc3opLyo6OiA6YW55KSovKTtcblx0XHRpZigoZWZbMHg1NDU1XXx8e30pLm10KSBkYXRlID0gZWZbMHg1NDU1XS5tdDtcblx0XHRpZigoKEVGfHx7fSlbMHg1NDU1XXx8e30pLm10KSBkYXRlID0gRUZbMHg1NDU1XS5tdDtcblx0fVxuXHRibG9iLmwgKz0gZWZzejtcblxuXHQvKiBbZW5jcnlwdGlvbiBoZWFkZXJdICovXG5cblx0LyogW2ZpbGUgZGF0YV0gKi9cblx0dmFyIGRhdGEgPSBibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgX2Nzeik7XG5cdHN3aXRjaChtZXRoKSB7XG5cdFx0Y2FzZSA4OiBkYXRhID0gX2luZmxhdGVSYXdTeW5jKGJsb2IsIF91c3opOyBicmVhaztcblx0XHRjYXNlIDA6IGJyZWFrOyAvLyBUT0RPOiBzY2FuIGZvciBtYWdpYyBudW1iZXJcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBaSVAgQ29tcHJlc3Npb24gbWV0aG9kIFwiICsgbWV0aCk7XG5cdH1cblxuXHQvKiBbZGF0YSBkZXNjcmlwdG9yXSAqL1xuXHR2YXIgd3JuID0gZmFsc2U7XG5cdGlmKGZsYWdzICYgOCkge1xuXHRcdGNyYzMyID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdGlmKGNyYzMyID09IDB4MDgwNzRiNTApIHsgY3JjMzIgPSBibG9iLnJlYWRfc2hpZnQoNCk7IHdybiA9IHRydWU7IH1cblx0XHRfY3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdF91c3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdH1cblxuXHRpZihfY3N6ICE9IGNzeikgd2Fybl9vcl90aHJvdyh3cm4sIFwiQmFkIGNvbXByZXNzZWQgc2l6ZTogXCIgKyBjc3ogKyBcIiAhPSBcIiArIF9jc3opO1xuXHRpZihfdXN6ICE9IHVzeikgd2Fybl9vcl90aHJvdyh3cm4sIFwiQmFkIHVuY29tcHJlc3NlZCBzaXplOiBcIiArIHVzeiArIFwiICE9IFwiICsgX3Vzeik7XG5cdC8vdmFyIF9jcmMzMiA9IENSQzMyLmJ1ZihkYXRhLCAwKTtcblx0Ly9pZigoY3JjMzI+PjApICE9IChfY3JjMzI+PjApKSB3YXJuX29yX3Rocm93KHdybiwgXCJCYWQgQ1JDMzIgY2hlY2tzdW06IFwiICsgY3JjMzIgKyBcIiAhPSBcIiArIF9jcmMzMik7XG5cdGNmYl9hZGQobywgbmFtZSwgZGF0YSwge3Vuc2FmZTogdHJ1ZSwgbXQ6IGRhdGV9KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3ppcChjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOlJhd0J5dGVzKi8ge1xuXHR2YXIgX29wdHMgPSBvcHRpb25zIHx8IHt9O1xuXHR2YXIgb3V0ID0gW10sIGNkaXJzID0gW107XG5cdHZhciBvLyo6Q0ZCbG9iKi8gPSBuZXdfYnVmKDEpO1xuXHR2YXIgbWV0aG9kID0gKF9vcHRzLmNvbXByZXNzaW9uID8gOCA6IDApLCBmbGFncyA9IDA7XG5cdHZhciBkZXNjID0gZmFsc2U7XG5cdGlmKGRlc2MpIGZsYWdzIHw9IDg7XG5cdHZhciBpID0gMCwgaiA9IDA7XG5cblx0dmFyIHN0YXJ0X2NkID0gMCwgZmNudCA9IDA7XG5cdHZhciByb290ID0gY2ZiLkZ1bGxQYXRoc1swXSwgZnAgPSByb290LCBmaSA9IGNmYi5GaWxlSW5kZXhbMF07XG5cdHZhciBjcmNzID0gW107XG5cdHZhciBzel9jZCA9IDA7XG5cblx0Zm9yKGkgPSAxOyBpIDwgY2ZiLkZ1bGxQYXRocy5sZW5ndGg7ICsraSkge1xuXHRcdGZwID0gY2ZiLkZ1bGxQYXRoc1tpXS5zbGljZShyb290Lmxlbmd0aCk7IGZpID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZighZmkuc2l6ZSB8fCAhZmkuY29udGVudCB8fCBmcCA9PSBcIlxcdTAwMDFTaDMzdEo1XCIpIGNvbnRpbnVlO1xuXHRcdHZhciBzdGFydCA9IHN0YXJ0X2NkO1xuXG5cdFx0LyogVE9ETzogQ1A0MzcgZmlsZW5hbWUgKi9cblx0XHR2YXIgbmFtZWJ1ZiA9IG5ld19idWYoZnAubGVuZ3RoKTtcblx0XHRmb3IoaiA9IDA7IGogPCBmcC5sZW5ndGg7ICsraikgbmFtZWJ1Zi53cml0ZV9zaGlmdCgxLCBmcC5jaGFyQ29kZUF0KGopICYgMHg3Rik7XG5cdFx0bmFtZWJ1ZiA9IG5hbWVidWYuc2xpY2UoMCwgbmFtZWJ1Zi5sKTtcblx0XHRjcmNzW2ZjbnRdID0gQ1JDMzIuYnVmKC8qOjooKCovZmkuY29udGVudC8qOjp8fFtdKTphbnkpKi8sIDApO1xuXG5cdFx0dmFyIG91dGJ1ZiA9IGZpLmNvbnRlbnQvKjo6fHxbXSovO1xuXHRcdGlmKG1ldGhvZCA9PSA4KSBvdXRidWYgPSBfZGVmbGF0ZVJhd1N5bmMob3V0YnVmKTtcblxuXHRcdC8qIGxvY2FsIGZpbGUgaGVhZGVyICovXG5cdFx0byA9IG5ld19idWYoMzApO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMHgwNDAzNGI1MCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAyMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBmbGFncyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBtZXRob2QpO1xuXHRcdC8qIFRPRE86IGxhc3QgbW9kIGZpbGUgdGltZS9kYXRlICovXG5cdFx0aWYoZmkubXQpIHdyaXRlX2Rvc19kYXRlKG8sIGZpLm10KTtcblx0XHRlbHNlIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgtNCwgKGZsYWdzICYgOCkgPyAwIDogY3Jjc1tmY250XSk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAgKGZsYWdzICYgOCkgPyAwIDogb3V0YnVmLmxlbmd0aCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAgKGZsYWdzICYgOCkgPyAwIDogLyo6OigqL2ZpLmNvbnRlbnQvKjo6fHxbXSkqLy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbmFtZWJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cblx0XHRzdGFydF9jZCArPSBvLmxlbmd0aDtcblx0XHRvdXQucHVzaChvKTtcblx0XHRzdGFydF9jZCArPSBuYW1lYnVmLmxlbmd0aDtcblx0XHRvdXQucHVzaChuYW1lYnVmKTtcblxuXHRcdC8qIFRPRE86IGV4dHJhIGZpZWxkcz8gKi9cblxuXHRcdC8qIFRPRE86IGVuY3J5cHRpb24gaGVhZGVyID8gKi9cblxuXHRcdHN0YXJ0X2NkICs9IG91dGJ1Zi5sZW5ndGg7XG5cdFx0b3V0LnB1c2gob3V0YnVmKTtcblxuXHRcdC8qIGRhdGEgZGVzY3JpcHRvciAqL1xuXHRcdGlmKGZsYWdzICYgOCkge1xuXHRcdFx0byA9IG5ld19idWYoMTIpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgtNCwgY3Jjc1tmY250XSk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIG91dGJ1Zi5sZW5ndGgpO1xuXHRcdFx0by53cml0ZV9zaGlmdCg0LCAvKjo6KCovZmkuY29udGVudC8qOjp8fFtdKSovLmxlbmd0aCk7XG5cdFx0XHRzdGFydF9jZCArPSBvLmw7XG5cdFx0XHRvdXQucHVzaChvKTtcblx0XHR9XG5cblx0XHQvKiBjZW50cmFsIGRpcmVjdG9yeSAqL1xuXHRcdG8gPSBuZXdfYnVmKDQ2KTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIDB4MDIwMTRiNTApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAyMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBmbGFncyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBtZXRob2QpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIFRPRE86IGxhc3QgbW9kIGZpbGUgdGltZS9kYXRlICovXG5cdFx0by53cml0ZV9zaGlmdCgtNCwgY3Jjc1tmY250XSk7XG5cblx0XHRvLndyaXRlX3NoaWZ0KDQsIG91dGJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgLyo6OigqL2ZpLmNvbnRlbnQvKjo6fHxbXSkqLy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgbmFtZWJ1Zi5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHN0YXJ0KTtcblxuXHRcdHN6X2NkICs9IG8ubDtcblx0XHRjZGlycy5wdXNoKG8pO1xuXHRcdHN6X2NkICs9IG5hbWVidWYubGVuZ3RoO1xuXHRcdGNkaXJzLnB1c2gobmFtZWJ1Zik7XG5cdFx0KytmY250O1xuXHR9XG5cblx0LyogZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5ICovXG5cdG8gPSBuZXdfYnVmKDIyKTtcblx0by53cml0ZV9zaGlmdCg0LCAweDA2MDU0YjUwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBmY250KTtcblx0by53cml0ZV9zaGlmdCgyLCBmY250KTtcblx0by53cml0ZV9zaGlmdCg0LCBzel9jZCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3RhcnRfY2QpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXG5cdHJldHVybiBiY29uY2F0KChbYmNvbmNhdCgob3V0Lyo6YW55Ki8pKSwgYmNvbmNhdChjZGlycyksIG9dLyo6YW55Ki8pKTtcbn1cbnZhciBDb250ZW50VHlwZU1hcCA9ICh7XG5cdFwiaHRtXCI6IFwidGV4dC9odG1sXCIsXG5cdFwieG1sXCI6IFwidGV4dC94bWxcIixcblxuXHRcImdpZlwiOiBcImltYWdlL2dpZlwiLFxuXHRcImpwZ1wiOiBcImltYWdlL2pwZWdcIixcblx0XCJwbmdcIjogXCJpbWFnZS9wbmdcIixcblxuXHRcIm1zb1wiOiBcImFwcGxpY2F0aW9uL3gtbXNvXCIsXG5cdFwidGhteFwiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1vZmZpY2V0aGVtZVwiLFxuXHRcInNoMzN0ajVcIjogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxufS8qOmFueSovKTtcblxuZnVuY3Rpb24gZ2V0X2NvbnRlbnRfdHlwZShmaS8qOkNGQkVudHJ5Ki8sIGZwLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihmaS5jdHlwZSkgcmV0dXJuIGZpLmN0eXBlO1xuXG5cdHZhciBleHQgPSBmaS5uYW1lIHx8IFwiXCIsIG0gPSBleHQubWF0Y2goL1xcLihbXlxcLl0rKSQvKTtcblx0aWYobSAmJiBDb250ZW50VHlwZU1hcFttWzFdXSkgcmV0dXJuIENvbnRlbnRUeXBlTWFwW21bMV1dO1xuXG5cdGlmKGZwKSB7XG5cdFx0bSA9IChleHQgPSBmcCkubWF0Y2goL1tcXC5cXFxcXShbXlxcLlxcXFxdKSskLyk7XG5cdFx0aWYobSAmJiBDb250ZW50VHlwZU1hcFttWzFdXSkgcmV0dXJuIENvbnRlbnRUeXBlTWFwW21bMV1dO1xuXHR9XG5cblx0cmV0dXJuIFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCI7XG59XG5cbi8qIDc2IGNoYXJhY3RlciBjaHVua3MgVE9ETzogaW50ZXJ0d2luZSBlbmNvZGluZyAqL1xuZnVuY3Rpb24gd3JpdGVfYmFzZTY0Xzc2KGJzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBkYXRhID0gQmFzZTY0X2VuY29kZShic3RyKTtcblx0dmFyIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKz0gNzYpIG8ucHVzaChkYXRhLnNsaWNlKGksIGkrNzYpKTtcblx0cmV0dXJuIG8uam9pbihcIlxcclxcblwiKSArIFwiXFxyXFxuXCI7XG59XG5cbi8qXG5SdWxlcyBmb3IgUVA6XG5cdC0gZXNjYXBlID0jIyBhcHBsaWVzIGZvciBhbGwgbm9uLWRpc3BsYXkgY2hhcmFjdGVycyBhbmQgbGl0ZXJhbCBcIj1cIlxuXHQtIHNwYWNlIG9yIHRhYiBhdCBlbmQgb2YgbGluZSBtdXN0IGJlIGVuY29kZWRcblx0LSBcXHJcXG4gbmV3bGluZXMgY2FuIGJlIHByZXNlcnZlZCwgYnV0IGJhcmUgXFxyIGFuZCBcXG4gbXVzdCBiZSBlc2NhcGVkXG5cdC0gbGluZXMgbXVzdCBub3QgZXhjZWVkIDc2IGNoYXJhY3RlcnMsIHVzZSBzb2Z0IGJyZWFrcyA9XFxyXFxuXG5cblRPRE86IFNvbWUgZmlsZXMgZnJvbSB3b3JkIGFwcGVhciB0byB3cml0ZSBsaW5lIGV4dGVuc2lvbnMgd2l0aCBiYXJlIGVxdWFsczpcblxuYGBgXG48dGFibGUgY2xhc3M9M0RNc29UYWJsZUdyaWQgYm9yZGVyPTNEMSBjZWxsc3BhY2luZz0zRDAgY2VsbHBhZGRpbmc9M0QwIHdpZHRoPVxuPVwiNzAlXCJcbmBgYFxuKi9cbmZ1bmN0aW9uIHdyaXRlX3F1b3RlZF9wcmludGFibGUodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIGVuY29kZWQgPSB0ZXh0LnJlcGxhY2UoL1tcXHgwMC1cXHgwOFxceDBCXFx4MENcXHgwRS1cXHgxRlxceDdFLVxceEZGPV0vZywgZnVuY3Rpb24oYykge1xuXHRcdHZhciB3ID0gYy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXHRcdHJldHVybiBcIj1cIiArICh3Lmxlbmd0aCA9PSAxID8gXCIwXCIgKyB3IDogdyk7XG5cdH0pO1xuXG5cdGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoLyAkL21nLCBcIj0yMFwiKS5yZXBsYWNlKC9cXHQkL21nLCBcIj0wOVwiKTtcblxuXHRpZihlbmNvZGVkLmNoYXJBdCgwKSA9PSBcIlxcblwiKSBlbmNvZGVkID0gXCI9MERcIiArIGVuY29kZWQuc2xpY2UoMSk7XG5cdGVuY29kZWQgPSBlbmNvZGVkLnJlcGxhY2UoL1xccig/IVxcbikvbWcsIFwiPTBEXCIpLnJlcGxhY2UoL1xcblxcbi9tZywgXCJcXG49MEFcIikucmVwbGFjZSgvKFteXFxyXFxuXSlcXG4vbWcsIFwiJDE9MEFcIik7XG5cblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgc3BsaXQgPSBlbmNvZGVkLnNwbGl0KFwiXFxyXFxuXCIpO1xuXHRmb3IodmFyIHNpID0gMDsgc2kgPCBzcGxpdC5sZW5ndGg7ICsrc2kpIHtcblx0XHR2YXIgc3RyID0gc3BsaXRbc2ldO1xuXHRcdGlmKHN0ci5sZW5ndGggPT0gMCkgeyBvLnB1c2goXCJcIik7IGNvbnRpbnVlOyB9XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7KSB7XG5cdFx0XHR2YXIgZW5kID0gNzY7XG5cdFx0XHR2YXIgdG1wID0gc3RyLnNsaWNlKGksIGkgKyBlbmQpO1xuXHRcdFx0aWYodG1wLmNoYXJBdChlbmQgLSAxKSA9PSBcIj1cIikgZW5kIC0tO1xuXHRcdFx0ZWxzZSBpZih0bXAuY2hhckF0KGVuZCAtIDIpID09IFwiPVwiKSBlbmQgLT0gMjtcblx0XHRcdGVsc2UgaWYodG1wLmNoYXJBdChlbmQgLSAzKSA9PSBcIj1cIikgZW5kIC09IDM7XG5cdFx0XHR0bXAgPSBzdHIuc2xpY2UoaSwgaSArIGVuZCk7XG5cdFx0XHRpICs9IGVuZDtcblx0XHRcdGlmKGkgPCBzdHIubGVuZ3RoKSB0bXAgKz0gXCI9XCI7XG5cdFx0XHRvLnB1c2godG1wKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gby5qb2luKFwiXFxyXFxuXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VfcXVvdGVkX3ByaW50YWJsZShkYXRhLyo6QXJyYXk8c3RyaW5nPiovKS8qOlJhd0J5dGVzKi8ge1xuXHR2YXIgbyA9IFtdO1xuXG5cdC8qIHVuaWZ5IGxvbmcgbGluZXMgKi9cblx0Zm9yKHZhciBkaSA9IDA7IGRpIDwgZGF0YS5sZW5ndGg7ICsrZGkpIHtcblx0XHR2YXIgbGluZSA9IGRhdGFbZGldO1xuXHRcdHdoaWxlKGRpIDw9IGRhdGEubGVuZ3RoICYmIGxpbmUuY2hhckF0KGxpbmUubGVuZ3RoIC0gMSkgPT0gXCI9XCIpIGxpbmUgPSBsaW5lLnNsaWNlKDAsIGxpbmUubGVuZ3RoIC0gMSkgKyBkYXRhWysrZGldO1xuXHRcdG8ucHVzaChsaW5lKTtcblx0fVxuXG5cdC8qIGRlY29kZSAqL1xuXHRmb3IodmFyIG9pID0gMDsgb2kgPCBvLmxlbmd0aDsgKytvaSkgb1tvaV0gPSBvW29pXS5yZXBsYWNlKC9bPV1bMC05QS1GYS1mXXsyfS9nLCBmdW5jdGlvbigkJCkgeyByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludCgkJC5zbGljZSgxKSwgMTYpKTsgfSk7XG5cdHJldHVybiBzMmEoby5qb2luKFwiXFxyXFxuXCIpKTtcbn1cblxuXG5mdW5jdGlvbiBwYXJzZV9taW1lKGNmYi8qOkNGQkNvbnRhaW5lciovLCBkYXRhLyo6QXJyYXk8c3RyaW5nPiovLCByb290Lyo6c3RyaW5nKi8pLyo6dm9pZCovIHtcblx0dmFyIGZuYW1lID0gXCJcIiwgY3RlID0gXCJcIiwgY3R5cGUgPSBcIlwiLCBmZGF0YTtcblx0dmFyIGRpID0gMDtcblx0Zm9yKDtkaSA8IDEwOyArK2RpKSB7XG5cdFx0dmFyIGxpbmUgPSBkYXRhW2RpXTtcblx0XHRpZighbGluZSB8fCBsaW5lLm1hdGNoKC9eXFxzKiQvKSkgYnJlYWs7XG5cdFx0dmFyIG0gPSBsaW5lLm1hdGNoKC9eKC4qPyk6XFxzKihbXlxcc10uKikkLyk7XG5cdFx0aWYobSkgc3dpdGNoKG1bMV0udG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0Y2FzZSBcImNvbnRlbnQtbG9jYXRpb25cIjogZm5hbWUgPSBtWzJdLnRyaW0oKTsgYnJlYWs7XG5cdFx0XHRjYXNlIFwiY29udGVudC10eXBlXCI6IGN0eXBlID0gbVsyXS50cmltKCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImNvbnRlbnQtdHJhbnNmZXItZW5jb2RpbmdcIjogY3RlID0gbVsyXS50cmltKCk7IGJyZWFrO1xuXHRcdH1cblx0fVxuXHQrK2RpO1xuXHRzd2l0Y2goY3RlLnRvTG93ZXJDYXNlKCkpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBmZGF0YSA9IHMyYShCYXNlNjRfZGVjb2RlKGRhdGEuc2xpY2UoZGkpLmpvaW4oXCJcIikpKTsgYnJlYWs7XG5cdFx0Y2FzZSAncXVvdGVkLXByaW50YWJsZSc6IGZkYXRhID0gcGFyc2VfcXVvdGVkX3ByaW50YWJsZShkYXRhLnNsaWNlKGRpKSk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcgXCIgKyBjdGUpO1xuXHR9XG5cdHZhciBmaWxlID0gY2ZiX2FkZChjZmIsIGZuYW1lLnNsaWNlKHJvb3QubGVuZ3RoKSwgZmRhdGEsIHt1bnNhZmU6IHRydWV9KTtcblx0aWYoY3R5cGUpIGZpbGUuY3R5cGUgPSBjdHlwZTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfbWFkKGZpbGUvKjpSYXdCeXRlcyovLCBvcHRpb25zLyo6Q0ZCUmVhZE9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdGlmKGEycyhmaWxlLnNsaWNlKDAsMTMpKS50b0xvd2VyQ2FzZSgpICE9IFwibWltZS12ZXJzaW9uOlwiKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBNQUQgaGVhZGVyXCIpO1xuXHR2YXIgcm9vdCA9IChvcHRpb25zICYmIG9wdGlvbnMucm9vdCB8fCBcIlwiKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0dmFyIGRhdGEgPSAoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZmlsZSkgPyBmaWxlLnRvU3RyaW5nKFwiYmluYXJ5XCIpIDogYTJzKGZpbGUpKS5zcGxpdChcIlxcclxcblwiKTtcblx0dmFyIGRpID0gMCwgcm93ID0gXCJcIjtcblxuXHQvKiBpZiByb290IGlzIG5vdCBzcGVjaWZpZWQsIHNjYW4gZm9yIHRoZSBjb21tb24gcHJlZml4ICovXG5cdGZvcihkaSA9IDA7IGRpIDwgZGF0YS5sZW5ndGg7ICsrZGkpIHtcblx0XHRyb3cgPSBkYXRhW2RpXTtcblx0XHRpZighL15Db250ZW50LUxvY2F0aW9uOi9pLnRlc3Qocm93KSkgY29udGludWU7XG5cdFx0cm93ID0gcm93LnNsaWNlKHJvdy5pbmRleE9mKFwiZmlsZVwiKSk7XG5cdFx0aWYoIXJvb3QpIHJvb3QgPSByb3cuc2xpY2UoMCwgcm93Lmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuXHRcdGlmKHJvdy5zbGljZSgwLCByb290Lmxlbmd0aCkgPT0gcm9vdCkgY29udGludWU7XG5cdFx0d2hpbGUocm9vdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRyb290ID0gcm9vdC5zbGljZSgwLCByb290Lmxlbmd0aCAtIDEpO1xuXHRcdFx0cm9vdCA9IHJvb3Quc2xpY2UoMCwgcm9vdC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHRcdGlmKHJvdy5zbGljZSgwLHJvb3QubGVuZ3RoKSA9PSByb290KSBicmVhaztcblx0XHR9XG5cdH1cblxuXHR2YXIgbWJvdW5kYXJ5ID0gKGRhdGFbMV0gfHwgXCJcIikubWF0Y2goL2JvdW5kYXJ5PVwiKC4qPylcIi8pO1xuXHRpZighbWJvdW5kYXJ5KSB0aHJvdyBuZXcgRXJyb3IoXCJNQUQgY2Fubm90IGZpbmQgYm91bmRhcnlcIik7XG5cdHZhciBib3VuZGFyeSA9IFwiLS1cIiArIChtYm91bmRhcnlbMV0gfHwgXCJcIik7XG5cblx0dmFyIEZpbGVJbmRleC8qOkNGQkZpbGVJbmRleCovID0gW10sIEZ1bGxQYXRocy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbyA9IHtcblx0XHRGaWxlSW5kZXg6IEZpbGVJbmRleCxcblx0XHRGdWxsUGF0aHM6IEZ1bGxQYXRoc1xuXHR9O1xuXHRpbml0X2NmYihvKTtcblx0dmFyIHN0YXJ0X2RpLCBmY250ID0gMDtcblx0Zm9yKGRpID0gMDsgZGkgPCBkYXRhLmxlbmd0aDsgKytkaSkge1xuXHRcdHZhciBsaW5lID0gZGF0YVtkaV07XG5cdFx0aWYobGluZSAhPT0gYm91bmRhcnkgJiYgbGluZSAhPT0gYm91bmRhcnkgKyBcIi0tXCIpIGNvbnRpbnVlO1xuXHRcdGlmKGZjbnQrKykgcGFyc2VfbWltZShvLCBkYXRhLnNsaWNlKHN0YXJ0X2RpLCBkaSksIHJvb3QpO1xuXHRcdHN0YXJ0X2RpID0gZGk7XG5cdH1cblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHdyaXRlX21hZChjZmIvKjpDRkJDb250YWluZXIqLywgb3B0aW9ucy8qOkNGQldyaXRlT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG9wdHMgPSBvcHRpb25zIHx8IHt9O1xuXHR2YXIgYm91bmRhcnkgPSBvcHRzLmJvdW5kYXJ5IHx8IFwiU2hlZXRKU1wiO1xuXHRib3VuZGFyeSA9ICctLS0tLS09JyArIGJvdW5kYXJ5O1xuXG5cdHZhciBvdXQgPSBbXG5cdFx0J01JTUUtVmVyc2lvbjogMS4wJyxcblx0XHQnQ29udGVudC1UeXBlOiBtdWx0aXBhcnQvcmVsYXRlZDsgYm91bmRhcnk9XCInICsgYm91bmRhcnkuc2xpY2UoMikgKyAnXCInLFxuXHRcdCcnLFxuXHRcdCcnLFxuXHRcdCcnXG5cdF07XG5cblx0dmFyIHJvb3QgPSBjZmIuRnVsbFBhdGhzWzBdLCBmcCA9IHJvb3QsIGZpID0gY2ZiLkZpbGVJbmRleFswXTtcblx0Zm9yKHZhciBpID0gMTsgaSA8IGNmYi5GdWxsUGF0aHMubGVuZ3RoOyArK2kpIHtcblx0XHRmcCA9IGNmYi5GdWxsUGF0aHNbaV0uc2xpY2Uocm9vdC5sZW5ndGgpO1xuXHRcdGZpID0gY2ZiLkZpbGVJbmRleFtpXTtcblx0XHRpZighZmkuc2l6ZSB8fCAhZmkuY29udGVudCB8fCBmcCA9PSBcIlxcdTAwMDFTaDMzdEo1XCIpIGNvbnRpbnVlO1xuXG5cdFx0LyogTm9ybWFsaXplIGZpbGVuYW1lICovXG5cdFx0ZnAgPSBmcC5yZXBsYWNlKC9bXFx4MDAtXFx4MDhcXHgwQlxceDBDXFx4MEUtXFx4MUZcXHg3RS1cXHhGRl0vZywgZnVuY3Rpb24oYykge1xuXHRcdFx0cmV0dXJuIFwiX3hcIiArIGMuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikgKyBcIl9cIjtcblx0XHR9KS5yZXBsYWNlKC9bXFx1MDA4MC1cXHVGRkZGXS9nLCBmdW5jdGlvbih1KSB7XG5cdFx0XHRyZXR1cm4gXCJfdVwiICsgdS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSArIFwiX1wiO1xuXHRcdH0pO1xuXG5cdFx0LyogRXh0cmFjdCBjb250ZW50IGFzIGJpbmFyeSBzdHJpbmcgKi9cblx0XHR2YXIgY2EgPSBmaS5jb250ZW50O1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIGNzdHIgPSBoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihjYSkgPyBjYS50b1N0cmluZyhcImJpbmFyeVwiKSA6IGEycyhjYSk7XG5cblx0XHQvKiA0LzUgb2YgZmlyc3QgMTAyNCBjaGFycyBhc2NpaSAtPiBxdW90ZWQgcHJpbnRhYmxlLCBlbHNlIGJhc2U2NCAqL1xuXHRcdHZhciBkaXNwY250ID0gMCwgTCA9IE1hdGgubWluKDEwMjQsIGNzdHIubGVuZ3RoKSwgY2MgPSAwO1xuXHRcdGZvcih2YXIgY3NsID0gMDsgY3NsIDw9IEw7ICsrY3NsKSBpZigoY2M9Y3N0ci5jaGFyQ29kZUF0KGNzbCkpID49IDB4MjAgJiYgY2MgPCAweDgwKSArK2Rpc3BjbnQ7XG5cdFx0dmFyIHFwID0gZGlzcGNudCA+PSBMICogNCAvIDU7XG5cblx0XHRvdXQucHVzaChib3VuZGFyeSk7XG5cdFx0b3V0LnB1c2goJ0NvbnRlbnQtTG9jYXRpb246ICcgKyAob3B0cy5yb290IHx8ICdmaWxlOi8vL0M6L1NoZWV0SlMvJykgKyBmcCk7XG5cdFx0b3V0LnB1c2goJ0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6ICcgKyAocXAgPyAncXVvdGVkLXByaW50YWJsZScgOiAnYmFzZTY0JykpO1xuXHRcdG91dC5wdXNoKCdDb250ZW50LVR5cGU6ICcgKyBnZXRfY29udGVudF90eXBlKGZpLCBmcCkpO1xuXHRcdG91dC5wdXNoKCcnKTtcblxuXHRcdG91dC5wdXNoKHFwID8gd3JpdGVfcXVvdGVkX3ByaW50YWJsZShjc3RyKSA6IHdyaXRlX2Jhc2U2NF83Nihjc3RyKSk7XG5cdH1cblx0b3V0LnB1c2goYm91bmRhcnkgKyAnLS1cXHJcXG4nKTtcblx0cmV0dXJuIG91dC5qb2luKFwiXFxyXFxuXCIpO1xufVxuZnVuY3Rpb24gY2ZiX25ldyhvcHRzLyo6P2FueSovKS8qOkNGQkNvbnRhaW5lciovIHtcblx0dmFyIG8vKjpDRkJDb250YWluZXIqLyA9ICh7fS8qOmFueSovKTtcblx0aW5pdF9jZmIobywgb3B0cyk7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBjZmJfYWRkKGNmYi8qOkNGQkNvbnRhaW5lciovLCBuYW1lLyo6c3RyaW5nKi8sIGNvbnRlbnQvKjo/UmF3Qnl0ZXMqLywgb3B0cy8qOj9hbnkqLykvKjpDRkJFbnRyeSovIHtcblx0dmFyIHVuc2FmZSA9IG9wdHMgJiYgb3B0cy51bnNhZmU7XG5cdGlmKCF1bnNhZmUpIGluaXRfY2ZiKGNmYik7XG5cdHZhciBmaWxlID0gIXVuc2FmZSAmJiBDRkIuZmluZChjZmIsIG5hbWUpO1xuXHRpZighZmlsZSkge1xuXHRcdHZhciBmcGF0aC8qOnN0cmluZyovID0gY2ZiLkZ1bGxQYXRoc1swXTtcblx0XHRpZihuYW1lLnNsaWNlKDAsIGZwYXRoLmxlbmd0aCkgPT0gZnBhdGgpIGZwYXRoID0gbmFtZTtcblx0XHRlbHNlIHtcblx0XHRcdGlmKGZwYXRoLnNsaWNlKC0xKSAhPSBcIi9cIikgZnBhdGggKz0gXCIvXCI7XG5cdFx0XHRmcGF0aCA9IChmcGF0aCArIG5hbWUpLnJlcGxhY2UoXCIvL1wiLFwiL1wiKTtcblx0XHR9XG5cdFx0ZmlsZSA9ICh7bmFtZTogZmlsZW5hbWUobmFtZSksIHR5cGU6IDJ9Lyo6YW55Ki8pO1xuXHRcdGNmYi5GaWxlSW5kZXgucHVzaChmaWxlKTtcblx0XHRjZmIuRnVsbFBhdGhzLnB1c2goZnBhdGgpO1xuXHRcdGlmKCF1bnNhZmUpIENGQi51dGlscy5jZmJfZ2MoY2ZiKTtcblx0fVxuXHQvKjo6IGlmKCFmaWxlKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0ZmlsZS5jb250ZW50ID0gKGNvbnRlbnQvKjphbnkqLyk7XG5cdGZpbGUuc2l6ZSA9IGNvbnRlbnQgPyBjb250ZW50Lmxlbmd0aCA6IDA7XG5cdGlmKG9wdHMpIHtcblx0XHRpZihvcHRzLkNMU0lEKSBmaWxlLmNsc2lkID0gb3B0cy5DTFNJRDtcblx0XHRpZihvcHRzLm10KSBmaWxlLm10ID0gb3B0cy5tdDtcblx0XHRpZihvcHRzLmN0KSBmaWxlLmN0ID0gb3B0cy5jdDtcblx0fVxuXHRyZXR1cm4gZmlsZTtcbn1cblxuZnVuY3Rpb24gY2ZiX2RlbChjZmIvKjpDRkJDb250YWluZXIqLywgbmFtZS8qOnN0cmluZyovKS8qOmJvb2xlYW4qLyB7XG5cdGluaXRfY2ZiKGNmYik7XG5cdHZhciBmaWxlID0gQ0ZCLmZpbmQoY2ZiLCBuYW1lKTtcblx0aWYoZmlsZSkgZm9yKHZhciBqID0gMDsgaiA8IGNmYi5GaWxlSW5kZXgubGVuZ3RoOyArK2opIGlmKGNmYi5GaWxlSW5kZXhbal0gPT0gZmlsZSkge1xuXHRcdGNmYi5GaWxlSW5kZXguc3BsaWNlKGosIDEpO1xuXHRcdGNmYi5GdWxsUGF0aHMuc3BsaWNlKGosIDEpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cdHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gY2ZiX21vdihjZmIvKjpDRkJDb250YWluZXIqLywgb2xkX25hbWUvKjpzdHJpbmcqLywgbmV3X25hbWUvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHRpbml0X2NmYihjZmIpO1xuXHR2YXIgZmlsZSA9IENGQi5maW5kKGNmYiwgb2xkX25hbWUpO1xuXHRpZihmaWxlKSBmb3IodmFyIGogPSAwOyBqIDwgY2ZiLkZpbGVJbmRleC5sZW5ndGg7ICsraikgaWYoY2ZiLkZpbGVJbmRleFtqXSA9PSBmaWxlKSB7XG5cdFx0Y2ZiLkZpbGVJbmRleFtqXS5uYW1lID0gZmlsZW5hbWUobmV3X25hbWUpO1xuXHRcdGNmYi5GdWxsUGF0aHNbal0gPSBuZXdfbmFtZTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGNmYl9nYyhjZmIvKjpDRkJDb250YWluZXIqLykvKjp2b2lkKi8geyByZWJ1aWxkX2NmYihjZmIsIHRydWUpOyB9XG5cbmV4cG9ydHMuZmluZCA9IGZpbmQ7XG5leHBvcnRzLnJlYWQgPSByZWFkO1xuZXhwb3J0cy5wYXJzZSA9IHBhcnNlO1xuZXhwb3J0cy53cml0ZSA9IHdyaXRlO1xuZXhwb3J0cy53cml0ZUZpbGUgPSB3cml0ZV9maWxlO1xuZXhwb3J0cy51dGlscyA9IHtcblx0Y2ZiX25ldzogY2ZiX25ldyxcblx0Y2ZiX2FkZDogY2ZiX2FkZCxcblx0Y2ZiX2RlbDogY2ZiX2RlbCxcblx0Y2ZiX21vdjogY2ZiX21vdixcblx0Y2ZiX2djOiBjZmJfZ2MsXG5cdFJlYWRTaGlmdDogUmVhZFNoaWZ0LFxuXHRDaGVja0ZpZWxkOiBDaGVja0ZpZWxkLFxuXHRwcmVwX2Jsb2I6IHByZXBfYmxvYixcblx0YmNvbmNhdDogYmNvbmNhdCxcblx0dXNlX3psaWI6IHVzZV96bGliLFxuXHRfZGVmbGF0ZVJhdzogX2RlZmxhdGUsXG5cdF9pbmZsYXRlUmF3OiBfaW5mbGF0ZSxcblx0Y29uc3RzOiBjb25zdHNcbn07XG5cbnJldHVybiBleHBvcnRzO1xufSkoKTtcblxubGV0IF9mcyA9IHZvaWQgMDtcbmZ1bmN0aW9uIHNldF9mcyhmcykgeyBfZnMgPSBmczsgfVxuZXhwb3J0IHsgc2V0X2ZzIH07XG5cbi8qIG5vcm1hbGl6ZSBkYXRhIGZvciBibG9iIGN0b3IgKi9cbmZ1bmN0aW9uIGJsb2JpZnkoZGF0YSkge1xuXHRpZih0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIHMyYWIoZGF0YSk7XG5cdGlmKEFycmF5LmlzQXJyYXkoZGF0YSkpIHJldHVybiBhMnUoZGF0YSk7XG5cdHJldHVybiBkYXRhO1xufVxuLyogd3JpdGUgb3IgZG93bmxvYWQgZmlsZSAqL1xuZnVuY3Rpb24gd3JpdGVfZGwoZm5hbWUvKjpzdHJpbmcqLywgcGF5bG9hZC8qOmFueSovLCBlbmMvKjo/c3RyaW5nKi8pIHtcblx0LypnbG9iYWwgSUVfU2F2ZUZpbGUsIEJsb2IsIG5hdmlnYXRvciwgc2F2ZUFzLCBkb2N1bWVudCwgRmlsZSwgY2hyb21lICovXG5cdGlmKHR5cGVvZiBfZnMgIT09ICd1bmRlZmluZWQnICYmIF9mcy53cml0ZUZpbGVTeW5jKSByZXR1cm4gZW5jID8gX2ZzLndyaXRlRmlsZVN5bmMoZm5hbWUsIHBheWxvYWQsIGVuYykgOiBfZnMud3JpdGVGaWxlU3luYyhmbmFtZSwgcGF5bG9hZCk7XG5cdGlmKHR5cGVvZiBEZW5vICE9PSAndW5kZWZpbmVkJykge1xuXHRcdC8qIGluIHRoaXMgc3BvdCwgaXQncyBzYWZlIHRvIGFzc3VtZSB0eXBlZCBhcnJheXMgYW5kIFRleHRFbmNvZGVyL1RleHREZWNvZGVyIGV4aXN0ICovXG5cdFx0aWYoZW5jICYmIHR5cGVvZiBwYXlsb2FkID09IFwic3RyaW5nXCIpIHN3aXRjaChlbmMpIHtcblx0XHRcdGNhc2UgXCJ1dGY4XCI6IHBheWxvYWQgPSBuZXcgVGV4dEVuY29kZXIoZW5jKS5lbmNvZGUocGF5bG9hZCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImJpbmFyeVwiOiBwYXlsb2FkID0gczJhYihwYXlsb2FkKTsgYnJlYWs7XG5cdFx0XHQvKiBUT0RPOiBiaW5hcnkgZXF1aXZhbGVudCAqL1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgZW5jb2RpbmcgXCIgKyBlbmMpO1xuXHRcdH1cblx0XHRyZXR1cm4gRGVuby53cml0ZUZpbGVTeW5jKGZuYW1lLCBwYXlsb2FkKTtcblx0fVxuXHR2YXIgZGF0YSA9IChlbmMgPT0gXCJ1dGY4XCIpID8gdXRmOHdyaXRlKHBheWxvYWQpIDogcGF5bG9hZDtcblx0Lyo6OiBkZWNsYXJlIHZhciBJRV9TYXZlRmlsZTogYW55OyAqL1xuXHRpZih0eXBlb2YgSUVfU2F2ZUZpbGUgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gSUVfU2F2ZUZpbGUoZGF0YSwgZm5hbWUpO1xuXHRpZih0eXBlb2YgQmxvYiAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHR2YXIgYmxvYiA9IG5ldyBCbG9iKFtibG9iaWZ5KGRhdGEpXSwge3R5cGU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIn0pO1xuXHRcdC8qOjogZGVjbGFyZSB2YXIgbmF2aWdhdG9yOiBhbnk7ICovXG5cdFx0aWYodHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgbmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHJldHVybiBuYXZpZ2F0b3IubXNTYXZlQmxvYihibG9iLCBmbmFtZSk7XG5cdFx0Lyo6OiBkZWNsYXJlIHZhciBzYXZlQXM6IGFueTsgKi9cblx0XHRpZih0eXBlb2Ygc2F2ZUFzICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHNhdmVBcyhibG9iLCBmbmFtZSk7XG5cdFx0aWYodHlwZW9mIFVSTCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBkb2N1bWVudC5jcmVhdGVFbGVtZW50ICYmIFVSTC5jcmVhdGVPYmplY3RVUkwpIHtcblx0XHRcdHZhciB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpO1xuXHRcdFx0Lyo6OiBkZWNsYXJlIHZhciBjaHJvbWU6IGFueTsgKi9cblx0XHRcdGlmKHR5cGVvZiBjaHJvbWUgPT09ICdvYmplY3QnICYmIHR5cGVvZiAoY2hyb21lLmRvd25sb2Fkc3x8e30pLmRvd25sb2FkID09IFwiZnVuY3Rpb25cIikge1xuXHRcdFx0XHRpZihVUkwucmV2b2tlT2JqZWN0VVJMICYmIHR5cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJykgc2V0VGltZW91dChmdW5jdGlvbigpIHsgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOyB9LCA2MDAwMCk7XG5cdFx0XHRcdHJldHVybiBjaHJvbWUuZG93bmxvYWRzLmRvd25sb2FkKHsgdXJsOiB1cmwsIGZpbGVuYW1lOiBmbmFtZSwgc2F2ZUFzOiB0cnVlfSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuXHRcdFx0aWYoYS5kb3dubG9hZCAhPSBudWxsKSB7XG5cdFx0XHRcdC8qOjogaWYoZG9jdW1lbnQuYm9keSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdFx0YS5kb3dubG9hZCA9IGZuYW1lOyBhLmhyZWYgPSB1cmw7IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7IGEuY2xpY2soKTtcblx0XHRcdFx0Lyo6OiBpZihkb2N1bWVudC5ib2R5ID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqLyBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xuXHRcdFx0XHRpZihVUkwucmV2b2tlT2JqZWN0VVJMICYmIHR5cGVvZiBzZXRUaW1lb3V0ICE9PSAndW5kZWZpbmVkJykgc2V0VGltZW91dChmdW5jdGlvbigpIHsgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpOyB9LCA2MDAwMCk7XG5cdFx0XHRcdHJldHVybiB1cmw7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKHR5cGVvZiAkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZvbGRlciAhPT0gJ3VuZGVmaW5lZCcpIHRyeSB7IC8vIGV4dGVuZHNjcmlwdFxuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIG91dCA9IEZpbGUoZm5hbWUpOyBvdXQub3BlbihcIndcIik7IG91dC5lbmNvZGluZyA9IFwiYmluYXJ5XCI7XG5cdFx0aWYoQXJyYXkuaXNBcnJheShwYXlsb2FkKSkgcGF5bG9hZCA9IGEycyhwYXlsb2FkKTtcblx0XHRvdXQud3JpdGUocGF5bG9hZCk7IG91dC5jbG9zZSgpOyByZXR1cm4gcGF5bG9hZDtcblx0fSBjYXRjaChlKSB7IGlmKCFlLm1lc3NhZ2UgfHwgIWUubWVzc2FnZS5tYXRjaCgvb25zdHJ1Y3QvKSkgdGhyb3cgZTsgfVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJjYW5ub3Qgc2F2ZSBmaWxlIFwiICsgZm5hbWUpO1xufVxuXG4vKiByZWFkIGJpbmFyeSBkYXRhIGZyb20gZmlsZSAqL1xuZnVuY3Rpb24gcmVhZF9iaW5hcnkocGF0aC8qOnN0cmluZyovKSB7XG5cdGlmKHR5cGVvZiBfZnMgIT09ICd1bmRlZmluZWQnKSByZXR1cm4gX2ZzLnJlYWRGaWxlU3luYyhwYXRoKTtcblx0aWYodHlwZW9mIERlbm8gIT09ICd1bmRlZmluZWQnKSByZXR1cm4gRGVuby5yZWFkRmlsZVN5bmMocGF0aCk7XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKHR5cGVvZiAkICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgRmlsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEZvbGRlciAhPT0gJ3VuZGVmaW5lZCcpIHRyeSB7IC8vIGV4dGVuZHNjcmlwdFxuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0dmFyIGluZmlsZSA9IEZpbGUocGF0aCk7IGluZmlsZS5vcGVuKFwiclwiKTsgaW5maWxlLmVuY29kaW5nID0gXCJiaW5hcnlcIjtcblx0XHR2YXIgZGF0YSA9IGluZmlsZS5yZWFkKCk7IGluZmlsZS5jbG9zZSgpO1xuXHRcdHJldHVybiBkYXRhO1xuXHR9IGNhdGNoKGUpIHsgaWYoIWUubWVzc2FnZSB8fCAhZS5tZXNzYWdlLm1hdGNoKC9vbnN0cnVjdC8pKSB0aHJvdyBlOyB9XG5cdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBhY2Nlc3MgZmlsZSBcIiArIHBhdGgpO1xufVxuZnVuY3Rpb24ga2V5cyhvLyo6YW55Ki8pLyo6QXJyYXk8YW55PiovIHtcblx0dmFyIGtzID0gT2JqZWN0LmtleXMobyksIG8yID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBrcy5sZW5ndGg7ICsraSkgaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIGtzW2ldKSkgbzIucHVzaChrc1tpXSk7XG5cdHJldHVybiBvMjtcbn1cblxuZnVuY3Rpb24gZXZlcnRfa2V5KG9iai8qOmFueSovLCBrZXkvKjpzdHJpbmcqLykvKjpFdmVydFR5cGUqLyB7XG5cdHZhciBvID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSBpZihvW29ialtLW2ldXVtrZXldXSA9PSBudWxsKSBvW29ialtLW2ldXVtrZXldXSA9IEtbaV07XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBldmVydChvYmovKjphbnkqLykvKjpFdmVydFR5cGUqLyB7XG5cdHZhciBvID0gKFtdLyo6YW55Ki8pLCBLID0ga2V5cyhvYmopO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSBLLmxlbmd0aDsgKytpKSBvW29ialtLW2ldXV0gPSBLW2ldO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZXZlcnRfbnVtKG9iai8qOmFueSovKS8qOkV2ZXJ0TnVtVHlwZSovIHtcblx0dmFyIG8gPSAoW10vKjphbnkqLyksIEsgPSBrZXlzKG9iaik7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT09IEsubGVuZ3RoOyArK2kpIG9bb2JqW0tbaV1dXSA9IHBhcnNlSW50KEtbaV0sMTApO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gZXZlcnRfYXJyKG9iai8qOmFueSovKS8qOkV2ZXJ0QXJyVHlwZSovIHtcblx0dmFyIG8vKjpFdmVydEFyclR5cGUqLyA9IChbXS8qOmFueSovKSwgSyA9IGtleXMob2JqKTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPT0gSy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKG9bb2JqW0tbaV1dXSA9PSBudWxsKSBvW29ialtLW2ldXV0gPSBbXTtcblx0XHRvW29ialtLW2ldXV0ucHVzaChLW2ldKTtcblx0fVxuXHRyZXR1cm4gbztcbn1cblxudmFyIGJhc2VkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKDE4OTksIDExLCAzMCwgMCwgMCwgMCk7IC8vIDIyMDkxNjE2MDAwMDBcbmZ1bmN0aW9uIGRhdGVudW0odi8qOkRhdGUqLywgZGF0ZTE5MDQvKjo/Ym9vbGVhbiovKS8qOm51bWJlciovIHtcblx0dmFyIGVwb2NoID0gLyojX19QVVJFX18qL3YuZ2V0VGltZSgpO1xuXHRpZihkYXRlMTkwNCkgZXBvY2ggLT0gMTQ2MioyNCo2MCo2MCoxMDAwO1xuXHR2YXIgZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZSgpICsgKC8qI19fUFVSRV9fKi92LmdldFRpbWV6b25lT2Zmc2V0KCkgLSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MDAwMDtcblx0cmV0dXJuIChlcG9jaCAtIGRudGhyZXNoKSAvICgyNCAqIDYwICogNjAgKiAxMDAwKTtcbn1cbnZhciByZWZkYXRlID0gLyojX19QVVJFX18qL25ldyBEYXRlKCk7XG52YXIgZG50aHJlc2ggPSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZSgpICsgKC8qI19fUFVSRV9fKi9yZWZkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgLSAvKiNfX1BVUkVfXyovYmFzZWRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSkgKiA2MDAwMDtcbnZhciByZWZvZmZzZXQgPSAvKiNfX1BVUkVfXyovcmVmZGF0ZS5nZXRUaW1lem9uZU9mZnNldCgpO1xuZnVuY3Rpb24gbnVtZGF0ZSh2Lyo6bnVtYmVyKi8pLyo6RGF0ZSovIHtcblx0dmFyIG91dCA9IG5ldyBEYXRlKCk7XG5cdG91dC5zZXRUaW1lKHYgKiAyNCAqIDYwICogNjAgKiAxMDAwICsgZG50aHJlc2gpO1xuXHRpZiAob3V0LmdldFRpbWV6b25lT2Zmc2V0KCkgIT09IHJlZm9mZnNldCkge1xuXHRcdG91dC5zZXRUaW1lKG91dC5nZXRUaW1lKCkgKyAob3V0LmdldFRpbWV6b25lT2Zmc2V0KCkgLSByZWZvZmZzZXQpICogNjAwMDApO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIElTTyA4NjAxIER1cmF0aW9uICovXG5mdW5jdGlvbiBwYXJzZV9pc29kdXIocykge1xuXHR2YXIgc2VjID0gMCwgbXQgPSAwLCB0aW1lID0gZmFsc2U7XG5cdHZhciBtID0gcy5tYXRjaCgvUChbMC05XFwuXStZKT8oWzAtOVxcLl0rTSk/KFswLTlcXC5dK0QpP1QoWzAtOVxcLl0rSCk/KFswLTlcXC5dK00pPyhbMC05XFwuXStTKT8vKTtcblx0aWYoIW0pIHRocm93IG5ldyBFcnJvcihcInxcIiArIHMgKyBcInwgaXMgbm90IGFuIElTTzg2MDEgRHVyYXRpb25cIik7XG5cdGZvcih2YXIgaSA9IDE7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCFtW2ldKSBjb250aW51ZTtcblx0XHRtdCA9IDE7XG5cdFx0aWYoaSA+IDMpIHRpbWUgPSB0cnVlO1xuXHRcdHN3aXRjaChtW2ldLnNsaWNlKG1baV0ubGVuZ3RoLTEpKSB7XG5cdFx0XHRjYXNlICdZJzpcblx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBcIiArIG1baV0uc2xpY2UobVtpXS5sZW5ndGgtMSkpO1xuXHRcdFx0Y2FzZSAnRCc6IG10ICo9IDI0O1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdIJzogbXQgKj0gNjA7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJ00nOlxuXHRcdFx0XHRpZighdGltZSkgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgSVNPIER1cmF0aW9uIEZpZWxkOiBNXCIpO1xuXHRcdFx0XHRlbHNlIG10ICo9IDYwO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICdTJzogYnJlYWs7XG5cdFx0fVxuXHRcdHNlYyArPSBtdCAqIHBhcnNlSW50KG1baV0sIDEwKTtcblx0fVxuXHRyZXR1cm4gc2VjO1xufVxuXG52YXIgZ29vZF9wZF9kYXRlXzEgPSAvKiNfX1BVUkVfXyovbmV3IERhdGUoJzIwMTctMDItMTlUMTk6MDY6MDkuMDAwWicpO1xudmFyIGdvb2RfcGRfZGF0ZSA9IC8qI19fUFVSRV9fKi9pc05hTigvKiNfX1BVUkVfXyovZ29vZF9wZF9kYXRlXzEuZ2V0RnVsbFllYXIoKSkgPyAvKiNfX1BVUkVfXyovbmV3IERhdGUoJzIvMTkvMTcnKSA6IGdvb2RfcGRfZGF0ZV8xO1xudmFyIGdvb2RfcGQgPSAvKiNfX1BVUkVfXyovZ29vZF9wZF9kYXRlLmdldEZ1bGxZZWFyKCkgPT0gMjAxNztcbi8qIHBhcnNlcyBhIGRhdGUgYXMgYSBsb2NhbCBkYXRlICovXG5mdW5jdGlvbiBwYXJzZURhdGUoc3RyLyo6c3RyaW5nfERhdGUqLywgZml4ZGF0ZS8qOj9udW1iZXIqLykvKjpEYXRlKi8ge1xuXHR2YXIgZCA9IG5ldyBEYXRlKHN0cik7XG5cdGlmKGdvb2RfcGQpIHtcblx0XHQvKjo6IGlmKGZpeGRhdGUgPT0gbnVsbCkgZml4ZGF0ZSA9IDA7ICovXG5cdFx0aWYoZml4ZGF0ZSA+IDApIGQuc2V0VGltZShkLmdldFRpbWUoKSArIGQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwICogMTAwMCk7XG5cdFx0ZWxzZSBpZihmaXhkYXRlIDwgMCkgZC5zZXRUaW1lKGQuZ2V0VGltZSgpIC0gZC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKTtcblx0XHRyZXR1cm4gZDtcblx0fVxuXHRpZihzdHIgaW5zdGFuY2VvZiBEYXRlKSByZXR1cm4gc3RyO1xuXHRpZihnb29kX3BkX2RhdGUuZ2V0RnVsbFllYXIoKSA9PSAxOTE3ICYmICFpc05hTihkLmdldEZ1bGxZZWFyKCkpKSB7XG5cdFx0dmFyIHMgPSBkLmdldEZ1bGxZZWFyKCk7XG5cdFx0aWYoc3RyLmluZGV4T2YoXCJcIiArIHMpID4gLTEpIHJldHVybiBkO1xuXHRcdGQuc2V0RnVsbFllYXIoZC5nZXRGdWxsWWVhcigpICsgMTAwKTsgcmV0dXJuIGQ7XG5cdH1cblx0dmFyIG4gPSBzdHIubWF0Y2goL1xcZCsvZyl8fFtcIjIwMTdcIixcIjJcIixcIjE5XCIsXCIwXCIsXCIwXCIsXCIwXCJdO1xuXHR2YXIgb3V0ID0gbmV3IERhdGUoK25bMF0sICtuWzFdIC0gMSwgK25bMl0sICgrblszXXx8MCksICgrbls0XXx8MCksICgrbls1XXx8MCkpO1xuXHRpZihzdHIuaW5kZXhPZihcIlpcIikgPiAtMSkgb3V0ID0gbmV3IERhdGUob3V0LmdldFRpbWUoKSAtIG91dC5nZXRUaW1lem9uZU9mZnNldCgpICogNjAgKiAxMDAwKTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gY2Myc3RyKGFyci8qOkFycmF5PG51bWJlcj4qLywgZGVib21pdCkvKjpzdHJpbmcqLyB7XG5cdGlmKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGFycikpIHtcblx0XHRpZihkZWJvbWl0KSB7XG5cdFx0XHRpZihhcnJbMF0gPT0gMHhGRiAmJiBhcnJbMV0gPT0gMHhGRSkgcmV0dXJuIHV0Zjh3cml0ZShhcnIuc2xpY2UoMikudG9TdHJpbmcoXCJ1dGYxNmxlXCIpKTtcblx0XHRcdGlmKGFyclsxXSA9PSAweEZFICYmIGFyclsyXSA9PSAweEZGKSByZXR1cm4gdXRmOHdyaXRlKHV0ZjE2YmVyZWFkKGFyci5zbGljZSgyKS50b1N0cmluZyhcImJpbmFyeVwiKSkpO1xuXHRcdH1cblx0XHRyZXR1cm4gYXJyLnRvU3RyaW5nKFwiYmluYXJ5XCIpO1xuXHR9XG5cblx0aWYodHlwZW9mIFRleHREZWNvZGVyICE9PSBcInVuZGVmaW5lZFwiKSB0cnkge1xuXHRcdGlmKGRlYm9taXQpIHtcblx0XHRcdGlmKGFyclswXSA9PSAweEZGICYmIGFyclsxXSA9PSAweEZFKSByZXR1cm4gdXRmOHdyaXRlKG5ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmxlXCIpLmRlY29kZShhcnIuc2xpY2UoMikpKTtcblx0XHRcdGlmKGFyclswXSA9PSAweEZFICYmIGFyclsxXSA9PSAweEZGKSByZXR1cm4gdXRmOHdyaXRlKG5ldyBUZXh0RGVjb2RlcihcInV0Zi0xNmJlXCIpLmRlY29kZShhcnIuc2xpY2UoMikpKTtcblx0XHR9XG5cdFx0dmFyIHJldiA9IHtcblx0XHRcdFwiXFx1MjBhY1wiOiBcIlxceDgwXCIsIFwiXFx1MjAxYVwiOiBcIlxceDgyXCIsIFwiXFx1MDE5MlwiOiBcIlxceDgzXCIsIFwiXFx1MjAxZVwiOiBcIlxceDg0XCIsXG5cdFx0XHRcIlxcdTIwMjZcIjogXCJcXHg4NVwiLCBcIlxcdTIwMjBcIjogXCJcXHg4NlwiLCBcIlxcdTIwMjFcIjogXCJcXHg4N1wiLCBcIlxcdTAyYzZcIjogXCJcXHg4OFwiLFxuXHRcdFx0XCJcXHUyMDMwXCI6IFwiXFx4ODlcIiwgXCJcXHUwMTYwXCI6IFwiXFx4OGFcIiwgXCJcXHUyMDM5XCI6IFwiXFx4OGJcIiwgXCJcXHUwMTUyXCI6IFwiXFx4OGNcIixcblx0XHRcdFwiXFx1MDE3ZFwiOiBcIlxceDhlXCIsIFwiXFx1MjAxOFwiOiBcIlxceDkxXCIsIFwiXFx1MjAxOVwiOiBcIlxceDkyXCIsIFwiXFx1MjAxY1wiOiBcIlxceDkzXCIsXG5cdFx0XHRcIlxcdTIwMWRcIjogXCJcXHg5NFwiLCBcIlxcdTIwMjJcIjogXCJcXHg5NVwiLCBcIlxcdTIwMTNcIjogXCJcXHg5NlwiLCBcIlxcdTIwMTRcIjogXCJcXHg5N1wiLFxuXHRcdFx0XCJcXHUwMmRjXCI6IFwiXFx4OThcIiwgXCJcXHUyMTIyXCI6IFwiXFx4OTlcIiwgXCJcXHUwMTYxXCI6IFwiXFx4OWFcIiwgXCJcXHUyMDNhXCI6IFwiXFx4OWJcIixcblx0XHRcdFwiXFx1MDE1M1wiOiBcIlxceDljXCIsIFwiXFx1MDE3ZVwiOiBcIlxceDllXCIsIFwiXFx1MDE3OFwiOiBcIlxceDlmXCJcblx0XHR9O1xuXHRcdGlmKEFycmF5LmlzQXJyYXkoYXJyKSkgYXJyID0gbmV3IFVpbnQ4QXJyYXkoYXJyKTtcblx0XHRyZXR1cm4gbmV3IFRleHREZWNvZGVyKFwibGF0aW4xXCIpLmRlY29kZShhcnIpLnJlcGxhY2UoL1vigqzigJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFksW94oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWTxb7FuF0vZywgZnVuY3Rpb24oYykgeyByZXR1cm4gcmV2W2NdIHx8IGM7IH0pO1xuXHR9IGNhdGNoKGUpIHt9XG5cblx0dmFyIG8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBhcnIubGVuZ3RoOyArK2kpIG8ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGFycltpXSkpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBkdXAoby8qOmFueSovKS8qOmFueSovIHtcblx0aWYodHlwZW9mIEpTT04gIT0gJ3VuZGVmaW5lZCcgJiYgIUFycmF5LmlzQXJyYXkobykpIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG8pKTtcblx0aWYodHlwZW9mIG8gIT0gJ29iamVjdCcgfHwgbyA9PSBudWxsKSByZXR1cm4gbztcblx0aWYobyBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBuZXcgRGF0ZShvLmdldFRpbWUoKSk7XG5cdHZhciBvdXQgPSB7fTtcblx0Zm9yKHZhciBrIGluIG8pIGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBrKSkgb3V0W2tdID0gZHVwKG9ba10pO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBmaWxsKGMvKjpzdHJpbmcqLyxsLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgbyA9IFwiXCI7IHdoaWxlKG8ubGVuZ3RoIDwgbCkgbys9YzsgcmV0dXJuIG87IH1cblxuLyogVE9ETzogc3RyZXNzIHRlc3QgKi9cbmZ1bmN0aW9uIGZ1enp5bnVtKHMvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdHZhciB2Lyo6bnVtYmVyKi8gPSBOdW1iZXIocyk7XG5cdGlmKCFpc05hTih2KSkgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6IE5hTjtcblx0aWYoIS9cXGQvLnRlc3QocykpIHJldHVybiB2O1xuXHR2YXIgd3QgPSAxO1xuXHR2YXIgc3MgPSBzLnJlcGxhY2UoLyhbXFxkXSksKFtcXGRdKS9nLFwiJDEkMlwiKS5yZXBsYWNlKC9bJF0vZyxcIlwiKS5yZXBsYWNlKC9bJV0vZywgZnVuY3Rpb24oKSB7IHd0ICo9IDEwMDsgcmV0dXJuIFwiXCI7fSk7XG5cdGlmKCFpc05hTih2ID0gTnVtYmVyKHNzKSkpIHJldHVybiB2IC8gd3Q7XG5cdHNzID0gc3MucmVwbGFjZSgvWyhdKC4qKVspXS8sZnVuY3Rpb24oJCQsICQxKSB7IHd0ID0gLXd0OyByZXR1cm4gJDE7fSk7XG5cdGlmKCFpc05hTih2ID0gTnVtYmVyKHNzKSkpIHJldHVybiB2IC8gd3Q7XG5cdHJldHVybiB2O1xufVxudmFyIGxvd2VyX21vbnRocyA9IFsnamFudWFyeScsICdmZWJydWFyeScsICdtYXJjaCcsICdhcHJpbCcsICdtYXknLCAnanVuZScsICdqdWx5JywgJ2F1Z3VzdCcsICdzZXB0ZW1iZXInLCAnb2N0b2JlcicsICdub3ZlbWJlcicsICdkZWNlbWJlciddO1xuZnVuY3Rpb24gZnV6enlkYXRlKHMvKjpzdHJpbmcqLykvKjpEYXRlKi8ge1xuXHR2YXIgbyA9IG5ldyBEYXRlKHMpLCBuID0gbmV3IERhdGUoTmFOKTtcblx0dmFyIHkgPSBvLmdldFllYXIoKSwgbSA9IG8uZ2V0TW9udGgoKSwgZCA9IG8uZ2V0RGF0ZSgpO1xuXHRpZihpc05hTihkKSkgcmV0dXJuIG47XG5cdHZhciBsb3dlciA9IHMudG9Mb3dlckNhc2UoKTtcblx0aWYobG93ZXIubWF0Y2goL2phbnxmZWJ8bWFyfGFwcnxtYXl8anVufGp1bHxhdWd8c2VwfG9jdHxub3Z8ZGVjLykpIHtcblx0XHRsb3dlciA9IGxvd2VyLnJlcGxhY2UoL1teYS16XS9nLFwiXCIpLnJlcGxhY2UoLyhbXmEtel18XilbYXBdbT8oW15hLXpdfCQpLyxcIlwiKTtcblx0XHRpZihsb3dlci5sZW5ndGggPiAzICYmIGxvd2VyX21vbnRocy5pbmRleE9mKGxvd2VyKSA9PSAtMSkgcmV0dXJuIG47XG5cdH0gZWxzZSBpZihsb3dlci5tYXRjaCgvW2Etel0vKSkgcmV0dXJuIG47XG5cdGlmKHkgPCAwIHx8IHkgPiA4MDk5KSByZXR1cm4gbjtcblx0aWYoKG0gPiAwIHx8IGQgPiAxKSAmJiB5ICE9IDEwMSkgcmV0dXJuIG87XG5cdGlmKHMubWF0Y2goL1teLTAtOTosXFwvXFxcXF0vKSkgcmV0dXJuIG47XG5cdHJldHVybiBvO1xufVxuXG52YXIgc3BsaXRfcmVnZXggPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgc2FmZV9zcGxpdF9yZWdleCA9IFwiYWJhY2FiYVwiLnNwbGl0KC8oOj9iKS9pKS5sZW5ndGggPT0gNTtcblx0cmV0dXJuIGZ1bmN0aW9uIHNwbGl0X3JlZ2V4KHN0ci8qOnN0cmluZyovLCByZSwgZGVmLyo6c3RyaW5nKi8pLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0XHRpZihzYWZlX3NwbGl0X3JlZ2V4IHx8IHR5cGVvZiByZSA9PSBcInN0cmluZ1wiKSByZXR1cm4gc3RyLnNwbGl0KHJlKTtcblx0XHR2YXIgcCA9IHN0ci5zcGxpdChyZSksIG8gPSBbcFswXV07XG5cdFx0Zm9yKHZhciBpID0gMTsgaSA8IHAubGVuZ3RoOyArK2kpIHsgby5wdXNoKGRlZik7IG8ucHVzaChwW2ldKTsgfVxuXHRcdHJldHVybiBvO1xuXHR9O1xufSkoKTtcbmZ1bmN0aW9uIGdldGRhdGFzdHIoZGF0YSkvKjo/c3RyaW5nKi8ge1xuXHRpZighZGF0YSkgcmV0dXJuIG51bGw7XG5cdGlmKGRhdGEuY29udGVudCAmJiBkYXRhLnR5cGUpIHJldHVybiBjYzJzdHIoZGF0YS5jb250ZW50LCB0cnVlKTtcblx0aWYoZGF0YS5kYXRhKSByZXR1cm4gZGVib20oZGF0YS5kYXRhKTtcblx0aWYoZGF0YS5hc05vZGVCdWZmZXIgJiYgaGFzX2J1ZikgcmV0dXJuIGRlYm9tKGRhdGEuYXNOb2RlQnVmZmVyKCkudG9TdHJpbmcoJ2JpbmFyeScpKTtcblx0aWYoZGF0YS5hc0JpbmFyeSkgcmV0dXJuIGRlYm9tKGRhdGEuYXNCaW5hcnkoKSk7XG5cdGlmKGRhdGEuX2RhdGEgJiYgZGF0YS5fZGF0YS5nZXRDb250ZW50KSByZXR1cm4gZGVib20oY2Myc3RyKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRhdGEuX2RhdGEuZ2V0Q29udGVudCgpLDApKSk7XG5cdHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRkYXRhYmluKGRhdGEpIHtcblx0aWYoIWRhdGEpIHJldHVybiBudWxsO1xuXHRpZihkYXRhLmRhdGEpIHJldHVybiBjaGFyX2NvZGVzKGRhdGEuZGF0YSk7XG5cdGlmKGRhdGEuYXNOb2RlQnVmZmVyICYmIGhhc19idWYpIHJldHVybiBkYXRhLmFzTm9kZUJ1ZmZlcigpO1xuXHRpZihkYXRhLl9kYXRhICYmIGRhdGEuX2RhdGEuZ2V0Q29udGVudCkge1xuXHRcdHZhciBvID0gZGF0YS5fZGF0YS5nZXRDb250ZW50KCk7XG5cdFx0aWYodHlwZW9mIG8gPT0gXCJzdHJpbmdcIikgcmV0dXJuIGNoYXJfY29kZXMobyk7XG5cdFx0cmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG8pO1xuXHR9XG5cdGlmKGRhdGEuY29udGVudCAmJiBkYXRhLnR5cGUpIHJldHVybiBkYXRhLmNvbnRlbnQ7XG5cdHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiBnZXRkYXRhKGRhdGEpIHsgcmV0dXJuIChkYXRhICYmIGRhdGEubmFtZS5zbGljZSgtNCkgPT09IFwiLmJpblwiKSA/IGdldGRhdGFiaW4oZGF0YSkgOiBnZXRkYXRhc3RyKGRhdGEpOyB9XG5cbi8qIFBhcnQgMiBTZWN0aW9uIDEwLjEuMiBcIk1hcHBpbmcgQ29udGVudCBUeXBlc1wiIE5hbWVzIGFyZSBjYXNlLWluc2Vuc2l0aXZlICovXG4vKiBPQVNJUyBkb2VzIG5vdCBjb21tZW50IG9uIGZpbGVuYW1lIGNhc2Ugc2Vuc2l0aXZpdHkgKi9cbmZ1bmN0aW9uIHNhZmVnZXR6aXBmaWxlKHppcCwgZmlsZS8qOnN0cmluZyovKSB7XG5cdHZhciBrID0gemlwLkZ1bGxQYXRocyB8fCBrZXlzKHppcC5maWxlcyk7XG5cdHZhciBmID0gZmlsZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1tcXC9dL2csICdcXFxcJyksIGcgPSBmLnJlcGxhY2UoL1xcXFwvZywnXFwvJyk7XG5cdGZvcih2YXIgaT0wOyBpPGsubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbiA9IGtbaV0ucmVwbGFjZSgvXlJvb3QgRW50cnlbXFwvXS8sXCJcIikudG9Mb3dlckNhc2UoKTtcblx0XHRpZihmID09IG4gfHwgZyA9PSBuKSByZXR1cm4gemlwLmZpbGVzID8gemlwLmZpbGVzW2tbaV1dIDogemlwLkZpbGVJbmRleFtpXTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0emlwZmlsZSh6aXAsIGZpbGUvKjpzdHJpbmcqLykge1xuXHR2YXIgbyA9IHNhZmVnZXR6aXBmaWxlKHppcCwgZmlsZSk7XG5cdGlmKG8gPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgZmlsZSBcIiArIGZpbGUgKyBcIiBpbiB6aXBcIik7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBnZXR6aXBkYXRhKHppcCwgZmlsZS8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjphbnkqLyB7XG5cdGlmKCFzYWZlKSByZXR1cm4gZ2V0ZGF0YShnZXR6aXBmaWxlKHppcCwgZmlsZSkpO1xuXHRpZighZmlsZSkgcmV0dXJuIG51bGw7XG5cdHRyeSB7IHJldHVybiBnZXR6aXBkYXRhKHppcCwgZmlsZSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiBnZXR6aXBzdHIoemlwLCBmaWxlLyo6c3RyaW5nKi8sIHNhZmUvKjo/Ym9vbGVhbiovKS8qOj9zdHJpbmcqLyB7XG5cdGlmKCFzYWZlKSByZXR1cm4gZ2V0ZGF0YXN0cihnZXR6aXBmaWxlKHppcCwgZmlsZSkpO1xuXHRpZighZmlsZSkgcmV0dXJuIG51bGw7XG5cdHRyeSB7IHJldHVybiBnZXR6aXBzdHIoemlwLCBmaWxlKTsgfSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG59XG5cbmZ1bmN0aW9uIGdldHppcGJpbih6aXAsIGZpbGUvKjpzdHJpbmcqLywgc2FmZS8qOj9ib29sZWFuKi8pLyo6YW55Ki8ge1xuXHRpZighc2FmZSkgcmV0dXJuIGdldGRhdGFiaW4oZ2V0emlwZmlsZSh6aXAsIGZpbGUpKTtcblx0aWYoIWZpbGUpIHJldHVybiBudWxsO1xuXHR0cnkgeyByZXR1cm4gZ2V0emlwYmluKHppcCwgZmlsZSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gbnVsbDsgfVxufVxuXG5mdW5jdGlvbiB6aXBlbnRyaWVzKHppcCkge1xuXHR2YXIgayA9IHppcC5GdWxsUGF0aHMgfHwga2V5cyh6aXAuZmlsZXMpLCBvID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBrLmxlbmd0aDsgKytpKSBpZihrW2ldLnNsaWNlKC0xKSAhPSAnLycpIG8ucHVzaChrW2ldLnJlcGxhY2UoL15Sb290IEVudHJ5W1xcL10vLCBcIlwiKSk7XG5cdHJldHVybiBvLnNvcnQoKTtcbn1cblxuZnVuY3Rpb24gemlwX2FkZF9maWxlKHppcCwgcGF0aCwgY29udGVudCkge1xuXHRpZih6aXAuRnVsbFBhdGhzKSB7XG5cdFx0aWYodHlwZW9mIGNvbnRlbnQgPT0gXCJzdHJpbmdcIikge1xuXHRcdFx0dmFyIHJlcztcblx0XHRcdGlmKGhhc19idWYpIHJlcyA9IEJ1ZmZlcl9mcm9tKGNvbnRlbnQpO1xuXHRcdFx0LyogVE9ETzogaW52ZXN0aWdhdGUgcGVyZm9ybWFuY2UgaW4gRWRnZSAxMyAqL1xuXHRcdFx0Ly9lbHNlIGlmKHR5cGVvZiBUZXh0RW5jb2RlciAhPT0gXCJ1bmRlZmluZWRcIikgcmVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGNvbnRlbnQpO1xuXHRcdFx0ZWxzZSByZXMgPSB1dGY4ZGVjb2RlKGNvbnRlbnQpO1xuXHRcdFx0cmV0dXJuIENGQi51dGlscy5jZmJfYWRkKHppcCwgcGF0aCwgcmVzKTtcblx0XHR9XG5cdFx0Q0ZCLnV0aWxzLmNmYl9hZGQoemlwLCBwYXRoLCBjb250ZW50KTtcblx0fVxuXHRlbHNlIHppcC5maWxlKHBhdGgsIGNvbnRlbnQpO1xufVxuXG5mdW5jdGlvbiB6aXBfbmV3KCkgeyByZXR1cm4gQ0ZCLnV0aWxzLmNmYl9uZXcoKTsgfVxuXG5mdW5jdGlvbiB6aXBfcmVhZChkLCBvKSB7XG5cdHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IHJldHVybiBDRkIucmVhZChkLCB7IHR5cGU6IFwiYmFzZTY0XCIgfSk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiByZXR1cm4gQ0ZCLnJlYWQoZCwgeyB0eXBlOiBcImJpbmFyeVwiIH0pO1xuXHRcdGNhc2UgXCJidWZmZXJcIjogY2FzZSBcImFycmF5XCI6IHJldHVybiBDRkIucmVhZChkLCB7IHR5cGU6IFwiYnVmZmVyXCIgfSk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlX3BhdGgocGF0aC8qOnN0cmluZyovLCBiYXNlLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihwYXRoLmNoYXJBdCgwKSA9PSBcIi9cIikgcmV0dXJuIHBhdGguc2xpY2UoMSk7XG5cdHZhciByZXN1bHQgPSBiYXNlLnNwbGl0KCcvJyk7XG5cdGlmKGJhc2Uuc2xpY2UoLTEpICE9IFwiL1wiKSByZXN1bHQucG9wKCk7IC8vIGZvbGRlciBwYXRoXG5cdHZhciB0YXJnZXQgPSBwYXRoLnNwbGl0KCcvJyk7XG5cdHdoaWxlICh0YXJnZXQubGVuZ3RoICE9PSAwKSB7XG5cdFx0dmFyIHN0ZXAgPSB0YXJnZXQuc2hpZnQoKTtcblx0XHRpZiAoc3RlcCA9PT0gJy4uJykgcmVzdWx0LnBvcCgpO1xuXHRcdGVsc2UgaWYgKHN0ZXAgIT09ICcuJykgcmVzdWx0LnB1c2goc3RlcCk7XG5cdH1cblx0cmV0dXJuIHJlc3VsdC5qb2luKCcvJyk7XG59XG52YXIgWE1MX0hFQURFUiA9ICc8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiIHN0YW5kYWxvbmU9XCJ5ZXNcIj8+XFxyXFxuJztcbnZhciBhdHRyZWdleGc9LyhbXlwiXFxzPz5cXC9dKylcXHMqPVxccyooKD86XCIpKFteXCJdKikoPzpcIil8KD86JykoW14nXSopKD86Jyl8KFteJ1wiPlxcc10rKSkvZztcbnZhciB0YWdyZWdleDE9LzxbXFwvXFw/XT9bYS16QS1aMC05Ol8tXSsoPzpcXHMrW15cIlxccz8+XFwvXStcXHMqPVxccyooPzpcIlteXCJdKlwifCdbXiddKid8W14nXCI+XFxzPV0rKSkqXFxzKltcXC9cXD9dPz4vbWcsIHRhZ3JlZ2V4MiA9IC88W14+XSo+L2c7XG52YXIgdGFncmVnZXggPSAvKiNfX1BVUkVfXyovWE1MX0hFQURFUi5tYXRjaCh0YWdyZWdleDEpID8gdGFncmVnZXgxIDogdGFncmVnZXgyO1xudmFyIG5zcmVnZXg9LzxcXHcqOi8sIG5zcmVnZXgyID0gLzwoXFwvPylcXHcrOi87XG5mdW5jdGlvbiBwYXJzZXhtbHRhZyh0YWcvKjpzdHJpbmcqLywgc2tpcF9yb290Lyo6P2Jvb2xlYW4qLywgc2tpcF9MQy8qOj9ib29sZWFuKi8pLyo6YW55Ki8ge1xuXHR2YXIgeiA9ICh7fS8qOmFueSovKTtcblx0dmFyIGVxID0gMCwgYyA9IDA7XG5cdGZvcig7IGVxICE9PSB0YWcubGVuZ3RoOyArK2VxKSBpZigoYyA9IHRhZy5jaGFyQ29kZUF0KGVxKSkgPT09IDMyIHx8IGMgPT09IDEwIHx8IGMgPT09IDEzKSBicmVhaztcblx0aWYoIXNraXBfcm9vdCkgelswXSA9IHRhZy5zbGljZSgwLCBlcSk7XG5cdGlmKGVxID09PSB0YWcubGVuZ3RoKSByZXR1cm4gejtcblx0dmFyIG0gPSB0YWcubWF0Y2goYXR0cmVnZXhnKSwgaj0wLCB2PVwiXCIsIGk9MCwgcT1cIlwiLCBjYz1cIlwiLCBxdW90ID0gMTtcblx0aWYobSkgZm9yKGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHRjYyA9IG1baV07XG5cdFx0Zm9yKGM9MDsgYyAhPSBjYy5sZW5ndGg7ICsrYykgaWYoY2MuY2hhckNvZGVBdChjKSA9PT0gNjEpIGJyZWFrO1xuXHRcdHEgPSBjYy5zbGljZSgwLGMpLnRyaW0oKTtcblx0XHR3aGlsZShjYy5jaGFyQ29kZUF0KGMrMSkgPT0gMzIpICsrYztcblx0XHRxdW90ID0gKChlcT1jYy5jaGFyQ29kZUF0KGMrMSkpID09IDM0IHx8IGVxID09IDM5KSA/IDEgOiAwO1xuXHRcdHYgPSBjYy5zbGljZShjKzErcXVvdCwgY2MubGVuZ3RoLXF1b3QpO1xuXHRcdGZvcihqPTA7aiE9cS5sZW5ndGg7KytqKSBpZihxLmNoYXJDb2RlQXQoaikgPT09IDU4KSBicmVhaztcblx0XHRpZihqPT09cS5sZW5ndGgpIHtcblx0XHRcdGlmKHEuaW5kZXhPZihcIl9cIikgPiAwKSBxID0gcS5zbGljZSgwLCBxLmluZGV4T2YoXCJfXCIpKTsgLy8gZnJvbSBvZHNcblx0XHRcdHpbcV0gPSB2O1xuXHRcdFx0aWYoIXNraXBfTEMpIHpbcS50b0xvd2VyQ2FzZSgpXSA9IHY7XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIGsgPSAoaj09PTUgJiYgcS5zbGljZSgwLDUpPT09XCJ4bWxuc1wiP1wieG1sbnNcIjpcIlwiKStxLnNsaWNlKGorMSk7XG5cdFx0XHRpZih6W2tdICYmIHEuc2xpY2Uoai0zLGopID09IFwiZXh0XCIpIGNvbnRpbnVlOyAvLyBmcm9tIG9kc1xuXHRcdFx0eltrXSA9IHY7XG5cdFx0XHRpZighc2tpcF9MQykgeltrLnRvTG93ZXJDYXNlKCldID0gdjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiBzdHJpcF9ucyh4Lyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4geC5yZXBsYWNlKG5zcmVnZXgyLCBcIjwkMVwiKTsgfVxuXG52YXIgZW5jb2RpbmdzID0ge1xuXHQnJnF1b3Q7JzogJ1wiJyxcblx0JyZhcG9zOyc6IFwiJ1wiLFxuXHQnJmd0Oyc6ICc+Jyxcblx0JyZsdDsnOiAnPCcsXG5cdCcmYW1wOyc6ICcmJ1xufTtcbnZhciByZW5jb2RpbmcgPSAvKiNfX1BVUkVfXyovZXZlcnQoZW5jb2RpbmdzKTtcbi8vdmFyIHJlbmNzdHIgPSBcIiY8PidcXFwiXCIuc3BsaXQoXCJcIik7XG5cbi8vIFRPRE86IENQIHJlbWFwIChuZWVkIHRvIHJlYWQgZmlsZSB2ZXJzaW9uIHRvIGRldGVybWluZSBPUylcbnZhciB1bmVzY2FwZXhtbC8qOlN0cmluZ0NvbnYqLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdC8qIDIyLjQuMi40IGJzdHIgKEJhc2ljIFN0cmluZykgKi9cblx0dmFyIGVuY3JlZ2V4ID0gLyYoPzpxdW90fGFwb3N8Z3R8bHR8YW1wfCN4PyhbXFxkYS1mQS1GXSspKTsvaWcsIGNvZGVyZWdleCA9IC9feChbXFxkYS1mQS1GXXs0fSlfL2lnO1xuXHRyZXR1cm4gZnVuY3Rpb24gdW5lc2NhcGV4bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgcyA9IHRleHQgKyAnJywgaSA9IHMuaW5kZXhPZihcIjwhW0NEQVRBW1wiKTtcblx0XHRpZihpID09IC0xKSByZXR1cm4gcy5yZXBsYWNlKGVuY3JlZ2V4LCBmdW5jdGlvbigkJCwgJDEpIHsgcmV0dXJuIGVuY29kaW5nc1skJF18fFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJDEsJCQuaW5kZXhPZihcInhcIik+LTE/MTY6MTApKXx8JCQ7IH0pLnJlcGxhY2UoY29kZXJlZ2V4LGZ1bmN0aW9uKG0sYykge3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KGMsMTYpKTt9KTtcblx0XHR2YXIgaiA9IHMuaW5kZXhPZihcIl1dPlwiKTtcblx0XHRyZXR1cm4gdW5lc2NhcGV4bWwocy5zbGljZSgwLCBpKSkgKyBzLnNsaWNlKGkrOSxqKSArIHVuZXNjYXBleG1sKHMuc2xpY2UoaiszKSk7XG5cdH07XG59KSgpO1xuXG52YXIgZGVjcmVnZXg9L1smPD4nXCJdL2csIGNoYXJlZ2V4ID0gL1tcXHUwMDAwLVxcdTAwMDhcXHUwMDBiLVxcdTAwMWZdL2c7XG5mdW5jdGlvbiBlc2NhcGV4bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyove1xuXHR2YXIgcyA9IHRleHQgKyAnJztcblx0cmV0dXJuIHMucmVwbGFjZShkZWNyZWdleCwgZnVuY3Rpb24oeSkgeyByZXR1cm4gcmVuY29kaW5nW3ldOyB9KS5yZXBsYWNlKGNoYXJlZ2V4LGZ1bmN0aW9uKHMpIHsgcmV0dXJuIFwiX3hcIiArIChcIjAwMFwiK3MuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KSArIFwiX1wiO30pO1xufVxuZnVuY3Rpb24gZXNjYXBleG1sdGFnKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3sgcmV0dXJuIGVzY2FwZXhtbCh0ZXh0KS5yZXBsYWNlKC8gL2csXCJfeDAwMjBfXCIpOyB9XG5cbnZhciBodG1sY2hhcmVnZXggPSAvW1xcdTAwMDAtXFx1MDAxZl0vZztcbmZ1bmN0aW9uIGVzY2FwZWh0bWwodGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyove1xuXHR2YXIgcyA9IHRleHQgKyAnJztcblx0cmV0dXJuIHMucmVwbGFjZShkZWNyZWdleCwgZnVuY3Rpb24oeSkgeyByZXR1cm4gcmVuY29kaW5nW3ldOyB9KS5yZXBsYWNlKC9cXG4vZywgXCI8YnIvPlwiKS5yZXBsYWNlKGh0bWxjaGFyZWdleCxmdW5jdGlvbihzKSB7IHJldHVybiBcIiYjeFwiICsgKFwiMDAwXCIrcy5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpICsgXCI7XCI7IH0pO1xufVxuXG5mdW5jdGlvbiBlc2NhcGV4bG1sKHRleHQvKjpzdHJpbmcqLykvKjpzdHJpbmcqL3tcblx0dmFyIHMgPSB0ZXh0ICsgJyc7XG5cdHJldHVybiBzLnJlcGxhY2UoZGVjcmVnZXgsIGZ1bmN0aW9uKHkpIHsgcmV0dXJuIHJlbmNvZGluZ1t5XTsgfSkucmVwbGFjZShodG1sY2hhcmVnZXgsZnVuY3Rpb24ocykgeyByZXR1cm4gXCImI3hcIiArIChzLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS50b1VwcGVyQ2FzZSgpICsgXCI7XCI7IH0pO1xufVxuXG4vKiBUT0RPOiBoYW5kbGUgY29kZXBhZ2VzICovXG52YXIgeGxtbF9maXhzdHIvKjpTdHJpbmdDb252Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgZW50cmVnZXggPSAvJiMoXFxkKyk7L2c7XG5cdGZ1bmN0aW9uIGVudHJlcGwoJCQvKjpzdHJpbmcqLywkMS8qOnN0cmluZyovKS8qOnN0cmluZyovIHsgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoJDEsMTApKTsgfVxuXHRyZXR1cm4gZnVuY3Rpb24geGxtbF9maXhzdHIoc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gc3RyLnJlcGxhY2UoZW50cmVnZXgsZW50cmVwbCk7IH07XG59KSgpO1xuZnVuY3Rpb24geGxtbF91bmZpeHN0cihzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBzdHIucmVwbGFjZSgvKFxcclxcbnxbXFxyXFxuXSkvZyxcIlxcJiMxMDtcIik7IH1cblxuZnVuY3Rpb24gcGFyc2V4bWxib29sKHZhbHVlLyo6YW55Ki8pLyo6Ym9vbGVhbiovIHtcblx0c3dpdGNoKHZhbHVlKSB7XG5cdFx0Y2FzZSAxOiBjYXNlIHRydWU6IGNhc2UgJzEnOiBjYXNlICd0cnVlJzogY2FzZSAnVFJVRSc6IHJldHVybiB0cnVlO1xuXHRcdC8qIGNhc2UgJzAnOiBjYXNlICdmYWxzZSc6IGNhc2UgJ0ZBTFNFJzoqL1xuXHRcdGRlZmF1bHQ6IHJldHVybiBmYWxzZTtcblx0fVxufVxuXG5mdW5jdGlvbiB1dGY4cmVhZGEob3JpZy8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dCA9IFwiXCIsIGkgPSAwLCBjID0gMCwgZCA9IDAsIGUgPSAwLCBmID0gMCwgdyA9IDA7XG5cdHdoaWxlIChpIDwgb3JpZy5sZW5ndGgpIHtcblx0XHRjID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYgKGMgPCAxMjgpIHsgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYyk7IGNvbnRpbnVlOyB9XG5cdFx0ZCA9IG9yaWcuY2hhckNvZGVBdChpKyspO1xuXHRcdGlmIChjPjE5MSAmJiBjPDIyNCkgeyBmID0gKChjICYgMzEpIDw8IDYpOyBmIHw9IChkICYgNjMpOyBvdXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShmKTsgY29udGludWU7IH1cblx0XHRlID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0aWYgKGMgPCAyNDApIHsgb3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKChjICYgMTUpIDw8IDEyKSB8ICgoZCAmIDYzKSA8PCA2KSB8IChlICYgNjMpKTsgY29udGludWU7IH1cblx0XHRmID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0dyA9ICgoKGMgJiA3KSA8PCAxOCkgfCAoKGQgJiA2MykgPDwgMTIpIHwgKChlICYgNjMpIDw8IDYpIHwgKGYgJiA2MykpLTY1NTM2O1xuXHRcdG91dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgwMCArICgodz4+PjEwKSYxMDIzKSk7XG5cdFx0b3V0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEQzAwICsgKHcmMTAyMykpO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHV0ZjhyZWFkYihkYXRhKSB7XG5cdHZhciBvdXQgPSBuZXdfcmF3X2J1ZigyKmRhdGEubGVuZ3RoKSwgdywgaSwgaiA9IDEsIGsgPSAwLCB3dz0wLCBjO1xuXHRmb3IoaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSs9aikge1xuXHRcdGogPSAxO1xuXHRcdGlmKChjPWRhdGEuY2hhckNvZGVBdChpKSkgPCAxMjgpIHcgPSBjO1xuXHRcdGVsc2UgaWYoYyA8IDIyNCkgeyB3ID0gKGMmMzEpKjY0KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2Myk7IGo9MjsgfVxuXHRcdGVsc2UgaWYoYyA8IDI0MCkgeyB3PShjJjE1KSo0MDk2KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2MykqNjQrKGRhdGEuY2hhckNvZGVBdChpKzIpJjYzKTsgaj0zOyB9XG5cdFx0ZWxzZSB7IGogPSA0O1xuXHRcdFx0dyA9IChjICYgNykqMjYyMTQ0KyhkYXRhLmNoYXJDb2RlQXQoaSsxKSY2MykqNDA5NisoZGF0YS5jaGFyQ29kZUF0KGkrMikmNjMpKjY0KyhkYXRhLmNoYXJDb2RlQXQoaSszKSY2Myk7XG5cdFx0XHR3IC09IDY1NTM2OyB3dyA9IDB4RDgwMCArICgodz4+PjEwKSYxMDIzKTsgdyA9IDB4REMwMCArICh3JjEwMjMpO1xuXHRcdH1cblx0XHRpZih3dyAhPT0gMCkgeyBvdXRbaysrXSA9IHd3JjI1NTsgb3V0W2srK10gPSB3dz4+Pjg7IHd3ID0gMDsgfVxuXHRcdG91dFtrKytdID0gdyUyNTY7IG91dFtrKytdID0gdz4+Pjg7XG5cdH1cblx0cmV0dXJuIG91dC5zbGljZSgwLGspLnRvU3RyaW5nKCd1Y3MyJyk7XG59XG5cbmZ1bmN0aW9uIHV0ZjhyZWFkYyhkYXRhKSB7IHJldHVybiBCdWZmZXJfZnJvbShkYXRhLCAnYmluYXJ5JykudG9TdHJpbmcoJ3V0ZjgnKTsgfVxuXG52YXIgdXRmOGNvcnB1cyA9IFwiZm9vIGJhciBiYXpcXHUwMGUyXFx1MDA5OFxcdTAwODNcXHUwMGYwXFx1MDA5ZlxcdTAwOGRcXHUwMGEzXCI7XG52YXIgdXRmOHJlYWQgPSBoYXNfYnVmICYmICgvKiNfX1BVUkVfXyovdXRmOHJlYWRjKHV0Zjhjb3JwdXMpID09IC8qI19fUFVSRV9fKi91dGY4cmVhZGEodXRmOGNvcnB1cykgJiYgdXRmOHJlYWRjIHx8IC8qI19fUFVSRV9fKi91dGY4cmVhZGIodXRmOGNvcnB1cykgPT0gLyojX19QVVJFX18qL3V0ZjhyZWFkYSh1dGY4Y29ycHVzKSAmJiB1dGY4cmVhZGIpIHx8IHV0ZjhyZWFkYTtcblxudmFyIHV0Zjh3cml0ZS8qOlN0cmluZ0NvbnYqLyA9IGhhc19idWYgPyBmdW5jdGlvbihkYXRhKSB7IHJldHVybiBCdWZmZXJfZnJvbShkYXRhLCAndXRmOCcpLnRvU3RyaW5nKFwiYmluYXJ5XCIpOyB9IDogZnVuY3Rpb24ob3JpZy8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBpID0gMCwgYyA9IDAsIGQgPSAwO1xuXHR3aGlsZShpIDwgb3JpZy5sZW5ndGgpIHtcblx0XHRjID0gb3JpZy5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0c3dpdGNoKHRydWUpIHtcblx0XHRcdGNhc2UgYyA8IDEyODogb3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBjIDwgMjA0ODpcblx0XHRcdFx0b3V0LnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZSgxOTIgKyAoYyA+PiA2KSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArIChjICYgNjMpKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBjID49IDU1Mjk2ICYmIGMgPCA1NzM0NDpcblx0XHRcdFx0YyAtPSA1NTI5NjsgZCA9IG9yaWcuY2hhckNvZGVBdChpKyspIC0gNTYzMjAgKyAoYzw8MTApO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDI0MCArICgoZCA+PjE4KSAmIDcpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTQ0ICsgKChkID4+MTIpICYgNjMpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKChkID4+IDYpICYgNjMpKSk7XG5cdFx0XHRcdG91dC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoMTI4ICsgKGQgJiA2MykpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDIyNCArIChjID4+IDEyKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArICgoYyA+PiA2KSAmIDYzKSkpO1xuXHRcdFx0XHRvdXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKDEyOCArIChjICYgNjMpKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn07XG5cbi8vIG1hdGNoZXMgPGZvbz4uLi48L2Zvbz4gZXh0cmFjdHMgY29udGVudFxudmFyIG1hdGNodGFnID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIG10Y2FjaGUvKjp7W2s6c3RyaW5nXTpSZWdFeHB9Ki8gPSAoe30vKjphbnkqLyk7XG5cdHJldHVybiBmdW5jdGlvbiBtYXRjaHRhZyhmLyo6c3RyaW5nKi8sZy8qOj9zdHJpbmcqLykvKjpSZWdFeHAqLyB7XG5cdFx0dmFyIHQgPSBmK1wifFwiKyhnfHxcIlwiKTtcblx0XHRpZihtdGNhY2hlW3RdKSByZXR1cm4gbXRjYWNoZVt0XTtcblx0XHRyZXR1cm4gKG10Y2FjaGVbdF0gPSBuZXcgUmVnRXhwKCc8KD86XFxcXHcrOik/JytmKycoPzogeG1sOnNwYWNlPVwicHJlc2VydmVcIik/KD86W14+XSopPihbXFxcXHNcXFxcU10qPyk8Lyg/OlxcXFx3KzopPycrZisnPicsKChnfHxcIlwiKS8qOmFueSovKSkpO1xuXHR9O1xufSkoKTtcblxudmFyIGh0bWxkZWNvZGUvKjp7KHM6c3RyaW5nKTpzdHJpbmd9Ki8gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHR2YXIgZW50aXRpZXMvKjpBcnJheTxbUmVnRXhwLCBzdHJpbmddPiovID0gW1xuXHRcdFsnbmJzcCcsICcgJ10sIFsnbWlkZG90JywgJ8K3J10sXG5cdFx0WydxdW90JywgJ1wiJ10sIFsnYXBvcycsIFwiJ1wiXSwgWydndCcsICAgJz4nXSwgWydsdCcsICAgJzwnXSwgWydhbXAnLCAgJyYnXVxuXHRdLm1hcChmdW5jdGlvbih4Lyo6W3N0cmluZywgc3RyaW5nXSovKSB7IHJldHVybiBbbmV3IFJlZ0V4cCgnJicgKyB4WzBdICsgJzsnLCBcImlnXCIpLCB4WzFdXTsgfSk7XG5cdHJldHVybiBmdW5jdGlvbiBodG1sZGVjb2RlKHN0ci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgbyA9IHN0clxuXHRcdFx0XHQvLyBSZW1vdmUgbmV3IGxpbmVzIGFuZCBzcGFjZXMgZnJvbSBzdGFydCBvZiBjb250ZW50XG5cdFx0XHRcdC5yZXBsYWNlKC9eW1xcdFxcblxcciBdKy8sIFwiXCIpXG5cdFx0XHRcdC8vIFJlbW92ZSBuZXcgbGluZXMgYW5kIHNwYWNlcyBmcm9tIGVuZCBvZiBjb250ZW50XG5cdFx0XHRcdC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rJC8sXCJcIilcblx0XHRcdFx0Ly8gQWRkZWQgbGluZSB3aGljaCByZW1vdmVzIGFueSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXJzIGFmdGVyIGFuZCBiZWZvcmUgaHRtbCB0YWdzXG5cdFx0XHRcdC5yZXBsYWNlKC8+XFxzKy9nLFwiPlwiKS5yZXBsYWNlKC9cXHMrPC9nLFwiPFwiKVxuXHRcdFx0XHQvLyBSZXBsYWNlIHJlbWFpbmluZyBuZXcgbGluZXMgYW5kIHNwYWNlcyB3aXRoIHNwYWNlXG5cdFx0XHRcdC5yZXBsYWNlKC9bXFx0XFxuXFxyIF0rL2csIFwiIFwiKVxuXHRcdFx0XHQvLyBSZXBsYWNlIDxicj4gdGFncyB3aXRoIG5ldyBsaW5lc1xuXHRcdFx0XHQucmVwbGFjZSgvPFxccypbYkJdW3JSXVxccypcXC8/Pi9nLFwiXFxuXCIpXG5cdFx0XHRcdC8vIFN0cmlwIEhUTUwgZWxlbWVudHNcblx0XHRcdFx0LnJlcGxhY2UoLzxbXj5dKj4vZyxcIlwiKTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgZW50aXRpZXMubGVuZ3RoOyArK2kpIG8gPSBvLnJlcGxhY2UoZW50aXRpZXNbaV1bMF0sIGVudGl0aWVzW2ldWzFdKTtcblx0XHRyZXR1cm4gbztcblx0fTtcbn0pKCk7XG5cbnZhciB2dHJlZ2V4ID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpeyB2YXIgdnRfY2FjaGUgPSB7fTtcblx0cmV0dXJuIGZ1bmN0aW9uIHZ0X3JlZ2V4KGJ0KSB7XG5cdFx0aWYodnRfY2FjaGVbYnRdICE9PSB1bmRlZmluZWQpIHJldHVybiB2dF9jYWNoZVtidF07XG5cdFx0cmV0dXJuICh2dF9jYWNoZVtidF0gPSBuZXcgUmVnRXhwKFwiPCg/OnZ0Oik/XCIgKyBidCArIFwiPihbXFxcXHNcXFxcU10qPyk8Lyg/OnZ0Oik/XCIgKyBidCArIFwiPlwiLCAnZycpICk7XG59O30pKCk7XG52YXIgdnR2cmVnZXggPSAvPFxcLz8oPzp2dDopP3ZhcmlhbnQ+L2csIHZ0bXJlZ2V4ID0gLzwoPzp2dDopKFtePl0qKT4oW1xcc1xcU10qKTwvO1xuZnVuY3Rpb24gcGFyc2VWZWN0b3IoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PHt2OnN0cmluZyx0OnN0cmluZ30+Ki8ge1xuXHR2YXIgaCA9IHBhcnNleG1sdGFnKGRhdGEpO1xuXG5cdHZhciBtYXRjaGVzLyo6QXJyYXk8c3RyaW5nPiovID0gZGF0YS5tYXRjaCh2dHJlZ2V4KGguYmFzZVR5cGUpKXx8W107XG5cdHZhciByZXMvKjpBcnJheTxhbnk+Ki8gPSBbXTtcblx0aWYobWF0Y2hlcy5sZW5ndGggIT0gaC5zaXplKSB7XG5cdFx0aWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcInVuZXhwZWN0ZWQgdmVjdG9yIGxlbmd0aCBcIiArIG1hdGNoZXMubGVuZ3RoICsgXCIgIT0gXCIgKyBoLnNpemUpO1xuXHRcdHJldHVybiByZXM7XG5cdH1cblx0bWF0Y2hlcy5mb3JFYWNoKGZ1bmN0aW9uKHgvKjpzdHJpbmcqLykge1xuXHRcdHZhciB2ID0geC5yZXBsYWNlKHZ0dnJlZ2V4LFwiXCIpLm1hdGNoKHZ0bXJlZ2V4KTtcblx0XHRpZih2KSByZXMucHVzaCh7djp1dGY4cmVhZCh2WzJdKSwgdDp2WzFdfSk7XG5cdH0pO1xuXHRyZXR1cm4gcmVzO1xufVxuXG52YXIgd3RyZWdleCA9IC8oXlxcc3xcXHMkfFxcbikvO1xuZnVuY3Rpb24gd3JpdGV0YWcoZi8qOnN0cmluZyovLGcvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiAnPCcgKyBmICsgKGcubWF0Y2god3RyZWdleCk/JyB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiJyA6IFwiXCIpICsgJz4nICsgZyArICc8LycgKyBmICsgJz4nOyB9XG5cbmZ1bmN0aW9uIHd4dF9oZWxwZXIoaCkvKjpzdHJpbmcqLyB7IHJldHVybiBrZXlzKGgpLm1hcChmdW5jdGlvbihrKSB7IHJldHVybiBcIiBcIiArIGsgKyAnPVwiJyArIGhba10gKyAnXCInO30pLmpvaW4oXCJcIik7IH1cbmZ1bmN0aW9uIHdyaXRleHRhZyhmLyo6c3RyaW5nKi8sZy8qOj9zdHJpbmcqLyxoKSB7IHJldHVybiAnPCcgKyBmICsgKChoICE9IG51bGwpID8gd3h0X2hlbHBlcihoKSA6IFwiXCIpICsgKChnICE9IG51bGwpID8gKGcubWF0Y2god3RyZWdleCk/JyB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiJyA6IFwiXCIpICsgJz4nICsgZyArICc8LycgKyBmIDogXCIvXCIpICsgJz4nO31cblxuZnVuY3Rpb24gd3JpdGVfdzNjZHRmKGQvKjpEYXRlKi8sIHQvKjo/Ym9vbGVhbiovKS8qOnN0cmluZyovIHsgdHJ5IHsgcmV0dXJuIGQudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQqLyxcIlwiKTsgfSBjYXRjaChlKSB7IGlmKHQpIHRocm93IGU7IH0gcmV0dXJuIFwiXCI7IH1cblxuZnVuY3Rpb24gd3JpdGVfdnQocywgeGxzeC8qOj9ib29sZWFuKi8pLyo6c3RyaW5nKi8ge1xuXHRzd2l0Y2godHlwZW9mIHMpIHtcblx0XHRjYXNlICdzdHJpbmcnOlxuXHRcdFx0dmFyIG8gPSB3cml0ZXh0YWcoJ3Z0Omxwd3N0cicsIGVzY2FwZXhtbChzKSk7XG5cdFx0XHRpZih4bHN4KSBvID0gby5yZXBsYWNlKC8mcXVvdDsvZywgXCJfeDAwMjJfXCIpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0Y2FzZSAnbnVtYmVyJzogcmV0dXJuIHdyaXRleHRhZygoc3wwKT09cz8ndnQ6aTQnOid2dDpyOCcsIGVzY2FwZXhtbChTdHJpbmcocykpKTtcblx0XHRjYXNlICdib29sZWFuJzogcmV0dXJuIHdyaXRleHRhZygndnQ6Ym9vbCcscz8ndHJ1ZSc6J2ZhbHNlJyk7XG5cdH1cblx0aWYocyBpbnN0YW5jZW9mIERhdGUpIHJldHVybiB3cml0ZXh0YWcoJ3Z0OmZpbGV0aW1lJywgd3JpdGVfdzNjZHRmKHMpKTtcblx0dGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIHNlcmlhbGl6ZSBcIiArIHMpO1xufVxuXG5mdW5jdGlvbiB4bG1sX25vcm1hbGl6ZShkKS8qOnN0cmluZyovIHtcblx0aWYoaGFzX2J1ZiAmJi8qOjp0eXBlb2YgQnVmZmVyICE9PSBcInVuZGVmaW5lZFwiICYmIGQgIT0gbnVsbCAmJiBkIGluc3RhbmNlb2YgQnVmZmVyICYmKi8gQnVmZmVyLmlzQnVmZmVyKGQpKSByZXR1cm4gZC50b1N0cmluZygndXRmOCcpO1xuXHRpZih0eXBlb2YgZCA9PT0gJ3N0cmluZycpIHJldHVybiBkO1xuXHQvKiBkdWt0YXBlICovXG5cdGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiBkIGluc3RhbmNlb2YgVWludDhBcnJheSkgcmV0dXJuIHV0ZjhyZWFkKGEycyhhYjJhKGQpKSk7XG5cdHRocm93IG5ldyBFcnJvcihcIkJhZCBpbnB1dCBmb3JtYXQ6IGV4cGVjdGVkIEJ1ZmZlciBvciBzdHJpbmdcIik7XG59XG4vKiBVT1MgdXNlcyBDSksgaW4gdGFncyAqL1xudmFyIHhsbWxyZWdleCA9IC88KFxcLz8pKFteXFxzPz48IVxcLzpdKjp8KShbXlxccz88PjpcXC9dKykoPzpbXFxzPzpcXC9dW14+XSopPz4vbWc7XG4vL3ZhciB4bG1scmVnZXggPSAvPChcXC8/KShbYS16MC05XSo6fCkoXFx3KylbXj5dKj4vbWc7XG5cbnZhciBYTUxOUyA9ICh7XG5cdENPUkVfUFJPUFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L21ldGFkYXRhL2NvcmUtcHJvcGVydGllcycsXG5cdENVU1RfUFJPUFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvY3VzdG9tLXByb3BlcnRpZXNcIixcblx0RVhUX1BST1BTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXNcIixcblx0Q1Q6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXMnLFxuXHRSRUxTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzJyxcblx0VENNTlQ6ICdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTgvdGhyZWFkZWRjb21tZW50cycsXG5cdCdkYyc6ICdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLycsXG5cdCdkY3Rlcm1zJzogJ2h0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy8nLFxuXHQnZGNtaXR5cGUnOiAnaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlLycsXG5cdCdteCc6ICdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9tYWMvZXhjZWwvMjAwOC9tYWluJyxcblx0J3InOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcycsXG5cdCdzanMnOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9zaGVldGpzL2NvcmUtcHJvcGVydGllcycsXG5cdCd2dCc6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9kb2NQcm9wc1ZUeXBlcycsXG5cdCd4c2knOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UnLFxuXHQneHNkJzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hJ1xufS8qOmFueSovKTtcblxudmFyIFhNTE5TX21haW4gPSBbXG5cdCdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW4nLFxuXHQnaHR0cDovL3B1cmwub2NsYy5vcmcvb294bWwvc3ByZWFkc2hlZXRtbC9tYWluJyxcblx0J2h0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL2V4Y2VsLzIwMDYvbWFpbicsXG5cdCdodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9leGNlbC8yMDA2LzInXG5dO1xuXG52YXIgWExNTE5TID0gKHtcblx0J28nOiAgICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlJyxcblx0J3gnOiAgICAndXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6ZXhjZWwnLFxuXHQnc3MnOiAgICd1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpzcHJlYWRzaGVldCcsXG5cdCdkdCc6ICAgJ3V1aWQ6QzJGNDEwMTAtNjVCMy0xMWQxLUEyOUYtMDBBQTAwQzE0ODgyJyxcblx0J212JzogICAnaHR0cDovL21hY1ZtbFNjaGVtYVVyaScsXG5cdCd2JzogICAgJ3VybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206dm1sJyxcblx0J2h0bWwnOiAnaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MCdcbn0vKjphbnkqLyk7XG5mdW5jdGlvbiByZWFkX2RvdWJsZV9sZShiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGlkeC8qOm51bWJlciovKS8qOm51bWJlciovIHtcblx0dmFyIHMgPSAxIC0gMiAqIChiW2lkeCArIDddID4+PiA3KTtcblx0dmFyIGUgPSAoKGJbaWR4ICsgN10gJiAweDdmKSA8PCA0KSArICgoYltpZHggKyA2XSA+Pj4gNCkgJiAweDBmKTtcblx0dmFyIG0gPSAoYltpZHgrNl0mMHgwZik7XG5cdGZvcih2YXIgaSA9IDU7IGkgPj0gMDsgLS1pKSBtID0gbSAqIDI1NiArIGJbaWR4ICsgaV07XG5cdGlmKGUgPT0gMHg3ZmYpIHJldHVybiBtID09IDAgPyAocyAqIEluZmluaXR5KSA6IE5hTjtcblx0aWYoZSA9PSAwKSBlID0gLTEwMjI7XG5cdGVsc2UgeyBlIC09IDEwMjM7IG0gKz0gTWF0aC5wb3coMiw1Mik7IH1cblx0cmV0dXJuIHMgKiBNYXRoLnBvdygyLCBlIC0gNTIpICogbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfZG91YmxlX2xlKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdi8qOm51bWJlciovLCBpZHgvKjpudW1iZXIqLykge1xuXHR2YXIgYnMgPSAoKCgodiA8IDApIHx8ICgxL3YgPT0gLUluZmluaXR5KSkgPyAxIDogMCkgPDwgNyksIGUgPSAwLCBtID0gMDtcblx0dmFyIGF2ID0gYnMgPyAoLXYpIDogdjtcblx0aWYoIWlzRmluaXRlKGF2KSkgeyBlID0gMHg3ZmY7IG0gPSBpc05hTih2KSA/IDB4Njk2OSA6IDA7IH1cblx0ZWxzZSBpZihhdiA9PSAwKSBlID0gbSA9IDA7XG5cdGVsc2Uge1xuXHRcdGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKGF2KSAvIE1hdGguTE4yKTtcblx0XHRtID0gYXYgKiBNYXRoLnBvdygyLCA1MiAtIGUpO1xuXHRcdGlmKChlIDw9IC0xMDIzKSAmJiAoIWlzRmluaXRlKG0pIHx8IChtIDwgTWF0aC5wb3coMiw1MikpKSkgeyBlID0gLTEwMjI7IH1cblx0XHRlbHNlIHsgbSAtPSBNYXRoLnBvdygyLDUyKTsgZSs9MTAyMzsgfVxuXHR9XG5cdGZvcih2YXIgaSA9IDA7IGkgPD0gNTsgKytpLCBtLz0yNTYpIGJbaWR4ICsgaV0gPSBtICYgMHhmZjtcblx0YltpZHggKyA2XSA9ICgoZSAmIDB4MGYpIDw8IDQpIHwgKG0gJiAweGYpO1xuXHRiW2lkeCArIDddID0gKGUgPj4gNCkgfCBicztcbn1cblxudmFyIF9fX3RvQnVmZmVyID0gZnVuY3Rpb24oYnVmcy8qOkFycmF5PEFycmF5PFJhd0J5dGVzPiA+Ki8pLyo6UmF3Qnl0ZXMqLyB7IHZhciB4PVtdLHc9MTAyNDA7IGZvcih2YXIgaT0wO2k8YnVmc1swXS5sZW5ndGg7KytpKSBpZihidWZzWzBdW2ldKSBmb3IodmFyIGo9MCxMPWJ1ZnNbMF1baV0ubGVuZ3RoO2o8TDtqKz13KSB4LnB1c2guYXBwbHkoeCwgYnVmc1swXVtpXS5zbGljZShqLGordykpOyByZXR1cm4geDsgfTtcbnZhciBfX3RvQnVmZmVyID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGJ1ZnMpIHsgcmV0dXJuIChidWZzWzBdLmxlbmd0aCA+IDAgJiYgQnVmZmVyLmlzQnVmZmVyKGJ1ZnNbMF1bMF0pKSA/IEJ1ZmZlci5jb25jYXQoYnVmc1swXS5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKHgpID8geCA6IEJ1ZmZlcl9mcm9tKHgpOyB9KSkgOiBfX190b0J1ZmZlcihidWZzKTt9IDogX19fdG9CdWZmZXI7XG5cbnZhciBfX191dGYxNmxlID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLHMvKjpudW1iZXIqLyxlLyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyB2YXIgc3MvKjpBcnJheTxzdHJpbmc+Ki89W107IGZvcih2YXIgaT1zOyBpPGU7IGkrPTIpIHNzLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShfX3JlYWRVSW50MTZMRShiLGkpKSk7IHJldHVybiBzcy5qb2luKFwiXCIpLnJlcGxhY2UoY2hyMCwnJyk7IH07XG52YXIgX191dGYxNmxlID0gaGFzX2J1ZiA/IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKS8qOnN0cmluZyovIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fdXRmMTZsZShiLHMsZSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGYxNmxlJyxzLGUpLnJlcGxhY2UoY2hyMCwnJykvKi5yZXBsYWNlKGNocjEsJyEnKSovOyB9IDogX19fdXRmMTZsZTtcblxudmFyIF9fX2hleGxpZnkgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHZhciBzcy8qOkFycmF5PHN0cmluZz4qLz1bXTsgZm9yKHZhciBpPXM7IGk8cytsOyArK2kpIHNzLnB1c2goKFwiMFwiICsgYltpXS50b1N0cmluZygxNikpLnNsaWNlKC0yKSk7IHJldHVybiBzcy5qb2luKFwiXCIpOyB9O1xudmFyIF9faGV4bGlmeSA9IGhhc19idWYgPyBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGwvKjpudW1iZXIqLykvKjpzdHJpbmcqLyB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoYikvKjo6ICYmIGIgaW5zdGFuY2VvZiBCdWZmZXIqLyA/IGIudG9TdHJpbmcoJ2hleCcscyxzK2wpIDogX19faGV4bGlmeShiLHMsbCk7IH0gOiBfX19oZXhsaWZ5O1xuXG52YXIgX19fdXRmOCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKSB7IHZhciBzcz1bXTsgZm9yKHZhciBpPXM7IGk8ZTsgaSsrKSBzcy5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoX19yZWFkVUludDgoYixpKSkpOyByZXR1cm4gc3Muam9pbihcIlwiKTsgfTtcbnZhciBfX3V0ZjggPSBoYXNfYnVmID8gZnVuY3Rpb24gdXRmOF9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgcy8qOm51bWJlciovLCBlLyo6bnVtYmVyKi8pIHsgcmV0dXJuIChCdWZmZXIuaXNCdWZmZXIoYikvKjo6ICYmIChiIGluc3RhbmNlb2YgQnVmZmVyKSovKSA/IGIudG9TdHJpbmcoJ3V0ZjgnLHMsZSkgOiBfX191dGY4KGIscyxlKTsgfSA6IF9fX3V0Zjg7XG5cbnZhciBfX19scHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gX191dGY4KGIsIGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xudmFyIF9fbHBzdHIgPSBfX19scHN0cjtcblxudmFyIF9fX2Nwc3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4tMSkgOiBcIlwiO307XG52YXIgX19jcHN0ciA9IF9fX2Nwc3RyO1xuXG52YXIgX19fbHB3c3RyID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gMipfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmOChiLCBpKzQsaSs0K2xlbi0xKSA6IFwiXCI7fTtcbnZhciBfX2xwd3N0ciA9IF9fX2xwd3N0cjtcblxudmFyIF9fX2xwcDQgPSBmdW5jdGlvbiBscHA0XyhiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/IF9fdXRmMTZsZShiLCBpKzQsaSs0K2xlbikgOiBcIlwiO307XG52YXIgX19scHA0ID0gX19fbHBwNDtcblxudmFyIF9fXzhscHA0ID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLGkvKjpudW1iZXIqLykgeyB2YXIgbGVuID0gX19yZWFkVUludDMyTEUoYixpKTsgcmV0dXJuIGxlbiA+IDAgPyBfX3V0ZjgoYiwgaSs0LGkrNCtsZW4pIDogXCJcIjt9O1xudmFyIF9fOGxwcDQgPSBfX184bHBwNDtcblxudmFyIF9fX2RvdWJsZSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pIHsgcmV0dXJuIHJlYWRfZG91YmxlX2xlKGIsIGlkeCk7fTtcbnZhciBfX2RvdWJsZSA9IF9fX2RvdWJsZTtcblxudmFyIGlzX2J1ZiA9IGZ1bmN0aW9uIGlzX2J1Zl9hKGEpIHsgcmV0dXJuIEFycmF5LmlzQXJyYXkoYSkgfHwgKHR5cGVvZiBVaW50OEFycmF5ICE9PSBcInVuZGVmaW5lZFwiICYmIGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KTsgfTtcblxuaWYoaGFzX2J1Zi8qOjogJiYgdHlwZW9mIEJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcqLykge1xuXHRfX2xwc3RyID0gZnVuY3Rpb24gbHBzdHJfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19scHN0cihiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gbGVuID4gMCA/IGIudG9TdHJpbmcoJ3V0ZjgnLGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xuXHRfX2Nwc3RyID0gZnVuY3Rpb24gY3BzdHJfYihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8sIGkvKjpudW1iZXIqLykgeyBpZighQnVmZmVyLmlzQnVmZmVyKGIpLyo6OiB8fCAhKGIgaW5zdGFuY2VvZiBCdWZmZXIpKi8pIHJldHVybiBfX19jcHN0cihiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gbGVuID4gMCA/IGIudG9TdHJpbmcoJ3V0ZjgnLGkrNCxpKzQrbGVuLTEpIDogXCJcIjt9O1xuXHRfX2xwd3N0ciA9IGZ1bmN0aW9uIGxwd3N0cl9iKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fX2xwd3N0cihiLCBpKTsgdmFyIGxlbiA9IDIqYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGYxNmxlJyxpKzQsaSs0K2xlbi0xKTt9O1xuXHRfX2xwcDQgPSBmdW5jdGlvbiBscHA0X2IoYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpLyo6bnVtYmVyKi8pIHsgaWYoIUJ1ZmZlci5pc0J1ZmZlcihiKS8qOjogfHwgIShiIGluc3RhbmNlb2YgQnVmZmVyKSovKSByZXR1cm4gX19fbHBwNChiLCBpKTsgdmFyIGxlbiA9IGIucmVhZFVJbnQzMkxFKGkpOyByZXR1cm4gYi50b1N0cmluZygndXRmMTZsZScsaSs0LGkrNCtsZW4pO307XG5cdF9fOGxwcDQgPSBmdW5jdGlvbiBscHA0XzhiKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKCFCdWZmZXIuaXNCdWZmZXIoYikvKjo6IHx8ICEoYiBpbnN0YW5jZW9mIEJ1ZmZlcikqLykgcmV0dXJuIF9fXzhscHA0KGIsIGkpOyB2YXIgbGVuID0gYi5yZWFkVUludDMyTEUoaSk7IHJldHVybiBiLnRvU3RyaW5nKCd1dGY4JyxpKzQsaSs0K2xlbik7fTtcblx0X19kb3VibGUgPSBmdW5jdGlvbiBkb3VibGVfKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaS8qOm51bWJlciovKSB7IGlmKEJ1ZmZlci5pc0J1ZmZlcihiKS8qOjomJiBiIGluc3RhbmNlb2YgQnVmZmVyKi8pIHJldHVybiBiLnJlYWREb3VibGVMRShpKTsgcmV0dXJuIF9fX2RvdWJsZShiLGkpOyB9O1xuXHRpc19idWYgPSBmdW5jdGlvbiBpc19idWZfYihhKSB7IHJldHVybiBCdWZmZXIuaXNCdWZmZXIoYSkgfHwgQXJyYXkuaXNBcnJheShhKSB8fCAodHlwZW9mIFVpbnQ4QXJyYXkgIT09IFwidW5kZWZpbmVkXCIgJiYgYSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpOyB9O1xufVxuXG4vKiBmcm9tIGpzLXhscyAqL1xuZnVuY3Rpb24gY3Bkb2l0KCkge1xuXHRfX3V0ZjE2bGUgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8scy8qOm51bWJlciovLGUvKjpudW1iZXIqLykgeyByZXR1cm4gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGIuc2xpY2UocyxlKSkucmVwbGFjZShjaHIwLCAnJyk7IH07XG5cdF9fdXRmOCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxzLyo6bnVtYmVyKi8sZS8qOm51bWJlciovKSB7IHJldHVybiAkY3B0YWJsZS51dGlscy5kZWNvZGUoNjUwMDEsIGIuc2xpY2UocyxlKSk7IH07XG5cdF9fbHBzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZShjdXJyZW50X2Fuc2ksIGIuc2xpY2UoaSs0LCBpKzQrbGVuLTEpKSA6IFwiXCI7fTtcblx0X19jcHN0ciA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLyxpLyo6bnVtYmVyKi8pIHsgdmFyIGxlbiA9IF9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIGIuc2xpY2UoaSs0LCBpKzQrbGVuLTEpKSA6IFwiXCI7fTtcblx0X19scHdzdHIgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSAyKl9fcmVhZFVJbnQzMkxFKGIsaSk7IHJldHVybiBsZW4gPiAwID8gJGNwdGFibGUudXRpbHMuZGVjb2RlKDEyMDAsIGIuc2xpY2UoaSs0LGkrNCtsZW4tMSkpIDogXCJcIjt9O1xuXHRfX2xwcDQgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBiLnNsaWNlKGkrNCxpKzQrbGVuKSkgOiBcIlwiO307XG5cdF9fOGxwcDQgPSBmdW5jdGlvbihiLyo6UmF3Qnl0ZXN8Q0ZCbG9iKi8saS8qOm51bWJlciovKSB7IHZhciBsZW4gPSBfX3JlYWRVSW50MzJMRShiLGkpOyByZXR1cm4gbGVuID4gMCA/ICRjcHRhYmxlLnV0aWxzLmRlY29kZSg2NTAwMSwgYi5zbGljZShpKzQsaSs0K2xlbikpIDogXCJcIjt9O1xufVxuaWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgY3Bkb2l0KCk7XG5cbnZhciBfX3JlYWRVSW50OCA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gYltpZHhdOyB9O1xudmFyIF9fcmVhZFVJbnQxNkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHgrMV0qKDE8PDgpKStiW2lkeF07IH07XG52YXIgX19yZWFkSW50MTZMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyB2YXIgdSA9IChiW2lkeCsxXSooMTw8OCkpK2JbaWR4XTsgcmV0dXJuICh1IDwgMHg4MDAwKSA/IHUgOiAoKDB4ZmZmZiAtIHUgKyAxKSAqIC0xKTsgfTtcbnZhciBfX3JlYWRVSW50MzJMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgaWR4Lyo6bnVtYmVyKi8pLyo6bnVtYmVyKi8geyByZXR1cm4gYltpZHgrM10qKDE8PDI0KSsoYltpZHgrMl08PDE2KSsoYltpZHgrMV08PDgpK2JbaWR4XTsgfTtcbnZhciBfX3JlYWRJbnQzMkxFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHgrM108PDI0KXwoYltpZHgrMl08PDE2KXwoYltpZHgrMV08PDgpfGJbaWR4XTsgfTtcbnZhciBfX3JlYWRJbnQzMkJFID0gZnVuY3Rpb24oYi8qOlJhd0J5dGVzfENGQmxvYiovLCBpZHgvKjpudW1iZXIqLykvKjpudW1iZXIqLyB7IHJldHVybiAoYltpZHhdPDwyNCl8KGJbaWR4KzFdPDwxNil8KGJbaWR4KzJdPDw4KXxiW2lkeCszXTsgfTtcblxuZnVuY3Rpb24gUmVhZFNoaWZ0KHNpemUvKjpudW1iZXIqLywgdC8qOj9zdHJpbmcqLykvKjpudW1iZXJ8c3RyaW5nKi8ge1xuXHR2YXIgbz1cIlwiLCBvSS8qOjogOm51bWJlciA9IDAqLywgb1IsIG9vPVtdLCB3LCB2diwgaSwgbG9jO1xuXHRzd2l0Y2godCkge1xuXHRcdGNhc2UgJ2RiY3MnOlxuXHRcdFx0bG9jID0gdGhpcy5sO1xuXHRcdFx0aWYoaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIodGhpcykpIG8gPSB0aGlzLnNsaWNlKHRoaXMubCwgdGhpcy5sKzIqc2l6ZSkudG9TdHJpbmcoXCJ1dGYxNmxlXCIpO1xuXHRcdFx0ZWxzZSBmb3IoaSA9IDA7IGkgPCBzaXplOyArK2kpIHsgbys9U3RyaW5nLmZyb21DaGFyQ29kZShfX3JlYWRVSW50MTZMRSh0aGlzLCBsb2MpKTsgbG9jKz0yOyB9XG5cdFx0XHRzaXplICo9IDI7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3V0ZjgnOiBvID0gX191dGY4KHRoaXMsIHRoaXMubCwgdGhpcy5sICsgc2l6ZSk7IGJyZWFrO1xuXHRcdGNhc2UgJ3V0ZjE2bGUnOiBzaXplICo9IDI7IG8gPSBfX3V0ZjE2bGUodGhpcywgdGhpcy5sLCB0aGlzLmwgKyBzaXplKTsgYnJlYWs7XG5cblx0XHRjYXNlICd3c3RyJzpcblx0XHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIG8gPSAkY3B0YWJsZS51dGlscy5kZWNvZGUoY3VycmVudF9jb2RlcGFnZSwgdGhpcy5zbGljZSh0aGlzLmwsIHRoaXMubCsyKnNpemUpKTtcblx0XHRcdGVsc2UgcmV0dXJuIFJlYWRTaGlmdC5jYWxsKHRoaXMsIHNpemUsICdkYmNzJyk7XG5cdFx0XHRzaXplID0gMiAqIHNpemU7IGJyZWFrO1xuXG5cdFx0LyogW01TLU9MRURTXSAyLjEuNCBMZW5ndGhQcmVmaXhlZEFuc2lTdHJpbmcgKi9cblx0XHRjYXNlICdscHN0ci1hbnNpJzogbyA9IF9fbHBzdHIodGhpcywgdGhpcy5sKTsgc2l6ZSA9IDQgKyBfX3JlYWRVSW50MzJMRSh0aGlzLCB0aGlzLmwpOyBicmVhaztcblx0XHRjYXNlICdscHN0ci1jcCc6IG8gPSBfX2Nwc3RyKHRoaXMsIHRoaXMubCk7IHNpemUgPSA0ICsgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgYnJlYWs7XG5cdFx0LyogW01TLU9MRURTXSAyLjEuNSBMZW5ndGhQcmVmaXhlZFVuaWNvZGVTdHJpbmcgKi9cblx0XHRjYXNlICdscHdzdHInOiBvID0gX19scHdzdHIodGhpcywgdGhpcy5sKTsgc2l6ZSA9IDQgKyAyICogX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgYnJlYWs7XG5cdFx0LyogW01TLU9GRkNSWVBUT10gMi4xLjIgTGVuZ3RoLVByZWZpeGVkIFBhZGRlZCBVbmljb2RlIFN0cmluZyAoVU5JQ09ERS1MUC1QNCkgKi9cblx0XHRjYXNlICdscHA0Jzogc2l6ZSA9IDQgKyAgX19yZWFkVUludDMyTEUodGhpcywgdGhpcy5sKTsgbyA9IF9fbHBwNCh0aGlzLCB0aGlzLmwpOyBpZihzaXplICYgMHgwMikgc2l6ZSArPSAyOyBicmVhaztcblx0XHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuMyBMZW5ndGgtUHJlZml4ZWQgVVRGLTggU3RyaW5nIChVVEYtOC1MUC1QNCkgKi9cblx0XHRjYXNlICc4bHBwNCc6IHNpemUgPSA0ICsgIF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IG8gPSBfXzhscHA0KHRoaXMsIHRoaXMubCk7IGlmKHNpemUgJiAweDAzKSBzaXplICs9IDQgLSAoc2l6ZSAmIDB4MDMpOyBicmVhaztcblxuXHRcdGNhc2UgJ2NzdHInOiBzaXplID0gMDsgbyA9IFwiXCI7XG5cdFx0XHR3aGlsZSgodz1fX3JlYWRVSW50OCh0aGlzLCB0aGlzLmwgKyBzaXplKyspKSE9PTApIG9vLnB1c2goX2dldGNoYXIodykpO1xuXHRcdFx0byA9IG9vLmpvaW4oXCJcIik7IGJyZWFrO1xuXHRcdGNhc2UgJ193c3RyJzogc2l6ZSA9IDA7IG8gPSBcIlwiO1xuXHRcdFx0d2hpbGUoKHc9X19yZWFkVUludDE2TEUodGhpcyx0aGlzLmwgK3NpemUpKSE9PTApe29vLnB1c2goX2dldGNoYXIodykpO3NpemUrPTI7fVxuXHRcdFx0c2l6ZSs9MjsgbyA9IG9vLmpvaW4oXCJcIik7IGJyZWFrO1xuXG5cdFx0Lyogc2JjcyBhbmQgZGJjcyBzdXBwb3J0IGNvbnRpbnVlIHJlY29yZHMgaW4gdGhlIFNTVCB3YXkgVE9ETyBjb2RlcGFnZXMgKi9cblx0XHRjYXNlICdkYmNzLWNvbnQnOiBvID0gXCJcIjsgbG9jID0gdGhpcy5sO1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG5cdFx0XHRcdGlmKHRoaXMubGVucyAmJiB0aGlzLmxlbnMuaW5kZXhPZihsb2MpICE9PSAtMSkge1xuXHRcdFx0XHRcdHcgPSBfX3JlYWRVSW50OCh0aGlzLCBsb2MpO1xuXHRcdFx0XHRcdHRoaXMubCA9IGxvYyArIDE7XG5cdFx0XHRcdFx0dnYgPSBSZWFkU2hpZnQuY2FsbCh0aGlzLCBzaXplLWksIHcgPyAnZGJjcy1jb250JyA6ICdzYmNzLWNvbnQnKTtcblx0XHRcdFx0XHRyZXR1cm4gb28uam9pbihcIlwiKSArIHZ2O1xuXHRcdFx0XHR9XG5cdFx0XHRcdG9vLnB1c2goX2dldGNoYXIoX19yZWFkVUludDE2TEUodGhpcywgbG9jKSkpO1xuXHRcdFx0XHRsb2MrPTI7XG5cdFx0XHR9IG8gPSBvby5qb2luKFwiXCIpOyBzaXplICo9IDI7IGJyZWFrO1xuXG5cdFx0Y2FzZSAnY3BzdHInOlxuXHRcdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykge1xuXHRcdFx0XHRvID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY29kZXBhZ2UsIHRoaXMuc2xpY2UodGhpcy5sLCB0aGlzLmwgKyBzaXplKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdzYmNzLWNvbnQnOiBvID0gXCJcIjsgbG9jID0gdGhpcy5sO1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHNpemU7ICsraSkge1xuXHRcdFx0XHRpZih0aGlzLmxlbnMgJiYgdGhpcy5sZW5zLmluZGV4T2YobG9jKSAhPT0gLTEpIHtcblx0XHRcdFx0XHR3ID0gX19yZWFkVUludDgodGhpcywgbG9jKTtcblx0XHRcdFx0XHR0aGlzLmwgPSBsb2MgKyAxO1xuXHRcdFx0XHRcdHZ2ID0gUmVhZFNoaWZ0LmNhbGwodGhpcywgc2l6ZS1pLCB3ID8gJ2RiY3MtY29udCcgOiAnc2Jjcy1jb250Jyk7XG5cdFx0XHRcdFx0cmV0dXJuIG9vLmpvaW4oXCJcIikgKyB2djtcblx0XHRcdFx0fVxuXHRcdFx0XHRvby5wdXNoKF9nZXRjaGFyKF9fcmVhZFVJbnQ4KHRoaXMsIGxvYykpKTtcblx0XHRcdFx0bG9jKz0xO1xuXHRcdFx0fSBvID0gb28uam9pbihcIlwiKTsgYnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRzd2l0Y2goc2l6ZSkge1xuXHRcdGNhc2UgMTogb0kgPSBfX3JlYWRVSW50OCh0aGlzLCB0aGlzLmwpOyB0aGlzLmwrKzsgcmV0dXJuIG9JO1xuXHRcdGNhc2UgMjogb0kgPSAodCA9PT0gJ2knID8gX19yZWFkSW50MTZMRSA6IF9fcmVhZFVJbnQxNkxFKSh0aGlzLCB0aGlzLmwpOyB0aGlzLmwgKz0gMjsgcmV0dXJuIG9JO1xuXHRcdGNhc2UgNDogY2FzZSAtNDpcblx0XHRcdGlmKHQgPT09ICdpJyB8fCAoKHRoaXNbdGhpcy5sKzNdICYgMHg4MCk9PT0wKSkgeyBvSSA9ICgoc2l6ZSA+IDApID8gX19yZWFkSW50MzJMRSA6IF9fcmVhZEludDMyQkUpKHRoaXMsIHRoaXMubCk7IHRoaXMubCArPSA0OyByZXR1cm4gb0k7IH1cblx0XHRcdGVsc2UgeyBvUiA9IF9fcmVhZFVJbnQzMkxFKHRoaXMsIHRoaXMubCk7IHRoaXMubCArPSA0OyB9IHJldHVybiBvUjtcblx0XHRjYXNlIDg6IGNhc2UgLTg6XG5cdFx0XHRpZih0ID09PSAnZicpIHtcblx0XHRcdFx0aWYoc2l6ZSA9PSA4KSBvUiA9IF9fZG91YmxlKHRoaXMsIHRoaXMubCk7XG5cdFx0XHRcdGVsc2Ugb1IgPSBfX2RvdWJsZShbdGhpc1t0aGlzLmwrN10sdGhpc1t0aGlzLmwrNl0sdGhpc1t0aGlzLmwrNV0sdGhpc1t0aGlzLmwrNF0sdGhpc1t0aGlzLmwrM10sdGhpc1t0aGlzLmwrMl0sdGhpc1t0aGlzLmwrMV0sdGhpc1t0aGlzLmwrMF1dLCAwKTtcblx0XHRcdFx0dGhpcy5sICs9IDg7IHJldHVybiBvUjtcblx0XHRcdH0gZWxzZSBzaXplID0gODtcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAxNjogbyA9IF9faGV4bGlmeSh0aGlzLCB0aGlzLmwsIHNpemUpOyBicmVhaztcblx0fX1cblx0dGhpcy5sKz1zaXplOyByZXR1cm4gbztcbn1cblxudmFyIF9fd3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+Pj4gOCkgJiAweEZGKTsgYltpZHgrMl0gPSAoKHZhbCA+Pj4gMTYpICYgMHhGRik7IGJbaWR4KzNdID0gKCh2YWwgPj4+IDI0KSAmIDB4RkYpOyB9O1xudmFyIF9fd3JpdGVJbnQzMkxFICA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+PiA4KSAmIDB4RkYpOyBiW2lkeCsyXSA9ICgodmFsID4+IDE2KSAmIDB4RkYpOyBiW2lkeCszXSA9ICgodmFsID4+IDI0KSAmIDB4RkYpOyB9O1xudmFyIF9fd3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uKGIvKjpSYXdCeXRlc3xDRkJsb2IqLywgdmFsLyo6bnVtYmVyKi8sIGlkeC8qOm51bWJlciovKS8qOnZvaWQqLyB7IGJbaWR4XSA9ICh2YWwgJiAweEZGKTsgYltpZHgrMV0gPSAoKHZhbCA+Pj4gOCkgJiAweEZGKTsgfTtcblxuZnVuY3Rpb24gV3JpdGVTaGlmdCh0Lyo6bnVtYmVyKi8sIHZhbC8qOnN0cmluZ3xudW1iZXIqLywgZi8qOj9zdHJpbmcqLykvKjphbnkqLyB7XG5cdHZhciBzaXplID0gMCwgaSA9IDA7XG5cdGlmKGYgPT09ICdkYmNzJykge1xuXHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdGZvcihpID0gMDsgaSAhPSB2YWwubGVuZ3RoOyArK2kpIF9fd3JpdGVVSW50MTZMRSh0aGlzLCB2YWwuY2hhckNvZGVBdChpKSwgdGhpcy5sICsgMiAqIGkpO1xuXHRcdHNpemUgPSAyICogdmFsLmxlbmd0aDtcblx0fSBlbHNlIGlmKGYgPT09ICdzYmNzJykge1xuXHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgY3VycmVudF9hbnNpID09IDg3NCkge1xuXHRcdFx0LyogVE9ETzogdXNlIHRhYmxlcyBkaXJlY3RseSwgZG9uJ3QgZW5jb2RlICovXG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHZhbC5sZW5ndGg7ICsraSkge1xuXHRcdFx0XHR2YXIgY3BwYXlsb2FkID0gJGNwdGFibGUudXRpbHMuZW5jb2RlKGN1cnJlbnRfYW5zaSwgdmFsLmNoYXJBdChpKSk7XG5cdFx0XHRcdHRoaXNbdGhpcy5sICsgaV0gPSBjcHBheWxvYWRbMF07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dmFsID0gdmFsLnJlcGxhY2UoL1teXFx4MDAtXFx4N0ZdL2csIFwiX1wiKTtcblx0XHRcdC8qOjogaWYodHlwZW9mIHZhbCAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHZhbC5sZW5ndGg7ICsraSkgdGhpc1t0aGlzLmwgKyBpXSA9ICh2YWwuY2hhckNvZGVBdChpKSAmIDB4RkYpO1xuXHRcdH1cblx0XHRzaXplID0gdmFsLmxlbmd0aDtcblx0fSBlbHNlIGlmKGYgPT09ICdoZXgnKSB7XG5cdFx0Zm9yKDsgaSA8IHQ7ICsraSkge1xuXHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0XHRcdHRoaXNbdGhpcy5sKytdID0gKHBhcnNlSW50KHZhbC5zbGljZSgyKmksIDIqaSsyKSwgMTYpfHwwKTtcblx0XHR9IHJldHVybiB0aGlzO1xuXHR9IGVsc2UgaWYoZiA9PT0gJ3V0ZjE2bGUnKSB7XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWwgIT09IFwic3RyaW5nXCIpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHRcdFx0dmFyIGVuZC8qOm51bWJlciovID0gTWF0aC5taW4odGhpcy5sICsgdCwgdGhpcy5sZW5ndGgpO1xuXHRcdFx0Zm9yKGkgPSAwOyBpIDwgTWF0aC5taW4odmFsLmxlbmd0aCwgdCk7ICsraSkge1xuXHRcdFx0XHR2YXIgY2MgPSB2YWwuY2hhckNvZGVBdChpKTtcblx0XHRcdFx0dGhpc1t0aGlzLmwrK10gPSAoY2MgJiAweGZmKTtcblx0XHRcdFx0dGhpc1t0aGlzLmwrK10gPSAoY2MgPj4gOCk7XG5cdFx0XHR9XG5cdFx0XHR3aGlsZSh0aGlzLmwgPCBlbmQpIHRoaXNbdGhpcy5sKytdID0gMDtcblx0XHRcdHJldHVybiB0aGlzO1xuXHR9IGVsc2UgLyo6OiBpZih0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgKi8gc3dpdGNoKHQpIHtcblx0XHRjYXNlICAxOiBzaXplID0gMTsgdGhpc1t0aGlzLmxdID0gdmFsJjB4RkY7IGJyZWFrO1xuXHRcdGNhc2UgIDI6IHNpemUgPSAyOyB0aGlzW3RoaXMubF0gPSB2YWwmMHhGRjsgdmFsID4+Pj0gODsgdGhpc1t0aGlzLmwrMV0gPSB2YWwmMHhGRjsgYnJlYWs7XG5cdFx0Y2FzZSAgMzogc2l6ZSA9IDM7IHRoaXNbdGhpcy5sXSA9IHZhbCYweEZGOyB2YWwgPj4+PSA4OyB0aGlzW3RoaXMubCsxXSA9IHZhbCYweEZGOyB2YWwgPj4+PSA4OyB0aGlzW3RoaXMubCsyXSA9IHZhbCYweEZGOyBicmVhaztcblx0XHRjYXNlICA0OiBzaXplID0gNDsgX193cml0ZVVJbnQzMkxFKHRoaXMsIHZhbCwgdGhpcy5sKTsgYnJlYWs7XG5cdFx0Y2FzZSAgODogc2l6ZSA9IDg7IGlmKGYgPT09ICdmJykgeyB3cml0ZV9kb3VibGVfbGUodGhpcywgdmFsLCB0aGlzLmwpOyBicmVhazsgfVxuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIDE2OiBicmVhaztcblx0XHRjYXNlIC00OiBzaXplID0gNDsgX193cml0ZUludDMyTEUodGhpcywgdmFsLCB0aGlzLmwpOyBicmVhaztcblx0fVxuXHR0aGlzLmwgKz0gc2l6ZTsgcmV0dXJuIHRoaXM7XG59XG5cbmZ1bmN0aW9uIENoZWNrRmllbGQoaGV4c3RyLyo6c3RyaW5nKi8sIGZsZC8qOnN0cmluZyovKS8qOnZvaWQqLyB7XG5cdHZhciBtID0gX19oZXhsaWZ5KHRoaXMsdGhpcy5sLGhleHN0ci5sZW5ndGg+PjEpO1xuXHRpZihtICE9PSBoZXhzdHIpIHRocm93IG5ldyBFcnJvcihmbGQgKyAnRXhwZWN0ZWQgJyArIGhleHN0ciArICcgc2F3ICcgKyBtKTtcblx0dGhpcy5sICs9IGhleHN0ci5sZW5ndGg+PjE7XG59XG5cbmZ1bmN0aW9uIHByZXBfYmxvYihibG9iLCBwb3MvKjpudW1iZXIqLykvKjp2b2lkKi8ge1xuXHRibG9iLmwgPSBwb3M7XG5cdGJsb2IucmVhZF9zaGlmdCA9IC8qOjooKi9SZWFkU2hpZnQvKjo6IDphbnkpKi87XG5cdGJsb2IuY2hrID0gQ2hlY2tGaWVsZDtcblx0YmxvYi53cml0ZV9zaGlmdCA9IFdyaXRlU2hpZnQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlbm9vcChibG9iLCBsZW5ndGgvKjo6IDpudW1iZXIsIG9wdHM/OmFueSAqLykgeyBibG9iLmwgKz0gbGVuZ3RoOyB9XG5cbmZ1bmN0aW9uIG5ld19idWYoc3ovKjpudW1iZXIqLykvKjpCbG9jayovIHtcblx0dmFyIG8gPSBuZXdfcmF3X2J1Zihzeik7XG5cdHByZXBfYmxvYihvLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNCBSZWNvcmQgKi9cbmZ1bmN0aW9uIHJlY29yZGhvcHBlcihkYXRhLCBjYi8qOlJlY29yZEhvcHBlckNCKi8sIG9wdHMvKjo/YW55Ki8pIHtcblx0aWYoIWRhdGEpIHJldHVybjtcblx0dmFyIHRtcGJ5dGUsIGNudGJ5dGUsIGxlbmd0aDtcblx0cHJlcF9ibG9iKGRhdGEsIGRhdGEubCB8fCAwKTtcblx0dmFyIEwgPSBkYXRhLmxlbmd0aCwgUlQgPSAwLCB0Z3QgPSAwO1xuXHR3aGlsZShkYXRhLmwgPCBMKSB7XG5cdFx0UlQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdFx0aWYoUlQgJiAweDgwKSBSVCA9IChSVCAmIDB4N0YpICsgKChkYXRhLnJlYWRfc2hpZnQoMSkgJiAweDdGKTw8Nyk7XG5cdFx0dmFyIFIgPSBYTFNCUmVjb3JkRW51bVtSVF0gfHwgWExTQlJlY29yZEVudW1bMHhGRkZGXTtcblx0XHR0bXBieXRlID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRcdGxlbmd0aCA9IHRtcGJ5dGUgJiAweDdGO1xuXHRcdGZvcihjbnRieXRlID0gMTsgY250Ynl0ZSA8NCAmJiAodG1wYnl0ZSAmIDB4ODApOyArK2NudGJ5dGUpIGxlbmd0aCArPSAoKHRtcGJ5dGUgPSBkYXRhLnJlYWRfc2hpZnQoMSkpICYgMHg3Rik8PCg3KmNudGJ5dGUpO1xuXHRcdHRndCA9IGRhdGEubCArIGxlbmd0aDtcblx0XHR2YXIgZCA9IFIuZiAmJiBSLmYoZGF0YSwgbGVuZ3RoLCBvcHRzKTtcblx0XHRkYXRhLmwgPSB0Z3Q7XG5cdFx0aWYoY2IoZCwgUiwgUlQpKSByZXR1cm47XG5cdH1cbn1cblxuLyogY29udHJvbCBidWZmZXIgdXNhZ2UgZm9yIGZpeGVkLWxlbmd0aCBidWZmZXJzICovXG5mdW5jdGlvbiBidWZfYXJyYXkoKS8qOkJ1ZkFycmF5Ki8ge1xuXHR2YXIgYnVmcy8qOkFycmF5PEJsb2NrPiovID0gW10sIGJsa3N6ID0gaGFzX2J1ZiA/IDI1NiA6IDIwNDg7XG5cdHZhciBuZXdibGsgPSBmdW5jdGlvbiBiYV9uZXdibGsoc3ovKjpudW1iZXIqLykvKjpCbG9jayovIHtcblx0XHR2YXIgby8qOkJsb2NrKi8gPSAobmV3X2J1ZihzeikvKjphbnkqLyk7XG5cdFx0cHJlcF9ibG9iKG8sIDApO1xuXHRcdHJldHVybiBvO1xuXHR9O1xuXG5cdHZhciBjdXJidWYvKjpCbG9jayovID0gbmV3YmxrKGJsa3N6KTtcblxuXHR2YXIgZW5kYnVmID0gZnVuY3Rpb24gYmFfZW5kYnVmKCkge1xuXHRcdGlmKCFjdXJidWYpIHJldHVybjtcblx0XHRpZihjdXJidWYubGVuZ3RoID4gY3VyYnVmLmwpIHsgY3VyYnVmID0gY3VyYnVmLnNsaWNlKDAsIGN1cmJ1Zi5sKTsgY3VyYnVmLmwgPSBjdXJidWYubGVuZ3RoOyB9XG5cdFx0aWYoY3VyYnVmLmxlbmd0aCA+IDApIGJ1ZnMucHVzaChjdXJidWYpO1xuXHRcdGN1cmJ1ZiA9IG51bGw7XG5cdH07XG5cblx0dmFyIG5leHQgPSBmdW5jdGlvbiBiYV9uZXh0KHN6Lyo6bnVtYmVyKi8pLyo6QmxvY2sqLyB7XG5cdFx0aWYoY3VyYnVmICYmIChzeiA8IChjdXJidWYubGVuZ3RoIC0gY3VyYnVmLmwpKSkgcmV0dXJuIGN1cmJ1Zjtcblx0XHRlbmRidWYoKTtcblx0XHRyZXR1cm4gKGN1cmJ1ZiA9IG5ld2JsayhNYXRoLm1heChzeisxLCBibGtzeikpKTtcblx0fTtcblxuXHR2YXIgZW5kID0gZnVuY3Rpb24gYmFfZW5kKCkge1xuXHRcdGVuZGJ1ZigpO1xuXHRcdHJldHVybiBiY29uY2F0KGJ1ZnMpO1xuXHR9O1xuXG5cdHZhciBwdXNoID0gZnVuY3Rpb24gYmFfcHVzaChidWYpIHsgZW5kYnVmKCk7IGN1cmJ1ZiA9IGJ1ZjsgaWYoY3VyYnVmLmwgPT0gbnVsbCkgY3VyYnVmLmwgPSBjdXJidWYubGVuZ3RoOyBuZXh0KGJsa3N6KTsgfTtcblxuXHRyZXR1cm4gKHsgbmV4dDpuZXh0LCBwdXNoOnB1c2gsIGVuZDplbmQsIF9idWZzOmJ1ZnMgfS8qOmFueSovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfcmVjb3JkKGJhLyo6QnVmQXJyYXkqLywgdHlwZS8qOm51bWJlciovLCBwYXlsb2FkLCBsZW5ndGgvKjo/bnVtYmVyKi8pIHtcblx0dmFyIHQvKjpudW1iZXIqLyA9ICt0eXBlLCBsO1xuXHRpZihpc05hTih0KSkgcmV0dXJuOyAvLyBUT0RPOiB0aHJvdyBzb21ldGhpbmcgaGVyZT9cblx0aWYoIWxlbmd0aCkgbGVuZ3RoID0gWExTQlJlY29yZEVudW1bdF0ucCB8fCAocGF5bG9hZHx8W10pLmxlbmd0aCB8fCAwO1xuXHRsID0gMSArICh0ID49IDB4ODAgPyAxIDogMCkgKyAxLyogKyBsZW5ndGgqLztcblx0aWYobGVuZ3RoID49IDB4ODApICsrbDsgaWYobGVuZ3RoID49IDB4NDAwMCkgKytsOyBpZihsZW5ndGggPj0gMHgyMDAwMDApICsrbDtcblx0dmFyIG8gPSBiYS5uZXh0KGwpO1xuXHRpZih0IDw9IDB4N0YpIG8ud3JpdGVfc2hpZnQoMSwgdCk7XG5cdGVsc2Uge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgKHQgJiAweDdGKSArIDB4ODApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgKHQgPj4gNykpO1xuXHR9XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gNDsgKytpKSB7XG5cdFx0aWYobGVuZ3RoID49IDB4ODApIHsgby53cml0ZV9zaGlmdCgxLCAobGVuZ3RoICYgMHg3RikrMHg4MCk7IGxlbmd0aCA+Pj0gNzsgfVxuXHRcdGVsc2UgeyBvLndyaXRlX3NoaWZ0KDEsIGxlbmd0aCk7IGJyZWFrOyB9XG5cdH1cblx0aWYoLyo6OiBsZW5ndGggIT0gbnVsbCAmJiovbGVuZ3RoID4gMCAmJiBpc19idWYocGF5bG9hZCkpIGJhLnB1c2gocGF5bG9hZCk7XG59XG4vKiBYTFMgcmFuZ2VzIGVuZm9yY2VkICovXG5mdW5jdGlvbiBzaGlmdF9jZWxsX3hscyhjZWxsLyo6Q2VsbEFkZHJlc3MqLywgdGd0Lyo6YW55Ki8sIG9wdHMvKjo/YW55Ki8pLyo6Q2VsbEFkZHJlc3MqLyB7XG5cdHZhciBvdXQgPSBkdXAoY2VsbCk7XG5cdGlmKHRndC5zKSB7XG5cdFx0aWYob3V0LmNSZWwpIG91dC5jICs9IHRndC5zLmM7XG5cdFx0aWYob3V0LnJSZWwpIG91dC5yICs9IHRndC5zLnI7XG5cdH0gZWxzZSB7XG5cdFx0aWYob3V0LmNSZWwpIG91dC5jICs9IHRndC5jO1xuXHRcdGlmKG91dC5yUmVsKSBvdXQuciArPSB0Z3Qucjtcblx0fVxuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPCAxMikge1xuXHRcdHdoaWxlKG91dC5jID49IDB4MTAwKSBvdXQuYyAtPSAweDEwMDtcblx0XHR3aGlsZShvdXQuciA+PSAweDEwMDAwKSBvdXQuciAtPSAweDEwMDAwO1xuXHR9XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0X3JhbmdlX3hscyhjZWxsLCByYW5nZSwgb3B0cykge1xuXHR2YXIgb3V0ID0gZHVwKGNlbGwpO1xuXHRvdXQucyA9IHNoaWZ0X2NlbGxfeGxzKG91dC5zLCByYW5nZS5zLCBvcHRzKTtcblx0b3V0LmUgPSBzaGlmdF9jZWxsX3hscyhvdXQuZSwgcmFuZ2Uucywgb3B0cyk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGVuY29kZV9jZWxsX3hscyhjLyo6Q2VsbEFkZHJlc3MqLywgYmlmZi8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0aWYoYy5jUmVsICYmIGMuYyA8IDApIHsgYyA9IGR1cChjKTsgd2hpbGUoYy5jIDwgMCkgYy5jICs9IChiaWZmID4gOCkgPyAweDQwMDAgOiAweDEwMDsgfVxuXHRpZihjLnJSZWwgJiYgYy5yIDwgMCkgeyBjID0gZHVwKGMpOyB3aGlsZShjLnIgPCAwKSBjLnIgKz0gKGJpZmYgPiA4KSA/IDB4MTAwMDAwIDogKChiaWZmID4gNSkgPyAweDEwMDAwIDogMHg0MDAwKTsgfVxuXHR2YXIgcyA9IGVuY29kZV9jZWxsKGMpO1xuXHRpZighYy5jUmVsICYmIGMuY1JlbCAhPSBudWxsKSBzID0gZml4X2NvbChzKTtcblx0aWYoIWMuclJlbCAmJiBjLnJSZWwgIT0gbnVsbCkgcyA9IGZpeF9yb3cocyk7XG5cdHJldHVybiBzO1xufVxuXG5mdW5jdGlvbiBlbmNvZGVfcmFuZ2VfeGxzKHIsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZihyLnMuciA9PSAwICYmICFyLnMuclJlbCkge1xuXHRcdGlmKHIuZS5yID09IChvcHRzLmJpZmYgPj0gMTIgPyAweEZGRkZGIDogKG9wdHMuYmlmZiA+PSA4ID8gMHgxMDAwMCA6IDB4NDAwMCkpICYmICFyLmUuclJlbCkge1xuXHRcdFx0cmV0dXJuIChyLnMuY1JlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfY29sKHIucy5jKSArIFwiOlwiICsgKHIuZS5jUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9jb2woci5lLmMpO1xuXHRcdH1cblx0fVxuXHRpZihyLnMuYyA9PSAwICYmICFyLnMuY1JlbCkge1xuXHRcdGlmKHIuZS5jID09IChvcHRzLmJpZmYgPj0gMTIgPyAweDNGRkYgOiAweEZGKSAmJiAhci5lLmNSZWwpIHtcblx0XHRcdHJldHVybiAoci5zLnJSZWwgPyBcIlwiIDogXCIkXCIpICsgZW5jb2RlX3JvdyhyLnMucikgKyBcIjpcIiArIChyLmUuclJlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfcm93KHIuZS5yKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGVuY29kZV9jZWxsX3hscyhyLnMsIG9wdHMuYmlmZikgKyBcIjpcIiArIGVuY29kZV9jZWxsX3hscyhyLmUsIG9wdHMuYmlmZik7XG59XG5mdW5jdGlvbiBkZWNvZGVfcm93KHJvd3N0ci8qOnN0cmluZyovKS8qOm51bWJlciovIHsgcmV0dXJuIHBhcnNlSW50KHVuZml4X3Jvdyhyb3dzdHIpLDEwKSAtIDE7IH1cbmZ1bmN0aW9uIGVuY29kZV9yb3cocm93Lyo6bnVtYmVyKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gXCJcIiArIChyb3cgKyAxKTsgfVxuZnVuY3Rpb24gZml4X3Jvdyhjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC8oW0EtWl18XikoXFxkKykkLyxcIiQxJCQkMlwiKTsgfVxuZnVuY3Rpb24gdW5maXhfcm93KGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoL1xcJChcXGQrKSQvLFwiJDFcIik7IH1cblxuZnVuY3Rpb24gZGVjb2RlX2NvbChjb2xzdHIvKjpzdHJpbmcqLykvKjpudW1iZXIqLyB7IHZhciBjID0gdW5maXhfY29sKGNvbHN0ciksIGQgPSAwLCBpID0gMDsgZm9yKDsgaSAhPT0gYy5sZW5ndGg7ICsraSkgZCA9IDI2KmQgKyBjLmNoYXJDb2RlQXQoaSkgLSA2NDsgcmV0dXJuIGQgLSAxOyB9XG5mdW5jdGlvbiBlbmNvZGVfY29sKGNvbC8qOm51bWJlciovKS8qOnN0cmluZyovIHsgaWYoY29sIDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCBjb2x1bW4gXCIgKyBjb2wpOyB2YXIgcz1cIlwiOyBmb3IoKytjb2w7IGNvbDsgY29sPU1hdGguZmxvb3IoKGNvbC0xKS8yNikpIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY29sLTEpJTI2KSArIDY1KSArIHM7IHJldHVybiBzOyB9XG5mdW5jdGlvbiBmaXhfY29sKGNzdHIvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiBjc3RyLnJlcGxhY2UoL14oW0EtWl0pLyxcIiQkJDFcIik7IH1cbmZ1bmN0aW9uIHVuZml4X2NvbChjc3RyLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC9eXFwkKFtBLVpdKS8sXCIkMVwiKTsgfVxuXG5mdW5jdGlvbiBzcGxpdF9jZWxsKGNzdHIvKjpzdHJpbmcqLykvKjpBcnJheTxzdHJpbmc+Ki8geyByZXR1cm4gY3N0ci5yZXBsYWNlKC8oXFwkP1tBLVpdKikoXFwkP1xcZCopLyxcIiQxLCQyXCIpLnNwbGl0KFwiLFwiKTsgfVxuLy9mdW5jdGlvbiBkZWNvZGVfY2VsbChjc3RyLyo6c3RyaW5nKi8pLyo6Q2VsbEFkZHJlc3MqLyB7IHZhciBzcGx0ID0gc3BsaXRfY2VsbChjc3RyKTsgcmV0dXJuIHsgYzpkZWNvZGVfY29sKHNwbHRbMF0pLCByOmRlY29kZV9yb3coc3BsdFsxXSkgfTsgfVxuZnVuY3Rpb24gZGVjb2RlX2NlbGwoY3N0ci8qOnN0cmluZyovKS8qOkNlbGxBZGRyZXNzKi8ge1xuXHR2YXIgUiA9IDAsIEMgPSAwO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgY3N0ci5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBjYyA9IGNzdHIuY2hhckNvZGVBdChpKTtcblx0XHRpZihjYyA+PSA0OCAmJiBjYyA8PSA1NykgUiA9IDEwICogUiArIChjYyAtIDQ4KTtcblx0XHRlbHNlIGlmKGNjID49IDY1ICYmIGNjIDw9IDkwKSBDID0gMjYgKiBDICsgKGNjIC0gNjQpO1xuXHR9XG5cdHJldHVybiB7IGM6IEMgLSAxLCByOlIgLSAxIH07XG59XG4vL2Z1bmN0aW9uIGVuY29kZV9jZWxsKGNlbGwvKjpDZWxsQWRkcmVzcyovKS8qOnN0cmluZyovIHsgcmV0dXJuIGVuY29kZV9jb2woY2VsbC5jKSArIGVuY29kZV9yb3coY2VsbC5yKTsgfVxuZnVuY3Rpb24gZW5jb2RlX2NlbGwoY2VsbC8qOkNlbGxBZGRyZXNzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgY29sID0gY2VsbC5jICsgMTtcblx0dmFyIHM9XCJcIjtcblx0Zm9yKDsgY29sOyBjb2w9KChjb2wtMSkvMjYpfDApIHMgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoY29sLTEpJTI2KSArIDY1KSArIHM7XG5cdHJldHVybiBzICsgKGNlbGwuciArIDEpO1xufVxuZnVuY3Rpb24gZGVjb2RlX3JhbmdlKHJhbmdlLyo6c3RyaW5nKi8pLyo6UmFuZ2UqLyB7XG5cdHZhciBpZHggPSByYW5nZS5pbmRleE9mKFwiOlwiKTtcblx0aWYoaWR4ID09IC0xKSByZXR1cm4geyBzOiBkZWNvZGVfY2VsbChyYW5nZSksIGU6IGRlY29kZV9jZWxsKHJhbmdlKSB9O1xuXHRyZXR1cm4geyBzOiBkZWNvZGVfY2VsbChyYW5nZS5zbGljZSgwLCBpZHgpKSwgZTogZGVjb2RlX2NlbGwocmFuZ2Uuc2xpY2UoaWR4ICsgMSkpIH07XG59XG4vKiMgaWYgb25seSBvbmUgYXJnLCBpdCBpcyBhc3N1bWVkIHRvIGJlIGEgUmFuZ2UuICBJZiAyIGFyZ3MsIGJvdGggYXJlIGNlbGwgYWRkcmVzc2VzICovXG5mdW5jdGlvbiBlbmNvZGVfcmFuZ2UoY3MvKjpDZWxsQWRkclNwZWN8UmFuZ2UqLyxjZS8qOj9DZWxsQWRkclNwZWMqLykvKjpzdHJpbmcqLyB7XG5cdGlmKHR5cGVvZiBjZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIGNlID09PSAnbnVtYmVyJykge1xuLyo6OiBpZighKGNzIGluc3RhbmNlb2YgUmFuZ2UpKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0cmV0dXJuIGVuY29kZV9yYW5nZShjcy5zLCBjcy5lKTtcblx0fVxuLyo6OiBpZigoY3MgaW5zdGFuY2VvZiBSYW5nZSkpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0aWYodHlwZW9mIGNzICE9PSAnc3RyaW5nJykgY3MgPSBlbmNvZGVfY2VsbCgoY3MvKjphbnkqLykpO1xuXHRpZih0eXBlb2YgY2UgIT09ICdzdHJpbmcnKSBjZSA9IGVuY29kZV9jZWxsKChjZS8qOmFueSovKSk7XG4vKjo6IGlmKHR5cGVvZiBjcyAhPT0gJ3N0cmluZycpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cbi8qOjogaWYodHlwZW9mIGNlICE9PSAnc3RyaW5nJykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRyZXR1cm4gY3MgPT0gY2UgPyBjcyA6IGNzICsgXCI6XCIgKyBjZTtcbn1cblxuZnVuY3Rpb24gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UvKjpzdHJpbmcqLykvKjpSYW5nZSovIHtcblx0dmFyIG8gPSB7czp7YzowLHI6MH0sZTp7YzowLHI6MH19O1xuXHR2YXIgaWR4ID0gMCwgaSA9IDAsIGNjID0gMDtcblx0dmFyIGxlbiA9IHJhbmdlLmxlbmd0aDtcblx0Zm9yKGlkeCA9IDA7IGkgPCBsZW47ICsraSkge1xuXHRcdGlmKChjYz1yYW5nZS5jaGFyQ29kZUF0KGkpLTY0KSA8IDEgfHwgY2MgPiAyNikgYnJlYWs7XG5cdFx0aWR4ID0gMjYqaWR4ICsgY2M7XG5cdH1cblx0by5zLmMgPSAtLWlkeDtcblxuXHRmb3IoaWR4ID0gMDsgaSA8IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNDgpIDwgMCB8fCBjYyA+IDkpIGJyZWFrO1xuXHRcdGlkeCA9IDEwKmlkeCArIGNjO1xuXHR9XG5cdG8ucy5yID0gLS1pZHg7XG5cblx0aWYoaSA9PT0gbGVuIHx8IGNjICE9IDEwKSB7IG8uZS5jPW8ucy5jOyBvLmUucj1vLnMucjsgcmV0dXJuIG87IH1cblx0KytpO1xuXG5cdGZvcihpZHggPSAwOyBpICE9IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNjQpIDwgMSB8fCBjYyA+IDI2KSBicmVhaztcblx0XHRpZHggPSAyNippZHggKyBjYztcblx0fVxuXHRvLmUuYyA9IC0taWR4O1xuXG5cdGZvcihpZHggPSAwOyBpICE9IGxlbjsgKytpKSB7XG5cdFx0aWYoKGNjPXJhbmdlLmNoYXJDb2RlQXQoaSktNDgpIDwgMCB8fCBjYyA+IDkpIGJyZWFrO1xuXHRcdGlkeCA9IDEwKmlkeCArIGNjO1xuXHR9XG5cdG8uZS5yID0gLS1pZHg7XG5cdHJldHVybiBvO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdF9jZWxsKGNlbGwvKjpDZWxsKi8sIHYvKjphbnkqLykge1xuXHR2YXIgcSA9IChjZWxsLnQgPT0gJ2QnICYmIHYgaW5zdGFuY2VvZiBEYXRlKTtcblx0aWYoY2VsbC56ICE9IG51bGwpIHRyeSB7IHJldHVybiAoY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIHEgPyBkYXRlbnVtKHYpIDogdikpOyB9IGNhdGNoKGUpIHsgfVxuXHR0cnkgeyByZXR1cm4gKGNlbGwudyA9IFNTRl9mb3JtYXQoKGNlbGwuWEZ8fHt9KS5udW1GbXRJZHx8KHEgPyAxNCA6IDApLCAgcSA/IGRhdGVudW0odikgOiB2KSk7IH0gY2F0Y2goZSkgeyByZXR1cm4gJycrdjsgfVxufVxuXG5mdW5jdGlvbiBmb3JtYXRfY2VsbChjZWxsLyo6Q2VsbCovLCB2Lyo6YW55Ki8sIG8vKjphbnkqLykge1xuXHRpZihjZWxsID09IG51bGwgfHwgY2VsbC50ID09IG51bGwgfHwgY2VsbC50ID09ICd6JykgcmV0dXJuIFwiXCI7XG5cdGlmKGNlbGwudyAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2VsbC53O1xuXHRpZihjZWxsLnQgPT0gJ2QnICYmICFjZWxsLnogJiYgbyAmJiBvLmRhdGVORikgY2VsbC56ID0gby5kYXRlTkY7XG5cdGlmKGNlbGwudCA9PSBcImVcIikgcmV0dXJuIEJFcnJbY2VsbC52XSB8fCBjZWxsLnY7XG5cdGlmKHYgPT0gdW5kZWZpbmVkKSByZXR1cm4gc2FmZV9mb3JtYXRfY2VsbChjZWxsLCBjZWxsLnYpO1xuXHRyZXR1cm4gc2FmZV9mb3JtYXRfY2VsbChjZWxsLCB2KTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fd29ya2Jvb2soc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cykvKjpXb3JrYm9vayovIHtcblx0dmFyIG4gPSBvcHRzICYmIG9wdHMuc2hlZXQgPyBvcHRzLnNoZWV0IDogXCJTaGVldDFcIjtcblx0dmFyIHNoZWV0cyA9IHt9OyBzaGVldHNbbl0gPSBzaGVldDtcblx0cmV0dXJuIHsgU2hlZXROYW1lczogW25dLCBTaGVldHM6IHNoZWV0cyB9O1xufVxuXG5mdW5jdGlvbiBzaGVldF9hZGRfYW9hKF93cy8qOj9Xb3Jrc2hlZXQqLywgZGF0YS8qOkFPQSovLCBvcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgZGVuc2UgPSBfd3MgPyBBcnJheS5pc0FycmF5KF93cykgOiBvLmRlbnNlO1xuXHRpZihERU5TRSAhPSBudWxsICYmIGRlbnNlID09IG51bGwpIGRlbnNlID0gREVOU0U7XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gX3dzIHx8IChkZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKSk7XG5cdHZhciBfUiA9IDAsIF9DID0gMDtcblx0aWYod3MgJiYgby5vcmlnaW4gIT0gbnVsbCkge1xuXHRcdGlmKHR5cGVvZiBvLm9yaWdpbiA9PSAnbnVtYmVyJykgX1IgPSBvLm9yaWdpbjtcblx0XHRlbHNlIHtcblx0XHRcdHZhciBfb3JpZ2luLyo6Q2VsbEFkZHJlc3MqLyA9IHR5cGVvZiBvLm9yaWdpbiA9PSBcInN0cmluZ1wiID8gZGVjb2RlX2NlbGwoby5vcmlnaW4pIDogby5vcmlnaW47XG5cdFx0XHRfUiA9IF9vcmlnaW4ucjsgX0MgPSBfb3JpZ2luLmM7XG5cdFx0fVxuXHRcdGlmKCF3c1tcIiFyZWZcIl0pIHdzW1wiIXJlZlwiXSA9IFwiQTE6QTFcIjtcblx0fVxuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0gKHtzOiB7YzoxMDAwMDAwMCwgcjoxMDAwMDAwMH0sIGU6IHtjOjAsIHI6MH19Lyo6YW55Ki8pO1xuXHRpZih3c1snIXJlZiddKSB7XG5cdFx0dmFyIF9yYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHJhbmdlLnMuYyA9IF9yYW5nZS5zLmM7XG5cdFx0cmFuZ2Uucy5yID0gX3JhbmdlLnMucjtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9yYW5nZS5lLmMpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgX3JhbmdlLmUucik7XG5cdFx0aWYoX1IgPT0gLTEpIHJhbmdlLmUuciA9IF9SID0gX3JhbmdlLmUuciArIDE7XG5cdH1cblx0Zm9yKHZhciBSID0gMDsgUiAhPSBkYXRhLmxlbmd0aDsgKytSKSB7XG5cdFx0aWYoIWRhdGFbUl0pIGNvbnRpbnVlO1xuXHRcdGlmKCFBcnJheS5pc0FycmF5KGRhdGFbUl0pKSB0aHJvdyBuZXcgRXJyb3IoXCJhb2FfdG9fc2hlZXQgZXhwZWN0cyBhbiBhcnJheSBvZiBhcnJheXNcIik7XG5cdFx0Zm9yKHZhciBDID0gMDsgQyAhPSBkYXRhW1JdLmxlbmd0aDsgKytDKSB7XG5cdFx0XHRpZih0eXBlb2YgZGF0YVtSXVtDXSA9PT0gJ3VuZGVmaW5lZCcpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIGNlbGwvKjpDZWxsKi8gPSAoe3Y6IGRhdGFbUl1bQ10gfS8qOmFueSovKTtcblx0XHRcdHZhciBfX1IgPSBfUiArIFIsIF9fQyA9IF9DICsgQztcblx0XHRcdGlmKHJhbmdlLnMuciA+IF9fUikgcmFuZ2Uucy5yID0gX19SO1xuXHRcdFx0aWYocmFuZ2Uucy5jID4gX19DKSByYW5nZS5zLmMgPSBfX0M7XG5cdFx0XHRpZihyYW5nZS5lLnIgPCBfX1IpIHJhbmdlLmUuciA9IF9fUjtcblx0XHRcdGlmKHJhbmdlLmUuYyA8IF9fQykgcmFuZ2UuZS5jID0gX19DO1xuXHRcdFx0aWYoZGF0YVtSXVtDXSAmJiB0eXBlb2YgZGF0YVtSXVtDXSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoZGF0YVtSXVtDXSkgJiYgIShkYXRhW1JdW0NdIGluc3RhbmNlb2YgRGF0ZSkpIGNlbGwgPSBkYXRhW1JdW0NdO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGlmKEFycmF5LmlzQXJyYXkoY2VsbC52KSkgeyBjZWxsLmYgPSBkYXRhW1JdW0NdWzFdOyBjZWxsLnYgPSBjZWxsLnZbMF07IH1cblx0XHRcdFx0aWYoY2VsbC52ID09PSBudWxsKSB7XG5cdFx0XHRcdFx0aWYoY2VsbC5mKSBjZWxsLnQgPSAnbic7XG5cdFx0XHRcdFx0ZWxzZSBpZihvLm51bGxFcnJvcikgeyBjZWxsLnQgPSAnZSc7IGNlbGwudiA9IDA7IH1cblx0XHRcdFx0XHRlbHNlIGlmKCFvLnNoZWV0U3R1YnMpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdGVsc2UgY2VsbC50ID0gJ3onO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIGNlbGwudiA9PT0gJ251bWJlcicpIGNlbGwudCA9ICduJztcblx0XHRcdFx0ZWxzZSBpZih0eXBlb2YgY2VsbC52ID09PSAnYm9vbGVhbicpIGNlbGwudCA9ICdiJztcblx0XHRcdFx0ZWxzZSBpZihjZWxsLnYgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0Y2VsbC56ID0gby5kYXRlTkYgfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdFx0XHRpZihvLmNlbGxEYXRlcykgeyBjZWxsLnQgPSAnZCc7IGNlbGwudyA9IFNTRl9mb3JtYXQoY2VsbC56LCBkYXRlbnVtKGNlbGwudikpOyB9XG5cdFx0XHRcdFx0ZWxzZSB7IGNlbGwudCA9ICduJzsgY2VsbC52ID0gZGF0ZW51bShjZWxsLnYpOyBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiwgY2VsbC52KTsgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgY2VsbC50ID0gJ3MnO1xuXHRcdFx0fVxuXHRcdFx0aWYoZGVuc2UpIHtcblx0XHRcdFx0aWYoIXdzW19fUl0pIHdzW19fUl0gPSBbXTtcblx0XHRcdFx0aWYod3NbX19SXVtfX0NdICYmIHdzW19fUl1bX19DXS56KSBjZWxsLnogPSB3c1tfX1JdW19fQ10uejtcblx0XHRcdFx0d3NbX19SXVtfX0NdID0gY2VsbDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhciBjZWxsX3JlZiA9IGVuY29kZV9jZWxsKCh7YzpfX0MscjpfX1J9Lyo6YW55Ki8pKTtcblx0XHRcdFx0aWYod3NbY2VsbF9yZWZdICYmIHdzW2NlbGxfcmVmXS56KSBjZWxsLnogPSB3c1tjZWxsX3JlZl0uejtcblx0XHRcdFx0d3NbY2VsbF9yZWZdID0gY2VsbDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0aWYocmFuZ2Uucy5jIDwgMTAwMDAwMDApIHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRyZXR1cm4gd3M7XG59XG5mdW5jdGlvbiBhb2FfdG9fc2hlZXQoZGF0YS8qOkFPQSovLCBvcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHNoZWV0X2FkZF9hb2EobnVsbCwgZGF0YSwgb3B0cyk7IH1cblxuZnVuY3Rpb24gcGFyc2VfSW50MzJMRShkYXRhKSB7XG5cdHJldHVybiBkYXRhLnJlYWRfc2hpZnQoNCwgJ2knKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1VJbnQzMkxFKHgvKjpudW1iZXIqLywgbykge1xuXHRpZiAoIW8pIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHgpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xNjggKi9cbmZ1bmN0aW9uIHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLyo6OiwgbGVuZ3RoKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgY2NoQ2hhcmFjdGVycyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNjaENoYXJhY3RlcnMgPT09IDAgPyBcIlwiIDogZGF0YS5yZWFkX3NoaWZ0KGNjaENoYXJhY3RlcnMsICdkYmNzJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS8qOnN0cmluZyovLCBvKSB7XG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoNCArIDIgKiBkYXRhLmxlbmd0aCk7IH1cblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLmxlbmd0aCk7XG5cdGlmIChkYXRhLmxlbmd0aCA+IDApIG8ud3JpdGVfc2hpZnQoMCwgZGF0YSwgJ2RiY3MnKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS45MSAqL1xuLy9mdW5jdGlvbiBwYXJzZV9MUFdpZGVTdHJpbmcoZGF0YS8qOjosIGxlbmd0aCovKS8qOnN0cmluZyovIHtcbi8vXHR2YXIgY2NoQ2hhcmFjdGVycyA9IGRhdGEucmVhZF9zaGlmdCgyKTtcbi8vXHRyZXR1cm4gY2NoQ2hhcmFjdGVycyA9PT0gMCA/IFwiXCIgOiBkYXRhLnJlYWRfc2hpZnQoY2NoQ2hhcmFjdGVycywgXCJ1dGYxNmxlXCIpO1xuLy99XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTQzICovXG5mdW5jdGlvbiBwYXJzZV9TdHJSdW4oZGF0YSkge1xuXHRyZXR1cm4geyBpY2g6IGRhdGEucmVhZF9zaGlmdCgyKSwgaWZudDogZGF0YS5yZWFkX3NoaWZ0KDIpIH07XG59XG5mdW5jdGlvbiB3cml0ZV9TdHJSdW4ocnVuLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcnVuLmljaCB8fCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBydW4uaWZudCB8fCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTIxICovXG5mdW5jdGlvbiBwYXJzZV9SaWNoU3RyKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKS8qOlhMU3RyaW5nKi8ge1xuXHR2YXIgc3RhcnQgPSBkYXRhLmw7XG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIHN0ciA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIHJnc1N0clJ1biA9IFtdO1xuXHR2YXIgeiA9ICh7IHQ6IHN0ciwgaDogc3RyIH0vKjphbnkqLyk7XG5cdGlmICgoZmxhZ3MgJiAxKSAhPT0gMCkgeyAvKiBmUmljaFN0ciAqL1xuXHRcdC8qIFRPRE86IGZvcm1hdHRlZCBzdHJpbmcgKi9cblx0XHR2YXIgZHdTaXplU3RyUnVuID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRcdGZvciAodmFyIGkgPSAwOyBpICE9IGR3U2l6ZVN0clJ1bjsgKytpKSByZ3NTdHJSdW4ucHVzaChwYXJzZV9TdHJSdW4oZGF0YSkpO1xuXHRcdHouciA9IHJnc1N0clJ1bjtcblx0fVxuXHRlbHNlIHouciA9IFt7IGljaDogMCwgaWZudDogMCB9XTtcblx0Ly9pZigoZmxhZ3MgJiAyKSAhPT0gMCkgeyAvKiBmRXh0U3RyICovXG5cdC8vXHQvKiBUT0RPOiBwaG9uZXRpYyBzdHJpbmcgKi9cblx0Ly99XG5cdGRhdGEubCA9IHN0YXJ0ICsgbGVuZ3RoO1xuXHRyZXR1cm4gejtcbn1cbmZ1bmN0aW9uIHdyaXRlX1JpY2hTdHIoc3RyLyo6WExTdHJpbmcqLywgby8qOj9CbG9jayovKS8qOkJsb2NrKi8ge1xuXHQvKiBUT0RPOiBmb3JtYXR0ZWQgc3RyaW5nICovXG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoMTUgKyA0ICogc3RyLnQubGVuZ3RoKTsgfVxuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoc3RyLnQsIG8pO1xuXHRyZXR1cm4gX251bGwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuLyogW01TLVhMU0JdIDIuNC4zMjggQnJ0Q29tbWVudFRleHQgKFJpY2hTdHIgdy8xIHJ1bikgKi9cbnZhciBwYXJzZV9CcnRDb21tZW50VGV4dCA9IHBhcnNlX1JpY2hTdHI7XG5mdW5jdGlvbiB3cml0ZV9CcnRDb21tZW50VGV4dChzdHIvKjpYTFN0cmluZyovLCBvLyo6P0Jsb2NrKi8pLyo6QmxvY2sqLyB7XG5cdC8qIFRPRE86IGZvcm1hdHRlZCBzdHJpbmcgKi9cblx0dmFyIF9udWxsID0gZmFsc2U7IGlmIChvID09IG51bGwpIHsgX251bGwgPSB0cnVlOyBvID0gbmV3X2J1ZigyMyArIDQgKiBzdHIudC5sZW5ndGgpOyB9XG5cdG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhzdHIudCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSk7XG5cdHdyaXRlX1N0clJ1bih7IGljaDogMCwgaWZudDogMCB9LCBvKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS45ICovXG5mdW5jdGlvbiBwYXJzZV9YTFNCQ2VsbChkYXRhKS8qOmFueSovIHtcblx0dmFyIGNvbCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIGlTdHlsZVJlZiA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aVN0eWxlUmVmICs9IGRhdGEucmVhZF9zaGlmdCgxKSA8PCAxNjtcblx0ZGF0YS5sKys7IC8vdmFyIGZQaFNob3cgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7IGM6IGNvbCwgaVN0eWxlUmVmOiBpU3R5bGVSZWYgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMU0JDZWxsKGNlbGwvKjphbnkqLywgby8qOj9CbG9jayovKSB7XG5cdGlmIChvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCBjZWxsLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDMsIGNlbGwuaVN0eWxlUmVmIHx8IGNlbGwucyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGZQaFNob3cgKi9cblx0cmV0dXJuIG87XG59XG5cbi8qIFNob3J0IFhMU0IgQ2VsbCBkb2VzIG5vdCBpbmNsdWRlIGNvbHVtbiAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKS8qOmFueSovIHtcblx0dmFyIGlTdHlsZVJlZiA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aVN0eWxlUmVmICs9IGRhdGEucmVhZF9zaGlmdCgxKSA8PDE2O1xuXHRkYXRhLmwrKzsgLy92YXIgZlBoU2hvdyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHsgYzotMSwgaVN0eWxlUmVmOiBpU3R5bGVSZWYgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX1hMU0JTaG9ydENlbGwoY2VsbC8qOmFueSovLCBvLyo6P0Jsb2NrKi8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCgzLCBjZWxsLmlTdHlsZVJlZiB8fCBjZWxsLnMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBmUGhTaG93ICovXG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjIxICovXG52YXIgcGFyc2VfWExTQkNvZGVOYW1lID0gcGFyc2VfWExXaWRlU3RyaW5nO1xudmFyIHdyaXRlX1hMU0JDb2RlTmFtZSA9IHdyaXRlX1hMV2lkZVN0cmluZztcblxuLyogW01TLVhMU0JdIDIuNS4xNjYgKi9cbmZ1bmN0aW9uIHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEvKjo6LCBsZW5ndGgqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBjY2hDaGFyYWN0ZXJzID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gY2NoQ2hhcmFjdGVycyA9PT0gMCB8fCBjY2hDaGFyYWN0ZXJzID09PSAweEZGRkZGRkZGID8gXCJcIiA6IGRhdGEucmVhZF9zaGlmdChjY2hDaGFyYWN0ZXJzLCAnZGJjcycpO1xufVxuZnVuY3Rpb24gd3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGF0YS8qOnN0cmluZyovLCBvKSB7XG5cdHZhciBfbnVsbCA9IGZhbHNlOyBpZiAobyA9PSBudWxsKSB7IF9udWxsID0gdHJ1ZTsgbyA9IG5ld19idWYoMTI3KTsgfVxuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEubGVuZ3RoID4gMCA/IGRhdGEubGVuZ3RoIDogMHhGRkZGRkZGRik7XG5cdGlmIChkYXRhLmxlbmd0aCA+IDApIG8ud3JpdGVfc2hpZnQoMCwgZGF0YSwgJ2RiY3MnKTtcblx0cmV0dXJuIF9udWxsID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNS4xNjUgKi9cbnZhciBwYXJzZV9YTE5hbWVXaWRlU3RyaW5nID0gcGFyc2VfWExXaWRlU3RyaW5nO1xuLy92YXIgd3JpdGVfWExOYW1lV2lkZVN0cmluZyA9IHdyaXRlX1hMV2lkZVN0cmluZztcblxuLyogW01TLVhMU0JdIDIuNS4xMTQgKi9cbnZhciBwYXJzZV9SZWxJRCA9IHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nO1xudmFyIHdyaXRlX1JlbElEID0gd3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmc7XG5cblxuLyogW01TLVhMU10gMi41LjIxNyA7IFtNUy1YTFNCXSAyLjUuMTIyICovXG5mdW5jdGlvbiBwYXJzZV9Sa051bWJlcihkYXRhKS8qOm51bWJlciovIHtcblx0dmFyIGIgPSBkYXRhLnNsaWNlKGRhdGEubCwgZGF0YS5sICsgNCk7XG5cdHZhciBmWDEwMCA9IChiWzBdICYgMSksIGZJbnQgPSAoYlswXSAmIDIpO1xuXHRkYXRhLmwgKz0gNDtcblx0dmFyIFJLID0gZkludCA9PT0gMCA/IF9fZG91YmxlKFswLCAwLCAwLCAwLCAoYlswXSAmIDB4RkMpLCBiWzFdLCBiWzJdLCBiWzNdXSwgMCkgOiBfX3JlYWRJbnQzMkxFKGIsIDApID4+IDI7XG5cdHJldHVybiBmWDEwMCA/IChSSyAvIDEwMCkgOiBSSztcbn1cbmZ1bmN0aW9uIHdyaXRlX1JrTnVtYmVyKGRhdGEvKjpudW1iZXIqLywgbykge1xuXHRpZiAobyA9PSBudWxsKSBvID0gbmV3X2J1Zig0KTtcblx0dmFyIGZYMTAwID0gMCwgZkludCA9IDAsIGQxMDAgPSBkYXRhICogMTAwO1xuXHRpZiAoKGRhdGEgPT0gKGRhdGEgfCAwKSkgJiYgKGRhdGEgPj0gLSgxIDw8IDI5KSkgJiYgKGRhdGEgPCAoMSA8PCAyOSkpKSB7IGZJbnQgPSAxOyB9XG5cdGVsc2UgaWYgKChkMTAwID09IChkMTAwIHwgMCkpICYmIChkMTAwID49IC0oMSA8PCAyOSkpICYmIChkMTAwIDwgKDEgPDwgMjkpKSkgeyBmSW50ID0gMTsgZlgxMDAgPSAxOyB9XG5cdGlmIChmSW50KSBvLndyaXRlX3NoaWZ0KC00LCAoKGZYMTAwID8gZDEwMCA6IGRhdGEpIDw8IDIpICsgKGZYMTAwICsgMikpO1xuXHRlbHNlIHRocm93IG5ldyBFcnJvcihcInVuc3VwcG9ydGVkIFJrTnVtYmVyIFwiICsgZGF0YSk7IC8vIFRPRE9cbn1cblxuXG4vKiBbTVMtWExTQl0gMi41LjExNyBSZlggKi9cbmZ1bmN0aW9uIHBhcnNlX1JmWChkYXRhIC8qOjosIGxlbmd0aCovKS8qOlJhbmdlKi8ge1xuXHR2YXIgY2VsbC8qOlJhbmdlKi8gPSAoeyBzOiB7fSwgZToge30gfS8qOmFueSovKTtcblx0Y2VsbC5zLnIgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdGNlbGwuZS5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLnMuYyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0Y2VsbC5lLmMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfUmZYKHIvKjpSYW5nZSovLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoMTYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIucy5yKTtcblx0by53cml0ZV9zaGlmdCg0LCByLmUucik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgci5zLmMpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIHIuZS5jKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTUzIFVuY2hlY2tlZFJmWCAqL1xudmFyIHBhcnNlX1VuY2hlY2tlZFJmWCA9IHBhcnNlX1JmWDtcbnZhciB3cml0ZV9VbmNoZWNrZWRSZlggPSB3cml0ZV9SZlg7XG5cbi8qIFtNUy1YTFNCXSAyLjUuMTU1IFVuY2hlY2tlZFNxUmZYICovXG4vL2Z1bmN0aW9uIHBhcnNlX1VuY2hlY2tlZFNxUmZYKGRhdGEpIHtcbi8vXHR2YXIgY250ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuLy9cdHZhciBvdXQgPSBbXTtcbi8vXHRmb3IodmFyIGkgPSAwOyBpIDwgY250OyArK2kpIHtcbi8vXHRcdHZhciBybmcgPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSk7XG4vL1x0XHRvdXQucHVzaChlbmNvZGVfcmFuZ2Uocm5nKSk7XG4vL1x0fVxuLy9cdHJldHVybiBvdXQuam9pbihcIixcIik7XG4vL31cbi8vZnVuY3Rpb24gd3JpdGVfVW5jaGVja2VkU3FSZlgoc3FyZngvKjpzdHJpbmcqLykge1xuLy9cdHZhciBwYXJ0cyA9IHNxcmZ4LnNwbGl0KC9cXHMqLFxccyovKTtcbi8vXHR2YXIgbyA9IG5ld19idWYoNCk7IG8ud3JpdGVfc2hpZnQoNCwgcGFydHMubGVuZ3RoKTtcbi8vXHR2YXIgb3V0ID0gW29dO1xuLy9cdHBhcnRzLmZvckVhY2goZnVuY3Rpb24ocm5nKSB7XG4vL1x0XHRvdXQucHVzaCh3cml0ZV9VbmNoZWNrZWRSZlgoc2FmZV9kZWNvZGVfcmFuZ2Uocm5nKSkpO1xuLy9cdH0pO1xuLy9cdHJldHVybiBiY29uY2F0KG91dCk7XG4vL31cblxuLyogW01TLVhMU10gMi41LjM0MiA7IFtNUy1YTFNCXSAyLjUuMTcxICovXG4vKiBUT0RPOiBlcnJvciBjaGVja2luZywgTmFOIGFuZCBJbmZpbml0eSB2YWx1ZXMgYXJlIG5vdCB2YWxpZCBYbnVtICovXG5mdW5jdGlvbiBwYXJzZV9YbnVtKGRhdGEvKjo6LCBsZW5ndGgqLykge1xuXHRpZihkYXRhLmxlbmd0aCAtIGRhdGEubCA8IDgpIHRocm93IFwiWExTIFhudW0gQnVmZmVyIHVuZGVyZmxvd1wiO1xuXHRyZXR1cm4gZGF0YS5yZWFkX3NoaWZ0KDgsICdmJyk7XG59XG5mdW5jdGlvbiB3cml0ZV9YbnVtKGRhdGEsIG8pIHsgcmV0dXJuIChvIHx8IG5ld19idWYoOCkpLndyaXRlX3NoaWZ0KDgsIGRhdGEsICdmJyk7IH1cblxuLyogW01TLVhMU0JdIDIuNC4zMjQgQnJ0Q29sb3IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENvbG9yKGRhdGEvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgb3V0ID0ge307XG5cdHZhciBkID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXG5cdC8vdmFyIGZWYWxpZFJHQiA9IGQgJiAxO1xuXHR2YXIgeENvbG9yVHlwZSA9IGQgPj4+IDE7XG5cblx0dmFyIGluZGV4ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgblRTID0gZGF0YS5yZWFkX3NoaWZ0KDIsICdpJyk7XG5cdHZhciBiUiA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIGJHID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgYkIgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGRhdGEubCsrOyAvL3ZhciBiQWxwaGEgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cblx0c3dpdGNoICh4Q29sb3JUeXBlKSB7XG5cdFx0Y2FzZSAwOiBvdXQuYXV0byA9IDE7IGJyZWFrO1xuXHRcdGNhc2UgMTpcblx0XHRcdG91dC5pbmRleCA9IGluZGV4O1xuXHRcdFx0dmFyIGljdiA9IFhMU0ljdltpbmRleF07XG5cdFx0XHQvKiBhdXRvbWF0aWMgcHNldWRvIGluZGV4IDgxICovXG5cdFx0XHRpZiAoaWN2KSBvdXQucmdiID0gcmdiMkhleChpY3YpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAyOlxuXHRcdFx0LyogaWYoIWZWYWxpZFJHQikgdGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZFwiKTsgKi9cblx0XHRcdG91dC5yZ2IgPSByZ2IySGV4KFtiUiwgYkcsIGJCXSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDM6IG91dC50aGVtZSA9IGluZGV4OyBicmVhaztcblx0fVxuXHRpZiAoblRTICE9IDApIG91dC50aW50ID0gblRTID4gMCA/IG5UUyAvIDMyNzY3IDogblRTIC8gMzI3Njg7XG5cblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENvbG9yKGNvbG9yLCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoOCk7XG5cdGlmICghY29sb3IgfHwgY29sb3IuYXV0bykgeyBvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApOyByZXR1cm4gbzsgfVxuXHRpZiAoY29sb3IuaW5kZXggIT0gbnVsbCkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwMik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBjb2xvci5pbmRleCk7XG5cdH0gZWxzZSBpZiAoY29sb3IudGhlbWUgIT0gbnVsbCkge1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwNik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBjb2xvci50aGVtZSk7XG5cdH0gZWxzZSB7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDA1KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR9XG5cdHZhciBuVFMgPSBjb2xvci50aW50IHx8IDA7XG5cdGlmIChuVFMgPiAwKSBuVFMgKj0gMzI3Njc7XG5cdGVsc2UgaWYgKG5UUyA8IDApIG5UUyAqPSAzMjc2ODtcblx0by53cml0ZV9zaGlmdCgyLCBuVFMpO1xuXHRpZiAoIWNvbG9yLnJnYiB8fCBjb2xvci50aGVtZSAhPSBudWxsKSB7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdH0gZWxzZSB7XG5cdFx0dmFyIHJnYiA9IChjb2xvci5yZ2IgfHwgJ0ZGRkZGRicpO1xuXHRcdGlmICh0eXBlb2YgcmdiID09ICdudW1iZXInKSByZ2IgPSAoXCIwMDAwMDBcIiArIHJnYi50b1N0cmluZygxNikpLnNsaWNlKC02KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSgwLCAyKSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSgyLCA0KSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KHJnYi5zbGljZSg0LCA2KSwgMTYpKTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi41LjUyICovXG5mdW5jdGlvbiBwYXJzZV9Gb250RmxhZ3MoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBkID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRkYXRhLmwrKztcblx0dmFyIG91dCA9IHtcblx0XHRmQm9sZDogZCAmIDB4MDEsXG5cdFx0Zkl0YWxpYzogZCAmIDB4MDIsXG5cdFx0ZlVuZGVybGluZTogZCAmIDB4MDQsXG5cdFx0ZlN0cmlrZW91dDogZCAmIDB4MDgsXG5cdFx0Zk91dGxpbmU6IGQgJiAweDEwLFxuXHRcdGZTaGFkb3c6IGQgJiAweDIwLFxuXHRcdGZDb25kZW5zZTogZCAmIDB4NDAsXG5cdFx0ZkV4dGVuZDogZCAmIDB4ODBcblx0fTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0ZvbnRGbGFncyhmb250LCBvKSB7XG5cdGlmICghbykgbyA9IG5ld19idWYoMik7XG5cdHZhciBncmJpdCA9XG5cdFx0KGZvbnQuaXRhbGljID8gMHgwMiA6IDApIHxcblx0XHQoZm9udC5zdHJpa2UgPyAweDA4IDogMCkgfFxuXHRcdChmb250Lm91dGxpbmUgPyAweDEwIDogMCkgfFxuXHRcdChmb250LnNoYWRvdyA/IDB4MjAgOiAwKSB8XG5cdFx0KGZvbnQuY29uZGVuc2UgPyAweDQwIDogMCkgfFxuXHRcdChmb250LmV4dGVuZCA/IDB4ODAgOiAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBncmJpdCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0xFRFNdIDIuMy4xIGFuZCAyLjMuMiAqL1xuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmcobywgdy8qOm51bWJlciovKS8qOnN0cmluZyovIHtcblx0Ly8gJEZsb3dJZ25vcmVcblx0dmFyIENsaXBGbXQgPSB7IDI6IFwiQklUTUFQXCIsIDM6IFwiTUVUQUZJTEVQSUNUXCIsIDg6IFwiRElCXCIsIDE0OiBcIkVOSE1FVEFGSUxFXCIgfTtcblx0dmFyIG0vKjpudW1iZXIqLyA9IG8ucmVhZF9zaGlmdCg0KTtcblx0c3dpdGNoIChtKSB7XG5cdFx0Y2FzZSAweDAwMDAwMDAwOiByZXR1cm4gXCJcIjtcblx0XHRjYXNlIDB4ZmZmZmZmZmY6IGNhc2UgMHhmZmZmZmZmZTogcmV0dXJuIENsaXBGbXRbby5yZWFkX3NoaWZ0KDQpXSB8fCBcIlwiO1xuXHR9XG5cdGlmIChtID4gMHgxOTApIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIENsaXBib2FyZDogXCIgKyBtLnRvU3RyaW5nKDE2KSk7XG5cdG8ubCAtPSA0O1xuXHRyZXR1cm4gby5yZWFkX3NoaWZ0KDAsIHcgPT0gMSA/IFwibHBzdHJcIiA6IFwibHB3c3RyXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JBbnNpU3RyaW5nKG8pIHsgcmV0dXJuIHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yU3RyaW5nKG8sIDEpOyB9XG5mdW5jdGlvbiBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclVuaWNvZGVTdHJpbmcobykgeyByZXR1cm4gcGFyc2VfQ2xpcGJvYXJkRm9ybWF0T3JTdHJpbmcobywgMik7IH1cblxuLyogW01TLU9MRVBTXSAyLjIgUHJvcGVydHlUeXBlICovXG4vLyBOb3RlOiBzb21lIHRyZWUgc2hha2VycyBjYW5ub3QgaGFuZGxlIFZUX1ZFQ1RPUiB8ICRDT05TVCwgaGVuY2UgZXh0cmEgdmFyc1xuLy92YXIgVlRfRU1QVFkgICAgPSAweDAwMDA7XG4vL3ZhciBWVF9OVUxMICAgICA9IDB4MDAwMTtcbnZhciBWVF9JMiAgICAgICA9IDB4MDAwMjtcbnZhciBWVF9JNCAgICAgICA9IDB4MDAwMztcbi8vdmFyIFZUX1I0ICAgICAgID0gMHgwMDA0O1xuLy92YXIgVlRfUjggICAgICAgPSAweDAwMDU7XG4vL3ZhciBWVF9DWSAgICAgICA9IDB4MDAwNjtcbi8vdmFyIFZUX0RBVEUgICAgID0gMHgwMDA3O1xuLy92YXIgVlRfQlNUUiAgICAgPSAweDAwMDg7XG4vL3ZhciBWVF9FUlJPUiAgICA9IDB4MDAwQTtcbnZhciBWVF9CT09MICAgICA9IDB4MDAwQjtcbnZhciBWVF9WQVJJQU5UICA9IDB4MDAwQztcbi8vdmFyIFZUX0RFQ0lNQUwgID0gMHgwMDBFO1xuLy92YXIgVlRfSTEgICAgICAgPSAweDAwMTA7XG4vL3ZhciBWVF9VSTEgICAgICA9IDB4MDAxMTtcbi8vdmFyIFZUX1VJMiAgICAgID0gMHgwMDEyO1xudmFyIFZUX1VJNCAgICAgID0gMHgwMDEzO1xuLy92YXIgVlRfSTggICAgICAgPSAweDAwMTQ7XG4vL3ZhciBWVF9VSTggICAgICA9IDB4MDAxNTtcbi8vdmFyIFZUX0lOVCAgICAgID0gMHgwMDE2O1xuLy92YXIgVlRfVUlOVCAgICAgPSAweDAwMTc7XG52YXIgVlRfTFBTVFIgICAgPSAweDAwMUU7XG4vL3ZhciBWVF9MUFdTVFIgICA9IDB4MDAxRjtcbnZhciBWVF9GSUxFVElNRSA9IDB4MDA0MDtcbnZhciBWVF9CTE9CICAgICA9IDB4MDA0MTtcbi8vdmFyIFZUX1NUUkVBTSAgID0gMHgwMDQyO1xuLy92YXIgVlRfU1RPUkFHRSAgPSAweDAwNDM7XG4vL3ZhciBWVF9TVFJFQU1FRF9PYmplY3QgID0gMHgwMDQ0O1xuLy92YXIgVlRfU1RPUkVEX09iamVjdCAgICA9IDB4MDA0NTtcbi8vdmFyIFZUX0JMT0JfT2JqZWN0ICAgICAgPSAweDAwNDY7XG52YXIgVlRfQ0YgICAgICAgPSAweDAwNDc7XG4vL3ZhciBWVF9DTFNJRCAgICA9IDB4MDA0ODtcbi8vdmFyIFZUX1ZFUlNJT05FRF9TVFJFQU0gPSAweDAwNDk7XG52YXIgVlRfVkVDVE9SICAgPSAweDEwMDA7XG52YXIgVlRfVkVDVE9SX1ZBUklBTlQgPSAweDEwMEM7XG52YXIgVlRfVkVDVE9SX0xQU1RSICAgPSAweDEwMUU7XG4vL3ZhciBWVF9BUlJBWSAgICA9IDB4MjAwMDtcblxudmFyIFZUX1NUUklORyAgID0gMHgwMDUwOyAvLyAyLjMuMy4xLjExIFZ0U3RyaW5nXG52YXIgVlRfVVNUUiAgICAgPSAweDAwNTE7IC8vIDIuMy4zLjEuMTIgVnRVbmFsaWduZWRTdHJpbmdcbnZhciBWVF9DVVNUT00gICA9IFtWVF9TVFJJTkcsIFZUX1VTVFJdO1xuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi4yLjEgRG9jdW1lbnQgU3VtbWFyeSBJbmZvcm1hdGlvbiBQSUREU0kgKi9cbnZhciBEb2NTdW1tYXJ5UElERFNJID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjogJ0NvZGVQYWdlJywgdDogVlRfSTIgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46ICdDYXRlZ29yeScsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwMy8qOjpdKi86IHsgbjogJ1ByZXNlbnRhdGlvbkZvcm1hdCcsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNC8qOjpdKi86IHsgbjogJ0J5dGVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogeyBuOiAnTGluZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46ICdQYXJhZ3JhcGhDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogeyBuOiAnU2xpZGVDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOiAnTm90ZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiB7IG46ICdIaWRkZW5Db3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDBhLyo6Ol0qLzogeyBuOiAnTXVsdGltZWRpYUNsaXBDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDBiLyo6Ol0qLzogeyBuOiAnU2NhbGVDcm9wJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgwYy8qOjpdKi86IHsgbjogJ0hlYWRpbmdQYWlycycsIHQ6IFZUX1ZFQ1RPUl9WQVJJQU5UIC8qIFZUX1ZFQ1RPUiB8IFZUX1ZBUklBTlQgKi8gfSxcblx0Lyo6OlsqLzB4MGQvKjo6XSovOiB7IG46ICdUaXRsZXNPZlBhcnRzJywgdDogVlRfVkVDVE9SX0xQU1RSIC8qIFZUX1ZFQ1RPUiB8IFZUX0xQU1RSICovIH0sXG5cdC8qOjpbKi8weDBlLyo6Ol0qLzogeyBuOiAnTWFuYWdlcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwZi8qOjpdKi86IHsgbjogJ0NvbXBhbnknLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46ICdMaW5rc1VwVG9EYXRlJywgdDogVlRfQk9PTCB9LFxuXHQvKjo6WyovMHgxMS8qOjpdKi86IHsgbjogJ0NoYXJhY3RlckNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MTMvKjo6XSovOiB7IG46ICdTaGFyZWREb2MnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDE2Lyo6Ol0qLzogeyBuOiAnSHlwZXJsaW5rc0NoYW5nZWQnLCB0OiBWVF9CT09MIH0sXG5cdC8qOjpbKi8weDE3Lyo6Ol0qLzogeyBuOiAnQXBwVmVyc2lvbicsIHQ6IFZUX0k0LCBwOiAndmVyc2lvbicgfSxcblx0Lyo6OlsqLzB4MTgvKjo6XSovOiB7IG46ICdEaWdTaWcnLCB0OiBWVF9CTE9CIH0sXG5cdC8qOjpbKi8weDFBLyo6Ol0qLzogeyBuOiAnQ29udGVudFR5cGUnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MUIvKjo6XSovOiB7IG46ICdDb250ZW50U3RhdHVzJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDFDLyo6Ol0qLzogeyBuOiAnTGFuZ3VhZ2UnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MUQvKjo6XSovOiB7IG46ICdWZXJzaW9uJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzoge30sXG5cdC8qIFtNUy1PTEVQU10gMi4xOCAqL1xuXHQvKjo6WyovMHg4MDAwMDAwMC8qOjpdKi86IHsgbjogJ0xvY2FsZScsIHQ6IFZUX1VJNCB9LFxuXHQvKjo6WyovMHg4MDAwMDAwMy8qOjpdKi86IHsgbjogJ0JlaGF2aW9yJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDcyNjI3MjYyLyo6Ol0qLzoge31cbn07XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjEuMSBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCBQSURTSSAqL1xudmFyIFN1bW1hcnlQSURTSSA9IHtcblx0Lyo6OlsqLzB4MDEvKjo6XSovOiB7IG46ICdDb2RlUGFnZScsIHQ6IFZUX0kyIH0sXG5cdC8qOjpbKi8weDAyLyo6Ol0qLzogeyBuOiAnVGl0bGUnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiB7IG46ICdTdWJqZWN0JywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOiAnQXV0aG9yJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogeyBuOiAnS2V5d29yZHMnLCB0OiBWVF9TVFJJTkcgfSxcblx0Lyo6OlsqLzB4MDYvKjo6XSovOiB7IG46ICdDb21tZW50cycsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwNy8qOjpdKi86IHsgbjogJ1RlbXBsYXRlJywgdDogVlRfU1RSSU5HIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOiAnTGFzdEF1dGhvcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwOS8qOjpdKi86IHsgbjogJ1Jldk51bWJlcicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgwQS8qOjpdKi86IHsgbjogJ0VkaXRUaW1lJywgdDogVlRfRklMRVRJTUUgfSxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiB7IG46ICdMYXN0UHJpbnRlZCcsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBDLyo6Ol0qLzogeyBuOiAnQ3JlYXRlZERhdGUnLCB0OiBWVF9GSUxFVElNRSB9LFxuXHQvKjo6WyovMHgwRC8qOjpdKi86IHsgbjogJ01vZGlmaWVkRGF0ZScsIHQ6IFZUX0ZJTEVUSU1FIH0sXG5cdC8qOjpbKi8weDBFLyo6Ol0qLzogeyBuOiAnUGFnZUNvdW50JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiB7IG46ICdXb3JkQ291bnQnLCB0OiBWVF9JNCB9LFxuXHQvKjo6WyovMHgxMC8qOjpdKi86IHsgbjogJ0NoYXJDb3VudCcsIHQ6IFZUX0k0IH0sXG5cdC8qOjpbKi8weDExLyo6Ol0qLzogeyBuOiAnVGh1bWJuYWlsJywgdDogVlRfQ0YgfSxcblx0Lyo6OlsqLzB4MTIvKjo6XSovOiB7IG46ICdBcHBsaWNhdGlvbicsIHQ6IFZUX1NUUklORyB9LFxuXHQvKjo6WyovMHgxMy8qOjpdKi86IHsgbjogJ0RvY1NlY3VyaXR5JywgdDogVlRfSTQgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fSxcblx0LyogW01TLU9MRVBTXSAyLjE4ICovXG5cdC8qOjpbKi8weDgwMDAwMDAwLyo6Ol0qLzogeyBuOiAnTG9jYWxlJywgdDogVlRfVUk0IH0sXG5cdC8qOjpbKi8weDgwMDAwMDAzLyo6Ol0qLzogeyBuOiAnQmVoYXZpb3InLCB0OiBWVF9VSTQgfSxcblx0Lyo6OlsqLzB4NzI2MjcyNjIvKjo6XSovOiB7fVxufTtcblxuLyogW01TLVhMU10gMi40LjYzIENvdW50cnkvUmVnaW9uIGNvZGVzICovXG52YXIgQ291bnRyeUVudW0gPSB7XG5cdC8qOjpbKi8weDAwMDEvKjo6XSovOiBcIlVTXCIsIC8vIFVuaXRlZCBTdGF0ZXNcblx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IFwiQ0FcIiwgLy8gQ2FuYWRhXG5cdC8qOjpbKi8weDAwMDMvKjo6XSovOiBcIlwiLCAvLyBMYXRpbiBBbWVyaWNhIChleGNlcHQgQnJhemlsKVxuXHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogXCJSVVwiLCAvLyBSdXNzaWFcblx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IFwiRUdcIiwgLy8gRWd5cHRcblx0Lyo6OlsqLzB4MDAxRS8qOjpdKi86IFwiR1JcIiwgLy8gR3JlZWNlXG5cdC8qOjpbKi8weDAwMUYvKjo6XSovOiBcIk5MXCIsIC8vIE5ldGhlcmxhbmRzXG5cdC8qOjpbKi8weDAwMjAvKjo6XSovOiBcIkJFXCIsIC8vIEJlbGdpdW1cblx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IFwiRlJcIiwgLy8gRnJhbmNlXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiBcIkVTXCIsIC8vIFNwYWluXG5cdC8qOjpbKi8weDAwMjQvKjo6XSovOiBcIkhVXCIsIC8vIEh1bmdhcnlcblx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IFwiSVRcIiwgLy8gSXRhbHlcblx0Lyo6OlsqLzB4MDAyOS8qOjpdKi86IFwiQ0hcIiwgLy8gU3dpdHplcmxhbmRcblx0Lyo6OlsqLzB4MDAyQi8qOjpdKi86IFwiQVRcIiwgLy8gQXVzdHJpYVxuXHQvKjo6WyovMHgwMDJDLyo6Ol0qLzogXCJHQlwiLCAvLyBVbml0ZWQgS2luZ2RvbVxuXHQvKjo6WyovMHgwMDJELyo6Ol0qLzogXCJES1wiLCAvLyBEZW5tYXJrXG5cdC8qOjpbKi8weDAwMkUvKjo6XSovOiBcIlNFXCIsIC8vIFN3ZWRlblxuXHQvKjo6WyovMHgwMDJGLyo6Ol0qLzogXCJOT1wiLCAvLyBOb3J3YXlcblx0Lyo6OlsqLzB4MDAzMC8qOjpdKi86IFwiUExcIiwgLy8gUG9sYW5kXG5cdC8qOjpbKi8weDAwMzEvKjo6XSovOiBcIkRFXCIsIC8vIEdlcm1hbnlcblx0Lyo6OlsqLzB4MDAzNC8qOjpdKi86IFwiTVhcIiwgLy8gTWV4aWNvXG5cdC8qOjpbKi8weDAwMzcvKjo6XSovOiBcIkJSXCIsIC8vIEJyYXppbFxuXHQvKjo6WyovMHgwMDNkLyo6Ol0qLzogXCJBVVwiLCAvLyBBdXN0cmFsaWFcblx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IFwiTlpcIiwgLy8gTmV3IFplYWxhbmRcblx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IFwiVEhcIiwgLy8gVGhhaWxhbmRcblx0Lyo6OlsqLzB4MDA1MS8qOjpdKi86IFwiSlBcIiwgLy8gSmFwYW5cblx0Lyo6OlsqLzB4MDA1Mi8qOjpdKi86IFwiS1JcIiwgLy8gS29yZWFcblx0Lyo6OlsqLzB4MDA1NC8qOjpdKi86IFwiVk5cIiwgLy8gVmlldCBOYW1cblx0Lyo6OlsqLzB4MDA1Ni8qOjpdKi86IFwiQ05cIiwgLy8gQ2hpbmFcblx0Lyo6OlsqLzB4MDA1QS8qOjpdKi86IFwiVFJcIiwgLy8gVHVya2V5XG5cdC8qOjpbKi8weDAwNjkvKjo6XSovOiBcIkpTXCIsIC8vIFJhbWFzdGFuXG5cdC8qOjpbKi8weDAwRDUvKjo6XSovOiBcIkRaXCIsIC8vIEFsZ2VyaWFcblx0Lyo6OlsqLzB4MDBEOC8qOjpdKi86IFwiTUFcIiwgLy8gTW9yb2Njb1xuXHQvKjo6WyovMHgwMERBLyo6Ol0qLzogXCJMWVwiLCAvLyBMaWJ5YVxuXHQvKjo6WyovMHgwMTVGLyo6Ol0qLzogXCJQVFwiLCAvLyBQb3J0dWdhbFxuXHQvKjo6WyovMHgwMTYyLyo6Ol0qLzogXCJJU1wiLCAvLyBJY2VsYW5kXG5cdC8qOjpbKi8weDAxNjYvKjo6XSovOiBcIkZJXCIsIC8vIEZpbmxhbmRcblx0Lyo6OlsqLzB4MDFBNC8qOjpdKi86IFwiQ1pcIiwgLy8gQ3plY2ggUmVwdWJsaWNcblx0Lyo6OlsqLzB4MDM3Ni8qOjpdKi86IFwiVFdcIiwgLy8gVGFpd2FuXG5cdC8qOjpbKi8weDAzQzEvKjo6XSovOiBcIkxCXCIsIC8vIExlYmFub25cblx0Lyo6OlsqLzB4MDNDMi8qOjpdKi86IFwiSk9cIiwgLy8gSm9yZGFuXG5cdC8qOjpbKi8weDAzQzMvKjo6XSovOiBcIlNZXCIsIC8vIFN5cmlhXG5cdC8qOjpbKi8weDAzQzQvKjo6XSovOiBcIklRXCIsIC8vIElyYXFcblx0Lyo6OlsqLzB4MDNDNS8qOjpdKi86IFwiS1dcIiwgLy8gS3V3YWl0XG5cdC8qOjpbKi8weDAzQzYvKjo6XSovOiBcIlNBXCIsIC8vIFNhdWRpIEFyYWJpYVxuXHQvKjo6WyovMHgwM0NCLyo6Ol0qLzogXCJBRVwiLCAvLyBVbml0ZWQgQXJhYiBFbWlyYXRlc1xuXHQvKjo6WyovMHgwM0NDLyo6Ol0qLzogXCJJTFwiLCAvLyBJc3JhZWxcblx0Lyo6OlsqLzB4MDNDRS8qOjpdKi86IFwiUUFcIiwgLy8gUWF0YXJcblx0Lyo6OlsqLzB4MDNENS8qOjpdKi86IFwiSVJcIiwgLy8gSXJhblxuXHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogXCJVU1wiICAvLyBVbml0ZWQgU3RhdGVzXG59O1xuXG4vKiBbTVMtWExTXSAyLjUuMTI3ICovXG52YXIgWExTRmlsbFBhdHRlcm4gPSBbXG5cdG51bGwsXG5cdCdzb2xpZCcsXG5cdCdtZWRpdW1HcmF5Jyxcblx0J2RhcmtHcmF5Jyxcblx0J2xpZ2h0R3JheScsXG5cdCdkYXJrSG9yaXpvbnRhbCcsXG5cdCdkYXJrVmVydGljYWwnLFxuXHQnZGFya0Rvd24nLFxuXHQnZGFya1VwJyxcblx0J2RhcmtHcmlkJyxcblx0J2RhcmtUcmVsbGlzJyxcblx0J2xpZ2h0SG9yaXpvbnRhbCcsXG5cdCdsaWdodFZlcnRpY2FsJyxcblx0J2xpZ2h0RG93bicsXG5cdCdsaWdodFVwJyxcblx0J2xpZ2h0R3JpZCcsXG5cdCdsaWdodFRyZWxsaXMnLFxuXHQnZ3JheTEyNScsXG5cdCdncmF5MDYyNSdcbl07XG5cbmZ1bmN0aW9uIHJnYmlmeShhcnIvKjpBcnJheTxudW1iZXI+Ki8pLyo6QXJyYXk8W251bWJlciwgbnVtYmVyLCBudW1iZXJdPiovIHsgcmV0dXJuIGFyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4gWyh4Pj4xNikmMjU1LCh4Pj44KSYyNTUseCYyNTVdOyB9KTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTYxICovXG4vKiBbTVMtWExTQl0gMi41Ljc1IEljdiAqL1xudmFyIF9YTFNJY3YgPSAvKiNfX1BVUkVfXyovIHJnYmlmeShbXG5cdC8qIENvbG9yIENvbnN0YW50cyAqL1xuXHQweDAwMDAwMCxcblx0MHhGRkZGRkYsXG5cdDB4RkYwMDAwLFxuXHQweDAwRkYwMCxcblx0MHgwMDAwRkYsXG5cdDB4RkZGRjAwLFxuXHQweEZGMDBGRixcblx0MHgwMEZGRkYsXG5cblx0LyogT3ZlcnJpZGFibGUgRGVmYXVsdHMgKi9cblx0MHgwMDAwMDAsXG5cdDB4RkZGRkZGLFxuXHQweEZGMDAwMCxcblx0MHgwMEZGMDAsXG5cdDB4MDAwMEZGLFxuXHQweEZGRkYwMCxcblx0MHhGRjAwRkYsXG5cdDB4MDBGRkZGLFxuXG5cdDB4ODAwMDAwLFxuXHQweDAwODAwMCxcblx0MHgwMDAwODAsXG5cdDB4ODA4MDAwLFxuXHQweDgwMDA4MCxcblx0MHgwMDgwODAsXG5cdDB4QzBDMEMwLFxuXHQweDgwODA4MCxcblx0MHg5OTk5RkYsXG5cdDB4OTkzMzY2LFxuXHQweEZGRkZDQyxcblx0MHhDQ0ZGRkYsXG5cdDB4NjYwMDY2LFxuXHQweEZGODA4MCxcblx0MHgwMDY2Q0MsXG5cdDB4Q0NDQ0ZGLFxuXG5cdDB4MDAwMDgwLFxuXHQweEZGMDBGRixcblx0MHhGRkZGMDAsXG5cdDB4MDBGRkZGLFxuXHQweDgwMDA4MCxcblx0MHg4MDAwMDAsXG5cdDB4MDA4MDgwLFxuXHQweDAwMDBGRixcblx0MHgwMENDRkYsXG5cdDB4Q0NGRkZGLFxuXHQweENDRkZDQyxcblx0MHhGRkZGOTksXG5cdDB4OTlDQ0ZGLFxuXHQweEZGOTlDQyxcblx0MHhDQzk5RkYsXG5cdDB4RkZDQzk5LFxuXG5cdDB4MzM2NkZGLFxuXHQweDMzQ0NDQyxcblx0MHg5OUNDMDAsXG5cdDB4RkZDQzAwLFxuXHQweEZGOTkwMCxcblx0MHhGRjY2MDAsXG5cdDB4NjY2Njk5LFxuXHQweDk2OTY5Nixcblx0MHgwMDMzNjYsXG5cdDB4MzM5OTY2LFxuXHQweDAwMzMwMCxcblx0MHgzMzMzMDAsXG5cdDB4OTkzMzAwLFxuXHQweDk5MzM2Nixcblx0MHgzMzMzOTksXG5cdDB4MzMzMzMzLFxuXG5cdC8qIE90aGVyIGVudHJpZXMgdG8gYXBwZWFzZSBCSUZGOC8xMiAqL1xuXHQweEZGRkZGRiwgLyogMHg0MCBpY3ZGb3JlZ3JvdW5kID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQxIGljdkJhY2tncm91bmQgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDIgaWN2RnJhbWUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDMgaWN2M0QgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NDQgaWN2M0RUZXh0ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ1IGljdjNESGlsaXRlID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ2IGljdjNEU2hhZG93ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ3IGljdkhpbGl0ZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0OCBpY3ZDdGxUZXh0ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDQ5IGljdkN0bFNjcmwgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEEgaWN2Q3RsSW52ID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRCIGljdkN0bEJvZHkgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEMgaWN2Q3RsRnJhbWUgPz8gKi9cblx0MHgwMDAwMDAsIC8qIDB4NEQgaWN2Q3RsRm9yZSA/PyAqL1xuXHQweDAwMDAwMCwgLyogMHg0RSBpY3ZDdGxCYWNrID8/ICovXG5cdDB4MDAwMDAwLCAvKiAweDRGIGljdkN0bE5ldXRyYWwgKi9cblx0MHgwMDAwMDAsIC8qIDB4NTAgaWN2SW5mb0JrID8/ICovXG5cdDB4MDAwMDAwIC8qIDB4NTEgaWN2SW5mb1RleHQgPz8gKi9cbl0pO1xudmFyIFhMU0ljdiA9IC8qI19fUFVSRV9fKi9kdXAoX1hMU0ljdik7XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuMiAqL1xudmFyIEJFcnIgPSB7XG5cdC8qOjpbKi8weDAwLyo6Ol0qLzogXCIjTlVMTCFcIixcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiBcIiNESVYvMCFcIixcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiBcIiNWQUxVRSFcIixcblx0Lyo6OlsqLzB4MTcvKjo6XSovOiBcIiNSRUYhXCIsXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogXCIjTkFNRT9cIixcblx0Lyo6OlsqLzB4MjQvKjo6XSovOiBcIiNOVU0hXCIsXG5cdC8qOjpbKi8weDJBLyo6Ol0qLzogXCIjTi9BXCIsXG5cdC8qOjpbKi8weDJCLyo6Ol0qLzogXCIjR0VUVElOR19EQVRBXCIsXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzogXCIjV1RGP1wiXG59O1xuLy92YXIgUkJFcnIgPSBldmVydF9udW0oQkVycik7XG52YXIgUkJFcnIgPSB7XG5cdFwiI05VTEwhXCI6ICAgICAgICAweDAwLFxuXHRcIiNESVYvMCFcIjogICAgICAgMHgwNyxcblx0XCIjVkFMVUUhXCI6ICAgICAgIDB4MEYsXG5cdFwiI1JFRiFcIjogICAgICAgICAweDE3LFxuXHRcIiNOQU1FP1wiOiAgICAgICAgMHgxRCxcblx0XCIjTlVNIVwiOiAgICAgICAgIDB4MjQsXG5cdFwiI04vQVwiOiAgICAgICAgICAweDJBLFxuXHRcIiNHRVRUSU5HX0RBVEFcIjogMHgyQixcblx0XCIjV1RGP1wiOiAgICAgICAgIDB4RkZcbn07XG5cbi8qIFBhcnRzIGVudW1lcmF0ZWQgaW4gT1BDIHNwZWMsIE1TLVhMU0IgYW5kIE1TLVhMU1ggKi9cbi8qIDEyLjMgUGFydCBTdW1tYXJ5IDxTcHJlYWRzaGVldE1MPiAqL1xuLyogMTQuMiBQYXJ0IFN1bW1hcnkgPERyYXdpbmdNTD4gKi9cbi8qIFtNUy1YTFNYXSAyLjEgUGFydCBFbnVtZXJhdGlvbnMgOyBbTVMtWExTQl0gMi4xLjcgUGFydCBFbnVtZXJhdGlvbiAqL1xudmFyIGN0MnR5cGUvKntbc3RyaW5nXTpzdHJpbmd9Ki8gPSAoe1xuXHQvKiBXb3JrYm9vayAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvRW5hYmxlZC5tYWluK3htbFwiOiBcIndvcmtib29rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW5cIjogXCJ3b3JrYm9va3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9FbmFibGVkLm1haW4reG1sXCI6IFwid29ya2Jvb2tzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGVtcGxhdGUubWFpbit4bWxcIjogXCJ3b3JrYm9va3NcIixcblxuXHQvKiBXb3Jrc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCI6IFwic2hlZXRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndvcmtzaGVldFwiOiBcInNoZWV0c1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5iaW5JbmRleFdzXCI6IFwiVE9ET1wiLCAvKiBCaW5hcnkgSW5kZXggKi9cblxuXHQvKiBDaGFydHNoZWV0ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIjogXCJjaGFydHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY2hhcnRzaGVldFwiOiBcImNoYXJ0c1wiLFxuXG5cdC8qIE1hY3Jvc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWxcIjogXCJtYWNyb3NcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldFwiOiBcIm1hY3Jvc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5pbnRsbWFjcm9zaGVldFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYmluSW5kZXhNc1wiOiBcIlRPRE9cIiwgLyogQmluYXJ5IEluZGV4ICovXG5cblx0LyogRGlhbG9nc2hlZXQgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIjogXCJkaWFsb2dzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0XCI6IFwiZGlhbG9nc1wiLFxuXG5cdC8qIFNoYXJlZCBTdHJpbmdzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hhcmVkU3RyaW5ncyt4bWxcIjogXCJzdHJzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoYXJlZFN0cmluZ3NcIjogXCJzdHJzXCIsXG5cblx0LyogU3R5bGVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc3R5bGVzK3htbFwiOiBcInN0eWxlc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXNcIjogXCJzdHlsZXNcIixcblxuXHQvKiBGaWxlIFByb3BlcnRpZXMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5jb3JlLXByb3BlcnRpZXMreG1sXCI6IFwiY29yZXByb3BzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmN1c3RvbS1wcm9wZXJ0aWVzK3htbFwiOiBcImN1c3Rwcm9wc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5leHRlbmRlZC1wcm9wZXJ0aWVzK3htbFwiOiBcImV4dHByb3BzXCIsXG5cblx0LyogQ3VzdG9tIERhdGEgUHJvcGVydGllcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5jdXN0b21YbWxQcm9wZXJ0aWVzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5jdXN0b21Qcm9wZXJ0eVwiOiBcIlRPRE9cIixcblxuXHQvKiBDb21tZW50cyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiOiBcImNvbW1lbnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbW1lbnRzXCI6IFwiY29tbWVudHNcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGhyZWFkZWRjb21tZW50cyt4bWxcIjogXCJ0aHJlYWRlZGNvbW1lbnRzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBlcnNvbit4bWxcIjogXCJwZW9wbGVcIixcblxuXHQvKiBNZXRhZGF0YSAoU3RvY2svR2VvZ3JhcGh5IGFuZCBEeW5hbWljIEFycmF5KSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0TWV0YWRhdGEreG1sXCI6IFwibWV0YWRhdGFcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXRNZXRhZGF0YVwiOiBcIm1ldGFkYXRhXCIsXG5cblx0LyogUGl2b3RUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5waXZvdFRhYmxlXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90VGFibGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IE9iamVjdHMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmNoYXJ0K3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDaGFydCBDb2xvcnMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0Y29sb3JzdHlsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ2hhcnQgU3R5bGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmNoYXJ0c3R5bGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIENoYXJ0IEFkdmFuY2VkICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5jaGFydGV4K3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDYWxjdWxhdGlvbiBDaGFpbiAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5jYWxjQ2hhaW5cIjogXCJjYWxjY2hhaW5zXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2FsY0NoYWluK3htbFwiOiBcImNhbGNjaGFpbnNcIixcblxuXHQvKiBQcmludGVyIFNldHRpbmdzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucHJpbnRlclNldHRpbmdzXCI6IFwiVE9ET1wiLFxuXG5cdC8qIEFjdGl2ZVggKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLmFjdGl2ZVhcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS5hY3RpdmVYK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBDdXN0b20gVG9vbGJhcnMgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuYXR0YWNoZWRUb29sYmFyc1wiOiBcIlRPRE9cIixcblxuXHQvKiBFeHRlcm5hbCBEYXRhIENvbm5lY3Rpb25zICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbm5lY3Rpb25zXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbm5lY3Rpb25zK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBFeHRlcm5hbCBMaW5rcyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5leHRlcm5hbExpbmtcIjogXCJsaW5rc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmV4dGVybmFsTGluayt4bWxcIjogXCJsaW5rc1wiLFxuXG5cdC8qIFBpdm90Q2FjaGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucGl2b3RDYWNoZURlZmluaXRpb25cIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnBpdm90Q2FjaGVSZWNvcmRzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnBpdm90Q2FjaGVEZWZpbml0aW9uK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5waXZvdENhY2hlUmVjb3Jkcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogUXVlcnkgVGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwucXVlcnlUYWJsZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5xdWVyeVRhYmxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTaGFyZWQgV29ya2Jvb2sgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudXNlck5hbWVzXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5yZXZpc2lvbkhlYWRlcnNcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnJldmlzaW9uTG9nXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnJldmlzaW9uSGVhZGVycyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwucmV2aXNpb25Mb2creG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnVzZXJOYW1lcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogU2luZ2xlIENlbGwgVGFibGUgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGFibGVTaW5nbGVDZWxsc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZVNpbmdsZUNlbGxzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBTbGljZXIgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zbGljZXJDYWNoZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2xpY2VyQ2FjaGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFNvcnQgTWFwICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLndzU29ydE1hcFwiOiBcIlRPRE9cIixcblxuXHQvKiBUYWJsZSAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC50YWJsZVwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50YWJsZSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogVGhlbWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lK3htbFwiOiBcInRoZW1lc1wiLFxuXG5cdC8qIFRoZW1lIE92ZXJyaWRlICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnRoZW1lT3ZlcnJpZGUreG1sXCI6IFwiVE9ET1wiLFxuXG5cdC8qIFRpbWVsaW5lICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lK3htbFwiOiBcIlRPRE9cIiwgLyogdmVyaWZ5ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlRpbWVsaW5lQ2FjaGUreG1sXCI6IFwiVE9ET1wiLCAvKiB2ZXJpZnkgKi9cblxuXHQvKiBWQkEgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RcIjogXCJ2YmFcIixcblx0XCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RTaWduYXR1cmVcIjogXCJUT0RPXCIsXG5cblx0LyogVm9sYXRpbGUgRGVwZW5kZW5jaWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLW9mZmljZS52b2xhdGlsZURlcGVuZGVuY2llc1wiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC52b2xhdGlsZURlcGVuZGVuY2llcyt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogQ29udHJvbCBQcm9wZXJ0aWVzICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNvbnRyb2xwcm9wZXJ0aWVzK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBEYXRhIE1vZGVsICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50Lm1vZGVsK2RhdGFcIjogXCJUT0RPXCIsXG5cblx0LyogU3VydmV5ICovXG5cdFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLlN1cnZleSt4bWxcIjogXCJUT0RPXCIsXG5cblx0LyogRHJhd2luZyAqL1xuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nK3htbFwiOiBcImRyYXdpbmdzXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5jaGFydHNoYXBlcyt4bWxcIjogXCJUT0RPXCIsXG5cdFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmRyYXdpbmdtbC5kaWFncmFtQ29sb3JzK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1EYXRhK3htbFwiOiBcIlRPRE9cIixcblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuZHJhd2luZ21sLmRpYWdyYW1MYXlvdXQreG1sXCI6IFwiVE9ET1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5kcmF3aW5nbWwuZGlhZ3JhbVN0eWxlK3htbFwiOiBcIlRPRE9cIixcblxuXHQvKiBWTUwgKi9cblx0XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZ1wiOiBcIlRPRE9cIixcblxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLnJlbGF0aW9uc2hpcHMreG1sXCI6IFwicmVsc1wiLFxuXHRcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5vbGVPYmplY3RcIjogXCJUT0RPXCIsXG5cblx0LyogSW1hZ2UgKi9cblx0XCJpbWFnZS9wbmdcIjogXCJUT0RPXCIsXG5cblx0XCJzaGVldFwiOiBcImpzXCJcbn0vKjphbnkqLyk7XG5cbnZhciBDVF9MSVNUID0ge1xuXHRcdHdvcmtib29rczoge1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldC5tYWluK3htbFwiLFxuXHRcdFx0eGxzbTogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuc2hlZXQubWFjcm9FbmFibGVkLm1haW4reG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW5cIixcblx0XHRcdHhsYW06IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmFkZGluLm1hY3JvRW5hYmxlZC5tYWluK3htbFwiLFxuXHRcdFx0eGx0eDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC50ZW1wbGF0ZS5tYWluK3htbFwiXG5cdFx0fSxcblx0XHRzdHJzOiB7IC8qIFNoYXJlZCBTdHJpbmdzICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGFyZWRTdHJpbmdzXCJcblx0XHR9LFxuXHRcdGNvbW1lbnRzOiB7IC8qIENvbW1lbnRzICovXG5cdFx0XHR4bHN4OiBcImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLmNvbW1lbnRzK3htbFwiLFxuXHRcdFx0eGxzYjogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwuY29tbWVudHNcIlxuXHRcdH0sXG5cdFx0c2hlZXRzOiB7IC8qIFdvcmtzaGVldCAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC53b3Jrc2hlZXQreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC53b3Jrc2hlZXRcIlxuXHRcdH0sXG5cdFx0Y2hhcnRzOiB7IC8qIENoYXJ0c2hlZXQgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuY2hhcnRzaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmNoYXJ0c2hlZXRcIlxuXHRcdH0sXG5cdFx0ZGlhbG9nczogeyAvKiBEaWFsb2dzaGVldCAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5kaWFsb2dzaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLmRpYWxvZ3NoZWV0XCJcblx0XHR9LFxuXHRcdG1hY3JvczogeyAvKiBNYWNyb3NoZWV0IChFeGNlbCA0LjAgTWFjcm9zKSAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwubWFjcm9zaGVldCt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLm1hY3Jvc2hlZXRcIlxuXHRcdH0sXG5cdFx0bWV0YWRhdGE6IHsgLyogTWV0YWRhdGEgKFN0b2NrL0dlb2dyYXBoeSBhbmQgRHluYW1pYyBBcnJheSkgKi9cblx0XHRcdHhsc3g6IFwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXRNZXRhZGF0YSt4bWxcIixcblx0XHRcdHhsc2I6IFwiYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0TWV0YWRhdGFcIlxuXHRcdH0sXG5cdFx0c3R5bGVzOiB7IC8qIFN0eWxlcyAqL1xuXHRcdFx0eGxzeDogXCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zdHlsZXMreG1sXCIsXG5cdFx0XHR4bHNiOiBcImFwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zdHlsZXNcIlxuXHRcdH1cbn07XG5cbmZ1bmN0aW9uIG5ld19jdCgpLyo6YW55Ki8ge1xuXHRyZXR1cm4gKHtcblx0XHR3b3JrYm9va3M6W10sIHNoZWV0czpbXSwgY2hhcnRzOltdLCBkaWFsb2dzOltdLCBtYWNyb3M6W10sXG5cdFx0cmVsczpbXSwgc3RyczpbXSwgY29tbWVudHM6W10sIHRocmVhZGVkY29tbWVudHM6W10sIGxpbmtzOltdLFxuXHRcdGNvcmVwcm9wczpbXSwgZXh0cHJvcHM6W10sIGN1c3Rwcm9wczpbXSwgdGhlbWVzOltdLCBzdHlsZXM6W10sXG5cdFx0Y2FsY2NoYWluczpbXSwgdmJhOiBbXSwgZHJhd2luZ3M6IFtdLCBtZXRhZGF0YTogW10sIHBlb3BsZTpbXSxcblx0XHRUT0RPOltdLCB4bWxuczogXCJcIiB9Lyo6YW55Ki8pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jdChkYXRhLyo6P3N0cmluZyovKSB7XG5cdHZhciBjdCA9IG5ld19jdCgpO1xuXHRpZighZGF0YSB8fCAhZGF0YS5tYXRjaCkgcmV0dXJuIGN0O1xuXHR2YXIgY3RleHQgPSB7fTtcblx0KGRhdGEubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXS5yZXBsYWNlKG5zcmVnZXgsXCI8XCIpKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPFR5cGVzJzogY3QueG1sbnMgPSB5Wyd4bWxucycgKyAoeVswXS5tYXRjaCgvPChcXHcrKTovKXx8W1wiXCIsXCJcIl0pWzFdIF07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPERlZmF1bHQnOiBjdGV4dFt5LkV4dGVuc2lvbl0gPSB5LkNvbnRlbnRUeXBlOyBicmVhaztcblx0XHRcdGNhc2UgJzxPdmVycmlkZSc6XG5cdFx0XHRcdGlmKGN0W2N0MnR5cGVbeS5Db250ZW50VHlwZV1dICE9PSB1bmRlZmluZWQpIGN0W2N0MnR5cGVbeS5Db250ZW50VHlwZV1dLnB1c2goeS5QYXJ0TmFtZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cdGlmKGN0LnhtbG5zICE9PSBYTUxOUy5DVCkgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBOYW1lc3BhY2U6IFwiICsgY3QueG1sbnMpO1xuXHRjdC5jYWxjY2hhaW4gPSBjdC5jYWxjY2hhaW5zLmxlbmd0aCA+IDAgPyBjdC5jYWxjY2hhaW5zWzBdIDogXCJcIjtcblx0Y3Quc3N0ID0gY3Quc3Rycy5sZW5ndGggPiAwID8gY3Quc3Ryc1swXSA6IFwiXCI7XG5cdGN0LnN0eWxlID0gY3Quc3R5bGVzLmxlbmd0aCA+IDAgPyBjdC5zdHlsZXNbMF0gOiBcIlwiO1xuXHRjdC5kZWZhdWx0cyA9IGN0ZXh0O1xuXHRkZWxldGUgY3QuY2FsY2NoYWlucztcblx0cmV0dXJuIGN0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jdChjdCwgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciB0eXBlMmN0Lyp7W3N0cmluZ106QXJyYXk8c3RyaW5nPn0qLyA9IGV2ZXJ0X2FycihjdDJ0eXBlKTtcblxuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCB2O1xuXHRvW28ubGVuZ3RoXSA9IChYTUxfSEVBREVSKTtcblx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoJ1R5cGVzJywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TLkNULFxuXHRcdCd4bWxuczp4c2QnOiBYTUxOUy54c2QsXG5cdFx0J3htbG5zOnhzaSc6IFhNTE5TLnhzaVxuXHR9KTtcblxuXHRvID0gby5jb25jYXQoW1xuXHRcdFsneG1sJywgJ2FwcGxpY2F0aW9uL3htbCddLFxuXHRcdFsnYmluJywgJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLm1haW4nXSxcblx0XHRbJ3ZtbCcsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudm1sRHJhd2luZyddLFxuXHRcdFsnZGF0YScsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQubW9kZWwrZGF0YSddLFxuXHRcdC8qIGZyb20gdGVzdCBmaWxlcyAqL1xuXHRcdFsnYm1wJywgJ2ltYWdlL2JtcCddLFxuXHRcdFsncG5nJywgJ2ltYWdlL3BuZyddLFxuXHRcdFsnZ2lmJywgJ2ltYWdlL2dpZiddLFxuXHRcdFsnZW1mJywgJ2ltYWdlL3gtZW1mJ10sXG5cdFx0Wyd3bWYnLCAnaW1hZ2UveC13bWYnXSxcblx0XHRbJ2pwZycsICdpbWFnZS9qcGVnJ10sIFsnanBlZycsICdpbWFnZS9qcGVnJ10sXG5cdFx0Wyd0aWYnLCAnaW1hZ2UvdGlmZiddLCBbJ3RpZmYnLCAnaW1hZ2UvdGlmZiddLFxuXHRcdFsncGRmJywgJ2FwcGxpY2F0aW9uL3BkZiddLFxuXHRcdFsncmVscycsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtcGFja2FnZS5yZWxhdGlvbnNoaXBzK3htbCddXG5cdF0ubWFwKGZ1bmN0aW9uKHgpIHtcblx0XHRyZXR1cm4gd3JpdGV4dGFnKCdEZWZhdWx0JywgbnVsbCwgeydFeHRlbnNpb24nOnhbMF0sICdDb250ZW50VHlwZSc6IHhbMV19KTtcblx0fSkpO1xuXG5cdC8qIG9ubHkgd3JpdGUgZmlyc3QgaW5zdGFuY2UgKi9cblx0dmFyIGYxID0gZnVuY3Rpb24odykge1xuXHRcdGlmKGN0W3ddICYmIGN0W3ddLmxlbmd0aCA+IDApIHtcblx0XHRcdHYgPSBjdFt3XVswXTtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogQ1RfTElTVFt3XVtvcHRzLmJvb2tUeXBlXSB8fCBDVF9MSVNUW3ddWyd4bHN4J11cblx0XHRcdH0pKTtcblx0XHR9XG5cdH07XG5cblx0LyogYm9vayB0eXBlLXNwZWNpZmljICovXG5cdHZhciBmMiA9IGZ1bmN0aW9uKHcpIHtcblx0XHQoY3Rbd118fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogQ1RfTElTVFt3XVtvcHRzLmJvb2tUeXBlXSB8fCBDVF9MSVNUW3ddWyd4bHN4J11cblx0XHRcdH0pKTtcblx0XHR9KTtcblx0fTtcblxuXHQvKiBzdGFuZGFyZCB0eXBlICovXG5cdHZhciBmMyA9IGZ1bmN0aW9uKHQpIHtcblx0XHQoY3RbdF18fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnT3ZlcnJpZGUnLCBudWxsLCB7XG5cdFx0XHRcdCdQYXJ0TmFtZSc6ICh2WzBdID09ICcvJyA/IFwiXCI6XCIvXCIpICsgdixcblx0XHRcdFx0J0NvbnRlbnRUeXBlJzogdHlwZTJjdFt0XVswXVxuXHRcdFx0fSkpO1xuXHRcdH0pO1xuXHR9O1xuXG5cdGYxKCd3b3JrYm9va3MnKTtcblx0ZjIoJ3NoZWV0cycpO1xuXHRmMignY2hhcnRzJyk7XG5cdGYzKCd0aGVtZXMnKTtcblx0WydzdHJzJywgJ3N0eWxlcyddLmZvckVhY2goZjEpO1xuXHRbJ2NvcmVwcm9wcycsICdleHRwcm9wcycsICdjdXN0cHJvcHMnXS5mb3JFYWNoKGYzKTtcblx0ZjMoJ3ZiYScpO1xuXHRmMygnY29tbWVudHMnKTtcblx0ZjMoJ3RocmVhZGVkY29tbWVudHMnKTtcblx0ZjMoJ2RyYXdpbmdzJyk7XG5cdGYyKCdtZXRhZGF0YScpO1xuXHRmMygncGVvcGxlJyk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9UeXBlcz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogOS4zIFJlbGF0aW9uc2hpcHMgKi9cbnZhciBSRUxTID0gKHtcblx0V0I6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9vZmZpY2VEb2N1bWVudFwiLFxuXHRTSEVFVDogXCJodHRwOi8vc2hlZXRqcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50XCIsXG5cdEhMSU5LOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvaHlwZXJsaW5rXCIsXG5cdFZNTDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3ZtbERyYXdpbmdcIixcblx0WFBBVEg6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9leHRlcm5hbExpbmtQYXRoXCIsXG5cdFhNSVNTOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMDYvcmVsYXRpb25zaGlwcy94bEV4dGVybmFsTGlua1BhdGgveGxQYXRoTWlzc2luZ1wiLFxuXHRYTElOSzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVybmFsTGlua1wiLFxuXHRDWE1MOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sXCIsXG5cdENYTUxQOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY3VzdG9tWG1sUHJvcHNcIixcblx0Q01OVDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2NvbW1lbnRzXCIsXG5cdENPUkVfUFJPUFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9yZWxhdGlvbnNoaXBzL21ldGFkYXRhL2NvcmUtcHJvcGVydGllc1wiLFxuXHRFWFRfUFJPUFM6ICdodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXMnLFxuXHRDVVNUX1BST1BTOiAnaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jdXN0b20tcHJvcGVydGllcycsXG5cdFNTVDogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3NcIixcblx0U1RZOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzXCIsXG5cdFRIRU1FOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvdGhlbWVcIixcblx0Q0hBUlQ6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9jaGFydFwiLFxuXHRDSEFSVEVYOiBcImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlLzIwMTQvcmVsYXRpb25zaGlwcy9jaGFydEV4XCIsXG5cdENTOiBcImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvY2hhcnRzaGVldFwiLFxuXHRXUzogW1xuXHRcdFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy93b3Jrc2hlZXRcIixcblx0XHRcImh0dHA6Ly9wdXJsLm9jbGMub3JnL29veG1sL29mZmljZURvY3VtZW50L3JlbGF0aW9uc2hpcHMvd29ya3NoZWV0XCJcblx0XSxcblx0RFM6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kaWFsb2dzaGVldFwiLFxuXHRNUzogXCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS8yMDA2L3JlbGF0aW9uc2hpcHMveGxNYWNyb3NoZWV0XCIsXG5cdElNRzogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2ltYWdlXCIsXG5cdERSQVc6IFwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwcy9kcmF3aW5nXCIsXG5cdFhMTUVUQTogXCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoZWV0TWV0YWRhdGFcIixcblx0VENNTlQ6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3RocmVhZGVkQ29tbWVudFwiLFxuXHRQRU9QTEU6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAxNy8xMC9yZWxhdGlvbnNoaXBzL3BlcnNvblwiLFxuXHRWQkE6IFwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2UvMjAwNi9yZWxhdGlvbnNoaXBzL3ZiYVByb2plY3RcIlxufS8qOmFueSovKTtcblxuXG4vKiA5LjMuMyBSZXByZXNlbnRpbmcgUmVsYXRpb25zaGlwcyAqL1xuZnVuY3Rpb24gZ2V0X3JlbHNfcGF0aChmaWxlLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbiA9IGZpbGUubGFzdEluZGV4T2YoXCIvXCIpO1xuXHRyZXR1cm4gZmlsZS5zbGljZSgwLG4rMSkgKyAnX3JlbHMvJyArIGZpbGUuc2xpY2UobisxKSArIFwiLnJlbHNcIjtcbn1cblxuZnVuY3Rpb24gcGFyc2VfcmVscyhkYXRhLyo6P3N0cmluZyovLCBjdXJyZW50RmlsZVBhdGgvKjpzdHJpbmcqLykge1xuXHR2YXIgcmVscyA9IHtcIiFpZFwiOnt9fTtcblx0aWYgKCFkYXRhKSByZXR1cm4gcmVscztcblx0aWYgKGN1cnJlbnRGaWxlUGF0aC5jaGFyQXQoMCkgIT09ICcvJykge1xuXHRcdGN1cnJlbnRGaWxlUGF0aCA9ICcvJytjdXJyZW50RmlsZVBhdGg7XG5cdH1cblx0dmFyIGhhc2ggPSB7fTtcblxuXHQoZGF0YS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdC8qIDkuMy4yLjIgT1BDX1JlbGF0aW9uc2hpcHMgKi9cblx0XHRpZiAoeVswXSA9PT0gJzxSZWxhdGlvbnNoaXAnKSB7XG5cdFx0XHR2YXIgcmVsID0ge307IHJlbC5UeXBlID0geS5UeXBlOyByZWwuVGFyZ2V0ID0geS5UYXJnZXQ7IHJlbC5JZCA9IHkuSWQ7IGlmKHkuVGFyZ2V0TW9kZSkgcmVsLlRhcmdldE1vZGUgPSB5LlRhcmdldE1vZGU7XG5cdFx0XHR2YXIgY2Fub25pY3RhcmdldCA9IHkuVGFyZ2V0TW9kZSA9PT0gJ0V4dGVybmFsJyA/IHkuVGFyZ2V0IDogcmVzb2x2ZV9wYXRoKHkuVGFyZ2V0LCBjdXJyZW50RmlsZVBhdGgpO1xuXHRcdFx0cmVsc1tjYW5vbmljdGFyZ2V0XSA9IHJlbDtcblx0XHRcdGhhc2hbeS5JZF0gPSByZWw7XG5cdFx0fVxuXHR9KTtcblx0cmVsc1tcIiFpZFwiXSA9IGhhc2g7XG5cdHJldHVybiByZWxzO1xufVxuXG5cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3JlbHMocmVscykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnUmVsYXRpb25zaGlwcycsIG51bGwsIHtcblx0XHQvLyd4bWxuczpuczAnOiBYTUxOUy5SRUxTLFxuXHRcdCd4bWxucyc6IFhNTE5TLlJFTFNcblx0fSldO1xuXHRrZXlzKHJlbHNbJyFpZCddKS5mb3JFYWNoKGZ1bmN0aW9uKHJpZCkge1xuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnUmVsYXRpb25zaGlwJywgbnVsbCwgcmVsc1snIWlkJ11bcmlkXSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L1JlbGF0aW9uc2hpcHM+Jyk7IG9bMV09b1sxXS5yZXBsYWNlKFwiLz5cIixcIj5cIik7IH1cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gYWRkX3JlbHMocmVscywgcklkLyo6bnVtYmVyKi8sIGYsIHR5cGUsIHJlbG9iaiwgdGFyZ2V0bW9kZS8qOj9zdHJpbmcqLykvKjpudW1iZXIqLyB7XG5cdGlmKCFyZWxvYmopIHJlbG9iaiA9IHt9O1xuXHRpZighcmVsc1snIWlkJ10pIHJlbHNbJyFpZCddID0ge307XG5cdGlmKCFyZWxzWychaWR4J10pIHJlbHNbJyFpZHgnXSA9IDE7XG5cdGlmKHJJZCA8IDApIGZvcihySWQgPSByZWxzWychaWR4J107IHJlbHNbJyFpZCddWydySWQnICsgcklkXTsgKytySWQpey8qIGVtcHR5ICovfVxuXHRyZWxzWychaWR4J10gPSBySWQgKyAxO1xuXHRyZWxvYmouSWQgPSAncklkJyArIHJJZDtcblx0cmVsb2JqLlR5cGUgPSB0eXBlO1xuXHRyZWxvYmouVGFyZ2V0ID0gZjtcblx0aWYodGFyZ2V0bW9kZSkgcmVsb2JqLlRhcmdldE1vZGUgPSB0YXJnZXRtb2RlO1xuXHRlbHNlIGlmKFtSRUxTLkhMSU5LLCBSRUxTLlhQQVRILCBSRUxTLlhNSVNTXS5pbmRleE9mKHJlbG9iai5UeXBlKSA+IC0xKSByZWxvYmouVGFyZ2V0TW9kZSA9IFwiRXh0ZXJuYWxcIjtcblx0aWYocmVsc1snIWlkJ11bcmVsb2JqLklkXSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHJld3JpdGUgcklkIFwiICsgcklkKTtcblx0cmVsc1snIWlkJ11bcmVsb2JqLklkXSA9IHJlbG9iajtcblx0cmVsc1soJy8nICsgcmVsb2JqLlRhcmdldCkucmVwbGFjZShcIi8vXCIsXCIvXCIpXSA9IHJlbG9iajtcblx0cmV0dXJuIHJJZDtcbn1cbi8qIE9wZW4gRG9jdW1lbnQgRm9ybWF0IGZvciBPZmZpY2UgQXBwbGljYXRpb25zIChPcGVuRG9jdW1lbnQpIFZlcnNpb24gMS4yICovXG4vKiBQYXJ0IDMgU2VjdGlvbiA0IE1hbmlmZXN0IEZpbGUgKi9cbnZhciBDVF9PRFMgPSBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIjtcbmZ1bmN0aW9uIHBhcnNlX21hbmlmZXN0KGQsIG9wdHMpIHtcblx0dmFyIHN0ciA9IHhsbWxfbm9ybWFsaXplKGQpO1xuXHR2YXIgUm47XG5cdHZhciBGRXRhZztcblx0d2hpbGUoKFJuID0geGxtbHJlZ2V4LmV4ZWMoc3RyKSkpIHN3aXRjaChSblszXSkge1xuXHRcdGNhc2UgJ21hbmlmZXN0JzogYnJlYWs7IC8vIDQuMiA8bWFuaWZlc3Q6bWFuaWZlc3Q+XG5cdFx0Y2FzZSAnZmlsZS1lbnRyeSc6IC8vIDQuMyA8bWFuaWZlc3Q6ZmlsZS1lbnRyeT5cblx0XHRcdEZFdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdGlmKEZFdGFnLnBhdGggPT0gJy8nICYmIEZFdGFnLnR5cGUgIT09IENUX09EUykgdGhyb3cgbmV3IEVycm9yKFwiVGhpcyBPcGVuRG9jdW1lbnQgaXMgbm90IGEgc3ByZWFkc2hlZXRcIik7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdlbmNyeXB0aW9uLWRhdGEnOiAvLyA0LjQgPG1hbmlmZXN0OmVuY3J5cHRpb24tZGF0YT5cblx0XHRjYXNlICdhbGdvcml0aG0nOiAvLyA0LjUgPG1hbmlmZXN0OmFsZ29yaXRobT5cblx0XHRjYXNlICdzdGFydC1rZXktZ2VuZXJhdGlvbic6IC8vIDQuNiA8bWFuaWZlc3Q6c3RhcnQta2V5LWdlbmVyYXRpb24+XG5cdFx0Y2FzZSAna2V5LWRlcml2YXRpb24nOiAvLyA0LjcgPG1hbmlmZXN0OmtleS1kZXJpdmF0aW9uPlxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgT0RTIEVuY3J5cHRpb25cIik7XG5cdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgUm47XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfbWFuaWZlc3QobWFuaWZlc3QvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvLnB1c2goJzxtYW5pZmVzdDptYW5pZmVzdCB4bWxuczptYW5pZmVzdD1cInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWFuaWZlc3Q6MS4wXCIgbWFuaWZlc3Q6dmVyc2lvbj1cIjEuMlwiPlxcbicpO1xuXHRvLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPVwiL1wiIG1hbmlmZXN0OnZlcnNpb249XCIxLjJcIiBtYW5pZmVzdDptZWRpYS10eXBlPVwiYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldFwiLz5cXG4nKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG1hbmlmZXN0Lmxlbmd0aDsgKytpKSBvLnB1c2goJyAgPG1hbmlmZXN0OmZpbGUtZW50cnkgbWFuaWZlc3Q6ZnVsbC1wYXRoPVwiJyArIG1hbmlmZXN0W2ldWzBdICsgJ1wiIG1hbmlmZXN0Om1lZGlhLXR5cGU9XCInICsgbWFuaWZlc3RbaV1bMV0gKyAnXCIvPlxcbicpO1xuXHRvLnB1c2goJzwvbWFuaWZlc3Q6bWFuaWZlc3Q+Jyk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFBhcnQgMyBTZWN0aW9uIDYgTWV0YWRhdGEgTWFuaWZlc3QgRmlsZSAqL1xuZnVuY3Rpb24gd3JpdGVfcmRmX3R5cGUoZmlsZS8qOnN0cmluZyovLCByZXMvKjpzdHJpbmcqLywgdGFnLyo6P3N0cmluZyovKSB7XG5cdHJldHVybiBbXG5cdFx0JyAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9XCInICsgZmlsZSArICdcIj5cXG4nLFxuXHRcdCcgICAgPHJkZjp0eXBlIHJkZjpyZXNvdXJjZT1cImh0dHA6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL25zL29mZmljZS8xLjIvbWV0YS8nICsgKHRhZyB8fCBcIm9kZlwiKSArICcjJyArIHJlcyArICdcIi8+XFxuJyxcblx0XHQnICA8L3JkZjpEZXNjcmlwdGlvbj5cXG4nXG5cdF0uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3JkZl9oYXMoYmFzZS8qOnN0cmluZyovLCBmaWxlLyo6c3RyaW5nKi8pIHtcblx0cmV0dXJuIFtcblx0XHQnICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD1cIicgKyBiYXNlICsgJ1wiPlxcbicsXG5cdFx0JyAgICA8bnMwOmhhc1BhcnQgeG1sbnM6bnMwPVwiaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvbnMvb2ZmaWNlLzEuMi9tZXRhL3BrZyNcIiByZGY6cmVzb3VyY2U9XCInICsgZmlsZSArICdcIi8+XFxuJyxcblx0XHQnICA8L3JkZjpEZXNjcmlwdGlvbj5cXG4nXG5cdF0uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3JkZihyZGYpIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUl07XG5cdG8ucHVzaCgnPHJkZjpSREYgeG1sbnM6cmRmPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zI1wiPlxcbicpO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHJkZi5sZW5ndGg7ICsraSkge1xuXHRcdG8ucHVzaCh3cml0ZV9yZGZfdHlwZShyZGZbaV1bMF0sIHJkZltpXVsxXSkpO1xuXHRcdG8ucHVzaCh3cml0ZV9yZGZfaGFzKFwiXCIscmRmW2ldWzBdKSk7XG5cdH1cblx0by5wdXNoKHdyaXRlX3JkZl90eXBlKFwiXCIsXCJEb2N1bWVudFwiLCBcInBrZ1wiKSk7XG5cdG8ucHVzaCgnPC9yZGY6UkRGPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogVE9ETzogcHVsbCBwcm9wZXJ0aWVzICovXG5mdW5jdGlvbiB3cml0ZV9tZXRhX29kcygvKjo6IHdiOiBXb3JrYm9vaywgb3B0czogYW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gJzxvZmZpY2U6ZG9jdW1lbnQtbWV0YSB4bWxuczpvZmZpY2U9XCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mZmljZToxLjBcIiB4bWxuczptZXRhPVwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczptZXRhOjEuMFwiIHhtbG5zOmRjPVwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiBvZmZpY2U6dmVyc2lvbj1cIjEuMlwiPjxvZmZpY2U6bWV0YT48bWV0YTpnZW5lcmF0b3I+U2hlZXQnICsgJ0pTICcgKyBYTFNYLnZlcnNpb24gKyAnPC9tZXRhOmdlbmVyYXRvcj48L29mZmljZTptZXRhPjwvb2ZmaWNlOmRvY3VtZW50LW1ldGE+Jztcbn1cblxuLyogRUNNQS0zNzYgUGFydCBJSSAxMS4xIENvcmUgUHJvcGVydGllcyBQYXJ0ICovXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMi5bMS0yXS4xIChQSURTSS9QSUREU0kpICovXG52YXIgQ09SRV9QUk9QUy8qOkFycmF5PEFycmF5PHN0cmluZz4gPiovID0gW1xuXHRbXCJjcDpjYXRlZ29yeVwiLCBcIkNhdGVnb3J5XCJdLFxuXHRbXCJjcDpjb250ZW50U3RhdHVzXCIsIFwiQ29udGVudFN0YXR1c1wiXSxcblx0W1wiY3A6a2V5d29yZHNcIiwgXCJLZXl3b3Jkc1wiXSxcblx0W1wiY3A6bGFzdE1vZGlmaWVkQnlcIiwgXCJMYXN0QXV0aG9yXCJdLFxuXHRbXCJjcDpsYXN0UHJpbnRlZFwiLCBcIkxhc3RQcmludGVkXCJdLFxuXHRbXCJjcDpyZXZpc2lvblwiLCBcIlJldk51bWJlclwiXSxcblx0W1wiY3A6dmVyc2lvblwiLCBcIlZlcnNpb25cIl0sXG5cdFtcImRjOmNyZWF0b3JcIiwgXCJBdXRob3JcIl0sXG5cdFtcImRjOmRlc2NyaXB0aW9uXCIsIFwiQ29tbWVudHNcIl0sXG5cdFtcImRjOmlkZW50aWZpZXJcIiwgXCJJZGVudGlmaWVyXCJdLFxuXHRbXCJkYzpsYW5ndWFnZVwiLCBcIkxhbmd1YWdlXCJdLFxuXHRbXCJkYzpzdWJqZWN0XCIsIFwiU3ViamVjdFwiXSxcblx0W1wiZGM6dGl0bGVcIiwgXCJUaXRsZVwiXSxcblx0W1wiZGN0ZXJtczpjcmVhdGVkXCIsIFwiQ3JlYXRlZERhdGVcIiwgJ2RhdGUnXSxcblx0W1wiZGN0ZXJtczptb2RpZmllZFwiLCBcIk1vZGlmaWVkRGF0ZVwiLCAnZGF0ZSddXG5dO1xuXG52YXIgQ09SRV9QUk9QU19SRUdFWC8qOkFycmF5PFJlZ0V4cD4qLyA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdHZhciByID0gbmV3IEFycmF5KENPUkVfUFJPUFMubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZiA9IENPUkVfUFJPUFNbaV07XG5cdFx0dmFyIGcgPSBcIig/OlwiKyBmWzBdLnNsaWNlKDAsZlswXS5pbmRleE9mKFwiOlwiKSkgK1wiOilcIisgZlswXS5zbGljZShmWzBdLmluZGV4T2YoXCI6XCIpKzEpO1xuXHRcdHJbaV0gPSBuZXcgUmVnRXhwKFwiPFwiICsgZyArIFwiW14+XSo+KFtcXFxcc1xcXFxTXSo/KTxcXC9cIiArIGcgKyBcIj5cIik7XG5cdH1cblx0cmV0dXJuIHI7XG59KSgpO1xuXG5mdW5jdGlvbiBwYXJzZV9jb3JlX3Byb3BzKGRhdGEpIHtcblx0dmFyIHAgPSB7fTtcblx0ZGF0YSA9IHV0ZjhyZWFkKGRhdGEpO1xuXG5cdGZvcih2YXIgaSA9IDA7IGkgPCBDT1JFX1BST1BTLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIGYgPSBDT1JFX1BST1BTW2ldLCBjdXIgPSBkYXRhLm1hdGNoKENPUkVfUFJPUFNfUkVHRVhbaV0pO1xuXHRcdGlmKGN1ciAhPSBudWxsICYmIGN1ci5sZW5ndGggPiAwKSBwW2ZbMV1dID0gdW5lc2NhcGV4bWwoY3VyWzFdKTtcblx0XHRpZihmWzJdID09PSAnZGF0ZScgJiYgcFtmWzFdXSkgcFtmWzFdXSA9IHBhcnNlRGF0ZShwW2ZbMV1dKTtcblx0fVxuXG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiBjcF9kb2l0KGYsIGcsIGgsIG8sIHApIHtcblx0aWYocFtmXSAhPSBudWxsIHx8IGcgPT0gbnVsbCB8fCBnID09PSBcIlwiKSByZXR1cm47XG5cdHBbZl0gPSBnO1xuXHRnID0gZXNjYXBleG1sKGcpO1xuXHRvW28ubGVuZ3RoXSA9IChoID8gd3JpdGV4dGFnKGYsZyxoKSA6IHdyaXRldGFnKGYsZykpO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jb3JlX3Byb3BzKGNwLCBfb3B0cykge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ2NwOmNvcmVQcm9wZXJ0aWVzJywgbnVsbCwge1xuXHRcdC8vJ3htbG5zJzogWE1MTlMuQ09SRV9QUk9QUyxcblx0XHQneG1sbnM6Y3AnOiBYTUxOUy5DT1JFX1BST1BTLFxuXHRcdCd4bWxuczpkYyc6IFhNTE5TLmRjLFxuXHRcdCd4bWxuczpkY3Rlcm1zJzogWE1MTlMuZGN0ZXJtcyxcblx0XHQneG1sbnM6ZGNtaXR5cGUnOiBYTUxOUy5kY21pdHlwZSxcblx0XHQneG1sbnM6eHNpJzogWE1MTlMueHNpXG5cdH0pXSwgcCA9IHt9O1xuXHRpZighY3AgJiYgIW9wdHMuUHJvcHMpIHJldHVybiBvLmpvaW4oXCJcIik7XG5cblx0aWYoY3ApIHtcblx0XHRpZihjcC5DcmVhdGVkRGF0ZSAhPSBudWxsKSBjcF9kb2l0KFwiZGN0ZXJtczpjcmVhdGVkXCIsIHR5cGVvZiBjcC5DcmVhdGVkRGF0ZSA9PT0gXCJzdHJpbmdcIiA/IGNwLkNyZWF0ZWREYXRlIDogd3JpdGVfdzNjZHRmKGNwLkNyZWF0ZWREYXRlLCBvcHRzLldURiksIHtcInhzaTp0eXBlXCI6XCJkY3Rlcm1zOlczQ0RURlwifSwgbywgcCk7XG5cdFx0aWYoY3AuTW9kaWZpZWREYXRlICE9IG51bGwpIGNwX2RvaXQoXCJkY3Rlcm1zOm1vZGlmaWVkXCIsIHR5cGVvZiBjcC5Nb2RpZmllZERhdGUgPT09IFwic3RyaW5nXCIgPyBjcC5Nb2RpZmllZERhdGUgOiB3cml0ZV93M2NkdGYoY3AuTW9kaWZpZWREYXRlLCBvcHRzLldURiksIHtcInhzaTp0eXBlXCI6XCJkY3Rlcm1zOlczQ0RURlwifSwgbywgcCk7XG5cdH1cblxuXHRmb3IodmFyIGkgPSAwOyBpICE9IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgZiA9IENPUkVfUFJPUFNbaV07XG5cdFx0dmFyIHYgPSBvcHRzLlByb3BzICYmIG9wdHMuUHJvcHNbZlsxXV0gIT0gbnVsbCA/IG9wdHMuUHJvcHNbZlsxXV0gOiBjcCA/IGNwW2ZbMV1dIDogbnVsbDtcblx0XHRpZih2ID09PSB0cnVlKSB2ID0gXCIxXCI7XG5cdFx0ZWxzZSBpZih2ID09PSBmYWxzZSkgdiA9IFwiMFwiO1xuXHRcdGVsc2UgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIikgdiA9IFN0cmluZyh2KTtcblx0XHRpZih2ICE9IG51bGwpIGNwX2RvaXQoZlswXSwgdiwgbnVsbCwgbywgcCk7XG5cdH1cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L2NwOmNvcmVQcm9wZXJ0aWVzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiAxNS4yLjEyLjMgRXh0ZW5kZWQgRmlsZSBQcm9wZXJ0aWVzIFBhcnQgKi9cbi8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLlsxLTJdLjEgKFBJRFNJL1BJRERTSSkgKi9cbnZhciBFWFRfUFJPUFMvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtcblx0W1wiQXBwbGljYXRpb25cIiwgXCJBcHBsaWNhdGlvblwiLCBcInN0cmluZ1wiXSxcblx0W1wiQXBwVmVyc2lvblwiLCBcIkFwcFZlcnNpb25cIiwgXCJzdHJpbmdcIl0sXG5cdFtcIkNvbXBhbnlcIiwgXCJDb21wYW55XCIsIFwic3RyaW5nXCJdLFxuXHRbXCJEb2NTZWN1cml0eVwiLCBcIkRvY1NlY3VyaXR5XCIsIFwic3RyaW5nXCJdLFxuXHRbXCJNYW5hZ2VyXCIsIFwiTWFuYWdlclwiLCBcInN0cmluZ1wiXSxcblx0W1wiSHlwZXJsaW5rc0NoYW5nZWRcIiwgXCJIeXBlcmxpbmtzQ2hhbmdlZFwiLCBcImJvb2xcIl0sXG5cdFtcIlNoYXJlZERvY1wiLCBcIlNoYXJlZERvY1wiLCBcImJvb2xcIl0sXG5cdFtcIkxpbmtzVXBUb0RhdGVcIiwgXCJMaW5rc1VwVG9EYXRlXCIsIFwiYm9vbFwiXSxcblx0W1wiU2NhbGVDcm9wXCIsIFwiU2NhbGVDcm9wXCIsIFwiYm9vbFwiXSxcblx0W1wiSGVhZGluZ1BhaXJzXCIsIFwiSGVhZGluZ1BhaXJzXCIsIFwicmF3XCJdLFxuXHRbXCJUaXRsZXNPZlBhcnRzXCIsIFwiVGl0bGVzT2ZQYXJ0c1wiLCBcInJhd1wiXVxuXTtcblxudmFyIFBzZXVkb1Byb3BzUGFpcnMgPSBbXG5cdFwiV29ya3NoZWV0c1wiLCAgXCJTaGVldE5hbWVzXCIsXG5cdFwiTmFtZWRSYW5nZXNcIiwgXCJEZWZpbmVkTmFtZXNcIixcblx0XCJDaGFydHNoZWV0c1wiLCBcIkNoYXJ0TmFtZXNcIlxuXTtcbmZ1bmN0aW9uIGxvYWRfcHJvcHNfcGFpcnMoSFAvKjpzdHJpbmd8QXJyYXk8QXJyYXk8YW55Pj4qLywgVE9QLCBwcm9wcywgb3B0cykge1xuXHR2YXIgdiA9IFtdO1xuXHRpZih0eXBlb2YgSFAgPT0gXCJzdHJpbmdcIikgdiA9IHBhcnNlVmVjdG9yKEhQLCBvcHRzKTtcblx0ZWxzZSBmb3IodmFyIGogPSAwOyBqIDwgSFAubGVuZ3RoOyArK2opIHYgPSB2LmNvbmNhdChIUFtqXS5tYXAoZnVuY3Rpb24oaHApIHsgcmV0dXJuIHt2OmhwfTsgfSkpO1xuXHR2YXIgcGFydHMgPSAodHlwZW9mIFRPUCA9PSBcInN0cmluZ1wiKSA/IHBhcnNlVmVjdG9yKFRPUCwgb3B0cykubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnY7IH0pIDogVE9QO1xuXHR2YXIgaWR4ID0gMCwgbGVuID0gMDtcblx0aWYocGFydHMubGVuZ3RoID4gMCkgZm9yKHZhciBpID0gMDsgaSAhPT0gdi5sZW5ndGg7IGkgKz0gMikge1xuXHRcdGxlbiA9ICsodltpKzFdLnYpO1xuXHRcdHN3aXRjaCh2W2ldLnYpIHtcblx0XHRcdGNhc2UgXCJXb3Jrc2hlZXRzXCI6XG5cdFx0XHRjYXNlIFwi5bel5L2c6KGoXCI6XG5cdFx0XHRjYXNlIFwi0JvQuNGB0YLRi1wiOlxuXHRcdFx0Y2FzZSBcItij2YjYsdin2YIg2KfZhNi52YXZhFwiOlxuXHRcdFx0Y2FzZSBcIuODr+ODvOOCr+OCt+ODvOODiFwiOlxuXHRcdFx0Y2FzZSBcIteS15zXmdeV16DXldeqINei15HXldeT15RcIjpcblx0XHRcdGNhc2UgXCJBcmJlaXRzYmzDpHR0ZXJcIjpcblx0XHRcdGNhc2UgXCLDh2FsxLHFn21hIFNheWZhbGFyxLFcIjpcblx0XHRcdGNhc2UgXCJGZXVpbGxlcyBkZSBjYWxjdWxcIjpcblx0XHRcdGNhc2UgXCJGb2dsaSBkaSBsYXZvcm9cIjpcblx0XHRcdGNhc2UgXCJGb2xoYXMgZGUgY8OhbGN1bG9cIjpcblx0XHRcdGNhc2UgXCJQbGFuaWxoYXNcIjpcblx0XHRcdGNhc2UgXCJSZWduZWFya1wiOlxuXHRcdFx0Y2FzZSBcIkhvamFzIGRlIGPDoWxjdWxvXCI6XG5cdFx0XHRjYXNlIFwiV2Vya2JsYWRlblwiOlxuXHRcdFx0XHRwcm9wcy5Xb3Jrc2hlZXRzID0gbGVuO1xuXHRcdFx0XHRwcm9wcy5TaGVldE5hbWVzID0gcGFydHMuc2xpY2UoaWR4LCBpZHggKyBsZW4pO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSBcIk5hbWVkIFJhbmdlc1wiOlxuXHRcdFx0Y2FzZSBcIlJhbmdvcyBjb24gbm9tYnJlXCI6XG5cdFx0XHRjYXNlIFwi5ZCN5YmN5LuY44GN5LiA6KanXCI6XG5cdFx0XHRjYXNlIFwiQmVuYW5udGUgQmVyZWljaGVcIjpcblx0XHRcdGNhc2UgXCJOYXZuZ2l2bmUgb21yw6VkZXJcIjpcblx0XHRcdFx0cHJvcHMuTmFtZWRSYW5nZXMgPSBsZW47XG5cdFx0XHRcdHByb3BzLkRlZmluZWROYW1lcyA9IHBhcnRzLnNsaWNlKGlkeCwgaWR4ICsgbGVuKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgXCJDaGFydHNcIjpcblx0XHRcdGNhc2UgXCJEaWFncmFtbWVcIjpcblx0XHRcdFx0cHJvcHMuQ2hhcnRzaGVldHMgPSBsZW47XG5cdFx0XHRcdHByb3BzLkNoYXJ0TmFtZXMgPSBwYXJ0cy5zbGljZShpZHgsIGlkeCArIGxlbik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZHggKz0gbGVuO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2V4dF9wcm9wcyhkYXRhLCBwLCBvcHRzKSB7XG5cdHZhciBxID0ge307IGlmKCFwKSBwID0ge307XG5cdGRhdGEgPSB1dGY4cmVhZChkYXRhKTtcblxuXHRFWFRfUFJPUFMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG5cdFx0dmFyIHhtbCA9IChkYXRhLm1hdGNoKG1hdGNodGFnKGZbMF0pKXx8W10pWzFdO1xuXHRcdHN3aXRjaChmWzJdKSB7XG5cdFx0XHRjYXNlIFwic3RyaW5nXCI6IGlmKHhtbCkgcFtmWzFdXSA9IHVuZXNjYXBleG1sKHhtbCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImJvb2xcIjogcFtmWzFdXSA9IHhtbCA9PT0gXCJ0cnVlXCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcInJhd1wiOlxuXHRcdFx0XHR2YXIgY3VyID0gZGF0YS5tYXRjaChuZXcgUmVnRXhwKFwiPFwiICsgZlswXSArIFwiW14+XSo+KFtcXFxcc1xcXFxTXSo/KTxcXC9cIiArIGZbMF0gKyBcIj5cIikpO1xuXHRcdFx0XHRpZihjdXIgJiYgY3VyLmxlbmd0aCA+IDApIHFbZlsxXV0gPSBjdXJbMV07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cblx0aWYocS5IZWFkaW5nUGFpcnMgJiYgcS5UaXRsZXNPZlBhcnRzKSBsb2FkX3Byb3BzX3BhaXJzKHEuSGVhZGluZ1BhaXJzLCBxLlRpdGxlc09mUGFydHMsIHAsIG9wdHMpO1xuXG5cdHJldHVybiBwO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9leHRfcHJvcHMoY3AvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBXID0gd3JpdGV4dGFnO1xuXHRpZighY3ApIGNwID0ge307XG5cdGNwLkFwcGxpY2F0aW9uID0gXCJTaGVldEpTXCI7XG5cdG9bby5sZW5ndGhdID0gKFhNTF9IRUFERVIpO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ1Byb3BlcnRpZXMnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuRVhUX1BST1BTLFxuXHRcdCd4bWxuczp2dCc6IFhNTE5TLnZ0XG5cdH0pKTtcblxuXHRFWFRfUFJPUFMuZm9yRWFjaChmdW5jdGlvbihmKSB7XG5cdFx0aWYoY3BbZlsxXV0gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXHRcdHZhciB2O1xuXHRcdHN3aXRjaChmWzJdKSB7XG5cdFx0XHRjYXNlICdzdHJpbmcnOiB2ID0gZXNjYXBleG1sKFN0cmluZyhjcFtmWzFdXSkpOyBicmVhaztcblx0XHRcdGNhc2UgJ2Jvb2wnOiB2ID0gY3BbZlsxXV0gPyAndHJ1ZScgOiAnZmFsc2UnOyBicmVhaztcblx0XHR9XG5cdFx0aWYodiAhPT0gdW5kZWZpbmVkKSBvW28ubGVuZ3RoXSA9IChXKGZbMF0sIHYpKTtcblx0fSk7XG5cblx0LyogVE9ETzogSGVhZGluZ1BhaXJzLCBUaXRsZXNPZlBhcnRzICovXG5cdG9bby5sZW5ndGhdID0gKFcoJ0hlYWRpbmdQYWlycycsIFcoJ3Z0OnZlY3RvcicsIFcoJ3Z0OnZhcmlhbnQnLCAnPHZ0Omxwc3RyPldvcmtzaGVldHM8L3Z0Omxwc3RyPicpK1coJ3Z0OnZhcmlhbnQnLCBXKCd2dDppNCcsIFN0cmluZyhjcC5Xb3Jrc2hlZXRzKSkpLCB7c2l6ZToyLCBiYXNlVHlwZTpcInZhcmlhbnRcIn0pKSk7XG5cdG9bby5sZW5ndGhdID0gKFcoJ1RpdGxlc09mUGFydHMnLCBXKCd2dDp2ZWN0b3InLCBjcC5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihzKSB7IHJldHVybiBcIjx2dDpscHN0cj5cIiArIGVzY2FwZXhtbChzKSArIFwiPC92dDpscHN0cj5cIjsgfSkuam9pbihcIlwiKSwge3NpemU6IGNwLldvcmtzaGVldHMsIGJhc2VUeXBlOlwibHBzdHJcIn0pKSk7XG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9Qcm9wZXJ0aWVzPicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiAxNS4yLjEyLjIgQ3VzdG9tIEZpbGUgUHJvcGVydGllcyBQYXJ0ICovXG52YXIgY3VzdHJlZ2V4ID0gLzxbXj5dKz5bXjxdKi9nO1xuZnVuY3Rpb24gcGFyc2VfY3VzdF9wcm9wcyhkYXRhLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0dmFyIHAgPSB7fSwgbmFtZSA9IFwiXCI7XG5cdHZhciBtID0gZGF0YS5tYXRjaChjdXN0cmVnZXgpO1xuXHRpZihtKSBmb3IodmFyIGkgPSAwOyBpICE9IG0ubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgeCA9IG1baV0sIHkgPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goeVswXSkge1xuXHRcdFx0Y2FzZSAnPD94bWwnOiBicmVhaztcblx0XHRcdGNhc2UgJzxQcm9wZXJ0aWVzJzogYnJlYWs7XG5cdFx0XHRjYXNlICc8cHJvcGVydHknOiBuYW1lID0gdW5lc2NhcGV4bWwoeS5uYW1lKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3Byb3BlcnR5Pic6IG5hbWUgPSBudWxsOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmICh4LmluZGV4T2YoJzx2dDonKSA9PT0gMCkge1xuXHRcdFx0XHR2YXIgdG9rcyA9IHguc3BsaXQoJz4nKTtcblx0XHRcdFx0dmFyIHR5cGUgPSB0b2tzWzBdLnNsaWNlKDQpLCB0ZXh0ID0gdG9rc1sxXTtcblx0XHRcdFx0LyogMjIuNC4yLjMyIChDVF9WYXJpYW50KS4gT21pdCB0aGUgYmluYXJ5IHR5cGVzIGZyb20gMjIuNCAoVmFyaWFudCBUeXBlcykgKi9cblx0XHRcdFx0c3dpdGNoKHR5cGUpIHtcblx0XHRcdFx0XHRjYXNlICdscHN0cic6IGNhc2UgJ2JzdHInOiBjYXNlICdscHdzdHInOlxuXHRcdFx0XHRcdFx0cFtuYW1lXSA9IHVuZXNjYXBleG1sKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYm9vbCc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2V4bWxib29sKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaTEnOiBjYXNlICdpMic6IGNhc2UgJ2k0JzogY2FzZSAnaTgnOiBjYXNlICdpbnQnOiBjYXNlICd1aW50Jzpcblx0XHRcdFx0XHRcdHBbbmFtZV0gPSBwYXJzZUludCh0ZXh0LCAxMCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdyNCc6IGNhc2UgJ3I4JzogY2FzZSAnZGVjaW1hbCc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2VGbG9hdCh0ZXh0KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbGV0aW1lJzogY2FzZSAnZGF0ZSc6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gcGFyc2VEYXRlKHRleHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY3knOiBjYXNlICdlcnJvcic6XG5cdFx0XHRcdFx0XHRwW25hbWVdID0gdW5lc2NhcGV4bWwodGV4dCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0aWYodHlwZS5zbGljZSgtMSkgPT0gJy8nKSBicmVhaztcblx0XHRcdFx0XHRcdGlmKG9wdHMuV1RGICYmIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykgY29uc29sZS53YXJuKCdVbmV4cGVjdGVkJywgeCwgdHlwZSwgdG9rcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZih4LnNsaWNlKDAsMikgPT09IFwiPC9cIikgey8qIGVtcHR5ICovXG5cdFx0XHR9IGVsc2UgaWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcih4KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHA7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2N1c3RfcHJvcHMoY3AvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ1Byb3BlcnRpZXMnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlMuQ1VTVF9QUk9QUyxcblx0XHQneG1sbnM6dnQnOiBYTUxOUy52dFxuXHR9KV07XG5cdGlmKCFjcCkgcmV0dXJuIG8uam9pbihcIlwiKTtcblx0dmFyIHBpZCA9IDE7XG5cdGtleXMoY3ApLmZvckVhY2goZnVuY3Rpb24gY3VzdHByb3AoaykgeyArK3BpZDtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3Byb3BlcnR5Jywgd3JpdGVfdnQoY3Bba10sIHRydWUpLCB7XG5cdFx0XHQnZm10aWQnOiAne0Q1Q0RENTA1LTJFOUMtMTAxQi05Mzk3LTA4MDAyQjJDRjlBRX0nLFxuXHRcdFx0J3BpZCc6IHBpZCxcblx0XHRcdCduYW1lJzogZXNjYXBleG1sKGspXG5cdFx0fSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gJzwvUHJvcGVydGllcz4nOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBDb21tb24gTmFtZSAtPiBYTE1MIE5hbWUgKi9cbnZhciBYTE1MRG9jUHJvcHNNYXAgPSB7XG5cdFRpdGxlOiAnVGl0bGUnLFxuXHRTdWJqZWN0OiAnU3ViamVjdCcsXG5cdEF1dGhvcjogJ0F1dGhvcicsXG5cdEtleXdvcmRzOiAnS2V5d29yZHMnLFxuXHRDb21tZW50czogJ0Rlc2NyaXB0aW9uJyxcblx0TGFzdEF1dGhvcjogJ0xhc3RBdXRob3InLFxuXHRSZXZOdW1iZXI6ICdSZXZpc2lvbicsXG5cdEFwcGxpY2F0aW9uOiAnQXBwTmFtZScsXG5cdC8qIFRvdGFsVGltZTogJ1RvdGFsVGltZScsICovXG5cdExhc3RQcmludGVkOiAnTGFzdFByaW50ZWQnLFxuXHRDcmVhdGVkRGF0ZTogJ0NyZWF0ZWQnLFxuXHRNb2RpZmllZERhdGU6ICdMYXN0U2F2ZWQnLFxuXHQvKiBQYWdlcyAqL1xuXHQvKiBXb3JkcyAqL1xuXHQvKiBDaGFyYWN0ZXJzICovXG5cdENhdGVnb3J5OiAnQ2F0ZWdvcnknLFxuXHQvKiBQcmVzZW50YXRpb25Gb3JtYXQgKi9cblx0TWFuYWdlcjogJ01hbmFnZXInLFxuXHRDb21wYW55OiAnQ29tcGFueScsXG5cdC8qIEd1aWQgKi9cblx0LyogSHlwZXJsaW5rQmFzZSAqL1xuXHQvKiBCeXRlcyAqL1xuXHQvKiBMaW5lcyAqL1xuXHQvKiBQYXJhZ3JhcGhzICovXG5cdC8qIENoYXJhY3RlcnNXaXRoU3BhY2VzICovXG5cdEFwcFZlcnNpb246ICdWZXJzaW9uJyxcblxuXHRDb250ZW50U3RhdHVzOiAnQ29udGVudFN0YXR1cycsIC8qIE5PVEU6IG1pc3NpbmcgZnJvbSBzY2hlbWEgKi9cblx0SWRlbnRpZmllcjogJ0lkZW50aWZpZXInLCAvKiBOT1RFOiBtaXNzaW5nIGZyb20gc2NoZW1hICovXG5cdExhbmd1YWdlOiAnTGFuZ3VhZ2UnIC8qIE5PVEU6IG1pc3NpbmcgZnJvbSBzY2hlbWEgKi9cbn07XG52YXIgZXZlcnRfWExNTERQTTtcblxuZnVuY3Rpb24geGxtbF9zZXRfcHJvcChQcm9wcywgdGFnLyo6c3RyaW5nKi8sIHZhbCkge1xuXHRpZighZXZlcnRfWExNTERQTSkgZXZlcnRfWExNTERQTSA9IGV2ZXJ0KFhMTUxEb2NQcm9wc01hcCk7XG5cdHRhZyA9IGV2ZXJ0X1hMTUxEUE1bdGFnXSB8fCB0YWc7XG5cdFByb3BzW3RhZ10gPSB2YWw7XG59XG5cbmZ1bmN0aW9uIHhsbWxfd3JpdGVfZG9jcHJvcHMoUHJvcHMsIG9wdHMpIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0a2V5cyhYTE1MRG9jUHJvcHNNYXApLm1hcChmdW5jdGlvbihtKSB7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIGlmKENPUkVfUFJPUFNbaV1bMV0gPT0gbSkgcmV0dXJuIENPUkVfUFJPUFNbaV07XG5cdFx0Zm9yKGkgPSAwOyBpIDwgRVhUX1BST1BTLmxlbmd0aDsgKytpKSBpZihFWFRfUFJPUFNbaV1bMV0gPT0gbSkgcmV0dXJuIEVYVF9QUk9QU1tpXTtcblx0XHR0aHJvdyBtO1xuXHR9KS5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcblx0XHRpZihQcm9wc1twWzFdXSA9PSBudWxsKSByZXR1cm47XG5cdFx0dmFyIG0gPSBvcHRzICYmIG9wdHMuUHJvcHMgJiYgb3B0cy5Qcm9wc1twWzFdXSAhPSBudWxsID8gb3B0cy5Qcm9wc1twWzFdXSA6IFByb3BzW3BbMV1dO1xuXHRcdHN3aXRjaChwWzJdKSB7XG5cdFx0XHRjYXNlICdkYXRlJzogbSA9IG5ldyBEYXRlKG0pLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvXFwuXFxkKlovLFwiWlwiKTsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKHR5cGVvZiBtID09ICdudW1iZXInKSBtID0gU3RyaW5nKG0pO1xuXHRcdGVsc2UgaWYobSA9PT0gdHJ1ZSB8fCBtID09PSBmYWxzZSkgeyBtID0gbSA/IFwiMVwiIDogXCIwXCI7IH1cblx0XHRlbHNlIGlmKG0gaW5zdGFuY2VvZiBEYXRlKSBtID0gbmV3IERhdGUobSkudG9JU09TdHJpbmcoKS5yZXBsYWNlKC9cXC5cXGQqWi8sXCJcIik7XG5cdFx0by5wdXNoKHdyaXRldGFnKFhMTUxEb2NQcm9wc01hcFtwWzFdXSB8fCBwWzFdLCBtKSk7XG5cdH0pO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdEb2N1bWVudFByb3BlcnRpZXMnLCBvLmpvaW4oXCJcIiksIHt4bWxuczpYTE1MTlMubyB9KTtcbn1cbmZ1bmN0aW9uIHhsbWxfd3JpdGVfY3VzdHByb3BzKFByb3BzLCBDdXN0cHJvcHMvKjo6LCBvcHRzKi8pIHtcblx0dmFyIEJMQUNLTElTVCA9IFtcIldvcmtzaGVldHNcIixcIlNoZWV0TmFtZXNcIl07XG5cdHZhciBUID0gJ0N1c3RvbURvY3VtZW50UHJvcGVydGllcyc7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGlmKFByb3BzKSBrZXlzKFByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHQvKjo6IGlmKCFQcm9wcykgcmV0dXJuOyAqL1xuXHRcdGlmKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUHJvcHMsIGspKSByZXR1cm47XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IENPUkVfUFJPUFMubGVuZ3RoOyArK2kpIGlmKGsgPT0gQ09SRV9QUk9QU1tpXVsxXSkgcmV0dXJuO1xuXHRcdGZvcihpID0gMDsgaSA8IEVYVF9QUk9QUy5sZW5ndGg7ICsraSkgaWYoayA9PSBFWFRfUFJPUFNbaV1bMV0pIHJldHVybjtcblx0XHRmb3IoaSA9IDA7IGkgPCBCTEFDS0xJU1QubGVuZ3RoOyArK2kpIGlmKGsgPT0gQkxBQ0tMSVNUW2ldKSByZXR1cm47XG5cblx0XHR2YXIgbSA9IFByb3BzW2tdO1xuXHRcdHZhciB0ID0gXCJzdHJpbmdcIjtcblx0XHRpZih0eXBlb2YgbSA9PSAnbnVtYmVyJykgeyB0ID0gXCJmbG9hdFwiOyBtID0gU3RyaW5nKG0pOyB9XG5cdFx0ZWxzZSBpZihtID09PSB0cnVlIHx8IG0gPT09IGZhbHNlKSB7IHQgPSBcImJvb2xlYW5cIjsgbSA9IG0gPyBcIjFcIiA6IFwiMFwiOyB9XG5cdFx0ZWxzZSBtID0gU3RyaW5nKG0pO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoZXNjYXBleG1sdGFnKGspLCBtLCB7XCJkdDpkdFwiOnR9KSk7XG5cdH0pO1xuXHRpZihDdXN0cHJvcHMpIGtleXMoQ3VzdHByb3BzKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHQvKjo6IGlmKCFDdXN0cHJvcHMpIHJldHVybjsgKi9cblx0XHRpZighT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKEN1c3Rwcm9wcywgaykpIHJldHVybjtcblx0XHRpZihQcm9wcyAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoUHJvcHMsIGspKSByZXR1cm47XG5cdFx0dmFyIG0gPSBDdXN0cHJvcHNba107XG5cdFx0dmFyIHQgPSBcInN0cmluZ1wiO1xuXHRcdGlmKHR5cGVvZiBtID09ICdudW1iZXInKSB7IHQgPSBcImZsb2F0XCI7IG0gPSBTdHJpbmcobSk7IH1cblx0XHRlbHNlIGlmKG0gPT09IHRydWUgfHwgbSA9PT0gZmFsc2UpIHsgdCA9IFwiYm9vbGVhblwiOyBtID0gbSA/IFwiMVwiIDogXCIwXCI7IH1cblx0XHRlbHNlIGlmKG0gaW5zdGFuY2VvZiBEYXRlKSB7IHQgPSBcImRhdGVUaW1lLnR6XCI7IG0gPSBtLnRvSVNPU3RyaW5nKCk7IH1cblx0XHRlbHNlIG0gPSBTdHJpbmcobSk7XG5cdFx0by5wdXNoKHdyaXRleHRhZyhlc2NhcGV4bWx0YWcoayksIG0sIHtcImR0OmR0XCI6dH0pKTtcblx0fSk7XG5cdHJldHVybiAnPCcgKyBUICsgJyB4bWxucz1cIicgKyBYTE1MTlMubyArICdcIj4nICsgby5qb2luKFwiXCIpICsgJzwvJyArIFQgKyAnPic7XG59XG4vKiBbTVMtRFRZUF0gMi4zLjMgRklMRVRJTUUgKi9cbi8qIFtNUy1PTEVEU10gMi4xLjMgRklMRVRJTUUgKFBhY2tldCBWZXJzaW9uKSAqL1xuLyogW01TLU9MRVBTXSAyLjggRklMRVRJTUUgKFBhY2tldCBWZXJzaW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRklMRVRJTUUoYmxvYikge1xuXHR2YXIgZHdMb3dEYXRlVGltZSA9IGJsb2IucmVhZF9zaGlmdCg0KSwgZHdIaWdoRGF0ZVRpbWUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBuZXcgRGF0ZSgoKGR3SGlnaERhdGVUaW1lLzFlNypNYXRoLnBvdygyLDMyKSArIGR3TG93RGF0ZVRpbWUvMWU3KSAtIDExNjQ0NDczNjAwKSoxMDAwKS50b0lTT1N0cmluZygpLnJlcGxhY2UoL1xcLjAwMC8sXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV9GSUxFVElNRSh0aW1lLyo6c3RyaW5nfERhdGUqLykge1xuXHR2YXIgZGF0ZSA9ICh0eXBlb2YgdGltZSA9PSBcInN0cmluZ1wiKSA/IG5ldyBEYXRlKERhdGUucGFyc2UodGltZSkpIDogdGltZTtcblx0dmFyIHQgPSBkYXRlLmdldFRpbWUoKSAvIDEwMDAgKyAxMTY0NDQ3MzYwMDtcblx0dmFyIGwgPSB0ICUgTWF0aC5wb3coMiwzMiksIGggPSAodCAtIGwpIC8gTWF0aC5wb3coMiwzMik7XG5cdGwgKj0gMWU3OyBoICo9IDFlNztcblx0dmFyIHcgPSAobCAvIE1hdGgucG93KDIsMzIpKSB8IDA7XG5cdGlmKHcgPiAwKSB7IGwgPSBsICUgTWF0aC5wb3coMiwzMik7IGggKz0gdzsgfVxuXHR2YXIgbyA9IG5ld19idWYoOCk7IG8ud3JpdGVfc2hpZnQoNCwgbCk7IG8ud3JpdGVfc2hpZnQoNCwgaCk7IHJldHVybiBvO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS40IExwc3RyICovXG5mdW5jdGlvbiBwYXJzZV9scHN0cihibG9iLCB0eXBlLCBwYWQvKjo/bnVtYmVyKi8pIHtcblx0dmFyIHN0YXJ0ID0gYmxvYi5sO1xuXHR2YXIgc3RyID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHN0ci1jcCcpO1xuXHRpZihwYWQpIHdoaWxlKChibG9iLmwgLSBzdGFydCkgJiAzKSArK2Jsb2IubDtcblx0cmV0dXJuIHN0cjtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuNiBMcHdzdHIgKi9cbmZ1bmN0aW9uIHBhcnNlX2xwd3N0cihibG9iLCB0eXBlLCBwYWQpIHtcblx0dmFyIHN0ciA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHB3c3RyJyk7XG5cdGlmKHBhZCkgYmxvYi5sICs9ICg0IC0gKChzdHIubGVuZ3RoKzEpICYgMykpICYgMztcblx0cmV0dXJuIHN0cjtcbn1cblxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xMSBWdFN0cmluZyAqL1xuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTIgVnRVbmFsaWduZWRTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0U3RyaW5nQmFzZShibG9iLCBzdHJpbmdUeXBlLCBwYWQpIHtcblx0aWYoc3RyaW5nVHlwZSA9PT0gMHgxRiAvKlZUX0xQV1NUUiovKSByZXR1cm4gcGFyc2VfbHB3c3RyKGJsb2IpO1xuXHRyZXR1cm4gcGFyc2VfbHBzdHIoYmxvYiwgc3RyaW5nVHlwZSwgcGFkKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfVnRTdHJpbmcoYmxvYiwgdC8qOm51bWJlciovLCBwYWQvKjo/Ym9vbGVhbiovKSB7IHJldHVybiBwYXJzZV9WdFN0cmluZ0Jhc2UoYmxvYiwgdCwgcGFkID09PSBmYWxzZSA/IDA6IDQpOyB9XG5mdW5jdGlvbiBwYXJzZV9WdFVuYWxpZ25lZFN0cmluZyhibG9iLCB0Lyo6bnVtYmVyKi8pIHsgaWYoIXQpIHRocm93IG5ldyBFcnJvcihcIlZ0VW5hbGlnbmVkU3RyaW5nIG11c3QgaGF2ZSBwb3NpdGl2ZSBsZW5ndGhcIik7IHJldHVybiBwYXJzZV9WdFN0cmluZ0Jhc2UoYmxvYiwgdCwgMCk7IH1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuNyBWdFZlY0xwd3N0clZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9WdFZlY0xwd3N0clZhbHVlKGJsb2IpLyo6QXJyYXk8c3RyaW5nPiovIHtcblx0dmFyIGxlbmd0aCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHJldC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHN0YXJ0ID0gYmxvYi5sO1xuXHRcdHJldFtpXSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHB3c3RyJykucmVwbGFjZShjaHIwLCcnKTtcblx0XHRpZigoYmxvYi5sIC0gc3RhcnQpICYgMHgwMikgYmxvYi5sICs9IDI7XG5cdH1cblx0cmV0dXJuIHJldDtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuOSBWdFZlY1VuYWxpZ25lZExwc3RyVmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZShibG9iKS8qOkFycmF5PHN0cmluZz4qLyB7XG5cdHZhciBsZW5ndGggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgcmV0W2ldID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHN0ci1jcCcpLnJlcGxhY2UoY2hyMCwnJyk7XG5cdHJldHVybiByZXQ7XG59XG5cblxuLyogW01TLU9TSEFSRURdIDIuMy4zLjEuMTMgVnRIZWFkaW5nUGFpciAqL1xuZnVuY3Rpb24gcGFyc2VfVnRIZWFkaW5nUGFpcihibG9iKSB7XG5cdHZhciBzdGFydCA9IGJsb2IubDtcblx0dmFyIGhlYWRpbmdTdHJpbmcgPSBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgVlRfVVNUUik7XG5cdGlmKGJsb2JbYmxvYi5sXSA9PSAweDAwICYmIGJsb2JbYmxvYi5sKzFdID09IDB4MDAgJiYgKChibG9iLmwgLSBzdGFydCkgJiAweDAyKSkgYmxvYi5sICs9IDI7XG5cdHZhciBoZWFkZXJQYXJ0cyA9IHBhcnNlX1R5cGVkUHJvcGVydHlWYWx1ZShibG9iLCBWVF9JNCk7XG5cdHJldHVybiBbaGVhZGluZ1N0cmluZywgaGVhZGVyUGFydHNdO1xufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjMuMS4xNCBWdFZlY0hlYWRpbmdQYWlyVmFsdWUgKi9cbmZ1bmN0aW9uIHBhcnNlX1Z0VmVjSGVhZGluZ1BhaXJWYWx1ZShibG9iKSB7XG5cdHZhciBjRWxlbWVudHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBvdXQgPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNFbGVtZW50cyAvIDI7ICsraSkgb3V0LnB1c2gocGFyc2VfVnRIZWFkaW5nUGFpcihibG9iKSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4xOC4xIERpY3Rpb25hcnkgKHVzZXMgMi4xNywgMi4xNikgKi9cbmZ1bmN0aW9uIHBhcnNlX2RpY3Rpb25hcnkoYmxvYixDb2RlUGFnZSkge1xuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgZGljdC8qOntbbnVtYmVyXTpzdHJpbmd9Ki8gPSAoe30vKjphbnkqLyk7XG5cdGZvcih2YXIgaiA9IDA7IGogIT0gY250OyArK2opIHtcblx0XHR2YXIgcGlkID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0ZGljdFtwaWRdID0gYmxvYi5yZWFkX3NoaWZ0KGxlbiwgKENvZGVQYWdlID09PSAweDRCMCA/J3V0ZjE2bGUnOid1dGY4JykpLnJlcGxhY2UoY2hyMCwnJykucmVwbGFjZShjaHIxLCchJyk7XG5cdFx0aWYoQ29kZVBhZ2UgPT09IDB4NEIwICYmIChsZW4gJSAyKSkgYmxvYi5sICs9IDI7XG5cdH1cblx0aWYoYmxvYi5sICYgMykgYmxvYi5sID0gKGJsb2IubD4+MisxKTw8Mjtcblx0cmV0dXJuIGRpY3Q7XG59XG5cbi8qIFtNUy1PTEVQU10gMi45IEJMT0IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JMT0IoYmxvYikge1xuXHR2YXIgc2l6ZSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGJ5dGVzID0gYmxvYi5zbGljZShibG9iLmwsYmxvYi5sK3NpemUpO1xuXHRibG9iLmwgKz0gc2l6ZTtcblx0aWYoKHNpemUgJiAzKSA+IDApIGJsb2IubCArPSAoNCAtIChzaXplICYgMykpICYgMztcblx0cmV0dXJuIGJ5dGVzO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMTEgQ2xpcGJvYXJkRGF0YSAqL1xuZnVuY3Rpb24gcGFyc2VfQ2xpcGJvYXJkRGF0YShibG9iKSB7XG5cdC8vIFRPRE9cblx0dmFyIG8gPSB7fTtcblx0by5TaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHQvL28uRm9ybWF0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gby5TaXplICsgMyAtIChvLlNpemUgLSAxKSAlIDQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtT0xFUFNdIDIuMTUgVHlwZWRQcm9wZXJ0eVZhbHVlICovXG5mdW5jdGlvbiBwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUoYmxvYiwgdHlwZS8qOm51bWJlciovLCBfb3B0cykvKjphbnkqLyB7XG5cdHZhciB0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCByZXQsIG9wdHMgPSBfb3B0c3x8e307XG5cdGJsb2IubCArPSAyO1xuXHRpZih0eXBlICE9PSBWVF9WQVJJQU5UKVxuXHRpZih0ICE9PSB0eXBlICYmIFZUX0NVU1RPTS5pbmRleE9mKHR5cGUpPT09LTEgJiYgISgodHlwZSAmIDB4RkZGRSkgPT0gMHgxMDFFICYmICh0ICYgMHhGRkZFKSA9PSAweDEwMUUpKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHR5cGUgJyArIHR5cGUgKyAnIHNhdyAnICsgdCk7XG5cdHN3aXRjaCh0eXBlID09PSBWVF9WQVJJQU5UID8gdCA6IHR5cGUpIHtcblx0XHRjYXNlIDB4MDIgLypWVF9JMiovOiByZXQgPSBibG9iLnJlYWRfc2hpZnQoMiwgJ2knKTsgaWYoIW9wdHMucmF3KSBibG9iLmwgKz0gMjsgcmV0dXJuIHJldDtcblx0XHRjYXNlIDB4MDMgLypWVF9JNCovOiByZXQgPSBibG9iLnJlYWRfc2hpZnQoNCwgJ2knKTsgcmV0dXJuIHJldDtcblx0XHRjYXNlIDB4MEIgLypWVF9CT09MKi86IHJldHVybiBibG9iLnJlYWRfc2hpZnQoNCkgIT09IDB4MDtcblx0XHRjYXNlIDB4MTMgLypWVF9VSTQqLzogcmV0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpOyByZXR1cm4gcmV0O1xuXHRcdGNhc2UgMHgxRSAvKlZUX0xQU1RSKi86IHJldHVybiBwYXJzZV9scHN0cihibG9iLCB0LCA0KS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHgxRiAvKlZUX0xQV1NUUiovOiByZXR1cm4gcGFyc2VfbHB3c3RyKGJsb2IpO1xuXHRcdGNhc2UgMHg0MCAvKlZUX0ZJTEVUSU1FKi86IHJldHVybiBwYXJzZV9GSUxFVElNRShibG9iKTtcblx0XHRjYXNlIDB4NDEgLypWVF9CTE9CKi86IHJldHVybiBwYXJzZV9CTE9CKGJsb2IpO1xuXHRcdGNhc2UgMHg0NyAvKlZUX0NGKi86IHJldHVybiBwYXJzZV9DbGlwYm9hcmREYXRhKGJsb2IpO1xuXHRcdGNhc2UgMHg1MCAvKlZUX1NUUklORyovOiByZXR1cm4gcGFyc2VfVnRTdHJpbmcoYmxvYiwgdCwgIW9wdHMucmF3KS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHg1MSAvKlZUX1VTVFIqLzogcmV0dXJuIHBhcnNlX1Z0VW5hbGlnbmVkU3RyaW5nKGJsb2IsIHQvKiwgNCovKS5yZXBsYWNlKGNocjAsJycpO1xuXHRcdGNhc2UgMHgxMDBDIC8qVlRfVkVDVE9SfFZUX1ZBUklBTlQqLzogcmV0dXJuIHBhcnNlX1Z0VmVjSGVhZGluZ1BhaXJWYWx1ZShibG9iKTtcblx0XHRjYXNlIDB4MTAxRSAvKlZUX1ZFQ1RPUnxWVF9MUFNUUiovOlxuXHRcdGNhc2UgMHgxMDFGIC8qVlRfVkVDVE9SfFZUX0xQV1NUUiovOlxuXHRcdFx0cmV0dXJuIHQgPT0gMHgxMDFGID8gcGFyc2VfVnRWZWNMcHdzdHJWYWx1ZShibG9iKSA6IHBhcnNlX1Z0VmVjVW5hbGlnbmVkTHBzdHJWYWx1ZShibG9iKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJUeXBlZFByb3BlcnR5VmFsdWUgdW5yZWNvZ25pemVkIHR5cGUgXCIgKyB0eXBlICsgXCIgXCIgKyB0KTtcblx0fVxufVxuZnVuY3Rpb24gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKHR5cGUvKjpudW1iZXIqLywgdmFsdWUpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDQpLCBwID0gbmV3X2J1Zig0KTtcblx0by53cml0ZV9zaGlmdCg0LCB0eXBlID09IDB4NTAgPyAweDFGIDogdHlwZSk7XG5cdHN3aXRjaCh0eXBlKSB7XG5cdFx0Y2FzZSAweDAzIC8qVlRfSTQqLzogcC53cml0ZV9zaGlmdCgtNCwgdmFsdWUpOyBicmVhaztcblx0XHRjYXNlIDB4MDUgLypWVF9JNCovOiBwID0gbmV3X2J1Zig4KTsgcC53cml0ZV9zaGlmdCg4LCB2YWx1ZSwgJ2YnKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBCIC8qVlRfQk9PTCovOiBwLndyaXRlX3NoaWZ0KDQsIHZhbHVlID8gMHgwMSA6IDB4MDApOyBicmVhaztcblx0XHRjYXNlIDB4NDAgLypWVF9GSUxFVElNRSovOiAvKjo6IGlmKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIiAmJiAhKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi8gcCA9IHdyaXRlX0ZJTEVUSU1FKHZhbHVlKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDFGIC8qVlRfTFBXU1RSKi86XG5cdFx0Y2FzZSAweDUwIC8qVlRfU1RSSU5HKi86XG5cdFx0XHQvKjo6IGlmKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0cCA9IG5ld19idWYoNCArIDIgKiAodmFsdWUubGVuZ3RoICsgMSkgKyAodmFsdWUubGVuZ3RoICUgMiA/IDAgOiAyKSk7XG5cdFx0XHRwLndyaXRlX3NoaWZ0KDQsIHZhbHVlLmxlbmd0aCArIDEpO1xuXHRcdFx0cC53cml0ZV9zaGlmdCgwLCB2YWx1ZSwgXCJkYmNzXCIpO1xuXHRcdFx0d2hpbGUocC5sICE9IHAubGVuZ3RoKSBwLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdFx0YnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVHlwZWRQcm9wZXJ0eVZhbHVlIHVucmVjb2duaXplZCB0eXBlIFwiICsgdHlwZSArIFwiIFwiICsgdmFsdWUpO1xuXHR9XG5cdHJldHVybiBiY29uY2F0KFtvLCBwXSk7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4yMCBQcm9wZXJ0eVNldCAqL1xuZnVuY3Rpb24gcGFyc2VfUHJvcGVydHlTZXQoYmxvYiwgUElEU0kpIHtcblx0dmFyIHN0YXJ0X2FkZHIgPSBibG9iLmw7XG5cdHZhciBzaXplID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgTnVtUHJvcHMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBQcm9wcyA9IFtdLCBpID0gMDtcblx0dmFyIENvZGVQYWdlID0gMDtcblx0dmFyIERpY3Rpb25hcnkgPSAtMSwgRGljdE9iai8qOntbbnVtYmVyXTpzdHJpbmd9Ki8gPSAoe30vKjphbnkqLyk7XG5cdGZvcihpID0gMDsgaSAhPSBOdW1Qcm9wczsgKytpKSB7XG5cdFx0dmFyIFByb3BJRCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgT2Zmc2V0ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRcdFByb3BzW2ldID0gW1Byb3BJRCwgT2Zmc2V0ICsgc3RhcnRfYWRkcl07XG5cdH1cblx0UHJvcHMuc29ydChmdW5jdGlvbih4LHkpIHsgcmV0dXJuIHhbMV0gLSB5WzFdOyB9KTtcblx0dmFyIFByb3BIID0ge307XG5cdGZvcihpID0gMDsgaSAhPSBOdW1Qcm9wczsgKytpKSB7XG5cdFx0aWYoYmxvYi5sICE9PSBQcm9wc1tpXVsxXSkge1xuXHRcdFx0dmFyIGZhaWwgPSB0cnVlO1xuXHRcdFx0aWYoaT4wICYmIFBJRFNJKSBzd2l0Y2goUElEU0lbUHJvcHNbaS0xXVswXV0udCkge1xuXHRcdFx0XHRjYXNlIDB4MDIgLypWVF9JMiovOiBpZihibG9iLmwrMiA9PT0gUHJvcHNbaV1bMV0pIHsgYmxvYi5sKz0yOyBmYWlsID0gZmFsc2U7IH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHg1MCAvKlZUX1NUUklORyovOiBpZihibG9iLmwgPD0gUHJvcHNbaV1bMV0pIHsgYmxvYi5sPVByb3BzW2ldWzFdOyBmYWlsID0gZmFsc2U7IH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxMDBDIC8qVlRfVkVDVE9SfFZUX1ZBUklBTlQqLzogaWYoYmxvYi5sIDw9IFByb3BzW2ldWzFdKSB7IGJsb2IubD1Qcm9wc1tpXVsxXTsgZmFpbCA9IGZhbHNlOyB9IGJyZWFrO1xuXHRcdFx0fVxuXHRcdFx0aWYoKCFQSURTSXx8aT09MCkgJiYgYmxvYi5sIDw9IFByb3BzW2ldWzFdKSB7IGZhaWw9ZmFsc2U7IGJsb2IubCA9IFByb3BzW2ldWzFdOyB9XG5cdFx0XHRpZihmYWlsKSB0aHJvdyBuZXcgRXJyb3IoXCJSZWFkIEVycm9yOiBFeHBlY3RlZCBhZGRyZXNzIFwiICsgUHJvcHNbaV1bMV0gKyAnIGF0ICcgKyBibG9iLmwgKyAnIDonICsgaSk7XG5cdFx0fVxuXHRcdGlmKFBJRFNJKSB7XG5cdFx0XHR2YXIgcGlkZHNpID0gUElEU0lbUHJvcHNbaV1bMF1dO1xuXHRcdFx0UHJvcEhbcGlkZHNpLm5dID0gcGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIHBpZGRzaS50LCB7cmF3OnRydWV9KTtcblx0XHRcdGlmKHBpZGRzaS5wID09PSAndmVyc2lvbicpIFByb3BIW3BpZGRzaS5uXSA9IFN0cmluZyhQcm9wSFtwaWRkc2kubl0gPj4gMTYpICsgXCIuXCIgKyAoXCIwMDAwXCIgKyBTdHJpbmcoUHJvcEhbcGlkZHNpLm5dICYgMHhGRkZGKSkuc2xpY2UoLTQpO1xuXHRcdFx0aWYocGlkZHNpLm4gPT0gXCJDb2RlUGFnZVwiKSBzd2l0Y2goUHJvcEhbcGlkZHNpLm5dKSB7XG5cdFx0XHRcdGNhc2UgMDogUHJvcEhbcGlkZHNpLm5dID0gMTI1Mjtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgODc0OlxuXHRcdFx0XHRjYXNlIDkzMjpcblx0XHRcdFx0Y2FzZSA5MzY6XG5cdFx0XHRcdGNhc2UgOTQ5OlxuXHRcdFx0XHRjYXNlIDk1MDpcblx0XHRcdFx0Y2FzZSAxMjUwOlxuXHRcdFx0XHRjYXNlIDEyNTE6XG5cdFx0XHRcdGNhc2UgMTI1Mzpcblx0XHRcdFx0Y2FzZSAxMjU0OlxuXHRcdFx0XHRjYXNlIDEyNTU6XG5cdFx0XHRcdGNhc2UgMTI1Njpcblx0XHRcdFx0Y2FzZSAxMjU3OlxuXHRcdFx0XHRjYXNlIDEyNTg6XG5cdFx0XHRcdGNhc2UgMTAwMDA6XG5cdFx0XHRcdGNhc2UgMTIwMDpcblx0XHRcdFx0Y2FzZSAxMjAxOlxuXHRcdFx0XHRjYXNlIDEyNTI6XG5cdFx0XHRcdGNhc2UgNjUwMDA6IGNhc2UgLTUzNjpcblx0XHRcdFx0Y2FzZSA2NTAwMTogY2FzZSAtNTM1OlxuXHRcdFx0XHRcdHNldF9jcChDb2RlUGFnZSA9IChQcm9wSFtwaWRkc2kubl0+Pj4wKSAmIDB4RkZGRik7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBDb2RlUGFnZTogXCIgKyBQcm9wSFtwaWRkc2kubl0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRpZihQcm9wc1tpXVswXSA9PT0gMHgxKSB7XG5cdFx0XHRcdENvZGVQYWdlID0gUHJvcEguQ29kZVBhZ2UgPSAocGFyc2VfVHlwZWRQcm9wZXJ0eVZhbHVlKGJsb2IsIFZUX0kyKS8qOm51bWJlciovKTtcblx0XHRcdFx0c2V0X2NwKENvZGVQYWdlKTtcblx0XHRcdFx0aWYoRGljdGlvbmFyeSAhPT0gLTEpIHtcblx0XHRcdFx0XHR2YXIgb2xkcG9zID0gYmxvYi5sO1xuXHRcdFx0XHRcdGJsb2IubCA9IFByb3BzW0RpY3Rpb25hcnldWzFdO1xuXHRcdFx0XHRcdERpY3RPYmogPSBwYXJzZV9kaWN0aW9uYXJ5KGJsb2IsQ29kZVBhZ2UpO1xuXHRcdFx0XHRcdGJsb2IubCA9IG9sZHBvcztcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmKFByb3BzW2ldWzBdID09PSAwKSB7XG5cdFx0XHRcdGlmKENvZGVQYWdlID09PSAwKSB7IERpY3Rpb25hcnkgPSBpOyBibG9iLmwgPSBQcm9wc1tpKzFdWzFdOyBjb250aW51ZTsgfVxuXHRcdFx0XHREaWN0T2JqID0gcGFyc2VfZGljdGlvbmFyeShibG9iLENvZGVQYWdlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHZhciBuYW1lID0gRGljdE9ialtQcm9wc1tpXVswXV07XG5cdFx0XHRcdHZhciB2YWw7XG5cdFx0XHRcdC8qIFtNUy1PU0hBUkVEXSAyLjMuMy4yLjMuMS4yICsgUFJPUFZBUklBTlQgKi9cblx0XHRcdFx0c3dpdGNoKGJsb2JbYmxvYi5sXSkge1xuXHRcdFx0XHRcdGNhc2UgMHg0MSAvKlZUX0JMT0IqLzogYmxvYi5sICs9IDQ7IHZhbCA9IHBhcnNlX0JMT0IoYmxvYik7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHgxRSAvKlZUX0xQU1RSKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZV9WdFN0cmluZyhibG9iLCBibG9iW2Jsb2IubC00XSkucmVwbGFjZSgvXFx1MDAwMCskLyxcIlwiKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDFGIC8qVlRfTFBXU1RSKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZV9WdFN0cmluZyhibG9iLCBibG9iW2Jsb2IubC00XSkucmVwbGFjZSgvXFx1MDAwMCskLyxcIlwiKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDAzIC8qVlRfSTQqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg0LCAnaScpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MTMgLypWVF9VSTQqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg0KTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAweDA1IC8qVlRfUjgqLzogYmxvYi5sICs9IDQ7IHZhbCA9IGJsb2IucmVhZF9zaGlmdCg4LCAnZicpOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIDB4MEIgLypWVF9CT09MKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZWJvb2woYmxvYiwgNCk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgMHg0MCAvKlZUX0ZJTEVUSU1FKi86IGJsb2IubCArPSA0OyB2YWwgPSBwYXJzZURhdGUocGFyc2VfRklMRVRJTUUoYmxvYikpOyBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnBhcnNlZCB2YWx1ZTogXCIgKyBibG9iW2Jsb2IubF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFByb3BIW25hbWVdID0gdmFsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRibG9iLmwgPSBzdGFydF9hZGRyICsgc2l6ZTsgLyogc3RlcCBhaGVhZCB0byBza2lwIHBhZGRpbmcgKi9cblx0cmV0dXJuIFByb3BIO1xufVxudmFyIFhMU1BTU2tpcCA9IFsgXCJDb2RlUGFnZVwiLCBcIlRodW1ibmFpbFwiLCBcIl9QSURfTElOS0JBU0VcIiwgXCJfUElEX0hMSU5LU1wiLCBcIlN5c3RlbUlkZW50aWZpZXJcIiwgXCJGTVRJRFwiIF07IC8vLmNvbmNhdChQc2V1ZG9Qcm9wc1BhaXJzKTtcbmZ1bmN0aW9uIGd1ZXNzX3Byb3BlcnR5X3R5cGUodmFsLyo6YW55Ki8pLyo6bnVtYmVyKi8ge1xuXHRzd2l0Y2godHlwZW9mIHZhbCkge1xuXHRcdGNhc2UgXCJib29sZWFuXCI6IHJldHVybiAweDBCO1xuXHRcdGNhc2UgXCJudW1iZXJcIjogcmV0dXJuICgodmFsfDApPT12YWwpID8gMHgwMyA6IDB4MDU7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiByZXR1cm4gMHgxRjtcblx0XHRjYXNlIFwib2JqZWN0XCI6IGlmKHZhbCBpbnN0YW5jZW9mIERhdGUpIHJldHVybiAweDQwOyBicmVhaztcblx0fVxuXHRyZXR1cm4gLTE7XG59XG5mdW5jdGlvbiB3cml0ZV9Qcm9wZXJ0eVNldChlbnRyaWVzLCBSRSwgUElEU0kpIHtcblx0dmFyIGhkciA9IG5ld19idWYoOCksIHBpYW8gPSBbXSwgcHJvcCA9IFtdO1xuXHR2YXIgc3ogPSA4LCBpID0gMDtcblxuXHR2YXIgcHIgPSBuZXdfYnVmKDgpLCBwaW8gPSBuZXdfYnVmKDgpO1xuXHRwci53cml0ZV9zaGlmdCg0LCAweDAwMDIpO1xuXHRwci53cml0ZV9zaGlmdCg0LCAweDA0QjApO1xuXHRwaW8ud3JpdGVfc2hpZnQoNCwgMHgwMDAxKTtcblx0cHJvcC5wdXNoKHByKTsgcGlhby5wdXNoKHBpbyk7XG5cdHN6ICs9IDggKyBwci5sZW5ndGg7XG5cblx0aWYoIVJFKSB7XG5cdFx0cGlvID0gbmV3X2J1Zig4KTtcblx0XHRwaW8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0cGlhby51bnNoaWZ0KHBpbyk7XG5cblx0XHR2YXIgYnVmcyA9IFtuZXdfYnVmKDQpXTtcblx0XHRidWZzWzBdLndyaXRlX3NoaWZ0KDQsIGVudHJpZXMubGVuZ3RoKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHR2YXIgdmFsdWUgPSBlbnRyaWVzW2ldWzBdO1xuXHRcdFx0cHIgPSBuZXdfYnVmKDQgKyA0ICsgMiAqICh2YWx1ZS5sZW5ndGggKyAxKSArICh2YWx1ZS5sZW5ndGggJSAyID8gMCA6IDIpKTtcblx0XHRcdHByLndyaXRlX3NoaWZ0KDQsIGkrMik7XG5cdFx0XHRwci53cml0ZV9zaGlmdCg0LCB2YWx1ZS5sZW5ndGggKyAxKTtcblx0XHRcdHByLndyaXRlX3NoaWZ0KDAsIHZhbHVlLCBcImRiY3NcIik7XG5cdFx0XHR3aGlsZShwci5sICE9IHByLmxlbmd0aCkgcHIud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0XHRidWZzLnB1c2gocHIpO1xuXHRcdH1cblx0XHRwciA9IGJjb25jYXQoYnVmcyk7XG5cdFx0cHJvcC51bnNoaWZ0KHByKTtcblx0XHRzeiArPSA4ICsgcHIubGVuZ3RoO1xuXHR9XG5cblx0Zm9yKGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKFJFICYmICFSRVtlbnRyaWVzW2ldWzBdXSkgY29udGludWU7XG5cdFx0aWYoWExTUFNTa2lwLmluZGV4T2YoZW50cmllc1tpXVswXSkgPiAtMSB8fCBQc2V1ZG9Qcm9wc1BhaXJzLmluZGV4T2YoZW50cmllc1tpXVswXSkgPiAtMSkgY29udGludWU7XG5cdFx0aWYoZW50cmllc1tpXVsxXSA9PSBudWxsKSBjb250aW51ZTtcblxuXHRcdHZhciB2YWwgPSBlbnRyaWVzW2ldWzFdLCBpZHggPSAwO1xuXHRcdGlmKFJFKSB7XG5cdFx0XHRpZHggPSArUkVbZW50cmllc1tpXVswXV07XG5cdFx0XHR2YXIgcGluZm8gPSAoUElEU0kvKjo6IHx8IHt9Ki8pW2lkeF0vKjo6IHx8IHt9ICovO1xuXHRcdFx0aWYocGluZm8ucCA9PSBcInZlcnNpb25cIiAmJiB0eXBlb2YgdmFsID09IFwic3RyaW5nXCIpIHtcblx0XHRcdFx0Lyo6OiBpZih0eXBlb2YgdmFsICE9PSBcInN0cmluZ1wiKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0XHRcdHZhciBhcnIgPSB2YWwuc3BsaXQoXCIuXCIpO1xuXHRcdFx0XHR2YWwgPSAoKCthcnJbMF0pPDwxNikgKyAoKCthcnJbMV0pfHwwKTtcblx0XHRcdH1cblx0XHRcdHByID0gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKHBpbmZvLnQsIHZhbCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHZhciBUID0gZ3Vlc3NfcHJvcGVydHlfdHlwZSh2YWwpO1xuXHRcdFx0aWYoVCA9PSAtMSkgeyBUID0gMHgxRjsgdmFsID0gU3RyaW5nKHZhbCk7IH1cblx0XHRcdHByID0gd3JpdGVfVHlwZWRQcm9wZXJ0eVZhbHVlKFQsIHZhbCk7XG5cdFx0fVxuXHRcdHByb3AucHVzaChwcik7XG5cblx0XHRwaW8gPSBuZXdfYnVmKDgpO1xuXHRcdHBpby53cml0ZV9zaGlmdCg0LCAhUkUgPyAyK2kgOiBpZHgpO1xuXHRcdHBpYW8ucHVzaChwaW8pO1xuXG5cdFx0c3ogKz0gOCArIHByLmxlbmd0aDtcblx0fVxuXG5cdHZhciB3ID0gOCAqIChwcm9wLmxlbmd0aCArIDEpO1xuXHRmb3IoaSA9IDA7IGkgPCBwcm9wLmxlbmd0aDsgKytpKSB7IHBpYW9baV0ud3JpdGVfc2hpZnQoNCwgdyk7IHcgKz0gcHJvcFtpXS5sZW5ndGg7IH1cblx0aGRyLndyaXRlX3NoaWZ0KDQsIHN6KTtcblx0aGRyLndyaXRlX3NoaWZ0KDQsIHByb3AubGVuZ3RoKTtcblx0cmV0dXJuIGJjb25jYXQoW2hkcl0uY29uY2F0KHBpYW8pLmNvbmNhdChwcm9wKSk7XG59XG5cbi8qIFtNUy1PTEVQU10gMi4yMSBQcm9wZXJ0eVNldFN0cmVhbSAqL1xuZnVuY3Rpb24gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oZmlsZSwgUElEU0ksIGNsc2lkKSB7XG5cdHZhciBibG9iID0gZmlsZS5jb250ZW50O1xuXHRpZighYmxvYikgcmV0dXJuICh7fS8qOmFueSovKTtcblx0cHJlcF9ibG9iKGJsb2IsIDApO1xuXG5cdHZhciBOdW1TZXRzLCBGTVRJRDAsIEZNVElEMSwgT2Zmc2V0MCwgT2Zmc2V0MSA9IDA7XG5cdGJsb2IuY2hrKCdmZWZmJywgJ0J5dGUgT3JkZXI6ICcpO1xuXG5cdC8qdmFyIHZlcnMgPSAqL2Jsb2IucmVhZF9zaGlmdCgyKTsgLy8gVE9ETzogY2hlY2sgdmVyc2lvblxuXHR2YXIgU3lzdGVtSWRlbnRpZmllciA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIENMU0lEID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0aWYoQ0xTSUQgIT09IENGQi51dGlscy5jb25zdHMuSEVBREVSX0NMU0lEICYmIENMU0lEICE9PSBjbHNpZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIFByb3BlcnR5U2V0IENMU0lEIFwiICsgQ0xTSUQpO1xuXHROdW1TZXRzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihOdW1TZXRzICE9PSAxICYmIE51bVNldHMgIT09IDIpIHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCAjU2V0czogXCIgKyBOdW1TZXRzKTtcblx0Rk1USUQwID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgT2Zmc2V0MCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblxuXHRpZihOdW1TZXRzID09PSAxICYmIE9mZnNldDAgIT09IGJsb2IubCkgdGhyb3cgbmV3IEVycm9yKFwiTGVuZ3RoIG1pc21hdGNoOiBcIiArIE9mZnNldDAgKyBcIiAhPT0gXCIgKyBibG9iLmwpO1xuXHRlbHNlIGlmKE51bVNldHMgPT09IDIpIHsgRk1USUQxID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgT2Zmc2V0MSA9IGJsb2IucmVhZF9zaGlmdCg0KTsgfVxuXHR2YXIgUFNldDAgPSBwYXJzZV9Qcm9wZXJ0eVNldChibG9iLCBQSURTSSk7XG5cblx0dmFyIHJ2YWwgPSAoeyBTeXN0ZW1JZGVudGlmaWVyOiBTeXN0ZW1JZGVudGlmaWVyIH0vKjphbnkqLyk7XG5cdGZvcih2YXIgeSBpbiBQU2V0MCkgcnZhbFt5XSA9IFBTZXQwW3ldO1xuXHQvL3J2YWwuYmxvYiA9IGJsb2I7XG5cdHJ2YWwuRk1USUQgPSBGTVRJRDA7XG5cdC8vcnZhbC5QU2V0MCA9IFBTZXQwO1xuXHRpZihOdW1TZXRzID09PSAxKSByZXR1cm4gcnZhbDtcblx0aWYoT2Zmc2V0MSAtIGJsb2IubCA9PSAyKSBibG9iLmwgKz0gMjtcblx0aWYoYmxvYi5sICE9PSBPZmZzZXQxKSB0aHJvdyBuZXcgRXJyb3IoXCJMZW5ndGggbWlzbWF0Y2ggMjogXCIgKyBibG9iLmwgKyBcIiAhPT0gXCIgKyBPZmZzZXQxKTtcblx0dmFyIFBTZXQxO1xuXHR0cnkgeyBQU2V0MSA9IHBhcnNlX1Byb3BlcnR5U2V0KGJsb2IsIG51bGwpOyB9IGNhdGNoKGUpIHsvKiBlbXB0eSAqL31cblx0Zm9yKHkgaW4gUFNldDEpIHJ2YWxbeV0gPSBQU2V0MVt5XTtcblx0cnZhbC5GTVRJRCA9IFtGTVRJRDAsIEZNVElEMV07IC8vIFRPRE86IHZlcmlmeSBGTVRJRDAvMVxuXHRyZXR1cm4gcnZhbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKGVudHJpZXMsIGNsc2lkLCBSRSwgUElEU0kvKjp7W2tleTpzdHJpbmd8bnVtYmVyXTphbnl9Ki8sIGVudHJpZXMyLyo6P2FueSovLCBjbHNpZDIvKjo/YW55Ki8pIHtcblx0dmFyIGhkciA9IG5ld19idWYoZW50cmllczIgPyA2OCA6IDQ4KTtcblx0dmFyIGJ1ZnMgPSBbaGRyXTtcblx0aGRyLndyaXRlX3NoaWZ0KDIsIDB4RkZGRSk7XG5cdGhkci53cml0ZV9zaGlmdCgyLCAweDAwMDApOyAvKiBUT0RPOiB0eXBlIDEgcHJvcHMgKi9cblx0aGRyLndyaXRlX3NoaWZ0KDQsIDB4MzIzNjMyMzcpO1xuXHRoZHIud3JpdGVfc2hpZnQoMTYsIENGQi51dGlscy5jb25zdHMuSEVBREVSX0NMU0lELCBcImhleFwiKTtcblx0aGRyLndyaXRlX3NoaWZ0KDQsIChlbnRyaWVzMiA/IDIgOiAxKSk7XG5cdGhkci53cml0ZV9zaGlmdCgxNiwgY2xzaWQsIFwiaGV4XCIpO1xuXHRoZHIud3JpdGVfc2hpZnQoNCwgKGVudHJpZXMyID8gNjggOiA0OCkpO1xuXHR2YXIgcHMwID0gd3JpdGVfUHJvcGVydHlTZXQoZW50cmllcywgUkUsIFBJRFNJKTtcblx0YnVmcy5wdXNoKHBzMCk7XG5cblx0aWYoZW50cmllczIpIHtcblx0XHR2YXIgcHMxID0gd3JpdGVfUHJvcGVydHlTZXQoZW50cmllczIsIG51bGwsIG51bGwpO1xuXHRcdGhkci53cml0ZV9zaGlmdCgxNiwgY2xzaWQyLCBcImhleFwiKTtcblx0XHRoZHIud3JpdGVfc2hpZnQoNCwgNjggKyBwczAubGVuZ3RoKTtcblx0XHRidWZzLnB1c2gocHMxKTtcblx0fVxuXHRyZXR1cm4gYmNvbmNhdChidWZzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vub29wMihibG9iLCBsZW5ndGgpIHsgYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCk7IHJldHVybiBudWxsOyB9XG5mdW5jdGlvbiB3cml0ZXplcm9lcyhuLCBvKSB7IGlmKCFvKSBvPW5ld19idWYobik7IGZvcih2YXIgaj0wOyBqPG47ICsraikgby53cml0ZV9zaGlmdCgxLCAwKTsgcmV0dXJuIG87IH1cblxuZnVuY3Rpb24gcGFyc2x1cnAoYmxvYiwgbGVuZ3RoLCBjYikge1xuXHR2YXIgYXJyID0gW10sIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBhcnIucHVzaChjYihibG9iLCB0YXJnZXQgLSBibG9iLmwpKTtcblx0aWYodGFyZ2V0ICE9PSBibG9iLmwpIHRocm93IG5ldyBFcnJvcihcIlNsdXJwIGVycm9yXCIpO1xuXHRyZXR1cm4gYXJyO1xufVxuXG5mdW5jdGlvbiBwYXJzZWJvb2woYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHsgcmV0dXJuIGJsb2IucmVhZF9zaGlmdChsZW5ndGgpID09PSAweDE7IH1cbmZ1bmN0aW9uIHdyaXRlYm9vbCh2Lyo6YW55Ki8sIG8pIHsgaWYoIW8pIG89bmV3X2J1ZigyKTsgby53cml0ZV9zaGlmdCgyLCArISF2KTsgcmV0dXJuIG87IH1cblxuZnVuY3Rpb24gcGFyc2V1aW50MTYoYmxvYi8qOjosIGxlbmd0aDo/bnVtYmVyLCBvcHRzOj9hbnkqLykgeyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDIsICd1Jyk7IH1cbmZ1bmN0aW9uIHdyaXRldWludDE2KHYvKjpudW1iZXIqLywgbykgeyBpZighbykgbz1uZXdfYnVmKDIpOyBvLndyaXRlX3NoaWZ0KDIsIHYpOyByZXR1cm4gbzsgfVxuZnVuY3Rpb24gcGFyc2V1aW50MTZhKGJsb2IsIGxlbmd0aC8qOjogOj9udW1iZXIsIG9wdHM6P2FueSovKSB7IHJldHVybiBwYXJzbHVycChibG9iLGxlbmd0aCxwYXJzZXVpbnQxNik7fVxuXG4vKiAtLS0gMi41IFN0cnVjdHVyZXMgLS0tICovXG5cbi8qIFtNUy1YTFNdIDIuNS4xMCBCZXMgKGJvb2xlYW4gb3IgZXJyb3IpICovXG5mdW5jdGlvbiBwYXJzZV9CZXMoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciB2ID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCB0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gdCA9PT0gMHgwMSA/IHYgOiB2ID09PSAweDAxO1xufVxuZnVuY3Rpb24gd3JpdGVfQmVzKHYsIHQvKjpzdHJpbmcqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMik7XG5cdG8ud3JpdGVfc2hpZnQoMSwgKCh0ID09ICdlJykgPyArdiA6ICshIXYpKTtcblx0by53cml0ZV9zaGlmdCgxLCAoKHQgPT0gJ2UnKSA/IDEgOiAwKSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjQwIFNob3J0WExVbmljb2RlU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA+PSAxMiA/IDIgOiAxKTtcblx0dmFyIGVuY29kaW5nID0gJ3NiY3MtY29udCc7XG5cdHZhciBjcCA9IGN1cnJlbnRfY29kZXBhZ2U7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID49IDgpIGN1cnJlbnRfY29kZXBhZ2UgPSAxMjAwO1xuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPT0gOCApIHtcblx0XHR2YXIgZkhpZ2hCeXRlID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKGZIaWdoQnl0ZSkgeyBlbmNvZGluZyA9ICdkYmNzLWNvbnQnOyB9XG5cdH0gZWxzZSBpZihvcHRzLmJpZmYgPT0gMTIpIHtcblx0XHRlbmNvZGluZyA9ICd3c3RyJztcblx0fVxuXHRpZihvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgZW5jb2RpbmcgPSAnY3BzdHInO1xuXHR2YXIgbyA9IGNjaCA/IGJsb2IucmVhZF9zaGlmdChjY2gsIGVuY29kaW5nKSA6IFwiXCI7XG5cdGN1cnJlbnRfY29kZXBhZ2UgPSBjcDtcblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNS4yOTMgWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nICovXG5mdW5jdGlvbiBwYXJzZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmcoYmxvYikge1xuXHR2YXIgY3AgPSBjdXJyZW50X2NvZGVwYWdlO1xuXHRjdXJyZW50X2NvZGVwYWdlID0gMTIwMDtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciAvKmZIaWdoQnl0ZSA9IGZsYWdzICYgMHgxLCovIGZFeHRTdCA9IGZsYWdzICYgMHg0LCBmUmljaFN0ID0gZmxhZ3MgJiAweDg7XG5cdHZhciB3aWR0aCA9IDEgKyAoZmxhZ3MgJiAweDEpOyAvLyAweDAgLT4gdXRmOCwgMHgxIC0+IGRiY3Ncblx0dmFyIGNSdW4gPSAwLCBjYkV4dFJzdDtcblx0dmFyIHogPSB7fTtcblx0aWYoZlJpY2hTdCkgY1J1biA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoZkV4dFN0KSBjYkV4dFJzdCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGVuY29kaW5nID0gd2lkdGggPT0gMiA/ICdkYmNzLWNvbnQnIDogJ3NiY3MtY29udCc7XG5cdHZhciBtc2cgPSBjY2ggPT09IDAgPyBcIlwiIDogYmxvYi5yZWFkX3NoaWZ0KGNjaCwgZW5jb2RpbmcpO1xuXHRpZihmUmljaFN0KSBibG9iLmwgKz0gNCAqIGNSdW47IC8vVE9ETzogcGFyc2UgdGhpc1xuXHRpZihmRXh0U3QpIGJsb2IubCArPSBjYkV4dFJzdDsgLy9UT0RPOiBwYXJzZSB0aGlzXG5cdHoudCA9IG1zZztcblx0aWYoIWZSaWNoU3QpIHsgei5yYXcgPSBcIjx0PlwiICsgei50ICsgXCI8L3Q+XCI7IHouciA9IHoudDsgfVxuXHRjdXJyZW50X2NvZGVwYWdlID0gY3A7XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24gd3JpdGVfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKHhsc3RyLyo6OiA6WExTdHJpbmcsIG9wdHMqLykge1xuXHR2YXIgc3RyID0gKHhsc3RyLnR8fFwiXCIpLCBuZm10cyA9IDE7XG5cblx0dmFyIGhkciA9IG5ld19idWYoMyArIChuZm10cyA+IDEgPyAyIDogMCkpO1xuXHRoZHIud3JpdGVfc2hpZnQoMiwgc3RyLmxlbmd0aCk7XG5cdGhkci53cml0ZV9zaGlmdCgxLCAobmZtdHMgPiAxID8gMHgwOCA6IDB4MDApIHwgMHgwMSk7XG5cdGlmKG5mbXRzID4gMSkgaGRyLndyaXRlX3NoaWZ0KDIsIG5mbXRzKTtcblxuXHR2YXIgb3RleHQgPSBuZXdfYnVmKDIgKiBzdHIubGVuZ3RoKTtcblx0b3RleHQud3JpdGVfc2hpZnQoMiAqIHN0ci5sZW5ndGgsIHN0ciwgJ3V0ZjE2bGUnKTtcblxuXHR2YXIgb3V0ID0gW2hkciwgb3RleHRdO1xuXG5cdHJldHVybiBiY29uY2F0KG91dCk7XG59XG5cbi8qIDIuNS4yOTYgWExVbmljb2RlU3RyaW5nTm9DY2ggKi9cbmZ1bmN0aW9uIHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cykge1xuXHR2YXIgcmV0dmFsO1xuXHRpZihvcHRzKSB7XG5cdFx0aWYob3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDw9IDUpIHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAnY3BzdHInKTtcblx0XHRpZihvcHRzLmJpZmYgPj0gMTIpIHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAnZGJjcy1jb250Jyk7XG5cdH1cblx0dmFyIGZIaWdoQnl0ZSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYoZkhpZ2hCeXRlPT09MCkgeyByZXR2YWwgPSBibG9iLnJlYWRfc2hpZnQoY2NoLCAnc2Jjcy1jb250Jyk7IH1cblx0ZWxzZSB7IHJldHZhbCA9IGJsb2IucmVhZF9zaGlmdChjY2gsICdkYmNzLWNvbnQnKTsgfVxuXHRyZXR1cm4gcmV0dmFsO1xufVxuXG4vKiAyLjUuMjk0IFhMVW5pY29kZVN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdGlmKGNjaCA9PT0gMCkgeyBibG9iLmwrKzsgcmV0dXJuIFwiXCI7IH1cblx0cmV0dXJuIHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cyk7XG59XG4vKiBCSUZGNSBvdmVycmlkZSAqL1xuZnVuY3Rpb24gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmID4gNSkgcmV0dXJuIHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihjY2ggPT09IDApIHsgYmxvYi5sKys7IHJldHVybiBcIlwiOyB9XG5cdHJldHVybiBibG9iLnJlYWRfc2hpZnQoY2NoLCAob3B0cy5iaWZmIDw9IDQgfHwgIWJsb2IubGVucyApID8gJ2Nwc3RyJyA6ICdzYmNzLWNvbnQnKTtcbn1cbi8qIFRPRE86IEJJRkY1IGFuZCBsb3dlciwgY29kZXBhZ2UgYXdhcmVuZXNzICovXG5mdW5jdGlvbiB3cml0ZV9YTFVuaWNvZGVTdHJpbmcoc3RyLCBvcHRzLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigzICsgMiAqIHN0ci5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHN0ci5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDEpO1xuXHRvLndyaXRlX3NoaWZ0KDMxLCBzdHIsICd1dGYxNmxlJyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuNjEgQ29udHJvbEluZm8gKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbnRyb2xJbmZvKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGJsb2IubCsrO1xuXHR2YXIgYWNjZWwgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2ZsYWdzLCBhY2NlbF07XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy42IFVSTE1vbmlrZXIgVE9ETzogZmxhZ3MgKi9cbmZ1bmN0aW9uIHBhcnNlX1VSTE1vbmlrZXIoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCksIHN0YXJ0ID0gYmxvYi5sO1xuXHR2YXIgZXh0cmEgPSBmYWxzZTtcblx0aWYobGVuID4gMjQpIHtcblx0XHQvKiBsb29rIGFoZWFkICovXG5cdFx0YmxvYi5sICs9IGxlbiAtIDI0O1xuXHRcdGlmKGJsb2IucmVhZF9zaGlmdCgxNikgPT09IFwiNzk1ODgxZjQzYjFkN2Y0OGFmMmM4MjVkYzQ4NTI3NjNcIikgZXh0cmEgPSB0cnVlO1xuXHRcdGJsb2IubCA9IHN0YXJ0O1xuXHR9XG5cdHZhciB1cmwgPSBibG9iLnJlYWRfc2hpZnQoKGV4dHJhP2xlbi0yNDpsZW4pPj4xLCAndXRmMTZsZScpLnJlcGxhY2UoY2hyMCxcIlwiKTtcblx0aWYoZXh0cmEpIGJsb2IubCArPSAyNDtcblx0cmV0dXJuIHVybDtcbn1cblxuLyogW01TLU9TSEFSRURdIDIuMy43LjggRmlsZU1vbmlrZXIgVE9ETzogYWxsIGZpZWxkcyAqL1xuZnVuY3Rpb24gcGFyc2VfRmlsZU1vbmlrZXIoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBjQW50aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHByZWFtYmxlID0gXCJcIjsgd2hpbGUoY0FudGktLSA+IDApIHByZWFtYmxlICs9IFwiLi4vXCI7XG5cdHZhciBhbnNpUGF0aCA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBzdHItYW5zaScpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgZW5kU2VydmVyID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZihibG9iLnJlYWRfc2hpZnQoMikgIT0gMHhERUFEKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgRmlsZU1vbmlrZXJcIik7XG5cdHZhciBzeiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoc3ogPT09IDApIHJldHVybiBwcmVhbWJsZSArIGFuc2lQYXRoLnJlcGxhY2UoL1xcXFwvZyxcIi9cIik7XG5cdHZhciBieXRlcyA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoYmxvYi5yZWFkX3NoaWZ0KDIpICE9IDMpIHRocm93IG5ldyBFcnJvcihcIkJhZCBGaWxlTW9uaWtlclwiKTtcblx0dmFyIHVuaWNvZGVQYXRoID0gYmxvYi5yZWFkX3NoaWZ0KGJ5dGVzPj4xLCAndXRmMTZsZScpLnJlcGxhY2UoY2hyMCxcIlwiKTtcblx0cmV0dXJuIHByZWFtYmxlICsgdW5pY29kZVBhdGg7XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy4yIEh5cGVybGlua01vbmlrZXIgVE9ETzogYWxsIHRoZSBtb25pa2VycyAqL1xuZnVuY3Rpb24gcGFyc2VfSHlwZXJsaW5rTW9uaWtlcihibG9iLCBsZW5ndGgpIHtcblx0dmFyIGNsc2lkID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTsgbGVuZ3RoIC09IDE2O1xuXHRzd2l0Y2goY2xzaWQpIHtcblx0XHRjYXNlIFwiZTBjOWVhNzlmOWJhY2UxMThjODIwMGFhMDA0YmE5MGJcIjogcmV0dXJuIHBhcnNlX1VSTE1vbmlrZXIoYmxvYiwgbGVuZ3RoKTtcblx0XHRjYXNlIFwiMDMwMzAwMDAwMDAwMDAwMGMwMDAwMDAwMDAwMDAwNDZcIjogcmV0dXJuIHBhcnNlX0ZpbGVNb25pa2VyKGJsb2IsIGxlbmd0aCk7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgTW9uaWtlciBcIiArIGNsc2lkKTtcblx0fVxufVxuXG4vKiBbTVMtT1NIQVJFRF0gMi4zLjcuOSBIeXBlcmxpbmtTdHJpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIG8gPSBsZW4gPiAwID8gYmxvYi5yZWFkX3NoaWZ0KGxlbiwgJ3V0ZjE2bGUnKS5yZXBsYWNlKGNocjAsIFwiXCIpIDogXCJcIjtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9IeXBlcmxpbmtTdHJpbmcoc3RyLyo6c3RyaW5nKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDYgKyBzdHIubGVuZ3RoICogMik7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSArIHN0ci5sZW5ndGgpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSBvLndyaXRlX3NoaWZ0KDIsIHN0ci5jaGFyQ29kZUF0KGkpKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PU0hBUkVEXSAyLjMuNy4xIEh5cGVybGluayBPYmplY3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0h5cGVybGluayhibG9iLCBsZW5ndGgpLyo6SHlwZXJsaW5rKi8ge1xuXHR2YXIgZW5kID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgc1ZlciA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0aWYoc1ZlciAhPT0gMikgdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHN0cmVhbVZlcnNpb246IFwiICsgc1Zlcik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBkaXNwbGF5TmFtZSwgdGFyZ2V0RnJhbWVOYW1lLCBtb25pa2VyLCBvbGVNb25pa2VyLCBMb2M9XCJcIiwgZ3VpZCwgZmlsZVRpbWU7XG5cdGlmKGZsYWdzICYgMHgwMDEwKSBkaXNwbGF5TmFtZSA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZihmbGFncyAmIDB4MDA4MCkgdGFyZ2V0RnJhbWVOYW1lID0gcGFyc2VfSHlwZXJsaW5rU3RyaW5nKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKChmbGFncyAmIDB4MDEwMSkgPT09IDB4MDEwMSkgbW9uaWtlciA9IHBhcnNlX0h5cGVybGlua1N0cmluZyhibG9iLCBlbmQgLSBibG9iLmwpO1xuXHRpZigoZmxhZ3MgJiAweDAxMDEpID09PSAweDAwMDEpIG9sZU1vbmlrZXIgPSBwYXJzZV9IeXBlcmxpbmtNb25pa2VyKGJsb2IsIGVuZCAtIGJsb2IubCk7XG5cdGlmKGZsYWdzICYgMHgwMDA4KSBMb2MgPSBwYXJzZV9IeXBlcmxpbmtTdHJpbmcoYmxvYiwgZW5kIC0gYmxvYi5sKTtcblx0aWYoZmxhZ3MgJiAweDAwMjApIGd1aWQgPSBibG9iLnJlYWRfc2hpZnQoMTYpO1xuXHRpZihmbGFncyAmIDB4MDA0MCkgZmlsZVRpbWUgPSBwYXJzZV9GSUxFVElNRShibG9iLyosIDgqLyk7XG5cdGJsb2IubCA9IGVuZDtcblx0dmFyIHRhcmdldCA9IHRhcmdldEZyYW1lTmFtZXx8bW9uaWtlcnx8b2xlTW9uaWtlcnx8XCJcIjtcblx0aWYodGFyZ2V0ICYmIExvYykgdGFyZ2V0Kz1cIiNcIitMb2M7XG5cdGlmKCF0YXJnZXQpIHRhcmdldCA9IFwiI1wiICsgTG9jO1xuXHRpZigoZmxhZ3MgJiAweDAwMDIpICYmIHRhcmdldC5jaGFyQXQoMCkgPT0gXCIvXCIgJiYgdGFyZ2V0LmNoYXJBdCgxKSAhPSBcIi9cIikgdGFyZ2V0ID0gXCJmaWxlOi8vXCIgKyB0YXJnZXQ7XG5cdHZhciBvdXQgPSAoe1RhcmdldDp0YXJnZXR9Lyo6YW55Ki8pO1xuXHRpZihndWlkKSBvdXQuZ3VpZCA9IGd1aWQ7XG5cdGlmKGZpbGVUaW1lKSBvdXQudGltZSA9IGZpbGVUaW1lO1xuXHRpZihkaXNwbGF5TmFtZSkgb3V0LlRvb2x0aXAgPSBkaXNwbGF5TmFtZTtcblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0h5cGVybGluayhobCkge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig1MTIpLCBpID0gMDtcblx0dmFyIFRhcmdldCA9IGhsLlRhcmdldDtcblx0aWYoVGFyZ2V0LnNsaWNlKDAsNykgPT0gXCJmaWxlOi8vXCIpIFRhcmdldCA9IFRhcmdldC5zbGljZSg3KTtcblx0dmFyIGhhc2hpZHggPSBUYXJnZXQuaW5kZXhPZihcIiNcIik7XG5cdHZhciBGID0gaGFzaGlkeCA+IC0xID8gMHgxZiA6IDB4MTc7XG5cdHN3aXRjaChUYXJnZXQuY2hhckF0KDApKSB7IGNhc2UgXCIjXCI6IEY9MHgxYzsgYnJlYWs7IGNhc2UgXCIuXCI6IEYmPX4yOyBicmVhazsgfVxuXHRvdXQud3JpdGVfc2hpZnQoNCwyKTsgb3V0LndyaXRlX3NoaWZ0KDQsIEYpO1xuXHR2YXIgZGF0YSA9IFs4LDY4MTU4MjcsNjYxOTIzNyw0ODQ5NzgwLDgzXTsgZm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDQsIGRhdGFbaV0pO1xuXHRpZihGID09IDB4MUMpIHtcblx0XHRUYXJnZXQgPSBUYXJnZXQuc2xpY2UoMSk7XG5cdFx0d3JpdGVfSHlwZXJsaW5rU3RyaW5nKFRhcmdldCwgb3V0KTtcblx0fSBlbHNlIGlmKEYgJiAweDAyKSB7XG5cdFx0ZGF0YSA9IFwiZTAgYzkgZWEgNzkgZjkgYmEgY2UgMTEgOGMgODIgMDAgYWEgMDAgNGIgYTkgMGJcIi5zcGxpdChcIiBcIik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KGRhdGFbaV0sIDE2KSk7XG5cdFx0dmFyIFByZXRhcmdldCA9IGhhc2hpZHggPiAtMSA/IFRhcmdldC5zbGljZSgwLCBoYXNoaWR4KSA6IFRhcmdldDtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMiooUHJldGFyZ2V0Lmxlbmd0aCArIDEpKTtcblx0XHRmb3IoaSA9IDA7IGkgPCBQcmV0YXJnZXQubGVuZ3RoOyArK2kpIG91dC53cml0ZV9zaGlmdCgyLCBQcmV0YXJnZXQuY2hhckNvZGVBdChpKSk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdGlmKEYgJiAweDA4KSB3cml0ZV9IeXBlcmxpbmtTdHJpbmcoaGFzaGlkeCA+IC0xID8gVGFyZ2V0LnNsaWNlKGhhc2hpZHgrMSk6IFwiXCIsIG91dCk7XG5cdH0gZWxzZSB7XG5cdFx0ZGF0YSA9IFwiMDMgMDMgMDAgMDAgMDAgMDAgMDAgMDAgYzAgMDAgMDAgMDAgMDAgMDAgMDAgNDZcIi5zcGxpdChcIiBcIik7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDEsIHBhcnNlSW50KGRhdGFbaV0sIDE2KSk7XG5cdFx0dmFyIFAgPSAwO1xuXHRcdHdoaWxlKFRhcmdldC5zbGljZShQKjMsUCozKzMpPT1cIi4uL1wifHxUYXJnZXQuc2xpY2UoUCozLFAqMyszKT09XCIuLlxcXFxcIikgKytQO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCBQKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgVGFyZ2V0Lmxlbmd0aCAtIDMgKiBQICsgMSk7XG5cdFx0Zm9yKGkgPSAwOyBpIDwgVGFyZ2V0Lmxlbmd0aCAtIDMgKiBQOyArK2kpIG91dC53cml0ZV9zaGlmdCgxLCBUYXJnZXQuY2hhckNvZGVBdChpICsgMyAqIFApICYgMHhGRik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweERFQUQpO1xuXHRcdGZvcihpID0gMDsgaSA8IDY7ICsraSkgb3V0LndyaXRlX3NoaWZ0KDQsIDApO1xuXHR9XG5cdHJldHVybiBvdXQuc2xpY2UoMCwgb3V0LmwpO1xufVxuXG4vKiAyLjUuMTc4IExvbmdSR0JBICovXG5mdW5jdGlvbiBwYXJzZV9Mb25nUkdCQShibG9iLyo6OiwgbGVuZ3RoKi8pIHsgdmFyIHIgPSBibG9iLnJlYWRfc2hpZnQoMSksIGcgPSBibG9iLnJlYWRfc2hpZnQoMSksIGIgPSBibG9iLnJlYWRfc2hpZnQoMSksIGEgPSBibG9iLnJlYWRfc2hpZnQoMSk7IHJldHVybiBbcixnLGIsYV07IH1cblxuLyogMi41LjE3NyBMb25nUkdCICovXG5mdW5jdGlvbiBwYXJzZV9Mb25nUkdCKGJsb2IsIGxlbmd0aCkgeyB2YXIgeCA9IHBhcnNlX0xvbmdSR0JBKGJsb2IsIGxlbmd0aCk7IHhbM10gPSAwOyByZXR1cm4geDsgfVxuXG5cbi8qIFtNUy1YTFNdIDIuNS4xOSAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQ2VsbChibG9iLyo6OiwgbGVuZ3RoKi8pLyo6Q2VsbCovIHtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyAvLyAwLWluZGV4ZWRcblx0dmFyIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGl4ZmUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiAoe3I6cncsIGM6Y29sLCBpeGZlOml4ZmV9Lyo6YW55Ki8pO1xufVxuZnVuY3Rpb24gd3JpdGVfWExTQ2VsbChSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgaXhmZS8qOj9udW1iZXIqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaXhmZXx8MCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTM0ICovXG5mdW5jdGlvbiBwYXJzZV9mcnRIZWFkZXIoYmxvYikge1xuXHR2YXIgcnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gVE9ETzogcGFyc2UgdGhlc2UgZmxhZ3Ncblx0YmxvYi5sICs9IDg7XG5cdHJldHVybiB7dHlwZTogcnQsIGZsYWdzOiBmbGFnc307XG59XG5cblxuXG5mdW5jdGlvbiBwYXJzZV9PcHRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7IHJldHVybiBsZW5ndGggPT09IDAgPyBcIlwiIDogcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCBsZW5ndGgsIG9wdHMpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4zNDQgKi9cbmZ1bmN0aW9uIHBhcnNlX1hUSShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHcgPSBvcHRzLmJpZmYgPiA4ID8gNCA6IDI7XG5cdHZhciBpU3VwQm9vayA9IGJsb2IucmVhZF9zaGlmdCh3KSwgaXRhYkZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcsJ2knKSwgaXRhYkxhc3QgPSBibG9iLnJlYWRfc2hpZnQodywnaScpO1xuXHRyZXR1cm4gW2lTdXBCb29rLCBpdGFiRmlyc3QsIGl0YWJMYXN0XTtcbn1cblxuLyogW01TLVhMU10gMi41LjIxOCAqL1xuZnVuY3Rpb24gcGFyc2VfUmtSZWMoYmxvYikge1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIFJLID0gcGFyc2VfUmtOdW1iZXIoYmxvYik7XG5cdHJldHVybiBbaXhmZSwgUktdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMSAqL1xuZnVuY3Rpb24gcGFyc2VfQWRkaW5VZGYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSA0OyBsZW5ndGggLT0gNDtcblx0dmFyIGwgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciB1ZGZOYW1lID0gcGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmcoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIGNiID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRsIC09IGJsb2IubDtcblx0aWYoY2IgIT09IGwpIHRocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBBZGRpblVkZjogcGFkZGluZyA9IFwiICsgbCArIFwiICE9IFwiICsgY2IpO1xuXHRibG9iLmwgKz0gY2I7XG5cdHJldHVybiB1ZGZOYW1lO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMjA5IFRPRE86IENoZWNrIHNpemVzICovXG5mdW5jdGlvbiBwYXJzZV9SZWY4VShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHJ3Rmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByd0xhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2xGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNvbExhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7czp7Yzpjb2xGaXJzdCwgcjpyd0ZpcnN0fSwgZTp7Yzpjb2xMYXN0LHI6cndMYXN0fX07XG59XG5mdW5jdGlvbiB3cml0ZV9SZWY4VShyLyo6UmFuZ2UqLywgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5zLnIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHIuZS5yKTtcblx0by53cml0ZV9zaGlmdCgyLCByLnMuYyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgci5lLmMpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjIxMSAqL1xuZnVuY3Rpb24gcGFyc2VfUmVmVShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHJ3Rmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByd0xhc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjb2xGaXJzdCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIGNvbExhc3QgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiB7czp7Yzpjb2xGaXJzdCwgcjpyd0ZpcnN0fSwgZTp7Yzpjb2xMYXN0LHI6cndMYXN0fX07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMDcgKi9cbnZhciBwYXJzZV9SZWYgPSBwYXJzZV9SZWZVO1xuXG4vKiBbTVMtWExTXSAyLjUuMTQzICovXG5mdW5jdGlvbiBwYXJzZV9GdENtbyhibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBvdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCs9MTI7XG5cdHJldHVybiBbaWQsIG90LCBmbGFnc107XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX0Z0TnRzKGJsb2IpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRibG9iLmwgKz0gNDtcblx0YmxvYi5sICs9IDE2OyAvLyBHVUlEIFRPRE9cblx0b3V0LmZTaGFyZWROb3RlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNDtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU10gMi41LjE0MiAqL1xuZnVuY3Rpb24gcGFyc2VfRnRDZihibG9iKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0YmxvYi5sICs9IDQ7XG5cdGJsb2IuY2YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xNDAgLSAyLjUuMTU0IGFuZCBmcmllbmRzICovXG5mdW5jdGlvbiBwYXJzZV9GdFNraXAoYmxvYikgeyBibG9iLmwgKz0gMjsgYmxvYi5sICs9IGJsb2IucmVhZF9zaGlmdCgyKTsgfVxudmFyIEZ0VGFiID0ge1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdEVuZCAqL1xuXHQvKjo6WyovMHgwNC8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdE1hY3JvICovXG5cdC8qOjpbKi8weDA1Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0QnV0dG9uICovXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0R21vICovXG5cdC8qOjpbKi8weDA3Lyo6Ol0qLzogcGFyc2VfRnRDZiwgICAgICAgIC8qIEZ0Q2YgKi9cblx0Lyo6OlsqLzB4MDgvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRQaW9HcmJpdCAqL1xuXHQvKjo6WyovMHgwOS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFBpY3RGbWxhICovXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0Q2JscyAqL1xuXHQvKjo6WyovMHgwQi8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFJibyAqL1xuXHQvKjo6WyovMHgwQy8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFNicyAqL1xuXHQvKjo6WyovMHgwRC8qOjpdKi86IHBhcnNlX0Z0TnRzLCAgICAgICAvKiBGdE50cyAqL1xuXHQvKjo6WyovMHgwRS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFNic0ZtbGEgKi9cblx0Lyo6OlsqLzB4MEYvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRHYm9EYXRhICovXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogcGFyc2VfRnRTa2lwLCAgICAgIC8qIEZ0RWRvRGF0YSAqL1xuXHQvKjo6WyovMHgxMS8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdFJib0RhdGEgKi9cblx0Lyo6OlsqLzB4MTIvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRDYmxzRGF0YSAqL1xuXHQvKjo6WyovMHgxMy8qOjpdKi86IHBhcnNlX0Z0U2tpcCwgICAgICAvKiBGdExic0RhdGEgKi9cblx0Lyo6OlsqLzB4MTQvKjo6XSovOiBwYXJzZV9GdFNraXAsICAgICAgLyogRnRDYmxzRm1sYSAqL1xuXHQvKjo6WyovMHgxNS8qOjpdKi86IHBhcnNlX0Z0Q21vXG59O1xuZnVuY3Rpb24gcGFyc2VfRnRBcnJheShibG9iLCBsZW5ndGgvKjo6LCBvdCovKSB7XG5cdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBmdHMgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGd0KSB7XG5cdFx0dmFyIGZ0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGJsb2IubC09Mjtcblx0XHR0cnkge1xuXHRcdFx0ZnRzLnB1c2goRnRUYWJbZnRdKGJsb2IsIHRndCAtIGJsb2IubCkpO1xuXHRcdH0gY2F0Y2goZSkgeyBibG9iLmwgPSB0Z3Q7IHJldHVybiBmdHM7IH1cblx0fVxuXHRpZihibG9iLmwgIT0gdGd0KSBibG9iLmwgPSB0Z3Q7IC8vdGhyb3cgbmV3IEVycm9yKFwiYmFkIE9iamVjdCBGdC1zZXF1ZW5jZVwiKTtcblx0cmV0dXJuIGZ0cztcbn1cblxuLyogLS0tIDIuNCBSZWNvcmRzIC0tLSAqL1xuXG4vKiBbTVMtWExTXSAyLjQuMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JPRihibG9iLCBsZW5ndGgpIHtcblx0dmFyIG8gPSB7QklGRlZlcjowLCBkdDowfTtcblx0by5CSUZGVmVyID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBsZW5ndGggLT0gMjtcblx0aWYobGVuZ3RoID49IDIpIHsgby5kdCA9IGJsb2IucmVhZF9zaGlmdCgyKTsgYmxvYi5sIC09IDI7IH1cblx0c3dpdGNoKG8uQklGRlZlcikge1xuXHRcdGNhc2UgMHgwNjAwOiAvKiBCSUZGOCAqL1xuXHRcdGNhc2UgMHgwNTAwOiAvKiBCSUZGNSAqL1xuXHRcdGNhc2UgMHgwNDAwOiAvKiBCSUZGNCAqL1xuXHRcdGNhc2UgMHgwMzAwOiAvKiBCSUZGMyAqL1xuXHRcdGNhc2UgMHgwMjAwOiAvKiBCSUZGMiAqL1xuXHRcdGNhc2UgMHgwMDAyOiBjYXNlIDB4MDAwNzogLyogQklGRjIgKi9cblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGlmKGxlbmd0aCA+IDYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgQklGRiBWZXIgXCIgKyBvLkJJRkZWZXIpO1xuXHR9XG5cblx0YmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfQk9GKHdiLyo6V29ya2Jvb2sqLywgdC8qOm51bWJlciovLCBvKSB7XG5cdHZhciBoID0gMHgwNjAwLCB3ID0gMTY7XG5cdHN3aXRjaChvLmJvb2tUeXBlKSB7XG5cdFx0Y2FzZSAnYmlmZjgnOiBicmVhaztcblx0XHRjYXNlICdiaWZmNSc6IGggPSAweDA1MDA7IHcgPSA4OyBicmVhaztcblx0XHRjYXNlICdiaWZmNCc6IGggPSAweDAwMDQ7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlICdiaWZmMyc6IGggPSAweDAwMDM7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlICdiaWZmMic6IGggPSAweDAwMDI7IHcgPSA0OyBicmVhaztcblx0XHRjYXNlICd4bGEnOiBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCBCSUZGIHZlcnNpb25cIik7XG5cdH1cblx0dmFyIG91dCA9IG5ld19idWYodyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCBoKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHQpO1xuXHRpZih3ID4gNCkgb3V0LndyaXRlX3NoaWZ0KDIsIDB4NzI2Mik7XG5cdGlmKHcgPiA2KSBvdXQud3JpdGVfc2hpZnQoMiwgMHgwN0NEKTtcblx0aWYodyA+IDgpIHtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHhDMDA5KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDAxKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwNzA2KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDAwKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xNDYgKi9cbmZ1bmN0aW9uIHBhcnNlX0ludGVyZmFjZUhkcihibG9iLCBsZW5ndGgpIHtcblx0aWYobGVuZ3RoID09PSAwKSByZXR1cm4gMHgwNGIwO1xuXHRpZigoYmxvYi5yZWFkX3NoaWZ0KDIpKSE9PTB4MDRiMCl7LyogZW1wdHkgKi99XG5cdHJldHVybiAweDA0YjA7XG59XG5cblxuLyogW01TLVhMU10gMi40LjM0OSAqL1xuZnVuY3Rpb24gcGFyc2VfV3JpdGVBY2Nlc3MoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMuZW5jKSB7IGJsb2IubCArPSBsZW5ndGg7IHJldHVybiBcIlwiOyB9XG5cdHZhciBsID0gYmxvYi5sO1xuXHQvLyBUT0RPOiBtYWtlIHN1cmUgWExVbmljb2RlU3RyaW5nIGRvZXNudCBvdmVycnVuXG5cdHZhciBVc2VyTmFtZSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzIoYmxvYiwgMCwgb3B0cyk7XG5cdGJsb2IucmVhZF9zaGlmdChsZW5ndGggKyBsIC0gYmxvYi5sKTtcblx0cmV0dXJuIFVzZXJOYW1lO1xufVxuZnVuY3Rpb24gd3JpdGVfV3JpdGVBY2Nlc3Mocy8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHZhciBiOCA9ICFvcHRzIHx8IG9wdHMuYmlmZiA9PSA4O1xuXHR2YXIgbyA9IG5ld19idWYoYjggPyAxMTIgOiA1NCk7XG5cdG8ud3JpdGVfc2hpZnQob3B0cy5iaWZmID09IDggPyAyIDogMSwgNyk7XG5cdGlmKGI4KSBvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4MzMzMzY4NTMpO1xuXHRvLndyaXRlX3NoaWZ0KDQsICgweDAwNTM0QTc0IHwgKGI4ID8gMCA6IDB4MjAwMDAwMDApKSk7XG5cdHdoaWxlKG8ubCA8IG8ubGVuZ3RoKSBvLndyaXRlX3NoaWZ0KDEsIChiOCA/IDAgOiAzMikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjM1MSAqL1xuZnVuY3Rpb24gcGFyc2VfV3NCb29sKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZmxhZ3MgPSBvcHRzICYmIG9wdHMuYmlmZiA9PSA4IHx8IGxlbmd0aCA9PSAyID8gYmxvYi5yZWFkX3NoaWZ0KDIpIDogKGJsb2IubCArPSBsZW5ndGgsIDApO1xuXHRyZXR1cm4geyBmRGlhbG9nOiBmbGFncyAmIDB4MTAsIGZCZWxvdzogZmxhZ3MgJiAweDQwLCBmUmlnaHQ6IGZsYWdzICYgMHg4MCB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjggKi9cbmZ1bmN0aW9uIHBhcnNlX0JvdW5kU2hlZXQ4KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgcG9zID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgaGlkZGVuID0gYmxvYi5yZWFkX3NoaWZ0KDEpICYgMHgwMztcblx0dmFyIGR0ID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRzd2l0Y2goZHQpIHtcblx0XHRjYXNlIDA6IGR0ID0gJ1dvcmtzaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgMTogZHQgPSAnTWFjcm9zaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgMjogZHQgPSAnQ2hhcnRzaGVldCc7IGJyZWFrO1xuXHRcdGNhc2UgNjogZHQgPSAnVkJBTW9kdWxlJzsgYnJlYWs7XG5cdH1cblx0dmFyIG5hbWUgPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCAwLCBvcHRzKTtcblx0aWYobmFtZS5sZW5ndGggPT09IDApIG5hbWUgPSBcIlNoZWV0MVwiO1xuXHRyZXR1cm4geyBwb3M6cG9zLCBoczpoaWRkZW4sIGR0OmR0LCBuYW1lOm5hbWUgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JvdW5kU2hlZXQ4KGRhdGEsIG9wdHMpIHtcblx0dmFyIHcgPSAoIW9wdHMgfHwgb3B0cy5iaWZmID49IDggPyAyIDogMSk7XG5cdHZhciBvID0gbmV3X2J1Zig4ICsgdyAqIGRhdGEubmFtZS5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEucG9zKTtcblx0by53cml0ZV9zaGlmdCgxLCBkYXRhLmhzIHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGRhdGEuZHQpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGRhdGEubmFtZS5sZW5ndGgpO1xuXHRpZihvcHRzLmJpZmYgPj0gOCkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCh3ICogZGF0YS5uYW1lLmxlbmd0aCwgZGF0YS5uYW1lLCBvcHRzLmJpZmYgPCA4ID8gJ3NiY3MnIDogJ3V0ZjE2bGUnKTtcblx0dmFyIG91dCA9IG8uc2xpY2UoMCwgby5sKTtcblx0b3V0LmwgPSBvLmw7IHJldHVybiBvdXQ7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfU1NUKGJsb2IsIGxlbmd0aCkvKjpTU1QqLyB7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW5ndGg7XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciB1Y250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgc3Rycy8qOlNTVCovID0gKFtdLyo6YW55Ki8pO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IHVjbnQgJiYgYmxvYi5sIDwgZW5kOyArK2kpIHtcblx0XHRzdHJzLnB1c2gocGFyc2VfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nKGJsb2IpKTtcblx0fVxuXHRzdHJzLkNvdW50ID0gY250OyBzdHJzLlVuaXF1ZSA9IHVjbnQ7XG5cdHJldHVybiBzdHJzO1xufVxuZnVuY3Rpb24gd3JpdGVfU1NUKHNzdCwgb3B0cykge1xuXHR2YXIgaGVhZGVyID0gbmV3X2J1Zig4KTtcblx0aGVhZGVyLndyaXRlX3NoaWZ0KDQsIHNzdC5Db3VudCk7XG5cdGhlYWRlci53cml0ZV9zaGlmdCg0LCBzc3QuVW5pcXVlKTtcblx0dmFyIHN0cnMgPSBbXTtcblx0Zm9yKHZhciBqID0gMDsgaiA8IHNzdC5sZW5ndGg7ICsraikgc3Ryc1tqXSA9IHdyaXRlX1hMVW5pY29kZVJpY2hFeHRlbmRlZFN0cmluZyhzc3Rbal0sIG9wdHMpO1xuXHR2YXIgbyA9IGJjb25jYXQoW2hlYWRlcl0uY29uY2F0KHN0cnMpKTtcblx0Lyo6OigqL28vKjo6IDphbnkpKi8ucGFydHMgPSBbaGVhZGVyLmxlbmd0aF0uY29uY2F0KHN0cnMubWFwKGZ1bmN0aW9uKHN0cikgeyByZXR1cm4gc3RyLmxlbmd0aDsgfSkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjEwNyAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0U1NUKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgZXh0c3N0ID0ge307XG5cdGV4dHNzdC5kc3N0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gbGVuZ3RoLTI7XG5cdHJldHVybiBleHRzc3Q7XG59XG5cblxuLyogW01TLVhMU10gMi40LjIyMSBUT0RPOiBjaGVjayBCSUZGMi00ICovXG5mdW5jdGlvbiBwYXJzZV9Sb3coYmxvYikge1xuXHR2YXIgeiA9ICh7fS8qOmFueSovKTtcblx0ei5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR6LmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHouY250ID0gYmxvYi5yZWFkX3NoaWZ0KDIpIC0gei5jO1xuXHR2YXIgbWl5UncgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0OyAvLyByZXNlcnZlZCgyKSwgdW51c2VkKDIpXG5cdHZhciBmbGFncyA9IGJsb2IucmVhZF9zaGlmdCgxKTsgLy8gdmFyaW91cyBmbGFnc1xuXHRibG9iLmwgKz0gMzsgLy8gcmVzZXJ2ZWQoOCksIGl4ZmUoMTIpLCBmbGFncyg0KVxuXHRpZihmbGFncyAmIDB4MDcpIHoubGV2ZWwgPSBmbGFncyAmIDB4MDc7XG5cdC8vIGNvbGxhcHNlZDogZmxhZ3MgJiAweDEwXG5cdGlmKGZsYWdzICYgMHgyMCkgei5oaWRkZW4gPSB0cnVlO1xuXHRpZihmbGFncyAmIDB4NDApIHouaHB0ID0gbWl5UncgLyAyMDtcblx0cmV0dXJuIHo7XG59XG5cblxuLyogW01TLVhMU10gMi40LjEyNSAqL1xuZnVuY3Rpb24gcGFyc2VfRm9yY2VGdWxsQ2FsY3VsYXRpb24oYmxvYikge1xuXHR2YXIgaGVhZGVyID0gcGFyc2VfZnJ0SGVhZGVyKGJsb2IpO1xuXHRpZihoZWFkZXIudHlwZSAhPSAweDA4QTMpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgRnV0dXJlIFJlY29yZCBcIiArIGhlYWRlci50eXBlKTtcblx0dmFyIGZ1bGxjYWxjID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gZnVsbGNhbGMgIT09IDB4MDtcbn1cblxuXG5cblxuXG4vKiBbTVMtWExTXSAyLjQuMjE1IHJ0ICovXG5mdW5jdGlvbiBwYXJzZV9SZWNhbGNJZChibG9iKSB7XG5cdGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIGJsb2IucmVhZF9zaGlmdCg0KTtcbn1cblxuLyogW01TLVhMU10gMi40Ljg3ICovXG5mdW5jdGlvbiBwYXJzZV9EZWZhdWx0Um93SGVpZ2h0KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZiA9IDA7XG5cdGlmKCEob3B0cyAmJiBvcHRzLmJpZmYgPT0gMikpIHtcblx0XHRmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR9XG5cdHZhciBtaXlSdyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoKG9wdHMgJiYgb3B0cy5iaWZmID09IDIpKSB7XG5cdFx0ZiA9IDEgLSAobWl5UncgPj4gMTUpOyBtaXlSdyAmPSAweDdmZmY7XG5cdH1cblx0dmFyIGZsID0ge1Vuc3luY2VkOmYmMSxEeVplcm86KGYmMik+PjEsRXhBc2M6KGYmNCk+PjIsRXhEc2M6KGYmOCk+PjN9O1xuXHRyZXR1cm4gW2ZsLCBtaXlSd107XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4zNDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfV2luZG93MShibG9iKSB7XG5cdHZhciB4V24gPSBibG9iLnJlYWRfc2hpZnQoMiksIHlXbiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZHhXbiA9IGJsb2IucmVhZF9zaGlmdCgyKSwgZHlXbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpVGFiQ3VyID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpVGFiRmlyc3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjdGFiU2VsID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCB3VGFiUmF0aW8gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7IFBvczogW3hXbiwgeVduXSwgRGltOiBbZHhXbiwgZHlXbl0sIEZsYWdzOiBmbGFncywgQ3VyVGFiOiBpVGFiQ3VyLFxuXHRcdEZpcnN0VGFiOiBpVGFiRmlyc3QsIFNlbGVjdGVkOiBjdGFiU2VsLCBUYWJSYXRpbzogd1RhYlJhdGlvIH07XG59XG5mdW5jdGlvbiB3cml0ZV9XaW5kb3cxKC8qOjpvcHRzKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE4KTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAweDcyNjApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4NDRjMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgzOCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMHgwMWY0KTtcblx0cmV0dXJuIG87XG59XG4vKiBbTVMtWExTXSAyLjQuMzQ2IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1dpbmRvdzIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmID49IDIgJiYgb3B0cy5iaWZmIDwgNSkgcmV0dXJuIHt9O1xuXHR2YXIgZiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIHsgUlRMOiBmICYgMHg0MCB9O1xufVxuZnVuY3Rpb24gd3JpdGVfV2luZG93Mih2aWV3KSB7XG5cdHZhciBvID0gbmV3X2J1ZigxOCksIGYgPSAweDZiNjtcblx0aWYodmlldyAmJiB2aWV3LlJUTCkgZiB8PSAweDQwO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGYpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDY0KTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODkgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUGFuZSgvKmJsb2IsIGxlbmd0aCwgb3B0cyovKSB7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMjIgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9udChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIG8vKjphbnkqLyA9IHtcblx0XHRkeUhlaWdodDogYmxvYi5yZWFkX3NoaWZ0KDIpLFxuXHRcdGZsOiBibG9iLnJlYWRfc2hpZnQoMilcblx0fTtcblx0c3dpdGNoKChvcHRzICYmIG9wdHMuYmlmZikgfHwgOCkge1xuXHRcdGNhc2UgMjogYnJlYWs7XG5cdFx0Y2FzZSAzOiBjYXNlIDQ6IGJsb2IubCArPSAyOyBicmVhaztcblx0XHRkZWZhdWx0OiBibG9iLmwgKz0gMTA7IGJyZWFrO1xuXHR9XG5cdG8ubmFtZSA9IHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIDAsIG9wdHMpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0ZvbnQoZGF0YSwgb3B0cykge1xuXHR2YXIgbmFtZSA9IGRhdGEubmFtZSB8fCBcIkFyaWFsXCI7XG5cdHZhciBiNSA9IChvcHRzICYmIChvcHRzLmJpZmYgPT0gNSkpLCB3ID0gKGI1ID8gKDE1ICsgbmFtZS5sZW5ndGgpIDogKDE2ICsgMiAqIG5hbWUubGVuZ3RoKSk7XG5cdHZhciBvID0gbmV3X2J1Zih3KTtcblx0by53cml0ZV9zaGlmdCgyLCAoZGF0YS5zeiB8fCAxMikgKiAyMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgNDAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgxLCBuYW1lLmxlbmd0aCk7XG5cdGlmKCFiNSkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgoYjUgPyAxIDogMikgKiBuYW1lLmxlbmd0aCwgbmFtZSwgKGI1ID8gXCJzYmNzXCIgOiBcInV0ZjE2bGVcIikpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjE0OSAqL1xuZnVuY3Rpb24gcGFyc2VfTGFiZWxTc3QoYmxvYikge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0NlbGwoYmxvYik7XG5cdGNlbGwuaXNzdCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9MYWJlbFNzdChSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgdi8qOm51bWJlciovLCBvcy8qOm51bWJlciovIC8qOjosIG9wdHMqLykge1xuXHR2YXIgbyA9IG5ld19idWYoMTApO1xuXHR3cml0ZV9YTFNDZWxsKFIsIEMsIG9zLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCB2KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNDggKi9cbmZ1bmN0aW9uIHBhcnNlX0xhYmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmZndWVzcyAmJiBvcHRzLmJpZmYgPT0gMikgb3B0cy5iaWZmID0gNTtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMikgYmxvYi5sKys7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcoYmxvYiwgdGFyZ2V0IC0gYmxvYi5sLCBvcHRzKTtcblx0Y2VsbC52YWwgPSBzdHI7XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfTGFiZWwoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYvKjpzdHJpbmcqLywgb3MvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgYjggPSAhb3B0cyB8fCBvcHRzLmJpZmYgPT0gODtcblx0dmFyIG8gPSBuZXdfYnVmKDYgKyAyICsgKCtiOCkgKyAoMSArIGI4KSAqIHYubGVuZ3RoKTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdi5sZW5ndGgpO1xuXHRpZihiOCkgby53cml0ZV9zaGlmdCgxLCAxKTtcblx0by53cml0ZV9zaGlmdCgoMSArIGI4KSAqIHYubGVuZ3RoLCB2LCBiOCA/ICd1dGYxNmxlJyA6ICdzYmNzJyk7XG5cdHJldHVybiBvO1xufVxuXG5cbi8qIFtNUy1YTFNdIDIuNC4xMjYgTnVtYmVyIEZvcm1hdHMgKi9cbmZ1bmN0aW9uIHBhcnNlX0Zvcm1hdChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIG51bUZtdElkID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZm10c3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIFtudW1GbXRJZCwgZm10c3RyXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm1hdChpLyo6bnVtYmVyKi8sIGYvKjpzdHJpbmcqLywgb3B0cywgbykge1xuXHR2YXIgYjUgPSAob3B0cyAmJiAob3B0cy5iaWZmID09IDUpKTtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKGI1ID8gKDMgKyBmLmxlbmd0aCkgOiAoNSArIDIgKiBmLmxlbmd0aCkpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGkpO1xuXHRvLndyaXRlX3NoaWZ0KChiNSA/IDEgOiAyKSwgZi5sZW5ndGgpO1xuXHRpZighYjUpIG8ud3JpdGVfc2hpZnQoMSwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoKGI1ID8gMSA6IDIpICogZi5sZW5ndGgsIGYsIChiNSA/ICdzYmNzJyA6ICd1dGYxNmxlJykpO1xuXHR2YXIgb3V0ID0gKG8ubGVuZ3RoID4gby5sKSA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG5cdGlmKG91dC5sID09IG51bGwpIG91dC5sID0gb3V0Lmxlbmd0aDtcblx0cmV0dXJuIG91dDtcbn1cbnZhciBwYXJzZV9CSUZGMkZvcm1hdCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzI7XG5cbi8qIFtNUy1YTFNdIDIuNC45MCAqL1xuZnVuY3Rpb24gcGFyc2VfRGltZW5zaW9ucyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHcgPSBvcHRzLmJpZmYgPT0gOCB8fCAhb3B0cy5iaWZmID8gNCA6IDI7XG5cdHZhciByID0gYmxvYi5yZWFkX3NoaWZ0KHcpLCBSID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgQyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sID0gZW5kO1xuXHRyZXR1cm4ge3M6IHtyOnIsIGM6Y30sIGU6IHtyOlIsIGM6Q319O1xufVxuZnVuY3Rpb24gd3JpdGVfRGltZW5zaW9ucyhyYW5nZSwgb3B0cykge1xuXHR2YXIgdyA9IG9wdHMuYmlmZiA9PSA4IHx8ICFvcHRzLmJpZmYgPyA0IDogMjtcblx0dmFyIG8gPSBuZXdfYnVmKDIqdyArIDYpO1xuXHRvLndyaXRlX3NoaWZ0KHcsIHJhbmdlLnMucik7XG5cdG8ud3JpdGVfc2hpZnQodywgcmFuZ2UuZS5yICsgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5jKTtcblx0by53cml0ZV9zaGlmdCgyLCByYW5nZS5lLmMgKyAxKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yMjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1JLKGJsb2IpIHtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBya3JlYyA9IHBhcnNlX1JrUmVjKGJsb2IpO1xuXHRyZXR1cm4ge3I6cncsIGM6Y29sLCBpeGZlOnJrcmVjWzBdLCBya251bTpya3JlY1sxXX07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNzUgKi9cbmZ1bmN0aW9uIHBhcnNlX011bFJrKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoIC0gMjtcblx0dmFyIHJ3ID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBjb2wgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBya3JlY3MgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBya3JlY3MucHVzaChwYXJzZV9Sa1JlYyhibG9iKSk7XG5cdGlmKGJsb2IubCAhPT0gdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxSSyByZWFkIGVycm9yXCIpO1xuXHR2YXIgbGFzdGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYocmtyZWNzLmxlbmd0aCAhPSBsYXN0Y29sIC0gY29sICsgMSkgdGhyb3cgbmV3IEVycm9yKFwiTXVsUksgbGVuZ3RoIG1pc21hdGNoXCIpO1xuXHRyZXR1cm4ge3I6cncsIGM6Y29sLCBDOmxhc3Rjb2wsIHJrcmVjOnJrcmVjc307XG59XG4vKiBbTVMtWExTXSAyLjQuMTc0ICovXG5mdW5jdGlvbiBwYXJzZV9NdWxCbGFuayhibG9iLCBsZW5ndGgpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aCAtIDI7XG5cdHZhciBydyA9IGJsb2IucmVhZF9zaGlmdCgyKSwgY29sID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgaXhmZXMgPSBbXTtcblx0d2hpbGUoYmxvYi5sIDwgdGFyZ2V0KSBpeGZlcy5wdXNoKGJsb2IucmVhZF9zaGlmdCgyKSk7XG5cdGlmKGJsb2IubCAhPT0gdGFyZ2V0KSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxCbGFuayByZWFkIGVycm9yXCIpO1xuXHR2YXIgbGFzdGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0aWYoaXhmZXMubGVuZ3RoICE9IGxhc3Rjb2wgLSBjb2wgKyAxKSB0aHJvdyBuZXcgRXJyb3IoXCJNdWxCbGFuayBsZW5ndGggbWlzbWF0Y2hcIik7XG5cdHJldHVybiB7cjpydywgYzpjb2wsIEM6bGFzdGNvbCwgaXhmZTppeGZlc307XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4yMCAyLjUuMjQ5IFRPRE86IGludGVycHJldCB2YWx1ZXMgaGVyZSAqL1xuZnVuY3Rpb24gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYiwgbGVuZ3RoLCBzdHlsZSwgb3B0cykge1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgYSA9IGJsb2IucmVhZF9zaGlmdCg0KSwgYiA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoNCksIGQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8ucGF0dGVyblR5cGUgPSBYTFNGaWxsUGF0dGVybltjID4+IDI2XTtcblxuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm4gbztcblx0by5hbGMgPSBhICYgMHgwNztcblx0by5mV3JhcCA9IChhID4+IDMpICYgMHgwMTtcblx0by5hbGNWID0gKGEgPj4gNCkgJiAweDA3O1xuXHRvLmZKdXN0TGFzdCA9IChhID4+IDcpICYgMHgwMTtcblx0by50cm90ID0gKGEgPj4gOCkgJiAweEZGO1xuXHRvLmNJbmRlbnQgPSAoYSA+PiAxNikgJiAweDBGO1xuXHRvLmZTaHJpbmtUb0ZpdCA9IChhID4+IDIwKSAmIDB4MDE7XG5cdG8uaVJlYWRPcmRlciA9IChhID4+IDIyKSAmIDB4MDI7XG5cdG8uZkF0ck51bSA9IChhID4+IDI2KSAmIDB4MDE7XG5cdG8uZkF0ckZudCA9IChhID4+IDI3KSAmIDB4MDE7XG5cdG8uZkF0ckFsYyA9IChhID4+IDI4KSAmIDB4MDE7XG5cdG8uZkF0ckJkciA9IChhID4+IDI5KSAmIDB4MDE7XG5cdG8uZkF0clBhdCA9IChhID4+IDMwKSAmIDB4MDE7XG5cdG8uZkF0clByb3QgPSAoYSA+PiAzMSkgJiAweDAxO1xuXG5cdG8uZGdMZWZ0ID0gYiAmIDB4MEY7XG5cdG8uZGdSaWdodCA9IChiID4+IDQpICYgMHgwRjtcblx0by5kZ1RvcCA9IChiID4+IDgpICYgMHgwRjtcblx0by5kZ0JvdHRvbSA9IChiID4+IDEyKSAmIDB4MEY7XG5cdG8uaWN2TGVmdCA9IChiID4+IDE2KSAmIDB4N0Y7XG5cdG8uaWN2UmlnaHQgPSAoYiA+PiAyMykgJiAweDdGO1xuXHRvLmdyYml0RGlhZyA9IChiID4+IDMwKSAmIDB4MDM7XG5cblx0by5pY3ZUb3AgPSBjICYgMHg3Rjtcblx0by5pY3ZCb3R0b20gPSAoYyA+PiA3KSAmIDB4N0Y7XG5cdG8uaWN2RGlhZyA9IChjID4+IDE0KSAmIDB4N0Y7XG5cdG8uZGdEaWFnID0gKGMgPj4gMjEpICYgMHgwRjtcblxuXHRvLmljdkZvcmUgPSBkICYgMHg3Rjtcblx0by5pY3ZCYWNrID0gKGQgPj4gNykgJiAweDdGO1xuXHRvLmZzeEJ1dHRvbiA9IChkID4+IDE0KSAmIDB4MDE7XG5cdHJldHVybiBvO1xufVxuLy9mdW5jdGlvbiBwYXJzZV9DZWxsWEYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7cmV0dXJuIHBhcnNlX0NlbGxTdHlsZVhGKGJsb2IsbGVuZ3RoLDAsIG9wdHMpO31cbi8vZnVuY3Rpb24gcGFyc2VfU3R5bGVYRihibG9iLCBsZW5ndGgsIG9wdHMpIHtyZXR1cm4gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYixsZW5ndGgsMSwgb3B0cyk7fVxuXG4vKiBbTVMtWExTXSAyLjQuMzUzIFRPRE86IGFjdHVhbGx5IGRvIHRoaXMgcmlnaHQgKi9cbmZ1bmN0aW9uIHBhcnNlX1hGKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgbyA9IHt9O1xuXHRvLmlmbnQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG8ubnVtRm10SWQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG8uZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG8uZlN0eWxlID0gKG8uZmxhZ3MgPj4gMikgJiAweDAxO1xuXHRsZW5ndGggLT0gNjtcblx0by5kYXRhID0gcGFyc2VfQ2VsbFN0eWxlWEYoYmxvYiwgbGVuZ3RoLCBvLmZTdHlsZSwgb3B0cyk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfWEYoZGF0YSwgaXhmZVAsIG9wdHMsIG8pIHtcblx0dmFyIGI1ID0gKG9wdHMgJiYgKG9wdHMuYmlmZiA9PSA1KSk7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZihiNSA/IDE2IDogMjApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRpZihkYXRhLnN0eWxlKSB7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAoZGF0YS5udW1GbXRJZHx8MCkpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMHhGRkY0KTtcblx0fSBlbHNlIHtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIChkYXRhLm51bUZtdElkfHwwKSk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAoaXhmZVA8PDQpKTtcblx0fVxuXHR2YXIgZiA9IDA7XG5cdGlmKGRhdGEubnVtRm10SWQgPiAwICYmIGI1KSBmIHw9IDB4MDQwMDtcblx0by53cml0ZV9zaGlmdCg0LCBmKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0aWYoIWI1KSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjEzNCAqL1xuZnVuY3Rpb24gcGFyc2VfR3V0cyhibG9iKSB7XG5cdGJsb2IubCArPSA0O1xuXHR2YXIgb3V0ID0gW2Jsb2IucmVhZF9zaGlmdCgyKSwgYmxvYi5yZWFkX3NoaWZ0KDIpXTtcblx0aWYob3V0WzBdICE9PSAwKSBvdXRbMF0tLTtcblx0aWYob3V0WzFdICE9PSAwKSBvdXRbMV0tLTtcblx0aWYob3V0WzBdID4gNyB8fCBvdXRbMV0gPiA3KSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgR3V0dGVyczogXCIgKyBvdXQuam9pbihcInxcIikpO1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfR3V0cyhndXRzLyo6QXJyYXk8bnVtYmVyPiovKSB7XG5cdHZhciBvID0gbmV3X2J1Zig4KTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBndXRzWzBdID8gZ3V0c1swXSArIDEgOiAwKTtcblx0by53cml0ZV9zaGlmdCgyLCBndXRzWzFdID8gZ3V0c1sxXSArIDEgOiAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNCAqL1xuZnVuY3Rpb24gcGFyc2VfQm9vbEVycihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMiB8fCBsZW5ndGggPT0gOSkgKytibG9iLmw7XG5cdHZhciB2YWwgPSBwYXJzZV9CZXMoYmxvYiwgMik7XG5cdGNlbGwudmFsID0gdmFsO1xuXHRjZWxsLnQgPSAodmFsID09PSB0cnVlIHx8IHZhbCA9PT0gZmFsc2UpID8gJ2InIDogJ2UnO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Jvb2xFcnIoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYsIG9zLyo6bnVtYmVyKi8sIG9wdHMsIHQvKjpzdHJpbmcqLykge1xuXHR2YXIgbyA9IG5ld19idWYoOCk7XG5cdHdyaXRlX1hMU0NlbGwoUiwgQywgb3MsIG8pO1xuXHR3cml0ZV9CZXModiwgdCwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTgwIE51bWJlciAqL1xuZnVuY3Rpb24gcGFyc2VfTnVtYmVyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmZndWVzcyAmJiBvcHRzLmJpZmYgPT0gMikgb3B0cy5iaWZmID0gNTtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHR2YXIgeG51bSA9IHBhcnNlX1hudW0oYmxvYiwgOCk7XG5cdGNlbGwudmFsID0geG51bTtcblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiB3cml0ZV9OdW1iZXIoUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIHYsIG9zLyo6OiA6bnVtYmVyLCBvcHRzKi8pIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE0KTtcblx0d3JpdGVfWExTQ2VsbChSLCBDLCBvcywgbyk7XG5cdHdyaXRlX1hudW0odiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG52YXIgcGFyc2VfWExIZWFkZXJGb290ZXIgPSBwYXJzZV9PcHRYTFVuaWNvZGVTdHJpbmc7IC8vIFRPRE86IHBhcnNlIDIuNC4xMzZcblxuLyogW01TLVhMU10gMi40LjI3MSAqL1xuZnVuY3Rpb24gcGFyc2VfU3VwQm9vayhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGN0YWIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdG9wdHMuc2JjY2ggPSBjY2g7XG5cdGlmKGNjaCA9PSAweDA0MDEgfHwgY2NoID09IDB4M0EwMSkgcmV0dXJuIFtjY2gsIGN0YWJdO1xuXHRpZihjY2ggPCAweDAxIHx8IGNjaCA+MHhmZikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTdXBCb29rIHR5cGU6IFwiK2NjaCk7XG5cdHZhciB2aXJ0UGF0aCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCk7XG5cdC8qIFRPRE86IDIuNS4yNzcgVmlydHVhbCBQYXRoICovXG5cdHZhciByZ3N0ID0gW107XG5cdHdoaWxlKGVuZCA+IGJsb2IubCkgcmdzdC5wdXNoKHBhcnNlX1hMVW5pY29kZVN0cmluZyhibG9iKSk7XG5cdHJldHVybiBbY2NoLCBjdGFiLCB2aXJ0UGF0aCwgcmdzdF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRXh0ZXJuTmFtZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgYm9keTtcblx0dmFyIG8gPSAoe1xuXHRcdGZCdWlsdEluOiBmbGFncyAmIDB4MDEsXG5cdFx0ZldhbnRBZHZpc2U6IChmbGFncyA+Pj4gMSkgJiAweDAxLFxuXHRcdGZXYW50UGljdDogKGZsYWdzID4+PiAyKSAmIDB4MDEsXG5cdFx0Zk9sZTogKGZsYWdzID4+PiAzKSAmIDB4MDEsXG5cdFx0Zk9sZUxpbms6IChmbGFncyA+Pj4gNCkgJiAweDAxLFxuXHRcdGNmOiAoZmxhZ3MgPj4+IDUpICYgMHgzRkYsXG5cdFx0Zkljb246IGZsYWdzID4+PiAxNSAmIDB4MDFcblx0fS8qOmFueSovKTtcblx0aWYob3B0cy5zYmNjaCA9PT0gMHgzQTAxKSBib2R5ID0gcGFyc2VfQWRkaW5VZGYoYmxvYiwgbGVuZ3RoLTIsIG9wdHMpO1xuXHQvL2Vsc2UgdGhyb3cgbmV3IEVycm9yKFwidW5zdXBwb3J0ZWQgU3VwQm9vayBjY2g6IFwiICsgb3B0cy5zYmNjaCk7XG5cdG8uYm9keSA9IGJvZHkgfHwgYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aC0yKTtcblx0aWYodHlwZW9mIGJvZHkgPT09IFwic3RyaW5nXCIpIG8uTmFtZSA9IGJvZHk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTUwIFRPRE8gKi9cbnZhciBYTFNMYmxCdWlsdEluID0gW1xuXHRcIl94bG5tLkNvbnNvbGlkYXRlX0FyZWFcIixcblx0XCJfeGxubS5BdXRvX09wZW5cIixcblx0XCJfeGxubS5BdXRvX0Nsb3NlXCIsXG5cdFwiX3hsbm0uRXh0cmFjdFwiLFxuXHRcIl94bG5tLkRhdGFiYXNlXCIsXG5cdFwiX3hsbm0uQ3JpdGVyaWFcIixcblx0XCJfeGxubS5QcmludF9BcmVhXCIsXG5cdFwiX3hsbm0uUHJpbnRfVGl0bGVzXCIsXG5cdFwiX3hsbm0uUmVjb3JkZXJcIixcblx0XCJfeGxubS5EYXRhX0Zvcm1cIixcblx0XCJfeGxubS5BdXRvX0FjdGl2YXRlXCIsXG5cdFwiX3hsbm0uQXV0b19EZWFjdGl2YXRlXCIsXG5cdFwiX3hsbm0uU2hlZXRfVGl0bGVcIixcblx0XCJfeGxubS5fRmlsdGVyRGF0YWJhc2VcIlxuXTtcbmZ1bmN0aW9uIHBhcnNlX0xibChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY2hLZXkgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBjY2ggPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBjY2UgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0dmFyIGl0YWIgPSAwO1xuXHRpZighb3B0cyB8fCBvcHRzLmJpZmYgPj0gNSkge1xuXHRcdGlmKG9wdHMuYmlmZiAhPSA1KSBibG9iLmwgKz0gMjtcblx0XHRpdGFiID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdGlmKG9wdHMuYmlmZiA9PSA1KSBibG9iLmwgKz0gMjtcblx0XHRibG9iLmwgKz0gNDtcblx0fVxuXHR2YXIgbmFtZSA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGNjaCwgb3B0cyk7XG5cdGlmKGZsYWdzICYgMHgyMCkgbmFtZSA9IFhMU0xibEJ1aWx0SW5bbmFtZS5jaGFyQ29kZUF0KDApXTtcblx0dmFyIG5wZmxlbiA9IHRhcmdldCAtIGJsb2IubDsgaWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gMikgLS1ucGZsZW47XG5cdC8qanNoaW50IC1XMDE4ICovXG5cdHZhciByZ2NlID0gKHRhcmdldCA9PSBibG9iLmwgfHwgY2NlID09PSAwIHx8ICEobnBmbGVuID4gMCkpID8gW10gOiBwYXJzZV9OYW1lUGFyc2VkRm9ybXVsYShibG9iLCBucGZsZW4sIG9wdHMsIGNjZSk7XG5cdC8qanNoaW50ICtXMDE4ICovXG5cdHJldHVybiB7XG5cdFx0Y2hLZXk6IGNoS2V5LFxuXHRcdE5hbWU6IG5hbWUsXG5cdFx0aXRhYjogaXRhYixcblx0XHRyZ2NlOiByZ2NlXG5cdH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMDYgVE9ETzogdmVyaWZ5IGZpbGVuYW1lIGVuY29kaW5nICovXG5mdW5jdGlvbiBwYXJzZV9FeHRlcm5TaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlX0JJRkY1RXh0ZXJuU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIG8gPSBbXSwgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoLCBsZW4gPSBibG9iLnJlYWRfc2hpZnQob3B0cy5iaWZmID4gOCA/IDQgOiAyKTtcblx0d2hpbGUobGVuLS0gIT09IDApIG8ucHVzaChwYXJzZV9YVEkoYmxvYiwgb3B0cy5iaWZmID4gOCA/IDEyIDogNiwgb3B0cykpO1xuXHRcdC8vIFtpU3VwQm9vaywgaXRhYkZpcnN0LCBpdGFiTGFzdF07XG5cdGlmKGJsb2IubCAhPSB0YXJnZXQpIHRocm93IG5ldyBFcnJvcihcIkJhZCBFeHRlcm5TaGVldDogXCIgKyBibG9iLmwgKyBcIiAhPSBcIiArIHRhcmdldCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQklGRjVFeHRlcm5TaGVldChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYoYmxvYltibG9iLmwgKyAxXSA9PSAweDAzKSBibG9iW2Jsb2IubF0rKztcblx0dmFyIG8gPSBwYXJzZV9TaG9ydFhMVW5pY29kZVN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRyZXR1cm4gby5jaGFyQ29kZUF0KDApID09IDB4MDMgPyBvLnNsaWNlKDEpIDogbztcbn1cblxuLyogW01TLVhMU10gMi40LjE3NiBUT0RPOiBjaGVjayBvbGRlciBiaWZmICovXG5mdW5jdGlvbiBwYXJzZV9OYW1lQ210KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSB7IGJsb2IubCArPSBsZW5ndGg7IHJldHVybjsgfVxuXHR2YXIgY2NoTmFtZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNjaENvbW1lbnQgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBuYW1lID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoTmFtZSwgb3B0cyk7XG5cdHZhciBjb21tZW50ID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoQ29tbWVudCwgb3B0cyk7XG5cdHJldHVybiBbbmFtZSwgY29tbWVudF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjAgKi9cbmZ1bmN0aW9uIHBhcnNlX1NockZtbGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciByZWYgPSBwYXJzZV9SZWZVKGJsb2IsIDYpO1xuXHRibG9iLmwrKztcblx0dmFyIGNVc2UgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdGxlbmd0aCAtPSA4O1xuXHRyZXR1cm4gW3BhcnNlX1NoYXJlZFBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSwgY1VzZSwgcmVmXTtcbn1cblxuLyogW01TLVhMU10gMi40LjQgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfQXJyYXkoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciByZWYgPSBwYXJzZV9SZWYoYmxvYiwgNik7XG5cdC8qIFRPRE86IGZBbHdheXNDYWxjICovXG5cdHN3aXRjaChvcHRzLmJpZmYpIHtcblx0XHRjYXNlIDI6IGJsb2IubCArKzsgbGVuZ3RoIC09IDc7IGJyZWFrO1xuXHRcdGNhc2UgMzogY2FzZSA0OiBibG9iLmwgKz0gMjsgbGVuZ3RoIC09IDg7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IGJsb2IubCArPSA2OyBsZW5ndGggLT0gMTI7XG5cdH1cblx0cmV0dXJuIFtyZWYsIHBhcnNlX0FycmF5UGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMsIHJlZildO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTczICovXG5mdW5jdGlvbiBwYXJzZV9NVFJTZXR0aW5ncyhibG9iKSB7XG5cdHZhciBmTVRSRW5hYmxlZCA9IGJsb2IucmVhZF9zaGlmdCg0KSAhPT0gMHgwMDtcblx0dmFyIGZVc2VyU2V0VGhyZWFkQ291bnQgPSBibG9iLnJlYWRfc2hpZnQoNCkgIT09IDB4MDA7XG5cdHZhciBjVXNlclRocmVhZENvdW50ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW2ZNVFJFbmFibGVkLCBmVXNlclNldFRocmVhZENvdW50LCBjVXNlclRocmVhZENvdW50XTtcbn1cblxuLyogW01TLVhMU10gMi41LjE4NiBUT0RPOiBCSUZGNSAqL1xuZnVuY3Rpb24gcGFyc2VfTm90ZVNoKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm47XG5cdHZhciByb3cgPSBibG9iLnJlYWRfc2hpZnQoMiksIGNvbCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpLCBpZE9iaiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHN0QXV0aG9yID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCBvcHRzKTtcblx0aWYob3B0cy5iaWZmIDwgOCkgYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW3tyOnJvdyxjOmNvbH0sIHN0QXV0aG9yLCBpZE9iaiwgZmxhZ3NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTc5ICovXG5mdW5jdGlvbiBwYXJzZV9Ob3RlKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHQvKiBUT0RPOiBTdXBwb3J0IHJldmlzaW9ucyAqL1xuXHRyZXR1cm4gcGFyc2VfTm90ZVNoKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNjggKi9cbmZ1bmN0aW9uIHBhcnNlX01lcmdlQ2VsbHMoYmxvYiwgbGVuZ3RoKS8qOkFycmF5PFJhbmdlPiovIHtcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBjbWNzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR3aGlsZSAoY21jcy0tKSBtZXJnZXMucHVzaChwYXJzZV9SZWY4VShibG9iLGxlbmd0aCkpO1xuXHRyZXR1cm4gbWVyZ2VzO1xufVxuZnVuY3Rpb24gd3JpdGVfTWVyZ2VDZWxscyhtZXJnZXMvKjpBcnJheTxSYW5nZT4qLykge1xuXHR2YXIgbyA9IG5ld19idWYoMiArIG1lcmdlcy5sZW5ndGggKiA4KTtcblx0by53cml0ZV9zaGlmdCgyLCBtZXJnZXMubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG1lcmdlcy5sZW5ndGg7ICsraSkgd3JpdGVfUmVmOFUobWVyZ2VzW2ldLCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xODEgVE9ETzogcGFyc2UgYWxsIHRoZSB0aGluZ3MhICovXG5mdW5jdGlvbiBwYXJzZV9PYmooYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGlmKG9wdHMgJiYgb3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlX0JJRkY1T2JqKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciBjbW8gPSBwYXJzZV9GdENtbyhibG9iLCAyMik7IC8vIGlkLCBvdCwgZmxhZ3Ncblx0dmFyIGZ0cyA9IHBhcnNlX0Z0QXJyYXkoYmxvYiwgbGVuZ3RoLTIyLCBjbW9bMV0pO1xuXHRyZXR1cm4geyBjbW86IGNtbywgZnQ6ZnRzIH07XG59XG4vKiBmcm9tIG9sZGVyIHNwZWMgKi9cbnZhciBwYXJzZV9CSUZGNU9UID0ge1xuMHgwODogZnVuY3Rpb24oYmxvYiwgbGVuZ3RoKSB7XG5cdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdGJsb2IubCArPSAxMDsgLy8gdG9kb1xuXHR2YXIgY2YgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSA0O1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY2JQaWN0Rm1sYSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBncmJpdCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBjY2hOYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRibG9iLmwgKz0gY2NoTmFtZTsgLy8gVE9ETzogc3ROYW1lXG5cdGJsb2IubCA9IHRndDsgLy8gVE9ETzogZm1sYVxuXHRyZXR1cm4geyBmbXQ6Y2YgfTtcbn1cbn07XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkY1T2JqKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwgKz0gNDsgLy92YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgb3QgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGdyYml0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjsgLy92YXIgY29sTCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR4TCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIHJ3VCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGR5VCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDI7IC8vdmFyIGNvbFIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeFIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciByd0IgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBkeUIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGJsb2IubCArPSAyOyAvL3ZhciBjYk1hY3JvID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gNjtcblx0bGVuZ3RoIC09IDM2O1xuXHR2YXIgZnRzID0gW107XG5cdGZ0cy5wdXNoKChwYXJzZV9CSUZGNU9UW290XXx8cGFyc2Vub29wKShibG9iLCBsZW5ndGgsIG9wdHMpKTtcblx0cmV0dXJuIHsgY21vOiBbaWQsIG90LCBncmJpdF0sIGZ0OmZ0cyB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMzI5IFRPRE86IHBhcnNlIHByb3Blcmx5ICovXG5mdW5jdGlvbiBwYXJzZV9UeE8oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBzID0gYmxvYi5sO1xuXHR2YXIgdGV4dHMgPSBcIlwiO1xudHJ5IHtcblx0YmxvYi5sICs9IDQ7XG5cdHZhciBvdCA9IChvcHRzLmxhc3RvYmp8fHtjbW86WzAsMF19KS5jbW9bMV07XG5cdHZhciBjb250cm9sSW5mbzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuXHRpZihbMCw1LDcsMTEsMTIsMTRdLmluZGV4T2Yob3QpID09IC0xKSBibG9iLmwgKz0gNjtcblx0ZWxzZSBjb250cm9sSW5mbyA9IHBhcnNlX0NvbnRyb2xJbmZvKGJsb2IsIDYsIG9wdHMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdHZhciBjY2hUZXh0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHQvKnZhciBjYlJ1bnMgPSAqL2Jsb2IucmVhZF9zaGlmdCgyKTtcblx0Lyp2YXIgaWZudEVtcHR5ID0gKi9wYXJzZXVpbnQxNihibG9iLCAyKTtcblx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IGxlbjtcblx0Ly92YXIgZm1sYSA9IHBhcnNlX09iakZtbGEoYmxvYiwgcyArIGxlbmd0aCAtIGJsb2IubCk7XG5cblx0Zm9yKHZhciBpID0gMTsgaSA8IGJsb2IubGVucy5sZW5ndGgtMTsgKytpKSB7XG5cdFx0aWYoYmxvYi5sLXMgIT0gYmxvYi5sZW5zW2ldKSB0aHJvdyBuZXcgRXJyb3IoXCJUeE86IGJhZCBjb250aW51ZSByZWNvcmRcIik7XG5cdFx0dmFyIGhkciA9IGJsb2JbYmxvYi5sXTtcblx0XHR2YXIgdCA9IHBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoKGJsb2IsIGJsb2IubGVuc1tpKzFdLWJsb2IubGVuc1tpXS0xKTtcblx0XHR0ZXh0cyArPSB0O1xuXHRcdGlmKHRleHRzLmxlbmd0aCA+PSAoaGRyID8gY2NoVGV4dCA6IDIqY2NoVGV4dCkpIGJyZWFrO1xuXHR9XG5cdGlmKHRleHRzLmxlbmd0aCAhPT0gY2NoVGV4dCAmJiB0ZXh0cy5sZW5ndGggIT09IGNjaFRleHQqMikge1xuXHRcdHRocm93IG5ldyBFcnJvcihcImNjaFRleHQ6IFwiICsgY2NoVGV4dCArIFwiICE9IFwiICsgdGV4dHMubGVuZ3RoKTtcblx0fVxuXG5cdGJsb2IubCA9IHMgKyBsZW5ndGg7XG5cdC8qIFtNUy1YTFNdIDIuNS4yNzIgVHhPUnVucyAqL1xuLy9cdHZhciByZ1R4b1J1bnMgPSBbXTtcbi8vXHRmb3IodmFyIGogPSAwOyBqICE9IGNiUnVucy84LTE7ICsraikgYmxvYi5sICs9IDg7XG4vL1x0dmFyIGNjaFRleHQyID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuLy9cdGlmKGNjaFRleHQyICE9PSBjY2hUZXh0KSB0aHJvdyBuZXcgRXJyb3IoXCJUeE9MYXN0UnVuIG1pc21hdGNoOiBcIiArIGNjaFRleHQyICsgXCIgXCIgKyBjY2hUZXh0KTtcbi8vXHRibG9iLmwgKz0gNjtcbi8vXHRpZihzICsgbGVuZ3RoICE9IGJsb2IubCkgdGhyb3cgbmV3IEVycm9yKFwiVHhPIFwiICsgKHMgKyBsZW5ndGgpICsgXCIsIGF0IFwiICsgYmxvYi5sKTtcblx0cmV0dXJuIHsgdDogdGV4dHMgfTtcbn0gY2F0Y2goZSkgeyBibG9iLmwgPSBzICsgbGVuZ3RoOyByZXR1cm4geyB0OiB0ZXh0cyB9OyB9XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xNDAgKi9cbmZ1bmN0aW9uIHBhcnNlX0hMaW5rKGJsb2IsIGxlbmd0aCkge1xuXHR2YXIgcmVmID0gcGFyc2VfUmVmOFUoYmxvYiwgOCk7XG5cdGJsb2IubCArPSAxNjsgLyogQ0xTSUQgKi9cblx0dmFyIGhsaW5rID0gcGFyc2VfSHlwZXJsaW5rKGJsb2IsIGxlbmd0aC0yNCk7XG5cdHJldHVybiBbcmVmLCBobGlua107XG59XG5mdW5jdGlvbiB3cml0ZV9ITGluayhobCkge1xuXHR2YXIgTyA9IG5ld19idWYoMjQpO1xuXHR2YXIgcmVmID0gZGVjb2RlX2NlbGwoaGxbMF0pO1xuXHRPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTsgTy53cml0ZV9zaGlmdCgyLCByZWYucik7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5jKTtcblx0dmFyIGNsc2lkID0gXCJkMCBjOSBlYSA3OSBmOSBiYSBjZSAxMSA4YyA4MiAwMCBhYSAwMCA0YiBhOSAwYlwiLnNwbGl0KFwiIFwiKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIE8ud3JpdGVfc2hpZnQoMSwgcGFyc2VJbnQoY2xzaWRbaV0sIDE2KSk7XG5cdHJldHVybiBiY29uY2F0KFtPLCB3cml0ZV9IeXBlcmxpbmsoaGxbMV0pXSk7XG59XG5cblxuLyogW01TLVhMU10gMi40LjE0MSAqL1xuZnVuY3Rpb24gcGFyc2VfSExpbmtUb29sdGlwKGJsb2IsIGxlbmd0aCkge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciByZWYgPSBwYXJzZV9SZWY4VShibG9iLCA4KTtcblx0dmFyIHd6VG9vbHRpcCA9IGJsb2IucmVhZF9zaGlmdCgobGVuZ3RoLTEwKS8yLCAnZGJjcy1jb250Jyk7XG5cdHd6VG9vbHRpcCA9IHd6VG9vbHRpcC5yZXBsYWNlKGNocjAsXCJcIik7XG5cdHJldHVybiBbcmVmLCB3elRvb2x0aXBdO1xufVxuZnVuY3Rpb24gd3JpdGVfSExpbmtUb29sdGlwKGhsKSB7XG5cdHZhciBUVCA9IGhsWzFdLlRvb2x0aXA7XG5cdHZhciBPID0gbmV3X2J1ZigxMCArIDIgKiAoVFQubGVuZ3RoICsgMSkpO1xuXHRPLndyaXRlX3NoaWZ0KDIsIDB4MDgwMCk7XG5cdHZhciByZWYgPSBkZWNvZGVfY2VsbChobFswXSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgcmVmLnIpOyBPLndyaXRlX3NoaWZ0KDIsIHJlZi5yKTtcblx0Ty53cml0ZV9zaGlmdCgyLCByZWYuYyk7IE8ud3JpdGVfc2hpZnQoMiwgcmVmLmMpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgVFQubGVuZ3RoOyArK2kpIE8ud3JpdGVfc2hpZnQoMiwgVFQuY2hhckNvZGVBdChpKSk7XG5cdE8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBPO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNjMgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvdW50cnkoYmxvYikvKjpbc3RyaW5nfG51bWJlciwgc3RyaW5nfG51bWJlcl0qLyB7XG5cdHZhciBvID0gWzAsMF0sIGQ7XG5cdGQgPSBibG9iLnJlYWRfc2hpZnQoMik7IG9bMF0gPSBDb3VudHJ5RW51bVtkXSB8fCBkO1xuXHRkID0gYmxvYi5yZWFkX3NoaWZ0KDIpOyBvWzFdID0gQ291bnRyeUVudW1bZF0gfHwgZDtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9Db3VudHJ5KG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDQpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MDEpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDB4MDEpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjUwIENscnRDbGllbnQgKi9cbmZ1bmN0aW9uIHBhcnNlX0NscnRDbGllbnQoYmxvYikge1xuXHR2YXIgY2N2ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbyA9IFtdO1xuXHR3aGlsZShjY3YtLT4wKSBvLnB1c2gocGFyc2VfTG9uZ1JHQihibG9iLCA4KSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMTg4ICovXG5mdW5jdGlvbiBwYXJzZV9QYWxldHRlKGJsb2IpIHtcblx0dmFyIGNjdiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIG8gPSBbXTtcblx0d2hpbGUoY2N2LS0+MCkgby5wdXNoKHBhcnNlX0xvbmdSR0IoYmxvYiwgOCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi40LjM1NCAqL1xuZnVuY3Rpb24gcGFyc2VfWEZDUkMoYmxvYikge1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIG8gPSB7Y3hmczowLCBjcmM6MH07XG5cdG8uY3hmcyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5jcmMgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuNTMgVE9ETzogcGFyc2UgZmxhZ3MgKi9cbi8qIFtNUy1YTFNCXSAyLjQuMzIzIFRPRE86IHBhcnNlIGZsYWdzICovXG5mdW5jdGlvbiBwYXJzZV9Db2xJbmZvKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm4gcGFyc2Vub29wKGJsb2IsIGxlbmd0aCk7XG5cdHZhciB3ID0gb3B0cyAmJiBvcHRzLmJpZmYgPj0gMTIgPyA0IDogMjtcblx0dmFyIGNvbEZpcnN0ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgY29sTGFzdCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGNvbGR4ID0gYmxvYi5yZWFkX3NoaWZ0KHcpO1xuXHR2YXIgaXhmZSA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRpZih3ID09IDIpIGJsb2IubCArPSAyO1xuXHR2YXIgbyA9ICh7czpjb2xGaXJzdCwgZTpjb2xMYXN0LCB3OmNvbGR4LCBpeGZlOml4ZmUsIGZsYWdzOmZsYWdzfS8qOmFueSovKTtcblx0aWYob3B0cy5iaWZmID49IDUgfHwgIW9wdHMuYmlmZikgby5sZXZlbCA9IChmbGFncyA+PiA4KSAmIDB4Nztcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9Db2xJbmZvKGNvbCwgaWR4KSB7XG5cdHZhciBvID0gbmV3X2J1ZigxMik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaWR4KTtcblx0by53cml0ZV9zaGlmdCgyLCBpZHgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGNvbC53aWR0aCAqIDI1Nik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHZhciBmID0gMDtcblx0aWYoY29sLmhpZGRlbikgZiB8PSAxO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGYpO1xuXHRmID0gY29sLmxldmVsIHx8IDA7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjU3ICovXG5mdW5jdGlvbiBwYXJzZV9TZXR1cChibG9iLCBsZW5ndGgpIHtcblx0dmFyIG8gPSB7fTtcblx0aWYobGVuZ3RoIDwgMzIpIHJldHVybiBvO1xuXHRibG9iLmwgKz0gMTY7XG5cdG8uaGVhZGVyID0gcGFyc2VfWG51bShibG9iLCA4KTtcblx0by5mb290ZXIgPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4yNjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1NodFByb3BzKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZGVmID0ge2FyZWE6ZmFsc2V9O1xuXHRpZihvcHRzLmJpZmYgIT0gNSkgeyBibG9iLmwgKz0gbGVuZ3RoOyByZXR1cm4gZGVmOyB9XG5cdHZhciBkID0gYmxvYi5yZWFkX3NoaWZ0KDEpOyBibG9iLmwgKz0gMztcblx0aWYoKGQgJiAweDEwKSkgZGVmLmFyZWEgPSB0cnVlO1xuXHRyZXR1cm4gZGVmO1xufVxuXG4vKiBbTVMtWExTXSAyLjQuMjQxICovXG5mdW5jdGlvbiB3cml0ZV9SUlRhYklkKG4vKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1ZigyICogbik7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuOyArK2kpIG91dC53cml0ZV9zaGlmdCgyLCBpKzEpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG52YXIgcGFyc2VfQmxhbmsgPSBwYXJzZV9YTFNDZWxsOyAvKiBbTVMtWExTXSAyLjQuMjAgSnVzdCB0aGUgY2VsbCAqL1xudmFyIHBhcnNlX1NjbCA9IHBhcnNldWludDE2YTsgLyogW01TLVhMU10gMi40LjI0NyBudW0sIGRlbiAqL1xudmFyIHBhcnNlX1N0cmluZyA9IHBhcnNlX1hMVW5pY29kZVN0cmluZzsgLyogW01TLVhMU10gMi40LjI2OCAqL1xuXG4vKiAtLS0gU3BlY2lmaWMgdG8gdmVyc2lvbnMgYmVmb3JlIEJJRkY4IC0tLSAqL1xuZnVuY3Rpb24gcGFyc2VfSW1EYXRhKGJsb2IpIHtcblx0dmFyIGNmID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZW52ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgbGNiID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgbyA9IHtmbXQ6Y2YsIGVudjplbnYsIGxlbjpsY2IsIGRhdGE6YmxvYi5zbGljZShibG9iLmwsYmxvYi5sK2xjYil9O1xuXHRibG9iLmwgKz0gbGNiO1xuXHRyZXR1cm4gbztcbn1cblxuLyogQklGRjJfPz8/IHdoZXJlID8/PyBpcyB0aGUgbmFtZSBmcm9tIFtYTFNdICovXG5mdW5jdGlvbiBwYXJzZV9CSUZGMlNUUihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmZ3Vlc3MgJiYgb3B0cy5iaWZmID09IDUpIG9wdHMuYmlmZiA9IDI7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBzdHIgPSBwYXJzZV9YTFVuaWNvZGVTdHJpbmcyKGJsb2IsIGxlbmd0aC03LCBvcHRzKTtcblx0Y2VsbC50ID0gJ3N0cic7XG5cdGNlbGwudmFsID0gc3RyO1xuXHRyZXR1cm4gY2VsbDtcbn1cblxuZnVuY3Rpb24gcGFyc2VfQklGRjJOVU0oYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBudW0gPSBwYXJzZV9YbnVtKGJsb2IsIDgpO1xuXHRjZWxsLnQgPSAnbic7XG5cdGNlbGwudmFsID0gbnVtO1xuXHRyZXR1cm4gY2VsbDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JJRkYyTlVNKHIvKjpudW1iZXIqLywgYy8qOm51bWJlciovLCB2YWwvKjpudW1iZXIqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1ZigxNSk7XG5cdHdyaXRlX0JJRkYyQ2VsbChvdXQsIHIsIGMpO1xuXHRvdXQud3JpdGVfc2hpZnQoOCwgdmFsLCAnZicpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CSUZGMklOVChibG9iKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQ2VsbChibG9iLCA2KTtcblx0KytibG9iLmw7XG5cdHZhciBudW0gPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdGNlbGwudCA9ICduJztcblx0Y2VsbC52YWwgPSBudW07XG5cdHJldHVybiBjZWxsO1xufVxuZnVuY3Rpb24gd3JpdGVfQklGRjJJTlQoci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbC8qOm51bWJlciovKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDkpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHZhbCk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX0JJRkYyU1RSSU5HKGJsb2IpIHtcblx0dmFyIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0aWYoY2NoID09PSAwKSB7IGJsb2IubCsrOyByZXR1cm4gXCJcIjsgfVxuXHRyZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KGNjaCwgJ3NiY3MtY29udCcpO1xufVxuXG4vKiBUT0RPOiBjb252ZXJ0IHRvIEJJRkY4IGZvbnQgc3RydWN0ICovXG5mdW5jdGlvbiBwYXJzZV9CSUZGMkZPTlRYVFJBKGJsb2IsIGxlbmd0aCkge1xuXHRibG9iLmwgKz0gNjsgLy8gdW5rbm93blxuXHRibG9iLmwgKz0gMjsgLy8gZm9udCB3ZWlnaHQgXCJibHNcIlxuXHRibG9iLmwgKz0gMTsgLy8gY2hhcnNldFxuXHRibG9iLmwgKz0gMzsgLy8gdW5rbm93blxuXHRibG9iLmwgKz0gMTsgLy8gZm9udCBmYW1pbHlcblx0YmxvYi5sICs9IGxlbmd0aCAtIDEzO1xufVxuXG4vKiBUT0RPOiBwYXJzZSByaWNoIHRleHQgcnVucyAqL1xuZnVuY3Rpb24gcGFyc2VfUlN0cmluZyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHR2YXIgY2NoID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgc3RyID0gcGFyc2VfWExVbmljb2RlU3RyaW5nTm9DY2goYmxvYiwgY2NoLCBvcHRzKTtcblx0YmxvYi5sID0gZW5kO1xuXHRjZWxsLnQgPSAnc3RyJztcblx0Y2VsbC52YWwgPSBzdHI7XG5cdHJldHVybiBjZWxsO1xufVxuLyogZnJvbSBqcy1oYXJiIChDKSAyMDE0LXByZXNlbnQgIFNoZWV0SlMgKi9cbnZhciBEQkZfU1VQUE9SVEVEX1ZFUlNJT05TID0gWzB4MDIsIDB4MDMsIDB4MzAsIDB4MzEsIDB4ODMsIDB4OEIsIDB4OEMsIDB4RjVdO1xudmFyIERCRiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG52YXIgZGJmX2NvZGVwYWdlX21hcCA9IHtcblx0LyogQ29kZSBQYWdlcyBTdXBwb3J0ZWQgYnkgVmlzdWFsIEZveFBybyAqL1xuXHQvKjo6WyovMHgwMS8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MDIvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDA0Lyo6Ol0qLzogMTAwMDAsXG5cdC8qOjpbKi8weDY0Lyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHg2NS8qOjpdKi86ICAgODY2LFxuXHQvKjo6WyovMHg2Ni8qOjpdKi86ICAgODY1LCAgICAgICAgICAgLyo6OlsqLzB4NjcvKjo6XSovOiAgIDg2MSxcblx0Lyo6OlsqLzB4NjgvKjo6XSovOiAgIDg5NSwgICAgICAgICAgIC8qOjpbKi8weDY5Lyo6Ol0qLzogICA2MjAsXG5cdC8qOjpbKi8weDZBLyo6Ol0qLzogICA3MzcsICAgICAgICAgICAvKjo6WyovMHg2Qi8qOjpdKi86ICAgODU3LFxuXHQvKjo6WyovMHg3OC8qOjpdKi86ICAgOTUwLCAgICAgICAgICAgLyo6OlsqLzB4NzkvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4N0EvKjo6XSovOiAgIDkzNiwgICAgICAgICAgIC8qOjpbKi8weDdCLyo6Ol0qLzogICA5MzIsXG5cdC8qOjpbKi8weDdDLyo6Ol0qLzogICA4NzQsICAgICAgICAgICAvKjo6WyovMHg3RC8qOjpdKi86ICAxMjU1LFxuXHQvKjo6WyovMHg3RS8qOjpdKi86ICAxMjU2LCAgICAgICAgICAgLyo6OlsqLzB4OTYvKjo6XSovOiAxMDAwNyxcblx0Lyo6OlsqLzB4OTcvKjo6XSovOiAxMDAyOSwgICAgICAgICAgIC8qOjpbKi8weDk4Lyo6Ol0qLzogMTAwMDYsXG5cdC8qOjpbKi8weEM4Lyo6Ol0qLzogIDEyNTAsICAgICAgICAgICAvKjo6WyovMHhDOS8qOjpdKi86ICAxMjUxLFxuXHQvKjo6WyovMHhDQS8qOjpdKi86ICAxMjU0LCAgICAgICAgICAgLyo6OlsqLzB4Q0IvKjo6XSovOiAgMTI1MyxcblxuXHQvKiBzaGFwZWZpbGUgREJGIGV4dGVuc2lvbiAqL1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IDIwMTI3LCAgICAgICAgICAgLyo6OlsqLzB4MDgvKjo6XSovOiAgIDg2NSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiAgIDQzNywgICAgICAgICAgIC8qOjpbKi8weDBBLyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDBCLyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgwRC8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgwRS8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MEYvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDExLyo6Ol0qLzogICA0MzcsXG5cdC8qOjpbKi8weDEyLyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHgxMy8qOjpdKi86ICAgOTMyLFxuXHQvKjo6WyovMHgxNC8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MTUvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MTYvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDE3Lyo6Ol0qLzogICA4NjUsXG5cdC8qOjpbKi8weDE4Lyo6Ol0qLzogICA0MzcsICAgICAgICAgICAvKjo6WyovMHgxOS8qOjpdKi86ICAgNDM3LFxuXHQvKjo6WyovMHgxQS8qOjpdKi86ICAgODUwLCAgICAgICAgICAgLyo6OlsqLzB4MUIvKjo6XSovOiAgIDQzNyxcblx0Lyo6OlsqLzB4MUMvKjo6XSovOiAgIDg2MywgICAgICAgICAgIC8qOjpbKi8weDFELyo6Ol0qLzogICA4NTAsXG5cdC8qOjpbKi8weDFGLyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHgyMi8qOjpdKi86ICAgODUyLFxuXHQvKjo6WyovMHgyMy8qOjpdKi86ICAgODUyLCAgICAgICAgICAgLyo6OlsqLzB4MjQvKjo6XSovOiAgIDg2MCxcblx0Lyo6OlsqLzB4MjUvKjo6XSovOiAgIDg1MCwgICAgICAgICAgIC8qOjpbKi8weDI2Lyo6Ol0qLzogICA4NjYsXG5cdC8qOjpbKi8weDM3Lyo6Ol0qLzogICA4NTAsICAgICAgICAgICAvKjo6WyovMHg0MC8qOjpdKi86ICAgODUyLFxuXHQvKjo6WyovMHg0RC8qOjpdKi86ICAgOTM2LCAgICAgICAgICAgLyo6OlsqLzB4NEUvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4NEYvKjo6XSovOiAgIDk1MCwgICAgICAgICAgIC8qOjpbKi8weDUwLyo6Ol0qLzogICA4NzQsXG5cdC8qOjpbKi8weDU3Lyo6Ol0qLzogIDEyNTIsICAgICAgICAgICAvKjo6WyovMHg1OC8qOjpdKi86ICAxMjUyLFxuXHQvKjo6WyovMHg1OS8qOjpdKi86ICAxMjUyLCAgICAgICAgICAgLyo6OlsqLzB4NkMvKjo6XSovOiAgIDg2Myxcblx0Lyo6OlsqLzB4ODYvKjo6XSovOiAgIDczNywgICAgICAgICAgIC8qOjpbKi8weDg3Lyo6Ol0qLzogICA4NTIsXG5cdC8qOjpbKi8weDg4Lyo6Ol0qLzogICA4NTcsICAgICAgICAgICAvKjo6WyovMHhDQy8qOjpdKi86ICAxMjU3LFxuXG5cdC8qOjpbKi8weEZGLyo6Ol0qLzogMTY5Njlcbn07XG52YXIgZGJmX3JldmVyc2VfbWFwID0gZXZlcnQoe1xuXHQvKjo6WyovMHgwMS8qOjpdKi86ICAgNDM3LCAgICAgICAgICAgLyo6OlsqLzB4MDIvKjo6XSovOiAgIDg1MCxcblx0Lyo6OlsqLzB4MDMvKjo6XSovOiAgMTI1MiwgICAgICAgICAgIC8qOjpbKi8weDA0Lyo6Ol0qLzogMTAwMDAsXG5cdC8qOjpbKi8weDY0Lyo6Ol0qLzogICA4NTIsICAgICAgICAgICAvKjo6WyovMHg2NS8qOjpdKi86ICAgODY2LFxuXHQvKjo6WyovMHg2Ni8qOjpdKi86ICAgODY1LCAgICAgICAgICAgLyo6OlsqLzB4NjcvKjo6XSovOiAgIDg2MSxcblx0Lyo6OlsqLzB4NjgvKjo6XSovOiAgIDg5NSwgICAgICAgICAgIC8qOjpbKi8weDY5Lyo6Ol0qLzogICA2MjAsXG5cdC8qOjpbKi8weDZBLyo6Ol0qLzogICA3MzcsICAgICAgICAgICAvKjo6WyovMHg2Qi8qOjpdKi86ICAgODU3LFxuXHQvKjo6WyovMHg3OC8qOjpdKi86ICAgOTUwLCAgICAgICAgICAgLyo6OlsqLzB4NzkvKjo6XSovOiAgIDk0OSxcblx0Lyo6OlsqLzB4N0EvKjo6XSovOiAgIDkzNiwgICAgICAgICAgIC8qOjpbKi8weDdCLyo6Ol0qLzogICA5MzIsXG5cdC8qOjpbKi8weDdDLyo6Ol0qLzogICA4NzQsICAgICAgICAgICAvKjo6WyovMHg3RC8qOjpdKi86ICAxMjU1LFxuXHQvKjo6WyovMHg3RS8qOjpdKi86ICAxMjU2LCAgICAgICAgICAgLyo6OlsqLzB4OTYvKjo6XSovOiAxMDAwNyxcblx0Lyo6OlsqLzB4OTcvKjo6XSovOiAxMDAyOSwgICAgICAgICAgIC8qOjpbKi8weDk4Lyo6Ol0qLzogMTAwMDYsXG5cdC8qOjpbKi8weEM4Lyo6Ol0qLzogIDEyNTAsICAgICAgICAgICAvKjo6WyovMHhDOS8qOjpdKi86ICAxMjUxLFxuXHQvKjo6WyovMHhDQS8qOjpdKi86ICAxMjU0LCAgICAgICAgICAgLyo6OlsqLzB4Q0IvKjo6XSovOiAgMTI1Myxcblx0Lyo6OlsqLzB4MDAvKjo6XSovOiAyMDEyN1xufSk7XG4vKiBUT0RPOiBmaW5kIGFuIGFjdHVhbCBzcGVjaWZpY2F0aW9uICovXG5mdW5jdGlvbiBkYmZfdG9fYW9hKGJ1Ziwgb3B0cykvKjpBT0EqLyB7XG5cdHZhciBvdXQvKjpBT0EqLyA9IFtdO1xuXHR2YXIgZC8qOkJsb2NrKi8gPSAobmV3X3Jhd19idWYoMSkvKjphbnkqLyk7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlICdiYXNlNjQnOiBkID0gczJhKEJhc2U2NF9kZWNvZGUoYnVmKSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IGQgPSBzMmEoYnVmKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYnVmZmVyJzpcblx0XHRjYXNlICdhcnJheSc6IGQgPSBidWY7IGJyZWFrO1xuXHR9XG5cdHByZXBfYmxvYihkLCAwKTtcblxuXHQvKiBoZWFkZXIgKi9cblx0dmFyIGZ0ID0gZC5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbWVtbyA9ICEhKGZ0ICYgMHg4OCk7XG5cdHZhciB2ZnAgPSBmYWxzZSwgbDcgPSBmYWxzZTtcblx0c3dpdGNoKGZ0KSB7XG5cdFx0Y2FzZSAweDAyOiBicmVhazsgLy8gZEJBU0UgSUlcblx0XHRjYXNlIDB4MDM6IGJyZWFrOyAvLyBkQkFTRSBJSUlcblx0XHRjYXNlIDB4MzA6IHZmcCA9IHRydWU7IG1lbW8gPSB0cnVlOyBicmVhazsgLy8gVkZQXG5cdFx0Y2FzZSAweDMxOiB2ZnAgPSB0cnVlOyBtZW1vID0gdHJ1ZTsgYnJlYWs7IC8vIFZGUCB3aXRoIGF1dG9pbmNyZW1lbnRcblx0XHQvLyAweDQzIGRCQVNFIElWIFNRTCB0YWJsZSBmaWxlc1xuXHRcdC8vIDB4NjMgZEJBU0UgSVYgU1FMIHN5c3RlbSBmaWxlc1xuXHRcdGNhc2UgMHg4MzogYnJlYWs7IC8vIGRCQVNFIElJSSB3aXRoIG1lbW9cblx0XHRjYXNlIDB4OEI6IGJyZWFrOyAvLyBkQkFTRSBJViB3aXRoIG1lbW9cblx0XHRjYXNlIDB4OEM6IGw3ID0gdHJ1ZTsgYnJlYWs7IC8vIGRCQVNFIExldmVsIDcgd2l0aCBtZW1vXG5cdFx0Ly8gY2FzZSAweENCIGRCQVNFIElWIFNRTCB0YWJsZSBmaWxlcyB3aXRoIG1lbW9cblx0XHRjYXNlIDB4RjU6IGJyZWFrOyAvLyBGb3hQcm8gMi54IHdpdGggbWVtb1xuXHRcdC8vIGNhc2UgMHhGQiBGb3hCQVNFXG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiREJGIFVuc3VwcG9ydGVkIFZlcnNpb246IFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblx0fVxuXG5cdHZhciBucm93ID0gMCwgZnBvcyA9IDB4MDIwOTtcblx0aWYoZnQgPT0gMHgwMikgbnJvdyA9IGQucmVhZF9zaGlmdCgyKTtcblx0ZC5sICs9IDM7IC8vIGRCQVNFIElJIHN0b3JlcyBERE1NWVkgZGF0ZSwgb3RoZXJzIHVzZSBZWU1NRERcblx0aWYoZnQgIT0gMHgwMikgbnJvdyA9IGQucmVhZF9zaGlmdCg0KTtcblx0aWYobnJvdyA+IDEwNDg1NzYpIG5yb3cgPSAxZTY7XG5cblx0aWYoZnQgIT0gMHgwMikgZnBvcyA9IGQucmVhZF9zaGlmdCgyKTsgLy8gaGVhZGVyIGxlbmd0aFxuXHR2YXIgcmxlbiA9IGQucmVhZF9zaGlmdCgyKTsgLy8gcmVjb3JkIGxlbmd0aFxuXG5cdHZhciAvKmZsYWdzID0gMCwqLyBjdXJyZW50X2NwID0gb3B0cy5jb2RlcGFnZSB8fCAxMjUyO1xuXHRpZihmdCAhPSAweDAyKSB7IC8vIDIwIHJlc2VydmVkIGJ5dGVzXG5cdFx0ZC5sKz0xNjtcblx0XHQvKmZsYWdzID0gKi9kLnJlYWRfc2hpZnQoMSk7XG5cdFx0Ly9pZihtZW1vICYmICgoZmxhZ3MgJiAweDAyKSA9PT0gMCkpIHRocm93IG5ldyBFcnJvcihcIkRCRiBGbGFncyBcIiArIGZsYWdzLnRvU3RyaW5nKDE2KSArIFwiIGZ0IFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblxuXHRcdC8qIGNvZGVwYWdlIHByZXNlbnQgaW4gRm94UHJvIGFuZCBkQkFTRSBMZXZlbCA3ICovXG5cdFx0aWYoZFtkLmxdICE9PSAwKSBjdXJyZW50X2NwID0gZGJmX2NvZGVwYWdlX21hcFtkW2QubF1dO1xuXHRcdGQubCs9MTtcblxuXHRcdGQubCs9Mjtcblx0fVxuXHRpZihsNykgZC5sICs9IDM2OyAvLyBMZXZlbCA3OiAzMiBieXRlIFwiTGFuZ3VhZ2UgZHJpdmVyIG5hbWVcIiwgNCBieXRlIHJlc2VydmVkXG5cbi8qOjogdHlwZSBEQkZGaWVsZCA9IHsgbmFtZTpzdHJpbmc7IGxlbjpudW1iZXI7IHR5cGU6c3RyaW5nOyB9ICovXG5cdHZhciBmaWVsZHMvKjpBcnJheTxEQkZGaWVsZD4qLyA9IFtdLCBmaWVsZC8qOkRCRkZpZWxkKi8gPSAoe30vKjphbnkqLyk7XG5cdHZhciBoZW5kID0gTWF0aC5taW4oZC5sZW5ndGgsIChmdCA9PSAweDAyID8gMHgyMDkgOiAoZnBvcyAtIDEwIC0gKHZmcCA/IDI2NCA6IDApKSkpO1xuXHR2YXIgd3cgPSBsNyA/IDMyIDogMTE7XG5cdHdoaWxlKGQubCA8IGhlbmQgJiYgZFtkLmxdICE9IDB4MGQpIHtcblx0XHRmaWVsZCA9ICh7fS8qOmFueSovKTtcblx0XHRmaWVsZC5uYW1lID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY3AsIGQuc2xpY2UoZC5sLCBkLmwrd3cpKS5yZXBsYWNlKC9bXFx1MDAwMFxcclxcbl0uKiQvZyxcIlwiKTtcblx0XHRkLmwgKz0gd3c7XG5cdFx0ZmllbGQudHlwZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZC5yZWFkX3NoaWZ0KDEpKTtcblx0XHRpZihmdCAhPSAweDAyICYmICFsNykgZmllbGQub2Zmc2V0ID0gZC5yZWFkX3NoaWZ0KDQpO1xuXHRcdGZpZWxkLmxlbiA9IGQucmVhZF9zaGlmdCgxKTtcblx0XHRpZihmdCA9PSAweDAyKSBmaWVsZC5vZmZzZXQgPSBkLnJlYWRfc2hpZnQoMik7XG5cdFx0ZmllbGQuZGVjID0gZC5yZWFkX3NoaWZ0KDEpO1xuXHRcdGlmKGZpZWxkLm5hbWUubGVuZ3RoKSBmaWVsZHMucHVzaChmaWVsZCk7XG5cdFx0aWYoZnQgIT0gMHgwMikgZC5sICs9IGw3ID8gMTMgOiAxNDtcblx0XHRzd2l0Y2goZmllbGQudHlwZSkge1xuXHRcdFx0Y2FzZSAnQic6IC8vIERvdWJsZSAoVkZQKSAvIEJpbmFyeSAoZEJBU0UgTDcpXG5cdFx0XHRcdGlmKCghdmZwIHx8IGZpZWxkLmxlbiAhPSA4KSAmJiBvcHRzLldURikgY29uc29sZS5sb2coJ1NraXBwaW5nICcgKyBmaWVsZC5uYW1lICsgJzonICsgZmllbGQudHlwZSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRyc6IC8vIEdlbmVyYWwgKEZveFBybyBhbmQgZEJBU0UgTDcpXG5cdFx0XHRjYXNlICdQJzogLy8gUGljdHVyZSAoRm94UHJvIGFuZCBkQkFTRSBMNylcblx0XHRcdFx0aWYob3B0cy5XVEYpIGNvbnNvbGUubG9nKCdTa2lwcGluZyAnICsgZmllbGQubmFtZSArICc6JyArIGZpZWxkLnR5cGUpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJysnOiAvLyBBdXRvaW5jcmVtZW50IChkQkFTRSBMNyBvbmx5KVxuXHRcdFx0Y2FzZSAnMCc6IC8vIF9OdWxsRmxhZ3MgKFZGUCBvbmx5KVxuXHRcdFx0Y2FzZSAnQCc6IC8vIFRpbWVzdGFtcCAoZEJBU0UgTDcgb25seSlcblx0XHRcdGNhc2UgJ0MnOiAvLyBDaGFyYWN0ZXIgKGRCQVNFIElJKVxuXHRcdFx0Y2FzZSAnRCc6IC8vIERhdGUgKGRCQVNFIElJSSlcblx0XHRcdGNhc2UgJ0YnOiAvLyBGbG9hdCAoZEJBU0UgSVYpXG5cdFx0XHRjYXNlICdJJzogLy8gTG9uZyAoVkZQIGFuZCBkQkFTRSBMNylcblx0XHRcdGNhc2UgJ0wnOiAvLyBMb2dpY2FsIChkQkFTRSBJSSlcblx0XHRcdGNhc2UgJ00nOiAvLyBNZW1vIChkQkFTRSBJSUkpXG5cdFx0XHRjYXNlICdOJzogLy8gTnVtYmVyIChkQkFTRSBJSSlcblx0XHRcdGNhc2UgJ08nOiAvLyBEb3VibGUgKGRCQVNFIEw3IG9ubHkpXG5cdFx0XHRjYXNlICdUJzogLy8gRGF0ZXRpbWUgKFZGUCBvbmx5KVxuXHRcdFx0Y2FzZSAnWSc6IC8vIEN1cnJlbmN5IChWRlAgb25seSlcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gRmllbGQgVHlwZTogJyArIGZpZWxkLnR5cGUpO1xuXHRcdH1cblx0fVxuXG5cdGlmKGRbZC5sXSAhPT0gMHgwRCkgZC5sID0gZnBvcy0xO1xuXHRpZihkLnJlYWRfc2hpZnQoMSkgIT09IDB4MEQpIHRocm93IG5ldyBFcnJvcihcIkRCRiBUZXJtaW5hdG9yIG5vdCBmb3VuZCBcIiArIGQubCArIFwiIFwiICsgZFtkLmxdKTtcblx0ZC5sID0gZnBvcztcblxuXHQvKiBkYXRhICovXG5cdHZhciBSID0gMCwgQyA9IDA7XG5cdG91dFswXSA9IFtdO1xuXHRmb3IoQyA9IDA7IEMgIT0gZmllbGRzLmxlbmd0aDsgKytDKSBvdXRbMF1bQ10gPSBmaWVsZHNbQ10ubmFtZTtcblx0d2hpbGUobnJvdy0tID4gMCkge1xuXHRcdGlmKGRbZC5sXSA9PT0gMHgyQSkge1xuXHRcdFx0Ly8gVE9ETzogcmVjb3JkIG1hcmtlZCBhcyBkZWxldGVkIC0tIGNyZWF0ZSBhIGhpZGRlbiByb3c/XG5cdFx0XHRkLmwrPXJsZW47XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0KytkLmw7XG5cdFx0b3V0WysrUl0gPSBbXTsgQyA9IDA7XG5cdFx0Zm9yKEMgPSAwOyBDICE9IGZpZWxkcy5sZW5ndGg7ICsrQykge1xuXHRcdFx0dmFyIGRkID0gZC5zbGljZShkLmwsIGQubCtmaWVsZHNbQ10ubGVuKTsgZC5sKz1maWVsZHNbQ10ubGVuO1xuXHRcdFx0cHJlcF9ibG9iKGRkLCAwKTtcblx0XHRcdHZhciBzID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKGN1cnJlbnRfY3AsIGRkKTtcblx0XHRcdHN3aXRjaChmaWVsZHNbQ10udHlwZSkge1xuXHRcdFx0XHRjYXNlICdDJzpcblx0XHRcdFx0XHQvLyBOT1RFOiBpdCBpcyBjb252ZW50aW9uYWwgdG8gd3JpdGUgJyAgLyAgLyAgJyBmb3IgZW1wdHkgZGF0ZXNcblx0XHRcdFx0XHRpZihzLnRyaW0oKS5sZW5ndGgpIG91dFtSXVtDXSA9IHMucmVwbGFjZSgvXFxzKyQvLFwiXCIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdEJzpcblx0XHRcdFx0XHRpZihzLmxlbmd0aCA9PT0gOCkgb3V0W1JdW0NdID0gbmV3IERhdGUoK3Muc2xpY2UoMCw0KSwgK3Muc2xpY2UoNCw2KS0xLCArcy5zbGljZSg2LDgpKTtcblx0XHRcdFx0XHRlbHNlIG91dFtSXVtDXSA9IHM7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0YnOiBvdXRbUl1bQ10gPSBwYXJzZUZsb2F0KHMudHJpbSgpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJysnOiBjYXNlICdJJzogb3V0W1JdW0NdID0gbDcgPyBkZC5yZWFkX3NoaWZ0KC00LCAnaScpIF4gMHg4MDAwMDAwMCA6IGRkLnJlYWRfc2hpZnQoNCwgJ2knKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0wnOiBzd2l0Y2gocy50cmltKCkudG9VcHBlckNhc2UoKSkge1xuXHRcdFx0XHRcdGNhc2UgJ1knOiBjYXNlICdUJzogb3V0W1JdW0NdID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnTic6IGNhc2UgJ0YnOiBvdXRbUl1bQ10gPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnJzogY2FzZSAnPyc6IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkRCRiBVbnJlY29nbml6ZWQgTDp8XCIgKyBzICsgXCJ8XCIpO1xuXHRcdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ00nOiAvKiBUT0RPOiBoYW5kbGUgbWVtbyBmaWxlcyAqL1xuXHRcdFx0XHRcdGlmKCFtZW1vKSB0aHJvdyBuZXcgRXJyb3IoXCJEQkYgVW5leHBlY3RlZCBNRU1PIGZvciB0eXBlIFwiICsgZnQudG9TdHJpbmcoMTYpKTtcblx0XHRcdFx0XHRvdXRbUl1bQ10gPSBcIiMjTUVNTyMjXCIgKyAobDcgPyBwYXJzZUludChzLnRyaW0oKSwgMTApOiBkZC5yZWFkX3NoaWZ0KDQpKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnTic6XG5cdFx0XHRcdFx0cyA9IHMucmVwbGFjZSgvXFx1MDAwMC9nLFwiXCIpLnRyaW0oKTtcblx0XHRcdFx0XHQvLyBOT1RFOiBkQkFTRSBJSSBpbnRlcnByZXRzIFwiICAuICBcIiBhcyAwXG5cdFx0XHRcdFx0aWYocyAmJiBzICE9IFwiLlwiKSBvdXRbUl1bQ10gPSArcyB8fCAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQCc6XG5cdFx0XHRcdFx0Ly8gTk9URTogZEJBU0Ugc3BlY3MgYXBwZWFyIHRvIGJlIGluY29ycmVjdFxuXHRcdFx0XHRcdG91dFtSXVtDXSA9IG5ldyBEYXRlKGRkLnJlYWRfc2hpZnQoLTgsICdmJykgLSAweDM4ODMxNzUzMzQwMCk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1QnOiBvdXRbUl1bQ10gPSBuZXcgRGF0ZSgoZGQucmVhZF9zaGlmdCg0KSAtIDB4MjUzRDhDKSAqIDB4NTI2NUMwMCArIGRkLnJlYWRfc2hpZnQoNCkpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnWSc6IG91dFtSXVtDXSA9IGRkLnJlYWRfc2hpZnQoNCwnaScpLzFlNCArIChkZC5yZWFkX3NoaWZ0KDQsICdpJykvMWU0KSpNYXRoLnBvdygyLDMyKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ08nOiBvdXRbUl1bQ10gPSAtZGQucmVhZF9zaGlmdCgtOCwgJ2YnKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0InOiBpZih2ZnAgJiYgZmllbGRzW0NdLmxlbiA9PSA4KSB7IG91dFtSXVtDXSA9IGRkLnJlYWRfc2hpZnQoOCwnZicpOyBicmVhazsgfVxuXHRcdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAnRyc6IGNhc2UgJ1AnOiBkZC5sICs9IGZpZWxkc1tDXS5sZW47IGJyZWFrO1xuXHRcdFx0XHRjYXNlICcwJzpcblx0XHRcdFx0XHRpZihmaWVsZHNbQ10ubmFtZSA9PT0gJ19OdWxsRmxhZ3MnKSBicmVhaztcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkRCRiBVbnN1cHBvcnRlZCBkYXRhIHR5cGUgXCIgKyBmaWVsZHNbQ10udHlwZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGlmKGZ0ICE9IDB4MDIpIGlmKGQubCA8IGQubGVuZ3RoICYmIGRbZC5sKytdICE9IDB4MUEpIHRocm93IG5ldyBFcnJvcihcIkRCRiBFT0YgTWFya2VyIG1pc3NpbmcgXCIgKyAoZC5sLTEpICsgXCIgb2YgXCIgKyBkLmxlbmd0aCArIFwiIFwiICsgZFtkLmwtMV0udG9TdHJpbmcoMTYpKTtcblx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgb3V0ID0gb3V0LnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0b3B0cy5EQkYgPSBmaWVsZHM7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIGRiZl90b19zaGVldChidWYsIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdGlmKCFvLmRhdGVORikgby5kYXRlTkYgPSBcInl5eXltbWRkXCI7XG5cdHZhciB3cyA9IGFvYV90b19zaGVldChkYmZfdG9fYW9hKGJ1ZiwgbyksIG8pO1xuXHR3c1tcIiFjb2xzXCJdID0gby5EQkYubWFwKGZ1bmN0aW9uKGZpZWxkKSB7IHJldHVybiB7XG5cdFx0d2NoOiBmaWVsZC5sZW4sXG5cdFx0REJGOiBmaWVsZFxuXHR9O30pO1xuXHRkZWxldGUgby5EQkY7XG5cdHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gZGJmX3RvX3dvcmtib29rKGJ1Ziwgb3B0cykvKjpXb3JrYm9vayovIHtcblx0dHJ5IHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGRiZl90b19zaGVldChidWYsIG9wdHMpLCBvcHRzKTsgfVxuXHRjYXRjaChlKSB7IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IGU7IH1cblx0cmV0dXJuICh7U2hlZXROYW1lczpbXSxTaGVldHM6e319KTtcbn1cblxudmFyIF9STEVOID0geyAnQic6IDgsICdDJzogMjUwLCAnTCc6IDEsICdEJzogOCwgJz8nOiAwLCAnJzogMCB9O1xuZnVuY3Rpb24gc2hlZXRfdG9fZGJmKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdGlmKCtvLmNvZGVwYWdlID49IDApIHNldF9jcCgrby5jb2RlcGFnZSk7XG5cdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgREJGIHRvIEpTIHN0cmluZ1wiKTtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBhb2EvKjpBT0EqLyA9IHNoZWV0X3RvX2pzb24od3MsIHtoZWFkZXI6MSwgcmF3OnRydWUsIGNlbGxEYXRlczp0cnVlfSk7XG5cdHZhciBoZWFkZXJzID0gYW9hWzBdLCBkYXRhID0gYW9hLnNsaWNlKDEpLCBjb2xzID0gd3NbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIGkgPSAwLCBqID0gMCwgaGNudCA9IDAsIHJsZW4gPSAxO1xuXHRmb3IoaSA9IDA7IGkgPCBoZWFkZXJzLmxlbmd0aDsgKytpKSB7XG5cdFx0aWYoKChjb2xzW2ldfHx7fSkuREJGfHx7fSkubmFtZSkgeyBoZWFkZXJzW2ldID0gY29sc1tpXS5EQkYubmFtZTsgKytoY250OyBjb250aW51ZTsgfVxuXHRcdGlmKGhlYWRlcnNbaV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0KytoY250O1xuXHRcdGlmKHR5cGVvZiBoZWFkZXJzW2ldID09PSAnbnVtYmVyJykgaGVhZGVyc1tpXSA9IGhlYWRlcnNbaV0udG9TdHJpbmcoMTApO1xuXHRcdGlmKHR5cGVvZiBoZWFkZXJzW2ldICE9PSAnc3RyaW5nJykgdGhyb3cgbmV3IEVycm9yKFwiREJGIEludmFsaWQgY29sdW1uIG5hbWUgXCIgKyBoZWFkZXJzW2ldICsgXCIgfFwiICsgKHR5cGVvZiBoZWFkZXJzW2ldKSArIFwifFwiKTtcblx0XHRpZihoZWFkZXJzLmluZGV4T2YoaGVhZGVyc1tpXSkgIT09IGkpIGZvcihqPTA7IGo8MTAyNDsrK2opXG5cdFx0XHRpZihoZWFkZXJzLmluZGV4T2YoaGVhZGVyc1tpXSArIFwiX1wiICsgaikgPT0gLTEpIHsgaGVhZGVyc1tpXSArPSBcIl9cIiArIGo7IGJyZWFrOyB9XG5cdH1cblx0dmFyIHJhbmdlID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSk7XG5cdHZhciBjb2x0eXBlcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY29sd2lkdGhzLyo6QXJyYXk8bnVtYmVyPiovID0gW107XG5cdHZhciBjb2xkZWNpbWFscy8qOkFycmF5PG51bWJlcj4qLyA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPD0gcmFuZ2UuZS5jIC0gcmFuZ2Uucy5jOyArK2kpIHtcblx0XHR2YXIgZ3Vlc3MgPSAnJywgX2d1ZXNzID0gJycsIG1heGxlbiA9IDA7XG5cdFx0dmFyIGNvbC8qOkFycmF5PGFueT4qLyA9IFtdO1xuXHRcdGZvcihqPTA7IGogPCBkYXRhLmxlbmd0aDsgKytqKSB7XG5cdFx0XHRpZihkYXRhW2pdW2ldICE9IG51bGwpIGNvbC5wdXNoKGRhdGFbal1baV0pO1xuXHRcdH1cblx0XHRpZihjb2wubGVuZ3RoID09IDAgfHwgaGVhZGVyc1tpXSA9PSBudWxsKSB7IGNvbHR5cGVzW2ldID0gJz8nOyBjb250aW51ZTsgfVxuXHRcdGZvcihqID0gMDsgaiA8IGNvbC5sZW5ndGg7ICsraikge1xuXHRcdFx0c3dpdGNoKHR5cGVvZiBjb2xbal0pIHtcblx0XHRcdFx0LyogVE9ETzogY2hlY2sgaWYgTDIgY29tcGF0IGlzIGRlc2lyZWQgKi9cblx0XHRcdFx0Y2FzZSAnbnVtYmVyJzogX2d1ZXNzID0gJ0InOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnc3RyaW5nJzogX2d1ZXNzID0gJ0MnOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnYm9vbGVhbic6IF9ndWVzcyA9ICdMJzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ29iamVjdCc6IF9ndWVzcyA9IGNvbFtqXSBpbnN0YW5jZW9mIERhdGUgPyAnRCcgOiAnQyc7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiBfZ3Vlc3MgPSAnQyc7XG5cdFx0XHR9XG5cdFx0XHRtYXhsZW4gPSBNYXRoLm1heChtYXhsZW4sIFN0cmluZyhjb2xbal0pLmxlbmd0aCk7XG5cdFx0XHRndWVzcyA9IGd1ZXNzICYmIGd1ZXNzICE9IF9ndWVzcyA/ICdDJyA6IF9ndWVzcztcblx0XHRcdC8vaWYoZ3Vlc3MgPT0gJ0MnKSBicmVhaztcblx0XHR9XG5cdFx0aWYobWF4bGVuID4gMjUwKSBtYXhsZW4gPSAyNTA7XG5cdFx0X2d1ZXNzID0gKChjb2xzW2ldfHx7fSkuREJGfHx7fSkudHlwZTtcblx0XHQvKiBUT0RPOiBtb3JlIGZpbmUgZ3JhaW5lZCBjb250cm9sIG92ZXIgREJGIHR5cGUgcmVzb2x1dGlvbiAqL1xuXHRcdGlmKF9ndWVzcyA9PSAnQycpIHtcblx0XHRcdGlmKGNvbHNbaV0uREJGLmxlbiA+IG1heGxlbikgbWF4bGVuID0gY29sc1tpXS5EQkYubGVuO1xuXHRcdH1cblx0XHRpZihndWVzcyA9PSAnQicgJiYgX2d1ZXNzID09ICdOJykge1xuXHRcdFx0Z3Vlc3MgPSAnTic7XG5cdFx0XHRjb2xkZWNpbWFsc1tpXSA9IGNvbHNbaV0uREJGLmRlYztcblx0XHRcdG1heGxlbiA9IGNvbHNbaV0uREJGLmxlbjtcblx0XHR9XG5cdFx0Y29sd2lkdGhzW2ldID0gZ3Vlc3MgPT0gJ0MnIHx8IF9ndWVzcyA9PSAnTicgPyBtYXhsZW4gOiAoX1JMRU5bZ3Vlc3NdIHx8IDApO1xuXHRcdHJsZW4gKz0gY29sd2lkdGhzW2ldO1xuXHRcdGNvbHR5cGVzW2ldID0gZ3Vlc3M7XG5cdH1cblxuXHR2YXIgaCA9IGJhLm5leHQoMzIpO1xuXHRoLndyaXRlX3NoaWZ0KDQsIDB4MTMwMjExMzApO1xuXHRoLndyaXRlX3NoaWZ0KDQsIGRhdGEubGVuZ3RoKTtcblx0aC53cml0ZV9zaGlmdCgyLCAyOTYgKyAzMiAqIGhjbnQpO1xuXHRoLndyaXRlX3NoaWZ0KDIsIHJsZW4pO1xuXHRmb3IoaT0wOyBpIDwgNDsgKytpKSBoLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRoLndyaXRlX3NoaWZ0KDQsIDB4MDAwMDAwMDAgfCAoKCtkYmZfcmV2ZXJzZV9tYXBbLyo6OlN0cmluZygqL2N1cnJlbnRfYW5zaS8qOjopKi9dIHx8IDB4MDMpPDw4KSk7XG5cblx0Zm9yKGkgPSAwLCBqID0gMDsgaSA8IGhlYWRlcnMubGVuZ3RoOyArK2kpIHtcblx0XHRpZihoZWFkZXJzW2ldID09IG51bGwpIGNvbnRpbnVlO1xuXHRcdHZhciBoZiA9IGJhLm5leHQoMzIpO1xuXHRcdHZhciBfZiA9IChoZWFkZXJzW2ldLnNsaWNlKC0xMCkgKyBcIlxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcXHgwMFxceDAwXFx4MDBcIikuc2xpY2UoMCwgMTEpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIF9mLCBcInNiY3NcIik7XG5cdFx0aGYud3JpdGVfc2hpZnQoMSwgY29sdHlwZXNbaV0gPT0gJz8nID8gJ0MnIDogY29sdHlwZXNbaV0sIFwic2Jjc1wiKTtcblx0XHRoZi53cml0ZV9zaGlmdCg0LCBqKTtcblx0XHRoZi53cml0ZV9zaGlmdCgxLCBjb2x3aWR0aHNbaV0gfHwgX1JMRU5bY29sdHlwZXNbaV1dIHx8IDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIGNvbGRlY2ltYWxzW2ldIHx8IDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIDB4MDIpO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGhmLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdGogKz0gKGNvbHdpZHRoc1tpXSB8fCBfUkxFTltjb2x0eXBlc1tpXV0gfHwgMCk7XG5cdH1cblxuXHR2YXIgaGIgPSBiYS5uZXh0KDI2NCk7XG5cdGhiLndyaXRlX3NoaWZ0KDQsIDB4MDAwMDAwMEQpO1xuXHRmb3IoaT0wOyBpIDwgNjU7KytpKSBoYi53cml0ZV9zaGlmdCg0LCAweDAwMDAwMDAwKTtcblx0Zm9yKGk9MDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgcm91dCA9IGJhLm5leHQocmxlbik7XG5cdFx0cm91dC53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRmb3Ioaj0wOyBqPGhlYWRlcnMubGVuZ3RoOyArK2opIHtcblx0XHRcdGlmKGhlYWRlcnNbal0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0XHRzd2l0Y2goY29sdHlwZXNbal0pIHtcblx0XHRcdFx0Y2FzZSAnTCc6IHJvdXQud3JpdGVfc2hpZnQoMSwgZGF0YVtpXVtqXSA9PSBudWxsID8gMHgzRiA6IGRhdGFbaV1bal0gPyAweDU0IDogMHg0Nik7IGJyZWFrO1xuXHRcdFx0XHRjYXNlICdCJzogcm91dC53cml0ZV9zaGlmdCg4LCBkYXRhW2ldW2pdfHwwLCAnZicpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnTic6XG5cdFx0XHRcdFx0dmFyIF9uID0gXCIwXCI7XG5cdFx0XHRcdFx0aWYodHlwZW9mIGRhdGFbaV1bal0gPT0gXCJudW1iZXJcIikgX24gPSBkYXRhW2ldW2pdLnRvRml4ZWQoY29sZGVjaW1hbHNbal18fDApO1xuXHRcdFx0XHRcdGZvcihoY250PTA7IGhjbnQgPCBjb2x3aWR0aHNbal0tX24ubGVuZ3RoOyArK2hjbnQpIHJvdXQud3JpdGVfc2hpZnQoMSwgMHgyMCk7XG5cdFx0XHRcdFx0cm91dC53cml0ZV9zaGlmdCgxLCBfbiwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdEJzpcblx0XHRcdFx0XHRpZighZGF0YVtpXVtqXSkgcm91dC53cml0ZV9zaGlmdCg4LCBcIjAwMDAwMDAwXCIsIFwic2Jjc1wiKTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdHJvdXQud3JpdGVfc2hpZnQoNCwgKFwiMDAwMFwiK2RhdGFbaV1bal0uZ2V0RnVsbFllYXIoKSkuc2xpY2UoLTQpLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDIsIChcIjAwXCIrKGRhdGFbaV1bal0uZ2V0TW9udGgoKSsxKSkuc2xpY2UoLTIpLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDIsIChcIjAwXCIrZGF0YVtpXVtqXS5nZXREYXRlKCkpLnNsaWNlKC0yKSwgXCJzYmNzXCIpO1xuXHRcdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0MnOlxuXHRcdFx0XHRcdHZhciBfcyA9IFN0cmluZyhkYXRhW2ldW2pdICE9IG51bGwgPyBkYXRhW2ldW2pdIDogXCJcIikuc2xpY2UoMCwgY29sd2lkdGhzW2pdKTtcblx0XHRcdFx0XHRyb3V0LndyaXRlX3NoaWZ0KDEsIF9zLCBcInNiY3NcIik7XG5cdFx0XHRcdFx0Zm9yKGhjbnQ9MDsgaGNudCA8IGNvbHdpZHRoc1tqXS1fcy5sZW5ndGg7ICsraGNudCkgcm91dC53cml0ZV9zaGlmdCgxLCAweDIwKTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdC8vIGRhdGFcblx0fVxuXHRiYS5uZXh0KDEpLndyaXRlX3NoaWZ0KDEsIDB4MUEpO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGRiZl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZGJmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2RiZlxuXHR9O1xufSkoKTtcblxudmFyIFNZTEsgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHQvKiBUT0RPOiBzdHJlc3MgdGVzdCBzZXF1ZW5jZXMgKi9cblx0dmFyIHN5bGtfZXNjYXBlcyA9ICh7XG5cdFx0QUE6J8OAJywgQkE6J8OBJywgQ0E6J8OCJywgREE6MTk1LCBIQTonw4QnLCBKQToxOTcsXG5cdFx0QUU6J8OIJywgQkU6J8OJJywgQ0U6J8OKJywgICAgICAgICBIRTonw4snLFxuXHRcdEFJOifDjCcsIEJJOifDjScsIENJOifDjicsICAgICAgICAgSEk6J8OPJyxcblx0XHRBTzonw5InLCBCTzonw5MnLCBDTzonw5QnLCBETzoyMTMsIEhPOifDlicsXG5cdFx0QVU6J8OZJywgQlU6J8OaJywgQ1U6J8ObJywgICAgICAgICBIVTonw5wnLFxuXHRcdEFhOifDoCcsIEJhOifDoScsIENhOifDoicsIERhOjIyNywgSGE6J8OkJywgSmE6MjI5LFxuXHRcdEFlOifDqCcsIEJlOifDqScsIENlOifDqicsICAgICAgICAgSGU6J8OrJyxcblx0XHRBaTonw6wnLCBCaTonw60nLCBDaTonw64nLCAgICAgICAgIEhpOifDrycsXG5cdFx0QW86J8OyJywgQm86J8OzJywgQ286J8O0JywgRG86MjQ1LCBIbzonw7YnLFxuXHRcdEF1OifDuScsIEJ1OifDuicsIEN1OifDuycsICAgICAgICAgSHU6J8O8Jyxcblx0XHRLQzonw4cnLCBLYzonw6cnLCBxOifDpicsICB6OifFkycsICBhOifDhicsICBqOifFkicsXG5cdFx0RE46MjA5LCBEbjoyNDEsIEh5OjI1NSxcblx0XHRTOjE2OSwgIGM6MTcwLCAgUjoxNzQsICBcIkIgXCI6MTgwLFxuXHRcdC8qOjpbKi8wLyo6Ol0qLzoxNzYsICAgIC8qOjpbKi8xLyo6Ol0qLzoxNzcsICAvKjo6WyovMi8qOjpdKi86MTc4LFxuXHRcdC8qOjpbKi8zLyo6Ol0qLzoxNzksICAgIC8qOjpbKi81Lyo6Ol0qLzoxODEsICAvKjo6WyovNi8qOjpdKi86MTgyLFxuXHRcdC8qOjpbKi83Lyo6Ol0qLzoxODMsICAgIFE6MTg1LCAgazoxODYsICBiOjIwOCwgIGk6MjE2LCAgbDoyMjIsICBzOjI0MCwgIHk6MjQ4LFxuXHRcdFwiIVwiOjE2MSwgJ1wiJzoxNjIsIFwiI1wiOjE2MywgXCIoXCI6MTY0LCBcIiVcIjoxNjUsIFwiJ1wiOjE2NywgXCJIIFwiOjE2OCxcblx0XHRcIitcIjoxNzEsIFwiO1wiOjE4NywgXCI8XCI6MTg4LCBcIj1cIjoxODksIFwiPlwiOjE5MCwgXCI/XCI6MTkxLCBcIntcIjoyMjNcblx0fS8qOmFueSovKTtcblx0dmFyIHN5bGtfY2hhcl9yZWdleCA9IG5ldyBSZWdFeHAoXCJcXHUwMDFCTihcIiArIGtleXMoc3lsa19lc2NhcGVzKS5qb2luKFwifFwiKS5yZXBsYWNlKC9cXHxcXHxcXHwvLCBcInxcXFxcfHxcIikucmVwbGFjZSgvKFs/KCkrXSkvZyxcIlxcXFwkMVwiKSArIFwifFxcXFx8KVwiLCBcImdtXCIpO1xuXHR2YXIgc3lsa19jaGFyX2ZuID0gZnVuY3Rpb24oXywgJDEpeyB2YXIgbyA9IHN5bGtfZXNjYXBlc1skMV07IHJldHVybiB0eXBlb2YgbyA9PSBcIm51bWJlclwiID8gX2dldGFuc2kobykgOiBvOyB9O1xuXHR2YXIgZGVjb2RlX3N5bGtfY2hhciA9IGZ1bmN0aW9uKCQkLCAkMSwgJDIpIHsgdmFyIG5ld2NjID0gKCgkMS5jaGFyQ29kZUF0KDApIC0gMHgyMCk8PDQpIHwgKCQyLmNoYXJDb2RlQXQoMCkgLSAweDMwKTsgcmV0dXJuIG5ld2NjID09IDU5ID8gJCQgOiBfZ2V0YW5zaShuZXdjYyk7IH07XG5cdHN5bGtfZXNjYXBlc1tcInxcIl0gPSAyNTQ7XG5cdC8qIFRPRE86IGZpbmQgYW4gYWN0dWFsIHNwZWNpZmljYXRpb24gKi9cblx0ZnVuY3Rpb24gc3lsa190b19hb2EoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpbQU9BLCBXb3Jrc2hlZXRdKi8ge1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHJldHVybiBzeWxrX3RvX2FvYV9zdHIoQmFzZTY0X2RlY29kZShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gc3lsa190b19hb2Ffc3RyKGQsIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihoYXNfYnVmICYmIEJ1ZmZlci5pc0J1ZmZlcihkKSA/IGQudG9TdHJpbmcoJ2JpbmFyeScpIDogYTJzKGQpLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2FycmF5JzogcmV0dXJuIHN5bGtfdG9fYW9hX3N0cihjYzJzdHIoZCksIG9wdHMpO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG5cdH1cblx0ZnVuY3Rpb24gc3lsa190b19hb2Ffc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOltBT0EsIFdvcmtzaGVldF0qLyB7XG5cdFx0dmFyIHJlY29yZHMgPSBzdHIuc3BsaXQoL1tcXG5cXHJdKy8pLCBSID0gLTEsIEMgPSAtMSwgcmkgPSAwLCByaiA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0dmFyIGZvcm1hdHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgbmV4dF9jZWxsX2Zvcm1hdC8qOnN0cmluZ3xudWxsKi8gPSBudWxsO1xuXHRcdHZhciBzaHQgPSB7fSwgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBbXSwgY3cvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgTXZhbCA9IDAsIGo7XG5cdFx0aWYoK29wdHMuY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvcHRzLmNvZGVwYWdlKTtcblx0XHRmb3IgKDsgcmkgIT09IHJlY29yZHMubGVuZ3RoOyArK3JpKSB7XG5cdFx0XHRNdmFsID0gMDtcblx0XHRcdHZhciByc3RyPXJlY29yZHNbcmldLnRyaW0oKS5yZXBsYWNlKC9cXHgxQihbXFx4MjAtXFx4MkZdKShbXFx4MzAtXFx4M0ZdKS9nLCBkZWNvZGVfc3lsa19jaGFyKS5yZXBsYWNlKHN5bGtfY2hhcl9yZWdleCwgc3lsa19jaGFyX2ZuKTtcblx0XHRcdHZhciByZWNvcmQ9cnN0ci5yZXBsYWNlKC87Oy9nLCBcIlxcdTAwMDBcIikuc3BsaXQoXCI7XCIpLm1hcChmdW5jdGlvbih4KSB7IHJldHVybiB4LnJlcGxhY2UoL1xcdTAwMDAvZywgXCI7XCIpOyB9KTtcblx0XHRcdHZhciBSVD1yZWNvcmRbMF0sIHZhbDtcblx0XHRcdGlmKHJzdHIubGVuZ3RoID4gMCkgc3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlICdJRCc6IGJyZWFrOyAvKiBoZWFkZXIgKi9cblx0XHRcdGNhc2UgJ0UnOiBicmVhazsgLyogRU9GICovXG5cdFx0XHRjYXNlICdCJzogYnJlYWs7IC8qIGRpbWVuc2lvbnMgKi9cblx0XHRcdGNhc2UgJ08nOiBicmVhazsgLyogb3B0aW9ucz8gKi9cblx0XHRcdGNhc2UgJ1cnOiBicmVhazsgLyogd2luZG93PyAqL1xuXHRcdFx0Y2FzZSAnUCc6XG5cdFx0XHRcdGlmKHJlY29yZFsxXS5jaGFyQXQoMCkgPT0gJ1AnKVxuXHRcdFx0XHRcdGZvcm1hdHMucHVzaChyc3RyLnNsaWNlKDMpLnJlcGxhY2UoLzs7L2csIFwiO1wiKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnQyc6XG5cdFx0XHR2YXIgQ19zZWVuX0sgPSBmYWxzZSwgQ19zZWVuX1ggPSBmYWxzZSwgQ19zZWVuX1MgPSBmYWxzZSwgQ19zZWVuX0UgPSBmYWxzZSwgX1IgPSAtMSwgX0MgPSAtMTtcblx0XHRcdGZvcihyaj0xOyByajxyZWNvcmQubGVuZ3RoOyArK3JqKSBzd2l0Y2gocmVjb3JkW3JqXS5jaGFyQXQoMCkpIHtcblx0XHRcdFx0Y2FzZSAnQSc6IGJyZWFrOyAvLyBUT0RPOiBjb21tZW50XG5cdFx0XHRcdGNhc2UgJ1gnOiBDID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgQ19zZWVuX1ggPSB0cnVlOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnWSc6XG5cdFx0XHRcdFx0UiA9IHBhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpLTE7IGlmKCFDX3NlZW5fWCkgQyA9IDA7XG5cdFx0XHRcdFx0Zm9yKGogPSBhcnIubGVuZ3RoOyBqIDw9IFI7ICsraikgYXJyW2pdID0gW107XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0snOlxuXHRcdFx0XHRcdHZhbCA9IHJlY29yZFtyal0uc2xpY2UoMSk7XG5cdFx0XHRcdFx0aWYodmFsLmNoYXJBdCgwKSA9PT0gJ1wiJykgdmFsID0gdmFsLnNsaWNlKDEsdmFsLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHRcdGVsc2UgaWYodmFsID09PSAnVFJVRScpIHZhbCA9IHRydWU7XG5cdFx0XHRcdFx0ZWxzZSBpZih2YWwgPT09ICdGQUxTRScpIHZhbCA9IGZhbHNlO1xuXHRcdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKHZhbCkpKSB7XG5cdFx0XHRcdFx0XHR2YWwgPSBmdXp6eW51bSh2YWwpO1xuXHRcdFx0XHRcdFx0aWYobmV4dF9jZWxsX2Zvcm1hdCAhPT0gbnVsbCAmJiBmbXRfaXNfZGF0ZShuZXh0X2NlbGxfZm9ybWF0KSkgdmFsID0gbnVtZGF0ZSh2YWwpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKHZhbCkuZ2V0RGF0ZSgpKSkge1xuXHRcdFx0XHRcdFx0dmFsID0gcGFyc2VEYXRlKHZhbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHZhbCA9PSBcInN0cmluZ1wiICYmICgob3B0c3x8e30pLnR5cGUgIT0gXCJzdHJpbmdcIikgJiYgKG9wdHN8fHt9KS5jb2RlcGFnZSkgdmFsID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKG9wdHMuY29kZXBhZ2UsIHZhbCk7XG5cdFx0XHRcdFx0Q19zZWVuX0sgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdFJzpcblx0XHRcdFx0XHRDX3NlZW5fRSA9IHRydWU7XG5cdFx0XHRcdFx0dmFyIGZvcm11bGEgPSByY190b19hMShyZWNvcmRbcmpdLnNsaWNlKDEpLCB7cjpSLGM6Q30pO1xuXHRcdFx0XHRcdGFycltSXVtDXSA9IFthcnJbUl1bQ10sIGZvcm11bGFdO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdTJzpcblx0XHRcdFx0XHRDX3NlZW5fUyA9IHRydWU7XG5cdFx0XHRcdFx0YXJyW1JdW0NdID0gW2FycltSXVtDXSwgXCJTNVNcIl07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0cnOiBicmVhazsgLy8gdW5rbm93blxuXHRcdFx0XHRjYXNlICdSJzogX1IgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnQyc6IF9DID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSktMTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgYmFkIHJlY29yZCBcIiArIHJzdHIpO1xuXHRcdFx0fVxuXHRcdFx0aWYoQ19zZWVuX0spIHtcblx0XHRcdFx0aWYoYXJyW1JdW0NdICYmIGFycltSXVtDXS5sZW5ndGggPT0gMikgYXJyW1JdW0NdWzBdID0gdmFsO1xuXHRcdFx0XHRlbHNlIGFycltSXVtDXSA9IHZhbDtcblx0XHRcdFx0bmV4dF9jZWxsX2Zvcm1hdCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0XHRpZihDX3NlZW5fUykge1xuXHRcdFx0XHRpZihDX3NlZW5fRSkgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgaGF2ZSBvd24gZm9ybXVsYVwiKTtcblx0XHRcdFx0dmFyIHNocmJhc2UgPSBfUiA+IC0xICYmIGFycltfUl1bX0NdO1xuXHRcdFx0XHRpZighc2hyYmFzZSB8fCAhc2hyYmFzZVsxXSkgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBzaGFyZWQgZm9ybXVsYSBjYW5ub3QgZmluZCBiYXNlXCIpO1xuXHRcdFx0XHRhcnJbUl1bQ11bMV0gPSBzaGlmdF9mb3JtdWxhX3N0cihzaHJiYXNlWzFdLCB7cjogUiAtIF9SLCBjOiBDIC0gX0N9KTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRic6XG5cdFx0XHR2YXIgRl9zZWVuID0gMDtcblx0XHRcdGZvcihyaj0xOyByajxyZWNvcmQubGVuZ3RoOyArK3JqKSBzd2l0Y2gocmVjb3JkW3JqXS5jaGFyQXQoMCkpIHtcblx0XHRcdFx0Y2FzZSAnWCc6IEMgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyArK0Zfc2VlbjsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1knOlxuXHRcdFx0XHRcdFIgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xOyAvKkMgPSAwOyovXG5cdFx0XHRcdFx0Zm9yKGogPSBhcnIubGVuZ3RoOyBqIDw9IFI7ICsraikgYXJyW2pdID0gW107XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ00nOiBNdmFsID0gcGFyc2VJbnQocmVjb3JkW3JqXS5zbGljZSgxKSkgLyAyMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ0YnOiBicmVhazsgLyogPz8/ICovXG5cdFx0XHRcdGNhc2UgJ0cnOiBicmVhazsgLyogaGlkZSBncmlkICovXG5cdFx0XHRcdGNhc2UgJ1AnOlxuXHRcdFx0XHRcdG5leHRfY2VsbF9mb3JtYXQgPSBmb3JtYXRzW3BhcnNlSW50KHJlY29yZFtyal0uc2xpY2UoMSkpXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnUyc6IGJyZWFrOyAvKiBjZWxsIHN0eWxlICovXG5cdFx0XHRcdGNhc2UgJ0QnOiBicmVhazsgLyogY29sdW1uICovXG5cdFx0XHRcdGNhc2UgJ04nOiBicmVhazsgLyogZm9udCAqL1xuXHRcdFx0XHRjYXNlICdXJzpcblx0XHRcdFx0XHRjdyA9IHJlY29yZFtyal0uc2xpY2UoMSkuc3BsaXQoXCIgXCIpO1xuXHRcdFx0XHRcdGZvcihqID0gcGFyc2VJbnQoY3dbMF0sIDEwKTsgaiA8PSBwYXJzZUludChjd1sxXSwgMTApOyArK2opIHtcblx0XHRcdFx0XHRcdE12YWwgPSBwYXJzZUludChjd1syXSwgMTApO1xuXHRcdFx0XHRcdFx0Y29saW5mb1tqLTFdID0gTXZhbCA9PT0gMCA/IHtoaWRkZW46dHJ1ZX06IHt3Y2g6TXZhbH07IHByb2Nlc3NfY29sKGNvbGluZm9bai0xXSk7XG5cdFx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAnQyc6IC8qIGRlZmF1bHQgY29sdW1uIGZvcm1hdCAqL1xuXHRcdFx0XHRcdEMgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xO1xuXHRcdFx0XHRcdGlmKCFjb2xpbmZvW0NdKSBjb2xpbmZvW0NdID0ge307XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1InOiAvKiByb3cgcHJvcGVydGllcyAqL1xuXHRcdFx0XHRcdFIgPSBwYXJzZUludChyZWNvcmRbcmpdLnNsaWNlKDEpKS0xO1xuXHRcdFx0XHRcdGlmKCFyb3dpbmZvW1JdKSByb3dpbmZvW1JdID0ge307XG5cdFx0XHRcdFx0aWYoTXZhbCA+IDApIHsgcm93aW5mb1tSXS5ocHQgPSBNdmFsOyByb3dpbmZvW1JdLmhweCA9IHB0MnB4KE12YWwpOyB9XG5cdFx0XHRcdFx0ZWxzZSBpZihNdmFsID09PSAwKSByb3dpbmZvW1JdLmhpZGRlbiA9IHRydWU7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlNZTEsgYmFkIHJlY29yZCBcIiArIHJzdHIpO1xuXHRcdFx0fVxuXHRcdFx0aWYoRl9zZWVuIDwgMSkgbmV4dF9jZWxsX2Zvcm1hdCA9IG51bGw7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiU1lMSyBiYWQgcmVjb3JkIFwiICsgcnN0cik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgc2h0Wychcm93cyddID0gcm93aW5mbztcblx0XHRpZihjb2xpbmZvLmxlbmd0aCA+IDApIHNodFsnIWNvbHMnXSA9IGNvbGluZm87XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gW2Fyciwgc2h0XTtcblx0fVxuXG5cdGZ1bmN0aW9uIHN5bGtfdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIGFvYXNodCA9IHN5bGtfdG9fYW9hKGQsIG9wdHMpO1xuXHRcdHZhciBhb2EgPSBhb2FzaHRbMF0sIHdzID0gYW9hc2h0WzFdO1xuXHRcdHZhciBvID0gYW9hX3RvX3NoZWV0KGFvYSwgb3B0cyk7XG5cdFx0a2V5cyh3cykuZm9yRWFjaChmdW5jdGlvbihrKSB7IG9ba10gPSB3c1trXTsgfSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBzeWxrX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhzeWxrX3RvX3NoZWV0KGQsIG9wdHMpLCBvcHRzKTsgfVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3dzX2NlbGxfc3lsayhjZWxsLyo6Q2VsbCovLCB3cy8qOldvcmtzaGVldCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLy8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8gPSBcIkM7WVwiICsgKFIrMSkgKyBcIjtYXCIgKyAoQysxKSArIFwiO0tcIjtcblx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRjYXNlICduJzpcblx0XHRcdFx0byArPSAoY2VsbC52fHwwKTtcblx0XHRcdFx0aWYoY2VsbC5mICYmICFjZWxsLkYpIG8gKz0gXCI7RVwiICsgYTFfdG9fcmMoY2VsbC5mLCB7cjpSLCBjOkN9KTsgYnJlYWs7XG5cdFx0XHRjYXNlICdiJzogbyArPSBjZWxsLnYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIjsgYnJlYWs7XG5cdFx0XHRjYXNlICdlJzogbyArPSBjZWxsLncgfHwgY2VsbC52OyBicmVhaztcblx0XHRcdGNhc2UgJ2QnOiBvICs9ICdcIicgKyAoY2VsbC53IHx8IGNlbGwudikgKyAnXCInOyBicmVhaztcblx0XHRcdGNhc2UgJ3MnOiBvICs9ICdcIicgKyBjZWxsLnYucmVwbGFjZSgvXCIvZyxcIlwiKS5yZXBsYWNlKC87L2csIFwiOztcIikgKyAnXCInOyBicmVhaztcblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV93c19jb2xzX3N5bGsob3V0LCBjb2xzKSB7XG5cdFx0Y29scy5mb3JFYWNoKGZ1bmN0aW9uKGNvbCwgaSkge1xuXHRcdFx0dmFyIHJlYyA9IFwiRjtXXCIgKyAoaSsxKSArIFwiIFwiICsgKGkrMSkgKyBcIiBcIjtcblx0XHRcdGlmKGNvbC5oaWRkZW4pIHJlYyArPSBcIjBcIjtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRpZih0eXBlb2YgY29sLndpZHRoID09ICdudW1iZXInICYmICFjb2wud3B4KSBjb2wud3B4ID0gd2lkdGgycHgoY29sLndpZHRoKTtcblx0XHRcdFx0aWYodHlwZW9mIGNvbC53cHggPT0gJ251bWJlcicgJiYgIWNvbC53Y2gpIGNvbC53Y2ggPSBweDJjaGFyKGNvbC53cHgpO1xuXHRcdFx0XHRpZih0eXBlb2YgY29sLndjaCA9PSAnbnVtYmVyJykgcmVjICs9IE1hdGgucm91bmQoY29sLndjaCk7XG5cdFx0XHR9XG5cdFx0XHRpZihyZWMuY2hhckF0KHJlYy5sZW5ndGggLSAxKSAhPSBcIiBcIikgb3V0LnB1c2gocmVjKTtcblx0XHR9KTtcblx0fVxuXG5cdGZ1bmN0aW9uIHdyaXRlX3dzX3Jvd3Nfc3lsayhvdXQvKjpBcnJheTxzdHJpbmc+Ki8sIHJvd3MvKjpBcnJheTxSb3dJbmZvPiovKSB7XG5cdFx0cm93cy5mb3JFYWNoKGZ1bmN0aW9uKHJvdywgaSkge1xuXHRcdFx0dmFyIHJlYyA9IFwiRjtcIjtcblx0XHRcdGlmKHJvdy5oaWRkZW4pIHJlYyArPSBcIk0wO1wiO1xuXHRcdFx0ZWxzZSBpZihyb3cuaHB0KSByZWMgKz0gXCJNXCIgKyAyMCAqIHJvdy5ocHQgKyBcIjtcIjtcblx0XHRcdGVsc2UgaWYocm93LmhweCkgcmVjICs9IFwiTVwiICsgMjAgKiBweDJwdChyb3cuaHB4KSArIFwiO1wiO1xuXHRcdFx0aWYocmVjLmxlbmd0aCA+IDIpIG91dC5wdXNoKHJlYyArIFwiUlwiICsgKGkrMSkpO1xuXHRcdH0pO1xuXHR9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fc3lsayh3cy8qOldvcmtzaGVldCovLCBvcHRzLyo6P2FueSovKS8qOnN0cmluZyovIHtcblx0XHR2YXIgcHJlYW1ibGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXCJJRDtQV1hMO047RVwiXSwgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdFx0dmFyIFJTID0gXCJcXHJcXG5cIjtcblxuXHRcdHByZWFtYmxlLnB1c2goXCJQO1BHZW5lcmFsXCIpO1xuXHRcdHByZWFtYmxlLnB1c2goXCJGO1AwO0RHMEc4O00yNTVcIik7XG5cdFx0aWYod3NbJyFjb2xzJ10pIHdyaXRlX3dzX2NvbHNfc3lsayhwcmVhbWJsZSwgd3NbJyFjb2xzJ10pO1xuXHRcdGlmKHdzWychcm93cyddKSB3cml0ZV93c19yb3dzX3N5bGsocHJlYW1ibGUsIHdzWychcm93cyddKTtcblxuXHRcdHByZWFtYmxlLnB1c2goXCJCO1lcIiArIChyLmUuciAtIHIucy5yICsgMSkgKyBcIjtYXCIgKyAoci5lLmMgLSByLnMuYyArIDEpICsgXCI7RFwiICsgW3Iucy5jLHIucy5yLHIuZS5jLHIuZS5yXS5qb2luKFwiIFwiKSk7XG5cdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCAoY2VsbC52ID09IG51bGwgJiYgKCFjZWxsLmYgfHwgY2VsbC5GKSkpIGNvbnRpbnVlO1xuXHRcdFx0XHRvLnB1c2god3JpdGVfd3NfY2VsbF9zeWxrKGNlbGwsIHdzLCBSLCBDLCBvcHRzKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBwcmVhbWJsZS5qb2luKFJTKSArIFJTICsgby5qb2luKFJTKSArIFJTICsgXCJFXCIgKyBSUztcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IHN5bGtfdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IHN5bGtfdG9fc2hlZXQsXG5cdFx0ZnJvbV9zaGVldDogc2hlZXRfdG9fc3lsa1xuXHR9O1xufSkoKTtcblxudmFyIERJRiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGRpZl90b19hb2EoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpBT0EqLyB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKEJhc2U2NF9kZWNvZGUoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKGQsIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzogcmV0dXJuIGRpZl90b19hb2Ffc3RyKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiByZXR1cm4gZGlmX3RvX2FvYV9zdHIoY2Myc3RyKGQpLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG5cdGZ1bmN0aW9uIGRpZl90b19hb2Ffc3RyKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOkFPQSovIHtcblx0XHR2YXIgcmVjb3JkcyA9IHN0ci5zcGxpdCgnXFxuJyksIFIgPSAtMSwgQyA9IC0xLCByaSA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0Zm9yICg7IHJpICE9PSByZWNvcmRzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0aWYgKHJlY29yZHNbcmldLnRyaW0oKSA9PT0gJ0JPVCcpIHsgYXJyWysrUl0gPSBbXTsgQyA9IDA7IGNvbnRpbnVlOyB9XG5cdFx0XHRpZiAoUiA8IDApIGNvbnRpbnVlO1xuXHRcdFx0dmFyIG1ldGFkYXRhID0gcmVjb3Jkc1tyaV0udHJpbSgpLnNwbGl0KFwiLFwiKTtcblx0XHRcdHZhciB0eXBlID0gbWV0YWRhdGFbMF0sIHZhbHVlID0gbWV0YWRhdGFbMV07XG5cdFx0XHQrK3JpO1xuXHRcdFx0dmFyIGRhdGEgPSByZWNvcmRzW3JpXSB8fCBcIlwiO1xuXHRcdFx0d2hpbGUoKChkYXRhLm1hdGNoKC9bXCJdL2cpfHxbXSkubGVuZ3RoICYgMSkgJiYgcmkgPCByZWNvcmRzLmxlbmd0aCAtIDEpIGRhdGEgKz0gXCJcXG5cIiArIHJlY29yZHNbKytyaV07XG5cdFx0XHRkYXRhID0gZGF0YS50cmltKCk7XG5cdFx0XHRzd2l0Y2ggKCt0eXBlKSB7XG5cdFx0XHRcdGNhc2UgLTE6XG5cdFx0XHRcdFx0aWYgKGRhdGEgPT09ICdCT1QnKSB7IGFyclsrK1JdID0gW107IEMgPSAwOyBjb250aW51ZTsgfVxuXHRcdFx0XHRcdGVsc2UgaWYgKGRhdGEgIT09ICdFT0QnKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgRElGIHNwZWNpYWwgY29tbWFuZCBcIiArIGRhdGEpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDA6XG5cdFx0XHRcdFx0aWYoZGF0YSA9PT0gJ1RSVUUnKSBhcnJbUl1bQ10gPSB0cnVlO1xuXHRcdFx0XHRcdGVsc2UgaWYoZGF0YSA9PT0gJ0ZBTFNFJykgYXJyW1JdW0NdID0gZmFsc2U7XG5cdFx0XHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enludW0odmFsdWUpKSkgYXJyW1JdW0NdID0gZnV6enludW0odmFsdWUpO1xuXHRcdFx0XHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5ZGF0ZSh2YWx1ZSkuZ2V0RGF0ZSgpKSkgYXJyW1JdW0NdID0gcGFyc2VEYXRlKHZhbHVlKTtcblx0XHRcdFx0XHRlbHNlIGFycltSXVtDXSA9IHZhbHVlO1xuXHRcdFx0XHRcdCsrQzsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMTpcblx0XHRcdFx0XHRkYXRhID0gZGF0YS5zbGljZSgxLGRhdGEubGVuZ3RoLTEpO1xuXHRcdFx0XHRcdGRhdGEgPSBkYXRhLnJlcGxhY2UoL1wiXCIvZywgJ1wiJyk7XG5cdFx0XHRcdFx0aWYoRElGX1hMICYmIGRhdGEgJiYgZGF0YS5tYXRjaCgvXj1cIi4qXCIkLykpIGRhdGEgPSBkYXRhLnNsaWNlKDIsIC0xKTtcblx0XHRcdFx0XHRhcnJbUl1bQysrXSA9IGRhdGEgIT09ICcnID8gZGF0YSA6IG51bGw7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZGF0YSA9PT0gJ0VPRCcpIGJyZWFrO1xuXHRcdH1cblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgb3B0cy5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBhcnI7XG5cdH1cblxuXHRmdW5jdGlvbiBkaWZfdG9fc2hlZXQoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gYW9hX3RvX3NoZWV0KGRpZl90b19hb2Eoc3RyLCBvcHRzKSwgb3B0cyk7IH1cblx0ZnVuY3Rpb24gZGlmX3RvX3dvcmtib29rKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8geyByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soZGlmX3RvX3NoZWV0KHN0ciwgb3B0cyksIG9wdHMpOyB9XG5cblx0dmFyIHNoZWV0X3RvX2RpZiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHB1c2hfZmllbGQgPSBmdW5jdGlvbiBwZihvLyo6QXJyYXk8c3RyaW5nPiovLCB0b3BpYy8qOnN0cmluZyovLCB2Lyo6bnVtYmVyKi8sIG4vKjpudW1iZXIqLywgcy8qOnN0cmluZyovKSB7XG5cdFx0XHRvLnB1c2godG9waWMpO1xuXHRcdFx0by5wdXNoKHYgKyBcIixcIiArIG4pO1xuXHRcdFx0by5wdXNoKCdcIicgKyBzLnJlcGxhY2UoL1wiL2csJ1wiXCInKSArICdcIicpO1xuXHRcdH07XG5cdFx0dmFyIHB1c2hfdmFsdWUgPSBmdW5jdGlvbiBwbyhvLyo6QXJyYXk8c3RyaW5nPiovLCB0eXBlLyo6bnVtYmVyKi8sIHYvKjphbnkqLywgcy8qOnN0cmluZyovKSB7XG5cdFx0XHRvLnB1c2godHlwZSArIFwiLFwiICsgdik7XG5cdFx0XHRvLnB1c2godHlwZSA9PSAxID8gJ1wiJyArIHMucmVwbGFjZSgvXCIvZywnXCJcIicpICsgJ1wiJyA6IHMpO1xuXHRcdH07XG5cdFx0cmV0dXJuIGZ1bmN0aW9uIHNoZWV0X3RvX2RpZih3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0czo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRcdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSksIGNlbGwvKjpDZWxsKi87XG5cdFx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJUQUJMRVwiLCAwLCAxLCBcInNoZWV0anNcIik7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiVkVDVE9SU1wiLCAwLCByLmUuciAtIHIucy5yICsgMSxcIlwiKTtcblx0XHRcdHB1c2hfZmllbGQobywgXCJUVVBMRVNcIiwgMCwgci5lLmMgLSByLnMuYyArIDEsXCJcIik7XG5cdFx0XHRwdXNoX2ZpZWxkKG8sIFwiREFUQVwiLCAwLCAwLFwiXCIpO1xuXHRcdFx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdFx0XHRwdXNoX3ZhbHVlKG8sIC0xLCAwLCBcIkJPVFwiKTtcblx0XHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHRcdHZhciBjb29yZCA9IGVuY29kZV9jZWxsKHtyOlIsYzpDfSk7XG5cdFx0XHRcdFx0Y2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tjb29yZF07XG5cdFx0XHRcdFx0aWYoIWNlbGwpIHsgcHVzaF92YWx1ZShvLCAxLCAwLCBcIlwiKTsgY29udGludWU7fVxuXHRcdFx0XHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gRElGX1hMID8gY2VsbC53IDogY2VsbC52O1xuXHRcdFx0XHRcdFx0XHRpZighdmFsICYmIGNlbGwudiAhPSBudWxsKSB2YWwgPSBjZWxsLnY7XG5cdFx0XHRcdFx0XHRcdGlmKHZhbCA9PSBudWxsKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYoRElGX1hMICYmIGNlbGwuZiAmJiAhY2VsbC5GKSBwdXNoX3ZhbHVlKG8sIDEsIDAsIFwiPVwiICsgY2VsbC5mKTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIHB1c2hfdmFsdWUobywgMSwgMCwgXCJcIik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXNoX3ZhbHVlKG8sIDAsIHZhbCwgXCJWXCIpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2InOlxuXHRcdFx0XHRcdFx0XHRwdXNoX3ZhbHVlKG8sIDAsIGNlbGwudiA/IDEgOiAwLCBjZWxsLnYgPyBcIlRSVUVcIiA6IFwiRkFMU0VcIik7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAncyc6XG5cdFx0XHRcdFx0XHRcdHB1c2hfdmFsdWUobywgMSwgMCwgKCFESUZfWEwgfHwgaXNOYU4oY2VsbC52KSkgPyBjZWxsLnYgOiAnPVwiJyArIGNlbGwudiArICdcIicpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdFx0XHRpZighY2VsbC53KSBjZWxsLncgPSBTU0ZfZm9ybWF0KGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdLCBkYXRlbnVtKHBhcnNlRGF0ZShjZWxsLnYpKSk7XG5cdFx0XHRcdFx0XHRcdGlmKERJRl9YTCkgcHVzaF92YWx1ZShvLCAwLCBjZWxsLncsIFwiVlwiKTtcblx0XHRcdFx0XHRcdFx0ZWxzZSBwdXNoX3ZhbHVlKG8sIDEsIDAsIGNlbGwudyk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDogcHVzaF92YWx1ZShvLCAxLCAwLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHB1c2hfdmFsdWUobywgLTEsIDAsIFwiRU9EXCIpO1xuXHRcdFx0dmFyIFJTID0gXCJcXHJcXG5cIjtcblx0XHRcdHZhciBvbyA9IG8uam9pbihSUyk7XG5cdFx0XHQvL3doaWxlKChvby5sZW5ndGggJiAweDdGKSAhPSAwKSBvbyArPSBcIlxcMFwiO1xuXHRcdFx0cmV0dXJuIG9vO1xuXHRcdH07XG5cdH0pKCk7XG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGRpZl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZGlmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2RpZlxuXHR9O1xufSkoKTtcblxudmFyIEVUSCA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIGRlY29kZShzLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gcy5yZXBsYWNlKC9cXFxcYi9nLFwiXFxcXFwiKS5yZXBsYWNlKC9cXFxcYy9nLFwiOlwiKS5yZXBsYWNlKC9cXFxcbi9nLFwiXFxuXCIpOyB9XG5cdGZ1bmN0aW9uIGVuY29kZShzLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8geyByZXR1cm4gcy5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXGJcIikucmVwbGFjZSgvOi9nLCBcIlxcXFxjXCIpLnJlcGxhY2UoL1xcbi9nLFwiXFxcXG5cIik7IH1cblxuXHRmdW5jdGlvbiBldGhfdG9fYW9hKHN0ci8qOnN0cmluZyovLCBvcHRzKS8qOkFPQSovIHtcblx0XHR2YXIgcmVjb3JkcyA9IHN0ci5zcGxpdCgnXFxuJyksIFIgPSAtMSwgQyA9IC0xLCByaSA9IDAsIGFyci8qOkFPQSovID0gW107XG5cdFx0Zm9yICg7IHJpICE9PSByZWNvcmRzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0dmFyIHJlY29yZCA9IHJlY29yZHNbcmldLnRyaW0oKS5zcGxpdChcIjpcIik7XG5cdFx0XHRpZihyZWNvcmRbMF0gIT09ICdjZWxsJykgY29udGludWU7XG5cdFx0XHR2YXIgYWRkciA9IGRlY29kZV9jZWxsKHJlY29yZFsxXSk7XG5cdFx0XHRpZihhcnIubGVuZ3RoIDw9IGFkZHIucikgZm9yKFIgPSBhcnIubGVuZ3RoOyBSIDw9IGFkZHIucjsgKytSKSBpZighYXJyW1JdKSBhcnJbUl0gPSBbXTtcblx0XHRcdFIgPSBhZGRyLnI7IEMgPSBhZGRyLmM7XG5cdFx0XHRzd2l0Y2gocmVjb3JkWzJdKSB7XG5cdFx0XHRcdGNhc2UgJ3QnOiBhcnJbUl1bQ10gPSBkZWNvZGUocmVjb3JkWzNdKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3YnOiBhcnJbUl1bQ10gPSArcmVjb3JkWzNdOyBicmVhaztcblx0XHRcdFx0Y2FzZSAndnRmJzogdmFyIF9mID0gcmVjb3JkW3JlY29yZC5sZW5ndGggLSAxXTtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgJ3Z0Yyc6XG5cdFx0XHRcdFx0c3dpdGNoKHJlY29yZFszXSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnbmwnOiBhcnJbUl1bQ10gPSArcmVjb3JkWzRdID8gdHJ1ZSA6IGZhbHNlOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6IGFycltSXVtDXSA9ICtyZWNvcmRbNF07IGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihyZWNvcmRbMl0gPT0gJ3Z0ZicpIGFycltSXVtDXSA9IFthcnJbUl1bQ10sIF9mXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYob3B0cyAmJiBvcHRzLnNoZWV0Um93cykgYXJyID0gYXJyLnNsaWNlKDAsIG9wdHMuc2hlZXRSb3dzKTtcblx0XHRyZXR1cm4gYXJyO1xuXHR9XG5cblx0ZnVuY3Rpb24gZXRoX3RvX3NoZWV0KGQvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiBhb2FfdG9fc2hlZXQoZXRoX3RvX2FvYShkLCBvcHRzKSwgb3B0cyk7IH1cblx0ZnVuY3Rpb24gZXRoX3RvX3dvcmtib29rKGQvKjpzdHJpbmcqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKGV0aF90b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHR2YXIgaGVhZGVyID0gW1xuXHRcdFwic29jaWFsY2FsYzp2ZXJzaW9uOjEuNVwiLFxuXHRcdFwiTUlNRS1WZXJzaW9uOiAxLjBcIixcblx0XHRcIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkOyBib3VuZGFyeT1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZVwiXG5cdF0uam9pbihcIlxcblwiKTtcblxuXHR2YXIgc2VwID0gW1xuXHRcdFwiLS1Tb2NpYWxDYWxjU3ByZWFkc2hlZXRDb250cm9sU2F2ZVwiLFxuXHRcdFwiQ29udGVudC10eXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XCJcblx0XS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIjtcblxuXHQvKiBUT0RPOiB0aGUgb3RoZXIgcGFydHMgKi9cblx0dmFyIG1ldGEgPSBbXG5cdFx0XCIjIFNvY2lhbENhbGMgU3ByZWFkc2hlZXQgQ29udHJvbCBTYXZlXCIsXG5cdFx0XCJwYXJ0OnNoZWV0XCJcblx0XS5qb2luKFwiXFxuXCIpO1xuXG5cdHZhciBlbmQgPSBcIi0tU29jaWFsQ2FsY1NwcmVhZHNoZWV0Q29udHJvbFNhdmUtLVwiO1xuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX2V0aF9kYXRhKHdzLyo6V29ya3NoZWV0Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdGlmKCF3cyB8fCAhd3NbJyFyZWYnXSkgcmV0dXJuIFwiXCI7XG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgb28vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgY2VsbCwgY29vcmQgPSBcIlwiO1xuXHRcdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdFx0Y29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC52ID09IG51bGwgfHwgY2VsbC50ID09PSAneicpIGNvbnRpbnVlO1xuXHRcdFx0XHRvbyA9IFtcImNlbGxcIiwgY29vcmQsICd0J107XG5cdFx0XHRcdHN3aXRjaChjZWxsLnQpIHtcblx0XHRcdFx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzogb28ucHVzaChlbmNvZGUoY2VsbC52KSk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0aWYoIWNlbGwuZikgeyBvb1syXT0ndic7IG9vWzNdPWNlbGwudjsgfVxuXHRcdFx0XHRcdFx0ZWxzZSB7IG9vWzJdPSd2dGYnOyBvb1szXT0nbic7IG9vWzRdPWNlbGwudjsgb29bNV09ZW5jb2RlKGNlbGwuZik7IH1cblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2InOlxuXHRcdFx0XHRcdFx0b29bMl0gPSAndnQnKyhjZWxsLmY/J2YnOidjJyk7IG9vWzNdPSdubCc7IG9vWzRdPWNlbGwudj9cIjFcIjpcIjBcIjtcblx0XHRcdFx0XHRcdG9vWzVdID0gZW5jb2RlKGNlbGwuZnx8KGNlbGwudj8nVFJVRSc6J0ZBTFNFJykpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0XHR2YXIgdCA9IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpO1xuXHRcdFx0XHRcdFx0b29bMl0gPSAndnRjJzsgb29bM10gPSAnbmQnOyBvb1s0XSA9IFwiXCIrdDtcblx0XHRcdFx0XHRcdG9vWzVdID0gY2VsbC53IHx8IFNTRl9mb3JtYXQoY2VsbC56IHx8IHRhYmxlX2ZtdFsxNF0sIHQpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZSc6IGNvbnRpbnVlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdG8ucHVzaChvby5qb2luKFwiOlwiKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdG8ucHVzaChcInNoZWV0OmM6XCIgKyAoci5lLmMtci5zLmMrMSkgKyBcIjpyOlwiICsgKHIuZS5yLXIucy5yKzEpICsgXCI6dHZmOjFcIik7XG5cdFx0by5wdXNoKFwidmFsdWVmb3JtYXQ6MTp0ZXh0LXdpa2lcIik7XG5cdFx0Ly9vLnB1c2goXCJjb3BpZWRmcm9tOlwiICsgd3NbJyFyZWYnXSk7IC8vIGNsaXBib2FyZCBvbmx5XG5cdFx0cmV0dXJuIG8uam9pbihcIlxcblwiKTtcblx0fVxuXG5cdGZ1bmN0aW9uIHNoZWV0X3RvX2V0aCh3cy8qOldvcmtzaGVldCovLyo6Oiwgb3B0czo/YW55Ki8pLyo6c3RyaW5nKi8ge1xuXHRcdHJldHVybiBbaGVhZGVyLCBzZXAsIG1ldGEsIHNlcCwgc2hlZXRfdG9fZXRoX2RhdGEod3MpLCBlbmRdLmpvaW4oXCJcXG5cIik7XG5cdFx0Ly8gcmV0dXJuIFtcInZlcnNpb246MS41XCIsIHNoZWV0X3RvX2V0aF9kYXRhKHdzKV0uam9pbihcIlxcblwiKTsgLy8gY2xpcGJvYXJkIGZvcm1cblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IGV0aF90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogZXRoX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX2V0aFxuXHR9O1xufSkoKTtcblxudmFyIFBSTiA9IC8qI19fUFVSRV9fKi8oZnVuY3Rpb24oKSB7XG5cdGZ1bmN0aW9uIHNldF90ZXh0X2FycihkYXRhLyo6c3RyaW5nKi8sIGFyci8qOkFPQSovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgby8qOmFueSovKSB7XG5cdFx0aWYoby5yYXcpIGFycltSXVtDXSA9IGRhdGE7XG5cdFx0ZWxzZSBpZihkYXRhID09PSBcIlwiKXsvKiBlbXB0eSAqL31cblx0XHRlbHNlIGlmKGRhdGEgPT09ICdUUlVFJykgYXJyW1JdW0NdID0gdHJ1ZTtcblx0XHRlbHNlIGlmKGRhdGEgPT09ICdGQUxTRScpIGFycltSXVtDXSA9IGZhbHNlO1xuXHRcdGVsc2UgaWYoIWlzTmFOKGZ1enp5bnVtKGRhdGEpKSkgYXJyW1JdW0NdID0gZnV6enludW0oZGF0YSk7XG5cdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKGRhdGEpLmdldERhdGUoKSkpIGFycltSXVtDXSA9IHBhcnNlRGF0ZShkYXRhKTtcblx0XHRlbHNlIGFycltSXVtDXSA9IGRhdGE7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fYW9hX3N0cihmLyo6c3RyaW5nKi8sIG9wdHMpLyo6QU9BKi8ge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHR2YXIgYXJyLyo6QU9BKi8gPSAoW10vKjphbnkqLyk7XG5cdFx0aWYoIWYgfHwgZi5sZW5ndGggPT09IDApIHJldHVybiBhcnI7XG5cdFx0dmFyIGxpbmVzID0gZi5zcGxpdCgvW1xcclxcbl0vKTtcblx0XHR2YXIgTCA9IGxpbmVzLmxlbmd0aCAtIDE7XG5cdFx0d2hpbGUoTCA+PSAwICYmIGxpbmVzW0xdLmxlbmd0aCA9PT0gMCkgLS1MO1xuXHRcdHZhciBzdGFydCA9IDEwLCBpZHggPSAwO1xuXHRcdHZhciBSID0gMDtcblx0XHRmb3IoOyBSIDw9IEw7ICsrUikge1xuXHRcdFx0aWR4ID0gbGluZXNbUl0uaW5kZXhPZihcIiBcIik7XG5cdFx0XHRpZihpZHggPT0gLTEpIGlkeCA9IGxpbmVzW1JdLmxlbmd0aDsgZWxzZSBpZHgrKztcblx0XHRcdHN0YXJ0ID0gTWF0aC5tYXgoc3RhcnQsIGlkeCk7XG5cdFx0fVxuXHRcdGZvcihSID0gMDsgUiA8PSBMOyArK1IpIHtcblx0XHRcdGFycltSXSA9IFtdO1xuXHRcdFx0LyogVE9ETzogY29uZmlybSB0aGF0IHdpZHRocyBhcmUgYWx3YXlzIDEwICovXG5cdFx0XHR2YXIgQyA9IDA7XG5cdFx0XHRzZXRfdGV4dF9hcnIobGluZXNbUl0uc2xpY2UoMCwgc3RhcnQpLnRyaW0oKSwgYXJyLCBSLCBDLCBvKTtcblx0XHRcdGZvcihDID0gMTsgQyA8PSAobGluZXNbUl0ubGVuZ3RoIC0gc3RhcnQpLzEwICsgMTsgKytDKVxuXHRcdFx0XHRzZXRfdGV4dF9hcnIobGluZXNbUl0uc2xpY2Uoc3RhcnQrKEMtMSkqMTAsc3RhcnQrQyoxMCkudHJpbSgpLGFycixSLEMsbyk7XG5cdFx0fVxuXHRcdGlmKG8uc2hlZXRSb3dzKSBhcnIgPSBhcnIuc2xpY2UoMCwgby5zaGVldFJvd3MpO1xuXHRcdHJldHVybiBhcnI7XG5cdH1cblxuXHQvLyBMaXN0IG9mIGFjY2VwdGVkIENTViBzZXBhcmF0b3JzXG5cdHZhciBndWVzc19zZXBzID0ge1xuXHRcdC8qOjpbKi8weDJDLyo6Ol0qLzogJywnLFxuXHRcdC8qOjpbKi8weDA5Lyo6Ol0qLzogXCJcXHRcIixcblx0XHQvKjo6WyovMHgzQi8qOjpdKi86ICc7Jyxcblx0XHQvKjo6WyovMHg3Qy8qOjpdKi86ICd8J1xuXHR9O1xuXG5cdC8vIENTViBzZXBhcmF0b3Igd2VpZ2h0cyB0byBiZSB1c2VkIGluIGNhc2Ugb2YgZXF1YWwgbnVtYmVyc1xuXHR2YXIgZ3Vlc3Nfc2VwX3dlaWdodHMgPSB7XG5cdFx0Lyo6OlsqLzB4MkMvKjo6XSovOiAzLFxuXHRcdC8qOjpbKi8weDA5Lyo6Ol0qLzogMixcblx0XHQvKjo6WyovMHgzQi8qOjpdKi86IDEsXG5cdFx0Lyo6OlsqLzB4N0MvKjo6XSovOiAwXG5cdH07XG5cblx0ZnVuY3Rpb24gZ3Vlc3Nfc2VwKHN0cikge1xuXHRcdHZhciBjbnQgPSB7fSwgaW5zdHIgPSBmYWxzZSwgZW5kID0gMCwgY2MgPSAwO1xuXHRcdGZvcig7ZW5kIDwgc3RyLmxlbmd0aDsrK2VuZCkge1xuXHRcdFx0aWYoKGNjPXN0ci5jaGFyQ29kZUF0KGVuZCkpID09IDB4MjIpIGluc3RyID0gIWluc3RyO1xuXHRcdFx0ZWxzZSBpZighaW5zdHIgJiYgY2MgaW4gZ3Vlc3Nfc2VwcykgY250W2NjXSA9IChjbnRbY2NdfHwwKSsxO1xuXHRcdH1cblxuXHRcdGNjID0gW107XG5cdFx0Zm9yKGVuZCBpbiBjbnQpIGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNudCwgZW5kKSApIHtcblx0XHRcdGNjLnB1c2goWyBjbnRbZW5kXSwgZW5kIF0pO1xuXHRcdH1cblxuXHRcdGlmICggIWNjLmxlbmd0aCApIHtcblx0XHRcdGNudCA9IGd1ZXNzX3NlcF93ZWlnaHRzO1xuXHRcdFx0Zm9yKGVuZCBpbiBjbnQpIGlmICggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNudCwgZW5kKSApIHtcblx0XHRcdFx0Y2MucHVzaChbIGNudFtlbmRdLCBlbmQgXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Y2Muc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhWzBdIC0gYlswXSB8fCBndWVzc19zZXBfd2VpZ2h0c1thWzFdXSAtIGd1ZXNzX3NlcF93ZWlnaHRzW2JbMV1dOyB9KTtcblxuXHRcdHJldHVybiBndWVzc19zZXBzW2NjLnBvcCgpWzFdXSB8fCAweDJDO1xuXHR9XG5cblx0ZnVuY3Rpb24gZHN2X3RvX3NoZWV0X3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdHZhciBzZXAgPSBcIlwiO1xuXHRcdGlmKERFTlNFICE9IG51bGwgJiYgby5kZW5zZSA9PSBudWxsKSBvLmRlbnNlID0gREVOU0U7XG5cdFx0dmFyIHdzLyo6V29ya3NoZWV0Ki8gPSBvLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjAsIHI6MH0sIGU6IHtjOjAsIHI6MH19Lyo6YW55Ki8pO1xuXG5cdFx0aWYoc3RyLnNsaWNlKDAsNCkgPT0gXCJzZXA9XCIpIHtcblx0XHRcdC8vIElmIHRoZSBsaW5lIGVuZHMgaW4gXFxyXFxuXG5cdFx0XHRpZihzdHIuY2hhckNvZGVBdCg1KSA9PSAxMyAmJiBzdHIuY2hhckNvZGVBdCg2KSA9PSAxMCApIHtcblx0XHRcdFx0c2VwID0gc3RyLmNoYXJBdCg0KTsgc3RyID0gc3RyLnNsaWNlKDcpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gSWYgbGluZSBlbmRzIGluIFxcciBPUiBcXG5cblx0XHRcdGVsc2UgaWYoc3RyLmNoYXJDb2RlQXQoNSkgPT0gMTMgfHwgc3RyLmNoYXJDb2RlQXQoNSkgPT0gMTAgKSB7XG5cdFx0XHRcdHNlcCA9IHN0ci5jaGFyQXQoNCk7IHN0ciA9IHN0ci5zbGljZSg2KTtcblx0XHRcdH1cblx0XHRcdGVsc2Ugc2VwID0gZ3Vlc3Nfc2VwKHN0ci5zbGljZSgwLDEwMjQpKTtcblx0XHR9XG5cdFx0ZWxzZSBpZihvICYmIG8uRlMpIHNlcCA9IG8uRlM7XG5cdFx0ZWxzZSBzZXAgPSBndWVzc19zZXAoc3RyLnNsaWNlKDAsMTAyNCkpO1xuXHRcdHZhciBSID0gMCwgQyA9IDAsIHYgPSAwO1xuXHRcdHZhciBzdGFydCA9IDAsIGVuZCA9IDAsIHNlcGNjID0gc2VwLmNoYXJDb2RlQXQoMCksIGluc3RyID0gZmFsc2UsIGNjPTAsIHN0YXJ0Y2M9c3RyLmNoYXJDb2RlQXQoMCk7XG5cdFx0c3RyID0gc3RyLnJlcGxhY2UoL1xcclxcbi9tZywgXCJcXG5cIik7XG5cdFx0dmFyIF9yZS8qOj9SZWdFeHAqLyA9IG8uZGF0ZU5GICE9IG51bGwgPyBkYXRlTkZfcmVnZXgoby5kYXRlTkYpIDogbnVsbDtcblx0XHRmdW5jdGlvbiBmaW5pc2hfY2VsbCgpIHtcblx0XHRcdHZhciBzID0gc3RyLnNsaWNlKHN0YXJ0LCBlbmQpO1xuXHRcdFx0dmFyIGNlbGwgPSAoe30vKjphbnkqLyk7XG5cdFx0XHRpZihzLmNoYXJBdCgwKSA9PSAnXCInICYmIHMuY2hhckF0KHMubGVuZ3RoIC0gMSkgPT0gJ1wiJykgcyA9IHMuc2xpY2UoMSwtMSkucmVwbGFjZSgvXCJcIi9nLCdcIicpO1xuXHRcdFx0aWYocy5sZW5ndGggPT09IDApIGNlbGwudCA9ICd6Jztcblx0XHRcdGVsc2UgaWYoby5yYXcpIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzOyB9XG5cdFx0XHRlbHNlIGlmKHMudHJpbSgpLmxlbmd0aCA9PT0gMCkgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHM7IH1cblx0XHRcdGVsc2UgaWYocy5jaGFyQ29kZUF0KDApID09IDB4M0QpIHtcblx0XHRcdFx0aWYocy5jaGFyQ29kZUF0KDEpID09IDB4MjIgJiYgcy5jaGFyQ29kZUF0KHMubGVuZ3RoIC0gMSkgPT0gMHgyMikgeyBjZWxsLnQgPSAncyc7IGNlbGwudiA9IHMuc2xpY2UoMiwtMSkucmVwbGFjZSgvXCJcIi9nLCdcIicpOyB9XG5cdFx0XHRcdGVsc2UgaWYoZnV6enlmbWxhKHMpKSB7IGNlbGwudCA9ICduJzsgY2VsbC5mID0gcy5zbGljZSgxKTsgfVxuXHRcdFx0XHRlbHNlIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSBzOyB9IH1cblx0XHRcdGVsc2UgaWYocyA9PSBcIlRSVUVcIikgeyBjZWxsLnQgPSAnYic7IGNlbGwudiA9IHRydWU7IH1cblx0XHRcdGVsc2UgaWYocyA9PSBcIkZBTFNFXCIpIHsgY2VsbC50ID0gJ2InOyBjZWxsLnYgPSBmYWxzZTsgfVxuXHRcdFx0ZWxzZSBpZighaXNOYU4odiA9IGZ1enp5bnVtKHMpKSkgeyBjZWxsLnQgPSAnbic7IGlmKG8uY2VsbFRleHQgIT09IGZhbHNlKSBjZWxsLncgPSBzOyBjZWxsLnYgPSB2OyB9XG5cdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUocykuZ2V0RGF0ZSgpKSB8fCBfcmUgJiYgcy5tYXRjaChfcmUpKSB7XG5cdFx0XHRcdGNlbGwueiA9IG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdHZhciBrID0gMDtcblx0XHRcdFx0aWYoX3JlICYmIHMubWF0Y2goX3JlKSl7IHM9ZGF0ZU5GX2ZpeChzLCBvLmRhdGVORiwgKHMubWF0Y2goX3JlKXx8W10pKTsgaz0xOyB9XG5cdFx0XHRcdGlmKG8uY2VsbERhdGVzKSB7IGNlbGwudCA9ICdkJzsgY2VsbC52ID0gcGFyc2VEYXRlKHMsIGspOyB9XG5cdFx0XHRcdGVsc2UgeyBjZWxsLnQgPSAnbic7IGNlbGwudiA9IGRhdGVudW0ocGFyc2VEYXRlKHMsIGspKTsgfVxuXHRcdFx0XHRpZihvLmNlbGxUZXh0ICE9PSBmYWxzZSkgY2VsbC53ID0gU1NGX2Zvcm1hdChjZWxsLnosIGNlbGwudiBpbnN0YW5jZW9mIERhdGUgPyBkYXRlbnVtKGNlbGwudik6Y2VsbC52KTtcblx0XHRcdFx0aWYoIW8uY2VsbE5GKSBkZWxldGUgY2VsbC56O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y2VsbC50ID0gJ3MnO1xuXHRcdFx0XHRjZWxsLnYgPSBzO1xuXHRcdFx0fVxuXHRcdFx0aWYoY2VsbC50ID09ICd6Jyl7fVxuXHRcdFx0ZWxzZSBpZihvLmRlbnNlKSB7IGlmKCF3c1tSXSkgd3NbUl0gPSBbXTsgd3NbUl1bQ10gPSBjZWxsOyB9XG5cdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtjOkMscjpSfSldID0gY2VsbDtcblx0XHRcdHN0YXJ0ID0gZW5kKzE7IHN0YXJ0Y2MgPSBzdHIuY2hhckNvZGVBdChzdGFydCk7XG5cdFx0XHRpZihyYW5nZS5lLmMgPCBDKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0aWYocmFuZ2UuZS5yIDwgUikgcmFuZ2UuZS5yID0gUjtcblx0XHRcdGlmKGNjID09IHNlcGNjKSArK0M7IGVsc2UgeyBDID0gMDsgKytSOyBpZihvLnNoZWV0Um93cyAmJiBvLnNoZWV0Um93cyA8PSBSKSByZXR1cm4gdHJ1ZTsgfVxuXHRcdH1cblx0XHRvdXRlcjogZm9yKDtlbmQgPCBzdHIubGVuZ3RoOysrZW5kKSBzd2l0Y2goKGNjPXN0ci5jaGFyQ29kZUF0KGVuZCkpKSB7XG5cdFx0XHRjYXNlIDB4MjI6IGlmKHN0YXJ0Y2MgPT09IDB4MjIpIGluc3RyID0gIWluc3RyOyBicmVhaztcblx0XHRcdGNhc2Ugc2VwY2M6IGNhc2UgMHgwYTogY2FzZSAweDBkOiBpZighaW5zdHIgJiYgZmluaXNoX2NlbGwoKSkgYnJlYWsgb3V0ZXI7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogYnJlYWs7XG5cdFx0fVxuXHRcdGlmKGVuZCAtIHN0YXJ0ID4gMCkgZmluaXNoX2NlbGwoKTtcblxuXHRcdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdHJldHVybiB3cztcblx0fVxuXG5cdGZ1bmN0aW9uIHBybl90b19zaGVldF9zdHIoc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya3NoZWV0Ki8ge1xuXHRcdGlmKCEob3B0cyAmJiBvcHRzLlBSTikpIHJldHVybiBkc3ZfdG9fc2hlZXRfc3RyKHN0ciwgb3B0cyk7XG5cdFx0aWYob3B0cy5GUykgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRpZihzdHIuc2xpY2UoMCw0KSA9PSBcInNlcD1cIikgcmV0dXJuIGRzdl90b19zaGVldF9zdHIoc3RyLCBvcHRzKTtcblx0XHRpZihzdHIuaW5kZXhPZihcIlxcdFwiKSA+PSAwIHx8IHN0ci5pbmRleE9mKFwiLFwiKSA+PSAwIHx8IHN0ci5pbmRleE9mKFwiO1wiKSA+PSAwKSByZXR1cm4gZHN2X3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHRcdHJldHVybiBhb2FfdG9fc2hlZXQocHJuX3RvX2FvYV9zdHIoc3RyLCBvcHRzKSwgb3B0cyk7XG5cdH1cblxuXHRmdW5jdGlvbiBwcm5fdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIHN0ciA9IFwiXCIsIGJ5dGVzID0gb3B0cy50eXBlID09ICdzdHJpbmcnID8gWzAsMCwwLDBdIDogZmlyc3RieXRlKGQsIG9wdHMpO1xuXHRcdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2Jhc2U2NCc6IHN0ciA9IEJhc2U2NF9kZWNvZGUoZCk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnYmluYXJ5Jzogc3RyID0gZDsgYnJlYWs7XG5cdFx0XHRjYXNlICdidWZmZXInOlxuXHRcdFx0XHRpZihvcHRzLmNvZGVwYWdlID09IDY1MDAxKSBzdHIgPSBkLnRvU3RyaW5nKCd1dGY4Jyk7IC8vIFRPRE86IHRlc3QgaWYgYnVmXG5cdFx0XHRcdGVsc2UgaWYob3B0cy5jb2RlcGFnZSAmJiB0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnKSBzdHIgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUob3B0cy5jb2RlcGFnZSwgZCk7XG5cdFx0XHRcdGVsc2Ugc3RyID0gaGFzX2J1ZiAmJiBCdWZmZXIuaXNCdWZmZXIoZCkgPyBkLnRvU3RyaW5nKCdiaW5hcnknKSA6IGEycyhkKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhcnJheSc6IHN0ciA9IGNjMnN0cihkKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzdHJpbmcnOiBzdHIgPSBkOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0XHR9XG5cdFx0aWYoYnl0ZXNbMF0gPT0gMHhFRiAmJiBieXRlc1sxXSA9PSAweEJCICYmIGJ5dGVzWzJdID09IDB4QkYpIHN0ciA9IHV0ZjhyZWFkKHN0ci5zbGljZSgzKSk7XG5cdFx0ZWxzZSBpZihvcHRzLnR5cGUgIT0gJ3N0cmluZycgJiYgb3B0cy50eXBlICE9ICdidWZmZXInICYmIG9wdHMuY29kZXBhZ2UgPT0gNjUwMDEpIHN0ciA9IHV0ZjhyZWFkKHN0cik7XG5cdFx0ZWxzZSBpZigob3B0cy50eXBlID09ICdiaW5hcnknKSAmJiB0eXBlb2YgJGNwdGFibGUgIT09ICd1bmRlZmluZWQnICYmIG9wdHMuY29kZXBhZ2UpICBzdHIgPSAkY3B0YWJsZS51dGlscy5kZWNvZGUob3B0cy5jb2RlcGFnZSwgJGNwdGFibGUudXRpbHMuZW5jb2RlKDI4NTkxLHN0cikpO1xuXHRcdGlmKHN0ci5zbGljZSgwLDE5KSA9PSBcInNvY2lhbGNhbGM6dmVyc2lvbjpcIikgcmV0dXJuIEVUSC50b19zaGVldChvcHRzLnR5cGUgPT0gJ3N0cmluZycgPyBzdHIgOiB1dGY4cmVhZChzdHIpLCBvcHRzKTtcblx0XHRyZXR1cm4gcHJuX3RvX3NoZWV0X3N0cihzdHIsIG9wdHMpO1xuXHR9XG5cblx0ZnVuY3Rpb24gcHJuX3RvX3dvcmtib29rKGQvKjpSYXdEYXRhKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7IHJldHVybiBzaGVldF90b193b3JrYm9vayhwcm5fdG9fc2hlZXQoZCwgb3B0cyksIG9wdHMpOyB9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fcHJuKHdzLyo6V29ya3NoZWV0Ki8vKjo6LCBvcHRzOj9hbnkqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdHZhciBvby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW2Nvb3JkXTtcblx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC52ID09IG51bGwpIHsgb28ucHVzaChcIiAgICAgICAgICBcIik7IGNvbnRpbnVlOyB9XG5cdFx0XHRcdHZhciB3ID0gKGNlbGwudyB8fCAoZm9ybWF0X2NlbGwoY2VsbCksIGNlbGwudykgfHwgXCJcIikuc2xpY2UoMCwxMCk7XG5cdFx0XHRcdHdoaWxlKHcubGVuZ3RoIDwgMTApIHcgKz0gXCIgXCI7XG5cdFx0XHRcdG9vLnB1c2godyArIChDID09PSAwID8gXCIgXCIgOiBcIlwiKSk7XG5cdFx0XHR9XG5cdFx0XHRvLnB1c2gob28uam9pbihcIlwiKSk7XG5cdFx0fVxuXHRcdHJldHVybiBvLmpvaW4oXCJcXG5cIik7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdHRvX3dvcmtib29rOiBwcm5fdG9fd29ya2Jvb2ssXG5cdFx0dG9fc2hlZXQ6IHBybl90b19zaGVldCxcblx0XHRmcm9tX3NoZWV0OiBzaGVldF90b19wcm5cblx0fTtcbn0pKCk7XG5cbi8qIEV4Y2VsIGRlZmF1bHRzIHRvIFNZTEsgYnV0IHdhcm5zIGlmIGRhdGEgaXMgbm90IHZhbGlkICovXG5mdW5jdGlvbiByZWFkX3diX0lEKGQsIG9wdHMpIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9LCBPTERfV1RGID0gISFvLldURjsgby5XVEYgPSB0cnVlO1xuXHR0cnkge1xuXHRcdHZhciBvdXQgPSBTWUxLLnRvX3dvcmtib29rKGQsIG8pO1xuXHRcdG8uV1RGID0gT0xEX1dURjtcblx0XHRyZXR1cm4gb3V0O1xuXHR9IGNhdGNoKGUpIHtcblx0XHRvLldURiA9IE9MRF9XVEY7XG5cdFx0aWYoIWUubWVzc2FnZS5tYXRjaCgvU1lMSyBiYWQgcmVjb3JkIElELykgJiYgT0xEX1dURikgdGhyb3cgZTtcblx0XHRyZXR1cm4gUFJOLnRvX3dvcmtib29rKGQsIG9wdHMpO1xuXHR9XG59XG5cbnZhciBXS18gPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBsb3R1c2hvcHBlcihkYXRhLCBjYi8qOlJlY29yZEhvcHBlckNCKi8sIG9wdHMvKjphbnkqLykge1xuXHRcdGlmKCFkYXRhKSByZXR1cm47XG5cdFx0cHJlcF9ibG9iKGRhdGEsIGRhdGEubCB8fCAwKTtcblx0XHR2YXIgRW51bSA9IG9wdHMuRW51bSB8fCBXSzFFbnVtO1xuXHRcdHdoaWxlKGRhdGEubCA8IGRhdGEubGVuZ3RoKSB7XG5cdFx0XHR2YXIgUlQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdFx0XHR2YXIgUiA9IEVudW1bUlRdIHx8IEVudW1bMHhGRkZGXTtcblx0XHRcdHZhciBsZW5ndGggPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdFx0XHR2YXIgdGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHRcdFx0dmFyIGQgPSBSLmYgJiYgUi5mKGRhdGEsIGxlbmd0aCwgb3B0cyk7XG5cdFx0XHRkYXRhLmwgPSB0Z3Q7XG5cdFx0XHRpZihjYihkLCBSLCBSVCkpIHJldHVybjtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBsb3R1c190b193b3JrYm9vayhkLyo6UmF3RGF0YSovLCBvcHRzKSB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihzMmEoQmFzZTY0X2RlY29kZShkKSksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYmluYXJ5JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihzMmEoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYnVmZmVyJzpcblx0XHRcdGNhc2UgJ2FycmF5JzogcmV0dXJuIGxvdHVzX3RvX3dvcmtib29rX2J1ZihkLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgXCJVbnN1cHBvcnRlZCB0eXBlIFwiICsgb3B0cy50eXBlO1xuXHR9XG5cblx0ZnVuY3Rpb24gbG90dXNfdG9fd29ya2Jvb2tfYnVmKGQsIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdFx0aWYoIWQpIHJldHVybiBkO1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHRpZihERU5TRSAhPSBudWxsICYmIG8uZGVuc2UgPT0gbnVsbCkgby5kZW5zZSA9IERFTlNFO1xuXHRcdHZhciBzLyo6V29ya3NoZWV0Ki8gPSAoKG8uZGVuc2UgPyBbXSA6IHt9KS8qOmFueSovKSwgbiA9IFwiU2hlZXQxXCIsIG5leHRfbiA9IFwiXCIsIHNpZHggPSAwO1xuXHRcdHZhciBzaGVldHMgPSB7fSwgc25hbWVzID0gW10sIHJlYWxuYW1lcyA9IFtdO1xuXG5cdFx0dmFyIHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHR2YXIgc2hlZXRSb3dzID0gby5zaGVldFJvd3MgfHwgMDtcblxuXHRcdGlmKGRbMl0gPT0gMHgwMCkge1xuXHRcdFx0aWYoZFszXSA9PSAweDA4IHx8IGRbM10gPT0gMHgwOSkge1xuXHRcdFx0XHRpZihkLmxlbmd0aCA+PSAxNiAmJiBkWzE0XSA9PSAweDA1ICYmIGRbMTVdID09PSAweDZjKSB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBXb3JrcyAzIGZvciBNYWMgZmlsZVwiKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZihkWzJdID09IDB4MDIpIHtcblx0XHRcdG8uRW51bSA9IFdLMUVudW07XG5cdFx0XHRsb3R1c2hvcHBlcihkLCBmdW5jdGlvbih2YWwsIFIsIFJUKSB7IHN3aXRjaChSVCkge1xuXHRcdFx0XHRjYXNlIDB4MDA6IC8qIEJPRiAqL1xuXHRcdFx0XHRcdG8udmVycyA9IHZhbDtcblx0XHRcdFx0XHRpZih2YWwgPj0gMHgxMDAwKSBvLnFwcm8gPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDY6IHJlZmd1ZXNzID0gdmFsOyBicmVhazsgLyogUkFOR0UgKi9cblx0XHRcdFx0Y2FzZSAweENDOiBpZih2YWwpIG5leHRfbiA9IHZhbDsgYnJlYWs7IC8qIFNIRUVUTkFNRUNTICovXG5cdFx0XHRcdGNhc2UgMHhERTogbmV4dF9uID0gdmFsOyBicmVhazsgLyogU0hFRVROQU1FTFAgKi9cblx0XHRcdFx0Y2FzZSAweDBGOiAvKiBMQUJFTCAqL1xuXHRcdFx0XHRjYXNlIDB4MzM6IC8qIFNUUklORyAqL1xuXHRcdFx0XHRcdGlmKCFvLnFwcm8pIHZhbFsxXS52ID0gdmFsWzFdLnYuc2xpY2UoMSk7XG5cdFx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0XHRjYXNlIDB4MEQ6IC8qIElOVEVHRVIgKi9cblx0XHRcdFx0Y2FzZSAweDBFOiAvKiBOVU1CRVIgKi9cblx0XHRcdFx0Y2FzZSAweDEwOiAvKiBGT1JNVUxBICovXG5cdFx0XHRcdFx0LyogVE9ETzogYWN0dWFsIHRyYW5zbGF0aW9uIG9mIHRoZSBmb3JtYXQgY29kZSAqL1xuXHRcdFx0XHRcdGlmKFJUID09IDB4MEUgJiYgKHZhbFsyXSAmIDB4NzApID09IDB4NzAgJiYgKHZhbFsyXSAmIDB4MEYpID4gMSAmJiAodmFsWzJdICYgMHgwRikgPCAxNSkge1xuXHRcdFx0XHRcdFx0dmFsWzFdLnogPSBvLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0XHRcdFx0aWYoby5jZWxsRGF0ZXMpIHsgdmFsWzFdLnQgPSAnZCc7IHZhbFsxXS52ID0gbnVtZGF0ZSh2YWxbMV0udik7IH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZihvLnFwcm8pIHtcblx0XHRcdFx0XHRcdGlmKHZhbFszXSA+IHNpZHgpIHtcblx0XHRcdFx0XHRcdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdFx0XHRcdFx0XHRzaGVldHNbbl0gPSBzO1xuXHRcdFx0XHRcdFx0XHRzbmFtZXMucHVzaChuKTtcblx0XHRcdFx0XHRcdFx0cyA9IChvLmRlbnNlID8gW10gOiB7fSk7XG5cdFx0XHRcdFx0XHRcdHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHRcdFx0XHRcdFx0c2lkeCA9IHZhbFszXTsgbiA9IG5leHRfbiB8fCBcIlNoZWV0XCIgKyAoc2lkeCArIDEpOyBuZXh0X24gPSBcIlwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciB0bXBjZWxsID0gby5kZW5zZSA/IChzW3ZhbFswXS5yXXx8W10pW3ZhbFswXS5jXSA6IHNbZW5jb2RlX2NlbGwodmFsWzBdKV07XG5cdFx0XHRcdFx0aWYodG1wY2VsbCkge1xuXHRcdFx0XHRcdFx0dG1wY2VsbC50ID0gdmFsWzFdLnQ7IHRtcGNlbGwudiA9IHZhbFsxXS52O1xuXHRcdFx0XHRcdFx0aWYodmFsWzFdLnogIT0gbnVsbCkgdG1wY2VsbC56ID0gdmFsWzFdLno7XG5cdFx0XHRcdFx0XHRpZih2YWxbMV0uZiAhPSBudWxsKSB0bXBjZWxsLmYgPSB2YWxbMV0uZjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihvLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRpZighc1t2YWxbMF0ucl0pIHNbdmFsWzBdLnJdID0gW107XG5cdFx0XHRcdFx0XHRzW3ZhbFswXS5yXVt2YWxbMF0uY10gPSB2YWxbMV07XG5cdFx0XHRcdFx0fSBlbHNlIHNbZW5jb2RlX2NlbGwodmFsWzBdKV0gPSB2YWxbMV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHR9fSwgbyk7XG5cdFx0fSBlbHNlIGlmKGRbMl0gPT0gMHgxQSB8fCBkWzJdID09IDB4MEUpIHtcblx0XHRcdG8uRW51bSA9IFdLM0VudW07XG5cdFx0XHRpZihkWzJdID09IDB4MEUpIHsgby5xcHJvID0gdHJ1ZTsgZC5sID0gMDsgfVxuXHRcdFx0bG90dXNob3BwZXIoZCwgZnVuY3Rpb24odmFsLCBSLCBSVCkgeyBzd2l0Y2goUlQpIHtcblx0XHRcdFx0Y2FzZSAweENDOiBuID0gdmFsOyBicmVhazsgLyogU0hFRVROQU1FQ1MgKi9cblx0XHRcdFx0Y2FzZSAweDE2OiAvKiBMQUJFTDE2ICovXG5cdFx0XHRcdFx0dmFsWzFdLnYgPSB2YWxbMV0udi5zbGljZSgxKTtcblx0XHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMHgxNzogLyogTlVNQkVSMTcgKi9cblx0XHRcdFx0Y2FzZSAweDE4OiAvKiBOVU1CRVIxOCAqL1xuXHRcdFx0XHRjYXNlIDB4MTk6IC8qIEZPUk1VTEExOSAqL1xuXHRcdFx0XHRjYXNlIDB4MjU6IC8qIE5VTUJFUjI1ICovXG5cdFx0XHRcdGNhc2UgMHgyNzogLyogTlVNQkVSMjcgKi9cblx0XHRcdFx0Y2FzZSAweDI4OiAvKiBGT1JNVUxBMjggKi9cblx0XHRcdFx0XHRpZih2YWxbM10gPiBzaWR4KSB7XG5cdFx0XHRcdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0XHRzaGVldHNbbl0gPSBzO1xuXHRcdFx0XHRcdFx0c25hbWVzLnB1c2gobik7XG5cdFx0XHRcdFx0XHRzID0gKG8uZGVuc2UgPyBbXSA6IHt9KTtcblx0XHRcdFx0XHRcdHJlZmd1ZXNzID0ge3M6IHtyOjAsIGM6MH0sIGU6IHtyOjAsIGM6MH0gfTtcblx0XHRcdFx0XHRcdHNpZHggPSB2YWxbM107IG4gPSBcIlNoZWV0XCIgKyAoc2lkeCArIDEpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihzaGVldFJvd3MgPiAwICYmIHZhbFswXS5yID49IHNoZWV0Um93cykgYnJlYWs7XG5cdFx0XHRcdFx0aWYoby5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIXNbdmFsWzBdLnJdKSBzW3ZhbFswXS5yXSA9IFtdO1xuXHRcdFx0XHRcdFx0c1t2YWxbMF0ucl1bdmFsWzBdLmNdID0gdmFsWzFdO1xuXHRcdFx0XHRcdH0gZWxzZSBzW2VuY29kZV9jZWxsKHZhbFswXSldID0gdmFsWzFdO1xuXHRcdFx0XHRcdGlmKHJlZmd1ZXNzLmUuYyA8IHZhbFswXS5jKSByZWZndWVzcy5lLmMgPSB2YWxbMF0uYztcblx0XHRcdFx0XHRpZihyZWZndWVzcy5lLnIgPCB2YWxbMF0ucikgcmVmZ3Vlc3MuZS5yID0gdmFsWzBdLnI7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxQjogLyogWEZPUk1BVCAqL1xuXHRcdFx0XHRcdGlmKHZhbFsweDM2YjBdKSByZWFsbmFtZXNbdmFsWzB4MzZiMF1bMF1dID0gdmFsWzB4MzZiMF1bMV07XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNjAxOiAvKiBTSEVFVElORk9RUCAqL1xuXHRcdFx0XHRcdHJlYWxuYW1lc1t2YWxbMF1dID0gdmFsWzFdOyBpZih2YWxbMF0gPT0gc2lkeCkgbiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6IGJyZWFrO1xuXHRcdFx0fX0sIG8pO1xuXHRcdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgTE9UVVMgQk9GIFwiICsgZFsyXSk7XG5cdFx0c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRcdHNoZWV0c1tuZXh0X24gfHwgbl0gPSBzO1xuXHRcdHNuYW1lcy5wdXNoKG5leHRfbiB8fCBuKTtcblx0XHRpZighcmVhbG5hbWVzLmxlbmd0aCkgcmV0dXJuIHsgU2hlZXROYW1lczogc25hbWVzLCBTaGVldHM6IHNoZWV0cyB9O1xuXHRcdHZhciBvc2hlZXRzID0ge30sIHJuYW1lcyA9IFtdO1xuXHRcdC8qIFRPRE86IHZlcmlmeSBubyBjb2xsaXNpb25zICovXG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHJlYWxuYW1lcy5sZW5ndGg7ICsraSkgaWYoc2hlZXRzW3NuYW1lc1tpXV0pIHtcblx0XHRcdHJuYW1lcy5wdXNoKHJlYWxuYW1lc1tpXSB8fCBzbmFtZXNbaV0pO1xuXHRcdFx0b3NoZWV0c1tyZWFsbmFtZXNbaV1dID0gc2hlZXRzW3JlYWxuYW1lc1tpXV0gfHwgc2hlZXRzW3NuYW1lc1tpXV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJuYW1lcy5wdXNoKHJlYWxuYW1lc1tpXSk7XG5cdFx0XHRvc2hlZXRzW3JlYWxuYW1lc1tpXV0gPSAoeyBcIiFyZWZcIjogXCJBMVwiIH0pO1xuXHRcdH1cblx0XHRyZXR1cm4geyBTaGVldE5hbWVzOiBybmFtZXMsIFNoZWV0czogb3NoZWV0cyB9O1xuXHR9XG5cblx0ZnVuY3Rpb24gc2hlZXRfdG9fd2sxKHdzLyo6V29ya3NoZWV0Ki8sIG9wdHMvKjpXcml0ZU9wdHMqLykge1xuXHRcdHZhciBvID0gb3B0cyB8fCB7fTtcblx0XHRpZigrby5jb2RlcGFnZSA+PSAwKSBzZXRfY3AoK28uY29kZXBhZ2UpO1xuXHRcdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgd3JpdGUgV0sxIHRvIEpTIHN0cmluZ1wiKTtcblx0XHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0XHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdHZhciBjb2xzID0gW107XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMCwgd3JpdGVfQk9GX1dLMSgweDA0MDYpKTtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwNiwgd3JpdGVfUkFOR0UocmFuZ2UpKTtcblx0XHR2YXIgbWF4X1IgPSBNYXRoLm1pbihyYW5nZS5lLnIsIDgxOTEpO1xuXHRcdGZvcih2YXIgUiA9IHJhbmdlLnMucjsgUiA8PSBtYXhfUjsgKytSKSB7XG5cdFx0XHR2YXIgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRcdHZhciByZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRcdGlmKCFjZWxsIHx8IGNlbGwudCA9PSBcInpcIikgY29udGludWU7XG5cdFx0XHRcdC8qIFRPRE86IGZvcm11bGEgcmVjb3JkcyAqL1xuXHRcdFx0XHRpZihjZWxsLnQgPT0gXCJuXCIpIHtcblx0XHRcdFx0XHRpZigoY2VsbC52fDApPT1jZWxsLnYgJiYgY2VsbC52ID49IC0zMjc2OCAmJiBjZWxsLnYgPD0gMzI3NjcpIHdyaXRlX2JpZmZfcmVjKGJhLCAweDBkLCB3cml0ZV9JTlRFR0VSKFIsIEMsIGNlbGwudikpO1xuXHRcdFx0XHRcdGVsc2Ugd3JpdGVfYmlmZl9yZWMoYmEsIDB4MGUsIHdyaXRlX05VTUJFUihSLCBDLCBjZWxsLnYpKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgc3RyID0gZm9ybWF0X2NlbGwoY2VsbCk7XG5cdFx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MEYsIHdyaXRlX0xBQkVMKFIsIEMsIHN0ci5zbGljZSgwLCAyMzkpKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMSk7XG5cdFx0cmV0dXJuIGJhLmVuZCgpO1xuXHR9XG5cblx0ZnVuY3Rpb24gYm9va190b193azMod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0XHR2YXIgbyA9IG9wdHMgfHwge307XG5cdFx0aWYoK28uY29kZXBhZ2UgPj0gMCkgc2V0X2NwKCtvLmNvZGVwYWdlKTtcblx0XHRpZihvLnR5cGUgPT0gXCJzdHJpbmdcIikgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHdyaXRlIFdLMyB0byBKUyBzdHJpbmdcIik7XG5cdFx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMCwgd3JpdGVfQk9GX1dLMyh3YikpO1xuXG5cdFx0Zm9yKHZhciBpID0gMCwgY250ID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIGlmKCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0gfHwge30pW1wiIXJlZlwiXSkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MWIsIHdyaXRlX1hGT1JNQVRfU0hFRVROQU1FKHdiLlNoZWV0TmFtZXNbaV0sIGNudCsrKSk7XG5cblx0XHR2YXIgd3NpZHggPSAwO1xuXHRcdGZvcihpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXTtcblx0XHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSk7XG5cdFx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRcdHZhciBjb2xzID0gW107XG5cdFx0XHR2YXIgbWF4X1IgPSBNYXRoLm1pbihyYW5nZS5lLnIsIDgxOTEpO1xuXHRcdFx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IG1heF9SOyArK1IpIHtcblx0XHRcdFx0dmFyIHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRcdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdFx0XHR2YXIgcmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRcdFx0aWYoIWNlbGwgfHwgY2VsbC50ID09IFwielwiKSBjb250aW51ZTtcblx0XHRcdFx0XHQvKiBUT0RPOiBGT1JNVUxBMTkgTlVNQkVSMTggcmVjb3JkcyAqL1xuXHRcdFx0XHRcdGlmKGNlbGwudCA9PSBcIm5cIikge1xuXHRcdFx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MTcsIHdyaXRlX05VTUJFUl8xNyhSLCBDLCB3c2lkeCwgY2VsbC52KSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHZhciBzdHIgPSBmb3JtYXRfY2VsbChjZWxsKTtcblx0XHRcdFx0XHRcdC8qIFRPRE86IG1heCBsZW4/ICovXG5cdFx0XHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgxNiwgd3JpdGVfTEFCRUxfMTYoUiwgQywgd3NpZHgsIHN0ci5zbGljZSgwLCAyMzkpKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHQrK3dzaWR4O1xuXHRcdH1cblxuXHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxKTtcblx0XHRyZXR1cm4gYmEuZW5kKCk7XG5cdH1cblxuXG5cdGZ1bmN0aW9uIHdyaXRlX0JPRl9XSzEodi8qOm51bWJlciovKSB7XG5cdFx0dmFyIG91dCA9IG5ld19idWYoMik7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHYpO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiB3cml0ZV9CT0ZfV0szKHdiLyo6V29ya2Jvb2sqLykge1xuXHRcdHZhciBvdXQgPSBuZXdfYnVmKDI2KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgxMDAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMDA0KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMHgwMDAwKTtcblx0XHR2YXIgcm93cyA9IDAsIGNvbHMgPSAwLCB3c2NudCA9IDA7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBuYW1lID0gd2IuU2hlZXROYW1lc1tpXTtcblx0XHRcdHZhciB3cyA9IHdiLlNoZWV0c1tuYW1lXTtcblx0XHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHRcdCsrd3NjbnQ7XG5cdFx0XHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRcdGlmKHJvd3MgPCByYW5nZS5lLnIpIHJvd3MgPSByYW5nZS5lLnI7XG5cdFx0XHRpZihjb2xzIDwgcmFuZ2UuZS5jKSBjb2xzID0gcmFuZ2UuZS5jO1xuXHRcdH1cblx0XHRpZihyb3dzID4gODE5MSkgcm93cyA9IDgxOTE7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDIsIHJvd3MpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCB3c2NudCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIGNvbHMpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDAwKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgMHgwMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDEsIDB4MDEpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgxLCAweDAyKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0b3V0LndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdHJldHVybiBvdXQ7XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9SQU5HRShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IHtzOntjOjAscjowfSxlOntjOjAscjowfX07XG5cdFx0aWYobGVuZ3RoID09IDggJiYgb3B0cy5xcHJvKSB7XG5cdFx0XHRvLnMuYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0by5zLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRvLmUuYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0by5lLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0by5zLmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0by5zLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYobGVuZ3RoID09IDEyICYmIG9wdHMucXBybykgYmxvYi5sICs9IDI7XG5cdFx0by5lLmMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0by5lLnIgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYobGVuZ3RoID09IDEyICYmIG9wdHMucXBybykgYmxvYi5sICs9IDI7XG5cdFx0aWYoby5zLmMgPT0gMHhGRkZGKSBvLnMuYyA9IG8uZS5jID0gby5zLnIgPSBvLmUuciA9IDA7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfUkFOR0UocmFuZ2UpIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1Zig4KTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5jKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2Uucy5yKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2UuZS5jKTtcblx0XHRvdXQud3JpdGVfc2hpZnQoMiwgcmFuZ2UuZS5yKTtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0XHR2YXIgbyA9IFt7YzowLHI6MH0sIHt0OiduJyx2OjB9LCAwLCAwXTtcblx0XHRpZihvcHRzLnFwcm8gJiYgb3B0cy52ZXJzICE9IDB4NTEyMCkge1xuXHRcdFx0b1swXS5jID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRcdFx0b1szXSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMF0uciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdGJsb2IubCs9Mjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0b1syXSA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMF0uYyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1swXS5yID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdH1cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0xBQkVMKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciB0Z3QgPSBibG9iLmwgKyBsZW5ndGg7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0b1sxXS50ID0gJ3MnO1xuXHRcdGlmKG9wdHMudmVycyA9PSAweDUxMjApIHtcblx0XHRcdGJsb2IubCsrO1xuXHRcdFx0dmFyIGxlbiA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdChsZW4sICd1dGY4Jyk7XG5cdFx0XHRyZXR1cm4gbztcblx0XHR9XG5cdFx0aWYob3B0cy5xcHJvKSBibG9iLmwrKztcblx0XHRvWzFdLnYgPSBibG9iLnJlYWRfc2hpZnQodGd0IC0gYmxvYi5sLCAnY3N0cicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0xBQkVMKFIsIEMsIHMpIHtcblx0XHQvKiBUT0RPOiBlbmNvZGluZyAqL1xuXHRcdHZhciBvID0gbmV3X2J1Zig3ICsgcy5sZW5ndGgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgyNyk7IC8vID8/XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG8ubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBjYyA9IHMuY2hhckNvZGVBdChpKTtcblx0XHRcdG8ud3JpdGVfc2hpZnQoMSwgY2MgPj0gMHg4MCA/IDB4NUYgOiBjYyk7XG5cdFx0fVxuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMCk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9JTlRFR0VSKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbChibG9iLCBsZW5ndGgsIG9wdHMpO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0lOVEVHRVIoUiwgQywgdikge1xuXHRcdHZhciBvID0gbmV3X2J1Zig3KTtcblx0XHRvLndyaXRlX3NoaWZ0KDEsIDB4RkYpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBSKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIHYsICdpJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblxuXHRmdW5jdGlvbiBwYXJzZV9OVU1CRVIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9jZWxsKGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDgsICdmJyk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfTlVNQkVSKFIsIEMsIHYpIHtcblx0XHR2YXIgbyA9IG5ld19idWYoMTMpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHhGRik7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBDKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoOCwgdiwgJ2YnKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdFx0dmFyIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGwoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHQvKiBUT0RPOiBmb3JtdWxhICovXG5cdFx0b1sxXS52ID0gYmxvYi5yZWFkX3NoaWZ0KDgsICdmJyk7XG5cdFx0aWYob3B0cy5xcHJvKSBibG9iLmwgPSB0Z3Q7XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgZmxlbiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdHdrMV9mbWxhX3RvX2NzZihibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sICsgZmxlbiksIG8pO1xuXHRcdFx0YmxvYi5sICs9IGZsZW47XG5cdFx0fVxuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gd2sxX3BhcnNlX3JjKEIsIFYsIGNvbCkge1xuXHRcdHZhciByZWwgPSBWICYgMHg4MDAwO1xuXHRcdFYgJj0gfjB4ODAwMDtcblx0XHRWID0gKHJlbCA/IEIgOiAwKSArICgoViA+PSAweDIwMDApID8gViAtIDB4NDAwMCA6IFYpO1xuXHRcdHJldHVybiAocmVsID8gXCJcIiA6IFwiJFwiKSArIChjb2wgPyBlbmNvZGVfY29sKFYpIDogZW5jb2RlX3JvdyhWKSk7XG5cdH1cblx0LyogdmFyIG9wcmVjID0gW1xuXHRcdDgsIDgsIDgsIDgsIDgsIDgsIDgsIDgsIDYsIDQsIDQsIDUsIDUsIDcsIDMsIDMsXG5cdFx0MywgMywgMywgMywgMSwgMSwgMiwgNiwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOFxuXHRdOyAqL1xuXHQvKiBUT0RPOiBmbGVzaCBvdXQgKi9cblx0dmFyIEZ1bmNUYWIgPSB7XG5cdFx0MHgzMzogW1wiRkFMU0VcIiwgMF0sXG5cdFx0MHgzNDogW1wiVFJVRVwiLCAwXSxcblx0XHQweDQ2OiBbXCJMRU5cIiwgMV0sXG5cdFx0MHg1MDogW1wiU1VNXCIsIDY5XSxcblx0XHQweDUxOiBbXCJBVkVSQUdFQVwiLCA2OV0sXG5cdFx0MHg1MjogW1wiQ09VTlRBXCIsIDY5XSxcblx0XHQweDUzOiBbXCJNSU5BXCIsIDY5XSxcblx0XHQweDU0OiBbXCJNQVhBXCIsIDY5XSxcblx0XHQweDZGOiBbXCJUXCIsIDFdXG5cdH07XG5cdHZhciBCaW5PcFRhYiA9IFtcblx0XHQgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHQgIFwiXCIsICBcIitcIiwgIFwiLVwiLCAgXCIqXCIsICBcIi9cIiwgIFwiXlwiLCAgXCI9XCIsIFwiPD5cIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHRcIjw9XCIsIFwiPj1cIiwgIFwiPFwiLCAgXCI+XCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XHQgXCImXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiwgICBcIlwiLCAgIFwiXCIsICAgXCJcIiAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1taXhlZC1zcGFjZXMtYW5kLXRhYnNcblx0XTtcblxuXHRmdW5jdGlvbiB3azFfZm1sYV90b19jc2YoYmxvYiwgbykge1xuXHRcdHByZXBfYmxvYihibG9iLCAwKTtcblx0XHR2YXIgb3V0ID0gW10sIGFyZ2MgPSAwLCBSID0gXCJcIiwgQyA9IFwiXCIsIGFyZ0wgPSBcIlwiLCBhcmdSID0gXCJcIjtcblx0XHR3aGlsZShibG9iLmwgPCBibG9iLmxlbmd0aCkge1xuXHRcdFx0dmFyIGNjID0gYmxvYltibG9iLmwrK107XG5cdFx0XHRzd2l0Y2goY2MpIHtcblx0XHRcdFx0Y2FzZSAweDAwOiBvdXQucHVzaChibG9iLnJlYWRfc2hpZnQoOCwgJ2YnKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDE6IHtcblx0XHRcdFx0XHRDID0gd2sxX3BhcnNlX3JjKG9bMF0uYywgYmxvYi5yZWFkX3NoaWZ0KDIpLCB0cnVlKTtcblx0XHRcdFx0XHRSID0gd2sxX3BhcnNlX3JjKG9bMF0uciwgYmxvYi5yZWFkX3NoaWZ0KDIpLCBmYWxzZSk7XG5cdFx0XHRcdFx0b3V0LnB1c2goQyArIFIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDI6IHtcblx0XHRcdFx0XHR2YXIgYyA9IHdrMV9wYXJzZV9yYyhvWzBdLmMsIGJsb2IucmVhZF9zaGlmdCgyKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0dmFyIHIgPSB3azFfcGFyc2VfcmMob1swXS5yLCBibG9iLnJlYWRfc2hpZnQoMiksIGZhbHNlKTtcblx0XHRcdFx0XHRDID0gd2sxX3BhcnNlX3JjKG9bMF0uYywgYmxvYi5yZWFkX3NoaWZ0KDIpLCB0cnVlKTtcblx0XHRcdFx0XHRSID0gd2sxX3BhcnNlX3JjKG9bMF0uciwgYmxvYi5yZWFkX3NoaWZ0KDIpLCBmYWxzZSk7XG5cdFx0XHRcdFx0b3V0LnB1c2goYyArIHIgKyBcIjpcIiArIEMgKyBSKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAzOlxuXHRcdFx0XHRcdGlmKGJsb2IubCA8IGJsb2IubGVuZ3RoKSB7IGNvbnNvbGUuZXJyb3IoXCJXSzEgcHJlbWF0dXJlIGZvcm11bGEgZW5kXCIpOyByZXR1cm47IH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDA0OiBvdXQucHVzaChcIihcIiArIG91dC5wb3AoKSArIFwiKVwiKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNTogb3V0LnB1c2goYmxvYi5yZWFkX3NoaWZ0KDIpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNjoge1xuXHRcdFx0XHRcdC8qIFRPRE86IHRleHQgZW5jb2RpbmcgKi9cblx0XHRcdFx0XHR2YXIgWiA9IFwiXCI7IHdoaWxlKChjYyA9IGJsb2JbYmxvYi5sKytdKSkgWiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNjKTtcblx0XHRcdFx0XHRvdXQucHVzaCgnXCInICsgWi5yZXBsYWNlKC9cIi9nLCAnXCJcIicpICsgJ1wiJyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDA4OiBvdXQucHVzaChcIi1cIiArIG91dC5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MTc6IG91dC5wdXNoKFwiK1wiICsgb3V0LnBvcCgpKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgxNjogb3V0LnB1c2goXCJOT1QoXCIgKyBvdXQucG9wKCkgKyBcIilcIik7IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgxNDogY2FzZSAweDE1OiB7XG5cdFx0XHRcdFx0YXJnUiA9IG91dC5wb3AoKTsgYXJnTCA9IG91dC5wb3AoKTtcblx0XHRcdFx0XHRvdXQucHVzaChbXCJBTkRcIiwgXCJPUlwiXVtjYyAtIDB4MTRdICsgXCIoXCIgKyBhcmdMICsgXCIsXCIgKyBhcmdSICsgXCIpXCIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0aWYoY2MgPCAweDIwICYmIEJpbk9wVGFiW2NjXSkge1xuXHRcdFx0XHRcdFx0YXJnUiA9IG91dC5wb3AoKTsgYXJnTCA9IG91dC5wb3AoKTtcblx0XHRcdFx0XHRcdG91dC5wdXNoKGFyZ0wgKyBCaW5PcFRhYltjY10gKyBhcmdSKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYoRnVuY1RhYltjY10pIHtcblx0XHRcdFx0XHRcdGFyZ2MgPSBGdW5jVGFiW2NjXVsxXTtcblx0XHRcdFx0XHRcdGlmKGFyZ2MgPT0gNjkpIGFyZ2MgPSBibG9iW2Jsb2IubCsrXTtcblx0XHRcdFx0XHRcdGlmKGFyZ2MgPiBvdXQubGVuZ3RoKSB7IGNvbnNvbGUuZXJyb3IoXCJXSzEgYmFkIGZvcm11bGEgcGFyc2UgMHhcIiArIGNjLnRvU3RyaW5nKDE2KSArIFwiOnxcIiArIG91dC5qb2luKFwifFwiKSArIFwifFwiKTsgcmV0dXJuOyB9XG5cdFx0XHRcdFx0XHR2YXIgYXJncyA9IG91dC5zbGljZSgtYXJnYyk7XG5cdFx0XHRcdFx0XHRvdXQubGVuZ3RoIC09IGFyZ2M7XG5cdFx0XHRcdFx0XHRvdXQucHVzaChGdW5jVGFiW2NjXVswXSArIFwiKFwiICsgYXJncy5qb2luKFwiLFwiKSArIFwiKVwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDA3KSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSBpbnZhbGlkIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDE4KSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSB1bnN1cHBvcnRlZCBvcCBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDFFKSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSBpbnZhbGlkIG9wY29kZSBcIiArIGNjLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRcdFx0ZWxzZSBpZihjYyA8PSAweDczKSByZXR1cm4gY29uc29sZS5lcnJvcihcIldLMSB1bnN1cHBvcnRlZCBmdW5jdGlvbiBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0XHRcdC8vIHBvc3NpYmxlIGZ1dHVyZSBmdW5jdGlvbnMgPz9cblx0XHRcdFx0XHRlbHNlIHJldHVybiBjb25zb2xlLmVycm9yKFwiV0sxIHVucmVjb2duaXplZCBvcGNvZGUgXCIgKyBjYy50b1N0cmluZygxNikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihvdXQubGVuZ3RoID09IDEpIG9bMV0uZiA9IFwiXCIgKyBvdXRbMF07XG5cdFx0ZWxzZSBjb25zb2xlLmVycm9yKFwiV0sxIGJhZCBmb3JtdWxhIHBhcnNlIHxcIiArIG91dC5qb2luKFwifFwiKSArIFwifFwiKTtcblx0fVxuXG5cblx0ZnVuY3Rpb24gcGFyc2VfY2VsbF8zKGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHRcdHZhciBvID0gW3tjOjAscjowfSwge3Q6J24nLHY6MH0sIDBdO1xuXHRcdG9bMF0uciA9IGJsb2IucmVhZF9zaGlmdCgyKTsgb1szXSA9IGJsb2JbYmxvYi5sKytdOyBvWzBdLmMgPSBibG9iW2Jsb2IubCsrXTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0xBQkVMXzE2KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0b1sxXS50ID0gJ3MnO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdChsZW5ndGggLSA0LCAnY3N0cicpO1xuXHRcdHJldHVybiBvO1xuXHR9XG5cdGZ1bmN0aW9uIHdyaXRlX0xBQkVMXzE2KFIsIEMsIHdzaWR4LCBzKSB7XG5cdFx0LyogVE9ETzogZW5jb2RpbmcgKi9cblx0XHR2YXIgbyA9IG5ld19idWYoNiArIHMubGVuZ3RoKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIFIpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgd3NpZHgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgQyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAweDI3KTtcblx0XHRmb3IodmFyIGkgPSAwOyBpIDwgcy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGNjID0gcy5jaGFyQ29kZUF0KGkpO1xuXHRcdFx0by53cml0ZV9zaGlmdCgxLCBjYyA+PSAweDgwID8gMHg1RiA6IGNjKTtcblx0XHR9XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8xOChibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdG9bMV0udiA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHR2YXIgdiA9IG9bMV0udiA+PiAxO1xuXHRcdGlmKG9bMV0udiAmIDB4MSkge1xuXHRcdFx0c3dpdGNoKHYgJiAweDA3KSB7XG5cdFx0XHRcdGNhc2UgMDogdiA9ICh2ID4+IDMpICogNTAwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMTogdiA9ICh2ID4+IDMpICogNTAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSAyOiB2ID0gKHYgPj4gMykgLyAyMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMzogdiA9ICh2ID4+IDMpIC8gMjAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSA0OiB2ID0gKHYgPj4gMykgLyAyMDAwOyBicmVhaztcblx0XHRcdFx0Y2FzZSA1OiB2ID0gKHYgPj4gMykgLyAyMDAwMDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgNjogdiA9ICh2ID4+IDMpIC8gMTY7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDc6IHYgPSAodiA+PiAzKSAvIDY0OyBicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0b1sxXS52ID0gdjtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8xNyhibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdHZhciB2MSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHR2YXIgdjIgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0dmFyIGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdFx0aWYoZSA9PSAweEZGRkYpIHtcblx0XHRcdGlmKHYxID09PSAwICYmIHYyID09PSAweEMwMDAwMDAwKSB7IG9bMV0udCA9IFwiZVwiOyBvWzFdLnYgPSAweDBGOyB9IC8vIEVSUiAtPiAjVkFMVUUhXG5cdFx0XHRlbHNlIGlmKHYxID09PSAwICYmIHYyID09PSAweEQwMDAwMDAwKSB7IG9bMV0udCA9IFwiZVwiOyBvWzFdLnYgPSAweDJBOyB9IC8vIE5BIC0+ICNOL0Fcblx0XHRcdGVsc2Ugb1sxXS52ID0gMDtcblx0XHRcdHJldHVybiBvO1xuXHRcdH1cblx0XHR2YXIgcyA9IGUgJiAweDgwMDA7IGUgPSAoZSYweDdGRkYpIC0gMTY0NDY7XG5cdFx0b1sxXS52ID0gKDEgLSBzKjIpICogKHYyICogTWF0aC5wb3coMiwgZSszMikgKyB2MSAqIE1hdGgucG93KDIsIGUpKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXHRmdW5jdGlvbiB3cml0ZV9OVU1CRVJfMTcoUiwgQywgd3NpZHgsIHYpIHtcblx0XHR2YXIgbyA9IG5ld19idWYoMTQpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgUik7XG5cdFx0by53cml0ZV9zaGlmdCgxLCB3c2lkeCk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCBDKTtcblx0XHRpZih2ID09IDApIHtcblx0XHRcdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdFx0XHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRcdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdFx0cmV0dXJuIG87XG5cdFx0fVxuXHRcdHZhciBzID0gMCwgZSA9IDAsIHYxID0gMCwgdjIgPSAwO1xuXHRcdGlmKHYgPCAwKSB7IHMgPSAxOyB2ID0gLXY7IH1cblx0XHRlID0gTWF0aC5sb2cyKHYpIHwgMDtcblx0XHR2IC89IE1hdGgucG93KDIsIGUtMzEpO1xuXHRcdHYyID0gKHYpPj4+MDtcblx0XHRpZigodjImMHg4MDAwMDAwMCkgPT0gMCkgeyB2Lz0yOyArK2U7IHYyID0gdiA+Pj4gMDsgfVxuXHRcdHYgLT0gdjI7XG5cdFx0djIgfD0gMHg4MDAwMDAwMDtcblx0XHR2MiA+Pj49IDA7XG5cdFx0diAqPSBNYXRoLnBvdygyLCAzMik7XG5cdFx0djEgPSB2Pj4+MDtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHYxKTtcblx0XHRvLndyaXRlX3NoaWZ0KDQsIHYyKTtcblx0XHRlICs9IDB4M0ZGRiArIChzID8gMHg4MDAwIDogMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCBlKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEFfMTkoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9OVU1CRVJfMTcoYmxvYiwgMTQpO1xuXHRcdGJsb2IubCArPSBsZW5ndGggLSAxNDsgLyogVE9ETzogV0szIGZvcm11bGEgKi9cblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX05VTUJFUl8yNShibG9iLCBsZW5ndGgpIHtcblx0XHR2YXIgbyA9IHBhcnNlX2NlbGxfMyhibG9iLCBsZW5ndGgpO1xuXHRcdHZhciB2MSA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0XHRvWzFdLnYgPSB2MSA+PiA2O1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfTlVNQkVSXzI3KGJsb2IsIGxlbmd0aCkge1xuXHRcdHZhciBvID0gcGFyc2VfY2VsbF8zKGJsb2IsIGxlbmd0aCk7XG5cdFx0dmFyIHYxID0gYmxvYi5yZWFkX3NoaWZ0KDgsJ2YnKTtcblx0XHRvWzFdLnYgPSB2MTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX0ZPUk1VTEFfMjgoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSBwYXJzZV9OVU1CRVJfMjcoYmxvYiwgMTQpO1xuXHRcdGJsb2IubCArPSBsZW5ndGggLSAxMDsgLyogVE9ETzogZm9ybXVsYSAqL1xuXHRcdHJldHVybiBvO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfU0hFRVROQU1FQ1MoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGJsb2JbYmxvYi5sICsgbGVuZ3RoIC0gMV0gPT0gMCA/IGJsb2IucmVhZF9zaGlmdChsZW5ndGgsICdjc3RyJykgOiBcIlwiO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VfU0hFRVROQU1FTFAoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIGxlbiA9IGJsb2JbYmxvYi5sKytdO1xuXHRcdGlmKGxlbiA+IGxlbmd0aCAtIDEpIGxlbiA9IGxlbmd0aCAtIDE7XG5cdFx0dmFyIG8gPSBcIlwiOyB3aGlsZShvLmxlbmd0aCA8IGxlbikgbyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJsb2JbYmxvYi5sKytdKTtcblx0XHRyZXR1cm4gbztcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1NIRUVUSU5GT1FQKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRcdGlmKCFvcHRzLnFwcm8gfHwgbGVuZ3RoIDwgMjEpIHJldHVybjtcblx0XHR2YXIgaWQgPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0YmxvYi5sICs9IDE3O1xuXHRcdGJsb2IubCArPSAxOyAvL3ZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoMSk7XG5cdFx0YmxvYi5sICs9IDI7XG5cdFx0dmFyIG5tID0gYmxvYi5yZWFkX3NoaWZ0KGxlbmd0aCAtIDIxLCAnY3N0cicpO1xuXHRcdHJldHVybiBbaWQsIG5tXTtcblx0fVxuXG5cdGZ1bmN0aW9uIHBhcnNlX1hGT1JNQVQoYmxvYiwgbGVuZ3RoKSB7XG5cdFx0dmFyIG8gPSB7fSwgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHRcdHdoaWxlKGJsb2IubCA8IHRndCkge1xuXHRcdFx0dmFyIGR0ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRcdFx0aWYoZHQgPT0gMHgzNmIwKSB7XG5cdFx0XHRcdG9bZHRdID0gWzAsIFwiXCJdO1xuXHRcdFx0XHRvW2R0XVswXSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRcdFx0d2hpbGUoYmxvYltibG9iLmxdKSB7IG9bZHRdWzFdICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYmxvYltibG9iLmxdKTsgYmxvYi5sKys7IH0gYmxvYi5sKys7XG5cdFx0XHR9XG5cdFx0XHQvLyBUT0RPOiAweDNhOTkgPz9cblx0XHR9XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0ZnVuY3Rpb24gd3JpdGVfWEZPUk1BVF9TSEVFVE5BTUUobmFtZSwgd3NpZHgpIHtcblx0XHR2YXIgb3V0ID0gbmV3X2J1Zig1ICsgbmFtZS5sZW5ndGgpO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCAweDM2YjApO1xuXHRcdG91dC53cml0ZV9zaGlmdCgyLCB3c2lkeCk7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBjYyA9IG5hbWUuY2hhckNvZGVBdChpKTtcblx0XHRcdG91dFtvdXQubCsrXSA9IGNjID4gMHg3RiA/IDB4NUYgOiBjYztcblx0XHR9XG5cdFx0b3V0W291dC5sKytdID0gMDtcblx0XHRyZXR1cm4gb3V0O1xuXHR9XG5cblx0dmFyIFdLMUVudW0gPSB7XG5cdFx0Lyo6OlsqLzB4MDAwMC8qOjpdKi86IHsgbjpcIkJPRlwiLCBmOnBhcnNldWludDE2IH0sXG5cdFx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgbjpcIkVPRlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgbjpcIkNBTENNT0RFXCIgfSxcblx0XHQvKjo6WyovMHgwMDAzLyo6Ol0qLzogeyBuOlwiQ0FMQ09SREVSXCIgfSxcblx0XHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyBuOlwiU1BMSVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDUvKjo6XSovOiB7IG46XCJTWU5DXCIgfSxcblx0XHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyBuOlwiUkFOR0VcIiwgZjpwYXJzZV9SQU5HRSB9LFxuXHRcdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IG46XCJXSU5ET1cxXCIgfSxcblx0XHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyBuOlwiQ09MVzFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDkvKjo6XSovOiB7IG46XCJXSU5UV09cIiB9LFxuXHRcdC8qOjpbKi8weDAwMEEvKjo6XSovOiB7IG46XCJDT0xXMlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQi8qOjpdKi86IHsgbjpcIk5BTUVcIiB9LFxuXHRcdC8qOjpbKi8weDAwMEMvKjo6XSovOiB7IG46XCJCTEFOS1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRC8qOjpdKi86IHsgbjpcIklOVEVHRVJcIiwgZjpwYXJzZV9JTlRFR0VSIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRS8qOjpdKi86IHsgbjpcIk5VTUJFUlwiLCBmOnBhcnNlX05VTUJFUiB9LFxuXHRcdC8qOjpbKi8weDAwMEYvKjo6XSovOiB7IG46XCJMQUJFTFwiLCBmOnBhcnNlX0xBQkVMIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMC8qOjpdKi86IHsgbjpcIkZPUk1VTEFcIiwgZjpwYXJzZV9GT1JNVUxBIH0sXG5cdFx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgbjpcIlRBQkxFXCIgfSxcblx0XHQvKjo6WyovMHgwMDE5Lyo6Ol0qLzogeyBuOlwiT1JBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFBLyo6Ol0qLzogeyBuOlwiUFJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFCLyo6Ol0qLzogeyBuOlwiU1JBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFDLyo6Ol0qLzogeyBuOlwiRlJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDFELyo6Ol0qLzogeyBuOlwiS1JBTkdFMVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMC8qOjpdKi86IHsgbjpcIkhSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgbjpcIktSQU5HRTJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjQvKjo6XSovOiB7IG46XCJQUk9URUNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IG46XCJGT09URVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjYvKjo6XSovOiB7IG46XCJIRUFERVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IG46XCJTRVRVUFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgbjpcIk1BUkdJTlNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjkvKjo6XSovOiB7IG46XCJMQUJFTEZNVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyQS8qOjpdKi86IHsgbjpcIlRJVExFU1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyQi8qOjpdKi86IHsgbjpcIlNIRUVUSlNcIiB9LFxuXHRcdC8qOjpbKi8weDAwMkQvKjo6XSovOiB7IG46XCJHUkFQSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyRS8qOjpdKi86IHsgbjpcIk5HUkFQSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyRi8qOjpdKi86IHsgbjpcIkNBTENDT1VOVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzMC8qOjpdKi86IHsgbjpcIlVORk9STUFUVEVEXCIgfSxcblx0XHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogeyBuOlwiQ1VSU09SVzEyXCIgfSxcblx0XHQvKjo6WyovMHgwMDMyLyo6Ol0qLzogeyBuOlwiV0lORE9XXCIgfSxcblx0XHQvKjo6WyovMHgwMDMzLyo6Ol0qLzogeyBuOlwiU1RSSU5HXCIsIGY6cGFyc2VfTEFCRUwgfSxcblx0XHQvKjo6WyovMHgwMDM3Lyo6Ol0qLzogeyBuOlwiUEFTU1dPUkRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMzgvKjo6XSovOiB7IG46XCJMT0NLRURcIiB9LFxuXHRcdC8qOjpbKi8weDAwM0MvKjo6XSovOiB7IG46XCJRVUVSWVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzRC8qOjpdKi86IHsgbjpcIlFVRVJZTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAzRS8qOjpdKi86IHsgbjpcIlBSSU5UXCIgfSxcblx0XHQvKjo6WyovMHgwMDNGLyo6Ol0qLzogeyBuOlwiUFJJTlROQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDQwLyo6Ol0qLzogeyBuOlwiR1JBUEgyXCIgfSxcblx0XHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyBuOlwiR1JBUEhOQU1FXCIgfSxcblx0XHQvKjo6WyovMHgwMDQyLyo6Ol0qLzogeyBuOlwiWk9PTVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgbjpcIlNZTVNQTElUXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ0Lyo6Ol0qLzogeyBuOlwiTlNST1dTXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ1Lyo6Ol0qLzogeyBuOlwiTlNDT0xTXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ2Lyo6Ol0qLzogeyBuOlwiUlVMRVJcIiB9LFxuXHRcdC8qOjpbKi8weDAwNDcvKjo6XSovOiB7IG46XCJOTkFNRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDA0OC8qOjpdKi86IHsgbjpcIkFDT01NXCIgfSxcblx0XHQvKjo6WyovMHgwMDQ5Lyo6Ol0qLzogeyBuOlwiQU1BQ1JPXCIgfSxcblx0XHQvKjo6WyovMHgwMDRBLyo6Ol0qLzogeyBuOlwiUEFSU0VcIiB9LFxuXHRcdC8qOjpbKi8weDAwNjYvKjo6XSovOiB7IG46XCJQUkFOR0VTPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNjcvKjo6XSovOiB7IG46XCJSUkFOR0VTPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwNjgvKjo6XSovOiB7IG46XCJGTkFNRT8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDY5Lyo6Ol0qLzogeyBuOlwiTVJBTkdFUz8/XCIgfSxcblx0XHQvKjo6WyovMHgwMENDLyo6Ol0qLzogeyBuOlwiU0hFRVROQU1FQ1NcIiwgZjpwYXJzZV9TSEVFVE5BTUVDUyB9LFxuXHRcdC8qOjpbKi8weDAwREUvKjo6XSovOiB7IG46XCJTSEVFVE5BTUVMUFwiLCBmOnBhcnNlX1NIRUVUTkFNRUxQIH0sXG5cdFx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IHsgbjpcIlwiIH1cblx0fTtcblxuXHR2YXIgV0szRW51bSA9IHtcblx0XHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyBuOlwiQk9GXCIgfSxcblx0XHQvKjo6WyovMHgwMDAxLyo6Ol0qLzogeyBuOlwiRU9GXCIgfSxcblx0XHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyBuOlwiUEFTU1dPUkRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IG46XCJDQUxDU0VUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA0Lyo6Ol0qLzogeyBuOlwiV0lORE9XU0VUXCIgfSxcblx0XHQvKjo6WyovMHgwMDA1Lyo6Ol0qLzogeyBuOlwiU0hFRVRDRUxMUFRSXCIgfSxcblx0XHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyBuOlwiU0hFRVRMQVlPVVRcIiB9LFxuXHRcdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IG46XCJDT0xVTU5XSURUSFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOC8qOjpdKi86IHsgbjpcIkhJRERFTkNPTFVNTlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgbjpcIlVTRVJSQU5HRVwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwQS8qOjpdKi86IHsgbjpcIlNZU1RFTVJBTkdFXCIgfSxcblx0XHQvKjo6WyovMHgwMDBCLyo6Ol0qLzogeyBuOlwiWkVST0ZPUkNFXCIgfSxcblx0XHQvKjo6WyovMHgwMDBDLyo6Ol0qLzogeyBuOlwiU09SVEtFWURJUlwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAwRC8qOjpdKi86IHsgbjpcIkZJTEVTRUFMXCIgfSxcblx0XHQvKjo6WyovMHgwMDBFLyo6Ol0qLzogeyBuOlwiREFUQUZJTExOVU1TXCIgfSxcblx0XHQvKjo6WyovMHgwMDBGLyo6Ol0qLzogeyBuOlwiUFJJTlRNQUlOXCIgfSxcblx0XHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyBuOlwiUFJJTlRTVFJJTkdcIiB9LFxuXHRcdC8qOjpbKi8weDAwMTEvKjo6XSovOiB7IG46XCJHUkFQSE1BSU5cIiB9LFxuXHRcdC8qOjpbKi8weDAwMTIvKjo6XSovOiB7IG46XCJHUkFQSFNUUklOR1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogeyBuOlwiRVJSQ0VMTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxNS8qOjpdKi86IHsgbjpcIk5BQ0VMTFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxNi8qOjpdKi86IHsgbjpcIkxBQkVMMTZcIiwgZjpwYXJzZV9MQUJFTF8xNn0sXG5cdFx0Lyo6OlsqLzB4MDAxNy8qOjpdKi86IHsgbjpcIk5VTUJFUjE3XCIsIGY6cGFyc2VfTlVNQkVSXzE3IH0sXG5cdFx0Lyo6OlsqLzB4MDAxOC8qOjpdKi86IHsgbjpcIk5VTUJFUjE4XCIsIGY6cGFyc2VfTlVNQkVSXzE4IH0sXG5cdFx0Lyo6OlsqLzB4MDAxOS8qOjpdKi86IHsgbjpcIkZPUk1VTEExOVwiLCBmOnBhcnNlX0ZPUk1VTEFfMTl9LFxuXHRcdC8qOjpbKi8weDAwMUEvKjo6XSovOiB7IG46XCJGT1JNVUxBMUFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUIvKjo6XSovOiB7IG46XCJYRk9STUFUXCIsIGY6cGFyc2VfWEZPUk1BVCB9LFxuXHRcdC8qOjpbKi8weDAwMUMvKjo6XSovOiB7IG46XCJEVExBQkVMTUlTQ1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDAxRC8qOjpdKi86IHsgbjpcIkRUTEFCRUxDRUxMXCIgfSxcblx0XHQvKjo6WyovMHgwMDFFLyo6Ol0qLzogeyBuOlwiR1JBUEhXSU5ET1dcIiB9LFxuXHRcdC8qOjpbKi8weDAwMUYvKjo6XSovOiB7IG46XCJDUEFcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IG46XCJMUExBVVRPXCIgfSxcblx0XHQvKjo6WyovMHgwMDIxLyo6Ol0qLzogeyBuOlwiUVVFUllcIiB9LFxuXHRcdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IG46XCJISURERU5TSEVFVFwiIH0sXG5cdFx0Lyo6OlsqLzB4MDAyMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyBuOlwiTlVNQkVSMjVcIiwgZjpwYXJzZV9OVU1CRVJfMjUgfSxcblx0XHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwMjcvKjo6XSovOiB7IG46XCJOVU1CRVIyN1wiLCBmOnBhcnNlX05VTUJFUl8yNyB9LFxuXHRcdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IG46XCJGT1JNVUxBMjhcIiwgZjpwYXJzZV9GT1JNVUxBXzI4IH0sXG5cdFx0Lyo6OlsqLzB4MDA4RS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDkzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5Ny8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDk4Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOTkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDA5QS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMDlCLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwOUMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBBMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEFFLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQUYvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCMC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEIxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQjgvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCOS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEJBLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQkIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBCQy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEMzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQzkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDQy8qOjpdKi86IHsgbjpcIlNIRUVUTkFNRUNTXCIsIGY6cGFyc2VfU0hFRVROQU1FQ1MgfSxcblx0XHQvKjo6WyovMHgwMENELyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAwQ0UvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDBDRi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMEQwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwMy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwNi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTA3Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMDkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwQS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBCLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxMEMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDEwRS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTBGLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4NS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMTg2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAxODkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDE4Qy8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDIwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyMDUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4MC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjgxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4My8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODUvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI4Ni8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjg3Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyODgvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5Mi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjkzLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5NS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMjk2Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAyOTkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDI5QS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwMzAwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDAzMDQvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDYwMS8qOjpdKi86IHsgbjpcIlNIRUVUSU5GT1FQXCIsIGY6cGFyc2VfU0hFRVRJTkZPUVAgfSxcblx0XHQvKjo6WyovMHgwNjQwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA2NDIvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzAyLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA3MDMvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDcwNC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwNzgwLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MDgwMS8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgwODA0Lyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDBBODAvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4MkFGNi8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHgzMjMxLyo6Ol0qLzogeyBuOlwiPz9cIiB9LFxuXHRcdC8qOjpbKi8weDZFNDkvKjo6XSovOiB7IG46XCI/P1wiIH0sXG5cdFx0Lyo6OlsqLzB4NkY0NC8qOjpdKi86IHsgbjpcIj8/XCIgfSxcblx0XHQvKjo6WyovMHhGRkZGLyo6Ol0qLzogeyBuOlwiXCIgfVxuXHR9O1xuXHRyZXR1cm4ge1xuXHRcdHNoZWV0X3RvX3drMTogc2hlZXRfdG9fd2sxLFxuXHRcdGJvb2tfdG9fd2szOiBib29rX3RvX3drMyxcblx0XHR0b193b3JrYm9vazogbG90dXNfdG9fd29ya2Jvb2tcblx0fTtcbn0pKCk7XG4vKiAxOC40LjcgclByIENUX1JQckVsdCAqL1xuZnVuY3Rpb24gcGFyc2VfcnByKHJwcikge1xuXHR2YXIgZm9udCA9IHt9LCBtID0gcnByLm1hdGNoKHRhZ3JlZ2V4KSwgaSA9IDA7XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdGlmKG0pIGZvcig7aSE9bS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcobVtpXSk7XG5cdFx0c3dpdGNoKHlbMF0ucmVwbGFjZSgvXFx3KjovZyxcIlwiKSkge1xuXHRcdFx0LyogMTguOC4xMiBjb25kZW5zZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdC8qICoqIG5vdCByZXF1aXJlZCAuICovXG5cdFx0XHRjYXNlICc8Y29uZGVuc2UnOiBicmVhaztcblx0XHRcdC8qIDE4LjguMTcgZXh0ZW5kIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0LyogKiogbm90IHJlcXVpcmVkIC4gKi9cblx0XHRcdGNhc2UgJzxleHRlbmQnOiBicmVhaztcblx0XHRcdC8qIDE4LjguMzYgc2hhZG93IENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0LyogKiogbm90IHJlcXVpcmVkIC4gKi9cblx0XHRcdGNhc2UgJzxzaGFkb3cnOlxuXHRcdFx0XHRpZigheS52YWwpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8c2hhZG93Pic6XG5cdFx0XHRjYXNlICc8c2hhZG93Lz4nOiBmb250LnNoYWRvdyA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zaGFkb3c+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMSBjaGFyc2V0IENUX0ludFByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzxjaGFyc2V0Jzpcblx0XHRcdFx0aWYoeS52YWwgPT0gJzEnKSBicmVhaztcblx0XHRcdFx0Zm9udC5jcCA9IENTMkNQW3BhcnNlSW50KHkudmFsLCAxMCldO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTguNC4yIG91dGxpbmUgQ1RfQm9vbGVhblByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzxvdXRsaW5lJzpcblx0XHRcdFx0aWYoIXkudmFsKSBicmVhaztcblx0XHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdFx0Y2FzZSAnPG91dGxpbmU+Jzpcblx0XHRcdGNhc2UgJzxvdXRsaW5lLz4nOiBmb250Lm91dGxpbmUgPSAxOyBicmVhaztcblx0XHRcdGNhc2UgJzwvb3V0bGluZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC41IHJGb250IENUX0ZvbnROYW1lICovXG5cdFx0XHRjYXNlICc8ckZvbnQnOiBmb250Lm5hbWUgPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTEgc3ogQ1RfRm9udFNpemUgKi9cblx0XHRcdGNhc2UgJzxzeic6IGZvbnQuc3ogPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTAgc3RyaWtlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHN0cmlrZSc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxzdHJpa2U+Jzpcblx0XHRcdGNhc2UgJzxzdHJpa2UvPic6IGZvbnQuc3RyaWtlID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3N0cmlrZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMyB1IENUX1VuZGVybGluZVByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8dSc6XG5cdFx0XHRcdGlmKCF5LnZhbCkgYnJlYWs7XG5cdFx0XHRcdHN3aXRjaCh5LnZhbCkge1xuXHRcdFx0XHRcdGNhc2UgJ2RvdWJsZSc6IGZvbnQudXZhbCA9IFwiZG91YmxlXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NpbmdsZUFjY291bnRpbmcnOiBmb250LnV2YWwgPSBcInNpbmdsZS1hY2NvdW50aW5nXCI7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RvdWJsZUFjY291bnRpbmcnOiBmb250LnV2YWwgPSBcImRvdWJsZS1hY2NvdW50aW5nXCI7IGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzx1Pic6XG5cdFx0XHRjYXNlICc8dS8+JzogZm9udC51ID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L3U+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMiBiICovXG5cdFx0XHRjYXNlICc8Yic6XG5cdFx0XHRcdGlmKHkudmFsID09ICcwJykgYnJlYWs7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdGNhc2UgJzxiPic6XG5cdFx0XHRjYXNlICc8Yi8+JzogZm9udC5iID0gMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2I+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjYgaSAqL1xuXHRcdFx0Y2FzZSAnPGknOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMCcpIGJyZWFrO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRjYXNlICc8aT4nOlxuXHRcdFx0Y2FzZSAnPGkvPic6IGZvbnQuaSA9IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9pPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4zLjEuMTUgY29sb3IgQ1RfQ29sb3IgVE9ETzogdGludCwgdGhlbWUsIGF1dG8sIGluZGV4ZWQgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6XG5cdFx0XHRcdGlmKHkucmdiKSBmb250LmNvbG9yID0geS5yZ2Iuc2xpY2UoMiw4KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8Y29sb3I+JzogY2FzZSAnPGNvbG9yLz4nOiBjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE4IGZhbWlseSBTVF9Gb250RmFtaWx5ICovXG5cdFx0XHRjYXNlICc8ZmFtaWx5JzogZm9udC5mYW1pbHkgPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZmFtaWx5Pic6IGNhc2UgJzxmYW1pbHkvPic6IGNhc2UgJzwvZmFtaWx5Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjE0IHZlcnRBbGlnbiBDVF9WZXJ0aWNhbEFsaWduRm9udFByb3BlcnR5IFRPRE8gKi9cblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24nOiBmb250LnZhbGlnbiA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24+JzogY2FzZSAnPHZlcnRBbGlnbi8+JzogY2FzZSAnPC92ZXJ0QWxpZ24+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzUgc2NoZW1lIENUX0ZvbnRTY2hlbWUgVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPHNjaGVtZSc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPHNjaGVtZT4nOiBjYXNlICc8c2NoZW1lLz4nOiBjYXNlICc8L3NjaGVtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoeVswXS5jaGFyQ29kZUF0KDEpICE9PSA0NyAmJiAhcGFzcykgdGhyb3cgbmV3IEVycm9yKCdVbnJlY29nbml6ZWQgcmljaCBmb3JtYXQgJyArIHlbMF0pO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gZm9udDtcbn1cblxudmFyIHBhcnNlX3JzID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIHRyZWdleCA9IG1hdGNodGFnKFwidFwiKSwgcnByZWdleCA9IG1hdGNodGFnKFwiclByXCIpO1xuXHQvKiAxOC40LjQgciBDVF9SRWx0ICovXG5cdGZ1bmN0aW9uIHBhcnNlX3Iocikge1xuXHRcdC8qIDE4LjQuMTIgdCBTVF9Yc3RyaW5nICovXG5cdFx0dmFyIHQgPSByLm1hdGNoKHRyZWdleCkvKiwgY3AgPSA2NTAwMSovO1xuXHRcdGlmKCF0KSByZXR1cm4ge3Q6XCJzXCIsIHY6XCJcIn07XG5cblx0XHR2YXIgby8qOkNlbGwqLyA9ICh7dDoncycsIHY6dW5lc2NhcGV4bWwodFsxXSl9Lyo6YW55Ki8pO1xuXHRcdHZhciBycHIgPSByLm1hdGNoKHJwcmVnZXgpO1xuXHRcdGlmKHJwcikgby5zID0gcGFyc2VfcnByKHJwclsxXSk7XG5cdFx0cmV0dXJuIG87XG5cdH1cblx0dmFyIHJyZWdleCA9IC88KD86XFx3KzopP3I+L2csIHJlbmQgPSAvPFxcLyg/Olxcdys6KT9yPi87XG5cdHJldHVybiBmdW5jdGlvbiBwYXJzZV9ycyhycykge1xuXHRcdHJldHVybiBycy5yZXBsYWNlKHJyZWdleCxcIlwiKS5zcGxpdChyZW5kKS5tYXAocGFyc2VfcikuZmlsdGVyKGZ1bmN0aW9uKHIpIHsgcmV0dXJuIHIudjsgfSk7XG5cdH07XG59KSgpO1xuXG5cbi8qIFBhcnNlIGEgbGlzdCBvZiA8cj4gdGFncyAqL1xudmFyIHJzX3RvX2h0bWwgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uIHBhcnNlX3JzX2ZhY3RvcnkoKSB7XG5cdHZhciBubHJlZ2V4ID0gLyhcXHJcXG58XFxuKS9nO1xuXHRmdW5jdGlvbiBwYXJzZV9ycHIyKGZvbnQsIGludHJvLCBvdXRybykge1xuXHRcdHZhciBzdHlsZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXG5cdFx0aWYoZm9udC51KSBzdHlsZS5wdXNoKFwidGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XCIpO1xuXHRcdGlmKGZvbnQudXZhbCkgc3R5bGUucHVzaChcInRleHQtdW5kZXJsaW5lLXN0eWxlOlwiICsgZm9udC51dmFsICsgXCI7XCIpO1xuXHRcdGlmKGZvbnQuc3opIHN0eWxlLnB1c2goXCJmb250LXNpemU6XCIgKyBmb250LnN6ICsgXCJwdDtcIik7XG5cdFx0aWYoZm9udC5vdXRsaW5lKSBzdHlsZS5wdXNoKFwidGV4dC1lZmZlY3Q6IG91dGxpbmU7XCIpO1xuXHRcdGlmKGZvbnQuc2hhZG93KSBzdHlsZS5wdXNoKFwidGV4dC1zaGFkb3c6IGF1dG87XCIpO1xuXHRcdGludHJvLnB1c2goJzxzcGFuIHN0eWxlPVwiJyArIHN0eWxlLmpvaW4oXCJcIikgKyAnXCI+Jyk7XG5cblx0XHRpZihmb250LmIpIHsgaW50cm8ucHVzaChcIjxiPlwiKTsgb3V0cm8ucHVzaChcIjwvYj5cIik7IH1cblx0XHRpZihmb250LmkpIHsgaW50cm8ucHVzaChcIjxpPlwiKTsgb3V0cm8ucHVzaChcIjwvaT5cIik7IH1cblx0XHRpZihmb250LnN0cmlrZSkgeyBpbnRyby5wdXNoKFwiPHM+XCIpOyBvdXRyby5wdXNoKFwiPC9zPlwiKTsgfVxuXG5cdFx0dmFyIGFsaWduID0gZm9udC52YWxpZ24gfHwgXCJcIjtcblx0XHRpZihhbGlnbiA9PSBcInN1cGVyc2NyaXB0XCIgfHwgYWxpZ24gPT0gXCJzdXBlclwiKSBhbGlnbiA9IFwic3VwXCI7XG5cdFx0ZWxzZSBpZihhbGlnbiA9PSBcInN1YnNjcmlwdFwiKSBhbGlnbiA9IFwic3ViXCI7XG5cdFx0aWYoYWxpZ24gIT0gXCJcIikgeyBpbnRyby5wdXNoKFwiPFwiICsgYWxpZ24gKyBcIj5cIik7IG91dHJvLnB1c2goXCI8L1wiICsgYWxpZ24gKyBcIj5cIik7IH1cblxuXHRcdG91dHJvLnB1c2goXCI8L3NwYW4+XCIpO1xuXHRcdHJldHVybiBmb250O1xuXHR9XG5cblx0LyogMTguNC40IHIgQ1RfUkVsdCAqL1xuXHRmdW5jdGlvbiByX3RvX2h0bWwocikge1xuXHRcdHZhciB0ZXJtcy8qOltBcnJheTxzdHJpbmc+LCBzdHJpbmcsIEFycmF5PHN0cmluZz5dKi8gPSBbW10sci52LFtdXTtcblx0XHRpZighci52KSByZXR1cm4gXCJcIjtcblxuXHRcdGlmKHIucykgcGFyc2VfcnByMihyLnMsIHRlcm1zWzBdLCB0ZXJtc1syXSk7XG5cblx0XHRyZXR1cm4gdGVybXNbMF0uam9pbihcIlwiKSArIHRlcm1zWzFdLnJlcGxhY2UobmxyZWdleCwnPGJyLz4nKSArIHRlcm1zWzJdLmpvaW4oXCJcIik7XG5cdH1cblxuXHRyZXR1cm4gZnVuY3Rpb24gcGFyc2VfcnMocnMpIHtcblx0XHRyZXR1cm4gcnMubWFwKHJfdG9faHRtbCkuam9pbihcIlwiKTtcblx0fTtcbn0pKCk7XG5cbi8qIDE4LjQuOCBzaSBDVF9Sc3QgKi9cbnZhciBzaXRyZWdleCA9IC88KD86XFx3KzopP3RbXj5dKj4oW148XSopPFxcLyg/Olxcdys6KT90Pi9nLCBzaXJyZWdleCA9IC88KD86XFx3KzopP3I+LztcbnZhciBzaXJwaHJlZ2V4ID0gLzwoPzpcXHcrOik/clBoLio/PihbXFxzXFxTXSo/KTxcXC8oPzpcXHcrOik/clBoPi9nO1xuZnVuY3Rpb24gcGFyc2Vfc2koeCwgb3B0cykge1xuXHR2YXIgaHRtbCA9IG9wdHMgPyBvcHRzLmNlbGxIVE1MIDogdHJ1ZTtcblx0dmFyIHogPSB7fTtcblx0aWYoIXgpIHJldHVybiB7IHQ6IFwiXCIgfTtcblx0Ly92YXIgeTtcblx0LyogMTguNC4xMiB0IFNUX1hzdHJpbmcgKFBsYWludGV4dCBTdHJpbmcpICovXG5cdC8vIFRPRE86IGlzIHdoaXRlc3BhY2UgYWN0dWFsbHkgdmFsaWQgaGVyZT9cblx0aWYoeC5tYXRjaCgvXlxccyo8KD86XFx3KzopP3RbXj5dKj4vKSkge1xuXHRcdHoudCA9IHVuZXNjYXBleG1sKHV0ZjhyZWFkKHguc2xpY2UoeC5pbmRleE9mKFwiPlwiKSsxKS5zcGxpdCgvPFxcLyg/Olxcdys6KT90Pi8pWzBdfHxcIlwiKSk7XG5cdFx0ei5yID0gdXRmOHJlYWQoeCk7XG5cdFx0aWYoaHRtbCkgei5oID0gZXNjYXBlaHRtbCh6LnQpO1xuXHR9XG5cdC8qIDE4LjQuNCByIENUX1JFbHQgKFJpY2ggVGV4dCBSdW4pICovXG5cdGVsc2UgaWYoKC8qeSA9ICoveC5tYXRjaChzaXJyZWdleCkpKSB7XG5cdFx0ei5yID0gdXRmOHJlYWQoeCk7XG5cdFx0ei50ID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoKHgucmVwbGFjZShzaXJwaHJlZ2V4LCAnJykubWF0Y2goc2l0cmVnZXgpfHxbXSkuam9pbihcIlwiKS5yZXBsYWNlKHRhZ3JlZ2V4LFwiXCIpKSk7XG5cdFx0aWYoaHRtbCkgei5oID0gcnNfdG9faHRtbChwYXJzZV9ycyh6LnIpKTtcblx0fVxuXHQvKiAxOC40LjMgcGhvbmV0aWNQciBDVF9QaG9uZXRpY1ByIChUT0RPOiBuZWVkZWQgZm9yIEFzaWFuIHN1cHBvcnQpICovXG5cdC8qIDE4LjQuNiByUGggQ1RfUGhvbmV0aWNSdW4gKFRPRE86IG5lZWRlZCBmb3IgQXNpYW4gc3VwcG9ydCkgKi9cblx0cmV0dXJuIHo7XG59XG5cbi8qIDE4LjQgU2hhcmVkIFN0cmluZyBUYWJsZSAqL1xudmFyIHNzdHIwID0gLzwoPzpcXHcrOik/c3N0KFtePl0qKT4oW1xcc1xcU10qKTxcXC8oPzpcXHcrOik/c3N0Pi87XG52YXIgc3N0cjEgPSAvPCg/Olxcdys6KT8oPzpzaXxzc3RJdGVtKT4vZztcbnZhciBzc3RyMiA9IC88XFwvKD86XFx3KzopPyg/OnNpfHNzdEl0ZW0pPi87XG5mdW5jdGlvbiBwYXJzZV9zc3RfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpTU1QqLyB7XG5cdHZhciBzLyo6U1NUKi8gPSAoW10vKjphbnkqLyksIHNzID0gXCJcIjtcblx0aWYoIWRhdGEpIHJldHVybiBzO1xuXHQvKiAxOC40Ljkgc3N0IENUX1NzdCAqL1xuXHR2YXIgc3N0ID0gZGF0YS5tYXRjaChzc3RyMCk7XG5cdGlmKHNzdCkge1xuXHRcdHNzID0gc3N0WzJdLnJlcGxhY2Uoc3N0cjEsXCJcIikuc3BsaXQoc3N0cjIpO1xuXHRcdGZvcih2YXIgaSA9IDA7IGkgIT0gc3MubGVuZ3RoOyArK2kpIHtcblx0XHRcdHZhciBvID0gcGFyc2Vfc2koc3NbaV0udHJpbSgpLCBvcHRzKTtcblx0XHRcdGlmKG8gIT0gbnVsbCkgc1tzLmxlbmd0aF0gPSBvO1xuXHRcdH1cblx0XHRzc3QgPSBwYXJzZXhtbHRhZyhzc3RbMV0pOyBzLkNvdW50ID0gc3N0LmNvdW50OyBzLlVuaXF1ZSA9IHNzdC51bmlxdWVDb3VudDtcblx0fVxuXHRyZXR1cm4gcztcbn1cblxudmFyIHN0cmF5d3NyZWdleCA9IC9eXFxzfFxccyR8W1xcdFxcblxccl0vO1xuZnVuY3Rpb24gd3JpdGVfc3N0X3htbChzc3QvKjpTU1QqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFvcHRzLmJvb2tTU1QpIHJldHVybiBcIlwiO1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdzc3QnLCBudWxsLCB7XG5cdFx0eG1sbnM6IFhNTE5TX21haW5bMF0sXG5cdFx0Y291bnQ6IHNzdC5Db3VudCxcblx0XHR1bmlxdWVDb3VudDogc3N0LlVuaXF1ZVxuXHR9KSk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gc3N0Lmxlbmd0aDsgKytpKSB7IGlmKHNzdFtpXSA9PSBudWxsKSBjb250aW51ZTtcblx0XHR2YXIgcy8qOlhMU3RyaW5nKi8gPSBzc3RbaV07XG5cdFx0dmFyIHNpdGFnID0gXCI8c2k+XCI7XG5cdFx0aWYocy5yKSBzaXRhZyArPSBzLnI7XG5cdFx0ZWxzZSB7XG5cdFx0XHRzaXRhZyArPSBcIjx0XCI7XG5cdFx0XHRpZighcy50KSBzLnQgPSBcIlwiO1xuXHRcdFx0aWYocy50Lm1hdGNoKHN0cmF5d3NyZWdleCkpIHNpdGFnICs9ICcgeG1sOnNwYWNlPVwicHJlc2VydmVcIic7XG5cdFx0XHRzaXRhZyArPSBcIj5cIiArIGVzY2FwZXhtbChzLnQpICsgXCI8L3Q+XCI7XG5cdFx0fVxuXHRcdHNpdGFnICs9IFwiPC9zaT5cIjtcblx0XHRvW28ubGVuZ3RoXSA9IChzaXRhZyk7XG5cdH1cblx0aWYoby5sZW5ndGg+Mil7IG9bby5sZW5ndGhdID0gKCc8L3NzdD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC4yMjEgQnJ0QmVnaW5Tc3QgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luU3N0KGRhdGEpIHtcblx0cmV0dXJuIFtkYXRhLnJlYWRfc2hpZnQoNCksIGRhdGEucmVhZF9zaGlmdCg0KV07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy40NSBTaGFyZWQgU3RyaW5ncyAqL1xuZnVuY3Rpb24gcGFyc2Vfc3N0X2JpbihkYXRhLCBvcHRzKS8qOlNTVCovIHtcblx0dmFyIHMvKjpTU1QqLyA9IChbXS8qOmFueSovKTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9zc3QodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwOUY6IC8qIEJydEJlZ2luU3N0ICovXG5cdFx0XHRcdHMuQ291bnQgPSB2YWxbMF07IHMuVW5pcXVlID0gdmFsWzFdOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDEzOiAvKiBCcnRTU1RJdGVtICovXG5cdFx0XHRcdHMucHVzaCh2YWwpOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMEEwOiAvKiBCcnRFbmRTc3QgKi9cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiBCcnRGUlRCZWdpbiAqL1xuXHRcdFx0XHRwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNDogLyogQnJ0RlJURW5kICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7fVxuXHRcdFx0XHRpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIHM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luU3N0KHNzdCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoOCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3N0LkNvdW50KTtcblx0by53cml0ZV9zaGlmdCg0LCBzc3QuVW5pcXVlKTtcblx0cmV0dXJuIG87XG59XG5cbnZhciB3cml0ZV9CcnRTU1RJdGVtID0gd3JpdGVfUmljaFN0cjtcblxuZnVuY3Rpb24gd3JpdGVfc3N0X2Jpbihzc3QvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDlGIC8qIEJydEJlZ2luU3N0ICovLCB3cml0ZV9CcnRCZWdpblNzdChzc3QpKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IHNzdC5sZW5ndGg7ICsraSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTMgLyogQnJ0U1NUSXRlbSAqLywgd3JpdGVfQnJ0U1NUSXRlbShzc3RbaV0pKTtcblx0LyogRlJUU1NUICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEEwIC8qIEJydEVuZFNzdCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbmZ1bmN0aW9uIF9KUzJBTlNJKHN0ci8qOnN0cmluZyovKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGlmKHR5cGVvZiAkY3B0YWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiAkY3B0YWJsZS51dGlscy5lbmNvZGUoY3VycmVudF9hbnNpLCBzdHIpO1xuXHR2YXIgby8qOkFycmF5PG51bWJlcj4qLyA9IFtdLCBvbyA9IHN0ci5zcGxpdChcIlwiKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG9vLmxlbmd0aDsgKytpKSBvW2ldID0gb29baV0uY2hhckNvZGVBdCgwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS40IFZlcnNpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgbGVuZ3RoLyo6P251bWJlciovKSB7XG5cdHZhciBvLyo6YW55Ki8gPSB7fTtcblx0by5NYWpvciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0by5NaW5vciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0Lyo6OiBpZihsZW5ndGggPT0gbnVsbCkgcmV0dXJuIG87ICovXG5cdGlmKGxlbmd0aCA+PSA0KSBibG9iLmwgKz0gbGVuZ3RoIC0gNDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS41IERhdGFTcGFjZVZlcnNpb25JbmZvICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyhibG9iKSB7XG5cdHZhciBvID0ge307XG5cdG8uaWQgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5SID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5VID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5XID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS42LjEgRGF0YVNwYWNlTWFwRW50cnkgU3RydWN0dXJlICovXG5mdW5jdGlvbiBwYXJzZV9EYXRhU3BhY2VNYXBFbnRyeShibG9iKSB7XG5cdHZhciBsZW4gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBlbmQgPSBibG9iLmwgKyBsZW4gLSA0O1xuXHR2YXIgbyA9IHt9O1xuXHR2YXIgY250ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHR2YXIgY29tcHMvKjpBcnJheTx7dDpudW1iZXIsIHY6c3RyaW5nfT4qLyA9IFtdO1xuXHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuNi4yIERhdGFTcGFjZVJlZmVyZW5jZUNvbXBvbmVudCBTdHJ1Y3R1cmUgKi9cblx0d2hpbGUoY250LS0gPiAwKSBjb21wcy5wdXNoKHsgdDogYmxvYi5yZWFkX3NoaWZ0KDQpLCB2OiBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKSB9KTtcblx0by5uYW1lID0gYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0Jyk7XG5cdG8uY29tcHMgPSBjb21wcztcblx0aWYoYmxvYi5sICE9IGVuZCkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIERhdGFTcGFjZU1hcEVudHJ5OiBcIiArIGJsb2IubCArIFwiICE9IFwiICsgZW5kKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS42IERhdGFTcGFjZU1hcCAqL1xuZnVuY3Rpb24gcGFyc2VfRGF0YVNwYWNlTWFwKGJsb2IpIHtcblx0dmFyIG8gPSBbXTtcblx0YmxvYi5sICs9IDQ7IC8vIG11c3QgYmUgMHg4XG5cdHZhciBjbnQgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHdoaWxlKGNudC0tID4gMCkgby5wdXNoKHBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5KGJsb2IpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMS43IERhdGFTcGFjZURlZmluaXRpb24gKi9cbmZ1bmN0aW9uIHBhcnNlX0RhdGFTcGFjZURlZmluaXRpb24oYmxvYikvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRibG9iLmwgKz0gNDsgLy8gbXVzdCBiZSAweDhcblx0dmFyIGNudCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0d2hpbGUoY250LS0gPiAwKSBvLnB1c2goYmxvYi5yZWFkX3NoaWZ0KDAsICdscHA0JykpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4xLjggRGF0YVNwYWNlRGVmaW5pdGlvbiAqL1xuZnVuY3Rpb24gcGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlcihibG9iKSB7XG5cdHZhciBvID0ge307XG5cdC8qdmFyIGxlbiA9ICovYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gNDsgLy8gbXVzdCBiZSAweDFcblx0by5pZCA9IGJsb2IucmVhZF9zaGlmdCgwLCAnbHBwNCcpO1xuXHRvLm5hbWUgPSBibG9iLnJlYWRfc2hpZnQoMCwgJ2xwcDQnKTtcblx0by5SID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5VID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0by5XID0gcGFyc2VfQ1JZUFRPVmVyc2lvbihibG9iLCA0KTtcblx0cmV0dXJuIG87XG59XG5cbmZ1bmN0aW9uIHBhcnNlX1ByaW1hcnkoYmxvYikge1xuXHQvKiBbTVMtT0ZGQ1JZUFRPXSAyLjIuNiBJUk1EU1RyYW5zZm9ybUluZm8gKi9cblx0dmFyIGhkciA9IHBhcnNlX1RyYW5zZm9ybUluZm9IZWFkZXIoYmxvYik7XG5cdC8qIFtNUy1PRkZDUllQVE9dIDIuMS45IEVuY3J5cHRpb25UcmFuc2Zvcm1JbmZvICovXG5cdGhkci5lbmFtZSA9IGJsb2IucmVhZF9zaGlmdCgwLCAnOGxwcDQnKTtcblx0aGRyLmJsa3N6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRoZHIuY21vZGUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdGlmKGJsb2IucmVhZF9zaGlmdCg0KSAhPSAweDA0KSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgIVByaW1hcnkgcmVjb3JkXCIpO1xuXHRyZXR1cm4gaGRyO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuMiBFbmNyeXB0aW9uIEhlYWRlciAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jcnlwdGlvbkhlYWRlcihibG9iLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgdGd0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgbyA9IHt9O1xuXHRvLkZsYWdzID0gKGJsb2IucmVhZF9zaGlmdCg0KSAmIDB4M0YpO1xuXHRibG9iLmwgKz0gNDtcblx0by5BbGdJRCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0dmFyIHZhbGlkID0gZmFsc2U7XG5cdHN3aXRjaChvLkFsZ0lEKSB7XG5cdFx0Y2FzZSAweDY2MEU6IGNhc2UgMHg2NjBGOiBjYXNlIDB4NjYxMDogdmFsaWQgPSAoby5GbGFncyA9PSAweDI0KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDY4MDE6IHZhbGlkID0gKG8uRmxhZ3MgPT0gMHgwNCk7IGJyZWFrO1xuXHRcdGNhc2UgMDogdmFsaWQgPSAoby5GbGFncyA9PSAweDEwIHx8IG8uRmxhZ3MgPT0gMHgwNCB8fCBvLkZsYWdzID09IDB4MjQpOyBicmVhaztcblx0XHRkZWZhdWx0OiB0aHJvdyAnVW5yZWNvZ25pemVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAnICsgby5BbGdJRDtcblx0fVxuXHRpZighdmFsaWQpIHRocm93IG5ldyBFcnJvcihcIkVuY3J5cHRpb24gRmxhZ3MvQWxnSUQgbWlzbWF0Y2hcIik7XG5cdG8uQWxnSURIYXNoID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRvLktleVNpemUgPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdG8uUHJvdmlkZXJUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRibG9iLmwgKz0gODtcblx0by5DU1BOYW1lID0gYmxvYi5yZWFkX3NoaWZ0KCh0Z3QtYmxvYi5sKT4+MSwgJ3V0ZjE2bGUnKTtcblx0YmxvYi5sID0gdGd0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjMgRW5jcnlwdGlvbiBWZXJpZmllciAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jcnlwdGlvblZlcmlmaWVyKGJsb2IsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdHZhciBvID0ge30sIHRndCA9IGJsb2IubCArIGxlbmd0aDtcblx0YmxvYi5sICs9IDQ7IC8vIFNhbHRTaXplIG11c3QgYmUgMHgxMFxuXHRvLlNhbHQgPSBibG9iLnNsaWNlKGJsb2IubCwgYmxvYi5sKzE2KTsgYmxvYi5sICs9IDE2O1xuXHRvLlZlcmlmaWVyID0gYmxvYi5zbGljZShibG9iLmwsIGJsb2IubCsxNik7IGJsb2IubCArPSAxNjtcblx0Lyp2YXIgc3ogPSAqL2Jsb2IucmVhZF9zaGlmdCg0KTtcblx0by5WZXJpZmllckhhc2ggPSBibG9iLnNsaWNlKGJsb2IubCwgdGd0KTsgYmxvYi5sID0gdGd0O1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuKiBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY3J5cHRpb25JbmZvKGJsb2IpIHtcblx0dmFyIHZlcnMgPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IpO1xuXHRzd2l0Y2godmVycy5NaW5vcikge1xuXHRcdGNhc2UgMHgwMjogcmV0dXJuIFt2ZXJzLk1pbm9yLCBwYXJzZV9FbmNJbmZvU3RkKGJsb2IsIHZlcnMpXTtcblx0XHRjYXNlIDB4MDM6IHJldHVybiBbdmVycy5NaW5vciwgcGFyc2VfRW5jSW5mb0V4dChibG9iLCB2ZXJzKV07XG5cdFx0Y2FzZSAweDA0OiByZXR1cm4gW3ZlcnMuTWlub3IsIHBhcnNlX0VuY0luZm9BZ2woYmxvYiwgdmVycyldO1xuXHR9XG5cdHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIHVucmVjb2duaXplZCBWZXJzaW9uOiBcIiArIHZlcnMuTWlub3IpO1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC41ICBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKFN0YW5kYXJkIEVuY3J5cHRpb24pICovXG5mdW5jdGlvbiBwYXJzZV9FbmNJbmZvU3RkKGJsb2IvKjo6LCB2ZXJzKi8pIHtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZigoZmxhZ3MgJiAweDNGKSAhPSAweDI0KSB0aHJvdyBuZXcgRXJyb3IoXCJFbmNyeXB0aW9uSW5mbyBtaXNtYXRjaFwiKTtcblx0dmFyIHN6ID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHQvL3ZhciB0Z3QgPSBibG9iLmwgKyBzejtcblx0dmFyIGhkciA9IHBhcnNlX0VuY3J5cHRpb25IZWFkZXIoYmxvYiwgc3opO1xuXHR2YXIgdmVyaWZpZXIgPSBwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIoYmxvYiwgYmxvYi5sZW5ndGggLSBibG9iLmwpO1xuXHRyZXR1cm4geyB0OlwiU3RkXCIsIGg6aGRyLCB2OnZlcmlmaWVyIH07XG59XG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjMuNC42ICBFbmNyeXB0aW9uSW5mbyBTdHJlYW0gKEV4dGVuc2libGUgRW5jcnlwdGlvbikgKi9cbmZ1bmN0aW9uIHBhcnNlX0VuY0luZm9FeHQoLyo6OmJsb2IsIHZlcnMqLykgeyB0aHJvdyBuZXcgRXJyb3IoXCJGaWxlIGlzIHBhc3N3b3JkLXByb3RlY3RlZDogRUNNQS0zNzYgRXh0ZW5zaWJsZVwiKTsgfVxuLyogW01TLU9GRkNSWVBUT10gMi4zLjQuMTAgRW5jcnlwdGlvbkluZm8gU3RyZWFtIChBZ2lsZSBFbmNyeXB0aW9uKSAqL1xuZnVuY3Rpb24gcGFyc2VfRW5jSW5mb0FnbChibG9iLyo6OiwgdmVycyovKSB7XG5cdHZhciBLZXlEYXRhID0gW1wic2FsdFNpemVcIixcImJsb2NrU2l6ZVwiLFwia2V5Qml0c1wiLFwiaGFzaFNpemVcIixcImNpcGhlckFsZ29yaXRobVwiLFwiY2lwaGVyQ2hhaW5pbmdcIixcImhhc2hBbGdvcml0aG1cIixcInNhbHRWYWx1ZVwiXTtcblx0YmxvYi5sKz00O1xuXHR2YXIgeG1sID0gYmxvYi5yZWFkX3NoaWZ0KGJsb2IubGVuZ3RoIC0gYmxvYi5sLCAndXRmOCcpO1xuXHR2YXIgbyA9IHt9O1xuXHR4bWwucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX2FnaWxlKHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGVuY3J5cHRpb24nOiBjYXNlICc8L2VuY3J5cHRpb24+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8a2V5RGF0YSc6IEtleURhdGEuZm9yRWFjaChmdW5jdGlvbihrKSB7IG9ba10gPSB5W2tdOyB9KTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZGF0YUludGVncml0eSc6IG8uZW5jcnlwdGVkSG1hY0tleSA9IHkuZW5jcnlwdGVkSG1hY0tleTsgby5lbmNyeXB0ZWRIbWFjVmFsdWUgPSB5LmVuY3J5cHRlZEhtYWNWYWx1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8a2V5RW5jcnlwdG9ycz4nOiBjYXNlICc8a2V5RW5jcnlwdG9ycyc6IG8uZW5jcyA9IFtdOyBicmVhaztcblx0XHRcdGNhc2UgJzwva2V5RW5jcnlwdG9ycz4nOiBicmVhaztcblxuXHRcdFx0Y2FzZSAnPGtleUVuY3J5cHRvcic6IG8udXJpID0geS51cmk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9rZXlFbmNyeXB0b3I+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZW5jcnlwdGVkS2V5Jzogby5lbmNzLnB1c2goeSk7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogdGhyb3cgeVswXTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjUuMSBSQzQgQ3J5cHRvQVBJIEVuY3J5cHRpb24gSGVhZGVyICovXG5mdW5jdGlvbiBwYXJzZV9SQzRDcnlwdG9IZWFkZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIG8gPSB7fTtcblx0dmFyIHZlcnMgPSBvLkVuY3J5cHRpb25WZXJzaW9uSW5mbyA9IHBhcnNlX0NSWVBUT1ZlcnNpb24oYmxvYiwgNCk7IGxlbmd0aCAtPSA0O1xuXHRpZih2ZXJzLk1pbm9yICE9IDIpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkIG1pbm9yIHZlcnNpb24gY29kZTogJyArIHZlcnMuTWlub3IpO1xuXHRpZih2ZXJzLk1ham9yID4gNCB8fCB2ZXJzLk1ham9yIDwgMikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgbWFqb3IgdmVyc2lvbiBjb2RlOiAnICsgdmVycy5NYWpvcik7XG5cdG8uRmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoNCk7IGxlbmd0aCAtPSA0O1xuXHR2YXIgc3ogPSBibG9iLnJlYWRfc2hpZnQoNCk7IGxlbmd0aCAtPSA0O1xuXHRvLkVuY3J5cHRpb25IZWFkZXIgPSBwYXJzZV9FbmNyeXB0aW9uSGVhZGVyKGJsb2IsIHN6KTsgbGVuZ3RoIC09IHN6O1xuXHRvLkVuY3J5cHRpb25WZXJpZmllciA9IHBhcnNlX0VuY3J5cHRpb25WZXJpZmllcihibG9iLCBsZW5ndGgpO1xuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy42LjEgUkM0IEVuY3J5cHRpb24gSGVhZGVyICovXG5mdW5jdGlvbiBwYXJzZV9SQzRIZWFkZXIoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBvID0ge307XG5cdHZhciB2ZXJzID0gby5FbmNyeXB0aW9uVmVyc2lvbkluZm8gPSBwYXJzZV9DUllQVE9WZXJzaW9uKGJsb2IsIDQpO1xuXHRpZih2ZXJzLk1ham9yICE9IDEgfHwgdmVycy5NaW5vciAhPSAxKSB0aHJvdyAndW5yZWNvZ25pemVkIHZlcnNpb24gY29kZSAnICsgdmVycy5NYWpvciArICcgOiAnICsgdmVycy5NaW5vcjtcblx0by5TYWx0ID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0by5FbmNyeXB0ZWRWZXJpZmllciA9IGJsb2IucmVhZF9zaGlmdCgxNik7XG5cdG8uRW5jcnlwdGVkVmVyaWZpZXJIYXNoID0gYmxvYi5yZWFkX3NoaWZ0KDE2KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy43LjEgQmluYXJ5IERvY3VtZW50IFBhc3N3b3JkIFZlcmlmaWVyIERlcml2YXRpb24gKi9cbmZ1bmN0aW9uIGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEoUGFzc3dvcmQvKjpzdHJpbmcqLykge1xuXHR2YXIgVmVyaWZpZXIgPSAweDAwMDAsIFBhc3N3b3JkQXJyYXk7XG5cdHZhciBQYXNzd29yZERlY29kZWQgPSBfSlMyQU5TSShQYXNzd29yZCk7XG5cdHZhciBsZW4gPSBQYXNzd29yZERlY29kZWQubGVuZ3RoICsgMSwgaSwgUGFzc3dvcmRCeXRlO1xuXHR2YXIgSW50ZXJtZWRpYXRlMSwgSW50ZXJtZWRpYXRlMiwgSW50ZXJtZWRpYXRlMztcblx0UGFzc3dvcmRBcnJheSA9IG5ld19yYXdfYnVmKGxlbik7XG5cdFBhc3N3b3JkQXJyYXlbMF0gPSBQYXNzd29yZERlY29kZWQubGVuZ3RoO1xuXHRmb3IoaSA9IDE7IGkgIT0gbGVuOyArK2kpIFBhc3N3b3JkQXJyYXlbaV0gPSBQYXNzd29yZERlY29kZWRbaS0xXTtcblx0Zm9yKGkgPSBsZW4tMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRQYXNzd29yZEJ5dGUgPSBQYXNzd29yZEFycmF5W2ldO1xuXHRcdEludGVybWVkaWF0ZTEgPSAoKFZlcmlmaWVyICYgMHg0MDAwKSA9PT0gMHgwMDAwKSA/IDAgOiAxO1xuXHRcdEludGVybWVkaWF0ZTIgPSAoVmVyaWZpZXIgPDwgMSkgJiAweDdGRkY7XG5cdFx0SW50ZXJtZWRpYXRlMyA9IEludGVybWVkaWF0ZTEgfCBJbnRlcm1lZGlhdGUyO1xuXHRcdFZlcmlmaWVyID0gSW50ZXJtZWRpYXRlMyBeIFBhc3N3b3JkQnl0ZTtcblx0fVxuXHRyZXR1cm4gVmVyaWZpZXIgXiAweENFNEI7XG59XG5cbi8qIFtNUy1PRkZDUllQVE9dIDIuMy43LjIgQmluYXJ5IERvY3VtZW50IFhPUiBBcnJheSBJbml0aWFsaXphdGlvbiAqL1xudmFyIGNyeXB0b19DcmVhdGVYb3JBcnJheV9NZXRob2QxID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIFBhZEFycmF5ID0gWzB4QkIsIDB4RkYsIDB4RkYsIDB4QkEsIDB4RkYsIDB4RkYsIDB4QjksIDB4ODAsIDB4MDAsIDB4QkUsIDB4MEYsIDB4MDAsIDB4QkYsIDB4MEYsIDB4MDBdO1xuXHR2YXIgSW5pdGlhbENvZGUgPSBbMHhFMUYwLCAweDFEMEYsIDB4Q0M5QywgMHg4NEMwLCAweDExMEMsIDB4MEUxMCwgMHhGMUNFLCAweDMxM0UsIDB4MTg3MiwgMHhFMTM5LCAweEQ0MEYsIDB4ODRGOSwgMHgyODBDLCAweEE5NkEsIDB4NEVDM107XG5cdHZhciBYb3JNYXRyaXggPSBbMHhBRUZDLCAweDRERDksIDB4OUJCMiwgMHgyNzQ1LCAweDRFOEEsIDB4OUQxNCwgMHgyQTA5LCAweDdCNjEsIDB4RjZDMiwgMHhGREE1LCAweEVCNkIsIDB4QzZGNywgMHg5RENGLCAweDJCQkYsIDB4NDU2MywgMHg4QUM2LCAweDA1QUQsIDB4MEI1QSwgMHgxNkI0LCAweDJENjgsIDB4NUFEMCwgMHgwMzc1LCAweDA2RUEsIDB4MERENCwgMHgxQkE4LCAweDM3NTAsIDB4NkVBMCwgMHhERDQwLCAweEQ4NDksIDB4QTBCMywgMHg1MTQ3LCAweEEyOEUsIDB4NTUzRCwgMHhBQTdBLCAweDQ0RDUsIDB4NkY0NSwgMHhERThBLCAweEFEMzUsIDB4NEE0QiwgMHg5NDk2LCAweDM5MEQsIDB4NzIxQSwgMHhFQjIzLCAweEM2NjcsIDB4OUNFRiwgMHgyOUZGLCAweDUzRkUsIDB4QTdGQywgMHg1RkQ5LCAweDQ3RDMsIDB4OEZBNiwgMHgwRjZELCAweDFFREEsIDB4M0RCNCwgMHg3QjY4LCAweEY2RDAsIDB4Qjg2MSwgMHg2MEUzLCAweEMxQzYsIDB4OTNBRCwgMHgzNzdCLCAweDZFRjYsIDB4RERFQywgMHg0NUEwLCAweDhCNDAsIDB4MDZBMSwgMHgwRDQyLCAweDFBODQsIDB4MzUwOCwgMHg2QTEwLCAweEFBNTEsIDB4NDQ4MywgMHg4OTA2LCAweDAyMkQsIDB4MDQ1QSwgMHgwOEI0LCAweDExNjgsIDB4NzZCNCwgMHhFRDY4LCAweENBRjEsIDB4ODVDMywgMHgxQkE3LCAweDM3NEUsIDB4NkU5QywgMHgzNzMwLCAweDZFNjAsIDB4RENDMCwgMHhBOUExLCAweDQzNjMsIDB4ODZDNiwgMHgxREFELCAweDMzMzEsIDB4NjY2MiwgMHhDQ0M0LCAweDg5QTksIDB4MDM3MywgMHgwNkU2LCAweDBEQ0MsIDB4MTAyMSwgMHgyMDQyLCAweDQwODQsIDB4ODEwOCwgMHgxMjMxLCAweDI0NjIsIDB4NDhDNF07XG5cdHZhciBSb3IgPSBmdW5jdGlvbihCeXRlKSB7IHJldHVybiAoKEJ5dGUvMikgfCAoQnl0ZSoxMjgpKSAmIDB4RkY7IH07XG5cdHZhciBYb3JSb3IgPSBmdW5jdGlvbihieXRlMSwgYnl0ZTIpIHsgcmV0dXJuIFJvcihieXRlMSBeIGJ5dGUyKTsgfTtcblx0dmFyIENyZWF0ZVhvcktleV9NZXRob2QxID0gZnVuY3Rpb24oUGFzc3dvcmQpIHtcblx0XHR2YXIgWG9yS2V5ID0gSW5pdGlhbENvZGVbUGFzc3dvcmQubGVuZ3RoIC0gMV07XG5cdFx0dmFyIEN1cnJlbnRFbGVtZW50ID0gMHg2ODtcblx0XHRmb3IodmFyIGkgPSBQYXNzd29yZC5sZW5ndGgtMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdHZhciBDaGFyID0gUGFzc3dvcmRbaV07XG5cdFx0XHRmb3IodmFyIGogPSAwOyBqICE9IDc7ICsraikge1xuXHRcdFx0XHRpZihDaGFyICYgMHg0MCkgWG9yS2V5IF49IFhvck1hdHJpeFtDdXJyZW50RWxlbWVudF07XG5cdFx0XHRcdENoYXIgKj0gMjsgLS1DdXJyZW50RWxlbWVudDtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIFhvcktleTtcblx0fTtcblx0cmV0dXJuIGZ1bmN0aW9uKHBhc3N3b3JkLyo6c3RyaW5nKi8pIHtcblx0XHR2YXIgUGFzc3dvcmQgPSBfSlMyQU5TSShwYXNzd29yZCk7XG5cdFx0dmFyIFhvcktleSA9IENyZWF0ZVhvcktleV9NZXRob2QxKFBhc3N3b3JkKTtcblx0XHR2YXIgSW5kZXggPSBQYXNzd29yZC5sZW5ndGg7XG5cdFx0dmFyIE9iZnVzY2F0aW9uQXJyYXkgPSBuZXdfcmF3X2J1ZigxNik7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSAxNjsgKytpKSBPYmZ1c2NhdGlvbkFycmF5W2ldID0gMHgwMDtcblx0XHR2YXIgVGVtcCwgUGFzc3dvcmRMYXN0Q2hhciwgUGFkSW5kZXg7XG5cdFx0aWYoKEluZGV4ICYgMSkgPT09IDEpIHtcblx0XHRcdFRlbXAgPSBYb3JLZXkgPj4gODtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhZEFycmF5WzBdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ICYgMHhGRjtcblx0XHRcdFBhc3N3b3JkTGFzdENoYXIgPSBQYXNzd29yZFtQYXNzd29yZC5sZW5ndGggLSAxXTtcblx0XHRcdE9iZnVzY2F0aW9uQXJyYXlbSW5kZXhdID0gWG9yUm9yKFBhc3N3b3JkTGFzdENoYXIsIFRlbXApO1xuXHRcdH1cblx0XHR3aGlsZShJbmRleCA+IDApIHtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHRUZW1wID0gWG9yS2V5ID4+IDg7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZFtJbmRleF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdFRlbXAgPSBYb3JLZXkgJiAweEZGO1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFzc3dvcmRbSW5kZXhdLCBUZW1wKTtcblx0XHR9XG5cdFx0SW5kZXggPSAxNTtcblx0XHRQYWRJbmRleCA9IDE1IC0gUGFzc3dvcmQubGVuZ3RoO1xuXHRcdHdoaWxlKFBhZEluZGV4ID4gMCkge1xuXHRcdFx0VGVtcCA9IFhvcktleSA+PiA4O1xuXHRcdFx0T2JmdXNjYXRpb25BcnJheVtJbmRleF0gPSBYb3JSb3IoUGFkQXJyYXlbUGFkSW5kZXhdLCBUZW1wKTtcblx0XHRcdC0tSW5kZXg7XG5cdFx0XHQtLVBhZEluZGV4O1xuXHRcdFx0VGVtcCA9IFhvcktleSAmIDB4RkY7XG5cdFx0XHRPYmZ1c2NhdGlvbkFycmF5W0luZGV4XSA9IFhvclJvcihQYXNzd29yZFtJbmRleF0sIFRlbXApO1xuXHRcdFx0LS1JbmRleDtcblx0XHRcdC0tUGFkSW5kZXg7XG5cdFx0fVxuXHRcdHJldHVybiBPYmZ1c2NhdGlvbkFycmF5O1xuXHR9O1xufSkoKTtcblxuLyogW01TLU9GRkNSWVBUT10gMi4zLjcuMyBCaW5hcnkgRG9jdW1lbnQgWE9SIERhdGEgVHJhbnNmb3JtYXRpb24gTWV0aG9kIDEgKi9cbnZhciBjcnlwdG9fRGVjcnlwdERhdGFfTWV0aG9kMSA9IGZ1bmN0aW9uKHBhc3N3b3JkLyo6c3RyaW5nKi8sIERhdGEsIFhvckFycmF5SW5kZXgsIFhvckFycmF5LCBPKSB7XG5cdC8qIElmIFhvckFycmF5IGlzIHNldCwgdXNlIGl0OyBpZiBPIGlzIG5vdCBzZXQsIG1ha2UgY2hhbmdlcyBpbi1wbGFjZSAqL1xuXHRpZighTykgTyA9IERhdGE7XG5cdGlmKCFYb3JBcnJheSkgWG9yQXJyYXkgPSBjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMShwYXNzd29yZCk7XG5cdHZhciBJbmRleCwgVmFsdWU7XG5cdGZvcihJbmRleCA9IDA7IEluZGV4ICE9IERhdGEubGVuZ3RoOyArK0luZGV4KSB7XG5cdFx0VmFsdWUgPSBEYXRhW0luZGV4XTtcblx0XHRWYWx1ZSBePSBYb3JBcnJheVtYb3JBcnJheUluZGV4XTtcblx0XHRWYWx1ZSA9ICgoVmFsdWU+PjUpIHwgKFZhbHVlPDwzKSkgJiAweEZGO1xuXHRcdE9bSW5kZXhdID0gVmFsdWU7XG5cdFx0KytYb3JBcnJheUluZGV4O1xuXHR9XG5cdHJldHVybiBbTywgWG9yQXJyYXlJbmRleCwgWG9yQXJyYXldO1xufTtcblxudmFyIGNyeXB0b19NYWtlWG9yRGVjcnlwdG9yID0gZnVuY3Rpb24ocGFzc3dvcmQvKjpzdHJpbmcqLykge1xuXHR2YXIgWG9yQXJyYXlJbmRleCA9IDAsIFhvckFycmF5ID0gY3J5cHRvX0NyZWF0ZVhvckFycmF5X01ldGhvZDEocGFzc3dvcmQpO1xuXHRyZXR1cm4gZnVuY3Rpb24oRGF0YSkge1xuXHRcdHZhciBPID0gY3J5cHRvX0RlY3J5cHREYXRhX01ldGhvZDEoXCJcIiwgRGF0YSwgWG9yQXJyYXlJbmRleCwgWG9yQXJyYXkpO1xuXHRcdFhvckFycmF5SW5kZXggPSBPWzFdO1xuXHRcdHJldHVybiBPWzBdO1xuXHR9O1xufTtcblxuLyogMi41LjM0MyAqL1xuZnVuY3Rpb24gcGFyc2VfWE9ST2JmdXNjYXRpb24oYmxvYiwgbGVuZ3RoLCBvcHRzLCBvdXQpIHtcblx0dmFyIG8gPSAoeyBrZXk6IHBhcnNldWludDE2KGJsb2IpLCB2ZXJpZmljYXRpb25CeXRlczogcGFyc2V1aW50MTYoYmxvYikgfS8qOmFueSovKTtcblx0aWYob3B0cy5wYXNzd29yZCkgby52ZXJpZmllciA9IGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEob3B0cy5wYXNzd29yZCk7XG5cdG91dC52YWxpZCA9IG8udmVyaWZpY2F0aW9uQnl0ZXMgPT09IG8udmVyaWZpZXI7XG5cdGlmKG91dC52YWxpZCkgb3V0Lmluc2l0dSA9IGNyeXB0b19NYWtlWG9yRGVjcnlwdG9yKG9wdHMucGFzc3dvcmQpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogMi40LjExNyAqL1xuZnVuY3Rpb24gcGFyc2VfRmlsZVBhc3NIZWFkZXIoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9vKSB7XG5cdHZhciBvID0gb28gfHwge307IG8uSW5mbyA9IGJsb2IucmVhZF9zaGlmdCgyKTsgYmxvYi5sIC09IDI7XG5cdGlmKG8uSW5mbyA9PT0gMSkgby5EYXRhID0gcGFyc2VfUkM0SGVhZGVyKGJsb2IsIGxlbmd0aCk7XG5cdGVsc2Ugby5EYXRhID0gcGFyc2VfUkM0Q3J5cHRvSGVhZGVyKGJsb2IsIGxlbmd0aCk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfRmlsZVBhc3MoYmxvYiwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIG8gPSAoeyBUeXBlOiBvcHRzLmJpZmYgPj0gOCA/IGJsb2IucmVhZF9zaGlmdCgyKSA6IDAgfS8qOmFueSovKTsgLyogd0VuY3J5cHRpb25UeXBlICovXG5cdGlmKG8uVHlwZSkgcGFyc2VfRmlsZVBhc3NIZWFkZXIoYmxvYiwgbGVuZ3RoLTIsIG8pO1xuXHRlbHNlIHBhcnNlX1hPUk9iZnVzY2F0aW9uKGJsb2IsIG9wdHMuYmlmZiA+PSA4ID8gbGVuZ3RoIDogbGVuZ3RoIC0gMiwgb3B0cywgbyk7XG5cdHJldHVybiBvO1xufVxuXG5cbnZhciBSVEYgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCkge1xuXHRmdW5jdGlvbiBydGZfdG9fc2hlZXQoZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdFx0Y2FzZSAnYmFzZTY0JzogcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoQmFzZTY0X2RlY29kZShkKSwgb3B0cyk7XG5cdFx0XHRjYXNlICdiaW5hcnknOiByZXR1cm4gcnRmX3RvX3NoZWV0X3N0cihkLCBvcHRzKTtcblx0XHRcdGNhc2UgJ2J1ZmZlcic6IHJldHVybiBydGZfdG9fc2hlZXRfc3RyKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGQpID8gZC50b1N0cmluZygnYmluYXJ5JykgOiBhMnMoZCksIG9wdHMpO1xuXHRcdFx0Y2FzZSAnYXJyYXknOiAgcmV0dXJuIHJ0Zl90b19zaGVldF9zdHIoY2Myc3RyKGQpLCBvcHRzKTtcblx0XHR9XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xuXHR9XG5cblx0LyogVE9ETzogdGhpcyBpcyBhIHN0dWIgKi9cblx0ZnVuY3Rpb24gcnRmX3RvX3NoZWV0X3N0cihzdHIvKjpzdHJpbmcqLywgb3B0cykvKjpXb3Jrc2hlZXQqLyB7XG5cdFx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRcdHZhciB3cy8qOldvcmtzaGVldCovID0gby5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblxuXHRcdHZhciByb3dzID0gc3RyLm1hdGNoKC9cXFxcdHJvd2QuKj9cXFxccm93XFxiL2cpO1xuXHRcdGlmKCFyb3dzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiUlRGIG1pc3NpbmcgdGFibGVcIik7XG5cdFx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7czoge2M6MCwgcjowfSwgZToge2M6MCwgcjpyb3dzLmxlbmd0aCAtIDF9fS8qOmFueSovKTtcblx0XHRyb3dzLmZvckVhY2goZnVuY3Rpb24ocm93dGYsIFIpIHtcblx0XHRcdGlmKEFycmF5LmlzQXJyYXkod3MpKSB3c1tSXSA9IFtdO1xuXHRcdFx0dmFyIHJ0ZnJlID0gL1xcXFxcXHcrXFxiL2c7XG5cdFx0XHR2YXIgbGFzdF9pbmRleCA9IDA7XG5cdFx0XHR2YXIgcmVzO1xuXHRcdFx0dmFyIEMgPSAtMTtcblx0XHRcdHdoaWxlKChyZXMgPSBydGZyZS5leGVjKHJvd3RmKSkpIHtcblx0XHRcdFx0c3dpdGNoKHJlc1swXSkge1xuXHRcdFx0XHRcdGNhc2UgXCJcXFxcY2VsbFwiOlxuXHRcdFx0XHRcdFx0dmFyIGRhdGEgPSByb3d0Zi5zbGljZShsYXN0X2luZGV4LCBydGZyZS5sYXN0SW5kZXggLSByZXNbMF0ubGVuZ3RoKTtcblx0XHRcdFx0XHRcdGlmKGRhdGFbMF0gPT0gXCIgXCIpIGRhdGEgPSBkYXRhLnNsaWNlKDEpO1xuXHRcdFx0XHRcdFx0KytDO1xuXHRcdFx0XHRcdFx0aWYoZGF0YS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0Ly8gVE9ETzogdmFsdWUgcGFyc2luZywgaW5jbHVkaW5nIGNvZGVwYWdlIGFkanVzdG1lbnRzXG5cdFx0XHRcdFx0XHRcdHZhciBjZWxsID0ge3Y6IGRhdGEsIHQ6XCJzXCJ9O1xuXHRcdFx0XHRcdFx0XHRpZihBcnJheS5pc0FycmF5KHdzKSkgd3NbUl1bQ10gPSBjZWxsO1xuXHRcdFx0XHRcdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtyOlIsIGM6Q30pXSA9IGNlbGw7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRsYXN0X2luZGV4ID0gcnRmcmUubGFzdEluZGV4O1xuXHRcdFx0fVxuXHRcdFx0aWYoQyA+IHJhbmdlLmUuYykgcmFuZ2UuZS5jID0gQztcblx0XHR9KTtcblx0XHR3c1snIXJlZiddID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRyZXR1cm4gd3M7XG5cdH1cblxuXHRmdW5jdGlvbiBydGZfdG9fd29ya2Jvb2soZC8qOlJhd0RhdGEqLywgb3B0cykvKjpXb3JrYm9vayovIHsgcmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHJ0Zl90b19zaGVldChkLCBvcHRzKSwgb3B0cyk7IH1cblxuXHQvKiBUT0RPOiB0aGlzIGlzIGEgc3R1YiAqL1xuXHRmdW5jdGlvbiBzaGVldF90b19ydGYod3MvKjpXb3Jrc2hlZXQqLy8qOjosIG9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdFx0dmFyIG8gPSBbXCJ7XFxcXHJ0ZjFcXFxcYW5zaVwiXTtcblx0XHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pLCBjZWxsLyo6Q2VsbCovO1xuXHRcdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRcdGZvcih2YXIgUiA9IHIucy5yOyBSIDw9IHIuZS5yOyArK1IpIHtcblx0XHRcdG8ucHVzaChcIlxcXFx0cm93ZFxcXFx0cmF1dG9maXQxXCIpO1xuXHRcdFx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgby5wdXNoKFwiXFxcXGNlbGx4XCIgKyAoQysxKSk7XG5cdFx0XHRvLnB1c2goXCJcXFxccGFyZFxcXFxpbnRibFwiKTtcblx0XHRcdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdFx0XHRjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbY29vcmRdO1xuXHRcdFx0XHRpZighY2VsbCB8fCBjZWxsLnYgPT0gbnVsbCAmJiAoIWNlbGwuZiB8fCBjZWxsLkYpKSBjb250aW51ZTtcblx0XHRcdFx0by5wdXNoKFwiIFwiICsgKGNlbGwudyB8fCAoZm9ybWF0X2NlbGwoY2VsbCksIGNlbGwudykpKTtcblx0XHRcdFx0by5wdXNoKFwiXFxcXGNlbGxcIik7XG5cdFx0XHR9XG5cdFx0XHRvLnB1c2goXCJcXFxccGFyZFxcXFxpbnRibFxcXFxyb3dcIik7XG5cdFx0fVxuXHRcdHJldHVybiBvLmpvaW4oXCJcIikgKyBcIn1cIjtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dG9fd29ya2Jvb2s6IHJ0Zl90b193b3JrYm9vayxcblx0XHR0b19zaGVldDogcnRmX3RvX3NoZWV0LFxuXHRcdGZyb21fc2hlZXQ6IHNoZWV0X3RvX3J0ZlxuXHR9O1xufSkoKTtcbmZ1bmN0aW9uIGhleDJSR0IoaCkge1xuXHR2YXIgbyA9IGguc2xpY2UoaFswXT09PVwiI1wiPzE6MCkuc2xpY2UoMCw2KTtcblx0cmV0dXJuIFtwYXJzZUludChvLnNsaWNlKDAsMiksMTYpLHBhcnNlSW50KG8uc2xpY2UoMiw0KSwxNikscGFyc2VJbnQoby5zbGljZSg0LDYpLDE2KV07XG59XG5mdW5jdGlvbiByZ2IySGV4KHJnYikge1xuXHRmb3IodmFyIGk9MCxvPTE7IGkhPTM7ICsraSkgbyA9IG8qMjU2ICsgKHJnYltpXT4yNTU/MjU1OnJnYltpXTwwPzA6cmdiW2ldKTtcblx0cmV0dXJuIG8udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkuc2xpY2UoMSk7XG59XG5cbmZ1bmN0aW9uIHJnYjJIU0wocmdiKSB7XG5cdHZhciBSID0gcmdiWzBdLzI1NSwgRyA9IHJnYlsxXS8yNTUsIEI9cmdiWzJdLzI1NTtcblx0dmFyIE0gPSBNYXRoLm1heChSLCBHLCBCKSwgbSA9IE1hdGgubWluKFIsIEcsIEIpLCBDID0gTSAtIG07XG5cdGlmKEMgPT09IDApIHJldHVybiBbMCwgMCwgUl07XG5cblx0dmFyIEg2ID0gMCwgUyA9IDAsIEwyID0gKE0gKyBtKTtcblx0UyA9IEMgLyAoTDIgPiAxID8gMiAtIEwyIDogTDIpO1xuXHRzd2l0Y2goTSl7XG5cdFx0Y2FzZSBSOiBINiA9ICgoRyAtIEIpIC8gQyArIDYpJTY7IGJyZWFrO1xuXHRcdGNhc2UgRzogSDYgPSAoKEIgLSBSKSAvIEMgKyAyKTsgYnJlYWs7XG5cdFx0Y2FzZSBCOiBINiA9ICgoUiAtIEcpIC8gQyArIDQpOyBicmVhaztcblx0fVxuXHRyZXR1cm4gW0g2IC8gNiwgUywgTDIgLyAyXTtcbn1cblxuZnVuY3Rpb24gaHNsMlJHQihoc2wpe1xuXHR2YXIgSCA9IGhzbFswXSwgUyA9IGhzbFsxXSwgTCA9IGhzbFsyXTtcblx0dmFyIEMgPSBTICogMiAqIChMIDwgMC41ID8gTCA6IDEgLSBMKSwgbSA9IEwgLSBDLzI7XG5cdHZhciByZ2IgPSBbbSxtLG1dLCBoNiA9IDYqSDtcblxuXHR2YXIgWDtcblx0aWYoUyAhPT0gMCkgc3dpdGNoKGg2fDApIHtcblx0XHRjYXNlIDA6IGNhc2UgNjogWCA9IEMgKiBoNjsgcmdiWzBdICs9IEM7IHJnYlsxXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDE6IFggPSBDICogKDIgLSBoNik7ICAgcmdiWzBdICs9IFg7IHJnYlsxXSArPSBDOyBicmVhaztcblx0XHRjYXNlIDI6IFggPSBDICogKGg2IC0gMik7ICAgcmdiWzFdICs9IEM7IHJnYlsyXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDM6IFggPSBDICogKDQgLSBoNik7ICAgcmdiWzFdICs9IFg7IHJnYlsyXSArPSBDOyBicmVhaztcblx0XHRjYXNlIDQ6IFggPSBDICogKGg2IC0gNCk7ICAgcmdiWzJdICs9IEM7IHJnYlswXSArPSBYOyBicmVhaztcblx0XHRjYXNlIDU6IFggPSBDICogKDYgLSBoNik7ICAgcmdiWzJdICs9IFg7IHJnYlswXSArPSBDOyBicmVhaztcblx0fVxuXHRmb3IodmFyIGkgPSAwOyBpICE9IDM7ICsraSkgcmdiW2ldID0gTWF0aC5yb3VuZChyZ2JbaV0qMjU1KTtcblx0cmV0dXJuIHJnYjtcbn1cblxuLyogMTguOC4zIGJnQ29sb3IgdGludCBhbGdvcml0aG0gKi9cbmZ1bmN0aW9uIHJnYl90aW50KGhleCwgdGludCkge1xuXHRpZih0aW50ID09PSAwKSByZXR1cm4gaGV4O1xuXHR2YXIgaHNsID0gcmdiMkhTTChoZXgyUkdCKGhleCkpO1xuXHRpZiAodGludCA8IDApIGhzbFsyXSA9IGhzbFsyXSAqICgxICsgdGludCk7XG5cdGVsc2UgaHNsWzJdID0gMSAtICgxIC0gaHNsWzJdKSAqICgxIC0gdGludCk7XG5cdHJldHVybiByZ2IySGV4KGhzbDJSR0IoaHNsKSk7XG59XG5cbi8qIDE4LjMuMS4xMyB3aWR0aCBjYWxjdWxhdGlvbnMgKi9cbi8qIFtNUy1PSTI5NTAwXSAyLjEuNTk1IENvbHVtbiBXaWR0aCAmIEZvcm1hdHRpbmcgKi9cbnZhciBERUZfTURXID0gNiwgTUFYX01EVyA9IDE1LCBNSU5fTURXID0gMSwgTURXID0gREVGX01EVztcbmZ1bmN0aW9uIHdpZHRoMnB4KHdpZHRoKSB7IHJldHVybiBNYXRoLmZsb29yKCggd2lkdGggKyAoTWF0aC5yb3VuZCgxMjgvTURXKSkvMjU2ICkqIE1EVyApOyB9XG5mdW5jdGlvbiBweDJjaGFyKHB4KSB7IHJldHVybiAoTWF0aC5mbG9vcigocHggLSA1KS9NRFcgKiAxMDAgKyAwLjUpKS8xMDA7IH1cbmZ1bmN0aW9uIGNoYXIyd2lkdGgoY2hyKSB7IHJldHVybiAoTWF0aC5yb3VuZCgoY2hyICogTURXICsgNSkvTURXKjI1NikpLzI1NjsgfVxuLy9mdW5jdGlvbiBweDJjaGFyXyhweCkgeyByZXR1cm4gKCgocHggLSA1KS9NRFcgKiAxMDAgKyAwLjUpKS8xMDA7IH1cbi8vZnVuY3Rpb24gY2hhcjJ3aWR0aF8oY2hyKSB7IHJldHVybiAoKChjaHIgKiBNRFcgKyA1KS9NRFcqMjU2KSkvMjU2OyB9XG5mdW5jdGlvbiBjeWNsZV93aWR0aChjb2xsdykgeyByZXR1cm4gY2hhcjJ3aWR0aChweDJjaGFyKHdpZHRoMnB4KGNvbGx3KSkpOyB9XG4vKiBYTFNYL1hMU0IvWExTIHNwZWNpZnkgd2lkdGggaW4gdW5pdHMgb2YgTURXICovXG5mdW5jdGlvbiBmaW5kX21kd19jb2x3KGNvbGx3KSB7XG5cdHZhciBkZWx0YSA9IE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKSwgX01EVyA9IE1EVztcblx0aWYoZGVsdGEgPiAwLjAwNSkgZm9yKE1EVz1NSU5fTURXOyBNRFc8TUFYX01EVzsgKytNRFcpIGlmKE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKSA8PSBkZWx0YSkgeyBkZWx0YSA9IE1hdGguYWJzKGNvbGx3IC0gY3ljbGVfd2lkdGgoY29sbHcpKTsgX01EVyA9IE1EVzsgfVxuXHRNRFcgPSBfTURXO1xufVxuLyogWExNTCBzcGVjaWZpZXMgd2lkdGggaW4gdGVybXMgb2YgcGl4ZWxzICovXG4vKmZ1bmN0aW9uIGZpbmRfbWR3X3dweCh3cHgpIHtcblx0dmFyIGRlbHRhID0gSW5maW5pdHksIGd1ZXNzID0gMCwgX01EVyA9IE1JTl9NRFc7XG5cdGZvcihNRFc9TUlOX01EVzsgTURXPE1BWF9NRFc7ICsrTURXKSB7XG5cdFx0Z3Vlc3MgPSBjaGFyMndpZHRoXyhweDJjaGFyXyh3cHgpKSoyNTY7XG5cdFx0Z3Vlc3MgPSAoZ3Vlc3MpICUgMTtcblx0XHRpZihndWVzcyA+IDAuNSkgZ3Vlc3MtLTtcblx0XHRpZihNYXRoLmFicyhndWVzcykgPCBkZWx0YSkgeyBkZWx0YSA9IE1hdGguYWJzKGd1ZXNzKTsgX01EVyA9IE1EVzsgfVxuXHR9XG5cdE1EVyA9IF9NRFc7XG59Ki9cblxuZnVuY3Rpb24gcHJvY2Vzc19jb2woY29sbC8qOkNvbEluZm8qLykge1xuXHRpZihjb2xsLndpZHRoKSB7XG5cdFx0Y29sbC53cHggPSB3aWR0aDJweChjb2xsLndpZHRoKTtcblx0XHRjb2xsLndjaCA9IHB4MmNoYXIoY29sbC53cHgpO1xuXHRcdGNvbGwuTURXID0gTURXO1xuXHR9IGVsc2UgaWYoY29sbC53cHgpIHtcblx0XHRjb2xsLndjaCA9IHB4MmNoYXIoY29sbC53cHgpO1xuXHRcdGNvbGwud2lkdGggPSBjaGFyMndpZHRoKGNvbGwud2NoKTtcblx0XHRjb2xsLk1EVyA9IE1EVztcblx0fSBlbHNlIGlmKHR5cGVvZiBjb2xsLndjaCA9PSAnbnVtYmVyJykge1xuXHRcdGNvbGwud2lkdGggPSBjaGFyMndpZHRoKGNvbGwud2NoKTtcblx0XHRjb2xsLndweCA9IHdpZHRoMnB4KGNvbGwud2lkdGgpO1xuXHRcdGNvbGwuTURXID0gTURXO1xuXHR9XG5cdGlmKGNvbGwuY3VzdG9tV2lkdGgpIGRlbGV0ZSBjb2xsLmN1c3RvbVdpZHRoO1xufVxuXG52YXIgREVGX1BQSSA9IDk2LCBQUEkgPSBERUZfUFBJO1xuZnVuY3Rpb24gcHgycHQocHgpIHsgcmV0dXJuIHB4ICogOTYgLyBQUEk7IH1cbmZ1bmN0aW9uIHB0MnB4KHB0KSB7IHJldHVybiBwdCAqIFBQSSAvIDk2OyB9XG5cbi8qIFtNUy1FWFNQWE1MM10gMi40LjU0IFNUX2VubVBhdHRlcm4gKi9cbnZhciBYTE1MUGF0dGVyblR5cGVNYXAgPSB7XG5cdFwiTm9uZVwiOiBcIm5vbmVcIixcblx0XCJTb2xpZFwiOiBcInNvbGlkXCIsXG5cdFwiR3JheTUwXCI6IFwibWVkaXVtR3JheVwiLFxuXHRcIkdyYXk3NVwiOiBcImRhcmtHcmF5XCIsXG5cdFwiR3JheTI1XCI6IFwibGlnaHRHcmF5XCIsXG5cdFwiSG9yelN0cmlwZVwiOiBcImRhcmtIb3Jpem9udGFsXCIsXG5cdFwiVmVydFN0cmlwZVwiOiBcImRhcmtWZXJ0aWNhbFwiLFxuXHRcIlJldmVyc2VEaWFnU3RyaXBlXCI6IFwiZGFya0Rvd25cIixcblx0XCJEaWFnU3RyaXBlXCI6IFwiZGFya1VwXCIsXG5cdFwiRGlhZ0Nyb3NzXCI6IFwiZGFya0dyaWRcIixcblx0XCJUaGlja0RpYWdDcm9zc1wiOiBcImRhcmtUcmVsbGlzXCIsXG5cdFwiVGhpbkhvcnpTdHJpcGVcIjogXCJsaWdodEhvcml6b250YWxcIixcblx0XCJUaGluVmVydFN0cmlwZVwiOiBcImxpZ2h0VmVydGljYWxcIixcblx0XCJUaGluUmV2ZXJzZURpYWdTdHJpcGVcIjogXCJsaWdodERvd25cIixcblx0XCJUaGluSG9yekNyb3NzXCI6IFwibGlnaHRHcmlkXCJcbn07XG5cbi8qIDE4LjguNSBib3JkZXJzIENUX0JvcmRlcnMgKi9cbmZ1bmN0aW9uIHBhcnNlX2JvcmRlcnModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpIHtcblx0c3R5bGVzLkJvcmRlcnMgPSBbXTtcblx0dmFyIGJvcmRlciA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGJvcmRlcnMnOiBjYXNlICc8Ym9yZGVycz4nOiBjYXNlICc8L2JvcmRlcnM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNCBib3JkZXIgQ1RfQm9yZGVyICovXG5cdFx0XHRjYXNlICc8Ym9yZGVyJzogY2FzZSAnPGJvcmRlcj4nOiBjYXNlICc8Ym9yZGVyLz4nOlxuXHRcdFx0XHRib3JkZXIgPSAvKjo6KCove30vKjo6IDphbnkpKi87XG5cdFx0XHRcdGlmKHkuZGlhZ29uYWxVcCkgYm9yZGVyLmRpYWdvbmFsVXAgPSBwYXJzZXhtbGJvb2woeS5kaWFnb25hbFVwKTtcblx0XHRcdFx0aWYoeS5kaWFnb25hbERvd24pIGJvcmRlci5kaWFnb25hbERvd24gPSBwYXJzZXhtbGJvb2woeS5kaWFnb25hbERvd24pO1xuXHRcdFx0XHRzdHlsZXMuQm9yZGVycy5wdXNoKGJvcmRlcik7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9ib3JkZXI+JzogYnJlYWs7XG5cblx0XHRcdC8qIG5vdGU6IG5vdCBpbiBzcGVjLCBhcHBlYXJzIHRvIGJlIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8bGVmdC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8bGVmdCc6IGNhc2UgJzxsZWZ0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9sZWZ0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBub3QgaW4gc3BlYywgYXBwZWFycyB0byBiZSBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPHJpZ2h0Lz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxyaWdodCc6IGNhc2UgJzxyaWdodD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvcmlnaHQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNDMgdG9wIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8dG9wLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzx0b3AnOiBjYXNlICc8dG9wPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90b3A+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNiBib3R0b20gQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxib3R0b20vPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGJvdHRvbSc6IGNhc2UgJzxib3R0b20+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2JvdHRvbT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xMyBkaWFnb25hbCBDVF9Cb3JkZXJQciAqL1xuXHRcdFx0Y2FzZSAnPGRpYWdvbmFsJzogY2FzZSAnPGRpYWdvbmFsPic6IGNhc2UgJzxkaWFnb25hbC8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2RpYWdvbmFsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI1IGhvcml6b250YWwgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxob3Jpem9udGFsJzogY2FzZSAnPGhvcml6b250YWw+JzogY2FzZSAnPGhvcml6b250YWwvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9ob3Jpem9udGFsPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjQ0IHZlcnRpY2FsIENUX0JvcmRlclByICovXG5cdFx0XHRjYXNlICc8dmVydGljYWwnOiBjYXNlICc8dmVydGljYWw+JzogY2FzZSAnPHZlcnRpY2FsLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvdmVydGljYWw+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzcgc3RhcnQgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxzdGFydCc6IGNhc2UgJzxzdGFydD4nOiBjYXNlICc8c3RhcnQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9zdGFydD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xNiBlbmQgQ1RfQm9yZGVyUHIgKi9cblx0XHRcdGNhc2UgJzxlbmQnOiBjYXNlICc8ZW5kPic6IGNhc2UgJzxlbmQvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9lbmQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguPyBjb2xvciBDVF9Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGNvbG9yJzogY2FzZSAnPGNvbG9yPic6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbG9yLz4nOiBjYXNlICc8L2NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gYm9yZGVycycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSk7XG59XG5cbi8qIDE4LjguMjEgZmlsbHMgQ1RfRmlsbHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2ZpbGxzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKSB7XG5cdHN0eWxlcy5GaWxscyA9IFtdO1xuXHR2YXIgZmlsbCA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHQodFswXS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaChzdHJpcF9ucyh5WzBdKSkge1xuXHRcdFx0Y2FzZSAnPGZpbGxzJzogY2FzZSAnPGZpbGxzPic6IGNhc2UgJzwvZmlsbHM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMjAgZmlsbCBDVF9GaWxsICovXG5cdFx0XHRjYXNlICc8ZmlsbD4nOiBjYXNlICc8ZmlsbCc6IGNhc2UgJzxmaWxsLz4nOlxuXHRcdFx0XHRmaWxsID0ge307IHN0eWxlcy5GaWxscy5wdXNoKGZpbGwpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZmlsbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yNCBncmFkaWVudEZpbGwgQ1RfR3JhZGllbnRGaWxsICovXG5cdFx0XHRjYXNlICc8Z3JhZGllbnRGaWxsPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGdyYWRpZW50RmlsbCc6XG5cdFx0XHRjYXNlICc8L2dyYWRpZW50RmlsbD4nOiBzdHlsZXMuRmlsbHMucHVzaChmaWxsKTsgZmlsbCA9IHt9OyBicmVhaztcblxuXHRcdFx0LyogMTguOC4zMiBwYXR0ZXJuRmlsbCBDVF9QYXR0ZXJuRmlsbCAqL1xuXHRcdFx0Y2FzZSAnPHBhdHRlcm5GaWxsJzogY2FzZSAnPHBhdHRlcm5GaWxsPic6XG5cdFx0XHRcdGlmKHkucGF0dGVyblR5cGUpIGZpbGwucGF0dGVyblR5cGUgPSB5LnBhdHRlcm5UeXBlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxwYXR0ZXJuRmlsbC8+JzogY2FzZSAnPC9wYXR0ZXJuRmlsbD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zIGJnQ29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxiZ0NvbG9yJzpcblx0XHRcdFx0aWYoIWZpbGwuYmdDb2xvcikgZmlsbC5iZ0NvbG9yID0ge307XG5cdFx0XHRcdGlmKHkuaW5kZXhlZCkgZmlsbC5iZ0NvbG9yLmluZGV4ZWQgPSBwYXJzZUludCh5LmluZGV4ZWQsIDEwKTtcblx0XHRcdFx0aWYoeS50aGVtZSkgZmlsbC5iZ0NvbG9yLnRoZW1lID0gcGFyc2VJbnQoeS50aGVtZSwgMTApO1xuXHRcdFx0XHRpZih5LnRpbnQpIGZpbGwuYmdDb2xvci50aW50ID0gcGFyc2VGbG9hdCh5LnRpbnQpO1xuXHRcdFx0XHQvKiBFeGNlbCB1c2VzIEFSR0Igc3RyaW5ncyAqL1xuXHRcdFx0XHRpZih5LnJnYikgZmlsbC5iZ0NvbG9yLnJnYiA9IHkucmdiLnNsaWNlKC02KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8YmdDb2xvci8+JzogY2FzZSAnPC9iZ0NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjE5IGZnQ29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxmZ0NvbG9yJzpcblx0XHRcdFx0aWYoIWZpbGwuZmdDb2xvcikgZmlsbC5mZ0NvbG9yID0ge307XG5cdFx0XHRcdGlmKHkudGhlbWUpIGZpbGwuZmdDb2xvci50aGVtZSA9IHBhcnNlSW50KHkudGhlbWUsIDEwKTtcblx0XHRcdFx0aWYoeS50aW50KSBmaWxsLmZnQ29sb3IudGludCA9IHBhcnNlRmxvYXQoeS50aW50KTtcblx0XHRcdFx0LyogRXhjZWwgdXNlcyBBUkdCIHN0cmluZ3MgKi9cblx0XHRcdFx0aWYoeS5yZ2IgIT0gbnVsbCkgZmlsbC5mZ0NvbG9yLnJnYiA9IHkucmdiLnNsaWNlKC02KTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8ZmdDb2xvci8+JzogY2FzZSAnPC9mZ0NvbG9yPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjM4IHN0b3AgQ1RfR3JhZGllbnRTdG9wICovXG5cdFx0XHRjYXNlICc8c3RvcCc6IGNhc2UgJzxzdG9wLz4nOiBicmVhaztcblx0XHRcdGNhc2UgJzwvc3RvcD4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4/IGNvbG9yIENUX0NvbG9yICovXG5cdFx0XHRjYXNlICc8Y29sb3InOiBjYXNlICc8Y29sb3IvPic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMCBleHRMc3QgQ1RfRXh0ZW5zaW9uTGlzdCA/ICovXG5cdFx0XHRjYXNlICc8ZXh0THN0JzogY2FzZSAnPGV4dExzdD4nOiBjYXNlICc8L2V4dExzdD4nOiBicmVhaztcblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDogaWYob3B0cyAmJiBvcHRzLldURikge1xuXHRcdFx0XHRpZighcGFzcykgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIGZpbGxzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMTguOC4yMyBmb250cyBDVF9Gb250cyAqL1xuZnVuY3Rpb24gcGFyc2VfZm9udHModCwgc3R5bGVzLCB0aGVtZXMsIG9wdHMpIHtcblx0c3R5bGVzLkZvbnRzID0gW107XG5cdHZhciBmb250ID0ge307XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8Zm9udHMnOiBjYXNlICc8Zm9udHM+JzogY2FzZSAnPC9mb250cz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4yMiBmb250IENUX0ZvbnQgKi9cblx0XHRcdGNhc2UgJzxmb250JzogY2FzZSAnPGZvbnQ+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8L2ZvbnQ+JzogY2FzZSAnPGZvbnQvPic6XG5cdFx0XHRcdHN0eWxlcy5Gb250cy5wdXNoKGZvbnQpO1xuXHRcdFx0XHRmb250ID0ge307XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI5IG5hbWUgQ1RfRm9udE5hbWUgKi9cblx0XHRcdGNhc2UgJzxuYW1lJzogaWYoeS52YWwpIGZvbnQubmFtZSA9IHV0ZjhyZWFkKHkudmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8bmFtZS8+JzogY2FzZSAnPC9uYW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjIgIGIgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8Yic6IGZvbnQuYm9sZCA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGIvPic6IGZvbnQuYm9sZCA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjI2IGkgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8aSc6IGZvbnQuaXRhbGljID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8aS8+JzogZm9udC5pdGFsaWMgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMyB1IENUX1VuZGVybGluZVByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8dSc6XG5cdFx0XHRcdHN3aXRjaCh5LnZhbCkge1xuXHRcdFx0XHRcdGNhc2UgXCJub25lXCI6IGZvbnQudW5kZXJsaW5lID0gMHgwMDsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBcInNpbmdsZVwiOiBmb250LnVuZGVybGluZSA9IDB4MDE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJkb3VibGVcIjogZm9udC51bmRlcmxpbmUgPSAweDAyOyBicmVhaztcblx0XHRcdFx0XHRjYXNlIFwic2luZ2xlQWNjb3VudGluZ1wiOiBmb250LnVuZGVybGluZSA9IDB4MjE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJkb3VibGVBY2NvdW50aW5nXCI6IGZvbnQudW5kZXJsaW5lID0gMHgyMjsgYnJlYWs7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRjYXNlICc8dS8+JzogZm9udC51bmRlcmxpbmUgPSAxOyBicmVhaztcblxuXHRcdFx0LyogMTguNC4xMCBzdHJpa2UgQ1RfQm9vbGVhblByb3BlcnR5ICovXG5cdFx0XHRjYXNlICc8c3RyaWtlJzogZm9udC5zdHJpa2UgPSB5LnZhbCA/IHBhcnNleG1sYm9vbCh5LnZhbCkgOiAxOyBicmVhaztcblx0XHRcdGNhc2UgJzxzdHJpa2UvPic6IGZvbnQuc3RyaWtlID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMiAgb3V0bGluZSBDVF9Cb29sZWFuUHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzxvdXRsaW5lJzogZm9udC5vdXRsaW5lID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8b3V0bGluZS8+JzogZm9udC5vdXRsaW5lID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMzYgc2hhZG93IENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPHNoYWRvdyc6IGZvbnQuc2hhZG93ID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c2hhZG93Lz4nOiBmb250LnNoYWRvdyA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjEyIGNvbmRlbnNlIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGNvbmRlbnNlJzogZm9udC5jb25kZW5zZSA9IHkudmFsID8gcGFyc2V4bWxib29sKHkudmFsKSA6IDE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGNvbmRlbnNlLz4nOiBmb250LmNvbmRlbnNlID0gMTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguMTcgZXh0ZW5kIENUX0Jvb2xlYW5Qcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGV4dGVuZCc6IGZvbnQuZXh0ZW5kID0geS52YWwgPyBwYXJzZXhtbGJvb2woeS52YWwpIDogMTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0ZW5kLz4nOiBmb250LmV4dGVuZCA9IDE7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjExIHN6IENUX0ZvbnRTaXplICovXG5cdFx0XHRjYXNlICc8c3onOiBpZih5LnZhbCkgZm9udC5zeiA9ICt5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8c3ovPic6IGNhc2UgJzwvc3o+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjQuMTQgdmVydEFsaWduIENUX1ZlcnRpY2FsQWxpZ25Gb250UHJvcGVydHkgKi9cblx0XHRcdGNhc2UgJzx2ZXJ0QWxpZ24nOiBpZih5LnZhbCkgZm9udC52ZXJ0QWxpZ24gPSB5LnZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlICc8dmVydEFsaWduLz4nOiBjYXNlICc8L3ZlcnRBbGlnbj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xOCBmYW1pbHkgQ1RfRm9udEZhbWlseSAqL1xuXHRcdFx0Y2FzZSAnPGZhbWlseSc6IGlmKHkudmFsKSBmb250LmZhbWlseSA9IHBhcnNlSW50KHkudmFsLDEwKTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8ZmFtaWx5Lz4nOiBjYXNlICc8L2ZhbWlseT4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4zNSBzY2hlbWUgQ1RfRm9udFNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAnPHNjaGVtZSc6IGlmKHkudmFsKSBmb250LnNjaGVtZSA9IHkudmFsOyBicmVhaztcblx0XHRcdGNhc2UgJzxzY2hlbWUvPic6IGNhc2UgJzwvc2NoZW1lPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC40LjEgY2hhcnNldCBDVF9JbnRQcm9wZXJ0eSAqL1xuXHRcdFx0Y2FzZSAnPGNoYXJzZXQnOlxuXHRcdFx0XHRpZih5LnZhbCA9PSAnMScpIGJyZWFrO1xuXHRcdFx0XHR5LmNvZGVwYWdlID0gQ1MyQ1BbcGFyc2VJbnQoeS52YWwsIDEwKV07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4/Lj8gY29sb3IgQ1RfQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxjb2xvcic6XG5cdFx0XHRcdGlmKCFmb250LmNvbG9yKSBmb250LmNvbG9yID0ge307XG5cdFx0XHRcdGlmKHkuYXV0bykgZm9udC5jb2xvci5hdXRvID0gcGFyc2V4bWxib29sKHkuYXV0byk7XG5cblx0XHRcdFx0aWYoeS5yZ2IpIGZvbnQuY29sb3IucmdiID0geS5yZ2Iuc2xpY2UoLTYpO1xuXHRcdFx0XHRlbHNlIGlmKHkuaW5kZXhlZCkge1xuXHRcdFx0XHRcdGZvbnQuY29sb3IuaW5kZXggPSBwYXJzZUludCh5LmluZGV4ZWQsIDEwKTtcblx0XHRcdFx0XHR2YXIgaWN2ID0gWExTSWN2W2ZvbnQuY29sb3IuaW5kZXhdO1xuXHRcdFx0XHRcdGlmKGZvbnQuY29sb3IuaW5kZXggPT0gODEpIGljdiA9IFhMU0ljdlsxXTtcblx0XHRcdFx0XHRpZighaWN2KSBpY3YgPSBYTFNJY3ZbMV07IC8vdGhyb3cgbmV3IEVycm9yKHgpOyAvLyBub3RlOiAyMDYgaXMgdmFsaWRcblx0XHRcdFx0XHRmb250LmNvbG9yLnJnYiA9IGljdlswXS50b1N0cmluZygxNikgKyBpY3ZbMV0udG9TdHJpbmcoMTYpICsgaWN2WzJdLnRvU3RyaW5nKDE2KTtcblx0XHRcdFx0fSBlbHNlIGlmKHkudGhlbWUpIHtcblx0XHRcdFx0XHRmb250LmNvbG9yLnRoZW1lID0gcGFyc2VJbnQoeS50aGVtZSwgMTApO1xuXHRcdFx0XHRcdGlmKHkudGludCkgZm9udC5jb2xvci50aW50ID0gcGFyc2VGbG9hdCh5LnRpbnQpO1xuXHRcdFx0XHRcdGlmKHkudGhlbWUgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lKSB7XG5cdFx0XHRcdFx0XHRmb250LmNvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtmb250LmNvbG9yLnRoZW1lXS5yZ2IsIGZvbnQuY29sb3IudGludCB8fCAwKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzxjb2xvci8+JzogY2FzZSAnPC9jb2xvcj4nOiBicmVhaztcblxuXHRcdFx0Lyogbm90ZTogc29tZXRpbWVzIG1jOkFsdGVybmF0ZUNvbnRlbnQgYXBwZWFycyBiYXJlICovXG5cdFx0XHRjYXNlICc8QWx0ZXJuYXRlQ29udGVudCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvQWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvZXh0Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB7XG5cdFx0XHRcdGlmKCFwYXNzKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gZm9udHMnKTtcblx0XHRcdH1cblx0XHR9XG5cdH0pO1xufVxuXG4vKiAxOC44LjMxIG51bUZtdHMgQ1RfTnVtRm10cyAqL1xuZnVuY3Rpb24gcGFyc2VfbnVtRm10cyh0LCBzdHlsZXMsIG9wdHMpIHtcblx0c3R5bGVzLk51bWJlckZtdCA9IFtdO1xuXHR2YXIgay8qQXJyYXk8bnVtYmVyPiovID0gKGtleXModGFibGVfZm10KS8qOmFueSovKTtcblx0Zm9yKHZhciBpPTA7IGkgPCBrLmxlbmd0aDsgKytpKSBzdHlsZXMuTnVtYmVyRm10W2tbaV1dID0gdGFibGVfZm10W2tbaV1dO1xuXHR2YXIgbSA9IHRbMF0ubWF0Y2godGFncmVnZXgpO1xuXHRpZighbSkgcmV0dXJuO1xuXHRmb3IoaT0wOyBpIDwgbS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcobVtpXSk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8bnVtRm10cyc6IGNhc2UgJzwvbnVtRm10cz4nOiBjYXNlICc8bnVtRm10cy8+JzogY2FzZSAnPG51bUZtdHM+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8bnVtRm10Jzoge1xuXHRcdFx0XHR2YXIgZj11bmVzY2FwZXhtbCh1dGY4cmVhZCh5LmZvcm1hdENvZGUpKSwgaj1wYXJzZUludCh5Lm51bUZtdElkLDEwKTtcblx0XHRcdFx0c3R5bGVzLk51bWJlckZtdFtqXSA9IGY7XG5cdFx0XHRcdGlmKGo+MCkge1xuXHRcdFx0XHRcdGlmKGogPiAweDE4OCkge1xuXHRcdFx0XHRcdFx0Zm9yKGogPSAweDE4ODsgaiA+IDB4M2M7IC0taikgaWYoc3R5bGVzLk51bWJlckZtdFtqXSA9PSBudWxsKSBicmVhaztcblx0XHRcdFx0XHRcdHN0eWxlcy5OdW1iZXJGbXRbal0gPSBmO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRTU0ZfbG9hZChmLGopO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9udW1GbXQ+JzogYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKCd1bnJlY29nbml6ZWQgJyArIHlbMF0gKyAnIGluIG51bUZtdHMnKTtcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfbnVtRm10cyhORi8qOntbbjpudW1iZXJ8c3RyaW5nXTpzdHJpbmd9Ki8vKjo6LCBvcHRzKi8pIHtcblx0dmFyIG8gPSBbXCI8bnVtRm10cz5cIl07XG5cdFtbNSw4XSxbMjMsMjZdLFs0MSw0NF0sWy8qNjMqLzUwLC8qNjZdLFsxNjQsKi8zOTJdXS5mb3JFYWNoKGZ1bmN0aW9uKHIpIHtcblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgb1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdudW1GbXQnLG51bGwse251bUZtdElkOmksZm9ybWF0Q29kZTplc2NhcGV4bWwoTkZbaV0pfSkpO1xuXHR9KTtcblx0aWYoby5sZW5ndGggPT09IDEpIHJldHVybiBcIlwiO1xuXHRvW28ubGVuZ3RoXSA9IChcIjwvbnVtRm10cz5cIik7XG5cdG9bMF0gPSB3cml0ZXh0YWcoJ251bUZtdHMnLCBudWxsLCB7IGNvdW50Om8ubGVuZ3RoLTIgfSkucmVwbGFjZShcIi8+XCIsIFwiPlwiKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogMTguOC4xMCBjZWxsWGZzIENUX0NlbGxYZnMgKi9cbnZhciBjZWxsWEZfdWludCA9IFsgXCJudW1GbXRJZFwiLCBcImZpbGxJZFwiLCBcImZvbnRJZFwiLCBcImJvcmRlcklkXCIsIFwieGZJZFwiIF07XG52YXIgY2VsbFhGX2Jvb2wgPSBbIFwiYXBwbHlBbGlnbm1lbnRcIiwgXCJhcHBseUJvcmRlclwiLCBcImFwcGx5RmlsbFwiLCBcImFwcGx5Rm9udFwiLCBcImFwcGx5TnVtYmVyRm9ybWF0XCIsIFwiYXBwbHlQcm90ZWN0aW9uXCIsIFwicGl2b3RCdXR0b25cIiwgXCJxdW90ZVByZWZpeFwiIF07XG5mdW5jdGlvbiBwYXJzZV9jZWxsWGZzKHQsIHN0eWxlcywgb3B0cykge1xuXHRzdHlsZXMuQ2VsbFhmID0gW107XG5cdHZhciB4Zjtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0KHRbMF0ubWF0Y2godGFncmVnZXgpfHxbXSkuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyh4KSwgaSA9IDA7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8Y2VsbFhmcyc6IGNhc2UgJzxjZWxsWGZzPic6IGNhc2UgJzxjZWxsWGZzLz4nOiBjYXNlICc8L2NlbGxYZnM+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjguNDUgeGYgQ1RfWGYgKi9cblx0XHRcdGNhc2UgJzx4Zic6IGNhc2UgJzx4Zi8+Jzpcblx0XHRcdFx0eGYgPSB5O1xuXHRcdFx0XHRkZWxldGUgeGZbMF07XG5cdFx0XHRcdGZvcihpID0gMDsgaSA8IGNlbGxYRl91aW50Lmxlbmd0aDsgKytpKSBpZih4ZltjZWxsWEZfdWludFtpXV0pXG5cdFx0XHRcdFx0eGZbY2VsbFhGX3VpbnRbaV1dID0gcGFyc2VJbnQoeGZbY2VsbFhGX3VpbnRbaV1dLCAxMCk7XG5cdFx0XHRcdGZvcihpID0gMDsgaSA8IGNlbGxYRl9ib29sLmxlbmd0aDsgKytpKSBpZih4ZltjZWxsWEZfYm9vbFtpXV0pXG5cdFx0XHRcdFx0eGZbY2VsbFhGX2Jvb2xbaV1dID0gcGFyc2V4bWxib29sKHhmW2NlbGxYRl9ib29sW2ldXSk7XG5cdFx0XHRcdGlmKHN0eWxlcy5OdW1iZXJGbXQgJiYgeGYubnVtRm10SWQgPiAweDE4OCkge1xuXHRcdFx0XHRcdGZvcihpID0gMHgxODg7IGkgPiAweDNjOyAtLWkpIGlmKHN0eWxlcy5OdW1iZXJGbXRbeGYubnVtRm10SWRdID09IHN0eWxlcy5OdW1iZXJGbXRbaV0pIHsgeGYubnVtRm10SWQgPSBpOyBicmVhazsgfVxuXHRcdFx0XHR9XG5cdFx0XHRcdHN0eWxlcy5DZWxsWGYucHVzaCh4Zik7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC94Zj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguOC4xIGFsaWdubWVudCBDVF9DZWxsQWxpZ25tZW50ICovXG5cdFx0XHRjYXNlICc8YWxpZ25tZW50JzogY2FzZSAnPGFsaWdubWVudC8+Jzpcblx0XHRcdFx0dmFyIGFsaWdubWVudCA9IHt9O1xuXHRcdFx0XHRpZih5LnZlcnRpY2FsKSBhbGlnbm1lbnQudmVydGljYWwgPSB5LnZlcnRpY2FsO1xuXHRcdFx0XHRpZih5Lmhvcml6b250YWwpIGFsaWdubWVudC5ob3Jpem9udGFsID0geS5ob3Jpem9udGFsO1xuXHRcdFx0XHRpZih5LnRleHRSb3RhdGlvbiAhPSBudWxsKSBhbGlnbm1lbnQudGV4dFJvdGF0aW9uID0geS50ZXh0Um90YXRpb247XG5cdFx0XHRcdGlmKHkuaW5kZW50KSBhbGlnbm1lbnQuaW5kZW50ID0geS5pbmRlbnQ7XG5cdFx0XHRcdGlmKHkud3JhcFRleHQpIGFsaWdubWVudC53cmFwVGV4dCA9IHBhcnNleG1sYm9vbCh5LndyYXBUZXh0KTtcblx0XHRcdFx0eGYuYWxpZ25tZW50ID0gYWxpZ25tZW50O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJzwvYWxpZ25tZW50Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC44LjMzIHByb3RlY3Rpb24gQ1RfQ2VsbFByb3RlY3Rpb24gKi9cblx0XHRcdGNhc2UgJzxwcm90ZWN0aW9uJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L3Byb3RlY3Rpb24+JzogY2FzZSAnPHByb3RlY3Rpb24vPic6IGJyZWFrO1xuXG5cdFx0XHQvKiBub3RlOiBzb21ldGltZXMgbWM6QWx0ZXJuYXRlQ29udGVudCBhcHBlYXJzIGJhcmUgKi9cblx0XHRcdGNhc2UgJzxBbHRlcm5hdGVDb250ZW50JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9BbHRlcm5hdGVDb250ZW50Pic6IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZXh0JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcyA9IGZhbHNlOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGlmKG9wdHMgJiYgb3B0cy5XVEYpIHtcblx0XHRcdFx0aWYoIXBhc3MpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiBjZWxsWGZzJyk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY2VsbFhmcyhjZWxsWGZzKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCdjZWxsWGZzJyxudWxsKSk7XG5cdGNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSAod3JpdGV4dGFnKCd4ZicsIG51bGwsIGMpKTtcblx0fSk7XG5cdG9bby5sZW5ndGhdID0gKFwiPC9jZWxsWGZzPlwiKTtcblx0aWYoby5sZW5ndGggPT09IDIpIHJldHVybiBcIlwiO1xuXHRvWzBdID0gd3JpdGV4dGFnKCdjZWxsWGZzJyxudWxsLCB7Y291bnQ6by5sZW5ndGgtMn0pLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuLyogMTguOCBTdHlsZXMgQ1RfU3R5bGVzaGVldCovXG52YXIgcGFyc2Vfc3R5X3htbD0gLyojX19QVVJFX18qLyhmdW5jdGlvbiBtYWtlX3BzdHl4KCkge1xudmFyIG51bUZtdFJlZ2V4ID0gLzwoPzpcXHcrOik/bnVtRm10cyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/bnVtRm10cz4vO1xudmFyIGNlbGxYZlJlZ2V4ID0gLzwoPzpcXHcrOik/Y2VsbFhmcyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/Y2VsbFhmcz4vO1xudmFyIGZpbGxzUmVnZXggPSAvPCg/Olxcdys6KT9maWxscyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/ZmlsbHM+LztcbnZhciBmb250c1JlZ2V4ID0gLzwoPzpcXHcrOik/Zm9udHMoW14+XSopPltcXFNcXHNdKj88XFwvKD86XFx3KzopP2ZvbnRzPi87XG52YXIgYm9yZGVyc1JlZ2V4ID0gLzwoPzpcXHcrOik/Ym9yZGVycyhbXj5dKik+W1xcU1xcc10qPzxcXC8oPzpcXHcrOik/Ym9yZGVycz4vO1xuXG5yZXR1cm4gZnVuY3Rpb24gcGFyc2Vfc3R5X3htbChkYXRhLCB0aGVtZXMsIG9wdHMpIHtcblx0dmFyIHN0eWxlcyA9IHt9O1xuXHRpZighZGF0YSkgcmV0dXJuIHN0eWxlcztcblx0ZGF0YSA9IGRhdGEucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9tZyxcIlwiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxcW10qXFxbW15cXF1dKlxcXT4vZ20sXCJcIik7XG5cdC8qIDE4LjguMzkgc3R5bGVTaGVldCBDVF9TdHlsZXNoZWV0ICovXG5cdHZhciB0O1xuXG5cdC8qIDE4LjguMzEgbnVtRm10cyBDVF9OdW1GbXRzID8gKi9cblx0aWYoKHQ9ZGF0YS5tYXRjaChudW1GbXRSZWdleCkpKSBwYXJzZV9udW1GbXRzKHQsIHN0eWxlcywgb3B0cyk7XG5cblx0LyogMTguOC4yMyBmb250cyBDVF9Gb250cyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goZm9udHNSZWdleCkpKSBwYXJzZV9mb250cyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cyk7XG5cblx0LyogMTguOC4yMSBmaWxscyBDVF9GaWxscyA/ICovXG5cdGlmKCh0PWRhdGEubWF0Y2goZmlsbHNSZWdleCkpKSBwYXJzZV9maWxscyh0LCBzdHlsZXMsIHRoZW1lcywgb3B0cyk7XG5cblx0LyogMTguOC41ICBib3JkZXJzIENUX0JvcmRlcnMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGJvcmRlcnNSZWdleCkpKSBwYXJzZV9ib3JkZXJzKHQsIHN0eWxlcywgdGhlbWVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjkgIGNlbGxTdHlsZVhmcyBDVF9DZWxsU3R5bGVYZnMgPyAqL1xuXHQvKiAxOC44LjggIGNlbGxTdHlsZXMgQ1RfQ2VsbFN0eWxlcyA/ICovXG5cblx0LyogMTguOC4xMCBjZWxsWGZzIENUX0NlbGxYZnMgPyAqL1xuXHRpZigodD1kYXRhLm1hdGNoKGNlbGxYZlJlZ2V4KSkpIHBhcnNlX2NlbGxYZnModCwgc3R5bGVzLCBvcHRzKTtcblxuXHQvKiAxOC44LjE1IGR4ZnMgQ1RfRHhmcyA/ICovXG5cdC8qIDE4LjguNDIgdGFibGVTdHlsZXMgQ1RfVGFibGVTdHlsZXMgPyAqL1xuXHQvKiAxOC44LjExIGNvbG9ycyBDVF9Db2xvcnMgPyAqL1xuXHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblxuXHRyZXR1cm4gc3R5bGVzO1xufTtcbn0pKCk7XG5cbmZ1bmN0aW9uIHdyaXRlX3N0eV94bWwod2IvKjpXb3JrYm9vayovLCBvcHRzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCdzdHlsZVNoZWV0JywgbnVsbCwge1xuXHRcdCd4bWxucyc6IFhNTE5TX21haW5bMF0sXG5cdFx0J3htbG5zOnZ0JzogWE1MTlMudnRcblx0fSldLCB3O1xuXHRpZih3Yi5TU0YgJiYgKHcgPSB3cml0ZV9udW1GbXRzKHdiLlNTRikpICE9IG51bGwpIG9bby5sZW5ndGhdID0gdztcblx0b1tvLmxlbmd0aF0gPSAoJzxmb250cyBjb3VudD1cIjFcIj48Zm9udD48c3ogdmFsPVwiMTJcIi8+PGNvbG9yIHRoZW1lPVwiMVwiLz48bmFtZSB2YWw9XCJDYWxpYnJpXCIvPjxmYW1pbHkgdmFsPVwiMlwiLz48c2NoZW1lIHZhbD1cIm1pbm9yXCIvPjwvZm9udD48L2ZvbnRzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGZpbGxzIGNvdW50PVwiMlwiPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT1cIm5vbmVcIi8+PC9maWxsPjxmaWxsPjxwYXR0ZXJuRmlsbCBwYXR0ZXJuVHlwZT1cImdyYXkxMjVcIi8+PC9maWxsPjwvZmlsbHM+Jyk7XG5cdG9bby5sZW5ndGhdID0gKCc8Ym9yZGVycyBjb3VudD1cIjFcIj48Ym9yZGVyPjxsZWZ0Lz48cmlnaHQvPjx0b3AvPjxib3R0b20vPjxkaWFnb25hbC8+PC9ib3JkZXI+PC9ib3JkZXJzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGNlbGxTdHlsZVhmcyBjb3VudD1cIjFcIj48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIi8+PC9jZWxsU3R5bGVYZnM+Jyk7XG5cdGlmKCh3ID0gd3JpdGVfY2VsbFhmcyhvcHRzLmNlbGxYZnMpKSkgb1tvLmxlbmd0aF0gPSAodyk7XG5cdG9bby5sZW5ndGhdID0gKCc8Y2VsbFN0eWxlcyBjb3VudD1cIjFcIj48Y2VsbFN0eWxlIG5hbWU9XCJOb3JtYWxcIiB4ZklkPVwiMFwiIGJ1aWx0aW5JZD1cIjBcIi8+PC9jZWxsU3R5bGVzPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPGR4ZnMgY291bnQ9XCIwXCIvPicpO1xuXHRvW28ubGVuZ3RoXSA9ICgnPHRhYmxlU3R5bGVzIGNvdW50PVwiMFwiIGRlZmF1bHRUYWJsZVN0eWxlPVwiVGFibGVTdHlsZU1lZGl1bTlcIiBkZWZhdWx0UGl2b3RTdHlsZT1cIlBpdm90U3R5bGVNZWRpdW00XCIvPicpO1xuXG5cdGlmKG8ubGVuZ3RoPjIpeyBvW28ubGVuZ3RoXSA9ICgnPC9zdHlsZVNoZWV0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjY1NyBCcnRGbXQgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZtdChkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgbnVtRm10SWQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdHZhciBzdEZtdENvZGUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSxsZW5ndGgtMik7XG5cdHJldHVybiBbbnVtRm10SWQsIHN0Rm10Q29kZV07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRGbXQoaS8qOm51bWJlciovLCBmLyo6c3RyaW5nKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDYgKyA0ICogZi5sZW5ndGgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGkpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoZiwgbyk7XG5cdHZhciBvdXQgPSAoby5sZW5ndGggPiBvLmwpID8gby5zbGljZSgwLCBvLmwpIDogbztcblx0aWYoby5sID09IG51bGwpIG8ubCA9IG8ubGVuZ3RoO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1OSBCcnRGb250IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEZvbnQoZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8sIG9wdHMpIHtcblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblxuXHRvdXQuc3ogPSBkYXRhLnJlYWRfc2hpZnQoMikgLyAyMDtcblxuXHR2YXIgZ3JiaXQgPSBwYXJzZV9Gb250RmxhZ3MoZGF0YSwgMiwgb3B0cyk7XG5cdGlmKGdyYml0LmZJdGFsaWMpIG91dC5pdGFsaWMgPSAxO1xuXHRpZihncmJpdC5mQ29uZGVuc2UpIG91dC5jb25kZW5zZSA9IDE7XG5cdGlmKGdyYml0LmZFeHRlbmQpIG91dC5leHRlbmQgPSAxO1xuXHRpZihncmJpdC5mU2hhZG93KSBvdXQuc2hhZG93ID0gMTtcblx0aWYoZ3JiaXQuZk91dGxpbmUpIG91dC5vdXRsaW5lID0gMTtcblx0aWYoZ3JiaXQuZlN0cmlrZW91dCkgb3V0LnN0cmlrZSA9IDE7XG5cblx0dmFyIGJscyA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0aWYoYmxzID09PSAweDAyQkMpIG91dC5ib2xkID0gMTtcblxuXHRzd2l0Y2goZGF0YS5yZWFkX3NoaWZ0KDIpKSB7XG5cdFx0LyogY2FzZSAwOiBvdXQudmVydEFsaWduID0gXCJiYXNlbGluZVwiOyBicmVhazsgKi9cblx0XHRjYXNlIDE6IG91dC52ZXJ0QWxpZ24gPSBcInN1cGVyc2NyaXB0XCI7IGJyZWFrO1xuXHRcdGNhc2UgMjogb3V0LnZlcnRBbGlnbiA9IFwic3Vic2NyaXB0XCI7IGJyZWFrO1xuXHR9XG5cblx0dmFyIHVuZGVybGluZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYodW5kZXJsaW5lICE9IDApIG91dC51bmRlcmxpbmUgPSB1bmRlcmxpbmU7XG5cblx0dmFyIGZhbWlseSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYoZmFtaWx5ID4gMCkgb3V0LmZhbWlseSA9IGZhbWlseTtcblxuXHR2YXIgYkNoYXJTZXQgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdGlmKGJDaGFyU2V0ID4gMCkgb3V0LmNoYXJzZXQgPSBiQ2hhclNldDtcblxuXHRkYXRhLmwrKztcblx0b3V0LmNvbG9yID0gcGFyc2VfQnJ0Q29sb3IoZGF0YSwgOCk7XG5cblx0c3dpdGNoKGRhdGEucmVhZF9zaGlmdCgxKSkge1xuXHRcdC8qIGNhc2UgMDogb3V0LnNjaGVtZSA9IFwibm9uZVwiOiBicmVhazsgKi9cblx0XHRjYXNlIDE6IG91dC5zY2hlbWUgPSBcIm1ham9yXCI7IGJyZWFrO1xuXHRcdGNhc2UgMjogb3V0LnNjaGVtZSA9IFwibWlub3JcIjsgYnJlYWs7XG5cdH1cblxuXHRvdXQubmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLCBsZW5ndGggLSAyMSk7XG5cblx0cmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEZvbnQoZm9udC8qOmFueSovLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigyNSs0KjMyKTtcblx0by53cml0ZV9zaGlmdCgyLCBmb250LnN6ICogMjApO1xuXHR3cml0ZV9Gb250RmxhZ3MoZm9udCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZm9udC5ib2xkID8gMHgwMkJDIDogMHgwMTkwKTtcblx0dmFyIHNzcyA9IDA7XG5cdGlmKGZvbnQudmVydEFsaWduID09IFwic3VwZXJzY3JpcHRcIikgc3NzID0gMTtcblx0ZWxzZSBpZihmb250LnZlcnRBbGlnbiA9PSBcInN1YnNjcmlwdFwiKSBzc3MgPSAyO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHNzcyk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC51bmRlcmxpbmUgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC5mYW1pbHkgfHwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZm9udC5jaGFyc2V0IHx8IDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHR3cml0ZV9CcnRDb2xvcihmb250LmNvbG9yLCBvKTtcblx0dmFyIHNjaGVtZSA9IDA7XG5cdGlmKGZvbnQuc2NoZW1lID09IFwibWFqb3JcIikgc2NoZW1lID0gMTtcblx0aWYoZm9udC5zY2hlbWUgPT0gXCJtaW5vclwiKSBzY2hlbWUgPSAyO1xuXHRvLndyaXRlX3NoaWZ0KDEsIHNjaGVtZSk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhmb250Lm5hbWUsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1MCBCcnRGaWxsICovXG52YXIgWExTQkZpbGxQVE5hbWVzID0gW1xuXHRcIm5vbmVcIixcblx0XCJzb2xpZFwiLFxuXHRcIm1lZGl1bUdyYXlcIixcblx0XCJkYXJrR3JheVwiLFxuXHRcImxpZ2h0R3JheVwiLFxuXHRcImRhcmtIb3Jpem9udGFsXCIsXG5cdFwiZGFya1ZlcnRpY2FsXCIsXG5cdFwiZGFya0Rvd25cIixcblx0XCJkYXJrVXBcIixcblx0XCJkYXJrR3JpZFwiLFxuXHRcImRhcmtUcmVsbGlzXCIsXG5cdFwibGlnaHRIb3Jpem9udGFsXCIsXG5cdFwibGlnaHRWZXJ0aWNhbFwiLFxuXHRcImxpZ2h0RG93blwiLFxuXHRcImxpZ2h0VXBcIixcblx0XCJsaWdodEdyaWRcIixcblx0XCJsaWdodFRyZWxsaXNcIixcblx0XCJncmF5MTI1XCIsXG5cdFwiZ3JheTA2MjVcIlxuXTtcbnZhciByZXZfWExTQkZpbGxQVE5hbWVzLyo6RXZlcnROdW1UeXBlKi87XG4vKiBUT0RPOiBncmFkaWVudCBmaWxsIHJlcHJlc2VudGF0aW9uICovXG52YXIgcGFyc2VfQnJ0RmlsbCA9IHBhcnNlbm9vcDtcbmZ1bmN0aW9uIHdyaXRlX0JydEZpbGwoZmlsbCwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNCozICsgOCo3ICsgMTYqMSk7XG5cdGlmKCFyZXZfWExTQkZpbGxQVE5hbWVzKSByZXZfWExTQkZpbGxQVE5hbWVzID0gKGV2ZXJ0KFhMU0JGaWxsUFROYW1lcykvKjphbnkqLyk7XG5cdHZhciBmbHMvKjpudW1iZXIqLyA9IHJldl9YTFNCRmlsbFBUTmFtZXNbZmlsbC5wYXR0ZXJuVHlwZV07XG5cdGlmKGZscyA9PSBudWxsKSBmbHMgPSAweDI4O1xuXHRvLndyaXRlX3NoaWZ0KDQsIGZscyk7XG5cdHZhciBqID0gMDtcblx0aWYoZmxzICE9IDB4MjgpIHtcblx0XHQvKiBUT0RPOiBjdXN0b20gRkcgQ29sb3IgKi9cblx0XHR3cml0ZV9CcnRDb2xvcih7YXV0bzoxfSwgbyk7XG5cdFx0LyogVE9ETzogY3VzdG9tIEJHIENvbG9yICovXG5cdFx0d3JpdGVfQnJ0Q29sb3Ioe2F1dG86MX0sIG8pO1xuXG5cdFx0Zm9yKDsgaiA8IDEyOyArK2opIG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdH0gZWxzZSB7XG5cdFx0Zm9yKDsgaiA8IDQ7ICsraikgby53cml0ZV9zaGlmdCg0LCAwKTtcblxuXHRcdGZvcig7IGogPCAxMjsgKytqKSBvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBUT0RPICovXG5cdFx0LyogaUdyYWRpZW50VHlwZSAqL1xuXHRcdC8qIHhudW1EZWdyZWUgKi9cblx0XHQvKiB4bnVtRmlsbFRvTGVmdCAqL1xuXHRcdC8qIHhudW1GaWxsVG9SaWdodCAqL1xuXHRcdC8qIHhudW1GaWxsVG9Ub3AgKi9cblx0XHQvKiB4bnVtRmlsbFRvQm90dG9tICovXG5cdFx0LyogY051bVN0b3AgKi9cblx0XHQvKiB4ZmlsbEdyYWRpZW50U3RvcCAqL1xuXHR9XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuODI0IEJydFhGICovXG5mdW5jdGlvbiBwYXJzZV9CcnRYRihkYXRhLCBsZW5ndGgvKjpudW1iZXIqLykge1xuXHR2YXIgdGd0ID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgaXhmZVBhcmVudCA9IGRhdGEucmVhZF9zaGlmdCgyKTtcblx0dmFyIGlmbXQgPSBkYXRhLnJlYWRfc2hpZnQoMik7XG5cdGRhdGEubCA9IHRndDtcblx0cmV0dXJuIHtpeGZlOml4ZmVQYXJlbnQsIG51bUZtdElkOmlmbXQgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFhGKGRhdGEsIGl4ZmVQLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxNik7XG5cdG8ud3JpdGVfc2hpZnQoMiwgaXhmZVB8fDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGRhdGEubnVtRm10SWR8fDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpRm9udCAqL1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpRmlsbCAqL1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApOyAvKiBpeEJvcmRlciAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiB0cm90ICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGluZGVudCAqL1xuXHR2YXIgZmxvdyA9IDA7XG5cdG8ud3JpdGVfc2hpZnQoMSwgZmxvdyk7IC8qIGZsYWdzICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGZsYWdzICovXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIHhmR3JiaXRBdHIgKi9cblx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuNCBCbHhmIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX0JseGYoZGF0YSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBkZyAqL1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBjb2xvciAqL1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApOyAvKiBjb2xvciAqL1xuXHRyZXR1cm4gbztcbn1cbi8qIFtNUy1YTFNCXSAyLjQuMzAyIEJydEJvcmRlciBUT0RPICovXG52YXIgcGFyc2VfQnJ0Qm9yZGVyID0gcGFyc2Vub29wO1xuZnVuY3Rpb24gd3JpdGVfQnJ0Qm9yZGVyKGJvcmRlciwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoNTEpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBkaWFnb25hbCAqL1xuXHR3cml0ZV9CbHhmKG51bGwsIG8pOyAvKiB0b3AgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogYm90dG9tICovXG5cdHdyaXRlX0JseGYobnVsbCwgbyk7IC8qIGxlZnQgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogcmlnaHQgKi9cblx0d3JpdGVfQmx4ZihudWxsLCBvKTsgLyogZGlhZyAqL1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40Ljc2MyBCcnRTdHlsZSBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV9CcnRTdHlsZShzdHlsZSwgbykge1xuXHRpZighbykgbyA9IG5ld19idWYoMTIrNCoxMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgc3R5bGUueGZJZCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgMSk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgK3N0eWxlLmJ1aWx0aW5JZCk7XG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8qIGlMZXZlbCAqL1xuXHR3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhzdHlsZS5uYW1lIHx8IFwiXCIsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjI3MiBCcnRCZWdpblRhYmxlU3R5bGVzICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpblRhYmxlU3R5bGVzKGNudCwgZGVmVGFibGVTdHlsZSwgZGVmUGl2b3RTdHlsZSkge1xuXHR2YXIgbyA9IG5ld19idWYoNCsyNTYqMio0KTtcblx0by53cml0ZV9zaGlmdCg0LCBjbnQpO1xuXHR3cml0ZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkZWZUYWJsZVN0eWxlLCBvKTtcblx0d3JpdGVfWExOdWxsYWJsZVdpZGVTdHJpbmcoZGVmUGl2b3RTdHlsZSwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy41MCBTdHlsZXMgKi9cbmZ1bmN0aW9uIHBhcnNlX3N0eV9iaW4oZGF0YSwgdGhlbWVzLCBvcHRzKSB7XG5cdHZhciBzdHlsZXMgPSB7fTtcblx0c3R5bGVzLk51bWJlckZtdCA9IChbXS8qOmFueSovKTtcblx0Zm9yKHZhciB5IGluIHRhYmxlX2ZtdCkgc3R5bGVzLk51bWJlckZtdFt5XSA9IHRhYmxlX2ZtdFt5XTtcblxuXHRzdHlsZXMuQ2VsbFhmID0gW107XG5cdHN0eWxlcy5Gb250cyA9IFtdO1xuXHR2YXIgc3RhdGUvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9zdHkodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwMkM6IC8qIEJydEZtdCAqL1xuXHRcdFx0XHRzdHlsZXMuTnVtYmVyRm10W3ZhbFswXV0gPSB2YWxbMV07IFNTRl9sb2FkKHZhbFsxXSwgdmFsWzBdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyQjogLyogQnJ0Rm9udCAqL1xuXHRcdFx0XHRzdHlsZXMuRm9udHMucHVzaCh2YWwpO1xuXHRcdFx0XHRpZih2YWwuY29sb3IudGhlbWUgIT0gbnVsbCAmJiB0aGVtZXMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMgJiYgdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lKSB7XG5cdFx0XHRcdFx0dmFsLmNvbG9yLnJnYiA9IHJnYl90aW50KHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVt2YWwuY29sb3IudGhlbWVdLnJnYiwgdmFsLmNvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDQwMTogLyogQnJ0S25vd25Gb250cyAqLyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDJEOiAvKiBCcnRGaWxsICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMkU6IC8qIEJydEJvcmRlciAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMDJGOiAvKiBCcnRYRiAqL1xuXHRcdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGggLSAxXSA9PSAweDAyNjkgLyogQnJ0QmVnaW5DZWxsWEZzICovKSB7XG5cdFx0XHRcdFx0c3R5bGVzLkNlbGxYZi5wdXNoKHZhbCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAzMDogLyogQnJ0U3R5bGUgKi9cblx0XHRcdGNhc2UgMHgwMUZCOiAvKiBCcnREWEYgKi9cblx0XHRcdGNhc2UgMHgwMjNDOiAvKiBCcnRNUlVDb2xvciAqL1xuXHRcdFx0Y2FzZSAweDAxREI6IC8qIEJydEluZGV4ZWRDb2xvciAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDA0OTM6IC8qIEJydERYRjE0ICovXG5cdFx0XHRjYXNlIDB4MDgzNjogLyogQnJ0RFhGMTUgKi9cblx0XHRcdGNhc2UgMHgwNDZBOiAvKiBCcnRTbGljZXJTdHlsZUVsZW1lbnQgKi9cblx0XHRcdGNhc2UgMHgwMjAwOiAvKiBCcnRUYWJsZVN0eWxlRWxlbWVudCAqL1xuXHRcdFx0Y2FzZSAweDA4MkY6IC8qIEJydFRpbWVsaW5lU3R5bGVFbGVtZW50ICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogQnJ0VWlkICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogQnJ0RlJUQmVnaW4gKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qIEJydEZSVEVuZCAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qIEJydEFDQmVnaW4gKi9cblx0XHRcdFx0c3RhdGUucHVzaChSVCk7IHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiBCcnRBQ0VuZCAqL1xuXHRcdFx0XHRzdGF0ZS5wb3AoKTsgcGFzcyA9IGZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UID4gMCkgc3RhdGUucHVzaChSVCk7XG5cdFx0XHRcdGVsc2UgaWYoUi5UIDwgMCkgc3RhdGUucG9wKCk7XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgKG9wdHMuV1RGICYmIHN0YXRlW3N0YXRlLmxlbmd0aC0xXSAhPSAweDAwMjUgLyogQnJ0QUNCZWdpbiAqLykpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBzdHlsZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZNVFNfYmluKGJhLCBORi8qOj9TU0ZUYWJsZSovKSB7XG5cdGlmKCFORikgcmV0dXJuO1xuXHR2YXIgY250ID0gMDtcblx0W1s1LDhdLFsyMywyNl0sWzQxLDQ0XSxbLyo2MyovNTAsLyo2Nl0sWzE2NCwqLzM5Ml1dLmZvckVhY2goZnVuY3Rpb24ocikge1xuXHRcdC8qOjogaWYoIU5GKSByZXR1cm47ICovXG5cdFx0Zm9yKHZhciBpID0gclswXTsgaSA8PSByWzFdOyArK2kpIGlmKE5GW2ldICE9IG51bGwpICsrY250O1xuXHR9KTtcblxuXHRpZihjbnQgPT0gMCkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NyAvKiBCcnRCZWdpbkZtdHMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Lyo6OiBpZighTkYpIHJldHVybjsgKi9cblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMkMgLyogQnJ0Rm10ICovLCB3cml0ZV9CcnRGbXQoaSwgTkZbaV0pKTtcblx0fSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY4IC8qIEJydEVuZEZtdHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9GT05UU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjMgLyogQnJ0QmVnaW5Gb250cyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDJCIC8qIEJydEZvbnQgKi8sIHdyaXRlX0JydEZvbnQoe1xuXHRcdHN6OjEyLFxuXHRcdGNvbG9yOiB7dGhlbWU6MX0sXG5cdFx0bmFtZTogXCJDYWxpYnJpXCIsXG5cdFx0ZmFtaWx5OiAyLFxuXHRcdHNjaGVtZTogXCJtaW5vclwiXG5cdH0pKTtcblx0LyogMSo2NTQ5MUJydEZvbnQgW0FDRk9OVFNdICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY0IC8qIEJydEVuZEZvbnRzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRklMTFNfYmluKGJhLyo6OiwgZGF0YSovKSB7XG5cdHZhciBjbnQgPSAyO1xuXG5cdGlmKGNudCA9PSAwKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjVCIC8qIEJydEJlZ2luRmlsbHMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRCAvKiBCcnRGaWxsICovLCB3cml0ZV9CcnRGaWxsKHtwYXR0ZXJuVHlwZTpcIm5vbmVcIn0pKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkQgLyogQnJ0RmlsbCAqLywgd3JpdGVfQnJ0RmlsbCh7cGF0dGVyblR5cGU6XCJncmF5MTI1XCJ9KSk7XG5cdC8qIDEqNjU0MzFCcnRGaWxsICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjVDIC8qIEJydEVuZEZpbGxzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQk9SREVSU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDE7XG5cblx0aWYoY250ID09IDApIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNjUgLyogQnJ0QmVnaW5Cb3JkZXJzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwMkUgLyogQnJ0Qm9yZGVyICovLCB3cml0ZV9CcnRCb3JkZXIoe30pKTtcblx0LyogMSo2NTQzMEJydEJvcmRlciAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2NiAvKiBCcnRFbmRCb3JkZXJzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFNUWUxFWEZTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzIgLyogQnJ0QmVnaW5DZWxsU3R5bGVYRnMgKi8sIHdyaXRlX1VJbnQzMkxFKGNudCkpO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDAyRiAvKiBCcnRYRiAqLywgd3JpdGVfQnJ0WEYoe1xuXHRcdG51bUZtdElkOiAwLFxuXHRcdGZvbnRJZDogICAwLFxuXHRcdGZpbGxJZDogICAwLFxuXHRcdGJvcmRlcklkOiAwXG5cdH0sIDB4RkZGRikpO1xuXHQvKiAxKjY1NDMwKEJydFhGICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjczIC8qIEJydEVuZENlbGxTdHlsZVhGcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0NFTExYRlNfYmluKGJhLCBkYXRhKSB7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjY5IC8qIEJydEJlZ2luQ2VsbFhGcyAqLywgd3JpdGVfVUludDMyTEUoZGF0YS5sZW5ndGgpKTtcblx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsgd3JpdGVfcmVjb3JkKGJhLCAweDAwMkYgLyogQnJ0WEYgKi8sIHdyaXRlX0JydFhGKGMsMCkpOyB9KTtcblx0LyogMSo2NTQzMChCcnRYRiAqRlJUKSAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2QSAvKiBCcnRFbmRDZWxsWEZzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfU1RZTEVTX2JpbihiYS8qOjosIGRhdGEqLykge1xuXHR2YXIgY250ID0gMTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI2QiAvKiBCcnRCZWdpblN0eWxlcyAqLywgd3JpdGVfVUludDMyTEUoY250KSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDMwIC8qIEJydFN0eWxlICovLCB3cml0ZV9CcnRTdHlsZSh7XG5cdFx0eGZJZDowLFxuXHRcdGJ1aWx0aW5JZDowLFxuXHRcdG5hbWU6XCJOb3JtYWxcIlxuXHR9KSk7XG5cdC8qIDEqNjU0MzAoQnJ0U3R5bGUgKkZSVCkgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNkMgLyogQnJ0RW5kU3R5bGVzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRFhGU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDA7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRjkgLyogQnJ0QmVnaW5EWEZzICovLCB3cml0ZV9VSW50MzJMRShjbnQpKTtcblx0LyogKjIxNDc0ODM2NDcoQnJ0RFhGICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUZBIC8qIEJydEVuZERYRnMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9UQUJMRVNUWUxFU19iaW4oYmEvKjo6LCBkYXRhKi8pIHtcblx0dmFyIGNudCA9IDA7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxRkMgLyogQnJ0QmVnaW5UYWJsZVN0eWxlcyAqLywgd3JpdGVfQnJ0QmVnaW5UYWJsZVN0eWxlcyhjbnQsIFwiVGFibGVTdHlsZU1lZGl1bTlcIiwgXCJQaXZvdFN0eWxlTWVkaXVtNFwiKSk7XG5cdC8qICpUQUJMRVNUWUxFICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMUZEIC8qIEJydEVuZFRhYmxlU3R5bGVzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ09MT1JQQUxFVFRFX2JpbigvKjo6YmEsIGRhdGEqLykge1xuXHRyZXR1cm47XG5cdC8qIEJydEJlZ2luQ29sb3JQYWxldHRlIFtJTkRFWEVEQ09MT1JTXSBbTVJVQ09MT1JTXSBCcnRFbmRDb2xvclBhbGV0dGUgKi9cbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjUwIFN0eWxlcyAqL1xuZnVuY3Rpb24gd3JpdGVfc3R5X2Jpbih3Yiwgb3B0cykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxMTYgLyogQnJ0QmVnaW5TdHlsZVNoZWV0ICovKTtcblx0d3JpdGVfRk1UU19iaW4oYmEsIHdiLlNTRik7XG5cdHdyaXRlX0ZPTlRTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9GSUxMU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQk9SREVSU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQ0VMTFNUWUxFWEZTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9DRUxMWEZTX2JpbihiYSwgb3B0cy5jZWxsWGZzKTtcblx0d3JpdGVfU1RZTEVTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9EWEZTX2JpbihiYSwgd2IpO1xuXHR3cml0ZV9UQUJMRVNUWUxFU19iaW4oYmEsIHdiKTtcblx0d3JpdGVfQ09MT1JQQUxFVFRFX2JpbihiYSwgd2IpO1xuXHQvKiBGUlRTVFlMRVNIRUVUKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAxMTcgLyogQnJ0RW5kU3R5bGVTaGVldCAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cbi8qIEV2ZW4gdGhvdWdoIHRoZW1lIGxheW91dCBpcyBkazEgbHQxIGRrMiBsdDIsIHRydWUgb3JkZXIgaXMgbHQxIGRrMSBsdDIgZGsyICovXG52YXIgWExTWFRoZW1lQ2xyU2NoZW1lID0gW1xuXHQnPC9hOmx0MT4nLCAnPC9hOmRrMT4nLCAnPC9hOmx0Mj4nLCAnPC9hOmRrMj4nLFxuXHQnPC9hOmFjY2VudDE+JywgJzwvYTphY2NlbnQyPicsICc8L2E6YWNjZW50Mz4nLFxuXHQnPC9hOmFjY2VudDQ+JywgJzwvYTphY2NlbnQ1PicsICc8L2E6YWNjZW50Nj4nLFxuXHQnPC9hOmhsaW5rPicsICc8L2E6Zm9sSGxpbms+J1xuXTtcbi8qIDIwLjEuNi4yIGNsclNjaGVtZSBDVF9Db2xvclNjaGVtZSAqL1xuZnVuY3Rpb24gcGFyc2VfY2xyU2NoZW1lKHQsIHRoZW1lcywgb3B0cykge1xuXHR0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWUgPSBbXTtcblx0dmFyIGNvbG9yID0ge307XG5cdCh0WzBdLm1hdGNoKHRhZ3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHRcdHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHlbMF0pIHtcblx0XHRcdC8qIDIwLjEuNi4yIGNsclNjaGVtZSAoQ29sb3IgU2NoZW1lKSBDVF9Db2xvclNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAnPGE6Y2xyU2NoZW1lJzogY2FzZSAnPC9hOmNsclNjaGVtZT4nOiBicmVhaztcblxuXHRcdFx0LyogMjAuMS4yLjMuMzIgc3JnYkNsciBDVF9TUmdiQ29sb3IgKi9cblx0XHRcdGNhc2UgJzxhOnNyZ2JDbHInOlxuXHRcdFx0XHRjb2xvci5yZ2IgPSB5LnZhbDsgYnJlYWs7XG5cblx0XHRcdC8qIDIwLjEuMi4zLjMzIHN5c0NsciBDVF9TeXN0ZW1Db2xvciAqL1xuXHRcdFx0Y2FzZSAnPGE6c3lzQ2xyJzpcblx0XHRcdFx0Y29sb3IucmdiID0geS5sYXN0Q2xyOyBicmVhaztcblxuXHRcdFx0LyogMjAuMS40LjEuMSBhY2NlbnQxIChBY2NlbnQgMSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjIgYWNjZW50MiAoQWNjZW50IDIpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4zIGFjY2VudDMgKEFjY2VudCAzKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuNCBhY2NlbnQ0IChBY2NlbnQgNCkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjUgYWNjZW50NSAoQWNjZW50IDUpICovXG5cdFx0XHQvKiAyMC4xLjQuMS42IGFjY2VudDYgKEFjY2VudCA2KSAqL1xuXHRcdFx0LyogMjAuMS40LjEuOSBkazEgKERhcmsgMSkgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjEwIGRrMiAoRGFyayAyKSAqL1xuXHRcdFx0LyogMjAuMS40LjEuMTUgZm9sSGxpbmsgKEZvbGxvd2VkIEh5cGVybGluaykgKi9cblx0XHRcdC8qIDIwLjEuNC4xLjE5IGhsaW5rIChIeXBlcmxpbmspICovXG5cdFx0XHQvKiAyMC4xLjQuMS4yMiBsdDEgKExpZ2h0IDEpICovXG5cdFx0XHQvKiAyMC4xLjQuMS4yMyBsdDIgKExpZ2h0IDIpICovXG5cdFx0XHRjYXNlICc8YTpkazE+JzogY2FzZSAnPC9hOmRrMT4nOlxuXHRcdFx0Y2FzZSAnPGE6bHQxPic6IGNhc2UgJzwvYTpsdDE+Jzpcblx0XHRcdGNhc2UgJzxhOmRrMj4nOiBjYXNlICc8L2E6ZGsyPic6XG5cdFx0XHRjYXNlICc8YTpsdDI+JzogY2FzZSAnPC9hOmx0Mj4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50MT4nOiBjYXNlICc8L2E6YWNjZW50MT4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Mj4nOiBjYXNlICc8L2E6YWNjZW50Mj4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Mz4nOiBjYXNlICc8L2E6YWNjZW50Mz4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50ND4nOiBjYXNlICc8L2E6YWNjZW50ND4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50NT4nOiBjYXNlICc8L2E6YWNjZW50NT4nOlxuXHRcdFx0Y2FzZSAnPGE6YWNjZW50Nj4nOiBjYXNlICc8L2E6YWNjZW50Nj4nOlxuXHRcdFx0Y2FzZSAnPGE6aGxpbms+JzogY2FzZSAnPC9hOmhsaW5rPic6XG5cdFx0XHRjYXNlICc8YTpmb2xIbGluaz4nOiBjYXNlICc8L2E6Zm9sSGxpbms+Jzpcblx0XHRcdFx0aWYgKHlbMF0uY2hhckF0KDEpID09PSAnLycpIHtcblx0XHRcdFx0XHR0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbWExTWFRoZW1lQ2xyU2NoZW1lLmluZGV4T2YoeVswXSldID0gY29sb3I7XG5cdFx0XHRcdFx0Y29sb3IgPSB7fTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjb2xvci5uYW1lID0geVswXS5zbGljZSgzLCB5WzBdLmxlbmd0aCAtIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRkZWZhdWx0OiBpZihvcHRzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gY2xyU2NoZW1lJyk7XG5cdFx0fVxuXHR9KTtcbn1cblxuLyogMjAuMS40LjEuMTggZm9udFNjaGVtZSBDVF9Gb250U2NoZW1lICovXG5mdW5jdGlvbiBwYXJzZV9mb250U2NoZW1lKC8qOjp0LCB0aGVtZXMsIG9wdHMqLykgeyB9XG5cbi8qIDIwLjEuNC4xLjE1IGZtdFNjaGVtZSBDVF9TdHlsZU1hdHJpeCAqL1xuZnVuY3Rpb24gcGFyc2VfZm10U2NoZW1lKC8qOjp0LCB0aGVtZXMsIG9wdHMqLykgeyB9XG5cbnZhciBjbHJzcmVnZXggPSAvPGE6Y2xyU2NoZW1lKFtePl0qKT5bXFxzXFxTXSo8XFwvYTpjbHJTY2hlbWU+LztcbnZhciBmbnRzcmVnZXggPSAvPGE6Zm9udFNjaGVtZShbXj5dKik+W1xcc1xcU10qPFxcL2E6Zm9udFNjaGVtZT4vO1xudmFyIGZtdHNyZWdleCA9IC88YTpmbXRTY2hlbWUoW14+XSopPltcXHNcXFNdKjxcXC9hOmZtdFNjaGVtZT4vO1xuXG4vKiAyMC4xLjYuMTAgdGhlbWVFbGVtZW50cyBDVF9CYXNlU3R5bGVzICovXG5mdW5jdGlvbiBwYXJzZV90aGVtZUVsZW1lbnRzKGRhdGEsIHRoZW1lcywgb3B0cykge1xuXHR0aGVtZXMudGhlbWVFbGVtZW50cyA9IHt9O1xuXG5cdHZhciB0O1xuXG5cdFtcblx0XHQvKiBjbHJTY2hlbWUgQ1RfQ29sb3JTY2hlbWUgKi9cblx0XHRbJ2NsclNjaGVtZScsIGNscnNyZWdleCwgcGFyc2VfY2xyU2NoZW1lXSxcblx0XHQvKiBmb250U2NoZW1lIENUX0ZvbnRTY2hlbWUgKi9cblx0XHRbJ2ZvbnRTY2hlbWUnLCBmbnRzcmVnZXgsIHBhcnNlX2ZvbnRTY2hlbWVdLFxuXHRcdC8qIGZtdFNjaGVtZSBDVF9TdHlsZU1hdHJpeCAqL1xuXHRcdFsnZm10U2NoZW1lJywgZm10c3JlZ2V4LCBwYXJzZV9mbXRTY2hlbWVdXG5cdF0uZm9yRWFjaChmdW5jdGlvbihtKSB7XG5cdFx0aWYoISh0PWRhdGEubWF0Y2gobVsxXSkpKSB0aHJvdyBuZXcgRXJyb3IobVswXSArICcgbm90IGZvdW5kIGluIHRoZW1lRWxlbWVudHMnKTtcblx0XHRtWzJdKHQsIHRoZW1lcywgb3B0cyk7XG5cdH0pO1xufVxuXG52YXIgdGhlbWVsdHJlZ2V4ID0gLzxhOnRoZW1lRWxlbWVudHMoW14+XSopPltcXHNcXFNdKjxcXC9hOnRoZW1lRWxlbWVudHM+LztcblxuLyogMTQuMi43IFRoZW1lIFBhcnQgKi9cbmZ1bmN0aW9uIHBhcnNlX3RoZW1lX3htbChkYXRhLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0LyogMjAuMS42LjkgdGhlbWUgQ1RfT2ZmaWNlU3R5bGVTaGVldCAqL1xuXHRpZighZGF0YSB8fCBkYXRhLmxlbmd0aCA9PT0gMCkgZGF0YSA9IHdyaXRlX3RoZW1lKCk7XG5cblx0dmFyIHQ7XG5cdHZhciB0aGVtZXMgPSB7fTtcblxuXHQvKiB0aGVtZUVsZW1lbnRzIENUX0Jhc2VTdHlsZXMgKi9cblx0aWYoISh0PWRhdGEubWF0Y2godGhlbWVsdHJlZ2V4KSkpIHRocm93IG5ldyBFcnJvcigndGhlbWVFbGVtZW50cyBub3QgZm91bmQgaW4gdGhlbWUnKTtcblx0cGFyc2VfdGhlbWVFbGVtZW50cyh0WzBdLCB0aGVtZXMsIG9wdHMpO1xuXHR0aGVtZXMucmF3ID0gZGF0YTtcblx0cmV0dXJuIHRoZW1lcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfdGhlbWUoVGhlbWVzLCBvcHRzKS8qOnN0cmluZyovIHtcblx0aWYob3B0cyAmJiBvcHRzLnRoZW1lWExTWCkgcmV0dXJuIG9wdHMudGhlbWVYTFNYO1xuXHRpZihUaGVtZXMgJiYgdHlwZW9mIFRoZW1lcy5yYXcgPT0gXCJzdHJpbmdcIikgcmV0dXJuIFRoZW1lcy5yYXc7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvW28ubGVuZ3RoXSA9ICc8YTp0aGVtZSB4bWxuczphPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL2RyYXdpbmdtbC8yMDA2L21haW5cIiBuYW1lPVwiT2ZmaWNlIFRoZW1lXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzxhOnRoZW1lRWxlbWVudHM+JztcblxuXHRvW28ubGVuZ3RoXSA9ICAgJzxhOmNsclNjaGVtZSBuYW1lPVwiT2ZmaWNlXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZGsxPjxhOnN5c0NsciB2YWw9XCJ3aW5kb3dUZXh0XCIgbGFzdENscj1cIjAwMDAwMFwiLz48L2E6ZGsxPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmx0MT48YTpzeXNDbHIgdmFsPVwid2luZG93XCIgbGFzdENscj1cIkZGRkZGRlwiLz48L2E6bHQxPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmRrMj48YTpzcmdiQ2xyIHZhbD1cIjFGNDk3RFwiLz48L2E6ZGsyPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmx0Mj48YTpzcmdiQ2xyIHZhbD1cIkVFRUNFMVwiLz48L2E6bHQyPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDE+PGE6c3JnYkNsciB2YWw9XCI0RjgxQkRcIi8+PC9hOmFjY2VudDE+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50Mj48YTpzcmdiQ2xyIHZhbD1cIkMwNTA0RFwiLz48L2E6YWNjZW50Mj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQzPjxhOnNyZ2JDbHIgdmFsPVwiOUJCQjU5XCIvPjwvYTphY2NlbnQzPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmFjY2VudDQ+PGE6c3JnYkNsciB2YWw9XCI4MDY0QTJcIi8+PC9hOmFjY2VudDQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YWNjZW50NT48YTpzcmdiQ2xyIHZhbD1cIjRCQUNDNlwiLz48L2E6YWNjZW50NT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTphY2NlbnQ2PjxhOnNyZ2JDbHIgdmFsPVwiRjc5NjQ2XCIvPjwvYTphY2NlbnQ2Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmhsaW5rPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMEZGXCIvPjwvYTpobGluaz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpmb2xIbGluaz48YTpzcmdiQ2xyIHZhbD1cIjgwMDA4MFwiLz48L2E6Zm9sSGxpbms+Jztcblx0b1tvLmxlbmd0aF0gPSAgICc8L2E6Y2xyU2NoZW1lPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgICc8YTpmb250U2NoZW1lIG5hbWU9XCJPZmZpY2VcIj4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTptYWpvckZvbnQ+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxhdGluIHR5cGVmYWNlPVwiQ2FtYnJpYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWEgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmNzIHR5cGVmYWNlPVwiXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIu+8re+8syDvvLDjgrTjgrfjg4Pjgq9cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFuZ1wiIHR5cGVmYWNlPVwi66eR7J2AIOqzoOuUlVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLlrovkvZNcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGFudFwiIHR5cGVmYWNlPVwi5paw57Sw5piO6auUXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkFyYWJcIiB0eXBlZmFjZT1cIlRpbWVzIE5ldyBSb21hblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIZWJyXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkV0aGlcIiB0eXBlZmFjZT1cIk55YWxhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS2htclwiIHR5cGVmYWNlPVwiTW9vbEJvcmFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkd1cnVcIiB0eXBlZmFjZT1cIlJhYXZpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNhbnNcIiB0eXBlZmFjZT1cIkV1cGhlbWlhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIllpaWlcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBZaSBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaWJ0XCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgSGltYWxheWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJEZXZhXCIgdHlwZWZhY2U9XCJNYW5nYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGVsdVwiIHR5cGVmYWNlPVwiR2F1dGFtaVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJTeXJjXCIgdHlwZWZhY2U9XCJFc3RyYW5nZWxvIEVkZXNzYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJPcnlhXCIgdHlwZWZhY2U9XCJLYWxpbmdhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTGFvb1wiIHR5cGVmYWNlPVwiRG9rQ2hhbXBhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlNpbmhcIiB0eXBlZmFjZT1cIklza29vbGEgUG90YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVmlldFwiIHR5cGVmYWNlPVwiVGltZXMgTmV3IFJvbWFuXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlVpZ2hcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBVaWdodXJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR2VvclwiIHR5cGVmYWNlPVwiU3lsZmFlblwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6bWFqb3JGb250Pic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOm1pbm9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6bGF0aW4gdHlwZWZhY2U9XCJDYWxpYnJpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplYSB0eXBlZmFjZT1cIlwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Y3MgdHlwZWZhY2U9XCJcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSnBhblwiIHR5cGVmYWNlPVwi77yt77yzIO+8sOOCtOOCt+ODg+OCr1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW5nXCIgdHlwZWZhY2U9XCLrp5HsnYAg6rOg65SVXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkhhbnNcIiB0eXBlZmFjZT1cIuWui+S9k1wiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQXJhYlwiIHR5cGVmYWNlPVwiQXJpYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiSGViclwiIHR5cGVmYWNlPVwiQXJpYWxcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkV0aGlcIiB0eXBlZmFjZT1cIk55YWxhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS2htclwiIHR5cGVmYWNlPVwiRGF1blBlbmhcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiS25kYVwiIHR5cGVmYWNlPVwiVHVuZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2Fuc1wiIHR5cGVmYWNlPVwiRXVwaGVtaWFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiQ2hlclwiIHR5cGVmYWNlPVwiUGxhbnRhZ2VuZXQgQ2hlcm9rZWVcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRpYnRcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBIaW1hbGF5YVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUaGFhXCIgdHlwZWZhY2U9XCJNViBCb2xpXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJUZWx1XCIgdHlwZWZhY2U9XCJHYXV0YW1pXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlRhbWxcIiB0eXBlZmFjZT1cIkxhdGhhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk9yeWFcIiB0eXBlZmFjZT1cIkthbGluZ2FcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiTWx5bVwiIHR5cGVmYWNlPVwiS2FydGlrYVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmZvbnQgc2NyaXB0PVwiU2luaFwiIHR5cGVmYWNlPVwiSXNrb29sYSBQb3RhXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIk1vbmdcIiB0eXBlZmFjZT1cIk1vbmdvbGlhbiBCYWl0aVwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJBcmlhbFwiLz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Zm9udCBzY3JpcHQ9XCJVaWdoXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgVWlnaHVyXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpmb250IHNjcmlwdD1cIkdlb3JcIiB0eXBlZmFjZT1cIlN5bGZhZW5cIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOm1pbm9yRm9udD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpmb250U2NoZW1lPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgICc8YTpmbXRTY2hlbWUgbmFtZT1cIk9mZmljZVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzxhOmZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI1MDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjM1MDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCIzNzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiMTUwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmxpbiBhbmc9XCIxNjIwMDAwMFwiIHNjYWxlZD1cIjFcIi8+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTpncmFkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiMTAwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjEwMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTMwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNTAwMDBcIi8+PGE6c2hhZGUgdmFsPVwiMTAwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIzNTAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpsaW4gYW5nPVwiMTYyMDAwMDBcIiBzY2FsZWQ9XCIwXCIvPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8L2E6Z3JhZEZpbGw+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8YTpsblN0eWxlTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpsbiB3PVwiOTUyNVwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCI5NTAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTA1MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxuIHc9XCIyNTQwMFwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmxuIHc9XCIzODEwMFwiIGNhcD1cImZsYXRcIiBjbXBkPVwic25nXCIgYWxnbj1cImN0clwiPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD48YTpwcnN0RGFzaCB2YWw9XCJzb2xpZFwiLz48L2E6bG4+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPC9hOmxuU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6ZWZmZWN0U3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOm91dGVyU2hkdyBibHVyUmFkPVwiNDAwMDBcIiBkaXN0PVwiMjAwMDBcIiBkaXI9XCI1NDAwMDAwXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiMzgwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzwvYTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6ZWZmZWN0U3R5bGU+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTplZmZlY3RMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI0MDAwMFwiIGRpc3Q9XCIyMzAwMFwiIGRpcj1cIjU0MDAwMDBcIiByb3RXaXRoU2hhcGU9XCIwXCI+PGE6c3JnYkNsciB2YWw9XCIwMDAwMDBcIj48YTphbHBoYSB2YWw9XCIzNTAwMFwiLz48L2E6c3JnYkNscj48L2E6b3V0ZXJTaGR3Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmVmZmVjdFN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgJzxhOmVmZmVjdExzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpvdXRlclNoZHcgYmx1clJhZD1cIjQwMDAwXCIgZGlzdD1cIjIzMDAwXCIgZGlyPVwiNTQwMDAwMFwiIHJvdFdpdGhTaGFwZT1cIjBcIj48YTpzcmdiQ2xyIHZhbD1cIjAwMDAwMFwiPjxhOmFscGhhIHZhbD1cIjM1MDAwXCIvPjwvYTpzcmdiQ2xyPjwvYTpvdXRlclNoZHc+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6ZWZmZWN0THN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6c2NlbmUzZD48YTpjYW1lcmEgcHJzdD1cIm9ydGhvZ3JhcGhpY0Zyb250XCI+PGE6cm90IGxhdD1cIjBcIiBsb249XCIwXCIgcmV2PVwiMFwiLz48L2E6Y2FtZXJhPjxhOmxpZ2h0UmlnIHJpZz1cInRocmVlUHRcIiBkaXI9XCJ0XCI+PGE6cm90IGxhdD1cIjBcIiBsb249XCIwXCIgcmV2PVwiMTIwMDAwMFwiLz48L2E6bGlnaHRSaWc+PC9hOnNjZW5lM2Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpzcDNkPjxhOmJldmVsVCB3PVwiNjM1MDBcIiBoPVwiMjU0MDBcIi8+PC9hOnNwM2Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzwvYTplZmZlY3RTdHlsZT4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICc8L2E6ZWZmZWN0U3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6YmdGaWxsU3R5bGVMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgJzxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIi8+PC9hOnNvbGlkRmlsbD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPGE6Z3JhZEZpbGwgcm90V2l0aFNoYXBlPVwiMVwiPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICAnPGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNDAwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCI0MDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnRpbnQgdmFsPVwiNDUwMDBcIi8+PGE6c2hhZGUgdmFsPVwiOTkwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjM1MDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCIyMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMjU1MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPC9hOmdzTHN0Pic7XG5cdG9bby5sZW5ndGhdID0gICAgICAnPGE6cGF0aCBwYXRoPVwiY2lyY2xlXCI+PGE6ZmlsbFRvUmVjdCBsPVwiNTAwMDBcIiB0PVwiLTgwMDAwXCIgcj1cIjUwMDAwXCIgYj1cIjE4MDAwMFwiLz48L2E6cGF0aD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgICc8YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpnc0xzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAgICc8YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI4MDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMzAwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPic7XG5cdG9bby5sZW5ndGhdID0gICAgICAgJzxhOmdzIHBvcz1cIjEwMDAwMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNoYWRlIHZhbD1cIjMwMDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIyMDAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8L2E6Z3NMc3Q+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAgICc8YTpwYXRoIHBhdGg9XCJjaXJjbGVcIj48YTpmaWxsVG9SZWN0IGw9XCI1MDAwMFwiIHQ9XCI1MDAwMFwiIHI9XCI1MDAwMFwiIGI9XCI1MDAwMFwiLz48L2E6cGF0aD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgICAnPC9hOmdyYWRGaWxsPic7XG5cdG9bby5sZW5ndGhdID0gICAgJzwvYTpiZ0ZpbGxTdHlsZUxzdD4nO1xuXHRvW28ubGVuZ3RoXSA9ICAgJzwvYTpmbXRTY2hlbWU+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzwvYTp0aGVtZUVsZW1lbnRzPic7XG5cblx0b1tvLmxlbmd0aF0gPSAgJzxhOm9iamVjdERlZmF1bHRzPic7XG5cdG9bby5sZW5ndGhdID0gICAnPGE6c3BEZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PVwiMVwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD1cIjNcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PVwiMlwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9XCJtaW5vclwiPjxhOnNjaGVtZUNsciB2YWw9XCJsdDFcIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOnNwRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICAnPGE6bG5EZWY+Jztcblx0b1tvLmxlbmd0aF0gPSAgICAnPGE6c3BQci8+PGE6Ym9keVByLz48YTpsc3RTdHlsZS8+PGE6c3R5bGU+PGE6bG5SZWYgaWR4PVwiMlwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTpsblJlZj48YTpmaWxsUmVmIGlkeD1cIjBcIj48YTpzY2hlbWVDbHIgdmFsPVwiYWNjZW50MVwiLz48L2E6ZmlsbFJlZj48YTplZmZlY3RSZWYgaWR4PVwiMVwiPjxhOnNjaGVtZUNsciB2YWw9XCJhY2NlbnQxXCIvPjwvYTplZmZlY3RSZWY+PGE6Zm9udFJlZiBpZHg9XCJtaW5vclwiPjxhOnNjaGVtZUNsciB2YWw9XCJ0eDFcIi8+PC9hOmZvbnRSZWY+PC9hOnN0eWxlPic7XG5cdG9bby5sZW5ndGhdID0gICAnPC9hOmxuRGVmPic7XG5cdG9bby5sZW5ndGhdID0gICc8L2E6b2JqZWN0RGVmYXVsdHM+Jztcblx0b1tvLmxlbmd0aF0gPSAgJzxhOmV4dHJhQ2xyU2NoZW1lTHN0Lz4nO1xuXHRvW28ubGVuZ3RoXSA9ICc8L2E6dGhlbWU+Jztcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIFtNUy1YTFNdIDIuNC4zMjYgVE9ETzogcGF5bG9hZCBpcyBhIHppcCBmaWxlICovXG5mdW5jdGlvbiBwYXJzZV9UaGVtZShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGR3VGhlbWVWZXJzaW9uID0gYmxvYi5yZWFkX3NoaWZ0KDQpO1xuXHRpZihkd1RoZW1lVmVyc2lvbiA9PT0gMTI0MjI2KSByZXR1cm47XG5cdGlmKCFvcHRzLmNlbGxTdHlsZXMpIHsgYmxvYi5sID0gZW5kOyByZXR1cm47IH1cblx0dmFyIGRhdGEgPSBibG9iLnNsaWNlKGJsb2IubCk7XG5cdGJsb2IubCA9IGVuZDtcblx0dmFyIHppcDsgdHJ5IHsgemlwID0gemlwX3JlYWQoZGF0YSwge3R5cGU6IFwiYXJyYXlcIn0pOyB9IGNhdGNoKGUpIHsgcmV0dXJuOyB9XG5cdHZhciB0aGVtZVhNTCA9IGdldHppcHN0cih6aXAsIFwidGhlbWUvdGhlbWUvdGhlbWUxLnhtbFwiLCB0cnVlKTtcblx0aWYoIXRoZW1lWE1MKSByZXR1cm47XG5cdHJldHVybiBwYXJzZV90aGVtZV94bWwodGhlbWVYTUwsIG9wdHMpO1xufVxuXG4vKiAyLjUuNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX0NvbG9yVGhlbWUoYmxvYi8qOjosIGxlbmd0aCovKSB7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoNCk7IH1cblxuLyogMi41LjE1NSAqL1xuZnVuY3Rpb24gcGFyc2VfRnVsbENvbG9yRXh0KGJsb2IvKjo6LCBsZW5ndGgqLykge1xuXHR2YXIgbyA9IHt9O1xuXHRvLnhjbHJUeXBlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRvLm5UaW50U2hhZGUgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHN3aXRjaChvLnhjbHJUeXBlKSB7XG5cdFx0Y2FzZSAwOiBibG9iLmwgKz0gNDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiBvLnhjbHJWYWx1ZSA9IHBhcnNlX0ljdlhGKGJsb2IsIDQpOyBicmVhaztcblx0XHRjYXNlIDI6IG8ueGNsclZhbHVlID0gcGFyc2VfTG9uZ1JHQkEoYmxvYiwgNCk7IGJyZWFrO1xuXHRcdGNhc2UgMzogby54Y2xyVmFsdWUgPSBwYXJzZV9Db2xvclRoZW1lKGJsb2IsIDQpOyBicmVhaztcblx0XHRjYXNlIDQ6IGJsb2IubCArPSA0OyBicmVhaztcblx0fVxuXHRibG9iLmwgKz0gODtcblx0cmV0dXJuIG87XG59XG5cbi8qIDIuNS4xNjQgVE9ETzogcmVhZCA3IGJpdHMqL1xuZnVuY3Rpb24gcGFyc2VfSWN2WEYoYmxvYiwgbGVuZ3RoKSB7XG5cdHJldHVybiBwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoKTtcbn1cblxuLyogMi41LjI4MCAqL1xuZnVuY3Rpb24gcGFyc2VfWEZFeHRHcmFkaWVudChibG9iLCBsZW5ndGgpIHtcblx0cmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTA4ICovXG5mdW5jdGlvbiBwYXJzZV9FeHRQcm9wKGJsb2IvKjo6LCBsZW5ndGgqLykvKjpBcnJheTxhbnk+Ki8ge1xuXHR2YXIgZXh0VHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGNiID0gYmxvYi5yZWFkX3NoaWZ0KDIpIC0gNDtcblx0dmFyIG8gPSBbZXh0VHlwZV07XG5cdHN3aXRjaChleHRUeXBlKSB7XG5cdFx0Y2FzZSAweDA0OiBjYXNlIDB4MDU6IGNhc2UgMHgwNzogY2FzZSAweDA4OlxuXHRcdGNhc2UgMHgwOTogY2FzZSAweDBBOiBjYXNlIDB4MEI6IGNhc2UgMHgwRDpcblx0XHRcdG9bMV0gPSBwYXJzZV9GdWxsQ29sb3JFeHQoYmxvYiwgY2IpOyBicmVhaztcblx0XHRjYXNlIDB4MDY6IG9bMV0gPSBwYXJzZV9YRkV4dEdyYWRpZW50KGJsb2IsIGNiKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBFOiBjYXNlIDB4MEY6IG9bMV0gPSBibG9iLnJlYWRfc2hpZnQoY2IgPT09IDEgPyAxIDogMik7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCBFeHRQcm9wIHR5cGU6IFwiICsgZXh0VHlwZSArIFwiIFwiICsgY2IpO1xuXHR9XG5cdHJldHVybiBvO1xufVxuXG4vKiAyLjQuMzU1ICovXG5mdW5jdGlvbiBwYXJzZV9YRkV4dChibG9iLCBsZW5ndGgpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBpeGZlID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRibG9iLmwgKz0gMjtcblx0dmFyIGNleHRzID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZXh0Lyo6QU9BKi8gPSBbXTtcblx0d2hpbGUoY2V4dHMtLSA+IDApIGV4dC5wdXNoKHBhcnNlX0V4dFByb3AoYmxvYiwgZW5kLWJsb2IubCkpO1xuXHRyZXR1cm4ge2l4ZmU6aXhmZSwgZXh0OmV4dH07XG59XG5cbi8qIHhmIGlzIGFuIFhGLCBzZWUgcGFyc2VfWEZFeHQgZm9yIHhmZXh0ICovXG5mdW5jdGlvbiB1cGRhdGVfeGZleHQoeGYsIHhmZXh0KSB7XG5cdHhmZXh0LmZvckVhY2goZnVuY3Rpb24oeGZlKSB7XG5cdFx0c3dpdGNoKHhmZVswXSkgeyAvKiAyLjUuMTA4IGV4dFByb3BEYXRhICovXG5cdFx0XHRjYXNlIDB4MDQ6IGJyZWFrOyAvKiBmb3JlZ3JvdW5kIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDU6IGJyZWFrOyAvKiBiYWNrZ3JvdW5kIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MDY6IGJyZWFrOyAvKiBncmFkaWVudCBmaWxsICovXG5cdFx0XHRjYXNlIDB4MDc6IGJyZWFrOyAvKiB0b3AgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwODogYnJlYWs7IC8qIGJvdHRvbSBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDA5OiBicmVhazsgLyogbGVmdCBjZWxsIGJvcmRlciBjb2xvciAqL1xuXHRcdFx0Y2FzZSAweDBhOiBicmVhazsgLyogcmlnaHQgY2VsbCBib3JkZXIgY29sb3IgKi9cblx0XHRcdGNhc2UgMHgwYjogYnJlYWs7IC8qIGRpYWdvbmFsIGNlbGwgYm9yZGVyIGNvbG9yICovXG5cdFx0XHRjYXNlIDB4MGQ6IC8qIHRleHQgY29sb3IgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MGU6IGJyZWFrOyAvKiBmb250IHNjaGVtZSAqL1xuXHRcdFx0Y2FzZSAweDBmOiBicmVhazsgLyogaW5kZW50YXRpb24gbGV2ZWwgKi9cblx0XHR9XG5cdH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CcnRNZHRpbmZvKGRhdGEsIGxlbmd0aCkge1xuICByZXR1cm4ge1xuICAgIGZsYWdzOiBkYXRhLnJlYWRfc2hpZnQoNCksXG4gICAgdmVyc2lvbjogZGF0YS5yZWFkX3NoaWZ0KDQpLFxuICAgIG5hbWU6IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhLCBsZW5ndGggLSA4KVxuICB9O1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0TWR0aW5mbyhkYXRhKSB7XG4gIHZhciBvID0gbmV3X2J1ZigxMiArIDIgKiBkYXRhLm5hbWUubGVuZ3RoKTtcbiAgby53cml0ZV9zaGlmdCg0LCBkYXRhLmZsYWdzKTtcbiAgby53cml0ZV9zaGlmdCg0LCBkYXRhLnZlcnNpb24pO1xuICB3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS5uYW1lLCBvKTtcbiAgcmV0dXJuIG8uc2xpY2UoMCwgby5sKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydE1kYihkYXRhKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgdmFyIGNudCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcbiAgd2hpbGUgKGNudC0tID4gMClcbiAgICBvdXQucHVzaChbZGF0YS5yZWFkX3NoaWZ0KDQpLCBkYXRhLnJlYWRfc2hpZnQoNCldKTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydE1kYihtZGIpIHtcbiAgdmFyIG8gPSBuZXdfYnVmKDQgKyA4ICogbWRiLmxlbmd0aCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgbWRiLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWRiLmxlbmd0aDsgKytpKSB7XG4gICAgby53cml0ZV9zaGlmdCg0LCBtZGJbaV1bMF0pO1xuICAgIG8ud3JpdGVfc2hpZnQoNCwgbWRiW2ldWzFdKTtcbiAgfVxuICByZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luRXNmbWQoY250LCBuYW1lKSB7XG4gIHZhciBvID0gbmV3X2J1Zig4ICsgMiAqIG5hbWUubGVuZ3RoKTtcbiAgby53cml0ZV9zaGlmdCg0LCBjbnQpO1xuICB3cml0ZV9YTFdpZGVTdHJpbmcobmFtZSwgbyk7XG4gIHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRCZWdpbkVzbWRiKGRhdGEpIHtcbiAgZGF0YS5sICs9IDQ7XG4gIHJldHVybiBkYXRhLnJlYWRfc2hpZnQoNCkgIT0gMDtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luRXNtZGIoY250LCBjbSkge1xuICB2YXIgbyA9IG5ld19idWYoOCk7XG4gIG8ud3JpdGVfc2hpZnQoNCwgY250KTtcbiAgby53cml0ZV9zaGlmdCg0LCBjbSA/IDEgOiAwKTtcbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV94bG1ldGFfYmluKGRhdGEsIG5hbWUsIF9vcHRzKSB7XG4gIHZhciBvdXQgPSB7IFR5cGVzOiBbXSwgQ2VsbDogW10sIFZhbHVlOiBbXSB9O1xuICB2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuICB2YXIgc3RhdGUgPSBbXTtcbiAgdmFyIHBhc3MgPSBmYWxzZTtcbiAgdmFyIG1ldGF0eXBlID0gMjtcbiAgcmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uKHZhbCwgUiwgUlQpIHtcbiAgICBzd2l0Y2ggKFJUKSB7XG4gICAgICBjYXNlIDMzNTpcbiAgICAgICAgb3V0LlR5cGVzLnB1c2goeyBuYW1lOiB2YWwubmFtZSB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDUxOlxuICAgICAgICB2YWwuZm9yRWFjaChmdW5jdGlvbihyKSB7XG4gICAgICAgICAgaWYgKG1ldGF0eXBlID09IDEpXG4gICAgICAgICAgICBvdXQuQ2VsbC5wdXNoKHsgdHlwZTogb3V0LlR5cGVzW3JbMF0gLSAxXS5uYW1lLCBpbmRleDogclsxXSB9KTtcbiAgICAgICAgICBlbHNlIGlmIChtZXRhdHlwZSA9PSAwKVxuICAgICAgICAgICAgb3V0LlZhbHVlLnB1c2goeyB0eXBlOiBvdXQuVHlwZXNbclswXSAtIDFdLm5hbWUsIGluZGV4OiByWzFdIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMzNzpcbiAgICAgICAgbWV0YXR5cGUgPSB2YWwgPyAxIDogMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMzODpcbiAgICAgICAgbWV0YXR5cGUgPSAyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzU6XG4gICAgICAgIHN0YXRlLnB1c2goUlQpO1xuICAgICAgICBwYXNzID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM2OlxuICAgICAgICBzdGF0ZS5wb3AoKTtcbiAgICAgICAgcGFzcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChSLlQpIHtcbiAgICAgICAgfSBlbHNlIGlmICghcGFzcyB8fCBvcHRzLldURiAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGggLSAxXSAhPSAzNSlcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfeGxtZXRhX2JpbigpIHtcbiAgdmFyIGJhID0gYnVmX2FycmF5KCk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzMyKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzQsIHdyaXRlX1VJbnQzMkxFKDEpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzUsIHdyaXRlX0JydE1kdGluZm8oe1xuICAgIG5hbWU6IFwiWExEQVBSXCIsXG4gICAgdmVyc2lvbjogMTJlNCxcbiAgICBmbGFnczogMzQ5NjY1NzA3MlxuICB9KSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM2KTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzksIHdyaXRlX0JydEJlZ2luRXNmbWQoMSwgXCJYTERBUFJcIikpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDUyKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzNSwgd3JpdGVfVUludDMyTEUoNTE0KSk7XG4gIHdyaXRlX3JlY29yZChiYSwgNDA5Niwgd3JpdGVfVUludDMyTEUoMCkpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDQwOTcsIHdyaXRldWludDE2KDEpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzNik7XG4gIHdyaXRlX3JlY29yZChiYSwgNTMpO1xuICB3cml0ZV9yZWNvcmQoYmEsIDM0MCk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM3LCB3cml0ZV9CcnRCZWdpbkVzbWRiKDEsIHRydWUpKTtcbiAgd3JpdGVfcmVjb3JkKGJhLCA1MSwgd3JpdGVfQnJ0TWRiKFtbMSwgMF1dKSk7XG4gIHdyaXRlX3JlY29yZChiYSwgMzM4KTtcbiAgd3JpdGVfcmVjb3JkKGJhLCAzMzMpO1xuICByZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV94bG1ldGFfeG1sKGRhdGEsIG5hbWUsIG9wdHMpIHtcbiAgdmFyIG91dCA9IHsgVHlwZXM6IFtdLCBDZWxsOiBbXSwgVmFsdWU6IFtdIH07XG4gIGlmICghZGF0YSlcbiAgICByZXR1cm4gb3V0O1xuICB2YXIgcGFzcyA9IGZhbHNlO1xuICB2YXIgbWV0YXR5cGUgPSAyO1xuICB2YXIgbGFzdG1ldGE7XG4gIGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24oeCkge1xuICAgIHZhciB5ID0gcGFyc2V4bWx0YWcoeCk7XG4gICAgc3dpdGNoIChzdHJpcF9ucyh5WzBdKSkge1xuICAgICAgY2FzZSBcIjw/eG1sXCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxtZXRhZGF0YVwiOlxuICAgICAgY2FzZSBcIjwvbWV0YWRhdGE+XCI6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxtZXRhZGF0YVR5cGVzXCI6XG4gICAgICBjYXNlIFwiPC9tZXRhZGF0YVR5cGVzPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8bWV0YWRhdGFUeXBlXCI6XG4gICAgICAgIG91dC5UeXBlcy5wdXNoKHsgbmFtZTogeS5uYW1lIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L21ldGFkYXRhVHlwZT5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGZ1dHVyZU1ldGFkYXRhXCI6XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgb3V0LlR5cGVzLmxlbmd0aDsgKytqKVxuICAgICAgICAgIGlmIChvdXQuVHlwZXNbal0ubmFtZSA9PSB5Lm5hbWUpXG4gICAgICAgICAgICBsYXN0bWV0YSA9IG91dC5UeXBlc1tqXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9mdXR1cmVNZXRhZGF0YT5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGJrPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2JrPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8cmNcIjpcbiAgICAgICAgaWYgKG1ldGF0eXBlID09IDEpXG4gICAgICAgICAgb3V0LkNlbGwucHVzaCh7IHR5cGU6IG91dC5UeXBlc1t5LnQgLSAxXS5uYW1lLCBpbmRleDogK3kudiB9KTtcbiAgICAgICAgZWxzZSBpZiAobWV0YXR5cGUgPT0gMClcbiAgICAgICAgICBvdXQuVmFsdWUucHVzaCh7IHR5cGU6IG91dC5UeXBlc1t5LnQgLSAxXS5uYW1lLCBpbmRleDogK3kudiB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC9yYz5cIjpcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPGNlbGxNZXRhZGF0YVwiOlxuICAgICAgICBtZXRhdHlwZSA9IDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjwvY2VsbE1ldGFkYXRhPlwiOlxuICAgICAgICBtZXRhdHlwZSA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjx2YWx1ZU1ldGFkYXRhXCI6XG4gICAgICAgIG1ldGF0eXBlID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiPC92YWx1ZU1ldGFkYXRhPlwiOlxuICAgICAgICBtZXRhdHlwZSA9IDI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIjxleHRMc3RcIjpcbiAgICAgIGNhc2UgXCI8ZXh0THN0PlwiOlxuICAgICAgY2FzZSBcIjwvZXh0THN0PlwiOlxuICAgICAgY2FzZSBcIjxleHRMc3QvPlwiOlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8ZXh0XCI6XG4gICAgICAgIHBhc3MgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8L2V4dD5cIjpcbiAgICAgICAgcGFzcyA9IGZhbHNlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCI8cnZiXCI6XG4gICAgICAgIGlmICghbGFzdG1ldGEpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGlmICghbGFzdG1ldGEub2Zmc2V0cylcbiAgICAgICAgICBsYXN0bWV0YS5vZmZzZXRzID0gW107XG4gICAgICAgIGxhc3RtZXRhLm9mZnNldHMucHVzaCgreS5pKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIXBhc3MgJiYgb3B0cy5XVEYpXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5yZWNvZ25pemVkIFwiICsgeVswXSArIFwiIGluIG1ldGFkYXRhXCIpO1xuICAgIH1cbiAgICByZXR1cm4geDtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV94bG1ldGFfeG1sKCkge1xuICB2YXIgbyA9IFtYTUxfSEVBREVSXTtcbiAgby5wdXNoKCc8bWV0YWRhdGEgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiB4bWxuczp4bHJkPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE3L3JpY2hkYXRhXCIgeG1sbnM6eGRhPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE3L2R5bmFtaWNhcnJheVwiPlxcbiAgPG1ldGFkYXRhVHlwZXMgY291bnQ9XCIxXCI+XFxuICAgIDxtZXRhZGF0YVR5cGUgbmFtZT1cIlhMREFQUlwiIG1pblN1cHBvcnRlZFZlcnNpb249XCIxMjAwMDBcIiBjb3B5PVwiMVwiIHBhc3RlQWxsPVwiMVwiIHBhc3RlVmFsdWVzPVwiMVwiIG1lcmdlPVwiMVwiIHNwbGl0Rmlyc3Q9XCIxXCIgcm93Q29sU2hpZnQ9XCIxXCIgY2xlYXJGb3JtYXRzPVwiMVwiIGNsZWFyQ29tbWVudHM9XCIxXCIgYXNzaWduPVwiMVwiIGNvZXJjZT1cIjFcIiBjZWxsTWV0YT1cIjFcIi8+XFxuICA8L21ldGFkYXRhVHlwZXM+XFxuICA8ZnV0dXJlTWV0YWRhdGEgbmFtZT1cIlhMREFQUlwiIGNvdW50PVwiMVwiPlxcbiAgICA8Yms+XFxuICAgICAgPGV4dExzdD5cXG4gICAgICAgIDxleHQgdXJpPVwie2JkYmI4Y2RjLWZhMWUtNDk2ZS1hODU3LTNjM2YzMGMwMjljM31cIj5cXG4gICAgICAgICAgPHhkYTpkeW5hbWljQXJyYXlQcm9wZXJ0aWVzIGZEeW5hbWljPVwiMVwiIGZDb2xsYXBzZWQ9XCIwXCIvPlxcbiAgICAgICAgPC9leHQ+XFxuICAgICAgPC9leHRMc3Q+XFxuICAgIDwvYms+XFxuICA8L2Z1dHVyZU1ldGFkYXRhPlxcbiAgPGNlbGxNZXRhZGF0YSBjb3VudD1cIjFcIj5cXG4gICAgPGJrPlxcbiAgICAgIDxyYyB0PVwiMVwiIHY9XCIwXCIvPlxcbiAgICA8L2JrPlxcbiAgPC9jZWxsTWV0YWRhdGE+XFxuPC9tZXRhZGF0YT4nKTtcbiAgcmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbi8qIDE4LjYgQ2FsY3VsYXRpb24gQ2hhaW4gKi9cbmZ1bmN0aW9uIHBhcnNlX2NjX3htbChkYXRhLyo6OiwgbmFtZSwgb3B0cyovKS8qOkFycmF5PGFueT4qLyB7XG5cdHZhciBkID0gW107XG5cdGlmKCFkYXRhKSByZXR1cm4gZDtcblx0dmFyIGkgPSAxO1xuXHQoZGF0YS5tYXRjaCh0YWdyZWdleCl8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHR2YXIgeSA9IHBhcnNleG1sdGFnKHgpO1xuXHRcdHN3aXRjaCh5WzBdKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXHRcdFx0LyogMTguNi4yICBjYWxjQ2hhaW4gQ1RfQ2FsY0NoYWluIDEgKi9cblx0XHRcdGNhc2UgJzxjYWxjQ2hhaW4nOiBjYXNlICc8Y2FsY0NoYWluPic6IGNhc2UgJzwvY2FsY0NoYWluPic6IGJyZWFrO1xuXHRcdFx0LyogMTguNi4xICBjIENUX0NhbGNDZWxsIDEgKi9cblx0XHRcdGNhc2UgJzxjJzogZGVsZXRlIHlbMF07IGlmKHkuaSkgaSA9IHkuaTsgZWxzZSB5LmkgPSBpOyBkLnB1c2goeSk7IGJyZWFrO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBkO1xufVxuXG4vL2Z1bmN0aW9uIHdyaXRlX2NjX3htbChkYXRhLCBvcHRzKSB7IH1cblxuLyogW01TLVhMU0JdIDIuNi40LjEgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENhbGNDaGFpbkl0ZW0kKGRhdGEpIHtcblx0dmFyIG91dCA9IHt9O1xuXHRvdXQuaSA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIGNlbGwgPSB7fTtcblx0Y2VsbC5yID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRjZWxsLmMgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG91dC5yID0gZW5jb2RlX2NlbGwoY2VsbCk7XG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0aWYoZmxhZ3MgJiAweDIpIG91dC5sID0gJzEnO1xuXHRpZihmbGFncyAmIDB4OCkgb3V0LmEgPSAnMSc7XG5cdHJldHVybiBvdXQ7XG59XG5cbi8qIDE4LjYgQ2FsY3VsYXRpb24gQ2hhaW4gKi9cbmZ1bmN0aW9uIHBhcnNlX2NjX2JpbihkYXRhLCBuYW1lLCBvcHRzKSB7XG5cdHZhciBvdXQgPSBbXTtcblx0dmFyIHBhc3MgPSBmYWxzZTtcblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIGhvcHBlcl9jYyh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDAzRjogLyogJ0JydENhbGNDaGFpbkl0ZW0kJyAqL1xuXHRcdFx0XHRvdXQucHVzaCh2YWwpOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cblxuLy9mdW5jdGlvbiB3cml0ZV9jY19iaW4oZGF0YSwgb3B0cykgeyB9XG4vKiAxOC4xNCBTdXBwbGVtZW50YXJ5IFdvcmtib29rIERhdGEgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsaW5rX3htbCgvKjo6ZGF0YSwgcmVsLCBuYW1lOnN0cmluZywgX29wdHMqLykge1xuXHQvL3ZhciBvcHRzID0gX29wdHMgfHwge307XG5cdC8vaWYob3B0cy5XVEYpIHRocm93IFwiWExTWCBFeHRlcm5hbCBMaW5rXCI7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy4yNSBFeHRlcm5hbCBMaW5rICovXG5mdW5jdGlvbiBwYXJzZV94bGlua19iaW4oZGF0YSwgcmVsLCBuYW1lLyo6c3RyaW5nKi8sIF9vcHRzKSB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblxuXHR2YXIgcGFzcyA9IGZhbHNlLCBlbmQgPSBmYWxzZTtcblxuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24geGxpbmtfcGFyc2UodmFsLCBSLCBSVCkge1xuXHRcdGlmKGVuZCkgcmV0dXJuO1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAxNjc6IC8qICdCcnRTdXBUYWJzJyAqL1xuXHRcdFx0Y2FzZSAweDAxNkI6IC8qICdCcnRFeHRlcm5UYWJsZVN0YXJ0JyAqL1xuXHRcdFx0Y2FzZSAweDAxNkM6IC8qICdCcnRFeHRlcm5UYWJsZUVuZCcgKi9cblx0XHRcdGNhc2UgMHgwMTZFOiAvKiAnQnJ0RXh0ZXJuUm93SGRyJyAqL1xuXHRcdFx0Y2FzZSAweDAxNkY6IC8qICdCcnRFeHRlcm5DZWxsQmxhbmsnICovXG5cdFx0XHRjYXNlIDB4MDE3MDogLyogJ0JydEV4dGVybkNlbGxSZWFsJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzE6IC8qICdCcnRFeHRlcm5DZWxsQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMTcyOiAvKiAnQnJ0RXh0ZXJuQ2VsbEVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAxNzM6IC8qICdCcnRFeHRlcm5DZWxsU3RyaW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAxRDg6IC8qICdCcnRFeHRlcm5WYWx1ZU1ldGEnICovXG5cdFx0XHRjYXNlIDB4MDI0MTogLyogJ0JydFN1cE5hbWVTdGFydCcgKi9cblx0XHRcdGNhc2UgMHgwMjQyOiAvKiAnQnJ0U3VwTmFtZVZhbHVlU3RhcnQnICovXG5cdFx0XHRjYXNlIDB4MDI0MzogLyogJ0JydFN1cE5hbWVWYWx1ZUVuZCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ0OiAvKiAnQnJ0U3VwTmFtZU51bScgKi9cblx0XHRcdGNhc2UgMHgwMjQ1OiAvKiAnQnJ0U3VwTmFtZUVycicgKi9cblx0XHRcdGNhc2UgMHgwMjQ2OiAvKiAnQnJ0U3VwTmFtZVN0JyAqL1xuXHRcdFx0Y2FzZSAweDAyNDc6IC8qICdCcnRTdXBOYW1lTmlsJyAqL1xuXHRcdFx0Y2FzZSAweDAyNDg6IC8qICdCcnRTdXBOYW1lQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMjQ5OiAvKiAnQnJ0U3VwTmFtZUZtbGEnICovXG5cdFx0XHRjYXNlIDB4MDI0QTogLyogJ0JydFN1cE5hbWVCaXRzJyAqL1xuXHRcdFx0Y2FzZSAweDAyNEI6IC8qICdCcnRTdXBOYW1lRW5kJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG59XG4vKiAyMC41IERyYXdpbmdNTCAtIFNwcmVhZHNoZWV0TUwgRHJhd2luZyAqL1xuLyogMjAuNS4yLjM1IHdzRHIgQ1RfRHJhd2luZyAqL1xuZnVuY3Rpb24gcGFyc2VfZHJhd2luZyhkYXRhLCByZWxzLyo6YW55Ki8pIHtcblx0aWYoIWRhdGEpIHJldHVybiBcIj8/XCI7XG5cdC8qXG5cdCAgQ2hhcnRzaGVldCBEcmF3aW5nOlxuXHQgICAtIDIwLjUuMi4zNSB3c0RyIENUX0RyYXdpbmdcblx0ICAgIC0gMjAuNS4yLjEgIGFic29sdXRlQW5jaG9yIENUX0Fic29sdXRlQW5jaG9yXG5cdCAgICAgLSAyMC41LjIuMTYgZ3JhcGhpY0ZyYW1lIENUX0dyYXBoaWNhbE9iamVjdEZyYW1lXG5cdCAgICAgIC0gMjAuMS4yLjIuMTYgZ3JhcGhpYyBDVF9HcmFwaGljYWxPYmplY3Rcblx0ICAgICAgIC0gMjAuMS4yLjIuMTcgZ3JhcGhpY0RhdGEgQ1RfR3JhcGhpY2FsT2JqZWN0RGF0YVxuICAgICAgICAgIC0gY2hhcnQgcmVmZXJlbmNlXG5cdCAgIHRoZSBhY3R1YWwgdHlwZSBpcyBiYXNlZCBvbiB0aGUgVVJJIG9mIHRoZSBncmFwaGljRGF0YVxuXHRcdFRPRE86IGhhbmRsZSBlbWJlZGRlZCBjaGFydHMgYW5kIG90aGVyIHR5cGVzIG9mIGdyYXBoaWNzXG5cdCovXG5cdHZhciBpZCA9IChkYXRhLm1hdGNoKC88YzpjaGFydCBbXj5dKnI6aWQ9XCIoW15cIl0qKVwiLyl8fFtcIlwiLFwiXCJdKVsxXTtcblxuXHRyZXR1cm4gcmVsc1snIWlkJ11baWRdLlRhcmdldDtcbn1cblxuLyogTC41LjUuMiBTcHJlYWRzaGVldE1MIENvbW1lbnRzICsgVk1MIFNjaGVtYSAqL1xudmFyIF9zaGFwZWlkID0gMTAyNDtcbmZ1bmN0aW9uIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQvKjpudW1iZXIqLywgY29tbWVudHMpIHtcblx0dmFyIGNzaXplID0gWzIxNjAwLCAyMTYwMF07XG5cdC8qIEwuNS4yLjEuMiBQYXRoIEF0dHJpYnV0ZSAqL1xuXHR2YXIgYmJveCA9IFtcIm0wLDBsMFwiLGNzaXplWzFdLGNzaXplWzBdLGNzaXplWzFdLGNzaXplWzBdLFwiMHhlXCJdLmpvaW4oXCIsXCIpO1xuXHR2YXIgbyA9IFtcblx0XHR3cml0ZXh0YWcoXCJ4bWxcIiwgbnVsbCwgeyAneG1sbnM6dic6IFhMTUxOUy52LCAneG1sbnM6byc6IFhMTUxOUy5vLCAneG1sbnM6eCc6IFhMTUxOUy54LCAneG1sbnM6bXYnOiBYTE1MTlMubXYgfSkucmVwbGFjZSgvXFwvPi8sXCI+XCIpLFxuXHRcdHdyaXRleHRhZyhcIm86c2hhcGVsYXlvdXRcIiwgd3JpdGV4dGFnKFwibzppZG1hcFwiLCBudWxsLCB7J3Y6ZXh0JzpcImVkaXRcIiwgJ2RhdGEnOnJJZH0pLCB7J3Y6ZXh0JzpcImVkaXRcIn0pLFxuXHRcdHdyaXRleHRhZyhcInY6c2hhcGV0eXBlXCIsIFtcblx0XHRcdHdyaXRleHRhZyhcInY6c3Ryb2tlXCIsIG51bGwsIHtqb2luc3R5bGU6XCJtaXRlclwifSksXG5cdFx0XHR3cml0ZXh0YWcoXCJ2OnBhdGhcIiwgbnVsbCwge2dyYWRpZW50c2hhcGVvazpcInRcIiwgJ286Y29ubmVjdHR5cGUnOlwicmVjdFwifSlcblx0XHRdLmpvaW4oXCJcIiksIHtpZDpcIl94MDAwMF90MjAyXCIsICdvOnNwdCc6MjAyLCBjb29yZHNpemU6Y3NpemUuam9pbihcIixcIikscGF0aDpiYm94fSlcblx0XTtcblx0d2hpbGUoX3NoYXBlaWQgPCBySWQgKiAxMDAwKSBfc2hhcGVpZCArPSAxMDAwO1xuXG5cdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oeCkge1xuXHR2YXIgYyA9IGRlY29kZV9jZWxsKHhbMF0pO1xuXHR2YXIgZmlsbG9wdHMgPSAvKjo6KCoveydjb2xvcjInOlwiI0JFRkY4MlwiLCAndHlwZSc6XCJncmFkaWVudFwifS8qOjogOmFueSkqLztcblx0aWYoZmlsbG9wdHMudHlwZSA9PSBcImdyYWRpZW50XCIpIGZpbGxvcHRzLmFuZ2xlID0gXCItMTgwXCI7XG5cdHZhciBmaWxscGFybSA9IGZpbGxvcHRzLnR5cGUgPT0gXCJncmFkaWVudFwiID8gd3JpdGV4dGFnKFwibzpmaWxsXCIsIG51bGwsIHt0eXBlOlwiZ3JhZGllbnRVbnNjYWxlZFwiLCAndjpleHQnOlwidmlld1wifSkgOiBudWxsO1xuXHR2YXIgZmlsbHhtbCA9IHdyaXRleHRhZygndjpmaWxsJywgZmlsbHBhcm0sIGZpbGxvcHRzKTtcblxuXHR2YXIgc2hhZGF0YSA9ICh7b246XCJ0XCIsICdvYnNjdXJlZCc6XCJ0XCJ9Lyo6YW55Ki8pO1xuXHQrK19zaGFwZWlkO1xuXG5cdG8gPSBvLmNvbmNhdChbXG5cdCc8djpzaGFwZScgKyB3eHRfaGVscGVyKHtcblx0XHRpZDonX3gwMDAwX3MnICsgX3NoYXBlaWQsXG5cdFx0dHlwZTpcIiNfeDAwMDBfdDIwMlwiLFxuXHRcdHN0eWxlOlwicG9zaXRpb246YWJzb2x1dGU7IG1hcmdpbi1sZWZ0OjgwcHQ7bWFyZ2luLXRvcDo1cHQ7d2lkdGg6MTA0cHQ7aGVpZ2h0OjY0cHQ7ei1pbmRleDoxMFwiICsgKHhbMV0uaGlkZGVuID8gXCI7dmlzaWJpbGl0eTpoaWRkZW5cIiA6IFwiXCIpICxcblx0XHRmaWxsY29sb3I6XCIjRUNGQUQ0XCIsXG5cdFx0c3Ryb2tlY29sb3I6XCIjZWRlYWExXCJcblx0fSkgKyAnPicsXG5cdFx0ZmlsbHhtbCxcblx0XHR3cml0ZXh0YWcoXCJ2OnNoYWRvd1wiLCBudWxsLCBzaGFkYXRhKSxcblx0XHR3cml0ZXh0YWcoXCJ2OnBhdGhcIiwgbnVsbCwgeydvOmNvbm5lY3R0eXBlJzpcIm5vbmVcIn0pLFxuXHRcdCc8djp0ZXh0Ym94PjxkaXYgc3R5bGU9XCJ0ZXh0LWFsaWduOmxlZnRcIj48L2Rpdj48L3Y6dGV4dGJveD4nLFxuXHRcdCc8eDpDbGllbnREYXRhIE9iamVjdFR5cGU9XCJOb3RlXCI+Jyxcblx0XHRcdCc8eDpNb3ZlV2l0aENlbGxzLz4nLFxuXHRcdFx0Jzx4OlNpemVXaXRoQ2VsbHMvPicsXG5cdFx0XHQvKiBQYXJ0IDQgMTkuNC4yLjMgQW5jaG9yIChBbmNob3IpICovXG5cdFx0XHR3cml0ZXRhZygneDpBbmNob3InLCBbYy5jKzEsIDAsIGMucisxLCAwLCBjLmMrMywgMjAsIGMucis1LCAyMF0uam9pbihcIixcIikpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6QXV0b0ZpbGwnLCBcIkZhbHNlXCIpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6Um93JywgU3RyaW5nKGMucikpLFxuXHRcdFx0d3JpdGV0YWcoJ3g6Q29sdW1uJywgU3RyaW5nKGMuYykpLFxuXHRcdFx0eFsxXS5oaWRkZW4gPyAnJyA6ICc8eDpWaXNpYmxlLz4nLFxuXHRcdCc8L3g6Q2xpZW50RGF0YT4nLFxuXHQnPC92OnNoYXBlPidcblx0XSk7IH0pO1xuXHRvLnB1c2goJzwveG1sPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gc2hlZXRfaW5zZXJ0X2NvbW1lbnRzKHNoZWV0LCBjb21tZW50cy8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8sIHRocmVhZGVkLyo6Ym9vbGVhbiovLCBwZW9wbGUvKjo/QXJyYXk8YW55PiovKSB7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgY2VsbC8qOkNlbGwqLztcblx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbihjb21tZW50KSB7XG5cdFx0dmFyIHIgPSBkZWNvZGVfY2VsbChjb21tZW50LnJlZik7XG5cdFx0aWYoZGVuc2UpIHtcblx0XHRcdGlmKCFzaGVldFtyLnJdKSBzaGVldFtyLnJdID0gW107XG5cdFx0XHRjZWxsID0gc2hlZXRbci5yXVtyLmNdO1xuXHRcdH0gZWxzZSBjZWxsID0gc2hlZXRbY29tbWVudC5yZWZdO1xuXHRcdGlmICghY2VsbCkge1xuXHRcdFx0Y2VsbCA9ICh7dDpcInpcIn0vKjphbnkqLyk7XG5cdFx0XHRpZihkZW5zZSkgc2hlZXRbci5yXVtyLmNdID0gY2VsbDtcblx0XHRcdGVsc2Ugc2hlZXRbY29tbWVudC5yZWZdID0gY2VsbDtcblx0XHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXXx8XCJCRFdHTzEwMDAwMDE6QTFcIik7XG5cdFx0XHRpZihyYW5nZS5zLnIgPiByLnIpIHJhbmdlLnMuciA9IHIucjtcblx0XHRcdGlmKHJhbmdlLmUuciA8IHIucikgcmFuZ2UuZS5yID0gci5yO1xuXHRcdFx0aWYocmFuZ2Uucy5jID4gci5jKSByYW5nZS5zLmMgPSByLmM7XG5cdFx0XHRpZihyYW5nZS5lLmMgPCByLmMpIHJhbmdlLmUuYyA9IHIuYztcblx0XHRcdHZhciBlbmNvZGVkID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdGlmIChlbmNvZGVkICE9PSBzaGVldFtcIiFyZWZcIl0pIHNoZWV0W1wiIXJlZlwiXSA9IGVuY29kZWQ7XG5cdFx0fVxuXG5cdFx0aWYgKCFjZWxsLmMpIGNlbGwuYyA9IFtdO1xuXHRcdHZhciBvLyo6Q29tbWVudCovID0gKHthOiBjb21tZW50LmF1dGhvciwgdDogY29tbWVudC50LCByOiBjb21tZW50LnIsIFQ6IHRocmVhZGVkfSk7XG5cdFx0aWYoY29tbWVudC5oKSBvLmggPSBjb21tZW50Lmg7XG5cblx0XHQvKiB0aHJlYWRlZCBjb21tZW50cyBhbHdheXMgb3ZlcnJpZGUgKi9cblx0XHRmb3IodmFyIGkgPSBjZWxsLmMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcblx0XHRcdGlmKCF0aHJlYWRlZCAmJiBjZWxsLmNbaV0uVCkgcmV0dXJuO1xuXHRcdFx0aWYodGhyZWFkZWQgJiYgIWNlbGwuY1tpXS5UKSBjZWxsLmMuc3BsaWNlKGksIDEpO1xuXHRcdH1cblx0XHRpZih0aHJlYWRlZCAmJiBwZW9wbGUpIGZvcihpID0gMDsgaSA8IHBlb3BsZS5sZW5ndGg7ICsraSkge1xuXHRcdFx0aWYoby5hID09IHBlb3BsZVtpXS5pZCkgeyBvLmEgPSBwZW9wbGVbaV0ubmFtZSB8fCBvLmE7IGJyZWFrOyB9XG5cdFx0fVxuXHRcdGNlbGwuYy5wdXNoKG8pO1xuXHR9KTtcbn1cblxuLyogMTguNyBDb21tZW50cyAqL1xuZnVuY3Rpb24gcGFyc2VfY29tbWVudHNfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykvKjpBcnJheTxSYXdDb21tZW50PiovIHtcblx0LyogMTguNy42IENUX0NvbW1lbnRzICovXG5cdGlmKGRhdGEubWF0Y2goLzwoPzpcXHcrOik/Y29tbWVudHMgKlxcLz4vKSkgcmV0dXJuIFtdO1xuXHR2YXIgYXV0aG9ycy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY29tbWVudExpc3QvKjpBcnJheTxSYXdDb21tZW50PiovID0gW107XG5cdHZhciBhdXRodGFnID0gZGF0YS5tYXRjaCgvPCg/Olxcdys6KT9hdXRob3JzPihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9hdXRob3JzPi8pO1xuXHRpZihhdXRodGFnICYmIGF1dGh0YWdbMV0pIGF1dGh0YWdbMV0uc3BsaXQoLzxcXC9cXHcqOj9hdXRob3I+LykuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0aWYoeCA9PT0gXCJcIiB8fCB4LnRyaW0oKSA9PT0gXCJcIikgcmV0dXJuO1xuXHRcdHZhciBhID0geC5tYXRjaCgvPCg/Olxcdys6KT9hdXRob3JbXj5dKj4oLiopLyk7XG5cdFx0aWYoYSkgYXV0aG9ycy5wdXNoKGFbMV0pO1xuXHR9KTtcblx0dmFyIGNtbnR0YWcgPSBkYXRhLm1hdGNoKC88KD86XFx3KzopP2NvbW1lbnRMaXN0PihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT9jb21tZW50TGlzdD4vKTtcblx0aWYoY21udHRhZyAmJiBjbW50dGFnWzFdKSBjbW50dGFnWzFdLnNwbGl0KC88XFwvXFx3Kjo/Y29tbWVudD4vKS5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRpZih4ID09PSBcIlwiIHx8IHgudHJpbSgpID09PSBcIlwiKSByZXR1cm47XG5cdFx0dmFyIGNtID0geC5tYXRjaCgvPCg/Olxcdys6KT9jb21tZW50W14+XSo+Lyk7XG5cdFx0aWYoIWNtKSByZXR1cm47XG5cdFx0dmFyIHkgPSBwYXJzZXhtbHRhZyhjbVswXSk7XG5cdFx0dmFyIGNvbW1lbnQvKjpSYXdDb21tZW50Ki8gPSAoeyBhdXRob3I6IHkuYXV0aG9ySWQgJiYgYXV0aG9yc1t5LmF1dGhvcklkXSB8fCBcInNoZWV0anNnaG9zdFwiLCByZWY6IHkucmVmLCBndWlkOiB5Lmd1aWQgfS8qOmFueSovKTtcblx0XHR2YXIgY2VsbCA9IGRlY29kZV9jZWxsKHkucmVmKTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSBjZWxsLnIpIHJldHVybjtcblx0XHR2YXIgdGV4dE1hdGNoID0geC5tYXRjaCgvPCg/Olxcdys6KT90ZXh0PihbXFxzXFxTXSopPFxcLyg/Olxcdys6KT90ZXh0Pi8pO1xuXHRcdHZhciBydCA9ICEhdGV4dE1hdGNoICYmICEhdGV4dE1hdGNoWzFdICYmIHBhcnNlX3NpKHRleHRNYXRjaFsxXSkgfHwge3I6XCJcIix0OlwiXCIsaDpcIlwifTtcblx0XHRjb21tZW50LnIgPSBydC5yO1xuXHRcdGlmKHJ0LnIgPT0gXCI8dD48L3Q+XCIpIHJ0LnQgPSBydC5oID0gXCJcIjtcblx0XHRjb21tZW50LnQgPSAocnQudHx8XCJcIikucmVwbGFjZSgvXFxyXFxuL2csXCJcXG5cIikucmVwbGFjZSgvXFxyL2csXCJcXG5cIik7XG5cdFx0aWYob3B0cy5jZWxsSFRNTCkgY29tbWVudC5oID0gcnQuaDtcblx0XHRjb21tZW50TGlzdC5wdXNoKGNvbW1lbnQpO1xuXHR9KTtcblx0cmV0dXJuIGNvbW1lbnRMaXN0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9jb21tZW50c194bWwoZGF0YS8qOjosIG9wdHMqLykge1xuXHR2YXIgbyA9IFtYTUxfSEVBREVSLCB3cml0ZXh0YWcoJ2NvbW1lbnRzJywgbnVsbCwgeyAneG1sbnMnOiBYTUxOU19tYWluWzBdIH0pXTtcblxuXHR2YXIgaWF1dGhvci8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvLnB1c2goXCI8YXV0aG9ycz5cIik7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbih4KSB7IHhbMV0uZm9yRWFjaChmdW5jdGlvbih3KSB7IHZhciBhID0gZXNjYXBleG1sKHcuYSk7XG5cdFx0aWYoaWF1dGhvci5pbmRleE9mKGEpID09IC0xKSB7XG5cdFx0XHRpYXV0aG9yLnB1c2goYSk7XG5cdFx0XHRvLnB1c2goXCI8YXV0aG9yPlwiICsgYSArIFwiPC9hdXRob3I+XCIpO1xuXHRcdH1cblx0XHRpZih3LlQgJiYgdy5JRCAmJiBpYXV0aG9yLmluZGV4T2YoXCJ0Yz1cIiArIHcuSUQpID09IC0xKSB7XG5cdFx0XHRpYXV0aG9yLnB1c2goXCJ0Yz1cIiArIHcuSUQpO1xuXHRcdFx0by5wdXNoKFwiPGF1dGhvcj5cIiArIFwidGM9XCIgKyB3LklEICsgXCI8L2F1dGhvcj5cIik7XG5cdFx0fVxuXHR9KTsgfSk7XG5cdGlmKGlhdXRob3IubGVuZ3RoID09IDApIHsgaWF1dGhvci5wdXNoKFwiU2hlZXRKNVwiKTsgby5wdXNoKFwiPGF1dGhvcj5TaGVldEo1PC9hdXRob3I+XCIpOyB9XG5cdG8ucHVzaChcIjwvYXV0aG9ycz5cIik7XG5cdG8ucHVzaChcIjxjb21tZW50TGlzdD5cIik7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihkKSB7XG5cdFx0LyogMTguNy4zIENUX0NvbW1lbnQgKi9cblx0XHR2YXIgbGFzdGF1dGhvciA9IDAsIHRzID0gW107XG5cdFx0aWYoZFsxXVswXSAmJiBkWzFdWzBdLlQgJiYgZFsxXVswXS5JRCkgbGFzdGF1dGhvciA9IGlhdXRob3IuaW5kZXhPZihcInRjPVwiICsgZFsxXVswXS5JRCk7XG5cdFx0ZWxzZSBkWzFdLmZvckVhY2goZnVuY3Rpb24oYykge1xuXHRcdFx0aWYoYy5hKSBsYXN0YXV0aG9yID0gaWF1dGhvci5pbmRleE9mKGVzY2FwZXhtbChjLmEpKTtcblx0XHRcdHRzLnB1c2goYy50fHxcIlwiKTtcblx0XHR9KTtcblx0XHRvLnB1c2goJzxjb21tZW50IHJlZj1cIicgKyBkWzBdICsgJ1wiIGF1dGhvcklkPVwiJyArIGxhc3RhdXRob3IgKyAnXCI+PHRleHQ+Jyk7XG5cdFx0aWYodHMubGVuZ3RoIDw9IDEpIG8ucHVzaCh3cml0ZXRhZyhcInRcIiwgZXNjYXBleG1sKHRzWzBdfHxcIlwiKSkpO1xuXHRcdGVsc2Uge1xuXHRcdFx0LyogYmFzZWQgb24gVGhyZWFkZWQgQ29tbWVudHMgLT4gQ29tbWVudHMgcHJvamVjdGlvbiAqL1xuXHRcdFx0dmFyIHQgPSBcIkNvbW1lbnQ6XFxuICAgIFwiICsgKHRzWzBdKSArIFwiXFxuXCI7XG5cdFx0XHRmb3IodmFyIGkgPSAxOyBpIDwgdHMubGVuZ3RoOyArK2kpIHQgKz0gXCJSZXBseTpcXG4gICAgXCIgKyB0c1tpXSArIFwiXFxuXCI7XG5cdFx0XHRvLnB1c2god3JpdGV0YWcoXCJ0XCIsIGVzY2FwZXhtbCh0KSkpO1xuXHRcdH1cblx0XHRvLnB1c2goJzwvdGV4dD48L2NvbW1lbnQ+Jyk7XG5cdH0pO1xuXHRvLnB1c2goXCI8L2NvbW1lbnRMaXN0PlwiKTtcblx0aWYoby5sZW5ndGg+MikgeyBvW28ubGVuZ3RoXSA9ICgnPC9jb21tZW50cz4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTWF0gMi4xLjE3ICovXG5mdW5jdGlvbiBwYXJzZV90Y21udF94bWwoZGF0YS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHR2YXIgb3V0ID0gW107XG5cdHZhciBwYXNzID0gZmFsc2UsIGNvbW1lbnQgPSB7fSwgdGlkeCA9IDA7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3RjbW50KHgsIGlkeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cblx0XHRcdC8qIDIuNi4yMDcgVGhyZWFkZWRDb21tZW50cyBDVF9UaHJlYWRlZENvbW1lbnRzICovXG5cdFx0XHRjYXNlICc8VGhyZWFkZWRDb21tZW50cyc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9UaHJlYWRlZENvbW1lbnRzPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjA1IHRocmVhZGVkQ29tbWVudCBDVF9UaHJlYWRlZENvbW1lbnQgKi9cblx0XHRcdGNhc2UgJzx0aHJlYWRlZENvbW1lbnQnOiBjb21tZW50ID0ge2F1dGhvcjogeS5wZXJzb25JZCwgZ3VpZDogeS5pZCwgcmVmOiB5LnJlZiwgVDogMX07IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90aHJlYWRlZENvbW1lbnQ+JzogaWYoY29tbWVudC50ICE9IG51bGwpIG91dC5wdXNoKGNvbW1lbnQpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnPHRleHQ+JzogY2FzZSAnPHRleHQnOiB0aWR4ID0gaWR4ICsgeC5sZW5ndGg7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC90ZXh0Pic6IGNvbW1lbnQudCA9IGRhdGEuc2xpY2UodGlkeCwgaWR4KS5yZXBsYWNlKC9cXHJcXG4vZywgXCJcXG5cIikucmVwbGFjZSgvXFxyL2csIFwiXFxuXCIpOyBicmVhaztcblxuXHRcdFx0LyogMi42LjIwNiBtZW50aW9ucyBDVF9UaHJlYWRlZENvbW1lbnRNZW50aW9ucyBUT0RPICovXG5cdFx0XHRjYXNlICc8bWVudGlvbnMnOiBjYXNlICc8bWVudGlvbnM+JzogcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9tZW50aW9ucz4nOiBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjAyIG1lbnRpb24gQ1RfTWVudGlvbiBUT0RPICovXG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogY2FzZSAnPGV4dExzdC8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjcgIGV4dCBDVF9FeHRlbnNpb24gKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3M9dHJ1ZTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2V4dD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDogaWYoIXBhc3MgJiYgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcigndW5yZWNvZ25pemVkICcgKyB5WzBdICsgJyBpbiB0aHJlYWRlZCBjb21tZW50cycpO1xuXHRcdH1cblx0XHRyZXR1cm4geDtcblx0fSk7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3RjbW50X3htbChjb21tZW50cywgcGVvcGxlLCBvcHRzKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnVGhyZWFkZWRDb21tZW50cycsIG51bGwsIHsgJ3htbG5zJzogWE1MTlMuVENNTlQgfSkucmVwbGFjZSgvW1xcL10+LywgXCI+XCIpXTtcblx0Y29tbWVudHMuZm9yRWFjaChmdW5jdGlvbihjYXJyKSB7XG5cdFx0dmFyIHJvb3RpZCA9IFwiXCI7XG5cdFx0KGNhcnJbMV0gfHwgW10pLmZvckVhY2goZnVuY3Rpb24oYywgaWR4KSB7XG5cdFx0XHRpZighYy5UKSB7IGRlbGV0ZSBjLklEOyByZXR1cm47IH1cblx0XHRcdGlmKGMuYSAmJiBwZW9wbGUuaW5kZXhPZihjLmEpID09IC0xKSBwZW9wbGUucHVzaChjLmEpO1xuXHRcdFx0dmFyIHRjb3B0cyA9IHtcblx0XHRcdFx0cmVmOiBjYXJyWzBdLFxuXHRcdFx0XHRpZDogXCJ7NTRFRTc5NTEtNzI2Mi00MjAwLTY5NjktXCIgKyAoXCIwMDAwMDAwMDAwMDBcIiArIG9wdHMudGNpZCsrKS5zbGljZSgtMTIpICsgXCJ9XCJcblx0XHRcdH07XG5cdFx0XHRpZihpZHggPT0gMCkgcm9vdGlkID0gdGNvcHRzLmlkO1xuXHRcdFx0ZWxzZSB0Y29wdHMucGFyZW50SWQgPSByb290aWQ7XG5cdFx0XHRjLklEID0gdGNvcHRzLmlkO1xuXHRcdFx0aWYoYy5hKSB0Y29wdHMucGVyc29uSWQgPSBcIns1NEVFNzk1MC03MjYyLTQyMDAtNjk2OS1cIiArIChcIjAwMDAwMDAwMDAwMFwiICsgcGVvcGxlLmluZGV4T2YoYy5hKSkuc2xpY2UoLTEyKSArIFwifVwiO1xuXHRcdFx0by5wdXNoKHdyaXRleHRhZygndGhyZWFkZWRDb21tZW50Jywgd3JpdGV0YWcoJ3RleHQnLCBjLnR8fFwiXCIpLCB0Y29wdHMpKTtcblx0XHR9KTtcblx0fSk7XG5cdG8ucHVzaCgnPC9UaHJlYWRlZENvbW1lbnRzPicpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTWF0gMi4xLjE4ICovXG5mdW5jdGlvbiBwYXJzZV9wZW9wbGVfeG1sKGRhdGEvKjpzdHJpbmcqLywgb3B0cykge1xuXHR2YXIgb3V0ID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3RjbW50KHgpIHtcblx0XHR2YXIgeS8qOmFueSovID0gcGFyc2V4bWx0YWcoeCk7XG5cdFx0c3dpdGNoKHN0cmlwX25zKHlbMF0pKSB7XG5cdFx0XHRjYXNlICc8P3htbCc6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjQuODUgcGVyc29uTGlzdCBDVF9QZXJzb25MaXN0ICovXG5cdFx0XHRjYXNlICc8cGVyc29uTGlzdCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9wZXJzb25MaXN0Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAyLjYuMjAzIHBlcnNvbiBDVF9QZXJzb24gVE9ETzogcHJvdmlkZXJzICovXG5cdFx0XHRjYXNlICc8cGVyc29uJzogb3V0LnB1c2goe25hbWU6IHkuZGlzcGxheW5hbWUsIGlkOiB5LmlkIH0pOyBicmVhaztcblx0XHRcdGNhc2UgJzwvcGVyc29uPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEwIGV4dExzdCBDVF9FeHRlbnNpb25MaXN0ID8gKi9cblx0XHRcdGNhc2UgJzxleHRMc3QnOiBjYXNlICc8ZXh0THN0Pic6IGNhc2UgJzwvZXh0THN0Pic6IGNhc2UgJzxleHRMc3QvPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi43ICBleHQgQ1RfRXh0ZW5zaW9uICsgKi9cblx0XHRcdGNhc2UgJzxleHQnOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKCFwYXNzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gdGhyZWFkZWQgY29tbWVudHMnKTtcblx0XHR9XG5cdFx0cmV0dXJuIHg7XG5cdH0pO1xuXHRyZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfcGVvcGxlX3htbChwZW9wbGUvKiwgb3B0cyovKSB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygncGVyc29uTGlzdCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOUy5UQ01OVCxcblx0XHQneG1sbnM6eCc6IFhNTE5TX21haW5bMF1cblx0fSkucmVwbGFjZSgvW1xcL10+LywgXCI+XCIpXTtcblx0cGVvcGxlLmZvckVhY2goZnVuY3Rpb24ocGVyc29uLCBpZHgpIHtcblx0XHRvLnB1c2god3JpdGV4dGFnKCdwZXJzb24nLCBudWxsLCB7XG5cdFx0XHRkaXNwbGF5TmFtZTogcGVyc29uLFxuXHRcdFx0aWQ6IFwiezU0RUU3OTUwLTcyNjItNDIwMC02OTY5LVwiICsgKFwiMDAwMDAwMDAwMDAwXCIgKyBpZHgpLnNsaWNlKC0xMikgKyBcIn1cIixcblx0XHRcdHVzZXJJZDogcGVyc29uLFxuXHRcdFx0cHJvdmlkZXJJZDogXCJOb25lXCJcblx0XHR9KSk7XG5cdH0pO1xuXHRvLnB1c2goXCI8L3BlcnNvbkxpc3Q+XCIpO1xuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuLyogW01TLVhMU0JdIDIuNC4yOCBCcnRCZWdpbkNvbW1lbnQgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydEJlZ2luQ29tbWVudChkYXRhKSB7XG5cdHZhciBvdXQgPSB7fTtcblx0b3V0LmlhdXRob3IgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZnggPSBwYXJzZV9VbmNoZWNrZWRSZlgoZGF0YSwgMTYpO1xuXHRvdXQucmZ4ID0gcmZ4LnM7XG5cdG91dC5yZWYgPSBlbmNvZGVfY2VsbChyZngucyk7XG5cdGRhdGEubCArPSAxNjsgLyp2YXIgZ3VpZCA9IHBhcnNlX0dVSUQoZGF0YSk7ICovXG5cdHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbkNvbW1lbnQoZGF0YSwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDM2KTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhWzFdLmlhdXRob3IpO1xuXHR3cml0ZV9VbmNoZWNrZWRSZlgoKGRhdGFbMF0vKjphbnkqLyksIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMjcgQnJ0Q29tbWVudEF1dGhvciAqL1xudmFyIHBhcnNlX0JydENvbW1lbnRBdXRob3IgPSBwYXJzZV9YTFdpZGVTdHJpbmc7XG5mdW5jdGlvbiB3cml0ZV9CcnRDb21tZW50QXV0aG9yKGRhdGEpIHsgcmV0dXJuIHdyaXRlX1hMV2lkZVN0cmluZyhkYXRhLnNsaWNlKDAsIDU0KSk7IH1cblxuLyogW01TLVhMU0JdIDIuMS43LjggQ29tbWVudHMgKi9cbmZ1bmN0aW9uIHBhcnNlX2NvbW1lbnRzX2JpbihkYXRhLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHR2YXIgb3V0Lyo6QXJyYXk8UmF3Q29tbWVudD4qLyA9IFtdO1xuXHR2YXIgYXV0aG9ycy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgYyA9IHt9O1xuXHR2YXIgcGFzcyA9IGZhbHNlO1xuXHRyZWNvcmRob3BwZXIoZGF0YSwgZnVuY3Rpb24gaG9wcGVyX2NtbnQodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAyNzg6IC8qICdCcnRDb21tZW50QXV0aG9yJyAqL1xuXHRcdFx0XHRhdXRob3JzLnB1c2godmFsKTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDI3QjogLyogJ0JydEJlZ2luQ29tbWVudCcgKi9cblx0XHRcdFx0YyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDI3RDogLyogJ0JydENvbW1lbnRUZXh0JyAqL1xuXHRcdFx0XHRjLnQgPSB2YWwudDsgYy5oID0gdmFsLmg7IGMuciA9IHZhbC5yOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMjdDOiAvKiAnQnJ0RW5kQ29tbWVudCcgKi9cblx0XHRcdFx0Yy5hdXRob3IgPSBhdXRob3JzW2MuaWF1dGhvcl07XG5cdFx0XHRcdGRlbGV0ZSAoYy8qOmFueSovKS5pYXV0aG9yO1xuXHRcdFx0XHRpZihvcHRzLnNoZWV0Um93cyAmJiBjLnJmeCAmJiBvcHRzLnNoZWV0Um93cyA8PSBjLnJmeC5yKSBicmVhaztcblx0XHRcdFx0aWYoIWMudCkgYy50ID0gXCJcIjtcblx0XHRcdFx0ZGVsZXRlIGMucmZ4OyBvdXQucHVzaChjKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovIGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi8gYnJlYWs7XG5cblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0ZWxzZSBpZighcGFzcyB8fCBvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfY29tbWVudHNfYmluKGRhdGEvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBpYXV0aG9yLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc0IC8qIEJydEJlZ2luQ29tbWVudHMgKi8pO1xuXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjc2IC8qIEJydEJlZ2luQ29tbWVudEF1dGhvcnMgKi8pO1xuXHRkYXRhLmZvckVhY2goZnVuY3Rpb24oY29tbWVudCkge1xuXHRcdGNvbW1lbnRbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7XG5cdFx0XHRpZihpYXV0aG9yLmluZGV4T2YoYy5hKSA+IC0xKSByZXR1cm47XG5cdFx0XHRpYXV0aG9yLnB1c2goYy5hLnNsaWNlKDAsNTQpKTtcblx0XHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjc4IC8qIEJydENvbW1lbnRBdXRob3IgKi8sIHdyaXRlX0JydENvbW1lbnRBdXRob3IoYy5hKSk7XG5cdFx0fSk7XG5cdH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3NyAvKiBCcnRFbmRDb21tZW50QXV0aG9ycyAqLyk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzkgLyogQnJ0QmVnaW5Db21tZW50TGlzdCAqLyk7XG5cdGRhdGEuZm9yRWFjaChmdW5jdGlvbihjb21tZW50KSB7XG5cdFx0Y29tbWVudFsxXS5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRcdGMuaWF1dGhvciA9IGlhdXRob3IuaW5kZXhPZihjLmEpO1xuXHRcdFx0dmFyIHJhbmdlID0ge3M6ZGVjb2RlX2NlbGwoY29tbWVudFswXSksZTpkZWNvZGVfY2VsbChjb21tZW50WzBdKX07XG5cdFx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QiAvKiBCcnRCZWdpbkNvbW1lbnQgKi8sIHdyaXRlX0JydEJlZ2luQ29tbWVudChbcmFuZ2UsIGNdKSk7XG5cdFx0XHRpZihjLnQgJiYgYy50Lmxlbmd0aCA+IDApIHdyaXRlX3JlY29yZChiYSwgMHgwMjdEIC8qIEJydENvbW1lbnRUZXh0ICovLCB3cml0ZV9CcnRDb21tZW50VGV4dChjKSk7XG5cdFx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QyAvKiBCcnRFbmRDb21tZW50ICovKTtcblx0XHRcdGRlbGV0ZSBjLmlhdXRob3I7XG5cdFx0fSk7XG5cdH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDI3QSAvKiBCcnRFbmRDb21tZW50TGlzdCAqLyk7XG5cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyNzUgLyogQnJ0RW5kQ29tbWVudHMgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG52YXIgQ1RfVkJBID0gXCJhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNlLnZiYVByb2plY3RcIjtcbmZ1bmN0aW9uIG1ha2VfdmJhX3hscyhjZmIpIHtcbiAgdmFyIG5ld2NmYiA9IENGQi51dGlscy5jZmJfbmV3KHsgcm9vdDogXCJSXCIgfSk7XG4gIGNmYi5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwLCBpKSB7XG4gICAgaWYgKHAuc2xpY2UoLTEpID09PSBcIi9cIiB8fCAhcC5tYXRjaCgvX1ZCQV9QUk9KRUNUX0NVUi8pKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBuZXdwYXRoID0gcC5yZXBsYWNlKC9eW15cXC9dKi8sIFwiUlwiKS5yZXBsYWNlKC9cXC9fVkJBX1BST0pFQ1RfQ1VSXFx1MDAwMCovLCBcIlwiKTtcbiAgICBDRkIudXRpbHMuY2ZiX2FkZChuZXdjZmIsIG5ld3BhdGgsIGNmYi5GaWxlSW5kZXhbaV0uY29udGVudCk7XG4gIH0pO1xuICByZXR1cm4gQ0ZCLndyaXRlKG5ld2NmYik7XG59XG5mdW5jdGlvbiBmaWxsX3ZiYV94bHMoY2ZiLCB2YmEpIHtcbiAgdmJhLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHAsIGkpIHtcbiAgICBpZiAoaSA9PSAwKVxuICAgICAgcmV0dXJuO1xuICAgIHZhciBuZXdwYXRoID0gcC5yZXBsYWNlKC9bXlxcL10qW1xcL10vLCBcIi9fVkJBX1BST0pFQ1RfQ1VSL1wiKTtcbiAgICBpZiAobmV3cGF0aC5zbGljZSgtMSkgIT09IFwiL1wiKVxuICAgICAgQ0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCBuZXdwYXRoLCB2YmEuRmlsZUluZGV4W2ldLmNvbnRlbnQpO1xuICB9KTtcbn1cbnZhciBWQkFGTVRTID0gW1wieGxzYlwiLCBcInhsc21cIiwgXCJ4bGFtXCIsIFwiYmlmZjhcIiwgXCJ4bGFcIl07XG4vKiBtYWNybyBhbmQgZGlhbG9nIHNoZWV0IHN0dWJzICovXG5mdW5jdGlvbiBwYXJzZV9kc19iaW4oLyo6OmRhdGE6YW55LCBvcHRzLCBpZHg6bnVtYmVyLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7IHJldHVybiB7JyF0eXBlJzonZGlhbG9nJ307IH1cbmZ1bmN0aW9uIHBhcnNlX2RzX3htbCgvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidkaWFsb2cnfTsgfVxuZnVuY3Rpb24gcGFyc2VfbXNfYmluKC8qOjpkYXRhOmFueSwgb3B0cywgaWR4Om51bWJlciwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8geyByZXR1cm4geychdHlwZSc6J21hY3JvJ307IH1cbmZ1bmN0aW9uIHBhcnNlX21zX3htbCgvKjo6ZGF0YTphbnksIG9wdHMsIGlkeDpudW1iZXIsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyovKS8qOldvcmtzaGVldCovIHsgcmV0dXJuIHsnIXR5cGUnOidtYWNybyd9OyB9XG4vKiBUT0RPOiBpdCB3aWxsIGJlIHVzZWZ1bCB0byBwYXJzZSB0aGUgZnVuY3Rpb24gc3RyICovXG52YXIgcmNfdG9fYTEgPSAvKiNfX1BVUkVfXyovKGZ1bmN0aW9uKCl7XG5cdHZhciByY3JlZ2V4ID0gLyhefFteQS1aYS16X10pUihcXFs/LT9cXGQrXFxdfFsxLTldXFxkKnwpQyhcXFs/LT9cXGQrXFxdfFsxLTldXFxkKnwpKD8hW0EtWmEtejAtOV9dKS9nO1xuXHR2YXIgcmNiYXNlLyo6Q2VsbCovID0gKHtyOjAsYzowfS8qOmFueSovKTtcblx0ZnVuY3Rpb24gcmNmdW5jKCQkLCQxLCQyLCQzKSB7XG5cdFx0dmFyIGNSZWwgPSBmYWxzZSwgclJlbCA9IGZhbHNlO1xuXG5cdFx0aWYoJDIubGVuZ3RoID09IDApIHJSZWwgPSB0cnVlO1xuXHRcdGVsc2UgaWYoJDIuY2hhckF0KDApID09IFwiW1wiKSB7IHJSZWwgPSB0cnVlOyAkMiA9ICQyLnNsaWNlKDEsIC0xKTsgfVxuXG5cdFx0aWYoJDMubGVuZ3RoID09IDApIGNSZWwgPSB0cnVlO1xuXHRcdGVsc2UgaWYoJDMuY2hhckF0KDApID09IFwiW1wiKSB7IGNSZWwgPSB0cnVlOyAkMyA9ICQzLnNsaWNlKDEsIC0xKTsgfVxuXG5cdFx0dmFyIFIgPSAkMi5sZW5ndGg+MD9wYXJzZUludCgkMiwxMCl8MDowLCBDID0gJDMubGVuZ3RoPjA/cGFyc2VJbnQoJDMsMTApfDA6MDtcblxuXHRcdGlmKGNSZWwpIEMgKz0gcmNiYXNlLmM7IGVsc2UgLS1DO1xuXHRcdGlmKHJSZWwpIFIgKz0gcmNiYXNlLnI7IGVsc2UgLS1SO1xuXHRcdHJldHVybiAkMSArIChjUmVsID8gXCJcIiA6IFwiJFwiKSArIGVuY29kZV9jb2woQykgKyAoclJlbCA/IFwiXCIgOiBcIiRcIikgKyBlbmNvZGVfcm93KFIpO1xuXHR9XG5cdHJldHVybiBmdW5jdGlvbiByY190b19hMShmc3RyLyo6c3RyaW5nKi8sIGJhc2UvKjpDZWxsKi8pLyo6c3RyaW5nKi8ge1xuXHRcdHJjYmFzZSA9IGJhc2U7XG5cdFx0cmV0dXJuIGZzdHIucmVwbGFjZShyY3JlZ2V4LCByY2Z1bmMpO1xuXHR9O1xufSkoKTtcblxudmFyIGNyZWZyZWdleCA9IC8oXnxbXi5fQS1aMC05XSkoWyRdPykoW0EtWl17MSwyfXxbQS1XXVtBLVpdezJ9fFhbQS1FXVtBLVpdfFhGW0EtRF0pKFskXT8pKDEwWzAtM11cXGR7NH18MTA0WzAtN11cXGR7M318MTA0OFswLTRdXFxkezJ9fDEwNDg1WzAtNl1cXGR8MTA0ODU3WzAtNl18WzEtOV1cXGR7MCw1fSkoPyFbXy5cXChBLVphLXowLTldKS9nO1xudmFyIGExX3RvX3JjID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpe1xuXHRyZXR1cm4gZnVuY3Rpb24gYTFfdG9fcmMoZnN0ci8qOnN0cmluZyovLCBiYXNlLyo6Q2VsbEFkZHJlc3MqLykge1xuXHRcdHJldHVybiBmc3RyLnJlcGxhY2UoY3JlZnJlZ2V4LCBmdW5jdGlvbigkMCwgJDEsICQyLCAkMywgJDQsICQ1KSB7XG5cdFx0XHR2YXIgYyA9IGRlY29kZV9jb2woJDMpIC0gKCQyID8gMCA6IGJhc2UuYyk7XG5cdFx0XHR2YXIgciA9IGRlY29kZV9yb3coJDUpIC0gKCQ0ID8gMCA6IGJhc2Uucik7XG5cdFx0XHR2YXIgUiA9IChyID09IDAgPyBcIlwiIDogISQ0ID8gXCJbXCIgKyByICsgXCJdXCIgOiAocisxKSk7XG5cdFx0XHR2YXIgQyA9IChjID09IDAgPyBcIlwiIDogISQyID8gXCJbXCIgKyBjICsgXCJdXCIgOiAoYysxKSk7XG5cdFx0XHRyZXR1cm4gJDEgKyBcIlJcIiArIFIgKyBcIkNcIiArIEM7XG5cdFx0fSk7XG5cdH07XG59KSgpO1xuXG4vKiBubyBkZWZpbmVkIG5hbWUgY2FuIGNvbGxpZGUgd2l0aCBhIHZhbGlkIGNlbGwgYWRkcmVzcyBBMTpYRkQxMDQ4NTc2IC4uLiBleGNlcHQgTE9HMTAhICovXG5mdW5jdGlvbiBzaGlmdF9mb3JtdWxhX3N0cihmLyo6c3RyaW5nKi8sIGRlbHRhLyo6Q2VsbCovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIGYucmVwbGFjZShjcmVmcmVnZXgsIGZ1bmN0aW9uKCQwLCAkMSwgJDIsICQzLCAkNCwgJDUpIHtcblx0XHRyZXR1cm4gJDErKCQyPT1cIiRcIiA/ICQyKyQzIDogZW5jb2RlX2NvbChkZWNvZGVfY29sKCQzKStkZWx0YS5jKSkrKCQ0PT1cIiRcIiA/ICQ0KyQ1IDogZW5jb2RlX3JvdyhkZWNvZGVfcm93KCQ1KSArIGRlbHRhLnIpKTtcblx0fSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0X2Zvcm11bGFfeGxzeChmLyo6c3RyaW5nKi8sIHJhbmdlLyo6c3RyaW5nKi8sIGNlbGwvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHJhbmdlKSwgcyA9IHIucywgYyA9IGRlY29kZV9jZWxsKGNlbGwpO1xuXHR2YXIgZGVsdGEgPSB7cjpjLnIgLSBzLnIsIGM6Yy5jIC0gcy5jfTtcblx0cmV0dXJuIHNoaWZ0X2Zvcm11bGFfc3RyKGYsIGRlbHRhKTtcbn1cblxuLyogVE9ETzogcGFyc2UgZm9ybXVsYSAqL1xuZnVuY3Rpb24gZnV6enlmbWxhKGYvKjpzdHJpbmcqLykvKjpib29sZWFuKi8ge1xuXHRpZihmLmxlbmd0aCA9PSAxKSByZXR1cm4gZmFsc2U7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBfeGxmbihmLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gZi5yZXBsYWNlKC9feGxmblxcLi9nLFwiXCIpO1xufVxuZnVuY3Rpb24gcGFyc2VyZWFkMShibG9iKSB7IGJsb2IubCs9MTsgcmV0dXJuOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS41MSAqL1xuZnVuY3Rpb24gcGFyc2VfQ29sUmVsVShibG9iLCBsZW5ndGgpIHtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQobGVuZ3RoID09IDEgPyAxIDogMik7XG5cdHJldHVybiBbYyAmIDB4M0ZGRiwgKGMgPj4gMTQpICYgMSwgKGMgPj4gMTUpICYgMV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA1IDsgW01TLVhMU0JdIDIuNS45Ny44OSAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUFyZWEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB3ID0gMjtcblx0aWYob3B0cykge1xuXHRcdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1KSByZXR1cm4gcGFyc2VfUmdjZUFyZWFfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0XHRlbHNlIGlmKG9wdHMuYmlmZiA9PSAxMikgdyA9IDQ7XG5cdH1cblx0dmFyIHI9YmxvYi5yZWFkX3NoaWZ0KHcpLCBSPWJsb2IucmVhZF9zaGlmdCh3KTtcblx0dmFyIGM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0dmFyIEM9cGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0cmV0dXJuIHsgczp7cjpyLCBjOmNbMF0sIGNSZWw6Y1sxXSwgclJlbDpjWzJdfSwgZTp7cjpSLCBjOkNbMF0sIGNSZWw6Q1sxXSwgclJlbDpDWzJdfSB9O1xufVxuLyogQklGRiAyLTUgZW5jb2RlcyBmbGFncyBpbiB0aGUgcm93IGZpZWxkICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlQXJlYV9CSUZGMihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHI9cGFyc2VfQ29sUmVsVShibG9iLCAyKSwgUj1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgYz1ibG9iLnJlYWRfc2hpZnQoMSk7XG5cdHZhciBDPWJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHsgczp7cjpyWzBdLCBjOmMsIGNSZWw6clsxXSwgclJlbDpyWzJdfSwgZTp7cjpSWzBdLCBjOkMsIGNSZWw6UlsxXSwgclJlbDpSWzJdfSB9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNSA7IFtNUy1YTFNCXSAyLjUuOTcuOTAgKi9cbmZ1bmN0aW9uIHBhcnNlX1JnY2VBcmVhUmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPCA4KSByZXR1cm4gcGFyc2VfUmdjZUFyZWFfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHI9YmxvYi5yZWFkX3NoaWZ0KG9wdHMuYmlmZiA9PSAxMiA/IDQgOiAyKSwgUj1ibG9iLnJlYWRfc2hpZnQob3B0cy5iaWZmID09IDEyID8gNCA6IDIpO1xuXHR2YXIgYz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgQz1wYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHRyZXR1cm4geyBzOntyOnIsIGM6Y1swXSwgY1JlbDpjWzFdLCByUmVsOmNbMl19LCBlOntyOlIsIGM6Q1swXSwgY1JlbDpDWzFdLCByUmVsOkNbMl19IH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTA5IDsgW01TLVhMU0JdIDIuNS45Ny45MSAqL1xuZnVuY3Rpb24gcGFyc2VfUmdjZUxvYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPj0gMiAmJiBvcHRzLmJpZmYgPD0gNSkgcmV0dXJuIHBhcnNlX1JnY2VMb2NfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMTIgPyA0IDogMik7XG5cdHZhciBjID0gcGFyc2VfQ29sUmVsVShibG9iLCAyKTtcblx0cmV0dXJuIHtyOnIsIGM6Y1swXSwgY1JlbDpjWzFdLCByUmVsOmNbMl19O1xufVxuZnVuY3Rpb24gcGFyc2VfUmdjZUxvY19CSUZGMihibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0dmFyIHIgPSBwYXJzZV9Db2xSZWxVKGJsb2IsIDIpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIHtyOnJbMF0sIGM6YywgY1JlbDpyWzFdLCByUmVsOnJbMl19O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEwNywgMi41LjQ3ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlRWxmTG9jKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgciA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIGMgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiB7cjpyLCBjOmMgJiAweEZGLCBmUXVvdGVkOiEhKGMgJiAweDQwMDApLCBjUmVsOmM+PjE1LCByUmVsOmM+PjE1IH07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMTExIDsgW01TLVhMU0JdIDIuNS45Ny45MiBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jUmVsKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgYmlmZiA9IG9wdHMgJiYgb3B0cy5iaWZmID8gb3B0cy5iaWZmIDogODtcblx0aWYoYmlmZiA+PSAyICYmIGJpZmYgPD0gNSkgcmV0dXJuIHBhcnNlX1JnY2VMb2NSZWxfQklGRjIoYmxvYiwgbGVuZ3RoLCBvcHRzKTtcblx0dmFyIHIgPSBibG9iLnJlYWRfc2hpZnQoYmlmZiA+PSAxMiA/IDQgOiAyKTtcblx0dmFyIGNsID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY1JlbCA9IChjbCAmIDB4NDAwMCkgPj4gMTQsIHJSZWwgPSAoY2wgJiAweDgwMDApID4+IDE1O1xuXHRjbCAmPSAweDNGRkY7XG5cdGlmKHJSZWwgPT0gMSkgd2hpbGUociA+IDB4N0ZGRkYpIHIgLT0gMHgxMDAwMDA7XG5cdGlmKGNSZWwgPT0gMSkgd2hpbGUoY2wgPiAweDFGRkYpIGNsID0gY2wgLSAweDQwMDA7XG5cdHJldHVybiB7cjpyLGM6Y2wsY1JlbDpjUmVsLHJSZWw6clJlbH07XG59XG5mdW5jdGlvbiBwYXJzZV9SZ2NlTG9jUmVsX0JJRkYyKGJsb2IvKjo6LCBsZW5ndGg6bnVtYmVyLCBvcHRzKi8pIHtcblx0dmFyIHJsID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgYyA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0dmFyIHJSZWwgPSAocmwgJiAweDgwMDApID4+IDE1LCBjUmVsID0gKHJsICYgMHg0MDAwKSA+PiAxNDtcblx0cmwgJj0gMHgzRkZGO1xuXHRpZihyUmVsID09IDEgJiYgcmwgPj0gMHgyMDAwKSBybCA9IHJsIC0gMHg0MDAwO1xuXHRpZihjUmVsID09IDEgJiYgYyA+PSAweDgwKSBjID0gYyAtIDB4MTAwO1xuXHRyZXR1cm4ge3I6cmwsYzpjLGNSZWw6Y1JlbCxyUmVsOnJSZWx9O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI3IDsgW01TLVhMU0JdIDIuNS45Ny4xOCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgYXJlYSA9IHBhcnNlX1JnY2VBcmVhKGJsb2IsIG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8PSA1ID8gNiA6IDgsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGFyZWFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI4IDsgW01TLVhMU0JdIDIuNS45Ny4xOSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYTNkKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIsICdpJyk7XG5cdHZhciB3ID0gODtcblx0aWYob3B0cykgc3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgNTogYmxvYi5sICs9IDEyOyB3ID0gNjsgYnJlYWs7XG5cdFx0Y2FzZSAxMjogdyA9IDEyOyBicmVhaztcblx0fVxuXHR2YXIgYXJlYSA9IHBhcnNlX1JnY2VBcmVhKGJsb2IsIHcsIG9wdHMpO1xuXHRyZXR1cm4gW3R5cGUsIGl4dGksIGFyZWFdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI5IDsgW01TLVhMU0JdIDIuNS45Ny4yMCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYUVycihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHRibG9iLmwgKz0gb3B0cyAmJiAob3B0cy5iaWZmID4gOCkgPyAxMiA6IChvcHRzLmJpZmYgPCA4ID8gNiA6IDgpO1xuXHRyZXR1cm4gW3R5cGVdO1xufVxuLyogW01TLVhMU10gMi41LjE5OC4zMCA7IFtNUy1YTFNCXSAyLjUuOTcuMjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FyZWFFcnIzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmwrK10gJiAweDYwKSA+PiA1O1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHcgPSA4O1xuXHRpZihvcHRzKSBzd2l0Y2gob3B0cy5iaWZmKSB7XG5cdFx0Y2FzZSA1OiBibG9iLmwgKz0gMTI7IHcgPSA2OyBicmVhaztcblx0XHRjYXNlIDEyOiB3ID0gMTI7IGJyZWFrO1xuXHR9XG5cdGJsb2IubCArPSB3O1xuXHRyZXR1cm4gW3R5cGUsIGl4dGldO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMxIDsgW01TLVhMU0JdIDIuNS45Ny4yMiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXJlYU4oYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGFyZWEgPSBwYXJzZV9SZ2NlQXJlYVJlbChibG9iLCBsZW5ndGggLSAxLCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBhcmVhXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zMiA7IFtNUy1YTFNCXSAyLjUuOTcuMjMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0FycmF5KGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iW2Jsb2IubCsrXSAmIDB4NjApID4+IDU7XG5cdGJsb2IubCArPSBvcHRzLmJpZmYgPT0gMiA/IDYgOiBvcHRzLmJpZmYgPT0gMTIgPyAxNCA6IDc7XG5cdHJldHVybiBbdHlwZV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzMgOyBbTVMtWExTQl0gMi41Ljk3LjI0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyQmF4Y2VsKGJsb2IpIHtcblx0dmFyIGJpdFNlbWkgPSBibG9iW2Jsb2IubCsxXSAmIDB4MDE7IC8qIDEgPSB2b2xhdGlsZSAqL1xuXHR2YXIgYml0QmF4Y2VsID0gMTtcblx0YmxvYi5sICs9IDQ7XG5cdHJldHVybiBbYml0U2VtaSwgYml0QmF4Y2VsXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zNCA7IFtNUy1YTFNCXSAyLjUuOTcuMjUgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJDaG9vc2UoYmxvYiwgbGVuZ3RoLCBvcHRzKS8qOkFycmF5PG51bWJlcj4qLyB7XG5cdGJsb2IubCArPTI7XG5cdHZhciBvZmZzZXQgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKTtcblx0dmFyIG8vKjpBcnJheTxudW1iZXI+Ki8gPSBbXTtcblx0Lyogb2Zmc2V0IGlzIDEgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgKi9cblx0Zm9yKHZhciBpID0gMDsgaSA8PSBvZmZzZXQ7ICsraSkgby5wdXNoKGJsb2IucmVhZF9zaGlmdChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMSA6IDIpKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzUgOyBbTVMtWExTQl0gMi41Ljk3LjI2ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyR290byhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpdEdvdG8gPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtiaXRHb3RvLCBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzYgOyBbTVMtWExTQl0gMi41Ljk3LjI3ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRySWYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBiaXRJZiA9IChibG9iW2Jsb2IubCsxXSAmIDB4RkYpID8gMSA6IDA7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW2JpdElmLCBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDEgOiAyKV07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjUuOTcuMjggKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJJZkVycm9yKGJsb2IpIHtcblx0dmFyIGJpdElmID0gKGJsb2JbYmxvYi5sKzFdICYgMHhGRikgPyAxIDogMDtcblx0YmxvYi5sICs9IDI7XG5cdHJldHVybiBbYml0SWYsIGJsb2IucmVhZF9zaGlmdCgyKV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguMzcgOyBbTVMtWExTQl0gMi41Ljk3LjI5ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdBdHRyU2VtaShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGJpdFNlbWkgPSAoYmxvYltibG9iLmwrMV0gJiAweEZGKSA/IDEgOiAwO1xuXHRibG9iLmwgKz0gb3B0cyAmJiBvcHRzLmJpZmYgPT0gMiA/IDMgOiA0O1xuXHRyZXR1cm4gW2JpdFNlbWldO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjQwIDsgW01TLVhMU0JdIDIuNS45Ny4zMiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNwYWNlVHlwZShibG9iLyo6OiwgbGVuZ3RoKi8pIHtcblx0dmFyIHR5cGUgPSBibG9iLnJlYWRfc2hpZnQoMSksIGNjaCA9IGJsb2IucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFt0eXBlLCBjY2hdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjM4IDsgW01TLVhMU0JdIDIuNS45Ny4zMCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clNwYWNlKGJsb2IpIHtcblx0YmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHRyZXR1cm4gcGFyc2VfUHRnQXR0clNwYWNlVHlwZShibG9iLCAyKTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4zOSA7IFtNUy1YTFNCXSAyLjUuOTcuMzEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0F0dHJTcGFjZVNlbWkoYmxvYikge1xuXHRibG9iLnJlYWRfc2hpZnQoMik7XG5cdHJldHVybiBwYXJzZV9QdGdBdHRyU3BhY2VUeXBlKGJsb2IsIDIpO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg0IDsgW01TLVhMU0JdIDIuNS45Ny42OCBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWYoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdC8vdmFyIHB0ZyA9IGJsb2JbYmxvYi5sXSAmIDB4MUY7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sXSAmIDB4NjApPj41O1xuXHRibG9iLmwgKz0gMTtcblx0dmFyIGxvYyA9IHBhcnNlX1JnY2VMb2MoYmxvYiwgMCwgb3B0cyk7XG5cdHJldHVybiBbdHlwZSwgbG9jXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC44OCA7IFtNUy1YTFNCXSAyLjUuOTcuNzIgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmTihibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgbG9jID0gcGFyc2VfUmdjZUxvY1JlbChibG9iLCAwLCBvcHRzKTtcblx0cmV0dXJuIFt0eXBlLCBsb2NdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg1IDsgW01TLVhMU0JdIDIuNS45Ny42OSBUT0RPICovXG5mdW5jdGlvbiBwYXJzZV9QdGdSZWYzZChibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gWHRpSW5kZXhcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gNSkgYmxvYi5sICs9IDEyO1xuXHR2YXIgbG9jID0gcGFyc2VfUmdjZUxvYyhibG9iLCAwLCBvcHRzKTsgLy8gVE9ETzogb3IgUmdjZUxvY1JlbFxuXHRyZXR1cm4gW3R5cGUsIGl4dGksIGxvY107XG59XG5cblxuLyogW01TLVhMU10gMi41LjE5OC42MiA7IFtNUy1YTFNCXSAyLjUuOTcuNDUgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRnVuYyhibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0Ly92YXIgcHRnID0gYmxvYltibG9iLmxdICYgMHgxRjtcblx0dmFyIHR5cGUgPSAoYmxvYltibG9iLmxdICYgMHg2MCk+PjU7XG5cdGJsb2IubCArPSAxO1xuXHR2YXIgaWZ0YWIgPSBibG9iLnJlYWRfc2hpZnQob3B0cyAmJiBvcHRzLmJpZmYgPD0gMyA/IDEgOiAyKTtcblx0cmV0dXJuIFtGdGFiQXJnY1tpZnRhYl0sIEZ0YWJbaWZ0YWJdLCB0eXBlXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjMgOyBbTVMtWExTQl0gMi41Ljk3LjQ2IFRPRE8gKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0Z1bmNWYXIoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gYmxvYltibG9iLmwrK107XG5cdHZhciBjcGFyYW1zID0gYmxvYi5yZWFkX3NoaWZ0KDEpLCB0YWIgPSBvcHRzICYmIG9wdHMuYmlmZiA8PSAzID8gWyh0eXBlID09IDB4NTggPyAtMSA6IDApLCBibG9iLnJlYWRfc2hpZnQoMSldOiBwYXJzZXRhYihibG9iKTtcblx0cmV0dXJuIFtjcGFyYW1zLCAodGFiWzBdID09PSAwID8gRnRhYiA6IENldGFiKVt0YWJbMV1dXTtcbn1cblxuZnVuY3Rpb24gcGFyc2V0YWIoYmxvYikge1xuXHRyZXR1cm4gW2Jsb2JbYmxvYi5sKzFdPj43LCBibG9iLnJlYWRfc2hpZnQoMikgJiAweDdGRkZdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjQxIDsgW01TLVhMU0JdIDIuNS45Ny4zMyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnQXR0clN1bShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0YmxvYi5sICs9IG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAzIDogNDsgcmV0dXJuO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU4IDsgW01TLVhMU0JdIDIuNS45Ny40MCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXhwKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRibG9iLmwrKztcblx0aWYob3B0cyAmJiBvcHRzLmJpZmYgPT0gMTIpIHJldHVybiBbYmxvYi5yZWFkX3NoaWZ0KDQsICdpJyksIDBdO1xuXHR2YXIgcm93ID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgY29sID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbcm93LCBjb2xdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU3IDsgW01TLVhMU0JdIDIuNS45Ny4zOSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXJyKGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBCRXJyW2Jsb2IucmVhZF9zaGlmdCgxKV07IH1cblxuLyogW01TLVhMU10gMi41LjE5OC42NiA7IFtNUy1YTFNCXSAyLjUuOTcuNDkgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z0ludChibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gYmxvYi5yZWFkX3NoaWZ0KDIpOyB9XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDIgOyBbTVMtWExTQl0gMi41Ljk3LjM0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdCb29sKGJsb2IpIHsgYmxvYi5sKys7IHJldHVybiBibG9iLnJlYWRfc2hpZnQoMSkhPT0wO31cblxuLyogW01TLVhMU10gMi41LjE5OC43OSA7IFtNUy1YTFNCXSAyLjUuOTcuNjMgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z051bShibG9iKSB7IGJsb2IubCsrOyByZXR1cm4gcGFyc2VfWG51bShibG9iLCA4KTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg5IDsgW01TLVhMU0JdIDIuNS45Ny43NCAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU3RyKGJsb2IsIGxlbmd0aCwgb3B0cykgeyBibG9iLmwrKzsgcmV0dXJuIHBhcnNlX1Nob3J0WExVbmljb2RlU3RyaW5nKGJsb2IsIGxlbmd0aC0xLCBvcHRzKTsgfVxuXG4vKiBbTVMtWExTXSAyLjUuMTkyLjExMiArIDIuNS4xOTIuMTF7Myw0LDUsNiw3fSAqL1xuLyogW01TLVhMU0JdIDIuNS45Ny45MyArIDIuNS45Ny45ezQsNSw2LDd9ICovXG5mdW5jdGlvbiBwYXJzZV9TZXJBcihibG9iLCBiaWZmLyo6bnVtYmVyKi8pIHtcblx0dmFyIHZhbCA9IFtibG9iLnJlYWRfc2hpZnQoMSldO1xuXHRpZihiaWZmID09IDEyKSBzd2l0Y2godmFsWzBdKSB7XG5cdFx0Y2FzZSAweDAyOiB2YWxbMF0gPSAweDA0OyBicmVhazsgLyogU2VyQm9vbCAqL1xuXHRcdGNhc2UgMHgwNDogdmFsWzBdID0gMHgxMDsgYnJlYWs7IC8qIFNlckVyciAqL1xuXHRcdGNhc2UgMHgwMDogdmFsWzBdID0gMHgwMTsgYnJlYWs7IC8qIFNlck51bSAqL1xuXHRcdGNhc2UgMHgwMTogdmFsWzBdID0gMHgwMjsgYnJlYWs7IC8qIFNlclN0ciAqL1xuXHR9XG5cdHN3aXRjaCh2YWxbMF0pIHtcblx0XHRjYXNlIDB4MDQ6IC8qIFNlckJvb2wgLS0gYm9vbGVhbiAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2Vib29sKGJsb2IsIDEpID8gJ1RSVUUnIDogJ0ZBTFNFJztcblx0XHRcdGlmKGJpZmYgIT0gMTIpIGJsb2IubCArPSA3OyBicmVhaztcblx0XHRjYXNlIDB4MjU6IC8qIGFwcGVhcnMgdG8gYmUgYW4gYWxpYXMgKi9cblx0XHRjYXNlIDB4MTA6IC8qIFNlckVyciAtLSBlcnJvciAqL1xuXHRcdFx0dmFsWzFdID0gQkVycltibG9iW2Jsb2IubF1dO1xuXHRcdFx0YmxvYi5sICs9ICgoYmlmZiA9PSAxMikgPyA0IDogOCk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwMDogLyogU2VyTmlsIC0tIGhvbmVzdGx5LCBJJ20gbm90IHN1cmUgaG93IHRvIHJlcHJvZHVjZSB0aGlzICovXG5cdFx0XHRibG9iLmwgKz0gODsgYnJlYWs7XG5cdFx0Y2FzZSAweDAxOiAvKiBTZXJOdW0gLS0gWG51bSAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2VfWG51bShibG9iLCA4KTsgYnJlYWs7XG5cdFx0Y2FzZSAweDAyOiAvKiBTZXJTdHIgLS0gWExVbmljb2RlU3RyaW5nICg8MjU2IGNoYXJzKSAqL1xuXHRcdFx0dmFsWzFdID0gcGFyc2VfWExVbmljb2RlU3RyaW5nMihibG9iLCAwLCB7YmlmZjpiaWZmID4gMCAmJiBiaWZmIDwgOCA/IDIgOiBiaWZmfSk7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIkJhZCBTZXJBcjogXCIgKyB2YWxbMF0pOyAvKiBVbnJlYWNoYWJsZSAqL1xuXHR9XG5cdHJldHVybiB2YWw7XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNjEgOyBbTVMtWExTQl0gMi41Ljk3LjQ0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFeHRyYU1lbShibG9iLCBjY2UsIG9wdHMpIHtcblx0dmFyIGNvdW50ID0gYmxvYi5yZWFkX3NoaWZ0KChvcHRzLmJpZmYgPT0gMTIpID8gNCA6IDIpO1xuXHR2YXIgb3V0Lyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBjb3VudDsgKytpKSBvdXQucHVzaCgoKG9wdHMuYmlmZiA9PSAxMikgPyBwYXJzZV9VbmNoZWNrZWRSZlggOiBwYXJzZV9SZWY4VSkoYmxvYiwgOCkpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjU5IDsgW01TLVhMU0JdIDIuNS45Ny40MSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnRXh0cmFBcnJheShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHJvd3MgPSAwLCBjb2xzID0gMDtcblx0aWYob3B0cy5iaWZmID09IDEyKSB7XG5cdFx0cm93cyA9IGJsb2IucmVhZF9zaGlmdCg0KTsgLy8gRFJ3XG5cdFx0Y29scyA9IGJsb2IucmVhZF9zaGlmdCg0KTsgLy8gRENvbFxuXHR9IGVsc2Uge1xuXHRcdGNvbHMgPSAxICsgYmxvYi5yZWFkX3NoaWZ0KDEpOyAvL0RDb2xCeXRlVVxuXHRcdHJvd3MgPSAxICsgYmxvYi5yZWFkX3NoaWZ0KDIpOyAvL0RSd1xuXHR9XG5cdGlmKG9wdHMuYmlmZiA+PSAyICYmIG9wdHMuYmlmZiA8IDgpIHsgLS1yb3dzOyBpZigtLWNvbHMgPT0gMCkgY29scyA9IDB4MTAwOyB9XG5cdC8vICRGbG93SWdub3JlXG5cdGZvcih2YXIgaSA9IDAsIG8vKjpBcnJheTxBcnJheTxhbnk+PiovID0gW107IGkgIT0gcm93cyAmJiAob1tpXSA9IFtdKTsgKytpKVxuXHRcdGZvcih2YXIgaiA9IDA7IGogIT0gY29sczsgKytqKSBvW2ldW2pdID0gcGFyc2VfU2VyQXIoYmxvYiwgb3B0cy5iaWZmKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzYgOyBbTVMtWExTQl0gMi41Ljk3LjYwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdOYW1lKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIHcgPSAoIW9wdHMgfHwgKG9wdHMuYmlmZiA+PSA4KSkgPyA0IDogMjtcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCh3KTtcblx0c3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgMjogYmxvYi5sICs9IDU7IGJyZWFrO1xuXHRcdGNhc2UgMzogY2FzZSA0OiBibG9iLmwgKz0gODsgYnJlYWs7XG5cdFx0Y2FzZSA1OiBibG9iLmwgKz0gMTI7IGJyZWFrO1xuXHR9XG5cdHJldHVybiBbdHlwZSwgMCwgbmFtZWluZGV4XTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43NyA7IFtNUy1YTFNCXSAyLjUuOTcuNjEgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z05hbWVYKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHRpZihvcHRzLmJpZmYgPT0gNSkgcmV0dXJuIHBhcnNlX1B0Z05hbWVYX0JJRkY1KGJsb2IsIGxlbmd0aCwgb3B0cyk7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gWHRpSW5kZXhcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFt0eXBlLCBpeHRpLCBuYW1laW5kZXhdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnTmFtZVhfQklGRjUoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgaXh0aSA9IGJsb2IucmVhZF9zaGlmdCgyLCAnaScpOyAvLyBYdGlJbmRleFxuXHRibG9iLmwgKz0gODtcblx0dmFyIG5hbWVpbmRleCA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0YmxvYi5sICs9IDEyO1xuXHRyZXR1cm4gW3R5cGUsIGl4dGksIG5hbWVpbmRleF07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzAgOyBbTVMtWExTQl0gMi41Ljk3LjU0ICovXG5mdW5jdGlvbiBwYXJzZV9QdGdNZW1BcmVhKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0YmxvYi5sICs9IChvcHRzICYmIG9wdHMuYmlmZiA9PSAyID8gMyA6IDQpO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC43MiA7IFtNUy1YTFNCXSAyLjUuOTcuNTYgKi9cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbUZ1bmMoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2IucmVhZF9zaGlmdCgxKSA+Pj4gNSkgJiAweDAzO1xuXHR2YXIgY2NlID0gYmxvYi5yZWFkX3NoaWZ0KG9wdHMgJiYgb3B0cy5iaWZmID09IDIgPyAxIDogMik7XG5cdHJldHVybiBbdHlwZSwgY2NlXTtcbn1cblxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg2IDsgW01TLVhMU0JdIDIuNS45Ny42OSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmRXJyKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0YmxvYi5sICs9IDQ7XG5cdGlmKG9wdHMuYmlmZiA8IDgpIGJsb2IubC0tO1xuXHRpZihvcHRzLmJpZmYgPT0gMTIpIGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3R5cGVdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4Ljg3IDsgW01TLVhMU0JdIDIuNS45Ny43MSAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnUmVmRXJyM2QoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0eXBlID0gKGJsb2JbYmxvYi5sKytdICYgMHg2MCkgPj4gNTtcblx0dmFyIGl4dGkgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciB3ID0gNDtcblx0aWYob3B0cykgc3dpdGNoKG9wdHMuYmlmZikge1xuXHRcdGNhc2UgNTogdyA9IDE1OyBicmVhaztcblx0XHRjYXNlIDEyOiB3ID0gNjsgYnJlYWs7XG5cdH1cblx0YmxvYi5sICs9IHc7XG5cdHJldHVybiBbdHlwZSwgaXh0aV07XG59XG5cbi8qIFtNUy1YTFNdIDIuNS4xOTguNzEgOyBbTVMtWExTQl0gMi41Ljk3LjU1ICovXG52YXIgcGFyc2VfUHRnTWVtRXJyID0gcGFyc2Vub29wO1xuLyogW01TLVhMU10gMi41LjE5OC43MyAgOyBbTVMtWExTQl0gMi41Ljk3LjU3ICovXG52YXIgcGFyc2VfUHRnTWVtTm9NZW0gPSBwYXJzZW5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjkyICovXG52YXIgcGFyc2VfUHRnVGJsID0gcGFyc2Vub29wO1xuXG5mdW5jdGlvbiBwYXJzZV9QdGdFbGZMb2MoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3BhcnNlX1JnY2VFbGZMb2MoYmxvYiwgNCwgb3B0cyldO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnRWxmTm9vcChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDY7XG5cdHJldHVybiBbXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNDYgKi9cbnZhciBwYXJzZV9QdGdFbGZDb2wgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ3ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sUyA9IHBhcnNlX1B0Z0VsZk5vb3A7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjQ4ICovXG52YXIgcGFyc2VfUHRnRWxmQ29sU1YgPSBwYXJzZV9QdGdFbGZOb29wO1xuLyogW01TLVhMU10gMi41LjE5OC40OSAqL1xudmFyIHBhcnNlX1B0Z0VsZkNvbFYgPSBwYXJzZV9QdGdFbGZMb2M7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUwICovXG5mdW5jdGlvbiBwYXJzZV9QdGdFbGZMZWwoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSAyO1xuXHRyZXR1cm4gW3BhcnNldWludDE2KGJsb2IpLCBibG9iLnJlYWRfc2hpZnQoMikgJiAweDAxXTtcbn1cbi8qIFtNUy1YTFNdIDIuNS4xOTguNTEgKi9cbnZhciBwYXJzZV9QdGdFbGZSYWRpY2FsID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC41MiAqL1xudmFyIHBhcnNlX1B0Z0VsZlJhZGljYWxMZWwgPSBwYXJzZV9QdGdFbGZMZWw7XG4vKiBbTVMtWExTXSAyLjUuMTk4LjUzICovXG52YXIgcGFyc2VfUHRnRWxmUmFkaWNhbFMgPSBwYXJzZV9QdGdFbGZOb29wO1xuLyogW01TLVhMU10gMi41LjE5OC41NCAqL1xudmFyIHBhcnNlX1B0Z0VsZlJ3ID0gcGFyc2VfUHRnRWxmTG9jO1xuLyogW01TLVhMU10gMi41LjE5OC41NSAqL1xudmFyIHBhcnNlX1B0Z0VsZlJ3ViA9IHBhcnNlX1B0Z0VsZkxvYztcblxuLyogW01TLVhMU0JdIDIuNS45Ny41MiBUT0RPICovXG52YXIgUHRnTGlzdFJUID0gW1xuXHRcIkRhdGFcIixcblx0XCJBbGxcIixcblx0XCJIZWFkZXJzXCIsXG5cdFwiPz9cIixcblx0XCI/RGF0YTJcIixcblx0XCI/P1wiLFxuXHRcIj9EYXRhSGVhZGVyc1wiLFxuXHRcIj8/XCIsXG5cdFwiVG90YWxzXCIsXG5cdFwiPz9cIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiP0RhdGFUb3RhbHNcIixcblx0XCI/P1wiLFxuXHRcIj8/XCIsXG5cdFwiPz9cIixcblx0XCI/Q3VycmVudFwiXG5dO1xuZnVuY3Rpb24gcGFyc2VfUHRnTGlzdChibG9iLyo6OiwgbGVuZ3RoLCBvcHRzKi8pIHtcblx0YmxvYi5sICs9IDI7XG5cdHZhciBpeHRpID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgZmxhZ3MgPSBibG9iLnJlYWRfc2hpZnQoMik7XG5cdHZhciBpZHggPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdHZhciBjID0gYmxvYi5yZWFkX3NoaWZ0KDIpO1xuXHR2YXIgQyA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0dmFyIHJ0ID0gUHRnTGlzdFJUWyhmbGFncyA+PiAyKSAmIDB4MUZdO1xuXHRyZXR1cm4ge2l4dGk6IGl4dGksIGNvbHR5cGU6KGZsYWdzJjB4MyksIHJ0OnJ0LCBpZHg6aWR4LCBjOmMsIEM6Q307XG59XG4vKiBbTVMtWExTXSAyLjUuMTk4LjkxIDsgW01TLVhMU0JdIDIuNS45Ny43NiAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU3hOYW1lKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHRibG9iLmwgKz0gMjtcblx0cmV0dXJuIFtibG9iLnJlYWRfc2hpZnQoNCldO1xufVxuXG4vKiBbWExTXSBvbGQgc3BlYyAqL1xuZnVuY3Rpb24gcGFyc2VfUHRnU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSA1O1xuXHRibG9iLmwgKz0gMjtcblx0YmxvYi5sICs9IChvcHRzLmJpZmYgPT0gMiA/IDEgOiA0KTtcblx0cmV0dXJuIFtcIlBUR1NIRUVUXCJdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnRW5kU2hlZXQoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdGJsb2IubCArPSAob3B0cy5iaWZmID09IDIgPyA0IDogNSk7XG5cdHJldHVybiBbXCJQVEdFTkRTSEVFVFwiXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX1B0Z01lbUFyZWFOKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnTWVtTm9NZW1OKGJsb2IvKjo6LCBsZW5ndGgsIG9wdHMqLykge1xuXHR2YXIgdHlwZSA9IChibG9iLnJlYWRfc2hpZnQoMSkgPj4+IDUpICYgMHgwMztcblx0dmFyIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0cmV0dXJuIFt0eXBlLCBjY2VdO1xufVxuZnVuY3Rpb24gcGFyc2VfUHRnQXR0ck5vb3AoYmxvYi8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdGJsb2IubCArPSA0O1xuXHRyZXR1cm4gWzAsIDBdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjI1IDsgW01TLVhMU0JdIDIuNS45Ny4xNiAqL1xudmFyIFB0Z1R5cGVzID0ge1xuXHQvKjo6WyovMHgwMS8qOjpdKi86IHsgbjonUHRnRXhwJywgZjpwYXJzZV9QdGdFeHAgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46J1B0Z1RibCcsIGY6cGFyc2VfUHRnVGJsIH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOidQdGdBZGQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDQvKjo6XSovOiB7IG46J1B0Z1N1YicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwNS8qOjpdKi86IHsgbjonUHRnTXVsJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA2Lyo6Ol0qLzogeyBuOidQdGdEaXYnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46J1B0Z1Bvd2VyJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOidQdGdDb25jYXQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MDkvKjo6XSovOiB7IG46J1B0Z0x0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBBLyo6Ol0qLzogeyBuOidQdGdMZScsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwQi8qOjpdKi86IHsgbjonUHRnRXEnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEMvKjo6XSovOiB7IG46J1B0Z0dlJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDBELyo6Ol0qLzogeyBuOidQdGdHdCcsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgwRS8qOjpdKi86IHsgbjonUHRnTmUnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MEYvKjo6XSovOiB7IG46J1B0Z0lzZWN0JywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOidQdGdVbmlvbicsIGY6cGFyc2VyZWFkMSB9LFxuXHQvKjo6WyovMHgxMS8qOjpdKi86IHsgbjonUHRnUmFuZ2UnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTIvKjo6XSovOiB7IG46J1B0Z1VwbHVzJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDEzLyo6Ol0qLzogeyBuOidQdGdVbWludXMnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTQvKjo6XSovOiB7IG46J1B0Z1BlcmNlbnQnLCBmOnBhcnNlcmVhZDEgfSxcblx0Lyo6OlsqLzB4MTUvKjo6XSovOiB7IG46J1B0Z1BhcmVuJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE2Lyo6Ol0qLzogeyBuOidQdGdNaXNzQXJnJywgZjpwYXJzZXJlYWQxIH0sXG5cdC8qOjpbKi8weDE3Lyo6Ol0qLzogeyBuOidQdGdTdHInLCBmOnBhcnNlX1B0Z1N0ciB9LFxuXHQvKjo6WyovMHgxQS8qOjpdKi86IHsgbjonUHRnU2hlZXQnLCBmOnBhcnNlX1B0Z1NoZWV0IH0sXG5cdC8qOjpbKi8weDFCLyo6Ol0qLzogeyBuOidQdGdFbmRTaGVldCcsIGY6cGFyc2VfUHRnRW5kU2hlZXQgfSxcblx0Lyo6OlsqLzB4MUMvKjo6XSovOiB7IG46J1B0Z0VycicsIGY6cGFyc2VfUHRnRXJyIH0sXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogeyBuOidQdGdCb29sJywgZjpwYXJzZV9QdGdCb29sIH0sXG5cdC8qOjpbKi8weDFFLyo6Ol0qLzogeyBuOidQdGdJbnQnLCBmOnBhcnNlX1B0Z0ludCB9LFxuXHQvKjo6WyovMHgxRi8qOjpdKi86IHsgbjonUHRnTnVtJywgZjpwYXJzZV9QdGdOdW0gfSxcblx0Lyo6OlsqLzB4MjAvKjo6XSovOiB7IG46J1B0Z0FycmF5JywgZjpwYXJzZV9QdGdBcnJheSB9LFxuXHQvKjo6WyovMHgyMS8qOjpdKi86IHsgbjonUHRnRnVuYycsIGY6cGFyc2VfUHRnRnVuYyB9LFxuXHQvKjo6WyovMHgyMi8qOjpdKi86IHsgbjonUHRnRnVuY1ZhcicsIGY6cGFyc2VfUHRnRnVuY1ZhciB9LFxuXHQvKjo6WyovMHgyMy8qOjpdKi86IHsgbjonUHRnTmFtZScsIGY6cGFyc2VfUHRnTmFtZSB9LFxuXHQvKjo6WyovMHgyNC8qOjpdKi86IHsgbjonUHRnUmVmJywgZjpwYXJzZV9QdGdSZWYgfSxcblx0Lyo6OlsqLzB4MjUvKjo6XSovOiB7IG46J1B0Z0FyZWEnLCBmOnBhcnNlX1B0Z0FyZWEgfSxcblx0Lyo6OlsqLzB4MjYvKjo6XSovOiB7IG46J1B0Z01lbUFyZWEnLCBmOnBhcnNlX1B0Z01lbUFyZWEgfSxcblx0Lyo6OlsqLzB4MjcvKjo6XSovOiB7IG46J1B0Z01lbUVycicsIGY6cGFyc2VfUHRnTWVtRXJyIH0sXG5cdC8qOjpbKi8weDI4Lyo6Ol0qLzogeyBuOidQdGdNZW1Ob01lbScsIGY6cGFyc2VfUHRnTWVtTm9NZW0gfSxcblx0Lyo6OlsqLzB4MjkvKjo6XSovOiB7IG46J1B0Z01lbUZ1bmMnLCBmOnBhcnNlX1B0Z01lbUZ1bmMgfSxcblx0Lyo6OlsqLzB4MkEvKjo6XSovOiB7IG46J1B0Z1JlZkVycicsIGY6cGFyc2VfUHRnUmVmRXJyIH0sXG5cdC8qOjpbKi8weDJCLyo6Ol0qLzogeyBuOidQdGdBcmVhRXJyJywgZjpwYXJzZV9QdGdBcmVhRXJyIH0sXG5cdC8qOjpbKi8weDJDLyo6Ol0qLzogeyBuOidQdGdSZWZOJywgZjpwYXJzZV9QdGdSZWZOIH0sXG5cdC8qOjpbKi8weDJELyo6Ol0qLzogeyBuOidQdGdBcmVhTicsIGY6cGFyc2VfUHRnQXJlYU4gfSxcblx0Lyo6OlsqLzB4MkUvKjo6XSovOiB7IG46J1B0Z01lbUFyZWFOJywgZjpwYXJzZV9QdGdNZW1BcmVhTiB9LFxuXHQvKjo6WyovMHgyRi8qOjpdKi86IHsgbjonUHRnTWVtTm9NZW1OJywgZjpwYXJzZV9QdGdNZW1Ob01lbU4gfSxcblx0Lyo6OlsqLzB4MzkvKjo6XSovOiB7IG46J1B0Z05hbWVYJywgZjpwYXJzZV9QdGdOYW1lWCB9LFxuXHQvKjo6WyovMHgzQS8qOjpdKi86IHsgbjonUHRnUmVmM2QnLCBmOnBhcnNlX1B0Z1JlZjNkIH0sXG5cdC8qOjpbKi8weDNCLyo6Ol0qLzogeyBuOidQdGdBcmVhM2QnLCBmOnBhcnNlX1B0Z0FyZWEzZCB9LFxuXHQvKjo6WyovMHgzQy8qOjpdKi86IHsgbjonUHRnUmVmRXJyM2QnLCBmOnBhcnNlX1B0Z1JlZkVycjNkIH0sXG5cdC8qOjpbKi8weDNELyo6Ol0qLzogeyBuOidQdGdBcmVhRXJyM2QnLCBmOnBhcnNlX1B0Z0FyZWFFcnIzZCB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9XG59O1xuLyogVGhlc2UgYXJlIGR1cGxpY2F0ZWQgaW4gdGhlIFB0Z1R5cGVzIHRhYmxlICovXG52YXIgUHRnRHVwZXMgPSB7XG5cdC8qOjpbKi8weDQwLyo6Ol0qLzogMHgyMCwgLyo6OlsqLzB4NjAvKjo6XSovOiAweDIwLFxuXHQvKjo6WyovMHg0MS8qOjpdKi86IDB4MjEsIC8qOjpbKi8weDYxLyo6Ol0qLzogMHgyMSxcblx0Lyo6OlsqLzB4NDIvKjo6XSovOiAweDIyLCAvKjo6WyovMHg2Mi8qOjpdKi86IDB4MjIsXG5cdC8qOjpbKi8weDQzLyo6Ol0qLzogMHgyMywgLyo6OlsqLzB4NjMvKjo6XSovOiAweDIzLFxuXHQvKjo6WyovMHg0NC8qOjpdKi86IDB4MjQsIC8qOjpbKi8weDY0Lyo6Ol0qLzogMHgyNCxcblx0Lyo6OlsqLzB4NDUvKjo6XSovOiAweDI1LCAvKjo6WyovMHg2NS8qOjpdKi86IDB4MjUsXG5cdC8qOjpbKi8weDQ2Lyo6Ol0qLzogMHgyNiwgLyo6OlsqLzB4NjYvKjo6XSovOiAweDI2LFxuXHQvKjo6WyovMHg0Ny8qOjpdKi86IDB4MjcsIC8qOjpbKi8weDY3Lyo6Ol0qLzogMHgyNyxcblx0Lyo6OlsqLzB4NDgvKjo6XSovOiAweDI4LCAvKjo6WyovMHg2OC8qOjpdKi86IDB4MjgsXG5cdC8qOjpbKi8weDQ5Lyo6Ol0qLzogMHgyOSwgLyo6OlsqLzB4NjkvKjo6XSovOiAweDI5LFxuXHQvKjo6WyovMHg0QS8qOjpdKi86IDB4MkEsIC8qOjpbKi8weDZBLyo6Ol0qLzogMHgyQSxcblx0Lyo6OlsqLzB4NEIvKjo6XSovOiAweDJCLCAvKjo6WyovMHg2Qi8qOjpdKi86IDB4MkIsXG5cdC8qOjpbKi8weDRDLyo6Ol0qLzogMHgyQywgLyo6OlsqLzB4NkMvKjo6XSovOiAweDJDLFxuXHQvKjo6WyovMHg0RC8qOjpdKi86IDB4MkQsIC8qOjpbKi8weDZELyo6Ol0qLzogMHgyRCxcblx0Lyo6OlsqLzB4NEUvKjo6XSovOiAweDJFLCAvKjo6WyovMHg2RS8qOjpdKi86IDB4MkUsXG5cdC8qOjpbKi8weDRGLyo6Ol0qLzogMHgyRiwgLyo6OlsqLzB4NkYvKjo6XSovOiAweDJGLFxuXHQvKjo6WyovMHg1OC8qOjpdKi86IDB4MjIsIC8qOjpbKi8weDc4Lyo6Ol0qLzogMHgyMixcblx0Lyo6OlsqLzB4NTkvKjo6XSovOiAweDM5LCAvKjo6WyovMHg3OS8qOjpdKi86IDB4MzksXG5cdC8qOjpbKi8weDVBLyo6Ol0qLzogMHgzQSwgLyo6OlsqLzB4N0EvKjo6XSovOiAweDNBLFxuXHQvKjo6WyovMHg1Qi8qOjpdKi86IDB4M0IsIC8qOjpbKi8weDdCLyo6Ol0qLzogMHgzQixcblx0Lyo6OlsqLzB4NUMvKjo6XSovOiAweDNDLCAvKjo6WyovMHg3Qy8qOjpdKi86IDB4M0MsXG5cdC8qOjpbKi8weDVELyo6Ol0qLzogMHgzRCwgLyo6OlsqLzB4N0QvKjo6XSovOiAweDNEXG59O1xuXG52YXIgUHRnMTggPSB7XG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOidQdGdFbGZMZWwnLCBmOnBhcnNlX1B0Z0VsZkxlbCB9LFxuXHQvKjo6WyovMHgwMi8qOjpdKi86IHsgbjonUHRnRWxmUncnLCBmOnBhcnNlX1B0Z0VsZlJ3IH0sXG5cdC8qOjpbKi8weDAzLyo6Ol0qLzogeyBuOidQdGdFbGZDb2wnLCBmOnBhcnNlX1B0Z0VsZkNvbCB9LFxuXHQvKjo6WyovMHgwNi8qOjpdKi86IHsgbjonUHRnRWxmUndWJywgZjpwYXJzZV9QdGdFbGZSd1YgfSxcblx0Lyo6OlsqLzB4MDcvKjo6XSovOiB7IG46J1B0Z0VsZkNvbFYnLCBmOnBhcnNlX1B0Z0VsZkNvbFYgfSxcblx0Lyo6OlsqLzB4MEEvKjo6XSovOiB7IG46J1B0Z0VsZlJhZGljYWwnLCBmOnBhcnNlX1B0Z0VsZlJhZGljYWwgfSxcblx0Lyo6OlsqLzB4MEIvKjo6XSovOiB7IG46J1B0Z0VsZlJhZGljYWxTJywgZjpwYXJzZV9QdGdFbGZSYWRpY2FsUyB9LFxuXHQvKjo6WyovMHgwRC8qOjpdKi86IHsgbjonUHRnRWxmQ29sUycsIGY6cGFyc2VfUHRnRWxmQ29sUyB9LFxuXHQvKjo6WyovMHgwRi8qOjpdKi86IHsgbjonUHRnRWxmQ29sU1YnLCBmOnBhcnNlX1B0Z0VsZkNvbFNWIH0sXG5cdC8qOjpbKi8weDEwLyo6Ol0qLzogeyBuOidQdGdFbGZSYWRpY2FsTGVsJywgZjpwYXJzZV9QdGdFbGZSYWRpY2FsTGVsIH0sXG5cdC8qOjpbKi8weDE5Lyo6Ol0qLzogeyBuOidQdGdMaXN0JywgZjpwYXJzZV9QdGdMaXN0IH0sXG5cdC8qOjpbKi8weDFELyo6Ol0qLzogeyBuOidQdGdTeE5hbWUnLCBmOnBhcnNlX1B0Z1N4TmFtZSB9LFxuXHQvKjo6WyovMHhGRi8qOjpdKi86IHt9XG59O1xudmFyIFB0ZzE5ID0ge1xuXHQvKjo6WyovMHgwMC8qOjpdKi86IHsgbjonUHRnQXR0ck5vb3AnLCBmOnBhcnNlX1B0Z0F0dHJOb29wIH0sXG5cdC8qOjpbKi8weDAxLyo6Ol0qLzogeyBuOidQdGdBdHRyU2VtaScsIGY6cGFyc2VfUHRnQXR0clNlbWkgfSxcblx0Lyo6OlsqLzB4MDIvKjo6XSovOiB7IG46J1B0Z0F0dHJJZicsIGY6cGFyc2VfUHRnQXR0cklmIH0sXG5cdC8qOjpbKi8weDA0Lyo6Ol0qLzogeyBuOidQdGdBdHRyQ2hvb3NlJywgZjpwYXJzZV9QdGdBdHRyQ2hvb3NlIH0sXG5cdC8qOjpbKi8weDA4Lyo6Ol0qLzogeyBuOidQdGdBdHRyR290bycsIGY6cGFyc2VfUHRnQXR0ckdvdG8gfSxcblx0Lyo6OlsqLzB4MTAvKjo6XSovOiB7IG46J1B0Z0F0dHJTdW0nLCBmOnBhcnNlX1B0Z0F0dHJTdW0gfSxcblx0Lyo6OlsqLzB4MjAvKjo6XSovOiB7IG46J1B0Z0F0dHJCYXhjZWwnLCBmOnBhcnNlX1B0Z0F0dHJCYXhjZWwgfSxcblx0Lyo6OlsqLzB4MjEvKjo6XSovOiB7IG46J1B0Z0F0dHJCYXhjZWwnLCBmOnBhcnNlX1B0Z0F0dHJCYXhjZWwgfSxcblx0Lyo6OlsqLzB4NDAvKjo6XSovOiB7IG46J1B0Z0F0dHJTcGFjZScsIGY6cGFyc2VfUHRnQXR0clNwYWNlIH0sXG5cdC8qOjpbKi8weDQxLyo6Ol0qLzogeyBuOidQdGdBdHRyU3BhY2VTZW1pJywgZjpwYXJzZV9QdGdBdHRyU3BhY2VTZW1pIH0sXG5cdC8qOjpbKi8weDgwLyo6Ol0qLzogeyBuOidQdGdBdHRySWZFcnJvcicsIGY6cGFyc2VfUHRnQXR0cklmRXJyb3IgfSxcblx0Lyo6OlsqLzB4RkYvKjo6XSovOiB7fVxufTtcblxuLyogW01TLVhMU10gMi41LjE5OC4xMDMgOyBbTVMtWExTQl0gMi41Ljk3Ljg3ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2JFeHRyYShibG9iLCBsZW5ndGgsIHJnY2UsIG9wdHMpIHtcblx0aWYob3B0cy5iaWZmIDwgOCkgcmV0dXJuIHBhcnNlbm9vcChibG9iLCBsZW5ndGgpO1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgbyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9PSByZ2NlLmxlbmd0aDsgKytpKSB7XG5cdFx0c3dpdGNoKHJnY2VbaV1bMF0pIHtcblx0XHRcdGNhc2UgJ1B0Z0FycmF5JzogLyogUHRnQXJyYXkgLT4gUHRnRXh0cmFBcnJheSAqL1xuXHRcdFx0XHRyZ2NlW2ldWzFdID0gcGFyc2VfUHRnRXh0cmFBcnJheShibG9iLCAwLCBvcHRzKTtcblx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMV0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z01lbUFyZWEnOiAvKiBQdGdNZW1BcmVhIC0+IFB0Z0V4dHJhTWVtICovXG5cdFx0XHRcdHJnY2VbaV1bMl0gPSBwYXJzZV9QdGdFeHRyYU1lbShibG9iLCByZ2NlW2ldWzFdLCBvcHRzKTtcblx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMl0pO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0V4cCc6IC8qIFB0Z0V4cCAtPiBQdGdFeHRyYUNvbCAqL1xuXHRcdFx0XHRpZihvcHRzICYmIG9wdHMuYmlmZiA9PSAxMikge1xuXHRcdFx0XHRcdHJnY2VbaV1bMV1bMV0gPSBibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0XHRcdFx0by5wdXNoKHJnY2VbaV1bMV0pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnTGlzdCc6IC8qIFRPRE86IFB0Z0xpc3QgLT4gUHRnRXh0cmFMaXN0ICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsUyc6IC8qIFRPRE86IFB0Z0VsZlJhZGljYWxTIC0+IFB0Z0V4dHJhRWxmICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTJzogLyogVE9ETzogUHRnRWxmQ29sUyAtPiBQdGdFeHRyYUVsZiAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sU1YnOiAvKiBUT0RPOiBQdGdFbGZDb2xTViAtPiBQdGdFeHRyYUVsZiAqL1xuXHRcdFx0XHR0aHJvdyBcIlVuc3VwcG9ydGVkIFwiICsgcmdjZVtpXVswXTtcblx0XHRcdGRlZmF1bHQ6IGJyZWFrO1xuXHRcdH1cblx0fVxuXHRsZW5ndGggPSB0YXJnZXQgLSBibG9iLmw7XG5cdC8qIG5vdGU6IHRoaXMgaXMgdGVjaG5pY2FsbHkgYW4gZXJyb3IgYnV0IEV4Y2VsIGRpc3JlZ2FyZHMgKi9cblx0Ly9pZih0YXJnZXQgIT09IGJsb2IubCAmJiBibG9iLmwgIT09IHRhcmdldCAtIGxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKHRhcmdldCArIFwiICE9IFwiICsgYmxvYi5sKTtcblx0aWYobGVuZ3RoICE9PSAwKSBvLnB1c2gocGFyc2Vub29wKGJsb2IsIGxlbmd0aCkpO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMDQgOyBbTVMtWExTQl0gMi41Ljk3Ljg4ICovXG5mdW5jdGlvbiBwYXJzZV9SZ2NlKGJsb2IsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgUiwgaWQsIHB0Z3MgPSBbXTtcblx0d2hpbGUodGFyZ2V0ICE9IGJsb2IubCkge1xuXHRcdGxlbmd0aCA9IHRhcmdldCAtIGJsb2IubDtcblx0XHRpZCA9IGJsb2JbYmxvYi5sXTtcblx0XHRSID0gUHRnVHlwZXNbaWRdIHx8IFB0Z1R5cGVzW1B0Z0R1cGVzW2lkXV07XG5cdFx0aWYoaWQgPT09IDB4MTggfHwgaWQgPT09IDB4MTkpIFIgPSAoaWQgPT09IDB4MTggPyBQdGcxOCA6IFB0ZzE5KVtibG9iW2Jsb2IubCArIDFdXTtcblx0XHRpZighUiB8fCAhUi5mKSB7IC8qcHRncy5wdXNoKi8ocGFyc2Vub29wKGJsb2IsIGxlbmd0aCkpOyB9XG5cdFx0ZWxzZSB7IHB0Z3MucHVzaChbUi5uLCBSLmYoYmxvYiwgbGVuZ3RoLCBvcHRzKV0pOyB9XG5cdH1cblx0cmV0dXJuIHB0Z3M7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeV9hcnJheShmLyo6QXJyYXk8QXJyYXk8c3RyaW5nPj4qLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBmLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHggPSBmW2ldLCByLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdFx0Zm9yKHZhciBqID0gMDsgaiA8IHgubGVuZ3RoOyArK2opIHtcblx0XHRcdHZhciB5ID0geFtqXTtcblx0XHRcdGlmKHkpIHN3aXRjaCh5WzBdKSB7XG5cdFx0XHRcdC8vIFRPRE86IGhhbmRsZSBlbWJlZGRlZCBxdW90ZXNcblx0XHRcdFx0Y2FzZSAweDAyOlxuXHRcdFx0XHRcdC8qOjogaWYodHlwZW9mIHlbMV0gIT0gJ3N0cmluZycpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRcdFx0XHRyLnB1c2goJ1wiJyArIHlbMV0ucmVwbGFjZSgvXCIvZywnXCJcIicpICsgJ1wiJyk7IGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OiByLnB1c2goeVsxXSk7XG5cdFx0XHR9IGVsc2Ugci5wdXNoKFwiXCIpO1xuXHRcdH1cblx0XHRvLnB1c2goci5qb2luKFwiLFwiKSk7XG5cdH1cblx0cmV0dXJuIG8uam9pbihcIjtcIik7XG59XG5cbi8qIFtNUy1YTFNdIDIuMi4yIDsgW01TLVhMU0JdIDIuMi4yIFRPRE8gKi9cbnZhciBQdGdCaW5PcCA9IHtcblx0UHRnQWRkOiBcIitcIixcblx0UHRnQ29uY2F0OiBcIiZcIixcblx0UHRnRGl2OiBcIi9cIixcblx0UHRnRXE6IFwiPVwiLFxuXHRQdGdHZTogXCI+PVwiLFxuXHRQdGdHdDogXCI+XCIsXG5cdFB0Z0xlOiBcIjw9XCIsXG5cdFB0Z0x0OiBcIjxcIixcblx0UHRnTXVsOiBcIipcIixcblx0UHRnTmU6IFwiPD5cIixcblx0UHRnUG93ZXI6IFwiXlwiLFxuXHRQdGdTdWI6IFwiLVwiXG59O1xuXG4vLyBMaXN0IG9mIGludmFsaWQgY2hhcmFjdGVycyBuZWVkcyB0byBiZSB0ZXN0ZWQgZnVydGhlclxuZnVuY3Rpb24gZm9ybXVsYV9xdW90ZV9zaGVldF9uYW1lKHNuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighc25hbWUgJiYgIShvcHRzICYmIG9wdHMuYmlmZiA8PSA1ICYmIG9wdHMuYmlmZiA+PSAyKSkgdGhyb3cgbmV3IEVycm9yKFwiZW1wdHkgc2hlZXQgbmFtZVwiKTtcblx0aWYgKC9bXlxcd1xcdTRFMDAtXFx1OUZGRlxcdTMwNDAtXFx1MzBGRl0vLnRlc3Qoc25hbWUpKSByZXR1cm4gXCInXCIgKyBzbmFtZSArIFwiJ1wiO1xuXHRyZXR1cm4gc25hbWU7XG59XG5mdW5jdGlvbiBnZXRfaXh0aV9yYXcoc3VwYm9va3MsIGl4dGkvKjpudW1iZXIqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdGlmKCFzdXBib29rcykgcmV0dXJuIFwiU0gzM1RKU0VSUjBcIjtcblx0aWYob3B0cy5iaWZmID4gOCAmJiAoIXN1cGJvb2tzLlhUSSB8fCAhc3VwYm9va3MuWFRJW2l4dGldKSkgcmV0dXJuIHN1cGJvb2tzLlNoZWV0TmFtZXNbaXh0aV07XG5cdGlmKCFzdXBib29rcy5YVEkpIHJldHVybiBcIlNIMzNUSlNFUlI2XCI7XG5cdHZhciBYVEkgPSBzdXBib29rcy5YVElbaXh0aV07XG5cdGlmKG9wdHMuYmlmZiA8IDgpIHtcblx0XHRpZihpeHRpID4gMTAwMDApIGl4dGktPSA2NTUzNjtcblx0XHRpZihpeHRpIDwgMCkgaXh0aSA9IC1peHRpO1xuXHRcdHJldHVybiBpeHRpID09IDAgPyBcIlwiIDogc3VwYm9va3MuWFRJW2l4dGkgLSAxXTtcblx0fVxuXHRpZighWFRJKSByZXR1cm4gXCJTSDMzVEpTRVJSMVwiO1xuXHR2YXIgbyA9IFwiXCI7XG5cdGlmKG9wdHMuYmlmZiA+IDgpIHN3aXRjaChzdXBib29rc1tYVElbMF1dWzBdKSB7XG5cdFx0Y2FzZSAweDAxNjU6IC8qICdCcnRTdXBTZWxmJyAqL1xuXHRcdFx0byA9IFhUSVsxXSA9PSAtMSA/IFwiI1JFRlwiIDogc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMV1dO1xuXHRcdFx0cmV0dXJuIFhUSVsxXSA9PSBYVElbMl0gPyBvIDogbyArIFwiOlwiICsgc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMl1dO1xuXHRcdGNhc2UgMHgwMTY2OiAvKiAnQnJ0U3VwU2FtZScgKi9cblx0XHRcdGlmKG9wdHMuU0lEICE9IG51bGwpIHJldHVybiBzdXBib29rcy5TaGVldE5hbWVzW29wdHMuU0lEXTtcblx0XHRcdHJldHVybiBcIlNIMzNUSlNTQU1FXCIgKyBzdXBib29rc1tYVElbMF1dWzBdO1xuXHRcdGNhc2UgMHgwMTYzOiAvKiAnQnJ0U3VwQm9va1NyYycgKi9cblx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRkZWZhdWx0OiByZXR1cm4gXCJTSDMzVEpTU1JDXCIgKyBzdXBib29rc1tYVElbMF1dWzBdO1xuXHR9XG5cdHN3aXRjaChzdXBib29rc1tYVElbMF1dWzBdWzBdKSB7XG5cdFx0Y2FzZSAweDA0MDE6XG5cdFx0XHRvID0gWFRJWzFdID09IC0xID8gXCIjUkVGXCIgOiAoc3VwYm9va3MuU2hlZXROYW1lc1tYVElbMV1dIHx8IFwiU0gzM1RKU0VSUjNcIik7XG5cdFx0XHRyZXR1cm4gWFRJWzFdID09IFhUSVsyXSA/IG8gOiBvICsgXCI6XCIgKyBzdXBib29rcy5TaGVldE5hbWVzW1hUSVsyXV07XG5cdFx0Y2FzZSAweDNBMDE6IHJldHVybiBzdXBib29rc1tYVElbMF1dLnNsaWNlKDEpLm1hcChmdW5jdGlvbihuYW1lKSB7IHJldHVybiBuYW1lLk5hbWU7IH0pLmpvaW4oXCI7O1wiKTsgLy9yZXR1cm4gXCJTSDMzVEpTRVJSOFwiO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRpZighc3VwYm9va3NbWFRJWzBdXVswXVszXSkgcmV0dXJuIFwiU0gzM1RKU0VSUjJcIjtcblx0XHRcdG8gPSBYVElbMV0gPT0gLTEgPyBcIiNSRUZcIiA6IChzdXBib29rc1tYVElbMF1dWzBdWzNdW1hUSVsxXV0gfHwgXCJTSDMzVEpTRVJSNFwiKTtcblx0XHRcdHJldHVybiBYVElbMV0gPT0gWFRJWzJdID8gbyA6IG8gKyBcIjpcIiArIHN1cGJvb2tzW1hUSVswXV1bMF1bM11bWFRJWzJdXTtcblx0fVxufVxuZnVuY3Rpb24gZ2V0X2l4dGkoc3VwYm9va3MsIGl4dGkvKjpudW1iZXIqLywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBpeHRpcmF3ID0gZ2V0X2l4dGlfcmF3KHN1cGJvb2tzLCBpeHRpLCBvcHRzKTtcblx0cmV0dXJuIGl4dGlyYXcgPT0gXCIjUkVGXCIgPyBpeHRpcmF3IDogZm9ybXVsYV9xdW90ZV9zaGVldF9uYW1lKGl4dGlyYXcsIG9wdHMpO1xufVxuZnVuY3Rpb24gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYS8qQXJyYXk8YW55PiovLCByYW5nZSwgY2VsbC8qOmFueSovLCBzdXBib29rcywgb3B0cykvKjpzdHJpbmcqLyB7XG5cdHZhciBiaWZmID0gKG9wdHMgJiYgb3B0cy5iaWZmKSB8fCA4O1xuXHR2YXIgX3JhbmdlID0gLypyYW5nZSAhPSBudWxsID8gcmFuZ2UgOiovIHtzOntjOjAsIHI6MH0sZTp7YzowLCByOjB9fTtcblx0dmFyIHN0YWNrLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGUxLCBlMiwgLyo6OnR5cGUsKi8gYy8qOkNlbGxBZGRyZXNzKi8sIGl4dGk9MCwgbmFtZWlkeD0wLCByLCBzbmFtZT1cIlwiO1xuXHRpZighZm9ybXVsYVswXSB8fCAhZm9ybXVsYVswXVswXSkgcmV0dXJuIFwiXCI7XG5cdHZhciBsYXN0X3NwID0gLTEsIHNwID0gXCJcIjtcblx0Zm9yKHZhciBmZiA9IDAsIGZmbGVuID0gZm9ybXVsYVswXS5sZW5ndGg7IGZmIDwgZmZsZW47ICsrZmYpIHtcblx0XHR2YXIgZiA9IGZvcm11bGFbMF1bZmZdO1xuXHRcdHN3aXRjaChmWzBdKSB7XG5cdFx0XHRjYXNlICdQdGdVbWludXMnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjkzICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCItXCIgKyBzdGFjay5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnVXBsdXMnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljk1ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCIrXCIgKyBzdGFjay5wb3AoKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUGVyY2VudCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODEgKi9cblx0XHRcdFx0c3RhY2sucHVzaChzdGFjay5wb3AoKSArIFwiJVwiKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FkZCc6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguMjYgKi9cblx0XHRcdGNhc2UgJ1B0Z0NvbmNhdCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDMgKi9cblx0XHRcdGNhc2UgJ1B0Z0Rpdic6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNDUgKi9cblx0XHRcdGNhc2UgJ1B0Z0VxJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNTYgKi9cblx0XHRcdGNhc2UgJ1B0Z0dlJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjQgKi9cblx0XHRcdGNhc2UgJ1B0Z0d0JzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjUgKi9cblx0XHRcdGNhc2UgJ1B0Z0xlJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjggKi9cblx0XHRcdGNhc2UgJ1B0Z0x0JzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNjkgKi9cblx0XHRcdGNhc2UgJ1B0Z011bCc6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNzUgKi9cblx0XHRcdGNhc2UgJ1B0Z05lJzogICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguNzggKi9cblx0XHRcdGNhc2UgJ1B0Z1Bvd2VyJzogIC8qIFtNUy1YTFNdIDIuNS4xOTguODIgKi9cblx0XHRcdGNhc2UgJ1B0Z1N1Yic6ICAgIC8qIFtNUy1YTFNdIDIuNS4xOTguOTAgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0aWYobGFzdF9zcCA+PSAwKSB7XG5cdFx0XHRcdFx0c3dpdGNoKGZvcm11bGFbMF1bbGFzdF9zcF1bMV1bMF0pIHtcblx0XHRcdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdFx0c3AgPSBmaWxsKFwiIFwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIDE6XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdHNwID0gZmlsbChcIlxcclwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKTsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRzcCA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFB0Z0F0dHJTcGFjZVR5cGUgXCIgKyBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZTIgPSBlMiArIHNwO1xuXHRcdFx0XHRcdGxhc3Rfc3AgPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1B0Z0Jpbk9wW2ZbMF1dK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0lzZWN0JzogLyogW01TLVhMU10gMi41LjE5OC42NyAqL1xuXHRcdFx0XHRlMSA9IHN0YWNrLnBvcCgpOyBlMiA9IHN0YWNrLnBvcCgpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGUyK1wiIFwiK2UxKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdVbmlvbic6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTQgKi9cblx0XHRcdFx0ZTEgPSBzdGFjay5wb3AoKTsgZTIgPSBzdGFjay5wb3AoKTtcblx0XHRcdFx0c3RhY2sucHVzaChlMitcIixcIitlMSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUmFuZ2UnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjgzICovXG5cdFx0XHRcdGUxID0gc3RhY2sucG9wKCk7IGUyID0gc3RhY2sucG9wKCk7XG5cdFx0XHRcdHN0YWNrLnB1c2goZTIrXCI6XCIrZTEpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQXR0ckNob29zZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzQgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRyR290byc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzUgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRySWYnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM2ICovXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXR0cklmRXJyb3InOiAvKiBbTVMtWExTQl0gMi41Ljk3LjI4ICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cblx0XHRcdGNhc2UgJ1B0Z1JlZic6IC8qIFtNUy1YTFNdIDIuNS4xOTguODQgKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL2MgPSBzaGlmdF9jZWxsX3hscygoZlsxXVsxXS8qOmFueSovKSwgX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfY2VsbF94bHMoYywgYmlmZikpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z1JlZk4nOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg4ICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9jID0gY2VsbCA/IHNoaWZ0X2NlbGxfeGxzKChmWzFdWzFdLyo6YW55Ki8pLCBjZWxsLCBvcHRzKSA6IChmWzFdWzFdLyo6YW55Ki8pO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9jZWxsX3hscyhjLCBiaWZmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnUmVmM2QnOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg1ICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9peHRpID0gLyo6Ok51bWJlcigqL2ZbMV1bMV0vKjo6KSovOyBjID0gc2hpZnRfY2VsbF94bHMoKGZbMV1bMl0vKjphbnkqLyksIF9yYW5nZSwgb3B0cyk7XG5cdFx0XHRcdHNuYW1lID0gZ2V0X2l4dGkoc3VwYm9va3MsIGl4dGksIG9wdHMpO1xuXHRcdFx0XHR2YXIgdyA9IHNuYW1lOyAvKiBJRTkgZmFpbHMgb24gZGVmaW5lZCBuYW1lcyAqLyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdFx0XHRcdHN0YWNrLnB1c2goc25hbWUgKyBcIiFcIiArIGVuY29kZV9jZWxsX3hscyhjLCBiaWZmKSk7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdGdW5jJzogLyogW01TLVhMU10gMi41LjE5OC42MiAqL1xuXHRcdFx0Y2FzZSAnUHRnRnVuY1Zhcic6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjMgKi9cblx0XHRcdFx0LyogZlsxXSA9IFthcmdjLCBmdW5jLCB0eXBlXSAqL1xuXHRcdFx0XHR2YXIgYXJnYy8qOm51bWJlciovID0gKGZbMV1bMF0vKjphbnkqLyksIGZ1bmMvKjpzdHJpbmcqLyA9IChmWzFdWzFdLyo6YW55Ki8pO1xuXHRcdFx0XHRpZighYXJnYykgYXJnYyA9IDA7XG5cdFx0XHRcdGFyZ2MgJj0gMHg3Rjtcblx0XHRcdFx0dmFyIGFyZ3MgPSBhcmdjID09IDAgPyBbXSA6IHN0YWNrLnNsaWNlKC1hcmdjKTtcblx0XHRcdFx0c3RhY2subGVuZ3RoIC09IGFyZ2M7XG5cdFx0XHRcdGlmKGZ1bmMgPT09ICdVc2VyJykgZnVuYyA9IGFyZ3Muc2hpZnQoKTtcblx0XHRcdFx0c3RhY2sucHVzaChmdW5jICsgXCIoXCIgKyBhcmdzLmpvaW4oXCIsXCIpICsgXCIpXCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnQm9vbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNDIgKi9cblx0XHRcdFx0c3RhY2sucHVzaChmWzFdID8gXCJUUlVFXCIgOiBcIkZBTFNFXCIpOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z0ludCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNjYgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgvKjo6U3RyaW5nKCovZlsxXS8qOjopKi8pOyBicmVhaztcblx0XHRcdGNhc2UgJ1B0Z051bSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzkgVE9ETzogcHJlY2lzaW9uPyAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFN0cmluZyhmWzFdKSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnU3RyJzogLyogW01TLVhMU10gMi41LjE5OC44OSAqL1xuXHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRzdGFjay5wdXNoKCdcIicgKyBmWzFdLnJlcGxhY2UoL1wiL2csICdcIlwiJykgKyAnXCInKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjU3ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goLyo6OlN0cmluZygqL2ZbMV0vKjo6KSovKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBcmVhTic6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzEgVE9ETyAqL1xuXHRcdFx0XHQvKjo6dHlwZSA9IGZbMV1bMF07ICovciA9IHNoaWZ0X3JhbmdlX3hscyhmWzFdWzFdLCBjZWxsID8ge3M6Y2VsbH0gOiBfcmFuZ2UsIG9wdHMpO1xuXHRcdFx0XHRzdGFjay5wdXNoKGVuY29kZV9yYW5nZV94bHMoKHIvKjphbnkqLyksIG9wdHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBcmVhJzogLyogW01TLVhMU10gMi41LjE5OC4yNyBUT0RPOiBmaXhlZCBwb2ludHMgKi9cblx0XHRcdFx0Lyo6OnR5cGUgPSBmWzFdWzBdOyAqL3IgPSBzaGlmdF9yYW5nZV94bHMoZlsxXVsxXSwgX3JhbmdlLCBvcHRzKTtcblx0XHRcdFx0c3RhY2sucHVzaChlbmNvZGVfcmFuZ2VfeGxzKChyLyo6YW55Ki8pLCBvcHRzKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnUHRnQXJlYTNkJzogLyogW01TLVhMU10gMi41LjE5OC4yOCBUT0RPICovXG5cdFx0XHRcdC8qOjp0eXBlID0gZlsxXVswXTsgKi9peHRpID0gLyo6Ok51bWJlcigqL2ZbMV1bMV0vKjo6KSovOyByID0gZlsxXVsyXTtcblx0XHRcdFx0c25hbWUgPSBnZXRfaXh0aShzdXBib29rcywgaXh0aSwgb3B0cyk7XG5cdFx0XHRcdHN0YWNrLnB1c2goc25hbWUgKyBcIiFcIiArIGVuY29kZV9yYW5nZV94bHMoKHIvKjphbnkqLyksIG9wdHMpKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdQdGdBdHRyU3VtJzogLyogW01TLVhMU10gMi41LjE5OC40MSAqL1xuXHRcdFx0XHRzdGFjay5wdXNoKFwiU1VNKFwiICsgc3RhY2sucG9wKCkgKyBcIilcIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdBdHRyQmF4Y2VsJzogLyogW01TLVhMU10gMi41LjE5OC4zMyAqL1xuXHRcdFx0Y2FzZSAnUHRnQXR0clNlbWknOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM3ICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdOYW1lJzogLyogW01TLVhMU10gMi41LjE5OC43NiA7IFtNUy1YTFNCXSAyLjUuOTcuNjAgVE9ETzogcmV2aXNpb25zICovXG5cdFx0XHRcdC8qIGZbMV0gPSB0eXBlLCAwLCBuYW1laW5kZXggKi9cblx0XHRcdFx0bmFtZWlkeCA9IChmWzFdWzJdLyo6YW55Ki8pO1xuXHRcdFx0XHR2YXIgbGJsID0gKHN1cGJvb2tzLm5hbWVzfHxbXSlbbmFtZWlkeC0xXSB8fCAoc3VwYm9va3NbMF18fFtdKVtuYW1laWR4XTtcblx0XHRcdFx0dmFyIG5hbWUgPSBsYmwgPyBsYmwuTmFtZSA6IFwiU0gzM1RKU05BTUVcIiArIFN0cmluZyhuYW1laWR4KTtcblx0XHRcdFx0LyogW01TLVhMU0JdIDIuNS45Ny4xMCBGdGFiIC0tIGxhc3QgdmVyaWZpZWQgMjAyMjAyMDQgKi9cblx0XHRcdFx0aWYobmFtZSAmJiBuYW1lLnNsaWNlKDAsNikgPT0gXCJfeGxmbi5cIiAmJiAhb3B0cy54bGZuKSBuYW1lID0gbmFtZS5zbGljZSg2KTtcblx0XHRcdFx0c3RhY2sucHVzaChuYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z05hbWVYJzogLyogW01TLVhMU10gMi41LjE5OC43NyA7IFtNUy1YTFNCXSAyLjUuOTcuNjEgVE9ETzogcmV2aXNpb25zICovXG5cdFx0XHRcdC8qIGZbMV0gPSB0eXBlLCBpeHRpLCBuYW1laW5kZXggKi9cblx0XHRcdFx0dmFyIGJvb2tpZHgvKjpudW1iZXIqLyA9IChmWzFdWzFdLyo6YW55Ki8pOyBuYW1laWR4ID0gKGZbMV1bMl0vKjphbnkqLyk7IHZhciBleHRlcm5ib29rO1xuXHRcdFx0XHQvKiBUT0RPOiBQcm9wZXJseSBoYW5kbGUgbWlzc2luZyB2YWx1ZXMgLS0gdGhpcyBzaG91bGQgYmUgdXNpbmcgZ2V0X2l4dGlfcmF3IHByaW1hcmlseSAqL1xuXHRcdFx0XHRpZihvcHRzLmJpZmYgPD0gNSkge1xuXHRcdFx0XHRcdGlmKGJvb2tpZHggPCAwKSBib29raWR4ID0gLWJvb2tpZHg7XG5cdFx0XHRcdFx0aWYoc3VwYm9va3NbYm9va2lkeF0pIGV4dGVybmJvb2sgPSBzdXBib29rc1tib29raWR4XVtuYW1laWR4XTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR2YXIgbyA9IFwiXCI7XG5cdFx0XHRcdFx0aWYoKChzdXBib29rc1tib29raWR4XXx8W10pWzBdfHxbXSlbMF0gPT0gMHgzQTAxKXsvKiBlbXB0eSAqL31cblx0XHRcdFx0XHRlbHNlIGlmKCgoc3VwYm9va3NbYm9va2lkeF18fFtdKVswXXx8W10pWzBdID09IDB4MDQwMSl7XG5cdFx0XHRcdFx0XHRpZihzdXBib29rc1tib29raWR4XVtuYW1laWR4XSAmJiBzdXBib29rc1tib29raWR4XVtuYW1laWR4XS5pdGFiID4gMCkge1xuXHRcdFx0XHRcdFx0XHRvID0gc3VwYm9va3MuU2hlZXROYW1lc1tzdXBib29rc1tib29raWR4XVtuYW1laWR4XS5pdGFiLTFdICsgXCIhXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgbyA9IHN1cGJvb2tzLlNoZWV0TmFtZXNbbmFtZWlkeC0xXSsgXCIhXCI7XG5cdFx0XHRcdFx0aWYoc3VwYm9va3NbYm9va2lkeF0gJiYgc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0pIG8gKz0gc3VwYm9va3NbYm9va2lkeF1bbmFtZWlkeF0uTmFtZTtcblx0XHRcdFx0XHRlbHNlIGlmKHN1cGJvb2tzWzBdICYmIHN1cGJvb2tzWzBdW25hbWVpZHhdKSBvICs9IHN1cGJvb2tzWzBdW25hbWVpZHhdLk5hbWU7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHR2YXIgaXh0aWRhdGEgPSAoZ2V0X2l4dGlfcmF3KHN1cGJvb2tzLCBib29raWR4LCBvcHRzKXx8XCJcIikuc3BsaXQoXCI7O1wiKTtcblx0XHRcdFx0XHRcdGlmKGl4dGlkYXRhW25hbWVpZHggLSAxXSkgbyA9IGl4dGlkYXRhW25hbWVpZHggLSAxXTsgLy8gVE9ETzogY29uZmlybSB0aGlzIGlzIGNvcnJlY3Rcblx0XHRcdFx0XHRcdGVsc2UgbyArPSBcIlNIMzNUSlNFUlJYXCI7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHN0YWNrLnB1c2gobyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWV4dGVybmJvb2spIGV4dGVybmJvb2sgPSB7TmFtZTogXCJTSDMzVEpTRVJSWVwifTtcblx0XHRcdFx0c3RhY2sucHVzaChleHRlcm5ib29rLk5hbWUpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnUGFyZW4nOiAvKiBbTVMtWExTXSAyLjUuMTk4LjgwICovXG5cdFx0XHRcdHZhciBscCA9ICcoJywgcnAgPSAnKSc7XG5cdFx0XHRcdGlmKGxhc3Rfc3AgPj0gMCkge1xuXHRcdFx0XHRcdHNwID0gXCJcIjtcblx0XHRcdFx0XHRzd2l0Y2goZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSkge1xuXHRcdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRcdGNhc2UgMjogbHAgPSBmaWxsKFwiIFwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIGxwOyBicmVhaztcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDM6IGxwID0gZmlsbChcIlxcclwiLCBmb3JtdWxhWzBdW2xhc3Rfc3BdWzFdWzFdKSArIGxwOyBicmVhaztcblx0XHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0XHRjYXNlIDQ6IHJwID0gZmlsbChcIiBcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBycDsgYnJlYWs7XG5cdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0Y2FzZSA1OiBycCA9IGZpbGwoXCJcXHJcIiwgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVsxXSkgKyBycDsgYnJlYWs7XG5cdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdFx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlIFwiICsgZm9ybXVsYVswXVtsYXN0X3NwXVsxXVswXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGxhc3Rfc3AgPSAtMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdGFjay5wdXNoKGxwICsgc3RhY2sucG9wKCkgKyBycCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdSZWZFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4Ljg2ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goJyNSRUYhJyk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdSZWZFcnIzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguODcgKi9cblx0XHRcdFx0c3RhY2sucHVzaCgnI1JFRiEnKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0V4cCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTggVE9ETyAqL1xuXHRcdFx0XHRjID0ge2M6KGZbMV1bMV0vKjphbnkqLykscjooZlsxXVswXS8qOmFueSovKX07XG5cdFx0XHRcdHZhciBxID0gKHtjOiBjZWxsLmMsIHI6Y2VsbC5yfS8qOmFueSovKTtcblx0XHRcdFx0aWYoc3VwYm9va3Muc2hhcmVkZltlbmNvZGVfY2VsbChjKV0pIHtcblx0XHRcdFx0XHR2YXIgcGFyc2VkZiA9IChzdXBib29rcy5zaGFyZWRmW2VuY29kZV9jZWxsKGMpXSk7XG5cdFx0XHRcdFx0c3RhY2sucHVzaChzdHJpbmdpZnlfZm9ybXVsYShwYXJzZWRmLCBfcmFuZ2UsIHEsIHN1cGJvb2tzLCBvcHRzKSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dmFyIGZuZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGZvcihlMT0wO2UxIT1zdXBib29rcy5hcnJheWYubGVuZ3RoOyArK2UxKSB7XG5cdFx0XHRcdFx0XHQvKiBUT0RPOiBzaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgcmFuZ2VfaGFzICovXG5cdFx0XHRcdFx0XHRlMiA9IHN1cGJvb2tzLmFycmF5ZltlMV07XG5cdFx0XHRcdFx0XHRpZihjLmMgPCBlMlswXS5zLmMgfHwgYy5jID4gZTJbMF0uZS5jKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdGlmKGMuciA8IGUyWzBdLnMuciB8fCBjLnIgPiBlMlswXS5lLnIpIGNvbnRpbnVlO1xuXHRcdFx0XHRcdFx0c3RhY2sucHVzaChzdHJpbmdpZnlfZm9ybXVsYShlMlsxXSwgX3JhbmdlLCBxLCBzdXBib29rcywgb3B0cykpO1xuXHRcdFx0XHRcdFx0Zm5kID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZighZm5kKSBzdGFjay5wdXNoKC8qOjpTdHJpbmcoKi9mWzFdLyo6OikqLyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FycmF5JzogLyogW01TLVhMU10gMi41LjE5OC4zMiBUT0RPICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCJ7XCIgKyBzdHJpbmdpZnlfYXJyYXkoLyo6OigqL2ZbMV0vKjo6IDphbnkpKi8pICsgXCJ9XCIpO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtQXJlYSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzAgVE9ETzogY29uZmlybSB0aGlzIGlzIGEgbm9uLWRpc3BsYXkgKi9cblx0XHRcdFx0Ly9zdGFjay5wdXNoKFwiKFwiICsgZlsyXS5tYXAoZW5jb2RlX3JhbmdlKS5qb2luKFwiLFwiKSArIFwiKVwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0F0dHJTcGFjZSc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzggKi9cblx0XHRcdGNhc2UgJ1B0Z0F0dHJTcGFjZVNlbWknOiAvKiBbTVMtWExTXSAyLjUuMTk4LjM5ICovXG5cdFx0XHRcdGxhc3Rfc3AgPSBmZjtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z1RibCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguOTIgVE9ETyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtRXJyJzogLyogW01TLVhMU10gMi41LjE5OC43MSAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWlzc0FyZyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzQgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIlwiKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FyZWFFcnInOiAvKiBbTVMtWExTXSAyLjUuMTk4LjI5ICovXG5cdFx0XHRcdHN0YWNrLnB1c2goXCIjUkVGIVwiKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgJ1B0Z0FyZWFFcnIzZCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguMzAgKi9cblx0XHRcdFx0c3RhY2sucHVzaChcIiNSRUYhXCIpOyBicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTGlzdCc6IC8qIFtNUy1YTFNCXSAyLjUuOTcuNTIgKi9cblx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0c3RhY2sucHVzaChcIlRhYmxlXCIgKyBmWzFdLmlkeCArIFwiWyNcIiArIGZbMV0ucnQgKyBcIl1cIik7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdNZW1BcmVhTic6XG5cdFx0XHRjYXNlICdQdGdNZW1Ob01lbU4nOlxuXHRcdFx0Y2FzZSAnUHRnQXR0ck5vb3AnOlxuXHRcdFx0Y2FzZSAnUHRnU2hlZXQnOlxuXHRcdFx0Y2FzZSAnUHRnRW5kU2hlZXQnOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnUHRnTWVtRnVuYyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNzIgVE9ETyAqL1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ1B0Z01lbU5vTWVtJzogLyogW01TLVhMU10gMi41LjE5OC43MyBUT0RPICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdQdGdFbGZDb2wnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ2ICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xTJzogLyogW01TLVhMU10gMi41LjE5OC40NyAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmQ29sU1YnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjQ4ICovXG5cdFx0XHRjYXNlICdQdGdFbGZDb2xWJzogLyogW01TLVhMU10gMi41LjE5OC40OSAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmTGVsJzogLyogW01TLVhMU10gMi41LjE5OC41MCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUmFkaWNhbCc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTEgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJhZGljYWxMZWwnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjUyICovXG5cdFx0XHRjYXNlICdQdGdFbGZSYWRpY2FsUyc6IC8qIFtNUy1YTFNdIDIuNS4xOTguNTMgKi9cblx0XHRcdGNhc2UgJ1B0Z0VsZlJ3JzogLyogW01TLVhMU10gMi41LjE5OC41NCAqL1xuXHRcdFx0Y2FzZSAnUHRnRWxmUndWJzogLyogW01TLVhMU10gMi41LjE5OC41NSAqL1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBFTEZzXCIpO1xuXG5cdFx0XHRjYXNlICdQdGdTeE5hbWUnOiAvKiBbTVMtWExTXSAyLjUuMTk4LjkxIFRPRE8gLS0gZmluZCBhIHRlc3QgY2FzZSAqL1xuXHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoJ1VucmVjb2duaXplZCBGb3JtdWxhIFRva2VuOiAnICsgU3RyaW5nKGYpKTtcblx0XHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcignVW5yZWNvZ25pemVkIEZvcm11bGEgVG9rZW46ICcgKyBTdHJpbmcoZikpO1xuXHRcdH1cblx0XHR2YXIgUHRnTm9uRGlzcCA9IFsnUHRnQXR0clNwYWNlJywgJ1B0Z0F0dHJTcGFjZVNlbWknLCAnUHRnQXR0ckdvdG8nXTtcblx0XHRpZihvcHRzLmJpZmYgIT0gMykgaWYobGFzdF9zcCA+PSAwICYmIFB0Z05vbkRpc3AuaW5kZXhPZihmb3JtdWxhWzBdW2ZmXVswXSkgPT0gLTEpIHtcblx0XHRcdGYgPSBmb3JtdWxhWzBdW2xhc3Rfc3BdO1xuXHRcdFx0dmFyIF9sZWZ0ID0gdHJ1ZTtcblx0XHRcdHN3aXRjaChmWzFdWzBdKSB7XG5cdFx0XHRcdC8qIG5vdGU6IHNvbWUgYmFkIFhMU0IgZmlsZXMgb21pdCB0aGUgUHRnUGFyZW4gKi9cblx0XHRcdFx0Y2FzZSA0OiBfbGVmdCA9IGZhbHNlO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgMDpcblx0XHRcdFx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdFx0XHRcdHNwID0gZmlsbChcIiBcIiwgZlsxXVsxXSk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDU6IF9sZWZ0ID0gZmFsc2U7XG5cdFx0XHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRcdFx0Y2FzZSAxOlxuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0c3AgPSBmaWxsKFwiXFxyXCIsIGZbMV1bMV0pOyBicmVhaztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRzcCA9IFwiXCI7XG5cdFx0XHRcdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRcdFx0XHRpZihvcHRzLldURikgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBQdGdBdHRyU3BhY2VUeXBlIFwiICsgZlsxXVswXSk7XG5cdFx0XHR9XG5cdFx0XHRzdGFjay5wdXNoKChfbGVmdCA/IHNwIDogXCJcIikgKyBzdGFjay5wb3AoKSArIChfbGVmdCA/IFwiXCIgOiBzcCkpO1xuXHRcdFx0bGFzdF9zcCA9IC0xO1xuXHRcdH1cblx0fVxuXHRpZihzdGFjay5sZW5ndGggPiAxICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJiYWQgZm9ybXVsYSBzdGFja1wiKTtcblx0cmV0dXJuIHN0YWNrWzBdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjEgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfQXJyYXlQYXJzZWRGb3JtdWxhKGJsb2IsIGxlbmd0aCwgb3B0cy8qOjosIHJlZiovKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGgsIGxlbiA9IG9wdHMuYmlmZiA9PSAyID8gMSA6IDI7XG5cdHZhciByZ2NiLCBjY2UgPSBibG9iLnJlYWRfc2hpZnQobGVuKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0aWYoY2NlID09IDB4RkZGRikgcmV0dXJuIFtbXSxwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLTIpXTtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgbGVuKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgbGVuZ3RoIC0gY2NlIC0gbGVuLCByZ2NlLCBvcHRzKTtcblx0YmxvYi5sID0gdGFyZ2V0O1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjMgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQ2VsbFBhcnNlZEZvcm11bGEoYmxvYiwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciB0YXJnZXQgPSBibG9iLmwgKyBsZW5ndGgsIGxlbiA9IG9wdHMuYmlmZiA9PSAyID8gMSA6IDI7XG5cdHZhciByZ2NiLCBjY2UgPSBibG9iLnJlYWRfc2hpZnQobGVuKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0aWYoY2NlID09IDB4RkZGRikgcmV0dXJuIFtbXSxwYXJzZW5vb3AoYmxvYiwgbGVuZ3RoLTIpXTtcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgbGVuKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgbGVuZ3RoIC0gY2NlIC0gbGVuLCByZ2NlLCBvcHRzKTtcblx0YmxvYi5sID0gdGFyZ2V0O1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTk4LjIxICovXG5mdW5jdGlvbiBwYXJzZV9OYW1lUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMsIGNjZSkge1xuXHR2YXIgdGFyZ2V0ID0gYmxvYi5sICsgbGVuZ3RoO1xuXHR2YXIgcmdjZSA9IHBhcnNlX1JnY2UoYmxvYiwgY2NlLCBvcHRzKTtcblx0dmFyIHJnY2I7XG5cdGlmKHRhcmdldCAhPT0gYmxvYi5sKSByZ2NiID0gcGFyc2VfUmdiRXh0cmEoYmxvYiwgdGFyZ2V0IC0gYmxvYi5sLCByZ2NlLCBvcHRzKTtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU10gMi41LjE5OC4xMTggVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfU2hhcmVkUGFyc2VkRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIHRhcmdldCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIHJnY2IsIGNjZSA9IGJsb2IucmVhZF9zaGlmdCgyKTsgLy8gbGVuZ3RoIG9mIHJnY2Vcblx0dmFyIHJnY2UgPSBwYXJzZV9SZ2NlKGJsb2IsIGNjZSwgb3B0cyk7XG5cdGlmKGNjZSA9PSAweEZGRkYpIHJldHVybiBbW10scGFyc2Vub29wKGJsb2IsIGxlbmd0aC0yKV07XG5cdGlmKGxlbmd0aCAhPT0gY2NlICsgMikgcmdjYiA9IHBhcnNlX1JnYkV4dHJhKGJsb2IsIHRhcmdldCAtIGNjZSAtIDIsIHJnY2UsIG9wdHMpO1xuXHRyZXR1cm4gW3JnY2UsIHJnY2JdO1xufVxuXG4vKiBbTVMtWExTXSAyLjUuMTMzIFRPRE86IGhvdyB0byBlbWl0IGVtcHR5IHN0cmluZ3M/ICovXG5mdW5jdGlvbiBwYXJzZV9Gb3JtdWxhVmFsdWUoYmxvYi8qOjosIGxlbmd0aCovKSB7XG5cdHZhciBiO1xuXHRpZihfX3JlYWRVSW50MTZMRShibG9iLGJsb2IubCArIDYpICE9PSAweEZGRkYpIHJldHVybiBbcGFyc2VfWG51bShibG9iKSwnbiddO1xuXHRzd2l0Y2goYmxvYltibG9iLmxdKSB7XG5cdFx0Y2FzZSAweDAwOiBibG9iLmwgKz0gODsgcmV0dXJuIFtcIlN0cmluZ1wiLCAncyddO1xuXHRcdGNhc2UgMHgwMTogYiA9IGJsb2JbYmxvYi5sKzJdID09PSAweDE7IGJsb2IubCArPSA4OyByZXR1cm4gW2IsJ2InXTtcblx0XHRjYXNlIDB4MDI6IGIgPSBibG9iW2Jsb2IubCsyXTsgYmxvYi5sICs9IDg7IHJldHVybiBbYiwnZSddO1xuXHRcdGNhc2UgMHgwMzogYmxvYi5sICs9IDg7IHJldHVybiBbXCJcIiwncyddO1xuXHR9XG5cdHJldHVybiBbXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm11bGFWYWx1ZSh2YWx1ZSkge1xuXHRpZih2YWx1ZSA9PSBudWxsKSB7XG5cdFx0Ly8gQmxhbmsgU3RyaW5nIFZhbHVlXG5cdFx0dmFyIG8gPSBuZXdfYnVmKDgpO1xuXHRcdG8ud3JpdGVfc2hpZnQoMSwgMHgwMyk7XG5cdFx0by53cml0ZV9zaGlmdCgxLCAwKTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRcdG8ud3JpdGVfc2hpZnQoMiwgMCk7XG5cdFx0by53cml0ZV9zaGlmdCgyLCAweEZGRkYpO1xuXHRcdHJldHVybiBvO1xuXHR9IGVsc2UgaWYodHlwZW9mIHZhbHVlID09IFwibnVtYmVyXCIpIHJldHVybiB3cml0ZV9YbnVtKHZhbHVlKTtcblx0cmV0dXJuIHdyaXRlX1hudW0oMCk7XG59XG5cbi8qIFtNUy1YTFNdIDIuNC4xMjcgVE9ETyAqL1xuZnVuY3Rpb24gcGFyc2VfRm9ybXVsYShibG9iLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGJsb2IubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNDZWxsKGJsb2IsIDYpO1xuXHRpZihvcHRzLmJpZmYgPT0gMikgKytibG9iLmw7XG5cdHZhciB2YWwgPSBwYXJzZV9Gb3JtdWxhVmFsdWUoYmxvYiw4KTtcblx0dmFyIGZsYWdzID0gYmxvYi5yZWFkX3NoaWZ0KDEpO1xuXHRpZihvcHRzLmJpZmYgIT0gMikge1xuXHRcdGJsb2IucmVhZF9zaGlmdCgxKTtcblx0XHRpZihvcHRzLmJpZmYgPj0gNSkge1xuXHRcdFx0Lyp2YXIgY2huID0gKi9ibG9iLnJlYWRfc2hpZnQoNCk7XG5cdFx0fVxuXHR9XG5cdHZhciBjYmYgPSBwYXJzZV9YTFNDZWxsUGFyc2VkRm9ybXVsYShibG9iLCBlbmQgLSBibG9iLmwsIG9wdHMpO1xuXHRyZXR1cm4ge2NlbGw6Y2VsbCwgdmFsOnZhbFswXSwgZm9ybXVsYTpjYmYsIHNoYXJlZDogKGZsYWdzID4+IDMpICYgMSwgdHQ6dmFsWzFdfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0Zvcm11bGEoY2VsbC8qOkNlbGwqLywgUi8qOm51bWJlciovLCBDLyo6bnVtYmVyKi8sIG9wdHMsIG9zLyo6bnVtYmVyKi8pIHtcblx0Ly8gQ2VsbFxuXHR2YXIgbzEgPSB3cml0ZV9YTFNDZWxsKFIsIEMsIG9zKTtcblxuXHQvLyBGb3JtdWxhVmFsdWVcblx0dmFyIG8yID0gd3JpdGVfRm9ybXVsYVZhbHVlKGNlbGwudik7XG5cblx0Ly8gZmxhZ3MgKyBjYWNoZVxuXHR2YXIgbzMgPSBuZXdfYnVmKDYpO1xuXHR2YXIgZmxhZ3MgPSAweDAxIHwgMHgyMDtcblx0bzMud3JpdGVfc2hpZnQoMiwgZmxhZ3MpO1xuXHRvMy53cml0ZV9zaGlmdCg0LCAwKTtcblxuXHQvLyBDZWxsUGFyc2VkRm9ybXVsYVxuXHR2YXIgYmYgPSBuZXdfYnVmKGNlbGwuYmYubGVuZ3RoKTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IGNlbGwuYmYubGVuZ3RoOyArK2kpIGJmW2ldID0gY2VsbC5iZltpXTtcblxuXHR2YXIgb3V0ID0gYmNvbmNhdChbbzEsIG8yLCBvMywgYmZdKTtcblx0cmV0dXJuIG91dDtcbn1cblxuXG4vKiBYTFNCIFBhcnNlZCBGb3JtdWxhIHJlY29yZHMgaGF2ZSB0aGUgc2FtZSBzaGFwZSAqL1xuZnVuY3Rpb24gcGFyc2VfWExTQlBhcnNlZEZvcm11bGEoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBjY2UgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZ2NlID0gcGFyc2VfUmdjZShkYXRhLCBjY2UsIG9wdHMpO1xuXHR2YXIgY2IgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdHZhciByZ2NiID0gY2IgPiAwID8gcGFyc2VfUmdiRXh0cmEoZGF0YSwgY2IsIHJnY2UsIG9wdHMpIDogbnVsbDtcblx0cmV0dXJuIFtyZ2NlLCByZ2NiXTtcbn1cblxuLyogW01TLVhMU0JdIDIuNS45Ny4xIEFycmF5UGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JBcnJheVBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbi8qIFtNUy1YTFNCXSAyLjUuOTcuNCBDZWxsUGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny44IERWUGFyc2VkRm9ybXVsYSAqL1xuLy92YXIgcGFyc2VfWExTQkRWUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny45IEZSVFBhcnNlZEZvcm11bGEgKi9cbi8vdmFyIHBhcnNlX1hMU0JGUlRQYXJzZWRGb3JtdWxhID0gcGFyc2VfWExTQlBhcnNlZEZvcm11bGEyO1xuLyogW01TLVhMU0JdIDIuNS45Ny4xMiBOYW1lUGFyc2VkRm9ybXVsYSAqL1xudmFyIHBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYSA9IHBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhO1xuLyogW01TLVhMU0JdIDIuNS45Ny45OCBTaGFyZWRQYXJzZWRGb3JtdWxhICovXG52YXIgcGFyc2VfWExTQlNoYXJlZFBhcnNlZEZvcm11bGEgPSBwYXJzZV9YTFNCUGFyc2VkRm9ybXVsYTtcbnZhciBDZXRhYiA9IHtcbiAgMDogXCJCRUVQXCIsXG4gIDE6IFwiT1BFTlwiLFxuICAyOiBcIk9QRU4uTElOS1NcIixcbiAgMzogXCJDTE9TRS5BTExcIixcbiAgNDogXCJTQVZFXCIsXG4gIDU6IFwiU0FWRS5BU1wiLFxuICA2OiBcIkZJTEUuREVMRVRFXCIsXG4gIDc6IFwiUEFHRS5TRVRVUFwiLFxuICA4OiBcIlBSSU5UXCIsXG4gIDk6IFwiUFJJTlRFUi5TRVRVUFwiLFxuICAxMDogXCJRVUlUXCIsXG4gIDExOiBcIk5FVy5XSU5ET1dcIixcbiAgMTI6IFwiQVJSQU5HRS5BTExcIixcbiAgMTM6IFwiV0lORE9XLlNJWkVcIixcbiAgMTQ6IFwiV0lORE9XLk1PVkVcIixcbiAgMTU6IFwiRlVMTFwiLFxuICAxNjogXCJDTE9TRVwiLFxuICAxNzogXCJSVU5cIixcbiAgMjI6IFwiU0VULlBSSU5ULkFSRUFcIixcbiAgMjM6IFwiU0VULlBSSU5ULlRJVExFU1wiLFxuICAyNDogXCJTRVQuUEFHRS5CUkVBS1wiLFxuICAyNTogXCJSRU1PVkUuUEFHRS5CUkVBS1wiLFxuICAyNjogXCJGT05UXCIsXG4gIDI3OiBcIkRJU1BMQVlcIixcbiAgMjg6IFwiUFJPVEVDVC5ET0NVTUVOVFwiLFxuICAyOTogXCJQUkVDSVNJT05cIixcbiAgMzA6IFwiQTEuUjFDMVwiLFxuICAzMTogXCJDQUxDVUxBVEUuTk9XXCIsXG4gIDMyOiBcIkNBTENVTEFUSU9OXCIsXG4gIDM0OiBcIkRBVEEuRklORFwiLFxuICAzNTogXCJFWFRSQUNUXCIsXG4gIDM2OiBcIkRBVEEuREVMRVRFXCIsXG4gIDM3OiBcIlNFVC5EQVRBQkFTRVwiLFxuICAzODogXCJTRVQuQ1JJVEVSSUFcIixcbiAgMzk6IFwiU09SVFwiLFxuICA0MDogXCJEQVRBLlNFUklFU1wiLFxuICA0MTogXCJUQUJMRVwiLFxuICA0MjogXCJGT1JNQVQuTlVNQkVSXCIsXG4gIDQzOiBcIkFMSUdOTUVOVFwiLFxuICA0NDogXCJTVFlMRVwiLFxuICA0NTogXCJCT1JERVJcIixcbiAgNDY6IFwiQ0VMTC5QUk9URUNUSU9OXCIsXG4gIDQ3OiBcIkNPTFVNTi5XSURUSFwiLFxuICA0ODogXCJVTkRPXCIsXG4gIDQ5OiBcIkNVVFwiLFxuICA1MDogXCJDT1BZXCIsXG4gIDUxOiBcIlBBU1RFXCIsXG4gIDUyOiBcIkNMRUFSXCIsXG4gIDUzOiBcIlBBU1RFLlNQRUNJQUxcIixcbiAgNTQ6IFwiRURJVC5ERUxFVEVcIixcbiAgNTU6IFwiSU5TRVJUXCIsXG4gIDU2OiBcIkZJTEwuUklHSFRcIixcbiAgNTc6IFwiRklMTC5ET1dOXCIsXG4gIDYxOiBcIkRFRklORS5OQU1FXCIsXG4gIDYyOiBcIkNSRUFURS5OQU1FU1wiLFxuICA2MzogXCJGT1JNVUxBLkdPVE9cIixcbiAgNjQ6IFwiRk9STVVMQS5GSU5EXCIsXG4gIDY1OiBcIlNFTEVDVC5MQVNULkNFTExcIixcbiAgNjY6IFwiU0hPVy5BQ1RJVkUuQ0VMTFwiLFxuICA2NzogXCJHQUxMRVJZLkFSRUFcIixcbiAgNjg6IFwiR0FMTEVSWS5CQVJcIixcbiAgNjk6IFwiR0FMTEVSWS5DT0xVTU5cIixcbiAgNzA6IFwiR0FMTEVSWS5MSU5FXCIsXG4gIDcxOiBcIkdBTExFUlkuUElFXCIsXG4gIDcyOiBcIkdBTExFUlkuU0NBVFRFUlwiLFxuICA3MzogXCJDT01CSU5BVElPTlwiLFxuICA3NDogXCJQUkVGRVJSRURcIixcbiAgNzU6IFwiQURELk9WRVJMQVlcIixcbiAgNzY6IFwiR1JJRExJTkVTXCIsXG4gIDc3OiBcIlNFVC5QUkVGRVJSRURcIixcbiAgNzg6IFwiQVhFU1wiLFxuICA3OTogXCJMRUdFTkRcIixcbiAgODA6IFwiQVRUQUNILlRFWFRcIixcbiAgODE6IFwiQURELkFSUk9XXCIsXG4gIDgyOiBcIlNFTEVDVC5DSEFSVFwiLFxuICA4MzogXCJTRUxFQ1QuUExPVC5BUkVBXCIsXG4gIDg0OiBcIlBBVFRFUk5TXCIsXG4gIDg1OiBcIk1BSU4uQ0hBUlRcIixcbiAgODY6IFwiT1ZFUkxBWVwiLFxuICA4NzogXCJTQ0FMRVwiLFxuICA4ODogXCJGT1JNQVQuTEVHRU5EXCIsXG4gIDg5OiBcIkZPUk1BVC5URVhUXCIsXG4gIDkwOiBcIkVESVQuUkVQRUFUXCIsXG4gIDkxOiBcIlBBUlNFXCIsXG4gIDkyOiBcIkpVU1RJRllcIixcbiAgOTM6IFwiSElERVwiLFxuICA5NDogXCJVTkhJREVcIixcbiAgOTU6IFwiV09SS1NQQUNFXCIsXG4gIDk2OiBcIkZPUk1VTEFcIixcbiAgOTc6IFwiRk9STVVMQS5GSUxMXCIsXG4gIDk4OiBcIkZPUk1VTEEuQVJSQVlcIixcbiAgOTk6IFwiREFUQS5GSU5ELk5FWFRcIixcbiAgMTAwOiBcIkRBVEEuRklORC5QUkVWXCIsXG4gIDEwMTogXCJGT1JNVUxBLkZJTkQuTkVYVFwiLFxuICAxMDI6IFwiRk9STVVMQS5GSU5ELlBSRVZcIixcbiAgMTAzOiBcIkFDVElWQVRFXCIsXG4gIDEwNDogXCJBQ1RJVkFURS5ORVhUXCIsXG4gIDEwNTogXCJBQ1RJVkFURS5QUkVWXCIsXG4gIDEwNjogXCJVTkxPQ0tFRC5ORVhUXCIsXG4gIDEwNzogXCJVTkxPQ0tFRC5QUkVWXCIsXG4gIDEwODogXCJDT1BZLlBJQ1RVUkVcIixcbiAgMTA5OiBcIlNFTEVDVFwiLFxuICAxMTA6IFwiREVMRVRFLk5BTUVcIixcbiAgMTExOiBcIkRFTEVURS5GT1JNQVRcIixcbiAgMTEyOiBcIlZMSU5FXCIsXG4gIDExMzogXCJITElORVwiLFxuICAxMTQ6IFwiVlBBR0VcIixcbiAgMTE1OiBcIkhQQUdFXCIsXG4gIDExNjogXCJWU0NST0xMXCIsXG4gIDExNzogXCJIU0NST0xMXCIsXG4gIDExODogXCJBTEVSVFwiLFxuICAxMTk6IFwiTkVXXCIsXG4gIDEyMDogXCJDQU5DRUwuQ09QWVwiLFxuICAxMjE6IFwiU0hPVy5DTElQQk9BUkRcIixcbiAgMTIyOiBcIk1FU1NBR0VcIixcbiAgMTI0OiBcIlBBU1RFLkxJTktcIixcbiAgMTI1OiBcIkFQUC5BQ1RJVkFURVwiLFxuICAxMjY6IFwiREVMRVRFLkFSUk9XXCIsXG4gIDEyNzogXCJST1cuSEVJR0hUXCIsXG4gIDEyODogXCJGT1JNQVQuTU9WRVwiLFxuICAxMjk6IFwiRk9STUFULlNJWkVcIixcbiAgMTMwOiBcIkZPUk1VTEEuUkVQTEFDRVwiLFxuICAxMzE6IFwiU0VORC5LRVlTXCIsXG4gIDEzMjogXCJTRUxFQ1QuU1BFQ0lBTFwiLFxuICAxMzM6IFwiQVBQTFkuTkFNRVNcIixcbiAgMTM0OiBcIlJFUExBQ0UuRk9OVFwiLFxuICAxMzU6IFwiRlJFRVpFLlBBTkVTXCIsXG4gIDEzNjogXCJTSE9XLklORk9cIixcbiAgMTM3OiBcIlNQTElUXCIsXG4gIDEzODogXCJPTi5XSU5ET1dcIixcbiAgMTM5OiBcIk9OLkRBVEFcIixcbiAgMTQwOiBcIkRJU0FCTEUuSU5QVVRcIixcbiAgMTQyOiBcIk9VVExJTkVcIixcbiAgMTQzOiBcIkxJU1QuTkFNRVNcIixcbiAgMTQ0OiBcIkZJTEUuQ0xPU0VcIixcbiAgMTQ1OiBcIlNBVkUuV09SS0JPT0tcIixcbiAgMTQ2OiBcIkRBVEEuRk9STVwiLFxuICAxNDc6IFwiQ09QWS5DSEFSVFwiLFxuICAxNDg6IFwiT04uVElNRVwiLFxuICAxNDk6IFwiV0FJVFwiLFxuICAxNTA6IFwiRk9STUFULkZPTlRcIixcbiAgMTUxOiBcIkZJTEwuVVBcIixcbiAgMTUyOiBcIkZJTEwuTEVGVFwiLFxuICAxNTM6IFwiREVMRVRFLk9WRVJMQVlcIixcbiAgMTU1OiBcIlNIT1JULk1FTlVTXCIsXG4gIDE1OTogXCJTRVQuVVBEQVRFLlNUQVRVU1wiLFxuICAxNjE6IFwiQ09MT1IuUEFMRVRURVwiLFxuICAxNjI6IFwiREVMRVRFLlNUWUxFXCIsXG4gIDE2MzogXCJXSU5ET1cuUkVTVE9SRVwiLFxuICAxNjQ6IFwiV0lORE9XLk1BWElNSVpFXCIsXG4gIDE2NjogXCJDSEFOR0UuTElOS1wiLFxuICAxNjc6IFwiQ0FMQ1VMQVRFLkRPQ1VNRU5UXCIsXG4gIDE2ODogXCJPTi5LRVlcIixcbiAgMTY5OiBcIkFQUC5SRVNUT1JFXCIsXG4gIDE3MDogXCJBUFAuTU9WRVwiLFxuICAxNzE6IFwiQVBQLlNJWkVcIixcbiAgMTcyOiBcIkFQUC5NSU5JTUlaRVwiLFxuICAxNzM6IFwiQVBQLk1BWElNSVpFXCIsXG4gIDE3NDogXCJCUklORy5UTy5GUk9OVFwiLFxuICAxNzU6IFwiU0VORC5UTy5CQUNLXCIsXG4gIDE4NTogXCJNQUlOLkNIQVJULlRZUEVcIixcbiAgMTg2OiBcIk9WRVJMQVkuQ0hBUlQuVFlQRVwiLFxuICAxODc6IFwiU0VMRUNULkVORFwiLFxuICAxODg6IFwiT1BFTi5NQUlMXCIsXG4gIDE4OTogXCJTRU5ELk1BSUxcIixcbiAgMTkwOiBcIlNUQU5EQVJELkZPTlRcIixcbiAgMTkxOiBcIkNPTlNPTElEQVRFXCIsXG4gIDE5MjogXCJTT1JULlNQRUNJQUxcIixcbiAgMTkzOiBcIkdBTExFUlkuM0QuQVJFQVwiLFxuICAxOTQ6IFwiR0FMTEVSWS4zRC5DT0xVTU5cIixcbiAgMTk1OiBcIkdBTExFUlkuM0QuTElORVwiLFxuICAxOTY6IFwiR0FMTEVSWS4zRC5QSUVcIixcbiAgMTk3OiBcIlZJRVcuM0RcIixcbiAgMTk4OiBcIkdPQUwuU0VFS1wiLFxuICAxOTk6IFwiV09SS0dST1VQXCIsXG4gIDIwMDogXCJGSUxMLkdST1VQXCIsXG4gIDIwMTogXCJVUERBVEUuTElOS1wiLFxuICAyMDI6IFwiUFJPTU9URVwiLFxuICAyMDM6IFwiREVNT1RFXCIsXG4gIDIwNDogXCJTSE9XLkRFVEFJTFwiLFxuICAyMDY6IFwiVU5HUk9VUFwiLFxuICAyMDc6IFwiT0JKRUNULlBST1BFUlRJRVNcIixcbiAgMjA4OiBcIlNBVkUuTkVXLk9CSkVDVFwiLFxuICAyMDk6IFwiU0hBUkVcIixcbiAgMjEwOiBcIlNIQVJFLk5BTUVcIixcbiAgMjExOiBcIkRVUExJQ0FURVwiLFxuICAyMTI6IFwiQVBQTFkuU1RZTEVcIixcbiAgMjEzOiBcIkFTU0lHTi5UTy5PQkpFQ1RcIixcbiAgMjE0OiBcIk9CSkVDVC5QUk9URUNUSU9OXCIsXG4gIDIxNTogXCJISURFLk9CSkVDVFwiLFxuICAyMTY6IFwiU0VULkVYVFJBQ1RcIixcbiAgMjE3OiBcIkNSRUFURS5QVUJMSVNIRVJcIixcbiAgMjE4OiBcIlNVQlNDUklCRS5UT1wiLFxuICAyMTk6IFwiQVRUUklCVVRFU1wiLFxuICAyMjA6IFwiU0hPVy5UT09MQkFSXCIsXG4gIDIyMjogXCJQUklOVC5QUkVWSUVXXCIsXG4gIDIyMzogXCJFRElULkNPTE9SXCIsXG4gIDIyNDogXCJTSE9XLkxFVkVMU1wiLFxuICAyMjU6IFwiRk9STUFULk1BSU5cIixcbiAgMjI2OiBcIkZPUk1BVC5PVkVSTEFZXCIsXG4gIDIyNzogXCJPTi5SRUNBTENcIixcbiAgMjI4OiBcIkVESVQuU0VSSUVTXCIsXG4gIDIyOTogXCJERUZJTkUuU1RZTEVcIixcbiAgMjQwOiBcIkxJTkUuUFJJTlRcIixcbiAgMjQzOiBcIkVOVEVSLkRBVEFcIixcbiAgMjQ5OiBcIkdBTExFUlkuUkFEQVJcIixcbiAgMjUwOiBcIk1FUkdFLlNUWUxFU1wiLFxuICAyNTE6IFwiRURJVElPTi5PUFRJT05TXCIsXG4gIDI1MjogXCJQQVNURS5QSUNUVVJFXCIsXG4gIDI1MzogXCJQQVNURS5QSUNUVVJFLkxJTktcIixcbiAgMjU0OiBcIlNQRUxMSU5HXCIsXG4gIDI1NjogXCJaT09NXCIsXG4gIDI1OTogXCJJTlNFUlQuT0JKRUNUXCIsXG4gIDI2MDogXCJXSU5ET1cuTUlOSU1JWkVcIixcbiAgMjY1OiBcIlNPVU5ELk5PVEVcIixcbiAgMjY2OiBcIlNPVU5ELlBMQVlcIixcbiAgMjY3OiBcIkZPUk1BVC5TSEFQRVwiLFxuICAyNjg6IFwiRVhURU5ELlBPTFlHT05cIixcbiAgMjY5OiBcIkZPUk1BVC5BVVRPXCIsXG4gIDI3MjogXCJHQUxMRVJZLjNELkJBUlwiLFxuICAyNzM6IFwiR0FMTEVSWS4zRC5TVVJGQUNFXCIsXG4gIDI3NDogXCJGSUxMLkFVVE9cIixcbiAgMjc2OiBcIkNVU1RPTUlaRS5UT09MQkFSXCIsXG4gIDI3NzogXCJBREQuVE9PTFwiLFxuICAyNzg6IFwiRURJVC5PQkpFQ1RcIixcbiAgMjc5OiBcIk9OLkRPVUJMRUNMSUNLXCIsXG4gIDI4MDogXCJPTi5FTlRSWVwiLFxuICAyODE6IFwiV09SS0JPT0suQUREXCIsXG4gIDI4MjogXCJXT1JLQk9PSy5NT1ZFXCIsXG4gIDI4MzogXCJXT1JLQk9PSy5DT1BZXCIsXG4gIDI4NDogXCJXT1JLQk9PSy5PUFRJT05TXCIsXG4gIDI4NTogXCJTQVZFLldPUktTUEFDRVwiLFxuICAyODg6IFwiQ0hBUlQuV0laQVJEXCIsXG4gIDI4OTogXCJERUxFVEUuVE9PTFwiLFxuICAyOTA6IFwiTU9WRS5UT09MXCIsXG4gIDI5MTogXCJXT1JLQk9PSy5TRUxFQ1RcIixcbiAgMjkyOiBcIldPUktCT09LLkFDVElWQVRFXCIsXG4gIDI5MzogXCJBU1NJR04uVE8uVE9PTFwiLFxuICAyOTU6IFwiQ09QWS5UT09MXCIsXG4gIDI5NjogXCJSRVNFVC5UT09MXCIsXG4gIDI5NzogXCJDT05TVFJBSU4uTlVNRVJJQ1wiLFxuICAyOTg6IFwiUEFTVEUuVE9PTFwiLFxuICAzMDI6IFwiV09SS0JPT0suTkVXXCIsXG4gIDMwNTogXCJTQ0VOQVJJTy5DRUxMU1wiLFxuICAzMDY6IFwiU0NFTkFSSU8uREVMRVRFXCIsXG4gIDMwNzogXCJTQ0VOQVJJTy5BRERcIixcbiAgMzA4OiBcIlNDRU5BUklPLkVESVRcIixcbiAgMzA5OiBcIlNDRU5BUklPLlNIT1dcIixcbiAgMzEwOiBcIlNDRU5BUklPLlNIT1cuTkVYVFwiLFxuICAzMTE6IFwiU0NFTkFSSU8uU1VNTUFSWVwiLFxuICAzMTI6IFwiUElWT1QuVEFCTEUuV0laQVJEXCIsXG4gIDMxMzogXCJQSVZPVC5GSUVMRC5QUk9QRVJUSUVTXCIsXG4gIDMxNDogXCJQSVZPVC5GSUVMRFwiLFxuICAzMTU6IFwiUElWT1QuSVRFTVwiLFxuICAzMTY6IFwiUElWT1QuQURELkZJRUxEU1wiLFxuICAzMTg6IFwiT1BUSU9OUy5DQUxDVUxBVElPTlwiLFxuICAzMTk6IFwiT1BUSU9OUy5FRElUXCIsXG4gIDMyMDogXCJPUFRJT05TLlZJRVdcIixcbiAgMzIxOiBcIkFERElOLk1BTkFHRVJcIixcbiAgMzIyOiBcIk1FTlUuRURJVE9SXCIsXG4gIDMyMzogXCJBVFRBQ0guVE9PTEJBUlNcIixcbiAgMzI0OiBcIlZCQUFjdGl2YXRlXCIsXG4gIDMyNTogXCJPUFRJT05TLkNIQVJUXCIsXG4gIDMyODogXCJWQkEuSU5TRVJULkZJTEVcIixcbiAgMzMwOiBcIlZCQS5QUk9DRURVUkUuREVGSU5JVElPTlwiLFxuICAzMzY6IFwiUk9VVElORy5TTElQXCIsXG4gIDMzODogXCJST1VURS5ET0NVTUVOVFwiLFxuICAzMzk6IFwiTUFJTC5MT0dPTlwiLFxuICAzNDI6IFwiSU5TRVJULlBJQ1RVUkVcIixcbiAgMzQzOiBcIkVESVQuVE9PTFwiLFxuICAzNDQ6IFwiR0FMTEVSWS5ET1VHSE5VVFwiLFxuICAzNTA6IFwiQ0hBUlQuVFJFTkRcIixcbiAgMzUyOiBcIlBJVk9ULklURU0uUFJPUEVSVElFU1wiLFxuICAzNTQ6IFwiV09SS0JPT0suSU5TRVJUXCIsXG4gIDM1NTogXCJPUFRJT05TLlRSQU5TSVRJT05cIixcbiAgMzU2OiBcIk9QVElPTlMuR0VORVJBTFwiLFxuICAzNzA6IFwiRklMVEVSLkFEVkFOQ0VEXCIsXG4gIDM3MzogXCJNQUlMLkFERC5NQUlMRVJcIixcbiAgMzc0OiBcIk1BSUwuREVMRVRFLk1BSUxFUlwiLFxuICAzNzU6IFwiTUFJTC5SRVBMWVwiLFxuICAzNzY6IFwiTUFJTC5SRVBMWS5BTExcIixcbiAgMzc3OiBcIk1BSUwuRk9SV0FSRFwiLFxuICAzNzg6IFwiTUFJTC5ORVhULkxFVFRFUlwiLFxuICAzNzk6IFwiREFUQS5MQUJFTFwiLFxuICAzODA6IFwiSU5TRVJULlRJVExFXCIsXG4gIDM4MTogXCJGT05ULlBST1BFUlRJRVNcIixcbiAgMzgyOiBcIk1BQ1JPLk9QVElPTlNcIixcbiAgMzgzOiBcIldPUktCT09LLkhJREVcIixcbiAgMzg0OiBcIldPUktCT09LLlVOSElERVwiLFxuICAzODU6IFwiV09SS0JPT0suREVMRVRFXCIsXG4gIDM4NjogXCJXT1JLQk9PSy5OQU1FXCIsXG4gIDM4ODogXCJHQUxMRVJZLkNVU1RPTVwiLFxuICAzOTA6IFwiQURELkNIQVJULkFVVE9GT1JNQVRcIixcbiAgMzkxOiBcIkRFTEVURS5DSEFSVC5BVVRPRk9STUFUXCIsXG4gIDM5MjogXCJDSEFSVC5BREQuREFUQVwiLFxuICAzOTM6IFwiQVVUTy5PVVRMSU5FXCIsXG4gIDM5NDogXCJUQUIuT1JERVJcIixcbiAgMzk1OiBcIlNIT1cuRElBTE9HXCIsXG4gIDM5NjogXCJTRUxFQ1QuQUxMXCIsXG4gIDM5NzogXCJVTkdST1VQLlNIRUVUU1wiLFxuICAzOTg6IFwiU1VCVE9UQUwuQ1JFQVRFXCIsXG4gIDM5OTogXCJTVUJUT1RBTC5SRU1PVkVcIixcbiAgNDAwOiBcIlJFTkFNRS5PQkpFQ1RcIixcbiAgNDEyOiBcIldPUktCT09LLlNDUk9MTFwiLFxuICA0MTM6IFwiV09SS0JPT0suTkVYVFwiLFxuICA0MTQ6IFwiV09SS0JPT0suUFJFVlwiLFxuICA0MTU6IFwiV09SS0JPT0suVEFCLlNQTElUXCIsXG4gIDQxNjogXCJGVUxMLlNDUkVFTlwiLFxuICA0MTc6IFwiV09SS0JPT0suUFJPVEVDVFwiLFxuICA0MjA6IFwiU0NST0xMQkFSLlBST1BFUlRJRVNcIixcbiAgNDIxOiBcIlBJVk9ULlNIT1cuUEFHRVNcIixcbiAgNDIyOiBcIlRFWFQuVE8uQ09MVU1OU1wiLFxuICA0MjM6IFwiRk9STUFULkNIQVJUVFlQRVwiLFxuICA0MjQ6IFwiTElOSy5GT1JNQVRcIixcbiAgNDI1OiBcIlRSQUNFUi5ESVNQTEFZXCIsXG4gIDQzMDogXCJUUkFDRVIuTkFWSUdBVEVcIixcbiAgNDMxOiBcIlRSQUNFUi5DTEVBUlwiLFxuICA0MzI6IFwiVFJBQ0VSLkVSUk9SXCIsXG4gIDQzMzogXCJQSVZPVC5GSUVMRC5HUk9VUFwiLFxuICA0MzQ6IFwiUElWT1QuRklFTEQuVU5HUk9VUFwiLFxuICA0MzU6IFwiQ0hFQ0tCT1guUFJPUEVSVElFU1wiLFxuICA0MzY6IFwiTEFCRUwuUFJPUEVSVElFU1wiLFxuICA0Mzc6IFwiTElTVEJPWC5QUk9QRVJUSUVTXCIsXG4gIDQzODogXCJFRElUQk9YLlBST1BFUlRJRVNcIixcbiAgNDM5OiBcIlBJVk9ULlJFRlJFU0hcIixcbiAgNDQwOiBcIkxJTksuQ09NQk9cIixcbiAgNDQxOiBcIk9QRU4uVEVYVFwiLFxuICA0NDI6IFwiSElERS5ESUFMT0dcIixcbiAgNDQzOiBcIlNFVC5ESUFMT0cuRk9DVVNcIixcbiAgNDQ0OiBcIkVOQUJMRS5PQkpFQ1RcIixcbiAgNDQ1OiBcIlBVU0hCVVRUT04uUFJPUEVSVElFU1wiLFxuICA0NDY6IFwiU0VULkRJQUxPRy5ERUZBVUxUXCIsXG4gIDQ0NzogXCJGSUxURVJcIixcbiAgNDQ4OiBcIkZJTFRFUi5TSE9XLkFMTFwiLFxuICA0NDk6IFwiQ0xFQVIuT1VUTElORVwiLFxuICA0NTA6IFwiRlVOQ1RJT04uV0laQVJEXCIsXG4gIDQ1MTogXCJBREQuTElTVC5JVEVNXCIsXG4gIDQ1MjogXCJTRVQuTElTVC5JVEVNXCIsXG4gIDQ1MzogXCJSRU1PVkUuTElTVC5JVEVNXCIsXG4gIDQ1NDogXCJTRUxFQ1QuTElTVC5JVEVNXCIsXG4gIDQ1NTogXCJTRVQuQ09OVFJPTC5WQUxVRVwiLFxuICA0NTY6IFwiU0FWRS5DT1BZLkFTXCIsXG4gIDQ1ODogXCJPUFRJT05TLkxJU1RTLkFERFwiLFxuICA0NTk6IFwiT1BUSU9OUy5MSVNUUy5ERUxFVEVcIixcbiAgNDYwOiBcIlNFUklFUy5BWEVTXCIsXG4gIDQ2MTogXCJTRVJJRVMuWFwiLFxuICA0NjI6IFwiU0VSSUVTLllcIixcbiAgNDYzOiBcIkVSUk9SQkFSLlhcIixcbiAgNDY0OiBcIkVSUk9SQkFSLllcIixcbiAgNDY1OiBcIkZPUk1BVC5DSEFSVFwiLFxuICA0NjY6IFwiU0VSSUVTLk9SREVSXCIsXG4gIDQ2NzogXCJNQUlMLkxPR09GRlwiLFxuICA0Njg6IFwiQ0xFQVIuUk9VVElORy5TTElQXCIsXG4gIDQ2OTogXCJBUFAuQUNUSVZBVEUuTUlDUk9TT0ZUXCIsXG4gIDQ3MDogXCJNQUlMLkVESVQuTUFJTEVSXCIsXG4gIDQ3MTogXCJPTi5TSEVFVFwiLFxuICA0NzI6IFwiU1RBTkRBUkQuV0lEVEhcIixcbiAgNDczOiBcIlNDRU5BUklPLk1FUkdFXCIsXG4gIDQ3NDogXCJTVU1NQVJZLklORk9cIixcbiAgNDc1OiBcIkZJTkQuRklMRVwiLFxuICA0NzY6IFwiQUNUSVZFLkNFTEwuRk9OVFwiLFxuICA0Nzc6IFwiRU5BQkxFLlRJUFdJWkFSRFwiLFxuICA0Nzg6IFwiVkJBLk1BS0UuQURESU5cIixcbiAgNDgwOiBcIklOU0VSVERBVEFUQUJMRVwiLFxuICA0ODE6IFwiV09SS0dST1VQLk9QVElPTlNcIixcbiAgNDgyOiBcIk1BSUwuU0VORC5NQUlMRVJcIixcbiAgNDg1OiBcIkFVVE9DT1JSRUNUXCIsXG4gIDQ4OTogXCJQT1NULkRPQ1VNRU5UXCIsXG4gIDQ5MTogXCJQSUNLTElTVFwiLFxuICA0OTM6IFwiVklFVy5TSE9XXCIsXG4gIDQ5NDogXCJWSUVXLkRFRklORVwiLFxuICA0OTU6IFwiVklFVy5ERUxFVEVcIixcbiAgNTA5OiBcIlNIRUVULkJBQ0tHUk9VTkRcIixcbiAgNTEwOiBcIklOU0VSVC5NQVAuT0JKRUNUXCIsXG4gIDUxMTogXCJPUFRJT05TLk1FTk9OT1wiLFxuICA1MTc6IFwiTVNPQ0hFQ0tTXCIsXG4gIDUxODogXCJOT1JNQUxcIixcbiAgNTE5OiBcIkxBWU9VVFwiLFxuICA1MjA6IFwiUk0uUFJJTlQuQVJFQVwiLFxuICA1MjE6IFwiQ0xFQVIuUFJJTlQuQVJFQVwiLFxuICA1MjI6IFwiQURELlBSSU5ULkFSRUFcIixcbiAgNTIzOiBcIk1PVkUuQlJLXCIsXG4gIDU0NTogXCJISURFQ1VSUi5OT1RFXCIsXG4gIDU0NjogXCJISURFQUxMLk5PVEVTXCIsXG4gIDU0NzogXCJERUxFVEUuTk9URVwiLFxuICA1NDg6IFwiVFJBVkVSU0UuTk9URVNcIixcbiAgNTQ5OiBcIkFDVElWQVRFLk5PVEVTXCIsXG4gIDYyMDogXCJQUk9URUNULlJFVklTSU9OU1wiLFxuICA2MjE6IFwiVU5QUk9URUNULlJFVklTSU9OU1wiLFxuICA2NDc6IFwiT1BUSU9OUy5NRVwiLFxuICA2NTM6IFwiV0VCLlBVQkxJU0hcIixcbiAgNjY3OiBcIk5FV1dFQlFVRVJZXCIsXG4gIDY3MzogXCJQSVZPVC5UQUJMRS5DSEFSVFwiLFxuICA3NTM6IFwiT1BUSU9OUy5TQVZFXCIsXG4gIDc1NTogXCJPUFRJT05TLlNQRUxMXCIsXG4gIDgwODogXCJISURFQUxMLklOS0FOTk9UU1wiXG59O1xudmFyIEZ0YWIgPSB7XG4gIDA6IFwiQ09VTlRcIixcbiAgMTogXCJJRlwiLFxuICAyOiBcIklTTkFcIixcbiAgMzogXCJJU0VSUk9SXCIsXG4gIDQ6IFwiU1VNXCIsXG4gIDU6IFwiQVZFUkFHRVwiLFxuICA2OiBcIk1JTlwiLFxuICA3OiBcIk1BWFwiLFxuICA4OiBcIlJPV1wiLFxuICA5OiBcIkNPTFVNTlwiLFxuICAxMDogXCJOQVwiLFxuICAxMTogXCJOUFZcIixcbiAgMTI6IFwiU1RERVZcIixcbiAgMTM6IFwiRE9MTEFSXCIsXG4gIDE0OiBcIkZJWEVEXCIsXG4gIDE1OiBcIlNJTlwiLFxuICAxNjogXCJDT1NcIixcbiAgMTc6IFwiVEFOXCIsXG4gIDE4OiBcIkFUQU5cIixcbiAgMTk6IFwiUElcIixcbiAgMjA6IFwiU1FSVFwiLFxuICAyMTogXCJFWFBcIixcbiAgMjI6IFwiTE5cIixcbiAgMjM6IFwiTE9HMTBcIixcbiAgMjQ6IFwiQUJTXCIsXG4gIDI1OiBcIklOVFwiLFxuICAyNjogXCJTSUdOXCIsXG4gIDI3OiBcIlJPVU5EXCIsXG4gIDI4OiBcIkxPT0tVUFwiLFxuICAyOTogXCJJTkRFWFwiLFxuICAzMDogXCJSRVBUXCIsXG4gIDMxOiBcIk1JRFwiLFxuICAzMjogXCJMRU5cIixcbiAgMzM6IFwiVkFMVUVcIixcbiAgMzQ6IFwiVFJVRVwiLFxuICAzNTogXCJGQUxTRVwiLFxuICAzNjogXCJBTkRcIixcbiAgMzc6IFwiT1JcIixcbiAgMzg6IFwiTk9UXCIsXG4gIDM5OiBcIk1PRFwiLFxuICA0MDogXCJEQ09VTlRcIixcbiAgNDE6IFwiRFNVTVwiLFxuICA0MjogXCJEQVZFUkFHRVwiLFxuICA0MzogXCJETUlOXCIsXG4gIDQ0OiBcIkRNQVhcIixcbiAgNDU6IFwiRFNUREVWXCIsXG4gIDQ2OiBcIlZBUlwiLFxuICA0NzogXCJEVkFSXCIsXG4gIDQ4OiBcIlRFWFRcIixcbiAgNDk6IFwiTElORVNUXCIsXG4gIDUwOiBcIlRSRU5EXCIsXG4gIDUxOiBcIkxPR0VTVFwiLFxuICA1MjogXCJHUk9XVEhcIixcbiAgNTM6IFwiR09UT1wiLFxuICA1NDogXCJIQUxUXCIsXG4gIDU1OiBcIlJFVFVSTlwiLFxuICA1NjogXCJQVlwiLFxuICA1NzogXCJGVlwiLFxuICA1ODogXCJOUEVSXCIsXG4gIDU5OiBcIlBNVFwiLFxuICA2MDogXCJSQVRFXCIsXG4gIDYxOiBcIk1JUlJcIixcbiAgNjI6IFwiSVJSXCIsXG4gIDYzOiBcIlJBTkRcIixcbiAgNjQ6IFwiTUFUQ0hcIixcbiAgNjU6IFwiREFURVwiLFxuICA2NjogXCJUSU1FXCIsXG4gIDY3OiBcIkRBWVwiLFxuICA2ODogXCJNT05USFwiLFxuICA2OTogXCJZRUFSXCIsXG4gIDcwOiBcIldFRUtEQVlcIixcbiAgNzE6IFwiSE9VUlwiLFxuICA3MjogXCJNSU5VVEVcIixcbiAgNzM6IFwiU0VDT05EXCIsXG4gIDc0OiBcIk5PV1wiLFxuICA3NTogXCJBUkVBU1wiLFxuICA3NjogXCJST1dTXCIsXG4gIDc3OiBcIkNPTFVNTlNcIixcbiAgNzg6IFwiT0ZGU0VUXCIsXG4gIDc5OiBcIkFCU1JFRlwiLFxuICA4MDogXCJSRUxSRUZcIixcbiAgODE6IFwiQVJHVU1FTlRcIixcbiAgODI6IFwiU0VBUkNIXCIsXG4gIDgzOiBcIlRSQU5TUE9TRVwiLFxuICA4NDogXCJFUlJPUlwiLFxuICA4NTogXCJTVEVQXCIsXG4gIDg2OiBcIlRZUEVcIixcbiAgODc6IFwiRUNIT1wiLFxuICA4ODogXCJTRVQuTkFNRVwiLFxuICA4OTogXCJDQUxMRVJcIixcbiAgOTA6IFwiREVSRUZcIixcbiAgOTE6IFwiV0lORE9XU1wiLFxuICA5MjogXCJTRVJJRVNcIixcbiAgOTM6IFwiRE9DVU1FTlRTXCIsXG4gIDk0OiBcIkFDVElWRS5DRUxMXCIsXG4gIDk1OiBcIlNFTEVDVElPTlwiLFxuICA5NjogXCJSRVNVTFRcIixcbiAgOTc6IFwiQVRBTjJcIixcbiAgOTg6IFwiQVNJTlwiLFxuICA5OTogXCJBQ09TXCIsXG4gIDEwMDogXCJDSE9PU0VcIixcbiAgMTAxOiBcIkhMT09LVVBcIixcbiAgMTAyOiBcIlZMT09LVVBcIixcbiAgMTAzOiBcIkxJTktTXCIsXG4gIDEwNDogXCJJTlBVVFwiLFxuICAxMDU6IFwiSVNSRUZcIixcbiAgMTA2OiBcIkdFVC5GT1JNVUxBXCIsXG4gIDEwNzogXCJHRVQuTkFNRVwiLFxuICAxMDg6IFwiU0VULlZBTFVFXCIsXG4gIDEwOTogXCJMT0dcIixcbiAgMTEwOiBcIkVYRUNcIixcbiAgMTExOiBcIkNIQVJcIixcbiAgMTEyOiBcIkxPV0VSXCIsXG4gIDExMzogXCJVUFBFUlwiLFxuICAxMTQ6IFwiUFJPUEVSXCIsXG4gIDExNTogXCJMRUZUXCIsXG4gIDExNjogXCJSSUdIVFwiLFxuICAxMTc6IFwiRVhBQ1RcIixcbiAgMTE4OiBcIlRSSU1cIixcbiAgMTE5OiBcIlJFUExBQ0VcIixcbiAgMTIwOiBcIlNVQlNUSVRVVEVcIixcbiAgMTIxOiBcIkNPREVcIixcbiAgMTIyOiBcIk5BTUVTXCIsXG4gIDEyMzogXCJESVJFQ1RPUllcIixcbiAgMTI0OiBcIkZJTkRcIixcbiAgMTI1OiBcIkNFTExcIixcbiAgMTI2OiBcIklTRVJSXCIsXG4gIDEyNzogXCJJU1RFWFRcIixcbiAgMTI4OiBcIklTTlVNQkVSXCIsXG4gIDEyOTogXCJJU0JMQU5LXCIsXG4gIDEzMDogXCJUXCIsXG4gIDEzMTogXCJOXCIsXG4gIDEzMjogXCJGT1BFTlwiLFxuICAxMzM6IFwiRkNMT1NFXCIsXG4gIDEzNDogXCJGU0laRVwiLFxuICAxMzU6IFwiRlJFQURMTlwiLFxuICAxMzY6IFwiRlJFQURcIixcbiAgMTM3OiBcIkZXUklURUxOXCIsXG4gIDEzODogXCJGV1JJVEVcIixcbiAgMTM5OiBcIkZQT1NcIixcbiAgMTQwOiBcIkRBVEVWQUxVRVwiLFxuICAxNDE6IFwiVElNRVZBTFVFXCIsXG4gIDE0MjogXCJTTE5cIixcbiAgMTQzOiBcIlNZRFwiLFxuICAxNDQ6IFwiRERCXCIsXG4gIDE0NTogXCJHRVQuREVGXCIsXG4gIDE0NjogXCJSRUZURVhUXCIsXG4gIDE0NzogXCJURVhUUkVGXCIsXG4gIDE0ODogXCJJTkRJUkVDVFwiLFxuICAxNDk6IFwiUkVHSVNURVJcIixcbiAgMTUwOiBcIkNBTExcIixcbiAgMTUxOiBcIkFERC5CQVJcIixcbiAgMTUyOiBcIkFERC5NRU5VXCIsXG4gIDE1MzogXCJBREQuQ09NTUFORFwiLFxuICAxNTQ6IFwiRU5BQkxFLkNPTU1BTkRcIixcbiAgMTU1OiBcIkNIRUNLLkNPTU1BTkRcIixcbiAgMTU2OiBcIlJFTkFNRS5DT01NQU5EXCIsXG4gIDE1NzogXCJTSE9XLkJBUlwiLFxuICAxNTg6IFwiREVMRVRFLk1FTlVcIixcbiAgMTU5OiBcIkRFTEVURS5DT01NQU5EXCIsXG4gIDE2MDogXCJHRVQuQ0hBUlQuSVRFTVwiLFxuICAxNjE6IFwiRElBTE9HLkJPWFwiLFxuICAxNjI6IFwiQ0xFQU5cIixcbiAgMTYzOiBcIk1ERVRFUk1cIixcbiAgMTY0OiBcIk1JTlZFUlNFXCIsXG4gIDE2NTogXCJNTVVMVFwiLFxuICAxNjY6IFwiRklMRVNcIixcbiAgMTY3OiBcIklQTVRcIixcbiAgMTY4OiBcIlBQTVRcIixcbiAgMTY5OiBcIkNPVU5UQVwiLFxuICAxNzA6IFwiQ0FOQ0VMLktFWVwiLFxuICAxNzE6IFwiRk9SXCIsXG4gIDE3MjogXCJXSElMRVwiLFxuICAxNzM6IFwiQlJFQUtcIixcbiAgMTc0OiBcIk5FWFRcIixcbiAgMTc1OiBcIklOSVRJQVRFXCIsXG4gIDE3NjogXCJSRVFVRVNUXCIsXG4gIDE3NzogXCJQT0tFXCIsXG4gIDE3ODogXCJFWEVDVVRFXCIsXG4gIDE3OTogXCJURVJNSU5BVEVcIixcbiAgMTgwOiBcIlJFU1RBUlRcIixcbiAgMTgxOiBcIkhFTFBcIixcbiAgMTgyOiBcIkdFVC5CQVJcIixcbiAgMTgzOiBcIlBST0RVQ1RcIixcbiAgMTg0OiBcIkZBQ1RcIixcbiAgMTg1OiBcIkdFVC5DRUxMXCIsXG4gIDE4NjogXCJHRVQuV09SS1NQQUNFXCIsXG4gIDE4NzogXCJHRVQuV0lORE9XXCIsXG4gIDE4ODogXCJHRVQuRE9DVU1FTlRcIixcbiAgMTg5OiBcIkRQUk9EVUNUXCIsXG4gIDE5MDogXCJJU05PTlRFWFRcIixcbiAgMTkxOiBcIkdFVC5OT1RFXCIsXG4gIDE5MjogXCJOT1RFXCIsXG4gIDE5MzogXCJTVERFVlBcIixcbiAgMTk0OiBcIlZBUlBcIixcbiAgMTk1OiBcIkRTVERFVlBcIixcbiAgMTk2OiBcIkRWQVJQXCIsXG4gIDE5NzogXCJUUlVOQ1wiLFxuICAxOTg6IFwiSVNMT0dJQ0FMXCIsXG4gIDE5OTogXCJEQ09VTlRBXCIsXG4gIDIwMDogXCJERUxFVEUuQkFSXCIsXG4gIDIwMTogXCJVTlJFR0lTVEVSXCIsXG4gIDIwNDogXCJVU0RPTExBUlwiLFxuICAyMDU6IFwiRklOREJcIixcbiAgMjA2OiBcIlNFQVJDSEJcIixcbiAgMjA3OiBcIlJFUExBQ0VCXCIsXG4gIDIwODogXCJMRUZUQlwiLFxuICAyMDk6IFwiUklHSFRCXCIsXG4gIDIxMDogXCJNSURCXCIsXG4gIDIxMTogXCJMRU5CXCIsXG4gIDIxMjogXCJST1VORFVQXCIsXG4gIDIxMzogXCJST1VORERPV05cIixcbiAgMjE0OiBcIkFTQ1wiLFxuICAyMTU6IFwiREJDU1wiLFxuICAyMTY6IFwiUkFOS1wiLFxuICAyMTk6IFwiQUREUkVTU1wiLFxuICAyMjA6IFwiREFZUzM2MFwiLFxuICAyMjE6IFwiVE9EQVlcIixcbiAgMjIyOiBcIlZEQlwiLFxuICAyMjM6IFwiRUxTRVwiLFxuICAyMjQ6IFwiRUxTRS5JRlwiLFxuICAyMjU6IFwiRU5ELklGXCIsXG4gIDIyNjogXCJGT1IuQ0VMTFwiLFxuICAyMjc6IFwiTUVESUFOXCIsXG4gIDIyODogXCJTVU1QUk9EVUNUXCIsXG4gIDIyOTogXCJTSU5IXCIsXG4gIDIzMDogXCJDT1NIXCIsXG4gIDIzMTogXCJUQU5IXCIsXG4gIDIzMjogXCJBU0lOSFwiLFxuICAyMzM6IFwiQUNPU0hcIixcbiAgMjM0OiBcIkFUQU5IXCIsXG4gIDIzNTogXCJER0VUXCIsXG4gIDIzNjogXCJDUkVBVEUuT0JKRUNUXCIsXG4gIDIzNzogXCJWT0xBVElMRVwiLFxuICAyMzg6IFwiTEFTVC5FUlJPUlwiLFxuICAyMzk6IFwiQ1VTVE9NLlVORE9cIixcbiAgMjQwOiBcIkNVU1RPTS5SRVBFQVRcIixcbiAgMjQxOiBcIkZPUk1VTEEuQ09OVkVSVFwiLFxuICAyNDI6IFwiR0VULkxJTksuSU5GT1wiLFxuICAyNDM6IFwiVEVYVC5CT1hcIixcbiAgMjQ0OiBcIklORk9cIixcbiAgMjQ1OiBcIkdST1VQXCIsXG4gIDI0NjogXCJHRVQuT0JKRUNUXCIsXG4gIDI0NzogXCJEQlwiLFxuICAyNDg6IFwiUEFVU0VcIixcbiAgMjUxOiBcIlJFU1VNRVwiLFxuICAyNTI6IFwiRlJFUVVFTkNZXCIsXG4gIDI1MzogXCJBREQuVE9PTEJBUlwiLFxuICAyNTQ6IFwiREVMRVRFLlRPT0xCQVJcIixcbiAgMjU1OiBcIlVzZXJcIixcbiAgMjU2OiBcIlJFU0VULlRPT0xCQVJcIixcbiAgMjU3OiBcIkVWQUxVQVRFXCIsXG4gIDI1ODogXCJHRVQuVE9PTEJBUlwiLFxuICAyNTk6IFwiR0VULlRPT0xcIixcbiAgMjYwOiBcIlNQRUxMSU5HLkNIRUNLXCIsXG4gIDI2MTogXCJFUlJPUi5UWVBFXCIsXG4gIDI2MjogXCJBUFAuVElUTEVcIixcbiAgMjYzOiBcIldJTkRPVy5USVRMRVwiLFxuICAyNjQ6IFwiU0FWRS5UT09MQkFSXCIsXG4gIDI2NTogXCJFTkFCTEUuVE9PTFwiLFxuICAyNjY6IFwiUFJFU1MuVE9PTFwiLFxuICAyNjc6IFwiUkVHSVNURVIuSURcIixcbiAgMjY4OiBcIkdFVC5XT1JLQk9PS1wiLFxuICAyNjk6IFwiQVZFREVWXCIsXG4gIDI3MDogXCJCRVRBRElTVFwiLFxuICAyNzE6IFwiR0FNTUFMTlwiLFxuICAyNzI6IFwiQkVUQUlOVlwiLFxuICAyNzM6IFwiQklOT01ESVNUXCIsXG4gIDI3NDogXCJDSElESVNUXCIsXG4gIDI3NTogXCJDSElJTlZcIixcbiAgMjc2OiBcIkNPTUJJTlwiLFxuICAyNzc6IFwiQ09ORklERU5DRVwiLFxuICAyNzg6IFwiQ1JJVEJJTk9NXCIsXG4gIDI3OTogXCJFVkVOXCIsXG4gIDI4MDogXCJFWFBPTkRJU1RcIixcbiAgMjgxOiBcIkZESVNUXCIsXG4gIDI4MjogXCJGSU5WXCIsXG4gIDI4MzogXCJGSVNIRVJcIixcbiAgMjg0OiBcIkZJU0hFUklOVlwiLFxuICAyODU6IFwiRkxPT1JcIixcbiAgMjg2OiBcIkdBTU1BRElTVFwiLFxuICAyODc6IFwiR0FNTUFJTlZcIixcbiAgMjg4OiBcIkNFSUxJTkdcIixcbiAgMjg5OiBcIkhZUEdFT01ESVNUXCIsXG4gIDI5MDogXCJMT0dOT1JNRElTVFwiLFxuICAyOTE6IFwiTE9HSU5WXCIsXG4gIDI5MjogXCJORUdCSU5PTURJU1RcIixcbiAgMjkzOiBcIk5PUk1ESVNUXCIsXG4gIDI5NDogXCJOT1JNU0RJU1RcIixcbiAgMjk1OiBcIk5PUk1JTlZcIixcbiAgMjk2OiBcIk5PUk1TSU5WXCIsXG4gIDI5NzogXCJTVEFOREFSRElaRVwiLFxuICAyOTg6IFwiT0REXCIsXG4gIDI5OTogXCJQRVJNVVRcIixcbiAgMzAwOiBcIlBPSVNTT05cIixcbiAgMzAxOiBcIlRESVNUXCIsXG4gIDMwMjogXCJXRUlCVUxMXCIsXG4gIDMwMzogXCJTVU1YTVkyXCIsXG4gIDMwNDogXCJTVU1YMk1ZMlwiLFxuICAzMDU6IFwiU1VNWDJQWTJcIixcbiAgMzA2OiBcIkNISVRFU1RcIixcbiAgMzA3OiBcIkNPUlJFTFwiLFxuICAzMDg6IFwiQ09WQVJcIixcbiAgMzA5OiBcIkZPUkVDQVNUXCIsXG4gIDMxMDogXCJGVEVTVFwiLFxuICAzMTE6IFwiSU5URVJDRVBUXCIsXG4gIDMxMjogXCJQRUFSU09OXCIsXG4gIDMxMzogXCJSU1FcIixcbiAgMzE0OiBcIlNURVlYXCIsXG4gIDMxNTogXCJTTE9QRVwiLFxuICAzMTY6IFwiVFRFU1RcIixcbiAgMzE3OiBcIlBST0JcIixcbiAgMzE4OiBcIkRFVlNRXCIsXG4gIDMxOTogXCJHRU9NRUFOXCIsXG4gIDMyMDogXCJIQVJNRUFOXCIsXG4gIDMyMTogXCJTVU1TUVwiLFxuICAzMjI6IFwiS1VSVFwiLFxuICAzMjM6IFwiU0tFV1wiLFxuICAzMjQ6IFwiWlRFU1RcIixcbiAgMzI1OiBcIkxBUkdFXCIsXG4gIDMyNjogXCJTTUFMTFwiLFxuICAzMjc6IFwiUVVBUlRJTEVcIixcbiAgMzI4OiBcIlBFUkNFTlRJTEVcIixcbiAgMzI5OiBcIlBFUkNFTlRSQU5LXCIsXG4gIDMzMDogXCJNT0RFXCIsXG4gIDMzMTogXCJUUklNTUVBTlwiLFxuICAzMzI6IFwiVElOVlwiLFxuICAzMzQ6IFwiTU9WSUUuQ09NTUFORFwiLFxuICAzMzU6IFwiR0VULk1PVklFXCIsXG4gIDMzNjogXCJDT05DQVRFTkFURVwiLFxuICAzMzc6IFwiUE9XRVJcIixcbiAgMzM4OiBcIlBJVk9ULkFERC5EQVRBXCIsXG4gIDMzOTogXCJHRVQuUElWT1QuVEFCTEVcIixcbiAgMzQwOiBcIkdFVC5QSVZPVC5GSUVMRFwiLFxuICAzNDE6IFwiR0VULlBJVk9ULklURU1cIixcbiAgMzQyOiBcIlJBRElBTlNcIixcbiAgMzQzOiBcIkRFR1JFRVNcIixcbiAgMzQ0OiBcIlNVQlRPVEFMXCIsXG4gIDM0NTogXCJTVU1JRlwiLFxuICAzNDY6IFwiQ09VTlRJRlwiLFxuICAzNDc6IFwiQ09VTlRCTEFOS1wiLFxuICAzNDg6IFwiU0NFTkFSSU8uR0VUXCIsXG4gIDM0OTogXCJPUFRJT05TLkxJU1RTLkdFVFwiLFxuICAzNTA6IFwiSVNQTVRcIixcbiAgMzUxOiBcIkRBVEVESUZcIixcbiAgMzUyOiBcIkRBVEVTVFJJTkdcIixcbiAgMzUzOiBcIk5VTUJFUlNUUklOR1wiLFxuICAzNTQ6IFwiUk9NQU5cIixcbiAgMzU1OiBcIk9QRU4uRElBTE9HXCIsXG4gIDM1NjogXCJTQVZFLkRJQUxPR1wiLFxuICAzNTc6IFwiVklFVy5HRVRcIixcbiAgMzU4OiBcIkdFVFBJVk9UREFUQVwiLFxuICAzNTk6IFwiSFlQRVJMSU5LXCIsXG4gIDM2MDogXCJQSE9ORVRJQ1wiLFxuICAzNjE6IFwiQVZFUkFHRUFcIixcbiAgMzYyOiBcIk1BWEFcIixcbiAgMzYzOiBcIk1JTkFcIixcbiAgMzY0OiBcIlNUREVWUEFcIixcbiAgMzY1OiBcIlZBUlBBXCIsXG4gIDM2NjogXCJTVERFVkFcIixcbiAgMzY3OiBcIlZBUkFcIixcbiAgMzY4OiBcIkJBSFRURVhUXCIsXG4gIDM2OTogXCJUSEFJREFZT0ZXRUVLXCIsXG4gIDM3MDogXCJUSEFJRElHSVRcIixcbiAgMzcxOiBcIlRIQUlNT05USE9GWUVBUlwiLFxuICAzNzI6IFwiVEhBSU5VTVNPVU5EXCIsXG4gIDM3MzogXCJUSEFJTlVNU1RSSU5HXCIsXG4gIDM3NDogXCJUSEFJU1RSSU5HTEVOR1RIXCIsXG4gIDM3NTogXCJJU1RIQUlESUdJVFwiLFxuICAzNzY6IFwiUk9VTkRCQUhURE9XTlwiLFxuICAzNzc6IFwiUk9VTkRCQUhUVVBcIixcbiAgMzc4OiBcIlRIQUlZRUFSXCIsXG4gIDM3OTogXCJSVERcIixcbiAgMzgwOiBcIkNVQkVWQUxVRVwiLFxuICAzODE6IFwiQ1VCRU1FTUJFUlwiLFxuICAzODI6IFwiQ1VCRU1FTUJFUlBST1BFUlRZXCIsXG4gIDM4MzogXCJDVUJFUkFOS0VETUVNQkVSXCIsXG4gIDM4NDogXCJIRVgyQklOXCIsXG4gIDM4NTogXCJIRVgyREVDXCIsXG4gIDM4NjogXCJIRVgyT0NUXCIsXG4gIDM4NzogXCJERUMyQklOXCIsXG4gIDM4ODogXCJERUMySEVYXCIsXG4gIDM4OTogXCJERUMyT0NUXCIsXG4gIDM5MDogXCJPQ1QyQklOXCIsXG4gIDM5MTogXCJPQ1QySEVYXCIsXG4gIDM5MjogXCJPQ1QyREVDXCIsXG4gIDM5MzogXCJCSU4yREVDXCIsXG4gIDM5NDogXCJCSU4yT0NUXCIsXG4gIDM5NTogXCJCSU4ySEVYXCIsXG4gIDM5NjogXCJJTVNVQlwiLFxuICAzOTc6IFwiSU1ESVZcIixcbiAgMzk4OiBcIklNUE9XRVJcIixcbiAgMzk5OiBcIklNQUJTXCIsXG4gIDQwMDogXCJJTVNRUlRcIixcbiAgNDAxOiBcIklNTE5cIixcbiAgNDAyOiBcIklNTE9HMlwiLFxuICA0MDM6IFwiSU1MT0cxMFwiLFxuICA0MDQ6IFwiSU1TSU5cIixcbiAgNDA1OiBcIklNQ09TXCIsXG4gIDQwNjogXCJJTUVYUFwiLFxuICA0MDc6IFwiSU1BUkdVTUVOVFwiLFxuICA0MDg6IFwiSU1DT05KVUdBVEVcIixcbiAgNDA5OiBcIklNQUdJTkFSWVwiLFxuICA0MTA6IFwiSU1SRUFMXCIsXG4gIDQxMTogXCJDT01QTEVYXCIsXG4gIDQxMjogXCJJTVNVTVwiLFxuICA0MTM6IFwiSU1QUk9EVUNUXCIsXG4gIDQxNDogXCJTRVJJRVNTVU1cIixcbiAgNDE1OiBcIkZBQ1RET1VCTEVcIixcbiAgNDE2OiBcIlNRUlRQSVwiLFxuICA0MTc6IFwiUVVPVElFTlRcIixcbiAgNDE4OiBcIkRFTFRBXCIsXG4gIDQxOTogXCJHRVNURVBcIixcbiAgNDIwOiBcIklTRVZFTlwiLFxuICA0MjE6IFwiSVNPRERcIixcbiAgNDIyOiBcIk1ST1VORFwiLFxuICA0MjM6IFwiRVJGXCIsXG4gIDQyNDogXCJFUkZDXCIsXG4gIDQyNTogXCJCRVNTRUxKXCIsXG4gIDQyNjogXCJCRVNTRUxLXCIsXG4gIDQyNzogXCJCRVNTRUxZXCIsXG4gIDQyODogXCJCRVNTRUxJXCIsXG4gIDQyOTogXCJYSVJSXCIsXG4gIDQzMDogXCJYTlBWXCIsXG4gIDQzMTogXCJQUklDRU1BVFwiLFxuICA0MzI6IFwiWUlFTERNQVRcIixcbiAgNDMzOiBcIklOVFJBVEVcIixcbiAgNDM0OiBcIlJFQ0VJVkVEXCIsXG4gIDQzNTogXCJESVNDXCIsXG4gIDQzNjogXCJQUklDRURJU0NcIixcbiAgNDM3OiBcIllJRUxERElTQ1wiLFxuICA0Mzg6IFwiVEJJTExFUVwiLFxuICA0Mzk6IFwiVEJJTExQUklDRVwiLFxuICA0NDA6IFwiVEJJTExZSUVMRFwiLFxuICA0NDE6IFwiUFJJQ0VcIixcbiAgNDQyOiBcIllJRUxEXCIsXG4gIDQ0MzogXCJET0xMQVJERVwiLFxuICA0NDQ6IFwiRE9MTEFSRlJcIixcbiAgNDQ1OiBcIk5PTUlOQUxcIixcbiAgNDQ2OiBcIkVGRkVDVFwiLFxuICA0NDc6IFwiQ1VNUFJJTkNcIixcbiAgNDQ4OiBcIkNVTUlQTVRcIixcbiAgNDQ5OiBcIkVEQVRFXCIsXG4gIDQ1MDogXCJFT01PTlRIXCIsXG4gIDQ1MTogXCJZRUFSRlJBQ1wiLFxuICA0NTI6IFwiQ09VUERBWUJTXCIsXG4gIDQ1MzogXCJDT1VQREFZU1wiLFxuICA0NTQ6IFwiQ09VUERBWVNOQ1wiLFxuICA0NTU6IFwiQ09VUE5DRFwiLFxuICA0NTY6IFwiQ09VUE5VTVwiLFxuICA0NTc6IFwiQ09VUFBDRFwiLFxuICA0NTg6IFwiRFVSQVRJT05cIixcbiAgNDU5OiBcIk1EVVJBVElPTlwiLFxuICA0NjA6IFwiT0RETFBSSUNFXCIsXG4gIDQ2MTogXCJPRERMWUlFTERcIixcbiAgNDYyOiBcIk9EREZQUklDRVwiLFxuICA0NjM6IFwiT0RERllJRUxEXCIsXG4gIDQ2NDogXCJSQU5EQkVUV0VFTlwiLFxuICA0NjU6IFwiV0VFS05VTVwiLFxuICA0NjY6IFwiQU1PUkRFR1JDXCIsXG4gIDQ2NzogXCJBTU9STElOQ1wiLFxuICA0Njg6IFwiQ09OVkVSVFwiLFxuICA3MjQ6IFwiU0hFRVRKU1wiLFxuICA0Njk6IFwiQUNDUklOVFwiLFxuICA0NzA6IFwiQUNDUklOVE1cIixcbiAgNDcxOiBcIldPUktEQVlcIixcbiAgNDcyOiBcIk5FVFdPUktEQVlTXCIsXG4gIDQ3MzogXCJHQ0RcIixcbiAgNDc0OiBcIk1VTFRJTk9NSUFMXCIsXG4gIDQ3NTogXCJMQ01cIixcbiAgNDc2OiBcIkZWU0NIRURVTEVcIixcbiAgNDc3OiBcIkNVQkVLUElNRU1CRVJcIixcbiAgNDc4OiBcIkNVQkVTRVRcIixcbiAgNDc5OiBcIkNVQkVTRVRDT1VOVFwiLFxuICA0ODA6IFwiSUZFUlJPUlwiLFxuICA0ODE6IFwiQ09VTlRJRlNcIixcbiAgNDgyOiBcIlNVTUlGU1wiLFxuICA0ODM6IFwiQVZFUkFHRUlGXCIsXG4gIDQ4NDogXCJBVkVSQUdFSUZTXCJcbn07XG52YXIgRnRhYkFyZ2MgPSB7XG4gIDI6IDEsXG4gIDM6IDEsXG4gIDEwOiAwLFxuICAxNTogMSxcbiAgMTY6IDEsXG4gIDE3OiAxLFxuICAxODogMSxcbiAgMTk6IDAsXG4gIDIwOiAxLFxuICAyMTogMSxcbiAgMjI6IDEsXG4gIDIzOiAxLFxuICAyNDogMSxcbiAgMjU6IDEsXG4gIDI2OiAxLFxuICAyNzogMixcbiAgMzA6IDIsXG4gIDMxOiAzLFxuICAzMjogMSxcbiAgMzM6IDEsXG4gIDM0OiAwLFxuICAzNTogMCxcbiAgMzg6IDEsXG4gIDM5OiAyLFxuICA0MDogMyxcbiAgNDE6IDMsXG4gIDQyOiAzLFxuICA0MzogMyxcbiAgNDQ6IDMsXG4gIDQ1OiAzLFxuICA0NzogMyxcbiAgNDg6IDIsXG4gIDUzOiAxLFxuICA2MTogMyxcbiAgNjM6IDAsXG4gIDY1OiAzLFxuICA2NjogMyxcbiAgNjc6IDEsXG4gIDY4OiAxLFxuICA2OTogMSxcbiAgNzA6IDEsXG4gIDcxOiAxLFxuICA3MjogMSxcbiAgNzM6IDEsXG4gIDc0OiAwLFxuICA3NTogMSxcbiAgNzY6IDEsXG4gIDc3OiAxLFxuICA3OTogMixcbiAgODA6IDIsXG4gIDgzOiAxLFxuICA4NTogMCxcbiAgODY6IDEsXG4gIDg5OiAwLFxuICA5MDogMSxcbiAgOTQ6IDAsXG4gIDk1OiAwLFxuICA5NzogMixcbiAgOTg6IDEsXG4gIDk5OiAxLFxuICAxMDE6IDMsXG4gIDEwMjogMyxcbiAgMTA1OiAxLFxuICAxMDY6IDEsXG4gIDEwODogMixcbiAgMTExOiAxLFxuICAxMTI6IDEsXG4gIDExMzogMSxcbiAgMTE0OiAxLFxuICAxMTc6IDIsXG4gIDExODogMSxcbiAgMTE5OiA0LFxuICAxMjE6IDEsXG4gIDEyNjogMSxcbiAgMTI3OiAxLFxuICAxMjg6IDEsXG4gIDEyOTogMSxcbiAgMTMwOiAxLFxuICAxMzE6IDEsXG4gIDEzMzogMSxcbiAgMTM0OiAxLFxuICAxMzU6IDEsXG4gIDEzNjogMixcbiAgMTM3OiAyLFxuICAxMzg6IDIsXG4gIDE0MDogMSxcbiAgMTQxOiAxLFxuICAxNDI6IDMsXG4gIDE0MzogNCxcbiAgMTQ0OiA0LFxuICAxNjE6IDEsXG4gIDE2MjogMSxcbiAgMTYzOiAxLFxuICAxNjQ6IDEsXG4gIDE2NTogMixcbiAgMTcyOiAxLFxuICAxNzU6IDIsXG4gIDE3NjogMixcbiAgMTc3OiAzLFxuICAxNzg6IDIsXG4gIDE3OTogMSxcbiAgMTg0OiAxLFxuICAxODY6IDEsXG4gIDE4OTogMyxcbiAgMTkwOiAxLFxuICAxOTU6IDMsXG4gIDE5NjogMyxcbiAgMTk3OiAxLFxuICAxOTg6IDEsXG4gIDE5OTogMyxcbiAgMjAxOiAxLFxuICAyMDc6IDQsXG4gIDIxMDogMyxcbiAgMjExOiAxLFxuICAyMTI6IDIsXG4gIDIxMzogMixcbiAgMjE0OiAxLFxuICAyMTU6IDEsXG4gIDIyNTogMCxcbiAgMjI5OiAxLFxuICAyMzA6IDEsXG4gIDIzMTogMSxcbiAgMjMyOiAxLFxuICAyMzM6IDEsXG4gIDIzNDogMSxcbiAgMjM1OiAzLFxuICAyNDQ6IDEsXG4gIDI0NzogNCxcbiAgMjUyOiAyLFxuICAyNTc6IDEsXG4gIDI2MTogMSxcbiAgMjcxOiAxLFxuICAyNzM6IDQsXG4gIDI3NDogMixcbiAgMjc1OiAyLFxuICAyNzY6IDIsXG4gIDI3NzogMyxcbiAgMjc4OiAzLFxuICAyNzk6IDEsXG4gIDI4MDogMyxcbiAgMjgxOiAzLFxuICAyODI6IDMsXG4gIDI4MzogMSxcbiAgMjg0OiAxLFxuICAyODU6IDIsXG4gIDI4NjogNCxcbiAgMjg3OiAzLFxuICAyODg6IDIsXG4gIDI4OTogNCxcbiAgMjkwOiAzLFxuICAyOTE6IDMsXG4gIDI5MjogMyxcbiAgMjkzOiA0LFxuICAyOTQ6IDEsXG4gIDI5NTogMyxcbiAgMjk2OiAxLFxuICAyOTc6IDMsXG4gIDI5ODogMSxcbiAgMjk5OiAyLFxuICAzMDA6IDMsXG4gIDMwMTogMyxcbiAgMzAyOiA0LFxuICAzMDM6IDIsXG4gIDMwNDogMixcbiAgMzA1OiAyLFxuICAzMDY6IDIsXG4gIDMwNzogMixcbiAgMzA4OiAyLFxuICAzMDk6IDMsXG4gIDMxMDogMixcbiAgMzExOiAyLFxuICAzMTI6IDIsXG4gIDMxMzogMixcbiAgMzE0OiAyLFxuICAzMTU6IDIsXG4gIDMxNjogNCxcbiAgMzI1OiAyLFxuICAzMjY6IDIsXG4gIDMyNzogMixcbiAgMzI4OiAyLFxuICAzMzE6IDIsXG4gIDMzMjogMixcbiAgMzM3OiAyLFxuICAzNDI6IDEsXG4gIDM0MzogMSxcbiAgMzQ2OiAyLFxuICAzNDc6IDEsXG4gIDM1MDogNCxcbiAgMzUxOiAzLFxuICAzNTI6IDEsXG4gIDM1MzogMixcbiAgMzYwOiAxLFxuICAzNjg6IDEsXG4gIDM2OTogMSxcbiAgMzcwOiAxLFxuICAzNzE6IDEsXG4gIDM3MjogMSxcbiAgMzczOiAxLFxuICAzNzQ6IDEsXG4gIDM3NTogMSxcbiAgMzc2OiAxLFxuICAzNzc6IDEsXG4gIDM3ODogMSxcbiAgMzgyOiAzLFxuICAzODU6IDEsXG4gIDM5MjogMSxcbiAgMzkzOiAxLFxuICAzOTY6IDIsXG4gIDM5NzogMixcbiAgMzk4OiAyLFxuICAzOTk6IDEsXG4gIDQwMDogMSxcbiAgNDAxOiAxLFxuICA0MDI6IDEsXG4gIDQwMzogMSxcbiAgNDA0OiAxLFxuICA0MDU6IDEsXG4gIDQwNjogMSxcbiAgNDA3OiAxLFxuICA0MDg6IDEsXG4gIDQwOTogMSxcbiAgNDEwOiAxLFxuICA0MTQ6IDQsXG4gIDQxNTogMSxcbiAgNDE2OiAxLFxuICA0MTc6IDIsXG4gIDQyMDogMSxcbiAgNDIxOiAxLFxuICA0MjI6IDIsXG4gIDQyNDogMSxcbiAgNDI1OiAyLFxuICA0MjY6IDIsXG4gIDQyNzogMixcbiAgNDI4OiAyLFxuICA0MzA6IDMsXG4gIDQzODogMyxcbiAgNDM5OiAzLFxuICA0NDA6IDMsXG4gIDQ0MzogMixcbiAgNDQ0OiAyLFxuICA0NDU6IDIsXG4gIDQ0NjogMixcbiAgNDQ3OiA2LFxuICA0NDg6IDYsXG4gIDQ0OTogMixcbiAgNDUwOiAyLFxuICA0NjQ6IDIsXG4gIDQ2ODogMyxcbiAgNDc2OiAyLFxuICA0Nzk6IDEsXG4gIDQ4MDogMixcbiAgNjU1MzU6IDBcbn07XG4vKiBQYXJ0IDMgVE9ETzogYWN0dWFsbHkgcGFyc2UgZm9ybXVsYWUgKi9cbmZ1bmN0aW9uIG9kc190b19jc2ZfZm9ybXVsYShmLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihmLnNsaWNlKDAsMykgPT0gXCJvZjpcIikgZiA9IGYuc2xpY2UoMyk7XG5cdC8qIDUuMiBCYXNpYyBFeHByZXNzaW9ucyAqL1xuXHRpZihmLmNoYXJDb2RlQXQoMCkgPT0gNjEpIHtcblx0XHRmID0gZi5zbGljZSgxKTtcblx0XHRpZihmLmNoYXJDb2RlQXQoMCkgPT0gNjEpIGYgPSBmLnNsaWNlKDEpO1xuXHR9XG5cdGYgPSBmLnJlcGxhY2UoL0NPTVxcLk1JQ1JPU09GVFxcLi9nLCBcIlwiKTtcblx0LyogUGFydCAzIFNlY3Rpb24gNS44IFJlZmVyZW5jZXMgKi9cblx0ZiA9IGYucmVwbGFjZSgvXFxbKCg/OlxcLltBLVpdK1swLTldKykoPzo6XFwuW0EtWl0rWzAtOV0rKT8pXFxdL2csIGZ1bmN0aW9uKCQkLCAkMSkgeyByZXR1cm4gJDEucmVwbGFjZSgvXFwuL2csXCJcIik7IH0pO1xuXHQvKiBUT0RPOiBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGlzICovXG5cdGYgPSBmLnJlcGxhY2UoL1xcWy4oI1tBLVpdKls/IV0pXFxdL2csIFwiJDFcIik7XG5cdHJldHVybiBmLnJlcGxhY2UoL1s7fl0vZyxcIixcIikucmVwbGFjZSgvXFx8L2csXCI7XCIpO1xufVxuXG5mdW5jdGlvbiBjc2ZfdG9fb2RzX2Zvcm11bGEoZi8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBcIm9mOj1cIiArIGYucmVwbGFjZShjcmVmcmVnZXgsIFwiJDFbLiQyJDMkNCQ1XVwiKS5yZXBsYWNlKC9cXF06XFxbL2csXCI6XCIpO1xuXHQvKiBUT0RPOiBzb21ldGhpbmcgb3RoZXIgdGhhbiB0aGlzICovXG5cdHJldHVybiBvLnJlcGxhY2UoLzsvZywgXCJ8XCIpLnJlcGxhY2UoLywvZyxcIjtcIik7XG59XG5cbmZ1bmN0aW9uIG9kc190b19jc2ZfM0Qoci8qOnN0cmluZyovKS8qOltzdHJpbmcsIHN0cmluZ10qLyB7XG5cdHZhciBhID0gci5zcGxpdChcIjpcIik7XG5cdHZhciBzID0gYVswXS5zcGxpdChcIi5cIilbMF07XG5cdHJldHVybiBbcywgYVswXS5zcGxpdChcIi5cIilbMV0gKyAoYS5sZW5ndGggPiAxID8gKFwiOlwiICsgKGFbMV0uc3BsaXQoXCIuXCIpWzFdIHx8IGFbMV0uc3BsaXQoXCIuXCIpWzBdKSkgOiBcIlwiKV07XG59XG5cbmZ1bmN0aW9uIGNzZl90b19vZHNfM0Qoci8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIHIucmVwbGFjZSgvXFwuLyxcIiFcIik7XG59XG5cbnZhciBzdHJzID0ge307IC8vIHNoYXJlZCBzdHJpbmdzXG52YXIgX3NzZm9wdHMgPSB7fTsgLy8gc3ByZWFkc2hlZXQgZm9ybWF0dGluZyBvcHRpb25zXG5cblxuLypnbG9iYWwgTWFwICovXG52YXIgYnJvd3Nlcl9oYXNfTWFwID0gdHlwZW9mIE1hcCAhPT0gJ3VuZGVmaW5lZCc7XG5cbmZ1bmN0aW9uIGdldF9zc3RfaWQoc3N0Lyo6U1NUKi8sIHN0ci8qOnN0cmluZyovLCByZXYpLyo6bnVtYmVyKi8ge1xuXHR2YXIgaSA9IDAsIGxlbiA9IHNzdC5sZW5ndGg7XG5cdGlmKHJldikge1xuXHRcdGlmKGJyb3dzZXJfaGFzX01hcCA/IHJldi5oYXMoc3RyKSA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXYsIHN0cikpIHtcblx0XHRcdHZhciByZXZhcnIgPSBicm93c2VyX2hhc19NYXAgPyByZXYuZ2V0KHN0cikgOiByZXZbc3RyXTtcblx0XHRcdGZvcig7IGkgPCByZXZhcnIubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0aWYoc3N0W3JldmFycltpXV0udCA9PT0gc3RyKSB7IHNzdC5Db3VudCArKzsgcmV0dXJuIHJldmFycltpXTsgfVxuXHRcdFx0fVxuXHRcdH1cblx0fSBlbHNlIGZvcig7IGkgPCBsZW47ICsraSkge1xuXHRcdGlmKHNzdFtpXS50ID09PSBzdHIpIHsgc3N0LkNvdW50ICsrOyByZXR1cm4gaTsgfVxuXHR9XG5cdHNzdFtsZW5dID0gKHt0OnN0cn0vKjphbnkqLyk7IHNzdC5Db3VudCArKzsgc3N0LlVuaXF1ZSArKztcblx0aWYocmV2KSB7XG5cdFx0aWYoYnJvd3Nlcl9oYXNfTWFwKSB7XG5cdFx0XHRpZighcmV2LmhhcyhzdHIpKSByZXYuc2V0KHN0ciwgW10pO1xuXHRcdFx0cmV2LmdldChzdHIpLnB1c2gobGVuKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0aWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChyZXYsIHN0cikpIHJldltzdHJdID0gW107XG5cdFx0XHRyZXZbc3RyXS5wdXNoKGxlbik7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBsZW47XG59XG5cbmZ1bmN0aW9uIGNvbF9vYmpfdyhDLyo6bnVtYmVyKi8sIGNvbCkge1xuXHR2YXIgcCA9ICh7bWluOkMrMSxtYXg6QysxfS8qOmFueSovKTtcblx0Lyogd2NoIChjaGFycyksIHdweCAocGl4ZWxzKSAqL1xuXHR2YXIgd2NoID0gLTE7XG5cdGlmKGNvbC5NRFcpIE1EVyA9IGNvbC5NRFc7XG5cdGlmKGNvbC53aWR0aCAhPSBudWxsKSBwLmN1c3RvbVdpZHRoID0gMTtcblx0ZWxzZSBpZihjb2wud3B4ICE9IG51bGwpIHdjaCA9IHB4MmNoYXIoY29sLndweCk7XG5cdGVsc2UgaWYoY29sLndjaCAhPSBudWxsKSB3Y2ggPSBjb2wud2NoO1xuXHRpZih3Y2ggPiAtMSkgeyBwLndpZHRoID0gY2hhcjJ3aWR0aCh3Y2gpOyBwLmN1c3RvbVdpZHRoID0gMTsgfVxuXHRlbHNlIGlmKGNvbC53aWR0aCAhPSBudWxsKSBwLndpZHRoID0gY29sLndpZHRoO1xuXHRpZihjb2wuaGlkZGVuKSBwLmhpZGRlbiA9IHRydWU7XG5cdGlmKGNvbC5sZXZlbCAhPSBudWxsKSB7IHAub3V0bGluZUxldmVsID0gcC5sZXZlbCA9IGNvbC5sZXZlbDsgfVxuXHRyZXR1cm4gcDtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdF9tYXJnaW5zKG1hcmdpbnMvKjpNYXJnaW5zKi8sIG1vZGUvKjo/c3RyaW5nKi8pIHtcblx0aWYoIW1hcmdpbnMpIHJldHVybjtcblx0dmFyIGRlZnMgPSBbMC43LCAwLjcsIDAuNzUsIDAuNzUsIDAuMywgMC4zXTtcblx0aWYobW9kZSA9PSAneGxtbCcpIGRlZnMgPSBbMSwgMSwgMSwgMSwgMC41LCAwLjVdO1xuXHRpZihtYXJnaW5zLmxlZnQgICA9PSBudWxsKSBtYXJnaW5zLmxlZnQgICA9IGRlZnNbMF07XG5cdGlmKG1hcmdpbnMucmlnaHQgID09IG51bGwpIG1hcmdpbnMucmlnaHQgID0gZGVmc1sxXTtcblx0aWYobWFyZ2lucy50b3AgICAgPT0gbnVsbCkgbWFyZ2lucy50b3AgICAgPSBkZWZzWzJdO1xuXHRpZihtYXJnaW5zLmJvdHRvbSA9PSBudWxsKSBtYXJnaW5zLmJvdHRvbSA9IGRlZnNbM107XG5cdGlmKG1hcmdpbnMuaGVhZGVyID09IG51bGwpIG1hcmdpbnMuaGVhZGVyID0gZGVmc1s0XTtcblx0aWYobWFyZ2lucy5mb290ZXIgPT0gbnVsbCkgbWFyZ2lucy5mb290ZXIgPSBkZWZzWzVdO1xufVxuXG5mdW5jdGlvbiBnZXRfY2VsbF9zdHlsZShzdHlsZXMvKjpBcnJheTxhbnk+Ki8sIGNlbGwvKjpDZWxsKi8sIG9wdHMpIHtcblx0dmFyIHogPSBvcHRzLnJldnNzZltjZWxsLnogIT0gbnVsbCA/IGNlbGwueiA6IFwiR2VuZXJhbFwiXTtcblx0dmFyIGkgPSAweDNjLCBsZW4gPSBzdHlsZXMubGVuZ3RoO1xuXHRpZih6ID09IG51bGwgJiYgb3B0cy5zc2YpIHtcblx0XHRmb3IoOyBpIDwgMHgxODg7ICsraSkgaWYob3B0cy5zc2ZbaV0gPT0gbnVsbCkge1xuXHRcdFx0U1NGX2xvYWQoY2VsbC56LCBpKTtcblx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRvcHRzLnNzZltpXSA9IGNlbGwuejtcblx0XHRcdG9wdHMucmV2c3NmW2NlbGwuel0gPSB6ID0gaTtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXHRmb3IoaSA9IDA7IGkgIT0gbGVuOyArK2kpIGlmKHN0eWxlc1tpXS5udW1GbXRJZCA9PT0geikgcmV0dXJuIGk7XG5cdHN0eWxlc1tsZW5dID0ge1xuXHRcdG51bUZtdElkOnosXG5cdFx0Zm9udElkOjAsXG5cdFx0ZmlsbElkOjAsXG5cdFx0Ym9yZGVySWQ6MCxcblx0XHR4ZklkOjAsXG5cdFx0YXBwbHlOdW1iZXJGb3JtYXQ6MVxuXHR9O1xuXHRyZXR1cm4gbGVuO1xufVxuXG5mdW5jdGlvbiBzYWZlX2Zvcm1hdChwLyo6Q2VsbCovLCBmbXRpZC8qOm51bWJlciovLCBmaWxsaWQvKjo/bnVtYmVyKi8sIG9wdHMsIHRoZW1lcywgc3R5bGVzKSB7XG5cdHRyeSB7XG5cdFx0aWYob3B0cy5jZWxsTkYpIHAueiA9IHRhYmxlX2ZtdFtmbXRpZF07XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZihwLnQgPT09ICd6JyAmJiAhb3B0cy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdGlmKHAudCA9PT0gJ2QnICYmIHR5cGVvZiBwLnYgPT09ICdzdHJpbmcnKSBwLnYgPSBwYXJzZURhdGUocC52KTtcblx0aWYoKCFvcHRzIHx8IG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSAmJiBwLnQgIT09ICd6JykgdHJ5IHtcblx0XHRpZih0YWJsZV9mbXRbZm10aWRdID09IG51bGwpIFNTRl9sb2FkKFNTRkltcGxpY2l0W2ZtdGlkXSB8fCBcIkdlbmVyYWxcIiwgZm10aWQpO1xuXHRcdGlmKHAudCA9PT0gJ2UnKSBwLncgPSBwLncgfHwgQkVycltwLnZdO1xuXHRcdGVsc2UgaWYoZm10aWQgPT09IDApIHtcblx0XHRcdGlmKHAudCA9PT0gJ24nKSB7XG5cdFx0XHRcdGlmKChwLnZ8MCkgPT09IHAudikgcC53ID0gcC52LnRvU3RyaW5nKDEwKTtcblx0XHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbF9udW0ocC52KTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYocC50ID09PSAnZCcpIHtcblx0XHRcdFx0dmFyIGRkID0gZGF0ZW51bShwLnYpO1xuXHRcdFx0XHRpZigoZGR8MCkgPT09IGRkKSBwLncgPSBkZC50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgcC53ID0gU1NGX2dlbmVyYWxfbnVtKGRkKTtcblx0XHRcdH1cblx0XHRcdGVsc2UgaWYocC52ID09PSB1bmRlZmluZWQpIHJldHVybiBcIlwiO1xuXHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbChwLnYsX3NzZm9wdHMpO1xuXHRcdH1cblx0XHRlbHNlIGlmKHAudCA9PT0gJ2QnKSBwLncgPSBTU0ZfZm9ybWF0KGZtdGlkLGRhdGVudW0ocC52KSxfc3Nmb3B0cyk7XG5cdFx0ZWxzZSBwLncgPSBTU0ZfZm9ybWF0KGZtdGlkLHAudixfc3Nmb3B0cyk7XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZighb3B0cy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdGlmKGZpbGxpZCAhPSBudWxsKSB0cnkge1xuXHRcdHAucyA9IHN0eWxlcy5GaWxsc1tmaWxsaWRdO1xuXHRcdGlmIChwLnMuZmdDb2xvciAmJiBwLnMuZmdDb2xvci50aGVtZSAmJiAhcC5zLmZnQ29sb3IucmdiKSB7XG5cdFx0XHRwLnMuZmdDb2xvci5yZ2IgPSByZ2JfdGludCh0aGVtZXMudGhlbWVFbGVtZW50cy5jbHJTY2hlbWVbcC5zLmZnQ29sb3IudGhlbWVdLnJnYiwgcC5zLmZnQ29sb3IudGludCB8fCAwKTtcblx0XHRcdGlmKG9wdHMuV1RGKSBwLnMuZmdDb2xvci5yYXdfcmdiID0gdGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5mZ0NvbG9yLnRoZW1lXS5yZ2I7XG5cdFx0fVxuXHRcdGlmIChwLnMuYmdDb2xvciAmJiBwLnMuYmdDb2xvci50aGVtZSkge1xuXHRcdFx0cC5zLmJnQ29sb3IucmdiID0gcmdiX3RpbnQodGhlbWVzLnRoZW1lRWxlbWVudHMuY2xyU2NoZW1lW3Aucy5iZ0NvbG9yLnRoZW1lXS5yZ2IsIHAucy5iZ0NvbG9yLnRpbnQgfHwgMCk7XG5cdFx0XHRpZihvcHRzLldURikgcC5zLmJnQ29sb3IucmF3X3JnYiA9IHRoZW1lcy50aGVtZUVsZW1lbnRzLmNsclNjaGVtZVtwLnMuYmdDb2xvci50aGVtZV0ucmdiO1xuXHRcdH1cblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGICYmIHN0eWxlcy5GaWxscykgdGhyb3cgZTsgfVxufVxuXG5mdW5jdGlvbiBjaGVja193cyh3cy8qOldvcmtzaGVldCovLCBzbmFtZS8qOnN0cmluZyovLCBpLyo6bnVtYmVyKi8pIHtcblx0aWYod3MgJiYgd3NbJyFyZWYnXSkge1xuXHRcdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdGlmKHJhbmdlLmUuYyA8IHJhbmdlLnMuYyB8fCByYW5nZS5lLnIgPCByYW5nZS5zLnIpIHRocm93IG5ldyBFcnJvcihcIkJhZCByYW5nZSAoXCIgKyBpICsgXCIpOiBcIiArIHdzWychcmVmJ10pO1xuXHR9XG59XG5mdW5jdGlvbiBwYXJzZV93c194bWxfZGltKHdzLyo6V29ya3NoZWV0Ki8sIHMvKjpzdHJpbmcqLykge1xuXHR2YXIgZCA9IHNhZmVfZGVjb2RlX3JhbmdlKHMpO1xuXHRpZihkLnMucjw9ZC5lLnIgJiYgZC5zLmM8PWQuZS5jICYmIGQucy5yPj0wICYmIGQucy5jPj0wKSB3c1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UoZCk7XG59XG52YXIgbWVyZ2VjcmVnZXggPSAvPCg/OlxcdzopP21lcmdlQ2VsbCByZWY9XCJbQS1aMC05Ol0rXCJcXHMqW1xcL10/Pi9nO1xudmFyIHNoZWV0ZGF0YXJlZ2V4ID0gLzwoPzpcXHcrOik/c2hlZXREYXRhW14+XSo+KFtcXHNcXFNdKik8XFwvKD86XFx3KzopP3NoZWV0RGF0YT4vO1xudmFyIGhsaW5rcmVnZXggPSAvPCg/OlxcdzopP2h5cGVybGluayBbXj5dKj4vbWc7XG52YXIgZGltcmVnZXggPSAvXCIoXFx3KjpcXHcqKVwiLztcbnZhciBjb2xyZWdleCA9IC88KD86XFx3Oik/Y29sXFxiW14+XSpbXFwvXT8+L2c7XG52YXIgYWZyZWdleCA9IC88KD86XFx3Oik/YXV0b0ZpbHRlcltePl0qKFtcXC9dfD4oW1xcc1xcU10qKTxcXC8oPzpcXHc6KT9hdXRvRmlsdGVyKT4vZztcbnZhciBtYXJnaW5yZWdleD0gLzwoPzpcXHc6KT9wYWdlTWFyZ2luc1tePl0qXFwvPi9nO1xudmFyIHNoZWV0cHJyZWdleCA9IC88KD86XFx3Oik/c2hlZXRQclxcYig/OltePmEtel1bXj5dKik/XFwvPi87XG52YXIgc2hlZXRwcnJlZ2V4Mj0gLzwoPzpcXHc6KT9zaGVldFByW14+XSooPzpbXFwvXXw+KFtcXHNcXFNdKik8XFwvKD86XFx3Oik/c2hlZXRQcik+LztcbnZhciBzdnNyZWdleCA9IC88KD86XFx3Oik/c2hlZXRWaWV3c1tePl0qKD86W1xcL118PihbXFxzXFxTXSopPFxcLyg/OlxcdzopP3NoZWV0Vmlld3MpPi87XG5cbi8qIDE4LjMgV29ya3NoZWV0cyAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sKGRhdGEvKjo/c3RyaW5nKi8sIG9wdHMsIGlkeC8qOm51bWJlciovLCByZWxzLCB3Yi8qOldCV0JQcm9wcyovLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXG5cdC8qIDE4LjMuMS45OSB3b3Jrc2hlZXQgQ1RfV29ya3NoZWV0ICovXG5cdHZhciBzID0gb3B0cy5kZW5zZSA/IChbXS8qOmFueSovKSA6ICh7fS8qOmFueSovKTtcblx0dmFyIHJlZmd1ZXNzLyo6UmFuZ2UqLyA9ICh7czoge3I6MjAwMDAwMCwgYzoyMDAwMDAwfSwgZToge3I6MCwgYzowfSB9Lyo6YW55Ki8pO1xuXG5cdHZhciBkYXRhMSA9IFwiXCIsIGRhdGEyID0gXCJcIjtcblx0dmFyIG10Y2gvKjo/YW55Ki8gPSBkYXRhLm1hdGNoKHNoZWV0ZGF0YXJlZ2V4KTtcblx0aWYobXRjaCkge1xuXHRcdGRhdGExID0gZGF0YS5zbGljZSgwLCBtdGNoLmluZGV4KTtcblx0XHRkYXRhMiA9IGRhdGEuc2xpY2UobXRjaC5pbmRleCArIG10Y2hbMF0ubGVuZ3RoKTtcblx0fSBlbHNlIGRhdGExID0gZGF0YTIgPSBkYXRhO1xuXG5cdC8qIDE4LjMuMS44MiBzaGVldFByIENUX1NoZWV0UHIgKi9cblx0dmFyIHNoZWV0UHIgPSBkYXRhMS5tYXRjaChzaGVldHBycmVnZXgpO1xuXHRpZihzaGVldFByKSBwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByWzBdLCBzLCB3YiwgaWR4KTtcblx0ZWxzZSBpZigoc2hlZXRQciA9IGRhdGExLm1hdGNoKHNoZWV0cHJyZWdleDIpKSkgcGFyc2Vfd3NfeG1sX3NoZWV0cHIyKHNoZWV0UHJbMF0sIHNoZWV0UHJbMV18fFwiXCIsIHMsIHdiLCBpZHgsIHN0eWxlcywgdGhlbWVzKTtcblxuXHQvKiAxOC4zLjEuMzUgZGltZW5zaW9uIENUX1NoZWV0RGltZW5zaW9uICovXG5cdHZhciByaWR4ID0gKGRhdGExLm1hdGNoKC88KD86XFx3KjopP2RpbWVuc2lvbi8pfHx7aW5kZXg6LTF9KS5pbmRleDtcblx0aWYocmlkeCA+IDApIHtcblx0XHR2YXIgcmVmID0gZGF0YTEuc2xpY2UocmlkeCxyaWR4KzUwKS5tYXRjaChkaW1yZWdleCk7XG5cdFx0aWYocmVmKSBwYXJzZV93c194bWxfZGltKHMsIHJlZlsxXSk7XG5cdH1cblxuXHQvKiAxOC4zLjEuODggc2hlZXRWaWV3cyBDVF9TaGVldFZpZXdzICovXG5cdHZhciBzdnMgPSBkYXRhMS5tYXRjaChzdnNyZWdleCk7XG5cdGlmKHN2cyAmJiBzdnNbMV0pIHBhcnNlX3dzX3htbF9zaGVldHZpZXdzKHN2c1sxXSwgd2IpO1xuXG5cdC8qIDE4LjMuMS4xNyBjb2xzIENUX0NvbHMgKi9cblx0dmFyIGNvbHVtbnMvKjpBcnJheTxDb2xJbmZvPiovID0gW107XG5cdGlmKG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdC8qIDE4LjMuMS4xMyBjb2wgQ1RfQ29sICovXG5cdFx0dmFyIGNvbHMgPSBkYXRhMS5tYXRjaChjb2xyZWdleCk7XG5cdFx0aWYoY29scykgcGFyc2Vfd3NfeG1sX2NvbHMoY29sdW1ucywgY29scyk7XG5cdH1cblxuXHQvKiAxOC4zLjEuODAgc2hlZXREYXRhIENUX1NoZWV0RGF0YSA/ICovXG5cdGlmKG10Y2gpIHBhcnNlX3dzX3htbF9kYXRhKG10Y2hbMV0sIHMsIG9wdHMsIHJlZmd1ZXNzLCB0aGVtZXMsIHN0eWxlcyk7XG5cblx0LyogMTguMy4xLjIgIGF1dG9GaWx0ZXIgQ1RfQXV0b0ZpbHRlciAqL1xuXHR2YXIgYWZpbHRlciA9IGRhdGEyLm1hdGNoKGFmcmVnZXgpO1xuXHRpZihhZmlsdGVyKSBzWychYXV0b2ZpbHRlciddID0gcGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIoYWZpbHRlclswXSk7XG5cblx0LyogMTguMy4xLjU1IG1lcmdlQ2VsbHMgQ1RfTWVyZ2VDZWxscyAqL1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIF9tZXJnZSA9IGRhdGEyLm1hdGNoKG1lcmdlY3JlZ2V4KTtcblx0aWYoX21lcmdlKSBmb3IocmlkeCA9IDA7IHJpZHggIT0gX21lcmdlLmxlbmd0aDsgKytyaWR4KVxuXHRcdG1lcmdlc1tyaWR4XSA9IHNhZmVfZGVjb2RlX3JhbmdlKF9tZXJnZVtyaWR4XS5zbGljZShfbWVyZ2VbcmlkeF0uaW5kZXhPZihcIlxcXCJcIikrMSkpO1xuXG5cdC8qIDE4LjMuMS40OCBoeXBlcmxpbmtzIENUX0h5cGVybGlua3MgKi9cblx0dmFyIGhsaW5rID0gZGF0YTIubWF0Y2goaGxpbmtyZWdleCk7XG5cdGlmKGhsaW5rKSBwYXJzZV93c194bWxfaGxpbmtzKHMsIGhsaW5rLCByZWxzKTtcblxuXHQvKiAxOC4zLjEuNjIgcGFnZU1hcmdpbnMgQ1RfUGFnZU1hcmdpbnMgKi9cblx0dmFyIG1hcmdpbnMgPSBkYXRhMi5tYXRjaChtYXJnaW5yZWdleCk7XG5cdGlmKG1hcmdpbnMpIHNbJyFtYXJnaW5zJ10gPSBwYXJzZV93c194bWxfbWFyZ2lucyhwYXJzZXhtbHRhZyhtYXJnaW5zWzBdKSk7XG5cblx0aWYoIXNbXCIhcmVmXCJdICYmIHJlZmd1ZXNzLmUuYyA+PSByZWZndWVzcy5zLmMgJiYgcmVmZ3Vlc3MuZS5yID49IHJlZmd1ZXNzLnMucikgc1tcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmVmZ3Vlc3MpO1xuXHRpZihvcHRzLnNoZWV0Um93cyA+IDAgJiYgc1tcIiFyZWZcIl0pIHtcblx0XHR2YXIgdG1wcmVmID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc1tcIiFyZWZcIl0pO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzIDw9ICt0bXByZWYuZS5yKSB7XG5cdFx0XHR0bXByZWYuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0aWYodG1wcmVmLmUuciA+IHJlZmd1ZXNzLmUucikgdG1wcmVmLmUuciA9IHJlZmd1ZXNzLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPCB0bXByZWYucy5yKSB0bXByZWYucy5yID0gdG1wcmVmLmUucjtcblx0XHRcdGlmKHRtcHJlZi5lLmMgPiByZWZndWVzcy5lLmMpIHRtcHJlZi5lLmMgPSByZWZndWVzcy5lLmM7XG5cdFx0XHRpZih0bXByZWYuZS5jIDwgdG1wcmVmLnMuYykgdG1wcmVmLnMuYyA9IHRtcHJlZi5lLmM7XG5cdFx0XHRzW1wiIWZ1bGxyZWZcIl0gPSBzW1wiIXJlZlwiXTtcblx0XHRcdHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHRtcHJlZik7XG5cdFx0fVxuXHR9XG5cdGlmKGNvbHVtbnMubGVuZ3RoID4gMCkgc1tcIiFjb2xzXCJdID0gY29sdW1ucztcblx0aWYobWVyZ2VzLmxlbmd0aCA+IDApIHNbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRyZXR1cm4gcztcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX21lcmdlcyhtZXJnZXMvKjpBcnJheTxSYW5nZT4qLykvKjpzdHJpbmcqLyB7XG5cdGlmKG1lcmdlcy5sZW5ndGggPT09IDApIHJldHVybiBcIlwiO1xuXHR2YXIgbyA9ICc8bWVyZ2VDZWxscyBjb3VudD1cIicgKyBtZXJnZXMubGVuZ3RoICsgJ1wiPic7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gbWVyZ2VzLmxlbmd0aDsgKytpKSBvICs9ICc8bWVyZ2VDZWxsIHJlZj1cIicgKyBlbmNvZGVfcmFuZ2UobWVyZ2VzW2ldKSArICdcIi8+Jztcblx0cmV0dXJuIG8gKyAnPC9tZXJnZUNlbGxzPic7XG59XG5cbi8qIDE4LjMuMS44Mi0zIHNoZWV0UHIgQ1RfQ2hhcnRzaGVldFByIC8gQ1RfU2hlZXRQciAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQci8qOnN0cmluZyovLCBzLCB3Yi8qOldCV0JQcm9wcyovLCBpZHgvKjpudW1iZXIqLykge1xuXHR2YXIgZGF0YSA9IHBhcnNleG1sdGFnKHNoZWV0UHIpO1xuXHRpZighd2IuU2hlZXRzW2lkeF0pIHdiLlNoZWV0c1tpZHhdID0ge307XG5cdGlmKGRhdGEuY29kZU5hbWUpIHdiLlNoZWV0c1tpZHhdLkNvZGVOYW1lID0gdW5lc2NhcGV4bWwodXRmOHJlYWQoZGF0YS5jb2RlTmFtZSkpO1xufVxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX3NoZWV0cHIyKHNoZWV0UHIvKjpzdHJpbmcqLywgYm9keS8qOnN0cmluZyovLCBzLCB3Yi8qOldCV0JQcm9wcyovLCBpZHgvKjpudW1iZXIqLykge1xuXHRwYXJzZV93c194bWxfc2hlZXRwcihzaGVldFByLnNsaWNlKDAsIHNoZWV0UHIuaW5kZXhPZihcIj5cIikpLCBzLCB3YiwgaWR4KTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbF9zaGVldHByKHdzLCB3YiwgaWR4LCBvcHRzLCBvKSB7XG5cdHZhciBuZWVkZWQgPSBmYWxzZTtcblx0dmFyIHByb3BzID0ge30sIHBheWxvYWQgPSBudWxsO1xuXHRpZihvcHRzLmJvb2tUeXBlICE9PSAneGxzeCcgJiYgd2IudmJhcmF3KSB7XG5cdFx0dmFyIGNuYW1lID0gd2IuU2hlZXROYW1lc1tpZHhdO1xuXHRcdHRyeSB7IGlmKHdiLldvcmtib29rKSBjbmFtZSA9IHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkNvZGVOYW1lIHx8IGNuYW1lOyB9IGNhdGNoKGUpIHt9XG5cdFx0bmVlZGVkID0gdHJ1ZTtcblx0XHRwcm9wcy5jb2RlTmFtZSA9IHV0Zjh3cml0ZShlc2NhcGV4bWwoY25hbWUpKTtcblx0fVxuXG5cdGlmKHdzICYmIHdzW1wiIW91dGxpbmVcIl0pIHtcblx0XHR2YXIgb3V0bGluZXByb3BzID0ge3N1bW1hcnlCZWxvdzoxLCBzdW1tYXJ5UmlnaHQ6MX07XG5cdFx0aWYod3NbXCIhb3V0bGluZVwiXS5hYm92ZSkgb3V0bGluZXByb3BzLnN1bW1hcnlCZWxvdyA9IDA7XG5cdFx0aWYod3NbXCIhb3V0bGluZVwiXS5sZWZ0KSBvdXRsaW5lcHJvcHMuc3VtbWFyeVJpZ2h0ID0gMDtcblx0XHRwYXlsb2FkID0gKHBheWxvYWR8fFwiXCIpICsgd3JpdGV4dGFnKCdvdXRsaW5lUHInLCBudWxsLCBvdXRsaW5lcHJvcHMpO1xuXHR9XG5cblx0aWYoIW5lZWRlZCAmJiAhcGF5bG9hZCkgcmV0dXJuO1xuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3NoZWV0UHInLCBwYXlsb2FkLCBwcm9wcykpO1xufVxuXG4vKiAxOC4zLjEuODUgc2hlZXRQcm90ZWN0aW9uIENUX1NoZWV0UHJvdGVjdGlvbiAqL1xudmFyIHNoZWV0cHJvdF9kZWZmYWxzZSA9IFtcIm9iamVjdHNcIiwgXCJzY2VuYXJpb3NcIiwgXCJzZWxlY3RMb2NrZWRDZWxsc1wiLCBcInNlbGVjdFVubG9ja2VkQ2VsbHNcIl07XG52YXIgc2hlZXRwcm90X2RlZnRydWUgPSBbXG5cdFwiZm9ybWF0Q29sdW1uc1wiLCBcImZvcm1hdFJvd3NcIiwgXCJmb3JtYXRDZWxsc1wiLFxuXHRcImluc2VydENvbHVtbnNcIiwgXCJpbnNlcnRSb3dzXCIsIFwiaW5zZXJ0SHlwZXJsaW5rc1wiLFxuXHRcImRlbGV0ZUNvbHVtbnNcIiwgXCJkZWxldGVSb3dzXCIsXG5cdFwic29ydFwiLCBcImF1dG9GaWx0ZXJcIiwgXCJwaXZvdFRhYmxlc1wiXG5dO1xuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24oc3ApLyo6c3RyaW5nKi8ge1xuXHQvLyBhbGdvcml0aG1OYW1lLCBoYXNoVmFsdWUsIHNhbHRWYWx1ZSwgc3BpbkNvdW50XG5cdHZhciBvID0gKHtzaGVldDoxfS8qOmFueSovKTtcblx0c2hlZXRwcm90X2RlZmZhbHNlLmZvckVhY2goZnVuY3Rpb24obikgeyBpZihzcFtuXSAhPSBudWxsICYmIHNwW25dKSBvW25dID0gXCIxXCI7IH0pO1xuXHRzaGVldHByb3RfZGVmdHJ1ZS5mb3JFYWNoKGZ1bmN0aW9uKG4pIHsgaWYoc3Bbbl0gIT0gbnVsbCAmJiAhc3Bbbl0pIG9bbl0gPSBcIjBcIjsgfSk7XG5cdC8qIFRPRE86IGFsZ29yaXRobSAqL1xuXHRpZihzcC5wYXNzd29yZCkgby5wYXNzd29yZCA9IGNyeXB0b19DcmVhdGVQYXNzd29yZFZlcmlmaWVyX01ldGhvZDEoc3AucGFzc3dvcmQpLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuXHRyZXR1cm4gd3JpdGV4dGFnKCdzaGVldFByb3RlY3Rpb24nLCBudWxsLCBvKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2hsaW5rcyhzLCBkYXRhLyo6QXJyYXk8c3RyaW5nPiovLCByZWxzKSB7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkocyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gZGF0YS5sZW5ndGg7ICsraSkge1xuXHRcdHZhciB2YWwgPSBwYXJzZXhtbHRhZyh1dGY4cmVhZChkYXRhW2ldKSwgdHJ1ZSk7XG5cdFx0aWYoIXZhbC5yZWYpIHJldHVybjtcblx0XHR2YXIgcmVsID0gKChyZWxzIHx8IHt9KVsnIWlkJ118fFtdKVt2YWwuaWRdO1xuXHRcdGlmKHJlbCkge1xuXHRcdFx0dmFsLlRhcmdldCA9IHJlbC5UYXJnZXQ7XG5cdFx0XHRpZih2YWwubG9jYXRpb24pIHZhbC5UYXJnZXQgKz0gXCIjXCIrdW5lc2NhcGV4bWwodmFsLmxvY2F0aW9uKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsLlRhcmdldCA9IFwiI1wiICsgdW5lc2NhcGV4bWwodmFsLmxvY2F0aW9uKTtcblx0XHRcdHJlbCA9IHtUYXJnZXQ6IHZhbC5UYXJnZXQsIFRhcmdldE1vZGU6ICdJbnRlcm5hbCd9O1xuXHRcdH1cblx0XHR2YWwuUmVsID0gcmVsO1xuXHRcdGlmKHZhbC50b29sdGlwKSB7IHZhbC5Ub29sdGlwID0gdmFsLnRvb2x0aXA7IGRlbGV0ZSB2YWwudG9vbHRpcDsgfVxuXHRcdHZhciBybmcgPSBzYWZlX2RlY29kZV9yYW5nZSh2YWwucmVmKTtcblx0XHRmb3IodmFyIFI9cm5nLnMucjtSPD1ybmcuZS5yOysrUikgZm9yKHZhciBDPXJuZy5zLmM7Qzw9cm5nLmUuYzsrK0MpIHtcblx0XHRcdHZhciBhZGRyID0gZW5jb2RlX2NlbGwoe2M6QyxyOlJ9KTtcblx0XHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRcdGlmKCFzW1JdKSBzW1JdID0gW107XG5cdFx0XHRcdGlmKCFzW1JdW0NdKSBzW1JdW0NdID0ge3Q6XCJ6XCIsdjp1bmRlZmluZWR9O1xuXHRcdFx0XHRzW1JdW0NdLmwgPSB2YWw7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZighc1thZGRyXSkgc1thZGRyXSA9IHt0OlwielwiLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0c1thZGRyXS5sID0gdmFsO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBwYXJzZV93c194bWxfbWFyZ2lucyhtYXJnaW4pIHtcblx0dmFyIG8gPSB7fTtcblx0W1wibGVmdFwiLCBcInJpZ2h0XCIsIFwidG9wXCIsIFwiYm90dG9tXCIsIFwiaGVhZGVyXCIsIFwiZm9vdGVyXCJdLmZvckVhY2goZnVuY3Rpb24oaykge1xuXHRcdGlmKG1hcmdpbltrXSkgb1trXSA9IHBhcnNlRmxvYXQobWFyZ2luW2tdKTtcblx0fSk7XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX21hcmdpbnMobWFyZ2luKS8qOnN0cmluZyovIHtcblx0ZGVmYXVsdF9tYXJnaW5zKG1hcmdpbik7XG5cdHJldHVybiB3cml0ZXh0YWcoJ3BhZ2VNYXJnaW5zJywgbnVsbCwgbWFyZ2luKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2NvbHMoY29sdW1ucywgY29scykge1xuXHR2YXIgc2VlbmNvbCA9IGZhbHNlO1xuXHRmb3IodmFyIGNvbGkgPSAwOyBjb2xpICE9IGNvbHMubGVuZ3RoOyArK2NvbGkpIHtcblx0XHR2YXIgY29sbCA9IHBhcnNleG1sdGFnKGNvbHNbY29saV0sIHRydWUpO1xuXHRcdGlmKGNvbGwuaGlkZGVuKSBjb2xsLmhpZGRlbiA9IHBhcnNleG1sYm9vbChjb2xsLmhpZGRlbik7XG5cdFx0dmFyIGNvbG09cGFyc2VJbnQoY29sbC5taW4sIDEwKS0xLCBjb2xNPXBhcnNlSW50KGNvbGwubWF4LDEwKS0xO1xuXHRcdGlmKGNvbGwub3V0bGluZUxldmVsKSBjb2xsLmxldmVsID0gKCtjb2xsLm91dGxpbmVMZXZlbCB8fCAwKTtcblx0XHRkZWxldGUgY29sbC5taW47IGRlbGV0ZSBjb2xsLm1heDsgY29sbC53aWR0aCA9ICtjb2xsLndpZHRoO1xuXHRcdGlmKCFzZWVuY29sICYmIGNvbGwud2lkdGgpIHsgc2VlbmNvbCA9IHRydWU7IGZpbmRfbWR3X2NvbHcoY29sbC53aWR0aCk7IH1cblx0XHRwcm9jZXNzX2NvbChjb2xsKTtcblx0XHR3aGlsZShjb2xtIDw9IGNvbE0pIGNvbHVtbnNbY29sbSsrXSA9IGR1cChjb2xsKTtcblx0fVxufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2NvbHMod3MsIGNvbHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9IFtcIjxjb2xzPlwiXSwgY29sO1xuXHRmb3IodmFyIGkgPSAwOyBpICE9IGNvbHMubGVuZ3RoOyArK2kpIHtcblx0XHRpZighKGNvbCA9IGNvbHNbaV0pKSBjb250aW51ZTtcblx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ2NvbCcsIG51bGwsIGNvbF9vYmpfdyhpLCBjb2wpKSk7XG5cdH1cblx0b1tvLmxlbmd0aF0gPSBcIjwvY29scz5cIjtcblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfd3NfeG1sX2F1dG9maWx0ZXIoZGF0YS8qOnN0cmluZyovKSB7XG5cdHZhciBvID0geyByZWY6IChkYXRhLm1hdGNoKC9yZWY9XCIoW15cIl0qKVwiLyl8fFtdKVsxXX07XG5cdHJldHVybiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2F1dG9maWx0ZXIoZGF0YSwgd3MsIHdiLCBpZHgpLyo6c3RyaW5nKi8ge1xuXHR2YXIgcmVmID0gdHlwZW9mIGRhdGEucmVmID09IFwic3RyaW5nXCIgPyBkYXRhLnJlZiA6IGVuY29kZV9yYW5nZShkYXRhLnJlZik7XG5cdGlmKCF3Yi5Xb3JrYm9vaykgd2IuV29ya2Jvb2sgPSAoe1NoZWV0czpbXX0vKjphbnkqLyk7XG5cdGlmKCF3Yi5Xb3JrYm9vay5OYW1lcykgd2IuV29ya2Jvb2suTmFtZXMgPSBbXTtcblx0dmFyIG5hbWVzLyo6IEFycmF5PGFueT4gKi8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIHJhbmdlID0gZGVjb2RlX3JhbmdlKHJlZik7XG5cdGlmKHJhbmdlLnMuciA9PSByYW5nZS5lLnIpIHsgcmFuZ2UuZS5yID0gZGVjb2RlX3JhbmdlKHdzW1wiIXJlZlwiXSkuZS5yOyByZWYgPSBlbmNvZGVfcmFuZ2UocmFuZ2UpOyB9XG5cdGZvcih2YXIgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciBuYW1lID0gbmFtZXNbaV07XG5cdFx0aWYobmFtZS5OYW1lICE9ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnKSBjb250aW51ZTtcblx0XHRpZihuYW1lLlNoZWV0ICE9IGlkeCkgY29udGludWU7XG5cdFx0bmFtZS5SZWYgPSBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZjsgYnJlYWs7XG5cdH1cblx0aWYoaSA9PSBuYW1lcy5sZW5ndGgpIG5hbWVzLnB1c2goeyBOYW1lOiAnX3hsbm0uX0ZpbHRlckRhdGFiYXNlJywgU2hlZXQ6IGlkeCwgUmVmOiBcIidcIiArIHdiLlNoZWV0TmFtZXNbaWR4XSArIFwiJyFcIiArIHJlZiAgfSk7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJhdXRvRmlsdGVyXCIsIG51bGwsIHtyZWY6cmVmfSk7XG59XG5cbi8qIDE4LjMuMS44OCBzaGVldFZpZXdzIENUX1NoZWV0Vmlld3MgKi9cbi8qIDE4LjMuMS44NyBzaGVldFZpZXcgQ1RfU2hlZXRWaWV3ICovXG52YXIgc3ZpZXdyZWdleCA9IC88KD86XFx3Oik/c2hlZXRWaWV3KD86W14+YS16XVtePl0qKT9cXC8/Pi87XG5mdW5jdGlvbiBwYXJzZV93c194bWxfc2hlZXR2aWV3cyhkYXRhLCB3Yi8qOldCV0JQcm9wcyovKSB7XG5cdGlmKCF3Yi5WaWV3cykgd2IuVmlld3MgPSBbe31dO1xuXHQoZGF0YS5tYXRjaChzdmlld3JlZ2V4KXx8W10pLmZvckVhY2goZnVuY3Rpb24oci8qOnN0cmluZyovLCBpLyo6bnVtYmVyKi8pIHtcblx0XHR2YXIgdGFnID0gcGFyc2V4bWx0YWcocik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZighd2IuVmlld3NbaV0pIHdiLlZpZXdzW2ldID0ge307XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZigrdGFnLnpvb21TY2FsZSkgd2IuVmlld3NbaV0uem9vbSA9ICt0YWcuem9vbVNjYWxlO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0aWYocGFyc2V4bWxib29sKHRhZy5yaWdodFRvTGVmdCkpIHdiLlZpZXdzW2ldLlJUTCA9IHRydWU7XG5cdH0pO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX3NoZWV0dmlld3Mod3MsIG9wdHMsIGlkeCwgd2IpLyo6c3RyaW5nKi8ge1xuXHR2YXIgc3ZpZXcgPSAoe3dvcmtib29rVmlld0lkOlwiMFwifS8qOmFueSovKTtcblx0Ly8gJEZsb3dJZ25vcmVcblx0aWYoKCgod2J8fHt9KS5Xb3JrYm9va3x8e30pLlZpZXdzfHxbXSlbMF0pIHN2aWV3LnJpZ2h0VG9MZWZ0ID0gd2IuV29ya2Jvb2suVmlld3NbMF0uUlRMID8gXCIxXCIgOiBcIjBcIjtcblx0cmV0dXJuIHdyaXRleHRhZyhcInNoZWV0Vmlld3NcIiwgd3JpdGV4dGFnKFwic2hlZXRWaWV3XCIsIG51bGwsIHN2aWV3KSwge30pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c194bWxfY2VsbChjZWxsLyo6Q2VsbCovLCByZWYsIHdzLCBvcHRzLyo6OiwgaWR4LCB3YiovKS8qOnN0cmluZyovIHtcblx0aWYoY2VsbC5jKSB3c1snIWNvbW1lbnRzJ10ucHVzaChbcmVmLCBjZWxsLmNdKTtcblx0aWYoY2VsbC52ID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIGNlbGwuZiAhPT0gXCJzdHJpbmdcIiB8fCBjZWxsLnQgPT09ICd6JyAmJiAhY2VsbC5mKSByZXR1cm4gXCJcIjtcblx0dmFyIHZ2ID0gXCJcIjtcblx0dmFyIG9sZHQgPSBjZWxsLnQsIG9sZHYgPSBjZWxsLnY7XG5cdGlmKGNlbGwudCAhPT0gXCJ6XCIpIHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdiJzogdnYgPSBjZWxsLnYgPyBcIjFcIiA6IFwiMFwiOyBicmVhaztcblx0XHRjYXNlICduJzogdnYgPSAnJytjZWxsLnY7IGJyZWFrO1xuXHRcdGNhc2UgJ2UnOiB2diA9IEJFcnJbY2VsbC52XTsgYnJlYWs7XG5cdFx0Y2FzZSAnZCc6XG5cdFx0XHRpZihvcHRzICYmIG9wdHMuY2VsbERhdGVzKSB2diA9IHBhcnNlRGF0ZShjZWxsLnYsIC0xKS50b0lTT1N0cmluZygpO1xuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdGNlbGwgPSBkdXAoY2VsbCk7XG5cdFx0XHRcdGNlbGwudCA9ICduJztcblx0XHRcdFx0dnYgPSAnJysoY2VsbC52ID0gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkpO1xuXHRcdFx0fVxuXHRcdFx0aWYodHlwZW9mIGNlbGwueiA9PT0gJ3VuZGVmaW5lZCcpIGNlbGwueiA9IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OiB2diA9IGNlbGwudjsgYnJlYWs7XG5cdH1cblx0dmFyIHYgPSB3cml0ZXRhZygndicsIGVzY2FwZXhtbCh2dikpLCBvID0gKHtyOnJlZn0vKjphbnkqLyk7XG5cdC8qIFRPRE86IGNlbGwgc3R5bGUgKi9cblx0dmFyIG9zID0gZ2V0X2NlbGxfc3R5bGUob3B0cy5jZWxsWGZzLCBjZWxsLCBvcHRzKTtcblx0aWYob3MgIT09IDApIG8ucyA9IG9zO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnbic6IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOiBvLnQgPSBcImRcIjsgYnJlYWs7XG5cdFx0Y2FzZSAnYic6IG8udCA9IFwiYlwiOyBicmVhaztcblx0XHRjYXNlICdlJzogby50ID0gXCJlXCI7IGJyZWFrO1xuXHRcdGNhc2UgJ3onOiBicmVhaztcblx0XHRkZWZhdWx0OiBpZihjZWxsLnYgPT0gbnVsbCkgeyBkZWxldGUgY2VsbC50OyBicmVhazsgfVxuXHRcdFx0aWYoY2VsbC52Lmxlbmd0aCA+IDMyNzY3KSB0aHJvdyBuZXcgRXJyb3IoXCJUZXh0IGxlbmd0aCBtdXN0IG5vdCBleGNlZWQgMzI3NjcgY2hhcmFjdGVyc1wiKTtcblx0XHRcdGlmKG9wdHMgJiYgb3B0cy5ib29rU1NUKSB7XG5cdFx0XHRcdHYgPSB3cml0ZXRhZygndicsICcnK2dldF9zc3RfaWQob3B0cy5TdHJpbmdzLCBjZWxsLnYsIG9wdHMucmV2U3RyaW5ncykpO1xuXHRcdFx0XHRvLnQgPSBcInNcIjsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRvLnQgPSBcInN0clwiOyBicmVhaztcblx0fVxuXHRpZihjZWxsLnQgIT0gb2xkdCkgeyBjZWxsLnQgPSBvbGR0OyBjZWxsLnYgPSBvbGR2OyB9XG5cdGlmKHR5cGVvZiBjZWxsLmYgPT0gXCJzdHJpbmdcIiAmJiBjZWxsLmYpIHtcblx0XHR2YXIgZmYgPSBjZWxsLkYgJiYgY2VsbC5GLnNsaWNlKDAsIHJlZi5sZW5ndGgpID09IHJlZiA/IHt0OlwiYXJyYXlcIiwgcmVmOmNlbGwuRn0gOiBudWxsO1xuXHRcdHYgPSB3cml0ZXh0YWcoJ2YnLCBlc2NhcGV4bWwoY2VsbC5mKSwgZmYpICsgKGNlbGwudiAhPSBudWxsID8gdiA6IFwiXCIpO1xuXHR9XG5cdGlmKGNlbGwubCkgd3NbJyFsaW5rcyddLnB1c2goW3JlZiwgY2VsbC5sXSk7XG5cdGlmKGNlbGwuRCkgby5jbSA9IDE7XG5cdHJldHVybiB3cml0ZXh0YWcoJ2MnLCB2LCBvKTtcbn1cblxudmFyIHBhcnNlX3dzX3htbF9kYXRhID0gLyojX19QVVJFX18qLyhmdW5jdGlvbigpIHtcblx0dmFyIGNlbGxyZWdleCA9IC88KD86XFx3KzopP2NbIFxcLz5dLywgcm93cmVnZXggPSAvPFxcLyg/Olxcdys6KT9yb3c+Lztcblx0dmFyIHJyZWdleCA9IC9yPVtcIiddKFteXCInXSopW1wiJ10vLCBpc3JlZ2V4ID0gLzwoPzpcXHcrOik/aXM+KFtcXFNcXHNdKj8pPFxcLyg/Olxcdys6KT9pcz4vO1xuXHR2YXIgcmVmcmVnZXggPSAvcmVmPVtcIiddKFteXCInXSopW1wiJ10vO1xuXHR2YXIgbWF0Y2hfdiA9IG1hdGNodGFnKFwidlwiKSwgbWF0Y2hfZiA9IG1hdGNodGFnKFwiZlwiKTtcblxucmV0dXJuIGZ1bmN0aW9uIHBhcnNlX3dzX3htbF9kYXRhKHNkYXRhLyo6c3RyaW5nKi8sIHMsIG9wdHMsIGd1ZXNzLyo6UmFuZ2UqLywgdGhlbWVzLCBzdHlsZXMpIHtcblx0dmFyIHJpID0gMCwgeCA9IFwiXCIsIGNlbGxzLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIGNyZWYvKjo/QXJyYXk8c3RyaW5nPiovID0gW10sIGlkeD0wLCBpPTAsIGNjPTAsIGQ9XCJcIiwgcC8qOmFueSovO1xuXHR2YXIgdGFnLCB0YWdyID0gMCwgdGFnYyA9IDA7XG5cdHZhciBzc3RyLCBmdGFnO1xuXHR2YXIgZm10aWQgPSAwLCBmaWxsaWQgPSAwO1xuXHR2YXIgZG9fZm9ybWF0ID0gQXJyYXkuaXNBcnJheShzdHlsZXMuQ2VsbFhmKSwgY2Y7XG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHNoYXJlZGYgPSBbXTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheShzKTtcblx0dmFyIHJvd3MvKjpBcnJheTxSb3dJbmZvPiovID0gW10sIHJvd29iaiA9IHt9LCByb3dyaXRlID0gZmFsc2U7XG5cdHZhciBzaGVldFN0dWJzID0gISFvcHRzLnNoZWV0U3R1YnM7XG5cdGZvcih2YXIgbWFyciA9IHNkYXRhLnNwbGl0KHJvd3JlZ2V4KSwgbXQgPSAwLCBtYXJybGVuID0gbWFyci5sZW5ndGg7IG10ICE9IG1hcnJsZW47ICsrbXQpIHtcblx0XHR4ID0gbWFyclttdF0udHJpbSgpO1xuXHRcdHZhciB4bGVuID0geC5sZW5ndGg7XG5cdFx0aWYoeGxlbiA9PT0gMCkgY29udGludWU7XG5cblx0XHQvKiAxOC4zLjEuNzMgcm93IENUX1JvdyAqL1xuXHRcdHZhciByc3RhcnRpID0gMDtcblx0XHRvdXRhOiBmb3IocmkgPSAwOyByaSA8IHhsZW47ICsrcmkpIHN3aXRjaCgvKnguY2hhckNvZGVBdChyaSkqL3hbcmldKSB7XG5cdFx0XHRjYXNlIFwiPlwiIC8qNjIqLzpcblx0XHRcdFx0aWYoLyp4LmNoYXJDb2RlQXQocmktMSkgIT0gNDcqL3hbcmktMV0gIT0gXCIvXCIpIHsgKytyaTsgYnJlYWsgb3V0YTsgfVxuXHRcdFx0XHRpZihvcHRzICYmIG9wdHMuY2VsbFN0eWxlcykge1xuXHRcdFx0XHRcdC8vIFRPRE86IGF2b2lkIGR1cGxpY2F0aW9uXG5cdFx0XHRcdFx0dGFnID0gcGFyc2V4bWx0YWcoeC5zbGljZShyc3RhcnRpLHJpKSwgdHJ1ZSk7XG5cdFx0XHRcdFx0dGFnciA9IHRhZy5yICE9IG51bGwgPyBwYXJzZUludCh0YWcuciwgMTApIDogdGFncisxOyB0YWdjID0gLTE7XG5cdFx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPCB0YWdyKSBjb250aW51ZTtcblx0XHRcdFx0XHRyb3dvYmogPSB7fTsgcm93cml0ZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHRhZy5odCkgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhwdCA9IHBhcnNlRmxvYXQodGFnLmh0KTsgcm93b2JqLmhweCA9IHB0MnB4KHJvd29iai5ocHQpOyB9XG5cdFx0XHRcdFx0aWYodGFnLmhpZGRlbiA9PSBcIjFcIikgeyByb3dyaXRlID0gdHJ1ZTsgcm93b2JqLmhpZGRlbiA9IHRydWU7IH1cblx0XHRcdFx0XHRpZih0YWcub3V0bGluZUxldmVsICE9IG51bGwpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5sZXZlbCA9ICt0YWcub3V0bGluZUxldmVsOyB9XG5cdFx0XHRcdFx0aWYocm93cml0ZSkgcm93c1t0YWdyLTFdID0gcm93b2JqO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIjxcIiAvKjYwKi86IHJzdGFydGkgPSByaTsgYnJlYWs7XG5cdFx0fVxuXHRcdGlmKHJzdGFydGkgPj0gcmkpIGJyZWFrO1xuXHRcdHRhZyA9IHBhcnNleG1sdGFnKHguc2xpY2UocnN0YXJ0aSxyaSksIHRydWUpO1xuXHRcdHRhZ3IgPSB0YWcuciAhPSBudWxsID8gcGFyc2VJbnQodGFnLnIsIDEwKSA6IHRhZ3IrMTsgdGFnYyA9IC0xO1xuXHRcdGlmKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDwgdGFncikgY29udGludWU7XG5cdFx0aWYoZ3Vlc3Mucy5yID4gdGFnciAtIDEpIGd1ZXNzLnMuciA9IHRhZ3IgLSAxO1xuXHRcdGlmKGd1ZXNzLmUuciA8IHRhZ3IgLSAxKSBndWVzcy5lLnIgPSB0YWdyIC0gMTtcblxuXHRcdGlmKG9wdHMgJiYgb3B0cy5jZWxsU3R5bGVzKSB7XG5cdFx0XHRyb3dvYmogPSB7fTsgcm93cml0ZSA9IGZhbHNlO1xuXHRcdFx0aWYodGFnLmh0KSB7IHJvd3JpdGUgPSB0cnVlOyByb3dvYmouaHB0ID0gcGFyc2VGbG9hdCh0YWcuaHQpOyByb3dvYmouaHB4ID0gcHQycHgocm93b2JqLmhwdCk7IH1cblx0XHRcdGlmKHRhZy5oaWRkZW4gPT0gXCIxXCIpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5oaWRkZW4gPSB0cnVlOyB9XG5cdFx0XHRpZih0YWcub3V0bGluZUxldmVsICE9IG51bGwpIHsgcm93cml0ZSA9IHRydWU7IHJvd29iai5sZXZlbCA9ICt0YWcub3V0bGluZUxldmVsOyB9XG5cdFx0XHRpZihyb3dyaXRlKSByb3dzW3RhZ3ItMV0gPSByb3dvYmo7XG5cdFx0fVxuXG5cdFx0LyogMTguMy4xLjQgYyBDVF9DZWxsICovXG5cdFx0Y2VsbHMgPSB4LnNsaWNlKHJpKS5zcGxpdChjZWxscmVnZXgpO1xuXHRcdGZvcih2YXIgcnNsaWNlID0gMDsgcnNsaWNlICE9IGNlbGxzLmxlbmd0aDsgKytyc2xpY2UpIGlmKGNlbGxzW3JzbGljZV0udHJpbSgpLmNoYXJBdCgwKSAhPSBcIjxcIikgYnJlYWs7XG5cdFx0Y2VsbHMgPSBjZWxscy5zbGljZShyc2xpY2UpO1xuXHRcdGZvcihyaSA9IDA7IHJpICE9IGNlbGxzLmxlbmd0aDsgKytyaSkge1xuXHRcdFx0eCA9IGNlbGxzW3JpXS50cmltKCk7XG5cdFx0XHRpZih4Lmxlbmd0aCA9PT0gMCkgY29udGludWU7XG5cdFx0XHRjcmVmID0geC5tYXRjaChycmVnZXgpOyBpZHggPSByaTsgaT0wOyBjYz0wO1xuXHRcdFx0eCA9IFwiPGMgXCIgKyAoeC5zbGljZSgwLDEpPT1cIjxcIj9cIj5cIjpcIlwiKSArIHg7XG5cdFx0XHRpZihjcmVmICE9IG51bGwgJiYgY3JlZi5sZW5ndGggPT09IDIpIHtcblx0XHRcdFx0aWR4ID0gMDsgZD1jcmVmWzFdO1xuXHRcdFx0XHRmb3IoaT0wOyBpICE9IGQubGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0XHRpZigoY2M9ZC5jaGFyQ29kZUF0KGkpLTY0KSA8IDEgfHwgY2MgPiAyNikgYnJlYWs7XG5cdFx0XHRcdFx0aWR4ID0gMjYqaWR4ICsgY2M7XG5cdFx0XHRcdH1cblx0XHRcdFx0LS1pZHg7XG5cdFx0XHRcdHRhZ2MgPSBpZHg7XG5cdFx0XHR9IGVsc2UgKyt0YWdjO1xuXHRcdFx0Zm9yKGkgPSAwOyBpICE9IHgubGVuZ3RoOyArK2kpIGlmKHguY2hhckNvZGVBdChpKSA9PT0gNjIpIGJyZWFrOyArK2k7XG5cdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyh4LnNsaWNlKDAsaSksIHRydWUpO1xuXHRcdFx0aWYoIXRhZy5yKSB0YWcuciA9IGVuY29kZV9jZWxsKHtyOnRhZ3ItMSwgYzp0YWdjfSk7XG5cdFx0XHRkID0geC5zbGljZShpKTtcblx0XHRcdHAgPSAoe3Q6XCJcIn0vKjphbnkqLyk7XG5cblx0XHRcdGlmKChjcmVmPWQubWF0Y2gobWF0Y2hfdikpIT0gbnVsbCAmJiAvKjo6Y3JlZiAhPSBudWxsICYmICovY3JlZlsxXSAhPT0gJycpIHAudj11bmVzY2FwZXhtbChjcmVmWzFdKTtcblx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0aWYoKGNyZWY9ZC5tYXRjaChtYXRjaF9mKSkhPSBudWxsICYmIC8qOjpjcmVmICE9IG51bGwgJiYgKi9jcmVmWzFdICE9PSAnJykge1xuXHRcdFx0XHRcdC8qIFRPRE86IG1hdGNoIGFnYWluc3QgWExTWEZ1dHVyZUZ1bmN0aW9ucyAqL1xuXHRcdFx0XHRcdHAuZj11bmVzY2FwZXhtbCh1dGY4cmVhZChjcmVmWzFdKSkucmVwbGFjZSgvXFxyXFxuL2csIFwiXFxuXCIpO1xuXHRcdFx0XHRcdGlmKCFvcHRzLnhsZm4pIHAuZiA9IF94bGZuKHAuZik7XG5cdFx0XHRcdFx0aWYoLyo6OmNyZWYgIT0gbnVsbCAmJiBjcmVmWzBdICE9IG51bGwgJiYgKi9jcmVmWzBdLmluZGV4T2YoJ3Q9XCJhcnJheVwiJykgPiAtMSkge1xuXHRcdFx0XHRcdFx0cC5GID0gKGQubWF0Y2gocmVmcmVnZXgpfHxbXSlbMV07XG5cdFx0XHRcdFx0XHRpZihwLkYuaW5kZXhPZihcIjpcIikgPiAtMSkgYXJyYXlmLnB1c2goW3NhZmVfZGVjb2RlX3JhbmdlKHAuRiksIHAuRl0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZigvKjo6Y3JlZiAhPSBudWxsICYmIGNyZWZbMF0gIT0gbnVsbCAmJiAqL2NyZWZbMF0uaW5kZXhPZigndD1cInNoYXJlZFwiJykgPiAtMSkge1xuXHRcdFx0XHRcdFx0Ly8gVE9ETzogcGFyc2UgZm9ybXVsYVxuXHRcdFx0XHRcdFx0ZnRhZyA9IHBhcnNleG1sdGFnKGNyZWZbMF0pO1xuXHRcdFx0XHRcdFx0dmFyIF9fX2YgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZChjcmVmWzFdKSk7XG5cdFx0XHRcdFx0XHRpZighb3B0cy54bGZuKSBfX19mID0gX3hsZm4oX19fZik7XG5cdFx0XHRcdFx0XHRzaGFyZWRmW3BhcnNlSW50KGZ0YWcuc2ksIDEwKV0gPSBbZnRhZywgX19fZiwgdGFnLnJdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmKChjcmVmPWQubWF0Y2goLzxmW14+XSpcXC8+LykpKSB7XG5cdFx0XHRcdFx0ZnRhZyA9IHBhcnNleG1sdGFnKGNyZWZbMF0pO1xuXHRcdFx0XHRcdGlmKHNoYXJlZGZbZnRhZy5zaV0pIHAuZiA9IHNoaWZ0X2Zvcm11bGFfeGxzeChzaGFyZWRmW2Z0YWcuc2ldWzFdLCBzaGFyZWRmW2Z0YWcuc2ldWzJdLypbMF0ucmVmKi8sIHRhZy5yKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvKiBUT0RPOiBmYWN0b3Igb3V0IGNvbnRhaW5zIGxvZ2ljICovXG5cdFx0XHRcdHZhciBfdGFnID0gZGVjb2RlX2NlbGwodGFnLnIpO1xuXHRcdFx0XHRmb3IoaSA9IDA7IGkgPCBhcnJheWYubGVuZ3RoOyArK2kpXG5cdFx0XHRcdFx0aWYoX3RhZy5yID49IGFycmF5ZltpXVswXS5zLnIgJiYgX3RhZy5yIDw9IGFycmF5ZltpXVswXS5lLnIpXG5cdFx0XHRcdFx0XHRpZihfdGFnLmMgPj0gYXJyYXlmW2ldWzBdLnMuYyAmJiBfdGFnLmMgPD0gYXJyYXlmW2ldWzBdLmUuYylcblx0XHRcdFx0XHRcdFx0cC5GID0gYXJyYXlmW2ldWzFdO1xuXHRcdFx0fVxuXG5cdFx0XHRpZih0YWcudCA9PSBudWxsICYmIHAudiA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmKHAuZiB8fCBwLkYpIHtcblx0XHRcdFx0XHRwLnYgPSAwOyBwLnQgPSBcIm5cIjtcblx0XHRcdFx0fSBlbHNlIGlmKCFzaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0ZWxzZSBwLnQgPSBcInpcIjtcblx0XHRcdH1cblx0XHRcdGVsc2UgcC50ID0gdGFnLnQgfHwgXCJuXCI7XG5cdFx0XHRpZihndWVzcy5zLmMgPiB0YWdjKSBndWVzcy5zLmMgPSB0YWdjO1xuXHRcdFx0aWYoZ3Vlc3MuZS5jIDwgdGFnYykgZ3Vlc3MuZS5jID0gdGFnYztcblx0XHRcdC8qIDE4LjE4LjExIHQgU1RfQ2VsbFR5cGUgKi9cblx0XHRcdHN3aXRjaChwLnQpIHtcblx0XHRcdFx0Y2FzZSAnbic6XG5cdFx0XHRcdFx0aWYocC52ID09IFwiXCIgfHwgcC52ID09IG51bGwpIHtcblx0XHRcdFx0XHRcdGlmKCFzaGVldFN0dWJzKSBjb250aW51ZTtcblx0XHRcdFx0XHRcdHAudCA9ICd6Jztcblx0XHRcdFx0XHR9IGVsc2UgcC52ID0gcGFyc2VGbG9hdChwLnYpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdzJzpcblx0XHRcdFx0XHRpZih0eXBlb2YgcC52ID09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdFx0XHRpZighc2hlZXRTdHVicykgY29udGludWU7XG5cdFx0XHRcdFx0XHRwLnQgPSAneic7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNzdHIgPSBzdHJzW3BhcnNlSW50KHAudiwgMTApXTtcblx0XHRcdFx0XHRcdHAudiA9IHNzdHIudDtcblx0XHRcdFx0XHRcdHAuciA9IHNzdHIucjtcblx0XHRcdFx0XHRcdGlmKG9wdHMuY2VsbEhUTUwpIHAuaCA9IHNzdHIuaDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3N0cic6XG5cdFx0XHRcdFx0cC50ID0gXCJzXCI7XG5cdFx0XHRcdFx0cC52ID0gKHAudiE9bnVsbCkgPyB1dGY4cmVhZChwLnYpIDogJyc7XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsSFRNTCkgcC5oID0gZXNjYXBlaHRtbChwLnYpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdpbmxpbmVTdHInOlxuXHRcdFx0XHRcdGNyZWYgPSBkLm1hdGNoKGlzcmVnZXgpO1xuXHRcdFx0XHRcdHAudCA9ICdzJztcblx0XHRcdFx0XHRpZihjcmVmICE9IG51bGwgJiYgKHNzdHIgPSBwYXJzZV9zaShjcmVmWzFdKSkpIHtcblx0XHRcdFx0XHRcdHAudiA9IHNzdHIudDtcblx0XHRcdFx0XHRcdGlmKG9wdHMuY2VsbEhUTUwpIHAuaCA9IHNzdHIuaDtcblx0XHRcdFx0XHR9IGVsc2UgcC52ID0gXCJcIjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnYic6IHAudiA9IHBhcnNleG1sYm9vbChwLnYpOyBicmVhaztcblx0XHRcdFx0Y2FzZSAnZCc6XG5cdFx0XHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMpIHAudiA9IHBhcnNlRGF0ZShwLnYsIDEpO1xuXHRcdFx0XHRcdGVsc2UgeyBwLnYgPSBkYXRlbnVtKHBhcnNlRGF0ZShwLnYsIDEpKTsgcC50ID0gJ24nOyB9XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8qIGVycm9yIHN0cmluZyBpbiAudywgbnVtYmVyIGluIC52ICovXG5cdFx0XHRcdGNhc2UgJ2UnOlxuXHRcdFx0XHRcdGlmKCFvcHRzIHx8IG9wdHMuY2VsbFRleHQgIT09IGZhbHNlKSBwLncgPSBwLnY7XG5cdFx0XHRcdFx0cC52ID0gUkJFcnJbcC52XTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0XHQvKiBmb3JtYXR0aW5nICovXG5cdFx0XHRmbXRpZCA9IGZpbGxpZCA9IDA7XG5cdFx0XHRjZiA9IG51bGw7XG5cdFx0XHRpZihkb19mb3JtYXQgJiYgdGFnLnMgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRjZiA9IHN0eWxlcy5DZWxsWGZbdGFnLnNdO1xuXHRcdFx0XHRpZihjZiAhPSBudWxsKSB7XG5cdFx0XHRcdFx0aWYoY2YubnVtRm10SWQgIT0gbnVsbCkgZm10aWQgPSBjZi5udW1GbXRJZDtcblx0XHRcdFx0XHRpZihvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRcdFx0XHRcdGlmKGNmLmZpbGxJZCAhPSBudWxsKSBmaWxsaWQgPSBjZi5maWxsSWQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRzYWZlX2Zvcm1hdChwLCBmbXRpZCwgZmlsbGlkLCBvcHRzLCB0aGVtZXMsIHN0eWxlcyk7XG5cdFx0XHRpZihvcHRzLmNlbGxEYXRlcyAmJiBkb19mb3JtYXQgJiYgcC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh0YWJsZV9mbXRbZm10aWRdKSkgeyBwLnQgPSAnZCc7IHAudiA9IG51bWRhdGUocC52KTsgfVxuXHRcdFx0aWYodGFnLmNtICYmIG9wdHMueGxtZXRhKSB7XG5cdFx0XHRcdHZhciBjbSA9IChvcHRzLnhsbWV0YS5DZWxsfHxbXSlbK3RhZy5jbS0xXTtcblx0XHRcdFx0aWYoY20gJiYgY20udHlwZSA9PSAnWExEQVBSJykgcC5EID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGlmKGRlbnNlKSB7XG5cdFx0XHRcdHZhciBfciA9IGRlY29kZV9jZWxsKHRhZy5yKTtcblx0XHRcdFx0aWYoIXNbX3Iucl0pIHNbX3Iucl0gPSBbXTtcblx0XHRcdFx0c1tfci5yXVtfci5jXSA9IHA7XG5cdFx0XHR9IGVsc2Ugc1t0YWcucl0gPSBwO1xuXHRcdH1cblx0fVxuXHRpZihyb3dzLmxlbmd0aCA+IDApIHNbJyFyb3dzJ10gPSByb3dzO1xufTsgfSkoKTtcblxuZnVuY3Rpb24gd3JpdGVfd3NfeG1sX2RhdGEod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLy8qOjosIHJlbHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW10sIHIvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddKSwgY2VsbD1cIlwiLCByZWYsIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBSPTAsIEM9MCwgcm93cyA9IHdzWychcm93cyddO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIHBhcmFtcyA9ICh7cjpycn0vKjphbnkqLyksIHJvdy8qOlJvd0luZm8qLywgaGVpZ2h0ID0gLTE7XG5cdGZvcihDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0Zm9yKFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRyID0gW107XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcihDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgX2NlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdOiB3c1tyZWZdO1xuXHRcdFx0aWYoX2NlbGwgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRpZigoY2VsbCA9IHdyaXRlX3dzX3htbF9jZWxsKF9jZWxsLCByZWYsIHdzLCBvcHRzLCBpZHgsIHdiKSkgIT0gbnVsbCkgci5wdXNoKGNlbGwpO1xuXHRcdH1cblx0XHRpZihyLmxlbmd0aCA+IDAgfHwgKHJvd3MgJiYgcm93c1tSXSkpIHtcblx0XHRcdHBhcmFtcyA9ICh7cjpycn0vKjphbnkqLyk7XG5cdFx0XHRpZihyb3dzICYmIHJvd3NbUl0pIHtcblx0XHRcdFx0cm93ID0gcm93c1tSXTtcblx0XHRcdFx0aWYocm93LmhpZGRlbikgcGFyYW1zLmhpZGRlbiA9IDE7XG5cdFx0XHRcdGhlaWdodCA9IC0xO1xuXHRcdFx0XHRpZihyb3cuaHB4KSBoZWlnaHQgPSBweDJwdChyb3cuaHB4KTtcblx0XHRcdFx0ZWxzZSBpZihyb3cuaHB0KSBoZWlnaHQgPSByb3cuaHB0O1xuXHRcdFx0XHRpZihoZWlnaHQgPiAtMSkgeyBwYXJhbXMuaHQgPSBoZWlnaHQ7IHBhcmFtcy5jdXN0b21IZWlnaHQgPSAxOyB9XG5cdFx0XHRcdGlmKHJvdy5sZXZlbCkgeyBwYXJhbXMub3V0bGluZUxldmVsID0gcm93LmxldmVsOyB9XG5cdFx0XHR9XG5cdFx0XHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3JvdycsIHIuam9pbihcIlwiKSwgcGFyYW1zKSk7XG5cdFx0fVxuXHR9XG5cdGlmKHJvd3MpIGZvcig7IFIgPCByb3dzLmxlbmd0aDsgKytSKSB7XG5cdFx0aWYocm93cyAmJiByb3dzW1JdKSB7XG5cdFx0XHRwYXJhbXMgPSAoe3I6UisxfS8qOmFueSovKTtcblx0XHRcdHJvdyA9IHJvd3NbUl07XG5cdFx0XHRpZihyb3cuaGlkZGVuKSBwYXJhbXMuaGlkZGVuID0gMTtcblx0XHRcdGhlaWdodCA9IC0xO1xuXHRcdFx0aWYgKHJvdy5ocHgpIGhlaWdodCA9IHB4MnB0KHJvdy5ocHgpO1xuXHRcdFx0ZWxzZSBpZiAocm93LmhwdCkgaGVpZ2h0ID0gcm93LmhwdDtcblx0XHRcdGlmIChoZWlnaHQgPiAtMSkgeyBwYXJhbXMuaHQgPSBoZWlnaHQ7IHBhcmFtcy5jdXN0b21IZWlnaHQgPSAxOyB9XG5cdFx0XHRpZiAocm93LmxldmVsKSB7IHBhcmFtcy5vdXRsaW5lTGV2ZWwgPSByb3cubGV2ZWw7IH1cblx0XHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygncm93JywgXCJcIiwgcGFyYW1zKSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX3htbChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBbWE1MX0hFQURFUiwgd3JpdGV4dGFnKCd3b3Jrc2hlZXQnLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQneG1sbnM6cic6IFhNTE5TLnJcblx0fSldO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XSwgc2lkeCA9IDAsIHJkYXRhID0gXCJcIjtcblx0dmFyIHdzID0gd2IuU2hlZXRzW3NdO1xuXHRpZih3cyA9PSBudWxsKSB3cyA9IHt9O1xuXHR2YXIgcmVmID0gd3NbJyFyZWYnXSB8fCAnQTEnO1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZShyZWYpO1xuXHRpZihyYW5nZS5lLmMgPiAweDNGRkYgfHwgcmFuZ2UuZS5yID4gMHhGRkZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArIHJlZiArIFwiIGV4Y2VlZHMgZm9ybWF0IGxpbWl0IEExOlhGRDEwNDg1NzZcIik7XG5cdFx0cmFuZ2UuZS5jID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweDNGRkYpO1xuXHRcdHJhbmdlLmUuciA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRkZGRik7XG5cdFx0cmVmID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0fVxuXHRpZighcmVscykgcmVscyA9IHt9O1xuXHR3c1snIWNvbW1lbnRzJ10gPSBbXTtcblx0dmFyIF9kcmF3aW5nID0gW107XG5cblx0d3JpdGVfd3NfeG1sX3NoZWV0cHIod3MsIHdiLCBpZHgsIG9wdHMsIG8pO1xuXG5cdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnZGltZW5zaW9uJywgbnVsbCwgeydyZWYnOiByZWZ9KSk7XG5cblx0b1tvLmxlbmd0aF0gPSB3cml0ZV93c194bWxfc2hlZXR2aWV3cyh3cywgb3B0cywgaWR4LCB3Yik7XG5cblx0LyogVE9ETzogc3RvcmUgaW4gV0IsIHByb2Nlc3Mgc3R5bGVzICovXG5cdGlmKG9wdHMuc2hlZXRGb3JtYXQpIG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc2hlZXRGb3JtYXRQcicsIG51bGwsIHtcblx0XHRkZWZhdWx0Um93SGVpZ2h0Om9wdHMuc2hlZXRGb3JtYXQuZGVmYXVsdFJvd0hlaWdodHx8JzE2Jyxcblx0XHRiYXNlQ29sV2lkdGg6b3B0cy5zaGVldEZvcm1hdC5iYXNlQ29sV2lkdGh8fCcxMCcsXG5cdFx0b3V0bGluZUxldmVsUm93Om9wdHMuc2hlZXRGb3JtYXQub3V0bGluZUxldmVsUm93fHwnNydcblx0fSkpO1xuXG5cdGlmKHdzWychY29scyddICE9IG51bGwgJiYgd3NbJyFjb2xzJ10ubGVuZ3RoID4gMCkgb1tvLmxlbmd0aF0gPSAod3JpdGVfd3NfeG1sX2NvbHMod3MsIHdzWychY29scyddKSk7XG5cblx0b1tzaWR4ID0gby5sZW5ndGhdID0gJzxzaGVldERhdGEvPic7XG5cdHdzWychbGlua3MnXSA9IFtdO1xuXHRpZih3c1snIXJlZiddICE9IG51bGwpIHtcblx0XHRyZGF0YSA9IHdyaXRlX3dzX3htbF9kYXRhKHdzLCBvcHRzLCBpZHgsIHdiLCByZWxzKTtcblx0XHRpZihyZGF0YS5sZW5ndGggPiAwKSBvW28ubGVuZ3RoXSA9IChyZGF0YSk7XG5cdH1cblx0aWYoby5sZW5ndGg+c2lkeCsxKSB7IG9bby5sZW5ndGhdID0gKCc8L3NoZWV0RGF0YT4nKTsgb1tzaWR4XT1vW3NpZHhdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXG5cdC8qIHNoZWV0Q2FsY1ByICovXG5cblx0aWYod3NbJyFwcm90ZWN0J10pIG9bby5sZW5ndGhdID0gd3JpdGVfd3NfeG1sX3Byb3RlY3Rpb24od3NbJyFwcm90ZWN0J10pO1xuXG5cdC8qIHByb3RlY3RlZFJhbmdlcyAqL1xuXHQvKiBzY2VuYXJpb3MgKi9cblxuXHRpZih3c1snIWF1dG9maWx0ZXInXSAhPSBudWxsKSBvW28ubGVuZ3RoXSA9IHdyaXRlX3dzX3htbF9hdXRvZmlsdGVyKHdzWychYXV0b2ZpbHRlciddLCB3cywgd2IsIGlkeCk7XG5cblx0Lyogc29ydFN0YXRlICovXG5cdC8qIGRhdGFDb25zb2xpZGF0ZSAqL1xuXHQvKiBjdXN0b21TaGVldFZpZXdzICovXG5cblx0aWYod3NbJyFtZXJnZXMnXSAhPSBudWxsICYmIHdzWychbWVyZ2VzJ10ubGVuZ3RoID4gMCkgb1tvLmxlbmd0aF0gPSAod3JpdGVfd3NfeG1sX21lcmdlcyh3c1snIW1lcmdlcyddKSk7XG5cblx0LyogcGhvbmV0aWNQciAqL1xuXHQvKiBjb25kaXRpb25hbEZvcm1hdHRpbmcgKi9cblx0LyogZGF0YVZhbGlkYXRpb25zICovXG5cblx0dmFyIHJlbGMgPSAtMSwgcmVsLCBySWQgPSAtMTtcblx0aWYoLyo6OigqL3dzWychbGlua3MnXS8qOjp8fFtdKSovLmxlbmd0aCA+IDApIHtcblx0XHRvW28ubGVuZ3RoXSA9IFwiPGh5cGVybGlua3M+XCI7XG5cdFx0Lyo6OigqL3dzWychbGlua3MnXS8qOjp8fFtdKSovLmZvckVhY2goZnVuY3Rpb24obCkge1xuXHRcdFx0aWYoIWxbMV0uVGFyZ2V0KSByZXR1cm47XG5cdFx0XHRyZWwgPSAoe1wicmVmXCI6bFswXX0vKjphbnkqLyk7XG5cdFx0XHRpZihsWzFdLlRhcmdldC5jaGFyQXQoMCkgIT0gXCIjXCIpIHtcblx0XHRcdFx0cklkID0gYWRkX3JlbHMocmVscywgLTEsIGVzY2FwZXhtbChsWzFdLlRhcmdldCkucmVwbGFjZSgvIy4qJC8sIFwiXCIpLCBSRUxTLkhMSU5LKTtcblx0XHRcdFx0cmVsW1wicjppZFwiXSA9IFwicklkXCIrcklkO1xuXHRcdFx0fVxuXHRcdFx0aWYoKHJlbGMgPSBsWzFdLlRhcmdldC5pbmRleE9mKFwiI1wiKSkgPiAtMSkgcmVsLmxvY2F0aW9uID0gZXNjYXBleG1sKGxbMV0uVGFyZ2V0LnNsaWNlKHJlbGMrMSkpO1xuXHRcdFx0aWYobFsxXS5Ub29sdGlwKSByZWwudG9vbHRpcCA9IGVzY2FwZXhtbChsWzFdLlRvb2x0aXApO1xuXHRcdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoXCJoeXBlcmxpbmtcIixudWxsLHJlbCk7XG5cdFx0fSk7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvaHlwZXJsaW5rcz5cIjtcblx0fVxuXHRkZWxldGUgd3NbJyFsaW5rcyddO1xuXG5cdC8qIHByaW50T3B0aW9ucyAqL1xuXG5cdGlmKHdzWychbWFyZ2lucyddICE9IG51bGwpIG9bby5sZW5ndGhdID0gIHdyaXRlX3dzX3htbF9tYXJnaW5zKHdzWychbWFyZ2lucyddKTtcblxuXHQvKiBwYWdlU2V0dXAgKi9cblx0LyogaGVhZGVyRm9vdGVyICovXG5cdC8qIHJvd0JyZWFrcyAqL1xuXHQvKiBjb2xCcmVha3MgKi9cblx0LyogY3VzdG9tUHJvcGVydGllcyAqL1xuXHQvKiBjZWxsV2F0Y2hlcyAqL1xuXG5cdGlmKCFvcHRzIHx8IG9wdHMuaWdub3JlRUMgfHwgKG9wdHMuaWdub3JlRUMgPT0gKHZvaWQgMCkpKSBvW28ubGVuZ3RoXSA9IHdyaXRldGFnKFwiaWdub3JlZEVycm9yc1wiLCB3cml0ZXh0YWcoXCJpZ25vcmVkRXJyb3JcIiwgbnVsbCwge251bWJlclN0b3JlZEFzVGV4dDoxLCBzcXJlZjpyZWZ9KSk7XG5cblx0Lyogc21hcnRUYWdzICovXG5cblx0aWYoX2RyYXdpbmcubGVuZ3RoID4gMCkge1xuXHRcdHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL2RyYXdpbmdcIiArIChpZHgrMSkgKyBcIi54bWxcIiwgUkVMUy5EUkFXKTtcblx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImRyYXdpbmdcIiwgbnVsbCwge1wicjppZFwiOlwicklkXCIgKyBySWR9KTtcblx0XHR3c1snIWRyYXdpbmcnXSA9IF9kcmF3aW5nO1xuXHR9XG5cblx0aWYod3NbJyFjb21tZW50cyddLmxlbmd0aCA+IDApIHtcblx0XHRySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgXCIuLi9kcmF3aW5ncy92bWxEcmF3aW5nXCIgKyAoaWR4KzEpICsgXCIudm1sXCIsIFJFTFMuVk1MKTtcblx0XHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZyhcImxlZ2FjeURyYXdpbmdcIiwgbnVsbCwge1wicjppZFwiOlwicklkXCIgKyBySWR9KTtcblx0XHR3c1snIWxlZ2FjeSddID0gcklkO1xuXHR9XG5cblx0LyogbGVnYWN5RHJhd2luZ0hGICovXG5cdC8qIHBpY3R1cmUgKi9cblx0Lyogb2xlT2JqZWN0cyAqL1xuXHQvKiBjb250cm9scyAqL1xuXHQvKiB3ZWJQdWJsaXNoSXRlbXMgKi9cblx0LyogdGFibGVQYXJ0cyAqL1xuXHQvKiBleHRMc3QgKi9cblxuXHRpZihvLmxlbmd0aD4xKSB7IG9bby5sZW5ndGhdID0gKCc8L3dvcmtzaGVldD4nKTsgb1sxXT1vWzFdLnJlcGxhY2UoXCIvPlwiLFwiPlwiKTsgfVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjcyNiBCcnRSb3dIZHIgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFJvd0hkcihkYXRhLCBsZW5ndGgpIHtcblx0dmFyIHogPSAoe30vKjphbnkqLyk7XG5cdHZhciB0Z3QgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHouciA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ZGF0YS5sICs9IDQ7IC8vIFRPRE86IGl4ZmVcblx0dmFyIG1peVJ3ID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRkYXRhLmwgKz0gMTsgLy8gVE9ETzogdG9wL2JvdCBwYWRkaW5nXG5cdHZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0ZGF0YS5sID0gdGd0O1xuXHRpZihmbGFncyAmIDB4MDcpIHoubGV2ZWwgPSBmbGFncyAmIDB4MDc7XG5cdGlmKGZsYWdzICYgMHgxMCkgei5oaWRkZW4gPSB0cnVlO1xuXHRpZihmbGFncyAmIDB4MjApIHouaHB0ID0gbWl5UncgLyAyMDtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRSb3dIZHIoUi8qOm51bWJlciovLCByYW5nZSwgd3MpIHtcblx0dmFyIG8gPSBuZXdfYnVmKDE3KzgqMTYpO1xuXHR2YXIgcm93ID0gKHdzWychcm93cyddfHxbXSlbUl18fHt9O1xuXHRvLndyaXRlX3NoaWZ0KDQsIFIpO1xuXG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8qIFRPRE86IGl4ZmUgKi9cblxuXHR2YXIgbWl5UncgPSAweDAxNDA7XG5cdGlmKHJvdy5ocHgpIG1peVJ3ID0gcHgycHQocm93LmhweCkgKiAyMDtcblx0ZWxzZSBpZihyb3cuaHB0KSBtaXlSdyA9IHJvdy5ocHQgKiAyMDtcblx0by53cml0ZV9zaGlmdCgyLCBtaXlSdyk7XG5cblx0by53cml0ZV9zaGlmdCgxLCAwKTsgLyogdG9wL2JvdCBwYWRkaW5nICovXG5cblx0dmFyIGZsYWdzID0gMHgwO1xuXHRpZihyb3cubGV2ZWwpIGZsYWdzIHw9IHJvdy5sZXZlbDtcblx0aWYocm93LmhpZGRlbikgZmxhZ3MgfD0gMHgxMDtcblx0aWYocm93LmhweCB8fCByb3cuaHB0KSBmbGFncyB8PSAweDIwO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGZsYWdzKTtcblxuXHRvLndyaXRlX3NoaWZ0KDEsIDApOyAvKiBwaG9uZXRpYyBndWlkZSAqL1xuXG5cdC8qIFtNUy1YTFNCXSAyLjUuOCBCcnRDb2xTcGFuIGV4cGxhaW5zIHRoZSBtZWNoYW5pc20gKi9cblx0dmFyIG5jb2xzcGFuID0gMCwgbGNzID0gby5sO1xuXHRvLmwgKz0gNDtcblxuXHR2YXIgY2FkZHIgPSB7cjpSLCBjOjB9O1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkge1xuXHRcdGlmKChyYW5nZS5zLmMgPiAoKGkrMSkgPDwgMTApKSB8fCAocmFuZ2UuZS5jIDwgKGkgPDwgMTApKSkgY29udGludWU7XG5cdFx0dmFyIGZpcnN0ID0gLTEsIGxhc3QgPSAtMTtcblx0XHRmb3IodmFyIGogPSAoaTw8MTApOyBqIDwgKChpKzEpPDwxMCk7ICsraikge1xuXHRcdFx0Y2FkZHIuYyA9IGo7XG5cdFx0XHR2YXIgY2VsbCA9IEFycmF5LmlzQXJyYXkod3MpID8gKHdzW2NhZGRyLnJdfHxbXSlbY2FkZHIuY10gOiB3c1tlbmNvZGVfY2VsbChjYWRkcildO1xuXHRcdFx0aWYoY2VsbCkgeyBpZihmaXJzdCA8IDApIGZpcnN0ID0gajsgbGFzdCA9IGo7IH1cblx0XHR9XG5cdFx0aWYoZmlyc3QgPCAwKSBjb250aW51ZTtcblx0XHQrK25jb2xzcGFuO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgZmlyc3QpO1xuXHRcdG8ud3JpdGVfc2hpZnQoNCwgbGFzdCk7XG5cdH1cblxuXHR2YXIgbCA9IG8ubDtcblx0by5sID0gbGNzO1xuXHRvLndyaXRlX3NoaWZ0KDQsIG5jb2xzcGFuKTtcblx0by5sID0gbDtcblxuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuZnVuY3Rpb24gd3JpdGVfcm93X2hlYWRlcihiYSwgd3MsIHJhbmdlLCBSKSB7XG5cdHZhciBvID0gd3JpdGVfQnJ0Um93SGRyKFIsIHJhbmdlLCB3cyk7XG5cdGlmKChvLmxlbmd0aCA+IDE3KSB8fCAod3NbJyFyb3dzJ118fFtdKVtSXSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwMDAgLyogQnJ0Um93SGRyICovLCBvKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC44MjAgQnJ0V3NEaW0gKi9cbnZhciBwYXJzZV9CcnRXc0RpbSA9IHBhcnNlX1VuY2hlY2tlZFJmWDtcbnZhciB3cml0ZV9CcnRXc0RpbSA9IHdyaXRlX1VuY2hlY2tlZFJmWDtcblxuLyogW01TLVhMU0JdIDIuNC44MjEgQnJ0V3NGbXRJbmZvICovXG5mdW5jdGlvbiBwYXJzZV9CcnRXc0ZtdEluZm8oLyo6OmRhdGEsIGxlbmd0aCovKSB7XG59XG4vL2Z1bmN0aW9uIHdyaXRlX0JydFdzRm10SW5mbyh3cywgbykgeyB9XG5cbi8qIFtNUy1YTFNCXSAyLjQuODIzIEJydFdzUHJvcCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0V3NQcm9wKGRhdGEsIGxlbmd0aCkge1xuXHR2YXIgeiA9IHt9O1xuXHR2YXIgZiA9IGRhdGFbZGF0YS5sXTsgKytkYXRhLmw7XG5cdHouYWJvdmUgPSAhKGYgJiAweDQwKTtcblx0ei5sZWZ0ICA9ICEoZiAmIDB4ODApO1xuXHQvKiBUT0RPOiBwdWxsIGZsYWdzICovXG5cdGRhdGEubCArPSAxODtcblx0ei5uYW1lID0gcGFyc2VfWExTQkNvZGVOYW1lKGRhdGEsIGxlbmd0aCAtIDE5KTtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRXc1Byb3Aoc3RyLCBvdXRsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoODQrNCpzdHIubGVuZ3RoKTtcblx0dmFyIGYgPSAweEMwO1xuXHRpZihvdXRsKSB7XG5cdFx0aWYob3V0bC5hYm92ZSkgZiAmPSB+MHg0MDtcblx0XHRpZihvdXRsLmxlZnQpICBmICY9IH4weDgwO1xuXHR9XG5cdG8ud3JpdGVfc2hpZnQoMSwgZik7XG5cdGZvcih2YXIgaSA9IDE7IGkgPCAzOyArK2kpIG8ud3JpdGVfc2hpZnQoMSwwKTtcblx0d3JpdGVfQnJ0Q29sb3Ioe2F1dG86MX0sIG8pO1xuXHRvLndyaXRlX3NoaWZ0KC00LC0xKTtcblx0by53cml0ZV9zaGlmdCgtNCwtMSk7XG5cdHdyaXRlX1hMU0JDb2RlTmFtZShzdHIsIG8pO1xuXHRyZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwNiBCcnRDZWxsQmxhbmsgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxCbGFuayhkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHJldHVybiBbY2VsbF07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsQmxhbmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0cmV0dXJuIHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0QmxhbmsoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHJldHVybiBbY2VsbF07XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydEJsYW5rKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdHJldHVybiB3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDcgQnJ0Q2VsbEJvb2wgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxCb29sKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIGZCb29sID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHRyZXR1cm4gW2NlbGwsIGZCb29sLCAnYiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbEJvb2woY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfWExTQkNlbGwobmNlbGwsIG8pO1xuXHRvLndyaXRlX3NoaWZ0KDEsIGNlbGwudiA/IDEgOiAwKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydEJvb2woZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBmQm9vbCA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0cmV0dXJuIFtjZWxsLCBmQm9vbCwgJ2InXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0Qm9vbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDUpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYgPyAxIDogMCk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMwOCBCcnRDZWxsRXJyb3IgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydENlbGxFcnJvcihkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdHZhciBiRXJyb3IgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgYkVycm9yLCAnZSddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbEVycm9yKGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOSk7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYpO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0RXJyb3IoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBiRXJyb3IgPSBkYXRhLnJlYWRfc2hpZnQoMSk7XG5cdHJldHVybiBbY2VsbCwgYkVycm9yLCAnZSddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0U2hvcnRFcnJvcihjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDgpO1xuXHR3cml0ZV9YTFNCU2hvcnRDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCgxLCBjZWxsLnYpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gbztcbn1cblxuXG4vKiBbTVMtWExTQl0gMi40LjMxMSBCcnRDZWxsSXNzdCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbElzc3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgaXNzdCA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0cmV0dXJuIFtjZWxsLCBpc3N0LCAncyddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbElzc3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCBuY2VsbC52KTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydElzc3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JTaG9ydENlbGwoZGF0YSk7XG5cdHZhciBpc3N0ID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRyZXR1cm4gW2NlbGwsIGlzc3QsICdzJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydElzc3QoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgbmNlbGwudik7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMxMyBCcnRDZWxsUmVhbCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJlYWwoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YbnVtKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnbiddO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0Q2VsbFJlYWwoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxNik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfWG51bShjZWxsLnYsIG8pO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHBhcnNlX0JydFNob3J0UmVhbChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWG51bShkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0UmVhbChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyKTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hudW0oY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzE0IEJydENlbGxSayAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJrKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfUmtOdW1iZXIoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICduJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsUmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxMik7XG5cdHdyaXRlX1hMU0JDZWxsKG5jZWxsLCBvKTtcblx0d3JpdGVfUmtOdW1iZXIoY2VsbC52LCBvKTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiBwYXJzZV9CcnRTaG9ydFJrKGRhdGEpIHtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCU2hvcnRDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9Sa051bWJlcihkYXRhKTtcblx0cmV0dXJuIFtjZWxsLCB2YWx1ZSwgJ24nXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydFNob3J0UmsoY2VsbCwgbmNlbGwsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1Zig4KTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1JrTnVtYmVyKGNlbGwudiwgbyk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMyMyBCcnRDZWxsUlN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q2VsbFJTdHJpbmcoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9SaWNoU3RyKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnaXMnXTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMTcgQnJ0Q2VsbFN0ICovXG5mdW5jdGlvbiBwYXJzZV9CcnRDZWxsU3QoZGF0YSkge1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHJldHVybiBbY2VsbCwgdmFsdWUsICdzdHInXTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydENlbGxTdChjZWxsLCBuY2VsbCwgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDEyICsgNCAqIGNlbGwudi5sZW5ndGgpO1xuXHR3cml0ZV9YTFNCQ2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhjZWxsLnYsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuZnVuY3Rpb24gcGFyc2VfQnJ0U2hvcnRTdChkYXRhKSB7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQlNob3J0Q2VsbChkYXRhKTtcblx0dmFyIHZhbHVlID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHRyZXR1cm4gW2NlbGwsIHZhbHVlLCAnc3RyJ107XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRTaG9ydFN0KGNlbGwsIG5jZWxsLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoOCArIDQgKiBjZWxsLnYubGVuZ3RoKTtcblx0d3JpdGVfWExTQlNob3J0Q2VsbChuY2VsbCwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhjZWxsLnYsIG8pO1xuXHRyZXR1cm4gby5sZW5ndGggPiBvLmwgPyBvLnNsaWNlKDAsIG8ubCkgOiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1MyBCcnRGbWxhQm9vbCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYUJvb2woZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdHZhciBjZWxsID0gcGFyc2VfWExTQkNlbGwoZGF0YSk7XG5cdGNlbGwuciA9IG9wdHNbJyFyb3cnXTtcblx0dmFyIHZhbHVlID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgbyA9IFtjZWxsLCB2YWx1ZSwgJ2InXTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdGRhdGEubCArPSAyO1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQkNlbGxQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1szXSA9IHN0cmluZ2lmeV9mb3JtdWxhKGZvcm11bGEsIG51bGwvKnJhbmdlKi8sIGNlbGwsIG9wdHMuc3VwYm9va3MsIG9wdHMpOy8qIFRPRE8gKi9cblx0fVxuXHRlbHNlIGRhdGEubCA9IGVuZDtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjU0IEJydEZtbGFFcnJvciAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYUVycm9yKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG8gPSBbY2VsbCwgdmFsdWUsICdlJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY1NSBCcnRGbWxhTnVtICovXG5mdW5jdGlvbiBwYXJzZV9CcnRGbWxhTnVtKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgY2VsbCA9IHBhcnNlX1hMU0JDZWxsKGRhdGEpO1xuXHRjZWxsLnIgPSBvcHRzWychcm93J107XG5cdHZhciB2YWx1ZSA9IHBhcnNlX1hudW0oZGF0YSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnbiddO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0ZGF0YS5sICs9IDI7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQ2VsbFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzNdID0gc3RyaW5naWZ5X2Zvcm11bGEoZm9ybXVsYSwgbnVsbC8qcmFuZ2UqLywgY2VsbCwgb3B0cy5zdXBib29rcywgb3B0cyk7LyogVE9ETyAqL1xuXHR9XG5cdGVsc2UgZGF0YS5sID0gZW5kO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NTYgQnJ0Rm1sYVN0cmluZyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Rm1sYVN0cmluZyhkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIGNlbGwgPSBwYXJzZV9YTFNCQ2VsbChkYXRhKTtcblx0Y2VsbC5yID0gb3B0c1snIXJvdyddO1xuXHR2YXIgdmFsdWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdHZhciBvID0gW2NlbGwsIHZhbHVlLCAnc3RyJ107XG5cdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRkYXRhLmwgKz0gMjtcblx0XHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYShkYXRhLCBlbmQgLSBkYXRhLmwsIG9wdHMpO1xuXHRcdG9bM10gPSBzdHJpbmdpZnlfZm9ybXVsYShmb3JtdWxhLCBudWxsLypyYW5nZSovLCBjZWxsLCBvcHRzLnN1cGJvb2tzLCBvcHRzKTsvKiBUT0RPICovXG5cdH1cblx0ZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjY4MiBCcnRNZXJnZUNlbGwgKi9cbnZhciBwYXJzZV9CcnRNZXJnZUNlbGwgPSBwYXJzZV9VbmNoZWNrZWRSZlg7XG52YXIgd3JpdGVfQnJ0TWVyZ2VDZWxsID0gd3JpdGVfVW5jaGVja2VkUmZYO1xuLyogW01TLVhMU0JdIDIuNC4xMDcgQnJ0QmVnaW5NZXJnZUNlbGxzICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCZWdpbk1lcmdlQ2VsbHMoY250LCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgY250KTtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjYyIEJydEhMaW5rICovXG5mdW5jdGlvbiBwYXJzZV9CcnRITGluayhkYXRhLCBsZW5ndGgvKjo6LCBvcHRzKi8pIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIHJmeCA9IHBhcnNlX1VuY2hlY2tlZFJmWChkYXRhLCAxNik7XG5cdHZhciByZWxJZCA9IHBhcnNlX1hMTnVsbGFibGVXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgbG9jID0gcGFyc2VfWExXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgdG9vbHRpcCA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0dmFyIGRpc3BsYXkgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSk7XG5cdGRhdGEubCA9IGVuZDtcblx0dmFyIG8gPSAoe3JmeDpyZngsIHJlbElkOnJlbElkLCBsb2M6bG9jLCBkaXNwbGF5OmRpc3BsYXl9Lyo6YW55Ki8pO1xuXHRpZih0b29sdGlwKSBvLlRvb2x0aXAgPSB0b29sdGlwO1xuXHRyZXR1cm4gbztcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEhMaW5rKGwsIHJJZCkge1xuXHR2YXIgbyA9IG5ld19idWYoNTArNCoobFsxXS5UYXJnZXQubGVuZ3RoICsgKGxbMV0uVG9vbHRpcCB8fCBcIlwiKS5sZW5ndGgpKTtcblx0d3JpdGVfVW5jaGVja2VkUmZYKHtzOmRlY29kZV9jZWxsKGxbMF0pLCBlOmRlY29kZV9jZWxsKGxbMF0pfSwgbyk7XG5cdHdyaXRlX1JlbElEKFwicklkXCIgKyBySWQsIG8pO1xuXHR2YXIgbG9jaWR4ID0gbFsxXS5UYXJnZXQuaW5kZXhPZihcIiNcIik7XG5cdHZhciBsb2MgPSBsb2NpZHggPT0gLTEgPyBcIlwiIDogbFsxXS5UYXJnZXQuc2xpY2UobG9jaWR4KzEpO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcobG9jIHx8IFwiXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcobFsxXS5Ub29sdGlwIHx8IFwiXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoXCJcIiwgbyk7XG5cdHJldHVybiBvLnNsaWNlKDAsIG8ubCk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjkyIEJydFBhbmUgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydFBhbmUoLypkYXRhLCBsZW5ndGgsIG9wdHMqLykge1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjYgQnJ0QXJyRm1sYSAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QXJyRm1sYShkYXRhLCBsZW5ndGgsIG9wdHMpIHtcblx0dmFyIGVuZCA9IGRhdGEubCArIGxlbmd0aDtcblx0dmFyIHJmeCA9IHBhcnNlX1JmWChkYXRhLCAxNik7XG5cdHZhciBmQWx3YXlzQ2FsYyA9IGRhdGEucmVhZF9zaGlmdCgxKTtcblx0dmFyIG8gPSBbcmZ4XTsgb1syXSA9IGZBbHdheXNDYWxjO1xuXHRpZihvcHRzLmNlbGxGb3JtdWxhKSB7XG5cdFx0dmFyIGZvcm11bGEgPSBwYXJzZV9YTFNCQXJyYXlQYXJzZWRGb3JtdWxhKGRhdGEsIGVuZCAtIGRhdGEubCwgb3B0cyk7XG5cdFx0b1sxXSA9IGZvcm11bGE7XG5cdH0gZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40Ljc1MCBCcnRTaHJGbWxhICovXG5mdW5jdGlvbiBwYXJzZV9CcnRTaHJGbWxhKGRhdGEsIGxlbmd0aCwgb3B0cykge1xuXHR2YXIgZW5kID0gZGF0YS5sICsgbGVuZ3RoO1xuXHR2YXIgcmZ4ID0gcGFyc2VfVW5jaGVja2VkUmZYKGRhdGEsIDE2KTtcblx0dmFyIG8gPSBbcmZ4XTtcblx0aWYob3B0cy5jZWxsRm9ybXVsYSkge1xuXHRcdHZhciBmb3JtdWxhID0gcGFyc2VfWExTQlNoYXJlZFBhcnNlZEZvcm11bGEoZGF0YSwgZW5kIC0gZGF0YS5sLCBvcHRzKTtcblx0XHRvWzFdID0gZm9ybXVsYTtcblx0XHRkYXRhLmwgPSBlbmQ7XG5cdH0gZWxzZSBkYXRhLmwgPSBlbmQ7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjMyMyBCcnRDb2xJbmZvICovXG4vKiBUT0RPOiBvbmNlIFhMUyBDb2xJbmZvIGlzIHNldCwgY29tYmluZSB0aGUgZnVuY3Rpb25zICovXG5mdW5jdGlvbiB3cml0ZV9CcnRDb2xJbmZvKEMvKjpudW1iZXIqLywgY29sLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoMTgpO1xuXHR2YXIgcCA9IGNvbF9vYmpfdyhDLCBjb2wpO1xuXHRvLndyaXRlX3NoaWZ0KC00LCBDKTtcblx0by53cml0ZV9zaGlmdCgtNCwgQyk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgKHAud2lkdGggfHwgMTApICogMjU2KTtcblx0by53cml0ZV9zaGlmdCg0LCAwLyppeGZlKi8pOyAvLyBzdHlsZVxuXHR2YXIgZmxhZ3MgPSAwO1xuXHRpZihjb2wuaGlkZGVuKSBmbGFncyB8PSAweDAxO1xuXHRpZih0eXBlb2YgcC53aWR0aCA9PSAnbnVtYmVyJykgZmxhZ3MgfD0gMHgwMjtcblx0aWYoY29sLmxldmVsKSBmbGFncyB8PSAoY29sLmxldmVsIDw8IDgpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIGZsYWdzKTsgLy8gYml0IGZsYWdcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjc4IEJydE1hcmdpbnMgKi9cbnZhciBCcnRNYXJnaW5LZXlzID0gW1wibGVmdFwiLFwicmlnaHRcIixcInRvcFwiLFwiYm90dG9tXCIsXCJoZWFkZXJcIixcImZvb3RlclwiXTtcbmZ1bmN0aW9uIHBhcnNlX0JydE1hcmdpbnMoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKS8qOk1hcmdpbnMqLyB7XG5cdHZhciBtYXJnaW5zID0gKHt9Lyo6YW55Ki8pO1xuXHRCcnRNYXJnaW5LZXlzLmZvckVhY2goZnVuY3Rpb24oaykgeyBtYXJnaW5zW2tdID0gcGFyc2VfWG51bShkYXRhLCA4KTsgfSk7XG5cdHJldHVybiBtYXJnaW5zO1xufVxuZnVuY3Rpb24gd3JpdGVfQnJ0TWFyZ2lucyhtYXJnaW5zLyo6TWFyZ2lucyovLCBvKSB7XG5cdGlmKG8gPT0gbnVsbCkgbyA9IG5ld19idWYoNio4KTtcblx0ZGVmYXVsdF9tYXJnaW5zKG1hcmdpbnMpO1xuXHRCcnRNYXJnaW5LZXlzLmZvckVhY2goZnVuY3Rpb24oaykgeyB3cml0ZV9YbnVtKChtYXJnaW5zLyo6YW55Ki8pW2tdLCBvKTsgfSk7XG5cdHJldHVybiBvO1xufVxuXG4vKiBbTVMtWExTQl0gMi40LjI5OSBCcnRCZWdpbldzVmlldyAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QmVnaW5Xc1ZpZXcoZGF0YS8qOjosIGxlbmd0aCwgb3B0cyovKSB7XG5cdHZhciBmID0gZGF0YS5yZWFkX3NoaWZ0KDIpO1xuXHRkYXRhLmwgKz0gMjg7XG5cdHJldHVybiB7IFJUTDogZiAmIDB4MjAgfTtcbn1cbmZ1bmN0aW9uIHdyaXRlX0JydEJlZ2luV3NWaWV3KHdzLCBXb3JrYm9vaywgbykge1xuXHRpZihvID09IG51bGwpIG8gPSBuZXdfYnVmKDMwKTtcblx0dmFyIGYgPSAweDM5Yztcblx0aWYoKCgoV29ya2Jvb2t8fHt9KS5WaWV3c3x8W10pWzBdfHx7fSkuUlRMKSBmIHw9IDB4MjA7XG5cdG8ud3JpdGVfc2hpZnQoMiwgZik7IC8vIGJpdCBmbGFnXG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8vIHZpZXcgZmlyc3Qgcm93XG5cdG8ud3JpdGVfc2hpZnQoNCwgMCk7IC8vIHZpZXcgZmlyc3QgY29sXG5cdG8ud3JpdGVfc2hpZnQoMSwgMCk7IC8vIGdyaWRsaW5lIGNvbG9yIElDVlxuXHRvLndyaXRlX3NoaWZ0KDEsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEwMCk7IC8vIHpvb20gc2NhbGVcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAwKTsgLy8gd29ya2Jvb2sgdmlldyBpZFxuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC4zMDkgQnJ0Q2VsbElnbm9yZUVDICovXG5mdW5jdGlvbiB3cml0ZV9CcnRDZWxsSWdub3JlRUMocmVmKSB7XG5cdHZhciBvID0gbmV3X2J1ZigyNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgNCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMSk7XG5cdHdyaXRlX1VuY2hlY2tlZFJmWChyZWYsIG8pO1xuXHRyZXR1cm4gbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC43NDggQnJ0U2hlZXRQcm90ZWN0aW9uICovXG5mdW5jdGlvbiB3cml0ZV9CcnRTaGVldFByb3RlY3Rpb24oc3AsIG8pIHtcblx0aWYobyA9PSBudWxsKSBvID0gbmV3X2J1ZigxNio0KzIpO1xuXHRvLndyaXRlX3NoaWZ0KDIsIHNwLnBhc3N3b3JkID8gY3J5cHRvX0NyZWF0ZVBhc3N3b3JkVmVyaWZpZXJfTWV0aG9kMShzcC5wYXNzd29yZCkgOiAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAxKTsgLy8gdGhpcyByZWNvcmQgc2hvdWxkIG5vdCBiZSB3cml0dGVuIGlmIG5vIHByb3RlY3Rpb25cblx0W1xuXHRcdFtcIm9iamVjdHNcIiwgICAgICAgICAgICAgZmFsc2VdLCAvLyBmT2JqZWN0c1xuXHRcdFtcInNjZW5hcmlvc1wiLCAgICAgICAgICAgZmFsc2VdLCAvLyBmU2NlbmFyaW9zXG5cdFx0W1wiZm9ybWF0Q2VsbHNcIiwgICAgICAgICAgdHJ1ZV0sIC8vIGZGb3JtYXRDZWxsc1xuXHRcdFtcImZvcm1hdENvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmRm9ybWF0Q29sdW1uc1xuXHRcdFtcImZvcm1hdFJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmRm9ybWF0Um93c1xuXHRcdFtcImluc2VydENvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmSW5zZXJ0Q29sdW1uc1xuXHRcdFtcImluc2VydFJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmSW5zZXJ0Um93c1xuXHRcdFtcImluc2VydEh5cGVybGlua3NcIiwgICAgIHRydWVdLCAvLyBmSW5zZXJ0SHlwZXJsaW5rc1xuXHRcdFtcImRlbGV0ZUNvbHVtbnNcIiwgICAgICAgIHRydWVdLCAvLyBmRGVsZXRlQ29sdW1uc1xuXHRcdFtcImRlbGV0ZVJvd3NcIiwgICAgICAgICAgIHRydWVdLCAvLyBmRGVsZXRlUm93c1xuXHRcdFtcInNlbGVjdExvY2tlZENlbGxzXCIsICAgZmFsc2VdLCAvLyBmU2VsTG9ja2VkQ2VsbHNcblx0XHRbXCJzb3J0XCIsICAgICAgICAgICAgICAgICB0cnVlXSwgLy8gZlNvcnRcblx0XHRbXCJhdXRvRmlsdGVyXCIsICAgICAgICAgICB0cnVlXSwgLy8gZkF1dG9GaWx0ZXJcblx0XHRbXCJwaXZvdFRhYmxlc1wiLCAgICAgICAgICB0cnVlXSwgLy8gZlBpdm90VGFibGVzXG5cdFx0W1wic2VsZWN0VW5sb2NrZWRDZWxsc1wiLCBmYWxzZV0gIC8vIGZTZWxVbmxvY2tlZENlbGxzXG5cdF0uZm9yRWFjaChmdW5jdGlvbihuKSB7XG5cdFx0Lyo6OiBpZihvID09IG51bGwpIHRocm93IFwidW5yZWFjaGFibGVcIjsgKi9cblx0XHRpZihuWzFdKSBvLndyaXRlX3NoaWZ0KDQsIHNwW25bMF1dICE9IG51bGwgJiYgIXNwW25bMF1dID8gMSA6IDApO1xuXHRcdGVsc2UgICAgICBvLndyaXRlX3NoaWZ0KDQsIHNwW25bMF1dICE9IG51bGwgJiYgc3BbblswXV0gPyAwIDogMSk7XG5cdH0pO1xuXHRyZXR1cm4gbztcbn1cblxuZnVuY3Rpb24gcGFyc2VfQnJ0RFZhbCgvKmRhdGEsIGxlbmd0aCwgb3B0cyovKSB7XG59XG5mdW5jdGlvbiBwYXJzZV9CcnREVmFsMTQoLypkYXRhLCBsZW5ndGgsIG9wdHMqLykge1xufVxuLyogW01TLVhMU0JdIDIuMS43LjYxIFdvcmtzaGVldCAqL1xuZnVuY3Rpb24gcGFyc2Vfd3NfYmluKGRhdGEsIF9vcHRzLCBpZHgsIHJlbHMsIHdiLyo6V0JXQlByb3BzKi8sIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYoIWRhdGEpIHJldHVybiBkYXRhO1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRpZighcmVscykgcmVscyA9IHsnIWlkJzp7fX07XG5cdGlmKERFTlNFICE9IG51bGwgJiYgb3B0cy5kZW5zZSA9PSBudWxsKSBvcHRzLmRlbnNlID0gREVOU0U7XG5cdHZhciBzLyo6V29ya3NoZWV0Ki8gPSAob3B0cy5kZW5zZSA/IFtdIDoge30pO1xuXG5cdHZhciByZWY7XG5cdHZhciByZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2UsIGVuZCA9IGZhbHNlO1xuXHR2YXIgcm93LCBwLCBjZiwgUiwgQywgYWRkciwgc3N0ciwgcnIsIGNlbGwvKjpDZWxsKi87XG5cdHZhciBtZXJnZXMvKjpBcnJheTxSYW5nZT4qLyA9IFtdO1xuXHRvcHRzLmJpZmYgPSAxMjtcblx0b3B0c1snIXJvdyddID0gMDtcblxuXHR2YXIgYWkgPSAwLCBhZiA9IGZhbHNlO1xuXG5cdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0dmFyIHNoYXJlZGYgPSB7fTtcblx0dmFyIHN1cGJvb2tzID0gb3B0cy5zdXBib29rcyB8fCAvKjo6KCovd2IvKjo6IDphbnkpKi8uc3VwYm9va3MgfHwgKFtbXV0vKjphbnkqLyk7XG5cdHN1cGJvb2tzLnNoYXJlZGYgPSBzaGFyZWRmO1xuXHRzdXBib29rcy5hcnJheWYgPSBhcnJheWY7XG5cdHN1cGJvb2tzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzIHx8IHdiLlNoZWV0cy5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5uYW1lOyB9KTtcblx0aWYoIW9wdHMuc3VwYm9va3MpIHtcblx0XHRvcHRzLnN1cGJvb2tzID0gc3VwYm9va3M7XG5cdFx0aWYod2IuTmFtZXMpIGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5OYW1lcy5sZW5ndGg7ICsraSkgc3VwYm9va3NbMF1baSsxXSA9IHdiLk5hbWVzW2ldO1xuXHR9XG5cblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gW10sIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW107XG5cdHZhciBzZWVuY29sID0gZmFsc2U7XG5cblx0WExTQlJlY29yZEVudW1bMHgwMDEwXSA9IHsgbjpcIkJydFNob3J0UmVhbFwiLCBmOnBhcnNlX0JydFNob3J0UmVhbCB9O1xuXG5cdHZhciBjbSwgdm07XG5cblx0cmVjb3JkaG9wcGVyKGRhdGEsIGZ1bmN0aW9uIHdzX3BhcnNlKHZhbCwgUlIsIFJUKSB7XG5cdFx0aWYoZW5kKSByZXR1cm47XG5cdFx0c3dpdGNoKFJUKSB7XG5cdFx0XHRjYXNlIDB4MDA5NDogLyogJ0JydFdzRGltJyAqL1xuXHRcdFx0XHRyZWYgPSB2YWw7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMDA6IC8qICdCcnRSb3dIZHInICovXG5cdFx0XHRcdHJvdyA9IHZhbDtcblx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gcm93LnIpIGVuZD10cnVlO1xuXHRcdFx0XHRyciA9IGVuY29kZV9yb3coUiA9IHJvdy5yKTtcblx0XHRcdFx0b3B0c1snIXJvdyddID0gcm93LnI7XG5cdFx0XHRcdGlmKHZhbC5oaWRkZW4gfHwgdmFsLmhwdCB8fCB2YWwubGV2ZWwgIT0gbnVsbCkge1xuXHRcdFx0XHRcdGlmKHZhbC5ocHQpIHZhbC5ocHggPSBwdDJweCh2YWwuaHB0KTtcblx0XHRcdFx0XHRyb3dpbmZvW3ZhbC5yXSA9IHZhbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMDI6IC8qICdCcnRDZWxsUmsnICovXG5cdFx0XHRjYXNlIDB4MDAwMzogLyogJ0JydENlbGxFcnJvcicgKi9cblx0XHRcdGNhc2UgMHgwMDA0OiAvKiAnQnJ0Q2VsbEJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDAwNTogLyogJ0JydENlbGxSZWFsJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDY6IC8qICdCcnRDZWxsU3QnICovXG5cdFx0XHRjYXNlIDB4MDAwNzogLyogJ0JydENlbGxJc3N0JyAqL1xuXHRcdFx0Y2FzZSAweDAwMDg6IC8qICdCcnRGbWxhU3RyaW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAwMDk6IC8qICdCcnRGbWxhTnVtJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEE6IC8qICdCcnRGbWxhQm9vbCcgKi9cblx0XHRcdGNhc2UgMHgwMDBCOiAvKiAnQnJ0Rm1sYUVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEQ6IC8qICdCcnRTaG9ydFJrJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEU6IC8qICdCcnRTaG9ydEVycm9yJyAqL1xuXHRcdFx0Y2FzZSAweDAwMEY6IC8qICdCcnRTaG9ydEJvb2wnICovXG5cdFx0XHRjYXNlIDB4MDAxMDogLyogJ0JydFNob3J0UmVhbCcgKi9cblx0XHRcdGNhc2UgMHgwMDExOiAvKiAnQnJ0U2hvcnRTdCcgKi9cblx0XHRcdGNhc2UgMHgwMDEyOiAvKiAnQnJ0U2hvcnRJc3N0JyAqL1xuXHRcdFx0Y2FzZSAweDAwM0U6IC8qICdCcnRDZWxsUlN0cmluZycgKi9cblx0XHRcdFx0cCA9ICh7dDp2YWxbMl19Lyo6YW55Ki8pO1xuXHRcdFx0XHRzd2l0Y2godmFsWzJdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbic6IHAudiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncyc6IHNzdHIgPSBzdHJzW3ZhbFsxXV07IHAudiA9IHNzdHIudDsgcC5yID0gc3N0ci5yOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdiJzogcC52ID0gdmFsWzFdID8gdHJ1ZSA6IGZhbHNlOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlJzogcC52ID0gdmFsWzFdOyBpZihvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgcC53ID0gQkVycltwLnZdOyBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdHInOiBwLnQgPSAncyc7IHAudiA9IHZhbFsxXTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXMnOiBwLnQgPSAncyc7IHAudiA9IHZhbFsxXS50OyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZigoY2YgPSBzdHlsZXMuQ2VsbFhmW3ZhbFswXS5pU3R5bGVSZWZdKSkgc2FmZV9mb3JtYXQocCxjZi5udW1GbXRJZCxudWxsLG9wdHMsIHRoZW1lcywgc3R5bGVzKTtcblx0XHRcdFx0QyA9IHZhbFswXS5jID09IC0xID8gQyArIDEgOiB2YWxbMF0uYztcblx0XHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighc1tSXSkgc1tSXSA9IFtdOyBzW1JdW0NdID0gcDsgfVxuXHRcdFx0XHRlbHNlIHNbZW5jb2RlX2NvbChDKSArIHJyXSA9IHA7XG5cdFx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRhZiA9IGZhbHNlO1xuXHRcdFx0XHRcdGZvcihhaSA9IDA7IGFpIDwgYXJyYXlmLmxlbmd0aDsgKythaSkge1xuXHRcdFx0XHRcdFx0dmFyIGFpaSA9IGFycmF5ZlthaV07XG5cdFx0XHRcdFx0XHRpZihyb3cuciA+PSBhaWlbMF0ucy5yICYmIHJvdy5yIDw9IGFpaVswXS5lLnIpXG5cdFx0XHRcdFx0XHRcdGlmKEMgPj0gYWlpWzBdLnMuYyAmJiBDIDw9IGFpaVswXS5lLmMpIHtcblx0XHRcdFx0XHRcdFx0XHRwLkYgPSBlbmNvZGVfcmFuZ2UoYWlpWzBdKTsgYWYgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKCFhZiAmJiB2YWwubGVuZ3RoID4gMykgcC5mID0gdmFsWzNdO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5yID4gcm93LnIpIHJlZmd1ZXNzLnMuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5zLmMgPiBDKSByZWZndWVzcy5zLmMgPSBDO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLnIgPCByb3cucikgcmVmZ3Vlc3MuZS5yID0gcm93LnI7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLmUuYyA8IEMpIHJlZmd1ZXNzLmUuYyA9IEM7XG5cdFx0XHRcdGlmKG9wdHMuY2VsbERhdGVzICYmIGNmICYmIHAudCA9PSAnbicgJiYgZm10X2lzX2RhdGUodGFibGVfZm10W2NmLm51bUZtdElkXSkpIHtcblx0XHRcdFx0XHR2YXIgX2QgPSBTU0ZfcGFyc2VfZGF0ZV9jb2RlKHAudik7IGlmKF9kKSB7IHAudCA9ICdkJzsgcC52ID0gbmV3IERhdGUoX2QueSwgX2QubS0xLF9kLmQsX2QuSCxfZC5NLF9kLlMsX2QudSk7IH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjbSkge1xuXHRcdFx0XHRcdGlmKGNtLnR5cGUgPT0gJ1hMREFQUicpIHAuRCA9IHRydWU7XG5cdFx0XHRcdFx0Y20gPSB2b2lkIDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodm0pIHZtID0gdm9pZCAwO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMDE6IC8qICdCcnRDZWxsQmxhbmsnICovXG5cdFx0XHRjYXNlIDB4MDAwQzogLyogJ0JydFNob3J0QmxhbmsnICovXG5cdFx0XHRcdGlmKCFvcHRzLnNoZWV0U3R1YnMgfHwgcGFzcykgYnJlYWs7XG5cdFx0XHRcdHAgPSAoe3Q6J3onLHY6dm9pZCAwfS8qOmFueSovKTtcblx0XHRcdFx0QyA9IHZhbFswXS5jID09IC0xID8gQyArIDEgOiB2YWxbMF0uYztcblx0XHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighc1tSXSkgc1tSXSA9IFtdOyBzW1JdW0NdID0gcDsgfVxuXHRcdFx0XHRlbHNlIHNbZW5jb2RlX2NvbChDKSArIHJyXSA9IHA7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuciA+IHJvdy5yKSByZWZndWVzcy5zLnIgPSByb3cucjtcblx0XHRcdFx0aWYocmVmZ3Vlc3Mucy5jID4gQykgcmVmZ3Vlc3Mucy5jID0gQztcblx0XHRcdFx0aWYocmVmZ3Vlc3MuZS5yIDwgcm93LnIpIHJlZmd1ZXNzLmUuciA9IHJvdy5yO1xuXHRcdFx0XHRpZihyZWZndWVzcy5lLmMgPCBDKSByZWZndWVzcy5lLmMgPSBDO1xuXHRcdFx0XHRpZihjbSkge1xuXHRcdFx0XHRcdGlmKGNtLnR5cGUgPT0gJ1hMREFQUicpIHAuRCA9IHRydWU7XG5cdFx0XHRcdFx0Y20gPSB2b2lkIDA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYodm0pIHZtID0gdm9pZCAwO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwQjA6IC8qICdCcnRNZXJnZUNlbGwnICovXG5cdFx0XHRcdG1lcmdlcy5wdXNoKHZhbCk7IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAzMTogeyAvKiAnQnJ0Q2VsbE1ldGEnICovXG5cdFx0XHRcdGNtID0gKChvcHRzLnhsbWV0YXx8e30pLkNlbGx8fFtdKVt2YWwtMV07XG5cdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFFRTogLyogJ0JydEhMaW5rJyAqL1xuXHRcdFx0XHR2YXIgcmVsID0gcmVsc1snIWlkJ11bdmFsLnJlbElkXTtcblx0XHRcdFx0aWYocmVsKSB7XG5cdFx0XHRcdFx0dmFsLlRhcmdldCA9IHJlbC5UYXJnZXQ7XG5cdFx0XHRcdFx0aWYodmFsLmxvYykgdmFsLlRhcmdldCArPSBcIiNcIit2YWwubG9jO1xuXHRcdFx0XHRcdHZhbC5SZWwgPSByZWw7XG5cdFx0XHRcdH0gZWxzZSBpZih2YWwucmVsSWQgPT0gJycpIHtcblx0XHRcdFx0XHR2YWwuVGFyZ2V0ID0gXCIjXCIgKyB2YWwubG9jO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGZvcihSPXZhbC5yZngucy5yO1I8PXZhbC5yZnguZS5yOysrUikgZm9yKEM9dmFsLnJmeC5zLmM7Qzw9dmFsLnJmeC5lLmM7KytDKSB7XG5cdFx0XHRcdFx0aWYob3B0cy5kZW5zZSkge1xuXHRcdFx0XHRcdFx0aWYoIXNbUl0pIHNbUl0gPSBbXTtcblx0XHRcdFx0XHRcdGlmKCFzW1JdW0NdKSBzW1JdW0NdID0ge3Q6J3onLHY6dW5kZWZpbmVkfTtcblx0XHRcdFx0XHRcdHNbUl1bQ10ubCA9IHZhbDtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0YWRkciA9IGVuY29kZV9jZWxsKHtjOkMscjpSfSk7XG5cdFx0XHRcdFx0XHRpZighc1thZGRyXSkgc1thZGRyXSA9IHt0Oid6Jyx2OnVuZGVmaW5lZH07XG5cdFx0XHRcdFx0XHRzW2FkZHJdLmwgPSB2YWw7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDFBQTogLyogJ0JydEFyckZtbGEnICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxGb3JtdWxhKSBicmVhaztcblx0XHRcdFx0YXJyYXlmLnB1c2godmFsKTtcblx0XHRcdFx0Y2VsbCA9ICgob3B0cy5kZW5zZSA/IHNbUl1bQ10gOiBzW2VuY29kZV9jb2woQykgKyBycl0pLyo6YW55Ki8pO1xuXHRcdFx0XHRjZWxsLmYgPSBzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMV0sIHJlZmd1ZXNzLCB7cjpyb3cuciwgYzpDfSwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRjZWxsLkYgPSBlbmNvZGVfcmFuZ2UodmFsWzBdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDFBQjogLyogJ0JydFNockZtbGEnICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxGb3JtdWxhKSBicmVhaztcblx0XHRcdFx0c2hhcmVkZltlbmNvZGVfY2VsbCh2YWxbMF0ucyldID0gdmFsWzFdO1xuXHRcdFx0XHRjZWxsID0gKG9wdHMuZGVuc2UgPyBzW1JdW0NdIDogc1tlbmNvZGVfY29sKEMpICsgcnJdKTtcblx0XHRcdFx0Y2VsbC5mID0gc3RyaW5naWZ5X2Zvcm11bGEodmFsWzFdLCByZWZndWVzcywge3I6cm93LnIsIGM6Q30sIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGlkZW50aWNhbCB0byAnQ29sSW5mbycgaW4gWExTICovXG5cdFx0XHRjYXNlIDB4MDAzQzogLyogJ0JydENvbEluZm8nICovXG5cdFx0XHRcdGlmKCFvcHRzLmNlbGxTdHlsZXMpIGJyZWFrO1xuXHRcdFx0XHR3aGlsZSh2YWwuZSA+PSB2YWwucykge1xuXHRcdFx0XHRcdGNvbGluZm9bdmFsLmUtLV0gPSB7IHdpZHRoOiB2YWwudy8yNTYsIGhpZGRlbjogISEodmFsLmZsYWdzICYgMHgwMSksIGxldmVsOiB2YWwubGV2ZWwgfTtcblx0XHRcdFx0XHRpZighc2VlbmNvbCkgeyBzZWVuY29sID0gdHJ1ZTsgZmluZF9tZHdfY29sdyh2YWwudy8yNTYpOyB9XG5cdFx0XHRcdFx0cHJvY2Vzc19jb2woY29saW5mb1t2YWwuZSsxXSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMEExOiAvKiAnQnJ0QmVnaW5BRmlsdGVyJyAqL1xuXHRcdFx0XHRzWychYXV0b2ZpbHRlciddID0geyByZWY6ZW5jb2RlX3JhbmdlKHZhbCkgfTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMURDOiAvKiAnQnJ0TWFyZ2lucycgKi9cblx0XHRcdFx0c1snIW1hcmdpbnMnXSA9IHZhbDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDkzOiAvKiAnQnJ0V3NQcm9wJyAqL1xuXHRcdFx0XHRpZighd2IuU2hlZXRzW2lkeF0pIHdiLlNoZWV0c1tpZHhdID0ge307XG5cdFx0XHRcdGlmKHZhbC5uYW1lKSB3Yi5TaGVldHNbaWR4XS5Db2RlTmFtZSA9IHZhbC5uYW1lO1xuXHRcdFx0XHRpZih2YWwuYWJvdmUgfHwgdmFsLmxlZnQpIHNbJyFvdXRsaW5lJ10gPSB7IGFib3ZlOiB2YWwuYWJvdmUsIGxlZnQ6IHZhbC5sZWZ0IH07XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA4OTogLyogJ0JydEJlZ2luV3NWaWV3JyAqL1xuXHRcdFx0XHRpZighd2IuVmlld3MpIHdiLlZpZXdzID0gW3t9XTtcblx0XHRcdFx0aWYoIXdiLlZpZXdzWzBdKSB3Yi5WaWV3c1swXSA9IHt9O1xuXHRcdFx0XHRpZih2YWwuUlRMKSB3Yi5WaWV3c1swXS5SVEwgPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAxRTU6IC8qICdCcnRXc0ZtdEluZm8nICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDA0MDogLyogJ0JydERWYWwnICovXG5cdFx0XHRjYXNlIDB4MDQxRDogLyogJ0JydERWYWwxNCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDk3OiAvKiAnQnJ0UGFuZScgKi9cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDA5ODogLyogJ0JydFNlbCcgKi9cblx0XHRcdGNhc2UgMHgwMEFGOiAvKiAnQnJ0QUZpbHRlckRhdGVHcm91cEl0ZW0nICovXG5cdFx0XHRjYXNlIDB4MDI4NDogLyogJ0JydEFjdGl2ZVgnICovXG5cdFx0XHRjYXNlIDB4MDI3MTogLyogJ0JydEJpZ05hbWUnICovXG5cdFx0XHRjYXNlIDB4MDIzMjogLyogJ0JydEJrSGltJyAqL1xuXHRcdFx0Y2FzZSAweDAxOEM6IC8qICdCcnRCcmsnICovXG5cdFx0XHRjYXNlIDB4MDQ1ODogLyogJ0JydENGSWNvbicgKi9cblx0XHRcdGNhc2UgMHgwNDdBOiAvKiAnQnJ0Q0ZSdWxlRXh0JyAqL1xuXHRcdFx0Y2FzZSAweDAxRDc6IC8qICdCcnRDRlZPJyAqL1xuXHRcdFx0Y2FzZSAweDA0MUE6IC8qICdCcnRDRlZPMTQnICovXG5cdFx0XHRjYXNlIDB4MDI4OTogLyogJ0JydENlbGxJZ25vcmVFQycgKi9cblx0XHRcdGNhc2UgMHgwNDUxOiAvKiAnQnJ0Q2VsbElnbm9yZUVDMTQnICovXG5cdFx0XHRjYXNlIDB4MDI0RDogLyogJ0JydENlbGxTbWFydFRhZ1Byb3BlcnR5JyAqL1xuXHRcdFx0Y2FzZSAweDAyNUY6IC8qICdCcnRDZWxsV2F0Y2gnICovXG5cdFx0XHRjYXNlIDB4MDIzNDogLyogJ0JydENvbG9yJyAqL1xuXHRcdFx0Y2FzZSAweDA0MUY6IC8qICdCcnRDb2xvcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAwQTg6IC8qICdCcnRDb2xvckZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwMEFFOiAvKiAnQnJ0Q3VzdG9tRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDA0OUM6IC8qICdCcnRDdXN0b21GaWx0ZXIxNCcgKi9cblx0XHRcdGNhc2UgMHgwMUYzOiAvKiAnQnJ0RFJlZicgKi9cblx0XHRcdGNhc2UgMHgwMUZCOiAvKiAnQnJ0RFhGJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjY6IC8qICdCcnREcmF3aW5nJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUI6IC8qICdCcnREeW5hbWljRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDAwQTc6IC8qICdCcnRGaWx0ZXInICovXG5cdFx0XHRjYXNlIDB4MDQ5OTogLyogJ0JydEZpbHRlcjE0JyAqL1xuXHRcdFx0Y2FzZSAweDAwQTk6IC8qICdCcnRJY29uRmlsdGVyJyAqL1xuXHRcdFx0Y2FzZSAweDA0OUQ6IC8qICdCcnRJY29uRmlsdGVyMTQnICovXG5cdFx0XHRjYXNlIDB4MDIyNzogLyogJ0JydExlZ2FjeURyYXdpbmcnICovXG5cdFx0XHRjYXNlIDB4MDIyODogLyogJ0JydExlZ2FjeURyYXdpbmdIRicgKi9cblx0XHRcdGNhc2UgMHgwMjk1OiAvKiAnQnJ0TGlzdFBhcnQnICovXG5cdFx0XHRjYXNlIDB4MDI3RjogLyogJ0JydE9sZU9iamVjdCcgKi9cblx0XHRcdGNhc2UgMHgwMURFOiAvKiAnQnJ0UGFnZVNldHVwJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTk6IC8qICdCcnRQaG9uZXRpY0luZm8nICovXG5cdFx0XHRjYXNlIDB4MDFERDogLyogJ0JydFByaW50T3B0aW9ucycgKi9cblx0XHRcdGNhc2UgMHgwMjE4OiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDA0NEY6IC8qICdCcnRSYW5nZVByb3RlY3Rpb24xNCcgKi9cblx0XHRcdGNhc2UgMHgwMkE4OiAvKiAnQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvJyAqL1xuXHRcdFx0Y2FzZSAweDA0NTA6IC8qICdCcnRSYW5nZVByb3RlY3Rpb25Jc28xNCcgKi9cblx0XHRcdGNhc2UgMHgwNDAwOiAvKiAnQnJ0UndEZXNjZW50JyAqL1xuXHRcdFx0Y2FzZSAweDAyOTc6IC8qICdCcnRTaGVldENhbGNQcm9wJyAqL1xuXHRcdFx0Y2FzZSAweDAyMTc6IC8qICdCcnRTaGVldFByb3RlY3Rpb24nICovXG5cdFx0XHRjYXNlIDB4MDJBNjogLyogJ0JydFNoZWV0UHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwMUY4OiAvKiAnQnJ0U2xjJyAqL1xuXHRcdFx0Y2FzZSAweDA0MTM6IC8qICdCcnRTcGFya2xpbmUnICovXG5cdFx0XHRjYXNlIDB4MDFBQzogLyogJ0JydFRhYmxlJyAqL1xuXHRcdFx0Y2FzZSAweDAwQUE6IC8qICdCcnRUb3AxMEZpbHRlcicgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0Y2FzZSAweDAwMzI6IC8qICdCcnRWYWx1ZU1ldGEnICovXG5cdFx0XHRjYXNlIDB4MDgxNjogLyogJ0JydFdlYkV4dGVuc2lvbicgKi9cblx0XHRcdGNhc2UgMHgwNDE1OiAvKiAnQnJ0V3NGbXRJbmZvRXgxNCcgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDIzOiAvKiAnQnJ0RlJUQmVnaW4nICovXG5cdFx0XHRcdHBhc3MgPSB0cnVlOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI0OiAvKiAnQnJ0RlJURW5kJyAqL1xuXHRcdFx0XHRwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFJSLlQpey8qIGVtcHR5ICovfVxuXHRcdFx0XHRlbHNlIGlmKCFwYXNzIHx8IG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIHJlY29yZCAweFwiICsgUlQudG9TdHJpbmcoMTYpKTtcblx0XHR9XG5cdH0sIG9wdHMpO1xuXG5cdGRlbGV0ZSBvcHRzLnN1cGJvb2tzO1xuXHRkZWxldGUgb3B0c1snIXJvdyddO1xuXG5cdGlmKCFzW1wiIXJlZlwiXSAmJiAocmVmZ3Vlc3Mucy5yIDwgMjAwMDAwMCB8fCByZWYgJiYgKHJlZi5lLnIgPiAwIHx8IHJlZi5lLmMgPiAwIHx8IHJlZi5zLnIgPiAwIHx8IHJlZi5zLmMgPiAwKSkpIHNbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZiB8fCByZWZndWVzcyk7XG5cdGlmKG9wdHMuc2hlZXRSb3dzICYmIHNbXCIhcmVmXCJdKSB7XG5cdFx0dmFyIHRtcHJlZiA9IHNhZmVfZGVjb2RlX3JhbmdlKHNbXCIhcmVmXCJdKTtcblx0XHRpZihvcHRzLnNoZWV0Um93cyA8PSArdG1wcmVmLmUucikge1xuXHRcdFx0dG1wcmVmLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdGlmKHRtcHJlZi5lLnIgPiByZWZndWVzcy5lLnIpIHRtcHJlZi5lLnIgPSByZWZndWVzcy5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5yIDwgdG1wcmVmLnMucikgdG1wcmVmLnMuciA9IHRtcHJlZi5lLnI7XG5cdFx0XHRpZih0bXByZWYuZS5jID4gcmVmZ3Vlc3MuZS5jKSB0bXByZWYuZS5jID0gcmVmZ3Vlc3MuZS5jO1xuXHRcdFx0aWYodG1wcmVmLmUuYyA8IHRtcHJlZi5zLmMpIHRtcHJlZi5zLmMgPSB0bXByZWYuZS5jO1xuXHRcdFx0c1tcIiFmdWxscmVmXCJdID0gc1tcIiFyZWZcIl07XG5cdFx0XHRzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZSh0bXByZWYpO1xuXHRcdH1cblx0fVxuXHRpZihtZXJnZXMubGVuZ3RoID4gMCkgc1tcIiFtZXJnZXNcIl0gPSBtZXJnZXM7XG5cdGlmKGNvbGluZm8ubGVuZ3RoID4gMCkgc1tcIiFjb2xzXCJdID0gY29saW5mbztcblx0aWYocm93aW5mby5sZW5ndGggPiAwKSBzW1wiIXJvd3NcIl0gPSByb3dpbmZvO1xuXHRyZXR1cm4gcztcbn1cblxuLyogVE9ETzogc29tZXRoaW5nIHVzZWZ1bCAtLSB0aGlzIGlzIGEgc3R1YiAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfYmluX2NlbGwoYmEvKjpCdWZBcnJheSovLCBjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgb3B0cywgd3MvKjpXb3Jrc2hlZXQqLywgbGFzdF9zZWVuLyo6Ym9vbGVhbiovKS8qOmJvb2xlYW4qLyB7XG5cdGlmKGNlbGwudiA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG5cdHZhciB2diA9IFwiXCI7XG5cdHN3aXRjaChjZWxsLnQpIHtcblx0XHRjYXNlICdiJzogdnYgPSBjZWxsLnYgPyBcIjFcIiA6IFwiMFwiOyBicmVhaztcblx0XHRjYXNlICdkJzogLy8gbm8gQnJ0Q2VsbERhdGUgOihcblx0XHRcdGNlbGwgPSBkdXAoY2VsbCk7XG5cdFx0XHRjZWxsLnogPSBjZWxsLnogfHwgdGFibGVfZm10WzE0XTtcblx0XHRcdGNlbGwudiA9IGRhdGVudW0ocGFyc2VEYXRlKGNlbGwudikpOyBjZWxsLnQgPSAnbic7XG5cdFx0XHRicmVhaztcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSAnbic6IGNhc2UgJ2UnOiB2diA9ICcnK2NlbGwudjsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdnYgPSBjZWxsLnY7IGJyZWFrO1xuXHR9XG5cdHZhciBvLyo6YW55Ki8gPSAoe3I6UiwgYzpDfS8qOmFueSovKTtcblx0LyogVE9ETzogY2VsbCBzdHlsZSAqL1xuXHRvLnMgPSBnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIGNlbGwsIG9wdHMpO1xuXHRpZihjZWxsLmwpIHdzWychbGlua3MnXS5wdXNoKFtlbmNvZGVfY2VsbChvKSwgY2VsbC5sXSk7XG5cdGlmKGNlbGwuYykgd3NbJyFjb21tZW50cyddLnB1c2goW2VuY29kZV9jZWxsKG8pLCBjZWxsLmNdKTtcblx0c3dpdGNoKGNlbGwudCkge1xuXHRcdGNhc2UgJ3MnOiBjYXNlICdzdHInOlxuXHRcdFx0aWYob3B0cy5ib29rU1NUKSB7XG5cdFx0XHRcdHZ2ID0gZ2V0X3NzdF9pZChvcHRzLlN0cmluZ3MsIChjZWxsLnYvKjphbnkqLyksIG9wdHMucmV2U3RyaW5ncyk7XG5cdFx0XHRcdG8udCA9IFwic1wiOyBvLnYgPSB2djtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAxMiAvKiBCcnRTaG9ydElzc3QgKi8sIHdyaXRlX0JydFNob3J0SXNzdChjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDcgLyogQnJ0Q2VsbElzc3QgKi8sIHdyaXRlX0JydENlbGxJc3N0KGNlbGwsIG8pKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG8udCA9IFwic3RyXCI7XG5cdFx0XHRcdGlmKGxhc3Rfc2Vlbikgd3JpdGVfcmVjb3JkKGJhLCAweDAwMTEgLyogQnJ0U2hvcnRTdCAqLywgd3JpdGVfQnJ0U2hvcnRTdChjZWxsLCBvKSk7XG5cdFx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDYgLyogQnJ0Q2VsbFN0ICovLCB3cml0ZV9CcnRDZWxsU3QoY2VsbCwgbykpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0Y2FzZSAnbic6XG5cdFx0XHQvKiBUT0RPOiBkZXRlcm1pbmUgdGhyZXNob2xkIGZvciBSZWFsIHZzIFJLICovXG5cdFx0XHRpZihjZWxsLnYgPT0gKGNlbGwudiB8IDApICYmIGNlbGwudiA+IC0xMDAwICYmIGNlbGwudiA8IDEwMDApIHtcblx0XHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRCAvKiBCcnRTaG9ydFJrICovLCB3cml0ZV9CcnRTaG9ydFJrKGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMiAvKiBCcnRDZWxsUmsgKi8sIHdyaXRlX0JydENlbGxSayhjZWxsLCBvKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZihsYXN0X3NlZW4pIHdyaXRlX3JlY29yZChiYSwgMHgwMDEwIC8qIEJydFNob3J0UmVhbCAqLywgd3JpdGVfQnJ0U2hvcnRSZWFsKGNlbGwsIG8pKTtcblx0XHRcdFx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwNSAvKiBCcnRDZWxsUmVhbCAqLywgd3JpdGVfQnJ0Q2VsbFJlYWwoY2VsbCwgbykpO1xuXHRcdFx0fSByZXR1cm4gdHJ1ZTtcblx0XHRjYXNlICdiJzpcblx0XHRcdG8udCA9IFwiYlwiO1xuXHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRiAvKiBCcnRTaG9ydEJvb2wgKi8sIHdyaXRlX0JydFNob3J0Qm9vbChjZWxsLCBvKSk7XG5cdFx0XHRlbHNlIHdyaXRlX3JlY29yZChiYSwgMHgwMDA0IC8qIEJydENlbGxCb29sICovLCB3cml0ZV9CcnRDZWxsQm9vbChjZWxsLCBvKSk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRjYXNlICdlJzpcblx0XHRcdG8udCA9IFwiZVwiO1xuXHRcdFx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwRSAvKiBCcnRTaG9ydEVycm9yICovLCB3cml0ZV9CcnRTaG9ydEVycm9yKGNlbGwsIG8pKTtcblx0XHRcdGVsc2Ugd3JpdGVfcmVjb3JkKGJhLCAweDAwMDMgLyogQnJ0Q2VsbEVycm9yICovLCB3cml0ZV9CcnRDZWxsRXJyb3IoY2VsbCwgbykpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdH1cblx0aWYobGFzdF9zZWVuKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwQyAvKiBCcnRTaG9ydEJsYW5rICovLCB3cml0ZV9CcnRTaG9ydEJsYW5rKGNlbGwsIG8pKTtcblx0ZWxzZSB3cml0ZV9yZWNvcmQoYmEsIDB4MDAwMSAvKiBCcnRDZWxsQmxhbmsgKi8sIHdyaXRlX0JydENlbGxCbGFuayhjZWxsLCBvKSk7XG5cdHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DRUxMVEFCTEUoYmEsIHdzLyo6V29ya3NoZWV0Ki8sIGlkeC8qOm51bWJlciovLCBvcHRzLyo6Oiwgd2I6V29ya2Jvb2sqLykge1xuXHR2YXIgcmFuZ2UgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIiksIHJlZiwgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDkxIC8qIEJydEJlZ2luU2hlZXREYXRhICovKTtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciBjYXAgPSByYW5nZS5lLnI7XG5cdGlmKHdzWychcm93cyddKSBjYXAgPSBNYXRoLm1heChyYW5nZS5lLnIsIHdzWychcm93cyddLmxlbmd0aCAtIDEpO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gY2FwOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0LyogW0FDQ0VMTFRBQkxFXSAqL1xuXHRcdC8qIEJydFJvd0hkciAqL1xuXHRcdHdyaXRlX3Jvd19oZWFkZXIoYmEsIHdzLCByYW5nZSwgUik7XG5cdFx0dmFyIGxhc3Rfc2VlbiA9IGZhbHNlO1xuXHRcdGlmKFIgPD0gcmFuZ2UuZS5yKSBmb3IodmFyIEMgPSByYW5nZS5zLmM7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIHtcblx0XHRcdC8qICoxNjM4NENFTEwgKi9cblx0XHRcdGlmKFIgPT09IHJhbmdlLnMucikgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdFx0XHRyZWYgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR2YXIgY2VsbCA9IGRlbnNlID8gKHdzW1JdfHxbXSlbQ10gOiB3c1tyZWZdO1xuXHRcdFx0aWYoIWNlbGwpIHsgbGFzdF9zZWVuID0gZmFsc2U7IGNvbnRpbnVlOyB9XG5cdFx0XHQvKiB3cml0ZSBjZWxsICovXG5cdFx0XHRsYXN0X3NlZW4gPSB3cml0ZV93c19iaW5fY2VsbChiYSwgY2VsbCwgUiwgQywgb3B0cywgd3MsIGxhc3Rfc2Vlbik7XG5cdFx0fVxuXHR9XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDkyIC8qIEJydEVuZFNoZWV0RGF0YSAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX01FUkdFQ0VMTFMoYmEsIHdzLyo6V29ya3NoZWV0Ki8pIHtcblx0aWYoIXdzIHx8ICF3c1snIW1lcmdlcyddKSByZXR1cm47XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEIxIC8qIEJydEJlZ2luTWVyZ2VDZWxscyAqLywgd3JpdGVfQnJ0QmVnaW5NZXJnZUNlbGxzKHdzWychbWVyZ2VzJ10ubGVuZ3RoKSk7XG5cdHdzWychbWVyZ2VzJ10uZm9yRWFjaChmdW5jdGlvbihtKSB7IHdyaXRlX3JlY29yZChiYSwgMHgwMEIwIC8qIEJydE1lcmdlQ2VsbCAqLywgd3JpdGVfQnJ0TWVyZ2VDZWxsKG0pKTsgfSk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMEIyIC8qIEJydEVuZE1lcmdlQ2VsbHMgKi8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9DT0xJTkZPUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLy8qOjosIGlkeDpudW1iZXIsIG9wdHMsIHdiOldvcmtib29rKi8pIHtcblx0aWYoIXdzIHx8ICF3c1snIWNvbHMnXSkgcmV0dXJuO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDE4NiAvKiBCcnRCZWdpbkNvbEluZm9zICovKTtcblx0d3NbJyFjb2xzJ10uZm9yRWFjaChmdW5jdGlvbihtLCBpKSB7IGlmKG0pIHdyaXRlX3JlY29yZChiYSwgMHgwMDNDIC8qICdCcnRDb2xJbmZvJyAqLywgd3JpdGVfQnJ0Q29sSW5mbyhpLCBtKSk7IH0pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDE4NyAvKiBCcnRFbmRDb2xJbmZvcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0lHTk9SRUVDUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLykge1xuXHRpZighd3MgfHwgIXdzWychcmVmJ10pIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyODggLyogQnJ0QmVnaW5DZWxsSWdub3JlRUNzICovKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyODkgLyogQnJ0Q2VsbElnbm9yZUVDICovLCB3cml0ZV9CcnRDZWxsSWdub3JlRUMoc2FmZV9kZWNvZGVfcmFuZ2Uod3NbJyFyZWYnXSkpKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAyOEEgLyogQnJ0RW5kQ2VsbElnbm9yZUVDcyAqLyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0hMSU5LUyhiYSwgd3MvKjpXb3Jrc2hlZXQqLywgcmVscykge1xuXHQvKiAqQnJ0SExpbmsgKi9cblx0d3NbJyFsaW5rcyddLmZvckVhY2goZnVuY3Rpb24obCkge1xuXHRcdGlmKCFsWzFdLlRhcmdldCkgcmV0dXJuO1xuXHRcdHZhciBySWQgPSBhZGRfcmVscyhyZWxzLCAtMSwgbFsxXS5UYXJnZXQucmVwbGFjZSgvIy4qJC8sIFwiXCIpLCBSRUxTLkhMSU5LKTtcblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDFFRSAvKiBCcnRITGluayAqLywgd3JpdGVfQnJ0SExpbmsobCwgcklkKSk7XG5cdH0pO1xuXHRkZWxldGUgd3NbJyFsaW5rcyddO1xufVxuZnVuY3Rpb24gd3JpdGVfTEVHQUNZRFJBV0lORyhiYSwgd3MvKjpXb3Jrc2hlZXQqLywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMpIHtcblx0LyogW0JydExlZ2FjeURyYXdpbmddICovXG5cdGlmKHdzWychY29tbWVudHMnXS5sZW5ndGggPiAwKSB7XG5cdFx0dmFyIHJJZCA9IGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChpZHgrMSkgKyBcIi52bWxcIiwgUkVMUy5WTUwpO1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMjI3IC8qIEJydExlZ2FjeURyYXdpbmcgKi8sIHdyaXRlX1JlbElEKFwicklkXCIgKyBySWQpKTtcblx0XHR3c1snIWxlZ2FjeSddID0gcklkO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0FVVE9GSUxURVIoYmEsIHdzLCB3YiwgaWR4KSB7XG5cdGlmKCF3c1snIWF1dG9maWx0ZXInXSkgcmV0dXJuO1xuXHR2YXIgZGF0YSA9IHdzWychYXV0b2ZpbHRlciddO1xuXHR2YXIgcmVmID0gdHlwZW9mIGRhdGEucmVmID09PSBcInN0cmluZ1wiID8gZGF0YS5yZWYgOiBlbmNvZGVfcmFuZ2UoZGF0YS5yZWYpO1xuXG5cdC8qIFVwZGF0ZSBGaWx0ZXJEYXRhYmFzZSBkZWZpbmVkIG5hbWUgZm9yIHRoZSB3b3Jrc2hlZXQgKi9cblx0aWYoIXdiLldvcmtib29rKSB3Yi5Xb3JrYm9vayA9ICh7U2hlZXRzOltdfS8qOmFueSovKTtcblx0aWYoIXdiLldvcmtib29rLk5hbWVzKSB3Yi5Xb3JrYm9vay5OYW1lcyA9IFtdO1xuXHR2YXIgbmFtZXMvKjogQXJyYXk8YW55PiAqLyA9IHdiLldvcmtib29rLk5hbWVzO1xuXHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2UocmVmKTtcblx0aWYocmFuZ2Uucy5yID09IHJhbmdlLmUucikgeyByYW5nZS5lLnIgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKS5lLnI7IHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7IH1cblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG5hbWUgPSBuYW1lc1tpXTtcblx0XHRpZihuYW1lLk5hbWUgIT0gJ194bG5tLl9GaWx0ZXJEYXRhYmFzZScpIGNvbnRpbnVlO1xuXHRcdGlmKG5hbWUuU2hlZXQgIT0gaWR4KSBjb250aW51ZTtcblx0XHRuYW1lLlJlZiA9IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmOyBicmVhaztcblx0fVxuXHRpZihpID09IG5hbWVzLmxlbmd0aCkgbmFtZXMucHVzaCh7IE5hbWU6ICdfeGxubS5fRmlsdGVyRGF0YWJhc2UnLCBTaGVldDogaWR4LCBSZWY6IFwiJ1wiICsgd2IuU2hlZXROYW1lc1tpZHhdICsgXCInIVwiICsgcmVmICB9KTtcblxuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBBMSAvKiBCcnRCZWdpbkFGaWx0ZXIgKi8sIHdyaXRlX1VuY2hlY2tlZFJmWChzYWZlX2RlY29kZV9yYW5nZShyZWYpKSk7XG5cdC8qICpGSUxURVJDT0xVTU4gKi9cblx0LyogW1NPUlRTVEFURV0gKi9cblx0LyogQnJ0RW5kQUZpbHRlciAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDBBMiAvKiBCcnRFbmRBRmlsdGVyICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfV1NWSUVXUzIoYmEsIHdzLCBXb3JrYm9vaykge1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NSAvKiBCcnRCZWdpbldzVmlld3MgKi8pO1xuXHR7IC8qIDEqV1NWSUVXMiAqL1xuXHRcdC8qIFtBQ1VJRF0gKi9cblx0XHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4OSAvKiBCcnRCZWdpbldzVmlldyAqLywgd3JpdGVfQnJ0QmVnaW5Xc1ZpZXcod3MsIFdvcmtib29rKSk7XG5cdFx0LyogW0JydFBhbmVdICovXG5cdFx0LyogKjRCcnRTZWwgKi9cblx0XHQvKiAqNFNYU0VMRUNUICovXG5cdFx0LyogKkZSVCAqL1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMDhBIC8qIEJydEVuZFdzVmlldyAqLyk7XG5cdH1cblx0LyogKkZSVCAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NiAvKiBCcnRFbmRXc1ZpZXdzICovKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfV1NGTVRJTkZPKC8qOjpiYSwgd3MqLykge1xuXHQvKiBbQUNXU0ZNVElORk9dICovXG5cdC8vIHdyaXRlX3JlY29yZChiYSwgMHgwMUU1IC8qIEJydFdzRm10SW5mbyAqLywgd3JpdGVfQnJ0V3NGbXRJbmZvKHdzKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX1NIRUVUUFJPVEVDVChiYSwgd3MpIHtcblx0aWYoIXdzWychcHJvdGVjdCddKSByZXR1cm47XG5cdC8qIFtCcnRTaGVldFByb3RlY3Rpb25Jc29dICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMjE3IC8qIEJydFNoZWV0UHJvdGVjdGlvbiAqLywgd3JpdGVfQnJ0U2hlZXRQcm90ZWN0aW9uKHdzWychcHJvdGVjdCddKSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpbihpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovLCByZWxzKSB7XG5cdHZhciBiYSA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgcyA9IHdiLlNoZWV0TmFtZXNbaWR4XSwgd3MgPSB3Yi5TaGVldHNbc10gfHwge307XG5cdHZhciBjLyo6c3RyaW5nKi8gPSBzOyB0cnkgeyBpZih3YiAmJiB3Yi5Xb3JrYm9vaykgYyA9IHdiLldvcmtib29rLlNoZWV0c1tpZHhdLkNvZGVOYW1lIHx8IGM7IH0gY2F0Y2goZSkge31cblx0dmFyIHIgPSBzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddIHx8IFwiQTFcIik7XG5cdGlmKHIuZS5jID4gMHgzRkZGIHx8IHIuZS5yID4gMHhGRkZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpYRkQxMDQ4NTc2XCIpO1xuXHRcdHIuZS5jID0gTWF0aC5taW4oci5lLmMsIDB4M0ZGRik7XG5cdFx0ci5lLnIgPSBNYXRoLm1pbihyLmUuYywgMHhGRkZGRik7XG5cdH1cblx0d3NbJyFsaW5rcyddID0gW107XG5cdC8qIHBhc3NlZCBiYWNrIHRvIHdyaXRlX3ppcCBhbmQgcmVtb3ZlZCB0aGVyZSAqL1xuXHR3c1snIWNvbW1lbnRzJ10gPSBbXTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODEgLyogQnJ0QmVnaW5TaGVldCAqLyk7XG5cdGlmKHdiLnZiYXJhdyB8fCB3c1snIW91dGxpbmUnXSkgd3JpdGVfcmVjb3JkKGJhLCAweDAwOTMgLyogQnJ0V3NQcm9wICovLCB3cml0ZV9CcnRXc1Byb3AoYywgd3NbJyFvdXRsaW5lJ10pKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTQgLyogQnJ0V3NEaW0gKi8sIHdyaXRlX0JydFdzRGltKHIpKTtcblx0d3JpdGVfV1NWSUVXUzIoYmEsIHdzLCB3Yi5Xb3JrYm9vayk7XG5cdHdyaXRlX1dTRk1USU5GTyhiYSwgd3MpO1xuXHR3cml0ZV9DT0xJTkZPUyhiYSwgd3MsIGlkeCwgb3B0cywgd2IpO1xuXHR3cml0ZV9DRUxMVEFCTEUoYmEsIHdzLCBpZHgsIG9wdHMsIHdiKTtcblx0LyogW0JydFNoZWV0Q2FsY1Byb3BdICovXG5cdHdyaXRlX1NIRUVUUFJPVEVDVChiYSwgd3MpO1xuXHQvKiAqKFtCcnRSYW5nZVByb3RlY3Rpb25Jc29dIEJydFJhbmdlUHJvdGVjdGlvbikgKi9cblx0LyogW1NDRU5NQU5dICovXG5cdHdyaXRlX0FVVE9GSUxURVIoYmEsIHdzLCB3YiwgaWR4KTtcblx0LyogW1NPUlRTVEFURV0gKi9cblx0LyogW0RDT05dICovXG5cdC8qIFtVU0VSU0hWSUVXU10gKi9cblx0d3JpdGVfTUVSR0VDRUxMUyhiYSwgd3MpO1xuXHQvKiBbQnJ0UGhvbmV0aWNJbmZvXSAqL1xuXHQvKiAqQ09ORElUSU9OQUxGT1JNQVRUSU5HICovXG5cdC8qIFtEVkFMU10gKi9cblx0d3JpdGVfSExJTktTKGJhLCB3cywgcmVscyk7XG5cdC8qIFtCcnRQcmludE9wdGlvbnNdICovXG5cdGlmKHdzWychbWFyZ2lucyddKSB3cml0ZV9yZWNvcmQoYmEsIDB4MDFEQyAvKiBCcnRNYXJnaW5zICovLCB3cml0ZV9CcnRNYXJnaW5zKHdzWychbWFyZ2lucyddKSk7XG5cdC8qIFtCcnRQYWdlU2V0dXBdICovXG5cdC8qIFtIRUFERVJGT09URVJdICovXG5cdC8qIFtSV0JSS10gKi9cblx0LyogW0NPTEJSS10gKi9cblx0LyogKkJydEJpZ05hbWUgKi9cblx0LyogW0NFTExXQVRDSEVTXSAqL1xuXHRpZighb3B0cyB8fCBvcHRzLmlnbm9yZUVDIHx8IChvcHRzLmlnbm9yZUVDID09ICh2b2lkIDApKSkgd3JpdGVfSUdOT1JFRUNTKGJhLCB3cyk7XG5cdC8qIFtTTUFSVFRBR1NdICovXG5cdC8qIFtCcnREcmF3aW5nXSAqL1xuXHR3cml0ZV9MRUdBQ1lEUkFXSU5HKGJhLCB3cywgaWR4LCByZWxzKTtcblx0LyogW0JydExlZ2FjeURyYXdpbmdIRl0gKi9cblx0LyogW0JydEJrSGltXSAqL1xuXHQvKiBbT0xFT0JKRUNUU10gKi9cblx0LyogW0FDVElWRVhDT05UUk9MU10gKi9cblx0LyogW1dFQlBVQklURU1TXSAqL1xuXHQvKiBbTElTVFBBUlRTXSAqL1xuXHQvKiBGUlRXT1JLU0hFRVQgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODIgLyogQnJ0RW5kU2hlZXQgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV9DYWNoZShkYXRhLyo6c3RyaW5nKi8pLyo6W0FycmF5PG51bWJlcnxzdHJpbmc+LCBzdHJpbmcsID9zdHJpbmddKi8ge1xuXHR2YXIgY29sLyo6QXJyYXk8bnVtYmVyfHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbnVtID0gZGF0YS5tYXRjaCgvXjxjOm51bUNhY2hlPi8pO1xuXHR2YXIgZjtcblxuXHQvKiAyMS4yLjIuMTUwIHB0IENUX051bVZhbCAqL1xuXHQoZGF0YS5tYXRjaCgvPGM6cHQgaWR4PVwiKFxcZCopXCI+KC4qPyk8XFwvYzpwdD4vbWcpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihwdCkge1xuXHRcdHZhciBxID0gcHQubWF0Y2goLzxjOnB0IGlkeD1cIihcXGQqPylcIj48Yzp2PiguKik8XFwvYzp2PjxcXC9jOnB0Pi8pO1xuXHRcdGlmKCFxKSByZXR1cm47XG5cdFx0Y29sWytxWzFdXSA9IG51bSA/ICtxWzJdIDogcVsyXTtcblx0fSk7XG5cblx0LyogMjEuMi4yLjcxIGZvcm1hdENvZGUgQ1RfWHN0cmluZyAqL1xuXHR2YXIgbmYgPSB1bmVzY2FwZXhtbCgoZGF0YS5tYXRjaCgvPGM6Zm9ybWF0Q29kZT4oW1xcc1xcU10qPyk8XFwvYzpmb3JtYXRDb2RlPi8pIHx8IFtcIlwiLFwiR2VuZXJhbFwiXSlbMV0pO1xuXG5cdChkYXRhLm1hdGNoKC88YzpmPiguKj8pPFxcL2M6Zj4vbWcpfHxbXSkuZm9yRWFjaChmdW5jdGlvbihGKSB7IGYgPSBGLnJlcGxhY2UoLzwuKj8+L2csXCJcIik7IH0pO1xuXG5cdHJldHVybiBbY29sLCBuZiwgZl07XG59XG5cbi8qIDIxLjIgRHJhd2luZ01MIC0gQ2hhcnRzICovXG5mdW5jdGlvbiBwYXJzZV9jaGFydChkYXRhLyo6P3N0cmluZyovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMsIHJlbHMsIHdiLCBjc2hlZXQpIHtcblx0dmFyIGNzLyo6V29ya3NoZWV0Ki8gPSAoKGNzaGVldCB8fCB7XCIhdHlwZVwiOlwiY2hhcnRcIn0pLyo6YW55Ki8pO1xuXHRpZighZGF0YSkgcmV0dXJuIGNzaGVldDtcblx0LyogMjEuMi4yLjI3IGNoYXJ0IENUX0NoYXJ0ICovXG5cblx0dmFyIEMgPSAwLCBSID0gMCwgY29sID0gXCJBXCI7XG5cdHZhciByZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cblx0LyogMjEuMi4yLjEyMCBudW1DYWNoZSBDVF9OdW1EYXRhICovXG5cdChkYXRhLm1hdGNoKC88YzpudW1DYWNoZT5bXFxzXFxTXSo/PFxcL2M6bnVtQ2FjaGU+L2dtKXx8W10pLmZvckVhY2goZnVuY3Rpb24obmMpIHtcblx0XHR2YXIgY2FjaGUgPSBwYXJzZV9DYWNoZShuYyk7XG5cdFx0cmVmZ3Vlc3Mucy5yID0gcmVmZ3Vlc3Mucy5jID0gMDtcblx0XHRyZWZndWVzcy5lLmMgPSBDO1xuXHRcdGNvbCA9IGVuY29kZV9jb2woQyk7XG5cdFx0Y2FjaGVbMF0uZm9yRWFjaChmdW5jdGlvbihuLGkpIHtcblx0XHRcdGNzW2NvbCArIGVuY29kZV9yb3coaSldID0ge3Q6J24nLCB2Om4sIHo6Y2FjaGVbMV0gfTtcblx0XHRcdFIgPSBpO1xuXHRcdH0pO1xuXHRcdGlmKHJlZmd1ZXNzLmUuciA8IFIpIHJlZmd1ZXNzLmUuciA9IFI7XG5cdFx0KytDO1xuXHR9KTtcblx0aWYoQyA+IDApIGNzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdHJldHVybiBjcztcbn1cbi8qIDE4LjMgV29ya3NoZWV0cyBhbHNvIGNvdmVycyBDaGFydHNoZWV0cyAqL1xuZnVuY3Rpb24gcGFyc2VfY3NfeG1sKGRhdGEvKjo/c3RyaW5nKi8sIG9wdHMsIGlkeC8qOm51bWJlciovLCByZWxzLCB3Yi8qOjosIHRoZW1lcywgc3R5bGVzKi8pLyo6V29ya3NoZWV0Ki8ge1xuXHRpZighZGF0YSkgcmV0dXJuIGRhdGE7XG5cdC8qIDE4LjMuMS4xMiBjaGFydHNoZWV0IENUX0NoYXJ0U2hlZXQgKi9cblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHR2YXIgcyA9ICh7JyF0eXBlJzpcImNoYXJ0XCIsICchZHJhd2VsJzpudWxsLCAnIXJlbCc6XCJcIn0vKjphbnkqLyk7XG5cdHZhciBtO1xuXG5cdC8qIDE4LjMuMS44MyBzaGVldFByIENUX0NoYXJ0c2hlZXRQciAqL1xuXHR2YXIgc2hlZXRQciA9IGRhdGEubWF0Y2goc2hlZXRwcnJlZ2V4KTtcblx0aWYoc2hlZXRQcikgcGFyc2Vfd3NfeG1sX3NoZWV0cHIoc2hlZXRQclswXSwgcywgd2IsIGlkeCk7XG5cblx0LyogMTguMy4xLjM2IGRyYXdpbmcgQ1RfRHJhd2luZyAqL1xuXHRpZigobSA9IGRhdGEubWF0Y2goL2RyYXdpbmcgcjppZD1cIiguKj8pXCIvKSkpIHNbJyFyZWwnXSA9IG1bMV07XG5cblx0aWYocmVsc1snIWlkJ11bc1snIXJlbCddXSkgc1snIWRyYXdlbCddID0gcmVsc1snIWlkJ11bc1snIXJlbCddXTtcblx0cmV0dXJuIHM7XG59XG5mdW5jdGlvbiB3cml0ZV9jc194bWwoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVIsIHdyaXRleHRhZygnY2hhcnRzaGVldCcsIG51bGwsIHtcblx0XHQneG1sbnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczpyJzogWE1MTlMuclxuXHR9KV07XG5cdG9bby5sZW5ndGhdID0gd3JpdGV4dGFnKFwiZHJhd2luZ1wiLCBudWxsLCB7XCJyOmlkXCI6IFwicklkMVwifSk7XG5cdGFkZF9yZWxzKHJlbHMsIC0xLCBcIi4uL2RyYXdpbmdzL2RyYXdpbmdcIiArIChpZHgrMSkgKyBcIi54bWxcIiwgUkVMUy5EUkFXKTtcblx0aWYoby5sZW5ndGg+MikgeyBvW28ubGVuZ3RoXSA9ICgnPC9jaGFydHNoZWV0PicpOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzMxIEJydENzUHJvcCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0Q3NQcm9wKGRhdGEsIGxlbmd0aC8qOm51bWJlciovKSB7XG5cdGRhdGEubCArPSAxMDtcblx0dmFyIG5hbWUgPSBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSwgbGVuZ3RoIC0gMTApO1xuXHRyZXR1cm4geyBuYW1lOiBuYW1lIH07XG59XG5cbi8qIFtNUy1YTFNCXSAyLjEuNy43IENoYXJ0IFNoZWV0ICovXG5mdW5jdGlvbiBwYXJzZV9jc19iaW4oZGF0YSwgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHJlbHMsIHdiLyo6OiwgdGhlbWVzLCBzdHlsZXMqLykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKCFkYXRhKSByZXR1cm4gZGF0YTtcblx0aWYoIXJlbHMpIHJlbHMgPSB7JyFpZCc6e319O1xuXHR2YXIgcyA9IHsnIXR5cGUnOlwiY2hhcnRcIiwgJyFkcmF3ZWwnOm51bGwsICchcmVsJzpcIlwifTtcblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBjc19wYXJzZSh2YWwsIFIsIFJUKSB7XG5cdFx0c3dpdGNoKFJUKSB7XG5cblx0XHRcdGNhc2UgMHgwMjI2OiAvKiAnQnJ0RHJhd2luZycgKi9cblx0XHRcdFx0c1snIXJlbCddID0gdmFsOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAyOEI6IC8qICdCcnRDc1Byb3AnICovXG5cdFx0XHRcdGlmKCF3Yi5TaGVldHNbaWR4XSkgd2IuU2hlZXRzW2lkeF0gPSB7fTtcblx0XHRcdFx0aWYodmFsLm5hbWUpIHdiLlNoZWV0c1tpZHhdLkNvZGVOYW1lID0gdmFsLm5hbWU7XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDIzMjogLyogJ0JydEJrSGltJyAqL1xuXHRcdFx0Y2FzZSAweDAyOEM6IC8qICdCcnRDc1BhZ2VTZXR1cCcgKi9cblx0XHRcdGNhc2UgMHgwMjlEOiAvKiAnQnJ0Q3NQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTc6IC8qICdCcnRDc1Byb3RlY3Rpb25Jc28nICovXG5cdFx0XHRjYXNlIDB4MDIyNzogLyogJ0JydExlZ2FjeURyYXdpbmcnICovXG5cdFx0XHRjYXNlIDB4MDIyODogLyogJ0JydExlZ2FjeURyYXdpbmdIRicgKi9cblx0XHRcdGNhc2UgMHgwMURDOiAvKiAnQnJ0TWFyZ2lucycgKi9cblx0XHRcdGNhc2UgMHgwQzAwOiAvKiAnQnJ0VWlkJyAqL1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjM6IC8qICdCcnRGUlRCZWdpbicgKi9cblx0XHRcdFx0cGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cdFx0XHRjYXNlIDB4MDAyNTogLyogJ0JydEFDQmVnaW4nICovXG5cdFx0XHRcdHN0YXRlLnB1c2goUlQpOyBicmVhaztcblx0XHRcdGNhc2UgMHgwMDI2OiAvKiAnQnJ0QUNFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBicmVhaztcblxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYoUi5UID4gMCkgc3RhdGUucHVzaChSVCk7XG5cdFx0XHRcdGVsc2UgaWYoUi5UIDwgMCkgc3RhdGUucG9wKCk7XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgb3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgcmVjb3JkIDB4XCIgKyBSVC50b1N0cmluZygxNikpO1xuXHRcdH1cblx0fSwgb3B0cyk7XG5cblx0aWYocmVsc1snIWlkJ11bc1snIXJlbCddXSkgc1snIWRyYXdlbCddID0gcmVsc1snIWlkJ11bc1snIXJlbCddXTtcblx0cmV0dXJuIHM7XG59XG5mdW5jdGlvbiB3cml0ZV9jc19iaW4oLyo6OmlkeDpudW1iZXIsIG9wdHMsIHdiOldvcmtib29rLCByZWxzKi8pIHtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDgxIC8qIEJydEJlZ2luU2hlZXQgKi8pO1xuXHQvKiBbQnJ0Q3NQcm9wXSAqL1xuXHQvKiBDU1ZJRVdTICovXG5cdC8qIFtbQnJ0Q3NQcm90ZWN0aW9uSXNvXSBCcnRDc1Byb3RlY3Rpb25dICovXG5cdC8qIFtVU0VSQ1NWSUVXU10gKi9cblx0LyogW0JydE1hcmdpbnNdICovXG5cdC8qIFtCcnRDc1BhZ2VTZXR1cF0gKi9cblx0LyogW0hFQURFUkZPT1RFUl0gKi9cblx0LyogQnJ0RHJhd2luZyAqL1xuXHQvKiBbQnJ0TGVnYWN5RHJhd2luZ10gKi9cblx0LyogW0JydExlZ2FjeURyYXdpbmdIRl0gKi9cblx0LyogW0JydEJrSGltXSAqL1xuXHQvKiBbV0VCUFVCSVRFTVNdICovXG5cdC8qIEZSVENIQVJUU0hFRVQgKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODIgLyogQnJ0RW5kU2hlZXQgKi8pO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG4vKiAxOC4yLjI4IChDVF9Xb3JrYm9va1Byb3RlY3Rpb24pIERlZmF1bHRzICovXG52YXIgV0JQcm9wc0RlZiA9IFtcblx0WydhbGxvd1JlZnJlc2hRdWVyeScsICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2F1dG9Db21wcmVzc1BpY3R1cmVzJywgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnYmFja3VwRmlsZScsICAgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydjaGVja0NvbXBhdGliaWxpdHknLCAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ0NvZGVOYW1lJywgICAgICAgICAgICAgICAgICAgICcnXSxcblx0WydkYXRlMTkwNCcsICAgICAgICAgICAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ2RlZmF1bHRUaGVtZVZlcnNpb24nLCAgICAgICAgIDAsICAgICAgXCJpbnRcIl0sXG5cdFsnZmlsdGVyUHJpdmFjeScsICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydoaWRlUGl2b3RGaWVsZExpc3QnLCAgICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3Byb21wdGVkU29sdXRpb25zJywgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsncHVibGlzaEl0ZW1zJywgICAgICAgICAgICAgICAgZmFsc2UsIFwiYm9vbFwiXSxcblx0WydyZWZyZXNoQWxsQ29ubmVjdGlvbnMnLCAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3NhdmVFeHRlcm5hbExpbmtWYWx1ZXMnLCAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsnc2hvd0JvcmRlclVuc2VsZWN0ZWRUYWJsZXMnLCAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93SW5rQW5ub3RhdGlvbicsICAgICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dPYmplY3RzJywgICAgICAgICAgICAgICAgICdhbGwnXSxcblx0WydzaG93UGl2b3RDaGFydEZpbHRlcicsICAgICAgICBmYWxzZSwgXCJib29sXCJdLFxuXHRbJ3VwZGF0ZUxpbmtzJywgJ3VzZXJTZXQnXVxuXTtcblxuLyogMTguMi4zMCAoQ1RfQm9va1ZpZXcpIERlZmF1bHRzICovXG52YXIgV0JWaWV3RGVmID0gW1xuXHRbJ2FjdGl2ZVRhYicsICAgICAgICAgICAgICAgICAgIDAsICAgICAgXCJpbnRcIl0sXG5cdFsnYXV0b0ZpbHRlckRhdGVHcm91cGluZycsICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydmaXJzdFNoZWV0JywgICAgICAgICAgICAgICAgICAwLCAgICAgIFwiaW50XCJdLFxuXHRbJ21pbmltaXplZCcsICAgICAgICAgICAgICAgICAgIGZhbHNlLCBcImJvb2xcIl0sXG5cdFsnc2hvd0hvcml6b250YWxTY3JvbGwnLCAgICAgICAgdHJ1ZSwgIFwiYm9vbFwiXSxcblx0WydzaG93U2hlZXRUYWJzJywgICAgICAgICAgICAgICB0cnVlLCAgXCJib29sXCJdLFxuXHRbJ3Nob3dWZXJ0aWNhbFNjcm9sbCcsICAgICAgICAgIHRydWUsICBcImJvb2xcIl0sXG5cdFsndGFiUmF0aW8nLCAgICAgICAgICAgICAgICAgICAgNjAwLCAgICBcImludFwiXSxcblx0Wyd2aXNpYmlsaXR5JywgICAgICAgICAgICAgICAgICAndmlzaWJsZSddXG5cdC8vd2luZG93e0hlaWdodCxXaWR0aH0sIHt4LHl9V2luZG93XG5dO1xuXG4vKiAxOC4yLjE5IChDVF9TaGVldCkgRGVmYXVsdHMgKi9cbnZhciBTaGVldERlZiA9IFtcblx0Ly9bJ3N0YXRlJywgJ3Zpc2libGUnXVxuXTtcblxuLyogMTguMi4yICAoQ1RfQ2FsY1ByKSBEZWZhdWx0cyAqL1xudmFyIENhbGNQckRlZiA9IFtcblx0WydjYWxjQ29tcGxldGVkJywgJ3RydWUnXSxcblx0WydjYWxjTW9kZScsICdhdXRvJ10sXG5cdFsnY2FsY09uU2F2ZScsICd0cnVlJ10sXG5cdFsnY29uY3VycmVudENhbGMnLCAndHJ1ZSddLFxuXHRbJ2Z1bGxDYWxjT25Mb2FkJywgJ2ZhbHNlJ10sXG5cdFsnZnVsbFByZWNpc2lvbicsICd0cnVlJ10sXG5cdFsnaXRlcmF0ZScsICdmYWxzZSddLFxuXHRbJ2l0ZXJhdGVDb3VudCcsICcxMDAnXSxcblx0WydpdGVyYXRlRGVsdGEnLCAnMC4wMDEnXSxcblx0WydyZWZNb2RlJywgJ0ExJ11cbl07XG5cbi8qIDE4LjIuMyAoQ1RfQ3VzdG9tV29ya2Jvb2tWaWV3KSBEZWZhdWx0cyAqL1xuLyp2YXIgQ3VzdG9tV0JWaWV3RGVmID0gW1xuXHRbJ2F1dG9VcGRhdGUnLCAnZmFsc2UnXSxcblx0WydjaGFuZ2VzU2F2ZWRXaW4nLCAnZmFsc2UnXSxcblx0WydpbmNsdWRlSGlkZGVuUm93Q29sJywgJ3RydWUnXSxcblx0WydpbmNsdWRlUHJpbnRTZXR0aW5ncycsICd0cnVlJ10sXG5cdFsnbWF4aW1pemVkJywgJ2ZhbHNlJ10sXG5cdFsnbWluaW1pemVkJywgJ2ZhbHNlJ10sXG5cdFsnb25seVN5bmMnLCAnZmFsc2UnXSxcblx0WydwZXJzb25hbFZpZXcnLCAnZmFsc2UnXSxcblx0WydzaG93Q29tbWVudHMnLCAnY29tbUluZGljYXRvciddLFxuXHRbJ3Nob3dGb3JtdWxhQmFyJywgJ3RydWUnXSxcblx0WydzaG93SG9yaXpvbnRhbFNjcm9sbCcsICd0cnVlJ10sXG5cdFsnc2hvd09iamVjdHMnLCAnYWxsJ10sXG5cdFsnc2hvd1NoZWV0VGFicycsICd0cnVlJ10sXG5cdFsnc2hvd1N0YXR1c2JhcicsICd0cnVlJ10sXG5cdFsnc2hvd1ZlcnRpY2FsU2Nyb2xsJywgJ3RydWUnXSxcblx0Wyd0YWJSYXRpbycsICc2MDAnXSxcblx0Wyd4V2luZG93JywgJzAnXSxcblx0Wyd5V2luZG93JywgJzAnXVxuXTsqL1xuXG5mdW5jdGlvbiBwdXNoX2RlZmF1bHRzX2FycmF5KHRhcmdldCwgZGVmYXVsdHMpIHtcblx0Zm9yKHZhciBqID0gMDsgaiAhPSB0YXJnZXQubGVuZ3RoOyArK2opIHsgdmFyIHcgPSB0YXJnZXRbal07XG5cdFx0Zm9yKHZhciBpPTA7IGkgIT0gZGVmYXVsdHMubGVuZ3RoOyArK2kpIHsgdmFyIHogPSBkZWZhdWx0c1tpXTtcblx0XHRcdGlmKHdbelswXV0gPT0gbnVsbCkgd1t6WzBdXSA9IHpbMV07XG5cdFx0XHRlbHNlIHN3aXRjaCh6WzJdKSB7XG5cdFx0XHRjYXNlIFwiYm9vbFwiOiBpZih0eXBlb2Ygd1t6WzBdXSA9PSBcInN0cmluZ1wiKSB3W3pbMF1dID0gcGFyc2V4bWxib29sKHdbelswXV0pOyBicmVhaztcblx0XHRcdGNhc2UgXCJpbnRcIjogaWYodHlwZW9mIHdbelswXV0gPT0gXCJzdHJpbmdcIikgd1t6WzBdXSA9IHBhcnNlSW50KHdbelswXV0sIDEwKTsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5mdW5jdGlvbiBwdXNoX2RlZmF1bHRzKHRhcmdldCwgZGVmYXVsdHMpIHtcblx0Zm9yKHZhciBpID0gMDsgaSAhPSBkZWZhdWx0cy5sZW5ndGg7ICsraSkgeyB2YXIgeiA9IGRlZmF1bHRzW2ldO1xuXHRcdGlmKHRhcmdldFt6WzBdXSA9PSBudWxsKSB0YXJnZXRbelswXV0gPSB6WzFdO1xuXHRcdGVsc2Ugc3dpdGNoKHpbMl0pIHtcblx0XHRcdGNhc2UgXCJib29sXCI6IGlmKHR5cGVvZiB0YXJnZXRbelswXV0gPT0gXCJzdHJpbmdcIikgdGFyZ2V0W3pbMF1dID0gcGFyc2V4bWxib29sKHRhcmdldFt6WzBdXSk7IGJyZWFrO1xuXHRcdFx0Y2FzZSBcImludFwiOiBpZih0eXBlb2YgdGFyZ2V0W3pbMF1dID09IFwic3RyaW5nXCIpIHRhcmdldFt6WzBdXSA9IHBhcnNlSW50KHRhcmdldFt6WzBdXSwgMTApOyBicmVhaztcblx0XHR9XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2Vfd2JfZGVmYXVsdHMod2IpIHtcblx0cHVzaF9kZWZhdWx0cyh3Yi5XQlByb3BzLCBXQlByb3BzRGVmKTtcblx0cHVzaF9kZWZhdWx0cyh3Yi5DYWxjUHIsIENhbGNQckRlZik7XG5cblx0cHVzaF9kZWZhdWx0c19hcnJheSh3Yi5XQlZpZXcsIFdCVmlld0RlZik7XG5cdHB1c2hfZGVmYXVsdHNfYXJyYXkod2IuU2hlZXRzLCBTaGVldERlZik7XG5cblx0X3NzZm9wdHMuZGF0ZTE5MDQgPSBwYXJzZXhtbGJvb2wod2IuV0JQcm9wcy5kYXRlMTkwNCk7XG59XG5cbmZ1bmN0aW9uIHNhZmUxOTA0KHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdC8qIFRPRE86IHN0b3JlIGRhdGUxOTA0IHNvbWV3aGVyZSBlbHNlICovXG5cdGlmKCF3Yi5Xb3JrYm9vaykgcmV0dXJuIFwiZmFsc2VcIjtcblx0aWYoIXdiLldvcmtib29rLldCUHJvcHMpIHJldHVybiBcImZhbHNlXCI7XG5cdHJldHVybiBwYXJzZXhtbGJvb2wod2IuV29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCkgPyBcInRydWVcIiA6IFwiZmFsc2VcIjtcbn1cblxudmFyIGJhZGNoYXJzID0gLyojX19QVVJFX18qL1wiXVsqP1xcL1xcXFxcIi5zcGxpdChcIlwiKTtcbmZ1bmN0aW9uIGNoZWNrX3dzX25hbWUobi8qOnN0cmluZyovLCBzYWZlLyo6P2Jvb2xlYW4qLykvKjpib29sZWFuKi8ge1xuXHRpZihuLmxlbmd0aCA+IDMxKSB7IGlmKHNhZmUpIHJldHVybiBmYWxzZTsgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbmFtZXMgY2Fubm90IGV4Y2VlZCAzMSBjaGFyc1wiKTsgfVxuXHR2YXIgX2dvb2QgPSB0cnVlO1xuXHRiYWRjaGFycy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHRpZihuLmluZGV4T2YoYykgPT0gLTEpIHJldHVybjtcblx0XHRpZighc2FmZSkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbmFtZSBjYW5ub3QgY29udGFpbiA6IFxcXFwgLyA/ICogWyBdXCIpO1xuXHRcdF9nb29kID0gZmFsc2U7XG5cdH0pO1xuXHRyZXR1cm4gX2dvb2Q7XG59XG5mdW5jdGlvbiBjaGVja193Yl9uYW1lcyhOLCBTLCBjb2Rlcykge1xuXHROLmZvckVhY2goZnVuY3Rpb24obixpKSB7XG5cdFx0Y2hlY2tfd3NfbmFtZShuKTtcblx0XHRmb3IodmFyIGogPSAwOyBqIDwgaTsgKytqKSBpZihuID09IE5bal0pIHRocm93IG5ldyBFcnJvcihcIkR1cGxpY2F0ZSBTaGVldCBOYW1lOiBcIiArIG4pO1xuXHRcdGlmKGNvZGVzKSB7XG5cdFx0XHR2YXIgY24gPSAoUyAmJiBTW2ldICYmIFNbaV0uQ29kZU5hbWUpIHx8IG47XG5cdFx0XHRpZihjbi5jaGFyQ29kZUF0KDApID09IDk1ICYmIGNuLmxlbmd0aCA+IDIyKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgQ29kZSBOYW1lOiBXb3Jrc2hlZXRcIiArIGNuKTtcblx0XHR9XG5cdH0pO1xufVxuZnVuY3Rpb24gY2hlY2tfd2Iod2IpIHtcblx0aWYoIXdiIHx8ICF3Yi5TaGVldE5hbWVzIHx8ICF3Yi5TaGVldHMpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgV29ya2Jvb2tcIik7XG5cdGlmKCF3Yi5TaGVldE5hbWVzLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiV29ya2Jvb2sgaXMgZW1wdHlcIik7XG5cdHZhciBTaGVldHMgPSAod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suU2hlZXRzKSB8fCBbXTtcblx0Y2hlY2tfd2JfbmFtZXMod2IuU2hlZXROYW1lcywgU2hlZXRzLCAhIXdiLnZiYXJhdyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBjaGVja193cyh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0sIHdiLlNoZWV0TmFtZXNbaV0sIGkpO1xuXHQvKiBUT0RPOiB2YWxpZGF0ZSB3b3JrYm9vayAqL1xufVxuLyogMTguMiBXb3JrYm9vayAqL1xudmFyIHdibnNyZWdleCA9IC88XFx3Kzp3b3JrYm9vay87XG5mdW5jdGlvbiBwYXJzZV93Yl94bWwoZGF0YSwgb3B0cykvKjpXb3JrYm9va0ZpbGUqLyB7XG5cdGlmKCFkYXRhKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCBmaWxlXCIpO1xuXHR2YXIgd2IgPSAvKjo6KCoveyBBcHBWZXJzaW9uOnt9LCBXQlByb3BzOnt9LCBXQlZpZXc6W10sIFNoZWV0czpbXSwgQ2FsY1ByOnt9LCBOYW1lczpbXSwgeG1sbnM6IFwiXCIgfS8qOjopKi87XG5cdHZhciBwYXNzID0gZmFsc2UsIHhtbG5zID0gXCJ4bWxuc1wiO1xuXHR2YXIgZG5hbWUgPSB7fSwgZG5zdGFydCA9IDA7XG5cdGRhdGEucmVwbGFjZSh0YWdyZWdleCwgZnVuY3Rpb24geG1sX3diKHgsIGlkeCkge1xuXHRcdHZhciB5Lyo6YW55Ki8gPSBwYXJzZXhtbHRhZyh4KTtcblx0XHRzd2l0Y2goc3RyaXBfbnMoeVswXSkpIHtcblx0XHRcdGNhc2UgJzw/eG1sJzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjcgd29ya2Jvb2sgQ1RfV29ya2Jvb2sgMSAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rJzpcblx0XHRcdFx0aWYoeC5tYXRjaCh3Ym5zcmVnZXgpKSB4bWxucyA9IFwieG1sbnNcIiArIHgubWF0Y2goLzwoXFx3Kyk6LylbMV07XG5cdFx0XHRcdHdiLnhtbG5zID0geVt4bWxuc107XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC93b3JrYm9vaz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xMyBmaWxlVmVyc2lvbiBDVF9GaWxlVmVyc2lvbiA/ICovXG5cdFx0XHRjYXNlICc8ZmlsZVZlcnNpb24nOiBkZWxldGUgeVswXTsgd2IuQXBwVmVyc2lvbiA9IHk7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZpbGVWZXJzaW9uLz4nOiBjYXNlICc8L2ZpbGVWZXJzaW9uPic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjEyIGZpbGVTaGFyaW5nIENUX0ZpbGVTaGFyaW5nID8gKi9cblx0XHRcdGNhc2UgJzxmaWxlU2hhcmluZyc6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGZpbGVTaGFyaW5nLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yOCB3b3JrYm9va1ByIENUX1dvcmtib29rUHIgPyAqL1xuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHInOlxuXHRcdFx0Y2FzZSAnPHdvcmtib29rUHIvPic6XG5cdFx0XHRcdFdCUHJvcHNEZWYuZm9yRWFjaChmdW5jdGlvbih3KSB7XG5cdFx0XHRcdFx0aWYoeVt3WzBdXSA9PSBudWxsKSByZXR1cm47XG5cdFx0XHRcdFx0c3dpdGNoKHdbMl0pIHtcblx0XHRcdFx0XHRcdGNhc2UgXCJib29sXCI6IHdiLldCUHJvcHNbd1swXV0gPSBwYXJzZXhtbGJvb2woeVt3WzBdXSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSBcImludFwiOiB3Yi5XQlByb3BzW3dbMF1dID0gcGFyc2VJbnQoeVt3WzBdXSwgMTApOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6IHdiLldCUHJvcHNbd1swXV0gPSB5W3dbMF1dO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKHkuY29kZU5hbWUpIHdiLldCUHJvcHMuQ29kZU5hbWUgPSB1dGY4cmVhZCh5LmNvZGVOYW1lKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8L3dvcmtib29rUHI+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjkgd29ya2Jvb2tQcm90ZWN0aW9uIENUX1dvcmtib29rUHJvdGVjdGlvbiA/ICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQcm90ZWN0aW9uJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICc8d29ya2Jvb2tQcm90ZWN0aW9uLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xICBib29rVmlld3MgQ1RfQm9va1ZpZXdzID8gKi9cblx0XHRcdGNhc2UgJzxib29rVmlld3MnOiBjYXNlICc8Ym9va1ZpZXdzPic6IGNhc2UgJzwvYm9va1ZpZXdzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4zMCAgIHdvcmtib29rVmlldyBDVF9Cb29rVmlldyArICovXG5cdFx0XHRjYXNlICc8d29ya2Jvb2tWaWV3JzogY2FzZSAnPHdvcmtib29rVmlldy8+JzogZGVsZXRlIHlbMF07IHdiLldCVmlldy5wdXNoKHkpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvd29ya2Jvb2tWaWV3Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjIwIHNoZWV0cyBDVF9TaGVldHMgMSAqL1xuXHRcdFx0Y2FzZSAnPHNoZWV0cyc6IGNhc2UgJzxzaGVldHM+JzogY2FzZSAnPC9zaGVldHM+JzogYnJlYWs7IC8vIGFnZ3JlZ2F0ZSBzaGVldFxuXHRcdFx0LyogMTguMi4xOSAgIHNoZWV0IENUX1NoZWV0ICsgKi9cblx0XHRcdGNhc2UgJzxzaGVldCc6XG5cdFx0XHRcdHN3aXRjaCh5LnN0YXRlKSB7XG5cdFx0XHRcdFx0Y2FzZSBcImhpZGRlblwiOiB5LkhpZGRlbiA9IDE7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgXCJ2ZXJ5SGlkZGVuXCI6IHkuSGlkZGVuID0gMjsgYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogeS5IaWRkZW4gPSAwO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGRlbGV0ZSB5LnN0YXRlO1xuXHRcdFx0XHR5Lm5hbWUgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZCh5Lm5hbWUpKTtcblx0XHRcdFx0ZGVsZXRlIHlbMF07IHdiLlNoZWV0cy5wdXNoKHkpOyBicmVhaztcblx0XHRcdGNhc2UgJzwvc2hlZXQ+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTUgZnVuY3Rpb25Hcm91cHMgQ1RfRnVuY3Rpb25Hcm91cHMgPyAqL1xuXHRcdFx0Y2FzZSAnPGZ1bmN0aW9uR3JvdXBzJzogY2FzZSAnPGZ1bmN0aW9uR3JvdXBzLz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMTQgICBmdW5jdGlvbkdyb3VwIENUX0Z1bmN0aW9uR3JvdXAgKyAqL1xuXHRcdFx0Y2FzZSAnPGZ1bmN0aW9uR3JvdXAnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi45ICBleHRlcm5hbFJlZmVyZW5jZXMgQ1RfRXh0ZXJuYWxSZWZlcmVuY2VzID8gKi9cblx0XHRcdGNhc2UgJzxleHRlcm5hbFJlZmVyZW5jZXMnOiBjYXNlICc8L2V4dGVybmFsUmVmZXJlbmNlcz4nOiBjYXNlICc8ZXh0ZXJuYWxSZWZlcmVuY2VzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi44ICAgIGV4dGVybmFsUmVmZXJlbmNlIENUX0V4dGVybmFsUmVmZXJlbmNlICsgKi9cblx0XHRcdGNhc2UgJzxleHRlcm5hbFJlZmVyZW5jZSc6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjYgIGRlZmluZWROYW1lcyBDVF9EZWZpbmVkTmFtZXMgPyAqL1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lcy8+JzogYnJlYWs7XG5cdFx0XHRjYXNlICc8ZGVmaW5lZE5hbWVzPic6IGNhc2UgJzxkZWZpbmVkTmFtZXMnOiBwYXNzPXRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPC9kZWZpbmVkTmFtZXM+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjUgICAgZGVmaW5lZE5hbWUgQ1RfRGVmaW5lZE5hbWUgKyAqL1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lJzoge1xuXHRcdFx0XHRkbmFtZSA9IHt9O1xuXHRcdFx0XHRkbmFtZS5OYW1lID0gdXRmOHJlYWQoeS5uYW1lKTtcblx0XHRcdFx0aWYoeS5jb21tZW50KSBkbmFtZS5Db21tZW50ID0geS5jb21tZW50O1xuXHRcdFx0XHRpZih5LmxvY2FsU2hlZXRJZCkgZG5hbWUuU2hlZXQgPSAreS5sb2NhbFNoZWV0SWQ7XG5cdFx0XHRcdGlmKHBhcnNleG1sYm9vbCh5LmhpZGRlbnx8XCIwXCIpKSBkbmFtZS5IaWRkZW4gPSB0cnVlO1xuXHRcdFx0XHRkbnN0YXJ0ID0gaWR4ICsgeC5sZW5ndGg7XG5cdFx0XHR9XHRicmVhaztcblx0XHRcdGNhc2UgJzwvZGVmaW5lZE5hbWU+Jzoge1xuXHRcdFx0XHRkbmFtZS5SZWYgPSB1bmVzY2FwZXhtbCh1dGY4cmVhZChkYXRhLnNsaWNlKGRuc3RhcnQsIGlkeCkpKTtcblx0XHRcdFx0d2IuTmFtZXMucHVzaChkbmFtZSk7XG5cdFx0XHR9IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPGRlZmluZWROYW1lLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yICBjYWxjUHIgQ1RfQ2FsY1ByID8gKi9cblx0XHRcdGNhc2UgJzxjYWxjUHInOiBkZWxldGUgeVswXTsgd2IuQ2FsY1ByID0geTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8Y2FsY1ByLz4nOiBkZWxldGUgeVswXTsgd2IuQ2FsY1ByID0geTsgYnJlYWs7XG5cdFx0XHRjYXNlICc8L2NhbGNQcj4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4xNiBvbGVTaXplIENUX09sZVNpemUgPyAocmVmIHJlcXVpcmVkKSAqL1xuXHRcdFx0Y2FzZSAnPG9sZVNpemUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi40ICBjdXN0b21Xb3JrYm9va1ZpZXdzIENUX0N1c3RvbVdvcmtib29rVmlld3MgPyAqL1xuXHRcdFx0Y2FzZSAnPGN1c3RvbVdvcmtib29rVmlld3M+JzogY2FzZSAnPC9jdXN0b21Xb3JrYm9va1ZpZXdzPic6IGNhc2UgJzxjdXN0b21Xb3JrYm9va1ZpZXdzJzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjMgIGN1c3RvbVdvcmtib29rVmlldyBDVF9DdXN0b21Xb3JrYm9va1ZpZXcgKyAqL1xuXHRcdFx0Y2FzZSAnPGN1c3RvbVdvcmtib29rVmlldyc6IGNhc2UgJzwvY3VzdG9tV29ya2Jvb2tWaWV3Pic6IGJyZWFrO1xuXG5cdFx0XHQvKiAxOC4yLjE4IHBpdm90Q2FjaGVzIENUX1Bpdm90Q2FjaGVzID8gKi9cblx0XHRcdGNhc2UgJzxwaXZvdENhY2hlcz4nOiBjYXNlICc8L3Bpdm90Q2FjaGVzPic6IGNhc2UgJzxwaXZvdENhY2hlcyc6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4xNyBwaXZvdENhY2hlIENUX1Bpdm90Q2FjaGUgPyAqL1xuXHRcdFx0Y2FzZSAnPHBpdm90Q2FjaGUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yMSBzbWFydFRhZ1ByIENUX1NtYXJ0VGFnUHIgPyAqL1xuXHRcdFx0Y2FzZSAnPHNtYXJ0VGFnUHInOiBjYXNlICc8c21hcnRUYWdQci8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMjMgc21hcnRUYWdUeXBlcyBDVF9TbWFydFRhZ1R5cGVzID8gKi9cblx0XHRcdGNhc2UgJzxzbWFydFRhZ1R5cGVzJzogY2FzZSAnPHNtYXJ0VGFnVHlwZXM+JzogY2FzZSAnPC9zbWFydFRhZ1R5cGVzPic6IGJyZWFrO1xuXHRcdFx0LyogMTguMi4yMiBzbWFydFRhZ1R5cGUgQ1RfU21hcnRUYWdUeXBlID8gKi9cblx0XHRcdGNhc2UgJzxzbWFydFRhZ1R5cGUnOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yNCB3ZWJQdWJsaXNoaW5nIENUX1dlYlB1Ymxpc2hpbmcgPyAqL1xuXHRcdFx0Y2FzZSAnPHdlYlB1Ymxpc2hpbmcnOiBjYXNlICc8d2ViUHVibGlzaGluZy8+JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTEgZmlsZVJlY292ZXJ5UHIgQ1RfRmlsZVJlY292ZXJ5UHIgPyAqL1xuXHRcdFx0Y2FzZSAnPGZpbGVSZWNvdmVyeVByJzogY2FzZSAnPGZpbGVSZWNvdmVyeVByLz4nOiBicmVhaztcblxuXHRcdFx0LyogMTguMi4yNiB3ZWJQdWJsaXNoT2JqZWN0cyBDVF9XZWJQdWJsaXNoT2JqZWN0cyA/ICovXG5cdFx0XHRjYXNlICc8d2ViUHVibGlzaE9iamVjdHM+JzogY2FzZSAnPHdlYlB1Ymxpc2hPYmplY3RzJzogY2FzZSAnPC93ZWJQdWJsaXNoT2JqZWN0cz4nOiBicmVhaztcblx0XHRcdC8qIDE4LjIuMjUgd2ViUHVibGlzaE9iamVjdCBDVF9XZWJQdWJsaXNoT2JqZWN0ID8gKi9cblx0XHRcdGNhc2UgJzx3ZWJQdWJsaXNoT2JqZWN0JzogYnJlYWs7XG5cblx0XHRcdC8qIDE4LjIuMTAgZXh0THN0IENUX0V4dGVuc2lvbkxpc3QgPyAqL1xuXHRcdFx0Y2FzZSAnPGV4dExzdCc6IGNhc2UgJzxleHRMc3Q+JzogY2FzZSAnPC9leHRMc3Q+JzogY2FzZSAnPGV4dExzdC8+JzogYnJlYWs7XG5cdFx0XHQvKiAxOC4yLjcgIGV4dCBDVF9FeHRlbnNpb24gKyAqL1xuXHRcdFx0Y2FzZSAnPGV4dCc6IHBhc3M9dHJ1ZTsgYnJlYWs7IC8vVE9ETzogY2hlY2sgd2l0aCB2ZXJzaW9ucyBvZiBleGNlbFxuXHRcdFx0Y2FzZSAnPC9leHQ+JzogcGFzcz1mYWxzZTsgYnJlYWs7XG5cblx0XHRcdC8qIE90aGVycyAqL1xuXHRcdFx0Y2FzZSAnPEFyY2hJRCc6IGJyZWFrO1xuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQnOlxuXHRcdFx0Y2FzZSAnPEFsdGVybmF0ZUNvbnRlbnQ+JzogcGFzcz10cnVlOyBicmVhaztcblx0XHRcdGNhc2UgJzwvQWx0ZXJuYXRlQ29udGVudD4nOiBwYXNzPWZhbHNlOyBicmVhaztcblxuXHRcdFx0LyogVE9ETyAqL1xuXHRcdFx0Y2FzZSAnPHJldmlzaW9uUHRyJzogYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6IGlmKCFwYXNzICYmIG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCAnICsgeVswXSArICcgaW4gd29ya2Jvb2snKTtcblx0XHR9XG5cdFx0cmV0dXJuIHg7XG5cdH0pO1xuXHRpZihYTUxOU19tYWluLmluZGV4T2Yod2IueG1sbnMpID09PSAtMSkgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBOYW1lc3BhY2U6IFwiICsgd2IueG1sbnMpO1xuXG5cdHBhcnNlX3diX2RlZmF1bHRzKHdiKTtcblxuXHRyZXR1cm4gd2I7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3diX3htbCh3Yi8qOldvcmtib29rKi8vKjo6LCBvcHRzOj9Xcml0ZU9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBvID0gW1hNTF9IRUFERVJdO1xuXHRvW28ubGVuZ3RoXSA9IHdyaXRleHRhZygnd29ya2Jvb2snLCBudWxsLCB7XG5cdFx0J3htbG5zJzogWE1MTlNfbWFpblswXSxcblx0XHQvLyd4bWxuczpteCc6IFhNTE5TLm14LFxuXHRcdC8vJ3htbG5zOnMnOiBYTUxOU19tYWluWzBdLFxuXHRcdCd4bWxuczpyJzogWE1MTlMuclxuXHR9KTtcblxuXHR2YXIgd3JpdGVfbmFtZXMgPSAod2IuV29ya2Jvb2sgJiYgKHdiLldvcmtib29rLk5hbWVzfHxbXSkubGVuZ3RoID4gMCk7XG5cblx0LyogZmlsZVZlcnNpb24gKi9cblx0LyogZmlsZVNoYXJpbmcgKi9cblxuXHR2YXIgd29ya2Jvb2tQci8qOmFueSovID0gKHtjb2RlTmFtZTpcIlRoaXNXb3JrYm9va1wifS8qOmFueSovKTtcblx0aWYod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suV0JQcm9wcykge1xuXHRcdFdCUHJvcHNEZWYuZm9yRWFjaChmdW5jdGlvbih4KSB7XG5cdFx0XHQvKjo6IGlmKCF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suV0JQcm9wcykgdGhyb3cgXCJ1bnJlYWNoYWJsZVwiOyAqL1xuXHRcdFx0aWYoKHdiLldvcmtib29rLldCUHJvcHNbeFswXV0vKjphbnkqLykgPT0gbnVsbCkgcmV0dXJuO1xuXHRcdFx0aWYoKHdiLldvcmtib29rLldCUHJvcHNbeFswXV0vKjphbnkqLykgPT0geFsxXSkgcmV0dXJuO1xuXHRcdFx0d29ya2Jvb2tQclt4WzBdXSA9ICh3Yi5Xb3JrYm9vay5XQlByb3BzW3hbMF1dLyo6YW55Ki8pO1xuXHRcdH0pO1xuXHRcdC8qOjogaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5XQlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdFx0aWYod2IuV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSkgeyB3b3JrYm9va1ByLmNvZGVOYW1lID0gd2IuV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZTsgZGVsZXRlIHdvcmtib29rUHIuQ29kZU5hbWU7IH1cblx0fVxuXHRvW28ubGVuZ3RoXSA9ICh3cml0ZXh0YWcoJ3dvcmtib29rUHInLCBudWxsLCB3b3JrYm9va1ByKSk7XG5cblx0Lyogd29ya2Jvb2tQcm90ZWN0aW9uICovXG5cblx0dmFyIHNoZWV0cyA9IHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyB8fCBbXTtcblx0dmFyIGkgPSAwO1xuXG5cdC8qIGJvb2tWaWV3cyBvbmx5IHdyaXR0ZW4gaWYgZmlyc3Qgd29ya3NoZWV0IGlzIGhpZGRlbiAqL1xuXHRpZihzaGVldHMgJiYgc2hlZXRzWzBdICYmICEhc2hlZXRzWzBdLkhpZGRlbikge1xuXHRcdG9bby5sZW5ndGhdID0gXCI8Ym9va1ZpZXdzPlwiO1xuXHRcdGZvcihpID0gMDsgaSAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRpZighc2hlZXRzW2ldKSBicmVhaztcblx0XHRcdGlmKCFzaGVldHNbaV0uSGlkZGVuKSBicmVhaztcblx0XHR9XG5cdFx0aWYoaSA9PSB3Yi5TaGVldE5hbWVzLmxlbmd0aCkgaSA9IDA7XG5cdFx0b1tvLmxlbmd0aF0gPSAnPHdvcmtib29rVmlldyBmaXJzdFNoZWV0PVwiJyArIGkgKyAnXCIgYWN0aXZlVGFiPVwiJyArIGkgKyAnXCIvPic7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvYm9va1ZpZXdzPlwiO1xuXHR9XG5cblx0b1tvLmxlbmd0aF0gPSBcIjxzaGVldHM+XCI7XG5cdGZvcihpID0gMDsgaSAhPSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHNodCA9ICh7bmFtZTplc2NhcGV4bWwod2IuU2hlZXROYW1lc1tpXS5zbGljZSgwLDMxKSl9Lyo6YW55Ki8pO1xuXHRcdHNodC5zaGVldElkID0gXCJcIisoaSsxKTtcblx0XHRzaHRbXCJyOmlkXCJdID0gXCJySWRcIisoaSsxKTtcblx0XHRpZihzaGVldHNbaV0pIHN3aXRjaChzaGVldHNbaV0uSGlkZGVuKSB7XG5cdFx0XHRjYXNlIDE6IHNodC5zdGF0ZSA9IFwiaGlkZGVuXCI7IGJyZWFrO1xuXHRcdFx0Y2FzZSAyOiBzaHQuc3RhdGUgPSBcInZlcnlIaWRkZW5cIjsgYnJlYWs7XG5cdFx0fVxuXHRcdG9bby5sZW5ndGhdID0gKHdyaXRleHRhZygnc2hlZXQnLG51bGwsc2h0KSk7XG5cdH1cblx0b1tvLmxlbmd0aF0gPSBcIjwvc2hlZXRzPlwiO1xuXG5cdC8qIGZ1bmN0aW9uR3JvdXBzICovXG5cdC8qIGV4dGVybmFsUmVmZXJlbmNlcyAqL1xuXG5cdGlmKHdyaXRlX25hbWVzKSB7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjxkZWZpbmVkTmFtZXM+XCI7XG5cdFx0aWYod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suTmFtZXMpIHdiLldvcmtib29rLk5hbWVzLmZvckVhY2goZnVuY3Rpb24obikge1xuXHRcdFx0dmFyIGQvKjphbnkqLyA9IHtuYW1lOm4uTmFtZX07XG5cdFx0XHRpZihuLkNvbW1lbnQpIGQuY29tbWVudCA9IG4uQ29tbWVudDtcblx0XHRcdGlmKG4uU2hlZXQgIT0gbnVsbCkgZC5sb2NhbFNoZWV0SWQgPSBcIlwiK24uU2hlZXQ7XG5cdFx0XHRpZihuLkhpZGRlbikgZC5oaWRkZW4gPSBcIjFcIjtcblx0XHRcdGlmKCFuLlJlZikgcmV0dXJuO1xuXHRcdFx0b1tvLmxlbmd0aF0gPSB3cml0ZXh0YWcoJ2RlZmluZWROYW1lJywgZXNjYXBleG1sKG4uUmVmKSwgZCk7XG5cdFx0fSk7XG5cdFx0b1tvLmxlbmd0aF0gPSBcIjwvZGVmaW5lZE5hbWVzPlwiO1xuXHR9XG5cblx0LyogY2FsY1ByICovXG5cdC8qIG9sZVNpemUgKi9cblx0LyogY3VzdG9tV29ya2Jvb2tWaWV3cyAqL1xuXHQvKiBwaXZvdENhY2hlcyAqL1xuXHQvKiBzbWFydFRhZ1ByICovXG5cdC8qIHNtYXJ0VGFnVHlwZXMgKi9cblx0Lyogd2ViUHVibGlzaGluZyAqL1xuXHQvKiBmaWxlUmVjb3ZlcnlQciAqL1xuXHQvKiB3ZWJQdWJsaXNoT2JqZWN0cyAqL1xuXHQvKiBleHRMc3QgKi9cblxuXHRpZihvLmxlbmd0aD4yKXsgb1tvLmxlbmd0aF0gPSAnPC93b3JrYm9vaz4nOyBvWzFdPW9bMV0ucmVwbGFjZShcIi8+XCIsXCI+XCIpOyB9XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBbTVMtWExTQl0gMi40LjMwNCBCcnRCdW5kbGVTaCAqL1xuZnVuY3Rpb24gcGFyc2VfQnJ0QnVuZGxlU2goZGF0YSwgbGVuZ3RoLyo6bnVtYmVyKi8pIHtcblx0dmFyIHogPSB7fTtcblx0ei5IaWRkZW4gPSBkYXRhLnJlYWRfc2hpZnQoNCk7IC8vaHNTdGF0ZSBTVF9TaGVldFN0YXRlXG5cdHouaVRhYklEID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHR6LnN0clJlbElEID0gcGFyc2VfUmVsSUQoZGF0YSxsZW5ndGgtOCk7XG5cdHoubmFtZSA9IHBhcnNlX1hMV2lkZVN0cmluZyhkYXRhKTtcblx0cmV0dXJuIHo7XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRCdW5kbGVTaChkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxMjcpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIGRhdGEuSGlkZGVuKTtcblx0by53cml0ZV9zaGlmdCg0LCBkYXRhLmlUYWJJRCk7XG5cdHdyaXRlX1JlbElEKGRhdGEuc3RyUmVsSUQsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoZGF0YS5uYW1lLnNsaWNlKDAsMzEpLCBvKTtcblx0cmV0dXJuIG8ubGVuZ3RoID4gby5sID8gby5zbGljZSgwLCBvLmwpIDogbztcbn1cblxuLyogW01TLVhMU0JdIDIuNC44MTUgQnJ0V2JQcm9wICovXG5mdW5jdGlvbiBwYXJzZV9CcnRXYlByb3AoZGF0YSwgbGVuZ3RoKS8qOldCUHJvcHMqLyB7XG5cdHZhciBvLyo6V0JQcm9wcyovID0gKHt9Lyo6YW55Ki8pO1xuXHR2YXIgZmxhZ3MgPSBkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG8uZGVmYXVsdFRoZW1lVmVyc2lvbiA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIHN0ck5hbWUgPSAobGVuZ3RoID4gOCkgPyBwYXJzZV9YTFdpZGVTdHJpbmcoZGF0YSkgOiBcIlwiO1xuXHRpZihzdHJOYW1lLmxlbmd0aCA+IDApIG8uQ29kZU5hbWUgPSBzdHJOYW1lO1xuXHRvLmF1dG9Db21wcmVzc1BpY3R1cmVzID0gISEoZmxhZ3MgJiAweDEwMDAwKTtcblx0by5iYWNrdXBGaWxlID0gISEoZmxhZ3MgJiAweDQwKTtcblx0by5jaGVja0NvbXBhdGliaWxpdHkgPSAhIShmbGFncyAmIDB4MTAwMCk7XG5cdG8uZGF0ZTE5MDQgPSAhIShmbGFncyAmIDB4MDEpO1xuXHRvLmZpbHRlclByaXZhY3kgPSAhIShmbGFncyAmIDB4MDgpO1xuXHRvLmhpZGVQaXZvdEZpZWxkTGlzdCA9ICEhKGZsYWdzICYgMHg0MDApO1xuXHRvLnByb21wdGVkU29sdXRpb25zID0gISEoZmxhZ3MgJiAweDEwKTtcblx0by5wdWJsaXNoSXRlbXMgPSAhIShmbGFncyAmIDB4ODAwKTtcblx0by5yZWZyZXNoQWxsQ29ubmVjdGlvbnMgPSAhIShmbGFncyAmIDB4NDAwMDApO1xuXHRvLnNhdmVFeHRlcm5hbExpbmtWYWx1ZXMgPSAhIShmbGFncyAmIDB4ODApO1xuXHRvLnNob3dCb3JkZXJVbnNlbGVjdGVkVGFibGVzID0gISEoZmxhZ3MgJiAweDA0KTtcblx0by5zaG93SW5rQW5ub3RhdGlvbiA9ICEhKGZsYWdzICYgMHgyMCk7XG5cdG8uc2hvd09iamVjdHMgPSBbXCJhbGxcIiwgXCJwbGFjZWhvbGRlcnNcIiwgXCJub25lXCJdWyhmbGFncyA+PiAxMykgJiAweDAzXTtcblx0by5zaG93UGl2b3RDaGFydEZpbHRlciA9ICEhKGZsYWdzICYgMHg4MDAwKTtcblx0by51cGRhdGVMaW5rcyA9IFtcInVzZXJTZXRcIiwgXCJuZXZlclwiLCBcImFsd2F5c1wiXVsoZmxhZ3MgPj4gOCkgJiAweDAzXTtcblx0cmV0dXJuIG87XG59XG5mdW5jdGlvbiB3cml0ZV9CcnRXYlByb3AoZGF0YS8qOj9XQlByb3BzKi8sIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDcyKTtcblx0dmFyIGZsYWdzID0gMDtcblx0aWYoZGF0YSkge1xuXHRcdC8qIFRPRE86IG1pcnJvciBwYXJzZV9CcnRXYlByb3AgZmllbGRzICovXG5cdFx0aWYoZGF0YS5maWx0ZXJQcml2YWN5KSBmbGFncyB8PSAweDA4O1xuXHR9XG5cdG8ud3JpdGVfc2hpZnQoNCwgZmxhZ3MpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR3cml0ZV9YTFNCQ29kZU5hbWUoZGF0YSAmJiBkYXRhLkNvZGVOYW1lIHx8IFwiVGhpc1dvcmtib29rXCIsIG8pO1xuXHRyZXR1cm4gby5zbGljZSgwLCBvLmwpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9CcnRGUlRBcmNoSUQkKGRhdGEsIGxlbmd0aCkge1xuXHR2YXIgbyA9IHt9O1xuXHRkYXRhLnJlYWRfc2hpZnQoNCk7XG5cdG8uQXJjaElEID0gZGF0YS5yZWFkX3NoaWZ0KDQpO1xuXHRkYXRhLmwgKz0gbGVuZ3RoIC0gODtcblx0cmV0dXJuIG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuNjg3IEJydE5hbWUgKi9cbmZ1bmN0aW9uIHBhcnNlX0JydE5hbWUoZGF0YSwgbGVuZ3RoLCBvcHRzKSB7XG5cdHZhciBlbmQgPSBkYXRhLmwgKyBsZW5ndGg7XG5cdGRhdGEubCArPSA0OyAvL3ZhciBmbGFncyA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0ZGF0YS5sICs9IDE7IC8vdmFyIGNoS2V5ID0gZGF0YS5yZWFkX3NoaWZ0KDEpO1xuXHR2YXIgaXRhYiA9IGRhdGEucmVhZF9zaGlmdCg0KTtcblx0dmFyIG5hbWUgPSBwYXJzZV9YTE5hbWVXaWRlU3RyaW5nKGRhdGEpO1xuXHR2YXIgZm9ybXVsYSA9IHBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYShkYXRhLCAwLCBvcHRzKTtcblx0dmFyIGNvbW1lbnQgPSBwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZyhkYXRhKTtcblx0Ly9pZigwIC8qIGZQcm9jICovKSB7XG5cdFx0Ly8gdW51c2Vkc3RyaW5nMTogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0XHQvLyBkZXNjcmlwdGlvbjogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0XHQvLyBoZWxwVG9waWM6IFhMTnVsbGFibGVXaWRlU3RyaW5nXG5cdFx0Ly8gdW51c2Vkc3RyaW5nMjogWExOdWxsYWJsZVdpZGVTdHJpbmdcblx0Ly99XG5cdGRhdGEubCA9IGVuZDtcblx0dmFyIG91dCA9ICh7TmFtZTpuYW1lLCBQdGc6Zm9ybXVsYX0vKjphbnkqLyk7XG5cdGlmKGl0YWIgPCAweEZGRkZGRkYpIG91dC5TaGVldCA9IGl0YWI7XG5cdGlmKGNvbW1lbnQpIG91dC5Db21tZW50ID0gY29tbWVudDtcblx0cmV0dXJuIG91dDtcbn1cblxuLyogW01TLVhMU0JdIDIuMS43LjYxIFdvcmtib29rICovXG5mdW5jdGlvbiBwYXJzZV93Yl9iaW4oZGF0YSwgb3B0cykvKjpXb3JrYm9va0ZpbGUqLyB7XG5cdHZhciB3YiA9IHsgQXBwVmVyc2lvbjp7fSwgV0JQcm9wczp7fSwgV0JWaWV3OltdLCBTaGVldHM6W10sIENhbGNQcjp7fSwgeG1sbnM6IFwiXCIgfTtcblx0dmFyIHN0YXRlLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciBwYXNzID0gZmFsc2U7XG5cblx0aWYoIW9wdHMpIG9wdHMgPSB7fTtcblx0b3B0cy5iaWZmID0gMTI7XG5cblx0dmFyIE5hbWVzID0gW107XG5cdHZhciBzdXBib29rcyA9IChbW11dLyo6YW55Ki8pO1xuXHRzdXBib29rcy5TaGVldE5hbWVzID0gW107XG5cdHN1cGJvb2tzLlhUSSA9IFtdO1xuXG5cdFhMU0JSZWNvcmRFbnVtWzB4MDAxMF0gPSB7IG46XCJCcnRGUlRBcmNoSUQkXCIsIGY6cGFyc2VfQnJ0RlJUQXJjaElEJCB9O1xuXG5cdHJlY29yZGhvcHBlcihkYXRhLCBmdW5jdGlvbiBob3BwZXJfd2IodmFsLCBSLCBSVCkge1xuXHRcdHN3aXRjaChSVCkge1xuXHRcdFx0Y2FzZSAweDAwOUM6IC8qICdCcnRCdW5kbGVTaCcgKi9cblx0XHRcdFx0c3VwYm9va3MuU2hlZXROYW1lcy5wdXNoKHZhbC5uYW1lKTtcblx0XHRcdFx0d2IuU2hlZXRzLnB1c2godmFsKTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDk5OiAvKiAnQnJ0V2JQcm9wJyAqL1xuXHRcdFx0XHR3Yi5XQlByb3BzID0gdmFsOyBicmVhaztcblxuXHRcdFx0Y2FzZSAweDAwMjc6IC8qICdCcnROYW1lJyAqL1xuXHRcdFx0XHRpZih2YWwuU2hlZXQgIT0gbnVsbCkgb3B0cy5TSUQgPSB2YWwuU2hlZXQ7XG5cdFx0XHRcdHZhbC5SZWYgPSBzdHJpbmdpZnlfZm9ybXVsYSh2YWwuUHRnLCBudWxsLCBudWxsLCBzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdGRlbGV0ZSBvcHRzLlNJRDtcblx0XHRcdFx0ZGVsZXRlIHZhbC5QdGc7XG5cdFx0XHRcdE5hbWVzLnB1c2godmFsKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDQwQzogLyogJ0JydE5hbWVFeHQnICovIGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDE2NTogLyogJ0JydFN1cFNlbGYnICovXG5cdFx0XHRjYXNlIDB4MDE2NjogLyogJ0JydFN1cFNhbWUnICovXG5cdFx0XHRjYXNlIDB4MDE2MzogLyogJ0JydFN1cEJvb2tTcmMnICovXG5cdFx0XHRjYXNlIDB4MDI5QjogLyogJ0JydFN1cEFkZGluJyAqL1xuXHRcdFx0XHRpZighc3VwYm9va3NbMF0ubGVuZ3RoKSBzdXBib29rc1swXSA9IFtSVCwgdmFsXTtcblx0XHRcdFx0ZWxzZSBzdXBib29rcy5wdXNoKFtSVCwgdmFsXSk7XG5cdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aCAtIDFdLlhUSSA9IFtdO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgMHgwMTZBOiAvKiAnQnJ0RXh0ZXJuU2hlZXQnICovXG5cdFx0XHRcdGlmKHN1cGJvb2tzLmxlbmd0aCA9PT0gMCkgeyBzdXBib29rc1swXSA9IFtdOyBzdXBib29rc1swXS5YVEkgPSBbXTsgfVxuXHRcdFx0XHRzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkgPSBzdXBib29rc1tzdXBib29rcy5sZW5ndGggLSAxXS5YVEkuY29uY2F0KHZhbCk7XG5cdFx0XHRcdHN1cGJvb2tzLlhUSSA9IHN1cGJvb2tzLlhUSS5jb25jYXQodmFsKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIDB4MDE2OTogLyogJ0JydFBsYWNlaG9sZGVyTmFtZScgKi9cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwODE3OiAvKiAnQnJ0QWJzUGF0aDE1JyAqL1xuXHRcdFx0Y2FzZSAweDAwOUU6IC8qICdCcnRCb29rVmlldycgKi9cblx0XHRcdGNhc2UgMHgwMDhGOiAvKiAnQnJ0QmVnaW5CdW5kbGVTaHMnICovXG5cdFx0XHRjYXNlIDB4MDI5ODogLyogJ0JydEJlZ2luRm5Hcm91cCcgKi9cblx0XHRcdGNhc2UgMHgwMTYxOiAvKiAnQnJ0QmVnaW5FeHRlcm5hbHMnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBjYXNlICdCcnRNb2RlbFRpbWVHcm91cGluZ0NhbGNDb2wnICovXG5cdFx0XHRjYXNlIDB4MEMwMDogLyogJ0JydFVpZCcgKi9cblx0XHRcdGNhc2UgMHgwQzAxOiAvKiAnQnJ0UmV2aXNpb25QdHInICovXG5cdFx0XHRjYXNlIDB4MDIxNjogLyogJ0JydEJvb2tQcm90ZWN0aW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyQTU6IC8qICdCcnRCb29rUHJvdGVjdGlvbklzbycgKi9cblx0XHRcdGNhc2UgMHgwMDlEOiAvKiAnQnJ0Q2FsY1Byb3AnICovXG5cdFx0XHRjYXNlIDB4MDI2MjogLyogJ0JydENyYXNoUmVjRXJyJyAqL1xuXHRcdFx0Y2FzZSAweDA4MDI6IC8qICdCcnREZWNvdXBsZWRQaXZvdENhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDA5QjogLyogJ0JydEZpbGVSZWNvdmVyJyAqL1xuXHRcdFx0Y2FzZSAweDAyMjQ6IC8qICdCcnRGaWxlU2hhcmluZycgKi9cblx0XHRcdGNhc2UgMHgwMkE0OiAvKiAnQnJ0RmlsZVNoYXJpbmdJc28nICovXG5cdFx0XHRjYXNlIDB4MDA4MDogLyogJ0JydEZpbGVWZXJzaW9uJyAqL1xuXHRcdFx0Y2FzZSAweDAyOTk6IC8qICdCcnRGbkdyb3VwJyAqL1xuXHRcdFx0Y2FzZSAweDA4NTA6IC8qICdCcnRNb2RlbFJlbGF0aW9uc2hpcCcgKi9cblx0XHRcdGNhc2UgMHgwODREOiAvKiAnQnJ0TW9kZWxUYWJsZScgKi9cblx0XHRcdGNhc2UgMHgwMjI1OiAvKiAnQnJ0T2xlU2l6ZScgKi9cblx0XHRcdGNhc2UgMHgwODA1OiAvKiAnQnJ0UGl2b3RUYWJsZVJlZicgKi9cblx0XHRcdGNhc2UgMHgwMjU0OiAvKiAnQnJ0U21hcnRUYWdUeXBlJyAqL1xuXHRcdFx0Y2FzZSAweDA4MUM6IC8qICdCcnRUYWJsZVNsaWNlckNhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDgxQjogLyogJ0JydFRhYmxlU2xpY2VyQ2FjaGVJRHMnICovXG5cdFx0XHRjYXNlIDB4MDgyMjogLyogJ0JydFRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSUQnICovXG5cdFx0XHRjYXNlIDB4MDE4RDogLyogJ0JydFVzZXJCb29rVmlldycgKi9cblx0XHRcdGNhc2UgMHgwMDlBOiAvKiAnQnJ0V2JGYWN0b2lkJyAqL1xuXHRcdFx0Y2FzZSAweDA0NUQ6IC8qICdCcnRXYlByb3AxNCcgKi9cblx0XHRcdGNhc2UgMHgwMjI5OiAvKiAnQnJ0V2ViT3B0JyAqL1xuXHRcdFx0Y2FzZSAweDA4MkI6IC8qICdCcnRXb3JrQm9va1ByMTUnICovXG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlIDB4MDAyMzogLyogJ0JydEZSVEJlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjQ6IC8qICdCcnRGUlRFbmQnICovXG5cdFx0XHRcdHN0YXRlLnBvcCgpOyBwYXNzID0gZmFsc2U7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjU6IC8qICdCcnRBQ0JlZ2luJyAqL1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFJUKTsgcGFzcyA9IHRydWU7IGJyZWFrO1xuXHRcdFx0Y2FzZSAweDAwMjY6IC8qICdCcnRBQ0VuZCcgKi9cblx0XHRcdFx0c3RhdGUucG9wKCk7IHBhc3MgPSBmYWxzZTsgYnJlYWs7XG5cblx0XHRcdGNhc2UgMHgwMDEwOiAvKiAnQnJ0RlJUQXJjaElEJCcgKi8gYnJlYWs7XG5cblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGlmKFIuVCl7LyogZW1wdHkgKi99XG5cdFx0XHRcdGVsc2UgaWYoIXBhc3MgfHwgKG9wdHMuV1RGICYmIHN0YXRlW3N0YXRlLmxlbmd0aC0xXSAhPSAweDAwMjUgLyogQnJ0QUNCZWdpbiAqLyAmJiBzdGF0ZVtzdGF0ZS5sZW5ndGgtMV0gIT0gMHgwMDIzIC8qIEJydEZSVEJlZ2luICovKSkgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCByZWNvcmQgMHhcIiArIFJULnRvU3RyaW5nKDE2KSk7XG5cdFx0fVxuXHR9LCBvcHRzKTtcblxuXHRwYXJzZV93Yl9kZWZhdWx0cyh3Yik7XG5cblx0Ly8gJEZsb3dJZ25vcmVcblx0d2IuTmFtZXMgPSBOYW1lcztcblxuXHQod2IvKjphbnkqLykuc3VwYm9va3MgPSBzdXBib29rcztcblx0cmV0dXJuIHdiO1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CVU5ETEVTSFMoYmEsIHdiLyo6Oiwgb3B0cyovKSB7XG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDhGIC8qIEJydEJlZ2luQnVuZGxlU2hzICovKTtcblx0Zm9yKHZhciBpZHggPSAwOyBpZHggIT0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraWR4KSB7XG5cdFx0dmFyIHZpeiA9IHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4gfHwgMDtcblx0XHR2YXIgZCA9IHsgSGlkZGVuOiB2aXosIGlUYWJJRDogaWR4KzEsIHN0clJlbElEOiAncklkJyArIChpZHgrMSksIG5hbWU6IHdiLlNoZWV0TmFtZXNbaWR4XSB9O1xuXHRcdHdyaXRlX3JlY29yZChiYSwgMHgwMDlDIC8qIEJydEJ1bmRsZVNoICovLCB3cml0ZV9CcnRCdW5kbGVTaChkKSk7XG5cdH1cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTAgLyogQnJ0RW5kQnVuZGxlU2hzICovKTtcbn1cblxuLyogW01TLVhMU0JdIDIuNC42NDkgQnJ0RmlsZVZlcnNpb24gKi9cbmZ1bmN0aW9uIHdyaXRlX0JydEZpbGVWZXJzaW9uKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDEyNyk7XG5cdGZvcih2YXIgaSA9IDA7IGkgIT0gNDsgKytpKSBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoXCJTaGVldEpTXCIsIG8pO1xuXHR3cml0ZV9YTFdpZGVTdHJpbmcoWExTWC52ZXJzaW9uLCBvKTtcblx0d3JpdGVfWExXaWRlU3RyaW5nKFhMU1gudmVyc2lvbiwgbyk7XG5cdHdyaXRlX1hMV2lkZVN0cmluZyhcIjcyNjJcIiwgbyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzAxIEJydEJvb2tWaWV3ICovXG5mdW5jdGlvbiB3cml0ZV9CcnRCb29rVmlldyhpZHgsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDI5KTtcblx0by53cml0ZV9zaGlmdCgtNCwgMCk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIDQ2MCk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgIDI4ODAwKTtcblx0by53cml0ZV9zaGlmdCg0LCAgMTc2MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICA1MDApO1xuXHRvLndyaXRlX3NoaWZ0KDQsICBpZHgpO1xuXHRvLndyaXRlX3NoaWZ0KDQsICBpZHgpO1xuXHR2YXIgZmxhZ3MgPSAweDc4O1xuXHRvLndyaXRlX3NoaWZ0KDEsICBmbGFncyk7XG5cdHJldHVybiBvLmxlbmd0aCA+IG8ubCA/IG8uc2xpY2UoMCwgby5sKSA6IG87XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0JPT0tWSUVXUyhiYSwgd2IvKjo6LCBvcHRzKi8pIHtcblx0LyogcmVxdWlyZWQgaWYgaGlkZGVuIHRhYiBhcHBlYXJzIGJlZm9yZSB2aXNpYmxlIHRhYiAqL1xuXHRpZighd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLlNoZWV0cykgcmV0dXJuO1xuXHR2YXIgc2hlZXRzID0gd2IuV29ya2Jvb2suU2hlZXRzO1xuXHR2YXIgaSA9IDAsIHZpc3RhYiA9IC0xLCBoaWRkZW4gPSAtMTtcblx0Zm9yKDsgaSA8IHNoZWV0cy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKCFzaGVldHNbaV0gfHwgIXNoZWV0c1tpXS5IaWRkZW4gJiYgdmlzdGFiID09IC0xKSB2aXN0YWIgPSBpO1xuXHRcdGVsc2UgaWYoc2hlZXRzW2ldLkhpZGRlbiA9PSAxICYmIGhpZGRlbiA9PSAtMSkgaGlkZGVuID0gaTtcblx0fVxuXHRpZihoaWRkZW4gPiB2aXN0YWIpIHJldHVybjtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODcgLyogQnJ0QmVnaW5Cb29rVmlld3MgKi8pO1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA5RSAvKiBCcnRCb29rVmlldyAqLywgd3JpdGVfQnJ0Qm9va1ZpZXcodmlzdGFiKSk7XG5cdC8qIDEqKEJydEJvb2tWaWV3ICpGUlQpICovXG5cdHdyaXRlX3JlY29yZChiYSwgMHgwMDg4IC8qIEJydEVuZEJvb2tWaWV3cyAqLyk7XG59XG5cbi8qIFtNUy1YTFNCXSAyLjQuMzA1IEJydENhbGNQcm9wICovXG4vKmZ1bmN0aW9uIHdyaXRlX0JydENhbGNQcm9wKGRhdGEsIG8pIHtcblx0aWYoIW8pIG8gPSBuZXdfYnVmKDI2KTtcblx0by53cml0ZV9zaGlmdCg0LDApOyAvLyBmb3JjZSByZWNhbGNcblx0by53cml0ZV9zaGlmdCg0LDEpO1xuXHRvLndyaXRlX3NoaWZ0KDQsMCk7XG5cdHdyaXRlX1hudW0oMCwgbyk7XG5cdG8ud3JpdGVfc2hpZnQoLTQsIDEwMjMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDB4MzMpO1xuXHRvLndyaXRlX3NoaWZ0KDEsIDB4MDApO1xuXHRyZXR1cm4gbztcbn0qL1xuXG4vKiBbTVMtWExTQl0gMi40LjY0NiBCcnRGaWxlUmVjb3ZlciAqL1xuLypmdW5jdGlvbiB3cml0ZV9CcnRGaWxlUmVjb3ZlcihkYXRhLCBvKSB7XG5cdGlmKCFvKSBvID0gbmV3X2J1ZigxKTtcblx0by53cml0ZV9zaGlmdCgxLDApO1xuXHRyZXR1cm4gbztcbn0qL1xuXG4vKiBbTVMtWExTQl0gMi4xLjcuNjEgV29ya2Jvb2sgKi9cbmZ1bmN0aW9uIHdyaXRlX3diX2Jpbih3Yiwgb3B0cykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODMgLyogQnJ0QmVnaW5Cb29rICovKTtcblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwODAgLyogQnJ0RmlsZVZlcnNpb24gKi8sIHdyaXRlX0JydEZpbGVWZXJzaW9uKCkpO1xuXHQvKiBbW0JydEZpbGVTaGFyaW5nSXNvXSBCcnRGaWxlU2hhcmluZ10gKi9cblx0d3JpdGVfcmVjb3JkKGJhLCAweDAwOTkgLyogQnJ0V2JQcm9wICovLCB3cml0ZV9CcnRXYlByb3Aod2IuV29ya2Jvb2sgJiYgd2IuV29ya2Jvb2suV0JQcm9wcyB8fCBudWxsKSk7XG5cdC8qIFtBQ0FCU1BBVEhdICovXG5cdC8qIFtbQnJ0Qm9va1Byb3RlY3Rpb25Jc29dIEJydEJvb2tQcm90ZWN0aW9uXSAqL1xuXHR3cml0ZV9CT09LVklFV1MoYmEsIHdiLCBvcHRzKTtcblx0d3JpdGVfQlVORExFU0hTKGJhLCB3Yiwgb3B0cyk7XG5cdC8qIFtGTkdST1VQXSAqL1xuXHQvKiBbRVhURVJOQUxTXSAqL1xuXHQvKiAqQnJ0TmFtZSAqL1xuXHQvKiB3cml0ZV9yZWNvcmQoYmEsIDB4MDA5RCBCcnRDYWxjUHJvcCwgd3JpdGVfQnJ0Q2FsY1Byb3AoKSk7ICovXG5cdC8qIFtCcnRPbGVTaXplXSAqL1xuXHQvKiAqKEJydFVzZXJCb29rVmlldyAqRlJUKSAqL1xuXHQvKiBbUElWT1RDQUNIRUlEU10gKi9cblx0LyogW0JydFdiRmFjdG9pZF0gKi9cblx0LyogW1NNQVJUVEFHVFlQRVNdICovXG5cdC8qIFtCcnRXZWJPcHRdICovXG5cdC8qIHdyaXRlX3JlY29yZChiYSwgMHgwMDlCIEJydEZpbGVSZWNvdmVyLCB3cml0ZV9CcnRGaWxlUmVjb3ZlcigpKTsgKi9cblx0LyogW1dFQlBVQklURU1TXSAqL1xuXHQvKiBbQ1JFUlJTXSAqL1xuXHQvKiBGUlRXT1JLQk9PSyAqL1xuXHR3cml0ZV9yZWNvcmQoYmEsIDB4MDA4NCAvKiBCcnRFbmRCb29rICovKTtcblxuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5mdW5jdGlvbiBwYXJzZV93YihkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2tGaWxlKi8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2Vfd2JfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3diX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3dzKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV93c19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX3dzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9jcyhkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIGlkeC8qOm51bWJlciovLCBvcHRzLCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpLyo6V29ya3NoZWV0Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY3NfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdHJldHVybiBwYXJzZV9jc194bWwoKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcbn1cblxuZnVuY3Rpb24gcGFyc2VfbXMoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBpZHgvKjpudW1iZXIqLywgb3B0cywgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKS8qOldvcmtzaGVldCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX21zX2JpbigoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xuXHRyZXR1cm4gcGFyc2VfbXNfeG1sKChkYXRhLyo6YW55Ki8pLCBvcHRzLCBpZHgsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2RzKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHJlbHMsIHdiLCB0aGVtZXMsIHN0eWxlcykvKjpXb3Jrc2hlZXQqLyB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV9kc19iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMsIGlkeCwgcmVscywgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0cmV0dXJuIHBhcnNlX2RzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cywgaWR4LCByZWxzLCB3YiwgdGhlbWVzLCBzdHlsZXMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9zdHkoZGF0YSwgbmFtZS8qOnN0cmluZyovLCB0aGVtZXMsIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3N0eV9iaW4oKGRhdGEvKjphbnkqLyksIHRoZW1lcywgb3B0cyk7XG5cdHJldHVybiBwYXJzZV9zdHlfeG1sKChkYXRhLyo6YW55Ki8pLCB0aGVtZXMsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV90aGVtZShkYXRhLyo6c3RyaW5nKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gcGFyc2VfdGhlbWVfeG1sKGRhdGEsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBwYXJzZV9zc3QoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOlNTVCovIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3NzdF9iaW4oKGRhdGEvKjphbnkqLyksIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2Vfc3N0X3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2NtbnQoZGF0YSwgbmFtZS8qOnN0cmluZyovLCBvcHRzKS8qOkFycmF5PFJhd0NvbW1lbnQ+Ki8ge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY29tbWVudHNfYmluKChkYXRhLyo6YW55Ki8pLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX2NvbW1lbnRzX3htbCgoZGF0YS8qOmFueSovKSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX2NjKGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRpZihuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiKSByZXR1cm4gcGFyc2VfY2NfYmluKChkYXRhLyo6YW55Ki8pLCBuYW1lLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX2NjX3htbCgoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsaW5rKGRhdGEsIHJlbCwgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdGlmKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIpIHJldHVybiBwYXJzZV94bGlua19iaW4oKGRhdGEvKjphbnkqLyksIHJlbCwgbmFtZSwgb3B0cyk7XG5cdHJldHVybiBwYXJzZV94bGlua194bWwoKGRhdGEvKjphbnkqLyksIHJlbCwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsbWV0YShkYXRhLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0aWYobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIikgcmV0dXJuIHBhcnNlX3hsbWV0YV9iaW4oKGRhdGEvKjphbnkqLyksIG5hbWUsIG9wdHMpO1xuXHRyZXR1cm4gcGFyc2VfeGxtZXRhX3htbCgoZGF0YS8qOmFueSovKSwgbmFtZSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3diKHdiLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfd2JfYmluIDogd3JpdGVfd2JfeG1sKSh3Yiwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzKGRhdGEvKjpudW1iZXIqLywgbmFtZS8qOnN0cmluZyovLCBvcHRzLCB3Yi8qOldvcmtib29rKi8sIHJlbHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfd3NfYmluIDogd3JpdGVfd3NfeG1sKShkYXRhLCBvcHRzLCB3YiwgcmVscyk7XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gd3JpdGVfY3MoZGF0YS8qOm51bWJlciovLCBuYW1lLyo6c3RyaW5nKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLywgcmVscykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9jc19iaW4gOiB3cml0ZV9jc194bWwpKGRhdGEsIG9wdHMsIHdiLCByZWxzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfc3R5KGRhdGEsIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9zdHlfYmluIDogd3JpdGVfc3R5X3htbCkoZGF0YSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3NzdChkYXRhLyo6U1NUKi8sIG5hbWUvKjpzdHJpbmcqLywgb3B0cykge1xuXHRyZXR1cm4gKG5hbWUuc2xpY2UoLTQpPT09XCIuYmluXCIgPyB3cml0ZV9zc3RfYmluIDogd3JpdGVfc3N0X3htbCkoZGF0YSwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NtbnQoZGF0YS8qOkFycmF5PGFueT4qLywgbmFtZS8qOnN0cmluZyovLCBvcHRzKSB7XG5cdHJldHVybiAobmFtZS5zbGljZSgtNCk9PT1cIi5iaW5cIiA/IHdyaXRlX2NvbW1lbnRzX2JpbiA6IHdyaXRlX2NvbW1lbnRzX3htbCkoZGF0YSwgb3B0cyk7XG59XG4vKlxuZnVuY3Rpb24gd3JpdGVfY2MoZGF0YSwgbmFtZTpzdHJpbmcsIG9wdHMpIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfY2NfYmluIDogd3JpdGVfY2NfeG1sKShkYXRhLCBvcHRzKTtcbn1cbiovXG5cbmZ1bmN0aW9uIHdyaXRlX3hsbWV0YShuYW1lLyo6c3RyaW5nKi8pIHtcblx0cmV0dXJuIChuYW1lLnNsaWNlKC00KT09PVwiLmJpblwiID8gd3JpdGVfeGxtZXRhX2JpbiA6IHdyaXRlX3hsbWV0YV94bWwpKCk7XG59XG52YXIgYXR0cmVnZXhnMj0vKFtcXHc6XSspPSgoPzpcIikoW15cIl0qKSg/OlwiKXwoPzonKShbXiddKikoPzonKSkvZztcbnZhciBhdHRyZWdleDI9LyhbXFx3Ol0rKT0oKD86XCIpKD86W15cIl0qKSg/OlwiKXwoPzonKSg/OlteJ10qKSg/OicpKS87XG5mdW5jdGlvbiB4bG1sX3BhcnNleG1sdGFnKHRhZy8qOnN0cmluZyovLCBza2lwX3Jvb3QvKjo/Ym9vbGVhbiovKSB7XG5cdHZhciB3b3JkcyA9IHRhZy5zcGxpdCgvXFxzKy8pO1xuXHR2YXIgei8qOmFueSovID0gKFtdLyo6YW55Ki8pOyBpZighc2tpcF9yb290KSB6WzBdID0gd29yZHNbMF07XG5cdGlmKHdvcmRzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIHo7XG5cdHZhciBtID0gdGFnLm1hdGNoKGF0dHJlZ2V4ZzIpLCB5LCBqLCB3LCBpO1xuXHRpZihtKSBmb3IoaSA9IDA7IGkgIT0gbS5sZW5ndGg7ICsraSkge1xuXHRcdHkgPSBtW2ldLm1hdGNoKGF0dHJlZ2V4Mik7XG4vKjo6IGlmKCF5IHx8ICF5WzJdKSBjb250aW51ZTsgKi9cblx0XHRpZigoaj15WzFdLmluZGV4T2YoXCI6XCIpKSA9PT0gLTEpIHpbeVsxXV0gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0ZWxzZSB7XG5cdFx0XHRpZih5WzFdLnNsaWNlKDAsNikgPT09IFwieG1sbnM6XCIpIHcgPSBcInhtbG5zXCIreVsxXS5zbGljZSg2KTtcblx0XHRcdGVsc2UgdyA9IHlbMV0uc2xpY2UoaisxKTtcblx0XHRcdHpbd10gPSB5WzJdLnNsaWNlKDEseVsyXS5sZW5ndGgtMSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiB6O1xufVxuZnVuY3Rpb24geGxtbF9wYXJzZXhtbHRhZ29iaih0YWcvKjpzdHJpbmcqLykge1xuXHR2YXIgd29yZHMgPSB0YWcuc3BsaXQoL1xccysvKTtcblx0dmFyIHogPSB7fTtcblx0aWYod29yZHMubGVuZ3RoID09PSAxKSByZXR1cm4gejtcblx0dmFyIG0gPSB0YWcubWF0Y2goYXR0cmVnZXhnMiksIHksIGosIHcsIGk7XG5cdGlmKG0pIGZvcihpID0gMDsgaSAhPSBtLmxlbmd0aDsgKytpKSB7XG5cdFx0eSA9IG1baV0ubWF0Y2goYXR0cmVnZXgyKTtcbi8qOjogaWYoIXkgfHwgIXlbMl0pIGNvbnRpbnVlOyAqL1xuXHRcdGlmKChqPXlbMV0uaW5kZXhPZihcIjpcIikpID09PSAtMSkgelt5WzFdXSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHRlbHNlIHtcblx0XHRcdGlmKHlbMV0uc2xpY2UoMCw2KSA9PT0gXCJ4bWxuczpcIikgdyA9IFwieG1sbnNcIit5WzFdLnNsaWNlKDYpO1xuXHRcdFx0ZWxzZSB3ID0geVsxXS5zbGljZShqKzEpO1xuXHRcdFx0elt3XSA9IHlbMl0uc2xpY2UoMSx5WzJdLmxlbmd0aC0xKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHo7XG59XG5cbi8vIC0tLS1cblxuLyogbWFwIGZyb20geGxtbCBuYW1lZCBmb3JtYXRzIHRvIFNTRiBUT0RPOiBsb2NhbGl6ZSAqL1xudmFyIFhMTUxGb3JtYXRNYXAvKjoge1tzdHJpbmddOnN0cmluZ30qLztcblxuZnVuY3Rpb24geGxtbF9mb3JtYXQoZm9ybWF0LCB2YWx1ZSkvKjpzdHJpbmcqLyB7XG5cdHZhciBmbXQgPSBYTE1MRm9ybWF0TWFwW2Zvcm1hdF0gfHwgdW5lc2NhcGV4bWwoZm9ybWF0KTtcblx0aWYoZm10ID09PSBcIkdlbmVyYWxcIikgcmV0dXJuIFNTRl9nZW5lcmFsKHZhbHVlKTtcblx0cmV0dXJuIFNTRl9mb3JtYXQoZm10LCB2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHhsbWxfc2V0X2N1c3Rwcm9wKEN1c3Rwcm9wcywga2V5LCBjcCwgdmFsLyo6c3RyaW5nKi8pIHtcblx0dmFyIG92YWwvKjphbnkqLyA9IHZhbDtcblx0c3dpdGNoKChjcFswXS5tYXRjaCgvZHQ6ZHQ9XCIoW1xcdy5dKylcIi8pfHxbXCJcIixcIlwiXSlbMV0pIHtcblx0XHRjYXNlIFwiYm9vbGVhblwiOiBvdmFsID0gcGFyc2V4bWxib29sKHZhbCk7IGJyZWFrO1xuXHRcdGNhc2UgXCJpMlwiOiBjYXNlIFwiaW50XCI6IG92YWwgPSBwYXJzZUludCh2YWwsIDEwKTsgYnJlYWs7XG5cdFx0Y2FzZSBcInI0XCI6IGNhc2UgXCJmbG9hdFwiOiBvdmFsID0gcGFyc2VGbG9hdCh2YWwpOyBicmVhaztcblx0XHRjYXNlIFwiZGF0ZVwiOiBjYXNlIFwiZGF0ZVRpbWUudHpcIjogb3ZhbCA9IHBhcnNlRGF0ZSh2YWwpOyBicmVhaztcblx0XHRjYXNlIFwiaThcIjogY2FzZSBcInN0cmluZ1wiOiBjYXNlIFwiZml4ZWRcIjogY2FzZSBcInV1aWRcIjogY2FzZSBcImJpbi5iYXNlNjRcIjogYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiYmFkIGN1c3Rwcm9wOlwiICsgY3BbMF0pO1xuXHR9XG5cdEN1c3Rwcm9wc1t1bmVzY2FwZXhtbChrZXkpXSA9IG92YWw7XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0X3hsbWwoY2VsbC8qOkNlbGwqLywgbmYsIG8pIHtcblx0aWYoY2VsbC50ID09PSAneicpIHJldHVybjtcblx0aWYoIW8gfHwgby5jZWxsVGV4dCAhPT0gZmFsc2UpIHRyeSB7XG5cdFx0aWYoY2VsbC50ID09PSAnZScpIHsgY2VsbC53ID0gY2VsbC53IHx8IEJFcnJbY2VsbC52XTsgfVxuXHRcdGVsc2UgaWYobmYgPT09IFwiR2VuZXJhbFwiKSB7XG5cdFx0XHRpZihjZWxsLnQgPT09ICduJykge1xuXHRcdFx0XHRpZigoY2VsbC52fDApID09PSBjZWxsLnYpIGNlbGwudyA9IGNlbGwudi50b1N0cmluZygxMCk7XG5cdFx0XHRcdGVsc2UgY2VsbC53ID0gU1NGX2dlbmVyYWxfbnVtKGNlbGwudik7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIGNlbGwudyA9IFNTRl9nZW5lcmFsKGNlbGwudik7XG5cdFx0fVxuXHRcdGVsc2UgY2VsbC53ID0geGxtbF9mb3JtYXQobmZ8fFwiR2VuZXJhbFwiLCBjZWxsLnYpO1xuXHR9IGNhdGNoKGUpIHsgaWYoby5XVEYpIHRocm93IGU7IH1cblx0dHJ5IHtcblx0XHR2YXIgeiA9IFhMTUxGb3JtYXRNYXBbbmZdfHxuZnx8XCJHZW5lcmFsXCI7XG5cdFx0aWYoby5jZWxsTkYpIGNlbGwueiA9IHo7XG5cdFx0aWYoby5jZWxsRGF0ZXMgJiYgY2VsbC50ID09ICduJyAmJiBmbXRfaXNfZGF0ZSh6KSkge1xuXHRcdFx0dmFyIF9kID0gU1NGX3BhcnNlX2RhdGVfY29kZShjZWxsLnYpOyBpZihfZCkgeyBjZWxsLnQgPSAnZCc7IGNlbGwudiA9IG5ldyBEYXRlKF9kLnksIF9kLm0tMSxfZC5kLF9kLkgsX2QuTSxfZC5TLF9kLnUpOyB9XG5cdFx0fVxuXHR9IGNhdGNoKGUpIHsgaWYoby5XVEYpIHRocm93IGU7IH1cbn1cblxuZnVuY3Rpb24gcHJvY2Vzc19zdHlsZV94bG1sKHN0eWxlcywgc3RhZywgb3B0cykge1xuXHRpZihvcHRzLmNlbGxTdHlsZXMpIHtcblx0XHRpZihzdGFnLkludGVyaW9yKSB7XG5cdFx0XHR2YXIgSSA9IHN0YWcuSW50ZXJpb3I7XG5cdFx0XHRpZihJLlBhdHRlcm4pIEkucGF0dGVyblR5cGUgPSBYTE1MUGF0dGVyblR5cGVNYXBbSS5QYXR0ZXJuXSB8fCBJLlBhdHRlcm47XG5cdFx0fVxuXHR9XG5cdHN0eWxlc1tzdGFnLklEXSA9IHN0YWc7XG59XG5cbi8qIFRPRE86IHRoZXJlIG11c3QgZXhpc3Qgc29tZSBmb3JtIG9mIE9TUC1ibGVzc2VkIHNwZWMgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsbWxfZGF0YSh4bWwsIHNzLCBkYXRhLCBjZWxsLyo6YW55Ki8sIGJhc2UsIHN0eWxlcywgY3N0eSwgcm93LCBhcnJheWYsIG8pIHtcblx0dmFyIG5mID0gXCJHZW5lcmFsXCIsIHNpZCA9IGNlbGwuU3R5bGVJRCwgUyA9IHt9OyBvID0gbyB8fCB7fTtcblx0dmFyIGludGVyaW9ycyA9IFtdO1xuXHR2YXIgaSA9IDA7XG5cdGlmKHNpZCA9PT0gdW5kZWZpbmVkICYmIHJvdykgc2lkID0gcm93LlN0eWxlSUQ7XG5cdGlmKHNpZCA9PT0gdW5kZWZpbmVkICYmIGNzdHkpIHNpZCA9IGNzdHkuU3R5bGVJRDtcblx0d2hpbGUoc3R5bGVzW3NpZF0gIT09IHVuZGVmaW5lZCkge1xuXHRcdGlmKHN0eWxlc1tzaWRdLm5mKSBuZiA9IHN0eWxlc1tzaWRdLm5mO1xuXHRcdGlmKHN0eWxlc1tzaWRdLkludGVyaW9yKSBpbnRlcmlvcnMucHVzaChzdHlsZXNbc2lkXS5JbnRlcmlvcik7XG5cdFx0aWYoIXN0eWxlc1tzaWRdLlBhcmVudCkgYnJlYWs7XG5cdFx0c2lkID0gc3R5bGVzW3NpZF0uUGFyZW50O1xuXHR9XG5cdHN3aXRjaChkYXRhLlR5cGUpIHtcblx0XHRjYXNlICdCb29sZWFuJzpcblx0XHRcdGNlbGwudCA9ICdiJztcblx0XHRcdGNlbGwudiA9IHBhcnNleG1sYm9vbCh4bWwpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnU3RyaW5nJzpcblx0XHRcdGNlbGwudCA9ICdzJzsgY2VsbC5yID0geGxtbF9maXhzdHIodW5lc2NhcGV4bWwoeG1sKSk7XG5cdFx0XHRjZWxsLnYgPSAoeG1sLmluZGV4T2YoXCI8XCIpID4gLTEgPyB1bmVzY2FwZXhtbChzc3x8eG1sKS5yZXBsYWNlKC88Lio/Pi9nLCBcIlwiKSA6IGNlbGwucik7IC8vIHRvZG86IEJSIGV0Y1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnRGF0ZVRpbWUnOlxuXHRcdFx0aWYoeG1sLnNsaWNlKC0xKSAhPSBcIlpcIikgeG1sICs9IFwiWlwiO1xuXHRcdFx0Y2VsbC52ID0gKHBhcnNlRGF0ZSh4bWwpIC0gbmV3IERhdGUoRGF0ZS5VVEMoMTg5OSwgMTEsIDMwKSkpIC8gKDI0ICogNjAgKiA2MCAqIDEwMDApO1xuXHRcdFx0aWYoY2VsbC52ICE9PSBjZWxsLnYpIGNlbGwudiA9IHVuZXNjYXBleG1sKHhtbCk7XG5cdFx0XHRlbHNlIGlmKGNlbGwudjw2MCkgY2VsbC52ID0gY2VsbC52IC0xO1xuXHRcdFx0aWYoIW5mIHx8IG5mID09IFwiR2VuZXJhbFwiKSBuZiA9IFwieXl5eS1tbS1kZFwiO1xuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ051bWJlcic6XG5cdFx0XHRpZihjZWxsLnYgPT09IHVuZGVmaW5lZCkgY2VsbC52PSt4bWw7XG5cdFx0XHRpZighY2VsbC50KSBjZWxsLnQgPSAnbic7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdFcnJvcic6IGNlbGwudCA9ICdlJzsgY2VsbC52ID0gUkJFcnJbeG1sXTsgaWYoby5jZWxsVGV4dCAhPT0gZmFsc2UpIGNlbGwudyA9IHhtbDsgYnJlYWs7XG5cdFx0ZGVmYXVsdDpcblx0XHRcdGlmKHhtbCA9PSBcIlwiICYmIHNzID09IFwiXCIpIHsgY2VsbC50ID0gJ3onOyB9XG5cdFx0XHRlbHNlIHsgY2VsbC50ID0gJ3MnOyBjZWxsLnYgPSB4bG1sX2ZpeHN0cihzc3x8eG1sKTsgfVxuXHRcdFx0YnJlYWs7XG5cdH1cblx0c2FmZV9mb3JtYXRfeGxtbChjZWxsLCBuZiwgbyk7XG5cdGlmKG8uY2VsbEZvcm11bGEgIT09IGZhbHNlKSB7XG5cdFx0aWYoY2VsbC5Gb3JtdWxhKSB7XG5cdFx0XHR2YXIgZnN0ciA9IHVuZXNjYXBleG1sKGNlbGwuRm9ybXVsYSk7XG5cdFx0XHQvKiBzdHJpY3RseSBzcGVha2luZywgdGhlIGxlYWRpbmcgPSBpcyByZXF1aXJlZCBidXQgc29tZSB3cml0ZXJzIG9taXQgKi9cblx0XHRcdGlmKGZzdHIuY2hhckNvZGVBdCgwKSA9PSA2MSAvKiA9ICovKSBmc3RyID0gZnN0ci5zbGljZSgxKTtcblx0XHRcdGNlbGwuZiA9IHJjX3RvX2ExKGZzdHIsIGJhc2UpO1xuXHRcdFx0ZGVsZXRlIGNlbGwuRm9ybXVsYTtcblx0XHRcdGlmKGNlbGwuQXJyYXlSYW5nZSA9PSBcIlJDXCIpIGNlbGwuRiA9IHJjX3RvX2ExKFwiUkM6UkNcIiwgYmFzZSk7XG5cdFx0XHRlbHNlIGlmKGNlbGwuQXJyYXlSYW5nZSkge1xuXHRcdFx0XHRjZWxsLkYgPSByY190b19hMShjZWxsLkFycmF5UmFuZ2UsIGJhc2UpO1xuXHRcdFx0XHRhcnJheWYucHVzaChbc2FmZV9kZWNvZGVfcmFuZ2UoY2VsbC5GKSwgY2VsbC5GXSk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZvcihpID0gMDsgaSA8IGFycmF5Zi5sZW5ndGg7ICsraSlcblx0XHRcdFx0aWYoYmFzZS5yID49IGFycmF5ZltpXVswXS5zLnIgJiYgYmFzZS5yIDw9IGFycmF5ZltpXVswXS5lLnIpXG5cdFx0XHRcdFx0aWYoYmFzZS5jID49IGFycmF5ZltpXVswXS5zLmMgJiYgYmFzZS5jIDw9IGFycmF5ZltpXVswXS5lLmMpXG5cdFx0XHRcdFx0XHRjZWxsLkYgPSBhcnJheWZbaV1bMV07XG5cdFx0fVxuXHR9XG5cdGlmKG8uY2VsbFN0eWxlcykge1xuXHRcdGludGVyaW9ycy5mb3JFYWNoKGZ1bmN0aW9uKHgpIHtcblx0XHRcdGlmKCFTLnBhdHRlcm5UeXBlICYmIHgucGF0dGVyblR5cGUpIFMucGF0dGVyblR5cGUgPSB4LnBhdHRlcm5UeXBlO1xuXHRcdH0pO1xuXHRcdGNlbGwucyA9IFM7XG5cdH1cblx0aWYoY2VsbC5TdHlsZUlEICE9PSB1bmRlZmluZWQpIGNlbGwuaXhmZSA9IGNlbGwuU3R5bGVJRDtcbn1cblxuZnVuY3Rpb24geGxtbF9jbGVhbl9jb21tZW50KGNvbW1lbnQvKjphbnkqLykge1xuXHRjb21tZW50LnQgPSBjb21tZW50LnYgfHwgXCJcIjtcblx0Y29tbWVudC50ID0gY29tbWVudC50LnJlcGxhY2UoL1xcclxcbi9nLFwiXFxuXCIpLnJlcGxhY2UoL1xcci9nLFwiXFxuXCIpO1xuXHRjb21tZW50LnYgPSBjb21tZW50LncgPSBjb21tZW50Lml4ZmUgPSB1bmRlZmluZWQ7XG59XG5cbi8qIFRPRE86IEV2ZXJ5dGhpbmcgKi9cbmZ1bmN0aW9uIHBhcnNlX3hsbWxfeG1sKGQsIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRtYWtlX3NzZigpO1xuXHR2YXIgc3RyID0gZGVib20oeGxtbF9ub3JtYWxpemUoZCkpO1xuXHRpZihvcHRzLnR5cGUgPT0gJ2JpbmFyeScgfHwgb3B0cy50eXBlID09ICdhcnJheScgfHwgb3B0cy50eXBlID09ICdiYXNlNjQnKSB7XG5cdFx0aWYodHlwZW9mICRjcHRhYmxlICE9PSAndW5kZWZpbmVkJykgc3RyID0gJGNwdGFibGUudXRpbHMuZGVjb2RlKDY1MDAxLCBjaGFyX2NvZGVzKHN0cikpO1xuXHRcdGVsc2Ugc3RyID0gdXRmOHJlYWQoc3RyKTtcblx0fVxuXHR2YXIgb3BlbmluZyA9IHN0ci5zbGljZSgwLCAxMDI0KS50b0xvd2VyQ2FzZSgpLCBpc2h0bWwgPSBmYWxzZTtcblx0b3BlbmluZyA9IG9wZW5pbmcucmVwbGFjZSgvXCIuKj9cIi9nLCBcIlwiKTtcblx0aWYoKG9wZW5pbmcuaW5kZXhPZihcIj5cIikgJiAxMDIzKSA+IE1hdGgubWluKChvcGVuaW5nLmluZGV4T2YoXCIsXCIpICYgMTAyMyksIChvcGVuaW5nLmluZGV4T2YoXCI7XCIpJjEwMjMpKSkgeyB2YXIgX28gPSBkdXAob3B0cyk7IF9vLnR5cGUgPSBcInN0cmluZ1wiOyByZXR1cm4gUFJOLnRvX3dvcmtib29rKHN0ciwgX28pOyB9XG5cdGlmKG9wZW5pbmcuaW5kZXhPZihcIjw/eG1sXCIpID09IC0xKSBbXCJodG1sXCIsIFwidGFibGVcIiwgXCJoZWFkXCIsIFwibWV0YVwiLCBcInNjcmlwdFwiLCBcInN0eWxlXCIsIFwiZGl2XCJdLmZvckVhY2goZnVuY3Rpb24odGFnKSB7IGlmKG9wZW5pbmcuaW5kZXhPZihcIjxcIiArIHRhZykgPj0gMCkgaXNodG1sID0gdHJ1ZTsgfSk7XG5cdGlmKGlzaHRtbCkgcmV0dXJuIGh0bWxfdG9fd29ya2Jvb2soc3RyLCBvcHRzKTtcblxuXHRYTE1MRm9ybWF0TWFwID0gKHtcblx0XHRcIkdlbmVyYWwgTnVtYmVyXCI6IFwiR2VuZXJhbFwiLFxuXHRcdFwiR2VuZXJhbCBEYXRlXCI6IHRhYmxlX2ZtdFsyMl0sXG5cdFx0XCJMb25nIERhdGVcIjogXCJkZGRkLCBtbW1tIGRkLCB5eXl5XCIsXG5cdFx0XCJNZWRpdW0gRGF0ZVwiOiB0YWJsZV9mbXRbMTVdLFxuXHRcdFwiU2hvcnQgRGF0ZVwiOiB0YWJsZV9mbXRbMTRdLFxuXHRcdFwiTG9uZyBUaW1lXCI6IHRhYmxlX2ZtdFsxOV0sXG5cdFx0XCJNZWRpdW0gVGltZVwiOiB0YWJsZV9mbXRbMThdLFxuXHRcdFwiU2hvcnQgVGltZVwiOiB0YWJsZV9mbXRbMjBdLFxuXHRcdFwiQ3VycmVuY3lcIjogJ1wiJFwiIywjIzAuMDBfKTtbUmVkXVxcXFwoXCIkXCIjLCMjMC4wMFxcXFwpJyxcblx0XHRcIkZpeGVkXCI6IHRhYmxlX2ZtdFsyXSxcblx0XHRcIlN0YW5kYXJkXCI6IHRhYmxlX2ZtdFs0XSxcblx0XHRcIlBlcmNlbnRcIjogdGFibGVfZm10WzEwXSxcblx0XHRcIlNjaWVudGlmaWNcIjogdGFibGVfZm10WzExXSxcblx0XHRcIlllcy9Ob1wiOiAnXCJZZXNcIjtcIlllc1wiO1wiTm9cIjtAJyxcblx0XHRcIlRydWUvRmFsc2VcIjogJ1wiVHJ1ZVwiO1wiVHJ1ZVwiO1wiRmFsc2VcIjtAJyxcblx0XHRcIk9uL09mZlwiOiAnXCJZZXNcIjtcIlllc1wiO1wiTm9cIjtAJ1xuXHR9Lyo6YW55Ki8pO1xuXG5cblx0dmFyIFJuO1xuXHR2YXIgc3RhdGUgPSBbXSwgdG1wO1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgc2hlZXRzID0ge30sIHNoZWV0bmFtZXMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgY3Vyc2hlZXQvKjpXb3Jrc2hlZXQqLyA9IChvcHRzLmRlbnNlID8gW10gOiB7fSksIHNoZWV0bmFtZSA9IFwiXCI7XG5cdHZhciBjZWxsID0gKHt9Lyo6YW55Ki8pLCByb3cgPSB7fTsvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cdHZhciBkdGFnID0geGxtbF9wYXJzZXhtbHRhZygnPERhdGEgc3M6VHlwZT1cIlN0cmluZ1wiPicpLCBkaWR4ID0gMDtcblx0dmFyIGMgPSAwLCByID0gMDtcblx0dmFyIHJlZmd1ZXNzLyo6UmFuZ2UqLyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cdHZhciBzdHlsZXMgPSB7fSwgc3RhZyA9IHt9O1xuXHR2YXIgc3MgPSBcIlwiLCBmaWR4ID0gMDtcblx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW107XG5cdHZhciBQcm9wcyA9IHt9LCBDdXN0cHJvcHMgPSB7fSwgcGlkeCA9IDAsIGNwID0gW107XG5cdHZhciBjb21tZW50cy8qOkFycmF5PENvbW1lbnQ+Ki8gPSBbXSwgY29tbWVudC8qOkNvbW1lbnQqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGNzdHlzID0gW10sIGNzdHksIHNlZW5jb2wgPSBmYWxzZTtcblx0dmFyIGFycmF5Zi8qOkFycmF5PFtSYW5nZSwgc3RyaW5nXT4qLyA9IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgcm93b2JqID0ge30sIGNjID0gMCwgcnIgPSAwO1xuXHR2YXIgV29ya2Jvb2svKjpXQldCUHJvcHMqLyA9ICh7IFNoZWV0czpbXSwgV0JQcm9wczp7ZGF0ZTE5MDQ6ZmFsc2V9IH0vKjphbnkqLyksIHdzcHJvcHMgPSB7fTtcblx0eGxtbHJlZ2V4Lmxhc3RJbmRleCA9IDA7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC88IS0tKFtcXHNcXFNdKj8pLS0+L21nLFwiXCIpO1xuXHR2YXIgcmF3X1JuMyA9IFwiXCI7XG5cdHdoaWxlKChSbiA9IHhsbWxyZWdleC5leGVjKHN0cikpKSBzd2l0Y2goKFJuWzNdID0gKHJhd19SbjMgPSBSblszXSkudG9Mb3dlckNhc2UoKSkpIHtcblx0XHRjYXNlICdkYXRhJyAvKmNhc2UgJ0RhdGEnKi86XG5cdFx0XHRpZihyYXdfUm4zID09IFwiZGF0YVwiKSB7XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMV0pIGJyZWFrO1xuXHRcdFx0aWYoUm5bMV09PT0nLycpIHBhcnNlX3hsbWxfZGF0YShzdHIuc2xpY2UoZGlkeCwgUm4uaW5kZXgpLCBzcywgZHRhZywgc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdPT0vKlwiQ29tbWVudFwiKi9cImNvbW1lbnRcIj9jb21tZW50OmNlbGwsIHtjOmMscjpyfSwgc3R5bGVzLCBjc3R5c1tjXSwgcm93LCBhcnJheWYsIG9wdHMpO1xuXHRcdFx0ZWxzZSB7IHNzID0gXCJcIjsgZHRhZyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pOyBkaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7IH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NlbGwnIC8qY2FzZSAnQ2VsbCcqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0aWYoY29tbWVudHMubGVuZ3RoID4gMCkgY2VsbC5jID0gY29tbWVudHM7XG5cdFx0XHRcdGlmKCghb3B0cy5zaGVldFJvd3MgfHwgb3B0cy5zaGVldFJvd3MgPiByKSAmJiBjZWxsLnYgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGlmKG9wdHMuZGVuc2UpIHtcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtyXSkgY3Vyc2hlZXRbcl0gPSBbXTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W3JdW2NdID0gY2VsbDtcblx0XHRcdFx0XHR9IGVsc2UgY3Vyc2hlZXRbZW5jb2RlX2NvbChjKSArIGVuY29kZV9yb3cocildID0gY2VsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihjZWxsLkhSZWYpIHtcblx0XHRcdFx0XHRjZWxsLmwgPSAoe1RhcmdldDp1bmVzY2FwZXhtbChjZWxsLkhSZWYpfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihjZWxsLkhSZWZTY3JlZW5UaXApIGNlbGwubC5Ub29sdGlwID0gY2VsbC5IUmVmU2NyZWVuVGlwO1xuXHRcdFx0XHRcdGRlbGV0ZSBjZWxsLkhSZWY7IGRlbGV0ZSBjZWxsLkhSZWZTY3JlZW5UaXA7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoY2VsbC5NZXJnZUFjcm9zcyB8fCBjZWxsLk1lcmdlRG93bikge1xuXHRcdFx0XHRcdGNjID0gYyArIChwYXJzZUludChjZWxsLk1lcmdlQWNyb3NzLDEwKXwwKTtcblx0XHRcdFx0XHRyciA9IHIgKyAocGFyc2VJbnQoY2VsbC5NZXJnZURvd24sMTApfDApO1xuXHRcdFx0XHRcdG1lcmdlcy5wdXNoKHtzOntjOmMscjpyfSxlOntjOmNjLHI6cnJ9fSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIW9wdHMuc2hlZXRTdHVicykgeyBpZihjZWxsLk1lcmdlQWNyb3NzKSBjID0gY2MgKyAxOyBlbHNlICsrYzsgfVxuXHRcdFx0XHRlbHNlIGlmKGNlbGwuTWVyZ2VBY3Jvc3MgfHwgY2VsbC5NZXJnZURvd24pIHtcblx0XHRcdFx0XHQvKjo6IGlmKCFjYykgY2MgPSAwOyBpZighcnIpIHJyID0gMDsgKi9cblx0XHRcdFx0XHRmb3IodmFyIGNtYSA9IGM7IGNtYSA8PSBjYzsgKytjbWEpIHtcblx0XHRcdFx0XHRcdGZvcih2YXIgY21kID0gcjsgY21kIDw9IHJyOyArK2NtZCkge1xuXHRcdFx0XHRcdFx0XHRpZihjbWEgPiBjIHx8IGNtZCA+IHIpIHtcblx0XHRcdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbY21kXSkgY3Vyc2hlZXRbY21kXSA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y3Vyc2hlZXRbY21kXVtjbWFdID0ge3Q6J3onfTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgY3Vyc2hlZXRbZW5jb2RlX2NvbChjbWEpICsgZW5jb2RlX3JvdyhjbWQpXSA9IHt0Oid6J307XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0YyA9IGNjICsgMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlICsrYztcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNlbGwgPSB4bG1sX3BhcnNleG1sdGFnb2JqKFJuWzBdKTtcblx0XHRcdFx0aWYoY2VsbC5JbmRleCkgYyA9ICtjZWxsLkluZGV4IC0gMTtcblx0XHRcdFx0aWYoYyA8IHJlZmd1ZXNzLnMuYykgcmVmZ3Vlc3Mucy5jID0gYztcblx0XHRcdFx0aWYoYyA+IHJlZmd1ZXNzLmUuYykgcmVmZ3Vlc3MuZS5jID0gYztcblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpICsrYztcblx0XHRcdFx0Y29tbWVudHMgPSBbXTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3JvdycgLypjYXNlICdSb3cnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyB8fCBSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikge1xuXHRcdFx0XHRpZihyIDwgcmVmZ3Vlc3Mucy5yKSByZWZndWVzcy5zLnIgPSByO1xuXHRcdFx0XHRpZihyID4gcmVmZ3Vlc3MuZS5yKSByZWZndWVzcy5lLnIgPSByO1xuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikge1xuXHRcdFx0XHRcdHJvdyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRcdGlmKHJvdy5JbmRleCkgciA9ICtyb3cuSW5kZXggLSAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGMgPSAwOyArK3I7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyb3cgPSB4bG1sX3BhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0aWYocm93LkluZGV4KSByID0gK3Jvdy5JbmRleCAtIDE7XG5cdFx0XHRcdHJvd29iaiA9IHt9O1xuXHRcdFx0XHRpZihyb3cuQXV0b0ZpdEhlaWdodCA9PSBcIjBcIiB8fCByb3cuSGVpZ2h0KSB7XG5cdFx0XHRcdFx0cm93b2JqLmhweCA9IHBhcnNlSW50KHJvdy5IZWlnaHQsIDEwKTsgcm93b2JqLmhwdCA9IHB4MnB0KHJvd29iai5ocHgpO1xuXHRcdFx0XHRcdHJvd2luZm9bcl0gPSByb3dvYmo7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYocm93LkhpZGRlbiA9PSBcIjFcIikgeyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgcm93aW5mb1tyXSA9IHJvd29iajsgfVxuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnd29ya3NoZWV0JyAvKmNhc2UgJ1dvcmtzaGVldCcqLzogLyogVE9ETzogcmVhZCByYW5nZSBmcm9tIEZ1bGxSb3dzL0Z1bGxDb2x1bW5zICovXG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTtcblx0XHRcdFx0c2hlZXRuYW1lcy5wdXNoKHNoZWV0bmFtZSk7XG5cdFx0XHRcdGlmKHJlZmd1ZXNzLnMuciA8PSByZWZndWVzcy5lLnIgJiYgcmVmZ3Vlc3Mucy5jIDw9IHJlZmd1ZXNzLmUuYykge1xuXHRcdFx0XHRcdGN1cnNoZWV0W1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyZWZndWVzcyk7XG5cdFx0XHRcdFx0aWYob3B0cy5zaGVldFJvd3MgJiYgb3B0cy5zaGVldFJvd3MgPD0gcmVmZ3Vlc3MuZS5yKSB7XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFmdWxscmVmXCJdID0gY3Vyc2hlZXRbXCIhcmVmXCJdO1xuXHRcdFx0XHRcdFx0cmVmZ3Vlc3MuZS5yID0gb3B0cy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0XHRcdFx0Y3Vyc2hlZXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJlZmd1ZXNzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYobWVyZ2VzLmxlbmd0aCkgY3Vyc2hlZXRbXCIhbWVyZ2VzXCJdID0gbWVyZ2VzO1xuXHRcdFx0XHRpZihjc3R5cy5sZW5ndGggPiAwKSBjdXJzaGVldFtcIiFjb2xzXCJdID0gY3N0eXM7XG5cdFx0XHRcdGlmKHJvd2luZm8ubGVuZ3RoID4gMCkgY3Vyc2hlZXRbXCIhcm93c1wiXSA9IHJvd2luZm87XG5cdFx0XHRcdHNoZWV0c1tzaGVldG5hbWVdID0gY3Vyc2hlZXQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZWZndWVzcyA9IHtzOiB7cjoyMDAwMDAwLCBjOjIwMDAwMDB9LCBlOiB7cjowLCBjOjB9IH07XG5cdFx0XHRcdHIgPSBjID0gMDtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRtcCA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRzaGVldG5hbWUgPSB1bmVzY2FwZXhtbCh0bXAuTmFtZSk7XG5cdFx0XHRcdGN1cnNoZWV0ID0gKG9wdHMuZGVuc2UgPyBbXSA6IHt9KTtcblx0XHRcdFx0bWVyZ2VzID0gW107XG5cdFx0XHRcdGFycmF5ZiA9IFtdO1xuXHRcdFx0XHRyb3dpbmZvID0gW107XG5cdFx0XHRcdHdzcHJvcHMgPSB7bmFtZTpzaGVldG5hbWUsIEhpZGRlbjowfTtcblx0XHRcdFx0V29ya2Jvb2suU2hlZXRzLnB1c2god3Nwcm9wcyk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICd0YWJsZScgLypjYXNlICdUYWJsZScqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBpZihSblswXS5zbGljZSgtMikgPT0gXCIvPlwiKSBicmVhaztcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTtcblx0XHRcdFx0Y3N0eXMgPSBbXTsgc2VlbmNvbCA9IGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdzdHlsZScgLypjYXNlICdTdHlsZScqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKSBwcm9jZXNzX3N0eWxlX3hsbWwoc3R5bGVzLCBzdGFnLCBvcHRzKTtcblx0XHRcdGVsc2Ugc3RhZyA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdudW1iZXJmb3JtYXQnIC8qY2FzZSAnTnVtYmVyRm9ybWF0JyovOlxuXHRcdFx0c3RhZy5uZiA9IHVuZXNjYXBleG1sKHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pLkZvcm1hdCB8fCBcIkdlbmVyYWxcIik7XG5cdFx0XHRpZihYTE1MRm9ybWF0TWFwW3N0YWcubmZdKSBzdGFnLm5mID0gWExNTEZvcm1hdE1hcFtzdGFnLm5mXTtcblx0XHRcdGZvcih2YXIgc3NmaWR4ID0gMDsgc3NmaWR4ICE9IDB4MTg4OyArK3NzZmlkeCkgaWYodGFibGVfZm10W3NzZmlkeF0gPT0gc3RhZy5uZikgYnJlYWs7XG5cdFx0XHRpZihzc2ZpZHggPT0gMHgxODgpIGZvcihzc2ZpZHggPSAweDM5OyBzc2ZpZHggIT0gMHgxODg7ICsrc3NmaWR4KSBpZih0YWJsZV9mbXRbc3NmaWR4XSA9PSBudWxsKSB7IFNTRl9sb2FkKHN0YWcubmYsIHNzZmlkeCk7IGJyZWFrOyB9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ2NvbHVtbicgLypjYXNlICdDb2x1bW4nKi86XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0gIT09IC8qJ1RhYmxlJyovJ3RhYmxlJykgYnJlYWs7XG5cdFx0XHRjc3R5ID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRpZihjc3R5LkhpZGRlbikgeyBjc3R5LmhpZGRlbiA9IHRydWU7IGRlbGV0ZSBjc3R5LkhpZGRlbjsgfVxuXHRcdFx0aWYoY3N0eS5XaWR0aCkgY3N0eS53cHggPSBwYXJzZUludChjc3R5LldpZHRoLCAxMCk7XG5cdFx0XHRpZighc2VlbmNvbCAmJiBjc3R5LndweCA+IDEwKSB7XG5cdFx0XHRcdHNlZW5jb2wgPSB0cnVlOyBNRFcgPSBERUZfTURXOyAvL2ZpbmRfbWR3X3dweChjc3R5LndweCk7XG5cdFx0XHRcdGZvcih2YXIgX2NvbCA9IDA7IF9jb2wgPCBjc3R5cy5sZW5ndGg7ICsrX2NvbCkgaWYoY3N0eXNbX2NvbF0pIHByb2Nlc3NfY29sKGNzdHlzW19jb2xdKTtcblx0XHRcdH1cblx0XHRcdGlmKHNlZW5jb2wpIHByb2Nlc3NfY29sKGNzdHkpO1xuXHRcdFx0Y3N0eXNbKGNzdHkuSW5kZXgtMXx8Y3N0eXMubGVuZ3RoKV0gPSBjc3R5O1xuXHRcdFx0Zm9yKHZhciBpID0gMDsgaSA8ICtjc3R5LlNwYW47ICsraSkgY3N0eXNbY3N0eXMubGVuZ3RoXSA9IGR1cChjc3R5KTtcblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbmFtZWRyYW5nZScgLypjYXNlICdOYW1lZFJhbmdlJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpIGJyZWFrO1xuXHRcdFx0aWYoIVdvcmtib29rLk5hbWVzKSBXb3JrYm9vay5OYW1lcyA9IFtdO1xuXHRcdFx0dmFyIF9OYW1lZFJhbmdlID0gcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0dmFyIF9EZWZpbmVkTmFtZS8qOkRlZmluZWROYW1lKi8gPSAoe1xuXHRcdFx0XHROYW1lOiBfTmFtZWRSYW5nZS5OYW1lLFxuXHRcdFx0XHRSZWY6IHJjX3RvX2ExKF9OYW1lZFJhbmdlLlJlZmVyc1RvLnNsaWNlKDEpLCB7cjowLCBjOjB9KVxuXHRcdFx0fS8qOmFueSovKTtcblx0XHRcdGlmKFdvcmtib29rLlNoZWV0cy5sZW5ndGg+MCkgX0RlZmluZWROYW1lLlNoZWV0PVdvcmtib29rLlNoZWV0cy5sZW5ndGgtMTtcblx0XHRcdC8qOjogaWYoV29ya2Jvb2suTmFtZXMpICovV29ya2Jvb2suTmFtZXMucHVzaChfRGVmaW5lZE5hbWUpO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICduYW1lZGNlbGwnIC8qY2FzZSAnTmFtZWRDZWxsJyovOiBicmVhaztcblx0XHRjYXNlICdiJyAvKmNhc2UgJ0InKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2knIC8qY2FzZSAnSScqLzogYnJlYWs7XG5cdFx0Y2FzZSAndScgLypjYXNlICdVJyovOiBicmVhaztcblx0XHRjYXNlICdzJyAvKmNhc2UgJ1MnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ2VtJyAvKmNhc2UgJ0VNJyovOiBicmVhaztcblx0XHRjYXNlICdoMicgLypjYXNlICdIMicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnaDMnIC8qY2FzZSAnSDMnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3N1YicgLypjYXNlICdTdWInKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3N1cCcgLypjYXNlICdTdXAnKi86IGJyZWFrO1xuXHRcdGNhc2UgJ3NwYW4nIC8qY2FzZSAnU3BhbicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnYWxpZ25tZW50JyAvKmNhc2UgJ0FsaWdubWVudCcqLzpcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2JvcmRlcnMnIC8qY2FzZSAnQm9yZGVycycqLzogYnJlYWs7XG5cdFx0Y2FzZSAnYm9yZGVyJyAvKmNhc2UgJ0JvcmRlcicqLzogYnJlYWs7XG5cdFx0Y2FzZSAnZm9udCcgLypjYXNlICdGb250JyovOlxuXHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0ZWxzZSBpZihSblsxXT09PVwiL1wiKSBzcyArPSBzdHIuc2xpY2UoZmlkeCwgUm4uaW5kZXgpO1xuXHRcdFx0ZWxzZSBmaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdpbnRlcmlvcicgLypjYXNlICdJbnRlcmlvcicqLzpcblx0XHRcdGlmKCFvcHRzLmNlbGxTdHlsZXMpIGJyZWFrO1xuXHRcdFx0c3RhZy5JbnRlcmlvciA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAncHJvdGVjdGlvbicgLypjYXNlICdQcm90ZWN0aW9uJyovOiBicmVhaztcblxuXHRcdGNhc2UgJ2F1dGhvcicgLypjYXNlICdBdXRob3InKi86XG5cdFx0Y2FzZSAndGl0bGUnIC8qY2FzZSAnVGl0bGUnKi86XG5cdFx0Y2FzZSAnZGVzY3JpcHRpb24nIC8qY2FzZSAnRGVzY3JpcHRpb24nKi86XG5cdFx0Y2FzZSAnY3JlYXRlZCcgLypjYXNlICdDcmVhdGVkJyovOlxuXHRcdGNhc2UgJ2tleXdvcmRzJyAvKmNhc2UgJ0tleXdvcmRzJyovOlxuXHRcdGNhc2UgJ3N1YmplY3QnIC8qY2FzZSAnU3ViamVjdCcqLzpcblx0XHRjYXNlICdjYXRlZ29yeScgLypjYXNlICdDYXRlZ29yeScqLzpcblx0XHRjYXNlICdjb21wYW55JyAvKmNhc2UgJ0NvbXBhbnknKi86XG5cdFx0Y2FzZSAnbGFzdGF1dGhvcicgLypjYXNlICdMYXN0QXV0aG9yJyovOlxuXHRcdGNhc2UgJ2xhc3RzYXZlZCcgLypjYXNlICdMYXN0U2F2ZWQnKi86XG5cdFx0Y2FzZSAnbGFzdHByaW50ZWQnIC8qY2FzZSAnTGFzdFByaW50ZWQnKi86XG5cdFx0Y2FzZSAndmVyc2lvbicgLypjYXNlICdWZXJzaW9uJyovOlxuXHRcdGNhc2UgJ3JldmlzaW9uJyAvKmNhc2UgJ1JldmlzaW9uJyovOlxuXHRcdGNhc2UgJ3RvdGFsdGltZScgLypjYXNlICdUb3RhbFRpbWUnKi86XG5cdFx0Y2FzZSAnaHlwZXJsaW5rYmFzZScgLypjYXNlICdIeXBlcmxpbmtCYXNlJyovOlxuXHRcdGNhc2UgJ21hbmFnZXInIC8qY2FzZSAnTWFuYWdlcicqLzpcblx0XHRjYXNlICdjb250ZW50c3RhdHVzJyAvKmNhc2UgJ0NvbnRlbnRTdGF0dXMnKi86XG5cdFx0Y2FzZSAnaWRlbnRpZmllcicgLypjYXNlICdJZGVudGlmaWVyJyovOlxuXHRcdGNhc2UgJ2xhbmd1YWdlJyAvKmNhc2UgJ0xhbmd1YWdlJyovOlxuXHRcdGNhc2UgJ2FwcG5hbWUnIC8qY2FzZSAnQXBwTmFtZScqLzpcblx0XHRcdGlmKFJuWzBdLnNsaWNlKC0yKSA9PT0gXCIvPlwiKSBicmVhaztcblx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgeGxtbF9zZXRfcHJvcChQcm9wcywgcmF3X1JuMywgc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KSk7XG5cdFx0XHRlbHNlIHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ3BhcmFncmFwaHMnIC8qY2FzZSAnUGFyYWdyYXBocycqLzogYnJlYWs7XG5cblx0XHRjYXNlICdzdHlsZXMnIC8qY2FzZSAnU3R5bGVzJyovOlxuXHRcdGNhc2UgJ3dvcmtib29rJyAvKmNhc2UgJ1dvcmtib29rJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTt9XG5cdFx0XHRlbHNlIHN0YXRlLnB1c2goW1JuWzNdLCBmYWxzZV0pO1xuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdjb21tZW50JyAvKmNhc2UgJ0NvbW1lbnQnKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IG5ldyBFcnJvcihcIkJhZCBzdGF0ZTogXCIrdG1wLmpvaW4oXCJ8XCIpKTtcblx0XHRcdFx0eGxtbF9jbGVhbl9jb21tZW50KGNvbW1lbnQpO1xuXHRcdFx0XHRjb21tZW50cy5wdXNoKGNvbW1lbnQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRtcCA9IHhsbWxfcGFyc2V4bWx0YWcoUm5bMF0pO1xuXHRcdFx0XHRjb21tZW50ID0gKHthOnRtcC5BdXRob3J9Lyo6YW55Ki8pO1xuXHRcdFx0fVxuXHRcdFx0YnJlYWs7XG5cblx0XHRjYXNlICdhdXRvZmlsdGVyJyAvKmNhc2UgJ0F1dG9GaWx0ZXInKi86XG5cdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgbmV3IEVycm9yKFwiQmFkIHN0YXRlOiBcIit0bXAuam9pbihcInxcIikpO31cblx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSB7XG5cdFx0XHRcdHZhciBBdXRvRmlsdGVyID0geGxtbF9wYXJzZXhtbHRhZyhSblswXSk7XG5cdFx0XHRcdGN1cnNoZWV0WychYXV0b2ZpbHRlciddID0geyByZWY6cmNfdG9fYTEoQXV0b0ZpbHRlci5SYW5nZSkucmVwbGFjZSgvXFwkL2csXCJcIikgfTtcblx0XHRcdFx0c3RhdGUucHVzaChbUm5bM10sIHRydWVdKTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXG5cdFx0Y2FzZSAnbmFtZScgLypjYXNlICdOYW1lJyovOiBicmVhaztcblxuXHRcdGNhc2UgJ2RhdGF2YWxpZGF0aW9uJyAvKmNhc2UgJ0RhdGFWYWxpZGF0aW9uJyovOlxuXHRcdFx0aWYoUm5bMV09PT0nLycpe1xuXHRcdFx0XHRpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ3BpeGVsc3BlcmluY2gnIC8qY2FzZSAnUGl4ZWxzUGVySW5jaCcqLzpcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2NvbXBvbmVudG9wdGlvbnMnIC8qY2FzZSAnQ29tcG9uZW50T3B0aW9ucycqLzpcblx0XHRjYXNlICdkb2N1bWVudHByb3BlcnRpZXMnIC8qY2FzZSAnRG9jdW1lbnRQcm9wZXJ0aWVzJyovOlxuXHRcdGNhc2UgJ2N1c3RvbWRvY3VtZW50cHJvcGVydGllcycgLypjYXNlICdDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMnKi86XG5cdFx0Y2FzZSAnb2ZmaWNlZG9jdW1lbnRzZXR0aW5ncycgLypjYXNlICdPZmZpY2VEb2N1bWVudFNldHRpbmdzJyovOlxuXHRcdGNhc2UgJ3Bpdm90dGFibGUnIC8qY2FzZSAnUGl2b3RUYWJsZScqLzpcblx0XHRjYXNlICdwaXZvdGNhY2hlJyAvKmNhc2UgJ1Bpdm90Q2FjaGUnKi86XG5cdFx0Y2FzZSAnbmFtZXMnIC8qY2FzZSAnTmFtZXMnKi86XG5cdFx0Y2FzZSAnbWFwaW5mbycgLypjYXNlICdNYXBJbmZvJyovOlxuXHRcdGNhc2UgJ3BhZ2VicmVha3MnIC8qY2FzZSAnUGFnZUJyZWFrcycqLzpcblx0XHRjYXNlICdxdWVyeXRhYmxlJyAvKmNhc2UgJ1F1ZXJ5VGFibGUnKi86XG5cdFx0Y2FzZSAnc29ydGluZycgLypjYXNlICdTb3J0aW5nJyovOlxuXHRcdGNhc2UgJ3NjaGVtYScgLypjYXNlICdTY2hlbWEnKi86IC8vY2FzZSAnZGF0YScgLypjYXNlICdkYXRhJyovOlxuXHRcdGNhc2UgJ2NvbmRpdGlvbmFsZm9ybWF0dGluZycgLypjYXNlICdDb25kaXRpb25hbEZvcm1hdHRpbmcnKi86XG5cdFx0Y2FzZSAnc21hcnR0YWd0eXBlJyAvKmNhc2UgJ1NtYXJ0VGFnVHlwZScqLzpcblx0XHRjYXNlICdzbWFydHRhZ3MnIC8qY2FzZSAnU21hcnRUYWdzJyovOlxuXHRcdGNhc2UgJ2V4Y2Vsd29ya2Jvb2snIC8qY2FzZSAnRXhjZWxXb3JrYm9vaycqLzpcblx0XHRjYXNlICd3b3JrYm9va29wdGlvbnMnIC8qY2FzZSAnV29ya2Jvb2tPcHRpb25zJyovOlxuXHRcdGNhc2UgJ3dvcmtzaGVldG9wdGlvbnMnIC8qY2FzZSAnV29ya3NoZWV0T3B0aW9ucycqLzpcblx0XHRcdGlmKFJuWzFdPT09Jy8nKXtpZigodG1wPXN0YXRlLnBvcCgpKVswXSE9PVJuWzNdKSB0aHJvdyBuZXcgRXJyb3IoXCJCYWQgc3RhdGU6IFwiK3RtcC5qb2luKFwifFwiKSk7fVxuXHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRicmVhaztcblxuXHRcdGNhc2UgJ251bGwnIC8qY2FzZSAnTnVsbCcqLzogYnJlYWs7XG5cblx0XHRkZWZhdWx0OlxuXHRcdFx0LyogRk9EUyBmaWxlIHJvb3QgaXMgPG9mZmljZTpkb2N1bWVudD4gKi9cblx0XHRcdGlmKHN0YXRlLmxlbmd0aCA9PSAwICYmIFJuWzNdID09IFwiZG9jdW1lbnRcIikgcmV0dXJuIHBhcnNlX2ZvZHMoc3RyLCBvcHRzKTtcblx0XHRcdC8qIFVPUyBmaWxlIHJvb3QgaXMgPHVvZjpVT0Y+ICovXG5cdFx0XHRpZihzdGF0ZS5sZW5ndGggPT0gMCAmJiBSblszXSA9PSBcInVvZlwiLypcIlVPRlwiKi8pIHJldHVybiBwYXJzZV9mb2RzKHN0ciwgb3B0cyk7XG5cblx0XHRcdHZhciBzZWVuID0gdHJ1ZTtcblx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0LyogT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncyAqL1xuXHRcdFx0XHRjYXNlICdvZmZpY2Vkb2N1bWVudHNldHRpbmdzJyAvKmNhc2UgJ09mZmljZURvY3VtZW50U2V0dGluZ3MnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93cG5nJyAvKmNhc2UgJ0FsbG93UE5HJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZW1vdmVwZXJzb25hbGluZm9ybWF0aW9uJyAvKmNhc2UgJ1JlbW92ZVBlcnNvbmFsSW5mb3JtYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvd25sb2FkY29tcG9uZW50cycgLypjYXNlICdEb3dubG9hZENvbXBvbmVudHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xvY2F0aW9ub2Zjb21wb25lbnRzJyAvKmNhc2UgJ0xvY2F0aW9uT2ZDb21wb25lbnRzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xvcnMnIC8qY2FzZSAnQ29sb3JzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xvcicgLypjYXNlICdDb2xvcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaW5kZXgnIC8qY2FzZSAnSW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JnYicgLypjYXNlICdSR0InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhcmdldHNjcmVlbnNpemUnIC8qY2FzZSAnVGFyZ2V0U2NyZWVuU2l6ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVhZG9ubHlyZWNvbW1lbmRlZCcgLypjYXNlICdSZWFkT25seVJlY29tbWVuZGVkJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogQ29tcG9uZW50T3B0aW9ucyAqL1xuXHRcdFx0XHRjYXNlICdjb21wb25lbnRvcHRpb25zJyAvKmNhc2UgJ0NvbXBvbmVudE9wdGlvbnMnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ3Rvb2xiYXInIC8qY2FzZSAnVG9vbGJhcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGlkZW9mZmljZWxvZ28nIC8qY2FzZSAnSGlkZU9mZmljZUxvZ28nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NwcmVhZHNoZWV0YXV0b2ZpdCcgLypjYXNlICdTcHJlYWRzaGVldEF1dG9GaXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xhYmVsJyAvKmNhc2UgJ0xhYmVsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYXB0aW9uJyAvKmNhc2UgJ0NhcHRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heGhlaWdodCcgLypjYXNlICdNYXhIZWlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21heHdpZHRoJyAvKmNhc2UgJ01heFdpZHRoJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICduZXh0c2hlZXRudW1iZXInIC8qY2FzZSAnTmV4dFNoZWV0TnVtYmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogRXhjZWxXb3JrYm9vayAqL1xuXHRcdFx0XHRjYXNlICdleGNlbHdvcmtib29rJyAvKmNhc2UgJ0V4Y2VsV29ya2Jvb2snKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2RhdGUxOTA0JyAvKmNhc2UgJ0RhdGUxOTA0JyovOlxuXHRcdFx0XHRcdFx0Lyo6OiBpZighV29ya2Jvb2suV0JQcm9wcykgV29ya2Jvb2suV0JQcm9wcyA9IHt9OyAqL1xuXHRcdFx0XHRcdFx0V29ya2Jvb2suV0JQcm9wcy5kYXRlMTkwNCA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3doZWlnaHQnIC8qY2FzZSAnV2luZG93SGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3d3aWR0aCcgLypjYXNlICdXaW5kb3dXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnd2luZG93dG9weCcgLypjYXNlICdXaW5kb3dUb3BYJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aW5kb3d0b3B5JyAvKmNhc2UgJ1dpbmRvd1RvcFknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RhYnJhdGlvJyAvKmNhc2UgJ1RhYlJhdGlvJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0c3RydWN0dXJlJyAvKmNhc2UgJ1Byb3RlY3RTdHJ1Y3R1cmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3R3aW5kb3cnIC8qY2FzZSAnUHJvdGVjdFdpbmRvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHdpbmRvd3MnIC8qY2FzZSAnUHJvdGVjdFdpbmRvd3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FjdGl2ZXNoZWV0JyAvKmNhc2UgJ0FjdGl2ZVNoZWV0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkaXNwbGF5aW5rbm90ZXMnIC8qY2FzZSAnRGlzcGxheUlua05vdGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXJzdHZpc2libGVzaGVldCcgLypjYXNlICdGaXJzdFZpc2libGVTaGVldCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3VwYm9vaycgLypjYXNlICdTdXBCb29rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldG5hbWUnIC8qY2FzZSAnU2hlZXROYW1lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzaGVldGluZGV4JyAvKmNhc2UgJ1NoZWV0SW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0aW5kZXhmaXJzdCcgLypjYXNlICdTaGVldEluZGV4Rmlyc3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NoZWV0aW5kZXhsYXN0JyAvKmNhc2UgJ1NoZWV0SW5kZXhMYXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkbGwnIC8qY2FzZSAnRGxsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhY2NlcHRsYWJlbHNpbmZvcm11bGFzJyAvKmNhc2UgJ0FjY2VwdExhYmVsc0luRm9ybXVsYXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90c2F2ZWxpbmt2YWx1ZXMnIC8qY2FzZSAnRG9Ob3RTYXZlTGlua1ZhbHVlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXRlcmF0aW9uJyAvKmNhc2UgJ0l0ZXJhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4aXRlcmF0aW9ucycgLypjYXNlICdNYXhJdGVyYXRpb25zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXhjaGFuZ2UnIC8qY2FzZSAnTWF4Q2hhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYXRoJyAvKmNhc2UgJ1BhdGgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3hjdCcgLypjYXNlICdYY3QnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvdW50JyAvKmNhc2UgJ0NvdW50JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzZWxlY3RlZHNoZWV0cycgLypjYXNlICdTZWxlY3RlZFNoZWV0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FsY3VsYXRpb24nIC8qY2FzZSAnQ2FsY3VsYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VuY2FsY2VkJyAvKmNhc2UgJ1VuY2FsY2VkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzdGFydHVwcHJvbXB0JyAvKmNhc2UgJ1N0YXJ0dXBQcm9tcHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NybicgLypjYXNlICdDcm4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2V4dGVybm5hbWUnIC8qY2FzZSAnRXh0ZXJuTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9ybXVsYScgLypjYXNlICdGb3JtdWxhJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xmaXJzdCcgLypjYXNlICdDb2xGaXJzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sbGFzdCcgLypjYXNlICdDb2xMYXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3YW50YWR2aXNlJyAvKmNhc2UgJ1dhbnRBZHZpc2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nIC8qY2FzZSAnQm9vbGVhbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3InIC8qY2FzZSAnRXJyb3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RleHQnIC8qY2FzZSAnVGV4dCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb2xlJyAvKmNhc2UgJ09MRScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9hdXRvcmVjb3ZlcicgLypjYXNlICdOb0F1dG9SZWNvdmVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdWJsaXNob2JqZWN0cycgLypjYXNlICdQdWJsaXNoT2JqZWN0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RjYWxjdWxhdGViZWZvcmVzYXZlJyAvKmNhc2UgJ0RvTm90Q2FsY3VsYXRlQmVmb3JlU2F2ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbnVtYmVyJyAvKmNhc2UgJ051bWJlcicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmbW9kZXIxYzEnIC8qY2FzZSAnUmVmTW9kZVIxQzEnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VtYmVkc2F2ZXNtYXJ0dGFncycgLypjYXNlICdFbWJlZFNhdmVTbWFydFRhZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBXb3JrYm9va09wdGlvbnMgKi9cblx0XHRcdFx0Y2FzZSAnd29ya2Jvb2tvcHRpb25zJyAvKmNhc2UgJ1dvcmtib29rT3B0aW9ucycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnb3djdmVyc2lvbicgLypjYXNlICdPV0NWZXJzaW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdoZWlnaHQnIC8qY2FzZSAnSGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd3aWR0aCcgLypjYXNlICdXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIFdvcmtzaGVldE9wdGlvbnMgKi9cblx0XHRcdFx0Y2FzZSAnd29ya3NoZWV0b3B0aW9ucycgLypjYXNlICdXb3Jrc2hlZXRPcHRpb25zJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICd2aXNpYmxlJyAvKmNhc2UgJ1Zpc2libGUnKi86XG5cdFx0XHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIil7LyogZW1wdHkgKi99XG5cdFx0XHRcdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHN3aXRjaChzdHIuc2xpY2UocGlkeCwgUm4uaW5kZXgpKSB7XG5cdFx0XHRcdFx0XHRcdGNhc2UgXCJTaGVldEhpZGRlblwiOiB3c3Byb3BzLkhpZGRlbiA9IDE7IGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRjYXNlIFwiU2hlZXRWZXJ5SGlkZGVuXCI6IHdzcHJvcHMuSGlkZGVuID0gMjsgYnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hlYWRlcicgLypjYXNlICdIZWFkZXInKi86XG5cdFx0XHRcdFx0XHRpZighY3Vyc2hlZXRbJyFtYXJnaW5zJ10pIGRlZmF1bHRfbWFyZ2lucyhjdXJzaGVldFsnIW1hcmdpbnMnXT17fSwgJ3hsbWwnKTtcblx0XHRcdFx0XHRcdGlmKCFpc05hTigrcGFyc2V4bWx0YWcoUm5bMF0pLk1hcmdpbikpIGN1cnNoZWV0WychbWFyZ2lucyddLmhlYWRlciA9ICtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZm9vdGVyJyAvKmNhc2UgJ0Zvb3RlcicqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKGN1cnNoZWV0WychbWFyZ2lucyddPXt9LCAneGxtbCcpO1xuXHRcdFx0XHRcdFx0aWYoIWlzTmFOKCtwYXJzZXhtbHRhZyhSblswXSkuTWFyZ2luKSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10uZm9vdGVyID0gK3BhcnNleG1sdGFnKFJuWzBdKS5NYXJnaW47XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlbWFyZ2lucycgLypjYXNlICdQYWdlTWFyZ2lucycqLzpcblx0XHRcdFx0XHRcdHZhciBwYWdlbWFyZ2lucyA9IHBhcnNleG1sdGFnKFJuWzBdKTtcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKGN1cnNoZWV0WychbWFyZ2lucyddPXt9LCd4bG1sJyk7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLlRvcCkpIGN1cnNoZWV0WychbWFyZ2lucyddLnRvcCA9ICtwYWdlbWFyZ2lucy5Ub3A7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLkxlZnQpKSBjdXJzaGVldFsnIW1hcmdpbnMnXS5sZWZ0ID0gK3BhZ2VtYXJnaW5zLkxlZnQ7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLlJpZ2h0KSkgY3Vyc2hlZXRbJyFtYXJnaW5zJ10ucmlnaHQgPSArcGFnZW1hcmdpbnMuUmlnaHQ7XG5cdFx0XHRcdFx0XHRpZighaXNOYU4oK3BhZ2VtYXJnaW5zLkJvdHRvbSkpIGN1cnNoZWV0WychbWFyZ2lucyddLmJvdHRvbSA9ICtwYWdlbWFyZ2lucy5Cb3R0b207XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdkaXNwbGF5cmlnaHR0b2xlZnQnIC8qY2FzZSAnRGlzcGxheVJpZ2h0VG9MZWZ0JyovOlxuXHRcdFx0XHRcdFx0aWYoIVdvcmtib29rLlZpZXdzKSBXb3JrYm9vay5WaWV3cyA9IFtdO1xuXHRcdFx0XHRcdFx0aWYoIVdvcmtib29rLlZpZXdzWzBdKSBXb3JrYm9vay5WaWV3c1swXSA9IHt9O1xuXHRcdFx0XHRcdFx0V29ya2Jvb2suVmlld3NbMF0uUlRMID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnZnJlZXplcGFuZXMnIC8qY2FzZSAnRnJlZXplUGFuZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Zyb3plbm5vc3BsaXQnIC8qY2FzZSAnRnJvemVuTm9TcGxpdCcqLzogYnJlYWs7XG5cblx0XHRcdFx0XHRjYXNlICdzcGxpdGhvcml6b250YWwnIC8qY2FzZSAnU3BsaXRIb3Jpem9udGFsJyovOlxuXHRcdFx0XHRcdGNhc2UgJ3NwbGl0dmVydGljYWwnIC8qY2FzZSAnU3BsaXRWZXJ0aWNhbCcqLzpcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5Z3JpZGxpbmVzJyAvKmNhc2UgJ0RvTm90RGlzcGxheUdyaWRsaW5lcycqLzpcblx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlcm93JyAvKmNhc2UgJ0FjdGl2ZVJvdycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlY29sJyAvKmNhc2UgJ0FjdGl2ZUNvbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndG9wcm93Ym90dG9tcGFuZScgLypjYXNlICdUb3BSb3dCb3R0b21QYW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsZWZ0Y29sdW1ucmlnaHRwYW5lJyAvKmNhc2UgJ0xlZnRDb2x1bW5SaWdodFBhbmUnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAndW5zeW5jZWQnIC8qY2FzZSAnVW5zeW5jZWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ByaW50JyAvKmNhc2UgJ1ByaW50JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcmludGVycm9ycycgLypjYXNlICdQcmludEVycm9ycycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFuZXMnIC8qY2FzZSAnUGFuZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NjYWxlJyAvKmNhc2UgJ1NjYWxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYW5lJyAvKmNhc2UgJ1BhbmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcicgLypjYXNlICdOdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dCcgLypjYXNlICdMYXlvdXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VzZXR1cCcgLypjYXNlICdQYWdlU2V0dXAnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NlbGVjdGVkJyAvKmNhc2UgJ1NlbGVjdGVkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcm90ZWN0b2JqZWN0cycgLypjYXNlICdQcm90ZWN0T2JqZWN0cycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW5hYmxlc2VsZWN0aW9uJyAvKmNhc2UgJ0VuYWJsZVNlbGVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHJvdGVjdHNjZW5hcmlvcycgLypjYXNlICdQcm90ZWN0U2NlbmFyaW9zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWxpZHByaW50ZXJpbmZvJyAvKmNhc2UgJ1ZhbGlkUHJpbnRlckluZm8nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2hvcml6b250YWxyZXNvbHV0aW9uJyAvKmNhc2UgJ0hvcml6b250YWxSZXNvbHV0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJ0aWNhbHJlc29sdXRpb24nIC8qY2FzZSAnVmVydGljYWxSZXNvbHV0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdudW1iZXJvZmNvcGllcycgLypjYXNlICdOdW1iZXJvZkNvcGllcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWN0aXZlcGFuZScgLypjYXNlICdBY3RpdmVQYW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0b3Byb3d2aXNpYmxlJyAvKmNhc2UgJ1RvcFJvd1Zpc2libGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xlZnRjb2x1bW52aXNpYmxlJyAvKmNhc2UgJ0xlZnRDb2x1bW5WaXNpYmxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXR0b3BhZ2UnIC8qY2FzZSAnRml0VG9QYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyYW5nZXNlbGVjdGlvbicgLypjYXNlICdSYW5nZVNlbGVjdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFwZXJzaXplaW5kZXgnIC8qY2FzZSAnUGFwZXJTaXplSW5kZXgnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3BhZ2VsYXlvdXR6b29tJyAvKmNhc2UgJ1BhZ2VMYXlvdXRab29tJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwYWdlYnJlYWt6b29tJyAvKmNhc2UgJ1BhZ2VCcmVha1pvb20nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2ZpbHRlcm9uJyAvKmNhc2UgJ0ZpbHRlck9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaXR3aWR0aCcgLypjYXNlICdGaXRXaWR0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZml0aGVpZ2h0JyAvKmNhc2UgJ0ZpdEhlaWdodCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29tbWVudHNsYXlvdXQnIC8qY2FzZSAnQ29tbWVudHNMYXlvdXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3pvb20nIC8qY2FzZSAnWm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGVmdHRvcmlnaHQnIC8qY2FzZSAnTGVmdFRvUmlnaHQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2dyaWRsaW5lcycgLypjYXNlICdHcmlkbGluZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93c29ydCcgLypjYXNlICdBbGxvd1NvcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93ZmlsdGVyJyAvKmNhc2UgJ0FsbG93RmlsdGVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydHJvd3MnIC8qY2FzZSAnQWxsb3dJbnNlcnRSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2RlbGV0ZXJvd3MnIC8qY2FzZSAnQWxsb3dEZWxldGVSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydGNvbHMnIC8qY2FzZSAnQWxsb3dJbnNlcnRDb2xzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2RlbGV0ZWNvbHMnIC8qY2FzZSAnQWxsb3dEZWxldGVDb2xzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2luc2VydGh5cGVybGlua3MnIC8qY2FzZSAnQWxsb3dJbnNlcnRIeXBlcmxpbmtzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhbGxvd2Zvcm1hdGNlbGxzJyAvKmNhc2UgJ0FsbG93Rm9ybWF0Q2VsbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93c2l6ZWNvbHMnIC8qY2FzZSAnQWxsb3dTaXplQ29scycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYWxsb3dzaXplcm93cycgLypjYXNlICdBbGxvd1NpemVSb3dzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3N1bW1hcnlyb3dzYmVsb3dkZXRhaWwnIC8qY2FzZSAnTm9TdW1tYXJ5Um93c0JlbG93RGV0YWlsJyovOlxuXHRcdFx0XHRcdFx0aWYoIWN1cnNoZWV0W1wiIW91dGxpbmVcIl0pIGN1cnNoZWV0W1wiIW91dGxpbmVcIl0gPSB7fTtcblx0XHRcdFx0XHRcdGN1cnNoZWV0W1wiIW91dGxpbmVcIl0uYWJvdmUgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGFiY29sb3JpbmRleCcgLypjYXNlICdUYWJDb2xvckluZGV4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXloZWFkaW5ncycgLypjYXNlICdEb05vdERpc3BsYXlIZWFkaW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hvd3BhZ2VsYXlvdXR6b29tJyAvKmNhc2UgJ1Nob3dQYWdlTGF5b3V0Wm9vbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9zdW1tYXJ5Y29sdW1uc3JpZ2h0ZGV0YWlsJyAvKmNhc2UgJ05vU3VtbWFyeUNvbHVtbnNSaWdodERldGFpbCcqLzpcblx0XHRcdFx0XHRcdGlmKCFjdXJzaGVldFtcIiFvdXRsaW5lXCJdKSBjdXJzaGVldFtcIiFvdXRsaW5lXCJdID0ge307XG5cdFx0XHRcdFx0XHRjdXJzaGVldFtcIiFvdXRsaW5lXCJdLmxlZnQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYmxhY2thbmR3aGl0ZScgLypjYXNlICdCbGFja0FuZFdoaXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkb25vdGRpc3BsYXl6ZXJvcycgLypjYXNlICdEb05vdERpc3BsYXlaZXJvcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGlzcGxheXBhZ2VicmVhaycgLypjYXNlICdEaXNwbGF5UGFnZUJyZWFrJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyb3djb2xoZWFkaW5ncycgLypjYXNlICdSb3dDb2xIZWFkaW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZG9ub3RkaXNwbGF5b3V0bGluZScgLypjYXNlICdEb05vdERpc3BsYXlPdXRsaW5lJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub29yaWVudGF0aW9uJyAvKmNhc2UgJ05vT3JpZW50YXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FsbG93dXNlcGl2b3R0YWJsZXMnIC8qY2FzZSAnQWxsb3dVc2VQaXZvdFRhYmxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnemVyb2hlaWdodCcgLypjYXNlICdaZXJvSGVpZ2h0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2aWV3YWJsZXJhbmdlJyAvKmNhc2UgJ1ZpZXdhYmxlUmFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NlbGVjdGlvbicgLypjYXNlICdTZWxlY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Byb3RlY3Rjb250ZW50cycgLypjYXNlICdQcm90ZWN0Q29udGVudHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBQaXZvdFRhYmxlICovXG5cdFx0XHRcdGNhc2UgJ3Bpdm90dGFibGUnIC8qY2FzZSAnUGl2b3RUYWJsZScqLzogY2FzZSAncGl2b3RjYWNoZScgLypjYXNlICdQaXZvdENhY2hlJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdpbW1lZGlhdGVpdGVtc29uZHJvcCcgLypjYXNlICdJbW1lZGlhdGVJdGVtc09uRHJvcCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc2hvd3BhZ2VtdWx0aXBsZWl0ZW1sYWJlbCcgLypjYXNlICdTaG93UGFnZU11bHRpcGxlSXRlbUxhYmVsJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21wYWN0cm93aW5kZW50JyAvKmNhc2UgJ0NvbXBhY3RSb3dJbmRlbnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xvY2F0aW9uJyAvKmNhc2UgJ0xvY2F0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwaXZvdGZpZWxkJyAvKmNhc2UgJ1Bpdm90RmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29yaWVudGF0aW9uJyAvKmNhc2UgJ09yaWVudGF0aW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdsYXlvdXRmb3JtJyAvKmNhc2UgJ0xheW91dEZvcm0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2xheW91dHN1YnRvdGFsbG9jYXRpb24nIC8qY2FzZSAnTGF5b3V0U3VidG90YWxMb2NhdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbGF5b3V0Y29tcGFjdHJvdycgLypjYXNlICdMYXlvdXRDb21wYWN0Um93JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwb3NpdGlvbicgLypjYXNlICdQb3NpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGl2b3RpdGVtJyAvKmNhc2UgJ1Bpdm90SXRlbScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGF0YXR5cGUnIC8qY2FzZSAnRGF0YVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RhdGFmaWVsZCcgLypjYXNlICdEYXRhRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvdXJjZW5hbWUnIC8qY2FzZSAnU291cmNlTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncGFyZW50ZmllbGQnIC8qY2FzZSAnUGFyZW50RmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3B0bGluZWl0ZW1zJyAvKmNhc2UgJ1BUTGluZUl0ZW1zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwdGxpbmVpdGVtJyAvKmNhc2UgJ1BUTGluZUl0ZW0nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvdW50b2ZzYW1laXRlbXMnIC8qY2FzZSAnQ291bnRPZlNhbWVJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaXRlbScgLypjYXNlICdJdGVtJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpdGVtdHlwZScgLypjYXNlICdJdGVtVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncHRzb3VyY2UnIC8qY2FzZSAnUFRTb3VyY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NhY2hlaW5kZXgnIC8qY2FzZSAnQ2FjaGVJbmRleCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29uc29saWRhdGlvbnJlZmVyZW5jZScgLypjYXNlICdDb25zb2xpZGF0aW9uUmVmZXJlbmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmaWxlbmFtZScgLypjYXNlICdGaWxlTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmZXJlbmNlJyAvKmNhc2UgJ1JlZmVyZW5jZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm9jb2x1bW5ncmFuZCcgLypjYXNlICdOb0NvbHVtbkdyYW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdub3Jvd2dyYW5kJyAvKmNhc2UgJ05vUm93R3JhbmQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2JsYW5rbGluZWFmdGVyaXRlbXMnIC8qY2FzZSAnQmxhbmtMaW5lQWZ0ZXJJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaGlkZGVuJyAvKmNhc2UgJ0hpZGRlbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc3VidG90YWwnIC8qY2FzZSAnU3VidG90YWwnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Jhc2VmaWVsZCcgLypjYXNlICdCYXNlRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ21hcGNoaWxkaXRlbXMnIC8qY2FzZSAnTWFwQ2hpbGRJdGVtcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZnVuY3Rpb24nIC8qY2FzZSAnRnVuY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hvbmZpbGVvcGVuJyAvKmNhc2UgJ1JlZnJlc2hPbkZpbGVPcGVuJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdwcmludHNldHRpdGxlcycgLypjYXNlICdQcmludFNldFRpdGxlcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWVyZ2VsYWJlbHMnIC8qY2FzZSAnTWVyZ2VMYWJlbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RlZmF1bHR2ZXJzaW9uJyAvKmNhc2UgJ0RlZmF1bHRWZXJzaW9uJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNobmFtZScgLypjYXNlICdSZWZyZXNoTmFtZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncmVmcmVzaGRhdGUnIC8qY2FzZSAnUmVmcmVzaERhdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JlZnJlc2hkYXRlY29weScgLypjYXNlICdSZWZyZXNoRGF0ZUNvcHknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0cmVmcmVzaCcgLypjYXNlICdWZXJzaW9uTGFzdFJlZnJlc2gnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0dXBkYXRlJyAvKmNhc2UgJ1ZlcnNpb25MYXN0VXBkYXRlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2ZXJzaW9udXBkYXRlYWJsZW1pbicgLypjYXNlICdWZXJzaW9uVXBkYXRlYWJsZU1pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmVyc2lvbnJlZnJlc2hhYmxlbWluJyAvKmNhc2UgJ1ZlcnNpb25SZWZyZXNoYWJsZU1pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2FsY3VsYXRpb24nIC8qY2FzZSAnQ2FsY3VsYXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBQYWdlQnJlYWtzICovXG5cdFx0XHRcdGNhc2UgJ3BhZ2VicmVha3MnIC8qY2FzZSAnUGFnZUJyZWFrcycqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnY29sYnJlYWtzJyAvKmNhc2UgJ0NvbEJyZWFrcycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sYnJlYWsnIC8qY2FzZSAnQ29sQnJlYWsnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2JyZWFrcycgLypjYXNlICdSb3dCcmVha3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3Jvd2JyZWFrJyAvKmNhc2UgJ1Jvd0JyZWFrJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb2xzdGFydCcgLypjYXNlICdDb2xTdGFydCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY29sZW5kJyAvKmNhc2UgJ0NvbEVuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncm93ZW5kJyAvKmNhc2UgJ1Jvd0VuZCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdC8qIEF1dG9GaWx0ZXIgKi9cblx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcicgLypjYXNlICdBdXRvRmlsdGVyJyovOiBzd2l0Y2goUm5bM10pIHtcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyY29sdW1uJyAvKmNhc2UgJ0F1dG9GaWx0ZXJDb2x1bW4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2F1dG9maWx0ZXJjb25kaXRpb24nIC8qY2FzZSAnQXV0b0ZpbHRlckNvbmRpdGlvbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2ZpbHRlcmFuZCcgLypjYXNlICdBdXRvRmlsdGVyQW5kJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZmlsdGVyb3InIC8qY2FzZSAnQXV0b0ZpbHRlck9yJyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogUXVlcnlUYWJsZSAqL1xuXHRcdFx0XHRjYXNlICdxdWVyeXRhYmxlJyAvKmNhc2UgJ1F1ZXJ5VGFibGUnKi86IHN3aXRjaChSblszXSkge1xuXHRcdFx0XHRcdGNhc2UgJ2lkJyAvKmNhc2UgJ0lkJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdXRvZm9ybWF0Zm9udCcgLypjYXNlICdBdXRvRm9ybWF0Rm9udCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2Zvcm1hdHBhdHRlcm4nIC8qY2FzZSAnQXV0b0Zvcm1hdFBhdHRlcm4nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1ZXJ5c291cmNlJyAvKmNhc2UgJ1F1ZXJ5U291cmNlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdxdWVyeXR5cGUnIC8qY2FzZSAnUXVlcnlUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlbmFibGVyZWRpcmVjdGlvbnMnIC8qY2FzZSAnRW5hYmxlUmVkaXJlY3Rpb25zJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoZWRpbnhsOScgLypjYXNlICdSZWZyZXNoZWRJblhsOScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndXJsc3RyaW5nJyAvKmNhc2UgJ1VSTFN0cmluZycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnaHRtbHRhYmxlcycgLypjYXNlICdIVE1MVGFibGVzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb25uZWN0aW9uJyAvKmNhc2UgJ0Nvbm5lY3Rpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbW1hbmR0ZXh0JyAvKmNhc2UgJ0NvbW1hbmRUZXh0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdyZWZyZXNoaW5mbycgLypjYXNlICdSZWZyZXNoSW5mbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbm90aXRsZXMnIC8qY2FzZSAnTm9UaXRsZXMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ25leHRpZCcgLypjYXNlICdOZXh0SWQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbHVtbmluZm8nIC8qY2FzZSAnQ29sdW1uSW5mbycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3ZlcndyaXRlY2VsbHMnIC8qY2FzZSAnT3ZlcndyaXRlQ2VsbHMnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rvbm90cHJvbXB0Zm9yZmlsZScgLypjYXNlICdEb05vdFByb21wdEZvckZpbGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RleHR3aXphcmRzZXR0aW5ncycgLypjYXNlICdUZXh0V2l6YXJkU2V0dGluZ3MnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3NvdXJjZScgLypjYXNlICdTb3VyY2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ251bWJlcicgLypjYXNlICdOdW1iZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2RlY2ltYWwnIC8qY2FzZSAnRGVjaW1hbCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndGhvdXNhbmRzZXBhcmF0b3InIC8qY2FzZSAnVGhvdXNhbmRTZXBhcmF0b3InKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3RyYWlsaW5nbWludXNudW1iZXJzJyAvKmNhc2UgJ1RyYWlsaW5nTWludXNOdW1iZXJzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXRzZXR0aW5ncycgLypjYXNlICdGb3JtYXRTZXR0aW5ncycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmllbGR0eXBlJyAvKmNhc2UgJ0ZpZWxkVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZGVsaW1pdGVycycgLypjYXNlICdEZWxpbWl0ZXJzJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd0YWInIC8qY2FzZSAnVGFiJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjb21tYScgLypjYXNlICdDb21tYScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnYXV0b2Zvcm1hdG5hbWUnIC8qY2FzZSAnQXV0b0Zvcm1hdE5hbWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0ZWRpdCcgLypjYXNlICdWZXJzaW9uTGFzdEVkaXQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZlcnNpb25sYXN0cmVmcmVzaCcgLypjYXNlICdWZXJzaW9uTGFzdFJlZnJlc2gnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHRjYXNlICdkYXRhdmFsaWRhdGlvbicgLypjYXNlICdEYXRhVmFsaWRhdGlvbicqLzpcblx0XHRcdFx0c3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2UnIC8qY2FzZSAnUmFuZ2UnKi86IGJyZWFrO1xuXG5cdFx0XHRcdFx0Y2FzZSAndHlwZScgLypjYXNlICdUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtaW4nIC8qY2FzZSAnTWluJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdtYXgnIC8qY2FzZSAnTWF4JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdzb3J0JyAvKmNhc2UgJ1NvcnQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Rlc2NlbmRpbmcnIC8qY2FzZSAnRGVzY2VuZGluZycqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnb3JkZXInIC8qY2FzZSAnT3JkZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Nhc2VzZW5zaXRpdmUnIC8qY2FzZSAnQ2FzZVNlbnNpdGl2ZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAndmFsdWUnIC8qY2FzZSAnVmFsdWUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9yc3R5bGUnIC8qY2FzZSAnRXJyb3JTdHlsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3JtZXNzYWdlJyAvKmNhc2UgJ0Vycm9yTWVzc2FnZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZXJyb3J0aXRsZScgLypjYXNlICdFcnJvclRpdGxlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dG1lc3NhZ2UnIC8qY2FzZSAnSW5wdXRNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dHRpdGxlJyAvKmNhc2UgJ0lucHV0VGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbWJvaGlkZScgLypjYXNlICdDb21ib0hpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0aGlkZScgLypjYXNlICdJbnB1dEhpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbmRpdGlvbicgLypjYXNlICdDb25kaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1YWxpZmllcicgLypjYXNlICdRdWFsaWZpZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VzZWJsYW5rJyAvKmNhc2UgJ1VzZUJsYW5rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTEnIC8qY2FzZSAnVmFsdWUxJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTInIC8qY2FzZSAnVmFsdWUyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXQnIC8qY2FzZSAnRm9ybWF0JyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ2NlbGxyYW5nZWxpc3QnIC8qY2FzZSAnQ2VsbFJhbmdlTGlzdCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgJ3NvcnRpbmcnIC8qY2FzZSAnU29ydGluZycqLzpcblx0XHRcdFx0Y2FzZSAnY29uZGl0aW9uYWxmb3JtYXR0aW5nJyAvKmNhc2UgJ0NvbmRpdGlvbmFsRm9ybWF0dGluZycqLzpcblx0XHRcdFx0c3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAncmFuZ2UnIC8qY2FzZSAnUmFuZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3R5cGUnIC8qY2FzZSAnVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWluJyAvKmNhc2UgJ01pbicqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnbWF4JyAvKmNhc2UgJ01heCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnc29ydCcgLypjYXNlICdTb3J0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdkZXNjZW5kaW5nJyAvKmNhc2UgJ0Rlc2NlbmRpbmcnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ29yZGVyJyAvKmNhc2UgJ09yZGVyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdjYXNlc2Vuc2l0aXZlJyAvKmNhc2UgJ0Nhc2VTZW5zaXRpdmUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3ZhbHVlJyAvKmNhc2UgJ1ZhbHVlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdlcnJvcnN0eWxlJyAvKmNhc2UgJ0Vycm9yU3R5bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ybWVzc2FnZScgLypjYXNlICdFcnJvck1lc3NhZ2UnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2Vycm9ydGl0bGUnIC8qY2FzZSAnRXJyb3JUaXRsZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnY2VsbHJhbmdlbGlzdCcgLypjYXNlICdDZWxsUmFuZ2VMaXN0JyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dG1lc3NhZ2UnIC8qY2FzZSAnSW5wdXRNZXNzYWdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdpbnB1dHRpdGxlJyAvKmNhc2UgJ0lucHV0VGl0bGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbWJvaGlkZScgLypjYXNlICdDb21ib0hpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2lucHV0aGlkZScgLypjYXNlICdJbnB1dEhpZGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2NvbmRpdGlvbicgLypjYXNlICdDb25kaXRpb24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3F1YWxpZmllcicgLypjYXNlICdRdWFsaWZpZXInKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3VzZWJsYW5rJyAvKmNhc2UgJ1VzZUJsYW5rJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTEnIC8qY2FzZSAnVmFsdWUxJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd2YWx1ZTInIC8qY2FzZSAnVmFsdWUyJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdmb3JtYXQnIC8qY2FzZSAnRm9ybWF0JyovOiBicmVhaztcblx0XHRcdFx0XHRkZWZhdWx0OiBzZWVuID0gZmFsc2U7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdFx0LyogTWFwSW5mbyAoc2NoZW1hKSAqL1xuXHRcdFx0XHRjYXNlICdtYXBpbmZvJyAvKmNhc2UgJ01hcEluZm8nKi86IGNhc2UgJ3NjaGVtYScgLypjYXNlICdTY2hlbWEnKi86IGNhc2UgJ2RhdGEnIC8qY2FzZSAnZGF0YScqLzogc3dpdGNoKFJuWzNdKSB7XG5cdFx0XHRcdFx0Y2FzZSAnbWFwJyAvKmNhc2UgJ01hcCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZW50cnknIC8qY2FzZSAnRW50cnknKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3JhbmdlJyAvKmNhc2UgJ1JhbmdlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICd4cGF0aCcgLypjYXNlICdYUGF0aCcqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmllbGQnIC8qY2FzZSAnRmllbGQnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ3hzZHR5cGUnIC8qY2FzZSAnWFNEVHlwZScqLzogYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnZmlsdGVyb24nIC8qY2FzZSAnRmlsdGVyT24nKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2FnZ3JlZ2F0ZScgLypjYXNlICdBZ2dyZWdhdGUnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2VsZW1lbnR0eXBlJyAvKmNhc2UgJ0VsZW1lbnRUeXBlJyovOiBicmVhaztcblx0XHRcdFx0XHRjYXNlICdhdHRyaWJ1dGV0eXBlJyAvKmNhc2UgJ0F0dHJpYnV0ZVR5cGUnKi86IGJyZWFrO1xuXHRcdFx0XHQvKiBUaGVzZSBhcmUgZnJvbSB4c2QgKFhNTCBTY2hlbWEgRGVmaW5pdGlvbikgKi9cblx0XHRcdFx0XHRjYXNlICdzY2hlbWEnIC8qY2FzZSAnc2NoZW1hJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2VsZW1lbnQnIC8qY2FzZSAnZWxlbWVudCcqLzpcblx0XHRcdFx0XHRjYXNlICdjb21wbGV4dHlwZScgLypjYXNlICdjb21wbGV4VHlwZScqLzpcblx0XHRcdFx0XHRjYXNlICdkYXRhdHlwZScgLypjYXNlICdkYXRhdHlwZScqLzpcblx0XHRcdFx0XHRjYXNlICdhbGwnIC8qY2FzZSAnYWxsJyovOlxuXHRcdFx0XHRcdGNhc2UgJ2F0dHJpYnV0ZScgLypjYXNlICdhdHRyaWJ1dGUnKi86XG5cdFx0XHRcdFx0Y2FzZSAnZXh0ZW5kcycgLypjYXNlICdleHRlbmRzJyovOiBicmVhaztcblxuXHRcdFx0XHRcdGNhc2UgJ3JvdycgLypjYXNlICdyb3cnKi86IGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6IHNlZW4gPSBmYWxzZTtcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0XHQvKiBTbWFydFRhZ3MgKGNhbiBiZSBhbnl0aGluZykgKi9cblx0XHRcdFx0Y2FzZSAnc21hcnR0YWdzJyAvKmNhc2UgJ1NtYXJ0VGFncycqLzogYnJlYWs7XG5cblx0XHRcdFx0ZGVmYXVsdDogc2VlbiA9IGZhbHNlOyBicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKHNlZW4pIGJyZWFrO1xuXHRcdFx0LyogQ3VzdG9tRG9jdW1lbnRQcm9wZXJ0aWVzICovXG5cdFx0XHRpZihSblszXS5tYXRjaCgvIVxcW0NEQVRBLykpIGJyZWFrO1xuXHRcdFx0aWYoIXN0YXRlW3N0YXRlLmxlbmd0aC0xXVsxXSkgdGhyb3cgJ1VucmVjb2duaXplZCB0YWc6ICcgKyBSblszXSArIFwifFwiICsgc3RhdGUuam9pbihcInxcIik7XG5cdFx0XHRpZihzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF09PT0vKidDdXN0b21Eb2N1bWVudFByb3BlcnRpZXMnKi8nY3VzdG9tZG9jdW1lbnRwcm9wZXJ0aWVzJykge1xuXHRcdFx0XHRpZihSblswXS5zbGljZSgtMikgPT09IFwiLz5cIikgYnJlYWs7XG5cdFx0XHRcdGVsc2UgaWYoUm5bMV09PT1cIi9cIikgeGxtbF9zZXRfY3VzdHByb3AoQ3VzdHByb3BzLCByYXdfUm4zLCBjcCwgc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KSk7XG5cdFx0XHRcdGVsc2UgeyBjcCA9IFJuOyBwaWR4ID0gUm4uaW5kZXggKyBSblswXS5sZW5ndGg7IH1cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihvcHRzLldURikgdGhyb3cgJ1VucmVjb2duaXplZCB0YWc6ICcgKyBSblszXSArIFwifFwiICsgc3RhdGUuam9pbihcInxcIik7XG5cdH1cblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyAmJiAhb3B0cy5ib29rUHJvcHMpIG91dC5TaGVldHMgPSBzaGVldHM7XG5cdG91dC5TaGVldE5hbWVzID0gc2hlZXRuYW1lcztcblx0b3V0Lldvcmtib29rID0gV29ya2Jvb2s7XG5cdG91dC5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0b3V0LlByb3BzID0gUHJvcHM7XG5cdG91dC5DdXN0cHJvcHMgPSBDdXN0cHJvcHM7XG5cdHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsbWwoZGF0YS8qOlJhd0J5dGVzfHN0cmluZyovLCBvcHRzKS8qOldvcmtib29rKi8ge1xuXHRmaXhfcmVhZF9vcHRzKG9wdHM9b3B0c3x8e30pO1xuXHRzd2l0Y2gob3B0cy50eXBlfHxcImJhc2U2NFwiKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gcGFyc2VfeGxtbF94bWwoQmFzZTY0X2RlY29kZShkYXRhKSwgb3B0cyk7XG5cdFx0Y2FzZSBcImJpbmFyeVwiOiBjYXNlIFwiYnVmZmVyXCI6IGNhc2UgXCJmaWxlXCI6IHJldHVybiBwYXJzZV94bG1sX3htbChkYXRhLCBvcHRzKTtcblx0XHRjYXNlIFwiYXJyYXlcIjogcmV0dXJuIHBhcnNlX3hsbWxfeG1sKGEycyhkYXRhKSwgb3B0cyk7XG5cdH1cblx0Lyo6OiB0aHJvdyBuZXcgRXJyb3IoXCJ1bnN1cHBvcnRlZCB0eXBlIFwiICsgb3B0cy50eXBlKTsgKi9cbn1cblxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfcHJvcHNfeGxtbCh3Yi8qOldvcmtib29rKi8sIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHQvKiBEb2N1bWVudFByb3BlcnRpZXMgKi9cblx0aWYod2IuUHJvcHMpIG8ucHVzaCh4bG1sX3dyaXRlX2RvY3Byb3BzKHdiLlByb3BzLCBvcHRzKSk7XG5cdC8qIEN1c3RvbURvY3VtZW50UHJvcGVydGllcyAqL1xuXHRpZih3Yi5DdXN0cHJvcHMpIG8ucHVzaCh4bG1sX3dyaXRlX2N1c3Rwcm9wcyh3Yi5Qcm9wcywgd2IuQ3VzdHByb3BzLCBvcHRzKSk7XG5cdHJldHVybiBvLmpvaW4oXCJcIik7XG59XG4vKiBUT0RPICovXG5mdW5jdGlvbiB3cml0ZV93Yl94bG1sKC8qOjp3Yiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0LyogT2ZmaWNlRG9jdW1lbnRTZXR0aW5ncyAqL1xuXHQvKiBFeGNlbFdvcmtib29rICovXG5cdHJldHVybiBcIlwiO1xufVxuLyogVE9ETyAqL1xuZnVuY3Rpb24gd3JpdGVfc3R5X3hsbWwod2IsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHQvKiBTdHlsZXMgKi9cblx0dmFyIHN0eWxlcy8qOkFycmF5PHN0cmluZz4qLyA9IFsnPFN0eWxlIHNzOklEPVwiRGVmYXVsdFwiIHNzOk5hbWU9XCJOb3JtYWxcIj48TnVtYmVyRm9ybWF0Lz48L1N0eWxlPiddO1xuXHRvcHRzLmNlbGxYZnMuZm9yRWFjaChmdW5jdGlvbih4ZiwgaWQpIHtcblx0XHR2YXIgcGF5bG9hZC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHBheWxvYWQucHVzaCh3cml0ZXh0YWcoJ051bWJlckZvcm1hdCcsIG51bGwsIHtcInNzOkZvcm1hdFwiOiBlc2NhcGV4bWwodGFibGVfZm10W3hmLm51bUZtdElkXSl9KSk7XG5cblx0XHR2YXIgbyA9IC8qOjooKi97XCJzczpJRFwiOiBcInNcIiArICgyMStpZCl9Lyo6OiA6YW55KSovO1xuXHRcdHN0eWxlcy5wdXNoKHdyaXRleHRhZygnU3R5bGUnLCBwYXlsb2FkLmpvaW4oXCJcIiksIG8pKTtcblx0fSk7XG5cdHJldHVybiB3cml0ZXh0YWcoXCJTdHlsZXNcIiwgc3R5bGVzLmpvaW4oXCJcIikpO1xufVxuZnVuY3Rpb24gd3JpdGVfbmFtZV94bG1sKG4pIHsgcmV0dXJuIHdyaXRleHRhZyhcIk5hbWVkUmFuZ2VcIiwgbnVsbCwge1wic3M6TmFtZVwiOiBuLk5hbWUsIFwic3M6UmVmZXJzVG9cIjpcIj1cIiArIGExX3RvX3JjKG4uUmVmLCB7cjowLGM6MH0pfSk7IH1cbmZ1bmN0aW9uIHdyaXRlX25hbWVzX3hsbWwod2IvKjo6LCBvcHRzKi8pLyo6c3RyaW5nKi8ge1xuXHRpZighKCh3Ynx8e30pLldvcmtib29rfHx7fSkuTmFtZXMpIHJldHVybiBcIlwiO1xuXHQvKjo6IGlmKCF3YiB8fCAhd2IuV29ya2Jvb2sgfHwgIXdiLldvcmtib29rLk5hbWVzKSB0aHJvdyBuZXcgRXJyb3IoXCJ1bnJlYWNoYWJsZVwiKTsgKi9cblx0dmFyIG5hbWVzLyo6QXJyYXk8YW55PiovID0gd2IuV29ya2Jvb2suTmFtZXM7XG5cdHZhciBvdXQvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0Zm9yKHZhciBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIG4gPSBuYW1lc1tpXTtcblx0XHRpZihuLlNoZWV0ICE9IG51bGwpIGNvbnRpbnVlO1xuXHRcdGlmKG4uTmFtZS5tYXRjaCgvXl94bGZuXFwuLykpIGNvbnRpbnVlO1xuXHRcdG91dC5wdXNoKHdyaXRlX25hbWVfeGxtbChuKSk7XG5cdH1cblx0cmV0dXJuIHdyaXRleHRhZyhcIk5hbWVzXCIsIG91dC5qb2luKFwiXCIpKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfbmFtZXMod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3cykgcmV0dXJuIFwiXCI7XG5cdGlmKCEoKHdifHx7fSkuV29ya2Jvb2t8fHt9KS5OYW1lcykgcmV0dXJuIFwiXCI7XG5cdC8qOjogaWYoIXdiIHx8ICF3Yi5Xb3JrYm9vayB8fCAhd2IuV29ya2Jvb2suTmFtZXMpIHRocm93IG5ldyBFcnJvcihcInVucmVhY2hhYmxlXCIpOyAqL1xuXHR2YXIgbmFtZXMvKjpBcnJheTxhbnk+Ki8gPSB3Yi5Xb3JrYm9vay5OYW1lcztcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyArK2kpIHtcblx0XHR2YXIgbiA9IG5hbWVzW2ldO1xuXHRcdGlmKG4uU2hlZXQgIT0gaWR4KSBjb250aW51ZTtcblx0XHQvKnN3aXRjaChuLk5hbWUpIHtcblx0XHRcdGNhc2UgXCJfXCI6IGNvbnRpbnVlO1xuXHRcdH0qL1xuXHRcdGlmKG4uTmFtZS5tYXRjaCgvXl94bGZuXFwuLykpIGNvbnRpbnVlO1xuXHRcdG91dC5wdXNoKHdyaXRlX25hbWVfeGxtbChuKSk7XG5cdH1cblx0cmV0dXJuIG91dC5qb2luKFwiXCIpO1xufVxuLyogV29ya3NoZWV0T3B0aW9ucyAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF93c29wdHMod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3cykgcmV0dXJuIFwiXCI7XG5cdHZhciBvLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdC8qIE5PVEU6IHNwZWMgdGVjaG5pY2FsbHkgYWxsb3dzIGFueSBvcmRlciwgYnV0IHN0aWNrIHdpdGggaW1wbGllZCBvcmRlciAqL1xuXG5cdC8qIEZpdFRvUGFnZSAqL1xuXHQvKiBEb05vdERpc3BsYXlDb2xIZWFkZXJzICovXG5cdC8qIERvTm90RGlzcGxheVJvd0hlYWRlcnMgKi9cblx0LyogVmlld2FibGVSYW5nZSAqL1xuXHQvKiBTZWxlY3Rpb24gKi9cblx0LyogR3JpZGxpbmVDb2xvciAqL1xuXHQvKiBOYW1lICovXG5cdC8qIEV4Y2VsV29ya3NoZWV0VHlwZSAqL1xuXHQvKiBJbnRsTWFjcm8gKi9cblx0LyogVW5zeW5jZWQgKi9cblx0LyogU2VsZWN0ZWQgKi9cblx0LyogQ29kZU5hbWUgKi9cblxuXHRpZih3c1snIW1hcmdpbnMnXSkge1xuXHRcdG8ucHVzaChcIjxQYWdlU2V0dXA+XCIpO1xuXHRcdGlmKHdzWychbWFyZ2lucyddLmhlYWRlcikgby5wdXNoKHdyaXRleHRhZyhcIkhlYWRlclwiLCBudWxsLCB7J3g6TWFyZ2luJzp3c1snIW1hcmdpbnMnXS5oZWFkZXJ9KSk7XG5cdFx0aWYod3NbJyFtYXJnaW5zJ10uZm9vdGVyKSBvLnB1c2god3JpdGV4dGFnKFwiRm9vdGVyXCIsIG51bGwsIHsneDpNYXJnaW4nOndzWychbWFyZ2lucyddLmZvb3Rlcn0pKTtcblx0XHRvLnB1c2god3JpdGV4dGFnKFwiUGFnZU1hcmdpbnNcIiwgbnVsbCwge1xuXHRcdFx0J3g6Qm90dG9tJzogd3NbJyFtYXJnaW5zJ10uYm90dG9tIHx8IFwiMC43NVwiLFxuXHRcdFx0J3g6TGVmdCc6IHdzWychbWFyZ2lucyddLmxlZnQgfHwgXCIwLjdcIixcblx0XHRcdCd4OlJpZ2h0Jzogd3NbJyFtYXJnaW5zJ10ucmlnaHQgfHwgXCIwLjdcIixcblx0XHRcdCd4OlRvcCc6IHdzWychbWFyZ2lucyddLnRvcCB8fCBcIjAuNzVcIlxuXHRcdH0pKTtcblx0XHRvLnB1c2goXCI8L1BhZ2VTZXR1cD5cIik7XG5cdH1cblxuXHQvKiBQYWdlU2V0dXAgKi9cblx0LyogRGlzcGxheVBhZ2VCcmVhayAqL1xuXHQvKiBUcmFuc2l0aW9uRXhwcmVzc2lvbkV2YWx1YXRpb24gKi9cblx0LyogVHJhbnNpdGlvbkZvcm11bGFFbnRyeSAqL1xuXHQvKiBQcmludCAqL1xuXHQvKiBab29tICovXG5cdC8qIFBhZ2VMYXlvdXRab29tICovXG5cdC8qIFBhZ2VCcmVha1pvb20gKi9cblx0LyogU2hvd1BhZ2VCcmVha1pvb20gKi9cblx0LyogRGVmYXVsdFJvd0hlaWdodCAqL1xuXHQvKiBEZWZhdWx0Q29sdW1uV2lkdGggKi9cblx0LyogU3RhbmRhcmRXaWR0aCAqL1xuXG5cdGlmKHdiICYmIHdiLldvcmtib29rICYmIHdiLldvcmtib29rLlNoZWV0cyAmJiB3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSkge1xuXHRcdC8qIFZpc2libGUgKi9cblx0XHRpZih3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4pIG8ucHVzaCh3cml0ZXh0YWcoXCJWaXNpYmxlXCIsICh3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XS5IaWRkZW4gPT0gMSA/IFwiU2hlZXRIaWRkZW5cIiA6IFwiU2hlZXRWZXJ5SGlkZGVuXCIpLCB7fSkpO1xuXHRcdGVsc2Uge1xuXHRcdFx0LyogU2VsZWN0ZWQgKi9cblx0XHRcdGZvcih2YXIgaSA9IDA7IGkgPCBpZHg7ICsraSkgaWYod2IuV29ya2Jvb2suU2hlZXRzW2ldICYmICF3Yi5Xb3JrYm9vay5TaGVldHNbaV0uSGlkZGVuKSBicmVhaztcblx0XHRcdGlmKGkgPT0gaWR4KSBvLnB1c2goXCI8U2VsZWN0ZWQvPlwiKTtcblx0XHR9XG5cdH1cblxuXHQvKiBMZWZ0Q29sdW1uVmlzaWJsZSAqL1xuXG5cdGlmKCgoKCh3Ynx8e30pLldvcmtib29rfHx7fSkuVmlld3N8fFtdKVswXXx8e30pLlJUTCkgby5wdXNoKFwiPERpc3BsYXlSaWdodFRvTGVmdC8+XCIpO1xuXG5cdC8qIEdyaWRsaW5lQ29sb3JJbmRleCAqL1xuXHQvKiBEaXNwbGF5Rm9ybXVsYXMgKi9cblx0LyogRG9Ob3REaXNwbGF5R3JpZGxpbmVzICovXG5cdC8qIERvTm90RGlzcGxheUhlYWRpbmdzICovXG5cdC8qIERvTm90RGlzcGxheU91dGxpbmUgKi9cblx0LyogQXBwbHlBdXRvbWF0aWNPdXRsaW5lU3R5bGVzICovXG5cdC8qIE5vU3VtbWFyeVJvd3NCZWxvd0RldGFpbCAqL1xuXHQvKiBOb1N1bW1hcnlDb2x1bW5zUmlnaHREZXRhaWwgKi9cblx0LyogRG9Ob3REaXNwbGF5WmVyb3MgKi9cblx0LyogQWN0aXZlUm93ICovXG5cdC8qIEFjdGl2ZUNvbHVtbiAqL1xuXHQvKiBGaWx0ZXJPbiAqL1xuXHQvKiBSYW5nZVNlbGVjdGlvbiAqL1xuXHQvKiBUb3BSb3dWaXNpYmxlICovXG5cdC8qIFRvcFJvd0JvdHRvbVBhbmUgKi9cblx0LyogTGVmdENvbHVtblJpZ2h0UGFuZSAqL1xuXHQvKiBBY3RpdmVQYW5lICovXG5cdC8qIFNwbGl0SG9yaXpvbnRhbCAqL1xuXHQvKiBTcGxpdFZlcnRpY2FsICovXG5cdC8qIEZyZWV6ZVBhbmVzICovXG5cdC8qIEZyb3plbk5vU3BsaXQgKi9cblx0LyogVGFiQ29sb3JJbmRleCAqL1xuXHQvKiBQYW5lcyAqL1xuXG5cdC8qIE5PVEU6IFBhc3N3b3JkIG5vdCBzdXBwb3J0ZWQgaW4gWExNTCBGb3JtYXQgKi9cblx0aWYod3NbJyFwcm90ZWN0J10pIHtcblx0XHRvLnB1c2god3JpdGV0YWcoXCJQcm90ZWN0Q29udGVudHNcIiwgXCJUcnVlXCIpKTtcblx0XHRpZih3c1snIXByb3RlY3QnXS5vYmplY3RzKSBvLnB1c2god3JpdGV0YWcoXCJQcm90ZWN0T2JqZWN0c1wiLCBcIlRydWVcIikpO1xuXHRcdGlmKHdzWychcHJvdGVjdCddLnNjZW5hcmlvcykgby5wdXNoKHdyaXRldGFnKFwiUHJvdGVjdFNjZW5hcmlvc1wiLCBcIlRydWVcIikpO1xuXHRcdGlmKHdzWychcHJvdGVjdCddLnNlbGVjdExvY2tlZENlbGxzICE9IG51bGwgJiYgIXdzWychcHJvdGVjdCddLnNlbGVjdExvY2tlZENlbGxzKSBvLnB1c2god3JpdGV0YWcoXCJFbmFibGVTZWxlY3Rpb25cIiwgXCJOb1NlbGVjdGlvblwiKSk7XG5cdFx0ZWxzZSBpZih3c1snIXByb3RlY3QnXS5zZWxlY3RVbmxvY2tlZENlbGxzICE9IG51bGwgJiYgIXdzWychcHJvdGVjdCddLnNlbGVjdFVubG9ja2VkQ2VsbHMpIG8ucHVzaCh3cml0ZXRhZyhcIkVuYWJsZVNlbGVjdGlvblwiLCBcIlVubG9ja2VkQ2VsbHNcIikpO1xuXHRbXG5cdFx0WyBcImZvcm1hdENlbGxzXCIsIFwiQWxsb3dGb3JtYXRDZWxsc1wiIF0sXG5cdFx0WyBcImZvcm1hdENvbHVtbnNcIiwgXCJBbGxvd1NpemVDb2xzXCIgXSxcblx0XHRbIFwiZm9ybWF0Um93c1wiLCBcIkFsbG93U2l6ZVJvd3NcIiBdLFxuXHRcdFsgXCJpbnNlcnRDb2x1bW5zXCIsIFwiQWxsb3dJbnNlcnRDb2xzXCIgXSxcblx0XHRbIFwiaW5zZXJ0Um93c1wiLCBcIkFsbG93SW5zZXJ0Um93c1wiIF0sXG5cdFx0WyBcImluc2VydEh5cGVybGlua3NcIiwgXCJBbGxvd0luc2VydEh5cGVybGlua3NcIiBdLFxuXHRcdFsgXCJkZWxldGVDb2x1bW5zXCIsIFwiQWxsb3dEZWxldGVDb2xzXCIgXSxcblx0XHRbIFwiZGVsZXRlUm93c1wiLCBcIkFsbG93RGVsZXRlUm93c1wiIF0sXG5cdFx0WyBcInNvcnRcIiwgXCJBbGxvd1NvcnRcIiBdLFxuXHRcdFsgXCJhdXRvRmlsdGVyXCIsIFwiQWxsb3dGaWx0ZXJcIiBdLFxuXHRcdFsgXCJwaXZvdFRhYmxlc1wiLCBcIkFsbG93VXNlUGl2b3RUYWJsZXNcIiBdXG5cdF0uZm9yRWFjaChmdW5jdGlvbih4KSB7IGlmKHdzWychcHJvdGVjdCddW3hbMF1dKSBvLnB1c2goXCI8XCIreFsxXStcIi8+XCIpOyB9KTtcblx0fVxuXG5cdGlmKG8ubGVuZ3RoID09IDApIHJldHVybiBcIlwiO1xuXHRyZXR1cm4gd3JpdGV4dGFnKFwiV29ya3NoZWV0T3B0aW9uc1wiLCBvLmpvaW4oXCJcIiksIHt4bWxuczpYTE1MTlMueH0pO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9jb21tZW50KGNvbW1lbnRzLyo6QXJyYXk8YW55PiovKS8qOnN0cmluZyovIHtcblx0cmV0dXJuIGNvbW1lbnRzLm1hcChmdW5jdGlvbihjKSB7XG5cdFx0Ly8gVE9ETzogZm9ybWF0dGVkIHRleHRcblx0XHR2YXIgdCA9IHhsbWxfdW5maXhzdHIoYy50fHxcIlwiKTtcblx0XHR2YXIgZCA9d3JpdGV4dGFnKFwic3M6RGF0YVwiLCB0LCB7XCJ4bWxuc1wiOlwiaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MFwifSk7XG5cdFx0cmV0dXJuIHdyaXRleHRhZyhcIkNvbW1lbnRcIiwgZCwge1wic3M6QXV0aG9yXCI6Yy5hfSk7XG5cdH0pLmpvaW4oXCJcIik7XG59XG5mdW5jdGlvbiB3cml0ZV93c194bG1sX2NlbGwoY2VsbCwgcmVmLyo6c3RyaW5nKi8sIHdzLCBvcHRzLCBpZHgvKjpudW1iZXIqLywgd2IsIGFkZHIpLyo6c3RyaW5nKi97XG5cdGlmKCFjZWxsIHx8IChjZWxsLnYgPT0gdW5kZWZpbmVkICYmIGNlbGwuZiA9PSB1bmRlZmluZWQpKSByZXR1cm4gXCJcIjtcblxuXHR2YXIgYXR0ciA9IHt9O1xuXHRpZihjZWxsLmYpIGF0dHJbXCJzczpGb3JtdWxhXCJdID0gXCI9XCIgKyBlc2NhcGV4bWwoYTFfdG9fcmMoY2VsbC5mLCBhZGRyKSk7XG5cdGlmKGNlbGwuRiAmJiBjZWxsLkYuc2xpY2UoMCwgcmVmLmxlbmd0aCkgPT0gcmVmKSB7XG5cdFx0dmFyIGVuZCA9IGRlY29kZV9jZWxsKGNlbGwuRi5zbGljZShyZWYubGVuZ3RoICsgMSkpO1xuXHRcdGF0dHJbXCJzczpBcnJheVJhbmdlXCJdID0gXCJSQzpSXCIgKyAoZW5kLnIgPT0gYWRkci5yID8gXCJcIiA6IFwiW1wiICsgKGVuZC5yIC0gYWRkci5yKSArIFwiXVwiKSArIFwiQ1wiICsgKGVuZC5jID09IGFkZHIuYyA/IFwiXCIgOiBcIltcIiArIChlbmQuYyAtIGFkZHIuYykgKyBcIl1cIik7XG5cdH1cblxuXHRpZihjZWxsLmwgJiYgY2VsbC5sLlRhcmdldCkge1xuXHRcdGF0dHJbXCJzczpIUmVmXCJdID0gZXNjYXBleG1sKGNlbGwubC5UYXJnZXQpO1xuXHRcdGlmKGNlbGwubC5Ub29sdGlwKSBhdHRyW1wieDpIUmVmU2NyZWVuVGlwXCJdID0gZXNjYXBleG1sKGNlbGwubC5Ub29sdGlwKTtcblx0fVxuXG5cdGlmKHdzWychbWVyZ2VzJ10pIHtcblx0XHR2YXIgbWFyciA9IHdzWychbWVyZ2VzJ107XG5cdFx0Zm9yKHZhciBtaSA9IDA7IG1pICE9IG1hcnIubGVuZ3RoOyArK21pKSB7XG5cdFx0XHRpZihtYXJyW21pXS5zLmMgIT0gYWRkci5jIHx8IG1hcnJbbWldLnMuciAhPSBhZGRyLnIpIGNvbnRpbnVlO1xuXHRcdFx0aWYobWFyclttaV0uZS5jID4gbWFyclttaV0ucy5jKSBhdHRyWydzczpNZXJnZUFjcm9zcyddID0gbWFyclttaV0uZS5jIC0gbWFyclttaV0ucy5jO1xuXHRcdFx0aWYobWFyclttaV0uZS5yID4gbWFyclttaV0ucy5yKSBhdHRyWydzczpNZXJnZURvd24nXSA9IG1hcnJbbWldLmUuciAtIG1hcnJbbWldLnMucjtcblx0XHR9XG5cdH1cblxuXHR2YXIgdCA9IFwiXCIsIHAgPSBcIlwiO1xuXHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAneic6IGlmKCFvcHRzLnNoZWV0U3R1YnMpIHJldHVybiBcIlwiOyBicmVhaztcblx0XHRjYXNlICduJzogdCA9ICdOdW1iZXInOyBwID0gU3RyaW5nKGNlbGwudik7IGJyZWFrO1xuXHRcdGNhc2UgJ2InOiB0ID0gJ0Jvb2xlYW4nOyBwID0gKGNlbGwudiA/IFwiMVwiIDogXCIwXCIpOyBicmVhaztcblx0XHRjYXNlICdlJzogdCA9ICdFcnJvcic7IHAgPSBCRXJyW2NlbGwudl07IGJyZWFrO1xuXHRcdGNhc2UgJ2QnOiB0ID0gJ0RhdGVUaW1lJzsgcCA9IG5ldyBEYXRlKGNlbGwudikudG9JU09TdHJpbmcoKTsgaWYoY2VsbC56ID09IG51bGwpIGNlbGwueiA9IGNlbGwueiB8fCB0YWJsZV9mbXRbMTRdOyBicmVhaztcblx0XHRjYXNlICdzJzogdCA9ICdTdHJpbmcnOyBwID0gZXNjYXBleGxtbChjZWxsLnZ8fFwiXCIpOyBicmVhaztcblx0fVxuXHQvKiBUT0RPOiBjZWxsIHN0eWxlICovXG5cdHZhciBvcyA9IGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGF0dHJbXCJzczpTdHlsZUlEXCJdID0gXCJzXCIgKyAoMjErb3MpO1xuXHRhdHRyW1wic3M6SW5kZXhcIl0gPSBhZGRyLmMgKyAxO1xuXHR2YXIgX3YgPSAoY2VsbC52ICE9IG51bGwgPyBwIDogXCJcIik7XG5cdHZhciBtID0gY2VsbC50ID09ICd6JyA/IFwiXCIgOiAoJzxEYXRhIHNzOlR5cGU9XCInICsgdCArICdcIj4nICsgX3YgKyAnPC9EYXRhPicpO1xuXG5cdGlmKChjZWxsLmN8fFtdKS5sZW5ndGggPiAwKSBtICs9IHdyaXRlX3dzX3hsbWxfY29tbWVudChjZWxsLmMpO1xuXG5cdHJldHVybiB3cml0ZXh0YWcoXCJDZWxsXCIsIG0sIGF0dHIpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbF9yb3coUi8qOm51bWJlciovLCByb3cpLyo6c3RyaW5nKi8ge1xuXHR2YXIgbyA9ICc8Um93IHNzOkluZGV4PVwiJyArIChSKzEpICsgJ1wiJztcblx0aWYocm93KSB7XG5cdFx0aWYocm93LmhwdCAmJiAhcm93LmhweCkgcm93LmhweCA9IHB0MnB4KHJvdy5ocHQpO1xuXHRcdGlmKHJvdy5ocHgpIG8gKz0gJyBzczpBdXRvRml0SGVpZ2h0PVwiMFwiIHNzOkhlaWdodD1cIicgKyByb3cuaHB4ICsgJ1wiJztcblx0XHRpZihyb3cuaGlkZGVuKSBvICs9ICcgc3M6SGlkZGVuPVwiMVwiJztcblx0fVxuXHRyZXR1cm4gbyArICc+Jztcbn1cbi8qIFRPRE8gKi9cbmZ1bmN0aW9uIHdyaXRlX3dzX3hsbWxfdGFibGUod3MvKjpXb3Jrc2hlZXQqLywgb3B0cywgaWR4Lyo6bnVtYmVyKi8sIHdiLyo6V29ya2Jvb2sqLykvKjpzdHJpbmcqLyB7XG5cdGlmKCF3c1snIXJlZiddKSByZXR1cm4gXCJcIjtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHR2YXIgbWFyci8qOkFycmF5PFJhbmdlPiovID0gd3NbJyFtZXJnZXMnXSB8fCBbXSwgbWkgPSAwO1xuXHR2YXIgby8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRpZih3c1snIWNvbHMnXSkgd3NbJyFjb2xzJ10uZm9yRWFjaChmdW5jdGlvbihuLCBpKSB7XG5cdFx0cHJvY2Vzc19jb2wobik7XG5cdFx0dmFyIHcgPSAhIW4ud2lkdGg7XG5cdFx0dmFyIHAgPSBjb2xfb2JqX3coaSwgbik7XG5cdFx0dmFyIGsvKjphbnkqLyA9IHtcInNzOkluZGV4XCI6aSsxfTtcblx0XHRpZih3KSBrWydzczpXaWR0aCddID0gd2lkdGgycHgocC53aWR0aCk7XG5cdFx0aWYobi5oaWRkZW4pIGtbJ3NzOkhpZGRlbiddPVwiMVwiO1xuXHRcdG8ucHVzaCh3cml0ZXh0YWcoXCJDb2x1bW5cIixudWxsLGspKTtcblx0fSk7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkod3MpO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHR2YXIgcm93ID0gW3dyaXRlX3dzX3hsbWxfcm93KFIsICh3c1snIXJvd3MnXXx8W10pW1JdKV07XG5cdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHR2YXIgc2tpcCA9IGZhbHNlO1xuXHRcdFx0Zm9yKG1pID0gMDsgbWkgIT0gbWFyci5sZW5ndGg7ICsrbWkpIHtcblx0XHRcdFx0aWYobWFyclttaV0ucy5jID4gQykgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLnMuciA+IFIpIGNvbnRpbnVlO1xuXHRcdFx0XHRpZihtYXJyW21pXS5lLmMgPCBDKSBjb250aW51ZTtcblx0XHRcdFx0aWYobWFyclttaV0uZS5yIDwgUikgY29udGludWU7XG5cdFx0XHRcdGlmKG1hcnJbbWldLnMuYyAhPSBDIHx8IG1hcnJbbWldLnMuciAhPSBSKSBza2lwID0gdHJ1ZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0XHRpZihza2lwKSBjb250aW51ZTtcblx0XHRcdHZhciBhZGRyID0ge3I6UixjOkN9O1xuXHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKGFkZHIpLCBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRyb3cucHVzaCh3cml0ZV93c194bG1sX2NlbGwoY2VsbCwgcmVmLCB3cywgb3B0cywgaWR4LCB3YiwgYWRkcikpO1xuXHRcdH1cblx0XHRyb3cucHVzaChcIjwvUm93PlwiKTtcblx0XHRpZihyb3cubGVuZ3RoID4gMikgby5wdXNoKHJvdy5qb2luKFwiXCIpKTtcblx0fVxuXHRyZXR1cm4gby5qb2luKFwiXCIpO1xufVxuZnVuY3Rpb24gd3JpdGVfd3NfeGxtbChpZHgvKjpudW1iZXIqLywgb3B0cywgd2IvKjpXb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF07XG5cdHZhciB3cyA9IHdiLlNoZWV0c1tzXTtcblxuXHR2YXIgdC8qOnN0cmluZyovID0gd3MgPyB3cml0ZV93c194bG1sX25hbWVzKHdzLCBvcHRzLCBpZHgsIHdiKSA6IFwiXCI7XG5cdGlmKHQubGVuZ3RoID4gMCkgby5wdXNoKFwiPE5hbWVzPlwiICsgdCArIFwiPC9OYW1lcz5cIik7XG5cblx0LyogVGFibGUgKi9cblx0dCA9IHdzID8gd3JpdGVfd3NfeGxtbF90YWJsZSh3cywgb3B0cywgaWR4LCB3YikgOiBcIlwiO1xuXHRpZih0Lmxlbmd0aCA+IDApIG8ucHVzaChcIjxUYWJsZT5cIiArIHQgKyBcIjwvVGFibGU+XCIpO1xuXG5cdC8qIFdvcmtzaGVldE9wdGlvbnMgKi9cblx0by5wdXNoKHdyaXRlX3dzX3hsbWxfd3NvcHRzKHdzLCBvcHRzLCBpZHgsIHdiKSk7XG5cblx0cmV0dXJuIG8uam9pbihcIlwiKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX3hsbWwod2IsIG9wdHMpLyo6c3RyaW5nKi8ge1xuXHRpZighb3B0cykgb3B0cyA9IHt9O1xuXHRpZighd2IuU1NGKSB3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0aWYod2IuU1NGKSB7XG5cdFx0bWFrZV9zc2YoKTsgU1NGX2xvYWRfdGFibGUod2IuU1NGKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdG9wdHMucmV2c3NmID0gZXZlcnRfbnVtKHdiLlNTRik7IG9wdHMucmV2c3NmW3diLlNTRls2NTUzNV1dID0gMDtcblx0XHRvcHRzLnNzZiA9IHdiLlNTRjtcblx0XHRvcHRzLmNlbGxYZnMgPSBbXTtcblx0XHRnZXRfY2VsbF9zdHlsZShvcHRzLmNlbGxYZnMsIHt9LCB7cmV2c3NmOntcIkdlbmVyYWxcIjowfX0pO1xuXHR9XG5cdHZhciBkLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGQucHVzaCh3cml0ZV9wcm9wc194bG1sKHdiLCBvcHRzKSk7XG5cdGQucHVzaCh3cml0ZV93Yl94bG1sKHdiLCBvcHRzKSk7XG5cdGQucHVzaChcIlwiKTtcblx0ZC5wdXNoKFwiXCIpO1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsraSlcblx0XHRkLnB1c2god3JpdGV4dGFnKFwiV29ya3NoZWV0XCIsIHdyaXRlX3dzX3hsbWwoaSwgb3B0cywgd2IpLCB7XCJzczpOYW1lXCI6ZXNjYXBleG1sKHdiLlNoZWV0TmFtZXNbaV0pfSkpO1xuXHRkWzJdID0gd3JpdGVfc3R5X3hsbWwod2IsIG9wdHMpO1xuXHRkWzNdID0gd3JpdGVfbmFtZXNfeGxtbCh3Yiwgb3B0cyk7XG5cdHJldHVybiBYTUxfSEVBREVSICsgd3JpdGV4dGFnKFwiV29ya2Jvb2tcIiwgZC5qb2luKFwiXCIpLCB7XG5cdFx0J3htbG5zJzogICAgICBYTE1MTlMuc3MsXG5cdFx0J3htbG5zOm8nOiAgICBYTE1MTlMubyxcblx0XHQneG1sbnM6eCc6ICAgIFhMTUxOUy54LFxuXHRcdCd4bWxuczpzcyc6ICAgWExNTE5TLnNzLFxuXHRcdCd4bWxuczpkdCc6ICAgWExNTE5TLmR0LFxuXHRcdCd4bWxuczpodG1sJzogWExNTE5TLmh0bWxcblx0fSk7XG59XG4vKiBbTVMtT0xFRFNdIDIuMy44IENvbXBPYmpTdHJlYW0gKi9cbmZ1bmN0aW9uIHBhcnNlX2NvbXBvYmoob2JqLyo6Q0ZCRW50cnkqLykge1xuXHR2YXIgdiA9IHt9O1xuXHR2YXIgbyA9IG9iai5jb250ZW50O1xuXHQvKjo6IGlmKG8gPT0gbnVsbCkgcmV0dXJuOyAqL1xuXG5cdC8qIFtNUy1PTEVEU10gMi4zLjcgQ29tcE9iakhlYWRlciAtLSBBbGwgZmllbGRzIE1VU1QgYmUgaWdub3JlZCAqL1xuXHRvLmwgPSAyODtcblxuXHR2LkFuc2lVc2VyVHlwZSA9IG8ucmVhZF9zaGlmdCgwLCBcImxwc3RyLWFuc2lcIik7XG5cdHYuQW5zaUNsaXBib2FyZEZvcm1hdCA9IHBhcnNlX0NsaXBib2FyZEZvcm1hdE9yQW5zaVN0cmluZyhvKTtcblxuXHRpZihvLmxlbmd0aCAtIG8ubCA8PSA0KSByZXR1cm4gdjtcblxuXHR2YXIgbS8qOm51bWJlciovID0gby5yZWFkX3NoaWZ0KDQpO1xuXHRpZihtID09IDAgfHwgbSA+IDQwKSByZXR1cm4gdjtcblx0by5sLT00OyB2LlJlc2VydmVkMSA9IG8ucmVhZF9zaGlmdCgwLCBcImxwc3RyLWFuc2lcIik7XG5cblx0aWYoby5sZW5ndGggLSBvLmwgPD0gNCkgcmV0dXJuIHY7XG5cdG0gPSBvLnJlYWRfc2hpZnQoNCk7XG5cdGlmKG0gIT09IDB4NzFiMjM5ZjQpIHJldHVybiB2O1xuXHR2LlVuaWNvZGVDbGlwYm9hcmRGb3JtYXQgPSBwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclVuaWNvZGVTdHJpbmcobyk7XG5cblx0bSA9IG8ucmVhZF9zaGlmdCg0KTtcblx0aWYobSA9PSAwIHx8IG0gPiA0MCkgcmV0dXJuIHY7XG5cdG8ubC09NDsgdi5SZXNlcnZlZDIgPSBvLnJlYWRfc2hpZnQoMCwgXCJscHdzdHJcIik7XG59XG5cbi8qXG5cdENvbnRpbnVlIGxvZ2ljIGZvcjpcblx0LSAyLjQuNTggQ29udGludWUgICAgICAgICAgMHgwMDNjXG5cdC0gMi40LjU5IENvbnRpbnVlQmlnTmFtZSAgIDB4MDQzY1xuXHQtIDIuNC42MCBDb250aW51ZUZydCAgICAgICAweDA4MTJcblx0LSAyLjQuNjEgQ29udGludWVGcnQxMSAgICAgMHgwODc1XG5cdC0gMi40LjYyIENvbnRpbnVlRnJ0MTIgICAgIDB4MDg3ZlxuKi9cbnZhciBDT05USU5VRV9SVCA9IFsgMHgwMDNjLCAweDA0M2MsIDB4MDgxMiwgMHgwODc1LCAweDA4N2YgXTtcbmZ1bmN0aW9uIHNsdXJwKFJlY29yZFR5cGUsIFIsIGJsb2IsIGxlbmd0aC8qOm51bWJlciovLCBvcHRzKS8qOmFueSovIHtcblx0dmFyIGwgPSBsZW5ndGg7XG5cdHZhciBidWZzID0gW107XG5cdHZhciBkID0gYmxvYi5zbGljZShibG9iLmwsYmxvYi5sK2wpO1xuXHRpZihvcHRzICYmIG9wdHMuZW5jICYmIG9wdHMuZW5jLmluc2l0dSAmJiBkLmxlbmd0aCA+IDApIHN3aXRjaChSZWNvcmRUeXBlKSB7XG5cdGNhc2UgMHgwMDA5OiBjYXNlIDB4MDIwOTogY2FzZSAweDA0MDk6IGNhc2UgMHgwODA5LyogQk9GICovOiBjYXNlIDB4MDAyZiAvKiBGaWxlUGFzcyAqLzogY2FzZSAweDAxOTUgLyogRmlsZUxvY2sgKi86IGNhc2UgMHgwMGUxIC8qIEludGVyZmFjZUhkciAqLzogY2FzZSAweDAxOTYgLyogUlJESW5mbyAqLzogY2FzZSAweDAxMzggLyogUlJESGVhZCAqLzogY2FzZSAweDAxOTQgLyogVXNyRXhjbCAqLzogY2FzZSAweDAwMGEgLyogRU9GICovOlxuXHRcdGJyZWFrO1xuXHRjYXNlIDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLzpcblx0XHRicmVhaztcblx0ZGVmYXVsdDpcblx0XHRvcHRzLmVuYy5pbnNpdHUoZCk7XG5cdH1cblx0YnVmcy5wdXNoKGQpO1xuXHRibG9iLmwgKz0gbDtcblx0dmFyIG5leHRydCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsYmxvYi5sKSwgbmV4dCA9IFhMU1JlY29yZEVudW1bbmV4dHJ0XTtcblx0dmFyIHN0YXJ0ID0gMDtcblx0d2hpbGUobmV4dCAhPSBudWxsICYmIENPTlRJTlVFX1JULmluZGV4T2YobmV4dHJ0KSA+IC0xKSB7XG5cdFx0bCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsYmxvYi5sKzIpO1xuXHRcdHN0YXJ0ID0gYmxvYi5sICsgNDtcblx0XHRpZihuZXh0cnQgPT0gMHgwODEyIC8qIENvbnRpbnVlRnJ0ICovKSBzdGFydCArPSA0O1xuXHRcdGVsc2UgaWYobmV4dHJ0ID09IDB4MDg3NSB8fCBuZXh0cnQgPT0gMHgwODdmKSB7XG5cdFx0XHRzdGFydCArPSAxMjtcblx0XHR9XG5cdFx0ZCA9IGJsb2Iuc2xpY2Uoc3RhcnQsYmxvYi5sKzQrbCk7XG5cdFx0YnVmcy5wdXNoKGQpO1xuXHRcdGJsb2IubCArPSA0K2w7XG5cdFx0bmV4dCA9IChYTFNSZWNvcmRFbnVtW25leHRydCA9IF9fcmVhZFVJbnQxNkxFKGJsb2IsIGJsb2IubCldKTtcblx0fVxuXHR2YXIgYiA9IChiY29uY2F0KGJ1ZnMpLyo6YW55Ki8pO1xuXHRwcmVwX2Jsb2IoYiwgMCk7XG5cdHZhciBsbCA9IDA7IGIubGVucyA9IFtdO1xuXHRmb3IodmFyIGogPSAwOyBqIDwgYnVmcy5sZW5ndGg7ICsraikgeyBiLmxlbnMucHVzaChsbCk7IGxsICs9IGJ1ZnNbal0ubGVuZ3RoOyB9XG5cdGlmKGIubGVuZ3RoIDwgbGVuZ3RoKSB0aHJvdyBcIlhMUyBSZWNvcmQgMHhcIiArIFJlY29yZFR5cGUudG9TdHJpbmcoMTYpICsgXCIgVHJ1bmNhdGVkOiBcIiArIGIubGVuZ3RoICsgXCIgPCBcIiArIGxlbmd0aDtcblx0cmV0dXJuIFIuZihiLCBiLmxlbmd0aCwgb3B0cyk7XG59XG5cbmZ1bmN0aW9uIHNhZmVfZm9ybWF0X3hmKHAvKjphbnkqLywgb3B0cy8qOlBhcnNlT3B0cyovLCBkYXRlMTkwNC8qOj9ib29sZWFuKi8pIHtcblx0aWYocC50ID09PSAneicpIHJldHVybjtcblx0aWYoIXAuWEYpIHJldHVybjtcblx0dmFyIGZtdGlkID0gMDtcblx0dHJ5IHtcblx0XHRmbXRpZCA9IHAueiB8fCBwLlhGLm51bUZtdElkIHx8IDA7XG5cdFx0aWYob3B0cy5jZWxsTkYpIHAueiA9IHRhYmxlX2ZtdFtmbXRpZF07XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZighb3B0cyB8fCBvcHRzLmNlbGxUZXh0ICE9PSBmYWxzZSkgdHJ5IHtcblx0XHRpZihwLnQgPT09ICdlJykgeyBwLncgPSBwLncgfHwgQkVycltwLnZdOyB9XG5cdFx0ZWxzZSBpZihmbXRpZCA9PT0gMCB8fCBmbXRpZCA9PSBcIkdlbmVyYWxcIikge1xuXHRcdFx0aWYocC50ID09PSAnbicpIHtcblx0XHRcdFx0aWYoKHAudnwwKSA9PT0gcC52KSBwLncgPSBwLnYudG9TdHJpbmcoMTApO1xuXHRcdFx0XHRlbHNlIHAudyA9IFNTRl9nZW5lcmFsX251bShwLnYpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBwLncgPSBTU0ZfZ2VuZXJhbChwLnYpO1xuXHRcdH1cblx0XHRlbHNlIHAudyA9IFNTRl9mb3JtYXQoZm10aWQscC52LCB7ZGF0ZTE5MDQ6ISFkYXRlMTkwNCwgZGF0ZU5GOiBvcHRzICYmIG9wdHMuZGF0ZU5GfSk7XG5cdH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXHRpZihvcHRzLmNlbGxEYXRlcyAmJiBmbXRpZCAmJiBwLnQgPT0gJ24nICYmIGZtdF9pc19kYXRlKHRhYmxlX2ZtdFtmbXRpZF0gfHwgU3RyaW5nKGZtdGlkKSkpIHtcblx0XHR2YXIgX2QgPSBTU0ZfcGFyc2VfZGF0ZV9jb2RlKHAudik7IGlmKF9kKSB7IHAudCA9ICdkJzsgcC52ID0gbmV3IERhdGUoX2QueSwgX2QubS0xLF9kLmQsX2QuSCxfZC5NLF9kLlMsX2QudSk7IH1cblx0fVxufVxuXG5mdW5jdGlvbiBtYWtlX2NlbGwodmFsLCBpeGZlLCB0KS8qOkNlbGwqLyB7XG5cdHJldHVybiAoe3Y6dmFsLCBpeGZlOml4ZmUsIHQ6dH0vKjphbnkqLyk7XG59XG5cbi8vIDIuMy4yXG5mdW5jdGlvbiBwYXJzZV93b3JrYm9vayhibG9iLCBvcHRpb25zLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciB3YiA9ICh7b3B0czp7fX0vKjphbnkqLyk7XG5cdHZhciBTaGVldHMgPSB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRpb25zLmRlbnNlID09IG51bGwpIG9wdGlvbnMuZGVuc2UgPSBERU5TRTtcblx0dmFyIG91dC8qOldvcmtzaGVldCovID0gKChvcHRpb25zLmRlbnNlID8gW10gOiB7fSkvKjphbnkqLyk7XG5cdHZhciBEaXJlY3RvcnkgPSB7fTtcblx0dmFyIHJhbmdlLyo6UmFuZ2UqLyA9ICh7fS8qOmFueSovKTtcblx0dmFyIGxhc3RfZm9ybXVsYSA9IG51bGw7XG5cdHZhciBzc3QvKjpTU1QqLyA9IChbXS8qOmFueSovKTtcblx0dmFyIGN1cl9zaGVldCA9IFwiXCI7XG5cdHZhciBQcmVhbWJsZSA9IHt9O1xuXHR2YXIgbGFzdGNlbGwsIGxhc3RfY2VsbCA9IFwiXCIsIGNjLyo6Q2VsbCovLCBjbW50LCBybmdDLCBybmdSO1xuXHR2YXIgc2hhcmVkZiA9IHt9O1xuXHR2YXIgYXJyYXlmLyo6QXJyYXk8W1JhbmdlLCBzdHJpbmddPiovID0gW107XG5cdHZhciB0ZW1wX3ZhbC8qOkNlbGwqLztcblx0dmFyIGNvdW50cnk7XG5cdHZhciBYRnMgPSBbXTsgLyogWEYgcmVjb3JkcyAqL1xuXHR2YXIgcGFsZXR0ZS8qOkFycmF5PFtudW1iZXIsIG51bWJlciwgbnVtYmVyXT4qLyA9IFtdO1xuXHR2YXIgV29ya2Jvb2svKjpXQldCUHJvcHMqLyA9ICh7IFNoZWV0czpbXSwgV0JQcm9wczp7ZGF0ZTE5MDQ6ZmFsc2V9LCBWaWV3czpbe31dIH0vKjphbnkqLyksIHdzcHJvcHMgPSB7fTtcblx0dmFyIGdldF9yZ2IgPSBmdW5jdGlvbiBnZXRyZ2IoaWN2Lyo6bnVtYmVyKi8pLyo6W251bWJlciwgbnVtYmVyLCBudW1iZXJdKi8ge1xuXHRcdGlmKGljdiA8IDgpIHJldHVybiBYTFNJY3ZbaWN2XTtcblx0XHRpZihpY3YgPCA2NCkgcmV0dXJuIHBhbGV0dGVbaWN2LThdIHx8IFhMU0ljdltpY3ZdO1xuXHRcdHJldHVybiBYTFNJY3ZbaWN2XTtcblx0fTtcblx0dmFyIHByb2Nlc3NfY2VsbF9zdHlsZSA9IGZ1bmN0aW9uIHBjcyhjZWxsLCBsaW5lLyo6YW55Ki8sIG9wdGlvbnMpIHtcblx0XHR2YXIgeGZkID0gbGluZS5YRi5kYXRhO1xuXHRcdGlmKCF4ZmQgfHwgIXhmZC5wYXR0ZXJuVHlwZSB8fCAhb3B0aW9ucyB8fCAhb3B0aW9ucy5jZWxsU3R5bGVzKSByZXR1cm47XG5cdFx0bGluZS5zID0gKHt9Lyo6YW55Ki8pO1xuXHRcdGxpbmUucy5wYXR0ZXJuVHlwZSA9IHhmZC5wYXR0ZXJuVHlwZTtcblx0XHR2YXIgdDtcblx0XHRpZigodCA9IHJnYjJIZXgoZ2V0X3JnYih4ZmQuaWN2Rm9yZSkpKSkgeyBsaW5lLnMuZmdDb2xvciA9IHtyZ2I6dH07IH1cblx0XHRpZigodCA9IHJnYjJIZXgoZ2V0X3JnYih4ZmQuaWN2QmFjaykpKSkgeyBsaW5lLnMuYmdDb2xvciA9IHtyZ2I6dH07IH1cblx0fTtcblx0dmFyIGFkZGNlbGwgPSBmdW5jdGlvbiBhZGRjZWxsKGNlbGwvKjphbnkqLywgbGluZS8qOmFueSovLCBvcHRpb25zLyo6YW55Ki8pIHtcblx0XHRpZihmaWxlX2RlcHRoID4gMSkgcmV0dXJuO1xuXHRcdGlmKG9wdGlvbnMuc2hlZXRSb3dzICYmIGNlbGwuciA+PSBvcHRpb25zLnNoZWV0Um93cykgcmV0dXJuO1xuXHRcdGlmKG9wdGlvbnMuY2VsbFN0eWxlcyAmJiBsaW5lLlhGICYmIGxpbmUuWEYuZGF0YSkgcHJvY2Vzc19jZWxsX3N0eWxlKGNlbGwsIGxpbmUsIG9wdGlvbnMpO1xuXHRcdGRlbGV0ZSBsaW5lLml4ZmU7IGRlbGV0ZSBsaW5lLlhGO1xuXHRcdGxhc3RjZWxsID0gY2VsbDtcblx0XHRsYXN0X2NlbGwgPSBlbmNvZGVfY2VsbChjZWxsKTtcblx0XHRpZighcmFuZ2UgfHwgIXJhbmdlLnMgfHwgIXJhbmdlLmUpIHJhbmdlID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0XHRpZihjZWxsLnIgPCByYW5nZS5zLnIpIHJhbmdlLnMuciA9IGNlbGwucjtcblx0XHRpZihjZWxsLmMgPCByYW5nZS5zLmMpIHJhbmdlLnMuYyA9IGNlbGwuYztcblx0XHRpZihjZWxsLnIgKyAxID4gcmFuZ2UuZS5yKSByYW5nZS5lLnIgPSBjZWxsLnIgKyAxO1xuXHRcdGlmKGNlbGwuYyArIDEgPiByYW5nZS5lLmMpIHJhbmdlLmUuYyA9IGNlbGwuYyArIDE7XG5cdFx0aWYob3B0aW9ucy5jZWxsRm9ybXVsYSAmJiBsaW5lLmYpIHtcblx0XHRcdGZvcih2YXIgYWZpID0gMDsgYWZpIDwgYXJyYXlmLmxlbmd0aDsgKythZmkpIHtcblx0XHRcdFx0aWYoYXJyYXlmW2FmaV1bMF0ucy5jID4gY2VsbC5jIHx8IGFycmF5ZlthZmldWzBdLnMuciA+IGNlbGwucikgY29udGludWU7XG5cdFx0XHRcdGlmKGFycmF5ZlthZmldWzBdLmUuYyA8IGNlbGwuYyB8fCBhcnJheWZbYWZpXVswXS5lLnIgPCBjZWxsLnIpIGNvbnRpbnVlO1xuXHRcdFx0XHRsaW5lLkYgPSBlbmNvZGVfcmFuZ2UoYXJyYXlmW2FmaV1bMF0pO1xuXHRcdFx0XHRpZihhcnJheWZbYWZpXVswXS5zLmMgIT0gY2VsbC5jIHx8IGFycmF5ZlthZmldWzBdLnMuciAhPSBjZWxsLnIpIGRlbGV0ZSBsaW5lLmY7XG5cdFx0XHRcdGlmKGxpbmUuZikgbGluZS5mID0gXCJcIiArIHN0cmluZ2lmeV9mb3JtdWxhKGFycmF5ZlthZmldWzFdLCByYW5nZSwgY2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0e1xuXHRcdFx0aWYob3B0aW9ucy5kZW5zZSkge1xuXHRcdFx0XHRpZighb3V0W2NlbGwucl0pIG91dFtjZWxsLnJdID0gW107XG5cdFx0XHRcdG91dFtjZWxsLnJdW2NlbGwuY10gPSBsaW5lO1xuXHRcdFx0fSBlbHNlIG91dFtsYXN0X2NlbGxdID0gbGluZTtcblx0XHR9XG5cdH07XG5cdHZhciBvcHRzID0gKHtcblx0XHRlbmM6IGZhbHNlLCAvLyBlbmNyeXB0ZWRcblx0XHRzYmNjaDogMCwgLy8gY2NoIGluIHRoZSBwcmVjZWRpbmcgU3VwQm9va1xuXHRcdHNuYW1lczogW10sIC8vIHNoZWV0bmFtZXNcblx0XHRzaGFyZWRmOiBzaGFyZWRmLCAvLyBzaGFyZWQgZm9ybXVsYWUgYnkgYWRkcmVzc1xuXHRcdGFycmF5ZjogYXJyYXlmLCAvLyBhcnJheSBmb3JtdWxhZSBhcnJheVxuXHRcdHJydGFiaWQ6IFtdLCAvLyBSUlRhYklkXG5cdFx0bGFzdHVzZXI6IFwiXCIsIC8vIExhc3QgVXNlciBmcm9tIFdyaXRlQWNjZXNzXG5cdFx0YmlmZjogOCwgLy8gQklGRiB2ZXJzaW9uXG5cdFx0Y29kZXBhZ2U6IDAsIC8vIENQIGZyb20gQ29kZVBhZ2UgcmVjb3JkXG5cdFx0d2lubG9ja2VkOiAwLCAvLyBmTG9ja1duIGZyb20gV2luUHJvdGVjdFxuXHRcdGNlbGxTdHlsZXM6ICEhb3B0aW9ucyAmJiAhIW9wdGlvbnMuY2VsbFN0eWxlcyxcblx0XHRXVEY6ICEhb3B0aW9ucyAmJiAhIW9wdGlvbnMud3RmXG5cdH0vKjphbnkqLyk7XG5cdGlmKG9wdGlvbnMucGFzc3dvcmQpIG9wdHMucGFzc3dvcmQgPSBvcHRpb25zLnBhc3N3b3JkO1xuXHR2YXIgdGhlbWVzO1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0dmFyIG9iamVjdHMgPSBbXTtcblx0dmFyIGNvbGluZm8vKjpBcnJheTxDb2xJbmZvPiovID0gW10sIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gW107XG5cdHZhciBzZWVuY29sID0gZmFsc2U7XG5cdHZhciBzdXBib29rcyA9IChbXS8qOmFueSovKTsgLy8gMS1pbmRleGVkLCB3aWxsIGhvbGQgZXh0ZXJuIG5hbWVzXG5cdHN1cGJvb2tzLlNoZWV0TmFtZXMgPSBvcHRzLnNuYW1lcztcblx0c3VwYm9va3Muc2hhcmVkZiA9IG9wdHMuc2hhcmVkZjtcblx0c3VwYm9va3MuYXJyYXlmID0gb3B0cy5hcnJheWY7XG5cdHN1cGJvb2tzLm5hbWVzID0gW107XG5cdHN1cGJvb2tzLlhUSSA9IFtdO1xuXHR2YXIgbGFzdF9SVCA9IDA7XG5cdHZhciBmaWxlX2RlcHRoID0gMDsgLyogVE9ETzogbWFrZSBhIHJlYWwgc3RhY2sgKi9cblx0dmFyIEJJRkYyRm10ID0gMCwgQklGRjJGbXRUYWJsZS8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgRmlsdGVyRGF0YWJhc2VzID0gW107IC8qIFRPRE86IHNvcnQgb3V0IHN1cGJvb2tzIGFuZCBwcm9jZXNzIGVsc2V3aGVyZSAqL1xuXHR2YXIgbGFzdF9sYmwvKjo/RGVmaW5lZE5hbWUqLztcblxuXHQvKiBleHBsaWNpdCBvdmVycmlkZSBmb3Igc29tZSBicm9rZW4gd3JpdGVycyAqL1xuXHRvcHRzLmNvZGVwYWdlID0gMTIwMDtcblx0c2V0X2NwKDEyMDApO1xuXHR2YXIgc2Vlbl9jb2RlcGFnZSA9IGZhbHNlO1xuXHR3aGlsZShibG9iLmwgPCBibG9iLmxlbmd0aCAtIDEpIHtcblx0XHR2YXIgcyA9IGJsb2IubDtcblx0XHR2YXIgUmVjb3JkVHlwZSA9IGJsb2IucmVhZF9zaGlmdCgyKTtcblx0XHRpZihSZWNvcmRUeXBlID09PSAwICYmIGxhc3RfUlQgPT09IDB4MDAwYSAvKiBFT0YgKi8pIGJyZWFrO1xuXHRcdHZhciBsZW5ndGggPSAoYmxvYi5sID09PSBibG9iLmxlbmd0aCA/IDAgOiBibG9iLnJlYWRfc2hpZnQoMikpO1xuXHRcdHZhciBSID0gWExTUmVjb3JkRW51bVtSZWNvcmRUeXBlXTtcblx0XHQvL2NvbnNvbGUubG9nKFJlY29yZFR5cGUudG9TdHJpbmcoMTYpLCBSZWNvcmRUeXBlLCBSLCBibG9iLmwsIGxlbmd0aCwgYmxvYi5sZW5ndGgpO1xuXHRcdC8vaWYoIVIpIGNvbnNvbGUubG9nKGJsb2Iuc2xpY2UoYmxvYi5sLCBibG9iLmwgKyBsZW5ndGgpKTtcblx0XHRpZihSICYmIFIuZikge1xuXHRcdFx0aWYob3B0aW9ucy5ib29rU2hlZXRzKSB7XG5cdFx0XHRcdGlmKGxhc3RfUlQgPT09IDB4MDA4NSAvKiBCb3VuZFNoZWV0OCAqLyAmJiBSZWNvcmRUeXBlICE9PSAweDAwODUgLyogUi5uICE9PSAnQm91bmRTaGVldDgnICovKSBicmVhaztcblx0XHRcdH1cblx0XHRcdGxhc3RfUlQgPSBSZWNvcmRUeXBlO1xuXHRcdFx0aWYoUi5yID09PSAyIHx8IFIuciA9PSAxMikge1xuXHRcdFx0XHR2YXIgcnQgPSBibG9iLnJlYWRfc2hpZnQoMik7IGxlbmd0aCAtPSAyO1xuXHRcdFx0XHRpZighb3B0cy5lbmMgJiYgcnQgIT09IFJlY29yZFR5cGUgJiYgKCgocnQmMHhGRik8PDgpfChydD4+OCkpICE9PSBSZWNvcmRUeXBlKSB0aHJvdyBuZXcgRXJyb3IoXCJydCBtaXNtYXRjaDogXCIgKyBydCArIFwiIT1cIiArIFJlY29yZFR5cGUpO1xuXHRcdFx0XHRpZihSLnIgPT0gMTIpe1xuXHRcdFx0XHRcdGJsb2IubCArPSAxMDsgbGVuZ3RoIC09IDEwO1xuXHRcdFx0XHR9IC8vIHNraXAgRlJUXG5cdFx0XHR9XG5cdFx0XHQvL2NvbnNvbGUuZXJyb3IoUixibG9iLmwsbGVuZ3RoLGJsb2IubGVuZ3RoKTtcblx0XHRcdHZhciB2YWwvKjphbnkqLyA9ICh7fS8qOmFueSovKTtcblx0XHRcdGlmKFJlY29yZFR5cGUgPT09IDB4MDAwYSAvKiBFT0YgKi8pIHZhbCA9IC8qOjooKi9SLmYoYmxvYiwgbGVuZ3RoLCBvcHRzKS8qOjogOmFueSkqLztcblx0XHRcdGVsc2UgdmFsID0gLyo6OigqL3NsdXJwKFJlY29yZFR5cGUsIFIsIGJsb2IsIGxlbmd0aCwgb3B0cykvKjo6IDphbnkpKi87XG5cdFx0XHQvKjo6IHZhbCA9ICh2YWw6YW55KTsgKi9cblx0XHRcdGlmKGZpbGVfZGVwdGggPT0gMCAmJiBbMHgwMDA5LCAweDAyMDksIDB4MDQwOSwgMHgwODA5XS5pbmRleE9mKGxhc3RfUlQpID09PSAtMSAvKiAnQk9GJyAqLykgY29udGludWU7XG5cdFx0XHRzd2l0Y2goUmVjb3JkVHlwZSkge1xuXHRcdFx0XHRjYXNlIDB4MDAyMiAvKiBEYXRlMTkwNCAqLzpcblx0XHRcdFx0XHQvKjo6IGlmKCFXb3JrYm9vay5XQlByb3BzKSBXb3JrYm9vay5XQlByb3BzID0ge307ICovXG5cdFx0XHRcdFx0d2Iub3B0cy5EYXRlMTkwNCA9IFdvcmtib29rLldCUHJvcHMuZGF0ZTE5MDQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4NiAvKiBXcml0ZVByb3RlY3QgKi86IHdiLm9wdHMuV3JpdGVQcm90ZWN0ID0gdHJ1ZTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDJmIC8qIEZpbGVQYXNzICovOlxuXHRcdFx0XHRcdGlmKCFvcHRzLmVuYykgYmxvYi5sID0gMDtcblx0XHRcdFx0XHRvcHRzLmVuYyA9IHZhbDtcblx0XHRcdFx0XHRpZighb3B0aW9ucy5wYXNzd29yZCkgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWRcIik7XG5cdFx0XHRcdFx0aWYodmFsLnZhbGlkID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcIkVuY3J5cHRpb24gc2NoZW1lIHVuc3VwcG9ydGVkXCIpO1xuXHRcdFx0XHRcdGlmKCF2YWwudmFsaWQpIHRocm93IG5ldyBFcnJvcihcIlBhc3N3b3JkIGlzIGluY29ycmVjdFwiKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwNWMgLyogV3JpdGVBY2Nlc3MgKi86IG9wdHMubGFzdHVzZXIgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA0MiAvKiBDb2RlUGFnZSAqLzpcblx0XHRcdFx0XHR2YXIgY3B2YWwgPSBOdW1iZXIodmFsKTtcblx0XHRcdFx0XHQvKiBvdmVycmlkZXMgYmFzZWQgb24gdGVzdCBjYXNlcyAqL1xuXHRcdFx0XHRcdHN3aXRjaChjcHZhbCkge1xuXHRcdFx0XHRcdFx0Y2FzZSAweDUyMTI6IGNwdmFsID0gIDEyMDA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAweDgwMDA6IGNwdmFsID0gMTAwMDA7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAweDgwMDE6IGNwdmFsID0gIDEyNTI7IGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRzZXRfY3Aob3B0cy5jb2RlcGFnZSA9IGNwdmFsKTtcblx0XHRcdFx0XHRzZWVuX2NvZGVwYWdlID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxM2QgLyogUlJUYWJJZCAqLzogb3B0cy5ycnRhYmlkID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTkgLyogV2luUHJvdGVjdCAqLzogb3B0cy53aW5sb2NrZWQgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFiNyAvKiBSZWZyZXNoQWxsICovOiB3Yi5vcHRzW1wiUmVmcmVzaEFsbFwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDBjIC8qIENhbGNDb3VudCAqLzogd2Iub3B0c1tcIkNhbGNDb3VudFwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDEwIC8qIENhbGNEZWx0YSAqLzogd2Iub3B0c1tcIkNhbGNEZWx0YVwiXSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDExIC8qIENhbGNJdGVyICovOiB3Yi5vcHRzW1wiQ2FsY0l0ZXJcIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwZCAvKiBDYWxjTW9kZSAqLzogd2Iub3B0c1tcIkNhbGNNb2RlXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGUgLyogQ2FsY1ByZWNpc2lvbiAqLzogd2Iub3B0c1tcIkNhbGNQcmVjaXNpb25cIl0gPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA1ZiAvKiBDYWxjU2F2ZVJlY2FsYyAqLzogd2Iub3B0c1tcIkNhbGNTYXZlUmVjYWxjXCJdID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMGYgLyogQ2FsY1JlZk1vZGUgKi86IG9wdHMuQ2FsY1JlZk1vZGUgPSB2YWw7IGJyZWFrOyAvLyBUT0RPOiBpbXBsZW1lbnQgUjFDMVxuXHRcdFx0XHRjYXNlIDB4MDhhMyAvKiBGb3JjZUZ1bGxDYWxjdWxhdGlvbiAqLzogd2Iub3B0cy5GdWxsQ2FsYyA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDgxIC8qIFdzQm9vbCAqLzpcblx0XHRcdFx0XHRpZih2YWwuZkRpYWxvZykgb3V0W1wiIXR5cGVcIl0gPSBcImRpYWxvZ1wiO1xuXHRcdFx0XHRcdGlmKCF2YWwuZkJlbG93KSAob3V0W1wiIW91dGxpbmVcIl0gfHwgKG91dFtcIiFvdXRsaW5lXCJdID0ge30pKS5hYm92ZSA9IHRydWU7XG5cdFx0XHRcdFx0aWYoIXZhbC5mUmlnaHQpIChvdXRbXCIhb3V0bGluZVwiXSB8fCAob3V0W1wiIW91dGxpbmVcIl0gPSB7fSkpLmxlZnQgPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrOyAvLyBUT0RPXG5cdFx0XHRcdGNhc2UgMHgwMGUwIC8qIFhGICovOlxuXHRcdFx0XHRcdFhGcy5wdXNoKHZhbCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDFhZSAvKiBTdXBCb29rICovOlxuXHRcdFx0XHRcdHN1cGJvb2tzLnB1c2goW3ZhbF0pO1xuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aC0xXS5YVEkgPSBbXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMjM6IGNhc2UgMHgwMjIzIC8qIEV4dGVybk5hbWUgKi86XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoLTFdLnB1c2godmFsKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTg6IGNhc2UgMHgwMjE4IC8qIExibCAqLzpcblx0XHRcdFx0XHRsYXN0X2xibCA9ICh7XG5cdFx0XHRcdFx0XHROYW1lOiB2YWwuTmFtZSxcblx0XHRcdFx0XHRcdFJlZjogc3RyaW5naWZ5X2Zvcm11bGEodmFsLnJnY2UscmFuZ2UsbnVsbCxzdXBib29rcyxvcHRzKVxuXHRcdFx0XHRcdH0vKjpEZWZpbmVkTmFtZSovKTtcblx0XHRcdFx0XHRpZih2YWwuaXRhYiA+IDApIGxhc3RfbGJsLlNoZWV0ID0gdmFsLml0YWIgLSAxO1xuXHRcdFx0XHRcdHN1cGJvb2tzLm5hbWVzLnB1c2gobGFzdF9sYmwpO1xuXHRcdFx0XHRcdGlmKCFzdXBib29rc1swXSkgeyBzdXBib29rc1swXSA9IFtdOyBzdXBib29rc1swXS5YVEkgPSBbXTsgfVxuXHRcdFx0XHRcdHN1cGJvb2tzW3N1cGJvb2tzLmxlbmd0aC0xXS5wdXNoKHZhbCk7XG5cdFx0XHRcdFx0aWYodmFsLk5hbWUgPT0gXCJfeGxubS5fRmlsdGVyRGF0YWJhc2VcIiAmJiB2YWwuaXRhYiA+IDApXG5cdFx0XHRcdFx0XHRpZih2YWwucmdjZSAmJiB2YWwucmdjZVswXSAmJiB2YWwucmdjZVswXVswXSAmJiB2YWwucmdjZVswXVswXVswXSA9PSAnUHRnQXJlYTNkJylcblx0XHRcdFx0XHRcdFx0RmlsdGVyRGF0YWJhc2VzW3ZhbC5pdGFiIC0gMV0gPSB7IHJlZjogZW5jb2RlX3JhbmdlKHZhbC5yZ2NlWzBdWzBdWzFdWzJdKSB9O1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxNiAvKiBFeHRlcm5Db3VudCAqLzogb3B0cy5FeHRlcm5Db3VudCA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDE3IC8qIEV4dGVyblNoZWV0ICovOlxuXHRcdFx0XHRcdGlmKHN1cGJvb2tzLmxlbmd0aCA9PSAwKSB7IHN1cGJvb2tzWzBdID0gW107IHN1cGJvb2tzWzBdLlhUSSA9IFtdOyB9XG5cdFx0XHRcdFx0c3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJID0gc3VwYm9va3Nbc3VwYm9va3MubGVuZ3RoIC0gMV0uWFRJLmNvbmNhdCh2YWwpOyBzdXBib29rcy5YVEkgPSBzdXBib29rcy5YVEkuY29uY2F0KHZhbCk7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDg5NCAvKiBOYW1lQ210ICovOlxuXHRcdFx0XHRcdC8qIFRPRE86IHNlYXJjaCBmb3IgY29ycmVjdCBuYW1lICovXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDwgOCkgYnJlYWs7XG5cdFx0XHRcdFx0aWYobGFzdF9sYmwgIT0gbnVsbCkgbGFzdF9sYmwuQ29tbWVudCA9IHZhbFsxXTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwMTIgLyogUHJvdGVjdCAqLzogb3V0W1wiIXByb3RlY3RcIl0gPSB2YWw7IGJyZWFrOyAvKiBmb3Igc2hlZXQgb3IgYm9vayAqL1xuXHRcdFx0XHRjYXNlIDB4MDAxMyAvKiBQYXNzd29yZCAqLzogaWYodmFsICE9PSAwICYmIG9wdHMuV1RGKSBjb25zb2xlLmVycm9yKFwiUGFzc3dvcmQgdmVyaWZpZXI6IFwiICsgdmFsKTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDg1IC8qIEJvdW5kU2hlZXQ4ICovOiB7XG5cdFx0XHRcdFx0RGlyZWN0b3J5W3ZhbC5wb3NdID0gdmFsO1xuXHRcdFx0XHRcdG9wdHMuc25hbWVzLnB1c2godmFsLm5hbWUpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwYSAvKiBFT0YgKi86IHtcblx0XHRcdFx0XHRpZigtLWZpbGVfZGVwdGgpIGJyZWFrO1xuXHRcdFx0XHRcdGlmKHJhbmdlLmUpIHtcblx0XHRcdFx0XHRcdGlmKHJhbmdlLmUuciA+IDAgJiYgcmFuZ2UuZS5jID4gMCkge1xuXHRcdFx0XHRcdFx0XHRyYW5nZS5lLnItLTsgcmFuZ2UuZS5jLS07XG5cdFx0XHRcdFx0XHRcdG91dFtcIiFyZWZcIl0gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRpZihvcHRpb25zLnNoZWV0Um93cyAmJiBvcHRpb25zLnNoZWV0Um93cyA8PSByYW5nZS5lLnIpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdG1wcmkgPSByYW5nZS5lLnI7XG5cdFx0XHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gb3B0aW9ucy5zaGVldFJvd3MgLSAxO1xuXHRcdFx0XHRcdFx0XHRcdG91dFtcIiFmdWxscmVmXCJdID0gb3V0W1wiIXJlZlwiXTtcblx0XHRcdFx0XHRcdFx0XHRvdXRbXCIhcmVmXCJdID0gZW5jb2RlX3JhbmdlKHJhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRyYW5nZS5lLnIgPSB0bXByaTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyYW5nZS5lLnIrKzsgcmFuZ2UuZS5jKys7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRpZihtZXJnZXMubGVuZ3RoID4gMCkgb3V0W1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0XHRcdFx0XHRcdGlmKG9iamVjdHMubGVuZ3RoID4gMCkgb3V0W1wiIW9iamVjdHNcIl0gPSBvYmplY3RzO1xuXHRcdFx0XHRcdFx0aWYoY29saW5mby5sZW5ndGggPiAwKSBvdXRbXCIhY29sc1wiXSA9IGNvbGluZm87XG5cdFx0XHRcdFx0XHRpZihyb3dpbmZvLmxlbmd0aCA+IDApIG91dFtcIiFyb3dzXCJdID0gcm93aW5mbztcblx0XHRcdFx0XHRcdFdvcmtib29rLlNoZWV0cy5wdXNoKHdzcHJvcHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihjdXJfc2hlZXQgPT09IFwiXCIpIFByZWFtYmxlID0gb3V0OyBlbHNlIFNoZWV0c1tjdXJfc2hlZXRdID0gb3V0O1xuXHRcdFx0XHRcdG91dCA9ICgob3B0aW9ucy5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwOTogY2FzZSAweDAyMDk6IGNhc2UgMHgwNDA5OiBjYXNlIDB4MDgwOSAvKiBCT0YgKi86IHtcblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPT09IDgpIG9wdHMuYmlmZiA9IHtcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAwMDkvKjo6XSovOjIsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMjA5Lyo6Ol0qLzozLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDQwOS8qOjpdKi86NFxuXHRcdFx0XHRcdH1bUmVjb3JkVHlwZV0gfHwge1xuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDIwMC8qOjpdKi86Mixcblx0XHRcdFx0XHRcdC8qOjpbKi8weDAzMDAvKjo6XSovOjMsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwNDAwLyo6Ol0qLzo0LFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDUwMC8qOjpdKi86NSxcblx0XHRcdFx0XHRcdC8qOjpbKi8weDA2MDAvKjo6XSovOjgsXG5cdFx0XHRcdFx0XHQvKjo6WyovMHgwMDAyLyo6Ol0qLzoyLFxuXHRcdFx0XHRcdFx0Lyo6OlsqLzB4MDAwNy8qOjpdKi86MlxuXHRcdFx0XHRcdH1bdmFsLkJJRkZWZXJdIHx8IDg7XG5cdFx0XHRcdFx0b3B0cy5iaWZmZ3Vlc3MgPSB2YWwuQklGRlZlciA9PSAwO1xuXHRcdFx0XHRcdGlmKHZhbC5CSUZGVmVyID09IDAgJiYgdmFsLmR0ID09IDB4MTAwMCkgeyBvcHRzLmJpZmYgPSA1OyBzZWVuX2NvZGVwYWdlID0gdHJ1ZTsgc2V0X2NwKG9wdHMuY29kZXBhZ2UgPSAyODU5MSk7IH1cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPT0gOCAmJiB2YWwuQklGRlZlciA9PSAwICYmIHZhbC5kdCA9PSAxNikgb3B0cy5iaWZmID0gMjtcblx0XHRcdFx0XHRpZihmaWxlX2RlcHRoKyspIGJyZWFrO1xuXHRcdFx0XHRcdG91dCA9ICgob3B0aW9ucy5kZW5zZSA/IFtdIDoge30pLyo6YW55Ki8pO1xuXG5cdFx0XHRcdFx0aWYob3B0cy5iaWZmIDwgOCAmJiAhc2Vlbl9jb2RlcGFnZSkgeyBzZWVuX2NvZGVwYWdlID0gdHJ1ZTsgc2V0X2NwKG9wdHMuY29kZXBhZ2UgPSBvcHRpb25zLmNvZGVwYWdlIHx8IDEyNTIpOyB9XG5cblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPCA1IHx8IHZhbC5CSUZGVmVyID09IDAgJiYgdmFsLmR0ID09IDB4MTAwMCkge1xuXHRcdFx0XHRcdFx0aWYoY3VyX3NoZWV0ID09PSBcIlwiKSBjdXJfc2hlZXQgPSBcIlNoZWV0MVwiO1xuXHRcdFx0XHRcdFx0cmFuZ2UgPSB7czp7cjowLGM6MH0sZTp7cjowLGM6MH19O1xuXHRcdFx0XHRcdFx0LyogZmFrZSBCb3VuZFNoZWV0OCAqL1xuXHRcdFx0XHRcdFx0dmFyIGZha2ViczggPSB7cG9zOiBibG9iLmwgLSBsZW5ndGgsIG5hbWU6Y3VyX3NoZWV0fTtcblx0XHRcdFx0XHRcdERpcmVjdG9yeVtmYWtlYnM4LnBvc10gPSBmYWtlYnM4O1xuXHRcdFx0XHRcdFx0b3B0cy5zbmFtZXMucHVzaChjdXJfc2hlZXQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGN1cl9zaGVldCA9IChEaXJlY3Rvcnlbc10gfHwge25hbWU6XCJcIn0pLm5hbWU7XG5cdFx0XHRcdFx0aWYodmFsLmR0ID09IDB4MjApIG91dFtcIiF0eXBlXCJdID0gXCJjaGFydFwiO1xuXHRcdFx0XHRcdGlmKHZhbC5kdCA9PSAweDQwKSBvdXRbXCIhdHlwZVwiXSA9IFwibWFjcm9cIjtcblx0XHRcdFx0XHRtZXJnZXMgPSBbXTtcblx0XHRcdFx0XHRvYmplY3RzID0gW107XG5cdFx0XHRcdFx0b3B0cy5hcnJheWYgPSBhcnJheWYgPSBbXTtcblx0XHRcdFx0XHRjb2xpbmZvID0gW107IHJvd2luZm8gPSBbXTtcblx0XHRcdFx0XHRzZWVuY29sID0gZmFsc2U7XG5cdFx0XHRcdFx0d3Nwcm9wcyA9IHtIaWRkZW46KERpcmVjdG9yeVtzXXx8e2hzOjB9KS5ocywgbmFtZTpjdXJfc2hlZXQgfTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyMDMgLyogTnVtYmVyICovOiBjYXNlIDB4MDAwMyAvKiBCSUZGMk5VTSAqLzogY2FzZSAweDAwMDIgLyogQklGRjJJTlQgKi86IHtcblx0XHRcdFx0XHRpZihvdXRbXCIhdHlwZVwiXSA9PSBcImNoYXJ0XCIpIGlmKG9wdGlvbnMuZGVuc2UgPyAob3V0W3ZhbC5yXXx8W10pW3ZhbC5jXTogb3V0W2VuY29kZV9jZWxsKHtjOnZhbC5jLCByOnZhbC5yfSldKSArK3ZhbC5jO1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV18fHt9LCB2OnZhbC52YWwsIHQ6J24nfS8qOmFueSovKTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwNTogY2FzZSAweDAyMDUgLyogQm9vbEVyciAqLzoge1xuXHRcdFx0XHRcdHRlbXBfdmFsID0gKHtpeGZlOiB2YWwuaXhmZSwgWEY6IFhGc1t2YWwuaXhmZV0sIHY6dmFsLnZhbCwgdDp2YWwudH0vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyN2UgLyogUksgKi86IHtcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdLCB2OnZhbC5ya251bSwgdDonbid9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGJkIC8qIE11bFJrICovOiB7XG5cdFx0XHRcdFx0Zm9yKHZhciBqID0gdmFsLmM7IGogPD0gdmFsLkM7ICsraikge1xuXHRcdFx0XHRcdFx0dmFyIGl4ZmUgPSB2YWwucmtyZWNbai12YWwuY11bMF07XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbD0gKHtpeGZlOml4ZmUsIFhGOlhGc1tpeGZlXSwgdjp2YWwucmtyZWNbai12YWwuY11bMV0sIHQ6J24nfS8qOmFueSovKTtcblx0XHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0XHRhZGRjZWxsKHtjOmosIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAwNjogY2FzZSAweDAyMDY6IGNhc2UgMHgwNDA2IC8qIEZvcm11bGEgKi86IHtcblx0XHRcdFx0XHRpZih2YWwudmFsID09ICdTdHJpbmcnKSB7IGxhc3RfZm9ybXVsYSA9IHZhbDsgYnJlYWs7IH1cblx0XHRcdFx0XHR0ZW1wX3ZhbCA9IG1ha2VfY2VsbCh2YWwudmFsLCB2YWwuY2VsbC5peGZlLCB2YWwudHQpO1xuXHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdHZhciBfZiA9IHZhbC5mb3JtdWxhO1xuXHRcdFx0XHRcdFx0aWYoX2YgJiYgX2ZbMF0gJiYgX2ZbMF1bMF0gJiYgX2ZbMF1bMF1bMF0gPT0gJ1B0Z0V4cCcpIHtcblx0XHRcdFx0XHRcdFx0dmFyIF9mciA9IF9mWzBdWzBdWzFdWzBdLCBfZmMgPSBfZlswXVswXVsxXVsxXTtcblx0XHRcdFx0XHRcdFx0dmFyIF9mZSA9IGVuY29kZV9jZWxsKHtyOl9mciwgYzpfZmN9KTtcblx0XHRcdFx0XHRcdFx0aWYoc2hhcmVkZltfZmVdKSB0ZW1wX3ZhbC5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWwuZm9ybXVsYSxyYW5nZSx2YWwuY2VsbCxzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgdGVtcF92YWwuRiA9ICgob3B0aW9ucy5kZW5zZSA/IChvdXRbX2ZyXXx8W10pW19mY106IG91dFtfZmVdKSB8fCB7fSkuRjtcblx0XHRcdFx0XHRcdH0gZWxzZSB0ZW1wX3ZhbC5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWwuZm9ybXVsYSxyYW5nZSx2YWwuY2VsbCxzdXBib29rcywgb3B0cyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwodmFsLmNlbGwsIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRsYXN0X2Zvcm11bGEgPSB2YWw7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDA3OiBjYXNlIDB4MDIwNyAvKiBTdHJpbmcgKi86IHtcblx0XHRcdFx0XHRpZihsYXN0X2Zvcm11bGEpIHsgLyogdGVjaG5pY2FsbHkgYWx3YXlzIHRydWUgKi9cblx0XHRcdFx0XHRcdGxhc3RfZm9ybXVsYS52YWwgPSB2YWw7XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbCA9IG1ha2VfY2VsbCh2YWwsIGxhc3RfZm9ybXVsYS5jZWxsLml4ZmUsICdzJyk7XG5cdFx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdFx0dGVtcF92YWwuZiA9IFwiXCIrc3RyaW5naWZ5X2Zvcm11bGEobGFzdF9mb3JtdWxhLmZvcm11bGEsIHJhbmdlLCBsYXN0X2Zvcm11bGEuY2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRcdGFkZGNlbGwobGFzdF9mb3JtdWxhLmNlbGwsIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0XHRcdGxhc3RfZm9ybXVsYSA9IG51bGw7XG5cdFx0XHRcdFx0fSBlbHNlIHRocm93IG5ldyBFcnJvcihcIlN0cmluZyByZWNvcmQgZXhwZWN0cyBGb3JtdWxhXCIpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAyMTogY2FzZSAweDAyMjEgLyogQXJyYXkgKi86IHtcblx0XHRcdFx0XHRhcnJheWYucHVzaCh2YWwpO1xuXHRcdFx0XHRcdHZhciBfYXJyYXlzdGFydCA9IGVuY29kZV9jZWxsKHZhbFswXS5zKTtcblx0XHRcdFx0XHRjYyA9IG9wdGlvbnMuZGVuc2UgPyAob3V0W3ZhbFswXS5zLnJdfHxbXSlbdmFsWzBdLnMuY10gOiBvdXRbX2FycmF5c3RhcnRdO1xuXHRcdFx0XHRcdGlmKG9wdGlvbnMuY2VsbEZvcm11bGEgJiYgY2MpIHtcblx0XHRcdFx0XHRcdGlmKCFsYXN0X2Zvcm11bGEpIGJyZWFrOyAvKiB0ZWNobmljYWxseSB1bnJlYWNoYWJsZSAqL1xuXHRcdFx0XHRcdFx0aWYoIV9hcnJheXN0YXJ0IHx8ICFjYykgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYy5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMV0sIHJhbmdlLCB2YWxbMF0sIHN1cGJvb2tzLCBvcHRzKTtcblx0XHRcdFx0XHRcdGNjLkYgPSBlbmNvZGVfcmFuZ2UodmFsWzBdKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwNGJjIC8qIFNockZtbGEgKi86IHtcblx0XHRcdFx0XHRpZighb3B0aW9ucy5jZWxsRm9ybXVsYSkgYnJlYWs7XG5cdFx0XHRcdFx0aWYobGFzdF9jZWxsKSB7XG5cdFx0XHRcdFx0XHQvKiBUT0RPOiBjYXB0dXJlIHJhbmdlICovXG5cdFx0XHRcdFx0XHRpZighbGFzdF9mb3JtdWxhKSBicmVhazsgLyogdGVjaG5pY2FsbHkgdW5yZWFjaGFibGUgKi9cblx0XHRcdFx0XHRcdHNoYXJlZGZbZW5jb2RlX2NlbGwobGFzdF9mb3JtdWxhLmNlbGwpXT0gdmFsWzBdO1xuXHRcdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFtsYXN0X2Zvcm11bGEuY2VsbC5yXXx8W10pW2xhc3RfZm9ybXVsYS5jZWxsLmNdIDogb3V0W2VuY29kZV9jZWxsKGxhc3RfZm9ybXVsYS5jZWxsKV07XG5cdFx0XHRcdFx0XHQoY2N8fHt9KS5mID0gXCJcIitzdHJpbmdpZnlfZm9ybXVsYSh2YWxbMF0sIHJhbmdlLCBsYXN0Y2VsbCwgc3VwYm9va3MsIG9wdHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwZmQgLyogTGFiZWxTc3QgKi86XG5cdFx0XHRcdFx0dGVtcF92YWw9bWFrZV9jZWxsKHNzdFt2YWwuaXNzdF0udCwgdmFsLml4ZmUsICdzJyk7XG5cdFx0XHRcdFx0aWYoc3N0W3ZhbC5pc3N0XS5oKSB0ZW1wX3ZhbC5oID0gc3N0W3ZhbC5pc3N0XS5oO1xuXHRcdFx0XHRcdHRlbXBfdmFsLlhGID0gWEZzW3RlbXBfdmFsLml4ZmVdO1xuXHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0c2FmZV9mb3JtYXRfeGYodGVtcF92YWwsIG9wdGlvbnMsIHdiLm9wdHMuRGF0ZTE5MDQpO1xuXHRcdFx0XHRcdGFkZGNlbGwoe2M6dmFsLmMsIHI6dmFsLnJ9LCB0ZW1wX3ZhbCwgb3B0aW9ucyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMjAxIC8qIEJsYW5rICovOiBpZihvcHRpb25zLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHR0ZW1wX3ZhbCA9ICh7aXhmZTogdmFsLml4ZmUsIFhGOiBYRnNbdmFsLml4ZmVdLCB0Oid6J30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoQklGRjJGbXQgPiAwKSB0ZW1wX3ZhbC56ID0gQklGRjJGbXRUYWJsZVsodGVtcF92YWwuaXhmZT4+OCkgJiAweDNGXTtcblx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0YWRkY2VsbCh7Yzp2YWwuYywgcjp2YWwucn0sIHRlbXBfdmFsLCBvcHRpb25zKTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwYmUgLyogTXVsQmxhbmsgKi86IGlmKG9wdGlvbnMuc2hlZXRTdHVicykge1xuXHRcdFx0XHRcdGZvcih2YXIgX2ogPSB2YWwuYzsgX2ogPD0gdmFsLkM7ICsrX2opIHtcblx0XHRcdFx0XHRcdHZhciBfaXhmZSA9IHZhbC5peGZlW19qLXZhbC5jXTtcblx0XHRcdFx0XHRcdHRlbXBfdmFsPSAoe2l4ZmU6X2l4ZmUsIFhGOlhGc1tfaXhmZV0sIHQ6J3onfS8qOmFueSovKTtcblx0XHRcdFx0XHRcdGlmKEJJRkYyRm10ID4gMCkgdGVtcF92YWwueiA9IEJJRkYyRm10VGFibGVbKHRlbXBfdmFsLml4ZmU+PjgpICYgMHgzRl07XG5cdFx0XHRcdFx0XHRzYWZlX2Zvcm1hdF94Zih0ZW1wX3ZhbCwgb3B0aW9ucywgd2Iub3B0cy5EYXRlMTkwNCk7XG5cdFx0XHRcdFx0XHRhZGRjZWxsKHtjOl9qLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwZDYgLyogUlN0cmluZyAqLzpcblx0XHRcdFx0Y2FzZSAweDAyMDQgLyogTGFiZWwgKi86IGNhc2UgMHgwMDA0IC8qIEJJRkYyU1RSICovOlxuXHRcdFx0XHRcdHRlbXBfdmFsPW1ha2VfY2VsbCh2YWwudmFsLCB2YWwuaXhmZSwgJ3MnKTtcblx0XHRcdFx0XHR0ZW1wX3ZhbC5YRiA9IFhGc1t0ZW1wX3ZhbC5peGZlXTtcblx0XHRcdFx0XHRpZihCSUZGMkZtdCA+IDApIHRlbXBfdmFsLnogPSBCSUZGMkZtdFRhYmxlWyh0ZW1wX3ZhbC5peGZlPj44KSAmIDB4M0ZdO1xuXHRcdFx0XHRcdHNhZmVfZm9ybWF0X3hmKHRlbXBfdmFsLCBvcHRpb25zLCB3Yi5vcHRzLkRhdGUxOTA0KTtcblx0XHRcdFx0XHRhZGRjZWxsKHtjOnZhbC5jLCByOnZhbC5yfSwgdGVtcF92YWwsIG9wdGlvbnMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMDAwOiBjYXNlIDB4MDIwMCAvKiBEaW1lbnNpb25zICovOiB7XG5cdFx0XHRcdFx0aWYoZmlsZV9kZXB0aCA9PT0gMSkgcmFuZ2UgPSB2YWw7IC8qIFRPRE86IHN0YWNrICovXG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGZjIC8qIFNTVCAqLzoge1xuXHRcdFx0XHRcdHNzdCA9IHZhbDtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA0MWUgLyogRm9ybWF0ICovOiB7IC8qIHZhbCA9IFtpZCwgZm10XSAqL1xuXHRcdFx0XHRcdGlmKG9wdHMuYmlmZiA9PSA0KSB7XG5cdFx0XHRcdFx0XHRCSUZGMkZtdFRhYmxlW0JJRkYyRm10KytdID0gdmFsWzFdO1xuXHRcdFx0XHRcdFx0Zm9yKHZhciBiNGlkeCA9IDA7IGI0aWR4IDwgQklGRjJGbXQgKyAxNjM7ICsrYjRpZHgpIGlmKHRhYmxlX2ZtdFtiNGlkeF0gPT0gdmFsWzFdKSBicmVhaztcblx0XHRcdFx0XHRcdGlmKGI0aWR4ID49IDE2MykgU1NGX2xvYWQodmFsWzFdLCBCSUZGMkZtdCArIDE2Myk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgU1NGX2xvYWQodmFsWzFdLCB2YWxbMF0pO1xuXHRcdFx0XHR9IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDAxZSAvKiBCSUZGMkZPUk1BVCAqLzoge1xuXHRcdFx0XHRcdEJJRkYyRm10VGFibGVbQklGRjJGbXQrK10gPSB2YWw7XG5cdFx0XHRcdFx0Zm9yKHZhciBiMmlkeCA9IDA7IGIyaWR4IDwgQklGRjJGbXQgKyAxNjM7ICsrYjJpZHgpIGlmKHRhYmxlX2ZtdFtiMmlkeF0gPT0gdmFsKSBicmVhaztcblx0XHRcdFx0XHRpZihiMmlkeCA+PSAxNjMpIFNTRl9sb2FkKHZhbCwgQklGRjJGbXQgKyAxNjMpO1xuXHRcdFx0XHR9IGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgMHgwMGU1IC8qIE1lcmdlQ2VsbHMgKi86IG1lcmdlcyA9IG1lcmdlcy5jb25jYXQodmFsKTsgYnJlYWs7XG5cblx0XHRcdFx0Y2FzZSAweDAwNWQgLyogT2JqICovOiBvYmplY3RzW3ZhbC5jbW9bMF1dID0gb3B0cy5sYXN0b2JqID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYjYgLyogVHhPICovOiBvcHRzLmxhc3RvYmouVHhPID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwN2YgLyogSW1EYXRhICovOiBvcHRzLmxhc3RvYmouSW1EYXRhID0gdmFsOyBicmVhaztcblxuXHRcdFx0XHRjYXNlIDB4MDFiOCAvKiBITGluayAqLzoge1xuXHRcdFx0XHRcdGZvcihybmdSID0gdmFsWzBdLnMucjsgcm5nUiA8PSB2YWxbMF0uZS5yOyArK3JuZ1IpXG5cdFx0XHRcdFx0XHRmb3Iocm5nQyA9IHZhbFswXS5zLmM7IHJuZ0MgPD0gdmFsWzBdLmUuYzsgKytybmdDKSB7XG5cdFx0XHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbcm5nUl18fFtdKVtybmdDXSA6IG91dFtlbmNvZGVfY2VsbCh7YzpybmdDLHI6cm5nUn0pXTtcblx0XHRcdFx0XHRcdFx0aWYoY2MpIGNjLmwgPSB2YWxbMV07XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODAwIC8qIEhMaW5rVG9vbHRpcCAqLzoge1xuXHRcdFx0XHRcdGZvcihybmdSID0gdmFsWzBdLnMucjsgcm5nUiA8PSB2YWxbMF0uZS5yOyArK3JuZ1IpXG5cdFx0XHRcdFx0XHRmb3Iocm5nQyA9IHZhbFswXS5zLmM7IHJuZ0MgPD0gdmFsWzBdLmUuYzsgKytybmdDKSB7XG5cdFx0XHRcdFx0XHRcdGNjID0gb3B0aW9ucy5kZW5zZSA/IChvdXRbcm5nUl18fFtdKVtybmdDXSA6IG91dFtlbmNvZGVfY2VsbCh7YzpybmdDLHI6cm5nUn0pXTtcblx0XHRcdFx0XHRcdFx0aWYoY2MgJiYgY2MubCkgY2MubC5Ub29sdGlwID0gdmFsWzFdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDFjIC8qIE5vdGUgKi86IHtcblx0XHRcdFx0XHRpZihvcHRzLmJpZmYgPD0gNSAmJiBvcHRzLmJpZmYgPj0gMikgYnJlYWs7IC8qIFRPRE86IEJJRkY1ICovXG5cdFx0XHRcdFx0Y2MgPSBvcHRpb25zLmRlbnNlID8gKG91dFt2YWxbMF0ucl18fFtdKVt2YWxbMF0uY10gOiBvdXRbZW5jb2RlX2NlbGwodmFsWzBdKV07XG5cdFx0XHRcdFx0dmFyIG5vdGVvYmogPSBvYmplY3RzW3ZhbFsyXV07XG5cdFx0XHRcdFx0aWYoIWNjKSB7XG5cdFx0XHRcdFx0XHRpZihvcHRpb25zLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmKCFvdXRbdmFsWzBdLnJdKSBvdXRbdmFsWzBdLnJdID0gW107XG5cdFx0XHRcdFx0XHRcdGNjID0gb3V0W3ZhbFswXS5yXVt2YWxbMF0uY10gPSAoe3Q6XCJ6XCJ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y2MgPSBvdXRbZW5jb2RlX2NlbGwodmFsWzBdKV0gPSAoe3Q6XCJ6XCJ9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCB2YWxbMF0ucik7XG5cdFx0XHRcdFx0XHRyYW5nZS5zLnIgPSBNYXRoLm1pbihyYW5nZS5zLnIsIHZhbFswXS5yKTtcblx0XHRcdFx0XHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgdmFsWzBdLmMpO1xuXHRcdFx0XHRcdFx0cmFuZ2Uucy5jID0gTWF0aC5taW4ocmFuZ2Uucy5jLCB2YWxbMF0uYyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmKCFjYy5jKSBjYy5jID0gW107XG5cdFx0XHRcdFx0Y21udCA9IHthOnZhbFsxXSx0Om5vdGVvYmouVHhPLnR9O1xuXHRcdFx0XHRcdGNjLmMucHVzaChjbW50KTtcblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDA4N2QgLyogWEZFeHQgKi86IHVwZGF0ZV94ZmV4dChYRnNbdmFsLml4ZmVdLCB2YWwuZXh0KTsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDdkIC8qIENvbEluZm8gKi86IHtcblx0XHRcdFx0XHRpZighb3B0cy5jZWxsU3R5bGVzKSBicmVhaztcblx0XHRcdFx0XHR3aGlsZSh2YWwuZSA+PSB2YWwucykge1xuXHRcdFx0XHRcdFx0Y29saW5mb1t2YWwuZS0tXSA9IHsgd2lkdGg6IHZhbC53LzI1NiwgbGV2ZWw6ICh2YWwubGV2ZWwgfHwgMCksIGhpZGRlbjogISEodmFsLmZsYWdzICYgMSkgfTtcblx0XHRcdFx0XHRcdGlmKCFzZWVuY29sKSB7IHNlZW5jb2wgPSB0cnVlOyBmaW5kX21kd19jb2x3KHZhbC53LzI1Nik7IH1cblx0XHRcdFx0XHRcdHByb2Nlc3NfY29sKGNvbGluZm9bdmFsLmUrMV0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyMDggLyogUm93ICovOiB7XG5cdFx0XHRcdFx0dmFyIHJvd29iaiA9IHt9O1xuXHRcdFx0XHRcdGlmKHZhbC5sZXZlbCAhPSBudWxsKSB7IHJvd2luZm9bdmFsLnJdID0gcm93b2JqOyByb3dvYmoubGV2ZWwgPSB2YWwubGV2ZWw7IH1cblx0XHRcdFx0XHRpZih2YWwuaGlkZGVuKSB7IHJvd2luZm9bdmFsLnJdID0gcm93b2JqOyByb3dvYmouaGlkZGVuID0gdHJ1ZTsgfVxuXHRcdFx0XHRcdGlmKHZhbC5ocHQpIHtcblx0XHRcdFx0XHRcdHJvd2luZm9bdmFsLnJdID0gcm93b2JqO1xuXHRcdFx0XHRcdFx0cm93b2JqLmhwdCA9IHZhbC5ocHQ7IHJvd29iai5ocHggPSBwdDJweCh2YWwuaHB0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMDI2IC8qIExlZnRNYXJnaW4gKi86XG5cdFx0XHRcdGNhc2UgMHgwMDI3IC8qIFJpZ2h0TWFyZ2luICovOlxuXHRcdFx0XHRjYXNlIDB4MDAyOCAvKiBUb3BNYXJnaW4gKi86XG5cdFx0XHRcdGNhc2UgMHgwMDI5IC8qIEJvdHRvbU1hcmdpbiAqLzpcblx0XHRcdFx0XHRpZighb3V0WychbWFyZ2lucyddKSBkZWZhdWx0X21hcmdpbnMob3V0WychbWFyZ2lucyddID0ge30pO1xuXHRcdFx0XHRcdG91dFsnIW1hcmdpbnMnXVsoezB4MjY6IFwibGVmdFwiLCAweDI3OlwicmlnaHRcIiwgMHgyODpcInRvcFwiLCAweDI5OlwiYm90dG9tXCJ9KVtSZWNvcmRUeXBlXV0gPSB2YWw7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwMGExIC8qIFNldHVwICovOiAvLyBUT0RPXG5cdFx0XHRcdFx0aWYoIW91dFsnIW1hcmdpbnMnXSkgZGVmYXVsdF9tYXJnaW5zKG91dFsnIW1hcmdpbnMnXSA9IHt9KTtcblx0XHRcdFx0XHRvdXRbJyFtYXJnaW5zJ10uaGVhZGVyID0gdmFsLmhlYWRlcjtcblx0XHRcdFx0XHRvdXRbJyFtYXJnaW5zJ10uZm9vdGVyID0gdmFsLmZvb3Rlcjtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAyM2UgLyogV2luZG93MiAqLzogLy8gVE9ET1xuXHRcdFx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRcdFx0aWYodmFsLlJUTCkgV29ya2Jvb2suVmlld3NbMF0uUlRMID0gdHJ1ZTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAweDAwOTIgLyogUGFsZXR0ZSAqLzogcGFsZXR0ZSA9IHZhbDsgYnJlYWs7XG5cdFx0XHRcdGNhc2UgMHgwODk2IC8qIFRoZW1lICovOiB0aGVtZXMgPSB2YWw7IGJyZWFrO1xuXHRcdFx0XHRjYXNlIDB4MDA4YyAvKiBDb3VudHJ5ICovOiBjb3VudHJ5ID0gdmFsOyBicmVhaztcblx0XHRcdFx0Y2FzZSAweDAxYmEgLyogQ29kZU5hbWUgKi86IHtcblx0XHRcdFx0XHQvKjo6IGlmKCFXb3JrYm9vay5XQlByb3BzKSBXb3JrYm9vay5XQlByb3BzID0ge307ICovXG5cdFx0XHRcdFx0aWYoIWN1cl9zaGVldCkgV29ya2Jvb2suV0JQcm9wcy5Db2RlTmFtZSA9IHZhbCB8fCBcIlRoaXNXb3JrYm9va1wiO1xuXHRcdFx0XHRcdGVsc2Ugd3Nwcm9wcy5Db2RlTmFtZSA9IHZhbCB8fCB3c3Byb3BzLm5hbWU7XG5cdFx0XHRcdH0gYnJlYWs7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmKCFSKSBjb25zb2xlLmVycm9yKFwiTWlzc2luZyBJbmZvIGZvciBYTFMgUmVjb3JkIDB4XCIgKyBSZWNvcmRUeXBlLnRvU3RyaW5nKDE2KSk7XG5cdFx0XHRibG9iLmwgKz0gbGVuZ3RoO1xuXHRcdH1cblx0fVxuXHR3Yi5TaGVldE5hbWVzPWtleXMoRGlyZWN0b3J5KS5zb3J0KGZ1bmN0aW9uKGEsYikgeyByZXR1cm4gTnVtYmVyKGEpIC0gTnVtYmVyKGIpOyB9KS5tYXAoZnVuY3Rpb24oeCl7cmV0dXJuIERpcmVjdG9yeVt4XS5uYW1lO30pO1xuXHRpZighb3B0aW9ucy5ib29rU2hlZXRzKSB3Yi5TaGVldHM9U2hlZXRzO1xuXHRpZighd2IuU2hlZXROYW1lcy5sZW5ndGggJiYgUHJlYW1ibGVbXCIhcmVmXCJdKSB7XG5cdFx0d2IuU2hlZXROYW1lcy5wdXNoKFwiU2hlZXQxXCIpO1xuXHRcdC8qanNoaW50IC1XMDY5ICovXG5cdFx0aWYod2IuU2hlZXRzKSB3Yi5TaGVldHNbXCJTaGVldDFcIl0gPSBQcmVhbWJsZTtcblx0XHQvKmpzaGludCArVzA2OSAqL1xuXHR9IGVsc2Ugd2IuUHJlYW1ibGU9UHJlYW1ibGU7XG5cdGlmKHdiLlNoZWV0cykgRmlsdGVyRGF0YWJhc2VzLmZvckVhY2goZnVuY3Rpb24ocixpKSB7IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2ldXVsnIWF1dG9maWx0ZXInXSA9IHI7IH0pO1xuXHR3Yi5TdHJpbmdzID0gc3N0O1xuXHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0aWYob3B0cy5lbmMpIHdiLkVuY3J5cHRpb24gPSBvcHRzLmVuYztcblx0aWYodGhlbWVzKSB3Yi5UaGVtZXMgPSB0aGVtZXM7XG5cdHdiLk1ldGFkYXRhID0ge307XG5cdGlmKGNvdW50cnkgIT09IHVuZGVmaW5lZCkgd2IuTWV0YWRhdGEuQ291bnRyeSA9IGNvdW50cnk7XG5cdGlmKHN1cGJvb2tzLm5hbWVzLmxlbmd0aCA+IDApIFdvcmtib29rLk5hbWVzID0gc3VwYm9va3MubmFtZXM7XG5cdHdiLldvcmtib29rID0gV29ya2Jvb2s7XG5cdHJldHVybiB3Yjtcbn1cblxuLyogVE9ETzogc3BsaXQgcHJvcHMqL1xudmFyIFBTQ0xTSUQgPSB7XG5cdFNJOiBcImUwODU5ZmYyZjk0ZjY4MTBhYjkxMDgwMDJiMjdiM2Q5XCIsXG5cdERTSTogXCIwMmQ1Y2RkNTljMmUxYjEwOTM5NzA4MDAyYjJjZjlhZVwiLFxuXHRVREk6IFwiMDVkNWNkZDU5YzJlMWIxMDkzOTcwODAwMmIyY2Y5YWVcIlxufTtcbmZ1bmN0aW9uIHBhcnNlX3hsc19wcm9wcyhjZmIvKjpDRkJDb250YWluZXIqLywgcHJvcHMsIG8pIHtcblx0LyogW01TLU9TSEFSRURdIDIuMy4zLjIuMiBEb2N1bWVudCBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCAqL1xuXHR2YXIgRFNJID0gQ0ZCLmZpbmQoY2ZiLCAnLyFEb2N1bWVudFN1bW1hcnlJbmZvcm1hdGlvbicpO1xuXHRpZihEU0kgJiYgRFNJLnNpemUgPiAwKSB0cnkge1xuXHRcdHZhciBEb2NTdW1tYXJ5ID0gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oRFNJLCBEb2NTdW1tYXJ5UElERFNJLCBQU0NMU0lELkRTSSk7XG5cdFx0Zm9yKHZhciBkIGluIERvY1N1bW1hcnkpIHByb3BzW2RdID0gRG9jU3VtbWFyeVtkXTtcblx0fSBjYXRjaChlKSB7aWYoby5XVEYpIHRocm93IGU7LyogZW1wdHkgKi99XG5cblx0LyogW01TLU9TSEFSRURdIDIuMy4zLjIuMSBTdW1tYXJ5IEluZm9ybWF0aW9uIFByb3BlcnR5IFNldCovXG5cdHZhciBTSSA9IENGQi5maW5kKGNmYiwgJy8hU3VtbWFyeUluZm9ybWF0aW9uJyk7XG5cdGlmKFNJICYmIFNJLnNpemUgPiAwKSB0cnkge1xuXHRcdHZhciBTdW1tYXJ5ID0gcGFyc2VfUHJvcGVydHlTZXRTdHJlYW0oU0ksIFN1bW1hcnlQSURTSSwgUFNDTFNJRC5TSSk7XG5cdFx0Zm9yKHZhciBzIGluIFN1bW1hcnkpIGlmKHByb3BzW3NdID09IG51bGwpIHByb3BzW3NdID0gU3VtbWFyeVtzXTtcblx0fSBjYXRjaChlKSB7aWYoby5XVEYpIHRocm93IGU7LyogZW1wdHkgKi99XG5cblx0aWYocHJvcHMuSGVhZGluZ1BhaXJzICYmIHByb3BzLlRpdGxlc09mUGFydHMpIHtcblx0XHRsb2FkX3Byb3BzX3BhaXJzKHByb3BzLkhlYWRpbmdQYWlycywgcHJvcHMuVGl0bGVzT2ZQYXJ0cywgcHJvcHMsIG8pO1xuXHRcdGRlbGV0ZSBwcm9wcy5IZWFkaW5nUGFpcnM7IGRlbGV0ZSBwcm9wcy5UaXRsZXNPZlBhcnRzO1xuXHR9XG59XG5mdW5jdGlvbiB3cml0ZV94bHNfcHJvcHMod2IvKjpXb3JrYm9vayovLCBjZmIvKjpDRkJDb250YWluZXIqLykge1xuXHR2YXIgRFNFbnRyaWVzID0gW10sIFNFbnRyaWVzID0gW10sIENFbnRyaWVzID0gW107XG5cdHZhciBpID0gMCwgS2V5cztcblx0dmFyIERvY1N1bW1hcnlSRS8qOntba2V5OnN0cmluZ106c3RyaW5nfSovID0gZXZlcnRfa2V5KERvY1N1bW1hcnlQSUREU0ksIFwiblwiKTtcblx0dmFyIFN1bW1hcnlSRS8qOntba2V5OnN0cmluZ106c3RyaW5nfSovID0gZXZlcnRfa2V5KFN1bW1hcnlQSURTSSwgXCJuXCIpO1xuXHRpZih3Yi5Qcm9wcykge1xuXHRcdEtleXMgPSBrZXlzKHdiLlByb3BzKTtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdGZvcihpID0gMDsgaSA8IEtleXMubGVuZ3RoOyArK2kpIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRG9jU3VtbWFyeVJFLCBLZXlzW2ldKSA/IERTRW50cmllcyA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTdW1tYXJ5UkUsIEtleXNbaV0pID8gU0VudHJpZXMgOiBDRW50cmllcykucHVzaChbS2V5c1tpXSwgd2IuUHJvcHNbS2V5c1tpXV1dKTtcblx0fVxuXHRpZih3Yi5DdXN0cHJvcHMpIHtcblx0XHRLZXlzID0ga2V5cyh3Yi5DdXN0cHJvcHMpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0Zm9yKGkgPSAwOyBpIDwgS2V5cy5sZW5ndGg7ICsraSkgaWYoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCgod2IuUHJvcHN8fHt9KSwgS2V5c1tpXSkpIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoRG9jU3VtbWFyeVJFLCBLZXlzW2ldKSA/IERTRW50cmllcyA6IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChTdW1tYXJ5UkUsIEtleXNbaV0pID8gU0VudHJpZXMgOiBDRW50cmllcykucHVzaChbS2V5c1tpXSwgd2IuQ3VzdHByb3BzW0tleXNbaV1dXSk7XG5cdH1cblx0dmFyIENFbnRyaWVzMiA9IFtdO1xuXHRmb3IoaSA9IDA7IGkgPCBDRW50cmllcy5sZW5ndGg7ICsraSkge1xuXHRcdGlmKFhMU1BTU2tpcC5pbmRleE9mKENFbnRyaWVzW2ldWzBdKSA+IC0xIHx8IFBzZXVkb1Byb3BzUGFpcnMuaW5kZXhPZihDRW50cmllc1tpXVswXSkgPiAtMSkgY29udGludWU7XG5cdFx0aWYoQ0VudHJpZXNbaV1bMV0gPT0gbnVsbCkgY29udGludWU7XG5cdFx0Q0VudHJpZXMyLnB1c2goQ0VudHJpZXNbaV0pO1xuXHR9XG5cdGlmKFNFbnRyaWVzLmxlbmd0aCkgQ0ZCLnV0aWxzLmNmYl9hZGQoY2ZiLCBcIi9cXHUwMDA1U3VtbWFyeUluZm9ybWF0aW9uXCIsIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKFNFbnRyaWVzLCBQU0NMU0lELlNJLCBTdW1tYXJ5UkUsIFN1bW1hcnlQSURTSSkpO1xuXHRpZihEU0VudHJpZXMubGVuZ3RoIHx8IENFbnRyaWVzMi5sZW5ndGgpIENGQi51dGlscy5jZmJfYWRkKGNmYiwgXCIvXFx1MDAwNURvY3VtZW50U3VtbWFyeUluZm9ybWF0aW9uXCIsIHdyaXRlX1Byb3BlcnR5U2V0U3RyZWFtKERTRW50cmllcywgUFNDTFNJRC5EU0ksIERvY1N1bW1hcnlSRSwgRG9jU3VtbWFyeVBJRERTSSwgQ0VudHJpZXMyLmxlbmd0aCA/IENFbnRyaWVzMiA6IG51bGwsIFBTQ0xTSUQuVURJKSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlX3hsc2NmYihjZmIvKjphbnkqLywgb3B0aW9ucy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcbmlmKCFvcHRpb25zKSBvcHRpb25zID0ge307XG5maXhfcmVhZF9vcHRzKG9wdGlvbnMpO1xucmVzZXRfY3AoKTtcbmlmKG9wdGlvbnMuY29kZXBhZ2UpIHNldF9hbnNpKG9wdGlvbnMuY29kZXBhZ2UpO1xudmFyIENvbXBPYmovKjo/Q0ZCRW50cnkqLywgV0IvKjo/YW55Ki87XG5pZihjZmIuRnVsbFBhdGhzKSB7XG5cdGlmKENGQi5maW5kKGNmYiwgJy9lbmNyeXB0aW9uJykpIHRocm93IG5ldyBFcnJvcihcIkZpbGUgaXMgcGFzc3dvcmQtcHJvdGVjdGVkXCIpO1xuXHRDb21wT2JqID0gQ0ZCLmZpbmQoY2ZiLCAnIUNvbXBPYmonKTtcblx0V0IgPSBDRkIuZmluZChjZmIsICcvV29ya2Jvb2snKSB8fCBDRkIuZmluZChjZmIsICcvQm9vaycpO1xufSBlbHNlIHtcblx0c3dpdGNoKG9wdGlvbnMudHlwZSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IGNmYiA9IHMyYShCYXNlNjRfZGVjb2RlKGNmYikpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiBjZmIgPSBzMmEoY2ZiKTsgYnJlYWs7XG5cdFx0Y2FzZSAnYnVmZmVyJzogYnJlYWs7XG5cdFx0Y2FzZSAnYXJyYXknOiBpZighQXJyYXkuaXNBcnJheShjZmIpKSBjZmIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjZmIpOyBicmVhaztcblx0fVxuXHRwcmVwX2Jsb2IoY2ZiLCAwKTtcblx0V0IgPSAoe2NvbnRlbnQ6IGNmYn0vKjphbnkqLyk7XG59XG52YXIgLyo6OkNvbXBPYmpQLCAqL1dvcmtib29rUC8qOjogOldvcmtib29rID0gWExTWC51dGlscy5ib29rX25ldygpOyAqLztcblxudmFyIF9kYXRhLyo6P2FueSovO1xuaWYoQ29tcE9iaikgLyo6OkNvbXBPYmpQID0gKi9wYXJzZV9jb21wb2JqKENvbXBPYmopO1xuaWYob3B0aW9ucy5ib29rUHJvcHMgJiYgIW9wdGlvbnMuYm9va1NoZWV0cykgV29ya2Jvb2tQID0gKHt9Lyo6YW55Ki8pO1xuZWxzZS8qOjogaWYoY2ZiIGluc3RhbmNlb2YgQ0ZCQ29udGFpbmVyKSAqLyB7XG5cdHZhciBUID0gaGFzX2J1ZiA/ICdidWZmZXInIDogJ2FycmF5Jztcblx0aWYoV0IgJiYgV0IuY29udGVudCkgV29ya2Jvb2tQID0gcGFyc2Vfd29ya2Jvb2soV0IuY29udGVudCwgb3B0aW9ucyk7XG5cdC8qIFF1YXR0cm8gUHJvIDctOCAqL1xuXHRlbHNlIGlmKChfZGF0YT1DRkIuZmluZChjZmIsICdQZXJmZWN0T2ZmaWNlX01BSU4nKSkgJiYgX2RhdGEuY29udGVudCkgV29ya2Jvb2tQID0gV0tfLnRvX3dvcmtib29rKF9kYXRhLmNvbnRlbnQsIChvcHRpb25zLnR5cGUgPSBULCBvcHRpb25zKSk7XG5cdC8qIFF1YXR0cm8gUHJvIDkgKi9cblx0ZWxzZSBpZigoX2RhdGE9Q0ZCLmZpbmQoY2ZiLCAnTmF0aXZlQ29udGVudF9NQUlOJykpICYmIF9kYXRhLmNvbnRlbnQpIFdvcmtib29rUCA9IFdLXy50b193b3JrYm9vayhfZGF0YS5jb250ZW50LCAob3B0aW9ucy50eXBlID0gVCwgb3B0aW9ucykpO1xuXHQvKiBXb3JrcyA0IGZvciBNYWMgKi9cblx0ZWxzZSBpZigoX2RhdGE9Q0ZCLmZpbmQoY2ZiLCAnTU4wJykpICYmIF9kYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIFdvcmtzIDQgZm9yIE1hYyBmaWxlXCIpO1xuXHRlbHNlIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIFdvcmtib29rIHN0cmVhbVwiKTtcblx0aWYob3B0aW9ucy5ib29rVkJBICYmIGNmYi5GdWxsUGF0aHMgJiYgQ0ZCLmZpbmQoY2ZiLCAnL19WQkFfUFJPSkVDVF9DVVIvVkJBL2RpcicpKSBXb3JrYm9va1AudmJhcmF3ID0gbWFrZV92YmFfeGxzKGNmYik7XG59XG5cbnZhciBwcm9wcyA9IHt9O1xuaWYoY2ZiLkZ1bGxQYXRocykgcGFyc2VfeGxzX3Byb3BzKC8qOjooKCovY2ZiLyo6OiA6YW55KTpDRkJDb250YWluZXIpKi8sIHByb3BzLCBvcHRpb25zKTtcblxuV29ya2Jvb2tQLlByb3BzID0gV29ya2Jvb2tQLkN1c3Rwcm9wcyA9IHByb3BzOyAvKiBUT0RPOiBzcGxpdCB1cCBwcm9wZXJ0aWVzICovXG5pZihvcHRpb25zLmJvb2tGaWxlcykgV29ya2Jvb2tQLmNmYiA9IGNmYjtcbi8qV29ya2Jvb2tQLkNvbXBPYmpQID0gQ29tcE9ialA7IC8vIFRPRE86IHN0b3JhZ2U/ICovXG5yZXR1cm4gV29ya2Jvb2tQO1xufVxuXG5cbmZ1bmN0aW9uIHdyaXRlX3hsc2NmYih3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpDRkJDb250YWluZXIqLyB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIGNmYiA9IENGQi51dGlscy5jZmJfbmV3KHtyb290OlwiUlwifSk7XG5cdHZhciB3YnBhdGggPSBcIi9Xb3JrYm9va1wiO1xuXHRzd2l0Y2goby5ib29rVHlwZSB8fCBcInhsc1wiKSB7XG5cdFx0Y2FzZSBcInhsc1wiOiBvLmJvb2tUeXBlID0gXCJiaWZmOFwiO1xuXHRcdC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlIFwieGxhXCI6IGlmKCFvLmJvb2tUeXBlKSBvLmJvb2tUeXBlID0gXCJ4bGFcIjtcblx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0Y2FzZSBcImJpZmY4XCI6IHdicGF0aCA9IFwiL1dvcmtib29rXCI7IG8uYmlmZiA9IDg7IGJyZWFrO1xuXHRcdGNhc2UgXCJiaWZmNVwiOiB3YnBhdGggPSBcIi9Cb29rXCI7IG8uYmlmZiA9IDU7IGJyZWFrO1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcImludmFsaWQgdHlwZSBcIiArIG8uYm9va1R5cGUgKyBcIiBmb3IgWExTIENGQlwiKTtcblx0fVxuXHRDRkIudXRpbHMuY2ZiX2FkZChjZmIsIHdicGF0aCwgd3JpdGVfYmlmZl9idWYod2IsIG8pKTtcblx0aWYoby5iaWZmID09IDggJiYgKHdiLlByb3BzIHx8IHdiLkN1c3Rwcm9wcykpIHdyaXRlX3hsc19wcm9wcyh3YiwgY2ZiKTtcblx0Ly8gVE9ETzogU0ksIERTSSwgQ09cblx0aWYoby5iaWZmID09IDggJiYgd2IudmJhcmF3KSBmaWxsX3ZiYV94bHMoY2ZiLCBDRkIucmVhZCh3Yi52YmFyYXcsIHt0eXBlOiB0eXBlb2Ygd2IudmJhcmF3ID09IFwic3RyaW5nXCIgPyBcImJpbmFyeVwiIDogXCJidWZmZXJcIn0pKTtcblx0cmV0dXJuIGNmYjtcbn1cbi8qIFtNUy1YTFNCXSAyLjMgUmVjb3JkIEVudW1lcmF0aW9uICovXG52YXIgWExTQlJlY29yZEVudW0gPSB7XG5cdC8qOjpbKi8weDAwMDAvKjo6XSovOiB7IC8qIG46XCJCcnRSb3dIZHJcIiwgKi8gZjpwYXJzZV9CcnRSb3dIZHIgfSxcblx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxCbGFua1wiLCAqLyBmOnBhcnNlX0JydENlbGxCbGFuayB9LFxuXHQvKjo6WyovMHgwMDAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbFJrXCIsICovIGY6cGFyc2VfQnJ0Q2VsbFJrIH0sXG5cdC8qOjpbKi8weDAwMDMvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsRXJyb3JcIiwgKi8gZjpwYXJzZV9CcnRDZWxsRXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgLyogbjpcIkJydENlbGxCb29sXCIsICovIGY6cGFyc2VfQnJ0Q2VsbEJvb2wgfSxcblx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgLyogbjpcIkJydENlbGxSZWFsXCIsICovIGY6cGFyc2VfQnJ0Q2VsbFJlYWwgfSxcblx0Lyo6OlsqLzB4MDAwNi8qOjpdKi86IHsgLyogbjpcIkJydENlbGxTdFwiLCAqLyBmOnBhcnNlX0JydENlbGxTdCB9LFxuXHQvKjo6WyovMHgwMDA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbElzc3RcIiwgKi8gZjpwYXJzZV9CcnRDZWxsSXNzdCB9LFxuXHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm1sYVN0cmluZ1wiLCAqLyBmOnBhcnNlX0JydEZtbGFTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgLyogbjpcIkJydEZtbGFOdW1cIiwgKi8gZjpwYXJzZV9CcnRGbWxhTnVtIH0sXG5cdC8qOjpbKi8weDAwMEEvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhQm9vbFwiLCAqLyBmOnBhcnNlX0JydEZtbGFCb29sIH0sXG5cdC8qOjpbKi8weDAwMEIvKjo6XSovOiB7IC8qIG46XCJCcnRGbWxhRXJyb3JcIiwgKi8gZjpwYXJzZV9CcnRGbWxhRXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwQy8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0QmxhbmtcIiwgKi8gZjpwYXJzZV9CcnRTaG9ydEJsYW5rIH0sXG5cdC8qOjpbKi8weDAwMEQvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydFJrXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRSayB9LFxuXHQvKjo6WyovMHgwMDBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRFcnJvclwiLCAqLyBmOnBhcnNlX0JydFNob3J0RXJyb3IgfSxcblx0Lyo6OlsqLzB4MDAwRi8qOjpdKi86IHsgLyogbjpcIkJydFNob3J0Qm9vbFwiLCAqLyBmOnBhcnNlX0JydFNob3J0Qm9vbCB9LFxuXHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRSZWFsXCIsICovIGY6cGFyc2VfQnJ0U2hvcnRSZWFsIH0sXG5cdC8qOjpbKi8weDAwMTEvKjo6XSovOiB7IC8qIG46XCJCcnRTaG9ydFN0XCIsICovIGY6cGFyc2VfQnJ0U2hvcnRTdCB9LFxuXHQvKjo6WyovMHgwMDEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hvcnRJc3N0XCIsICovIGY6cGFyc2VfQnJ0U2hvcnRJc3N0IH0sXG5cdC8qOjpbKi8weDAwMTMvKjo6XSovOiB7IC8qIG46XCJCcnRTU1RJdGVtXCIsICovIGY6cGFyc2VfUmljaFN0ciB9LFxuXHQvKjo6WyovMHgwMDE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESU1pc3NpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESU51bWJlclwiICovIH0sXG5cdC8qOjpbKi8weDAwMTYvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQm9vbGVhblwiICovIH0sXG5cdC8qOjpbKi8weDAwMTcvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJRXJyb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESVN0cmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJRGF0ZXRpbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUluZGV4XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAxQi8qOjpdKi86IHsgLyogbjpcIkJydFBDRElBTWlzc2luZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMUMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQU51bWJlclwiICovIH0sXG5cdC8qOjpbKi8weDAwMUQvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQUJvb2xlYW5cIiAqLyB9LFxuXHQvKjo6WyovMHgwMDFFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESUFFcnJvclwiICovIH0sXG5cdC8qOjpbKi8weDAwMUYvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQVN0cmluZ1wiICovIH0sXG5cdC8qOjpbKi8weDAwMjAvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RJQURhdGV0aW1lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAyMS8qOjpdKi86IHsgLyogbjpcIkJydFBDUlJlY29yZFwiICovIH0sXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IC8qIG46XCJCcnRQQ1JSZWNvcmREdFwiICovIH0sXG5cdC8qOjpbKi8weDAwMjMvKjo6XSovOiB7IC8qIG46XCJCcnRGUlRCZWdpblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAyNC8qOjpdKi86IHsgLyogbjpcIkJydEZSVEVuZFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwMjUvKjo6XSovOiB7IC8qIG46XCJCcnRBQ0JlZ2luXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QUNFbmRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TmFtZVwiLCAqLyBmOnBhcnNlX0JydE5hbWUgfSxcblx0Lyo6OlsqLzB4MDAyOC8qOjpdKi86IHsgLyogbjpcIkJydEluZGV4Um93QmxvY2tcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0SW5kZXhCbG9ja1wiICovIH0sXG5cdC8qOjpbKi8weDAwMkIvKjo6XSovOiB7IC8qIG46XCJCcnRGb250XCIsICovIGY6cGFyc2VfQnJ0Rm9udCB9LFxuXHQvKjo6WyovMHgwMDJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Rm10XCIsICovIGY6cGFyc2VfQnJ0Rm10IH0sXG5cdC8qOjpbKi8weDAwMkQvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxsXCIsICovIGY6cGFyc2VfQnJ0RmlsbCB9LFxuXHQvKjo6WyovMHgwMDJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9yZGVyXCIsICovIGY6cGFyc2VfQnJ0Qm9yZGVyIH0sXG5cdC8qOjpbKi8weDAwMkYvKjo6XSovOiB7IC8qIG46XCJCcnRYRlwiLCAqLyBmOnBhcnNlX0JydFhGIH0sXG5cdC8qOjpbKi8weDAwMzAvKjo6XSovOiB7IC8qIG46XCJCcnRTdHlsZVwiICovIH0sXG5cdC8qOjpbKi8weDAwMzEvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsTWV0YVwiLCAqLyBmOnBhcnNlX0ludDMyTEUgfSxcblx0Lyo6OlsqLzB4MDAzMi8qOjpdKi86IHsgLyogbjpcIkJydFZhbHVlTWV0YVwiICovIH0sXG5cdC8qOjpbKi8weDAwMzMvKjo6XSovOiB7IC8qIG46XCJCcnRNZGJcIiAqLyBmOnBhcnNlX0JydE1kYiB9LFxuXHQvKjo6WyovMHgwMDM0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5GbWRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGbWRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwMzcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZHhUdXBsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDAzOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keFR1cGxlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDAzQS8qOjpdKi86IHsgLyogbjpcIkJydE1keE1icklzdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDAzQy8qOjpdKi86IHsgLyogbjpcIkJydENvbEluZm9cIiwgKi8gZjpwYXJzZV9Db2xJbmZvIH0sXG5cdC8qOjpbKi8weDAwM0UvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsUlN0cmluZ1wiLCAqLyBmOnBhcnNlX0JydENlbGxSU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAwM0YvKjo6XSovOiB7IC8qIG46XCJCcnRDYWxjQ2hhaW5JdGVtJFwiLCAqLyBmOnBhcnNlX0JydENhbGNDaGFpbkl0ZW0kIH0sXG5cdC8qOjpbKi8weDAwNDAvKjo6XSovOiB7IC8qIG46XCJCcnREVmFsXCIsICovIGY6cGFyc2VfQnJ0RFZhbCB9LFxuXHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbE51bVwiICovIH0sXG5cdC8qOjpbKi8weDAwNDIvKjo6XSovOiB7IC8qIG46XCJCcnRTeHZjZWxsU3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA0NC8qOjpdKi86IHsgLyogbjpcIkJydFN4dmNlbGxFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbERhdGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMDQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3h2Y2VsbE5pbFwiICovIH0sXG5cdC8qOjpbKi8weDAwODAvKjo6XSovOiB7IC8qIG46XCJCcnRGaWxlVmVyc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDAwODEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNoZWV0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2hlZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Cb29rXCIsICovIFQ6MSwgZjpwYXJzZW5vb3AsIHA6MCB9LFxuXHQvKjo6WyovMHgwMDg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9va1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwODUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldzVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwODYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXc1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQm9va1ZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMDg4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9va1ZpZXdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV3NWaWV3XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpbldzVmlldyB9LFxuXHQvKjo6WyovMHgwMDhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV3NWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDA4Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3NWaWV3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDA4Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZENzVmlld3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDhELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Dc1ZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDc1ZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDhGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5CdW5kbGVTaHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRCdW5kbGVTaHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TaGVldERhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwOTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTaGVldERhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMDkzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0V3NQcm9wXCIsICovIGY6cGFyc2VfQnJ0V3NQcm9wIH0sXG5cdC8qOjpbKi8weDAwOTQvKjo6XSovOiB7IC8qIG46XCJCcnRXc0RpbVwiLCAqLyBmOnBhcnNlX0JydFdzRGltLCBwOjE2IH0sXG5cdC8qOjpbKi8weDAwOTcvKjo6XSovOiB7IC8qIG46XCJCcnRQYW5lXCIsICovIGY6cGFyc2VfQnJ0UGFuZSB9LFxuXHQvKjo6WyovMHgwMDk4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2VsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5OS8qOjpdKi86IHsgLyogbjpcIkJydFdiUHJvcFwiLCAqLyBmOnBhcnNlX0JydFdiUHJvcCB9LFxuXHQvKjo6WyovMHgwMDlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2JGYWN0b2lkXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Qi8qOjpdKi86IHsgLyogbjpcIkJydEZpbGVSZWNvdmVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Qy8qOjpdKi86IHsgLyogbjpcIkJydEJ1bmRsZVNoXCIsICovIGY6cGFyc2VfQnJ0QnVuZGxlU2ggfSxcblx0Lyo6OlsqLzB4MDA5RC8qOjpdKi86IHsgLyogbjpcIkJydENhbGNQcm9wXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5RS8qOjpdKi86IHsgLyogbjpcIkJydEJvb2tWaWV3XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3N0XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpblNzdCB9LFxuXHQvKjo6WyovMHgwMEEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3N0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQUZpbHRlclwiLCAqLyBUOjEsIGY6cGFyc2VfVW5jaGVja2VkUmZYIH0sXG5cdC8qOjpbKi8weDAwQTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRBRmlsdGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRmlsdGVyQ29sdW1uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRmlsdGVyQ29sdW1uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBBNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBOC8qOjpdKi86IHsgLyogbjpcIkJydENvbG9yRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDBBOS8qOjpdKi86IHsgLyogbjpcIkJydEljb25GaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VG9wMTBGaWx0ZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMEFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RHluYW1pY0ZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkN1c3RvbUZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQUQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDdXN0b21GaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBBRS8qOjpdKi86IHsgLyogbjpcIkJydEN1c3RvbUZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDAwQUYvKjo6XSovOiB7IC8qIG46XCJCcnRBRmlsdGVyRGF0ZUdyb3VwSXRlbVwiICovIH0sXG5cdC8qOjpbKi8weDAwQjAvKjo6XSovOiB7IC8qIG46XCJCcnRNZXJnZUNlbGxcIiwgKi8gZjpwYXJzZV9CcnRNZXJnZUNlbGwgfSxcblx0Lyo6OlsqLzB4MDBCMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWVyZ2VDZWxsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1lcmdlQ2VsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlRGVmXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RDYWNoZURlZlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZpZWxkc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZpZWxkc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZpZWxkXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERmllbGRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTb3VyY2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTb3VyY2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTUmFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTUmFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGQXRibFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBCRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZBdGJsXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBCRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESVJ1blwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRElSdW5cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlUmVjb3Jkc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVSZWNvcmRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESGllcmFyY2hpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RIaWVyYXJjaGllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhpZXJhcmNoeVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhpZXJhcmNoeVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhGaWVsZHNVc2FnZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBDOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhGaWVsZHNVc2FnZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm5lY3Rpb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQ0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uZWN0aW9uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNEYlByb3BzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMENDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNEYlByb3BzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBDRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNPbGFwUHJvcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwQ0UvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ09sYXBQcm9wc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwQ0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDb25zb2xcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ29uc29sXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBEMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0NQYWdlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDUGFnZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1BhZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTQ1BhZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTQ1BJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NQSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDU2V0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBEOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNDU2V0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNDU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMERBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0NTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMERCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwREMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMERELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RGR0l0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMERFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENERkdJdGVtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwREYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREZHUmFuZ2VcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RGR1JhbmdlXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENERkdEaXNjcmV0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREZHRGlzY3JldGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFR1cGxlQ2FjaGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFR1cGxlQ2FjaGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEU1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRW50cmllc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBFNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENFbnRyaWVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VNZW1iZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ0VNZW1iZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBFOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ0VNZW1iZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDRU1lbWJlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRFNEVENRdWVyaWVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEU0RUQ1F1ZXJpZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDUXVlcnlcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRFRDUXVlcnlcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDU2V0c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENTZXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEU0RUQ1NldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRFNEVENTZXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjSXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjSXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjSXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRENhbGNJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDBGNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJ1bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUnVsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDBGQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBSRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAwRkIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMEZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGaWx0ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEZELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTmFtZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAwRkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTmFtZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMEZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTmFtZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOYW1lXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUE5QYWlyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBOUGFpcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QTlBhaXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQTlBhaXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1dlYlByb3BzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNXZWJQcm9wc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVjV3BUYWJsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1dQVGFibGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNQYXJhbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1BhcmFtc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMEIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDUGFyYW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1BhcmFtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEwRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENES1BJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEwRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREtQSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RLUElcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RLUElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EaW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGltc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRpbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERpbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTUvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleFBhcnRFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZVNoZWV0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3R5bGVTaGVldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVmlld1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVklcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVklzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDExRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWRFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDExRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVkRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFZEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVkRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hQSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYUElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTIzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFBJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYUElzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hESVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTI3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWERJc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRElzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEyOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hMSVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEyQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYTElcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWExJUndzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMSVJ3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMkQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTElDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMSUNvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEZvcm1hdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYRm9ybWF0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGb3JtYXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3hGb3JtYXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3hTZWxlY3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeFNlbGVjdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxMzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbklTWFZEUndzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVkRSd3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hWRENvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxMzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hWRENvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hMb2NhdGlvblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxM0EvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYTG9jYXRpb25cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxM0IvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZpZXdcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRIc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDEzRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUSFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDEzRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hUSFJ3c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZElTWFRIUndzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSVNYVEhDb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSVNYVEhDb2xzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hURE1QU1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0NS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVERNUHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRETVBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRETVBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTQ4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRISXRlbXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNDkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFRISXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFRISXRlbVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYVEhJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE0Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWV0YWRhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNEQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZXRhZGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVzbWR0aW5mb1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE0Ri8qOjpdKi86IHsgLyogbjpcIkJydE1kdGluZm9cIiwgKi8gZjpwYXJzZV9CcnRNZHRpbmZvIH0sXG5cdC8qOjpbKi8weDAxNTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc21kdGluZm9cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc21kYlwiLCAqLyBmOnBhcnNlX0JydEJlZ2luRXNtZGIsIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXNtZGJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Fc2ZtZFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVzZm1kXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2luZ2xlQ2VsbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTaW5nbGVDZWxsc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNTcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdENvbHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0Q29sc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkxpc3RDb2xcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNUMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0Q29sXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE1RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTGlzdFhtbENQclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE1RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZExpc3RYbWxDUHJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTVGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdENDRm1sYVwiICovIH0sXG5cdC8qOjpbKi8weDAxNjAvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0VHJGbWxhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0ZXJuYWxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTYyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0ZXJuYWxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE2My8qOjpdKi86IHsgLyogbjpcIkJydFN1cEJvb2tTcmNcIiwgKi8gZjpwYXJzZV9SZWxJRH0sXG5cdC8qOjpbKi8weDAxNjUvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBTZWxmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE2Ni8qOjpdKi86IHsgLyogbjpcIkJydFN1cFNhbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTY3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwVGFic1wiICovIH0sXG5cdC8qOjpbKi8weDAxNjgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN1cEJvb2tcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNjkvKjo6XSovOiB7IC8qIG46XCJCcnRQbGFjZWhvbGRlck5hbWVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuU2hlZXRcIiwgKi8gZjpwYXJzZV9FeHRlcm5TaGVldCB9LFxuXHQvKjo6WyovMHgwMTZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuVGFibGVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAxNkMvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5UYWJsZUVuZFwiICovIH0sXG5cdC8qOjpbKi8weDAxNkUvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5Sb3dIZHJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuQ2VsbEJsYW5rXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3MC8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxSZWFsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3MS8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3Mi8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVybkNlbGxFcnJvclwiICovIH0sXG5cdC8qOjpbKi8weDAxNzMvKjo6XSovOiB7IC8qIG46XCJCcnRFeHRlcm5DZWxsU3RyaW5nXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE3NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNtZHhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNzUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc21keFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNzYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keFNldFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE3Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1keFNldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxNzgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk1keE1iclByb3BcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxNzkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNZHhNYnJQcm9wXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWR4S1BJXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMTdCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWR4S1BJXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE3Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXNzdHJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxN0QvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFc3N0clwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxN0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRkl0ZW1cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxN0YvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZJdGVtXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4MC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGl2b3RDYWNoZUlEc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTgyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdENhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQaXZvdENhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JU1hWSXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJU1hWSXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMTg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xJbmZvc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbEluZm9zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDE4OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUndCcmtcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxODkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSd0Jya1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxOEEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbEJya1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE4Qi8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbEJya1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxOEMvKjo6XSovOiB7IC8qIG46XCJCcnRCcmtcIiAqLyB9LFxuXHQvKjo6WyovMHgwMThELyo6Ol0qLzogeyAvKiBuOlwiQnJ0VXNlckJvb2tWaWV3XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE4RS8qOjpdKi86IHsgLyogbjpcIkJydEluZm9cIiAqLyB9LFxuXHQvKjo6WyovMHgwMThGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q1VzclwiICovIH0sXG5cdC8qOjpbKi8weDAxOTAvKjo6XSovOiB7IC8qIG46XCJCcnRVc3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTkxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2Vyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDE5My8qOjpdKi86IHsgLyogbjpcIkJydEVPRlwiICovIH0sXG5cdC8qOjpbKi8weDAxOTQvKjo6XSovOiB7IC8qIG46XCJCcnRVQ1JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJJbnNEZWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRJbnNEZWxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTk3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJNb3ZlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5OC8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kTW92ZVwiICovIH0sXG5cdC8qOjpbKi8weDAxOTkvKjo6XSovOiB7IC8qIG46XCJCcnRSUkNoZ0NlbGxcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJFbmRDaGdDZWxsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Qi8qOjpdKi86IHsgLyogbjpcIkJydFJSSGVhZGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Qy8qOjpdKi86IHsgLyogbjpcIkJydFJSVXNlclZpZXdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMTlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJSZW5TaGVldFwiICovIH0sXG5cdC8qOjpbKi8weDAxOUUvKjo6XSovOiB7IC8qIG46XCJCcnRSUkluc2VydFNoXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDE5Ri8qOjpdKi86IHsgLyogbjpcIkJydFJSRGVmTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDAxQTAvKjo6XSovOiB7IC8qIG46XCJCcnRSUk5vdGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UlJDb25mbGljdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTIvKjo6XSovOiB7IC8qIG46XCJCcnRSUlRRU0lGXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBMy8qOjpdKi86IHsgLyogbjpcIkJydFJSRm9ybWF0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBNC8qOjpdKi86IHsgLyogbjpcIkJydFJSRW5kRm9ybWF0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBNS8qOjpdKi86IHsgLyogbjpcIkJydFJSQXV0b0ZtdFwiICovIH0sXG5cdC8qOjpbKi8weDAxQTYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJTaFZpZXdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Vc2VyU2hWaWV3XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVXNlclNoVmlld1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyU2hWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQUEvKjo6XSovOiB7IC8qIG46XCJCcnRBcnJGbWxhXCIsICovIGY6cGFyc2VfQnJ0QXJyRm1sYSB9LFxuXHQvKjo6WyovMHgwMUFCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hyRm1sYVwiLCAqLyBmOnBhcnNlX0JydFNockZtbGEgfSxcblx0Lyo6OlsqLzB4MDFBQy8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFBRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubmVjdGlvbnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQUUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFeHRDb25uZWN0aW9uc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQUYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUIwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RDYWxjTWVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTGV2ZWxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMZXZlbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xldmVsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMZXZlbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdyb3Vwc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdyb3Vwc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDREhHTEdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENESEdMR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RIR0xHTWVtYmVyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCQy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdNZW1iZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFCRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENESEdMR01lbWJlclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFCRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDREhHTEdNZW1iZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUJGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxQzAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRRU0lcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lSXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUVNJUlwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlbGV0ZWROYW1lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDNC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERlbGV0ZWROYW1lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlbGV0ZWROYW1lXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGVsZXRlZE5hbWVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5RU0lGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDOC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSUZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFDOS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUVNJRlwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFFTSUZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUNCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5BdXRvU29ydFNjb3BlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQXV0b1NvcnRTY29wZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQ0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbmRpdGlvbmFsRm9ybWF0dGluZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFDRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbmRpdGlvbmFsRm9ybWF0dGluZ1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxQ0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNGUnVsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFEMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZENGUnVsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkljb25TZXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRDIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRJY29uU2V0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFEMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YWJhclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFENC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFiYXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db2xvclNjYWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29sb3JTY2FsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRDcvKjo6XSovOiB7IC8qIG46XCJCcnRDRlZPXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDFEOC8qOjpdKi86IHsgLyogbjpcIkJydEV4dGVyblZhbHVlTWV0YVwiICovIH0sXG5cdC8qOjpbKi8weDAxRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbG9yUGFsZXR0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFEQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbG9yUGFsZXR0ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxREIvKjo6XSovOiB7IC8qIG46XCJCcnRJbmRleGVkQ29sb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMURDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TWFyZ2luc1wiLCAqLyBmOnBhcnNlX0JydE1hcmdpbnMgfSxcblx0Lyo6OlsqLzB4MDFERC8qOjpdKi86IHsgLyogbjpcIkJydFByaW50T3B0aW9uc1wiICovIH0sXG5cdC8qOjpbKi8weDAxREUvKjo6XSovOiB7IC8qIG46XCJCcnRQYWdlU2V0dXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwMURGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5IZWFkZXJGb290ZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRIZWFkZXJGb290ZXJcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENydEZvcm1hdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ3J0Rm9ybWF0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDcnRGb3JtYXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUU0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDcnRGb3JtYXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFNS8qOjpdKi86IHsgLyogbjpcIkJydFdzRm10SW5mb1wiLCAqLyBmOnBhcnNlX0JydFdzRm10SW5mbyB9LFxuXHQvKjo6WyovMHgwMUU2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNR3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NR01hcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAxRTkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNR01hcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUVBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NR1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFFQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1HXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luTWFwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kTWFwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFFRS8qOjpdKi86IHsgLyogbjpcIkJydEhMaW5rXCIsICovIGY6cGFyc2VfQnJ0SExpbmsgfSxcblx0Lyo6OlsqLzB4MDFFRi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRENvblwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGMC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERDb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMUYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EUmVmc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGMi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERSZWZzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGMy8qOjpdKi86IHsgLyogbjpcIkJydERSZWZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TY2VuTWFuXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2Nlbk1hblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNjdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGNy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNjdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRjgvKjo6XSovOiB7IC8qIG46XCJCcnRTbGNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUY5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EWEZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMUZBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRFhGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAxRkIvKjo6XSovOiB7IC8qIG46XCJCcnREWEZcIiAqLyB9LFxuXHQvKjo6WyovMHgwMUZDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UYWJsZVN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGRC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDFGRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGFibGVTdHlsZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDFGRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU3R5bGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTdHlsZUVsZW1lbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTdHlsZUNsaWVudFwiICovIH0sXG5cdC8qOjpbKi8weDAyMDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbERlcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMDMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRWb2xEZXBzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIwNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVm9sVHlwZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIwNS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFZvbFR5cGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjA2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Wb2xNYWluXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjA3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sTWFpblwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMDgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblZvbFRvcGljXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVm9sVG9waWNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjBBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sU3VidG9waWNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sUmVmXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwQy8qOjpdKi86IHsgLyogbjpcIkJydFZvbE51bVwiICovIH0sXG5cdC8qOjpbKi8weDAyMEQvKjo6XSovOiB7IC8qIG46XCJCcnRWb2xFcnJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjBFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Vm9sU3RyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIwRi8qOjpdKi86IHsgLyogbjpcIkJydFZvbEJvb2xcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DYWxjQ2hhaW4kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjExLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2FsY0NoYWluJFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMTIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRTdGF0ZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNvcnRTdGF0ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRDb25kXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU29ydENvbmRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9va1Byb3RlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjE3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIxOC8qOjpdKi86IHsgLyogbjpcIkJydFJhbmdlUHJvdGVjdGlvblwiICovIH0sXG5cdC8qOjpbKi8weDAyMTkvKjo6XSovOiB7IC8qIG46XCJCcnRQaG9uZXRpY0luZm9cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1R4dFdpelwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIxQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEVDVHh0V2l6XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIxQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUV0ZsZEluZm9Mc3RcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMUQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1RXRmxkSW5mb0xzdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMUUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVHdGbGRJbmZvXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjI0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVNoYXJpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0T2xlU2l6ZVwiICovIH0sXG5cdC8qOjpbKi8weDAyMjYvKjo6XSovOiB7IC8qIG46XCJCcnREcmF3aW5nXCIsICovIGY6cGFyc2VfUmVsSUQgfSxcblx0Lyo6OlsqLzB4MDIyNy8qOjpdKi86IHsgLyogbjpcIkJydExlZ2FjeURyYXdpbmdcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjI4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGVnYWN5RHJhd2luZ0hGXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIyOS8qOjpdKi86IHsgLyogbjpcIkJydFdlYk9wdFwiICovIH0sXG5cdC8qOjpbKi8weDAyMkEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldlYlB1Ykl0ZW1zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjJCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV2ViUHViSXRlbXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjJDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5XZWJQdWJJdGVtXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV2ViUHViSXRlbVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMkUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIyRi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyMzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyMzEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDIzMi8qOjpdKi86IHsgLyogbjpcIkJydEJrSGltXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIzNC8qOjpdKi86IHsgLyogbjpcIkJydENvbG9yXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDIzNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luSW5kZXhlZENvbG9yc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzNi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEluZGV4ZWRDb2xvcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5NUlVDb2xvcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyM0EvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNUlVDb2xvcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TVJVQ29sb3JcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjNELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EVmFsc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDIzRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZERWYWxzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI0MS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDIvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lVmFsdWVTdGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDMvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lVmFsdWVFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwTmFtZU51bVwiICovIH0sXG5cdC8qOjpbKi8weDAyNDUvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lRXJyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Ni8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVTdFwiICovIH0sXG5cdC8qOjpbKi8weDAyNDcvKjo6XSovOiB7IC8qIG46XCJCcnRTdXBOYW1lTmlsXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0OC8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVCb29sXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0OS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVGbWxhXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0QS8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVCaXRzXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI0Qi8qOjpdKi86IHsgLyogbjpcIkJydFN1cE5hbWVFbmRcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjRDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3VwQm9va1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNEQvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsU21hcnRUYWdQcm9wZXJ0eVwiICovIH0sXG5cdC8qOjpbKi8weDAyNEUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTbWFydFRhZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI0Ri8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxTbWFydFRhZ1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNTAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTbWFydFRhZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDZWxsU21hcnRUYWdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Mi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU21hcnRUYWdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjUzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU21hcnRUYWdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1NC8qOjpdKi86IHsgLyogbjpcIkJydFNtYXJ0VGFnVHlwZVwiICovIH0sXG5cdC8qOjpbKi8weDAyNTUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNtYXJ0VGFnVHlwZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbWFydFRhZ1R5cGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Ny8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjU4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hGaWx0ZXJzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hGSUxURVJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEZpbHRlclwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNUIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZpbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjVDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRmlsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DZWxsV2F0Y2hlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI1RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxXYXRjaGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI1Ri8qOjpdKi86IHsgLyogbjpcIkJydENlbGxXYXRjaFwiICovIH0sXG5cdC8qOjpbKi8weDAyNjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNSRXJyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENSRXJyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjIvKjo6XSovOiB7IC8qIG46XCJCcnRDcmFzaFJlY0VyclwiICovIH0sXG5cdC8qOjpbKi8weDAyNjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZvbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRm9udHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjY1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Cb3JkZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQm9yZGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNjcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZtdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRGbXRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI2OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbFhGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI2QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxYRnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyNkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdHlsZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjcxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmlnTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDAyNzIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxTdHlsZVhGc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3My8qOjpdKi86IHsgLyogbjpcIkJydEVuZENlbGxTdHlsZVhGc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyNzQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjc1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjc2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50QXV0aG9yc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDI3Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbW1lbnRBdXRob3JzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI3OC8qOjpdKi86IHsgLyogbjpcIkJydENvbW1lbnRBdXRob3JcIiwgKi8gZjpwYXJzZV9CcnRDb21tZW50QXV0aG9yIH0sXG5cdC8qOjpbKi8weDAyNzkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbW1lbnRMaXN0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjdBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudExpc3RcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjdCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db21tZW50XCIsICovIFQ6MSwgZjpwYXJzZV9CcnRCZWdpbkNvbW1lbnR9LFxuXHQvKjo6WyovMHgwMjdDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29tbWVudFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyN0QvKjo6XSovOiB7IC8qIG46XCJCcnRDb21tZW50VGV4dFwiLCAqLyBmOnBhcnNlX0JydENvbW1lbnRUZXh0IH0sXG5cdC8qOjpbKi8weDAyN0UvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk9sZU9iamVjdHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyN0YvKjo6XSovOiB7IC8qIG46XCJCcnRPbGVPYmplY3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjgwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kT2xlT2JqZWN0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyODEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4cnVsZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTeFJ1bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI4My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQWN0aXZlWENvbnRyb2xzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMjg0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QWN0aXZlWFwiICovIH0sXG5cdC8qOjpbKi8weDAyODUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRBY3RpdmVYQ29udHJvbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjg2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0RTRFRDRU1lbWJlcnNTb3J0QnlcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNlbGxJZ25vcmVFQ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyODkvKjo6XSovOiB7IC8qIG46XCJCcnRDZWxsSWdub3JlRUNcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjhBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbElnbm9yZUVDc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOEIvKjo6XSovOiB7IC8qIG46XCJCcnRDc1Byb3BcIiwgKi8gZjpwYXJzZV9CcnRDc1Byb3AgfSxcblx0Lyo6OlsqLzB4MDI4Qy8qOjpdKi86IHsgLyogbjpcIkJydENzUGFnZVNldHVwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI4RC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVXNlckNzVmlld3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyQ3NWaWV3c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOEYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblVzZXJDc1ZpZXdcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTAvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRVc2VyQ3NWaWV3XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDI5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUGNkU0ZDSUVudHJpZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RTRkNJRW50cmllc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDAyOTMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RTRkNJRW50cnlcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjk0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5MaXN0UGFydHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTUvKjo6XSovOiB7IC8qIG46XCJCcnRMaXN0UGFydFwiICovIH0sXG5cdC8qOjpbKi8weDAyOTYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRMaXN0UGFydHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjk3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRDYWxjUHJvcFwiICovIH0sXG5cdC8qOjpbKi8weDAyOTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkZuR3JvdXBcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDAyOTkvKjo6XSovOiB7IC8qIG46XCJCcnRGbkdyb3VwXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5QS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEZuR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwMjlCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3VwQWRkaW5cIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hURE1QT3JkZXJcIiAqLyB9LFxuXHQvKjo6WyovMHgwMjlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3NQcm90ZWN0aW9uXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDI5Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luV3NTb3J0TWFwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMkEwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kV3NTb3J0TWFwXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDJBMS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUlJTb3J0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwMkEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUlJTb3J0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDJBMy8qOjpdKi86IHsgLyogbjpcIkJydFJSU29ydEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RmlsZVNoYXJpbmdJc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Qm9va1Byb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2hlZXRQcm90ZWN0aW9uSXNvXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDJBNy8qOjpdKi86IHsgLyogbjpcIkJydENzUHJvdGVjdGlvbklzb1wiICovIH0sXG5cdC8qOjpbKi8weDAyQTgvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByb3RlY3Rpb25Jc29cIiAqLyB9LFxuXHQvKjo6WyovMHgwMkE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RFZhbExpc3RcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UndEZXNjZW50XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwMS8qOjpdKi86IHsgLyogbjpcIkJydEtub3duRm9udHNcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDAyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWFR1cGxlU2V0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDAzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hUdXBsZVNldFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MDQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXRIZWFkZXJcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MDUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0SGVhZGVyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwNi8qOjpdKi86IHsgLyogbjpcIkJydFNYVHVwbGVTZXRIZWFkZXJJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hUdXBsZVNldERhdGFcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MDgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0RGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVHVwbGVTZXRSb3dcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFR1cGxlU2V0Um93XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQwQi8qOjpdKi86IHsgLyogbjpcIkJydFNYVHVwbGVTZXRSb3dJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwQy8qOjpdKi86IHsgLyogbjpcIkJydE5hbWVFeHRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDBELyo6Ol0qLzogeyAvKiBuOlwiQnJ0UENESDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQwRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDBGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUENEQ2FsY01lbTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQxMC8qOjpdKi86IHsgLyogbjpcIkJydFNYVEgxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MTEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNwYXJrbGluZUdyb3VwXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDEyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3BhcmtsaW5lR3JvdXBcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDEzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3BhcmtsaW5lXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxNC8qOjpdKi86IHsgLyogbjpcIkJydFNYREkxNFwiICovIH0sXG5cdC8qOjpbKi8weDA0MTUvKjo6XSovOiB7IC8qIG46XCJCcnRXc0ZtdEluZm9FeDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ29uZGl0aW9uYWxGb3JtYXR0aW5nMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MTcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDb25kaXRpb25hbEZvcm1hdHRpbmcxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MTgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNGUnVsZTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDE5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ0ZSdWxlMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDFBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZWTzE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQxQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRGF0YWJhcjE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5JY29uU2V0MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MUQvKjo6XSovOiB7IC8qIG46XCJCcnREVmFsMTRcIiwgKi8gZjogcGFyc2VfQnJ0RFZhbDE0IH0sXG5cdC8qOjpbKi8weDA0MUUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRWYWxzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MUYvKjo6XSovOiB7IC8qIG46XCJCcnRDb2xvcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQyMC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU3BhcmtsaW5lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNwYXJrbGluZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TcGFya2xpbmVHcm91cHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTcGFya2xpbmVHcm91cHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDI1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hWRDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQyNi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hWaWV3MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MjcvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWFZpZXcxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MjgvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYVmlldzE2XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDI5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hWaWV3MTZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDJBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QQ0QxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQyQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBDRDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyQy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRXh0Q29ubjE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRXh0Q29ubjE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQyRS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MkYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUlEc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzMy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0MzUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlRGVmXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDM2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVEZWZcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDM3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJzRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0MzgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJzRXhcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDM5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJFeFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQzQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckV4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzQi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDNDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQzRC8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlUGl2b3RUYWJsZXNcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDNFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZU9sYXBJbXBsXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDNGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVPbGFwSW1wbFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxzRGF0YVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0MS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlTGV2ZWxzRGF0YVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlTGV2ZWxEYXRhXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVMZXZlbERhdGFcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDQ0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZVNpUmFuZ2VzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVTaVJhbmdlc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDYvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlU2lSYW5nZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ0Ny8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlckNhY2hlU2lSYW5nZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NDgvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZU9sYXBJdGVtXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ0OS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVTZWxlY3Rpb25zXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDRBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U2xpY2VyQ2FjaGVTZWxlY3Rpb25cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyQ2FjaGVTZWxlY3Rpb25zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ0Qy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyQ2FjaGVOYXRpdmVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NEQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZU5hdGl2ZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NEUvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZU5hdGl2ZUl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwNDRGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmFuZ2VQcm90ZWN0aW9uSXNvMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2VsbElnbm9yZUVDMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0TGlzdDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ1OC8qOjpdKi86IHsgLyogbjpcIkJydENGSWNvblwiICovIH0sXG5cdC8qOjpbKi8weDA0NTkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNsaWNlckNhY2hlc1Bpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ1Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2Vyc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDVELyo6Ol0qLzogeyAvKiBuOlwiQnJ0V2JQcm9wMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDVFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEVkaXRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NUYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWEVkaXRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDYwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWEVkaXRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDYxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hFZGl0c1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NjIvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ2hhbmdlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDYzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU1hDaGFuZ2VcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDY0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TWENoYW5nZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENoYW5nZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDY2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0U1hUdXBsZUl0ZW1zXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ2OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NjkvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJTdHlsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NkEvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJTdHlsZUVsZW1lbnRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDZCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TdHlsZVNoZWV0RXh0MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NkMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTdHlsZVNoZWV0RXh0MTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDZELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TbGljZXJDYWNoZXNQaXZvdENhY2hlSURcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NkUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTbGljZXJDYWNoZXNQaXZvdENhY2hlSURcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDZGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Db25kaXRpb25hbEZvcm1hdHRpbmdzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDcwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ29uZGl0aW9uYWxGb3JtYXR0aW5nc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBDRENhbGNNZW1FeHRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtRXh0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3My8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUENEQ2FsY01lbXNFeHRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0NzQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQQ0RDYWxjTWVtc0V4dFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0NzUvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RGaWVsZDE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ3Ni8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDc3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU2xpY2VyU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ3OC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU2xpY2VyU3R5bGVFbGVtZW50c1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3OS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNsaWNlclN0eWxlRWxlbWVudHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDdBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q0ZSdWxlRXh0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ3Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luU1hDb25kRm10MTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0N0MvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTWENvbmRGbXQxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0N0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNYQ29uZEZtdHMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ3RS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFNYQ29uZEZtdHMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblNvcnRDb25kMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0ODEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRTb3J0Q29uZDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERWYWxzMTRcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwNDgzLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kSWNvblNldDE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4NC8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFiYXIxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODUvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkNvbG9yU2NhbGUxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4Ni8qOjpdKi86IHsgLyogbjpcIkJydEVuZENvbG9yU2NhbGUxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4cnVsZXMxNFwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDQ4OC8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4cnVsZXMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0ODkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSdWxlMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUnVsZTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Qi8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGaWx0ZXJzMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEMvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlcnMxNFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA0OEQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBSRmlsdGVyMTRcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA0OEUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRQUkZpbHRlcjE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ4Ri8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUFJGSXRlbTE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDkwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUFJGSXRlbTE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5MS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ2VsbElnbm9yZUVDczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDkyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kQ2VsbElnbm9yZUVDczE0XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5My8qOjpdKi86IHsgLyogbjpcIkJydER4ZjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5NC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRHhGMTRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDk1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRHhmMTRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDQ5OS8qOjpdKi86IHsgLyogbjpcIkJydEZpbHRlcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3VzdG9tRmlsdGVyczE0XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwNDlDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q3VzdG9tRmlsdGVyMTRcIiAqLyB9LFxuXHQvKjo6WyovMHgwNDlELyo6Ol0qLzogeyAvKiBuOlwiQnJ0SWNvbkZpbHRlcjE0XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDQ5RS8qOjpdKi86IHsgLyogbjpcIkJydFBpdm90Q2FjaGVDb25uZWN0aW9uTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRlY291cGxlZFBpdm90Q2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MDEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREZWNvdXBsZWRQaXZvdENhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwMi8qOjpdKi86IHsgLyogbjpcIkJydERlY291cGxlZFBpdm90Q2FjaGVJRFwiICovIH0sXG5cdC8qOjpbKi8weDA4MDMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblBpdm90VGFibGVSZWZzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODA0Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUGl2b3RUYWJsZVJlZnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODA1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGl2b3RUYWJsZVJlZlwiICovIH0sXG5cdC8qOjpbKi8weDA4MDYvKjo6XSovOiB7IC8qIG46XCJCcnRTbGljZXJDYWNoZUJvb2tQaXZvdFRhYmxlc1wiICovIH0sXG5cdC8qOjpbKi8weDA4MDcvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblN4dmNlbGxzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODA4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kU3h2Y2VsbHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODA5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5TeFJvd1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgwQS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFN4Um93XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgwQy8qOjpdKi86IHsgLyogbjpcIkJydFBjZENhbGNNZW0xNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MTMvKjo6XSovOiB7IC8qIG46XCJCcnRRc2kxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbldlYkV4dGVuc2lvbnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MTUvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRXZWJFeHRlbnNpb25zXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgxNi8qOjpdKi86IHsgLyogbjpcIkJydFdlYkV4dGVuc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDA4MTcvKjo6XSovOiB7IC8qIG46XCJCcnRBYnNQYXRoMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODE4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5QaXZvdFRhYmxlVUlTZXR0aW5nc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgxOS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFBpdm90VGFibGVVSVNldHRpbmdzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgxQi8qOjpdKi86IHsgLyogbjpcIkJydFRhYmxlU2xpY2VyQ2FjaGVJRHNcIiAqLyB9LFxuXHQvKjo6WyovMHgwODFDLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGFibGVTbGljZXJDYWNoZUlEXCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgxRC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGFibGVTbGljZXJDYWNoZVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgxRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRhYmxlU2xpY2VyQ2FjaGVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODFGLyo6Ol0qLzogeyAvKiBuOlwiQnJ0U3hGaWx0ZXIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MjAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lQ2FjaGVQaXZvdENhY2hlSURzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODIxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODIyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0VGltZWxpbmVDYWNoZVBpdm90Q2FjaGVJRFwiICovIH0sXG5cdC8qOjpbKi8weDA4MjMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lQ2FjaGVJRHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUNhY2hlSURzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyNS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVDYWNoZUlEXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODI2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVDYWNoZUlEXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVzRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MjgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZXNFeFwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MjkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lRXhcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4MkEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRUaW1lbGluZUV4XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgyQi8qOjpdKi86IHsgLyogbjpcIkJydFdvcmtCb29rUHIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4MkMvKjo6XSovOiB7IC8qIG46XCJCcnRQQ0RIMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODJELyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODJFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4MkYvKjo6XSovOiB7IC8qIG46XCJCcnRUaW1lbGluZVN0eWxlRWxlbWVudFwiICovIH0sXG5cdC8qOjpbKi8weDA4MzAvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblRpbWVsaW5lU3R5bGVzaGVldEV4dDE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODMxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZXNoZWV0RXh0MTVcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODMyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5UaW1lbGluZVN0eWxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzMy8qOjpdKi86IHsgLyogbjpcIkJydEVuZFRpbWVsaW5lU3R5bGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzNC8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luVGltZWxpbmVTdHlsZUVsZW1lbnRzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODM1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kVGltZWxpbmVTdHlsZUVsZW1lbnRzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzNi8qOjpdKi86IHsgLyogbjpcIkJydER4ZjE1XCIgKi8gfSxcblx0Lyo6OlsqLzB4MDgzNy8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRHhmczE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODM4Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRHhmczE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDgzOS8qOjpdKi86IHsgLyogbjpcIkJydFNsaWNlckNhY2hlSGlkZUl0ZW1zV2l0aE5vRGF0YVwiICovIH0sXG5cdC8qOjpbKi8weDA4M0EvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkl0ZW1VbmlxdWVOYW1lc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzQi8qOjpdKi86IHsgLyogbjpcIkJydEVuZEl0ZW1VbmlxdWVOYW1lc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4M0MvKjo6XSovOiB7IC8qIG46XCJCcnRJdGVtVW5pcXVlTmFtZVwiICovIH0sXG5cdC8qOjpbKi8weDA4M0QvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkV4dENvbm4xNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDgzRS8qOjpdKi86IHsgLyogbjpcIkJydEVuZEV4dENvbm4xNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4M0YvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbk9sZWRiUHIxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0MC8qOjpdKi86IHsgLyogbjpcIkJydEVuZE9sZWRiUHIxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDEvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkRhdGFGZWVkUHIxNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Mi8qOjpdKi86IHsgLyogbjpcIkJydEVuZERhdGFGZWVkUHIxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDMvKjo6XSovOiB7IC8qIG46XCJCcnRUZXh0UHIxNVwiICovIH0sXG5cdC8qOjpbKi8weDA4NDQvKjo6XSovOiB7IC8qIG46XCJCcnRSYW5nZVByMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RGJDb21tYW5kMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYlRhYmxlczE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODQ3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRGJUYWJsZXMxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NDgvKjo6XSovOiB7IC8qIG46XCJCcnREYlRhYmxlMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODQ5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EYXRhTW9kZWxcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NEEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmREYXRhTW9kZWxcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODRCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRhYmxlc1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg0Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsVGFibGVzXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg0RC8qOjpdKi86IHsgLyogbjpcIkJydE1vZGVsVGFibGVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODRFLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFJlbGF0aW9uc2hpcHNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NEYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFJlbGF0aW9uc2hpcHNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODUwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0TW9kZWxSZWxhdGlvbnNoaXBcIiAqLyB9LFxuXHQvKjo6WyovMHgwODUxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5FQ1R4dFdpejE1XCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgwODUyLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kRUNUeHRXaXoxNVwiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDA4NTMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpbkVDVFdGbGRJbmZvTHN0MTVcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NTQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRFQ1RXRmxkSW5mb0xzdDE1XCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1NS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luRUNUV0ZsZEluZm8xNVwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1Ni8qOjpdKi86IHsgLyogbjpcIkJydEZpZWxkTGlzdEFjdGl2ZUl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgwODU3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UGl2b3RDYWNoZUlkVmVyc2lvblwiICovIH0sXG5cdC8qOjpbKi8weDA4NTgvKjo6XSovOiB7IC8qIG46XCJCcnRTWERJMTVcIiAqLyB9LFxuXHQvKjo6WyovMHgwODU5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZ3NcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDA4NUEvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRNb2RlbFRpbWVHcm91cGluZ3NcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgwODVCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5Nb2RlbFRpbWVHcm91cGluZ1wiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MDg1Qy8qOjpdKi86IHsgLyogbjpcIkJydEVuZE1vZGVsVGltZUdyb3VwaW5nXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MDg1RC8qOjpdKi86IHsgLyogbjpcIkJydE1vZGVsVGltZUdyb3VwaW5nQ2FsY0NvbFwiICovIH0sXG5cdC8qOjpbKi8weDBDMDAvKjo6XSovOiB7IC8qIG46XCJCcnRVaWRcIiAqLyB9LFxuXHQvKjo6WyovMHgwQzAxLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmV2aXNpb25QdHJcIiAqLyB9LFxuXHQvKjo6WyovMHgxMDAwLyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5EeW5hbWljQXJyYXlQclwiLCAqLyBUOjEgfSxcblx0Lyo6OlsqLzB4MTAwMS8qOjpdKi86IHsgLyogbjpcIkJydEVuZER5bmFtaWNBcnJheVByXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTM4QS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luUmljaFZhbHVlQmxvY2tcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzOEIvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoVmFsdWVCbG9ja1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRDkvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hGaWx0ZXJzXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0RBLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaEZpbHRlcnNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0RCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzREMvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hGaWx0ZXJDb2x1bW5cIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzREQvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRSaWNoRmlsdGVyQ29sdW1uXCIsICovIFQ6LTEgfSxcblx0Lyo6OlsqLzB4MTNERS8qOjpdKi86IHsgLyogbjpcIkJydEJlZ2luQ3VzdG9tUmljaEZpbHRlcnNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzREYvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDdXN0b21SaWNoRmlsdGVyc1wiLCAqLyBUOi0xIH0sXG5cdC8qOjpbKi8weDEzRTAvKjo6XSovOiB7IC8qIG46XCJCcnRDdXN0b21SaWNoRmlsdGVyXCIgKi8gfSxcblx0Lyo6OlsqLzB4MTNFMS8qOjpdKi86IHsgLyogbjpcIkJydFRvcDEwUmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzRTIvKjo6XSovOiB7IC8qIG46XCJCcnREeW5hbWljUmljaEZpbHRlclwiICovIH0sXG5cdC8qOjpbKi8weDEzRTQvKjo6XSovOiB7IC8qIG46XCJCcnRCZWdpblJpY2hTb3J0Q29uZGl0aW9uXCIsICovIFQ6MSB9LFxuXHQvKjo6WyovMHgxM0U1Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0RW5kUmljaFNvcnRDb25kaXRpb25cIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0U2Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0UmljaEZpbHRlckRhdGVHcm91cEl0ZW1cIiAqLyB9LFxuXHQvKjo6WyovMHgxM0U3Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0QmVnaW5DYWxjRmVhdHVyZXNcIiwgKi8gVDoxIH0sXG5cdC8qOjpbKi8weDEzRTgvKjo6XSovOiB7IC8qIG46XCJCcnRFbmRDYWxjRmVhdHVyZXNcIiwgKi8gVDotMSB9LFxuXHQvKjo6WyovMHgxM0U5Lyo6Ol0qLzogeyAvKiBuOlwiQnJ0Q2FsY0ZlYXR1cmVcIiAqLyB9LFxuXHQvKjo6WyovMHgxM0VCLyo6Ol0qLzogeyAvKiBuOlwiQnJ0RXh0ZXJuYWxMaW5rc1ByXCIgKi8gfSxcblx0Lyo6OlsqLzB4RkZGRi8qOjpdKi86IHsgbjpcIlwiIH1cbn07XG5cbi8qIFtNUy1YTFNdIDIuMyBSZWNvcmQgRW51bWVyYXRpb24gKGFuZCBvdGhlciBzb3VyY2VzKSAqL1xudmFyIFhMU1JlY29yZEVudW0gPSB7XG5cdC8qIFtNUy1YTFNdIDIuMyBSZWNvcmQgRW51bWVyYXRpb24gMjAyMS0wOC0xNyAqL1xuXHQvKjo6WyovMHgwMDA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDAwYS8qOjpdKi86IHsgLyogbjpcIkVPRlwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDAwYy8qOjpdKi86IHsgLyogbjpcIkNhbGNDb3VudFwiLCAqLyBmOnBhcnNldWludDE2IH0sIC8vXG5cdC8qOjpbKi8weDAwMGQvKjo6XSovOiB7IC8qIG46XCJDYWxjTW9kZVwiLCAqLyBmOnBhcnNldWludDE2IH0sIC8vXG5cdC8qOjpbKi8weDAwMGUvKjo6XSovOiB7IC8qIG46XCJDYWxjUHJlY2lzaW9uXCIsICovIGY6cGFyc2Vib29sIH0sIC8vXG5cdC8qOjpbKi8weDAwMGYvKjo6XSovOiB7IC8qIG46XCJDYWxjUmVmTW9kZVwiLCAqLyBmOnBhcnNlYm9vbCB9LCAvL1xuXHQvKjo6WyovMHgwMDEwLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY0RlbHRhXCIsICovIGY6cGFyc2VfWG51bSB9LCAvL1xuXHQvKjo6WyovMHgwMDExLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY0l0ZXJcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDAxMi8qOjpdKi86IHsgLyogbjpcIlByb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAxMy8qOjpdKi86IHsgLyogbjpcIlBhc3N3b3JkXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDAxNC8qOjpdKi86IHsgLyogbjpcIkhlYWRlclwiLCAqLyBmOnBhcnNlX1hMSGVhZGVyRm9vdGVyIH0sXG5cdC8qOjpbKi8weDAwMTUvKjo6XSovOiB7IC8qIG46XCJGb290ZXJcIiwgKi8gZjpwYXJzZV9YTEhlYWRlckZvb3RlciB9LFxuXHQvKjo6WyovMHgwMDE3Lyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuU2hlZXRcIiwgKi8gZjpwYXJzZV9FeHRlcm5TaGVldCB9LFxuXHQvKjo6WyovMHgwMDE4Lyo6Ol0qLzogeyAvKiBuOlwiTGJsXCIsICovIGY6cGFyc2VfTGJsIH0sXG5cdC8qOjpbKi8weDAwMTkvKjo6XSovOiB7IC8qIG46XCJXaW5Qcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwMWEvKjo6XSovOiB7IC8qIG46XCJWZXJ0aWNhbFBhZ2VCcmVha3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAxYi8qOjpdKi86IHsgLyogbjpcIkhvcml6b250YWxQYWdlQnJlYWtzXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMWMvKjo6XSovOiB7IC8qIG46XCJOb3RlXCIsICovIGY6cGFyc2VfTm90ZSB9LFxuXHQvKjo6WyovMHgwMDFkLyo6Ol0qLzogeyAvKiBuOlwiU2VsZWN0aW9uXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMjIvKjo6XSovOiB7IC8qIG46XCJEYXRlMTkwNFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDIzLyo6Ol0qLzogeyAvKiBuOlwiRXh0ZXJuTmFtZVwiLCAqLyBmOnBhcnNlX0V4dGVybk5hbWUgfSxcblx0Lyo6OlsqLzB4MDAyNi8qOjpdKi86IHsgLyogbjpcIkxlZnRNYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyNy8qOjpdKi86IHsgLyogbjpcIlJpZ2h0TWFyZ2luXCIsICovIGY6cGFyc2VfWG51bSB9LCAvLyAqXG5cdC8qOjpbKi8weDAwMjgvKjo6XSovOiB7IC8qIG46XCJUb3BNYXJnaW5cIiwgKi8gZjpwYXJzZV9YbnVtIH0sIC8vICpcblx0Lyo6OlsqLzB4MDAyOS8qOjpdKi86IHsgLyogbjpcIkJvdHRvbU1hcmdpblwiLCAqLyBmOnBhcnNlX1hudW0gfSwgLy8gKlxuXHQvKjo6WyovMHgwMDJhLyo6Ol0qLzogeyAvKiBuOlwiUHJpbnRSb3dDb2xcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDAyYi8qOjpdKi86IHsgLyogbjpcIlByaW50R3JpZFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDJmLyo6Ol0qLzogeyAvKiBuOlwiRmlsZVBhc3NcIiwgKi8gZjpwYXJzZV9GaWxlUGFzcyB9LFxuXHQvKjo6WyovMHgwMDMxLyo6Ol0qLzogeyAvKiBuOlwiRm9udFwiLCAqLyBmOnBhcnNlX0ZvbnQgfSxcblx0Lyo6OlsqLzB4MDAzMy8qOjpdKi86IHsgLyogbjpcIlByaW50U2l6ZVwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwM2MvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDNkLyo6Ol0qLzogeyAvKiBuOlwiV2luZG93MVwiLCAqLyBmOnBhcnNlX1dpbmRvdzEgfSxcblx0Lyo6OlsqLzB4MDA0MC8qOjpdKi86IHsgLyogbjpcIkJhY2t1cFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMDQxLyo6Ol0qLzogeyAvKiBuOlwiUGFuZVwiLCAqLyBmOnBhcnNlX1BhbmUgfSxcblx0Lyo6OlsqLzB4MDA0Mi8qOjpdKi86IHsgLyogbjpcIkNvZGVQYWdlXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA0ZC8qOjpdKi86IHsgLyogbjpcIlBsc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUwLyo6Ol0qLzogeyAvKiBuOlwiRENvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUxLyo6Ol0qLzogeyAvKiBuOlwiRENvblJlZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDUyLyo6Ol0qLzogeyAvKiBuOlwiRENvbk5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1NS8qOjpdKi86IHsgLyogbjpcIkRlZkNvbFdpZHRoXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA1OS8qOjpdKi86IHsgLyogbjpcIlhDVFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVhLyo6Ol0qLzogeyAvKiBuOlwiQ1JOXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNWIvKjo6XSovOiB7IC8qIG46XCJGaWxlU2hhcmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVjLyo6Ol0qLzogeyAvKiBuOlwiV3JpdGVBY2Nlc3NcIiwgKi8gZjpwYXJzZV9Xcml0ZUFjY2VzcyB9LFxuXHQvKjo6WyovMHgwMDVkLyo6Ol0qLzogeyAvKiBuOlwiT2JqXCIsICovIGY6cGFyc2VfT2JqIH0sXG5cdC8qOjpbKi8weDAwNWUvKjo6XSovOiB7IC8qIG46XCJVbmNhbGNlZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDVmLyo6Ol0qLzogeyAvKiBuOlwiQ2FsY1NhdmVSZWNhbGNcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDA2MC8qOjpdKi86IHsgLyogbjpcIlRlbXBsYXRlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNjEvKjo6XSovOiB7IC8qIG46XCJJbnRsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwNjMvKjo6XSovOiB7IC8qIG46XCJPYmpQcm90ZWN0XCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwN2QvKjo6XSovOiB7IC8qIG46XCJDb2xJbmZvXCIsICovIGY6cGFyc2VfQ29sSW5mbyB9LFxuXHQvKjo6WyovMHgwMDgwLyo6Ol0qLzogeyAvKiBuOlwiR3V0c1wiLCAqLyBmOnBhcnNlX0d1dHMgfSxcblx0Lyo6OlsqLzB4MDA4MS8qOjpdKi86IHsgLyogbjpcIldzQm9vbFwiLCAqLyBmOnBhcnNlX1dzQm9vbCB9LFxuXHQvKjo6WyovMHgwMDgyLyo6Ol0qLzogeyAvKiBuOlwiR3JpZFNldFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwODMvKjo6XSovOiB7IC8qIG46XCJIQ2VudGVyXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwODQvKjo6XSovOiB7IC8qIG46XCJWQ2VudGVyXCIsICovIGY6cGFyc2Vib29sIH0sXG5cdC8qOjpbKi8weDAwODUvKjo6XSovOiB7IC8qIG46XCJCb3VuZFNoZWV0OFwiLCAqLyBmOnBhcnNlX0JvdW5kU2hlZXQ4IH0sXG5cdC8qOjpbKi8weDAwODYvKjo6XSovOiB7IC8qIG46XCJXcml0ZVByb3RlY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA4Yy8qOjpdKi86IHsgLyogbjpcIkNvdW50cnlcIiwgKi8gZjpwYXJzZV9Db3VudHJ5IH0sXG5cdC8qOjpbKi8weDAwOGQvKjo6XSovOiB7IC8qIG46XCJIaWRlT2JqXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDA5MC8qOjpdKi86IHsgLyogbjpcIlNvcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Mi8qOjpdKi86IHsgLyogbjpcIlBhbGV0dGVcIiwgKi8gZjpwYXJzZV9QYWxldHRlIH0sXG5cdC8qOjpbKi8weDAwOTcvKjo6XSovOiB7IC8qIG46XCJTeW5jXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTgvKjo6XSovOiB7IC8qIG46XCJMUHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5OS8qOjpdKi86IHsgLyogbjpcIkR4R0NvbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDlhLyo6Ol0qLzogeyAvKiBuOlwiRm5Hcm91cE5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Yi8qOjpdKi86IHsgLyogbjpcIkZpbHRlck1vZGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5Yy8qOjpdKi86IHsgLyogbjpcIkJ1aWx0SW5Gbkdyb3VwQ291bnRcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMDlkLyo6Ol0qLzogeyAvKiBuOlwiQXV0b0ZpbHRlckluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5ZS8qOjpdKi86IHsgLyogbjpcIkF1dG9GaWx0ZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBhMC8qOjpdKi86IHsgLyogbjpcIlNjbFwiLCAqLyBmOnBhcnNlX1NjbCB9LFxuXHQvKjo6WyovMHgwMGExLyo6Ol0qLzogeyAvKiBuOlwiU2V0dXBcIiwgKi8gZjpwYXJzZV9TZXR1cCB9LFxuXHQvKjo6WyovMHgwMGFlLyo6Ol0qLzogeyAvKiBuOlwiU2Nlbk1hblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGFmLyo6Ol0qLzogeyAvKiBuOlwiU0NFTkFSSU9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiMC8qOjpdKi86IHsgLyogbjpcIlN4Vmlld1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGIxLyo6Ol0qLzogeyAvKiBuOlwiU3h2ZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGIyLyo6Ol0qLzogeyAvKiBuOlwiU1hWSVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGI0Lyo6Ol0qLzogeyAvKiBuOlwiU3hJdmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiNS8qOjpdKi86IHsgLyogbjpcIlNYTElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiNi8qOjpdKi86IHsgLyogbjpcIlNYUElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiOC8qOjpdKi86IHsgLyogbjpcIkRvY1JvdXRlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYjkvKjo6XSovOiB7IC8qIG46XCJSZWNpcE5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBiZC8qOjpdKi86IHsgLyogbjpcIk11bFJrXCIsICovIGY6cGFyc2VfTXVsUmsgfSxcblx0Lyo6OlsqLzB4MDBiZS8qOjpdKi86IHsgLyogbjpcIk11bEJsYW5rXCIsICovIGY6cGFyc2VfTXVsQmxhbmsgfSxcblx0Lyo6OlsqLzB4MDBjMS8qOjpdKi86IHsgLyogbjpcIk1tc1wiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDBjNS8qOjpdKi86IHsgLyogbjpcIlNYRElcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjNi8qOjpdKi86IHsgLyogbjpcIlNYREJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjNy8qOjpdKi86IHsgLyogbjpcIlNYRkRCXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYzgvKjo6XSovOiB7IC8qIG46XCJTWERCQlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGM5Lyo6Ol0qLzogeyAvKiBuOlwiU1hOdW1cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjYS8qOjpdKi86IHsgLyogbjpcIlN4Qm9vbFwiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMGNiLyo6Ol0qLzogeyAvKiBuOlwiU3hFcnJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjYy8qOjpdKi86IHsgLyogbjpcIlNYSW50XCIsICovIH0sXG5cdC8qOjpbKi8weDAwY2QvKjo6XSovOiB7IC8qIG46XCJTWFN0cmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGNlLyo6Ol0qLzogeyAvKiBuOlwiU1hEdHJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBjZi8qOjpdKi86IHsgLyogbjpcIlN4TmlsXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDAvKjo6XSovOiB7IC8qIG46XCJTWFRibFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQxLyo6Ol0qLzogeyAvKiBuOlwiU1hUQlJHSUlUTVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQyLyo6Ol0qLzogeyAvKiBuOlwiU3hUYnBnXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZDMvKjo6XSovOiB7IC8qIG46XCJPYlByb2pcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkNS8qOjpdKi86IHsgLyogbjpcIlNYU3RyZWFtSURcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkNy8qOjpdKi86IHsgLyogbjpcIkRCQ2VsbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ4Lyo6Ol0qLzogeyAvKiBuOlwiU1hSbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBkOS8qOjpdKi86IHsgLyogbjpcIlN4SXN4b3BlclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGRhLyo6Ol0qLzogeyAvKiBuOlwiQm9va0Jvb2xcIiwgKi8gZjpwYXJzZXVpbnQxNiB9LFxuXHQvKjo6WyovMHgwMGRjLyo6Ol0qLzogeyAvKiBuOlwiRGJPclBhcmFtUXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZGQvKjo6XSovOiB7IC8qIG46XCJTY2VuYXJpb1Byb3RlY3RcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDBkZS8qOjpdKi86IHsgLyogbjpcIk9sZU9iamVjdFNpemVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlMC8qOjpdKi86IHsgLyogbjpcIlhGXCIsICovIGY6cGFyc2VfWEYgfSxcblx0Lyo6OlsqLzB4MDBlMS8qOjpdKi86IHsgLyogbjpcIkludGVyZmFjZUhkclwiLCAqLyBmOnBhcnNlX0ludGVyZmFjZUhkciB9LFxuXHQvKjo6WyovMHgwMGUyLyo6Ol0qLzogeyAvKiBuOlwiSW50ZXJmYWNlRW5kXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMGUzLyo6Ol0qLzogeyAvKiBuOlwiU1hWU1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGU1Lyo6Ol0qLzogeyAvKiBuOlwiTWVyZ2VDZWxsc1wiLCAqLyBmOnBhcnNlX01lcmdlQ2VsbHMgfSxcblx0Lyo6OlsqLzB4MDBlOS8qOjpdKi86IHsgLyogbjpcIkJrSGltXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZWIvKjo6XSovOiB7IC8qIG46XCJNc29EcmF3aW5nR3JvdXBcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlYy8qOjpdKi86IHsgLyogbjpcIk1zb0RyYXdpbmdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlZC8qOjpdKi86IHsgLyogbjpcIk1zb0RyYXdpbmdTZWxlY3Rpb25cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBlZi8qOjpdKi86IHsgLyogbjpcIlBob25ldGljSW5mb1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGYwLyo6Ol0qLzogeyAvKiBuOlwiU3hSdWxlXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjEvKjo6XSovOiB7IC8qIG46XCJTWEV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjIvKjo6XSovOiB7IC8qIG46XCJTeEZpbHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmNC8qOjpdKi86IHsgLyogbjpcIlN4RFhGXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjUvKjo6XSovOiB7IC8qIG46XCJTeEl0bVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY2Lyo6Ol0qLzogeyAvKiBuOlwiU3hOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjcvKjo6XSovOiB7IC8qIG46XCJTeFNlbGVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGY4Lyo6Ol0qLzogeyAvKiBuOlwiU1hQYWlyXCIsICovIH0sXG5cdC8qOjpbKi8weDAwZjkvKjo6XSovOiB7IC8qIG46XCJTeEZtbGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDBmYi8qOjpdKi86IHsgLyogbjpcIlN4Rm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDAwZmMvKjo6XSovOiB7IC8qIG46XCJTU1RcIiwgKi8gZjpwYXJzZV9TU1QgfSxcblx0Lyo6OlsqLzB4MDBmZC8qOjpdKi86IHsgLyogbjpcIkxhYmVsU3N0XCIsICovIGY6cGFyc2VfTGFiZWxTc3QgfSxcblx0Lyo6OlsqLzB4MDBmZi8qOjpdKi86IHsgLyogbjpcIkV4dFNTVFwiLCAqLyBmOnBhcnNlX0V4dFNTVCB9LFxuXHQvKjo6WyovMHgwMTAwLyo6Ol0qLzogeyAvKiBuOlwiU1hWREV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAxMDMvKjo6XSovOiB7IC8qIG46XCJTWEZvcm11bGFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDEyMi8qOjpdKi86IHsgLyogbjpcIlNYREJFeFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTM3Lyo6Ol0qLzogeyAvKiBuOlwiUlJESW5zRGVsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxMzgvKjo6XSovOiB7IC8qIG46XCJSUkRIZWFkXCIsICovIH0sXG5cdC8qOjpbKi8weDAxM2IvKjo6XSovOiB7IC8qIG46XCJSUkRDaGdDZWxsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxM2QvKjo6XSovOiB7IC8qIG46XCJSUlRhYklkXCIsICovIGY6cGFyc2V1aW50MTZhIH0sXG5cdC8qOjpbKi8weDAxM2UvKjo6XSovOiB7IC8qIG46XCJSUkRSZW5TaGVldFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTNmLyo6Ol0qLzogeyAvKiBuOlwiUlJTb3J0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNDAvKjo6XSovOiB7IC8qIG46XCJSUkRNb3ZlXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGEvKjo6XSovOiB7IC8qIG46XCJSUkZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTRiLyo6Ol0qLzogeyAvKiBuOlwiUlJBdXRvRm10XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGQvKjo6XSovOiB7IC8qIG46XCJSUkluc2VydFNoXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNGUvKjo6XSovOiB7IC8qIG46XCJSUkRNb3ZlQmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE0Zi8qOjpdKi86IHsgLyogbjpcIlJSRE1vdmVFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1MC8qOjpdKi86IHsgLyogbjpcIlJSREluc0RlbEJlZ2luXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTEvKjo6XSovOiB7IC8qIG46XCJSUkRJbnNEZWxFbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE1Mi8qOjpdKi86IHsgLyogbjpcIlJSRENvbmZsaWN0XCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTMvKjo6XSovOiB7IC8qIG46XCJSUkREZWZOYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNTQvKjo6XSovOiB7IC8qIG46XCJSUkRSc3RFdHhwXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNWYvKjo6XSovOiB7IC8qIG46XCJMUm5nXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNjAvKjo6XSovOiB7IC8qIG46XCJVc2VzRUxGc1wiLCAqLyBmOnBhcnNlYm9vbCB9LFxuXHQvKjo6WyovMHgwMTYxLyo6Ol0qLzogeyAvKiBuOlwiRFNGXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMTkxLyo6Ol0qLzogeyAvKiBuOlwiQ1VzclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMTkyLyo6Ol0qLzogeyAvKiBuOlwiQ2JVc3JcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5My8qOjpdKi86IHsgLyogbjpcIlVzckluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NC8qOjpdKi86IHsgLyogbjpcIlVzckV4Y2xcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5NS8qOjpdKi86IHsgLyogbjpcIkZpbGVMb2NrXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTYvKjo6XSovOiB7IC8qIG46XCJSUkRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDAxOTcvKjo6XSovOiB7IC8qIG46XCJCQ1VzcnNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDE5OC8qOjpdKi86IHsgLyogbjpcIlVzckNoa1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWE5Lyo6Ol0qLzogeyAvKiBuOlwiVXNlckJWaWV3XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWEvKjo6XSovOiB7IC8qIG46XCJVc2VyU1ZpZXdCZWdpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFiLyo6Ol0qLzogeyAvKiBuOlwiVXNlclNWaWV3RW5kXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWMvKjo6XSovOiB7IC8qIG46XCJSUkRVc2VyVmlld1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWFkLyo6Ol0qLzogeyAvKiBuOlwiUXNpXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYWUvKjo6XSovOiB7IC8qIG46XCJTdXBCb29rXCIsICovIGY6cGFyc2VfU3VwQm9vayB9LFxuXHQvKjo6WyovMHgwMWFmLyo6Ol0qLzogeyAvKiBuOlwiUHJvdDRSZXZcIiwgKi8gZjpwYXJzZWJvb2wgfSxcblx0Lyo6OlsqLzB4MDFiMC8qOjpdKi86IHsgLyogbjpcIkNvbmRGbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiMS8qOjpdKi86IHsgLyogbjpcIkNGXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjIvKjo6XSovOiB7IC8qIG46XCJEVmFsXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjUvKjo6XSovOiB7IC8qIG46XCJEQ29uQmluXCIsICovIH0sXG5cdC8qOjpbKi8weDAxYjYvKjo6XSovOiB7IC8qIG46XCJUeE9cIiwgKi8gZjpwYXJzZV9UeE8gfSxcblx0Lyo6OlsqLzB4MDFiNy8qOjpdKi86IHsgLyogbjpcIlJlZnJlc2hBbGxcIiwgKi8gZjpwYXJzZWJvb2wgfSwgLy9cblx0Lyo6OlsqLzB4MDFiOC8qOjpdKi86IHsgLyogbjpcIkhMaW5rXCIsICovIGY6cGFyc2VfSExpbmsgfSxcblx0Lyo6OlsqLzB4MDFiOS8qOjpdKi86IHsgLyogbjpcIkxlbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWJhLyo6Ol0qLzogeyAvKiBuOlwiQ29kZU5hbWVcIiwgKi8gZjpwYXJzZV9YTFVuaWNvZGVTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDFiYi8qOjpdKi86IHsgLyogbjpcIlNYRkRCVHlwZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMWJjLyo6Ol0qLzogeyAvKiBuOlwiUHJvdDRSZXZQYXNzXCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDFiZC8qOjpdKi86IHsgLyogbjpcIk9iTm9NYWNyb3NcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFiZS8qOjpdKi86IHsgLyogbjpcIkR2XCIsICovIH0sXG5cdC8qOjpbKi8weDAxYzAvKjo6XSovOiB7IC8qIG46XCJFeGNlbDlGaWxlXCIsICovIGY6cGFyc2Vub29wMiB9LFxuXHQvKjo6WyovMHgwMWMxLyo6Ol0qLzogeyAvKiBuOlwiUmVjYWxjSWRcIiwgKi8gZjpwYXJzZV9SZWNhbGNJZCwgcjoyfSxcblx0Lyo6OlsqLzB4MDFjMi8qOjpdKi86IHsgLyogbjpcIkVudEV4VTJcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDAyMDAvKjo6XSovOiB7IC8qIG46XCJEaW1lbnNpb25zXCIsICovIGY6cGFyc2VfRGltZW5zaW9ucyB9LFxuXHQvKjo6WyovMHgwMjAxLyo6Ol0qLzogeyAvKiBuOlwiQmxhbmtcIiwgKi8gZjpwYXJzZV9CbGFuayB9LFxuXHQvKjo6WyovMHgwMjAzLyo6Ol0qLzogeyAvKiBuOlwiTnVtYmVyXCIsICovIGY6cGFyc2VfTnVtYmVyIH0sXG5cdC8qOjpbKi8weDAyMDQvKjo6XSovOiB7IC8qIG46XCJMYWJlbFwiLCAqLyBmOnBhcnNlX0xhYmVsIH0sXG5cdC8qOjpbKi8weDAyMDUvKjo6XSovOiB7IC8qIG46XCJCb29sRXJyXCIsICovIGY6cGFyc2VfQm9vbEVyciB9LFxuXHQvKjo6WyovMHgwMjA3Lyo6Ol0qLzogeyAvKiBuOlwiU3RyaW5nXCIsICovIGY6cGFyc2VfU3RyaW5nIH0sXG5cdC8qOjpbKi8weDAyMDgvKjo6XSovOiB7IC8qIG46XCJSb3dcIiwgKi8gZjpwYXJzZV9Sb3cgfSxcblx0Lyo6OlsqLzB4MDIwYi8qOjpdKi86IHsgLyogbjpcIkluZGV4XCIsICovIH0sXG5cdC8qOjpbKi8weDAyMjEvKjo6XSovOiB7IC8qIG46XCJBcnJheVwiLCAqLyBmOnBhcnNlX0FycmF5IH0sXG5cdC8qOjpbKi8weDAyMjUvKjo6XSovOiB7IC8qIG46XCJEZWZhdWx0Um93SGVpZ2h0XCIsICovIGY6cGFyc2VfRGVmYXVsdFJvd0hlaWdodCB9LFxuXHQvKjo6WyovMHgwMjM2Lyo6Ol0qLzogeyAvKiBuOlwiVGFibGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDIzZS8qOjpdKi86IHsgLyogbjpcIldpbmRvdzJcIiwgKi8gZjpwYXJzZV9XaW5kb3cyIH0sXG5cdC8qOjpbKi8weDAyN2UvKjo6XSovOiB7IC8qIG46XCJSS1wiLCAqLyBmOnBhcnNlX1JLIH0sXG5cdC8qOjpbKi8weDAyOTMvKjo6XSovOiB7IC8qIG46XCJTdHlsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDE4Lyo6Ol0qLzogeyAvKiBuOlwiQmlnTmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDFlLyo6Ol0qLzogeyAvKiBuOlwiRm9ybWF0XCIsICovIGY6cGFyc2VfRm9ybWF0IH0sXG5cdC8qOjpbKi8weDA0M2MvKjo6XSovOiB7IC8qIG46XCJDb250aW51ZUJpZ05hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDRiYy8qOjpdKi86IHsgLyogbjpcIlNockZtbGFcIiwgKi8gZjpwYXJzZV9TaHJGbWxhIH0sXG5cdC8qOjpbKi8weDA4MDAvKjo6XSovOiB7IC8qIG46XCJITGlua1Rvb2x0aXBcIiwgKi8gZjpwYXJzZV9ITGlua1Rvb2x0aXAgfSxcblx0Lyo6OlsqLzB4MDgwMS8qOjpdKi86IHsgLyogbjpcIldlYlB1YlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODAyLyo6Ol0qLzogeyAvKiBuOlwiUXNpU1hUYWdcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwMy8qOjpdKi86IHsgLyogbjpcIkRCUXVlcnlFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwNC8qOjpdKi86IHsgLyogbjpcIkV4dFN0cmluZ1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA1Lyo6Ol0qLzogeyAvKiBuOlwiVHh0UXJ5XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDYvKjo6XSovOiB7IC8qIG46XCJRc2lyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDcvKjo6XSovOiB7IC8qIG46XCJRc2lmXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MDgvKjo6XSovOiB7IC8qIG46XCJSUkRUUVNJRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODA5Lyo6Ol0qLzogeyAvKiBuOlwiQk9GXCIsICovIGY6cGFyc2VfQk9GIH0sXG5cdC8qOjpbKi8weDA4MGEvKjo6XSovOiB7IC8qIG46XCJPbGVEYkNvbm5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwYi8qOjpdKi86IHsgLyogbjpcIldPcHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwYy8qOjpdKi86IHsgLyogbjpcIlNYVmlld0V4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGQvKjo6XSovOiB7IC8qIG46XCJTWFRIXCIsICovIH0sXG5cdC8qOjpbKi8weDA4MGUvKjo6XSovOiB7IC8qIG46XCJTWFBJRXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgwZi8qOjpdKi86IHsgLyogbjpcIlNYVkRURXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMC8qOjpdKi86IHsgLyogbjpcIlNYVmlld0V4OVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODEyLyo6Ol0qLzogeyAvKiBuOlwiQ29udGludWVGcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDgxMy8qOjpdKi86IHsgLyogbjpcIlJlYWxUaW1lRGF0YVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODUwLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnRGcnRJbmZvXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTEvKjo6XSovOiB7IC8qIG46XCJGcnRXcmFwcGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTIvKjo6XSovOiB7IC8qIG46XCJTdGFydEJsb2NrXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTMvKjo6XSovOiB7IC8qIG46XCJFbmRCbG9ja1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU0Lyo6Ol0qLzogeyAvKiBuOlwiU3RhcnRPYmplY3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1NS8qOjpdKi86IHsgLyogbjpcIkVuZE9iamVjdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU2Lyo6Ol0qLzogeyAvKiBuOlwiQ2F0TGFiXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NTcvKjo6XSovOiB7IC8qIG46XCJZTXVsdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU4Lyo6Ol0qLzogeyAvKiBuOlwiU1hWaWV3TGlua1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODU5Lyo6Ol0qLzogeyAvKiBuOlwiUGl2b3RDaGFydEJpdHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg1YS8qOjpdKi86IHsgLyogbjpcIkZydEZvbnRMaXN0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4NjIvKjo6XSovOiB7IC8qIG46XCJTaGVldEV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODYzLyo6Ol0qLzogeyAvKiBuOlwiQm9va0V4dFwiLCAqLyByOjEyfSxcblx0Lyo6OlsqLzB4MDg2NC8qOjpdKi86IHsgLyogbjpcIlNYQWRkbFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODY1Lyo6Ol0qLzogeyAvKiBuOlwiQ3JFcnJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Ni8qOjpdKi86IHsgLyogbjpcIkhGUGljdHVyZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODY3Lyo6Ol0qLzogeyAvKiBuOlwiRmVhdEhkclwiLCAqLyBmOnBhcnNlbm9vcDIgfSxcblx0Lyo6OlsqLzB4MDg2OC8qOjpdKi86IHsgLyogbjpcIkZlYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2YS8qOjpdKi86IHsgLyogbjpcIkRhdGFMYWJFeHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg2Yi8qOjpdKi86IHsgLyogbjpcIkRhdGFMYWJFeHRDb250ZW50c1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZjLyo6Ol0qLzogeyAvKiBuOlwiQ2VsbFdhdGNoXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzEvKjo6XSovOiB7IC8qIG46XCJGZWF0SGRyMTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Mi8qOjpdKi86IHsgLyogbjpcIkZlYXR1cmUxMVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc0Lyo6Ol0qLzogeyAvKiBuOlwiRHJvcERvd25PYmpJZHNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3NS8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlRnJ0MTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Ni8qOjpdKi86IHsgLyogbjpcIkRDb25uXCIsICovIH0sXG5cdC8qOjpbKi8weDA4NzcvKjo6XSovOiB7IC8qIG46XCJMaXN0MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3OC8qOjpdKi86IHsgLyogbjpcIkZlYXR1cmUxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODc5Lyo6Ol0qLzogeyAvKiBuOlwiQ29uZEZtdDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2EvKjo6XSovOiB7IC8qIG46XCJDRjEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2IvKjo6XSovOiB7IC8qIG46XCJDRkV4XCIsICovIH0sXG5cdC8qOjpbKi8weDA4N2MvKjo6XSovOiB7IC8qIG46XCJYRkNSQ1wiLCAqLyBmOnBhcnNlX1hGQ1JDLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4N2QvKjo6XSovOiB7IC8qIG46XCJYRkV4dFwiLCAqLyBmOnBhcnNlX1hGRXh0LCByOjEyIH0sXG5cdC8qOjpbKi8weDA4N2UvKjo6XSovOiB7IC8qIG46XCJBdXRvRmlsdGVyMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3Zi8qOjpdKi86IHsgLyogbjpcIkNvbnRpbnVlRnJ0MTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4NC8qOjpdKi86IHsgLyogbjpcIk1EVEluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4NS8qOjpdKi86IHsgLyogbjpcIk1EWFN0clwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg2Lyo6Ol0qLzogeyAvKiBuOlwiTURYVHVwbGVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Ny8qOjpdKi86IHsgLyogbjpcIk1EWFNldFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg4Lyo6Ol0qLzogeyAvKiBuOlwiTURYUHJvcFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODg5Lyo6Ol0qLzogeyAvKiBuOlwiTURYS1BJXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OGEvKjo6XSovOiB7IC8qIG46XCJNREJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4Yi8qOjpdKi86IHsgLyogbjpcIlBMVlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhjLyo6Ol0qLzogeyAvKiBuOlwiQ29tcGF0MTJcIiwgKi8gZjpwYXJzZWJvb2wsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg4ZC8qOjpdKi86IHsgLyogbjpcIkRYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODhlLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZXNcIiwgKi8gcjoxMiB9LFxuXHQvKjo6WyovMHgwODhmLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODkwLyo6Ol0qLzogeyAvKiBuOlwiVGFibGVTdHlsZUVsZW1lbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5Mi8qOjpdKi86IHsgLyogbjpcIlN0eWxlRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTMvKjo6XSovOiB7IC8qIG46XCJOYW1lUHVibGlzaFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk0Lyo6Ol0qLzogeyAvKiBuOlwiTmFtZUNtdFwiLCAqLyBmOnBhcnNlX05hbWVDbXQsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg5NS8qOjpdKi86IHsgLyogbjpcIlNvcnREYXRhXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OTYvKjo6XSovOiB7IC8qIG46XCJUaGVtZVwiLCAqLyBmOnBhcnNlX1RoZW1lLCByOjEyIH0sXG5cdC8qOjpbKi8weDA4OTcvKjo6XSovOiB7IC8qIG46XCJHVUlEVHlwZUxpYlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk4Lyo6Ol0qLzogeyAvKiBuOlwiRm5HcnAxMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODk5Lyo6Ol0qLzogeyAvKiBuOlwiTmFtZUZuR3JwMTJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5YS8qOjpdKi86IHsgLyogbjpcIk1UUlNldHRpbmdzXCIsICovIGY6cGFyc2VfTVRSU2V0dGluZ3MsIHI6MTIgfSxcblx0Lyo6OlsqLzB4MDg5Yi8qOjpdKi86IHsgLyogbjpcIkNvbXByZXNzUGljdHVyZXNcIiwgKi8gZjpwYXJzZW5vb3AyIH0sXG5cdC8qOjpbKi8weDA4OWMvKjo6XSovOiB7IC8qIG46XCJIZWFkZXJGb290ZXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg5ZC8qOjpdKi86IHsgLyogbjpcIkNydExheW91dDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4OWUvKjo6XSovOiB7IC8qIG46XCJDcnRNbEZydFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODlmLyo6Ol0qLzogeyAvKiBuOlwiQ3J0TWxGcnRDb250aW51ZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGEzLyo6Ol0qLzogeyAvKiBuOlwiRm9yY2VGdWxsQ2FsY3VsYXRpb25cIiwgKi8gZjpwYXJzZV9Gb3JjZUZ1bGxDYWxjdWxhdGlvbiB9LFxuXHQvKjo6WyovMHgwOGE0Lyo6Ol0qLzogeyAvKiBuOlwiU2hhcGVQcm9wc1N0cmVhbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGE1Lyo6Ol0qLzogeyAvKiBuOlwiVGV4dFByb3BzU3RyZWFtXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YTYvKjo6XSovOiB7IC8qIG46XCJSaWNoVGV4dFN0cmVhbVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGE3Lyo6Ol0qLzogeyAvKiBuOlwiQ3J0TGF5b3V0MTJBXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMDEvKjo6XSovOiB7IC8qIG46XCJVbml0c1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDAyLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwMy8qOjpdKi86IHsgLyogbjpcIlNlcmllc1wiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA2Lyo6Ol0qLzogeyAvKiBuOlwiRGF0YUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA3Lyo6Ol0qLzogeyAvKiBuOlwiTGluZUZvcm1hdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDA5Lyo6Ol0qLzogeyAvKiBuOlwiTWFya2VyRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGEvKjo6XSovOiB7IC8qIG46XCJBcmVhRm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMGIvKjo6XSovOiB7IC8qIG46XCJQaWVGb3JtYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwYy8qOjpdKi86IHsgLyogbjpcIkF0dGFjaGVkTGFiZWxcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAwZC8qOjpdKi86IHsgLyogbjpcIlNlcmllc1RleHRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNC8qOjpdKi86IHsgLyogbjpcIkNoYXJ0Rm9ybWF0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMTUvKjo6XSovOiB7IC8qIG46XCJMZWdlbmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNi8qOjpdKi86IHsgLyogbjpcIlNlcmllc0xpc3RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAxNy8qOjpdKi86IHsgLyogbjpcIkJhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE4Lyo6Ol0qLzogeyAvKiBuOlwiTGluZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDE5Lyo6Ol0qLzogeyAvKiBuOlwiUGllXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWEvKjo6XSovOiB7IC8qIG46XCJBcmVhXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWIvKjo6XSovOiB7IC8qIG46XCJTY2F0dGVyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWMvKjo6XSovOiB7IC8qIG46XCJDcnRMaW5lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWQvKjo6XSovOiB7IC8qIG46XCJBeGlzXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWUvKjo6XSovOiB7IC8qIG46XCJUaWNrXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMWYvKjo6XSovOiB7IC8qIG46XCJWYWx1ZVJhbmdlXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjAvKjo6XSovOiB7IC8qIG46XCJDYXRTZXJSYW5nZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDIxLyo6Ol0qLzogeyAvKiBuOlwiQXhpc0xpbmVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyMi8qOjpdKi86IHsgLyogbjpcIkNydExpbmtcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAyNC8qOjpdKi86IHsgLyogbjpcIkRlZmF1bHRUZXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjUvKjo6XSovOiB7IC8qIG46XCJUZXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwMjYvKjo6XSovOiB7IC8qIG46XCJGb250WFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDEwMjcvKjo6XSovOiB7IC8qIG46XCJPYmplY3RMaW5rXCIsICovIH0sXG5cdC8qOjpbKi8weDEwMzIvKjo6XSovOiB7IC8qIG46XCJGcmFtZVwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDMzLyo6Ol0qLzogeyAvKiBuOlwiQmVnaW5cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzNC8qOjpdKi86IHsgLyogbjpcIkVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDM1Lyo6Ol0qLzogeyAvKiBuOlwiUGxvdEFyZWFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzYS8qOjpdKi86IHsgLyogbjpcIkNoYXJ0M2RcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzYy8qOjpdKi86IHsgLyogbjpcIlBpY0ZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzZC8qOjpdKi86IHsgLyogbjpcIkRyb3BCYXJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTAzZS8qOjpdKi86IHsgLyogbjpcIlJhZGFyXCIsICovIH0sXG5cdC8qOjpbKi8weDEwM2YvKjo6XSovOiB7IC8qIG46XCJTdXJmXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDAvKjo6XSovOiB7IC8qIG46XCJSYWRhckFyZWFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0MS8qOjpdKi86IHsgLyogbjpcIkF4aXNQYXJlbnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0My8qOjpdKi86IHsgLyogbjpcIkxlZ2VuZEV4Y2VwdGlvblwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDQ0Lyo6Ol0qLzogeyAvKiBuOlwiU2h0UHJvcHNcIiwgKi8gZjpwYXJzZV9TaHRQcm9wcyB9LFxuXHQvKjo6WyovMHgxMDQ1Lyo6Ol0qLzogeyAvKiBuOlwiU2VyVG9DcnRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA0Ni8qOjpdKi86IHsgLyogbjpcIkF4ZXNVc2VkXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNDgvKjo6XSovOiB7IC8qIG46XCJTQmFzZVJlZlwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRhLyo6Ol0qLzogeyAvKiBuOlwiU2VyUGFyZW50XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNGIvKjo6XSovOiB7IC8qIG46XCJTZXJBdXhUcmVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRlLyo6Ol0qLzogeyAvKiBuOlwiSUZtdFJlY29yZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDRmLyo6Ol0qLzogeyAvKiBuOlwiUG9zXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNTAvKjo6XSovOiB7IC8qIG46XCJBbFJ1bnNcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1MS8qOjpdKi86IHsgLyogbjpcIkJSQUlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA1Yi8qOjpdKi86IHsgLyogbjpcIlNlckF1eEVyckJhclwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDVjLyo6Ol0qLzogeyAvKiBuOlwiQ2xydENsaWVudFwiLCAqLyBmOnBhcnNlX0NscnRDbGllbnQgfSxcblx0Lyo6OlsqLzB4MTA1ZC8qOjpdKi86IHsgLyogbjpcIlNlckZtdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDVmLyo6Ol0qLzogeyAvKiBuOlwiQ2hhcnQzREJhclNoYXBlXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjAvKjo6XSovOiB7IC8qIG46XCJGYmlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2MS8qOjpdKi86IHsgLyogbjpcIkJvcFBvcFwiLCAqLyB9LFxuXHQvKjo6WyovMHgxMDYyLyo6Ol0qLzogeyAvKiBuOlwiQXhjRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjMvKjo6XSovOiB7IC8qIG46XCJEYXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2NC8qOjpdKi86IHsgLyogbjpcIlBsb3RHcm93dGhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2NS8qOjpdKi86IHsgLyogbjpcIlNJSW5kZXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2Ni8qOjpdKi86IHsgLyogbjpcIkdlbEZyYW1lXCIsICovIH0sXG5cdC8qOjpbKi8weDEwNjcvKjo6XSovOiB7IC8qIG46XCJCb3BQb3BDdXN0b21cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MTA2OC8qOjpdKi86IHsgLyogbjpcIkZiaTJcIiwgKi8gfSxcblxuXHQvKjo6WyovMHgwMDAwLyo6Ol0qLzogeyAvKiBuOlwiRGltZW5zaW9uc1wiLCAqLyBmOnBhcnNlX0RpbWVuc2lvbnMgfSxcblx0Lyo6OlsqLzB4MDAwMS8qOjpdKi86IHsgLyogbjpcIkJJRkYyQkxBTktcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAwMi8qOjpdKi86IHsgLyogbjpcIkJJRkYySU5UXCIsICovIGY6cGFyc2VfQklGRjJJTlQgfSxcblx0Lyo6OlsqLzB4MDAwMy8qOjpdKi86IHsgLyogbjpcIkJJRkYyTlVNXCIsICovIGY6cGFyc2VfQklGRjJOVU0gfSxcblx0Lyo6OlsqLzB4MDAwNC8qOjpdKi86IHsgLyogbjpcIkJJRkYyU1RSXCIsICovIGY6cGFyc2VfQklGRjJTVFIgfSxcblx0Lyo6OlsqLzB4MDAwNS8qOjpdKi86IHsgLyogbjpcIkJvb2xFcnJcIiwgKi8gZjpwYXJzZV9Cb29sRXJyIH0sXG5cdC8qOjpbKi8weDAwMDcvKjo6XSovOiB7IC8qIG46XCJTdHJpbmdcIiwgKi8gZjpwYXJzZV9CSUZGMlNUUklORyB9LFxuXHQvKjo6WyovMHgwMDA4Lyo6Ol0qLzogeyAvKiBuOlwiQklGRjJST1dcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwMDBiLyo6Ol0qLzogeyAvKiBuOlwiSW5kZXhcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDAxNi8qOjpdKi86IHsgLyogbjpcIkV4dGVybkNvdW50XCIsICovIGY6cGFyc2V1aW50MTYgfSxcblx0Lyo6OlsqLzB4MDAxZS8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk9STUFUXCIsICovIGY6cGFyc2VfQklGRjJGb3JtYXQgfSxcblx0Lyo6OlsqLzB4MDAxZi8qOjpdKi86IHsgLyogbjpcIkJJRkYyRk1UQ05UXCIsICovIH0sIC8qIDE2LWJpdCBjbnQgb2YgQklGRjJGT1JNQVQgcmVjb3JkcyAqL1xuXHQvKjo6WyovMHgwMDIwLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJDT0xJTkZPXCIsICovIH0sXG5cdC8qOjpbKi8weDAwMjEvKjo6XSovOiB7IC8qIG46XCJBcnJheVwiLCAqLyBmOnBhcnNlX0FycmF5IH0sXG5cdC8qOjpbKi8weDAwMjQvKjo6XSovOiB7IC8qIG46XCJDT0xXSURUSFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDI1Lyo6Ol0qLzogeyAvKiBuOlwiRGVmYXVsdFJvd0hlaWdodFwiLCAqLyBmOnBhcnNlX0RlZmF1bHRSb3dIZWlnaHQgfSxcblx0Ly8gMHgyYyA/P1xuXHQvLyAweDJkID8/XG5cdC8vIDB4MmUgPz9cblx0Ly8gMHgzMCBGT05UQ09VTlQ6IG51bWJlciBvZiBmb250c1xuXHQvKjo6WyovMHgwMDMyLyo6Ol0qLzogeyAvKiBuOlwiQklGRjJGT05UWFRSQVwiLCAqLyBmOnBhcnNlX0JJRkYyRk9OVFhUUkEgfSxcblx0Ly8gMHgzNTogSU5GT09QVFNcblx0Ly8gMHgzNjogVEFCTEUgKEJJRkYyIG9ubHkpXG5cdC8vIDB4Mzc6IFRBQkxFMiAoQklGRjIgb25seSlcblx0Ly8gMHgzODogV05ERVNLXG5cdC8vIDB4MzkgPz9cblx0Ly8gMHgzYTogQkVHSU5QUkVGXG5cdC8vIDB4M2I6IEVORFBSRUZcblx0Lyo6OlsqLzB4MDAzZS8qOjpdKi86IHsgLyogbjpcIkJJRkYyV0lORE9XMlwiLCAqLyB9LFxuXHQvLyAweDNmID8/XG5cdC8vIDB4NDY6IFNIT1dTQ1JPTExcblx0Ly8gMHg0NzogU0hPV0ZPUk1VTEFcblx0Ly8gMHg0ODogU1RBVFVTQkFSXG5cdC8vIDB4NDk6IFNIT1JUTUVOVVNcblx0Ly8gMHg0QTpcblx0Ly8gMHg0Qjpcblx0Ly8gMHg0Qzpcblx0Ly8gMHg0RTpcblx0Ly8gMHg0Rjpcblx0Ly8gMHg1ODogVE9PTEJBUiAoQklGRjMpXG5cblx0LyogLSAtIC0gKi9cblx0Lyo6OlsqLzB4MDAzNC8qOjpdKi86IHsgLyogbjpcIkRERU9iak5hbWVcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA0My8qOjpdKi86IHsgLyogbjpcIkJJRkYyWEZcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA0NC8qOjpdKi86IHsgLyogbjpcIkJJRkYyWEZJTkRFWFwiLCAqLyBmOnBhcnNldWludDE2IH0sXG5cdC8qOjpbKi8weDAwNDUvKjo6XSovOiB7IC8qIG46XCJCSUZGMkZPTlRDTFJcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA1Ni8qOjpdKi86IHsgLyogbjpcIkJJRkY0Rk1UQ05UXCIsICovIH0sIC8qIDE2LWJpdCBjbnQsIHNpbWlsYXIgdG8gQklGRjIgKi9cblx0Lyo6OlsqLzB4MDA3ZS8qOjpdKi86IHsgLyogbjpcIlJLXCIsICovIH0sIC8qIE5vdCBuZWNlc3NhcmlseSBzYW1lIGFzIDB4MDI3ZSAqL1xuXHQvKjo6WyovMHgwMDdmLyo6Ol0qLzogeyAvKiBuOlwiSW1EYXRhXCIsICovIGY6cGFyc2VfSW1EYXRhIH0sXG5cdC8qOjpbKi8weDAwODcvKjo6XSovOiB7IC8qIG46XCJBZGRpblwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMDg4Lyo6Ol0qLzogeyAvKiBuOlwiRWRnXCIsICovIH0sXG5cdC8qOjpbKi8weDAwODkvKjo6XSovOiB7IC8qIG46XCJQdWJcIiwgKi8gfSxcblx0Ly8gMHg4QVxuXHQvLyAweDhCIExIOiBhbHRlcm5hdGUgbWVudSBrZXkgZmxhZyAoQklGRjMvNClcblx0Ly8gMHg4RVxuXHQvLyAweDhGXG5cdC8qOjpbKi8weDAwOTEvKjo6XSovOiB7IC8qIG46XCJTdWJcIiwgKi8gfSxcblx0Ly8gMHg5MyBTVFlMRVxuXHQvKjo6WyovMHgwMDk0Lyo6Ol0qLzogeyAvKiBuOlwiTEhSZWNvcmRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDA5NS8qOjpdKi86IHsgLyogbjpcIkxITkdyYXBoXCIsICovIH0sXG5cdC8qOjpbKi8weDAwOTYvKjo6XSovOiB7IC8qIG46XCJTb3VuZFwiLCAqLyB9LFxuXHQvLyAweEEyIEZOUFJPVE86IGZ1bmN0aW9uIHByb3RvdHlwZXMgKEJJRkY0KVxuXHQvLyAweEEzXG5cdC8vIDB4QThcblx0Lyo6OlsqLzB4MDBhOS8qOjpdKi86IHsgLyogbjpcIkNvb3JkTGlzdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGFiLyo6Ol0qLzogeyAvKiBuOlwiR0NXXCIsICovIH0sXG5cdC8qOjpbKi8weDAwYmMvKjo6XSovOiB7IC8qIG46XCJTaHJGbWxhXCIsICovIH0sIC8qIE5vdCBuZWNlc3NhcmlseSBzYW1lIGFzIDB4MDRiYyAqL1xuXHQvKjo6WyovMHgwMGJmLyo6Ol0qLzogeyAvKiBuOlwiVG9vbGJhckhkclwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMwLyo6Ol0qLzogeyAvKiBuOlwiVG9vbGJhckVuZFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMyLyo6Ol0qLzogeyAvKiBuOlwiQWRkTWVudVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGMzLyo6Ol0qLzogeyAvKiBuOlwiRGVsTWVudVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGQ2Lyo6Ol0qLzogeyAvKiBuOlwiUlN0cmluZ1wiLCAqLyBmOnBhcnNlX1JTdHJpbmcgfSxcblx0Lyo6OlsqLzB4MDBkZi8qOjpdKi86IHsgLyogbjpcIlVERGVzY1wiLCAqLyB9LFxuXHQvKjo6WyovMHgwMGVhLyo6Ol0qLzogeyAvKiBuOlwiVGFiSWRDb25mXCIsICovIH0sXG5cdC8qOjpbKi8weDAxNjIvKjo6XSovOiB7IC8qIG46XCJYTDVNb2RpZnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDFhNS8qOjpdKi86IHsgLyogbjpcIkZpbGVTaGFyaW5nMlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDIwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwMjE4Lyo6Ol0qLzogeyAvKiBuOlwiTGJsXCIsICovIGY6cGFyc2VfTGJsIH0sXG5cdC8qOjpbKi8weDAyMjMvKjo6XSovOiB7IC8qIG46XCJFeHRlcm5OYW1lXCIsICovIGY6cGFyc2VfRXh0ZXJuTmFtZSB9LFxuXHQvKjo6WyovMHgwMjMxLyo6Ol0qLzogeyAvKiBuOlwiRm9udFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwMjQzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjNYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwNDA2Lyo6Ol0qLzogeyAvKiBuOlwiRm9ybXVsYVwiLCAqLyBmOnBhcnNlX0Zvcm11bGEgfSxcblx0Lyo6OlsqLzB4MDQwOS8qOjpdKi86IHsgLyogbjpcIkJPRlwiLCAqLyBmOnBhcnNlX0JPRiB9LFxuXHQvKjo6WyovMHgwNDQzLyo6Ol0qLzogeyAvKiBuOlwiQklGRjRYRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwODZkLyo6Ol0qLzogeyAvKiBuOlwiRmVhdEluZm9cIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg3My8qOjpdKi86IHsgLyogbjpcIkZlYXRJbmZvMTFcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDg4MS8qOjpdKi86IHsgLyogbjpcIlNYQWRkbDEyXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzAvKjo6XSovOiB7IC8qIG46XCJBdXRvV2ViUHViXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzEvKjo6XSovOiB7IC8qIG46XCJMaXN0T2JqXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzIvKjo6XSovOiB7IC8qIG46XCJMaXN0RmllbGRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjMy8qOjpdKi86IHsgLyogbjpcIkxpc3REVlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM0Lyo6Ol0qLzogeyAvKiBuOlwiTGlzdENvbmRGbXRcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNS8qOjpdKi86IHsgLyogbjpcIkxpc3RDRlwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM2Lyo6Ol0qLzogeyAvKiBuOlwiRk1RcnlcIiwgKi8gfSxcblx0Lyo6OlsqLzB4MDhjNy8qOjpdKi86IHsgLyogbjpcIkZNU1FyeVwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGM4Lyo6Ol0qLzogeyAvKiBuOlwiUExWXCIsICovIH0sXG5cdC8qOjpbKi8weDA4YzkvKjo6XSovOiB7IC8qIG46XCJMbkV4dFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGNhLyo6Ol0qLzogeyAvKiBuOlwiTWtyRXh0XCIsICovIH0sXG5cdC8qOjpbKi8weDA4Y2IvKjo6XSovOiB7IC8qIG46XCJDcnRDb29wdFwiLCAqLyB9LFxuXHQvKjo6WyovMHgwOGQ2Lyo6Ol0qLzogeyAvKiBuOlwiRlJUQXJjaElkJFwiLCAqLyByOjEyIH0sXG5cblx0Lyo6OlsqLzB4NzI2Mi8qOjpdKi86IHt9XG59O1xuXG5mdW5jdGlvbiB3cml0ZV9iaWZmX3JlYyhiYS8qOkJ1ZkFycmF5Ki8sIHR5cGUvKjpudW1iZXIqLywgcGF5bG9hZCwgbGVuZ3RoLyo6P251bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciB0Lyo6bnVtYmVyKi8gPSB0eXBlO1xuXHRpZihpc05hTih0KSkgcmV0dXJuO1xuXHR2YXIgbGVuID0gbGVuZ3RoIHx8IChwYXlsb2FkfHxbXSkubGVuZ3RoIHx8IDA7XG5cdHZhciBvID0gYmEubmV4dCg0KTtcblx0by53cml0ZV9zaGlmdCgyLCB0KTtcblx0by53cml0ZV9zaGlmdCgyLCBsZW4pO1xuXHRpZigvKjo6IGxlbiAhPSBudWxsICYmKi9sZW4gPiAwICYmIGlzX2J1ZihwYXlsb2FkKSkgYmEucHVzaChwYXlsb2FkKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfYmlmZl9jb250aW51ZShiYS8qOkJ1ZkFycmF5Ki8sIHR5cGUvKjpudW1iZXIqLywgcGF5bG9hZCwgbGVuZ3RoLyo6P251bWJlciovKS8qOnZvaWQqLyB7XG5cdHZhciBsZW4gPSBsZW5ndGggfHwgKHBheWxvYWR8fFtdKS5sZW5ndGggfHwgMDtcblx0aWYobGVuIDw9IDgyMjQpIHJldHVybiB3cml0ZV9iaWZmX3JlYyhiYSwgdHlwZSwgcGF5bG9hZCwgbGVuKTtcblx0dmFyIHQgPSB0eXBlO1xuXHRpZihpc05hTih0KSkgcmV0dXJuO1xuXHR2YXIgcGFydHMgPSBwYXlsb2FkLnBhcnRzIHx8IFtdLCBzaWR4ID0gMDtcblx0dmFyIGkgPSAwLCB3ID0gMDtcblx0d2hpbGUodyArIChwYXJ0c1tzaWR4XSB8fCA4MjI0KSA8PSA4MjI0KSB7IHcrPSAocGFydHNbc2lkeF0gfHwgODIyNCk7IHNpZHgrKzsgfVxuXHR2YXIgbyA9IGJhLm5leHQoNCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdCk7XG5cdG8ud3JpdGVfc2hpZnQoMiwgdyk7XG5cdGJhLnB1c2gocGF5bG9hZC5zbGljZShpLCBpICsgdykpO1xuXHRpICs9IHc7XG5cdHdoaWxlKGkgPCBsZW4pIHtcblx0XHRvID0gYmEubmV4dCg0KTtcblx0XHRvLndyaXRlX3NoaWZ0KDIsIDB4M2MpOyAvLyBUT0RPOiBmaWd1cmUgb3V0IGNvcnJlY3QgY29udGludWUgdHlwZVxuXHRcdHcgPSAwO1xuXHRcdHdoaWxlKHcgKyAocGFydHNbc2lkeF0gfHwgODIyNCkgPD0gODIyNCkgeyB3Kz0gKHBhcnRzW3NpZHhdIHx8IDgyMjQpOyBzaWR4Kys7IH1cblx0XHRvLndyaXRlX3NoaWZ0KDIsIHcpO1xuXHRcdGJhLnB1c2gocGF5bG9hZC5zbGljZShpLCBpK3cpKTsgaSs9IHc7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3JpdGVfQklGRjJDZWxsKG91dCwgci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8pIHtcblx0aWYoIW91dCkgb3V0ID0gbmV3X2J1Zig3KTtcblx0b3V0LndyaXRlX3NoaWZ0KDIsIHIpO1xuXHRvdXQud3JpdGVfc2hpZnQoMiwgYyk7XG5cdG91dC53cml0ZV9zaGlmdCgyLCAwKTtcblx0b3V0LndyaXRlX3NoaWZ0KDEsIDApO1xuXHRyZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiB3cml0ZV9CSUZGMkJFUlIoci8qOm51bWJlciovLCBjLyo6bnVtYmVyKi8sIHZhbCwgdC8qOj9zdHJpbmcqLykge1xuXHR2YXIgb3V0ID0gbmV3X2J1Zig5KTtcblx0d3JpdGVfQklGRjJDZWxsKG91dCwgciwgYyk7XG5cdHdyaXRlX0Jlcyh2YWwsIHQgfHwgJ2InLCBvdXQpO1xuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBUT0RPOiBjb2RlcGFnZSwgbGFyZ2Ugc3RyaW5ncyAqL1xuZnVuY3Rpb24gd3JpdGVfQklGRjJMQUJFTChyLyo6bnVtYmVyKi8sIGMvKjpudW1iZXIqLywgdmFsKSB7XG5cdHZhciBvdXQgPSBuZXdfYnVmKDggKyAyKnZhbC5sZW5ndGgpO1xuXHR3cml0ZV9CSUZGMkNlbGwob3V0LCByLCBjKTtcblx0b3V0LndyaXRlX3NoaWZ0KDEsIHZhbC5sZW5ndGgpO1xuXHRvdXQud3JpdGVfc2hpZnQodmFsLmxlbmd0aCwgdmFsLCAnc2JjcycpO1xuXHRyZXR1cm4gb3V0LmwgPCBvdXQubGVuZ3RoID8gb3V0LnNsaWNlKDAsIG91dC5sKSA6IG91dDtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjJfY2VsbChiYS8qOkJ1ZkFycmF5Ki8sIGNlbGwvKjpDZWxsKi8sIFIvKjpudW1iZXIqLywgQy8qOm51bWJlciovLyo6Oiwgb3B0cyovKSB7XG5cdGlmKGNlbGwudiAhPSBudWxsKSBzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnZCc6IGNhc2UgJ24nOlxuXHRcdFx0dmFyIHYgPSBjZWxsLnQgPT0gJ2QnID8gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkgOiBjZWxsLnY7XG5cdFx0XHRpZigodiA9PSAodnwwKSkgJiYgKHYgPj0gMCkgJiYgKHYgPCA2NTUzNikpXG5cdFx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDIsIHdyaXRlX0JJRkYySU5UKFIsIEMsIHYpKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwMywgd3JpdGVfQklGRjJOVU0oUixDLCB2KSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0Y2FzZSAnYic6IGNhc2UgJ2UnOiB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDA1LCB3cml0ZV9CSUZGMkJFUlIoUiwgQywgY2VsbC52LCBjZWxsLnQpKTsgcmV0dXJuO1xuXHRcdC8qIFRPRE86IGNvZGVwYWdlLCBzc3QgKi9cblx0XHRjYXNlICdzJzogY2FzZSAnc3RyJzpcblx0XHRcdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMDQsIHdyaXRlX0JJRkYyTEFCRUwoUiwgQywgKGNlbGwudnx8XCJcIikuc2xpY2UoMCwyNTUpKSk7XG5cdFx0XHRyZXR1cm47XG5cdH1cblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwMSwgd3JpdGVfQklGRjJDZWxsKG51bGwsIFIsIEMpKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjIoYmEvKjpCdWZBcnJheSovLCB3cy8qOldvcmtzaGVldCovLCBpZHgvKjpudW1iZXIqLywgb3B0cy8qOjosIHdiOldvcmtib29rKi8pIHtcblx0dmFyIGRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKSwgcmVmLyo6c3RyaW5nKi8sIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRpZihyYW5nZS5lLmMgPiAweEZGIHx8IHJhbmdlLmUuciA+IDB4M0ZGRikge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0XCIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRik7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5taW4ocmFuZ2UuZS5jLCAweDNGRkYpO1xuXHRcdHJlZiA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdH1cblx0Zm9yKHZhciBSID0gcmFuZ2Uucy5yOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0cnIgPSBlbmNvZGVfcm93KFIpO1xuXHRcdGZvcih2YXIgQyA9IHJhbmdlLnMuYzsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0aWYoUiA9PT0gcmFuZ2Uucy5yKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0XHRcdHJlZiA9IGNvbHNbQ10gKyBycjtcblx0XHRcdHZhciBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXSA6IHdzW3JlZl07XG5cdFx0XHRpZighY2VsbCkgY29udGludWU7XG5cdFx0XHQvKiB3cml0ZSBjZWxsICovXG5cdFx0XHR3cml0ZV93c19iaWZmMl9jZWxsKGJhLCBjZWxsLCBSLCBDLCBvcHRzKTtcblx0XHR9XG5cdH1cbn1cblxuLyogQmFzZWQgb24gdGVzdCBmaWxlcyAqL1xuZnVuY3Rpb24gd3JpdGVfYmlmZjJfYnVmKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCAmJiBvLmRlbnNlID09IG51bGwpIG8uZGVuc2UgPSBERU5TRTtcblx0dmFyIGJhID0gYnVmX2FycmF5KCk7XG5cdHZhciBpZHggPSAwO1xuXHRmb3IodmFyIGk9MDtpPHdiLlNoZWV0TmFtZXMubGVuZ3RoOysraSkgaWYod2IuU2hlZXROYW1lc1tpXSA9PSBvLnNoZWV0KSBpZHg9aTtcblx0aWYoaWR4ID09IDAgJiYgISFvLnNoZWV0ICYmIHdiLlNoZWV0TmFtZXNbMF0gIT0gby5zaGVldCkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbm90IGZvdW5kOiBcIiArIG8uc2hlZXQpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgKG8uYmlmZiA9PSA0ID8gMHgwNDA5IDogKG8uYmlmZiA9PSAzID8gMHgwMjA5IDogMHgwMDA5KSksIHdyaXRlX0JPRih3YiwgMHgxMCwgbykpO1xuXHQvKiAuLi4gKi9cblx0d3JpdGVfd3NfYmlmZjIoYmEsIHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBpZHgsIG8sIHdiKTtcblx0LyogLi4uICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMEEpO1xuXHRyZXR1cm4gYmEuZW5kKCk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX0ZPTlRTX2JpZmY4KGJhLCBkYXRhLCBvcHRzKSB7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMzEgLyogRm9udCAqLywgd3JpdGVfRm9udCh7XG5cdFx0c3o6MTIsXG5cdFx0Y29sb3I6IHt0aGVtZToxfSxcblx0XHRuYW1lOiBcIkFyaWFsXCIsXG5cdFx0ZmFtaWx5OiAyLFxuXHRcdHNjaGVtZTogXCJtaW5vclwiXG5cdH0sIG9wdHMpKTtcbn1cblxuXG5mdW5jdGlvbiB3cml0ZV9GTVRTX2JpZmY4KGJhLCBORi8qOj9TU0ZUYWJsZSovLCBvcHRzKSB7XG5cdGlmKCFORikgcmV0dXJuO1xuXHRbWzUsOF0sWzIzLDI2XSxbNDEsNDRdLFsvKjYzKi81MCwvKjY2XSxbMTY0LCovMzkyXV0uZm9yRWFjaChmdW5jdGlvbihyKSB7XG5cdFx0Lyo6OiBpZighTkYpIHJldHVybjsgKi9cblx0XHRmb3IodmFyIGkgPSByWzBdOyBpIDw9IHJbMV07ICsraSkgaWYoTkZbaV0gIT0gbnVsbCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDQxRSAvKiBGb3JtYXQgKi8sIHdyaXRlX0Zvcm1hdChpLCBORltpXSwgb3B0cykpO1xuXHR9KTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfRkVBVChiYSwgd3MpIHtcblx0LyogW01TLVhMU10gMi40LjExMiAqL1xuXHR2YXIgbyA9IG5ld19idWYoMTkpO1xuXHRvLndyaXRlX3NoaWZ0KDQsIDB4ODY3KTsgby53cml0ZV9zaGlmdCg0LCAwKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0by53cml0ZV9zaGlmdCgyLCAzKTsgby53cml0ZV9zaGlmdCgxLCAxKTsgby53cml0ZV9zaGlmdCg0LCAwKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDg2NyAvKiBGZWF0SGRyICovLCBvKTtcblx0LyogW01TLVhMU10gMi40LjExMSAqL1xuXHRvID0gbmV3X2J1ZigzOSk7XG5cdG8ud3JpdGVfc2hpZnQoNCwgMHg4NjgpOyBvLndyaXRlX3NoaWZ0KDQsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDMpOyBvLndyaXRlX3NoaWZ0KDEsIDApOyBvLndyaXRlX3NoaWZ0KDQsIDApO1xuXHRvLndyaXRlX3NoaWZ0KDIsIDEpOyBvLndyaXRlX3NoaWZ0KDQsIDQpOyBvLndyaXRlX3NoaWZ0KDIsIDApO1xuXHR3cml0ZV9SZWY4VShzYWZlX2RlY29kZV9yYW5nZSh3c1snIXJlZiddfHxcIkExXCIpLCBvKTtcblx0by53cml0ZV9zaGlmdCg0LCA0KTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDg2OCAvKiBGZWF0ICovLCBvKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfQ0VMTFhGU19iaWZmOChiYSwgb3B0cykge1xuXHRmb3IodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBlMCAvKiBYRiAqLywgd3JpdGVfWEYoe251bUZtdElkOjAsIHN0eWxlOnRydWV9LCAwLCBvcHRzKSk7XG5cdG9wdHMuY2VsbFhmcy5mb3JFYWNoKGZ1bmN0aW9uKGMpIHtcblx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGUwIC8qIFhGICovLCB3cml0ZV9YRihjLCAwLCBvcHRzKSk7XG5cdH0pO1xufVxuXG5mdW5jdGlvbiB3cml0ZV93c19iaWZmOF9obGlua3MoYmEvKjpCdWZBcnJheSovLCB3cykge1xuXHRmb3IodmFyIFI9MDsgUjx3c1snIWxpbmtzJ10ubGVuZ3RoOyArK1IpIHtcblx0XHR2YXIgSEwgPSB3c1snIWxpbmtzJ11bUl07XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDFiOCAvKiBITGluayAqLywgd3JpdGVfSExpbmsoSEwpKTtcblx0XHRpZihITFsxXS5Ub29sdGlwKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwODAwIC8qIEhMaW5rVG9vbHRpcCAqLywgd3JpdGVfSExpbmtUb29sdGlwKEhMKSk7XG5cdH1cblx0ZGVsZXRlIHdzWychbGlua3MnXTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfd3NfY29sc19iaWZmOChiYSwgY29scykge1xuXHRpZighY29scykgcmV0dXJuO1xuXHR2YXIgY250ID0gMDtcblx0Y29scy5mb3JFYWNoKGZ1bmN0aW9uKGNvbCwgaWR4KSB7XG5cdFx0aWYoKytjbnQgPD0gMjU2ICYmIGNvbCkge1xuXHRcdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA3ZCAvKiBDb2xJbmZvICovLCB3cml0ZV9Db2xJbmZvKGNvbF9vYmpfdyhpZHgsIGNvbCksIGlkeCkpO1xuXHRcdH1cblx0fSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3dzX2JpZmY4X2NlbGwoYmEvKjpCdWZBcnJheSovLCBjZWxsLyo6Q2VsbCovLCBSLyo6bnVtYmVyKi8sIEMvKjpudW1iZXIqLywgb3B0cykge1xuXHR2YXIgb3MgPSAxNiArIGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywgY2VsbCwgb3B0cyk7XG5cdGlmKGNlbGwudiA9PSBudWxsICYmICFjZWxsLmJmKSB7XG5cdFx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDIwMSAvKiBCbGFuayAqLywgd3JpdGVfWExTQ2VsbChSLCBDLCBvcykpO1xuXHRcdHJldHVybjtcblx0fVxuXHRpZihjZWxsLmJmKSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDA2IC8qIEZvcm11bGEgKi8sIHdyaXRlX0Zvcm11bGEoY2VsbCwgUiwgQywgb3B0cywgb3MpKTtcblx0ZWxzZSBzd2l0Y2goY2VsbC50KSB7XG5cdFx0Y2FzZSAnZCc6IGNhc2UgJ24nOlxuXHRcdFx0dmFyIHYgPSBjZWxsLnQgPT0gJ2QnID8gZGF0ZW51bShwYXJzZURhdGUoY2VsbC52KSkgOiBjZWxsLnY7XG5cdFx0XHQvKiBUT0RPOiBlbWl0IFJLIGFzIGFwcHJvcHJpYXRlICovXG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjAzIC8qIE51bWJlciAqLywgd3JpdGVfTnVtYmVyKFIsIEMsIHYsIG9zLCBvcHRzKSk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdiJzogY2FzZSAnZSc6XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjA1IC8qIEJvb2xFcnIgKi8sIHdyaXRlX0Jvb2xFcnIoUiwgQywgY2VsbC52LCBvcywgb3B0cywgY2VsbC50KSk7XG5cdFx0XHRicmVhaztcblx0XHQvKiBUT0RPOiBjb2RlcGFnZSwgc3N0ICovXG5cdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHRpZihvcHRzLmJvb2tTU1QpIHtcblx0XHRcdFx0dmFyIGlzc3QgPSBnZXRfc3N0X2lkKG9wdHMuU3RyaW5ncywgY2VsbC52LCBvcHRzLnJldlN0cmluZ3MpO1xuXHRcdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMGZkIC8qIExhYmVsU3N0ICovLCB3cml0ZV9MYWJlbFNzdChSLCBDLCBpc3N0LCBvcywgb3B0cykpO1xuXHRcdFx0fSBlbHNlIHdyaXRlX2JpZmZfcmVjKGJhLCAweDAyMDQgLyogTGFiZWwgKi8sIHdyaXRlX0xhYmVsKFIsIEMsIChjZWxsLnZ8fFwiXCIpLnNsaWNlKDAsMjU1KSwgb3MsIG9wdHMpKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjAxIC8qIEJsYW5rICovLCB3cml0ZV9YTFNDZWxsKFIsIEMsIG9zKSk7XG5cdH1cbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAuNSAqL1xuZnVuY3Rpb24gd3JpdGVfd3NfYmlmZjgoaWR4Lyo6bnVtYmVyKi8sIG9wdHMsIHdiLyo6V29ya2Jvb2sqLykge1xuXHR2YXIgYmEgPSBidWZfYXJyYXkoKTtcblx0dmFyIHMgPSB3Yi5TaGVldE5hbWVzW2lkeF0sIHdzID0gd2IuU2hlZXRzW3NdIHx8IHt9O1xuXHR2YXIgX1dCLyo6V0JXQlByb3BzKi8gPSAoKHdifHx7fSkuV29ya2Jvb2t8fHt9Lyo6YW55Ki8pO1xuXHR2YXIgX3NoZWV0Lyo6V0JXU1Byb3AqLyA9ICgoX1dCLlNoZWV0c3x8W10pW2lkeF18fHt9Lyo6YW55Ki8pO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0dmFyIGI4ID0gb3B0cy5iaWZmID09IDg7XG5cdHZhciByZWYvKjpzdHJpbmcqLywgcnIgPSBcIlwiLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdHZhciByYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10gfHwgXCJBMVwiKTtcblx0dmFyIE1BWF9ST1dTID0gYjggPyA2NTUzNiA6IDE2Mzg0O1xuXHRpZihyYW5nZS5lLmMgPiAweEZGIHx8IHJhbmdlLmUuciA+PSBNQVhfUk9XUykge1xuXHRcdGlmKG9wdHMuV1RGKSB0aHJvdyBuZXcgRXJyb3IoXCJSYW5nZSBcIiArICh3c1snIXJlZiddIHx8IFwiQTFcIikgKyBcIiBleGNlZWRzIGZvcm1hdCBsaW1pdCBBMTpJVjE2Mzg0XCIpO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWluKHJhbmdlLmUuYywgMHhGRik7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5taW4ocmFuZ2UuZS5jLCBNQVhfUk9XUy0xKTtcblx0fVxuXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDA4MDksIHdyaXRlX0JPRih3YiwgMHgxMCwgb3B0cykpO1xuXHQvKiBbVW5jYWxjZWRdIEluZGV4ICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMGQgLyogQ2FsY01vZGUgKi8sIHdyaXRldWludDE2KDEpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAwYyAvKiBDYWxjQ291bnQgKi8sIHdyaXRldWludDE2KDEwMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBmIC8qIENhbGNSZWZNb2RlICovLCB3cml0ZWJvb2wodHJ1ZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDExIC8qIENhbGNJdGVyICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAxMCAvKiBDYWxjRGVsdGEgKi8sIHdyaXRlX1hudW0oMC4wMDEpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA1ZiAvKiBDYWxjU2F2ZVJlY2FsYyAqLywgd3JpdGVib29sKHRydWUpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDAyYSAvKiBQcmludFJvd0NvbCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwMmIgLyogUHJpbnRHcmlkICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoYmEsIDB4MDA4MiAvKiBHcmlkU2V0ICovLCB3cml0ZXVpbnQxNigxKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODAgLyogR3V0cyAqLywgd3JpdGVfR3V0cyhbMCwwXSkpO1xuXHQvKiBEZWZhdWx0Um93SGVpZ2h0IFdzQm9vbCBbU3luY10gW0xQcl0gW0hvcml6b250YWxQYWdlQnJlYWtzXSBbVmVydGljYWxQYWdlQnJlYWtzXSAqL1xuXHQvKiBIZWFkZXIgKHN0cmluZykgKi9cblx0LyogRm9vdGVyIChzdHJpbmcpICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODMgLyogSENlbnRlciAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAwODQgLyogVkNlbnRlciAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCkgd3JpdGVfd3NfY29sc19iaWZmOChiYSwgd3NbXCIhY29sc1wiXSk7XG5cdC8qIC4uLiAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgyMDAsIHdyaXRlX0RpbWVuc2lvbnMocmFuZ2UsIG9wdHMpKTtcblx0LyogLi4uICovXG5cblx0aWYoYjgpIHdzWychbGlua3MnXSA9IFtdO1xuXHRmb3IodmFyIFIgPSByYW5nZS5zLnI7IFIgPD0gcmFuZ2UuZS5yOyArK1IpIHtcblx0XHRyciA9IGVuY29kZV9yb3coUik7XG5cdFx0Zm9yKHZhciBDID0gcmFuZ2Uucy5jOyBDIDw9IHJhbmdlLmUuYzsgKytDKSB7XG5cdFx0XHRpZihSID09PSByYW5nZS5zLnIpIGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdFx0cmVmID0gY29sc1tDXSArIHJyO1xuXHRcdFx0dmFyIGNlbGwgPSBkZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbcmVmXTtcblx0XHRcdGlmKCFjZWxsKSBjb250aW51ZTtcblx0XHRcdC8qIHdyaXRlIGNlbGwgKi9cblx0XHRcdHdyaXRlX3dzX2JpZmY4X2NlbGwoYmEsIGNlbGwsIFIsIEMsIG9wdHMpO1xuXHRcdFx0aWYoYjggJiYgY2VsbC5sKSB3c1snIWxpbmtzJ10ucHVzaChbcmVmLCBjZWxsLmxdKTtcblx0XHR9XG5cdH1cblx0dmFyIGNuYW1lLyo6c3RyaW5nKi8gPSBfc2hlZXQuQ29kZU5hbWUgfHwgX3NoZWV0Lm5hbWUgfHwgcztcblx0LyogLi4uICovXG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMjNlIC8qIFdpbmRvdzIgKi8sIHdyaXRlX1dpbmRvdzIoKF9XQi5WaWV3c3x8W10pWzBdKSk7XG5cdC8qIC4uLiAqL1xuXHRpZihiOCAmJiAod3NbJyFtZXJnZXMnXXx8W10pLmxlbmd0aCkgd3JpdGVfYmlmZl9yZWMoYmEsIDB4MDBlNSAvKiBNZXJnZUNlbGxzICovLCB3cml0ZV9NZXJnZUNlbGxzKHdzWychbWVyZ2VzJ10pKTtcblx0LyogW0xSbmddICpRVUVSWVRBQkxFIFtQSE9ORVRJQ0lORk9dIENPTkRGTVRTICovXG5cdGlmKGI4KSB3cml0ZV93c19iaWZmOF9obGlua3MoYmEsIHdzKTtcblx0LyogW0RWQUxdICovXG5cdHdyaXRlX2JpZmZfcmVjKGJhLCAweDAxYmEgLyogQ29kZU5hbWUgKi8sIHdyaXRlX1hMVW5pY29kZVN0cmluZyhjbmFtZSwgb3B0cykpO1xuXHQvKiAqV2ViUHViICpDZWxsV2F0Y2ggW1NoZWV0RXh0XSAqL1xuXHRpZihiOCkgd3JpdGVfRkVBVChiYSwgd3MpO1xuXHQvKiAqRkVBVDExICpSRUNPUkQxMiAqL1xuXHR3cml0ZV9iaWZmX3JlYyhiYSwgMHgwMDBhIC8qIEVPRiAqLyk7XG5cdHJldHVybiBiYS5lbmQoKTtcbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAuMyAqL1xuZnVuY3Rpb24gd3JpdGVfYmlmZjhfZ2xvYmFsKHdiLyo6V29ya2Jvb2sqLywgYnVmcywgb3B0cy8qOldyaXRlT3B0cyovKSB7XG5cdHZhciBBID0gYnVmX2FycmF5KCk7XG5cdHZhciBfV0IvKjpXQldCUHJvcHMqLyA9ICgod2J8fHt9KS5Xb3JrYm9va3x8e30vKjphbnkqLyk7XG5cdHZhciBfc2hlZXRzLyo6QXJyYXk8V0JXU1Byb3A+Ki8gPSAoX1dCLlNoZWV0c3x8W10pO1xuXHR2YXIgX3diLyo6V0JQcm9wcyovID0gLyo6OigoKi9fV0IuV0JQcm9wc3x8ey8qOjpDb2RlTmFtZTpcIlRoaXNXb3JrYm9va1wiKi99Lyo6OiApOmFueSkqLztcblx0dmFyIGI4ID0gb3B0cy5iaWZmID09IDgsIGI1ID0gb3B0cy5iaWZmID09IDU7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDgwOSwgd3JpdGVfQk9GKHdiLCAweDA1LCBvcHRzKSk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJ4bGFcIikgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMDg3IC8qIEFkZGluICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMGUxIC8qIEludGVyZmFjZUhkciAqLywgYjggPyB3cml0ZXVpbnQxNigweDA0YjApIDogbnVsbCk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBjMSAvKiBNbXMgKi8sIHdyaXRlemVyb2VzKDIpKTtcblx0aWYoYjUpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBiZiAvKiBUb29sYmFySGRyICovKTtcblx0aWYoYjUpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBjMCAvKiBUb29sYmFyRW5kICovKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMGUyIC8qIEludGVyZmFjZUVuZCAqLyk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA1YyAvKiBXcml0ZUFjY2VzcyAqLywgd3JpdGVfV3JpdGVBY2Nlc3MoXCJTaGVldEpTXCIsIG9wdHMpKTtcblx0LyogW0ZpbGVTaGFyaW5nXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwNDIgLyogQ29kZVBhZ2UgKi8sIHdyaXRldWludDE2KGI4ID8gMHgwNGIwIDogMHgwNEU0KSk7XG5cdC8qICoyMDQ3IExlbCAqL1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMTYxIC8qIERTRiAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWMwIC8qIEV4Y2VsOUZpbGUgKi8pO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAxM2QgLyogUlJUYWJJZCAqLywgd3JpdGVfUlJUYWJJZCh3Yi5TaGVldE5hbWVzLmxlbmd0aCkpO1xuXHRpZihiOCAmJiB3Yi52YmFyYXcpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDBkMyAvKiBPYlByb2ogKi8pO1xuXHQvKiBbT2JOb01hY3Jvc10gKi9cblx0aWYoYjggJiYgd2IudmJhcmF3KSB7XG5cdFx0dmFyIGNuYW1lLyo6c3RyaW5nKi8gPSBfd2IuQ29kZU5hbWUgfHwgXCJUaGlzV29ya2Jvb2tcIjtcblx0XHR3cml0ZV9iaWZmX3JlYyhBLCAweDAxYmEgLyogQ29kZU5hbWUgKi8sIHdyaXRlX1hMVW5pY29kZVN0cmluZyhjbmFtZSwgb3B0cykpO1xuXHR9XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA5YyAvKiBCdWlsdEluRm5Hcm91cENvdW50ICovLCB3cml0ZXVpbnQxNigweDExKSk7XG5cdC8qICpGbkdyb3VwTmFtZSAqRm5HcnAxMiAqL1xuXHQvKiAqTGJsICovXG5cdC8qIFtPbGVPYmplY3RTaXplXSAqL1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMTkgLyogV2luUHJvdGVjdCAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAxMiAvKiBQcm90ZWN0ICovLCB3cml0ZWJvb2woZmFsc2UpKTtcblx0d3JpdGVfYmlmZl9yZWMoQSwgMHgwMDEzIC8qIFBhc3N3b3JkICovLCB3cml0ZXVpbnQxNigwKSk7XG5cdGlmKGI4KSB3cml0ZV9iaWZmX3JlYyhBLCAweDAxYWYgLyogUHJvdDRSZXYgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWJjIC8qIFByb3Q0UmV2UGFzcyAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwM2QgLyogV2luZG93MSAqLywgd3JpdGVfV2luZG93MShvcHRzKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDA0MCAvKiBCYWNrdXAgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwOGQgLyogSGlkZU9iaiAqLywgd3JpdGV1aW50MTYoMCkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwMjIgLyogRGF0ZTE5MDQgKi8sIHdyaXRlYm9vbChzYWZlMTkwNCh3Yik9PVwidHJ1ZVwiKSk7XG5cdHdyaXRlX2JpZmZfcmVjKEEsIDB4MDAwZSAvKiBDYWxjUHJlY2lzaW9uICovLCB3cml0ZWJvb2wodHJ1ZSkpO1xuXHRpZihiOCkgd3JpdGVfYmlmZl9yZWMoQSwgMHgwMWI3IC8qIFJlZnJlc2hBbGwgKi8sIHdyaXRlYm9vbChmYWxzZSkpO1xuXHR3cml0ZV9iaWZmX3JlYyhBLCAweDAwREEgLyogQm9va0Jvb2wgKi8sIHdyaXRldWludDE2KDApKTtcblx0LyogLi4uICovXG5cdHdyaXRlX0ZPTlRTX2JpZmY4KEEsIHdiLCBvcHRzKTtcblx0d3JpdGVfRk1UU19iaWZmOChBLCB3Yi5TU0YsIG9wdHMpO1xuXHR3cml0ZV9DRUxMWEZTX2JpZmY4KEEsIG9wdHMpO1xuXHQvKiAuLi4gKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEEsIDB4MDE2MCAvKiBVc2VzRUxGcyAqLywgd3JpdGVib29sKGZhbHNlKSk7XG5cdHZhciBhID0gQS5lbmQoKTtcblxuXHR2YXIgQyA9IGJ1Zl9hcnJheSgpO1xuXHQvKiBNRVRBREFUQSBbTVRSU2V0dGluZ3NdIFtGb3JjZUZ1bGxDYWxjdWxhdGlvbl0gKi9cblx0aWYoYjgpIHdyaXRlX2JpZmZfcmVjKEMsIDB4MDA4Qywgd3JpdGVfQ291bnRyeSgpKTtcblx0LyogKlNVUEJPT0sgKkxCTCAqUlREIFtSZWNhbGNJZF0gKkhGUGljdHVyZSAqTVNPRFJBV0lOR0dST1VQICovXG5cblx0LyogQklGRjg6IFtTU1QgKkNvbnRpbnVlXSBFeHRTU1QgKi9cblx0aWYoYjggJiYgb3B0cy5TdHJpbmdzKSB3cml0ZV9iaWZmX2NvbnRpbnVlKEMsIDB4MDBGQywgd3JpdGVfU1NUKG9wdHMuU3RyaW5ncywgb3B0cykpO1xuXG5cdC8qICpXZWJQdWIgW1dPcHRdIFtDckVycl0gW0Jvb2tFeHRdICpGZWF0SGRyICpEQ29ubiBbVEhFTUVdIFtDb21wcmVzc1BpY3R1cmVzXSBbQ29tcGF0MTJdIFtHVUlEVHlwZUxpYl0gKi9cblx0d3JpdGVfYmlmZl9yZWMoQywgMHgwMDBBIC8qIEVPRiAqLyk7XG5cdHZhciBjID0gQy5lbmQoKTtcblxuXHR2YXIgQiA9IGJ1Zl9hcnJheSgpO1xuXHR2YXIgYmxlbiA9IDAsIGogPSAwO1xuXHRmb3IoaiA9IDA7IGogPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytqKSBibGVuICs9IChiOCA/IDEyIDogMTEpICsgKGI4ID8gMiA6IDEpICogd2IuU2hlZXROYW1lc1tqXS5sZW5ndGg7XG5cdHZhciBzdGFydCA9IGEubGVuZ3RoICsgYmxlbiArIGMubGVuZ3RoO1xuXHRmb3IoaiA9IDA7IGogPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytqKSB7XG5cdFx0dmFyIF9zaGVldC8qOldCV1NQcm9wKi8gPSBfc2hlZXRzW2pdIHx8ICh7fS8qOmFueSovKTtcblx0XHR3cml0ZV9iaWZmX3JlYyhCLCAweDAwODUgLyogQm91bmRTaGVldDggKi8sIHdyaXRlX0JvdW5kU2hlZXQ4KHtwb3M6c3RhcnQsIGhzOl9zaGVldC5IaWRkZW58fDAsIGR0OjAsIG5hbWU6d2IuU2hlZXROYW1lc1tqXX0sIG9wdHMpKTtcblx0XHRzdGFydCArPSBidWZzW2pdLmxlbmd0aDtcblx0fVxuXHQvKiAxKkJvdW5kU2hlZXQ4ICovXG5cdHZhciBiID0gQi5lbmQoKTtcblx0aWYoYmxlbiAhPSBiLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKFwiQlM4IFwiICsgYmxlbiArIFwiICE9IFwiICsgYi5sZW5ndGgpO1xuXG5cdHZhciBvdXQgPSBbXTtcblx0aWYoYS5sZW5ndGgpIG91dC5wdXNoKGEpO1xuXHRpZihiLmxlbmd0aCkgb3V0LnB1c2goYik7XG5cdGlmKGMubGVuZ3RoKSBvdXQucHVzaChjKTtcblx0cmV0dXJuIGJjb25jYXQob3V0KTtcbn1cblxuLyogW01TLVhMU10gMi4xLjcuMjAgV29ya2Jvb2sgU3RyZWFtICovXG5mdW5jdGlvbiB3cml0ZV9iaWZmOF9idWYod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgYnVmcyA9IFtdO1xuXG5cdGlmKHdiICYmICF3Yi5TU0YpIHtcblx0XHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0fVxuXHRpZih3YiAmJiB3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0by5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgby5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG8uc3NmID0gd2IuU1NGO1xuXHR9XG5cblx0by5TdHJpbmdzID0gLyo6OigoKi9bXS8qOjogOmFueSk6U1NUKSovOyBvLlN0cmluZ3MuQ291bnQgPSAwOyBvLlN0cmluZ3MuVW5pcXVlID0gMDtcblx0Zml4X3dyaXRlX29wdHMobyk7XG5cblx0by5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG8uY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGZvcih2YXIgaSA9IDA7IGkgPCB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSBidWZzW2J1ZnMubGVuZ3RoXSA9IHdyaXRlX3dzX2JpZmY4KGksIG8sIHdiKTtcblx0YnVmcy51bnNoaWZ0KHdyaXRlX2JpZmY4X2dsb2JhbCh3YiwgYnVmcywgbykpO1xuXHRyZXR1cm4gYmNvbmNhdChidWZzKTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfYmlmZl9idWYod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pIHtcblx0Zm9yKHZhciBpID0gMDsgaSA8PSB3Yi5TaGVldE5hbWVzLmxlbmd0aDsgKytpKSB7XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaV1dO1xuXHRcdGlmKCF3cyB8fCAhd3NbXCIhcmVmXCJdKSBjb250aW51ZTtcblx0XHR2YXIgcmFuZ2UgPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRpZihyYW5nZS5lLmMgPiAyNTUpIHsgLy8gbm90ZTogMjU1IGlzIElWXG5cdFx0aWYodHlwZW9mIGNvbnNvbGUgIT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlLmVycm9yKSBjb25zb2xlLmVycm9yKFwiV29ya3NoZWV0ICdcIiArIHdiLlNoZWV0TmFtZXNbaV0gKyBcIicgZXh0ZW5kcyBiZXlvbmQgY29sdW1uIElWICgyNTUpLiAgRGF0YSBtYXkgYmUgbG9zdC5cIik7XG5cdFx0fVxuXHR9XG5cblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHRzd2l0Y2goby5iaWZmIHx8IDIpIHtcblx0XHRjYXNlIDg6IGNhc2UgNTogcmV0dXJuIHdyaXRlX2JpZmY4X2J1Zih3Yiwgb3B0cyk7XG5cdFx0Y2FzZSA0OiBjYXNlIDM6IGNhc2UgMjogcmV0dXJuIHdyaXRlX2JpZmYyX2J1Zih3Yiwgb3B0cyk7XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiaW52YWxpZCB0eXBlIFwiICsgby5ib29rVHlwZSArIFwiIGZvciBCSUZGXCIpO1xufVxuLyogbm90ZTogYnJvd3NlciBET00gZWxlbWVudCBjYW5ub3Qgc2VlIG1zby0gc3R5bGUgYXR0cnMsIG11c3QgcGFyc2UgKi9cbmZ1bmN0aW9uIGh0bWxfdG9fc2hlZXQoc3RyLyo6c3RyaW5nKi8sIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHRpZihERU5TRSAhPSBudWxsICYmIG9wdHMuZGVuc2UgPT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdHN0ciA9IHN0ci5yZXBsYWNlKC88IS0tLio/LS0+L2csIFwiXCIpO1xuXHR2YXIgbXRjaC8qOmFueSovID0gc3RyLm1hdGNoKC88dGFibGUvaSk7XG5cdGlmKCFtdGNoKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIEhUTUw6IGNvdWxkIG5vdCBmaW5kIDx0YWJsZT5cIik7XG5cdHZhciBtdGNoMi8qOmFueSovID0gc3RyLm1hdGNoKC88XFwvdGFibGUvaSk7XG5cdHZhciBpLyo6bnVtYmVyKi8gPSBtdGNoLmluZGV4LCBqLyo6bnVtYmVyKi8gPSBtdGNoMiAmJiBtdGNoMi5pbmRleCB8fCBzdHIubGVuZ3RoO1xuXHR2YXIgcm93cyA9IHNwbGl0X3JlZ2V4KHN0ci5zbGljZShpLCBqKSwgLyg6Pzx0cltePl0qPikvaSwgXCI8dHI+XCIpO1xuXHR2YXIgUiA9IC0xLCBDID0gMCwgUlMgPSAwLCBDUyA9IDA7XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSB7czp7cjoxMDAwMDAwMCwgYzoxMDAwMDAwMH0sZTp7cjowLGM6MH19O1xuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXTtcblx0Zm9yKGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7ICsraSkge1xuXHRcdHZhciByb3cgPSByb3dzW2ldLnRyaW0oKTtcblx0XHR2YXIgaGQgPSByb3cuc2xpY2UoMCwzKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGlmKGhkID09IFwiPHRyXCIpIHsgKytSOyBpZihvcHRzLnNoZWV0Um93cyAmJiBvcHRzLnNoZWV0Um93cyA8PSBSKSB7IC0tUjsgYnJlYWs7IH0gQyA9IDA7IGNvbnRpbnVlOyB9XG5cdFx0aWYoaGQgIT0gXCI8dGRcIiAmJiBoZCAhPSBcIjx0aFwiKSBjb250aW51ZTtcblx0XHR2YXIgY2VsbHMgPSByb3cuc3BsaXQoLzxcXC90W2RoXT4vaSk7XG5cdFx0Zm9yKGogPSAwOyBqIDwgY2VsbHMubGVuZ3RoOyArK2opIHtcblx0XHRcdHZhciBjZWxsID0gY2VsbHNbal0udHJpbSgpO1xuXHRcdFx0aWYoIWNlbGwubWF0Y2goLzx0W2RoXS9pKSkgY29udGludWU7XG5cdFx0XHR2YXIgbSA9IGNlbGwsIGNjID0gMDtcblx0XHRcdC8qIFRPRE86IHBhcnNlIHN0eWxlcyBldGMgKi9cblx0XHRcdHdoaWxlKG0uY2hhckF0KDApID09IFwiPFwiICYmIChjYyA9IG0uaW5kZXhPZihcIj5cIikpID4gLTEpIG0gPSBtLnNsaWNlKGNjKzEpO1xuXHRcdFx0Zm9yKHZhciBtaWR4ID0gMDsgbWlkeCA8IG1lcmdlcy5sZW5ndGg7ICsrbWlkeCkge1xuXHRcdFx0XHR2YXIgX21lcmdlLyo6UmFuZ2UqLyA9IG1lcmdlc1ttaWR4XTtcblx0XHRcdFx0aWYoX21lcmdlLnMuYyA9PSBDICYmIF9tZXJnZS5zLnIgPCBSICYmIFIgPD0gX21lcmdlLmUucikgeyBDID0gX21lcmdlLmUuYyArIDE7IG1pZHggPSAtMTsgfVxuXHRcdFx0fVxuXHRcdFx0dmFyIHRhZyA9IHBhcnNleG1sdGFnKGNlbGwuc2xpY2UoMCwgY2VsbC5pbmRleE9mKFwiPlwiKSkpO1xuXHRcdFx0Q1MgPSB0YWcuY29sc3BhbiA/ICt0YWcuY29sc3BhbiA6IDE7XG5cdFx0XHRpZigoUlMgPSArdGFnLnJvd3NwYW4pPjEgfHwgQ1M+MSkgbWVyZ2VzLnB1c2goe3M6e3I6UixjOkN9LGU6e3I6UiArIChSU3x8MSkgLSAxLCBjOkMgKyBDUyAtIDF9fSk7XG5cdFx0XHR2YXIgX3QvKjpzdHJpbmcqLyA9IHRhZy50IHx8IHRhZ1tcImRhdGEtdFwiXSB8fCBcIlwiO1xuXHRcdFx0LyogVE9ETzogZ2VuZXJhdGUgc3R1YiBjZWxscyAqL1xuXHRcdFx0aWYoIW0ubGVuZ3RoKSB7IEMgKz0gQ1M7IGNvbnRpbnVlOyB9XG5cdFx0XHRtID0gaHRtbGRlY29kZShtKTtcblx0XHRcdGlmKHJhbmdlLnMuciA+IFIpIHJhbmdlLnMuciA9IFI7IGlmKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XG5cdFx0XHRpZihyYW5nZS5zLmMgPiBDKSByYW5nZS5zLmMgPSBDOyBpZihyYW5nZS5lLmMgPCBDKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0aWYoIW0ubGVuZ3RoKSB7IEMgKz0gQ1M7IGNvbnRpbnVlOyB9XG5cdFx0XHR2YXIgby8qOkNlbGwqLyA9IHt0OidzJywgdjptfTtcblx0XHRcdGlmKG9wdHMucmF3IHx8ICFtLnRyaW0oKS5sZW5ndGggfHwgX3QgPT0gJ3MnKXt9XG5cdFx0XHRlbHNlIGlmKG0gPT09ICdUUlVFJykgbyA9IHt0OidiJywgdjp0cnVlfTtcblx0XHRcdGVsc2UgaWYobSA9PT0gJ0ZBTFNFJykgbyA9IHt0OidiJywgdjpmYWxzZX07XG5cdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bShtKSkpIG8gPSB7dDonbicsIHY6ZnV6enludW0obSl9O1xuXHRcdFx0ZWxzZSBpZighaXNOYU4oZnV6enlkYXRlKG0pLmdldERhdGUoKSkpIHtcblx0XHRcdFx0byA9ICh7dDonZCcsIHY6cGFyc2VEYXRlKG0pfS8qOmFueSovKTtcblx0XHRcdFx0aWYoIW9wdHMuY2VsbERhdGVzKSBvID0gKHt0OiduJywgdjpkYXRlbnVtKG8udil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRvLnogPSBvcHRzLmRhdGVORiB8fCB0YWJsZV9mbXRbMTRdO1xuXHRcdFx0fVxuXHRcdFx0aWYob3B0cy5kZW5zZSkgeyBpZighd3NbUl0pIHdzW1JdID0gW107IHdzW1JdW0NdID0gbzsgfVxuXHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7cjpSLCBjOkN9KV0gPSBvO1xuXHRcdFx0QyArPSBDUztcblx0XHR9XG5cdH1cblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGlmKG1lcmdlcy5sZW5ndGgpIHdzW1wiIW1lcmdlc1wiXSA9IG1lcmdlcztcblx0cmV0dXJuIHdzO1xufVxuZnVuY3Rpb24gbWFrZV9odG1sX3Jvdyh3cy8qOldvcmtzaGVldCovLCByLyo6UmFuZ2UqLywgUi8qOm51bWJlciovLCBvLyo6U2hlZXQySFRNTE9wdHMqLykvKjpzdHJpbmcqLyB7XG5cdHZhciBNLyo6QXJyYXk8UmFuZ2U+Ki8gPSAod3NbJyFtZXJnZXMnXSB8fFtdKTtcblx0dmFyIG9vLyo6QXJyYXk8c3RyaW5nPiovID0gW107XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHR2YXIgUlMgPSAwLCBDUyA9IDA7XG5cdFx0Zm9yKHZhciBqID0gMDsgaiA8IE0ubGVuZ3RoOyArK2opIHtcblx0XHRcdGlmKE1bal0ucy5yID4gUiB8fCBNW2pdLnMuYyA+IEMpIGNvbnRpbnVlO1xuXHRcdFx0aWYoTVtqXS5lLnIgPCBSIHx8IE1bal0uZS5jIDwgQykgY29udGludWU7XG5cdFx0XHRpZihNW2pdLnMuciA8IFIgfHwgTVtqXS5zLmMgPCBDKSB7IFJTID0gLTE7IGJyZWFrOyB9XG5cdFx0XHRSUyA9IE1bal0uZS5yIC0gTVtqXS5zLnIgKyAxOyBDUyA9IE1bal0uZS5jIC0gTVtqXS5zLmMgKyAxOyBicmVhaztcblx0XHR9XG5cdFx0aWYoUlMgPCAwKSBjb250aW51ZTtcblx0XHR2YXIgY29vcmQgPSBlbmNvZGVfY2VsbCh7cjpSLGM6Q30pO1xuXHRcdHZhciBjZWxsID0gby5kZW5zZSA/ICh3c1tSXXx8W10pW0NdIDogd3NbY29vcmRdO1xuXHRcdC8qIFRPRE86IGh0bWwgZW50aXRpZXMgKi9cblx0XHR2YXIgdyA9IChjZWxsICYmIGNlbGwudiAhPSBudWxsKSAmJiAoY2VsbC5oIHx8IGVzY2FwZWh0bWwoY2VsbC53IHx8IChmb3JtYXRfY2VsbChjZWxsKSwgY2VsbC53KSB8fCBcIlwiKSkgfHwgXCJcIjtcblx0XHR2YXIgc3AgPSAoe30vKjphbnkqLyk7XG5cdFx0aWYoUlMgPiAxKSBzcC5yb3dzcGFuID0gUlM7XG5cdFx0aWYoQ1MgPiAxKSBzcC5jb2xzcGFuID0gQ1M7XG5cdFx0aWYoby5lZGl0YWJsZSkgdyA9ICc8c3BhbiBjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCI+JyArIHcgKyAnPC9zcGFuPic7XG5cdFx0ZWxzZSBpZihjZWxsKSB7XG5cdFx0XHRzcFtcImRhdGEtdFwiXSA9IGNlbGwgJiYgY2VsbC50IHx8ICd6Jztcblx0XHRcdGlmKGNlbGwudiAhPSBudWxsKSBzcFtcImRhdGEtdlwiXSA9IGNlbGwudjtcblx0XHRcdGlmKGNlbGwueiAhPSBudWxsKSBzcFtcImRhdGEtelwiXSA9IGNlbGwuejtcblx0XHRcdGlmKGNlbGwubCAmJiAoY2VsbC5sLlRhcmdldCB8fCBcIiNcIikuY2hhckF0KDApICE9IFwiI1wiKSB3ID0gJzxhIGhyZWY9XCInICsgY2VsbC5sLlRhcmdldCArJ1wiPicgKyB3ICsgJzwvYT4nO1xuXHRcdH1cblx0XHRzcC5pZCA9IChvLmlkIHx8IFwic2pzXCIpICsgXCItXCIgKyBjb29yZDtcblx0XHRvby5wdXNoKHdyaXRleHRhZygndGQnLCB3LCBzcCkpO1xuXHR9XG5cdHZhciBwcmVhbWJsZSA9IFwiPHRyPlwiO1xuXHRyZXR1cm4gcHJlYW1ibGUgKyBvby5qb2luKFwiXCIpICsgXCI8L3RyPlwiO1xufVxuXG52YXIgSFRNTF9CRUdJTiA9ICc8aHRtbD48aGVhZD48bWV0YSBjaGFyc2V0PVwidXRmLThcIi8+PHRpdGxlPlNoZWV0SlMgVGFibGUgRXhwb3J0PC90aXRsZT48L2hlYWQ+PGJvZHk+JztcbnZhciBIVE1MX0VORCA9ICc8L2JvZHk+PC9odG1sPic7XG5cbmZ1bmN0aW9uIGh0bWxfdG9fd29ya2Jvb2soc3RyLyo6c3RyaW5nKi8sIG9wdHMpLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBtdGNoID0gc3RyLm1hdGNoKC88dGFibGVbXFxzXFxTXSo/PltcXHNcXFNdKj88XFwvdGFibGU+L2dpKTtcblx0aWYoIW10Y2ggfHwgbXRjaC5sZW5ndGggPT0gMCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBIVE1MOiBjb3VsZCBub3QgZmluZCA8dGFibGU+XCIpO1xuXHRpZihtdGNoLmxlbmd0aCA9PSAxKSByZXR1cm4gc2hlZXRfdG9fd29ya2Jvb2soaHRtbF90b19zaGVldChtdGNoWzBdLCBvcHRzKSwgb3B0cyk7XG5cdHZhciB3YiA9IGJvb2tfbmV3KCk7XG5cdG10Y2guZm9yRWFjaChmdW5jdGlvbihzLCBpZHgpIHsgYm9va19hcHBlbmRfc2hlZXQod2IsIGh0bWxfdG9fc2hlZXQocywgb3B0cyksIFwiU2hlZXRcIiArIChpZHgrMSkpOyB9KTtcblx0cmV0dXJuIHdiO1xufVxuXG5mdW5jdGlvbiBtYWtlX2h0bWxfcHJlYW1ibGUod3MvKjpXb3Jrc2hlZXQqLywgUi8qOlJhbmdlKi8sIG8vKjpTaGVldDJIVE1MT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRyZXR1cm4gb3V0LmpvaW4oXCJcIikgKyAnPHRhYmxlJyArIChvICYmIG8uaWQgPyAnIGlkPVwiJyArIG8uaWQgKyAnXCInIDogXCJcIikgKyAnPic7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2h0bWwod3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJIVE1MT3B0cyovLyosIHdiOj9Xb3JrYm9vayovKS8qOnN0cmluZyovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgaGVhZGVyID0gby5oZWFkZXIgIT0gbnVsbCA/IG8uaGVhZGVyIDogSFRNTF9CRUdJTjtcblx0dmFyIGZvb3RlciA9IG8uZm9vdGVyICE9IG51bGwgPyBvLmZvb3RlciA6IEhUTUxfRU5EO1xuXHR2YXIgb3V0Lyo6QXJyYXk8c3RyaW5nPiovID0gW2hlYWRlcl07XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdG91dC5wdXNoKG1ha2VfaHRtbF9wcmVhbWJsZSh3cywgciwgbykpO1xuXHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSBvdXQucHVzaChtYWtlX2h0bWxfcm93KHdzLCByLCBSLCBvKSk7XG5cdG91dC5wdXNoKFwiPC90YWJsZT5cIiArIGZvb3Rlcik7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfYWRkX2RvbSh3cy8qOldvcmtzaGVldCovLCB0YWJsZS8qOkhUTUxFbGVtZW50Ki8sIF9vcHRzLyo6P2FueSovKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG9wdHMgPSBfb3B0cyB8fCB7fTtcblx0aWYoREVOU0UgIT0gbnVsbCkgb3B0cy5kZW5zZSA9IERFTlNFO1xuXHR2YXIgb3JfUiA9IDAsIG9yX0MgPSAwO1xuXHRpZihvcHRzLm9yaWdpbiAhPSBudWxsKSB7XG5cdFx0aWYodHlwZW9mIG9wdHMub3JpZ2luID09ICdudW1iZXInKSBvcl9SID0gb3B0cy5vcmlnaW47XG5cdFx0ZWxzZSB7XG5cdFx0XHR2YXIgX29yaWdpbi8qOkNlbGxBZGRyZXNzKi8gPSB0eXBlb2Ygb3B0cy5vcmlnaW4gPT0gXCJzdHJpbmdcIiA/IGRlY29kZV9jZWxsKG9wdHMub3JpZ2luKSA6IG9wdHMub3JpZ2luO1xuXHRcdFx0b3JfUiA9IF9vcmlnaW4ucjsgb3JfQyA9IF9vcmlnaW4uYztcblx0XHR9XG5cdH1cblxuXHR2YXIgcm93cy8qOkhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZVJvd0VsZW1lbnQ+Ki8gPSB0YWJsZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgndHInKTtcblx0dmFyIHNoZWV0Um93cyA9IE1hdGgubWluKG9wdHMuc2hlZXRSb3dzfHwxMDAwMDAwMCwgcm93cy5sZW5ndGgpO1xuXHR2YXIgcmFuZ2UvKjpSYW5nZSovID0ge3M6e3I6MCxjOjB9LGU6e3I6b3JfUixjOm9yX0N9fTtcblx0aWYod3NbXCIhcmVmXCJdKSB7XG5cdFx0dmFyIF9yYW5nZS8qOlJhbmdlKi8gPSBkZWNvZGVfcmFuZ2Uod3NbXCIhcmVmXCJdKTtcblx0XHRyYW5nZS5zLnIgPSBNYXRoLm1pbihyYW5nZS5zLnIsIF9yYW5nZS5zLnIpO1xuXHRcdHJhbmdlLnMuYyA9IE1hdGgubWluKHJhbmdlLnMuYywgX3JhbmdlLnMuYyk7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBfcmFuZ2UuZS5yKTtcblx0XHRyYW5nZS5lLmMgPSBNYXRoLm1heChyYW5nZS5lLmMsIF9yYW5nZS5lLmMpO1xuXHRcdGlmKG9yX1IgPT0gLTEpIHJhbmdlLmUuciA9IG9yX1IgPSBfcmFuZ2UuZS5yICsgMTtcblx0fVxuXHR2YXIgbWVyZ2VzLyo6QXJyYXk8UmFuZ2U+Ki8gPSBbXSwgbWlkeCA9IDA7XG5cdHZhciByb3dpbmZvLyo6QXJyYXk8Um93SW5mbz4qLyA9IHdzW1wiIXJvd3NcIl0gfHwgKHdzW1wiIXJvd3NcIl0gPSBbXSk7XG5cdHZhciBfUiA9IDAsIFIgPSAwLCBfQyA9IDAsIEMgPSAwLCBSUyA9IDAsIENTID0gMDtcblx0aWYoIXdzW1wiIWNvbHNcIl0pIHdzWychY29scyddID0gW107XG5cdGZvcig7IF9SIDwgcm93cy5sZW5ndGggJiYgUiA8IHNoZWV0Um93czsgKytfUikge1xuXHRcdHZhciByb3cvKjpIVE1MVGFibGVSb3dFbGVtZW50Ki8gPSByb3dzW19SXTtcblx0XHRpZiAoaXNfZG9tX2VsZW1lbnRfaGlkZGVuKHJvdykpIHtcblx0XHRcdGlmIChvcHRzLmRpc3BsYXkpIGNvbnRpbnVlO1xuXHRcdFx0cm93aW5mb1tSXSA9IHtoaWRkZW46IHRydWV9O1xuXHRcdH1cblx0XHR2YXIgZWx0cy8qOkhUTUxDb2xsZWN0aW9uPEhUTUxUYWJsZUNlbGxFbGVtZW50PiovID0gKHJvdy5jaGlsZHJlbi8qOmFueSovKTtcblx0XHRmb3IoX0MgPSBDID0gMDsgX0MgPCBlbHRzLmxlbmd0aDsgKytfQykge1xuXHRcdFx0dmFyIGVsdC8qOkhUTUxUYWJsZUNlbGxFbGVtZW50Ki8gPSBlbHRzW19DXTtcblx0XHRcdGlmIChvcHRzLmRpc3BsYXkgJiYgaXNfZG9tX2VsZW1lbnRfaGlkZGVuKGVsdCkpIGNvbnRpbnVlO1xuXHRcdFx0dmFyIHYvKjo/c3RyaW5nKi8gPSBlbHQuaGFzQXR0cmlidXRlKCdkYXRhLXYnKSA/IGVsdC5nZXRBdHRyaWJ1dGUoJ2RhdGEtdicpIDogZWx0Lmhhc0F0dHJpYnV0ZSgndicpID8gZWx0LmdldEF0dHJpYnV0ZSgndicpIDogaHRtbGRlY29kZShlbHQuaW5uZXJIVE1MKTtcblx0XHRcdHZhciB6Lyo6P3N0cmluZyovID0gZWx0LmdldEF0dHJpYnV0ZSgnZGF0YS16JykgfHwgZWx0LmdldEF0dHJpYnV0ZSgneicpO1xuXHRcdFx0Zm9yKG1pZHggPSAwOyBtaWR4IDwgbWVyZ2VzLmxlbmd0aDsgKyttaWR4KSB7XG5cdFx0XHRcdHZhciBtLyo6UmFuZ2UqLyA9IG1lcmdlc1ttaWR4XTtcblx0XHRcdFx0aWYobS5zLmMgPT0gQyArIG9yX0MgJiYgbS5zLnIgPCBSICsgb3JfUiAmJiBSICsgb3JfUiA8PSBtLmUucikgeyBDID0gbS5lLmMrMSAtIG9yX0M7IG1pZHggPSAtMTsgfVxuXHRcdFx0fVxuXHRcdFx0LyogVE9ETzogZmlndXJlIG91dCBob3cgdG8gZXh0cmFjdCBub25zdGFuZGFyZCBtc28tIHN0eWxlICovXG5cdFx0XHRDUyA9ICtlbHQuZ2V0QXR0cmlidXRlKFwiY29sc3BhblwiKSB8fCAxO1xuXHRcdFx0aWYoICgoUlMgPSAoK2VsdC5nZXRBdHRyaWJ1dGUoXCJyb3dzcGFuXCIpIHx8IDEpKSk+MSB8fCBDUz4xKSBtZXJnZXMucHVzaCh7czp7cjpSICsgb3JfUixjOkMgKyBvcl9DfSxlOntyOlIgKyBvcl9SICsgKFJTfHwxKSAtIDEsIGM6QyArIG9yX0MgKyAoQ1N8fDEpIC0gMX19KTtcblx0XHRcdHZhciBvLyo6Q2VsbCovID0ge3Q6J3MnLCB2OnZ9O1xuXHRcdFx0dmFyIF90Lyo6c3RyaW5nKi8gPSBlbHQuZ2V0QXR0cmlidXRlKFwiZGF0YS10XCIpIHx8IGVsdC5nZXRBdHRyaWJ1dGUoXCJ0XCIpIHx8IFwiXCI7XG5cdFx0XHRpZih2ICE9IG51bGwpIHtcblx0XHRcdFx0aWYodi5sZW5ndGggPT0gMCkgby50ID0gX3QgfHwgJ3onO1xuXHRcdFx0XHRlbHNlIGlmKG9wdHMucmF3IHx8IHYudHJpbSgpLmxlbmd0aCA9PSAwIHx8IF90ID09IFwic1wiKXt9XG5cdFx0XHRcdGVsc2UgaWYodiA9PT0gJ1RSVUUnKSBvID0ge3Q6J2InLCB2OnRydWV9O1xuXHRcdFx0XHRlbHNlIGlmKHYgPT09ICdGQUxTRScpIG8gPSB7dDonYicsIHY6ZmFsc2V9O1xuXHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eW51bSh2KSkpIG8gPSB7dDonbicsIHY6ZnV6enludW0odil9O1xuXHRcdFx0XHRlbHNlIGlmKCFpc05hTihmdXp6eWRhdGUodikuZ2V0RGF0ZSgpKSkge1xuXHRcdFx0XHRcdG8gPSAoe3Q6J2QnLCB2OnBhcnNlRGF0ZSh2KX0vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoIW9wdHMuY2VsbERhdGVzKSBvID0gKHt0OiduJywgdjpkYXRlbnVtKG8udil9Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdG8ueiA9IG9wdHMuZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmKG8ueiA9PT0gdW5kZWZpbmVkICYmIHogIT0gbnVsbCkgby56ID0gejtcblx0XHRcdC8qIFRoZSBmaXJzdCBsaW5rIGlzIHVzZWQuICBMaW5rcyBhcmUgYXNzdW1lZCB0byBiZSBmdWxseSBzcGVjaWZpZWQuXG5cdFx0XHQgKiBUT0RPOiBUaGUgcmlnaHQgd2F5IHRvIHByb2Nlc3MgcmVsYXRpdmUgbGlua3MgaXMgdG8gbWFrZSBhIG5ldyA8YT4gKi9cblx0XHRcdHZhciBsID0gXCJcIiwgQWVsdHMgPSBlbHQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJBXCIpO1xuXHRcdFx0aWYoQWVsdHMgJiYgQWVsdHMubGVuZ3RoKSBmb3IodmFyIEFlbHRpID0gMDsgQWVsdGkgPCBBZWx0cy5sZW5ndGg7ICsrQWVsdGkpXHRpZihBZWx0c1tBZWx0aV0uaGFzQXR0cmlidXRlKFwiaHJlZlwiKSkge1xuXHRcdFx0XHRsID0gQWVsdHNbQWVsdGldLmdldEF0dHJpYnV0ZShcImhyZWZcIik7IGlmKGwuY2hhckF0KDApICE9IFwiI1wiKSBicmVhaztcblx0XHRcdH1cblx0XHRcdGlmKGwgJiYgbC5jaGFyQXQoMCkgIT0gXCIjXCIpIG8ubCA9ICh7IFRhcmdldDogbCB9KTtcblx0XHRcdGlmKG9wdHMuZGVuc2UpIHsgaWYoIXdzW1IgKyBvcl9SXSkgd3NbUiArIG9yX1JdID0gW107IHdzW1IgKyBvcl9SXVtDICsgb3JfQ10gPSBvOyB9XG5cdFx0XHRlbHNlIHdzW2VuY29kZV9jZWxsKHtjOkMgKyBvcl9DLCByOlIgKyBvcl9SfSldID0gbztcblx0XHRcdGlmKHJhbmdlLmUuYyA8IEMgKyBvcl9DKSByYW5nZS5lLmMgPSBDICsgb3JfQztcblx0XHRcdEMgKz0gQ1M7XG5cdFx0fVxuXHRcdCsrUjtcblx0fVxuXHRpZihtZXJnZXMubGVuZ3RoKSB3c1snIW1lcmdlcyddID0gKHdzW1wiIW1lcmdlc1wiXSB8fCBbXSkuY29uY2F0KG1lcmdlcyk7XG5cdHJhbmdlLmUuciA9IE1hdGgubWF4KHJhbmdlLmUuciwgUiAtIDEgKyBvcl9SKTtcblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGlmKFIgPj0gc2hlZXRSb3dzKSB3c1snIWZ1bGxyZWYnXSA9IGVuY29kZV9yYW5nZSgocmFuZ2UuZS5yID0gcm93cy5sZW5ndGgtX1IrUi0xICsgb3JfUixyYW5nZSkpOyAvLyBXZSBjYW4gY291bnQgdGhlIHJlYWwgbnVtYmVyIG9mIHJvd3MgdG8gcGFyc2UgYnV0IHdlIGRvbid0IHRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlXG5cdHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gcGFyc2VfZG9tX3RhYmxlKHRhYmxlLyo6SFRNTEVsZW1lbnQqLywgX29wdHMvKjo/YW55Ki8pLyo6V29ya3NoZWV0Ki8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgd3MvKjpXb3Jrc2hlZXQqLyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdHJldHVybiBzaGVldF9hZGRfZG9tKHdzLCB0YWJsZSwgX29wdHMpO1xufVxuXG5mdW5jdGlvbiB0YWJsZV90b19ib29rKHRhYmxlLyo6SFRNTEVsZW1lbnQqLywgb3B0cy8qOj9hbnkqLykvKjpXb3JrYm9vayovIHtcblx0cmV0dXJuIHNoZWV0X3RvX3dvcmtib29rKHBhcnNlX2RvbV90YWJsZSh0YWJsZSwgb3B0cyksIG9wdHMpO1xufVxuXG5mdW5jdGlvbiBpc19kb21fZWxlbWVudF9oaWRkZW4oZWxlbWVudC8qOkhUTUxFbGVtZW50Ki8pLyo6Ym9vbGVhbiovIHtcblx0dmFyIGRpc3BsYXkvKjpzdHJpbmcqLyA9ICcnO1xuXHR2YXIgZ2V0X2NvbXB1dGVkX3N0eWxlLyo6P2Z1bmN0aW9uKi8gPSBnZXRfZ2V0X2NvbXB1dGVkX3N0eWxlX2Z1bmN0aW9uKGVsZW1lbnQpO1xuXHRpZihnZXRfY29tcHV0ZWRfc3R5bGUpIGRpc3BsYXkgPSBnZXRfY29tcHV0ZWRfc3R5bGUoZWxlbWVudCkuZ2V0UHJvcGVydHlWYWx1ZSgnZGlzcGxheScpO1xuXHRpZighZGlzcGxheSkgZGlzcGxheSA9IGVsZW1lbnQuc3R5bGUgJiYgZWxlbWVudC5zdHlsZS5kaXNwbGF5O1xuXHRyZXR1cm4gZGlzcGxheSA9PT0gJ25vbmUnO1xufVxuXG4vKiBnbG9iYWwgZ2V0Q29tcHV0ZWRTdHlsZSAqL1xuZnVuY3Rpb24gZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbihlbGVtZW50Lyo6SFRNTEVsZW1lbnQqLykvKjo/ZnVuY3Rpb24qLyB7XG5cdC8vIFRoZSBwcm9wZXIgZ2V0Q29tcHV0ZWRTdHlsZSBpbXBsZW1lbnRhdGlvbiBpcyB0aGUgb25lIGRlZmluZWQgaW4gdGhlIGVsZW1lbnQgd2luZG93XG5cdGlmKGVsZW1lbnQub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldyAmJiB0eXBlb2YgZWxlbWVudC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUgPT09ICdmdW5jdGlvbicpIHJldHVybiBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZTtcblx0Ly8gSWYgaXQgaXMgbm90IGF2YWlsYWJsZSwgdHJ5IHRvIGdldCBvbmUgZnJvbSB0aGUgZ2xvYmFsIG5hbWVzcGFjZVxuXHRpZih0eXBlb2YgZ2V0Q29tcHV0ZWRTdHlsZSA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIGdldENvbXB1dGVkU3R5bGU7XG5cdHJldHVybiBudWxsO1xufVxuLyogT3BlbkRvY3VtZW50ICovXG5mdW5jdGlvbiBwYXJzZV90ZXh0X3AodGV4dC8qOnN0cmluZyovLyo6OiwgdGFnKi8pLyo6QXJyYXk8YW55PiovIHtcblx0LyogNi4xLjIgV2hpdGUgU3BhY2UgQ2hhcmFjdGVycyAqL1xuXHR2YXIgZml4ZWQgPSB0ZXh0XG5cdFx0LnJlcGxhY2UoL1tcXHRcXHJcXG5dL2csIFwiIFwiKS50cmltKCkucmVwbGFjZSgvICsvZywgXCIgXCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnNcXC8+L2csXCIgXCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnMgdGV4dDpjPVwiKFxcZCspXCJcXC8+L2csIGZ1bmN0aW9uKCQkLCQxKSB7IHJldHVybiBBcnJheShwYXJzZUludCgkMSwxMCkrMSkuam9pbihcIiBcIik7IH0pXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OnRhYltePl0qXFwvPi9nLFwiXFx0XCIpXG5cdFx0LnJlcGxhY2UoLzx0ZXh0OmxpbmUtYnJlYWtcXC8+L2csXCJcXG5cIik7XG5cdHZhciB2ID0gdW5lc2NhcGV4bWwoZml4ZWQucmVwbGFjZSgvPFtePl0qPi9nLFwiXCIpKTtcblxuXHRyZXR1cm4gW3ZdO1xufVxuXG52YXIgbnVtYmVyX2Zvcm1hdHNfb2RzID0ge1xuXHQvKiBvZHMgbmFtZTogW3Nob3J0IHNzZiBmbXQsIGxvbmcgc3NmIGZtdF0gKi9cblx0ZGF5OiAgICAgICAgICAgW1wiZFwiLCAgIFwiZGRcIl0sXG5cdG1vbnRoOiAgICAgICAgIFtcIm1cIiwgICBcIm1tXCJdLFxuXHR5ZWFyOiAgICAgICAgICBbXCJ5XCIsICAgXCJ5eVwiXSxcblx0aG91cnM6ICAgICAgICAgW1wiaFwiLCAgIFwiaGhcIl0sXG5cdG1pbnV0ZXM6ICAgICAgIFtcIm1cIiwgICBcIm1tXCJdLFxuXHRzZWNvbmRzOiAgICAgICBbXCJzXCIsICAgXCJzc1wiXSxcblx0XCJhbS1wbVwiOiAgICAgICBbXCJBL1BcIiwgXCJBTS9QTVwiXSxcblx0XCJkYXktb2Ytd2Vla1wiOiBbXCJkZGRcIiwgXCJkZGRkXCJdLFxuXHRlcmE6ICAgICAgICAgICBbXCJlXCIsICAgXCJlZVwiXSxcblx0LyogdGhlcmUgaXMgbm8gbmF0aXZlIHJlcHJlc2VudGF0aW9uIG9mIExPIFwiUVwiIGZvcm1hdCAqL1xuXHRxdWFydGVyOiAgICAgICBbXCJcXFxcUW1cIiwgXCJtXFxcXFxcXCJ0aCBxdWFydGVyXFxcIlwiXVxufTtcblxuXG5mdW5jdGlvbiBwYXJzZV9jb250ZW50X3htbChkLyo6c3RyaW5nKi8sIF9vcHRzKS8qOldvcmtib29rKi8ge1xuXHRcdHZhciBvcHRzID0gX29wdHMgfHwge307XG5cdFx0aWYoREVOU0UgIT0gbnVsbCAmJiBvcHRzLmRlbnNlID09IG51bGwpIG9wdHMuZGVuc2UgPSBERU5TRTtcblx0XHR2YXIgc3RyID0geGxtbF9ub3JtYWxpemUoZCk7XG5cdFx0dmFyIHN0YXRlLyo6QXJyYXk8YW55PiovID0gW10sIHRtcDtcblx0XHR2YXIgdGFnLyo6OiA9IHt9Ki87XG5cdFx0dmFyIE5GdGFnID0ge25hbWU6XCJcIn0sIE5GID0gXCJcIiwgcGlkeCA9IDA7XG5cdFx0dmFyIHNoZWV0YWcvKjo6ID0ge25hbWU6XCJcIiwgJ+WQjeensCc6XCJcIn0qLztcblx0XHR2YXIgcm93dGFnLyo6OiA9IHsn6KGM5Y+3JzpcIlwifSovO1xuXHRcdHZhciBTaGVldHMgPSB7fSwgU2hlZXROYW1lcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRcdHZhciB3cyA9IG9wdHMuZGVuc2UgPyAoW10vKjphbnkqLykgOiAoe30vKjphbnkqLyk7XG5cdFx0dmFyIFJuLCBxLyo6OiA6YW55ID0gKHt0OlwiXCIsIHY6bnVsbCwgejpudWxsLCB3OlwiXCIsYzpbXSx9OmFueSkqLztcblx0XHR2YXIgY3RhZyA9ICh7dmFsdWU6XCJcIn0vKjphbnkqLyk7XG5cdFx0dmFyIHRleHRwID0gXCJcIiwgdGV4dHBpZHggPSAwLCB0ZXh0cHRhZy8qOjogPSB7fSovO1xuXHRcdHZhciB0ZXh0UiA9IFtdO1xuXHRcdHZhciBSID0gLTEsIEMgPSAtMSwgcmFuZ2UgPSB7czoge3I6MTAwMDAwMCxjOjEwMDAwMDAwfSwgZToge3I6MCwgYzowfX07XG5cdFx0dmFyIHJvd19vbCA9IDA7XG5cdFx0dmFyIG51bWJlcl9mb3JtYXRfbWFwID0ge307XG5cdFx0dmFyIG1lcmdlcy8qOkFycmF5PFJhbmdlPiovID0gW10sIG1yYW5nZSA9IHt9LCBtUiA9IDAsIG1DID0gMDtcblx0XHR2YXIgcm93aW5mby8qOkFycmF5PFJvd0luZm8+Ki8gPSBbXSwgcm93cGVhdCA9IDEsIGNvbHBlYXQgPSAxO1xuXHRcdHZhciBhcnJheWYvKjpBcnJheTxbUmFuZ2UsIHN0cmluZ10+Ki8gPSBbXTtcblx0XHR2YXIgV0IgPSB7TmFtZXM6W119O1xuXHRcdHZhciBhdGFnID0gKHt9Lyo6YW55Ki8pO1xuXHRcdHZhciBfUmVmLyo6W3N0cmluZywgc3RyaW5nXSovID0gW1wiXCIsIFwiXCJdO1xuXHRcdHZhciBjb21tZW50cy8qOkFycmF5PENvbW1lbnQ+Ki8gPSBbXSwgY29tbWVudC8qOkNvbW1lbnQqLyA9ICh7fS8qOmFueSovKTtcblx0XHR2YXIgY3JlYXRvciA9IFwiXCIsIGNyZWF0b3JpZHggPSAwO1xuXHRcdHZhciBpc3N0dWIgPSBmYWxzZSwgaW50YWJsZSA9IGZhbHNlO1xuXHRcdHZhciBpID0gMDtcblx0XHR4bG1scmVnZXgubGFzdEluZGV4ID0gMDtcblx0XHRzdHIgPSBzdHIucmVwbGFjZSgvPCEtLShbXFxzXFxTXSo/KS0tPi9tZyxcIlwiKS5yZXBsYWNlKC88IURPQ1RZUEVbXlxcW10qXFxbW15cXF1dKlxcXT4vZ20sXCJcIik7XG5cdFx0d2hpbGUoKFJuID0geGxtbHJlZ2V4LmV4ZWMoc3RyKSkpIHN3aXRjaCgoUm5bM109Um5bM10ucmVwbGFjZSgvXy4qJC8sXCJcIikpKSB7XG5cblx0XHRcdGNhc2UgJ3RhYmxlJzogY2FzZSAn5bel5L2c6KGoJzogLy8gOS4xLjIgPHRhYmxlOnRhYmxlPlxuXHRcdFx0XHRpZihSblsxXT09PScvJykge1xuXHRcdFx0XHRcdGlmKHJhbmdlLmUuYyA+PSByYW5nZS5zLmMgJiYgcmFuZ2UuZS5yID49IHJhbmdlLnMucikgd3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdFx0XHRcdFx0ZWxzZSB3c1snIXJlZiddID0gXCJBMTpBMVwiO1xuXHRcdFx0XHRcdGlmKG9wdHMuc2hlZXRSb3dzID4gMCAmJiBvcHRzLnNoZWV0Um93cyA8PSByYW5nZS5lLnIpIHtcblx0XHRcdFx0XHRcdHdzWychZnVsbHJlZiddID0gd3NbJyFyZWYnXTtcblx0XHRcdFx0XHRcdHJhbmdlLmUuciA9IG9wdHMuc2hlZXRSb3dzIC0gMTtcblx0XHRcdFx0XHRcdHdzWychcmVmJ10gPSBlbmNvZGVfcmFuZ2UocmFuZ2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihtZXJnZXMubGVuZ3RoKSB3c1snIW1lcmdlcyddID0gbWVyZ2VzO1xuXHRcdFx0XHRcdGlmKHJvd2luZm8ubGVuZ3RoKSB3c1tcIiFyb3dzXCJdID0gcm93aW5mbztcblx0XHRcdFx0XHRzaGVldGFnLm5hbWUgPSBzaGVldGFnWyflkI3np7AnXSB8fCBzaGVldGFnLm5hbWU7XG5cdFx0XHRcdFx0aWYodHlwZW9mIEpTT04gIT09ICd1bmRlZmluZWQnKSBKU09OLnN0cmluZ2lmeShzaGVldGFnKTtcblx0XHRcdFx0XHRTaGVldE5hbWVzLnB1c2goc2hlZXRhZy5uYW1lKTtcblx0XHRcdFx0XHRTaGVldHNbc2hlZXRhZy5uYW1lXSA9IHdzO1xuXHRcdFx0XHRcdGludGFibGUgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykge1xuXHRcdFx0XHRcdHNoZWV0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdFIgPSBDID0gLTE7XG5cdFx0XHRcdFx0cmFuZ2Uucy5yID0gcmFuZ2Uucy5jID0gMTAwMDAwMDA7IHJhbmdlLmUuciA9IHJhbmdlLmUuYyA9IDA7XG5cdFx0XHRcdFx0d3MgPSBvcHRzLmRlbnNlID8gKFtdLyo6YW55Ki8pIDogKHt9Lyo6YW55Ki8pOyBtZXJnZXMgPSBbXTtcblx0XHRcdFx0XHRyb3dpbmZvID0gW107XG5cdFx0XHRcdFx0aW50YWJsZSA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3RhYmxlLXJvdy1ncm91cCc6IC8vIDkuMS45IDx0YWJsZTp0YWJsZS1yb3ctZ3JvdXA+XG5cdFx0XHRcdGlmKFJuWzFdID09PSBcIi9cIikgLS1yb3dfb2w7IGVsc2UgKytyb3dfb2w7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAndGFibGUtcm93JzogY2FzZSAn6KGMJzogLy8gOS4xLjMgPHRhYmxlOnRhYmxlLXJvdz5cblx0XHRcdFx0aWYoUm5bMV0gPT09ICcvJykgeyBSKz1yb3dwZWF0OyByb3dwZWF0ID0gMTsgYnJlYWs7IH1cblx0XHRcdFx0cm93dGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0aWYocm93dGFnWyfooYzlj7cnXSkgUiA9IHJvd3RhZ1sn6KGM5Y+3J10gLSAxOyBlbHNlIGlmKFIgPT0gLTEpIFIgPSAwO1xuXHRcdFx0XHRyb3dwZWF0ID0gK3Jvd3RhZ1snbnVtYmVyLXJvd3MtcmVwZWF0ZWQnXSB8fCAxO1xuXHRcdFx0XHQvKiBUT0RPOiByZW1vdmUgbWFnaWMgKi9cblx0XHRcdFx0aWYocm93cGVhdCA8IDEwKSBmb3IoaSA9IDA7IGkgPCByb3dwZWF0OyArK2kpIGlmKHJvd19vbCA+IDApIHJvd2luZm9bUiArIGldID0ge2xldmVsOiByb3dfb2x9O1xuXHRcdFx0XHRDID0gLTE7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnY292ZXJlZC10YWJsZS1jZWxsJzogLy8gOS4xLjUgPHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbD5cblx0XHRcdFx0aWYoUm5bMV0gIT09ICcvJykgKytDO1xuXHRcdFx0XHRpZihvcHRzLnNoZWV0U3R1YnMpIHtcblx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7IGlmKCF3c1tSXSkgd3NbUl0gPSBbXTsgd3NbUl1bQ10gPSB7dDoneid9OyB9XG5cdFx0XHRcdFx0ZWxzZSB3c1tlbmNvZGVfY2VsbCh7cjpSLGM6Q30pXSA9IHt0Oid6J307XG5cdFx0XHRcdH1cblx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRicmVhazsgLyogc3R1YiAqL1xuXHRcdFx0Y2FzZSAndGFibGUtY2VsbCc6IGNhc2UgJ+aVsOaNric6XG5cdFx0XHRcdGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgPT09ICcvJykge1xuXHRcdFx0XHRcdCsrQztcblx0XHRcdFx0XHRjdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRxID0gKHt0Oid6JywgdjpudWxsLyo6OiAsIHo6bnVsbCwgdzpcIlwiLGM6W10qL30vKjphbnkqLyk7XG5cdFx0XHRcdFx0aWYoY3RhZy5mb3JtdWxhICYmIG9wdHMuY2VsbEZvcm11bGEgIT0gZmFsc2UpIHEuZiA9IG9kc190b19jc2ZfZm9ybXVsYSh1bmVzY2FwZXhtbChjdGFnLmZvcm11bGEpKTtcblx0XHRcdFx0XHRpZigoY3RhZ1sn5pWw5o2u57G75Z6LJ10gfHwgY3RhZ1sndmFsdWUtdHlwZSddKSA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRcdFx0XHRxLnQgPSBcInNcIjsgcS52ID0gdW5lc2NhcGV4bWwoY3RhZ1snc3RyaW5nLXZhbHVlJ10gfHwgXCJcIik7XG5cdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdGlmKCF3c1tSXSkgd3NbUl0gPSBbXTtcblx0XHRcdFx0XHRcdFx0d3NbUl1bQ10gPSBxO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0d3NbZW5jb2RlX2NlbGwoe3I6UixjOkN9KV0gPSBxO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRDKz0gY29scGVhdC0xO1xuXHRcdFx0XHR9IGVsc2UgaWYoUm5bMV0hPT0nLycpIHtcblx0XHRcdFx0XHQrK0M7XG5cdFx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0cGlkeCA9IDA7IHRleHRSID0gW107XG5cdFx0XHRcdFx0Y29scGVhdCA9IDE7XG5cdFx0XHRcdFx0dmFyIHJwdFIgPSByb3dwZWF0ID8gUiArIHJvd3BlYXQgLSAxIDogUjtcblx0XHRcdFx0XHRpZihDID4gcmFuZ2UuZS5jKSByYW5nZS5lLmMgPSBDO1xuXHRcdFx0XHRcdGlmKEMgPCByYW5nZS5zLmMpIHJhbmdlLnMuYyA9IEM7XG5cdFx0XHRcdFx0aWYoUiA8IHJhbmdlLnMucikgcmFuZ2Uucy5yID0gUjtcblx0XHRcdFx0XHRpZihycHRSID4gcmFuZ2UuZS5yKSByYW5nZS5lLnIgPSBycHRSO1xuXHRcdFx0XHRcdGN0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdGNvbW1lbnRzID0gW107IGNvbW1lbnQgPSAoe30vKjphbnkqLyk7XG5cdFx0XHRcdFx0cSA9ICh7dDpjdGFnWyfmlbDmja7nsbvlnosnXSB8fCBjdGFnWyd2YWx1ZS10eXBlJ10sIHY6bnVsbC8qOjogLCB6Om51bGwsIHc6XCJcIixjOltdKi99Lyo6YW55Ki8pO1xuXHRcdFx0XHRcdGlmKG9wdHMuY2VsbEZvcm11bGEpIHtcblx0XHRcdFx0XHRcdGlmKGN0YWcuZm9ybXVsYSkgY3RhZy5mb3JtdWxhID0gdW5lc2NhcGV4bWwoY3RhZy5mb3JtdWxhKTtcblx0XHRcdFx0XHRcdGlmKGN0YWdbJ251bWJlci1tYXRyaXgtY29sdW1ucy1zcGFubmVkJ10gJiYgY3RhZ1snbnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQnXSkge1xuXHRcdFx0XHRcdFx0XHRtUiA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1tYXRyaXgtcm93cy1zcGFubmVkJ10sMTApIHx8IDA7XG5cdFx0XHRcdFx0XHRcdG1DID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLW1hdHJpeC1jb2x1bW5zLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdFx0bXJhbmdlID0ge3M6IHtyOlIsYzpDfSwgZTp7cjpSICsgbVItMSxjOkMgKyBtQy0xfX07XG5cdFx0XHRcdFx0XHRcdHEuRiA9IGVuY29kZV9yYW5nZShtcmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRhcnJheWYucHVzaChbbXJhbmdlLCBxLkZdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmKGN0YWcuZm9ybXVsYSkgcS5mID0gb2RzX3RvX2NzZl9mb3JtdWxhKGN0YWcuZm9ybXVsYSk7XG5cdFx0XHRcdFx0XHRlbHNlIGZvcihpID0gMDsgaSA8IGFycmF5Zi5sZW5ndGg7ICsraSlcblx0XHRcdFx0XHRcdFx0aWYoUiA+PSBhcnJheWZbaV1bMF0ucy5yICYmIFIgPD0gYXJyYXlmW2ldWzBdLmUucilcblx0XHRcdFx0XHRcdFx0XHRpZihDID49IGFycmF5ZltpXVswXS5zLmMgJiYgQyA8PSBhcnJheWZbaV1bMF0uZS5jKVxuXHRcdFx0XHRcdFx0XHRcdFx0cS5GID0gYXJyYXlmW2ldWzFdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihjdGFnWydudW1iZXItY29sdW1ucy1zcGFubmVkJ10gfHwgY3RhZ1snbnVtYmVyLXJvd3Mtc3Bhbm5lZCddKSB7XG5cdFx0XHRcdFx0XHRtUiA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1yb3dzLXNwYW5uZWQnXSwxMCkgfHwgMDtcblx0XHRcdFx0XHRcdG1DID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtc3Bhbm5lZCddLDEwKSB8fCAwO1xuXHRcdFx0XHRcdFx0bXJhbmdlID0ge3M6IHtyOlIsYzpDfSwgZTp7cjpSICsgbVItMSxjOkMgKyBtQy0xfX07XG5cdFx0XHRcdFx0XHRtZXJnZXMucHVzaChtcmFuZ2UpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qIDE5LjY3NS4yIHRhYmxlOm51bWJlci1jb2x1bW5zLXJlcGVhdGVkICovXG5cdFx0XHRcdFx0aWYoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXSkgY29scGVhdCA9IHBhcnNlSW50KGN0YWdbJ251bWJlci1jb2x1bW5zLXJlcGVhdGVkJ10sIDEwKTtcblxuXHRcdFx0XHRcdC8qIDE5LjM4NSBvZmZpY2U6dmFsdWUtdHlwZSAqL1xuXHRcdFx0XHRcdHN3aXRjaChxLnQpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOiBxLnQgPSAnYic7IHEudiA9IHBhcnNleG1sYm9vbChjdGFnWydib29sZWFuLXZhbHVlJ10pOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ2Zsb2F0JzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZUZsb2F0KGN0YWcudmFsdWUpOyBicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3BlcmNlbnRhZ2UnOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZy52YWx1ZSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnY3VycmVuY3knOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZy52YWx1ZSk7IGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnZGF0ZSc6IHEudCA9ICdkJzsgcS52ID0gcGFyc2VEYXRlKGN0YWdbJ2RhdGUtdmFsdWUnXSk7XG5cdFx0XHRcdFx0XHRcdGlmKCFvcHRzLmNlbGxEYXRlcykgeyBxLnQgPSAnbic7IHEudiA9IGRhdGVudW0ocS52KTsgfVxuXHRcdFx0XHRcdFx0XHRxLnogPSAnbS9kL3l5JzsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICd0aW1lJzogcS50ID0gJ24nOyBxLnYgPSBwYXJzZV9pc29kdXIoY3RhZ1sndGltZS12YWx1ZSddKS84NjQwMDtcblx0XHRcdFx0XHRcdFx0aWYob3B0cy5jZWxsRGF0ZXMpIHsgcS50ID0gJ2QnOyBxLnYgPSBudW1kYXRlKHEudik7IH1cblx0XHRcdFx0XHRcdFx0cS56ID0gJ0hIOk1NOlNTJzsgYnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdudW1iZXInOiBxLnQgPSAnbic7IHEudiA9IHBhcnNlRmxvYXQoY3RhZ1sn5pWw5o2u5pWw5YC8J10pOyBicmVhaztcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdGlmKHEudCA9PT0gJ3N0cmluZycgfHwgcS50ID09PSAndGV4dCcgfHwgIXEudCkge1xuXHRcdFx0XHRcdFx0XHRcdHEudCA9ICdzJztcblx0XHRcdFx0XHRcdFx0XHRpZihjdGFnWydzdHJpbmctdmFsdWUnXSAhPSBudWxsKSB7IHRleHRwID0gdW5lc2NhcGV4bWwoY3RhZ1snc3RyaW5nLXZhbHVlJ10pOyB0ZXh0UiA9IFtdOyB9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZhbHVlIHR5cGUgJyArIHEudCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGlzc3R1YiA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmKHEudCA9PT0gJ3MnKSB7XG5cdFx0XHRcdFx0XHRxLnYgPSB0ZXh0cCB8fCAnJztcblx0XHRcdFx0XHRcdGlmKHRleHRSLmxlbmd0aCkgcS5SID0gdGV4dFI7XG5cdFx0XHRcdFx0XHRpc3N0dWIgPSB0ZXh0cGlkeCA9PSAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZihhdGFnLlRhcmdldCkgcS5sID0gYXRhZztcblx0XHRcdFx0XHRpZihjb21tZW50cy5sZW5ndGggPiAwKSB7IHEuYyA9IGNvbW1lbnRzOyBjb21tZW50cyA9IFtdOyB9XG5cdFx0XHRcdFx0aWYodGV4dHAgJiYgb3B0cy5jZWxsVGV4dCAhPT0gZmFsc2UpIHEudyA9IHRleHRwO1xuXHRcdFx0XHRcdGlmKGlzc3R1YikgeyBxLnQgPSBcInpcIjsgZGVsZXRlIHEudjsgfVxuXHRcdFx0XHRcdGlmKCFpc3N0dWIgfHwgb3B0cy5zaGVldFN0dWJzKSB7XG5cdFx0XHRcdFx0XHRpZighKG9wdHMuc2hlZXRSb3dzICYmIG9wdHMuc2hlZXRSb3dzIDw9IFIpKSB7XG5cdFx0XHRcdFx0XHRcdGZvcih2YXIgcnB0ID0gMDsgcnB0IDwgcm93cGVhdDsgKytycHQpIHtcblx0XHRcdFx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRcdFx0XHRpZihvcHRzLmRlbnNlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZighd3NbUiArIHJwdF0pIHdzW1IgKyBycHRdID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHR3c1tSICsgcnB0XVtDXSA9IHJwdCA9PSAwID8gcSA6IGR1cChxKTtcblx0XHRcdFx0XHRcdFx0XHRcdHdoaWxlKC0tY29scGVhdCA+IDApIHdzW1IgKyBycHRdW0MgKyBjb2xwZWF0XSA9IGR1cChxKTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0d3NbZW5jb2RlX2NlbGwoe3I6UiArIHJwdCxjOkN9KV0gPSBxO1xuXHRcdFx0XHRcdFx0XHRcdFx0d2hpbGUoLS1jb2xwZWF0ID4gMCkgd3NbZW5jb2RlX2NlbGwoe3I6UiArIHJwdCxjOkMgKyBjb2xwZWF0fSldID0gZHVwKHEpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZihyYW5nZS5lLmMgPD0gQykgcmFuZ2UuZS5jID0gQztcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRjb2xwZWF0ID0gcGFyc2VJbnQoY3RhZ1snbnVtYmVyLWNvbHVtbnMtcmVwZWF0ZWQnXXx8XCIxXCIsIDEwKTtcblx0XHRcdFx0XHRDICs9IGNvbHBlYXQtMTsgY29scGVhdCA9IDA7XG5cdFx0XHRcdFx0cSA9IHsvKjo6IHQ6XCJcIiwgdjpudWxsLCB6Om51bGwsIHc6XCJcIixjOltdKi99O1xuXHRcdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dFIgPSBbXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRhdGFnID0gKHt9Lyo6YW55Ki8pO1xuXHRcdFx0XHRicmVhazsgLy8gOS4xLjQgPHRhYmxlOnRhYmxlLWNlbGw+XG5cblx0XHRcdC8qIHB1cmUgc3RhdGUgKi9cblx0XHRcdGNhc2UgJ2RvY3VtZW50JzogLy8gVE9ETzogPG9mZmljZTpkb2N1bWVudD4gaXMgdGhlIHJvb3QgZm9yIEZPRFNcblx0XHRcdGNhc2UgJ2RvY3VtZW50LWNvbnRlbnQnOiBjYXNlICfnlLXlrZDooajmoLzmlofmoaMnOiAvLyAzLjEuMy4yIDxvZmZpY2U6ZG9jdW1lbnQtY29udGVudD5cblx0XHRcdGNhc2UgJ3NwcmVhZHNoZWV0JzogY2FzZSAn5Li75L2TJzogLy8gMy43IDxvZmZpY2U6c3ByZWFkc2hlZXQ+XG5cdFx0XHRjYXNlICdzY3JpcHRzJzogLy8gMy4xMiA8b2ZmaWNlOnNjcmlwdHM+XG5cdFx0XHRjYXNlICdzdHlsZXMnOiAvLyBUT0RPIDxvZmZpY2U6c3R5bGVzPlxuXHRcdFx0Y2FzZSAnZm9udC1mYWNlLWRlY2xzJzogLy8gMy4xNCA8b2ZmaWNlOmZvbnQtZmFjZS1kZWNscz5cblx0XHRcdGNhc2UgJ21hc3Rlci1zdHlsZXMnOiAvLyAzLjE1LjQgPG9mZmljZTptYXN0ZXItc3R5bGVzPiAtLSByZWxldmFudCBmb3IgRk9EU1xuXHRcdFx0XHRpZihSblsxXT09PScvJyl7aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDt9XG5cdFx0XHRcdGVsc2UgaWYoUm5bMF0uY2hhckF0KFJuWzBdLmxlbmd0aC0yKSAhPT0gJy8nKSBzdGF0ZS5wdXNoKFtSblszXSwgdHJ1ZV0pO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnYW5ub3RhdGlvbic6IC8vIDE0LjEgPG9mZmljZTphbm5vdGF0aW9uPlxuXHRcdFx0XHRpZihSblsxXT09PScvJyl7XG5cdFx0XHRcdFx0aWYoKHRtcD1zdGF0ZS5wb3AoKSlbMF0hPT1SblszXSkgdGhyb3cgXCJCYWQgc3RhdGU6IFwiK3RtcDtcblx0XHRcdFx0XHRjb21tZW50LnQgPSB0ZXh0cDtcblx0XHRcdFx0XHRpZih0ZXh0Ui5sZW5ndGgpIC8qOjooKi9jb21tZW50Lyo6OiA6YW55KSovLlIgPSB0ZXh0Ujtcblx0XHRcdFx0XHRjb21tZW50LmEgPSBjcmVhdG9yO1xuXHRcdFx0XHRcdGNvbW1lbnRzLnB1c2goY29tbWVudCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtzdGF0ZS5wdXNoKFtSblszXSwgZmFsc2VdKTt9XG5cdFx0XHRcdGNyZWF0b3IgPSBcIlwiOyBjcmVhdG9yaWR4ID0gMDtcblx0XHRcdFx0dGV4dHAgPSBcIlwiOyB0ZXh0cGlkeCA9IDA7IHRleHRSID0gW107XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRjYXNlICdjcmVhdG9yJzogLy8gNC4zLjIuNyA8ZGM6Y3JlYXRvcj5cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpIHsgY3JlYXRvciA9IHN0ci5zbGljZShjcmVhdG9yaWR4LFJuLmluZGV4KTsgfVxuXHRcdFx0XHRlbHNlIGNyZWF0b3JpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdC8qIGlnbm9yZSBzdGF0ZSAqL1xuXHRcdFx0Y2FzZSAnbWV0YSc6IGNhc2UgJ+WFg+aVsOaNric6IC8vIFRPRE86IDxvZmZpY2U6bWV0YT4gPHVvZjrlhYPmlbDmja4+IEZPRFMvVU9GXG5cdFx0XHRjYXNlICdzZXR0aW5ncyc6IC8vIFRPRE86IDxvZmZpY2U6c2V0dGluZ3M+XG5cdFx0XHRjYXNlICdjb25maWctaXRlbS1zZXQnOiAvLyBUT0RPOiA8b2ZmaWNlOmNvbmZpZy1pdGVtLXNldD5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLW1hcC1pbmRleGVkJzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1tYXAtaW5kZXhlZD5cblx0XHRcdGNhc2UgJ2NvbmZpZy1pdGVtLW1hcC1lbnRyeSc6IC8vIFRPRE86IDxvZmZpY2U6Y29uZmlnLWl0ZW0tbWFwLWVudHJ5PlxuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0tbWFwLW5hbWVkJzogLy8gVE9ETzogPG9mZmljZTpjb25maWctaXRlbS1tYXAtZW50cnk+XG5cdFx0XHRjYXNlICdzaGFwZXMnOiAvLyA5LjIuOCA8dGFibGU6c2hhcGVzPlxuXHRcdFx0Y2FzZSAnZnJhbWUnOiAvLyAxMC40LjIgPGRyYXc6ZnJhbWU+XG5cdFx0XHRjYXNlICd0ZXh0LWJveCc6IC8vIDEwLjQuMyA8ZHJhdzp0ZXh0LWJveD5cblx0XHRcdGNhc2UgJ2ltYWdlJzogLy8gMTAuNC40IDxkcmF3OmltYWdlPlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC10YWJsZXMnOiAvLyA5LjYuMiA8dGFibGU6ZGF0YS1waWxvdC10YWJsZXM+XG5cdFx0XHRjYXNlICdsaXN0LXN0eWxlJzogLy8gMTYuMzAgPHRleHQ6bGlzdC1zdHlsZT5cblx0XHRcdGNhc2UgJ2Zvcm0nOiAvLyAxMy4xMyA8Zm9ybTpmb3JtPlxuXHRcdFx0Y2FzZSAnZGRlLWxpbmtzJzogLy8gOS44IDx0YWJsZTpkZGUtbGlua3M+XG5cdFx0XHRjYXNlICdldmVudC1saXN0ZW5lcnMnOiAvLyBUT0RPXG5cdFx0XHRjYXNlICdjaGFydCc6IC8vIFRPRE9cblx0XHRcdFx0aWYoUm5bMV09PT0nLycpe2lmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7fVxuXHRcdFx0XHRlbHNlIGlmKFJuWzBdLmNoYXJBdChSblswXS5sZW5ndGgtMikgIT09ICcvJykgc3RhdGUucHVzaChbUm5bM10sIGZhbHNlXSk7XG5cdFx0XHRcdHRleHRwID0gXCJcIjsgdGV4dHBpZHggPSAwOyB0ZXh0UiA9IFtdO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnc2NpZW50aWZpYy1udW1iZXInOiAvLyBUT0RPOiA8bnVtYmVyOnNjaWVudGlmaWMtbnVtYmVyPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1cnJlbmN5LXN5bWJvbCc6IC8vIFRPRE86IDxudW1iZXI6Y3VycmVuY3ktc3ltYm9sPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2N1cnJlbmN5LXN0eWxlJzogLy8gVE9ETzogPG51bWJlcjpjdXJyZW5jeS1zdHlsZT5cblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdudW1iZXItc3R5bGUnOiAvLyAxNi4yNy4yIDxudW1iZXI6bnVtYmVyLXN0eWxlPlxuXHRcdFx0Y2FzZSAncGVyY2VudGFnZS1zdHlsZSc6IC8vIDE2LjI3LjkgPG51bWJlcjpwZXJjZW50YWdlLXN0eWxlPlxuXHRcdFx0Y2FzZSAnZGF0ZS1zdHlsZSc6IC8vIDE2LjI3LjEwIDxudW1iZXI6ZGF0ZS1zdHlsZT5cblx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOiAvLyAxNi4yNy4xOCA8bnVtYmVyOnRpbWUtc3R5bGU+XG5cdFx0XHRcdGlmKFJuWzFdPT09Jy8nKXtcblx0XHRcdFx0XHRudW1iZXJfZm9ybWF0X21hcFtORnRhZy5uYW1lXSA9IE5GO1xuXHRcdFx0XHRcdGlmKCh0bXA9c3RhdGUucG9wKCkpWzBdIT09Um5bM10pIHRocm93IFwiQmFkIHN0YXRlOiBcIit0bXA7XG5cdFx0XHRcdH0gZWxzZSBpZihSblswXS5jaGFyQXQoUm5bMF0ubGVuZ3RoLTIpICE9PSAnLycpIHtcblx0XHRcdFx0XHRORiA9IFwiXCI7XG5cdFx0XHRcdFx0TkZ0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRcdHN0YXRlLnB1c2goW1JuWzNdLCB0cnVlXSk7XG5cdFx0XHRcdH0gYnJlYWs7XG5cblx0XHRcdGNhc2UgJ3NjcmlwdCc6IGJyZWFrOyAvLyAzLjEzIDxvZmZpY2U6c2NyaXB0PlxuXHRcdFx0Y2FzZSAnbGlicmFyaWVzJzogYnJlYWs7IC8vIFRPRE86IDxvb286bGlicmFyaWVzPlxuXHRcdFx0Y2FzZSAnYXV0b21hdGljLXN0eWxlcyc6IGJyZWFrOyAvLyAzLjE1LjMgPG9mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxuXG5cdFx0XHRjYXNlICdkZWZhdWx0LXN0eWxlJzogLy8gVE9ETzogPHN0eWxlOmRlZmF1bHQtc3R5bGU+XG5cdFx0XHRjYXNlICdwYWdlLWxheW91dCc6IGJyZWFrOyAvLyBUT0RPOiA8c3R5bGU6cGFnZS1sYXlvdXQ+XG5cdFx0XHRjYXNlICdzdHlsZSc6IC8vIDE2LjIgPHN0eWxlOnN0eWxlPlxuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ21hcCc6IGJyZWFrOyAvLyAxNi4zIDxzdHlsZTptYXA+XG5cdFx0XHRjYXNlICdmb250LWZhY2UnOiBicmVhazsgLy8gMTYuMjEgPHN0eWxlOmZvbnQtZmFjZT5cblxuXHRcdFx0Y2FzZSAncGFyYWdyYXBoLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuNiA8c3R5bGU6cGFyYWdyYXBoLXByb3BlcnRpZXM+XG5cdFx0XHRjYXNlICd0YWJsZS1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE1IDxzdHlsZTp0YWJsZS1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1uLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTYgPHN0eWxlOnRhYmxlLWNvbHVtbi1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtcm93LXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTcgPHN0eWxlOnRhYmxlLXJvdy1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAndGFibGUtY2VsbC1wcm9wZXJ0aWVzJzogYnJlYWs7IC8vIDE3LjE4IDxzdHlsZTp0YWJsZS1jZWxsLXByb3BlcnRpZXM+XG5cblx0XHRcdGNhc2UgJ251bWJlcic6IC8vIDE2LjI3LjMgPG51bWJlcjpudW1iZXI+XG5cdFx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICd0aW1lLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICdkYXRlLXN0eWxlJzpcblx0XHRcdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRORiArPSBudW1iZXJfZm9ybWF0c19vZHNbUm5bM11dW3RhZy5zdHlsZT09PSdsb25nJz8xOjBdOyBicmVhaztcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAnZnJhY3Rpb24nOiBicmVhazsgLy8gVE9ETyAxNi4yNy42IDxudW1iZXI6ZnJhY3Rpb24+XG5cblx0XHRcdGNhc2UgJ2RheSc6IC8vIDE2LjI3LjExIDxudW1iZXI6ZGF5PlxuXHRcdFx0Y2FzZSAnbW9udGgnOiAvLyAxNi4yNy4xMiA8bnVtYmVyOm1vbnRoPlxuXHRcdFx0Y2FzZSAneWVhcic6IC8vIDE2LjI3LjEzIDxudW1iZXI6eWVhcj5cblx0XHRcdGNhc2UgJ2VyYSc6IC8vIDE2LjI3LjE0IDxudW1iZXI6ZXJhPlxuXHRcdFx0Y2FzZSAnZGF5LW9mLXdlZWsnOiAvLyAxNi4yNy4xNSA8bnVtYmVyOmRheS1vZi13ZWVrPlxuXHRcdFx0Y2FzZSAnd2Vlay1vZi15ZWFyJzogLy8gMTYuMjcuMTYgPG51bWJlcjp3ZWVrLW9mLXllYXI+XG5cdFx0XHRjYXNlICdxdWFydGVyJzogLy8gMTYuMjcuMTcgPG51bWJlcjpxdWFydGVyPlxuXHRcdFx0Y2FzZSAnaG91cnMnOiAvLyAxNi4yNy4xOSA8bnVtYmVyOmhvdXJzPlxuXHRcdFx0Y2FzZSAnbWludXRlcyc6IC8vIDE2LjI3LjIwIDxudW1iZXI6bWludXRlcz5cblx0XHRcdGNhc2UgJ3NlY29uZHMnOiAvLyAxNi4yNy4yMSA8bnVtYmVyOnNlY29uZHM+XG5cdFx0XHRjYXNlICdhbS1wbSc6IC8vIDE2LjI3LjIyIDxudW1iZXI6YW0tcG0+XG5cdFx0XHRcdHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICd0aW1lLXN0eWxlJzpcblx0XHRcdFx0XHRjYXNlICdkYXRlLXN0eWxlJzpcblx0XHRcdFx0XHRcdHRhZyA9IHBhcnNleG1sdGFnKFJuWzBdLCBmYWxzZSk7XG5cdFx0XHRcdFx0XHRORiArPSBudW1iZXJfZm9ybWF0c19vZHNbUm5bM11dW3RhZy5zdHlsZT09PSdsb25nJz8xOjBdOyBicmVhaztcblx0XHRcdFx0fSBicmVhaztcblxuXHRcdFx0Y2FzZSAnYm9vbGVhbi1zdHlsZSc6IGJyZWFrOyAvLyAxNi4yNy4yMyA8bnVtYmVyOmJvb2xlYW4tc3R5bGU+XG5cdFx0XHRjYXNlICdib29sZWFuJzogYnJlYWs7IC8vIDE2LjI3LjI0IDxudW1iZXI6Ym9vbGVhbj5cblx0XHRcdGNhc2UgJ3RleHQtc3R5bGUnOiBicmVhazsgLy8gMTYuMjcuMjUgPG51bWJlcjp0ZXh0LXN0eWxlPlxuXHRcdFx0Y2FzZSAndGV4dCc6IC8vIDE2LjI3LjI2IDxudW1iZXI6dGV4dD5cblx0XHRcdFx0aWYoUm5bMF0uc2xpY2UoLTIpID09PSBcIi8+XCIpIGJyZWFrO1xuXHRcdFx0XHRlbHNlIGlmKFJuWzFdPT09XCIvXCIpIHN3aXRjaChzdGF0ZVtzdGF0ZS5sZW5ndGgtMV1bMF0pIHtcblx0XHRcdFx0XHRjYXNlICdudW1iZXItc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ2RhdGUtc3R5bGUnOlxuXHRcdFx0XHRcdGNhc2UgJ3RpbWUtc3R5bGUnOlxuXHRcdFx0XHRcdFx0TkYgKz0gc3RyLnNsaWNlKHBpZHgsIFJuLmluZGV4KTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgcGlkeCA9IFJuLmluZGV4ICsgUm5bMF0ubGVuZ3RoO1xuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnbmFtZWQtcmFuZ2UnOiAvLyA5LjQuMTIgPHRhYmxlOm5hbWVkLXJhbmdlPlxuXHRcdFx0XHR0YWcgPSBwYXJzZXhtbHRhZyhSblswXSwgZmFsc2UpO1xuXHRcdFx0XHRfUmVmID0gb2RzX3RvX2NzZl8zRCh0YWdbJ2NlbGwtcmFuZ2UtYWRkcmVzcyddKTtcblx0XHRcdFx0dmFyIG5yYW5nZSA9ICh7TmFtZTp0YWcubmFtZSwgUmVmOl9SZWZbMF0gKyAnIScgKyBfUmVmWzFdfS8qOmFueSovKTtcblx0XHRcdFx0aWYoaW50YWJsZSkgbnJhbmdlLlNoZWV0ID0gU2hlZXROYW1lcy5sZW5ndGg7XG5cdFx0XHRcdFdCLk5hbWVzLnB1c2gobnJhbmdlKTtcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3RleHQtY29udGVudCc6IGJyZWFrOyAvLyAxNi4yNy4yNyA8bnVtYmVyOnRleHQtY29udGVudD5cblx0XHRcdGNhc2UgJ3RleHQtcHJvcGVydGllcyc6IGJyZWFrOyAvLyAxNi4yNy4yNyA8c3R5bGU6dGV4dC1wcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAnZW1iZWRkZWQtdGV4dCc6IGJyZWFrOyAvLyAxNi4yNy40IDxudW1iZXI6ZW1iZWRkZWQtdGV4dD5cblxuXHRcdFx0Y2FzZSAnYm9keSc6IGNhc2UgJ+eUteWtkOihqOagvCc6IGJyZWFrOyAvLyAzLjMgMTYuOS42IDE5LjcyNi4zXG5cblx0XHRcdGNhc2UgJ2Zvcm1zJzogYnJlYWs7IC8vIDEyLjI1LjIgMTMuMlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1uJzogYnJlYWs7IC8vIDkuMS42IDx0YWJsZTp0YWJsZS1jb2x1bW4+XG5cdFx0XHRjYXNlICd0YWJsZS1oZWFkZXItcm93cyc6IGJyZWFrOyAvLyA5LjEuNyA8dGFibGU6dGFibGUtaGVhZGVyLXJvd3M+XG5cdFx0XHRjYXNlICd0YWJsZS1yb3dzJzogYnJlYWs7IC8vIDkuMS4xMiA8dGFibGU6dGFibGUtcm93cz5cblx0XHRcdC8qIFRPRE86IG91dGxpbmUgbGV2ZWxzICovXG5cdFx0XHRjYXNlICd0YWJsZS1jb2x1bW4tZ3JvdXAnOiBicmVhazsgLy8gOS4xLjEwIDx0YWJsZTp0YWJsZS1jb2x1bW4tZ3JvdXA+XG5cdFx0XHRjYXNlICd0YWJsZS1oZWFkZXItY29sdW1ucyc6IGJyZWFrOyAvLyA5LjEuMTEgPHRhYmxlOnRhYmxlLWhlYWRlci1jb2x1bW5zPlxuXHRcdFx0Y2FzZSAndGFibGUtY29sdW1ucyc6IGJyZWFrOyAvLyA5LjEuMTIgPHRhYmxlOnRhYmxlLWNvbHVtbnM+XG5cblx0XHRcdGNhc2UgJ251bGwtZGF0ZSc6IGJyZWFrOyAvLyA5LjQuMiA8dGFibGU6bnVsbC1kYXRlPiBUT0RPOiBkYXRlMTkwNFxuXG5cdFx0XHRjYXNlICdncmFwaGljLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMjEgPHN0eWxlOmdyYXBoaWMtcHJvcGVydGllcz5cblx0XHRcdGNhc2UgJ2NhbGN1bGF0aW9uLXNldHRpbmdzJzogYnJlYWs7IC8vIDkuNC4xIDx0YWJsZTpjYWxjdWxhdGlvbi1zZXR0aW5ncz5cblx0XHRcdGNhc2UgJ25hbWVkLWV4cHJlc3Npb25zJzogYnJlYWs7IC8vIDkuNC4xMSA8dGFibGU6bmFtZWQtZXhwcmVzc2lvbnM+XG5cdFx0XHRjYXNlICdsYWJlbC1yYW5nZSc6IGJyZWFrOyAvLyA5LjQuOSA8dGFibGU6bGFiZWwtcmFuZ2U+XG5cdFx0XHRjYXNlICdsYWJlbC1yYW5nZXMnOiBicmVhazsgLy8gOS40LjEwIDx0YWJsZTpsYWJlbC1yYW5nZXM+XG5cdFx0XHRjYXNlICduYW1lZC1leHByZXNzaW9uJzogYnJlYWs7IC8vIDkuNC4xMyA8dGFibGU6bmFtZWQtZXhwcmVzc2lvbj5cblx0XHRcdGNhc2UgJ3NvcnQnOiBicmVhazsgLy8gOS40LjE5IDx0YWJsZTpzb3J0PlxuXHRcdFx0Y2FzZSAnc29ydC1ieSc6IGJyZWFrOyAvLyA5LjQuMjAgPHRhYmxlOnNvcnQtYnk+XG5cdFx0XHRjYXNlICdzb3J0LWdyb3Vwcyc6IGJyZWFrOyAvLyA5LjQuMjIgPHRhYmxlOnNvcnQtZ3JvdXBzPlxuXG5cdFx0XHRjYXNlICd0YWInOiBicmVhazsgLy8gNi4xLjQgPHRleHQ6dGFiPlxuXHRcdFx0Y2FzZSAnbGluZS1icmVhayc6IGJyZWFrOyAvLyA2LjEuNSA8dGV4dDpsaW5lLWJyZWFrPlxuXHRcdFx0Y2FzZSAnc3Bhbic6IGJyZWFrOyAvLyA2LjEuNyA8dGV4dDpzcGFuPlxuXHRcdFx0Y2FzZSAncCc6IGNhc2UgJ+aWh+acrOS4sic6IC8vIDUuMS4zIDx0ZXh0OnA+XG5cdFx0XHRcdGlmKFsnbWFzdGVyLXN0eWxlcyddLmluZGV4T2Yoc3RhdGVbc3RhdGUubGVuZ3RoLTFdWzBdKSA+IC0xKSBicmVhaztcblx0XHRcdFx0aWYoUm5bMV09PT0nLycgJiYgKCFjdGFnIHx8ICFjdGFnWydzdHJpbmctdmFsdWUnXSkpIHtcblx0XHRcdFx0XHR2YXIgcHRwID0gcGFyc2VfdGV4dF9wKHN0ci5zbGljZSh0ZXh0cGlkeCxSbi5pbmRleCksIHRleHRwdGFnKTtcblx0XHRcdFx0XHR0ZXh0cCA9ICh0ZXh0cC5sZW5ndGggPiAwID8gdGV4dHAgKyBcIlxcblwiIDogXCJcIikgKyBwdHBbMF07XG5cdFx0XHRcdH0gZWxzZSB7IHRleHRwdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTsgdGV4dHBpZHggPSBSbi5pbmRleCArIFJuWzBdLmxlbmd0aDsgfVxuXHRcdFx0XHRicmVhazsgLy8gPHRleHQ6cD5cblx0XHRcdGNhc2UgJ3MnOiBicmVhazsgLy8gPHRleHQ6cz5cblxuXHRcdFx0Y2FzZSAnZGF0YWJhc2UtcmFuZ2UnOiAvLyA5LjQuMTUgPHRhYmxlOmRhdGFiYXNlLXJhbmdlPlxuXHRcdFx0XHRpZihSblsxXT09PScvJykgYnJlYWs7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0X1JlZiA9IG9kc190b19jc2ZfM0QocGFyc2V4bWx0YWcoUm5bMF0pWyd0YXJnZXQtcmFuZ2UtYWRkcmVzcyddKTtcblx0XHRcdFx0XHRTaGVldHNbX1JlZlswXV1bJyFhdXRvZmlsdGVyJ10gPSB7IHJlZjpfUmVmWzFdIH07XG5cdFx0XHRcdH0gY2F0Y2goZSkgey8qIGVtcHR5ICovfVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0Y2FzZSAnZGF0ZSc6IGJyZWFrOyAvLyA8KjpkYXRlPlxuXG5cdFx0XHRjYXNlICdvYmplY3QnOiBicmVhazsgLy8gMTAuNC42LjIgPGRyYXc6b2JqZWN0PlxuXHRcdFx0Y2FzZSAndGl0bGUnOiBjYXNlICfmoIfpopgnOiBicmVhazsgLy8gPCo6dGl0bGU+IE9SIDx1b2Y65qCH6aKYPlxuXHRcdFx0Y2FzZSAnZGVzYyc6IGJyZWFrOyAvLyA8KjpkZXNjPlxuXHRcdFx0Y2FzZSAnYmluYXJ5LWRhdGEnOiBicmVhazsgLy8gMTAuNC41IFRPRE86IGI2NCBibG9iXG5cblx0XHRcdC8qIDkuMiBBZHZhbmNlZCBUYWJsZXMgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLXNvdXJjZSc6IGJyZWFrOyAvLyA5LjIuNlxuXHRcdFx0Y2FzZSAnc2NlbmFyaW8nOiBicmVhazsgLy8gOS4yLjZcblxuXHRcdFx0Y2FzZSAnaXRlcmF0aW9uJzogYnJlYWs7IC8vIDkuNC4zIDx0YWJsZTppdGVyYXRpb24+XG5cdFx0XHRjYXNlICdjb250ZW50LXZhbGlkYXRpb25zJzogYnJlYWs7IC8vIDkuNC40IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2NvbnRlbnQtdmFsaWRhdGlvbic6IGJyZWFrOyAvLyA5LjQuNSA8dGFibGU6XG5cdFx0XHRjYXNlICdoZWxwLW1lc3NhZ2UnOiBicmVhazsgLy8gOS40LjYgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnZXJyb3ItbWVzc2FnZSc6IGJyZWFrOyAvLyA5LjQuNyA8dGFibGU6XG5cdFx0XHRjYXNlICdkYXRhYmFzZS1yYW5nZXMnOiBicmVhazsgLy8gOS40LjE0IDx0YWJsZTpkYXRhYmFzZS1yYW5nZXM+XG5cdFx0XHRjYXNlICdmaWx0ZXInOiBicmVhazsgLy8gOS41LjIgPHRhYmxlOmZpbHRlcj5cblx0XHRcdGNhc2UgJ2ZpbHRlci1hbmQnOiBicmVhazsgLy8gOS41LjMgPHRhYmxlOmZpbHRlci1hbmQ+XG5cdFx0XHRjYXNlICdmaWx0ZXItb3InOiBicmVhazsgLy8gOS41LjQgPHRhYmxlOmZpbHRlci1vcj5cblx0XHRcdGNhc2UgJ2ZpbHRlci1jb25kaXRpb24nOiBicmVhazsgLy8gOS41LjUgPHRhYmxlOmZpbHRlci1jb25kaXRpb24+XG5cblx0XHRcdGNhc2UgJ2xpc3QtbGV2ZWwtc3R5bGUtYnVsbGV0JzogYnJlYWs7IC8vIDE2LjMxIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnbGlzdC1sZXZlbC1zdHlsZS1udW1iZXInOiBicmVhazsgLy8gMTYuMzIgPHRleHQ6XG5cdFx0XHRjYXNlICdsaXN0LWxldmVsLXByb3BlcnRpZXMnOiBicmVhazsgLy8gMTcuMTkgPHN0eWxlOlxuXG5cdFx0XHQvKiA3LjMgRG9jdW1lbnQgRmllbGRzICovXG5cdFx0XHRjYXNlICdzZW5kZXItZmlyc3RuYW1lJzogLy8gNy4zLjYuMlxuXHRcdFx0Y2FzZSAnc2VuZGVyLWxhc3RuYW1lJzogLy8gNy4zLjYuM1xuXHRcdFx0Y2FzZSAnc2VuZGVyLWluaXRpYWxzJzogLy8gNy4zLjYuNFxuXHRcdFx0Y2FzZSAnc2VuZGVyLXRpdGxlJzogLy8gNy4zLjYuNVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXBvc2l0aW9uJzogLy8gNy4zLjYuNlxuXHRcdFx0Y2FzZSAnc2VuZGVyLWVtYWlsJzogLy8gNy4zLjYuN1xuXHRcdFx0Y2FzZSAnc2VuZGVyLXBob25lLXByaXZhdGUnOiAvLyA3LjMuNi44XG5cdFx0XHRjYXNlICdzZW5kZXItZmF4JzogLy8gNy4zLjYuOVxuXHRcdFx0Y2FzZSAnc2VuZGVyLWNvbXBhbnknOiAvLyA3LjMuNi4xMFxuXHRcdFx0Y2FzZSAnc2VuZGVyLXBob25lLXdvcmsnOiAvLyA3LjMuNi4xMVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXN0cmVldCc6IC8vIDcuMy42LjEyXG5cdFx0XHRjYXNlICdzZW5kZXItY2l0eSc6IC8vIDcuMy42LjEzXG5cdFx0XHRjYXNlICdzZW5kZXItcG9zdGFsLWNvZGUnOiAvLyA3LjMuNi4xNFxuXHRcdFx0Y2FzZSAnc2VuZGVyLWNvdW50cnknOiAvLyA3LjMuNi4xNVxuXHRcdFx0Y2FzZSAnc2VuZGVyLXN0YXRlLW9yLXByb3ZpbmNlJzogLy8gNy4zLjYuMTZcblx0XHRcdGNhc2UgJ2F1dGhvci1uYW1lJzogLy8gNy4zLjcuMVxuXHRcdFx0Y2FzZSAnYXV0aG9yLWluaXRpYWxzJzogLy8gNy4zLjcuMlxuXHRcdFx0Y2FzZSAnY2hhcHRlcic6IC8vIDcuMy44XG5cdFx0XHRjYXNlICdmaWxlLW5hbWUnOiAvLyA3LjMuOVxuXHRcdFx0Y2FzZSAndGVtcGxhdGUtbmFtZSc6IC8vIDcuMy45XG5cdFx0XHRjYXNlICdzaGVldC1uYW1lJzogLy8gNy4zLjlcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ2V2ZW50LWxpc3RlbmVyJzpcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvKiBUT0RPOiBGT0RTIFByb3BlcnRpZXMgKi9cblx0XHRcdGNhc2UgJ2luaXRpYWwtY3JlYXRvcic6XG5cdFx0XHRjYXNlICdjcmVhdGlvbi1kYXRlJzpcblx0XHRcdGNhc2UgJ3ByaW50LWRhdGUnOlxuXHRcdFx0Y2FzZSAnZ2VuZXJhdG9yJzpcblx0XHRcdGNhc2UgJ2RvY3VtZW50LXN0YXRpc3RpYyc6XG5cdFx0XHRjYXNlICd1c2VyLWRlZmluZWQnOlxuXHRcdFx0Y2FzZSAnZWRpdGluZy1kdXJhdGlvbic6XG5cdFx0XHRjYXNlICdlZGl0aW5nLWN5Y2xlcyc6XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBUT0RPOiBGT0RTIENvbmZpZyAqL1xuXHRcdFx0Y2FzZSAnY29uZmlnLWl0ZW0nOlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogVE9ETzogc3R5bGUgdG9rZW5zICovXG5cdFx0XHRjYXNlICdwYWdlLW51bWJlcic6IGJyZWFrOyAvLyBUT0RPIDx0ZXh0OnBhZ2UtbnVtYmVyPlxuXHRcdFx0Y2FzZSAncGFnZS1jb3VudCc6IGJyZWFrOyAvLyBUT0RPIDx0ZXh0OnBhZ2UtY291bnQ+XG5cdFx0XHRjYXNlICd0aW1lJzogYnJlYWs7IC8vIFRPRE8gPHRleHQ6dGltZT5cblxuXHRcdFx0LyogOS4zIEFkdmFuY2VkIFRhYmxlIENlbGxzICovXG5cdFx0XHRjYXNlICdjZWxsLXJhbmdlLXNvdXJjZSc6IGJyZWFrOyAvLyA5LjMuMSA8dGFibGU6XG5cdFx0XHRjYXNlICdkZXRlY3RpdmUnOiBicmVhazsgLy8gOS4zLjIgPHRhYmxlOlxuXHRcdFx0Y2FzZSAnb3BlcmF0aW9uJzogYnJlYWs7IC8vIDkuMy4zIDx0YWJsZTpcblx0XHRcdGNhc2UgJ2hpZ2hsaWdodGVkLXJhbmdlJzogYnJlYWs7IC8vIDkuMy40IDx0YWJsZTpcblxuXHRcdFx0LyogOS42IERhdGEgUGlsb3QgVGFibGVzIDx0YWJsZTogKi9cblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtdGFibGUnOiAvLyA5LjYuM1xuXHRcdFx0Y2FzZSAnc291cmNlLWNlbGwtcmFuZ2UnOiAvLyA5LjYuNVxuXHRcdFx0Y2FzZSAnc291cmNlLXNlcnZpY2UnOiAvLyA5LjYuNlxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1maWVsZCc6IC8vIDkuNi43XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWxldmVsJzogLy8gOS42Ljhcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3Qtc3VidG90YWxzJzogLy8gOS42Ljlcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3Qtc3VidG90YWwnOiAvLyA5LjYuMTBcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtbWVtYmVycyc6IC8vIDkuNi4xMVxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1tZW1iZXInOiAvLyA5LjYuMTJcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZGlzcGxheS1pbmZvJzogLy8gOS42LjEzXG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LXNvcnQtaW5mbyc6IC8vIDkuNi4xNFxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1sYXlvdXQtaW5mbyc6IC8vIDkuNi4xNVxuXHRcdFx0Y2FzZSAnZGF0YS1waWxvdC1maWVsZC1yZWZlcmVuY2UnOiAvLyA5LjYuMTZcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JvdXBzJzogLy8gOS42LjE3XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyb3VwJzogLy8gOS42LjE4XG5cdFx0XHRjYXNlICdkYXRhLXBpbG90LWdyb3VwLW1lbWJlcic6IC8vIDkuNi4xOVxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTAuMyBEcmF3aW5nIFNoYXBlcyAqL1xuXHRcdFx0Y2FzZSAncmVjdCc6IC8vIDEwLjMuMlxuXHRcdFx0XHRicmVhaztcblxuXHRcdFx0LyogMTQuNiBEREUgQ29ubmVjdGlvbnMgKi9cblx0XHRcdGNhc2UgJ2RkZS1jb25uZWN0aW9uLWRlY2xzJzogLy8gMTQuNi4yIDx0ZXh0OlxuXHRcdFx0Y2FzZSAnZGRlLWNvbm5lY3Rpb24tZGVjbCc6IC8vIDE0LjYuMyA8dGV4dDpcblx0XHRcdGNhc2UgJ2RkZS1saW5rJzogLy8gMTQuNi40IDx0YWJsZTpcblx0XHRcdGNhc2UgJ2RkZS1zb3VyY2UnOiAvLyAxNC42LjUgPG9mZmljZTpcblx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdGNhc2UgJ3Byb3BlcnRpZXMnOiBicmVhazsgLy8gMTMuNyA8Zm9ybTpwcm9wZXJ0aWVzPlxuXHRcdFx0Y2FzZSAncHJvcGVydHknOiBicmVhazsgLy8gMTMuOCA8Zm9ybTpwcm9wZXJ0eT5cblxuXHRcdFx0Y2FzZSAnYSc6IC8vIDYuMS44IGh5cGVybGlua1xuXHRcdFx0XHRpZihSblsxXSE9PSAnLycpIHtcblx0XHRcdFx0XHRhdGFnID0gcGFyc2V4bWx0YWcoUm5bMF0sIGZhbHNlKTtcblx0XHRcdFx0XHRpZighYXRhZy5ocmVmKSBicmVhaztcblx0XHRcdFx0XHRhdGFnLlRhcmdldCA9IHVuZXNjYXBleG1sKGF0YWcuaHJlZik7IGRlbGV0ZSBhdGFnLmhyZWY7XG5cdFx0XHRcdFx0aWYoYXRhZy5UYXJnZXQuY2hhckF0KDApID09IFwiI1wiICYmIGF0YWcuVGFyZ2V0LmluZGV4T2YoXCIuXCIpID4gLTEpIHtcblx0XHRcdFx0XHRcdF9SZWYgPSBvZHNfdG9fY3NmXzNEKGF0YWcuVGFyZ2V0LnNsaWNlKDEpKTtcblx0XHRcdFx0XHRcdGF0YWcuVGFyZ2V0ID0gXCIjXCIgKyBfUmVmWzBdICsgXCIhXCIgKyBfUmVmWzFdO1xuXHRcdFx0XHRcdH0gZWxzZSBpZihhdGFnLlRhcmdldC5tYXRjaCgvXlxcLlxcLltcXFxcXFwvXS8pKSBhdGFnLlRhcmdldCA9IGF0YWcuVGFyZ2V0LnNsaWNlKDMpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHQvKiBub24tc3RhbmRhcmQgKi9cblx0XHRcdGNhc2UgJ3RhYmxlLXByb3RlY3Rpb24nOiBicmVhaztcblx0XHRcdGNhc2UgJ2RhdGEtcGlsb3QtZ3JhbmQtdG90YWwnOiBicmVhazsgLy8gPHRhYmxlOlxuXHRcdFx0Y2FzZSAnb2ZmaWNlLWRvY3VtZW50LWNvbW1vbi1hdHRycyc6IGJyZWFrOyAvLyBiYXJlXG5cdFx0XHRkZWZhdWx0OiBzd2l0Y2goUm5bMl0pIHtcblx0XHRcdFx0Y2FzZSAnZGM6JzogICAgICAgLy8gVE9ETzogcHJvcGVydGllc1xuXHRcdFx0XHRjYXNlICdjYWxjZXh0Oic6ICAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnbG9leHQ6JzogICAgLy8gaWdub3JlIHVuZG9jdW1lbnRlZCBleHRlbnNpb25zXG5cdFx0XHRcdGNhc2UgJ29vbzonOiAgICAgIC8vIGlnbm9yZSB1bmRvY3VtZW50ZWQgZXh0ZW5zaW9uc1xuXHRcdFx0XHRjYXNlICdjaGFydG9vbzonOiAvLyBpZ25vcmUgdW5kb2N1bWVudGVkIGV4dGVuc2lvbnNcblx0XHRcdFx0Y2FzZSAnZHJhdzonOiAgICAgLy8gVE9ETzogZHJhd2luZ1xuXHRcdFx0XHRjYXNlICdzdHlsZTonOiAgICAvLyBUT0RPOiBzdHlsZXNcblx0XHRcdFx0Y2FzZSAnY2hhcnQ6JzogICAgLy8gVE9ETzogY2hhcnRzXG5cdFx0XHRcdGNhc2UgJ2Zvcm06JzogICAgIC8vIFRPRE86IGZvcm1zXG5cdFx0XHRcdGNhc2UgJ3VvZjonOiAgICAgIC8vIFRPRE86IHVvZlxuXHRcdFx0XHRjYXNlICfooag6JzogICAgICAgLy8gVE9ETzogdW9mXG5cdFx0XHRcdGNhc2UgJ+WtlzonOiAgICAgICAvLyBUT0RPOiB1b2Zcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0ZGVmYXVsdDogaWYob3B0cy5XVEYpIHRocm93IG5ldyBFcnJvcihSbik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHZhciBvdXQvKjpXb3JrYm9vayovID0gKHtcblx0XHRcdFNoZWV0czogU2hlZXRzLFxuXHRcdFx0U2hlZXROYW1lczogU2hlZXROYW1lcyxcblx0XHRcdFdvcmtib29rOiBXQlxuXHRcdH0vKjphbnkqLyk7XG5cdFx0aWYob3B0cy5ib29rU2hlZXRzKSBkZWxldGUgLyo6OigqL291dC8qOjogOmFueSkqLy5TaGVldHM7XG5cdFx0cmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2Vfb2RzKHppcC8qOlpJUEZpbGUqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0b3B0cyA9IG9wdHMgfHwgKHt9Lyo6YW55Ki8pO1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSkgcGFyc2VfbWFuaWZlc3QoZ2V0emlwZGF0YSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSwgb3B0cyk7XG5cdHZhciBjb250ZW50ID0gZ2V0emlwc3RyKHppcCwgJ2NvbnRlbnQueG1sJyk7XG5cdGlmKCFjb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIGNvbnRlbnQueG1sIGluIE9EUyAvIFVPRiBmaWxlXCIpO1xuXHR2YXIgd2IgPSBwYXJzZV9jb250ZW50X3htbCh1dGY4cmVhZChjb250ZW50KSwgb3B0cyk7XG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ21ldGEueG1sJykpIHdiLlByb3BzID0gcGFyc2VfY29yZV9wcm9wcyhnZXR6aXBkYXRhKHppcCwgJ21ldGEueG1sJykpO1xuXHRyZXR1cm4gd2I7XG59XG5mdW5jdGlvbiBwYXJzZV9mb2RzKGRhdGEvKjpzdHJpbmcqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0cmV0dXJuIHBhcnNlX2NvbnRlbnRfeG1sKGRhdGEsIG9wdHMpO1xufVxuXG4vKiBPcGVuRG9jdW1lbnQgKi9cbnZhciB3cml0ZV9zdHlsZXNfb2RzLyo6eyh3YjphbnksIG9wdHM6YW55KTpzdHJpbmd9Ki8gPSAvKiBAX19QVVJFX18gKi8oZnVuY3Rpb24oKSB7XG5cdHZhciBtYXN0ZXJfc3R5bGVzID0gW1xuXHRcdCc8b2ZmaWNlOm1hc3Rlci1zdHlsZXM+Jyxcblx0XHRcdCc8c3R5bGU6bWFzdGVyLXBhZ2Ugc3R5bGU6bmFtZT1cIm1wMVwiIHN0eWxlOnBhZ2UtbGF5b3V0LW5hbWU9XCJtcDFcIj4nLFxuXHRcdFx0XHQnPHN0eWxlOmhlYWRlci8+Jyxcblx0XHRcdFx0JzxzdHlsZTpoZWFkZXItbGVmdCBzdHlsZTpkaXNwbGF5PVwiZmFsc2VcIi8+Jyxcblx0XHRcdFx0JzxzdHlsZTpmb290ZXIvPicsXG5cdFx0XHRcdCc8c3R5bGU6Zm9vdGVyLWxlZnQgc3R5bGU6ZGlzcGxheT1cImZhbHNlXCIvPicsXG5cdFx0XHQnPC9zdHlsZTptYXN0ZXItcGFnZT4nLFxuXHRcdCc8L29mZmljZTptYXN0ZXItc3R5bGVzPidcblx0XS5qb2luKFwiXCIpO1xuXG5cdHZhciBwYXlsb2FkID0gJzxvZmZpY2U6ZG9jdW1lbnQtc3R5bGVzICcgKyB3eHRfaGVscGVyKHtcblx0XHQneG1sbnM6b2ZmaWNlJzogICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMFwiLFxuXHRcdCd4bWxuczp0YWJsZSc6ICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjBcIixcblx0XHQneG1sbnM6c3R5bGUnOiAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wXCIsXG5cdFx0J3htbG5zOnRleHQnOiAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wXCIsXG5cdFx0J3htbG5zOmRyYXcnOiAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wXCIsXG5cdFx0J3htbG5zOmZvJzogICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdCd4bWxuczp4bGluayc6ICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuXHRcdCd4bWxuczpkYyc6ICAgICAgIFwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIixcblx0XHQneG1sbnM6bnVtYmVyJzogICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMFwiLFxuXHRcdCd4bWxuczpzdmcnOiAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpzdmctY29tcGF0aWJsZToxLjBcIixcblx0XHQneG1sbnM6b2YnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2Y6MS4yXCIsXG5cdFx0J29mZmljZTp2ZXJzaW9uJzogXCIxLjJcIlxuXHR9KSArICc+JyArIG1hc3Rlcl9zdHlsZXMgKyAnPC9vZmZpY2U6ZG9jdW1lbnQtc3R5bGVzPic7XG5cblx0cmV0dXJuIGZ1bmN0aW9uIHdzbygvKjo6d2IsIG9wdHMqLykge1xuXHRcdHJldHVybiBYTUxfSEVBREVSICsgcGF5bG9hZDtcblx0fTtcbn0pKCk7XG52YXIgd3JpdGVfY29udGVudF9vZHMvKjp7KHdiOmFueSwgb3B0czphbnkpOnN0cmluZ30qLyA9IC8qIEBfX1BVUkVfXyAqLyhmdW5jdGlvbigpIHtcblx0LyogNi4xLjIgV2hpdGUgU3BhY2UgQ2hhcmFjdGVycyAqL1xuXHR2YXIgd3JpdGVfdGV4dF9wID0gZnVuY3Rpb24odGV4dC8qOnN0cmluZyovKS8qOnN0cmluZyovIHtcblx0XHRyZXR1cm4gZXNjYXBleG1sKHRleHQpXG5cdFx0XHQucmVwbGFjZSgvICArL2csIGZ1bmN0aW9uKCQkKXtyZXR1cm4gJzx0ZXh0OnMgdGV4dDpjPVwiJyskJC5sZW5ndGgrJ1wiLz4nO30pXG5cdFx0XHQucmVwbGFjZSgvXFx0L2csIFwiPHRleHQ6dGFiLz5cIilcblx0XHRcdC5yZXBsYWNlKC9cXG4vZywgXCI8L3RleHQ6cD48dGV4dDpwPlwiKVxuXHRcdFx0LnJlcGxhY2UoL14gLywgXCI8dGV4dDpzLz5cIikucmVwbGFjZSgvICQvLCBcIjx0ZXh0OnMvPlwiKTtcblx0fTtcblxuXHR2YXIgbnVsbF9jZWxsX3htbCA9ICcgICAgICAgICAgPHRhYmxlOnRhYmxlLWNlbGwgLz5cXG4nO1xuXHR2YXIgY292ZXJlZF9jZWxsX3htbCA9ICcgICAgICAgICAgPHRhYmxlOmNvdmVyZWQtdGFibGUtY2VsbC8+XFxuJztcblx0dmFyIHdyaXRlX3dzID0gZnVuY3Rpb24od3MsIHdiLyo6V29ya2Jvb2sqLywgaS8qOm51bWJlciovLyo6Oiwgb3B0cyovKS8qOnN0cmluZyovIHtcblx0XHQvKiBTZWN0aW9uIDkgVGFibGVzICovXG5cdFx0dmFyIG8vKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0XHRvLnB1c2goJyAgICAgIDx0YWJsZTp0YWJsZSB0YWJsZTpuYW1lPVwiJyArIGVzY2FwZXhtbCh3Yi5TaGVldE5hbWVzW2ldKSArICdcIiB0YWJsZTpzdHlsZS1uYW1lPVwidGExXCI+XFxuJyk7XG5cdFx0dmFyIFI9MCxDPTAsIHJhbmdlID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ118fFwiQTFcIik7XG5cdFx0dmFyIG1hcnIvKjpBcnJheTxSYW5nZT4qLyA9IHdzWychbWVyZ2VzJ10gfHwgW10sIG1pID0gMDtcblx0XHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHdzKTtcblx0XHRpZih3c1tcIiFjb2xzXCJdKSB7XG5cdFx0XHRmb3IoQyA9IDA7IEMgPD0gcmFuZ2UuZS5jOyArK0MpIG8ucHVzaCgnICAgICAgICA8dGFibGU6dGFibGUtY29sdW1uJyArICh3c1tcIiFjb2xzXCJdW0NdID8gJyB0YWJsZTpzdHlsZS1uYW1lPVwiY28nICsgd3NbXCIhY29sc1wiXVtDXS5vZHMgKyAnXCInIDogJycpICsgJz48L3RhYmxlOnRhYmxlLWNvbHVtbj5cXG4nKTtcblx0XHR9XG5cdFx0dmFyIEggPSBcIlwiLCBST1dTID0gd3NbXCIhcm93c1wiXXx8W107XG5cdFx0Zm9yKFIgPSAwOyBSIDwgcmFuZ2Uucy5yOyArK1IpIHtcblx0XHRcdEggPSBST1dTW1JdID8gJyB0YWJsZTpzdHlsZS1uYW1lPVwicm8nICsgUk9XU1tSXS5vZHMgKyAnXCInIDogXCJcIjtcblx0XHRcdG8ucHVzaCgnICAgICAgICA8dGFibGU6dGFibGUtcm93JyArIEggKyAnPjwvdGFibGU6dGFibGUtcm93PlxcbicpO1xuXHRcdH1cblx0XHRmb3IoOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG5cdFx0XHRIID0gUk9XU1tSXSA/ICcgdGFibGU6c3R5bGUtbmFtZT1cInJvJyArIFJPV1NbUl0ub2RzICsgJ1wiJyA6IFwiXCI7XG5cdFx0XHRvLnB1c2goJyAgICAgICAgPHRhYmxlOnRhYmxlLXJvdycgKyBIICsgJz5cXG4nKTtcblx0XHRcdGZvcihDPTA7IEMgPCByYW5nZS5zLmM7ICsrQykgby5wdXNoKG51bGxfY2VsbF94bWwpO1xuXHRcdFx0Zm9yKDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuXHRcdFx0XHR2YXIgc2tpcCA9IGZhbHNlLCBjdCA9IHt9LCB0ZXh0cCA9IFwiXCI7XG5cdFx0XHRcdGZvcihtaSA9IDA7IG1pICE9IG1hcnIubGVuZ3RoOyArK21pKSB7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5jID4gQykgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5yID4gUikgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0uZS5jIDwgQykgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0uZS5yIDwgUikgY29udGludWU7XG5cdFx0XHRcdFx0aWYobWFyclttaV0ucy5jICE9IEMgfHwgbWFyclttaV0ucy5yICE9IFIpIHNraXAgPSB0cnVlO1xuXHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItY29sdW1ucy1zcGFubmVkJ10gPSAobWFyclttaV0uZS5jIC0gbWFyclttaV0ucy5jICsgMSk7XG5cdFx0XHRcdFx0Y3RbJ3RhYmxlOm51bWJlci1yb3dzLXNwYW5uZWQnXSA9ICAgIChtYXJyW21pXS5lLnIgLSBtYXJyW21pXS5zLnIgKyAxKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZihza2lwKSB7IG8ucHVzaChjb3ZlcmVkX2NlbGxfeG1sKTsgY29udGludWU7IH1cblx0XHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKHtyOlIsIGM6Q30pLCBjZWxsID0gZGVuc2UgPyAod3NbUl18fFtdKVtDXTogd3NbcmVmXTtcblx0XHRcdFx0aWYoY2VsbCAmJiBjZWxsLmYpIHtcblx0XHRcdFx0XHRjdFsndGFibGU6Zm9ybXVsYSddID0gZXNjYXBleG1sKGNzZl90b19vZHNfZm9ybXVsYShjZWxsLmYpKTtcblx0XHRcdFx0XHRpZihjZWxsLkYpIHtcblx0XHRcdFx0XHRcdGlmKGNlbGwuRi5zbGljZSgwLCByZWYubGVuZ3RoKSA9PSByZWYpIHtcblx0XHRcdFx0XHRcdFx0dmFyIF9GcmVmID0gZGVjb2RlX3JhbmdlKGNlbGwuRik7XG5cdFx0XHRcdFx0XHRcdGN0Wyd0YWJsZTpudW1iZXItbWF0cml4LWNvbHVtbnMtc3Bhbm5lZCddID0gKF9GcmVmLmUuYyAtIF9GcmVmLnMuYyArIDEpO1xuXHRcdFx0XHRcdFx0XHRjdFsndGFibGU6bnVtYmVyLW1hdHJpeC1yb3dzLXNwYW5uZWQnXSA9ICAgIChfRnJlZi5lLnIgLSBfRnJlZi5zLnIgKyAxKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIWNlbGwpIHsgby5wdXNoKG51bGxfY2VsbF94bWwpOyBjb250aW51ZTsgfVxuXHRcdFx0XHRzd2l0Y2goY2VsbC50KSB7XG5cdFx0XHRcdFx0Y2FzZSAnYic6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IChjZWxsLnYgPyAnVFJVRScgOiAnRkFMU0UnKTtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJib29sZWFuXCI7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOmJvb2xlYW4tdmFsdWUnXSA9IChjZWxsLnYgPyAndHJ1ZScgOiAnZmFsc2UnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ24nOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSAoY2VsbC53fHxTdHJpbmcoY2VsbC52fHwwKSk7XG5cdFx0XHRcdFx0XHRjdFsnb2ZmaWNlOnZhbHVlLXR5cGUnXSA9IFwiZmxvYXRcIjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUnXSA9IChjZWxsLnZ8fDApO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAncyc6IGNhc2UgJ3N0cic6XG5cdFx0XHRcdFx0XHR0ZXh0cCA9IGNlbGwudiA9PSBudWxsID8gXCJcIiA6IGNlbGwudjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6dmFsdWUtdHlwZSddID0gXCJzdHJpbmdcIjtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ2QnOlxuXHRcdFx0XHRcdFx0dGV4dHAgPSAoY2VsbC53fHwocGFyc2VEYXRlKGNlbGwudikudG9JU09TdHJpbmcoKSkpO1xuXHRcdFx0XHRcdFx0Y3RbJ29mZmljZTp2YWx1ZS10eXBlJ10gPSBcImRhdGVcIjtcblx0XHRcdFx0XHRcdGN0WydvZmZpY2U6ZGF0ZS12YWx1ZSddID0gKHBhcnNlRGF0ZShjZWxsLnYpLnRvSVNPU3RyaW5nKCkpO1xuXHRcdFx0XHRcdFx0Y3RbJ3RhYmxlOnN0eWxlLW5hbWUnXSA9IFwiY2UxXCI7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHQvL2Nhc2UgJ2UnOlxuXHRcdFx0XHRcdGRlZmF1bHQ6IG8ucHVzaChudWxsX2NlbGxfeG1sKTsgY29udGludWU7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIHRleHRfcCA9IHdyaXRlX3RleHRfcCh0ZXh0cCk7XG5cdFx0XHRcdGlmKGNlbGwubCAmJiBjZWxsLmwuVGFyZ2V0KSB7XG5cdFx0XHRcdFx0dmFyIF90Z3QgPSBjZWxsLmwuVGFyZ2V0O1xuXHRcdFx0XHRcdF90Z3QgPSBfdGd0LmNoYXJBdCgwKSA9PSBcIiNcIiA/IFwiI1wiICsgY3NmX3RvX29kc18zRChfdGd0LnNsaWNlKDEpKSA6IF90Z3Q7XG5cdFx0XHRcdFx0Ly8gVE9ETzogY2hvb3NlIGNvcnJlY3QgcGFyZW50IHBhdGggZm9ybWF0IGJhc2VkIG9uIGxpbmsgZGVsaW1pdGVyc1xuXHRcdFx0XHRcdGlmKF90Z3QuY2hhckF0KDApICE9IFwiI1wiICYmICFfdGd0Lm1hdGNoKC9eXFx3KzovKSkgX3RndCA9ICcuLi8nICsgX3RndDtcblx0XHRcdFx0XHR0ZXh0X3AgPSB3cml0ZXh0YWcoJ3RleHQ6YScsIHRleHRfcCwgeyd4bGluazpocmVmJzogX3RndC5yZXBsYWNlKC8mL2csIFwiJmFtcDtcIil9KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRvLnB1c2goJyAgICAgICAgICAnICsgd3JpdGV4dGFnKCd0YWJsZTp0YWJsZS1jZWxsJywgd3JpdGV4dGFnKCd0ZXh0OnAnLCB0ZXh0X3AsIHt9KSwgY3QpICsgJ1xcbicpO1xuXHRcdFx0fVxuXHRcdFx0by5wdXNoKCcgICAgICAgIDwvdGFibGU6dGFibGUtcm93PlxcbicpO1xuXHRcdH1cblx0XHRvLnB1c2goJyAgICAgIDwvdGFibGU6dGFibGU+XFxuJyk7XG5cdFx0cmV0dXJuIG8uam9pbihcIlwiKTtcblx0fTtcblxuXHR2YXIgd3JpdGVfYXV0b21hdGljX3N0eWxlc19vZHMgPSBmdW5jdGlvbihvLyo6QXJyYXk8c3RyaW5nPiovLCB3Yikge1xuXHRcdG8ucHVzaCgnIDxvZmZpY2U6YXV0b21hdGljLXN0eWxlcz5cXG4nKTtcblxuXHRcdG8ucHVzaCgnICA8bnVtYmVyOmRhdGUtc3R5bGUgc3R5bGU6bmFtZT1cIk4zN1wiIG51bWJlcjphdXRvbWF0aWMtb3JkZXI9XCJ0cnVlXCI+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOm1vbnRoIG51bWJlcjpzdHlsZT1cImxvbmdcIi8+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOnRleHQ+LzwvbnVtYmVyOnRleHQ+XFxuJyk7XG5cdFx0by5wdXNoKCcgICA8bnVtYmVyOmRheSBudW1iZXI6c3R5bGU9XCJsb25nXCIvPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjp0ZXh0Pi88L251bWJlcjp0ZXh0PlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPG51bWJlcjp5ZWFyLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgPC9udW1iZXI6ZGF0ZS1zdHlsZT5cXG4nKTtcblxuXHRcdC8qIGNvbHVtbiBzdHlsZXMgKi9cblx0XHR2YXIgY2lkeCA9IDA7XG5cdFx0d2IuU2hlZXROYW1lcy5tYXAoZnVuY3Rpb24obikgeyByZXR1cm4gd2IuU2hlZXRzW25dOyB9KS5mb3JFYWNoKGZ1bmN0aW9uKHdzKSB7XG5cdFx0XHRpZighd3MpIHJldHVybjtcblx0XHRcdGlmKHdzW1wiIWNvbHNcIl0pIHtcblx0XHRcdFx0Zm9yKHZhciBDID0gMDsgQyA8IHdzW1wiIWNvbHNcIl0ubGVuZ3RoOyArK0MpIGlmKHdzW1wiIWNvbHNcIl1bQ10pIHtcblx0XHRcdFx0XHR2YXIgY29sb2JqID0gd3NbXCIhY29sc1wiXVtDXTtcblx0XHRcdFx0XHRpZihjb2xvYmoud2lkdGggPT0gbnVsbCAmJiBjb2xvYmoud3B4ID09IG51bGwgJiYgY29sb2JqLndjaCA9PSBudWxsKSBjb250aW51ZTtcblx0XHRcdFx0XHRwcm9jZXNzX2NvbChjb2xvYmopO1xuXHRcdFx0XHRcdGNvbG9iai5vZHMgPSBjaWR4O1xuXHRcdFx0XHRcdHZhciB3ID0gd3NbXCIhY29sc1wiXVtDXS53cHggKyBcInB4XCI7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwiY28nICsgY2lkeCArICdcIiBzdHlsZTpmYW1pbHk9XCJ0YWJsZS1jb2x1bW5cIj5cXG4nKTtcblx0XHRcdFx0XHRvLnB1c2goJyAgIDxzdHlsZTp0YWJsZS1jb2x1bW4tcHJvcGVydGllcyBmbzpicmVhay1iZWZvcmU9XCJhdXRvXCIgc3R5bGU6Y29sdW1uLXdpZHRoPVwiJyArIHcgKyAnXCIvPlxcbicpO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8L3N0eWxlOnN0eWxlPlxcbicpO1xuXHRcdFx0XHRcdCsrY2lkeDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Lyogcm93IHN0eWxlcyAqL1xuXHRcdHZhciByaWR4ID0gMDtcblx0XHR3Yi5TaGVldE5hbWVzLm1hcChmdW5jdGlvbihuKSB7IHJldHVybiB3Yi5TaGVldHNbbl07IH0pLmZvckVhY2goZnVuY3Rpb24od3MpIHtcblx0XHRcdGlmKCF3cykgcmV0dXJuO1xuXHRcdFx0aWYod3NbXCIhcm93c1wiXSkge1xuXHRcdFx0XHRmb3IodmFyIFIgPSAwOyBSIDwgd3NbXCIhcm93c1wiXS5sZW5ndGg7ICsrUikgaWYod3NbXCIhcm93c1wiXVtSXSkge1xuXHRcdFx0XHRcdHdzW1wiIXJvd3NcIl1bUl0ub2RzID0gcmlkeDtcblx0XHRcdFx0XHR2YXIgaCA9IHdzW1wiIXJvd3NcIl1bUl0uaHB4ICsgXCJweFwiO1xuXHRcdFx0XHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cInJvJyArIHJpZHggKyAnXCIgc3R5bGU6ZmFtaWx5PVwidGFibGUtcm93XCI+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgICA8c3R5bGU6dGFibGUtcm93LXByb3BlcnRpZXMgZm86YnJlYWstYmVmb3JlPVwiYXV0b1wiIHN0eWxlOnJvdy1oZWlnaHQ9XCInICsgaCArICdcIi8+XFxuJyk7XG5cdFx0XHRcdFx0by5wdXNoKCcgIDwvc3R5bGU6c3R5bGU+XFxuJyk7XG5cdFx0XHRcdFx0KytyaWR4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHQvKiB0YWJsZSAqL1xuXHRcdG8ucHVzaCgnICA8c3R5bGU6c3R5bGUgc3R5bGU6bmFtZT1cInRhMVwiIHN0eWxlOmZhbWlseT1cInRhYmxlXCIgc3R5bGU6bWFzdGVyLXBhZ2UtbmFtZT1cIm1wMVwiPlxcbicpO1xuXHRcdG8ucHVzaCgnICAgPHN0eWxlOnRhYmxlLXByb3BlcnRpZXMgdGFibGU6ZGlzcGxheT1cInRydWVcIiBzdHlsZTp3cml0aW5nLW1vZGU9XCJsci10YlwiLz5cXG4nKTtcblx0XHRvLnB1c2goJyAgPC9zdHlsZTpzdHlsZT5cXG4nKTtcblxuXHRcdC8qIHRhYmxlIGNlbGxzLCB0ZXh0ICovXG5cdFx0by5wdXNoKCcgIDxzdHlsZTpzdHlsZSBzdHlsZTpuYW1lPVwiY2UxXCIgc3R5bGU6ZmFtaWx5PVwidGFibGUtY2VsbFwiIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPVwiRGVmYXVsdFwiIHN0eWxlOmRhdGEtc3R5bGUtbmFtZT1cIk4zN1wiLz5cXG4nKTtcblxuXHRcdC8qIHBhZ2UtbGF5b3V0ICovXG5cblx0XHRvLnB1c2goJyA8L29mZmljZTphdXRvbWF0aWMtc3R5bGVzPlxcbicpO1xuXHR9O1xuXG5cdHJldHVybiBmdW5jdGlvbiB3Y3god2IsIG9wdHMpIHtcblx0XHR2YXIgbyA9IFtYTUxfSEVBREVSXTtcblx0XHQvKiAzLjEuMy4yICovXG5cdFx0dmFyIGF0dHIgPSB3eHRfaGVscGVyKHtcblx0XHRcdCd4bWxuczpvZmZpY2UnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6b2ZmaWNlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnRhYmxlJzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczp0YWJsZToxLjBcIixcblx0XHRcdCd4bWxuczpzdHlsZSc6ICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c3R5bGU6MS4wXCIsXG5cdFx0XHQneG1sbnM6dGV4dCc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnRleHQ6MS4wXCIsXG5cdFx0XHQneG1sbnM6ZHJhdyc6ICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmRyYXdpbmc6MS4wXCIsXG5cdFx0XHQneG1sbnM6Zm8nOiAgICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnhzbC1mby1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnhsaW5rJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuXHRcdFx0J3htbG5zOmRjJzogICAgICAgICAgIFwiaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9cIixcblx0XHRcdCd4bWxuczptZXRhJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6bWV0YToxLjBcIixcblx0XHRcdCd4bWxuczpudW1iZXInOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZGF0YXN0eWxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOnByZXNlbnRhdGlvbic6IFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpwcmVzZW50YXRpb246MS4wXCIsXG5cdFx0XHQneG1sbnM6c3ZnJzogICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOnN2Zy1jb21wYXRpYmxlOjEuMFwiLFxuXHRcdFx0J3htbG5zOmNoYXJ0JzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDp4bWxuczpjaGFydDoxLjBcIixcblx0XHRcdCd4bWxuczpkcjNkJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6ZHIzZDoxLjBcIixcblx0XHRcdCd4bWxuczptYXRoJzogICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIixcblx0XHRcdCd4bWxuczpmb3JtJzogICAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6Zm9ybToxLjBcIixcblx0XHRcdCd4bWxuczpzY3JpcHQnOiAgICAgICBcInVybjpvYXNpczpuYW1lczp0YzpvcGVuZG9jdW1lbnQ6eG1sbnM6c2NyaXB0OjEuMFwiLFxuXHRcdFx0J3htbG5zOm9vbyc6ICAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDQvb2ZmaWNlXCIsXG5cdFx0XHQneG1sbnM6b29vdyc6ICAgICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwNC93cml0ZXJcIixcblx0XHRcdCd4bWxuczpvb29jJzogICAgICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA0L2NhbGNcIixcblx0XHRcdCd4bWxuczpkb20nOiAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEveG1sLWV2ZW50c1wiLFxuXHRcdFx0J3htbG5zOnhmb3Jtcyc6ICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMi94Zm9ybXNcIixcblx0XHRcdCd4bWxuczp4c2QnOiAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hXCIsXG5cdFx0XHQneG1sbnM6eHNpJzogICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiLFxuXHRcdFx0J3htbG5zOnNoZWV0JzogICAgICAgIFwidXJuOm9hc2lzOm5hbWVzOnRjOm9wZW5kb2N1bWVudDpzaDMzdGpzOjEuMFwiLFxuXHRcdFx0J3htbG5zOnJwdCc6ICAgICAgICAgIFwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDUvcmVwb3J0XCIsXG5cdFx0XHQneG1sbnM6b2YnOiAgICAgICAgICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOm9mOjEuMlwiLFxuXHRcdFx0J3htbG5zOnhodG1sJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbFwiLFxuXHRcdFx0J3htbG5zOmdyZGRsJzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMy9nL2RhdGEtdmlldyNcIixcblx0XHRcdCd4bWxuczp0YWJsZW9vbyc6ICAgICBcImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDA5L3RhYmxlXCIsXG5cdFx0XHQneG1sbnM6ZHJhd29vbyc6ICAgICAgXCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAxMC9kcmF3XCIsXG5cdFx0XHQneG1sbnM6Y2FsY2V4dCc6ICAgICAgXCJ1cm46b3JnOmRvY3VtZW50Zm91bmRhdGlvbjpuYW1lczpleHBlcmltZW50YWw6Y2FsYzp4bWxuczpjYWxjZXh0OjEuMFwiLFxuXHRcdFx0J3htbG5zOmxvZXh0JzogICAgICAgIFwidXJuOm9yZzpkb2N1bWVudGZvdW5kYXRpb246bmFtZXM6ZXhwZXJpbWVudGFsOm9mZmljZTp4bWxuczpsb2V4dDoxLjBcIixcblx0XHRcdCd4bWxuczpmaWVsZCc6ICAgICAgICBcInVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb28tbXMtaW50ZXJvcDp4bWxuczpmaWVsZDoxLjBcIixcblx0XHRcdCd4bWxuczpmb3JteCc6ICAgICAgICBcInVybjpvcGVub2ZmaWNlOm5hbWVzOmV4cGVyaW1lbnRhbDpvb3htbC1vZGYtaW50ZXJvcDp4bWxuczpmb3JtOjEuMFwiLFxuXHRcdFx0J3htbG5zOmNzczN0JzogICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy10ZXh0L1wiLFxuXHRcdFx0J29mZmljZTp2ZXJzaW9uJzogICAgIFwiMS4yXCJcblx0XHR9KTtcblxuXHRcdHZhciBmb2RzID0gd3h0X2hlbHBlcih7XG5cdFx0XHQneG1sbnM6Y29uZmlnJzogICAgXCJ1cm46b2FzaXM6bmFtZXM6dGM6b3BlbmRvY3VtZW50OnhtbG5zOmNvbmZpZzoxLjBcIixcblx0XHRcdCdvZmZpY2U6bWltZXR5cGUnOiBcImFwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXRcIlxuXHRcdH0pO1xuXG5cdFx0aWYob3B0cy5ib29rVHlwZSA9PSBcImZvZHNcIikge1xuXHRcdFx0by5wdXNoKCc8b2ZmaWNlOmRvY3VtZW50JyArIGF0dHIgKyBmb2RzICsgJz5cXG4nKTtcblx0XHRcdG8ucHVzaCh3cml0ZV9tZXRhX29kcygpLnJlcGxhY2UoL29mZmljZTpkb2N1bWVudC1tZXRhL2csIFwib2ZmaWNlOm1ldGFcIikpO1xuXHRcdFx0Ly8gVE9ETzogc2V0dGluZ3MgKGVxdWl2IG9mIHNldHRpbmdzLnhtbCBmb3IgT0RTKVxuXHRcdH0gZWxzZSBvLnB1c2goJzxvZmZpY2U6ZG9jdW1lbnQtY29udGVudCcgKyBhdHRyICArICc+XFxuJyk7XG5cdFx0Ly8gby5wdXNoKCcgIDxvZmZpY2U6c2NyaXB0cy8+XFxuJyk7XG5cdFx0d3JpdGVfYXV0b21hdGljX3N0eWxlc19vZHMobywgd2IpO1xuXHRcdG8ucHVzaCgnICA8b2ZmaWNlOmJvZHk+XFxuJyk7XG5cdFx0by5wdXNoKCcgICAgPG9mZmljZTpzcHJlYWRzaGVldD5cXG4nKTtcblx0XHRmb3IodmFyIGkgPSAwOyBpICE9IHdiLlNoZWV0TmFtZXMubGVuZ3RoOyArK2kpIG8ucHVzaCh3cml0ZV93cyh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpXV0sIHdiLCBpLCBvcHRzKSk7XG5cdFx0by5wdXNoKCcgICAgPC9vZmZpY2U6c3ByZWFkc2hlZXQ+XFxuJyk7XG5cdFx0by5wdXNoKCcgIDwvb2ZmaWNlOmJvZHk+XFxuJyk7XG5cdFx0aWYob3B0cy5ib29rVHlwZSA9PSBcImZvZHNcIikgby5wdXNoKCc8L29mZmljZTpkb2N1bWVudD4nKTtcblx0XHRlbHNlIG8ucHVzaCgnPC9vZmZpY2U6ZG9jdW1lbnQtY29udGVudD4nKTtcblx0XHRyZXR1cm4gby5qb2luKFwiXCIpO1xuXHR9O1xufSkoKTtcblxuZnVuY3Rpb24gd3JpdGVfb2RzKHdiLyo6YW55Ki8sIG9wdHMvKjphbnkqLykge1xuXHRpZihvcHRzLmJvb2tUeXBlID09IFwiZm9kc1wiKSByZXR1cm4gd3JpdGVfY29udGVudF9vZHMod2IsIG9wdHMpO1xuXG5cdHZhciB6aXAgPSB6aXBfbmV3KCk7XG5cdHZhciBmID0gXCJcIjtcblxuXHR2YXIgbWFuaWZlc3QvKjpBcnJheTxBcnJheTxzdHJpbmc+ID4qLyA9IFtdO1xuXHR2YXIgcmRmLyo6QXJyYXk8W3N0cmluZywgc3RyaW5nXT4qLyA9IFtdO1xuXG5cdC8qIFBhcnQgMyBTZWN0aW9uIDMuMyBNSU1FIE1lZGlhIFR5cGUgKi9cblx0ZiA9IFwibWltZXR5cGVcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgXCJhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0XCIpO1xuXG5cdC8qIFBhcnQgMSBTZWN0aW9uIDIuMiBEb2N1bWVudHMgKi9cblx0ZiA9IFwiY29udGVudC54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfY29udGVudF9vZHMod2IsIG9wdHMpKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJ0ZXh0L3htbFwiXSk7XG5cdHJkZi5wdXNoKFtmLCBcIkNvbnRlbnRGaWxlXCJdKTtcblxuXHQvKiBUT0RPOiB0aGVzZSBhcmUgaGFyZC1jb2RlZCBzdHlsZXMgdG8gc2F0aWF0ZSBleGNlbCAqL1xuXHRmID0gXCJzdHlsZXMueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3N0eWxlc19vZHMod2IsIG9wdHMpKTtcblx0bWFuaWZlc3QucHVzaChbZiwgXCJ0ZXh0L3htbFwiXSk7XG5cdHJkZi5wdXNoKFtmLCBcIlN0eWxlc0ZpbGVcIl0pO1xuXG5cdC8qIFRPRE86IHRoaXMgaXMgaGFyZC1jb2RlZCB0byBzYXRpYXRlIGV4Y2VsICovXG5cdGYgPSBcIm1ldGEueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIFhNTF9IRUFERVIgKyB3cml0ZV9tZXRhX29kcygvKjo6d2IsIG9wdHMqLykpO1xuXHRtYW5pZmVzdC5wdXNoKFtmLCBcInRleHQveG1sXCJdKTtcblx0cmRmLnB1c2goW2YsIFwiTWV0YWRhdGFGaWxlXCJdKTtcblxuXHQvKiBQYXJ0IDMgU2VjdGlvbiA2IE1ldGFkYXRhIE1hbmlmZXN0IEZpbGUgKi9cblx0ZiA9IFwibWFuaWZlc3QucmRmXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3JkZihyZGYvKiwgb3B0cyovKSk7XG5cdG1hbmlmZXN0LnB1c2goW2YsIFwiYXBwbGljYXRpb24vcmRmK3htbFwiXSk7XG5cblx0LyogUGFydCAzIFNlY3Rpb24gNCBNYW5pZmVzdCBGaWxlICovXG5cdGYgPSBcIk1FVEEtSU5GL21hbmlmZXN0LnhtbFwiO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9tYW5pZmVzdChtYW5pZmVzdC8qLCBvcHRzKi8pKTtcblxuXHRyZXR1cm4gemlwO1xufVxuXG4vKiEgc2hlZXRqcyAoQykgMjAxMy1wcmVzZW50IFNoZWV0SlMgLS0gaHR0cDovL3NoZWV0anMuY29tICovXG5mdW5jdGlvbiB1OF90b19kYXRhdmlldyhhcnJheSkge1xuICByZXR1cm4gbmV3IERhdGFWaWV3KGFycmF5LmJ1ZmZlciwgYXJyYXkuYnl0ZU9mZnNldCwgYXJyYXkuYnl0ZUxlbmd0aCk7XG59XG5mdW5jdGlvbiB1OHN0cih1OCkge1xuICByZXR1cm4gdHlwZW9mIFRleHREZWNvZGVyICE9IFwidW5kZWZpbmVkXCIgPyBuZXcgVGV4dERlY29kZXIoKS5kZWNvZGUodTgpIDogdXRmOHJlYWQoYTJzKHU4KSk7XG59XG5mdW5jdGlvbiBzdHJ1OChzdHIpIHtcbiAgcmV0dXJuIHR5cGVvZiBUZXh0RW5jb2RlciAhPSBcInVuZGVmaW5lZFwiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHN0cikgOiBzMmEodXRmOHdyaXRlKHN0cikpO1xufVxuZnVuY3Rpb24gdThjb250YWlucyhib2R5LCBzZWFyY2gpIHtcbiAgb3V0ZXI6XG4gICAgZm9yICh2YXIgTCA9IDA7IEwgPD0gYm9keS5sZW5ndGggLSBzZWFyY2gubGVuZ3RoOyArK0wpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VhcmNoLmxlbmd0aDsgKytqKVxuICAgICAgICBpZiAoYm9keVtMICsgal0gIT0gc2VhcmNoW2pdKVxuICAgICAgICAgIGNvbnRpbnVlIG91dGVyO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiB1OGNvbmNhdCh1OGEpIHtcbiAgdmFyIGxlbiA9IHU4YS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCB4KSB7XG4gICAgcmV0dXJuIGFjYyArIHgubGVuZ3RoO1xuICB9LCAwKTtcbiAgdmFyIG91dCA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gIHZhciBvZmYgPSAwO1xuICB1OGEuZm9yRWFjaChmdW5jdGlvbih1OCkge1xuICAgIG91dC5zZXQodTgsIG9mZik7XG4gICAgb2ZmICs9IHU4Lmxlbmd0aDtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwb3BjbnQoeCkge1xuICB4IC09IHggPj4gMSAmIDE0MzE2NTU3NjU7XG4gIHggPSAoeCAmIDg1ODk5MzQ1OSkgKyAoeCA+PiAyICYgODU4OTkzNDU5KTtcbiAgcmV0dXJuICh4ICsgKHggPj4gNCkgJiAyNTI2NDUxMzUpICogMTY4NDMwMDkgPj4+IDI0O1xufVxuZnVuY3Rpb24gcmVhZERlY2ltYWwxMjhMRShidWYsIG9mZnNldCkge1xuICB2YXIgZXhwID0gKGJ1ZltvZmZzZXQgKyAxNV0gJiAxMjcpIDw8IDcgfCBidWZbb2Zmc2V0ICsgMTRdID4+IDE7XG4gIHZhciBtYW50aXNzYSA9IGJ1ZltvZmZzZXQgKyAxNF0gJiAxO1xuICBmb3IgKHZhciBqID0gb2Zmc2V0ICsgMTM7IGogPj0gb2Zmc2V0OyAtLWopXG4gICAgbWFudGlzc2EgPSBtYW50aXNzYSAqIDI1NiArIGJ1ZltqXTtcbiAgcmV0dXJuIChidWZbb2Zmc2V0ICsgMTVdICYgMTI4ID8gLW1hbnRpc3NhIDogbWFudGlzc2EpICogTWF0aC5wb3coMTAsIGV4cCAtIDYxNzYpO1xufVxuZnVuY3Rpb24gd3JpdGVEZWNpbWFsMTI4TEUoYnVmLCBvZmZzZXQsIHZhbHVlKSB7XG4gIHZhciBleHAgPSBNYXRoLmZsb29yKHZhbHVlID09IDAgPyAwIDogTWF0aC5MT0cxMEUgKiBNYXRoLmxvZyhNYXRoLmFicyh2YWx1ZSkpKSArIDYxNzYgLSAyMDtcbiAgdmFyIG1hbnRpc3NhID0gdmFsdWUgLyBNYXRoLnBvdygxMCwgZXhwIC0gNjE3Nik7XG4gIGJ1ZltvZmZzZXQgKyAxNV0gfD0gZXhwID4+IDc7XG4gIGJ1ZltvZmZzZXQgKyAxNF0gfD0gKGV4cCAmIDEyNykgPDwgMTtcbiAgZm9yICh2YXIgaSA9IDA7IG1hbnRpc3NhID49IDE7ICsraSwgbWFudGlzc2EgLz0gMjU2KVxuICAgIGJ1ZltvZmZzZXQgKyBpXSA9IG1hbnRpc3NhICYgMjU1O1xuICBidWZbb2Zmc2V0ICsgMTVdIHw9IHZhbHVlID49IDAgPyAwIDogMTI4O1xufVxuZnVuY3Rpb24gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpIHtcbiAgdmFyIGwgPSBwdHIgPyBwdHJbMF0gOiAwO1xuICB2YXIgdXN6ID0gYnVmW2xdICYgMTI3O1xuICB2YXJpbnQ6XG4gICAgaWYgKGJ1ZltsKytdID49IDEyOCkge1xuICAgICAgdXN6IHw9IChidWZbbF0gJiAxMjcpIDw8IDc7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiB8PSAoYnVmW2xdICYgMTI3KSA8PCAxNDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6IHw9IChidWZbbF0gJiAxMjcpIDw8IDIxO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICB1c3ogKz0gKGJ1ZltsXSAmIDEyNykgKiBNYXRoLnBvdygyLCAyOCk7XG4gICAgICArK2w7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIHVzeiArPSAoYnVmW2xdICYgMTI3KSAqIE1hdGgucG93KDIsIDM1KTtcbiAgICAgICsrbDtcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgdXN6ICs9IChidWZbbF0gJiAxMjcpICogTWF0aC5wb3coMiwgNDIpO1xuICAgICAgKytsO1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgfVxuICBpZiAocHRyKVxuICAgIHB0clswXSA9IGw7XG4gIHJldHVybiB1c3o7XG59XG5mdW5jdGlvbiB3cml0ZV92YXJpbnQ0OSh2KSB7XG4gIHZhciB1c3ogPSBuZXcgVWludDhBcnJheSg3KTtcbiAgdXN6WzBdID0gdiAmIDEyNztcbiAgdmFyIEwgPSAxO1xuICBzejpcbiAgICBpZiAodiA+IDEyNykge1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2ID4+IDcgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAxNjM4MylcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgPj4gMTQgJiAxMjc7XG4gICAgICArK0w7XG4gICAgICBpZiAodiA8PSAyMDk3MTUxKVxuICAgICAgICBicmVhayBzejtcbiAgICAgIHVzeltMIC0gMV0gfD0gMTI4O1xuICAgICAgdXN6W0xdID0gdiA+PiAyMSAmIDEyNztcbiAgICAgICsrTDtcbiAgICAgIGlmICh2IDw9IDI2ODQzNTQ1NSlcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgLyAyNTYgPj4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gMzQzNTk3MzgzNjcpXG4gICAgICAgIGJyZWFrIHN6O1xuICAgICAgdXN6W0wgLSAxXSB8PSAxMjg7XG4gICAgICB1c3pbTF0gPSB2IC8gNjU1MzYgPj4+IDIxICYgMTI3O1xuICAgICAgKytMO1xuICAgICAgaWYgKHYgPD0gNDM5ODA0NjUxMTEwMylcbiAgICAgICAgYnJlYWsgc3o7XG4gICAgICB1c3pbTCAtIDFdIHw9IDEyODtcbiAgICAgIHVzeltMXSA9IHYgLyAxNjc3NzIxNiA+Pj4gMjEgJiAxMjc7XG4gICAgICArK0w7XG4gICAgfVxuICByZXR1cm4gdXN6LnNsaWNlKDAsIEwpO1xufVxuZnVuY3Rpb24gdmFyaW50X3RvX2kzMihidWYpIHtcbiAgdmFyIGwgPSAwLCBpMzIgPSBidWZbbF0gJiAxMjc7XG4gIHZhcmludDpcbiAgICBpZiAoYnVmW2wrK10gPj0gMTI4KSB7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgNztcbiAgICAgIGlmIChidWZbbCsrXSA8IDEyOClcbiAgICAgICAgYnJlYWsgdmFyaW50O1xuICAgICAgaTMyIHw9IChidWZbbF0gJiAxMjcpIDw8IDE0O1xuICAgICAgaWYgKGJ1ZltsKytdIDwgMTI4KVxuICAgICAgICBicmVhayB2YXJpbnQ7XG4gICAgICBpMzIgfD0gKGJ1ZltsXSAmIDEyNykgPDwgMjE7XG4gICAgICBpZiAoYnVmW2wrK10gPCAxMjgpXG4gICAgICAgIGJyZWFrIHZhcmludDtcbiAgICAgIGkzMiB8PSAoYnVmW2xdICYgMTI3KSA8PCAyODtcbiAgICB9XG4gIHJldHVybiBpMzI7XG59XG5mdW5jdGlvbiBwYXJzZV9zaGFsbG93KGJ1Zikge1xuICB2YXIgb3V0ID0gW10sIHB0ciA9IFswXTtcbiAgd2hpbGUgKHB0clswXSA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgb2ZmID0gcHRyWzBdO1xuICAgIHZhciBudW0gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgdmFyIHR5cGUgPSBudW0gJiA3O1xuICAgIG51bSA9IE1hdGguZmxvb3IobnVtIC8gOCk7XG4gICAgdmFyIGxlbiA9IDA7XG4gICAgdmFyIHJlcztcbiAgICBpZiAobnVtID09IDApXG4gICAgICBicmVhaztcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsID0gcHRyWzBdO1xuICAgICAgICAgIHdoaWxlIChidWZbcHRyWzBdKytdID49IDEyOClcbiAgICAgICAgICAgIDtcbiAgICAgICAgICByZXMgPSBidWYuc2xpY2UobCwgcHRyWzBdKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgbGVuID0gNDtcbiAgICAgICAgcmVzID0gYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgbGVuKTtcbiAgICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGxlbiA9IDg7XG4gICAgICAgIHJlcyA9IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbik7XG4gICAgICAgIHB0clswXSArPSBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBsZW4gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgICAgIHJlcyA9IGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbik7XG4gICAgICAgIHB0clswXSArPSBsZW47XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAzOlxuICAgICAgY2FzZSA0OlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUEIgVHlwZSBcIi5jb25jYXQodHlwZSwgXCIgZm9yIEZpZWxkIFwiKS5jb25jYXQobnVtLCBcIiBhdCBvZmZzZXQgXCIpLmNvbmNhdChvZmYpKTtcbiAgICB9XG4gICAgdmFyIHYgPSB7IGRhdGE6IHJlcywgdHlwZTogdHlwZSB9O1xuICAgIGlmIChvdXRbbnVtXSA9PSBudWxsKVxuICAgICAgb3V0W251bV0gPSBbdl07XG4gICAgZWxzZVxuICAgICAgb3V0W251bV0ucHVzaCh2KTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuZnVuY3Rpb24gd3JpdGVfc2hhbGxvdyhwcm90bykge1xuICB2YXIgb3V0ID0gW107XG4gIHByb3RvLmZvckVhY2goZnVuY3Rpb24oZmllbGQsIGlkeCkge1xuICAgIGZpZWxkLmZvckVhY2goZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKCFpdGVtLmRhdGEpXG4gICAgICAgIHJldHVybjtcbiAgICAgIG91dC5wdXNoKHdyaXRlX3ZhcmludDQ5KGlkeCAqIDggKyBpdGVtLnR5cGUpKTtcbiAgICAgIGlmIChpdGVtLnR5cGUgPT0gMilcbiAgICAgICAgb3V0LnB1c2god3JpdGVfdmFyaW50NDkoaXRlbS5kYXRhLmxlbmd0aCkpO1xuICAgICAgb3V0LnB1c2goaXRlbS5kYXRhKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gbWFwcGEoZGF0YSwgY2IpIHtcbiAgcmV0dXJuIChkYXRhID09IG51bGwgPyB2b2lkIDAgOiBkYXRhLm1hcChmdW5jdGlvbihkKSB7XG4gICAgcmV0dXJuIGNiKGQuZGF0YSk7XG4gIH0pKSB8fCBbXTtcbn1cbmZ1bmN0aW9uIHBhcnNlX2l3YV9maWxlKGJ1Zikge1xuICB2YXIgX2E7XG4gIHZhciBvdXQgPSBbXSwgcHRyID0gWzBdO1xuICB3aGlsZSAocHRyWzBdIDwgYnVmLmxlbmd0aCkge1xuICAgIHZhciBsZW4gPSBwYXJzZV92YXJpbnQ0OShidWYsIHB0cik7XG4gICAgdmFyIGFpID0gcGFyc2Vfc2hhbGxvdyhidWYuc2xpY2UocHRyWzBdLCBwdHJbMF0gKyBsZW4pKTtcbiAgICBwdHJbMF0gKz0gbGVuO1xuICAgIHZhciByZXMgPSB7XG4gICAgICBpZDogdmFyaW50X3RvX2kzMihhaVsxXVswXS5kYXRhKSxcbiAgICAgIG1lc3NhZ2VzOiBbXVxuICAgIH07XG4gICAgYWlbMl0uZm9yRWFjaChmdW5jdGlvbihiKSB7XG4gICAgICB2YXIgbWkgPSBwYXJzZV9zaGFsbG93KGIuZGF0YSk7XG4gICAgICB2YXIgZmwgPSB2YXJpbnRfdG9faTMyKG1pWzNdWzBdLmRhdGEpO1xuICAgICAgcmVzLm1lc3NhZ2VzLnB1c2goe1xuICAgICAgICBtZXRhOiBtaSxcbiAgICAgICAgZGF0YTogYnVmLnNsaWNlKHB0clswXSwgcHRyWzBdICsgZmwpXG4gICAgICB9KTtcbiAgICAgIHB0clswXSArPSBmbDtcbiAgICB9KTtcbiAgICBpZiAoKF9hID0gYWlbM10pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSlcbiAgICAgIHJlcy5tZXJnZSA9IHZhcmludF90b19pMzIoYWlbM11bMF0uZGF0YSkgPj4+IDAgPiAwO1xuICAgIG91dC5wdXNoKHJlcyk7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHdyaXRlX2l3YV9maWxlKGlhcykge1xuICB2YXIgYnVmcyA9IFtdO1xuICBpYXMuZm9yRWFjaChmdW5jdGlvbihpYSkge1xuICAgIHZhciBhaSA9IFtdO1xuICAgIGFpWzFdID0gW3sgZGF0YTogd3JpdGVfdmFyaW50NDkoaWEuaWQpLCB0eXBlOiAwIH1dO1xuICAgIGFpWzJdID0gW107XG4gICAgaWYgKGlhLm1lcmdlICE9IG51bGwpXG4gICAgICBhaVszXSA9IFt7IGRhdGE6IHdyaXRlX3ZhcmludDQ5KCshIWlhLm1lcmdlKSwgdHlwZTogMCB9XTtcbiAgICB2YXIgbWlkYXRhID0gW107XG4gICAgaWEubWVzc2FnZXMuZm9yRWFjaChmdW5jdGlvbihtaSkge1xuICAgICAgbWlkYXRhLnB1c2gobWkuZGF0YSk7XG4gICAgICBtaS5tZXRhWzNdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkobWkuZGF0YS5sZW5ndGgpIH1dO1xuICAgICAgYWlbMl0ucHVzaCh7IGRhdGE6IHdyaXRlX3NoYWxsb3cobWkubWV0YSksIHR5cGU6IDIgfSk7XG4gICAgfSk7XG4gICAgdmFyIGFpcGF5bG9hZCA9IHdyaXRlX3NoYWxsb3coYWkpO1xuICAgIGJ1ZnMucHVzaCh3cml0ZV92YXJpbnQ0OShhaXBheWxvYWQubGVuZ3RoKSk7XG4gICAgYnVmcy5wdXNoKGFpcGF5bG9hZCk7XG4gICAgbWlkYXRhLmZvckVhY2goZnVuY3Rpb24obWlkKSB7XG4gICAgICByZXR1cm4gYnVmcy5wdXNoKG1pZCk7XG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gdThjb25jYXQoYnVmcyk7XG59XG5mdW5jdGlvbiBwYXJzZV9zbmFwcHlfY2h1bmsodHlwZSwgYnVmKSB7XG4gIGlmICh0eXBlICE9IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBTbmFwcHkgY2h1bmsgdHlwZSBcIi5jb25jYXQodHlwZSkpO1xuICB2YXIgcHRyID0gWzBdO1xuICB2YXIgdXN6ID0gcGFyc2VfdmFyaW50NDkoYnVmLCBwdHIpO1xuICB2YXIgY2h1bmtzID0gW107XG4gIHdoaWxlIChwdHJbMF0gPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIHRhZyA9IGJ1ZltwdHJbMF1dICYgMztcbiAgICBpZiAodGFnID09IDApIHtcbiAgICAgIHZhciBsZW4gPSBidWZbcHRyWzBdKytdID4+IDI7XG4gICAgICBpZiAobGVuIDwgNjApXG4gICAgICAgICsrbGVuO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHZhciBjID0gbGVuIC0gNTk7XG4gICAgICAgIGxlbiA9IGJ1ZltwdHJbMF1dO1xuICAgICAgICBpZiAoYyA+IDEpXG4gICAgICAgICAgbGVuIHw9IGJ1ZltwdHJbMF0gKyAxXSA8PCA4O1xuICAgICAgICBpZiAoYyA+IDIpXG4gICAgICAgICAgbGVuIHw9IGJ1ZltwdHJbMF0gKyAyXSA8PCAxNjtcbiAgICAgICAgaWYgKGMgPiAzKVxuICAgICAgICAgIGxlbiB8PSBidWZbcHRyWzBdICsgM10gPDwgMjQ7XG4gICAgICAgIGxlbiA+Pj49IDA7XG4gICAgICAgIGxlbisrO1xuICAgICAgICBwdHJbMF0gKz0gYztcbiAgICAgIH1cbiAgICAgIGNodW5rcy5wdXNoKGJ1Zi5zbGljZShwdHJbMF0sIHB0clswXSArIGxlbikpO1xuICAgICAgcHRyWzBdICs9IGxlbjtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgb2Zmc2V0ID0gMCwgbGVuZ3RoID0gMDtcbiAgICAgIGlmICh0YWcgPT0gMSkge1xuICAgICAgICBsZW5ndGggPSAoYnVmW3B0clswXV0gPj4gMiAmIDcpICsgNDtcbiAgICAgICAgb2Zmc2V0ID0gKGJ1ZltwdHJbMF0rK10gJiAyMjQpIDw8IDM7XG4gICAgICAgIG9mZnNldCB8PSBidWZbcHRyWzBdKytdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGVuZ3RoID0gKGJ1ZltwdHJbMF0rK10gPj4gMikgKyAxO1xuICAgICAgICBpZiAodGFnID09IDIpIHtcbiAgICAgICAgICBvZmZzZXQgPSBidWZbcHRyWzBdXSB8IGJ1ZltwdHJbMF0gKyAxXSA8PCA4O1xuICAgICAgICAgIHB0clswXSArPSAyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZnNldCA9IChidWZbcHRyWzBdXSB8IGJ1ZltwdHJbMF0gKyAxXSA8PCA4IHwgYnVmW3B0clswXSArIDJdIDw8IDE2IHwgYnVmW3B0clswXSArIDNdIDw8IDI0KSA+Pj4gMDtcbiAgICAgICAgICBwdHJbMF0gKz0gNDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgY2h1bmtzID0gW3U4Y29uY2F0KGNodW5rcyldO1xuICAgICAgaWYgKG9mZnNldCA9PSAwKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIG9mZnNldCAwXCIpO1xuICAgICAgaWYgKG9mZnNldCA+IGNodW5rc1swXS5sZW5ndGgpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgb2Zmc2V0IGJleW9uZCBsZW5ndGhcIik7XG4gICAgICBpZiAobGVuZ3RoID49IG9mZnNldCkge1xuICAgICAgICBjaHVua3MucHVzaChjaHVua3NbMF0uc2xpY2UoLW9mZnNldCkpO1xuICAgICAgICBsZW5ndGggLT0gb2Zmc2V0O1xuICAgICAgICB3aGlsZSAobGVuZ3RoID49IGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0ubGVuZ3RoKSB7XG4gICAgICAgICAgY2h1bmtzLnB1c2goY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgbGVuZ3RoIC09IGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV0ubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjaHVua3MucHVzaChjaHVua3NbMF0uc2xpY2UoLW9mZnNldCwgLW9mZnNldCArIGxlbmd0aCkpO1xuICAgIH1cbiAgfVxuICB2YXIgbyA9IHU4Y29uY2F0KGNodW5rcyk7XG4gIGlmIChvLmxlbmd0aCAhPSB1c3opXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5leHBlY3RlZCBsZW5ndGg6IFwiLmNvbmNhdChvLmxlbmd0aCwgXCIgIT0gXCIpLmNvbmNhdCh1c3opKTtcbiAgcmV0dXJuIG87XG59XG5mdW5jdGlvbiBkZWNvbXByZXNzX2l3YV9maWxlKGJ1Zikge1xuICB2YXIgb3V0ID0gW107XG4gIHZhciBsID0gMDtcbiAgd2hpbGUgKGwgPCBidWYubGVuZ3RoKSB7XG4gICAgdmFyIHQgPSBidWZbbCsrXTtcbiAgICB2YXIgbGVuID0gYnVmW2xdIHwgYnVmW2wgKyAxXSA8PCA4IHwgYnVmW2wgKyAyXSA8PCAxNjtcbiAgICBsICs9IDM7XG4gICAgb3V0LnB1c2gocGFyc2Vfc25hcHB5X2NodW5rKHQsIGJ1Zi5zbGljZShsLCBsICsgbGVuKSkpO1xuICAgIGwgKz0gbGVuO1xuICB9XG4gIGlmIChsICE9PSBidWYubGVuZ3RoKVxuICAgIHRocm93IG5ldyBFcnJvcihcImRhdGEgaXMgbm90IGEgdmFsaWQgZnJhbWVkIHN0cmVhbSFcIik7XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gY29tcHJlc3NfaXdhX2ZpbGUoYnVmKSB7XG4gIHZhciBvdXQgPSBbXTtcbiAgdmFyIGwgPSAwO1xuICB3aGlsZSAobCA8IGJ1Zi5sZW5ndGgpIHtcbiAgICB2YXIgYyA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBsLCAyNjg0MzU0NTUpO1xuICAgIHZhciBmcmFtZSA9IG5ldyBVaW50OEFycmF5KDQpO1xuICAgIG91dC5wdXNoKGZyYW1lKTtcbiAgICB2YXIgdXN6ID0gd3JpdGVfdmFyaW50NDkoYyk7XG4gICAgdmFyIEwgPSB1c3oubGVuZ3RoO1xuICAgIG91dC5wdXNoKHVzeik7XG4gICAgaWYgKGMgPD0gNjApIHtcbiAgICAgIEwrKztcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFtjIC0gMSA8PCAyXSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSAyNTYpIHtcbiAgICAgIEwgKz0gMjtcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNDAsIGMgLSAxICYgMjU1XSkpO1xuICAgIH0gZWxzZSBpZiAoYyA8PSA2NTUzNikge1xuICAgICAgTCArPSAzO1xuICAgICAgb3V0LnB1c2gobmV3IFVpbnQ4QXJyYXkoWzI0NCwgYyAtIDEgJiAyNTUsIGMgLSAxID4+IDggJiAyNTVdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDE2Nzc3MjE2KSB7XG4gICAgICBMICs9IDQ7XG4gICAgICBvdXQucHVzaChuZXcgVWludDhBcnJheShbMjQ4LCBjIC0gMSAmIDI1NSwgYyAtIDEgPj4gOCAmIDI1NSwgYyAtIDEgPj4gMTYgJiAyNTVdKSk7XG4gICAgfSBlbHNlIGlmIChjIDw9IDQyOTQ5NjcyOTYpIHtcbiAgICAgIEwgKz0gNTtcbiAgICAgIG91dC5wdXNoKG5ldyBVaW50OEFycmF5KFsyNTIsIGMgLSAxICYgMjU1LCBjIC0gMSA+PiA4ICYgMjU1LCBjIC0gMSA+PiAxNiAmIDI1NSwgYyAtIDEgPj4+IDI0ICYgMjU1XSkpO1xuICAgIH1cbiAgICBvdXQucHVzaChidWYuc2xpY2UobCwgbCArIGMpKTtcbiAgICBMICs9IGM7XG4gICAgZnJhbWVbMF0gPSAwO1xuICAgIGZyYW1lWzFdID0gTCAmIDI1NTtcbiAgICBmcmFtZVsyXSA9IEwgPj4gOCAmIDI1NTtcbiAgICBmcmFtZVszXSA9IEwgPj4gMTYgJiAyNTU7XG4gICAgbCArPSBjO1xuICB9XG4gIHJldHVybiB1OGNvbmNhdChvdXQpO1xufVxuZnVuY3Rpb24gcGFyc2Vfb2xkX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QsIHYpIHtcbiAgdmFyIGR2ID0gdThfdG9fZGF0YXZpZXcoYnVmKTtcbiAgdmFyIGZsYWdzID0gZHYuZ2V0VWludDMyKDQsIHRydWUpO1xuICB2YXIgZGF0YV9vZmZzZXQgPSAodiA+IDEgPyAxMiA6IDgpICsgcG9wY250KGZsYWdzICYgKHYgPiAxID8gMzQ3MCA6IDM5OCkpICogNDtcbiAgdmFyIHJpZHggPSAtMSwgc2lkeCA9IC0xLCBpZWVlID0gTmFOLCBkdCA9IG5ldyBEYXRlKDIwMDEsIDAsIDEpO1xuICBpZiAoZmxhZ3MgJiA1MTIpIHtcbiAgICByaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIGRhdGFfb2Zmc2V0ICs9IHBvcGNudChmbGFncyAmICh2ID4gMSA/IDEyMjg4IDogNDA5NikpICogNDtcbiAgaWYgKGZsYWdzICYgMTYpIHtcbiAgICBzaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIGlmIChmbGFncyAmIDMyKSB7XG4gICAgaWVlZSA9IGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgNjQpIHtcbiAgICBkdC5zZXRUaW1lKGR0LmdldFRpbWUoKSArIGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpICogMWUzKTtcbiAgICBkYXRhX29mZnNldCArPSA4O1xuICB9XG4gIHZhciByZXQ7XG4gIHN3aXRjaCAoYnVmWzJdKSB7XG4gICAgY2FzZSAwOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogc3N0W3NpZHhdIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZXQgPSB7IHQ6IFwiZFwiLCB2OiBkdCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0ID0geyB0OiBcImJcIiwgdjogaWVlZSA+IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgLyA4NjQwMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0ID0geyB0OiBcImVcIiwgdjogMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAge1xuICAgICAgICBpZiAocmlkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHJzc3RbcmlkeF0gfTtcbiAgICAgICAgZWxzZSBpZiAoc2lkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHNzdFtzaWR4XSB9O1xuICAgICAgICBlbHNlIGlmICghaXNOYU4oaWVlZSkpXG4gICAgICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogaWVlZSB9O1xuICAgICAgICBlbHNlXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9uZXdfc3RvcmFnZShidWYsIHNzdCwgcnNzdCkge1xuICB2YXIgZHYgPSB1OF90b19kYXRhdmlldyhidWYpO1xuICB2YXIgZmxhZ3MgPSBkdi5nZXRVaW50MzIoOCwgdHJ1ZSk7XG4gIHZhciBkYXRhX29mZnNldCA9IDEyO1xuICB2YXIgcmlkeCA9IC0xLCBzaWR4ID0gLTEsIGQxMjggPSBOYU4sIGllZWUgPSBOYU4sIGR0ID0gbmV3IERhdGUoMjAwMSwgMCwgMSk7XG4gIGlmIChmbGFncyAmIDEpIHtcbiAgICBkMTI4ID0gcmVhZERlY2ltYWwxMjhMRShidWYsIGRhdGFfb2Zmc2V0KTtcbiAgICBkYXRhX29mZnNldCArPSAxNjtcbiAgfVxuICBpZiAoZmxhZ3MgJiAyKSB7XG4gICAgaWVlZSA9IGR2LmdldEZsb2F0NjQoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgNCkge1xuICAgIGR0LnNldFRpbWUoZHQuZ2V0VGltZSgpICsgZHYuZ2V0RmxvYXQ2NChkYXRhX29mZnNldCwgdHJ1ZSkgKiAxZTMpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDg7XG4gIH1cbiAgaWYgKGZsYWdzICYgOCkge1xuICAgIHNpZHggPSBkdi5nZXRVaW50MzIoZGF0YV9vZmZzZXQsIHRydWUpO1xuICAgIGRhdGFfb2Zmc2V0ICs9IDQ7XG4gIH1cbiAgaWYgKGZsYWdzICYgMTYpIHtcbiAgICByaWR4ID0gZHYuZ2V0VWludDMyKGRhdGFfb2Zmc2V0LCB0cnVlKTtcbiAgICBkYXRhX29mZnNldCArPSA0O1xuICB9XG4gIHZhciByZXQ7XG4gIHN3aXRjaCAoYnVmWzFdKSB7XG4gICAgY2FzZSAwOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0ID0geyB0OiBcIm5cIiwgdjogZDEyOCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0ID0geyB0OiBcInNcIiwgdjogc3N0W3NpZHhdIH07XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZXQgPSB7IHQ6IFwiZFwiLCB2OiBkdCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgcmV0ID0geyB0OiBcImJcIiwgdjogaWVlZSA+IDAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNzpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGllZWUgLyA4NjQwMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0ID0geyB0OiBcImVcIiwgdjogMCB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA5OlxuICAgICAge1xuICAgICAgICBpZiAocmlkeCA+IC0xKVxuICAgICAgICAgIHJldCA9IHsgdDogXCJzXCIsIHY6IHJzc3RbcmlkeF0gfTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIi5jb25jYXQoYnVmWzFdLCBcIiA6IFwiKS5jb25jYXQoZmxhZ3MgJiAzMSwgXCIgOiBcIikuY29uY2F0KGJ1Zi5zbGljZSgwLCA0KSkpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIHJldCA9IHsgdDogXCJuXCIsIHY6IGQxMjggfTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCBjZWxsIHR5cGUgXCIuY29uY2F0KGJ1ZlsxXSwgXCIgOiBcIikuY29uY2F0KGZsYWdzICYgMzEsIFwiIDogXCIpLmNvbmNhdChidWYuc2xpY2UoMCwgNCkpKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gd3JpdGVfbmV3X3N0b3JhZ2UoY2VsbCwgc3N0KSB7XG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheSgzMiksIGR2ID0gdThfdG9fZGF0YXZpZXcob3V0KSwgbCA9IDEyLCBmbGFncyA9IDA7XG4gIG91dFswXSA9IDU7XG4gIHN3aXRjaCAoY2VsbC50KSB7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIG91dFsxXSA9IDI7XG4gICAgICB3cml0ZURlY2ltYWwxMjhMRShvdXQsIGwsIGNlbGwudik7XG4gICAgICBmbGFncyB8PSAxO1xuICAgICAgbCArPSAxNjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiXCI6XG4gICAgICBvdXRbMV0gPSA2O1xuICAgICAgZHYuc2V0RmxvYXQ2NChsLCBjZWxsLnYgPyAxIDogMCwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAyO1xuICAgICAgbCArPSA4O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInNcIjpcbiAgICAgIGlmIChzc3QuaW5kZXhPZihjZWxsLnYpID09IC0xKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJWYWx1ZSBcIi5jb25jYXQoY2VsbC52LCBcIiBtaXNzaW5nIGZyb20gU1NUIVwiKSk7XG4gICAgICBvdXRbMV0gPSAzO1xuICAgICAgZHYuc2V0VWludDMyKGwsIHNzdC5pbmRleE9mKGNlbGwudiksIHRydWUpO1xuICAgICAgZmxhZ3MgfD0gODtcbiAgICAgIGwgKz0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBcInVuc3VwcG9ydGVkIGNlbGwgdHlwZSBcIiArIGNlbGwudDtcbiAgfVxuICBkdi5zZXRVaW50MzIoOCwgZmxhZ3MsIHRydWUpO1xuICByZXR1cm4gb3V0LnNsaWNlKDAsIGwpO1xufVxuZnVuY3Rpb24gd3JpdGVfb2xkX3N0b3JhZ2UoY2VsbCwgc3N0KSB7XG4gIHZhciBvdXQgPSBuZXcgVWludDhBcnJheSgzMiksIGR2ID0gdThfdG9fZGF0YXZpZXcob3V0KSwgbCA9IDEyLCBmbGFncyA9IDA7XG4gIG91dFswXSA9IDM7XG4gIHN3aXRjaCAoY2VsbC50KSB7XG4gICAgY2FzZSBcIm5cIjpcbiAgICAgIG91dFsyXSA9IDI7XG4gICAgICBkdi5zZXRGbG9hdDY0KGwsIGNlbGwudiwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAzMjtcbiAgICAgIGwgKz0gODtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJiXCI6XG4gICAgICBvdXRbMl0gPSA2O1xuICAgICAgZHYuc2V0RmxvYXQ2NChsLCBjZWxsLnYgPyAxIDogMCwgdHJ1ZSk7XG4gICAgICBmbGFncyB8PSAzMjtcbiAgICAgIGwgKz0gODtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJzXCI6XG4gICAgICBpZiAoc3N0LmluZGV4T2YoY2VsbC52KSA9PSAtMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVmFsdWUgXCIuY29uY2F0KGNlbGwudiwgXCIgbWlzc2luZyBmcm9tIFNTVCFcIikpO1xuICAgICAgb3V0WzJdID0gMztcbiAgICAgIGR2LnNldFVpbnQzMihsLCBzc3QuaW5kZXhPZihjZWxsLnYpLCB0cnVlKTtcbiAgICAgIGZsYWdzIHw9IDE2O1xuICAgICAgbCArPSA0O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IFwidW5zdXBwb3J0ZWQgY2VsbCB0eXBlIFwiICsgY2VsbC50O1xuICB9XG4gIGR2LnNldFVpbnQzMig0LCBmbGFncywgdHJ1ZSk7XG4gIHJldHVybiBvdXQuc2xpY2UoMCwgbCk7XG59XG5mdW5jdGlvbiBwYXJzZV9jZWxsX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QpIHtcbiAgc3dpdGNoIChidWZbMF0pIHtcbiAgICBjYXNlIDA6XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICBjYXNlIDM6XG4gICAgICByZXR1cm4gcGFyc2Vfb2xkX3N0b3JhZ2UoYnVmLCBzc3QsIHJzc3QsIGJ1ZlswXSk7XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIHBhcnNlX25ld19zdG9yYWdlKGJ1Ziwgc3N0LCByc3N0KTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgcGF5bG9hZCB2ZXJzaW9uIFwiLmNvbmNhdChidWZbMF0pKTtcbiAgfVxufVxuZnVuY3Rpb24gcGFyc2VfVFNQX1JlZmVyZW5jZShidWYpIHtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhidWYpO1xuICByZXR1cm4gcGFyc2VfdmFyaW50NDkocGJbMV1bMF0uZGF0YSk7XG59XG5mdW5jdGlvbiB3cml0ZV9UU1BfUmVmZXJlbmNlKGlkeCkge1xuICB2YXIgb3V0ID0gW107XG4gIG91dFsxXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KGlkeCkgfV07XG4gIHJldHVybiB3cml0ZV9zaGFsbG93KG91dCk7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGFibGVEYXRhTGlzdChNLCByb290KSB7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIHR5cGUgPSB2YXJpbnRfdG9faTMyKHBiWzFdWzBdLmRhdGEpO1xuICB2YXIgZW50cmllcyA9IHBiWzNdO1xuICB2YXIgZGF0YSA9IFtdO1xuICAoZW50cmllcyB8fCBbXSkuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBsZSA9IHBhcnNlX3NoYWxsb3coZW50cnkuZGF0YSk7XG4gICAgdmFyIGtleSA9IHZhcmludF90b19pMzIobGVbMV1bMF0uZGF0YSkgPj4+IDA7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGRhdGFba2V5XSA9IHU4c3RyKGxlWzNdWzBdLmRhdGEpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBydCA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZShsZVs5XVswXS5kYXRhKV1bMF07XG4gICAgICAgICAgdmFyIHJ0cCA9IHBhcnNlX3NoYWxsb3cocnQuZGF0YSk7XG4gICAgICAgICAgdmFyIHJ0cHJlZiA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZShydHBbMV1bMF0uZGF0YSldWzBdO1xuICAgICAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIocnRwcmVmLm1ldGFbMV1bMF0uZGF0YSk7XG4gICAgICAgICAgaWYgKG10eXBlICE9IDIwMDEpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCIyMDAwIHVuZXhwZWN0ZWQgcmVmZXJlbmNlIHRvIFwiLmNvbmNhdChtdHlwZSkpO1xuICAgICAgICAgIHZhciB0c3dwc2EgPSBwYXJzZV9zaGFsbG93KHJ0cHJlZi5kYXRhKTtcbiAgICAgICAgICBkYXRhW2tleV0gPSB0c3dwc2FbM10ubWFwKGZ1bmN0aW9uKHgpIHtcbiAgICAgICAgICAgIHJldHVybiB1OHN0cih4LmRhdGEpO1xuICAgICAgICAgIH0pLmpvaW4oXCJcIik7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGRhdGE7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGlsZVJvd0luZm8odTgsIHR5cGUpIHtcbiAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2ksIF9qLCBfaywgX2wsIF9tLCBfbjtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyh1OCk7XG4gIHZhciBSID0gdmFyaW50X3RvX2kzMihwYlsxXVswXS5kYXRhKSA+Pj4gMDtcbiAgdmFyIGNudCA9IHZhcmludF90b19pMzIocGJbMl1bMF0uZGF0YSkgPj4+IDA7XG4gIHZhciB3aWRlX29mZnNldHMgPSAoKF9iID0gKF9hID0gcGJbOF0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLmRhdGEpICYmIHZhcmludF90b19pMzIocGJbOF1bMF0uZGF0YSkgPiAwIHx8IGZhbHNlO1xuICB2YXIgdXNlZF9zdG9yYWdlX3U4LCB1c2VkX3N0b3JhZ2U7XG4gIGlmICgoKF9kID0gKF9jID0gcGJbN10pID09IG51bGwgPyB2b2lkIDAgOiBfY1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kLmRhdGEpICYmIHR5cGUgIT0gMCkge1xuICAgIHVzZWRfc3RvcmFnZV91OCA9IChfZiA9IChfZSA9IHBiWzddKSA9PSBudWxsID8gdm9pZCAwIDogX2VbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfZi5kYXRhO1xuICAgIHVzZWRfc3RvcmFnZSA9IChfaCA9IChfZyA9IHBiWzZdKSA9PSBudWxsID8gdm9pZCAwIDogX2dbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfaC5kYXRhO1xuICB9IGVsc2UgaWYgKCgoX2ogPSAoX2kgPSBwYls0XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9pWzBdKSA9PSBudWxsID8gdm9pZCAwIDogX2ouZGF0YSkgJiYgdHlwZSAhPSAxKSB7XG4gICAgdXNlZF9zdG9yYWdlX3U4ID0gKF9sID0gKF9rID0gcGJbNF0pID09IG51bGwgPyB2b2lkIDAgOiBfa1swXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9sLmRhdGE7XG4gICAgdXNlZF9zdG9yYWdlID0gKF9uID0gKF9tID0gcGJbM10pID09IG51bGwgPyB2b2lkIDAgOiBfbVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9uLmRhdGE7XG4gIH0gZWxzZVxuICAgIHRocm93IFwiTlVNQkVSUyBUaWxlIG1pc3NpbmcgXCIuY29uY2F0KHR5cGUsIFwiIGNlbGwgc3RvcmFnZVwiKTtcbiAgdmFyIHdpZHRoID0gd2lkZV9vZmZzZXRzID8gNCA6IDE7XG4gIHZhciB1c2VkX3N0b3JhZ2Vfb2Zmc2V0cyA9IHU4X3RvX2RhdGF2aWV3KHVzZWRfc3RvcmFnZV91OCk7XG4gIHZhciBvZmZzZXRzID0gW107XG4gIGZvciAodmFyIEMgPSAwOyBDIDwgdXNlZF9zdG9yYWdlX3U4Lmxlbmd0aCAvIDI7ICsrQykge1xuICAgIHZhciBvZmYgPSB1c2VkX3N0b3JhZ2Vfb2Zmc2V0cy5nZXRVaW50MTYoQyAqIDIsIHRydWUpO1xuICAgIGlmIChvZmYgPCA2NTUzNSlcbiAgICAgIG9mZnNldHMucHVzaChbQywgb2ZmXSk7XG4gIH1cbiAgaWYgKG9mZnNldHMubGVuZ3RoICE9IGNudClcbiAgICB0aHJvdyBcIkV4cGVjdGVkIFwiLmNvbmNhdChjbnQsIFwiIGNlbGxzLCBmb3VuZCBcIikuY29uY2F0KG9mZnNldHMubGVuZ3RoKTtcbiAgdmFyIGNlbGxzID0gW107XG4gIGZvciAoQyA9IDA7IEMgPCBvZmZzZXRzLmxlbmd0aCAtIDE7ICsrQylcbiAgICBjZWxsc1tvZmZzZXRzW0NdWzBdXSA9IHVzZWRfc3RvcmFnZS5zdWJhcnJheShvZmZzZXRzW0NdWzFdICogd2lkdGgsIG9mZnNldHNbQyArIDFdWzFdICogd2lkdGgpO1xuICBpZiAob2Zmc2V0cy5sZW5ndGggPj0gMSlcbiAgICBjZWxsc1tvZmZzZXRzW29mZnNldHMubGVuZ3RoIC0gMV1bMF1dID0gdXNlZF9zdG9yYWdlLnN1YmFycmF5KG9mZnNldHNbb2Zmc2V0cy5sZW5ndGggLSAxXVsxXSAqIHdpZHRoKTtcbiAgcmV0dXJuIHsgUjogUiwgY2VsbHM6IGNlbGxzIH07XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGlsZShNLCByb290KSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgc3RvcmFnZSA9ICgoX2EgPSBwYiA9PSBudWxsID8gdm9pZCAwIDogcGJbN10pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPyB2YXJpbnRfdG9faTMyKHBiWzddWzBdLmRhdGEpID4+PiAwID4gMCA/IDEgOiAwIDogLTE7XG4gIHZhciByaSA9IG1hcHBhKHBiWzVdLCBmdW5jdGlvbih1OCkge1xuICAgIHJldHVybiBwYXJzZV9UU1RfVGlsZVJvd0luZm8odTgsIHN0b3JhZ2UpO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBucm93czogdmFyaW50X3RvX2kzMihwYls0XVswXS5kYXRhKSA+Pj4gMCxcbiAgICBkYXRhOiByaS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCB4KSB7XG4gICAgICBpZiAoIWFjY1t4LlJdKVxuICAgICAgICBhY2NbeC5SXSA9IFtdO1xuICAgICAgeC5jZWxscy5mb3JFYWNoKGZ1bmN0aW9uKGNlbGwsIEMpIHtcbiAgICAgICAgaWYgKGFjY1t4LlJdW0NdKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkR1cGxpY2F0ZSBjZWxsIHI9XCIuY29uY2F0KHguUiwgXCIgYz1cIikuY29uY2F0KEMpKTtcbiAgICAgICAgYWNjW3guUl1bQ10gPSBjZWxsO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKVxuICB9O1xufVxuZnVuY3Rpb24gcGFyc2VfVFNUX1RhYmxlTW9kZWxBcmNoaXZlKE0sIHJvb3QsIHdzKSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgcmFuZ2UgPSB7IHM6IHsgcjogMCwgYzogMCB9LCBlOiB7IHI6IDAsIGM6IDAgfSB9O1xuICByYW5nZS5lLnIgPSAodmFyaW50X3RvX2kzMihwYls2XVswXS5kYXRhKSA+Pj4gMCkgLSAxO1xuICBpZiAocmFuZ2UuZS5yIDwgMClcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHJvdyB2YXJpbnQgXCIuY29uY2F0KHBiWzZdWzBdLmRhdGEpKTtcbiAgcmFuZ2UuZS5jID0gKHZhcmludF90b19pMzIocGJbN11bMF0uZGF0YSkgPj4+IDApIC0gMTtcbiAgaWYgKHJhbmdlLmUuYyA8IDApXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjb2wgdmFyaW50IFwiLmNvbmNhdChwYls3XVswXS5kYXRhKSk7XG4gIHdzW1wiIXJlZlwiXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG4gIHZhciBzdG9yZSA9IHBhcnNlX3NoYWxsb3cocGJbNF1bMF0uZGF0YSk7XG4gIHZhciBzc3QgPSBwYXJzZV9UU1RfVGFibGVEYXRhTGlzdChNLCBNW3BhcnNlX1RTUF9SZWZlcmVuY2Uoc3RvcmVbNF1bMF0uZGF0YSldWzBdKTtcbiAgdmFyIHJzc3QgPSAoKF9hID0gc3RvcmVbMTddKSA9PSBudWxsID8gdm9pZCAwIDogX2FbMF0pID8gcGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QoTSwgTVtwYXJzZV9UU1BfUmVmZXJlbmNlKHN0b3JlWzE3XVswXS5kYXRhKV1bMF0pIDogW107XG4gIHZhciB0aWxlID0gcGFyc2Vfc2hhbGxvdyhzdG9yZVszXVswXS5kYXRhKTtcbiAgdmFyIF9SID0gMDtcbiAgdGlsZVsxXS5mb3JFYWNoKGZ1bmN0aW9uKHQpIHtcbiAgICB2YXIgdGwgPSBwYXJzZV9zaGFsbG93KHQuZGF0YSk7XG4gICAgdmFyIHJlZiA9IE1bcGFyc2VfVFNQX1JlZmVyZW5jZSh0bFsyXVswXS5kYXRhKV1bMF07XG4gICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihyZWYubWV0YVsxXVswXS5kYXRhKTtcbiAgICBpZiAobXR5cGUgIT0gNjAwMilcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIjYwMDEgdW5leHBlY3RlZCByZWZlcmVuY2UgdG8gXCIuY29uY2F0KG10eXBlKSk7XG4gICAgdmFyIF90aWxlID0gcGFyc2VfVFNUX1RpbGUoTSwgcmVmKTtcbiAgICBfdGlsZS5kYXRhLmZvckVhY2goZnVuY3Rpb24ocm93LCBSKSB7XG4gICAgICByb3cuZm9yRWFjaChmdW5jdGlvbihidWYsIEMpIHtcbiAgICAgICAgdmFyIGFkZHIgPSBlbmNvZGVfY2VsbCh7IHI6IF9SICsgUiwgYzogQyB9KTtcbiAgICAgICAgdmFyIHJlcyA9IHBhcnNlX2NlbGxfc3RvcmFnZShidWYsIHNzdCwgcnNzdCk7XG4gICAgICAgIGlmIChyZXMpXG4gICAgICAgICAgd3NbYWRkcl0gPSByZXM7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBfUiArPSBfdGlsZS5ucm93cztcbiAgfSk7XG59XG5mdW5jdGlvbiBwYXJzZV9UU1RfVGFibGVJbmZvQXJjaGl2ZShNLCByb290KSB7XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3cocm9vdC5kYXRhKTtcbiAgdmFyIG91dCA9IHsgXCIhcmVmXCI6IFwiQTFcIiB9O1xuICB2YXIgdGFibGVyZWYgPSBNW3BhcnNlX1RTUF9SZWZlcmVuY2UocGJbMl1bMF0uZGF0YSldO1xuICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKHRhYmxlcmVmWzBdLm1ldGFbMV1bMF0uZGF0YSk7XG4gIGlmIChtdHlwZSAhPSA2MDAxKVxuICAgIHRocm93IG5ldyBFcnJvcihcIjYwMDAgdW5leHBlY3RlZCByZWZlcmVuY2UgdG8gXCIuY29uY2F0KG10eXBlKSk7XG4gIHBhcnNlX1RTVF9UYWJsZU1vZGVsQXJjaGl2ZShNLCB0YWJsZXJlZlswXSwgb3V0KTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBhcnNlX1ROX1NoZWV0QXJjaGl2ZShNLCByb290KSB7XG4gIHZhciBfYTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgb3V0ID0ge1xuICAgIG5hbWU6ICgoX2EgPSBwYlsxXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSA/IHU4c3RyKHBiWzFdWzBdLmRhdGEpIDogXCJcIixcbiAgICBzaGVldHM6IFtdXG4gIH07XG4gIHZhciBzaGFwZW9mZnMgPSBtYXBwYShwYlsyXSwgcGFyc2VfVFNQX1JlZmVyZW5jZSk7XG4gIHNoYXBlb2Zmcy5mb3JFYWNoKGZ1bmN0aW9uKG9mZikge1xuICAgIE1bb2ZmXS5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgIHZhciBtdHlwZSA9IHZhcmludF90b19pMzIobS5tZXRhWzFdWzBdLmRhdGEpO1xuICAgICAgaWYgKG10eXBlID09IDZlMylcbiAgICAgICAgb3V0LnNoZWV0cy5wdXNoKHBhcnNlX1RTVF9UYWJsZUluZm9BcmNoaXZlKE0sIG0pKTtcbiAgICB9KTtcbiAgfSk7XG4gIHJldHVybiBvdXQ7XG59XG5mdW5jdGlvbiBwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUoTSwgcm9vdCkge1xuICB2YXIgb3V0ID0gYm9va19uZXcoKTtcbiAgdmFyIHBiID0gcGFyc2Vfc2hhbGxvdyhyb290LmRhdGEpO1xuICB2YXIgc2hlZXRvZmZzID0gbWFwcGEocGJbMV0sIHBhcnNlX1RTUF9SZWZlcmVuY2UpO1xuICBzaGVldG9mZnMuZm9yRWFjaChmdW5jdGlvbihvZmYpIHtcbiAgICBNW29mZl0uZm9yRWFjaChmdW5jdGlvbihtKSB7XG4gICAgICB2YXIgbXR5cGUgPSB2YXJpbnRfdG9faTMyKG0ubWV0YVsxXVswXS5kYXRhKTtcbiAgICAgIGlmIChtdHlwZSA9PSAyKSB7XG4gICAgICAgIHZhciByb290MiA9IHBhcnNlX1ROX1NoZWV0QXJjaGl2ZShNLCBtKTtcbiAgICAgICAgcm9vdDIuc2hlZXRzLmZvckVhY2goZnVuY3Rpb24oc2hlZXQsIGlkeCkge1xuICAgICAgICAgIGJvb2tfYXBwZW5kX3NoZWV0KG91dCwgc2hlZXQsIGlkeCA9PSAwID8gcm9vdDIubmFtZSA6IHJvb3QyLm5hbWUgKyBcIl9cIiArIGlkeCwgdHJ1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbiAgaWYgKG91dC5TaGVldE5hbWVzLmxlbmd0aCA9PSAwKVxuICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IE5VTUJFUlMgZmlsZVwiKTtcbiAgcmV0dXJuIG91dDtcbn1cbmZ1bmN0aW9uIHBhcnNlX251bWJlcnNfaXdhKGNmYikge1xuICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gIHZhciBNID0ge30sIGluZGljZXMgPSBbXTtcbiAgY2ZiLkZ1bGxQYXRocy5mb3JFYWNoKGZ1bmN0aW9uKHApIHtcbiAgICBpZiAocC5tYXRjaCgvXFwuaXdwdjIvKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIHBhc3N3b3JkIHByb3RlY3Rpb25cIik7XG4gIH0pO1xuICBjZmIuRmlsZUluZGV4LmZvckVhY2goZnVuY3Rpb24ocykge1xuICAgIGlmICghcy5uYW1lLm1hdGNoKC9cXC5pd2EkLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIG87XG4gICAgdHJ5IHtcbiAgICAgIG8gPSBkZWNvbXByZXNzX2l3YV9maWxlKHMuY29udGVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmV0dXJuIGNvbnNvbGUubG9nKFwiPz8gXCIgKyBzLmNvbnRlbnQubGVuZ3RoICsgXCIgXCIgKyAoZS5tZXNzYWdlIHx8IGUpKTtcbiAgICB9XG4gICAgdmFyIHBhY2tldHM7XG4gICAgdHJ5IHtcbiAgICAgIHBhY2tldHMgPSBwYXJzZV9pd2FfZmlsZShvKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gY29uc29sZS5sb2coXCIjIyBcIiArIChlLm1lc3NhZ2UgfHwgZSkpO1xuICAgIH1cbiAgICBwYWNrZXRzLmZvckVhY2goZnVuY3Rpb24ocGFja2V0KSB7XG4gICAgICBNW3BhY2tldC5pZF0gPSBwYWNrZXQubWVzc2FnZXM7XG4gICAgICBpbmRpY2VzLnB1c2gocGFja2V0LmlkKTtcbiAgICB9KTtcbiAgfSk7XG4gIGlmICghaW5kaWNlcy5sZW5ndGgpXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiRmlsZSBoYXMgbm8gbWVzc2FnZXNcIik7XG4gIHZhciBkb2Nyb290ID0gKChfZCA9IChfYyA9IChfYiA9IChfYSA9IE0gPT0gbnVsbCA/IHZvaWQgMCA6IE1bMV0pID09IG51bGwgPyB2b2lkIDAgOiBfYVswXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iLm1ldGEpID09IG51bGwgPyB2b2lkIDAgOiBfY1sxXSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9kWzBdLmRhdGEpICYmIHZhcmludF90b19pMzIoTVsxXVswXS5tZXRhWzFdWzBdLmRhdGEpID09IDEgJiYgTVsxXVswXTtcbiAgaWYgKCFkb2Nyb290KVxuICAgIGluZGljZXMuZm9yRWFjaChmdW5jdGlvbihpZHgpIHtcbiAgICAgIE1baWR4XS5mb3JFYWNoKGZ1bmN0aW9uKGl3YW0pIHtcbiAgICAgICAgdmFyIG10eXBlID0gdmFyaW50X3RvX2kzMihpd2FtLm1ldGFbMV1bMF0uZGF0YSkgPj4+IDA7XG4gICAgICAgIGlmIChtdHlwZSA9PSAxKSB7XG4gICAgICAgICAgaWYgKCFkb2Nyb290KVxuICAgICAgICAgICAgZG9jcm9vdCA9IGl3YW07XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRG9jdW1lbnQgaGFzIG11bHRpcGxlIHJvb3RzXCIpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgaWYgKCFkb2Nyb290KVxuICAgIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIERvY3VtZW50IHJvb3RcIik7XG4gIHJldHVybiBwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUoTSwgZG9jcm9vdCk7XG59XG5mdW5jdGlvbiB3cml0ZV90aWxlX3Jvdyh0cmksIGRhdGEsIFNTVCkge1xuICB2YXIgX2EsIF9iLCBfYywgX2Q7XG4gIGlmICghKChfYSA9IHRyaVs2XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9hWzBdKSB8fCAhKChfYiA9IHRyaVs3XSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9iWzBdKSlcbiAgICB0aHJvdyBcIk11dGF0aW9uIG9ubHkgd29ya3Mgb24gcG9zdC1CTkMgc3RvcmFnZXMhXCI7XG4gIHZhciB3aWRlX29mZnNldHMgPSAoKF9kID0gKF9jID0gdHJpWzhdKSA9PSBudWxsID8gdm9pZCAwIDogX2NbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfZC5kYXRhKSAmJiB2YXJpbnRfdG9faTMyKHRyaVs4XVswXS5kYXRhKSA+IDAgfHwgZmFsc2U7XG4gIGlmICh3aWRlX29mZnNldHMpXG4gICAgdGhyb3cgXCJNYXRoIG9ubHkgd29ya3Mgd2l0aCBub3JtYWwgb2Zmc2V0c1wiO1xuICB2YXIgY250ID0gMDtcbiAgdmFyIGR2ID0gdThfdG9fZGF0YXZpZXcodHJpWzddWzBdLmRhdGEpLCBsYXN0X29mZnNldCA9IDAsIGNlbGxfc3RvcmFnZSA9IFtdO1xuICB2YXIgX2R2ID0gdThfdG9fZGF0YXZpZXcodHJpWzRdWzBdLmRhdGEpLCBfbGFzdF9vZmZzZXQgPSAwLCBfY2VsbF9zdG9yYWdlID0gW107XG4gIGZvciAodmFyIEMgPSAwOyBDIDwgZGF0YS5sZW5ndGg7ICsrQykge1xuICAgIGlmIChkYXRhW0NdID09IG51bGwpIHtcbiAgICAgIGR2LnNldFVpbnQxNihDICogMiwgNjU1MzUsIHRydWUpO1xuICAgICAgX2R2LnNldFVpbnQxNihDICogMiwgNjU1MzUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGR2LnNldFVpbnQxNihDICogMiwgbGFzdF9vZmZzZXQsIHRydWUpO1xuICAgIF9kdi5zZXRVaW50MTYoQyAqIDIsIF9sYXN0X29mZnNldCwgdHJ1ZSk7XG4gICAgdmFyIGNlbGxvYWQsIF9jZWxsb2FkO1xuICAgIHN3aXRjaCAodHlwZW9mIGRhdGFbQ10pIHtcbiAgICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgICAgY2VsbG9hZCA9IHdyaXRlX25ld19zdG9yYWdlKHsgdDogXCJzXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgX2NlbGxvYWQgPSB3cml0ZV9vbGRfc3RvcmFnZSh7IHQ6IFwic1wiLCB2OiBkYXRhW0NdIH0sIFNTVCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm51bWJlclwiOlxuICAgICAgICBjZWxsb2FkID0gd3JpdGVfbmV3X3N0b3JhZ2UoeyB0OiBcIm5cIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBfY2VsbG9hZCA9IHdyaXRlX29sZF9zdG9yYWdlKHsgdDogXCJuXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBjZWxsb2FkID0gd3JpdGVfbmV3X3N0b3JhZ2UoeyB0OiBcImJcIiwgdjogZGF0YVtDXSB9LCBTU1QpO1xuICAgICAgICBfY2VsbG9hZCA9IHdyaXRlX29sZF9zdG9yYWdlKHsgdDogXCJiXCIsIHY6IGRhdGFbQ10gfSwgU1NUKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbnN1cHBvcnRlZCB2YWx1ZSBcIiArIGRhdGFbQ10pO1xuICAgIH1cbiAgICBjZWxsX3N0b3JhZ2UucHVzaChjZWxsb2FkKTtcbiAgICBsYXN0X29mZnNldCArPSBjZWxsb2FkLmxlbmd0aDtcbiAgICBfY2VsbF9zdG9yYWdlLnB1c2goX2NlbGxvYWQpO1xuICAgIF9sYXN0X29mZnNldCArPSBfY2VsbG9hZC5sZW5ndGg7XG4gICAgKytjbnQ7XG4gIH1cbiAgdHJpWzJdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShjbnQpO1xuICBmb3IgKDsgQyA8IHRyaVs3XVswXS5kYXRhLmxlbmd0aCAvIDI7ICsrQykge1xuICAgIGR2LnNldFVpbnQxNihDICogMiwgNjU1MzUsIHRydWUpO1xuICAgIF9kdi5zZXRVaW50MTYoQyAqIDIsIDY1NTM1LCB0cnVlKTtcbiAgfVxuICB0cmlbNl1bMF0uZGF0YSA9IHU4Y29uY2F0KGNlbGxfc3RvcmFnZSk7XG4gIHRyaVszXVswXS5kYXRhID0gdThjb25jYXQoX2NlbGxfc3RvcmFnZSk7XG4gIHJldHVybiBjbnQ7XG59XG5mdW5jdGlvbiB3cml0ZV9udW1iZXJzX2l3YSh3Yiwgb3B0cykge1xuICBpZiAoIW9wdHMgfHwgIW9wdHMubnVtYmVycylcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJNdXN0IHBhc3MgYSBgbnVtYmVyc2Agb3B0aW9uIC0tIGNoZWNrIHRoZSBSRUFETUVcIik7XG4gIHZhciB3cyA9IHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzWzBdXTtcbiAgaWYgKHdiLlNoZWV0TmFtZXMubGVuZ3RoID4gMSlcbiAgICBjb25zb2xlLmVycm9yKFwiVGhlIE51bWJlcnMgd3JpdGVyIGN1cnJlbnRseSB3cml0ZXMgb25seSB0aGUgZmlyc3QgdGFibGVcIik7XG4gIHZhciByYW5nZSA9IGRlY29kZV9yYW5nZSh3c1tcIiFyZWZcIl0pO1xuICByYW5nZS5zLnIgPSByYW5nZS5zLmMgPSAwO1xuICB2YXIgdHJ1bmMgPSBmYWxzZTtcbiAgaWYgKHJhbmdlLmUuYyA+IDkpIHtcbiAgICB0cnVuYyA9IHRydWU7XG4gICAgcmFuZ2UuZS5jID0gOTtcbiAgfVxuICBpZiAocmFuZ2UuZS5yID4gNDkpIHtcbiAgICB0cnVuYyA9IHRydWU7XG4gICAgcmFuZ2UuZS5yID0gNDk7XG4gIH1cbiAgaWYgKHRydW5jKVxuICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgTnVtYmVycyB3cml0ZXIgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gXCIuY29uY2F0KGVuY29kZV9yYW5nZShyYW5nZSkpKTtcbiAgdmFyIGRhdGEgPSBzaGVldF90b19qc29uKHdzLCB7IHJhbmdlOiByYW5nZSwgaGVhZGVyOiAxIH0pO1xuICB2YXIgU1NUID0gW1wiflNoMzN0SjV+XCJdO1xuICBkYXRhLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgcmV0dXJuIHJvdy5mb3JFYWNoKGZ1bmN0aW9uKGNlbGwpIHtcbiAgICAgIGlmICh0eXBlb2YgY2VsbCA9PSBcInN0cmluZ1wiKVxuICAgICAgICBTU1QucHVzaChjZWxsKTtcbiAgICB9KTtcbiAgfSk7XG4gIHZhciBkZXBlbmRlbnRzID0ge307XG4gIHZhciBpbmRpY2VzID0gW107XG4gIHZhciBjZmIgPSBDRkIucmVhZChvcHRzLm51bWJlcnMsIHsgdHlwZTogXCJiYXNlNjRcIiB9KTtcbiAgY2ZiLkZpbGVJbmRleC5tYXAoZnVuY3Rpb24oZmksIGlkeCkge1xuICAgIHJldHVybiBbZmksIGNmYi5GdWxsUGF0aHNbaWR4XV07XG4gIH0pLmZvckVhY2goZnVuY3Rpb24ocm93KSB7XG4gICAgdmFyIGZpID0gcm93WzBdLCBmcCA9IHJvd1sxXTtcbiAgICBpZiAoZmkudHlwZSAhPSAyKVxuICAgICAgcmV0dXJuO1xuICAgIGlmICghZmkubmFtZS5tYXRjaCgvXFwuaXdhLykpXG4gICAgICByZXR1cm47XG4gICAgdmFyIG9sZF9jb250ZW50ID0gZmkuY29udGVudDtcbiAgICB2YXIgcmF3MSA9IGRlY29tcHJlc3NfaXdhX2ZpbGUob2xkX2NvbnRlbnQpO1xuICAgIHZhciB4MiA9IHBhcnNlX2l3YV9maWxlKHJhdzEpO1xuICAgIHgyLmZvckVhY2goZnVuY3Rpb24ocGFja2V0Mikge1xuICAgICAgaW5kaWNlcy5wdXNoKHBhY2tldDIuaWQpO1xuICAgICAgZGVwZW5kZW50c1twYWNrZXQyLmlkXSA9IHsgZGVwczogW10sIGxvY2F0aW9uOiBmcCwgdHlwZTogdmFyaW50X3RvX2kzMihwYWNrZXQyLm1lc3NhZ2VzWzBdLm1ldGFbMV1bMF0uZGF0YSkgfTtcbiAgICB9KTtcbiAgfSk7XG4gIGluZGljZXMuc29ydChmdW5jdGlvbih4MiwgeTIpIHtcbiAgICByZXR1cm4geDIgLSB5MjtcbiAgfSk7XG4gIHZhciBpbmRpY2VzX3ZhcmludCA9IGluZGljZXMuZmlsdGVyKGZ1bmN0aW9uKHgyKSB7XG4gICAgcmV0dXJuIHgyID4gMTtcbiAgfSkubWFwKGZ1bmN0aW9uKHgyKSB7XG4gICAgcmV0dXJuIFt4Miwgd3JpdGVfdmFyaW50NDkoeDIpXTtcbiAgfSk7XG4gIGNmYi5GaWxlSW5kZXgubWFwKGZ1bmN0aW9uKGZpLCBpZHgpIHtcbiAgICByZXR1cm4gW2ZpLCBjZmIuRnVsbFBhdGhzW2lkeF1dO1xuICB9KS5mb3JFYWNoKGZ1bmN0aW9uKHJvdykge1xuICAgIHZhciBmaSA9IHJvd1swXSwgZnAgPSByb3dbMV07XG4gICAgaWYgKCFmaS5uYW1lLm1hdGNoKC9cXC5pd2EvKSlcbiAgICAgIHJldHVybjtcbiAgICB2YXIgeDIgPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGZpLmNvbnRlbnQpKTtcbiAgICB4Mi5mb3JFYWNoKGZ1bmN0aW9uKGlhKSB7XG4gICAgICBpYS5tZXNzYWdlcy5mb3JFYWNoKGZ1bmN0aW9uKG0pIHtcbiAgICAgICAgaW5kaWNlc192YXJpbnQuZm9yRWFjaChmdW5jdGlvbihpdmkpIHtcbiAgICAgICAgICBpZiAoaWEubWVzc2FnZXMuc29tZShmdW5jdGlvbihtZXNzKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFyaW50X3RvX2kzMihtZXNzLm1ldGFbMV1bMF0uZGF0YSkgIT0gMTEwMDYgJiYgdThjb250YWlucyhtZXNzLmRhdGEsIGl2aVsxXSk7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGRlcGVuZGVudHNbaXZpWzBdXS5kZXBzLnB1c2goaWEuaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGZ1bmN0aW9uIGdldF91bmlxdWVfbXNnaWQoKSB7XG4gICAgZm9yICh2YXIgaSA9IDkyNzI2MjsgaSA8IDJlNjsgKytpKVxuICAgICAgaWYgKCFkZXBlbmRlbnRzW2ldKVxuICAgICAgICByZXR1cm4gaTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb28gbWFueSBtZXNzYWdlc1wiKTtcbiAgfVxuICB2YXIgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbMV0ubG9jYXRpb24pO1xuICB2YXIgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICB2YXIgZG9jcm9vdDtcbiAgZm9yICh2YXIgeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgdmFyIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gMSlcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgdmFyIHNoZWV0cm9vdHJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGFyc2Vfc2hhbGxvdyhkb2Nyb290Lm1lc3NhZ2VzWzBdLmRhdGEpWzFdWzBdLmRhdGEpO1xuICBlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzaGVldHJvb3RyZWZdLmxvY2F0aW9uKTtcbiAgeCA9IHBhcnNlX2l3YV9maWxlKGRlY29tcHJlc3NfaXdhX2ZpbGUoZW50cnkuY29udGVudCkpO1xuICBmb3IgKHhpID0gMDsgeGkgPCB4Lmxlbmd0aDsgKyt4aSkge1xuICAgIHBhY2tldCA9IHhbeGldO1xuICAgIGlmIChwYWNrZXQuaWQgPT0gc2hlZXRyb290cmVmKVxuICAgICAgZG9jcm9vdCA9IHBhY2tldDtcbiAgfVxuICBzaGVldHJvb3RyZWYgPSBwYXJzZV9UU1BfUmVmZXJlbmNlKHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKVsyXVswXS5kYXRhKTtcbiAgZW50cnkgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbc2hlZXRyb290cmVmXS5sb2NhdGlvbik7XG4gIHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKGVudHJ5LmNvbnRlbnQpKTtcbiAgZm9yICh4aSA9IDA7IHhpIDwgeC5sZW5ndGg7ICsreGkpIHtcbiAgICBwYWNrZXQgPSB4W3hpXTtcbiAgICBpZiAocGFja2V0LmlkID09IHNoZWV0cm9vdHJlZilcbiAgICAgIGRvY3Jvb3QgPSBwYWNrZXQ7XG4gIH1cbiAgc2hlZXRyb290cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShwYXJzZV9zaGFsbG93KGRvY3Jvb3QubWVzc2FnZXNbMF0uZGF0YSlbMl1bMF0uZGF0YSk7XG4gIGVudHJ5ID0gQ0ZCLmZpbmQoY2ZiLCBkZXBlbmRlbnRzW3NoZWV0cm9vdHJlZl0ubG9jYXRpb24pO1xuICB4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShlbnRyeS5jb250ZW50KSk7XG4gIGZvciAoeGkgPSAwOyB4aSA8IHgubGVuZ3RoOyArK3hpKSB7XG4gICAgcGFja2V0ID0geFt4aV07XG4gICAgaWYgKHBhY2tldC5pZCA9PSBzaGVldHJvb3RyZWYpXG4gICAgICBkb2Nyb290ID0gcGFja2V0O1xuICB9XG4gIHZhciBwYiA9IHBhcnNlX3NoYWxsb3coZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhKTtcbiAge1xuICAgIHBiWzZdWzBdLmRhdGEgPSB3cml0ZV92YXJpbnQ0OShyYW5nZS5lLnIgKyAxKTtcbiAgICBwYls3XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5jICsgMSk7XG4gICAgdmFyIGNydWlkc3JlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UocGJbNDZdWzBdLmRhdGEpO1xuICAgIHZhciBvbGRidWNrZXQgPSBDRkIuZmluZChjZmIsIGRlcGVuZGVudHNbY3J1aWRzcmVmXS5sb2NhdGlvbik7XG4gICAgdmFyIF94ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShvbGRidWNrZXQuY29udGVudCkpO1xuICAgIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgX3gubGVuZ3RoOyArK2opIHtcbiAgICAgICAgaWYgKF94W2pdLmlkID09IGNydWlkc3JlZilcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChfeFtqXS5pZCAhPSBjcnVpZHNyZWYpXG4gICAgICAgIHRocm93IFwiQmFkIENvbHVtblJvd1VJRE1hcEFyY2hpdmVcIjtcbiAgICAgIHZhciBjcnVpZHMgPSBwYXJzZV9zaGFsbG93KF94W2pdLm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgY3J1aWRzWzFdID0gW107XG4gICAgICBjcnVpZHNbMl0gPSBbXSwgY3J1aWRzWzNdID0gW107XG4gICAgICBmb3IgKHZhciBDID0gMDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuICAgICAgICB2YXIgdXVpZCA9IFtdO1xuICAgICAgICB1dWlkWzFdID0gdXVpZFsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KEMgKyA0MjA2OTApIH1dO1xuICAgICAgICBjcnVpZHNbMV0ucHVzaCh7IHR5cGU6IDIsIGRhdGE6IHdyaXRlX3NoYWxsb3codXVpZCkgfSk7XG4gICAgICAgIGNydWlkc1syXS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoQykgfSk7XG4gICAgICAgIGNydWlkc1szXS5wdXNoKHsgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkoQykgfSk7XG4gICAgICB9XG4gICAgICBjcnVpZHNbNF0gPSBbXTtcbiAgICAgIGNydWlkc1s1XSA9IFtdLCBjcnVpZHNbNl0gPSBbXTtcbiAgICAgIGZvciAodmFyIFIgPSAwOyBSIDw9IHJhbmdlLmUucjsgKytSKSB7XG4gICAgICAgIHV1aWQgPSBbXTtcbiAgICAgICAgdXVpZFsxXSA9IHV1aWRbMl0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShSICsgNzI2MjcwKSB9XTtcbiAgICAgICAgY3J1aWRzWzRdLnB1c2goeyB0eXBlOiAyLCBkYXRhOiB3cml0ZV9zaGFsbG93KHV1aWQpIH0pO1xuICAgICAgICBjcnVpZHNbNV0ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KFIpIH0pO1xuICAgICAgICBjcnVpZHNbNl0ucHVzaCh7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KFIpIH0pO1xuICAgICAgfVxuICAgICAgX3hbal0ubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coY3J1aWRzKTtcbiAgICB9XG4gICAgb2xkYnVja2V0LmNvbnRlbnQgPSBjb21wcmVzc19pd2FfZmlsZSh3cml0ZV9pd2FfZmlsZShfeCkpO1xuICAgIG9sZGJ1Y2tldC5zaXplID0gb2xkYnVja2V0LmNvbnRlbnQubGVuZ3RoO1xuICAgIGRlbGV0ZSBwYls0Nl07XG4gICAgdmFyIHN0b3JlID0gcGFyc2Vfc2hhbGxvdyhwYls0XVswXS5kYXRhKTtcbiAgICB7XG4gICAgICBzdG9yZVs3XVswXS5kYXRhID0gd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSk7XG4gICAgICB2YXIgcm93X2hlYWRlcnMgPSBwYXJzZV9zaGFsbG93KHN0b3JlWzFdWzBdLmRhdGEpO1xuICAgICAgdmFyIHJvd19oZWFkZXJfcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShyb3dfaGVhZGVyc1syXVswXS5kYXRhKTtcbiAgICAgIG9sZGJ1Y2tldCA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tyb3dfaGVhZGVyX3JlZl0ubG9jYXRpb24pO1xuICAgICAgX3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKG9sZGJ1Y2tldC5jb250ZW50KSk7XG4gICAgICB7XG4gICAgICAgIGlmIChfeFswXS5pZCAhPSByb3dfaGVhZGVyX3JlZilcbiAgICAgICAgICB0aHJvdyBcIkJhZCBIZWFkZXJTdG9yYWdlQnVja2V0XCI7XG4gICAgICAgIHZhciBiYXNlX2J1Y2tldCA9IHBhcnNlX3NoYWxsb3coX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSk7XG4gICAgICAgIGZvciAoUiA9IDA7IFIgPCBkYXRhLmxlbmd0aDsgKytSKSB7XG4gICAgICAgICAgdmFyIF9idWNrZXQgPSBwYXJzZV9zaGFsbG93KGJhc2VfYnVja2V0WzJdWzBdLmRhdGEpO1xuICAgICAgICAgIF9idWNrZXRbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KFIpO1xuICAgICAgICAgIF9idWNrZXRbNF1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KGRhdGFbUl0ubGVuZ3RoKTtcbiAgICAgICAgICBiYXNlX2J1Y2tldFsyXVtSXSA9IHsgdHlwZTogYmFzZV9idWNrZXRbMl1bMF0udHlwZSwgZGF0YTogd3JpdGVfc2hhbGxvdyhfYnVja2V0KSB9O1xuICAgICAgICB9XG4gICAgICAgIF94WzBdLm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KGJhc2VfYnVja2V0KTtcbiAgICAgIH1cbiAgICAgIG9sZGJ1Y2tldC5jb250ZW50ID0gY29tcHJlc3NfaXdhX2ZpbGUod3JpdGVfaXdhX2ZpbGUoX3gpKTtcbiAgICAgIG9sZGJ1Y2tldC5zaXplID0gb2xkYnVja2V0LmNvbnRlbnQubGVuZ3RoO1xuICAgICAgdmFyIGNvbF9oZWFkZXJfcmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVsyXVswXS5kYXRhKTtcbiAgICAgIG9sZGJ1Y2tldCA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tjb2xfaGVhZGVyX3JlZl0ubG9jYXRpb24pO1xuICAgICAgX3ggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKG9sZGJ1Y2tldC5jb250ZW50KSk7XG4gICAgICB7XG4gICAgICAgIGlmIChfeFswXS5pZCAhPSBjb2xfaGVhZGVyX3JlZilcbiAgICAgICAgICB0aHJvdyBcIkJhZCBIZWFkZXJTdG9yYWdlQnVja2V0XCI7XG4gICAgICAgIGJhc2VfYnVja2V0ID0gcGFyc2Vfc2hhbGxvdyhfeFswXS5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAgZm9yIChDID0gMDsgQyA8PSByYW5nZS5lLmM7ICsrQykge1xuICAgICAgICAgIF9idWNrZXQgPSBwYXJzZV9zaGFsbG93KGJhc2VfYnVja2V0WzJdWzBdLmRhdGEpO1xuICAgICAgICAgIF9idWNrZXRbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KEMpO1xuICAgICAgICAgIF9idWNrZXRbNF1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpO1xuICAgICAgICAgIGJhc2VfYnVja2V0WzJdW0NdID0geyB0eXBlOiBiYXNlX2J1Y2tldFsyXVswXS50eXBlLCBkYXRhOiB3cml0ZV9zaGFsbG93KF9idWNrZXQpIH07XG4gICAgICAgIH1cbiAgICAgICAgX3hbMF0ubWVzc2FnZXNbMF0uZGF0YSA9IHdyaXRlX3NoYWxsb3coYmFzZV9idWNrZXQpO1xuICAgICAgfVxuICAgICAgb2xkYnVja2V0LmNvbnRlbnQgPSBjb21wcmVzc19pd2FfZmlsZSh3cml0ZV9pd2FfZmlsZShfeCkpO1xuICAgICAgb2xkYnVja2V0LnNpemUgPSBvbGRidWNrZXQuY29udGVudC5sZW5ndGg7XG4gICAgICB2YXIgc3N0cmVmID0gcGFyc2VfVFNQX1JlZmVyZW5jZShzdG9yZVs0XVswXS5kYXRhKTtcbiAgICAgIChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHNlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1tzc3RyZWZdLmxvY2F0aW9uKTtcbiAgICAgICAgdmFyIHN4ID0gcGFyc2VfaXdhX2ZpbGUoZGVjb21wcmVzc19pd2FfZmlsZShzZW50cnkuY29udGVudCkpO1xuICAgICAgICB2YXIgc3N0cm9vdDtcbiAgICAgICAgZm9yICh2YXIgc3hpID0gMDsgc3hpIDwgc3gubGVuZ3RoOyArK3N4aSkge1xuICAgICAgICAgIHZhciBwYWNrZXQyID0gc3hbc3hpXTtcbiAgICAgICAgICBpZiAocGFja2V0Mi5pZCA9PSBzc3RyZWYpXG4gICAgICAgICAgICBzc3Ryb290ID0gcGFja2V0MjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc3N0ZGF0YSA9IHBhcnNlX3NoYWxsb3coc3N0cm9vdC5tZXNzYWdlc1swXS5kYXRhKTtcbiAgICAgICAge1xuICAgICAgICAgIHNzdGRhdGFbM10gPSBbXTtcbiAgICAgICAgICB2YXIgbmV3c3N0ID0gW107XG4gICAgICAgICAgU1NULmZvckVhY2goZnVuY3Rpb24oc3RyLCBpKSB7XG4gICAgICAgICAgICBuZXdzc3RbMV0gPSBbeyB0eXBlOiAwLCBkYXRhOiB3cml0ZV92YXJpbnQ0OShpKSB9XTtcbiAgICAgICAgICAgIG5ld3NzdFsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KDEpIH1dO1xuICAgICAgICAgICAgbmV3c3N0WzNdID0gW3sgdHlwZTogMiwgZGF0YTogc3RydTgoc3RyKSB9XTtcbiAgICAgICAgICAgIHNzdGRhdGFbM10ucHVzaCh7IHR5cGU6IDIsIGRhdGE6IHdyaXRlX3NoYWxsb3cobmV3c3N0KSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBzc3Ryb290Lm1lc3NhZ2VzWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHNzdGRhdGEpO1xuICAgICAgICB2YXIgc3kgPSB3cml0ZV9pd2FfZmlsZShzeCk7XG4gICAgICAgIHZhciByYXczMiA9IGNvbXByZXNzX2l3YV9maWxlKHN5KTtcbiAgICAgICAgc2VudHJ5LmNvbnRlbnQgPSByYXczMjtcbiAgICAgICAgc2VudHJ5LnNpemUgPSBzZW50cnkuY29udGVudC5sZW5ndGg7XG4gICAgICB9KSgpO1xuICAgICAgdmFyIHRpbGUgPSBwYXJzZV9zaGFsbG93KHN0b3JlWzNdWzBdLmRhdGEpO1xuICAgICAge1xuICAgICAgICB2YXIgdCA9IHRpbGVbMV1bMF07XG4gICAgICAgIGRlbGV0ZSB0aWxlWzJdO1xuICAgICAgICB2YXIgdGwgPSBwYXJzZV9zaGFsbG93KHQuZGF0YSk7XG4gICAgICAgIHtcbiAgICAgICAgICB2YXIgdGlsZXJlZiA9IHBhcnNlX1RTUF9SZWZlcmVuY2UodGxbMl1bMF0uZGF0YSk7XG4gICAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHRlbnRyeSA9IENGQi5maW5kKGNmYiwgZGVwZW5kZW50c1t0aWxlcmVmXS5sb2NhdGlvbik7XG4gICAgICAgICAgICB2YXIgdHggPSBwYXJzZV9pd2FfZmlsZShkZWNvbXByZXNzX2l3YV9maWxlKHRlbnRyeS5jb250ZW50KSk7XG4gICAgICAgICAgICB2YXIgdGlsZXJvb3Q7XG4gICAgICAgICAgICBmb3IgKHZhciBzeGkgPSAwOyBzeGkgPCB0eC5sZW5ndGg7ICsrc3hpKSB7XG4gICAgICAgICAgICAgIHZhciBwYWNrZXQyID0gdHhbc3hpXTtcbiAgICAgICAgICAgICAgaWYgKHBhY2tldDIuaWQgPT0gdGlsZXJlZilcbiAgICAgICAgICAgICAgICB0aWxlcm9vdCA9IHBhY2tldDI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdGlsZWRhdGEgPSBwYXJzZV9zaGFsbG93KHRpbGVyb290Lm1lc3NhZ2VzWzBdLmRhdGEpO1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkZWxldGUgdGlsZWRhdGFbNl07XG4gICAgICAgICAgICAgIGRlbGV0ZSB0aWxlWzddO1xuICAgICAgICAgICAgICB2YXIgcm93bG9hZCA9IG5ldyBVaW50OEFycmF5KHRpbGVkYXRhWzVdWzBdLmRhdGEpO1xuICAgICAgICAgICAgICB0aWxlZGF0YVs1XSA9IFtdO1xuICAgICAgICAgICAgICB2YXIgY250ID0gMDtcbiAgICAgICAgICAgICAgZm9yICh2YXIgUjIgPSAwOyBSMiA8PSByYW5nZS5lLnI7ICsrUjIpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGlsZXJvdyA9IHBhcnNlX3NoYWxsb3cocm93bG9hZCk7XG4gICAgICAgICAgICAgICAgY250ICs9IHdyaXRlX3RpbGVfcm93KHRpbGVyb3csIGRhdGFbUjJdLCBTU1QpO1xuICAgICAgICAgICAgICAgIHRpbGVyb3dbMV1bMF0uZGF0YSA9IHdyaXRlX3ZhcmludDQ5KFIyKTtcbiAgICAgICAgICAgICAgICB0aWxlZGF0YVs1XS5wdXNoKHsgZGF0YTogd3JpdGVfc2hhbGxvdyh0aWxlcm93KSwgdHlwZTogMiB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB0aWxlZGF0YVsxXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuYyArIDEpIH1dO1xuICAgICAgICAgICAgICB0aWxlZGF0YVsyXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KHJhbmdlLmUuciArIDEpIH1dO1xuICAgICAgICAgICAgICB0aWxlZGF0YVszXSA9IFt7IHR5cGU6IDAsIGRhdGE6IHdyaXRlX3ZhcmludDQ5KGNudCkgfV07XG4gICAgICAgICAgICAgIHRpbGVkYXRhWzRdID0gW3sgdHlwZTogMCwgZGF0YTogd3JpdGVfdmFyaW50NDkocmFuZ2UuZS5yICsgMSkgfV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aWxlcm9vdC5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyh0aWxlZGF0YSk7XG4gICAgICAgICAgICB2YXIgdHkgPSB3cml0ZV9pd2FfZmlsZSh0eCk7XG4gICAgICAgICAgICB2YXIgcmF3MzIgPSBjb21wcmVzc19pd2FfZmlsZSh0eSk7XG4gICAgICAgICAgICB0ZW50cnkuY29udGVudCA9IHJhdzMyO1xuICAgICAgICAgICAgdGVudHJ5LnNpemUgPSB0ZW50cnkuY29udGVudC5sZW5ndGg7XG4gICAgICAgICAgfSkoKTtcbiAgICAgICAgfVxuICAgICAgICB0LmRhdGEgPSB3cml0ZV9zaGFsbG93KHRsKTtcbiAgICAgIH1cbiAgICAgIHN0b3JlWzNdWzBdLmRhdGEgPSB3cml0ZV9zaGFsbG93KHRpbGUpO1xuICAgIH1cbiAgICBwYls0XVswXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhzdG9yZSk7XG4gIH1cbiAgZG9jcm9vdC5tZXNzYWdlc1swXS5kYXRhID0gd3JpdGVfc2hhbGxvdyhwYik7XG4gIHZhciB5ID0gd3JpdGVfaXdhX2ZpbGUoeCk7XG4gIHZhciByYXczID0gY29tcHJlc3NfaXdhX2ZpbGUoeSk7XG4gIGVudHJ5LmNvbnRlbnQgPSByYXczO1xuICBlbnRyeS5zaXplID0gZW50cnkuY29udGVudC5sZW5ndGg7XG4gIHJldHVybiBjZmI7XG59XG5mdW5jdGlvbiBmaXhfb3B0c19mdW5jKGRlZmF1bHRzLyo6QXJyYXk8QXJyYXk8YW55PiA+Ki8pLyo6eyhvOmFueSk6dm9pZH0qLyB7XG5cdHJldHVybiBmdW5jdGlvbiBmaXhfb3B0cyhvcHRzKSB7XG5cdFx0Zm9yKHZhciBpID0gMDsgaSAhPSBkZWZhdWx0cy5sZW5ndGg7ICsraSkge1xuXHRcdFx0dmFyIGQgPSBkZWZhdWx0c1tpXTtcblx0XHRcdGlmKG9wdHNbZFswXV0gPT09IHVuZGVmaW5lZCkgb3B0c1tkWzBdXSA9IGRbMV07XG5cdFx0XHRpZihkWzJdID09PSAnbicpIG9wdHNbZFswXV0gPSBOdW1iZXIob3B0c1tkWzBdXSk7XG5cdFx0fVxuXHR9O1xufVxuXG5mdW5jdGlvbiBmaXhfcmVhZF9vcHRzKG9wdHMpIHtcbmZpeF9vcHRzX2Z1bmMoW1xuXHRbJ2NlbGxORicsIGZhbHNlXSwgLyogZW1pdCBjZWxsIG51bWJlciBmb3JtYXQgc3RyaW5nIGFzIC56ICovXG5cdFsnY2VsbEhUTUwnLCB0cnVlXSwgLyogZW1pdCBodG1sIHN0cmluZyBhcyAuaCAqL1xuXHRbJ2NlbGxGb3JtdWxhJywgdHJ1ZV0sIC8qIGVtaXQgZm9ybXVsYWUgYXMgLmYgKi9cblx0WydjZWxsU3R5bGVzJywgZmFsc2VdLCAvKiBlbWl0cyBzdHlsZS90aGVtZSBhcyAucyAqL1xuXHRbJ2NlbGxUZXh0JywgdHJ1ZV0sIC8qIGVtaXQgZm9ybWF0dGVkIHRleHQgYXMgLncgKi9cblx0WydjZWxsRGF0ZXMnLCBmYWxzZV0sIC8qIGVtaXQgZGF0ZSBjZWxscyB3aXRoIHR5cGUgYGRgICovXG5cblx0WydzaGVldFN0dWJzJywgZmFsc2VdLCAvKiBlbWl0IGVtcHR5IGNlbGxzICovXG5cdFsnc2hlZXRSb3dzJywgMCwgJ24nXSwgLyogcmVhZCBuIHJvd3MgKDAgPSByZWFkIGFsbCByb3dzKSAqL1xuXG5cdFsnYm9va0RlcHMnLCBmYWxzZV0sIC8qIHBhcnNlIGNhbGN1bGF0aW9uIGNoYWlucyAqL1xuXHRbJ2Jvb2tTaGVldHMnLCBmYWxzZV0sIC8qIG9ubHkgdHJ5IHRvIGdldCBzaGVldCBuYW1lcyAobm8gU2hlZXRzKSAqL1xuXHRbJ2Jvb2tQcm9wcycsIGZhbHNlXSwgLyogb25seSB0cnkgdG8gZ2V0IHByb3BlcnRpZXMgKG5vIFNoZWV0cykgKi9cblx0Wydib29rRmlsZXMnLCBmYWxzZV0sIC8qIGluY2x1ZGUgcmF3IGZpbGUgc3RydWN0dXJlIChrZXlzLCBmaWxlcywgY2ZiKSAqL1xuXHRbJ2Jvb2tWQkEnLCBmYWxzZV0sIC8qIGluY2x1ZGUgdmJhIHJhdyBkYXRhICh2YmFyYXcpICovXG5cblx0WydwYXNzd29yZCcsJyddLCAvKiBwYXNzd29yZCAqL1xuXHRbJ1dURicsIGZhbHNlXSAvKiBXVEYgbW9kZSAodGhyb3dzIGVycm9ycykgKi9cbl0pKG9wdHMpO1xufVxuXG5mdW5jdGlvbiBmaXhfd3JpdGVfb3B0cyhvcHRzKSB7XG5maXhfb3B0c19mdW5jKFtcblx0WydjZWxsRGF0ZXMnLCBmYWxzZV0sIC8qIHdyaXRlIGRhdGUgY2VsbHMgd2l0aCB0eXBlIGBkYCAqL1xuXG5cdFsnYm9va1NTVCcsIGZhbHNlXSwgLyogR2VuZXJhdGUgU2hhcmVkIFN0cmluZyBUYWJsZSAqL1xuXG5cdFsnYm9va1R5cGUnLCAneGxzeCddLCAvKiBUeXBlIG9mIHdvcmtib29rICh4bHN4L20vYikgKi9cblxuXHRbJ2NvbXByZXNzaW9uJywgZmFsc2VdLCAvKiBVc2UgZmlsZSBjb21wcmVzc2lvbiAqL1xuXG5cdFsnV1RGJywgZmFsc2VdIC8qIFdURiBtb2RlICh0aHJvd3MgZXJyb3JzKSAqL1xuXSkob3B0cyk7XG59XG5mdW5jdGlvbiBnZXRfc2hlZXRfdHlwZShuLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRpZihSRUxTLldTLmluZGV4T2YobikgPiAtMSkgcmV0dXJuIFwic2hlZXRcIjtcblx0aWYoUkVMUy5DUyAmJiBuID09IFJFTFMuQ1MpIHJldHVybiBcImNoYXJ0XCI7XG5cdGlmKFJFTFMuRFMgJiYgbiA9PSBSRUxTLkRTKSByZXR1cm4gXCJkaWFsb2dcIjtcblx0aWYoUkVMUy5NUyAmJiBuID09IFJFTFMuTVMpIHJldHVybiBcIm1hY3JvXCI7XG5cdHJldHVybiAobiAmJiBuLmxlbmd0aCkgPyBuIDogXCJzaGVldFwiO1xufVxuZnVuY3Rpb24gc2FmZV9wYXJzZV93YnJlbHMod2JyZWxzLCBzaGVldHMpIHtcblx0aWYoIXdicmVscykgcmV0dXJuIDA7XG5cdHRyeSB7XG5cdFx0d2JyZWxzID0gc2hlZXRzLm1hcChmdW5jdGlvbiBwd2JyKHcpIHsgaWYoIXcuaWQpIHcuaWQgPSB3LnN0clJlbElEOyByZXR1cm4gW3cubmFtZSwgd2JyZWxzWychaWQnXVt3LmlkXS5UYXJnZXQsIGdldF9zaGVldF90eXBlKHdicmVsc1snIWlkJ11bdy5pZF0uVHlwZSldOyB9KTtcblx0fSBjYXRjaChlKSB7IHJldHVybiBudWxsOyB9XG5cdHJldHVybiAhd2JyZWxzIHx8IHdicmVscy5sZW5ndGggPT09IDAgPyBudWxsIDogd2JyZWxzO1xufVxuXG5mdW5jdGlvbiBzYWZlX3BhcnNlX3NoZWV0KHppcCwgcGF0aC8qOnN0cmluZyovLCByZWxzUGF0aC8qOnN0cmluZyovLCBzaGVldCwgaWR4Lyo6bnVtYmVyKi8sIHNoZWV0UmVscywgc2hlZXRzLCBzdHlwZS8qOnN0cmluZyovLCBvcHRzLCB3YiwgdGhlbWVzLCBzdHlsZXMpIHtcblx0dHJ5IHtcblx0XHRzaGVldFJlbHNbc2hlZXRdPXBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgcmVsc1BhdGgsIHRydWUpLCBwYXRoKTtcblx0XHR2YXIgZGF0YSA9IGdldHppcGRhdGEoemlwLCBwYXRoKTtcblx0XHR2YXIgX3dzO1xuXHRcdHN3aXRjaChzdHlwZSkge1xuXHRcdFx0Y2FzZSAnc2hlZXQnOiAgX3dzID0gcGFyc2Vfd3MoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpOyBicmVhaztcblx0XHRcdGNhc2UgJ2NoYXJ0JzogIF93cyA9IHBhcnNlX2NzKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTtcblx0XHRcdFx0aWYoIV93cyB8fCAhX3dzWychZHJhd2VsJ10pIGJyZWFrO1xuXHRcdFx0XHR2YXIgZGZpbGUgPSByZXNvbHZlX3BhdGgoX3dzWychZHJhd2VsJ10uVGFyZ2V0LCBwYXRoKTtcblx0XHRcdFx0dmFyIGRyZWxzcCA9IGdldF9yZWxzX3BhdGgoZGZpbGUpO1xuXHRcdFx0XHR2YXIgZHJhdyA9IHBhcnNlX2RyYXdpbmcoZ2V0emlwc3RyKHppcCwgZGZpbGUsIHRydWUpLCBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIGRyZWxzcCwgdHJ1ZSksIGRmaWxlKSk7XG5cdFx0XHRcdHZhciBjaGFydHAgPSByZXNvbHZlX3BhdGgoZHJhdywgZGZpbGUpO1xuXHRcdFx0XHR2YXIgY3JlbHNwID0gZ2V0X3JlbHNfcGF0aChjaGFydHApO1xuXHRcdFx0XHRfd3MgPSBwYXJzZV9jaGFydChnZXR6aXBzdHIoemlwLCBjaGFydHAsIHRydWUpLCBjaGFydHAsIG9wdHMsIHBhcnNlX3JlbHMoZ2V0emlwc3RyKHppcCwgY3JlbHNwLCB0cnVlKSwgY2hhcnRwKSwgd2IsIF93cyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFjcm8nOiAgX3dzID0gcGFyc2VfbXMoZGF0YSwgcGF0aCwgaWR4LCBvcHRzLCBzaGVldFJlbHNbc2hlZXRdLCB3YiwgdGhlbWVzLCBzdHlsZXMpOyBicmVhaztcblx0XHRcdGNhc2UgJ2RpYWxvZyc6IF93cyA9IHBhcnNlX2RzKGRhdGEsIHBhdGgsIGlkeCwgb3B0cywgc2hlZXRSZWxzW3NoZWV0XSwgd2IsIHRoZW1lcywgc3R5bGVzKTsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgc2hlZXQgdHlwZSBcIiArIHN0eXBlKTtcblx0XHR9XG5cdFx0c2hlZXRzW3NoZWV0XSA9IF93cztcblxuXHRcdC8qIHNjYW4gcmVscyBmb3IgY29tbWVudHMgYW5kIHRocmVhZGVkIGNvbW1lbnRzICovXG5cdFx0dmFyIHRjb21tZW50cyA9IFtdO1xuXHRcdGlmKHNoZWV0UmVscyAmJiBzaGVldFJlbHNbc2hlZXRdKSBrZXlzKHNoZWV0UmVsc1tzaGVldF0pLmZvckVhY2goZnVuY3Rpb24obikge1xuXHRcdFx0dmFyIGRmaWxlID0gXCJcIjtcblx0XHRcdGlmKHNoZWV0UmVsc1tzaGVldF1bbl0uVHlwZSA9PSBSRUxTLkNNTlQpIHtcblx0XHRcdFx0ZGZpbGUgPSByZXNvbHZlX3BhdGgoc2hlZXRSZWxzW3NoZWV0XVtuXS5UYXJnZXQsIHBhdGgpO1xuXHRcdFx0XHR2YXIgY29tbWVudHMgPSBwYXJzZV9jbW50KGdldHppcGRhdGEoemlwLCBkZmlsZSwgdHJ1ZSksIGRmaWxlLCBvcHRzKTtcblx0XHRcdFx0aWYoIWNvbW1lbnRzIHx8ICFjb21tZW50cy5sZW5ndGgpIHJldHVybjtcblx0XHRcdFx0c2hlZXRfaW5zZXJ0X2NvbW1lbnRzKF93cywgY29tbWVudHMsIGZhbHNlKTtcblx0XHRcdH1cblx0XHRcdGlmKHNoZWV0UmVsc1tzaGVldF1bbl0uVHlwZSA9PSBSRUxTLlRDTU5UKSB7XG5cdFx0XHRcdGRmaWxlID0gcmVzb2x2ZV9wYXRoKHNoZWV0UmVsc1tzaGVldF1bbl0uVGFyZ2V0LCBwYXRoKTtcblx0XHRcdFx0dGNvbW1lbnRzID0gdGNvbW1lbnRzLmNvbmNhdChwYXJzZV90Y21udF94bWwoZ2V0emlwZGF0YSh6aXAsIGRmaWxlLCB0cnVlKSwgb3B0cykpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdGlmKHRjb21tZW50cyAmJiB0Y29tbWVudHMubGVuZ3RoKSBzaGVldF9pbnNlcnRfY29tbWVudHMoX3dzLCB0Y29tbWVudHMsIHRydWUsIG9wdHMucGVvcGxlIHx8IFtdKTtcblx0fSBjYXRjaChlKSB7IGlmKG9wdHMuV1RGKSB0aHJvdyBlOyB9XG59XG5cbmZ1bmN0aW9uIHN0cmlwX2Zyb250X3NsYXNoKHgvKjpzdHJpbmcqLykvKjpzdHJpbmcqLyB7IHJldHVybiB4LmNoYXJBdCgwKSA9PSAnLycgPyB4LnNsaWNlKDEpIDogeDsgfVxuXG5mdW5jdGlvbiBwYXJzZV96aXAoemlwLyo6WklQKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdG1ha2Vfc3NmKCk7XG5cdG9wdHMgPSBvcHRzIHx8IHt9O1xuXHRmaXhfcmVhZF9vcHRzKG9wdHMpO1xuXG5cdC8qIE9wZW5Eb2N1bWVudCBQYXJ0IDMgU2VjdGlvbiAyLjIuMSBPcGVuRG9jdW1lbnQgUGFja2FnZSAqL1xuXHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdNRVRBLUlORi9tYW5pZmVzdC54bWwnKSkgcmV0dXJuIHBhcnNlX29kcyh6aXAsIG9wdHMpO1xuXHQvKiBVT0MgKi9cblx0aWYoc2FmZWdldHppcGZpbGUoemlwLCAnb2JqZWN0ZGF0YS54bWwnKSkgcmV0dXJuIHBhcnNlX29kcyh6aXAsIG9wdHMpO1xuXHQvKiBOdW1iZXJzICovXG5cdGlmKHNhZmVnZXR6aXBmaWxlKHppcCwgJ0luZGV4L0RvY3VtZW50Lml3YScpKSB7XG5cdFx0aWYodHlwZW9mIFVpbnQ4QXJyYXkgPT0gXCJ1bmRlZmluZWRcIikgdGhyb3cgbmV3IEVycm9yKCdOVU1CRVJTIGZpbGUgcGFyc2luZyByZXF1aXJlcyBVaW50OEFycmF5IHN1cHBvcnQnKTtcblx0XHRpZih0eXBlb2YgcGFyc2VfbnVtYmVyc19pd2EgIT0gXCJ1bmRlZmluZWRcIikge1xuXHRcdFx0aWYoemlwLkZpbGVJbmRleCkgcmV0dXJuIHBhcnNlX251bWJlcnNfaXdhKHppcCk7XG5cdFx0XHR2YXIgX3ppcCA9IENGQi51dGlscy5jZmJfbmV3KCk7XG5cdFx0XHR6aXBlbnRyaWVzKHppcCkuZm9yRWFjaChmdW5jdGlvbihlKSB7IHppcF9hZGRfZmlsZShfemlwLCBlLCBnZXR6aXBiaW4oemlwLCBlKSk7IH0pO1xuXHRcdFx0cmV0dXJuIHBhcnNlX251bWJlcnNfaXdhKF96aXApO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIE5VTUJFUlMgZmlsZScpO1xuXHR9XG5cdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsICdbQ29udGVudF9UeXBlc10ueG1sJykpIHtcblx0XHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdpbmRleC54bWwuZ3onKSkgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBOVU1CRVJTIDA4IGZpbGUnKTtcblx0XHRpZihzYWZlZ2V0emlwZmlsZSh6aXAsICdpbmRleC54bWwnKSkgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBOVU1CRVJTIDA5IGZpbGUnKTtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIFpJUCBmaWxlJyk7XG5cdH1cblxuXHR2YXIgZW50cmllcyA9IHppcGVudHJpZXMoemlwKTtcblx0dmFyIGRpciA9IHBhcnNlX2N0KChnZXR6aXBzdHIoemlwLCAnW0NvbnRlbnRfVHlwZXNdLnhtbCcpLyo6P2FueSovKSk7XG5cdHZhciB4bHNiID0gZmFsc2U7XG5cdHZhciBzaGVldHMsIGJpbm5hbWU7XG5cdGlmKGRpci53b3JrYm9va3MubGVuZ3RoID09PSAwKSB7XG5cdFx0YmlubmFtZSA9IFwieGwvd29ya2Jvb2sueG1sXCI7XG5cdFx0aWYoZ2V0emlwZGF0YSh6aXAsYmlubmFtZSwgdHJ1ZSkpIGRpci53b3JrYm9va3MucHVzaChiaW5uYW1lKTtcblx0fVxuXHRpZihkaXIud29ya2Jvb2tzLmxlbmd0aCA9PT0gMCkge1xuXHRcdGJpbm5hbWUgPSBcInhsL3dvcmtib29rLmJpblwiO1xuXHRcdGlmKCFnZXR6aXBkYXRhKHppcCxiaW5uYW1lLHRydWUpKSB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgZmluZCB3b3JrYm9va1wiKTtcblx0XHRkaXIud29ya2Jvb2tzLnB1c2goYmlubmFtZSk7XG5cdFx0eGxzYiA9IHRydWU7XG5cdH1cblx0aWYoZGlyLndvcmtib29rc1swXS5zbGljZSgtMykgPT0gXCJiaW5cIikgeGxzYiA9IHRydWU7XG5cblx0dmFyIHRoZW1lcyA9ICh7fS8qOmFueSovKTtcblx0dmFyIHN0eWxlcyA9ICh7fS8qOmFueSovKTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyAmJiAhb3B0cy5ib29rUHJvcHMpIHtcblx0XHRzdHJzID0gW107XG5cdFx0aWYoZGlyLnNzdCkgdHJ5IHsgc3Rycz1wYXJzZV9zc3QoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5zc3QpKSwgZGlyLnNzdCwgb3B0cyk7IH0gY2F0Y2goZSkgeyBpZihvcHRzLldURikgdGhyb3cgZTsgfVxuXG5cdFx0aWYob3B0cy5jZWxsU3R5bGVzICYmIGRpci50aGVtZXMubGVuZ3RoKSB0aGVtZXMgPSBwYXJzZV90aGVtZShnZXR6aXBzdHIoemlwLCBkaXIudGhlbWVzWzBdLnJlcGxhY2UoL15cXC8vLCcnKSwgdHJ1ZSl8fFwiXCIsZGlyLnRoZW1lc1swXSwgb3B0cyk7XG5cblx0XHRpZihkaXIuc3R5bGUpIHN0eWxlcyA9IHBhcnNlX3N0eShnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLnN0eWxlKSksIGRpci5zdHlsZSwgdGhlbWVzLCBvcHRzKTtcblx0fVxuXG5cdC8qdmFyIGV4dGVybmJvb2tzID0gKi9kaXIubGlua3MubWFwKGZ1bmN0aW9uKGxpbmspIHtcblx0XHR0cnkge1xuXHRcdFx0dmFyIHJlbHMgPSBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIGdldF9yZWxzX3BhdGgoc3RyaXBfZnJvbnRfc2xhc2gobGluaykpKSwgbGluayk7XG5cdFx0XHRyZXR1cm4gcGFyc2VfeGxpbmsoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGxpbmspKSwgcmVscywgbGluaywgb3B0cyk7XG5cdFx0fSBjYXRjaChlKSB7fVxuXHR9KTtcblxuXHR2YXIgd2IgPSBwYXJzZV93YihnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLndvcmtib29rc1swXSkpLCBkaXIud29ya2Jvb2tzWzBdLCBvcHRzKTtcblxuXHR2YXIgcHJvcHMgPSB7fSwgcHJvcGRhdGEgPSBcIlwiO1xuXG5cdGlmKGRpci5jb3JlcHJvcHMubGVuZ3RoKSB7XG5cdFx0cHJvcGRhdGEgPSBnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLmNvcmVwcm9wc1swXSksIHRydWUpO1xuXHRcdGlmKHByb3BkYXRhKSBwcm9wcyA9IHBhcnNlX2NvcmVfcHJvcHMocHJvcGRhdGEpO1xuXHRcdGlmKGRpci5leHRwcm9wcy5sZW5ndGggIT09IDApIHtcblx0XHRcdHByb3BkYXRhID0gZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5leHRwcm9wc1swXSksIHRydWUpO1xuXHRcdFx0aWYocHJvcGRhdGEpIHBhcnNlX2V4dF9wcm9wcyhwcm9wZGF0YSwgcHJvcHMsIG9wdHMpO1xuXHRcdH1cblx0fVxuXG5cdHZhciBjdXN0cHJvcHMgPSB7fTtcblx0aWYoIW9wdHMuYm9va1NoZWV0cyB8fCBvcHRzLmJvb2tQcm9wcykge1xuXHRcdGlmIChkaXIuY3VzdHByb3BzLmxlbmd0aCAhPT0gMCkge1xuXHRcdFx0cHJvcGRhdGEgPSBnZXR6aXBzdHIoemlwLCBzdHJpcF9mcm9udF9zbGFzaChkaXIuY3VzdHByb3BzWzBdKSwgdHJ1ZSk7XG5cdFx0XHRpZihwcm9wZGF0YSkgY3VzdHByb3BzID0gcGFyc2VfY3VzdF9wcm9wcyhwcm9wZGF0YSwgb3B0cyk7XG5cdFx0fVxuXHR9XG5cblx0dmFyIG91dCA9ICh7fS8qOmFueSovKTtcblx0aWYob3B0cy5ib29rU2hlZXRzIHx8IG9wdHMuYm9va1Byb3BzKSB7XG5cdFx0aWYod2IuU2hlZXRzKSBzaGVldHMgPSB3Yi5TaGVldHMubWFwKGZ1bmN0aW9uIHBsdWNrKHgpeyByZXR1cm4geC5uYW1lOyB9KTtcblx0XHRlbHNlIGlmKHByb3BzLldvcmtzaGVldHMgJiYgcHJvcHMuU2hlZXROYW1lcy5sZW5ndGggPiAwKSBzaGVldHM9cHJvcHMuU2hlZXROYW1lcztcblx0XHRpZihvcHRzLmJvb2tQcm9wcykgeyBvdXQuUHJvcHMgPSBwcm9wczsgb3V0LkN1c3Rwcm9wcyA9IGN1c3Rwcm9wczsgfVxuXHRcdGlmKG9wdHMuYm9va1NoZWV0cyAmJiB0eXBlb2Ygc2hlZXRzICE9PSAndW5kZWZpbmVkJykgb3V0LlNoZWV0TmFtZXMgPSBzaGVldHM7XG5cdFx0aWYob3B0cy5ib29rU2hlZXRzID8gb3V0LlNoZWV0TmFtZXMgOiBvcHRzLmJvb2tQcm9wcykgcmV0dXJuIG91dDtcblx0fVxuXHRzaGVldHMgPSB7fTtcblxuXHR2YXIgZGVwcyA9IHt9O1xuXHRpZihvcHRzLmJvb2tEZXBzICYmIGRpci5jYWxjY2hhaW4pIGRlcHM9cGFyc2VfY2MoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5jYWxjY2hhaW4pKSxkaXIuY2FsY2NoYWluLG9wdHMpO1xuXG5cdHZhciBpPTA7XG5cdHZhciBzaGVldFJlbHMgPSAoe30vKjphbnkqLyk7XG5cdHZhciBwYXRoLCByZWxzUGF0aDtcblxuXHR7XG5cdFx0dmFyIHdic2hlZXRzID0gd2IuU2hlZXRzO1xuXHRcdHByb3BzLldvcmtzaGVldHMgPSB3YnNoZWV0cy5sZW5ndGg7XG5cdFx0cHJvcHMuU2hlZXROYW1lcyA9IFtdO1xuXHRcdGZvcih2YXIgaiA9IDA7IGogIT0gd2JzaGVldHMubGVuZ3RoOyArK2opIHtcblx0XHRcdHByb3BzLlNoZWV0TmFtZXNbal0gPSB3YnNoZWV0c1tqXS5uYW1lO1xuXHRcdH1cblx0fVxuXG5cdHZhciB3YmV4dCA9IHhsc2IgPyBcImJpblwiIDogXCJ4bWxcIjtcblx0dmFyIHdicmVsc2kgPSBkaXIud29ya2Jvb2tzWzBdLmxhc3RJbmRleE9mKFwiL1wiKTtcblx0dmFyIHdicmVsc2ZpbGUgPSAoZGlyLndvcmtib29rc1swXS5zbGljZSgwLCB3YnJlbHNpKzEpICsgXCJfcmVscy9cIiArIGRpci53b3JrYm9va3NbMF0uc2xpY2Uod2JyZWxzaSsxKSArIFwiLnJlbHNcIikucmVwbGFjZSgvXlxcLy8sXCJcIik7XG5cdGlmKCFzYWZlZ2V0emlwZmlsZSh6aXAsIHdicmVsc2ZpbGUpKSB3YnJlbHNmaWxlID0gJ3hsL19yZWxzL3dvcmtib29rLicgKyB3YmV4dCArICcucmVscyc7XG5cdHZhciB3YnJlbHMgPSBwYXJzZV9yZWxzKGdldHppcHN0cih6aXAsIHdicmVsc2ZpbGUsIHRydWUpLCB3YnJlbHNmaWxlLnJlcGxhY2UoL19yZWxzLiovLCBcInM1c1wiKSk7XG5cblx0aWYoKGRpci5tZXRhZGF0YSB8fCBbXSkubGVuZ3RoID49IDEpIHtcblx0XHQvKiBUT0RPOiBNRFggYW5kIG90aGVyIHR5cGVzIG9mIG1ldGFkYXRhICovXG5cdFx0b3B0cy54bG1ldGEgPSBwYXJzZV94bG1ldGEoZ2V0emlwZGF0YSh6aXAsIHN0cmlwX2Zyb250X3NsYXNoKGRpci5tZXRhZGF0YVswXSkpLGRpci5tZXRhZGF0YVswXSxvcHRzKTtcblx0fVxuXG5cdGlmKChkaXIucGVvcGxlIHx8IFtdKS5sZW5ndGggPj0gMSkge1xuXHRcdG9wdHMucGVvcGxlID0gcGFyc2VfcGVvcGxlX3htbChnZXR6aXBkYXRhKHppcCwgc3RyaXBfZnJvbnRfc2xhc2goZGlyLnBlb3BsZVswXSkpLG9wdHMpO1xuXHR9XG5cblx0aWYod2JyZWxzKSB3YnJlbHMgPSBzYWZlX3BhcnNlX3dicmVscyh3YnJlbHMsIHdiLlNoZWV0cyk7XG5cblx0LyogTnVtYmVycyBpT1MgaGFjayAqL1xuXHR2YXIgbm1vZGUgPSAoZ2V0emlwZGF0YSh6aXAsXCJ4bC93b3Jrc2hlZXRzL3NoZWV0LnhtbFwiLHRydWUpKT8xOjA7XG5cdHdzbG9vcDogZm9yKGkgPSAwOyBpICE9IHByb3BzLldvcmtzaGVldHM7ICsraSkge1xuXHRcdHZhciBzdHlwZSA9IFwic2hlZXRcIjtcblx0XHRpZih3YnJlbHMgJiYgd2JyZWxzW2ldKSB7XG5cdFx0XHRwYXRoID0gJ3hsLycgKyAod2JyZWxzW2ldWzFdKS5yZXBsYWNlKC9bXFwvXT94bFxcLy8sIFwiXCIpO1xuXHRcdFx0aWYoIXNhZmVnZXR6aXBmaWxlKHppcCwgcGF0aCkpIHBhdGggPSB3YnJlbHNbaV1bMV07XG5cdFx0XHRpZighc2FmZWdldHppcGZpbGUoemlwLCBwYXRoKSkgcGF0aCA9IHdicmVsc2ZpbGUucmVwbGFjZSgvX3JlbHNcXC8uKiQvLFwiXCIpICsgd2JyZWxzW2ldWzFdO1xuXHRcdFx0c3R5cGUgPSB3YnJlbHNbaV1bMl07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHBhdGggPSAneGwvd29ya3NoZWV0cy9zaGVldCcrKGkrMS1ubW9kZSkrXCIuXCIgKyB3YmV4dDtcblx0XHRcdHBhdGggPSBwYXRoLnJlcGxhY2UoL3NoZWV0MFxcLi8sXCJzaGVldC5cIik7XG5cdFx0fVxuXHRcdHJlbHNQYXRoID0gcGF0aC5yZXBsYWNlKC9eKC4qKShcXC8pKFteXFwvXSopJC8sIFwiJDEvX3JlbHMvJDMucmVsc1wiKTtcblx0XHRpZihvcHRzICYmIG9wdHMuc2hlZXRzICE9IG51bGwpIHN3aXRjaCh0eXBlb2Ygb3B0cy5zaGVldHMpIHtcblx0XHRcdGNhc2UgXCJudW1iZXJcIjogaWYoaSAhPSBvcHRzLnNoZWV0cykgY29udGludWUgd3Nsb29wOyBicmVhaztcblx0XHRcdGNhc2UgXCJzdHJpbmdcIjogaWYocHJvcHMuU2hlZXROYW1lc1tpXS50b0xvd2VyQ2FzZSgpICE9IG9wdHMuc2hlZXRzLnRvTG93ZXJDYXNlKCkpIGNvbnRpbnVlIHdzbG9vcDsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBpZihBcnJheS5pc0FycmF5ICYmIEFycmF5LmlzQXJyYXkob3B0cy5zaGVldHMpKSB7XG5cdFx0XHRcdHZhciBzbmpzZWVuID0gZmFsc2U7XG5cdFx0XHRcdGZvcih2YXIgc25qID0gMDsgc25qICE9IG9wdHMuc2hlZXRzLmxlbmd0aDsgKytzbmopIHtcblx0XHRcdFx0XHRpZih0eXBlb2Ygb3B0cy5zaGVldHNbc25qXSA9PSBcIm51bWJlclwiICYmIG9wdHMuc2hlZXRzW3Nual0gPT0gaSkgc25qc2Vlbj0xO1xuXHRcdFx0XHRcdGlmKHR5cGVvZiBvcHRzLnNoZWV0c1tzbmpdID09IFwic3RyaW5nXCIgJiYgb3B0cy5zaGVldHNbc25qXS50b0xvd2VyQ2FzZSgpID09IHByb3BzLlNoZWV0TmFtZXNbaV0udG9Mb3dlckNhc2UoKSkgc25qc2VlbiA9IDE7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoIXNuanNlZW4pIGNvbnRpbnVlIHdzbG9vcDtcblx0XHRcdH1cblx0XHR9XG5cdFx0c2FmZV9wYXJzZV9zaGVldCh6aXAsIHBhdGgsIHJlbHNQYXRoLCBwcm9wcy5TaGVldE5hbWVzW2ldLCBpLCBzaGVldFJlbHMsIHNoZWV0cywgc3R5cGUsIG9wdHMsIHdiLCB0aGVtZXMsIHN0eWxlcyk7XG5cdH1cblxuXHRvdXQgPSAoe1xuXHRcdERpcmVjdG9yeTogZGlyLFxuXHRcdFdvcmtib29rOiB3Yixcblx0XHRQcm9wczogcHJvcHMsXG5cdFx0Q3VzdHByb3BzOiBjdXN0cHJvcHMsXG5cdFx0RGVwczogZGVwcyxcblx0XHRTaGVldHM6IHNoZWV0cyxcblx0XHRTaGVldE5hbWVzOiBwcm9wcy5TaGVldE5hbWVzLFxuXHRcdFN0cmluZ3M6IHN0cnMsXG5cdFx0U3R5bGVzOiBzdHlsZXMsXG5cdFx0VGhlbWVzOiB0aGVtZXMsXG5cdFx0U1NGOiBkdXAodGFibGVfZm10KVxuXHR9Lyo6YW55Ki8pO1xuXHRpZihvcHRzICYmIG9wdHMuYm9va0ZpbGVzKSB7XG5cdFx0aWYoemlwLmZpbGVzKSB7XG5cdFx0XHRvdXQua2V5cyA9IGVudHJpZXM7XG5cdFx0XHRvdXQuZmlsZXMgPSB6aXAuZmlsZXM7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG91dC5rZXlzID0gW107XG5cdFx0XHRvdXQuZmlsZXMgPSB7fTtcblx0XHRcdHppcC5GdWxsUGF0aHMuZm9yRWFjaChmdW5jdGlvbihwLCBpZHgpIHtcblx0XHRcdFx0cCA9IHAucmVwbGFjZSgvXlJvb3QgRW50cnlbXFwvXS8sIFwiXCIpO1xuXHRcdFx0XHRvdXQua2V5cy5wdXNoKHApO1xuXHRcdFx0XHRvdXQuZmlsZXNbcF0gPSB6aXAuRmlsZUluZGV4W2lkeF07XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0aWYob3B0cyAmJiBvcHRzLmJvb2tWQkEpIHtcblx0XHRpZihkaXIudmJhLmxlbmd0aCA+IDApIG91dC52YmFyYXcgPSBnZXR6aXBkYXRhKHppcCxzdHJpcF9mcm9udF9zbGFzaChkaXIudmJhWzBdKSx0cnVlKTtcblx0XHRlbHNlIGlmKGRpci5kZWZhdWx0cyAmJiBkaXIuZGVmYXVsdHMuYmluID09PSBDVF9WQkEpIG91dC52YmFyYXcgPSBnZXR6aXBkYXRhKHppcCwgJ3hsL3ZiYVByb2plY3QuYmluJyx0cnVlKTtcblx0fVxuXHRyZXR1cm4gb3V0O1xufVxuXG4vKiBbTVMtT0ZGQ1JZUFRPXSAyLjEuMSAqL1xuZnVuY3Rpb24gcGFyc2VfeGxzeGNmYihjZmIsIF9vcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgb3B0cyA9IF9vcHRzIHx8IHt9O1xuXHR2YXIgZiA9ICdXb3JrYm9vaycsIGRhdGEgPSBDRkIuZmluZChjZmIsIGYpO1xuXHR0cnkge1xuXHRmID0gJy8hRGF0YVNwYWNlcy9WZXJzaW9uJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0Lyp2YXIgdmVyc2lvbiA9ICovcGFyc2VfRGF0YVNwYWNlVmVyc2lvbkluZm8oZGF0YS5jb250ZW50KTtcblxuXHQvKiAyLjMuNC4xICovXG5cdGYgPSAnLyFEYXRhU3BhY2VzL0RhdGFTcGFjZU1hcCc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdHZhciBkc20gPSBwYXJzZV9EYXRhU3BhY2VNYXAoZGF0YS5jb250ZW50KTtcblx0aWYoZHNtLmxlbmd0aCAhPT0gMSB8fCBkc21bMF0uY29tcHMubGVuZ3RoICE9PSAxIHx8IGRzbVswXS5jb21wc1swXS50ICE9PSAwIHx8IGRzbVswXS5uYW1lICE9PSBcIlN0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2VcIiB8fCBkc21bMF0uY29tcHNbMF0udiAhPT0gXCJFbmNyeXB0ZWRQYWNrYWdlXCIpXG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgYmFkIFwiICsgZik7XG5cblx0LyogMi4zLjQuMiAqL1xuXHRmID0gJy8hRGF0YVNwYWNlcy9EYXRhU3BhY2VJbmZvL1N0cm9uZ0VuY3J5cHRpb25EYXRhU3BhY2UnO1xuXHRkYXRhID0gQ0ZCLmZpbmQoY2ZiLCBmKTsgaWYoIWRhdGEgfHwgIWRhdGEuY29udGVudCkgdGhyb3cgbmV3IEVycm9yKFwiRUNNQS0zNzYgRW5jcnlwdGVkIGZpbGUgbWlzc2luZyBcIiArIGYpO1xuXHR2YXIgc2VkcyA9IHBhcnNlX0RhdGFTcGFjZURlZmluaXRpb24oZGF0YS5jb250ZW50KTtcblx0aWYoc2Vkcy5sZW5ndGggIT0gMSB8fCBzZWRzWzBdICE9IFwiU3Ryb25nRW5jcnlwdGlvblRyYW5zZm9ybVwiKVxuXHRcdHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIGJhZCBcIiArIGYpO1xuXG5cdC8qIDIuMy40LjMgKi9cblx0ZiA9ICcvIURhdGFTcGFjZXMvVHJhbnNmb3JtSW5mby9TdHJvbmdFbmNyeXB0aW9uVHJhbnNmb3JtLyFQcmltYXJ5Jztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblx0Lyp2YXIgaGRyID0gKi9wYXJzZV9QcmltYXJ5KGRhdGEuY29udGVudCk7XG5cdH0gY2F0Y2goZSkge31cblxuXHRmID0gJy9FbmNyeXB0aW9uSW5mbyc7XG5cdGRhdGEgPSBDRkIuZmluZChjZmIsIGYpOyBpZighZGF0YSB8fCAhZGF0YS5jb250ZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJFQ01BLTM3NiBFbmNyeXB0ZWQgZmlsZSBtaXNzaW5nIFwiICsgZik7XG5cdHZhciBlaW5mbyA9IHBhcnNlX0VuY3J5cHRpb25JbmZvKGRhdGEuY29udGVudCk7XG5cblx0LyogMi4zLjQuNCAqL1xuXHRmID0gJy9FbmNyeXB0ZWRQYWNrYWdlJztcblx0ZGF0YSA9IENGQi5maW5kKGNmYiwgZik7IGlmKCFkYXRhIHx8ICFkYXRhLmNvbnRlbnQpIHRocm93IG5ldyBFcnJvcihcIkVDTUEtMzc2IEVuY3J5cHRlZCBmaWxlIG1pc3NpbmcgXCIgKyBmKTtcblxuLypnbG9iYWwgZGVjcnlwdF9hZ2lsZSAqL1xuLyo6OiBkZWNsYXJlIHZhciBkZWNyeXB0X2FnaWxlOmFueTsgKi9cblx0aWYoZWluZm9bMF0gPT0gMHgwNCAmJiB0eXBlb2YgZGVjcnlwdF9hZ2lsZSAhPT0gJ3VuZGVmaW5lZCcpIHJldHVybiBkZWNyeXB0X2FnaWxlKGVpbmZvWzFdLCBkYXRhLmNvbnRlbnQsIG9wdHMucGFzc3dvcmQgfHwgXCJcIiwgb3B0cyk7XG4vKmdsb2JhbCBkZWNyeXB0X3N0ZDc2ICovXG4vKjo6IGRlY2xhcmUgdmFyIGRlY3J5cHRfc3RkNzY6YW55OyAqL1xuXHRpZihlaW5mb1swXSA9PSAweDAyICYmIHR5cGVvZiBkZWNyeXB0X3N0ZDc2ICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIGRlY3J5cHRfc3RkNzYoZWluZm9bMV0sIGRhdGEuY29udGVudCwgb3B0cy5wYXNzd29yZCB8fCBcIlwiLCBvcHRzKTtcblx0dGhyb3cgbmV3IEVycm9yKFwiRmlsZSBpcyBwYXNzd29yZC1wcm90ZWN0ZWRcIik7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3ppcCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpaSVAqLyB7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJvZHNcIikgcmV0dXJuIHdyaXRlX29kcyh3Yiwgb3B0cyk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJudW1iZXJzXCIpIHJldHVybiB3cml0ZV9udW1iZXJzX2l3YSh3Yiwgb3B0cyk7XG5cdGlmKG9wdHMuYm9va1R5cGUgPT0gXCJ4bHNiXCIpIHJldHVybiB3cml0ZV96aXBfeGxzeGIod2IsIG9wdHMpO1xuXHRyZXR1cm4gd3JpdGVfemlwX3hsc3god2IsIG9wdHMpO1xufVxuXG4vKiBYTFNYIGFuZCBYTFNCIHdyaXRpbmcgYXJlIHZlcnkgc2ltaWxhci4gIE9yaWdpbmFsbHkgdGhleSB3ZXJlIHVuaWZpZWQgaW4gb25lXG4gICBleHBvcnQgZnVuY3Rpb24uICBUaGlzIGlzIGhvcnJpYmxlIGZvciB0cmVlIHNoYWtpbmcgaW4gdGhlIGNvbW1vbiBjYXNlIChtb3N0XG4gICBhcHBsaWNhdGlvbnMgbmVlZCB0byBleHBvcnQgZmlsZXMgaW4gb25lIGZvcm1hdCkgc28gdGhpcyBmdW5jdGlvbiBzdXBwb3J0c1xuICAgYm90aCBmb3JtYXRzIHdoaWxlIHdyaXRlX3ppcF94bHN4IG9ubHkgaGFuZGxlcyBYTFNYICovXG5mdW5jdGlvbiB3cml0ZV96aXBfeGxzeGIod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6V3JpdGVPcHRzKi8pLyo6WklQKi8ge1xuXHRfc2hhcGVpZCA9IDEwMjQ7XG5cdGlmKHdiICYmICF3Yi5TU0YpIHtcblx0XHR3Yi5TU0YgPSBkdXAodGFibGVfZm10KTtcblx0fVxuXHRpZih3YiAmJiB3Yi5TU0YpIHtcblx0XHRtYWtlX3NzZigpOyBTU0ZfbG9hZF90YWJsZSh3Yi5TU0YpO1xuXHRcdC8vICRGbG93SWdub3JlXG5cdFx0b3B0cy5yZXZzc2YgPSBldmVydF9udW0od2IuU1NGKTsgb3B0cy5yZXZzc2Zbd2IuU1NGWzY1NTM1XV0gPSAwO1xuXHRcdG9wdHMuc3NmID0gd2IuU1NGO1xuXHR9XG5cdG9wdHMucmVscyA9IHt9OyBvcHRzLndicmVscyA9IHt9O1xuXHRvcHRzLlN0cmluZ3MgPSAvKjo6KCgqL1tdLyo6OiA6YW55KTpTU1QpKi87IG9wdHMuU3RyaW5ncy5Db3VudCA9IDA7IG9wdHMuU3RyaW5ncy5VbmlxdWUgPSAwO1xuXHRpZihicm93c2VyX2hhc19NYXApIG9wdHMucmV2U3RyaW5ncyA9IG5ldyBNYXAoKTtcblx0ZWxzZSB7IG9wdHMucmV2U3RyaW5ncyA9IHt9OyBvcHRzLnJldlN0cmluZ3MuZm9vID0gW107IGRlbGV0ZSBvcHRzLnJldlN0cmluZ3MuZm9vOyB9XG5cdHZhciB3YmV4dCA9IG9wdHMuYm9va1R5cGUgPT0gXCJ4bHNiXCIgPyBcImJpblwiIDogXCJ4bWxcIjtcblx0dmFyIHZiYWZtdCA9IFZCQUZNVFMuaW5kZXhPZihvcHRzLmJvb2tUeXBlKSA+IC0xO1xuXHR2YXIgY3QgPSBuZXdfY3QoKTtcblx0Zml4X3dyaXRlX29wdHMob3B0cyA9IG9wdHMgfHwge30pO1xuXHR2YXIgemlwID0gemlwX25ldygpO1xuXHR2YXIgZiA9IFwiXCIsIHJJZCA9IDA7XG5cblx0b3B0cy5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGYgPSBcImRvY1Byb3BzL2NvcmUueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2NvcmVfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuY29yZXByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMiwgZiwgUkVMUy5DT1JFX1BST1BTKTtcblxuXHQvKjo6aWYoIXdiLlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdGYgPSBcImRvY1Byb3BzL2FwcC54bWxcIjtcblx0aWYod2IuUHJvcHMgJiYgd2IuUHJvcHMuU2hlZXROYW1lcyl7LyogZW1wdHkgKi99XG5cdGVsc2UgaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5TaGVldHMpIHdiLlByb3BzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzO1xuXHRlbHNlIHtcblx0XHR2YXIgX3NuID0gW107XG5cdFx0Zm9yKHZhciBfaSA9IDA7IF9pIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrX2kpXG5cdFx0XHRpZigod2IuV29ya2Jvb2suU2hlZXRzW19pXXx8e30pLkhpZGRlbiAhPSAyKSBfc24ucHVzaCh3Yi5TaGVldE5hbWVzW19pXSk7XG5cdFx0d2IuUHJvcHMuU2hlZXROYW1lcyA9IF9zbjtcblx0fVxuXHR3Yi5Qcm9wcy5Xb3Jrc2hlZXRzID0gd2IuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGg7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2V4dF9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5leHRwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDMsIGYsIFJFTFMuRVhUX1BST1BTKTtcblxuXHRpZih3Yi5DdXN0cHJvcHMgIT09IHdiLlByb3BzICYmIGtleXMod2IuQ3VzdHByb3BzfHx7fSkubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcImRvY1Byb3BzL2N1c3RvbS54bWxcIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jdXN0X3Byb3BzKHdiLkN1c3Rwcm9wcywgb3B0cykpO1xuXHRcdGN0LmN1c3Rwcm9wcy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMucmVscywgNCwgZiwgUkVMUy5DVVNUX1BST1BTKTtcblx0fVxuXG5cdGZvcihySWQ9MTtySWQgPD0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrcklkKSB7XG5cdFx0dmFyIHdzcmVscyA9IHsnIWlkJzp7fX07XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbcklkLTFdXTtcblx0XHR2YXIgX3R5cGUgPSAod3MgfHwge30pW1wiIXR5cGVcIl0gfHwgXCJzaGVldFwiO1xuXHRcdHN3aXRjaChfdHlwZSkge1xuXHRcdGNhc2UgXCJjaGFydFwiOlxuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRmID0gXCJ4bC93b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd3MocklkLTEsIGYsIG9wdHMsIHdiLCB3c3JlbHMpKTtcblx0XHRcdGN0LnNoZWV0cy5wdXNoKGYpO1xuXHRcdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcIndvcmtzaGVldHMvc2hlZXRcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuV1NbMF0pO1xuXHRcdH1cblxuXHRcdGlmKHdzKSB7XG5cdFx0XHR2YXIgY29tbWVudHMgPSB3c1snIWNvbW1lbnRzJ107XG5cdFx0XHR2YXIgbmVlZF92bWwgPSBmYWxzZTtcblx0XHRcdHZhciBjZiA9IFwiXCI7XG5cdFx0XHRpZihjb21tZW50cyAmJiBjb21tZW50cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGNmID0gXCJ4bC9jb21tZW50c1wiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdFx0emlwX2FkZF9maWxlKHppcCwgY2YsIHdyaXRlX2NtbnQoY29tbWVudHMsIGNmLCBvcHRzKSk7XG5cdFx0XHRcdGN0LmNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRhZGRfcmVscyh3c3JlbHMsIC0xLCBcIi4uL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLkNNTlQpO1xuXHRcdFx0XHRuZWVkX3ZtbCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZih3c1snIWxlZ2FjeSddKSB7XG5cdFx0XHRcdGlmKG5lZWRfdm1sKSB6aXBfYWRkX2ZpbGUoemlwLCBcInhsL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChySWQpICsgXCIudm1sXCIsIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQsIHdzWychY29tbWVudHMnXSkpO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlIHdzWychY29tbWVudHMnXTtcblx0XHRcdGRlbGV0ZSB3c1snIWxlZ2FjeSddO1xuXHRcdH1cblxuXHRcdGlmKHdzcmVsc1snIWlkJ10ucklkMSkgemlwX2FkZF9maWxlKHppcCwgZ2V0X3JlbHNfcGF0aChmKSwgd3JpdGVfcmVscyh3c3JlbHMpKTtcblx0fVxuXG5cdGlmKG9wdHMuU3RyaW5ncyAhPSBudWxsICYmIG9wdHMuU3RyaW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwieGwvc2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0O1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3NzdChvcHRzLlN0cmluZ3MsIGYsIG9wdHMpKTtcblx0XHRjdC5zdHJzLnB1c2goZik7XG5cdFx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInNoYXJlZFN0cmluZ3MuXCIgKyB3YmV4dCwgUkVMUy5TU1QpO1xuXHR9XG5cblx0ZiA9IFwieGwvd29ya2Jvb2suXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd2Iod2IsIGYsIG9wdHMpKTtcblx0Y3Qud29ya2Jvb2tzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMSwgZiwgUkVMUy5XQik7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCB0aGVtZXMgKi9cblxuXHRmID0gXCJ4bC90aGVtZS90aGVtZTEueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3RoZW1lKHdiLlRoZW1lcywgb3B0cykpO1xuXHRjdC50aGVtZXMucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy53YnJlbHMsIC0xLCBcInRoZW1lL3RoZW1lMS54bWxcIiwgUkVMUy5USEVNRSk7XG5cblx0LyogVE9ETzogc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdlbnQgd2l0aCBzdHlsZXMgKi9cblxuXHRmID0gXCJ4bC9zdHlsZXMuXCIgKyB3YmV4dDtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfc3R5KHdiLCBmLCBvcHRzKSk7XG5cdGN0LnN0eWxlcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic3R5bGVzLlwiICsgd2JleHQsIFJFTFMuU1RZKTtcblxuXHRpZih3Yi52YmFyYXcgJiYgdmJhZm10KSB7XG5cdFx0ZiA9IFwieGwvdmJhUHJvamVjdC5iaW5cIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3Yi52YmFyYXcpO1xuXHRcdGN0LnZiYS5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ2YmFQcm9qZWN0LmJpblwiLCBSRUxTLlZCQSk7XG5cdH1cblxuXHRmID0gXCJ4bC9tZXRhZGF0YS5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV94bG1ldGEoZikpO1xuXHRjdC5tZXRhZGF0YS5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwibWV0YWRhdGEuXCIgKyB3YmV4dCwgUkVMUy5YTE1FVEEpO1xuXG5cdHppcF9hZGRfZmlsZSh6aXAsIFwiW0NvbnRlbnRfVHlwZXNdLnhtbFwiLCB3cml0ZV9jdChjdCwgb3B0cykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAnX3JlbHMvLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMucmVscykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAneGwvX3JlbHMvd29ya2Jvb2suJyArIHdiZXh0ICsgJy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLndicmVscykpO1xuXG5cdGRlbGV0ZSBvcHRzLnJldnNzZjsgZGVsZXRlIG9wdHMuc3NmO1xuXHRyZXR1cm4gemlwO1xufVxuXG5mdW5jdGlvbiB3cml0ZV96aXBfeGxzeCh3Yi8qOldvcmtib29rKi8sIG9wdHMvKjpXcml0ZU9wdHMqLykvKjpaSVAqLyB7XG5cdF9zaGFwZWlkID0gMTAyNDtcblx0aWYod2IgJiYgIXdiLlNTRikge1xuXHRcdHdiLlNTRiA9IGR1cCh0YWJsZV9mbXQpO1xuXHR9XG5cdGlmKHdiICYmIHdiLlNTRikge1xuXHRcdG1ha2Vfc3NmKCk7IFNTRl9sb2FkX3RhYmxlKHdiLlNTRik7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRvcHRzLnJldnNzZiA9IGV2ZXJ0X251bSh3Yi5TU0YpOyBvcHRzLnJldnNzZlt3Yi5TU0ZbNjU1MzVdXSA9IDA7XG5cdFx0b3B0cy5zc2YgPSB3Yi5TU0Y7XG5cdH1cblx0b3B0cy5yZWxzID0ge307IG9wdHMud2JyZWxzID0ge307XG5cdG9wdHMuU3RyaW5ncyA9IC8qOjooKCovW10vKjo6IDphbnkpOlNTVCkqLzsgb3B0cy5TdHJpbmdzLkNvdW50ID0gMDsgb3B0cy5TdHJpbmdzLlVuaXF1ZSA9IDA7XG5cdGlmKGJyb3dzZXJfaGFzX01hcCkgb3B0cy5yZXZTdHJpbmdzID0gbmV3IE1hcCgpO1xuXHRlbHNlIHsgb3B0cy5yZXZTdHJpbmdzID0ge307IG9wdHMucmV2U3RyaW5ncy5mb28gPSBbXTsgZGVsZXRlIG9wdHMucmV2U3RyaW5ncy5mb287IH1cblx0dmFyIHdiZXh0ID0gXCJ4bWxcIjtcblx0dmFyIHZiYWZtdCA9IFZCQUZNVFMuaW5kZXhPZihvcHRzLmJvb2tUeXBlKSA+IC0xO1xuXHR2YXIgY3QgPSBuZXdfY3QoKTtcblx0Zml4X3dyaXRlX29wdHMob3B0cyA9IG9wdHMgfHwge30pO1xuXHR2YXIgemlwID0gemlwX25ldygpO1xuXHR2YXIgZiA9IFwiXCIsIHJJZCA9IDA7XG5cblx0b3B0cy5jZWxsWGZzID0gW107XG5cdGdldF9jZWxsX3N0eWxlKG9wdHMuY2VsbFhmcywge30sIHtyZXZzc2Y6e1wiR2VuZXJhbFwiOjB9fSk7XG5cblx0aWYoIXdiLlByb3BzKSB3Yi5Qcm9wcyA9IHt9O1xuXG5cdGYgPSBcImRvY1Byb3BzL2NvcmUueG1sXCI7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2NvcmVfcHJvcHMod2IuUHJvcHMsIG9wdHMpKTtcblx0Y3QuY29yZXByb3BzLnB1c2goZik7XG5cdGFkZF9yZWxzKG9wdHMucmVscywgMiwgZiwgUkVMUy5DT1JFX1BST1BTKTtcblxuXHQvKjo6aWYoIXdiLlByb3BzKSB0aHJvdyBcInVucmVhY2hhYmxlXCI7ICovXG5cdGYgPSBcImRvY1Byb3BzL2FwcC54bWxcIjtcblx0aWYod2IuUHJvcHMgJiYgd2IuUHJvcHMuU2hlZXROYW1lcyl7LyogZW1wdHkgKi99XG5cdGVsc2UgaWYoIXdiLldvcmtib29rIHx8ICF3Yi5Xb3JrYm9vay5TaGVldHMpIHdiLlByb3BzLlNoZWV0TmFtZXMgPSB3Yi5TaGVldE5hbWVzO1xuXHRlbHNlIHtcblx0XHR2YXIgX3NuID0gW107XG5cdFx0Zm9yKHZhciBfaSA9IDA7IF9pIDwgd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrX2kpXG5cdFx0XHRpZigod2IuV29ya2Jvb2suU2hlZXRzW19pXXx8e30pLkhpZGRlbiAhPSAyKSBfc24ucHVzaCh3Yi5TaGVldE5hbWVzW19pXSk7XG5cdFx0d2IuUHJvcHMuU2hlZXROYW1lcyA9IF9zbjtcblx0fVxuXHR3Yi5Qcm9wcy5Xb3Jrc2hlZXRzID0gd2IuUHJvcHMuU2hlZXROYW1lcy5sZW5ndGg7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX2V4dF9wcm9wcyh3Yi5Qcm9wcywgb3B0cykpO1xuXHRjdC5leHRwcm9wcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLnJlbHMsIDMsIGYsIFJFTFMuRVhUX1BST1BTKTtcblxuXHRpZih3Yi5DdXN0cHJvcHMgIT09IHdiLlByb3BzICYmIGtleXMod2IuQ3VzdHByb3BzfHx7fSkubGVuZ3RoID4gMCkge1xuXHRcdGYgPSBcImRvY1Byb3BzL2N1c3RvbS54bWxcIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9jdXN0X3Byb3BzKHdiLkN1c3Rwcm9wcywgb3B0cykpO1xuXHRcdGN0LmN1c3Rwcm9wcy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMucmVscywgNCwgZiwgUkVMUy5DVVNUX1BST1BTKTtcblx0fVxuXG5cdHZhciBwZW9wbGUgPSBbXCJTaGVldEo1XCJdO1xuXHRvcHRzLnRjaWQgPSAwO1xuXG5cdGZvcihySWQ9MTtySWQgPD0gd2IuU2hlZXROYW1lcy5sZW5ndGg7ICsrcklkKSB7XG5cdFx0dmFyIHdzcmVscyA9IHsnIWlkJzp7fX07XG5cdFx0dmFyIHdzID0gd2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbcklkLTFdXTtcblx0XHR2YXIgX3R5cGUgPSAod3MgfHwge30pW1wiIXR5cGVcIl0gfHwgXCJzaGVldFwiO1xuXHRcdHN3aXRjaChfdHlwZSkge1xuXHRcdGNhc2UgXCJjaGFydFwiOlxuXHRcdFx0LyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRmID0gXCJ4bC93b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfd3NfeG1sKHJJZC0xLCBvcHRzLCB3Yiwgd3NyZWxzKSk7XG5cdFx0XHRjdC5zaGVldHMucHVzaChmKTtcblx0XHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ3b3Jrc2hlZXRzL3NoZWV0XCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLldTWzBdKTtcblx0XHR9XG5cblx0XHRpZih3cykge1xuXHRcdFx0dmFyIGNvbW1lbnRzID0gd3NbJyFjb21tZW50cyddO1xuXHRcdFx0dmFyIG5lZWRfdm1sID0gZmFsc2U7XG5cdFx0XHR2YXIgY2YgPSBcIlwiO1xuXHRcdFx0aWYoY29tbWVudHMgJiYgY29tbWVudHMubGVuZ3RoID4gMCkge1xuXHRcdFx0XHR2YXIgbmVlZHRjID0gZmFsc2U7XG5cdFx0XHRcdGNvbW1lbnRzLmZvckVhY2goZnVuY3Rpb24oY2Fycikge1xuXHRcdFx0XHRcdGNhcnJbMV0uZm9yRWFjaChmdW5jdGlvbihjKSB7IGlmKGMuVCA9PSB0cnVlKSBuZWVkdGMgPSB0cnVlOyB9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGlmKG5lZWR0Yykge1xuXHRcdFx0XHRcdGNmID0gXCJ4bC90aHJlYWRlZENvbW1lbnRzL3RocmVhZGVkQ29tbWVudFwiICsgcklkICsgXCIuXCIgKyB3YmV4dDtcblx0XHRcdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBjZiwgd3JpdGVfdGNtbnRfeG1sKGNvbW1lbnRzLCBwZW9wbGUsIG9wdHMpKTtcblx0XHRcdFx0XHRjdC50aHJlYWRlZGNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRcdGFkZF9yZWxzKHdzcmVscywgLTEsIFwiLi4vdGhyZWFkZWRDb21tZW50cy90aHJlYWRlZENvbW1lbnRcIiArIHJJZCArIFwiLlwiICsgd2JleHQsIFJFTFMuVENNTlQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y2YgPSBcInhsL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0O1xuXHRcdFx0XHR6aXBfYWRkX2ZpbGUoemlwLCBjZiwgd3JpdGVfY29tbWVudHNfeG1sKGNvbW1lbnRzLCBvcHRzKSk7XG5cdFx0XHRcdGN0LmNvbW1lbnRzLnB1c2goY2YpO1xuXHRcdFx0XHRhZGRfcmVscyh3c3JlbHMsIC0xLCBcIi4uL2NvbW1lbnRzXCIgKyBySWQgKyBcIi5cIiArIHdiZXh0LCBSRUxTLkNNTlQpO1xuXHRcdFx0XHRuZWVkX3ZtbCA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHRpZih3c1snIWxlZ2FjeSddKSB7XG5cdFx0XHRcdGlmKG5lZWRfdm1sKSB6aXBfYWRkX2ZpbGUoemlwLCBcInhsL2RyYXdpbmdzL3ZtbERyYXdpbmdcIiArIChySWQpICsgXCIudm1sXCIsIHdyaXRlX2NvbW1lbnRzX3ZtbChySWQsIHdzWychY29tbWVudHMnXSkpO1xuXHRcdFx0fVxuXHRcdFx0ZGVsZXRlIHdzWychY29tbWVudHMnXTtcblx0XHRcdGRlbGV0ZSB3c1snIWxlZ2FjeSddO1xuXHRcdH1cblxuXHRcdGlmKHdzcmVsc1snIWlkJ10ucklkMSkgemlwX2FkZF9maWxlKHppcCwgZ2V0X3JlbHNfcGF0aChmKSwgd3JpdGVfcmVscyh3c3JlbHMpKTtcblx0fVxuXG5cdGlmKG9wdHMuU3RyaW5ncyAhPSBudWxsICYmIG9wdHMuU3RyaW5ncy5sZW5ndGggPiAwKSB7XG5cdFx0ZiA9IFwieGwvc2hhcmVkU3RyaW5ncy5cIiArIHdiZXh0O1xuXHRcdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3NzdF94bWwob3B0cy5TdHJpbmdzLCBvcHRzKSk7XG5cdFx0Y3Quc3Rycy5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJzaGFyZWRTdHJpbmdzLlwiICsgd2JleHQsIFJFTFMuU1NUKTtcblx0fVxuXG5cdGYgPSBcInhsL3dvcmtib29rLlwiICsgd2JleHQ7XG5cdHppcF9hZGRfZmlsZSh6aXAsIGYsIHdyaXRlX3diX3htbCh3Yiwgb3B0cykpO1xuXHRjdC53b3JrYm9va3MucHVzaChmKTtcblx0YWRkX3JlbHMob3B0cy5yZWxzLCAxLCBmLCBSRUxTLldCKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHRoZW1lcyAqL1xuXG5cdGYgPSBcInhsL3RoZW1lL3RoZW1lMS54bWxcIjtcblx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfdGhlbWUod2IuVGhlbWVzLCBvcHRzKSk7XG5cdGN0LnRoZW1lcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwidGhlbWUvdGhlbWUxLnhtbFwiLCBSRUxTLlRIRU1FKTtcblxuXHQvKiBUT0RPOiBzb21ldGhpbmcgbW9yZSBpbnRlbGxpZ2VudCB3aXRoIHN0eWxlcyAqL1xuXG5cdGYgPSBcInhsL3N0eWxlcy5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV9zdHlfeG1sKHdiLCBvcHRzKSk7XG5cdGN0LnN0eWxlcy5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwic3R5bGVzLlwiICsgd2JleHQsIFJFTFMuU1RZKTtcblxuXHRpZih3Yi52YmFyYXcgJiYgdmJhZm10KSB7XG5cdFx0ZiA9IFwieGwvdmJhUHJvamVjdC5iaW5cIjtcblx0XHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3Yi52YmFyYXcpO1xuXHRcdGN0LnZiYS5wdXNoKGYpO1xuXHRcdGFkZF9yZWxzKG9wdHMud2JyZWxzLCAtMSwgXCJ2YmFQcm9qZWN0LmJpblwiLCBSRUxTLlZCQSk7XG5cdH1cblxuXHRmID0gXCJ4bC9tZXRhZGF0YS5cIiArIHdiZXh0O1xuXHR6aXBfYWRkX2ZpbGUoemlwLCBmLCB3cml0ZV94bG1ldGFfeG1sKCkpO1xuXHRjdC5tZXRhZGF0YS5wdXNoKGYpO1xuXHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwibWV0YWRhdGEuXCIgKyB3YmV4dCwgUkVMUy5YTE1FVEEpO1xuXG5cdGlmKHBlb3BsZS5sZW5ndGggPiAxKSB7XG5cdFx0ZiA9IFwieGwvcGVyc29ucy9wZXJzb24ueG1sXCI7XG5cdFx0emlwX2FkZF9maWxlKHppcCwgZiwgd3JpdGVfcGVvcGxlX3htbChwZW9wbGUsIG9wdHMpKTtcblx0XHRjdC5wZW9wbGUucHVzaChmKTtcblx0XHRhZGRfcmVscyhvcHRzLndicmVscywgLTEsIFwicGVyc29ucy9wZXJzb24ueG1sXCIsIFJFTFMuUEVPUExFKTtcblx0fVxuXG5cdHppcF9hZGRfZmlsZSh6aXAsIFwiW0NvbnRlbnRfVHlwZXNdLnhtbFwiLCB3cml0ZV9jdChjdCwgb3B0cykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAnX3JlbHMvLnJlbHMnLCB3cml0ZV9yZWxzKG9wdHMucmVscykpO1xuXHR6aXBfYWRkX2ZpbGUoemlwLCAneGwvX3JlbHMvd29ya2Jvb2suJyArIHdiZXh0ICsgJy5yZWxzJywgd3JpdGVfcmVscyhvcHRzLndicmVscykpO1xuXG5cdGRlbGV0ZSBvcHRzLnJldnNzZjsgZGVsZXRlIG9wdHMuc3NmO1xuXHRyZXR1cm4gemlwO1xufVxuXG5mdW5jdGlvbiBmaXJzdGJ5dGUoZi8qOlJhd0RhdGEqLyxvLyo6P1R5cGVPcHRzKi8pLyo6QXJyYXk8bnVtYmVyPiovIHtcblx0dmFyIHggPSBcIlwiO1xuXHRzd2l0Y2goKG98fHt9KS50eXBlIHx8IFwiYmFzZTY0XCIpIHtcblx0XHRjYXNlICdidWZmZXInOiByZXR1cm4gW2ZbMF0sIGZbMV0sIGZbMl0sIGZbM10sIGZbNF0sIGZbNV0sIGZbNl0sIGZbN11dO1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IHggPSBCYXNlNjRfZGVjb2RlKGYuc2xpY2UoMCwxMikpOyBicmVhaztcblx0XHRjYXNlICdiaW5hcnknOiB4ID0gZjsgYnJlYWs7XG5cdFx0Y2FzZSAnYXJyYXknOiAgcmV0dXJuIFtmWzBdLCBmWzFdLCBmWzJdLCBmWzNdLCBmWzRdLCBmWzVdLCBmWzZdLCBmWzddXTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIChvICYmIG8udHlwZSB8fCBcInVuZGVmaW5lZFwiKSk7XG5cdH1cblx0cmV0dXJuIFt4LmNoYXJDb2RlQXQoMCksIHguY2hhckNvZGVBdCgxKSwgeC5jaGFyQ29kZUF0KDIpLCB4LmNoYXJDb2RlQXQoMyksIHguY2hhckNvZGVBdCg0KSwgeC5jaGFyQ29kZUF0KDUpLCB4LmNoYXJDb2RlQXQoNiksIHguY2hhckNvZGVBdCg3KV07XG59XG5cbmZ1bmN0aW9uIHJlYWRfY2ZiKGNmYi8qOkNGQkNvbnRhaW5lciovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHRpZihDRkIuZmluZChjZmIsIFwiRW5jcnlwdGVkUGFja2FnZVwiKSkgcmV0dXJuIHBhcnNlX3hsc3hjZmIoY2ZiLCBvcHRzKTtcblx0cmV0dXJuIHBhcnNlX3hsc2NmYihjZmIsIG9wdHMpO1xufVxuXG5mdW5jdGlvbiByZWFkX3ppcChkYXRhLyo6UmF3RGF0YSovLCBvcHRzLyo6P1BhcnNlT3B0cyovKS8qOldvcmtib29rKi8ge1xuXHR2YXIgemlwLCBkID0gZGF0YTtcblx0dmFyIG8gPSBvcHRzfHx7fTtcblx0aWYoIW8udHlwZSkgby50eXBlID0gKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSA/IFwiYnVmZmVyXCIgOiBcImJhc2U2NFwiO1xuXHR6aXAgPSB6aXBfcmVhZChkLCBvKTtcblx0cmV0dXJuIHBhcnNlX3ppcCh6aXAsIG8pO1xufVxuXG5mdW5jdGlvbiByZWFkX3BsYWludGV4dChkYXRhLyo6c3RyaW5nKi8sIG8vKjpQYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0dmFyIGkgPSAwO1xuXHRtYWluOiB3aGlsZShpIDwgZGF0YS5sZW5ndGgpIHN3aXRjaChkYXRhLmNoYXJDb2RlQXQoaSkpIHtcblx0XHRjYXNlIDB4MEE6IGNhc2UgMHgwRDogY2FzZSAweDIwOiArK2k7IGJyZWFrO1xuXHRcdGNhc2UgMHgzQzogcmV0dXJuIHBhcnNlX3hsbWwoZGF0YS5zbGljZShpKSxvKTtcblx0XHRkZWZhdWx0OiBicmVhayBtYWluO1xuXHR9XG5cdHJldHVybiBQUk4udG9fd29ya2Jvb2soZGF0YSwgbyk7XG59XG5cbmZ1bmN0aW9uIHJlYWRfcGxhaW50ZXh0X3JhdyhkYXRhLyo6UmF3RGF0YSovLCBvLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBzdHIgPSBcIlwiLCBieXRlcyA9IGZpcnN0Ynl0ZShkYXRhLCBvKTtcblx0c3dpdGNoKG8udHlwZSkge1xuXHRcdGNhc2UgJ2Jhc2U2NCc6IHN0ciA9IEJhc2U2NF9kZWNvZGUoZGF0YSk7IGJyZWFrO1xuXHRcdGNhc2UgJ2JpbmFyeSc6IHN0ciA9IGRhdGE7IGJyZWFrO1xuXHRcdGNhc2UgJ2J1ZmZlcic6IHN0ciA9IGRhdGEudG9TdHJpbmcoJ2JpbmFyeScpOyBicmVhaztcblx0XHRjYXNlICdhcnJheSc6IHN0ciA9IGNjMnN0cihkYXRhKTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdGlmKGJ5dGVzWzBdID09IDB4RUYgJiYgYnl0ZXNbMV0gPT0gMHhCQiAmJiBieXRlc1syXSA9PSAweEJGKSBzdHIgPSB1dGY4cmVhZChzdHIpO1xuXHRvLnR5cGUgPSBcImJpbmFyeVwiO1xuXHRyZXR1cm4gcmVhZF9wbGFpbnRleHQoc3RyLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZF91dGYxNihkYXRhLyo6UmF3RGF0YSovLCBvLyo6UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBkID0gZGF0YTtcblx0aWYoby50eXBlID09ICdiYXNlNjQnKSBkID0gQmFzZTY0X2RlY29kZShkKTtcblx0ZCA9ICRjcHRhYmxlLnV0aWxzLmRlY29kZSgxMjAwLCBkLnNsaWNlKDIpLCAnc3RyJyk7XG5cdG8udHlwZSA9IFwiYmluYXJ5XCI7XG5cdHJldHVybiByZWFkX3BsYWludGV4dChkLCBvKTtcbn1cblxuZnVuY3Rpb24gYnN0cmlmeShkYXRhLyo6c3RyaW5nKi8pLyo6c3RyaW5nKi8ge1xuXHRyZXR1cm4gIWRhdGEubWF0Y2goL1teXFx4MDAtXFx4N0ZdLykgPyBkYXRhIDogdXRmOHdyaXRlKGRhdGEpO1xufVxuXG5mdW5jdGlvbiByZWFkX3BybihkYXRhLCBkLCBvLCBzdHIpIHtcblx0aWYoc3RyKSB7IG8udHlwZSA9IFwic3RyaW5nXCI7IHJldHVybiBQUk4udG9fd29ya2Jvb2soZGF0YSwgbyk7IH1cblx0cmV0dXJuIFBSTi50b193b3JrYm9vayhkLCBvKTtcbn1cblxuZnVuY3Rpb24gcmVhZFN5bmMoZGF0YS8qOlJhd0RhdGEqLywgb3B0cy8qOj9QYXJzZU9wdHMqLykvKjpXb3JrYm9vayovIHtcblx0cmVzZXRfY3AoKTtcblx0dmFyIG8gPSBvcHRzfHx7fTtcblx0aWYodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiBkYXRhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHJldHVybiByZWFkU3luYyhuZXcgVWludDhBcnJheShkYXRhKSwgKG8gPSBkdXAobyksIG8udHlwZSA9IFwiYXJyYXlcIiwgbykpO1xuXHRpZih0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgJiYgZGF0YSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkgJiYgIW8udHlwZSkgby50eXBlID0gdHlwZW9mIERlbm8gIT09IFwidW5kZWZpbmVkXCIgPyBcImJ1ZmZlclwiIDogXCJhcnJheVwiO1xuXHR2YXIgZCA9IGRhdGEsIG4gPSBbMCwwLDAsMF0sIHN0ciA9IGZhbHNlO1xuXHRpZihvLmNlbGxTdHlsZXMpIHsgby5jZWxsTkYgPSB0cnVlOyBvLnNoZWV0U3R1YnMgPSB0cnVlOyB9XG5cdF9zc2ZvcHRzID0ge307XG5cdGlmKG8uZGF0ZU5GKSBfc3Nmb3B0cy5kYXRlTkYgPSBvLmRhdGVORjtcblx0aWYoIW8udHlwZSkgby50eXBlID0gKGhhc19idWYgJiYgQnVmZmVyLmlzQnVmZmVyKGRhdGEpKSA/IFwiYnVmZmVyXCIgOiBcImJhc2U2NFwiO1xuXHRpZihvLnR5cGUgPT0gXCJmaWxlXCIpIHsgby50eXBlID0gaGFzX2J1ZiA/IFwiYnVmZmVyXCIgOiBcImJpbmFyeVwiOyBkID0gcmVhZF9iaW5hcnkoZGF0YSk7IGlmKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyAmJiAhaGFzX2J1Zikgby50eXBlID0gXCJhcnJheVwiOyB9XG5cdGlmKG8udHlwZSA9PSBcInN0cmluZ1wiKSB7IHN0ciA9IHRydWU7IG8udHlwZSA9IFwiYmluYXJ5XCI7IG8uY29kZXBhZ2UgPSA2NTAwMTsgZCA9IGJzdHJpZnkoZGF0YSk7IH1cblx0aWYoby50eXBlID09ICdhcnJheScgJiYgdHlwZW9mIFVpbnQ4QXJyYXkgIT09ICd1bmRlZmluZWQnICYmIGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5ICYmIHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHQvLyAkRmxvd0lnbm9yZVxuXHRcdHZhciBhYj1uZXcgQXJyYXlCdWZmZXIoMyksIHZ1PW5ldyBVaW50OEFycmF5KGFiKTsgdnUuZm9vPVwiYmFyXCI7XG5cdFx0Ly8gJEZsb3dJZ25vcmVcblx0XHRpZighdnUuZm9vKSB7bz1kdXAobyk7IG8udHlwZT0nYXJyYXknOyByZXR1cm4gcmVhZFN5bmMoYWIyYShkKSwgbyk7fVxuXHR9XG5cdHN3aXRjaCgobiA9IGZpcnN0Ynl0ZShkLCBvKSlbMF0pIHtcblx0XHRjYXNlIDB4RDA6IGlmKG5bMV0gPT09IDB4Q0YgJiYgblsyXSA9PT0gMHgxMSAmJiBuWzNdID09PSAweEUwICYmIG5bNF0gPT09IDB4QTEgJiYgbls1XSA9PT0gMHhCMSAmJiBuWzZdID09PSAweDFBICYmIG5bN10gPT09IDB4RTEpIHJldHVybiByZWFkX2NmYihDRkIucmVhZChkLCBvKSwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHgwOTogaWYoblsxXSA8PSAweDA4KSByZXR1cm4gcGFyc2VfeGxzY2ZiKGQsIG8pOyBicmVhaztcblx0XHRjYXNlIDB4M0M6IHJldHVybiBwYXJzZV94bG1sKGQsIG8pO1xuXHRcdGNhc2UgMHg0OTpcblx0XHRcdGlmKG5bMV0gPT09IDB4NDkgJiYgblsyXSA9PT0gMHgyYSAmJiBuWzNdID09PSAweDAwKSB0aHJvdyBuZXcgRXJyb3IoXCJUSUZGIEltYWdlIEZpbGUgaXMgbm90IGEgc3ByZWFkc2hlZXRcIik7XG5cdFx0XHRpZihuWzFdID09PSAweDQ0KSByZXR1cm4gcmVhZF93Yl9JRChkLCBvKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMHg1NDogaWYoblsxXSA9PT0gMHg0MSAmJiBuWzJdID09PSAweDQyICYmIG5bM10gPT09IDB4NEMpIHJldHVybiBESUYudG9fd29ya2Jvb2soZCwgbyk7IGJyZWFrO1xuXHRcdGNhc2UgMHg1MDogcmV0dXJuIChuWzFdID09PSAweDRCICYmIG5bMl0gPCAweDA5ICYmIG5bM10gPCAweDA5KSA/IHJlYWRfemlwKGQsIG8pIDogcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKTtcblx0XHRjYXNlIDB4RUY6IHJldHVybiBuWzNdID09PSAweDNDID8gcGFyc2VfeGxtbChkLCBvKSA6IHJlYWRfcHJuKGRhdGEsIGQsIG8sIHN0cik7XG5cdFx0Y2FzZSAweEZGOlxuXHRcdFx0aWYoblsxXSA9PT0gMHhGRSkgeyByZXR1cm4gcmVhZF91dGYxNihkLCBvKTsgfVxuXHRcdFx0ZWxzZSBpZihuWzFdID09PSAweDAwICYmIG5bMl0gPT09IDB4MDIgJiYgblszXSA9PT0gMHgwMCkgcmV0dXJuIFdLXy50b193b3JrYm9vayhkLCBvKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgMHgwMDpcblx0XHRcdGlmKG5bMV0gPT09IDB4MDApIHtcblx0XHRcdFx0aWYoblsyXSA+PSAweDAyICYmIG5bM10gPT09IDB4MDApIHJldHVybiBXS18udG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0XHRcdGlmKG5bMl0gPT09IDB4MDAgJiYgKG5bM10gPT09IDB4MDggfHwgblszXSA9PT0gMHgwOSkpIHJldHVybiBXS18udG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIDB4MDM6IGNhc2UgMHg4MzogY2FzZSAweDhCOiBjYXNlIDB4OEM6IHJldHVybiBEQkYudG9fd29ya2Jvb2soZCwgbyk7XG5cdFx0Y2FzZSAweDdCOiBpZihuWzFdID09PSAweDVDICYmIG5bMl0gPT09IDB4NzIgJiYgblszXSA9PT0gMHg3NCkgcmV0dXJuIFJURi50b193b3JrYm9vayhkLCBvKTsgYnJlYWs7XG5cdFx0Y2FzZSAweDBBOiBjYXNlIDB4MEQ6IGNhc2UgMHgyMDogcmV0dXJuIHJlYWRfcGxhaW50ZXh0X3JhdyhkLCBvKTtcblx0XHRjYXNlIDB4ODk6IGlmKG5bMV0gPT09IDB4NTAgJiYgblsyXSA9PT0gMHg0RSAmJiBuWzNdID09PSAweDQ3KSB0aHJvdyBuZXcgRXJyb3IoXCJQTkcgSW1hZ2UgRmlsZSBpcyBub3QgYSBzcHJlYWRzaGVldFwiKTsgYnJlYWs7XG5cdH1cblx0aWYoREJGX1NVUFBPUlRFRF9WRVJTSU9OUy5pbmRleE9mKG5bMF0pID4gLTEgJiYgblsyXSA8PSAxMiAmJiBuWzNdIDw9IDMxKSByZXR1cm4gREJGLnRvX3dvcmtib29rKGQsIG8pO1xuXHRyZXR1cm4gcmVhZF9wcm4oZGF0YSwgZCwgbywgc3RyKTtcbn1cblxuZnVuY3Rpb24gcmVhZEZpbGVTeW5jKGZpbGVuYW1lLyo6c3RyaW5nKi8sIG9wdHMvKjo/UGFyc2VPcHRzKi8pLyo6V29ya2Jvb2sqLyB7XG5cdHZhciBvID0gb3B0c3x8e307IG8udHlwZSA9ICdmaWxlJztcblx0cmV0dXJuIHJlYWRTeW5jKGZpbGVuYW1lLCBvKTtcbn1cbmZ1bmN0aW9uIHdyaXRlX2NmYl9jdHIoY2ZiLyo6Q0ZCQ29udGFpbmVyKi8sIG8vKjpXcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IGNhc2UgXCJiaW5hcnlcIjogYnJlYWs7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiBjYXNlIFwiYXJyYXlcIjogby50eXBlID0gXCJcIjsgYnJlYWs7XG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG8uZmlsZSwgQ0ZCLndyaXRlKGNmYiwge3R5cGU6aGFzX2J1ZiA/ICdidWZmZXInIDogXCJcIn0pKTtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHRocm93IG5ldyBFcnJvcihcIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICdcIiArIG8uYm9va1R5cGUgKyBcIicgZmlsZXNcIik7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdHJldHVybiBDRkIud3JpdGUoY2ZiLCBvKTtcbn1cblxuLyo6OiBkZWNsYXJlIHZhciBlbmNyeXB0X2FnaWxlOmFueTsgKi9cbmZ1bmN0aW9uIHdyaXRlX3ppcF90eXBlKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0dmFyIHogPSB3cml0ZV96aXAod2IsIG8pO1xuXHRyZXR1cm4gd3JpdGVfemlwX2Rlbm91ZW1lbnQoeiwgbyk7XG59XG5mdW5jdGlvbiB3cml0ZV96aXBfdHlwZVhMU1god2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHR2YXIgeiA9IHdyaXRlX3ppcF94bHN4KHdiLCBvKTtcblx0cmV0dXJuIHdyaXRlX3ppcF9kZW5vdWVtZW50KHosIG8pO1xufVxuZnVuY3Rpb24gd3JpdGVfemlwX2Rlbm91ZW1lbnQoei8qOmFueSovLCBvLyo6P1dyaXRlT3B0cyovKS8qOmFueSovIHtcblx0dmFyIG9vcHRzID0ge307XG5cdHZhciBmdHlwZSA9IGhhc19idWYgPyBcIm5vZGVidWZmZXJcIiA6ICh0eXBlb2YgVWludDhBcnJheSAhPT0gXCJ1bmRlZmluZWRcIiA/IFwiYXJyYXlcIiA6IFwic3RyaW5nXCIpO1xuXHRpZihvLmNvbXByZXNzaW9uKSBvb3B0cy5jb21wcmVzc2lvbiA9ICdERUZMQVRFJztcblx0aWYoby5wYXNzd29yZCkgb29wdHMudHlwZSA9IGZ0eXBlO1xuXHRlbHNlIHN3aXRjaChvLnR5cGUpIHtcblx0XHRjYXNlIFwiYmFzZTY0XCI6IG9vcHRzLnR5cGUgPSBcImJhc2U2NFwiOyBicmVhaztcblx0XHRjYXNlIFwiYmluYXJ5XCI6IG9vcHRzLnR5cGUgPSBcInN0cmluZ1wiOyBicmVhaztcblx0XHRjYXNlIFwic3RyaW5nXCI6IHRocm93IG5ldyBFcnJvcihcIidzdHJpbmcnIG91dHB1dCB0eXBlIGludmFsaWQgZm9yICdcIiArIG8uYm9va1R5cGUgKyBcIicgZmlsZXNcIik7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOlxuXHRcdGNhc2UgXCJmaWxlXCI6IG9vcHRzLnR5cGUgPSBmdHlwZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvLnR5cGUpO1xuXHR9XG5cdHZhciBvdXQgPSB6LkZ1bGxQYXRocyA/IENGQi53cml0ZSh6LCB7ZmlsZVR5cGU6XCJ6aXBcIiwgdHlwZTogLyo6OigqL3tcIm5vZGVidWZmZXJcIjogXCJidWZmZXJcIiwgXCJzdHJpbmdcIjogXCJiaW5hcnlcIn0vKjo6IDphbnkpKi9bb29wdHMudHlwZV0gfHwgb29wdHMudHlwZSwgY29tcHJlc3Npb246ICEhby5jb21wcmVzc2lvbn0pIDogei5nZW5lcmF0ZShvb3B0cyk7XG5cdGlmKHR5cGVvZiBEZW5vICE9PSBcInVuZGVmaW5lZFwiKSB7XG5cdFx0aWYodHlwZW9mIG91dCA9PSBcInN0cmluZ1wiKSB7XG5cdFx0XHRpZihvLnR5cGUgPT0gXCJiaW5hcnlcIiB8fCBvLnR5cGUgPT0gXCJiYXNlNjRcIikgcmV0dXJuIG91dDtcblx0XHRcdG91dCA9IG5ldyBVaW50OEFycmF5KHMyYWIob3V0KSk7XG5cdFx0fVxuXHR9XG4vKmpzaGludCAtVzA4MyAqL1xuXHRpZihvLnBhc3N3b3JkICYmIHR5cGVvZiBlbmNyeXB0X2FnaWxlICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHdyaXRlX2NmYl9jdHIoZW5jcnlwdF9hZ2lsZShvdXQsIG8ucGFzc3dvcmQpLCBvKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuLypqc2hpbnQgK1cwODMgKi9cblx0aWYoby50eXBlID09PSBcImZpbGVcIikgcmV0dXJuIHdyaXRlX2RsKG8uZmlsZSwgb3V0KTtcblx0cmV0dXJuIG8udHlwZSA9PSBcInN0cmluZ1wiID8gdXRmOHJlYWQoLyo6OigqL291dC8qOjogOmFueSkqLykgOiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX2NmYl90eXBlKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHZhciBvID0gb3B0c3x8e307XG5cdHZhciBjZmIvKjpDRkJDb250YWluZXIqLyA9IHdyaXRlX3hsc2NmYih3Yiwgbyk7XG5cdHJldHVybiB3cml0ZV9jZmJfY3RyKGNmYiwgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3N0cmluZ190eXBlKG91dC8qOnN0cmluZyovLCBvcHRzLyo6V3JpdGVPcHRzKi8sIGJvbS8qOj9zdHJpbmcqLykvKjphbnkqLyB7XG5cdGlmKCFib20pIGJvbSA9IFwiXCI7XG5cdHZhciBvID0gYm9tICsgb3V0O1xuXHRzd2l0Y2gob3B0cy50eXBlKSB7XG5cdFx0Y2FzZSBcImJhc2U2NFwiOiByZXR1cm4gQmFzZTY0X2VuY29kZSh1dGY4d3JpdGUobykpO1xuXHRcdGNhc2UgXCJiaW5hcnlcIjogcmV0dXJuIHV0Zjh3cml0ZShvKTtcblx0XHRjYXNlIFwic3RyaW5nXCI6IHJldHVybiBvdXQ7XG5cdFx0Y2FzZSBcImZpbGVcIjogcmV0dXJuIHdyaXRlX2RsKG9wdHMuZmlsZSwgbywgJ3V0ZjgnKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IHtcblx0XHRcdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXJfZnJvbShvLCAndXRmOCcpO1xuXHRcdFx0ZWxzZSBpZih0eXBlb2YgVGV4dEVuY29kZXIgIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUobyk7XG5cdFx0XHRlbHNlIHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShvLCB7dHlwZTonYmluYXJ5J30pLnNwbGl0KFwiXCIpLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBjLmNoYXJDb2RlQXQoMCk7IH0pO1xuXHRcdH1cblx0fVxuXHR0aHJvdyBuZXcgRXJyb3IoXCJVbnJlY29nbml6ZWQgdHlwZSBcIiArIG9wdHMudHlwZSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlX3N0eHRfdHlwZShvdXQvKjpzdHJpbmcqLywgb3B0cy8qOldyaXRlT3B0cyovKS8qOmFueSovIHtcblx0c3dpdGNoKG9wdHMudHlwZSkge1xuXHRcdGNhc2UgXCJiYXNlNjRcIjogcmV0dXJuIEJhc2U2NF9lbmNvZGUob3V0KTtcblx0XHRjYXNlIFwiYmluYXJ5XCI6IHJldHVybiBvdXQ7XG5cdFx0Y2FzZSBcInN0cmluZ1wiOiByZXR1cm4gb3V0OyAvKiBvdmVycmlkZSBpbiBzaGVldF90b190eHQgKi9cblx0XHRjYXNlIFwiZmlsZVwiOiByZXR1cm4gd3JpdGVfZGwob3B0cy5maWxlLCBvdXQsICdiaW5hcnknKTtcblx0XHRjYXNlIFwiYnVmZmVyXCI6IHtcblx0XHRcdGlmKGhhc19idWYpIHJldHVybiBCdWZmZXJfZnJvbShvdXQsICdiaW5hcnknKTtcblx0XHRcdGVsc2UgcmV0dXJuIG91dC5zcGxpdChcIlwiKS5tYXAoZnVuY3Rpb24oYykgeyByZXR1cm4gYy5jaGFyQ29kZUF0KDApOyB9KTtcblx0XHR9XG5cdH1cblx0dGhyb3cgbmV3IEVycm9yKFwiVW5yZWNvZ25pemVkIHR5cGUgXCIgKyBvcHRzLnR5cGUpO1xufVxuXG4vKiBUT0RPOiB0ZXN0IGNvbnNpc3RlbmN5ICovXG5mdW5jdGlvbiB3cml0ZV9iaW5hcnlfdHlwZShvdXQsIG9wdHMvKjpXcml0ZU9wdHMqLykvKjphbnkqLyB7XG5cdHN3aXRjaChvcHRzLnR5cGUpIHtcblx0XHRjYXNlIFwic3RyaW5nXCI6XG5cdFx0Y2FzZSBcImJhc2U2NFwiOlxuXHRcdGNhc2UgXCJiaW5hcnlcIjpcblx0XHRcdHZhciBic3RyID0gXCJcIjtcblx0XHRcdC8vICRGbG93SWdub3JlXG5cdFx0XHRmb3IodmFyIGkgPSAwOyBpIDwgb3V0Lmxlbmd0aDsgKytpKSBic3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUob3V0W2ldKTtcblx0XHRcdHJldHVybiBvcHRzLnR5cGUgPT0gJ2Jhc2U2NCcgPyBCYXNlNjRfZW5jb2RlKGJzdHIpIDogb3B0cy50eXBlID09ICdzdHJpbmcnID8gdXRmOHJlYWQoYnN0cikgOiBic3RyO1xuXHRcdGNhc2UgXCJmaWxlXCI6IHJldHVybiB3cml0ZV9kbChvcHRzLmZpbGUsIG91dCk7XG5cdFx0Y2FzZSBcImJ1ZmZlclwiOiByZXR1cm4gb3V0O1xuXHRcdGRlZmF1bHQ6IHRocm93IG5ldyBFcnJvcihcIlVucmVjb2duaXplZCB0eXBlIFwiICsgb3B0cy50eXBlKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cml0ZVN5bmNYTFNYKHdiLyo6V29ya2Jvb2sqLywgb3B0cy8qOj9Xcml0ZU9wdHMqLykge1xuXHRyZXNldF9jcCgpO1xuXHRjaGVja193Yih3Yik7XG5cdHZhciBvID0gZHVwKG9wdHN8fHt9KTtcblx0aWYoby5jZWxsU3R5bGVzKSB7IG8uY2VsbE5GID0gdHJ1ZTsgby5zaGVldFN0dWJzID0gdHJ1ZTsgfVxuXHRpZihvLnR5cGUgPT0gXCJhcnJheVwiKSB7IG8udHlwZSA9IFwiYmluYXJ5XCI7IHZhciBvdXQvKjpzdHJpbmcqLyA9ICh3cml0ZVN5bmNYTFNYKHdiLCBvKS8qOmFueSovKTsgby50eXBlID0gXCJhcnJheVwiOyByZXR1cm4gczJhYihvdXQpOyB9XG5cdHJldHVybiB3cml0ZV96aXBfdHlwZVhMU1god2IsIG8pO1xufVxuXG5mdW5jdGlvbiB3cml0ZVN5bmMod2IvKjpXb3JrYm9vayovLCBvcHRzLyo6P1dyaXRlT3B0cyovKSB7XG5cdHJlc2V0X2NwKCk7XG5cdGNoZWNrX3diKHdiKTtcblx0dmFyIG8gPSBkdXAob3B0c3x8e30pO1xuXHRpZihvLmNlbGxTdHlsZXMpIHsgby5jZWxsTkYgPSB0cnVlOyBvLnNoZWV0U3R1YnMgPSB0cnVlOyB9XG5cdGlmKG8udHlwZSA9PSBcImFycmF5XCIpIHsgby50eXBlID0gXCJiaW5hcnlcIjsgdmFyIG91dC8qOnN0cmluZyovID0gKHdyaXRlU3luYyh3YiwgbykvKjphbnkqLyk7IG8udHlwZSA9IFwiYXJyYXlcIjsgcmV0dXJuIHMyYWIob3V0KTsgfVxuXHR2YXIgaWR4ID0gMDtcblx0aWYoby5zaGVldCkge1xuXHRcdGlmKHR5cGVvZiBvLnNoZWV0ID09IFwibnVtYmVyXCIpIGlkeCA9IG8uc2hlZXQ7XG5cdFx0ZWxzZSBpZHggPSB3Yi5TaGVldE5hbWVzLmluZGV4T2Yoby5zaGVldCk7XG5cdFx0aWYoIXdiLlNoZWV0TmFtZXNbaWR4XSkgdGhyb3cgbmV3IEVycm9yKFwiU2hlZXQgbm90IGZvdW5kOiBcIiArIG8uc2hlZXQgKyBcIiA6IFwiICsgKHR5cGVvZiBvLnNoZWV0KSk7XG5cdH1cblx0c3dpdGNoKG8uYm9va1R5cGUgfHwgJ3hsc2InKSB7XG5cdFx0Y2FzZSAneG1sJzpcblx0XHRjYXNlICd4bG1sJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHdyaXRlX3hsbWwod2IsIG8pLCBvKTtcblx0XHRjYXNlICdzbGsnOlxuXHRcdGNhc2UgJ3N5bGsnOiByZXR1cm4gd3JpdGVfc3RyaW5nX3R5cGUoU1lMSy5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnaHRtJzpcblx0XHRjYXNlICdodG1sJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKHNoZWV0X3RvX2h0bWwod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvKTtcblx0XHRjYXNlICd0eHQnOiByZXR1cm4gd3JpdGVfc3R4dF90eXBlKHNoZWV0X3RvX3R4dCh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ2Nzdic6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZShzaGVldF90b19jc3Yod2IuU2hlZXRzW3diLlNoZWV0TmFtZXNbaWR4XV0sIG8pLCBvLCBcIlxcdWZlZmZcIik7XG5cdFx0Y2FzZSAnZGlmJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKERJRi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZGJmJzogcmV0dXJuIHdyaXRlX2JpbmFyeV90eXBlKERCRi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAncHJuJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKFBSTi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAncnRmJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKFJURi5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZXRoJzogcmV0dXJuIHdyaXRlX3N0cmluZ190eXBlKEVUSC5mcm9tX3NoZWV0KHdiLlNoZWV0c1t3Yi5TaGVldE5hbWVzW2lkeF1dLCBvKSwgbyk7XG5cdFx0Y2FzZSAnZm9kcyc6IHJldHVybiB3cml0ZV9zdHJpbmdfdHlwZSh3cml0ZV9vZHMod2IsIG8pLCBvKTtcblx0XHRjYXNlICd3azEnOiByZXR1cm4gd3JpdGVfYmluYXJ5X3R5cGUoV0tfLnNoZWV0X3RvX3drMSh3Yi5TaGVldHNbd2IuU2hlZXROYW1lc1tpZHhdXSwgbyksIG8pO1xuXHRcdGNhc2UgJ3drMyc6IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZShXS18uYm9va190b193azMod2IsIG8pLCBvKTtcblx0XHRjYXNlICdiaWZmMic6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDI7IC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdiaWZmMyc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDM7IC8qIGZhbGxzIHRocm91Z2ggKi9cblx0XHRjYXNlICdiaWZmNCc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDQ7IHJldHVybiB3cml0ZV9iaW5hcnlfdHlwZSh3cml0ZV9iaWZmX2J1Zih3YiwgbyksIG8pO1xuXHRcdGNhc2UgJ2JpZmY1JzogaWYoIW8uYmlmZikgby5iaWZmID0gNTsgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHRcdGNhc2UgJ2JpZmY4Jzpcblx0XHRjYXNlICd4bGEnOlxuXHRcdGNhc2UgJ3hscyc6IGlmKCFvLmJpZmYpIG8uYmlmZiA9IDg7IHJldHVybiB3cml0ZV9jZmJfdHlwZSh3Yiwgbyk7XG5cdFx0Y2FzZSAneGxzeCc6XG5cdFx0Y2FzZSAneGxzbSc6XG5cdFx0Y2FzZSAneGxhbSc6XG5cdFx0Y2FzZSAneGxzYic6XG5cdFx0Y2FzZSAnbnVtYmVycyc6XG5cdFx0Y2FzZSAnb2RzJzogcmV0dXJuIHdyaXRlX3ppcF90eXBlKHdiLCBvKTtcblx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IgKFwiVW5yZWNvZ25pemVkIGJvb2tUeXBlIHxcIiArIG8uYm9va1R5cGUgKyBcInxcIik7XG5cdH1cbn1cblxuZnVuY3Rpb24gcmVzb2x2ZV9ib29rX3R5cGUoby8qOldyaXRlRmlsZU9wdHMqLykge1xuXHRpZihvLmJvb2tUeXBlKSByZXR1cm47XG5cdHZhciBfQlQgPSB7XG5cdFx0XCJ4bHNcIjogXCJiaWZmOFwiLFxuXHRcdFwiaHRtXCI6IFwiaHRtbFwiLFxuXHRcdFwic2xrXCI6IFwic3lsa1wiLFxuXHRcdFwic29jaWFsY2FsY1wiOiBcImV0aFwiLFxuXHRcdFwiU2gzM3RKU1wiOiBcIldURlwiXG5cdH07XG5cdHZhciBleHQgPSBvLmZpbGUuc2xpY2Uoby5maWxlLmxhc3RJbmRleE9mKFwiLlwiKSkudG9Mb3dlckNhc2UoKTtcblx0aWYoZXh0Lm1hdGNoKC9eXFwuW2Etel0rJC8pKSBvLmJvb2tUeXBlID0gZXh0LnNsaWNlKDEpO1xuXHRvLmJvb2tUeXBlID0gX0JUW28uYm9va1R5cGVdIHx8IG8uYm9va1R5cGU7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZVN5bmMod2IvKjpXb3JrYm9vayovLCBmaWxlbmFtZS8qOnN0cmluZyovLCBvcHRzLyo6P1dyaXRlRmlsZU9wdHMqLykge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdG8uZmlsZSA9IGZpbGVuYW1lO1xuXHRyZXNvbHZlX2Jvb2tfdHlwZShvKTtcblx0cmV0dXJuIHdyaXRlU3luYyh3Yiwgbyk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRmlsZVN5bmNYTFNYKHdiLyo6V29ya2Jvb2sqLywgZmlsZW5hbWUvKjpzdHJpbmcqLywgb3B0cy8qOj9Xcml0ZUZpbGVPcHRzKi8pIHtcblx0dmFyIG8gPSBvcHRzfHx7fTsgby50eXBlID0gJ2ZpbGUnO1xuXHRvLmZpbGUgPSBmaWxlbmFtZTtcblx0cmVzb2x2ZV9ib29rX3R5cGUobyk7XG5cdHJldHVybiB3cml0ZVN5bmNYTFNYKHdiLCBvKTtcbn1cblxuXG5mdW5jdGlvbiB3cml0ZUZpbGVBc3luYyhmaWxlbmFtZS8qOnN0cmluZyovLCB3Yi8qOldvcmtib29rKi8sIG9wdHMvKjo/V3JpdGVGaWxlT3B0cyovLCBjYi8qOj8oZT86RXJybm9FcnJvcik9PnZvaWQqLykge1xuXHR2YXIgbyA9IG9wdHN8fHt9OyBvLnR5cGUgPSAnZmlsZSc7XG5cdG8uZmlsZSA9IGZpbGVuYW1lO1xuXHRyZXNvbHZlX2Jvb2tfdHlwZShvKTtcblx0by50eXBlID0gJ2J1ZmZlcic7XG5cdHZhciBfY2IgPSBjYjsgaWYoIShfY2IgaW5zdGFuY2VvZiBGdW5jdGlvbikpIF9jYiA9IChvcHRzLyo6YW55Ki8pO1xuXHRyZXR1cm4gX2ZzLndyaXRlRmlsZShmaWxlbmFtZSwgd3JpdGVTeW5jKHdiLCBvKSwgX2NiKTtcbn1cbi8qOjpcbnR5cGUgTUpST2JqZWN0ID0ge1xuXHRyb3c6IGFueTtcblx0aXNlbXB0eTogYm9vbGVhbjtcbn07XG4qL1xuZnVuY3Rpb24gbWFrZV9qc29uX3JvdyhzaGVldC8qOldvcmtzaGVldCovLCByLyo6UmFuZ2UqLywgUi8qOm51bWJlciovLCBjb2xzLyo6QXJyYXk8c3RyaW5nPiovLCBoZWFkZXIvKjpudW1iZXIqLywgaGRyLyo6QXJyYXk8YW55PiovLCBkZW5zZS8qOmJvb2xlYW4qLywgby8qOlNoZWV0MkpTT05PcHRzKi8pLyo6TUpST2JqZWN0Ki8ge1xuXHR2YXIgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHR2YXIgZGVmdmFsID0gby5kZWZ2YWwsIHJhdyA9IG8ucmF3IHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgXCJyYXdcIik7XG5cdHZhciBpc2VtcHR5ID0gdHJ1ZTtcblx0dmFyIHJvdy8qOmFueSovID0gKGhlYWRlciA9PT0gMSkgPyBbXSA6IHt9O1xuXHRpZihoZWFkZXIgIT09IDEpIHtcblx0XHRpZihPYmplY3QuZGVmaW5lUHJvcGVydHkpIHRyeSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyb3csICdfX3Jvd051bV9fJywge3ZhbHVlOlIsIGVudW1lcmFibGU6ZmFsc2V9KTsgfSBjYXRjaChlKSB7IHJvdy5fX3Jvd051bV9fID0gUjsgfVxuXHRcdGVsc2Ugcm93Ll9fcm93TnVtX18gPSBSO1xuXHR9XG5cdGlmKCFkZW5zZSB8fCBzaGVldFtSXSkgZm9yICh2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHR2YXIgdmFsID0gZGVuc2UgPyBzaGVldFtSXVtDXSA6IHNoZWV0W2NvbHNbQ10gKyBycl07XG5cdFx0aWYodmFsID09PSB1bmRlZmluZWQgfHwgdmFsLnQgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0aWYoZGVmdmFsID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuXHRcdFx0aWYoaGRyW0NdICE9IG51bGwpIHsgcm93W2hkcltDXV0gPSBkZWZ2YWw7IH1cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblx0XHR2YXIgdiA9IHZhbC52O1xuXHRcdHN3aXRjaCh2YWwudCl7XG5cdFx0XHRjYXNlICd6JzogaWYodiA9PSBudWxsKSBicmVhazsgY29udGludWU7XG5cdFx0XHRjYXNlICdlJzogdiA9ICh2ID09IDAgPyBudWxsIDogdm9pZCAwKTsgYnJlYWs7XG5cdFx0XHRjYXNlICdzJzogY2FzZSAnZCc6IGNhc2UgJ2InOiBjYXNlICduJzogYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoJ3VucmVjb2duaXplZCB0eXBlICcgKyB2YWwudCk7XG5cdFx0fVxuXHRcdGlmKGhkcltDXSAhPSBudWxsKSB7XG5cdFx0XHRpZih2ID09IG51bGwpIHtcblx0XHRcdFx0aWYodmFsLnQgPT0gXCJlXCIgJiYgdiA9PT0gbnVsbCkgcm93W2hkcltDXV0gPSBudWxsO1xuXHRcdFx0XHRlbHNlIGlmKGRlZnZhbCAhPT0gdW5kZWZpbmVkKSByb3dbaGRyW0NdXSA9IGRlZnZhbDtcblx0XHRcdFx0ZWxzZSBpZihyYXcgJiYgdiA9PT0gbnVsbCkgcm93W2hkcltDXV0gPSBudWxsO1xuXHRcdFx0XHRlbHNlIGNvbnRpbnVlO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cm93W2hkcltDXV0gPSByYXcgJiYgKHZhbC50ICE9PSBcIm5cIiB8fCAodmFsLnQgPT09IFwiblwiICYmIG8ucmF3TnVtYmVycyAhPT0gZmFsc2UpKSA/IHYgOiBmb3JtYXRfY2VsbCh2YWwsdixvKTtcblx0XHRcdH1cblx0XHRcdGlmKHYgIT0gbnVsbCkgaXNlbXB0eSA9IGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4geyByb3c6IHJvdywgaXNlbXB0eTogaXNlbXB0eSB9O1xufVxuXG5cbmZ1bmN0aW9uIHNoZWV0X3RvX2pzb24oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJKU09OT3B0cyovKSB7XG5cdGlmKHNoZWV0ID09IG51bGwgfHwgc2hlZXRbXCIhcmVmXCJdID09IG51bGwpIHJldHVybiBbXTtcblx0dmFyIHZhbCA9IHt0OiduJyx2OjB9LCBoZWFkZXIgPSAwLCBvZmZzZXQgPSAxLCBoZHIvKjpBcnJheTxhbnk+Ki8gPSBbXSwgdj0wLCB2dj1cIlwiO1xuXHR2YXIgciA9IHtzOntyOjAsYzowfSxlOntyOjAsYzowfX07XG5cdHZhciBvID0gb3B0cyB8fCB7fTtcblx0dmFyIHJhbmdlID0gby5yYW5nZSAhPSBudWxsID8gby5yYW5nZSA6IHNoZWV0W1wiIXJlZlwiXTtcblx0aWYoby5oZWFkZXIgPT09IDEpIGhlYWRlciA9IDE7XG5cdGVsc2UgaWYoby5oZWFkZXIgPT09IFwiQVwiKSBoZWFkZXIgPSAyO1xuXHRlbHNlIGlmKEFycmF5LmlzQXJyYXkoby5oZWFkZXIpKSBoZWFkZXIgPSAzO1xuXHRlbHNlIGlmKG8uaGVhZGVyID09IG51bGwpIGhlYWRlciA9IDA7XG5cdHN3aXRjaCh0eXBlb2YgcmFuZ2UpIHtcblx0XHRjYXNlICdzdHJpbmcnOiByID0gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpOyBicmVhaztcblx0XHRjYXNlICdudW1iZXInOiByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTsgci5zLnIgPSByYW5nZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogciA9IHJhbmdlO1xuXHR9XG5cdGlmKGhlYWRlciA+IDApIG9mZnNldCA9IDA7XG5cdHZhciByciA9IGVuY29kZV9yb3coci5zLnIpO1xuXHR2YXIgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgb3V0Lyo6QXJyYXk8YW55PiovID0gW107XG5cdHZhciBvdXRpID0gMCwgY291bnRlciA9IDA7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgUiA9IHIucy5yLCBDID0gMDtcblx0dmFyIGhlYWRlcl9jbnQgPSB7fTtcblx0aWYoZGVuc2UgJiYgIXNoZWV0W1JdKSBzaGVldFtSXSA9IFtdO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxDb2xJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdGlmKCgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbnRpbnVlO1xuXHRcdGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdHZhbCA9IGRlbnNlID8gc2hlZXRbUl1bQ10gOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdHN3aXRjaChoZWFkZXIpIHtcblx0XHRcdGNhc2UgMTogaGRyW0NdID0gQyAtIHIucy5jOyBicmVhaztcblx0XHRcdGNhc2UgMjogaGRyW0NdID0gY29sc1tDXTsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IGhkcltDXSA9IG8uaGVhZGVyW0MgLSByLnMuY107IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYodmFsID09IG51bGwpIHZhbCA9IHt3OiBcIl9fRU1QVFlcIiwgdDogXCJzXCJ9O1xuXHRcdFx0XHR2diA9IHYgPSBmb3JtYXRfY2VsbCh2YWwsIG51bGwsIG8pO1xuXHRcdFx0XHRjb3VudGVyID0gaGVhZGVyX2NudFt2XSB8fCAwO1xuXHRcdFx0XHRpZighY291bnRlcikgaGVhZGVyX2NudFt2XSA9IDE7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGRvIHsgdnYgPSB2ICsgXCJfXCIgKyAoY291bnRlcisrKTsgfSB3aGlsZShoZWFkZXJfY250W3Z2XSk7IGhlYWRlcl9jbnRbdl0gPSBjb3VudGVyO1xuXHRcdFx0XHRcdGhlYWRlcl9jbnRbdnZdID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRoZHJbQ10gPSB2djtcblx0XHR9XG5cdH1cblx0Zm9yIChSID0gci5zLnIgKyBvZmZzZXQ7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdGlmICgocm93aW5mb1tSXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0dmFyIHJvdyA9IG1ha2VfanNvbl9yb3coc2hlZXQsIHIsIFIsIGNvbHMsIGhlYWRlciwgaGRyLCBkZW5zZSwgbyk7XG5cdFx0aWYoKHJvdy5pc2VtcHR5ID09PSBmYWxzZSkgfHwgKGhlYWRlciA9PT0gMSA/IG8uYmxhbmtyb3dzICE9PSBmYWxzZSA6ICEhby5ibGFua3Jvd3MpKSBvdXRbb3V0aSsrXSA9IHJvdy5yb3c7XG5cdH1cblx0b3V0Lmxlbmd0aCA9IG91dGk7XG5cdHJldHVybiBvdXQ7XG59XG5cbnZhciBxcmVnID0gL1wiL2c7XG5mdW5jdGlvbiBtYWtlX2Nzdl9yb3coc2hlZXQvKjpXb3Jrc2hlZXQqLywgci8qOlJhbmdlKi8sIFIvKjpudW1iZXIqLywgY29scy8qOkFycmF5PHN0cmluZz4qLywgZnMvKjpudW1iZXIqLywgcnMvKjpudW1iZXIqLywgRlMvKjpzdHJpbmcqLywgby8qOlNoZWV0MkNTVk9wdHMqLykvKjo/c3RyaW5nKi8ge1xuXHR2YXIgaXNlbXB0eSA9IHRydWU7XG5cdHZhciByb3cvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXSwgdHh0ID0gXCJcIiwgcnIgPSBlbmNvZGVfcm93KFIpO1xuXHRmb3IodmFyIEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSB7XG5cdFx0aWYgKCFjb2xzW0NdKSBjb250aW51ZTtcblx0XHR2YXIgdmFsID0gby5kZW5zZSA/IChzaGVldFtSXXx8W10pW0NdOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdGlmKHZhbCA9PSBudWxsKSB0eHQgPSBcIlwiO1xuXHRcdGVsc2UgaWYodmFsLnYgIT0gbnVsbCkge1xuXHRcdFx0aXNlbXB0eSA9IGZhbHNlO1xuXHRcdFx0dHh0ID0gJycrKG8ucmF3TnVtYmVycyAmJiB2YWwudCA9PSBcIm5cIiA/IHZhbC52IDogZm9ybWF0X2NlbGwodmFsLCBudWxsLCBvKSk7XG5cdFx0XHRmb3IodmFyIGkgPSAwLCBjYyA9IDA7IGkgIT09IHR4dC5sZW5ndGg7ICsraSkgaWYoKGNjID0gdHh0LmNoYXJDb2RlQXQoaSkpID09PSBmcyB8fCBjYyA9PT0gcnMgfHwgY2MgPT09IDM0IHx8IG8uZm9yY2VRdW90ZXMpIHt0eHQgPSBcIlxcXCJcIiArIHR4dC5yZXBsYWNlKHFyZWcsICdcIlwiJykgKyBcIlxcXCJcIjsgYnJlYWs7IH1cblx0XHRcdGlmKHR4dCA9PSBcIklEXCIpIHR4dCA9ICdcIklEXCInO1xuXHRcdH0gZWxzZSBpZih2YWwuZiAhPSBudWxsICYmICF2YWwuRikge1xuXHRcdFx0aXNlbXB0eSA9IGZhbHNlO1xuXHRcdFx0dHh0ID0gJz0nICsgdmFsLmY7IGlmKHR4dC5pbmRleE9mKFwiLFwiKSA+PSAwKSB0eHQgPSAnXCInICsgdHh0LnJlcGxhY2UocXJlZywgJ1wiXCInKSArICdcIic7XG5cdFx0fSBlbHNlIHR4dCA9IFwiXCI7XG5cdFx0LyogTk9URTogRXhjZWwgQ1NWIGRvZXMgbm90IHN1cHBvcnQgYXJyYXkgZm9ybXVsYWUgKi9cblx0XHRyb3cucHVzaCh0eHQpO1xuXHR9XG5cdGlmKG8uYmxhbmtyb3dzID09PSBmYWxzZSAmJiBpc2VtcHR5KSByZXR1cm4gbnVsbDtcblx0cmV0dXJuIHJvdy5qb2luKEZTKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fY3N2KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKS8qOnN0cmluZyovIHtcblx0dmFyIG91dC8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgbyA9IG9wdHMgPT0gbnVsbCA/IHt9IDogb3B0cztcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgcmV0dXJuIFwiXCI7XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTtcblx0dmFyIEZTID0gby5GUyAhPT0gdW5kZWZpbmVkID8gby5GUyA6IFwiLFwiLCBmcyA9IEZTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBSUyA9IG8uUlMgIT09IHVuZGVmaW5lZCA/IG8uUlMgOiBcIlxcblwiLCBycyA9IFJTLmNoYXJDb2RlQXQoMCk7XG5cdHZhciBlbmRyZWdleCA9IG5ldyBSZWdFeHAoKEZTPT1cInxcIiA/IFwiXFxcXHxcIiA6IEZTKStcIiskXCIpO1xuXHR2YXIgcm93ID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheShzaGVldCk7XG5cdHZhciBjb2xpbmZvLyo6QXJyYXk8Q29sSW5mbz4qLyA9IG8uc2tpcEhpZGRlbiAmJiBzaGVldFtcIiFjb2xzXCJdIHx8IFtdO1xuXHR2YXIgcm93aW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhcm93c1wiXSB8fCBbXTtcblx0Zm9yKHZhciBDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykgaWYgKCEoKGNvbGluZm9bQ118fHt9KS5oaWRkZW4pKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0dmFyIHcgPSAwO1xuXHRmb3IodmFyIFIgPSByLnMucjsgUiA8PSByLmUucjsgKytSKSB7XG5cdFx0aWYgKChyb3dpbmZvW1JdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHRyb3cgPSBtYWtlX2Nzdl9yb3coc2hlZXQsIHIsIFIsIGNvbHMsIGZzLCBycywgRlMsIG8pO1xuXHRcdGlmKHJvdyA9PSBudWxsKSB7IGNvbnRpbnVlOyB9XG5cdFx0aWYoby5zdHJpcCkgcm93ID0gcm93LnJlcGxhY2UoZW5kcmVnZXgsXCJcIik7XG5cdFx0aWYocm93IHx8IChvLmJsYW5rcm93cyAhPT0gZmFsc2UpKSBvdXQucHVzaCgodysrID8gUlMgOiBcIlwiKSArIHJvdyk7XG5cdH1cblx0ZGVsZXRlIG8uZGVuc2U7XG5cdHJldHVybiBvdXQuam9pbihcIlwiKTtcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fdHh0KHNoZWV0Lyo6V29ya3NoZWV0Ki8sIG9wdHMvKjo/U2hlZXQyQ1NWT3B0cyovKSB7XG5cdGlmKCFvcHRzKSBvcHRzID0ge307IG9wdHMuRlMgPSBcIlxcdFwiOyBvcHRzLlJTID0gXCJcXG5cIjtcblx0dmFyIHMgPSBzaGVldF90b19jc3Yoc2hlZXQsIG9wdHMpO1xuXHRpZih0eXBlb2YgJGNwdGFibGUgPT0gJ3VuZGVmaW5lZCcgfHwgb3B0cy50eXBlID09ICdzdHJpbmcnKSByZXR1cm4gcztcblx0dmFyIG8gPSAkY3B0YWJsZS51dGlscy5lbmNvZGUoMTIwMCwgcywgJ3N0cicpO1xuXHRyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUpICsgU3RyaW5nLmZyb21DaGFyQ29kZSgyNTQpICsgbztcbn1cblxuZnVuY3Rpb24gc2hlZXRfdG9fZm9ybXVsYWUoc2hlZXQvKjpXb3Jrc2hlZXQqLykvKjpBcnJheTxzdHJpbmc+Ki8ge1xuXHR2YXIgeSA9IFwiXCIsIHgsIHZhbD1cIlwiO1xuXHRpZihzaGVldCA9PSBudWxsIHx8IHNoZWV0W1wiIXJlZlwiXSA9PSBudWxsKSByZXR1cm4gW107XG5cdHZhciByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbJyFyZWYnXSksIHJyID0gXCJcIiwgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdLCBDO1xuXHR2YXIgY21kcy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgZGVuc2UgPSBBcnJheS5pc0FycmF5KHNoZWV0KTtcblx0Zm9yKEMgPSByLnMuYzsgQyA8PSByLmUuYzsgKytDKSBjb2xzW0NdID0gZW5jb2RlX2NvbChDKTtcblx0Zm9yKHZhciBSID0gci5zLnI7IFIgPD0gci5lLnI7ICsrUikge1xuXHRcdHJyID0gZW5jb2RlX3JvdyhSKTtcblx0XHRmb3IoQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIHtcblx0XHRcdHkgPSBjb2xzW0NdICsgcnI7XG5cdFx0XHR4ID0gZGVuc2UgPyAoc2hlZXRbUl18fFtdKVtDXSA6IHNoZWV0W3ldO1xuXHRcdFx0dmFsID0gXCJcIjtcblx0XHRcdGlmKHggPT09IHVuZGVmaW5lZCkgY29udGludWU7XG5cdFx0XHRlbHNlIGlmKHguRiAhPSBudWxsKSB7XG5cdFx0XHRcdHkgPSB4LkY7XG5cdFx0XHRcdGlmKCF4LmYpIGNvbnRpbnVlO1xuXHRcdFx0XHR2YWwgPSB4LmY7XG5cdFx0XHRcdGlmKHkuaW5kZXhPZihcIjpcIikgPT0gLTEpIHkgPSB5ICsgXCI6XCIgKyB5O1xuXHRcdFx0fVxuXHRcdFx0aWYoeC5mICE9IG51bGwpIHZhbCA9IHguZjtcblx0XHRcdGVsc2UgaWYoeC50ID09ICd6JykgY29udGludWU7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAnbicgJiYgeC52ICE9IG51bGwpIHZhbCA9IFwiXCIgKyB4LnY7XG5cdFx0XHRlbHNlIGlmKHgudCA9PSAnYicpIHZhbCA9IHgudiA/IFwiVFJVRVwiIDogXCJGQUxTRVwiO1xuXHRcdFx0ZWxzZSBpZih4LncgIT09IHVuZGVmaW5lZCkgdmFsID0gXCInXCIgKyB4Lnc7XG5cdFx0XHRlbHNlIGlmKHgudiA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblx0XHRcdGVsc2UgaWYoeC50ID09ICdzJykgdmFsID0gXCInXCIgKyB4LnY7XG5cdFx0XHRlbHNlIHZhbCA9IFwiXCIreC52O1xuXHRcdFx0Y21kc1tjbWRzLmxlbmd0aF0gPSB5ICsgXCI9XCIgKyB2YWw7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBjbWRzO1xufVxuXG5mdW5jdGlvbiBzaGVldF9hZGRfanNvbihfd3MvKjo/V29ya3NoZWV0Ki8sIGpzLyo6QXJyYXk8YW55PiovLCBvcHRzKS8qOldvcmtzaGVldCovIHtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgb2Zmc2V0ID0gKyFvLnNraXBIZWFkZXI7XG5cdHZhciB3cy8qOldvcmtzaGVldCovID0gX3dzIHx8ICh7fS8qOmFueSovKTtcblx0dmFyIF9SID0gMCwgX0MgPSAwO1xuXHRpZih3cyAmJiBvLm9yaWdpbiAhPSBudWxsKSB7XG5cdFx0aWYodHlwZW9mIG8ub3JpZ2luID09ICdudW1iZXInKSBfUiA9IG8ub3JpZ2luO1xuXHRcdGVsc2Uge1xuXHRcdFx0dmFyIF9vcmlnaW4vKjpDZWxsQWRkcmVzcyovID0gdHlwZW9mIG8ub3JpZ2luID09IFwic3RyaW5nXCIgPyBkZWNvZGVfY2VsbChvLm9yaWdpbikgOiBvLm9yaWdpbjtcblx0XHRcdF9SID0gX29yaWdpbi5yOyBfQyA9IF9vcmlnaW4uYztcblx0XHR9XG5cdH1cblx0dmFyIGNlbGwvKjpDZWxsKi87XG5cdHZhciByYW5nZS8qOlJhbmdlKi8gPSAoe3M6IHtjOjAsIHI6MH0sIGU6IHtjOl9DLCByOl9SICsganMubGVuZ3RoIC0gMSArIG9mZnNldH19Lyo6YW55Ki8pO1xuXHRpZih3c1snIXJlZiddKSB7XG5cdFx0dmFyIF9yYW5nZSA9IHNhZmVfZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRcdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX3JhbmdlLmUuYyk7XG5cdFx0cmFuZ2UuZS5yID0gTWF0aC5tYXgocmFuZ2UuZS5yLCBfcmFuZ2UuZS5yKTtcblx0XHRpZihfUiA9PSAtMSkgeyBfUiA9IF9yYW5nZS5lLnIgKyAxOyByYW5nZS5lLnIgPSBfUiArIGpzLmxlbmd0aCAtIDEgKyBvZmZzZXQ7IH1cblx0fSBlbHNlIHtcblx0XHRpZihfUiA9PSAtMSkgeyBfUiA9IDA7IHJhbmdlLmUuciA9IGpzLmxlbmd0aCAtIDEgKyBvZmZzZXQ7IH1cblx0fVxuXHR2YXIgaGRyLyo6QXJyYXk8c3RyaW5nPiovID0gby5oZWFkZXIgfHwgW10sIEMgPSAwO1xuXG5cdGpzLmZvckVhY2goZnVuY3Rpb24gKEpTLCBSLyo6bnVtYmVyKi8pIHtcblx0XHRrZXlzKEpTKS5mb3JFYWNoKGZ1bmN0aW9uKGspIHtcblx0XHRcdGlmKChDPWhkci5pbmRleE9mKGspKSA9PSAtMSkgaGRyW0M9aGRyLmxlbmd0aF0gPSBrO1xuXHRcdFx0dmFyIHYgPSBKU1trXTtcblx0XHRcdHZhciB0ID0gJ3onO1xuXHRcdFx0dmFyIHogPSBcIlwiO1xuXHRcdFx0dmFyIHJlZiA9IGVuY29kZV9jZWxsKHtjOl9DICsgQyxyOl9SICsgUiArIG9mZnNldH0pO1xuXHRcdFx0Y2VsbCA9IHdzX2dldF9jZWxsX3N0dWIod3MsIHJlZik7XG5cdFx0XHRpZih2ICYmIHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhKHYgaW5zdGFuY2VvZiBEYXRlKSl7XG5cdFx0XHRcdHdzW3JlZl0gPSB2O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYodHlwZW9mIHYgPT0gJ251bWJlcicpIHQgPSAnbic7XG5cdFx0XHRcdGVsc2UgaWYodHlwZW9mIHYgPT0gJ2Jvb2xlYW4nKSB0ID0gJ2InO1xuXHRcdFx0XHRlbHNlIGlmKHR5cGVvZiB2ID09ICdzdHJpbmcnKSB0ID0gJ3MnO1xuXHRcdFx0XHRlbHNlIGlmKHYgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0dCA9ICdkJztcblx0XHRcdFx0XHRpZighby5jZWxsRGF0ZXMpIHsgdCA9ICduJzsgdiA9IGRhdGVudW0odik7IH1cblx0XHRcdFx0XHR6ID0gKG8uZGF0ZU5GIHx8IHRhYmxlX2ZtdFsxNF0pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2UgaWYodiA9PT0gbnVsbCAmJiBvLm51bGxFcnJvcikgeyB0ID0gJ2UnOyB2ID0gMDsgfVxuXHRcdFx0XHRpZighY2VsbCkgd3NbcmVmXSA9IGNlbGwgPSAoe3Q6dCwgdjp2fS8qOmFueSovKTtcblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0Y2VsbC50ID0gdDsgY2VsbC52ID0gdjtcblx0XHRcdFx0XHRkZWxldGUgY2VsbC53OyBkZWxldGUgY2VsbC5SO1xuXHRcdFx0XHRcdGlmKHopIGNlbGwueiA9IHo7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYoeikgY2VsbC56ID0gejtcblx0XHRcdH1cblx0XHR9KTtcblx0fSk7XG5cdHJhbmdlLmUuYyA9IE1hdGgubWF4KHJhbmdlLmUuYywgX0MgKyBoZHIubGVuZ3RoIC0gMSk7XG5cdHZhciBfX1IgPSBlbmNvZGVfcm93KF9SKTtcblx0aWYob2Zmc2V0KSBmb3IoQyA9IDA7IEMgPCBoZHIubGVuZ3RoOyArK0MpIHdzW2VuY29kZV9jb2woQyArIF9DKSArIF9fUl0gPSB7dDoncycsIHY6aGRyW0NdfTtcblx0d3NbJyFyZWYnXSA9IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdHJldHVybiB3cztcbn1cbmZ1bmN0aW9uIGpzb25fdG9fc2hlZXQoanMvKjpBcnJheTxhbnk+Ki8sIG9wdHMpLyo6V29ya3NoZWV0Ki8geyByZXR1cm4gc2hlZXRfYWRkX2pzb24obnVsbCwganMsIG9wdHMpOyB9XG5cbi8qIGdldCBjZWxsLCBjcmVhdGluZyBhIHN0dWIgaWYgbmVjZXNzYXJ5ICovXG5mdW5jdGlvbiB3c19nZXRfY2VsbF9zdHViKHdzLyo6V29ya3NoZWV0Ki8sIFIsIEMvKjo/bnVtYmVyKi8pLyo6Q2VsbCovIHtcblx0LyogQTEgY2VsbCBhZGRyZXNzICovXG5cdGlmKHR5cGVvZiBSID09IFwic3RyaW5nXCIpIHtcblx0XHQvKiBkZW5zZSAqL1xuXHRcdGlmKEFycmF5LmlzQXJyYXkod3MpKSB7XG5cdFx0XHR2YXIgUkMgPSBkZWNvZGVfY2VsbChSKTtcblx0XHRcdGlmKCF3c1tSQy5yXSkgd3NbUkMucl0gPSBbXTtcblx0XHRcdHJldHVybiB3c1tSQy5yXVtSQy5jXSB8fCAod3NbUkMucl1bUkMuY10gPSB7dDoneid9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdzW1JdIHx8ICh3c1tSXSA9IHt0Oid6J30pO1xuXHR9XG5cdC8qIGNlbGwgYWRkcmVzcyBvYmplY3QgKi9cblx0aWYodHlwZW9mIFIgIT0gXCJudW1iZXJcIikgcmV0dXJuIHdzX2dldF9jZWxsX3N0dWIod3MsIGVuY29kZV9jZWxsKFIpKTtcblx0LyogUiBhbmQgQyBhcmUgMC1iYXNlZCBpbmRpY2VzICovXG5cdHJldHVybiB3c19nZXRfY2VsbF9zdHViKHdzLCBlbmNvZGVfY2VsbCh7cjpSLGM6Q3x8MH0pKTtcbn1cblxuLyogZmluZCBzaGVldCBpbmRleCBmb3IgZ2l2ZW4gbmFtZSAvIHZhbGlkYXRlIGluZGV4ICovXG5mdW5jdGlvbiB3Yl9zaGVldF9pZHgod2IvKjpXb3JrYm9vayovLCBzaC8qOm51bWJlcnxzdHJpbmcqLykge1xuXHRpZih0eXBlb2Ygc2ggPT0gXCJudW1iZXJcIikge1xuXHRcdGlmKHNoID49IDAgJiYgd2IuU2hlZXROYW1lcy5sZW5ndGggPiBzaCkgcmV0dXJuIHNoO1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIHNoZWV0ICMgXCIgKyBzaCk7XG5cdH0gZWxzZSBpZih0eXBlb2Ygc2ggPT0gXCJzdHJpbmdcIikge1xuXHRcdHZhciBpZHggPSB3Yi5TaGVldE5hbWVzLmluZGV4T2Yoc2gpO1xuXHRcdGlmKGlkeCA+IC0xKSByZXR1cm4gaWR4O1xuXHRcdHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIHNoZWV0IG5hbWUgfFwiICsgc2ggKyBcInxcIik7XG5cdH0gZWxzZSB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBzaGVldCB8XCIgKyBzaCArIFwifFwiKTtcbn1cblxuLyogc2ltcGxlIGJsYW5rIHdvcmtib29rIG9iamVjdCAqL1xuZnVuY3Rpb24gYm9va19uZXcoKS8qOldvcmtib29rKi8ge1xuXHRyZXR1cm4geyBTaGVldE5hbWVzOiBbXSwgU2hlZXRzOiB7fSB9O1xufVxuXG4vKiBhZGQgYSB3b3Jrc2hlZXQgdG8gdGhlIGVuZCBvZiBhIGdpdmVuIHdvcmtib29rICovXG5mdW5jdGlvbiBib29rX2FwcGVuZF9zaGVldCh3Yi8qOldvcmtib29rKi8sIHdzLyo6V29ya3NoZWV0Ki8sIG5hbWUvKjo/c3RyaW5nKi8sIHJvbGwvKjo/Ym9vbGVhbiovKS8qOnN0cmluZyovIHtcblx0dmFyIGkgPSAxO1xuXHRpZighbmFtZSkgZm9yKDsgaSA8PSAweEZGRkY7ICsraSwgbmFtZSA9IHVuZGVmaW5lZCkgaWYod2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUgPSBcIlNoZWV0XCIgKyBpKSA9PSAtMSkgYnJlYWs7XG5cdGlmKCFuYW1lIHx8IHdiLlNoZWV0TmFtZXMubGVuZ3RoID49IDB4RkZGRikgdGhyb3cgbmV3IEVycm9yKFwiVG9vIG1hbnkgd29ya3NoZWV0c1wiKTtcblx0aWYocm9sbCAmJiB3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSkgPj0gMCkge1xuXHRcdHZhciBtID0gbmFtZS5tYXRjaCgvKF4uKj8pKFxcZCspJC8pO1xuXHRcdGkgPSBtICYmICttWzJdIHx8IDA7XG5cdFx0dmFyIHJvb3QgPSBtICYmIG1bMV0gfHwgbmFtZTtcblx0XHRmb3IoKytpOyBpIDw9IDB4RkZGRjsgKytpKSBpZih3Yi5TaGVldE5hbWVzLmluZGV4T2YobmFtZSA9IHJvb3QgKyBpKSA9PSAtMSkgYnJlYWs7XG5cdH1cblx0Y2hlY2tfd3NfbmFtZShuYW1lKTtcblx0aWYod2IuU2hlZXROYW1lcy5pbmRleE9mKG5hbWUpID49IDApIHRocm93IG5ldyBFcnJvcihcIldvcmtzaGVldCB3aXRoIG5hbWUgfFwiICsgbmFtZSArIFwifCBhbHJlYWR5IGV4aXN0cyFcIik7XG5cblx0d2IuU2hlZXROYW1lcy5wdXNoKG5hbWUpO1xuXHR3Yi5TaGVldHNbbmFtZV0gPSB3cztcblx0cmV0dXJuIG5hbWU7XG59XG5cbi8qIHNldCBzaGVldCB2aXNpYmlsaXR5ICh2aXNpYmxlL2hpZGRlbi92ZXJ5IGhpZGRlbikgKi9cbmZ1bmN0aW9uIGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHkod2IvKjpXb3JrYm9vayovLCBzaC8qOm51bWJlcnxzdHJpbmcqLywgdmlzLyo6bnVtYmVyKi8pIHtcblx0aWYoIXdiLldvcmtib29rKSB3Yi5Xb3JrYm9vayA9IHt9O1xuXHRpZighd2IuV29ya2Jvb2suU2hlZXRzKSB3Yi5Xb3JrYm9vay5TaGVldHMgPSBbXTtcblxuXHR2YXIgaWR4ID0gd2Jfc2hlZXRfaWR4KHdiLCBzaCk7XG5cdC8vICRGbG93SWdub3JlXG5cdGlmKCF3Yi5Xb3JrYm9vay5TaGVldHNbaWR4XSkgd2IuV29ya2Jvb2suU2hlZXRzW2lkeF0gPSB7fTtcblxuXHRzd2l0Y2godmlzKSB7XG5cdFx0Y2FzZSAwOiBjYXNlIDE6IGNhc2UgMjogYnJlYWs7XG5cdFx0ZGVmYXVsdDogdGhyb3cgbmV3IEVycm9yKFwiQmFkIHNoZWV0IHZpc2liaWxpdHkgc2V0dGluZyBcIiArIHZpcyk7XG5cdH1cblx0Ly8gJEZsb3dJZ25vcmVcblx0d2IuV29ya2Jvb2suU2hlZXRzW2lkeF0uSGlkZGVuID0gdmlzO1xufVxuXG4vKiBzZXQgbnVtYmVyIGZvcm1hdCAqL1xuZnVuY3Rpb24gY2VsbF9zZXRfbnVtYmVyX2Zvcm1hdChjZWxsLyo6Q2VsbCovLCBmbXQvKjpzdHJpbmd8bnVtYmVyKi8pIHtcblx0Y2VsbC56ID0gZm10O1xuXHRyZXR1cm4gY2VsbDtcbn1cblxuLyogc2V0IGNlbGwgaHlwZXJsaW5rICovXG5mdW5jdGlvbiBjZWxsX3NldF9oeXBlcmxpbmsoY2VsbC8qOkNlbGwqLywgdGFyZ2V0Lyo6c3RyaW5nKi8sIHRvb2x0aXAvKjo/c3RyaW5nKi8pIHtcblx0aWYoIXRhcmdldCkge1xuXHRcdGRlbGV0ZSBjZWxsLmw7XG5cdH0gZWxzZSB7XG5cdFx0Y2VsbC5sID0gKHsgVGFyZ2V0OiB0YXJnZXQgfS8qOkh5cGVybGluayovKTtcblx0XHRpZih0b29sdGlwKSBjZWxsLmwuVG9vbHRpcCA9IHRvb2x0aXA7XG5cdH1cblx0cmV0dXJuIGNlbGw7XG59XG5mdW5jdGlvbiBjZWxsX3NldF9pbnRlcm5hbF9saW5rKGNlbGwvKjpDZWxsKi8sIHJhbmdlLyo6c3RyaW5nKi8sIHRvb2x0aXAvKjo/c3RyaW5nKi8pIHsgcmV0dXJuIGNlbGxfc2V0X2h5cGVybGluayhjZWxsLCBcIiNcIiArIHJhbmdlLCB0b29sdGlwKTsgfVxuXG4vKiBhZGQgdG8gY2VsbCBjb21tZW50cyAqL1xuZnVuY3Rpb24gY2VsbF9hZGRfY29tbWVudChjZWxsLyo6Q2VsbCovLCB0ZXh0Lyo6c3RyaW5nKi8sIGF1dGhvci8qOj9zdHJpbmcqLykge1xuXHRpZighY2VsbC5jKSBjZWxsLmMgPSBbXTtcblx0Y2VsbC5jLnB1c2goe3Q6dGV4dCwgYTphdXRob3J8fFwiU2hlZXRKU1wifSk7XG59XG5cbi8qIHNldCBhcnJheSBmb3JtdWxhIGFuZCBmbHVzaCByZWxhdGVkIGNlbGxzICovXG5mdW5jdGlvbiBzaGVldF9zZXRfYXJyYXlfZm9ybXVsYSh3cy8qOldvcmtzaGVldCovLCByYW5nZSwgZm9ybXVsYS8qOnN0cmluZyovLCBkeW5hbWljLyo6Ym9vbGVhbiovKSB7XG5cdHZhciBybmcgPSB0eXBlb2YgcmFuZ2UgIT0gXCJzdHJpbmdcIiA/IHJhbmdlIDogc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpO1xuXHR2YXIgcm5nc3RyID0gdHlwZW9mIHJhbmdlID09IFwic3RyaW5nXCIgPyByYW5nZSA6IGVuY29kZV9yYW5nZShyYW5nZSk7XG5cdGZvcih2YXIgUiA9IHJuZy5zLnI7IFIgPD0gcm5nLmUucjsgKytSKSBmb3IodmFyIEMgPSBybmcucy5jOyBDIDw9IHJuZy5lLmM7ICsrQykge1xuXHRcdHZhciBjZWxsID0gd3NfZ2V0X2NlbGxfc3R1Yih3cywgUiwgQyk7XG5cdFx0Y2VsbC50ID0gJ24nO1xuXHRcdGNlbGwuRiA9IHJuZ3N0cjtcblx0XHRkZWxldGUgY2VsbC52O1xuXHRcdGlmKFIgPT0gcm5nLnMuciAmJiBDID09IHJuZy5zLmMpIHtcblx0XHRcdGNlbGwuZiA9IGZvcm11bGE7XG5cdFx0XHRpZihkeW5hbWljKSBjZWxsLkQgPSB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gd3M7XG59XG5cbnZhciB1dGlscy8qOmFueSovID0ge1xuXHRlbmNvZGVfY29sOiBlbmNvZGVfY29sLFxuXHRlbmNvZGVfcm93OiBlbmNvZGVfcm93LFxuXHRlbmNvZGVfY2VsbDogZW5jb2RlX2NlbGwsXG5cdGVuY29kZV9yYW5nZTogZW5jb2RlX3JhbmdlLFxuXHRkZWNvZGVfY29sOiBkZWNvZGVfY29sLFxuXHRkZWNvZGVfcm93OiBkZWNvZGVfcm93LFxuXHRzcGxpdF9jZWxsOiBzcGxpdF9jZWxsLFxuXHRkZWNvZGVfY2VsbDogZGVjb2RlX2NlbGwsXG5cdGRlY29kZV9yYW5nZTogZGVjb2RlX3JhbmdlLFxuXHRmb3JtYXRfY2VsbDogZm9ybWF0X2NlbGwsXG5cdHNoZWV0X2FkZF9hb2E6IHNoZWV0X2FkZF9hb2EsXG5cdHNoZWV0X2FkZF9qc29uOiBzaGVldF9hZGRfanNvbixcblx0c2hlZXRfYWRkX2RvbTogc2hlZXRfYWRkX2RvbSxcblx0YW9hX3RvX3NoZWV0OiBhb2FfdG9fc2hlZXQsXG5cdGpzb25fdG9fc2hlZXQ6IGpzb25fdG9fc2hlZXQsXG5cdHRhYmxlX3RvX3NoZWV0OiBwYXJzZV9kb21fdGFibGUsXG5cdHRhYmxlX3RvX2Jvb2s6IHRhYmxlX3RvX2Jvb2ssXG5cdHNoZWV0X3RvX2Nzdjogc2hlZXRfdG9fY3N2LFxuXHRzaGVldF90b190eHQ6IHNoZWV0X3RvX3R4dCxcblx0c2hlZXRfdG9fanNvbjogc2hlZXRfdG9fanNvbixcblx0c2hlZXRfdG9faHRtbDogc2hlZXRfdG9faHRtbCxcblx0c2hlZXRfdG9fZm9ybXVsYWU6IHNoZWV0X3RvX2Zvcm11bGFlLFxuXHRzaGVldF90b19yb3dfb2JqZWN0X2FycmF5OiBzaGVldF90b19qc29uLFxuXHRzaGVldF9nZXRfY2VsbDogd3NfZ2V0X2NlbGxfc3R1Yixcblx0Ym9va19uZXc6IGJvb2tfbmV3LFxuXHRib29rX2FwcGVuZF9zaGVldDogYm9va19hcHBlbmRfc2hlZXQsXG5cdGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHk6IGJvb2tfc2V0X3NoZWV0X3Zpc2liaWxpdHksXG5cdGNlbGxfc2V0X251bWJlcl9mb3JtYXQ6IGNlbGxfc2V0X251bWJlcl9mb3JtYXQsXG5cdGNlbGxfc2V0X2h5cGVybGluazogY2VsbF9zZXRfaHlwZXJsaW5rLFxuXHRjZWxsX3NldF9pbnRlcm5hbF9saW5rOiBjZWxsX3NldF9pbnRlcm5hbF9saW5rLFxuXHRjZWxsX2FkZF9jb21tZW50OiBjZWxsX2FkZF9jb21tZW50LFxuXHRzaGVldF9zZXRfYXJyYXlfZm9ybXVsYTogc2hlZXRfc2V0X2FycmF5X2Zvcm11bGEsXG5cdGNvbnN0czoge1xuXHRcdFNIRUVUX1ZJU0lCTEU6IDAsXG5cdFx0U0hFRVRfSElEREVOOiAxLFxuXHRcdFNIRUVUX1ZFUllfSElEREVOOiAyXG5cdH1cbn07XG5cbnZhciBfUmVhZGFibGU7XG5mdW5jdGlvbiBzZXRfcmVhZGFibGUoUikgeyBfUmVhZGFibGUgPSBSOyB9XG5cbmZ1bmN0aW9uIHdyaXRlX2Nzdl9zdHJlYW0oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pIHtcblx0dmFyIHN0cmVhbSA9IF9SZWFkYWJsZSgpO1xuXHR2YXIgbyA9IG9wdHMgPT0gbnVsbCA/IHt9IDogb3B0cztcblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgeyBzdHJlYW0ucHVzaChudWxsKTsgcmV0dXJuIHN0cmVhbTsgfVxuXHR2YXIgciA9IHNhZmVfZGVjb2RlX3JhbmdlKHNoZWV0W1wiIXJlZlwiXSk7XG5cdHZhciBGUyA9IG8uRlMgIT09IHVuZGVmaW5lZCA/IG8uRlMgOiBcIixcIiwgZnMgPSBGUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgUlMgPSBvLlJTICE9PSB1bmRlZmluZWQgPyBvLlJTIDogXCJcXG5cIiwgcnMgPSBSUy5jaGFyQ29kZUF0KDApO1xuXHR2YXIgZW5kcmVnZXggPSBuZXcgUmVnRXhwKChGUz09XCJ8XCIgPyBcIlxcXFx8XCIgOiBGUykrXCIrJFwiKTtcblx0dmFyIHJvdy8qOj9zdHJpbmcqLyA9IFwiXCIsIGNvbHMvKjpBcnJheTxzdHJpbmc+Ki8gPSBbXTtcblx0by5kZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcih2YXIgQyA9IHIucy5jOyBDIDw9IHIuZS5jOyArK0MpIGlmICghKChjb2xpbmZvW0NdfHx7fSkuaGlkZGVuKSkgY29sc1tDXSA9IGVuY29kZV9jb2woQyk7XG5cdHZhciBSID0gci5zLnI7XG5cdHZhciBCT00gPSBmYWxzZSwgdyA9IDA7XG5cdHN0cmVhbS5fcmVhZCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKCFCT00pIHsgQk9NID0gdHJ1ZTsgcmV0dXJuIHN0cmVhbS5wdXNoKFwiXFx1RkVGRlwiKTsgfVxuXHRcdHdoaWxlKFIgPD0gci5lLnIpIHtcblx0XHRcdCsrUjtcblx0XHRcdGlmICgocm93aW5mb1tSLTFdfHx7fSkuaGlkZGVuKSBjb250aW51ZTtcblx0XHRcdHJvdyA9IG1ha2VfY3N2X3JvdyhzaGVldCwgciwgUi0xLCBjb2xzLCBmcywgcnMsIEZTLCBvKTtcblx0XHRcdGlmKHJvdyAhPSBudWxsKSB7XG5cdFx0XHRcdGlmKG8uc3RyaXApIHJvdyA9IHJvdy5yZXBsYWNlKGVuZHJlZ2V4LFwiXCIpO1xuXHRcdFx0XHRpZihyb3cgfHwgKG8uYmxhbmtyb3dzICE9PSBmYWxzZSkpIHJldHVybiBzdHJlYW0ucHVzaCgodysrID8gUlMgOiBcIlwiKSArIHJvdyk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcblx0fTtcblx0cmV0dXJuIHN0cmVhbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfaHRtbF9zdHJlYW0od3MvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJIVE1MT3B0cyovKSB7XG5cdHZhciBzdHJlYW0gPSBfUmVhZGFibGUoKTtcblxuXHR2YXIgbyA9IG9wdHMgfHwge307XG5cdHZhciBoZWFkZXIgPSBvLmhlYWRlciAhPSBudWxsID8gby5oZWFkZXIgOiBIVE1MX0JFR0lOO1xuXHR2YXIgZm9vdGVyID0gby5mb290ZXIgIT0gbnVsbCA/IG8uZm9vdGVyIDogSFRNTF9FTkQ7XG5cdHN0cmVhbS5wdXNoKGhlYWRlcik7XG5cdHZhciByID0gZGVjb2RlX3JhbmdlKHdzWychcmVmJ10pO1xuXHRvLmRlbnNlID0gQXJyYXkuaXNBcnJheSh3cyk7XG5cdHN0cmVhbS5wdXNoKG1ha2VfaHRtbF9wcmVhbWJsZSh3cywgciwgbykpO1xuXHR2YXIgUiA9IHIucy5yO1xuXHR2YXIgZW5kID0gZmFsc2U7XG5cdHN0cmVhbS5fcmVhZCA9IGZ1bmN0aW9uKCkge1xuXHRcdGlmKFIgPiByLmUucikge1xuXHRcdFx0aWYoIWVuZCkgeyBlbmQgPSB0cnVlOyBzdHJlYW0ucHVzaChcIjwvdGFibGU+XCIgKyBmb290ZXIpOyB9XG5cdFx0XHRyZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG5cdFx0fVxuXHRcdHdoaWxlKFIgPD0gci5lLnIpIHtcblx0XHRcdHN0cmVhbS5wdXNoKG1ha2VfaHRtbF9yb3cod3MsIHIsIFIsIG8pKTtcblx0XHRcdCsrUjtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fTtcblx0cmV0dXJuIHN0cmVhbTtcbn1cblxuZnVuY3Rpb24gd3JpdGVfanNvbl9zdHJlYW0oc2hlZXQvKjpXb3Jrc2hlZXQqLywgb3B0cy8qOj9TaGVldDJDU1ZPcHRzKi8pIHtcblx0dmFyIHN0cmVhbSA9IF9SZWFkYWJsZSh7b2JqZWN0TW9kZTp0cnVlfSk7XG5cblx0aWYoc2hlZXQgPT0gbnVsbCB8fCBzaGVldFtcIiFyZWZcIl0gPT0gbnVsbCkgeyBzdHJlYW0ucHVzaChudWxsKTsgcmV0dXJuIHN0cmVhbTsgfVxuXHR2YXIgdmFsID0ge3Q6J24nLHY6MH0sIGhlYWRlciA9IDAsIG9mZnNldCA9IDEsIGhkci8qOkFycmF5PGFueT4qLyA9IFtdLCB2PTAsIHZ2PVwiXCI7XG5cdHZhciByID0ge3M6e3I6MCxjOjB9LGU6e3I6MCxjOjB9fTtcblx0dmFyIG8gPSBvcHRzIHx8IHt9O1xuXHR2YXIgcmFuZ2UgPSBvLnJhbmdlICE9IG51bGwgPyBvLnJhbmdlIDogc2hlZXRbXCIhcmVmXCJdO1xuXHRpZihvLmhlYWRlciA9PT0gMSkgaGVhZGVyID0gMTtcblx0ZWxzZSBpZihvLmhlYWRlciA9PT0gXCJBXCIpIGhlYWRlciA9IDI7XG5cdGVsc2UgaWYoQXJyYXkuaXNBcnJheShvLmhlYWRlcikpIGhlYWRlciA9IDM7XG5cdHN3aXRjaCh0eXBlb2YgcmFuZ2UpIHtcblx0XHRjYXNlICdzdHJpbmcnOiByID0gc2FmZV9kZWNvZGVfcmFuZ2UocmFuZ2UpOyBicmVhaztcblx0XHRjYXNlICdudW1iZXInOiByID0gc2FmZV9kZWNvZGVfcmFuZ2Uoc2hlZXRbXCIhcmVmXCJdKTsgci5zLnIgPSByYW5nZTsgYnJlYWs7XG5cdFx0ZGVmYXVsdDogciA9IHJhbmdlO1xuXHR9XG5cdGlmKGhlYWRlciA+IDApIG9mZnNldCA9IDA7XG5cdHZhciByciA9IGVuY29kZV9yb3coci5zLnIpO1xuXHR2YXIgY29scy8qOkFycmF5PHN0cmluZz4qLyA9IFtdO1xuXHR2YXIgY291bnRlciA9IDA7XG5cdHZhciBkZW5zZSA9IEFycmF5LmlzQXJyYXkoc2hlZXQpO1xuXHR2YXIgUiA9IHIucy5yLCBDID0gMDtcblx0dmFyIGhlYWRlcl9jbnQgPSB7fTtcblx0aWYoZGVuc2UgJiYgIXNoZWV0W1JdKSBzaGVldFtSXSA9IFtdO1xuXHR2YXIgY29saW5mby8qOkFycmF5PENvbEluZm8+Ki8gPSBvLnNraXBIaWRkZW4gJiYgc2hlZXRbXCIhY29sc1wiXSB8fCBbXTtcblx0dmFyIHJvd2luZm8vKjpBcnJheTxSb3dJbmZvPiovID0gby5za2lwSGlkZGVuICYmIHNoZWV0W1wiIXJvd3NcIl0gfHwgW107XG5cdGZvcihDID0gci5zLmM7IEMgPD0gci5lLmM7ICsrQykge1xuXHRcdGlmKCgoY29saW5mb1tDXXx8e30pLmhpZGRlbikpIGNvbnRpbnVlO1xuXHRcdGNvbHNbQ10gPSBlbmNvZGVfY29sKEMpO1xuXHRcdHZhbCA9IGRlbnNlID8gc2hlZXRbUl1bQ10gOiBzaGVldFtjb2xzW0NdICsgcnJdO1xuXHRcdHN3aXRjaChoZWFkZXIpIHtcblx0XHRcdGNhc2UgMTogaGRyW0NdID0gQyAtIHIucy5jOyBicmVhaztcblx0XHRcdGNhc2UgMjogaGRyW0NdID0gY29sc1tDXTsgYnJlYWs7XG5cdFx0XHRjYXNlIDM6IGhkcltDXSA9IG8uaGVhZGVyW0MgLSByLnMuY107IGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0aWYodmFsID09IG51bGwpIHZhbCA9IHt3OiBcIl9fRU1QVFlcIiwgdDogXCJzXCJ9O1xuXHRcdFx0XHR2diA9IHYgPSBmb3JtYXRfY2VsbCh2YWwsIG51bGwsIG8pO1xuXHRcdFx0XHRjb3VudGVyID0gaGVhZGVyX2NudFt2XSB8fCAwO1xuXHRcdFx0XHRpZighY291bnRlcikgaGVhZGVyX2NudFt2XSA9IDE7XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdGRvIHsgdnYgPSB2ICsgXCJfXCIgKyAoY291bnRlcisrKTsgfSB3aGlsZShoZWFkZXJfY250W3Z2XSk7IGhlYWRlcl9jbnRbdl0gPSBjb3VudGVyO1xuXHRcdFx0XHRcdGhlYWRlcl9jbnRbdnZdID0gMTtcblx0XHRcdFx0fVxuXHRcdFx0XHRoZHJbQ10gPSB2djtcblx0XHR9XG5cdH1cblx0UiA9IHIucy5yICsgb2Zmc2V0O1xuXHRzdHJlYW0uX3JlYWQgPSBmdW5jdGlvbigpIHtcblx0XHR3aGlsZShSIDw9IHIuZS5yKSB7XG5cdFx0XHRpZiAoKHJvd2luZm9bUi0xXXx8e30pLmhpZGRlbikgY29udGludWU7XG5cdFx0XHR2YXIgcm93ID0gbWFrZV9qc29uX3JvdyhzaGVldCwgciwgUiwgY29scywgaGVhZGVyLCBoZHIsIGRlbnNlLCBvKTtcblx0XHRcdCsrUjtcblx0XHRcdGlmKChyb3cuaXNlbXB0eSA9PT0gZmFsc2UpIHx8IChoZWFkZXIgPT09IDEgPyBvLmJsYW5rcm93cyAhPT0gZmFsc2UgOiAhIW8uYmxhbmtyb3dzKSkge1xuXHRcdFx0XHRzdHJlYW0ucHVzaChyb3cucm93KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc3RyZWFtLnB1c2gobnVsbCk7XG5cdH07XG5cdHJldHVybiBzdHJlYW07XG59XG5cbnZhciBfX3N0cmVhbSA9IHtcblx0dG9fanNvbjogd3JpdGVfanNvbl9zdHJlYW0sXG5cdHRvX2h0bWw6IHdyaXRlX2h0bWxfc3RyZWFtLFxuXHR0b19jc3Y6IHdyaXRlX2Nzdl9zdHJlYW0sXG4gIHNldF9yZWFkYWJsZTogc2V0X3JlYWRhYmxlXG59O1xuZXhwb3J0IGNvbnN0IHZlcnNpb24gPSBYTFNYLnZlcnNpb247XG5leHBvcnQge1xuXHRwYXJzZV94bHNjZmIsXG5cdHBhcnNlX3ppcCxcblx0cmVhZFN5bmMgYXMgcmVhZCxcblx0cmVhZEZpbGVTeW5jIGFzIHJlYWRGaWxlLFxuXHRyZWFkRmlsZVN5bmMsXG5cdHdyaXRlU3luYyBhcyB3cml0ZSxcblx0d3JpdGVGaWxlU3luYyBhcyB3cml0ZUZpbGUsXG5cdHdyaXRlRmlsZVN5bmMsXG5cdHdyaXRlRmlsZUFzeW5jLFxuXHR3cml0ZVN5bmNYTFNYIGFzIHdyaXRlWExTWCxcblx0d3JpdGVGaWxlU3luY1hMU1ggYXMgd3JpdGVGaWxlWExTWCxcblx0dXRpbHMsXG5cdF9fc3RyZWFtIGFzIHN0cmVhbSxcblx0U1NGLFxuXHRDRkJcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG4vLyDmnaXmupDkuo7nvZHnu5wg5pyJ57uG5b6u5pS55YqoXG5cbmltcG9ydCAnLi9fYmxvYidcbmltcG9ydCBGaWxlU2F2ZXIgZnJvbSAnZmlsZS1zYXZlcidcbmltcG9ydCAqIGFzIFhMU1ggZnJvbSAneGxzeCdcblxuZnVuY3Rpb24gZ2VuZXJhdGVBcnJheSh0YWJsZSkge1xuICAgIHZhciBvdXQgPSBbXTtcbiAgICB2YXIgcm93cyA9IHRhYmxlLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RyJyk7XG4gICAgdmFyIHJhbmdlcyA9IFtdO1xuICAgIGZvciAodmFyIFIgPSAwOyBSIDwgcm93cy5sZW5ndGg7ICsrUikge1xuICAgICAgICB2YXIgb3V0Um93ID0gW107XG4gICAgICAgIHZhciByb3cgPSByb3dzW1JdO1xuICAgICAgICB2YXIgY29sdW1ucyA9IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCd0ZCcpO1xuICAgICAgICBmb3IgKHZhciBDID0gMDsgQyA8IGNvbHVtbnMubGVuZ3RoOyArK0MpIHtcbiAgICAgICAgICAgIHZhciBjZWxsID0gY29sdW1uc1tDXTtcbiAgICAgICAgICAgIHZhciBjb2xzcGFuID0gY2VsbC5nZXRBdHRyaWJ1dGUoJ2NvbHNwYW4nKTtcbiAgICAgICAgICAgIHZhciByb3dzcGFuID0gY2VsbC5nZXRBdHRyaWJ1dGUoJ3Jvd3NwYW4nKTtcbiAgICAgICAgICAgIHZhciBjZWxsVmFsdWUgPSBjZWxsLmlubmVyVGV4dDtcbiAgICAgICAgICAgIGlmIChjZWxsVmFsdWUgIT09IFwiXCIgJiYgY2VsbFZhbHVlID09ICtjZWxsVmFsdWUpIGNlbGxWYWx1ZSA9ICtjZWxsVmFsdWU7XG5cbiAgICAgICAgICAgIC8vU2tpcCByYW5nZXNcbiAgICAgICAgICAgIHJhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uIChyYW5nZSkge1xuICAgICAgICAgICAgICAgIGlmIChSID49IHJhbmdlLnMuciAmJiBSIDw9IHJhbmdlLmUuciAmJiBvdXRSb3cubGVuZ3RoID49IHJhbmdlLnMuYyAmJiBvdXRSb3cubGVuZ3RoIDw9IHJhbmdlLmUuYykge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8PSByYW5nZS5lLmMgLSByYW5nZS5zLmM7ICsraSkgb3V0Um93LnB1c2gobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIC8vSGFuZGxlIFJvdyBTcGFuXG4gICAgICAgICAgICBpZiAocm93c3BhbiB8fCBjb2xzcGFuKSB7XG4gICAgICAgICAgICAgICAgcm93c3BhbiA9IHJvd3NwYW4gfHwgMTtcbiAgICAgICAgICAgICAgICBjb2xzcGFuID0gY29sc3BhbiB8fCAxO1xuICAgICAgICAgICAgICAgIHJhbmdlcy5wdXNoKHtzOiB7cjogUiwgYzogb3V0Um93Lmxlbmd0aH0sIGU6IHtyOiBSICsgcm93c3BhbiAtIDEsIGM6IG91dFJvdy5sZW5ndGggKyBjb2xzcGFuIC0gMX19KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDtcblxuICAgICAgICAgICAgLy9IYW5kbGUgVmFsdWVcbiAgICAgICAgICAgIG91dFJvdy5wdXNoKGNlbGxWYWx1ZSAhPT0gXCJcIiA/IGNlbGxWYWx1ZSA6IG51bGwpO1xuXG4gICAgICAgICAgICAvL0hhbmRsZSBDb2xzcGFuXG4gICAgICAgICAgICBpZiAoY29sc3BhbikgZm9yICh2YXIgayA9IDA7IGsgPCBjb2xzcGFuIC0gMTsgKytrKSBvdXRSb3cucHVzaChudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBvdXQucHVzaChvdXRSb3cpO1xuICAgIH1cbiAgICByZXR1cm4gW291dCwgcmFuZ2VzXTtcbn07XG5cbmZ1bmN0aW9uIGRhdGVudW0odiwgZGF0ZTE5MDQpIHtcbiAgICBpZiAoZGF0ZTE5MDQpIHYgKz0gMTQ2MjtcbiAgICB2YXIgZXBvY2ggPSBEYXRlLnBhcnNlKHYpO1xuICAgIHJldHVybiAoZXBvY2ggLSBuZXcgRGF0ZShEYXRlLlVUQygxODk5LCAxMSwgMzApKSkgLyAoMjQgKiA2MCAqIDYwICogMTAwMCk7XG59XG5cbmZ1bmN0aW9uIHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEsIG9wdHM9e30pIHtcbiAgICB2YXIgd3MgPSB7fTtcbiAgICB2YXIgcmFuZ2UgPSB7czoge2M6IDEwMDAwMDAwLCByOiAxMDAwMDAwMH0sIGU6IHtjOiAwLCByOiAwfX07XG4gICAgZm9yICh2YXIgUiA9IDA7IFIgIT0gZGF0YS5sZW5ndGg7ICsrUikge1xuICAgICAgICBmb3IgKHZhciBDID0gMDsgQyAhPSBkYXRhW1JdLmxlbmd0aDsgKytDKSB7XG4gICAgICAgICAgICBpZiAocmFuZ2Uucy5yID4gUikgcmFuZ2Uucy5yID0gUjtcbiAgICAgICAgICAgIGlmIChyYW5nZS5zLmMgPiBDKSByYW5nZS5zLmMgPSBDO1xuICAgICAgICAgICAgaWYgKHJhbmdlLmUuciA8IFIpIHJhbmdlLmUuciA9IFI7XG4gICAgICAgICAgICBpZiAocmFuZ2UuZS5jIDwgQykgcmFuZ2UuZS5jID0gQztcbiAgICAgICAgICAgIHZhciBjZWxsID0ge3Y6IGRhdGFbUl1bQ119O1xuICAgICAgICAgICAgaWYgKGNlbGwudiA9PSBudWxsKSBjb250aW51ZTtcbiAgICAgICAgICAgIHZhciBjZWxsX3JlZiA9IFhMU1gudXRpbHMuZW5jb2RlX2NlbGwoe2M6IEMsIHI6IFJ9KTtcblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLnYgPT09ICdudW1iZXInKSBjZWxsLnQgPSAnbic7XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgY2VsbC52ID09PSAnYm9vbGVhbicpIGNlbGwudCA9ICdiJztcbiAgICAgICAgICAgIGVsc2UgaWYgKGNlbGwudiBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBjZWxsLnQgPSAnbic7XG4gICAgICAgICAgICAgICAgY2VsbC56ID0gWExTWC5TU0YuX3RhYmxlWzE0XTtcbiAgICAgICAgICAgICAgICBjZWxsLnYgPSBkYXRlbnVtKGNlbGwudik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGNlbGwudCA9ICdzJztcbiAgICAgICAgICAgIHdzW2NlbGxfcmVmXSA9IGNlbGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJhbmdlLnMuYyA8IDEwMDAwMDAwKSB3c1snIXJlZiddID0gWExTWC51dGlscy5lbmNvZGVfcmFuZ2UocmFuZ2UpO1xuICAgIHJldHVybiB3cztcbn1cblxuZnVuY3Rpb24gV29ya2Jvb2soKSB7XG4gICAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFdvcmtib29rKSkgcmV0dXJuIG5ldyBXb3JrYm9vaygpO1xuICAgIHRoaXMuU2hlZXROYW1lcyA9IFtdO1xuICAgIHRoaXMuU2hlZXRzID0ge307XG59XG5cbmZ1bmN0aW9uIHMyYWIocykge1xuICAgIHZhciBidWYgPSBuZXcgQXJyYXlCdWZmZXIocy5sZW5ndGgpO1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSAhPSBzLmxlbmd0aDsgKytpKSB2aWV3W2ldID0gcy5jaGFyQ29kZUF0KGkpICYgMHhGRjtcbiAgICByZXR1cm4gYnVmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0X3RhYmxlX3RvX2V4Y2VsKGlkKSB7XG4gICAgdmFyIHRoZVRhYmxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIHZhciBvbyA9IGdlbmVyYXRlQXJyYXkodGhlVGFibGUpO1xuICAgIHZhciByYW5nZXMgPSBvb1sxXTtcblxuICAgIC8qIG9yaWdpbmFsIGRhdGEgKi9cbiAgICB2YXIgZGF0YSA9IG9vWzBdO1xuICAgIHZhciB3c19uYW1lID0gXCJTaGVldEpTXCI7XG5cbiAgICB2YXIgd2IgPSBuZXcgV29ya2Jvb2soKSwgd3MgPSBzaGVldF9mcm9tX2FycmF5X29mX2FycmF5cyhkYXRhKTtcblxuICAgIC8qIGFkZCByYW5nZXMgdG8gd29ya3NoZWV0ICovXG4gICAgLy8gd3NbJyFjb2xzJ10gPSBbJ2FwcGxlJywgJ2JhbmFuJ107XG4gICAgd3NbJyFtZXJnZXMnXSA9IHJhbmdlcztcblxuICAgIC8qIGFkZCB3b3Jrc2hlZXQgdG8gd29ya2Jvb2sgKi9cbiAgICB3Yi5TaGVldE5hbWVzLnB1c2god3NfbmFtZSk7XG4gICAgd2IuU2hlZXRzW3dzX25hbWVdID0gd3M7XG5cbiAgICB2YXIgd2JvdXQgPSBYTFNYLndyaXRlKHdiLCB7Ym9va1R5cGU6ICd4bHN4JywgYm9va1NTVDogZmFsc2UsIHR5cGU6ICdiaW5hcnknfSk7XG5cbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKG5ldyBCbG9iKFtzMmFiKHdib3V0KV0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSksIFwidGVzdC54bHN4XCIpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHBvcnRfanNvbl90b19leGNlbCh0aCwganNvbkRhdGEsIGRlZmF1bHRUaXRsZSwgb3B0aW9ucyA9IHsgbWVyZ2VzOiBbXSwgaGVhZGVyOiBudWxsLGNvbHM6bnVsbCB9KSB7XG5cbiAgICAvKiBvcmlnaW5hbCBkYXRhICovXG5cbiAgICB2YXIgZGF0YSA9IGpzb25EYXRhO1xuICAgIGRhdGEudW5zaGlmdCh0aCk7XG4gICAgaWYgKG9wdGlvbnMuaGVhZGVyKSBkYXRhLnVuc2hpZnQoW29wdGlvbnMuaGVhZGVyXSk7XG4gICAgdmFyIHdzX25hbWUgPSBcIlNoZWV0SlNcIjtcblxuICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgfVxuICAgIHZhciB3YiA9IG5ldyBXb3JrYm9vaygpLCB3cyA9IHNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzKGRhdGEsb3B0cyk7XG5cbiAgICAvKiBhZGQgbWVyZ2VzIGFyZWEgdG8gd29ya3NoZWV0ICovXG4gICAgbGV0IHsgbWVyZ2VzIH0gPSBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgbWVyZ2VzWzBdID09ICdzdHJpbmcnICYmIG1lcmdlcy5sZW5ndGggPT0gMikgbWVyZ2VzID0gW21lcmdlc10gLy8ganVzdCBvbmUgIyBbJ0ExJywgJ0MxJ10gPSA+IFtbJ0ExJywgJ0MxJ11dXG4gICAgbWVyZ2VzID0gbWVyZ2VzLm1hcChpID0+IGkgaW5zdGFuY2VvZiBBcnJheSA/IHsgczogaVswXSwgZTogaVsxXSB9IDogaSk7IC8vIGJlIHNvcnQgOikgIyBbJ0ExJywgJ0MxJ10gPT4geyBzOiAnQTEnLCBlOiAnQzMnIH1cbiAgICB3c1snIW1lcmdlcyddID0gbWVyZ2VzO1xuXG4gICAgaWYob3B0aW9ucy5jb2xzKXtcbiAgICAgIHdzW1wiIWNvbHNcIl0gPSBvcHRpb25zLmNvbHM7XG4gICAgfVxuXG4gICAgLyogYWRkIHdvcmtzaGVldCB0byB3b3JrYm9vayAqL1xuICAgIHdiLlNoZWV0TmFtZXMucHVzaCh3c19uYW1lKTtcbiAgICB3Yi5TaGVldHNbd3NfbmFtZV0gPSB3cztcblxuICAgIHZhciB3Ym91dCA9IFhMU1gud3JpdGUod2IsIHtib29rVHlwZTogJ3hsc3gnLCBib29rU1NUOiBmYWxzZSwgdHlwZTogJ2JpbmFyeSd9KTtcbiAgICB2YXIgdGl0bGUgPSBkZWZhdWx0VGl0bGUgfHwgJ+WIl+ihqCdcbiAgICBGaWxlU2F2ZXIuc2F2ZUFzKG5ldyBCbG9iKFtzMmFiKHdib3V0KV0sIHt0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwifSksIHRpdGxlICsgXCIueGxzeFwiKVxufVxuIixudWxsLG51bGxdLCJuYW1lcyI6WyJkZWZhdWx0Q3J1ZE9wdGlvbnMiLCJjdHgiLCJvcHRzIiwiY3QiLCJuYW1lIiwiY29tcHV0ZWQiLCJ1aSIsInVpQ29udGV4dCIsInRyaWdnZXIiLCJkb0Nsb3NlIiwicmVzZXQiLCJzdWJtaXQiLCJ0b3RhbCIsImdldENhbGxlckluZm8iLCJfYSIsImJsYW5rIiwiYXJncyIsImxvZ0luZm8iLCJsb2dXYXJuIiwibG9nRXJyb3IiLCJlcnJvciIsIndhcm4iLCJpbmZvIiwiZGVidWciLCJjYWxsZXJJbmZvIiwibG9nIiwiY2FsbGVyIiwibG9nZ2VyIiwic2V0TG9nZ2VyIiwibGV2ZWwiLCJpc0VtcHR5IiwidmFsdWUiLCJpc0FsbEVtcHR5IiwidmFsdWVzIiwiaGFzRW1wdHkiLCJTdHJpbmdVdGlscyIsInRyYWNlIiwiZW5hYmxlIiwib25SZW5kZXJUcmlnZ2VyZWQiLCJldmVudCIsImNyZWF0ZUFzeW5jQ29tcG9uZW50IiwiZXMiLCJkZWZpbmVBc3luY0NvbXBvbmVudCIsInJldHJ5IiwiZmFpbCIsImF0dGVtcHRzIiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50IiwiYXBwIiwib3B0aW9ucyIsImFzeW5jQ29tcG9uZW50IiwiaW5zdGFsbEFzeW5jQ29tcG9uZW50cyIsIm1vZHVsZXMiLCJleGNsdWRlcyIsInBpY2tOYW1lRXhwIiwidHJhbnNmb3JtIiwiaW1wb3J0cyIsInRyYW5zZm9ybUZyb21HbG9iIiwiZm9yRWFjaCIsIml0ZW0iLCJrZXkiLCJpbnN0YWxsU3luY0NvbXBvbmVudHMiLCJjb21wb25lbnRzIiwicmVzdWx0IiwiY2FtZWxDYXNlIiwidXBwZXJGaXJzdCIsImxvYWRBc3luY0NvbXBvbmVudEZyb21HbG9iIiwibWFwIiwibG9hZENvbXBvbmVudEZyb21HbG9iIiwidml0ZSIsIlRhYmxlU3RvcmUiLCJfX3B1YmxpY0ZpZWxkIiwidGFibGVOYW1lIiwicHJlZml4IiwidGFibGVJZCIsInNhdmVkIiwidGFibGUiLCIkcm91dGUiLCJrZXlUeXBlIiwicnhBcnJJbmRleCIsInJ4VmFyTmFtZSIsInJ4UXVvdCIsImpvaW5QYXRocyIsInBhdGhzIiwiYWNjIiwicCIsImdldFBhdGhUb1N0cmluZyIsIl8iLCJwYXRoVG9TdHJpbmciLCJwYXRoIiwicHJlZml4ZXMiLCJ0eXBlIiwiaGFzIiwiaXNPYmplY3QiLCJnZXRJdGVyYXRlIiwiaXRlcmF0ZSIsIm9iaiIsImNhbGxiYWNrIiwiYnJva2VuIiwiYnJlYWtJdCIsImRlc2NyaWJlVmFsdWUiLCJwYXJlbnQiLCJjcCIsImkiLCJjaGlsZHJlbiIsImNvbnRleHRSZWFkZXIiLCJDb250ZXh0UmVhZGVyIiwiZXJyIiwic2NwIiwiZ2V0RWxlbWVudHMiLCJnZXRPd25DaGlsZHJlbiIsImNoaWxkcmVuUGF0aCIsInN0ckNoaWxkcmVuUGF0aCIsInN0ckNoaWxkUGF0aFByZWZpeCIsInJlcyIsInZhbCIsInN0ckNoaWxkUGF0aCIsInBhdGhGb3JtYXRTdHJpbmciLCJjaGlsZEtleSIsImFmdGVySXRlcmF0ZSIsImN1clBhcmVudCIsImlzT2JqZWN0RW1wdHkiLCJvd25Qcm9wZXJ0aWVzT25seSIsImdldEVhY2hEZWVwIiwiZWFjaERlZXAiLCJpZGVudGl0eSIsIm1lcmdlIiwiaXNTdHJpbmciLCJ0b1BhdGgiLCJkZWVwZGFzaCIsInV0aWxzIiwic3RyaW5ncyIsInN0b3JlIiwicmVmIiwic2tpcHMiLCJrZXlzIiwicEF0dHJzIiwiYW50ZHZDb2xzcGFuIiwibGFiZWxTcGFuIiwiYXNzaXN0IiwidXNlVWkiLCJidXR0b24iLCJjYXNjYWRlciIsInpoQ04iLCJlbiIsInQiLCJnZXQiLCJhcmciLCJpbmRleCIsIkkxOG4iLCJpbnN0YW5jZSIsImxvY2FsZXMiLCJtZXNzYWdlIiwiZnNDbG9uZSIsImNsb25lRGVlcCIsImkxOG4iLCJ1c2VJMThuIiwiZSIsIm1vZHVsZSIsInRoaXMiLCJyIiwibiIsInMiLCJhIiwiZGF5anMiLCJhZHZhbmNlZEZvcm1hdCIsImRvRm9ybWF0IiwiZGF0ZSIsImZvcm1hdCIsImRhdGVGb3JtYXR0ZXIiLCJkYXRlcmFuZ2VGb3JtYXR0ZXIiLCJkYXRldGltZXJhbmdlRm9ybWF0dGVyIiwiZiIsIm8iLCJ1IiwiZCIsIndlZWtkYXkiLCJsb2NhbGVEYXRhIiwid2Vla09mWWVhciIsImRhdGUkMSIsImJ1aWxkRGF0ZVZhbHVlIiwic2NvcGUiLCJyb3ciLCJlbCIsImljb24iLCJudW1iZXIkMSIsInBob25lJDEiLCJjb2x1bW4iLCJyZXQiLCJzZWxlY3QiLCJ0ZXh0IiwidHJlZSIsInR5cGVMaXN0IiwiZGVmYXVsdFR5cGVDcmVhdG9ycyIsImRlZmF1bHRUeXBlcyIsImdldFR5cGVzIiwiZ2V0VHlwZSIsImFkZFR5cGVzIiwibmV3VHlwZXMiLCJ0eXBlcyQxIiwiY3JlYXRvciIsIl9zZmNfbWFpbiREIiwiZGVmaW5lQ29tcG9uZW50IiwicGFnZVJlZiIsIm9uTW91bnRlZCIsIl9ob2lzdGVkXzEiLCJfaG9pc3RlZF8yIiwiX2hvaXN0ZWRfNCIsIiRzbG90cyIsIl9jdHgiLCJfY2FjaGUiLCIkcHJvcHMiLCIkc2V0dXAiLCIkZGF0YSIsIiRvcHRpb25zIiwiX29wZW5CbG9jayIsIl9jcmVhdGVFbGVtZW50QmxvY2siLCJfY3JlYXRlQ29tbWVudFZOb2RlIiwiX2NyZWF0ZUVsZW1lbnRWTm9kZSIsIl9ob2lzdGVkXzMiLCJpc1VuTWVyZ2VhYmxlIiwic3JjVmFsdWUiLCJVbk1lcmdlYWJsZSIsImlzUmVmIiwiaXNVbkNsb25lYWJsZSIsInRhcmdldCIsInNvdXJjZXMiLCJjdXN0b21pemVyIiwib2JqVmFsdWUiLCJpc0FycmF5IiwiZm91bmQiLCJtZXJnZVdpdGgiLCJjbG9uZURlZXBXaXRoIiwiVW5NZXJnZWFibGUkMSIsImNsb25lYWJsZSIsInVzZU1lcmdlIiwiaXNBc3luY0NvbXB1dGUiLCJBc3luY0NvbXB1dGVWYWx1ZSIsImlzU3luY0NvbXB1dGUiLCJDb21wdXRlVmFsdWUiLCJmaW5kQ29tcHV0ZVZhbHVlcyIsImlzQXN5bmMiLCJmb3VuZE1hcCIsImNoZWNrRnVuYyIsImNvbnRleHQiLCJleGNsdWRlIiwiaXNTaGFsbG93IiwiZG9Bc3luY0NvbXB1dGUiLCJkZXBlbmRBc3luY1ZhbHVlcyIsImdldENvbnRleHRGbiIsImFzeW5jVmFsdWVNYXAiLCJzZXRBc3luY0NvbXB1dGVWYWx1ZSIsImFzeW5jVmFsdWVzTWFwIiwidmFsdWVSZWYiLCJzZXQiLCJkb0NvbXB1dGVkIiwiZ2V0VGFyZ2V0RnVuYyIsInVzZXJDb21wdXRlZEZuIiwiZGVwZW5kVmFsdWVzIiwiYXN5bmNDb3VudCIsInN5bmNDb3VudCIsImNvbXB1dGVGbiIsImNvbXB1dGUiLCJhc3luY0ZuIiwiZGVmYXVsdFZhbHVlIiwiYXN5bmNSZWYiLCJjb21wdXRlZFZhbHVlIiwid2F0Y2giLCJhc3luY0NvbXB1dGUiLCJ1c2VDb21wdXRlIiwiQ29uc3RhbnRzIiwibWVyZ2VDb2x1bW5QbHVnaW5zIiwicmVnaXN0ZXJNZXJnZUNvbHVtblBsdWdpbiIsInBsdWdpbiIsInJlbW92ZSIsInB1c2giLCJzb3J0IiwiYiIsIm9yZGVyIiwibWVyZ2VDb2x1bW5EaWN0IiwiZGljdCIsImNvbXBvbmVudCIsInNoYWxsb3dSZWFjdGl2ZSIsImZvcm0iLCJtZXJnZUNvbHVtblR5cGUiLCJ0eXBlQ2hhaW4iLCJBcnJheSIsImJhc2UiLCJ0eXBlT3B0aW9ucyIsInR5cGVzIiwibWVyZ2VQbHVnaW5zIiwiaGFuZGxlIiwiY29sdW1uUHJvcHMiLCJjcnVkT3B0aW9ucyIsInNldHRpbmdzIiwidmlld0Zvcm1Vc2VDZWxsQ29tcG9uZW50Iiwidmlld0Zvcm1Db2x1bW4iLCJpbmNsdWRlcyIsInJlbmRlciIsIl9jcmVhdGVWTm9kZSIsInZpZXdGb3JtIiwiYWRkRm9ybSIsInJ1bGVzIiwicnVsZSIsImVkaXRGb3JtIiwic2VhcmNoIiwibWVyZ2VQbHVnaW4iLCJzZXR1cE9wdGlvbnNDb2x1bW5zIiwiY29sdW1ucyIsInVzZXJPcHRpb25zIiwiaW5pdGVkQ29sdW1ucyIsImJ1aWxkT3B0aW9uc0NvbHVtbnNGbGF0TWFwIiwiYnVpbGRUYWJsZUNvbHVtbnNGbGF0TWFwIiwiYnVpbGRUYWJsZUNvbHVtbiIsImNvbFRlbXBsYXRlIiwidGFibGVDb2x1bW4iLCJ0aXRsZSIsImJ1aWxkVGFibGVDb2x1bW5zIiwid3JhcHBlckN1c3RvbUNvbXBvbmVudCIsInJlYWN0aXZlIiwic2hhbGxvd1JlZiIsInRhYmxlQ29sdW1ucyIsImRvQ29sdW1uc1NvcnQiLCJkb0FycmF5U29ydCIsImFyciIsInNvcnRCeSIsIm9yZGVyRGVmYXVsdCIsImxpc3QiLCJzaXplIiwiY29sdW1uc0FyciIsImNvbHVtbnNNYXAiLCJidWlsZEZvcm1Db2x1bW5zIiwiY29sdW1uc0ZsYXRNYXAiLCJmb3JtVHlwZSIsImZvcm1Db2x1bW5zIiwiZm9ybUNvbHVtbiIsImJ1aWxkRm9ybSIsImJhc2VPcHRpb25zIiwib25Db21wbGV0ZSIsImJ1aWxkU2VhcmNoRm9ybSIsInNlYXJjaENvbHVtbnMiLCJmb3JtQ29sdW1uc0ZvclNlYXJjaCIsImNvcHlQcm9wcyIsInNlYXJjaENvcHlGb3JtUHJvcHMiLCJjb3B5RnJvbUNvbXBvc2l0aW9uQ29sdW1uIiwiZmllbGQiLCJjb21tb24iLCJkZWYiLCJwaWNrIiwiYnVpbGRGb3JtT3B0aW9ucyIsIm1vZGUiLCJkZWZhdWx0T3B0aW9ucyIsImNvbW1vbk9wdGlvbnMiLCJjcnVkRXhwb3NlIiwiYnVpbGRDb2x1bW5zIiwidG9vbGJhciIsImNvbHVtbnNGaWx0ZXIiLCJvcmlnaW5hbENvbHVtbnMiLCJkaXNhYmxlZCIsImVkaXRhYmxlIiwiZm9yRWFjaFRhYmxlQ29sdW1ucyIsImZvckVhY2hDb2x1bW5zIiwidXNlQ29sdW1ucyIsInNlZWQiLCJGc0Zvcm1XcmFwcGVyTGlzdCIsImNyZWF0ZUZvcm1XcmFwcGVyIiwiaWQiLCJjb250YWluZXIiLCJyZXNvbHZlIiwicmVqZWN0Iiwidk5vZGUiLCJjcmVhdGVWTm9kZSIsIkZzRm9ybVdyYXBwZXIiLCJ2bSIsInVzZUZvcm1XcmFwcGVyIiwicGQiLCJpbmplY3QiLCJvcGVuRGlhbG9nIiwib3BlbkNydWRGb3JtRGlhbG9nIiwiZm9ybU9wdGlvbnMiLCJkb01lcmdlIiwidXNlRWRpdGFibGUiLCJwcm9wcyIsImNydWRCaW5kaW5nIiwiX2MiLCJfYiIsImN1c3RvbVJvd0hhbmRsZUFjdGl2ZSIsIl9kIiwiX2UiLCJvbkVuYWJsZWQiLCJlZGl0YWJsZU9wdHMiLCJlZGl0YWJsZUlkIiwiZWRpdGFibGVSb3ciLCJpc0FkZCIsInNldERhdGEiLCJyb3dEYXRhIiwiZGF0YSIsInVzZUV4cG9zZSIsImNydWRSZWYiLCJmb3JtV3JhcHBlclByb3ZpZGVyIiwiY2hlY2tDcnVkUmVmIiwiY2hlY2tDcnVkQmluZGluZ1JlZiIsImZvcm1XcmFwcGVyUmVmIiwiZm9ybVJlZiIsInJlY29yZHMiLCJ0b1JhdyIsInZhbHVlQnVpbGRlckNvbHVtbnMiLCJjb2wiLCJwYWdlUXVlcnkiLCJwYWdlIiwic2VhcmNoRm9ybURhdGEiLCJxdWVyeSIsInVzZXJQYWdlUXVlcnkiLCJ1c2VyUGFnZVJlcyIsImRpc2FibGVMb2FkaW5nIiwidW5yZWYiLCJwYWdlUmVzIiwiY3VycmVudFBhZ2UiLCJwYWdlU2l6ZSIsImZzVGFibGVSZWYiLCJubyIsInRhYmxlUmVmIiwicm93S2V5IiwicmVtb3ZlQmluZGluZyIsImlzTG9jYWwiLCJyZW1vdmVTY29wZSIsImZvcm1PcHRzIiwieHhGb3JtIiwibG9hZEZzRXhwb3J0VXRpbCIsImVhY2giLCJsb2FkRnNJbXBvcnRVdGlsIiwiZGVmYXVsdERhdGFGb3JtYXR0ZXIiLCJvcmlnaW5hbFJvdyIsIm5vZGVzIiwibGFiZWwiLCJub2RlIiwiZXhwb3J0VGFibGUiLCJleHBvcnRDb2wiLCJleHBvcnRVdGlsIiwib3JpZ2luYWxEYXRhIiwic2VhcmNoUGFyYW1zIiwiY2xvbmUiLCJtYXBwaW5nIiwiZXhwT3B0cyIsImltcG9ydFRhYmxlIiwiaW1wb3J0RGF0YSIsImlzRWRpdGFibGUiLCJjcnVkT3B0aW9uc1BsdWdpbnMiLCJyZWdpc3RlckNydWRPcHRpb25zUGx1Z2luIiwiZ2V0Q3J1ZE9wdGlvbnNQbHVnaW4iLCJzZWxlY3Rpb24iLCJnZXRSb3dLZXkiLCJ0YWJsZUNJIiwiY2hhbmdlZCIsInNlbGVjdGVkUm93S2V5cyIsIm5leHRUaWNrIiwibW9iaWxlQWRhcHRvciIsInJvd0hhbmRsZSIsImJ1dHRvbnMiLCJuZXdCdXR0b25zIiwiYnV0dG9uc0tleSIsIndpZHRoUmVmIiwidXNlQ3J1ZCIsImV4cG9zZSIsImRvUmVmcmVzaCIsImRvVmFsdWVSZXNvbHZlIiwidXNlUGFnaW5hdGlvbiIsImN1cnJlbnQiLCJ1c2VGb3JtU3VibWl0IiwidXNlUm93SGFuZGxlIiwidXNlU2VhcmNoIiwiYmFzZVRhYmxlUmVmIiwidXNlVGFicyIsImZvcm1EYXRhIiwidXNlVG9vbGJhciIsImV4cG9ydGluZyIsIm9yaWdpbmFsIiwidXBkYXRlQ29sdW1ucyIsIm9sZCIsIm9sZENvbHVtbiIsIm5ld0NvbHVtbiIsIm5ld0NvbHVtbnMiLCJ1c2VUYWJsZSIsInNvcnRDaGFuZ2UiLCJpc1NlcnZlclNvcnQiLCJwcm9wIiwiYXNjIiwib2xkU29ydCIsInVzZUFjdGlvbmJhciIsImFjdGl2ZVJvd3MiLCJhZnRlclVzZUNydWQiLCJiaW5kaW5ncyIsInJlYnVpbGRDcnVkQmluZGluZ3MiLCJpbnB1dE9wdHMiLCJ1c2VyT3B0cyIsInBsdWdpbnMiLCJwbHVnIiwiYmVmb3JlIiwicGx1Z2luT3B0aW9ucyIsInJlc2V0Q3J1ZE9wdGlvbnMiLCJhcHBlbmRDcnVkT3B0aW9ucyIsIm92ZXJPcHRpb25zIiwibmV3T3B0aW9ucyIsImFwcGVuZENydWRCaW5kaW5nIiwidXNlRnNJbXBsIiwiY3JlYXRlQ3J1ZE9wdGlvbnMiLCJjcnVkRXhwb3NlUmVmIiwiY3JlYXRlQ3J1ZE9wdGlvbnNSZXQiLCJpbml0Q3J1ZCIsInVzZUNydWRQcm9wcyIsInVzZUNydWRSZXQiLCJ1c2VGcyIsInVzZUZzQXN5bmMiLCJ1c2VGc1JlZiIsInVzZURpY3QiLCJ2TW9kZWwiLCJjcmVhdGVDb21wdXRlZE9wdGlvbnMiLCJvcHRpb24iLCJnZXRWYWx1ZSIsImdldExhYmVsIiwiZ2V0RGljdCIsImdldFNjb3BlIiwiZ2V0Q3VycmVudFNjb3BlIiwicHJveHkiLCJnZXRDdXJyZW50SW5zdGFuY2UiLCJsb2FkRGljdCIsInJlbG9hZCIsInJlbG9hZERpY3QiLCJjbGVhckRpY3QiLCJ3YXRjaFZhbHVlIiwiZ2V0RGljdERhdGEiLCJnZXRQcm9wVmFsdWUiLCJhdHRyIiwicmVtb3ZlUHJvcFZhbHVlIiwiZ2V0Q2hpbGRyZW4iLCJwZXJmIiwid2FybmVkIiwiUFJPQ0VTUyIsImVtaXRXYXJuaW5nIiwibXNnIiwiY29kZSIsImZuIiwiQUMiLCJBUyIsIndhcm5BQ1BvbHlmaWxsIiwicmVhc29uIiwicHJpbnRBQ1BvbHlmaWxsV2FybmluZyIsInNob3VsZFdhcm4iLCJpc1Bvc0ludCIsImdldFVpbnRBcnJheSIsIm1heCIsIlplcm9BcnJheSIsIl9TdGFjayIsIkhlYXBDbHMiLCJfX3ByaXZhdGVHZXQiLCJfY29uc3RydWN0aW5nIiwiX19wcml2YXRlU2V0IiwiX19wcml2YXRlQWRkIiwiU3RhY2siLCJfTFJVQ2FjaGUiLCJfaW5pdGlhbGl6ZVRUTFRyYWNraW5nIiwiX2luaXRpYWxpemVTaXplVHJhY2tpbmciLCJfaW5kZXhlcyIsIl9yaW5kZXhlcyIsIl9pc1ZhbGlkSW5kZXgiLCJfZXZpY3QiLCJfYmFja2dyb3VuZEZldGNoIiwiX2lzQmFja2dyb3VuZEZldGNoIiwiX2Nvbm5lY3QiLCJfbW92ZVRvVGFpbCIsIl9kZWxldGUiLCJfY2xlYXIiLCJfbWF4IiwiX21heFNpemUiLCJfZGlzcG9zZSIsIl9kaXNwb3NlQWZ0ZXIiLCJfZmV0Y2hNZXRob2QiLCJfbWVtb01ldGhvZCIsIl9zaXplIiwiX2NhbGN1bGF0ZWRTaXplIiwiX2tleU1hcCIsIl9rZXlMaXN0IiwiX3ZhbExpc3QiLCJfbmV4dCIsIl9wcmV2IiwiX2hlYWQiLCJfdGFpbCIsIl9mcmVlIiwiX2Rpc3Bvc2VkIiwiX3NpemVzIiwiX3N0YXJ0cyIsIl90dGxzIiwiX2hhc0Rpc3Bvc2UiLCJfaGFzRmV0Y2hNZXRob2QiLCJfaGFzRGlzcG9zZUFmdGVyIiwiX3VwZGF0ZUl0ZW1BZ2UiLCJfc3RhdHVzVFRMIiwiX3NldEl0ZW1UVEwiLCJfaXNTdGFsZSIsIl9yZW1vdmVJdGVtU2l6ZSIsIl9pIiwiX2FkZEl0ZW1TaXplIiwiX3MiLCJfc3QiLCJfcmVxdWlyZVNpemUiLCJfayIsIl92Iiwic2l6ZUNhbGN1bGF0aW9uIiwidHRsIiwidHRsUmVzb2x1dGlvbiIsInR0bEF1dG9wdXJnZSIsInVwZGF0ZUFnZU9uR2V0IiwidXBkYXRlQWdlT25IYXMiLCJhbGxvd1N0YWxlIiwiZGlzcG9zZSIsImRpc3Bvc2VBZnRlciIsIm5vRGlzcG9zZU9uU2V0Iiwibm9VcGRhdGVUVEwiLCJtYXhTaXplIiwibWF4RW50cnlTaXplIiwiZmV0Y2hNZXRob2QiLCJtZW1vTWV0aG9kIiwibm9EZWxldGVPbkZldGNoUmVqZWN0aW9uIiwibm9EZWxldGVPblN0YWxlR2V0IiwiYWxsb3dTdGFsZU9uRmV0Y2hSZWplY3Rpb24iLCJhbGxvd1N0YWxlT25GZXRjaEFib3J0IiwiaWdub3JlRmV0Y2hBYm9ydCIsIlVpbnRBcnJheSIsIl9fcHJpdmF0ZU1ldGhvZCIsImluaXRpYWxpemVTaXplVHJhY2tpbmdfZm4iLCJpbml0aWFsaXplVFRMVHJhY2tpbmdfZm4iLCJjIiwiaXNCYWNrZ3JvdW5kRmV0Y2hfZm4iLCJrIiwiYmFja2dyb3VuZEZldGNoX2ZuIiwibW92ZVRvVGFpbF9mbiIsImluZGV4ZXNfZm4iLCJyaW5kZXhlc19mbiIsImdldE9wdGlvbnMiLCJ2IiwidGhpc3AiLCJkZWxldGVkIiwiZGVsZXRlX2ZuIiwiZW50cnkiLCJzdGFydCIsInJlbWFpbiIsImFnZSIsInNldE9wdGlvbnMiLCJzdGF0dXMiLCJldmljdF9mbiIsIl9fcHJpdmF0ZVdyYXBwZXIiLCJvbGRWYWwiLCJvbGRWYWx1ZSIsImR0IiwidGFzayIsImhhc09wdGlvbnMiLCJwZWVrT3B0aW9ucyIsImZldGNoT3B0aW9ucyIsImZvcmNlUmVmcmVzaCIsInNpZ25hbCIsInN0YWxlIiwiaXNTdGFsZSIsInN0YWxlVmFsIiwibWVtb09wdGlvbnMiLCJ2diIsImZldGNoaW5nIiwiY2xlYXJfZm4iLCJ0dGxzIiwic3RhcnRzIiwiY2FjaGVkTm93IiwiZ2V0Tm93Iiwic2l6ZXMiLCJpc1ZhbGlkSW5kZXhfZm4iLCJmcmVlIiwiaGVhZCIsImFjIiwiZmV0Y2hPcHRzIiwiY2IiLCJ1cGRhdGVDYWNoZSIsImFib3J0ZWQiLCJpZ25vcmVBYm9ydCIsImZldGNoRmFpbCIsImJmIiwiZWIiLCJlciIsImFsbG93U3RhbGVBYm9ydGVkIiwibm9EZWxldGUiLCJwY2FsbCIsInJlaiIsImZtcCIsImNvbm5lY3RfZm4iLCJwaSIsIm5pIiwiTFJVQ2FjaGUiLCJEaWN0R2xvYmFsQ2FjaGUiLCJzZXREaWN0UmVxdWVzdCIsInJlcXVlc3QiLCJkaWN0UmVxdWVzdCIsIkRpY3QiLCJjYWNoZUtleSIsImNhY2hlZCIsImNhbGwiLCJub3RpZnkiLCJ0b0ZldGNoVmFsdWVzIiwiZ2V0RnJvbVJlbW90ZSIsInVybCIsIm1heWJlQXJyIiwiZGljdERhdGEiLCJjb25maWciLCJ1c2VEaWN0RGVmaW5lIiwidXNlVHlwZXMiLCJkcmFnTW9kYWxGb3JBbnRkdiIsImRpYWxvZ0VsIiwiZGlhbG9nSGVhZGVyRWwiLCJkcmFnRG9tIiwic3R5IiwiWCIsIlkiLCJzdHlMIiwic3R5VCIsImwiLCJkcmFnTW9kYWxGb3JOYWl2ZSIsImRyYWdNb2RhbCIsInVzZURyYWciLCJHbG9iYWxDb25maWciLCJfc2ZjX21haW4kQyIsImNvbXB1dGVkSW5uZXJTdHlsZSIsImNvbXB1dGVkQm9keVN0eWxlIiwiX3NmY19yZW5kZXIiLCJfbm9ybWFsaXplU3R5bGUiLCJfcmVuZGVyU2xvdCIsIl9zZmNfbWFpbiRCIiwiX2NvbXBvbmVudF9mc19jb250YWluZXIiLCJfcmVzb2x2ZUNvbXBvbmVudCIsIl9jcmVhdGVCbG9jayIsIl93aXRoQ3R4IiwiX2hvaXN0ZWRfNSIsIl9zZmNfbWFpbiRBIiwiZ2V0Q3J1ZEJpbmRpbmciLCJzZWFyY2hTaG93IiwiY2FyZENvbXBvbmVudE5hbWUiLCJfcmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJfaXNTbG90IiwiT2JqZWN0IiwicHJvdG90eXBlIiwidG9TdHJpbmciLCJfaXNWTm9kZSIsImluaGVyaXRBdHRycyIsIlN0cmluZyIsImRlZmF1bHQiLCJyZXF1aXJlZCIsIkZ1bmN0aW9uIiwiaWNvblJpZ2h0IiwiY2lyY2xlIiwiQm9vbGVhbiIsInRvb2x0aXAiLCJ1bmRlZmluZWQiLCJidXR0b25Qcm9wcyIsImNsYXNzTmFtZSIsInNldHVwIiwiaWNvblJlbmRlciIsImljb25DbGFzcyIsIl9tZXJnZVByb3BzIiwicmVuZGVyQnRuIiwiaXNJY29uU2xvdCIsImlzSWNvblByb3AiLCJpY29uUHJvcCIsInNsb3RzIiwiaXNDaXJjbGUiLCJidXR0b25Db21wIiwicmVzb2x2ZUR5bmFtaWNDb21wb25lbnQiLCJidG5Qcm9wcyIsImNsYXNzIiwiYXR0cnMiLCJoIiwidG9vbHRpcENvbXAiLCJjb21wdXRlVG9vbHRpcFByb3BzIiwib21pdCIsInRyaWdnZXJTbG90TmFtZSIsInJlcXVpcmUiLCJjb21wdXRlZFJlbmRlckZ1bmMiLCJpbmRleE9mIiwic3RhcnRzV2l0aCIsIkljb25Db21wIiwicmVwbGFjZSIsImlzQ29tcG9uZW50IiwiX3NmY19tYWluJHoiLCJJY29uIiwiX25vcm1hbGl6ZUNsYXNzIiwiX3NmY19tYWluJHkiLCJzeW1ib2xJZCIsImdldFN0eWxlIiwic3BpbiIsIl9zZmNfbWFpbiR4IiwibGFiZWxBdHRycyIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfdG9EaXNwbGF5U3RyaW5nIiwiX19kZWZhdWx0X18iLCJfX01BQ1JPU19kZWZpbmVDb21wb25lbnQiLCJsb2FkaW5nIiwiX2NvbXBvbmVudF9mc19pY29uIiwiX3VucmVmIiwiX3NmY19tYWluJHYiLCJtZXJnZUV2ZW50SGFuZGxlcyIsImV2ZW50TmFtZSIsImV2ZW50cyIsIiRldmVudCIsImh0bWxUYWdzIiwibW9kZWxWYWx1ZSIsIm9uIiwidW5kZWZpbmVUb051bGwiLCJlbWl0cyIsInByb3ZpZGUiLCJlbWl0IiwidGFyZ2V0UmVmIiwiYWxsQXR0cnMiLCJ0cmltIiwibnVtYmVyIiwib25VcGRhdGVNb2RlbFZhbHVlTmFtZSIsInRtcCIsIk51bWJlciIsImlzTmFOIiwiaGFuZGxlciIsImNoaWxkcmVuUmVuZGVyIiwiY3JlYXRlQ2hpbGRyZW4iLCJjb21wdXRlZElucHV0Q29tcCIsImlzQXN5bmNDb21wb25lbnQiLCJpbnB1dCIsImlucHV0Q29tcCIsInJlc29sdmVDb21wb25lbnQiLCJjaGlsZHJlblJlbmRlcmVkIiwiZ2V0VGFyZ2V0UmVmIiwiZ2V0VGFyZ2V0UmVmQXN5bmMiLCJnZXRUYXJnZXRSZWZTeW5jIiwiUHJvbWlzZSIsImdldFRhcmdldFJlZkRlbGF5IiwiY291bnQiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJfc2xvdCIsIm1lcmdlZCIsIm1lcmdlUHJvcHMiLCJtYXJrUmF3IiwiZnVuY3Rpb25hbCIsInJlbmRlckZ1bmMiLCJfc2ZjX21haW4kdSIsImNyZWF0ZUluaXRpYWxGb3JtIiwiZGVmVmFsdWUiLCJpbml0aWFsRm9ybSIsInNldEZvcm1EYXRhIiwiZ2V0Q29tcG9uZW50UmVmIiwiY29tcHV0ZWRDb2x1bW5zIiwiZG9WYWx1ZUJ1aWxkZXIiLCJnZXRGb3JtRGF0YSIsInZhbHVlQ2hhbmdlIiwiZG9WYWx1ZUNoYW5nZSIsIm1lcmdlQ29sIiwiYnVpbGRJdGVtU2NvcGUiLCJmb3JtSXRlbVJlZnMiLCJnZXRGb3JtSXRlbVJlZiIsImdyb3VwQWN0aXZlS2V5IiwiZ3JvdXBJdGVtIiwiY29tcHV0ZWRHcm91cCIsImdyb3VwIiwiZ3JvdXBlZEtleXMiLCJ3cmFwcGVyIiwiY29tcHV0ZWREZWZhdWx0Q29sdW1ucyIsImdldEZvcm1SZWYiLCJlbnRyaWVzUmV0IiwiZW50cmllcyIsImluaXRpYWxWYWx1ZSIsInVuc2V0IiwidmFsaWRSZWYiLCJlcnJvcnNSZWYiLCJmaWxsR3JvdXBFcnJvciIsImZpZWxkRXJyb3JzIiwidmFsaWRhdGUiLCJ2YWxpZGF0ZVNjb3BlIiwidmFsaWRhdGVFcnJvcnMiLCJzdWJtaXRTY29wZSIsImZvcm1JdGVtU2hvdyIsImdyb3VwSXRlbVNob3ciLCJuZXdWYWwiLCJpc0RpcnR5IiwiYWZ0ZXIiLCJtZXJnZWRTbG90cyIsImRpc3BsYXkiLCJfRnJhZ21lbnQiLCJfcmVuZGVyTGlzdCIsImhlbHBlciIsImdyb3VwS2V5IiwiX2NyZWF0ZVNsb3RzIiwiX2NvbXBvbmVudF9mc19mb3JtX2l0ZW1fY29sIiwic2xvdE5hbWUiLCJfY29tcG9uZW50X2ZzX3JlbmRlciIsIl9zZmNfbWFpbiR0IiwiRnNSZW5kZXIiLCJjb21wb25lbnRSZW5kZXJSZWYiLCJzY29wZUZ1bmMiLCJ1cGRhdGVNb2RlbFZhbHVlIiwiY29tcHV0ZWRJdGVtIiwiY29tcHV0ZWRIZWxwZXJQb3NpdGlvbiIsImNvbXB1dGVkSGVscGVyVG9vbHRpcCIsImNvbXB1dGVkS2V5IiwiY29tcHV0ZWRMYWJlbCIsImNvbXB1dGVkTGFiZWxJc1JlbmRlciIsIl9jb21wb25lbnRfZnNfY29tcG9uZW50X3JlbmRlciIsIl9ub3JtYWxpemVQcm9wcyIsIl9ob2lzdGVkXzYiLCJmb3JtU2xvdCIsIl9ob2lzdGVkXzciLCJfY29tcG9uZW50X2ZzX3Nsb3RfcmVuZGVyIiwiX2NvbXBvbmVudF9mc19mb3JtX2hlbHBlciIsIl9fcHJvcHMiLCJ1c2VBdHRycyIsImZvcm1JdGVtUmVmIiwiX19leHBvc2UiLCJfY29tcG9uZW50X2ZzX2Zvcm1faXRlbSIsIl9zZmNfbWFpbiRyIiwiaW5uZXIiLCJpbm5lcldyYXBwZXIiLCJ6SW5kZXgiLCJmb3JtV3JhcHBlck9wZW4iLCJmb3JtV3JhcHBlcklzIiwiZm9ybVdyYXBwZXJCaW5kIiwiZm9ybVdyYXBwZXJPcHRzIiwiZW1pdE9uQ2xvc2VkIiwiZW1pdE9uT3BlbmVkIiwiYmVmb3JlQ2xvc2VDdXN0b20iLCJmb3JtV3JhcHBlcklkIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiZm9ybVdyYXBwZXJJZENsYXNzIiwiZm9ybVdyYXBwZXJTbG90cyIsImJ1aWxkRXZlbnQiLCJjbG9zZSIsIm9uQ2xvc2VkIiwib25PcGVuZWQiLCJvcGVuIiwiZnVsbHNjcmVlbkVuYWJsZWQiLCJmdWxsc2NyZWVuIiwiY29tcHV0ZWRCdXR0b25zIiwib25WYWx1ZUNoYW5nZSIsImlubmVyQmluZCIsIndyYXBwZXJCaW5kUmVmIiwiZm9ybU9wdGlvbnNSZWYiLCJ0b2dnbGVGdWxsc2NyZWVuIiwib25PcGVuIiwiaXMiLCJjdXN0b21DbGFzc0tleSIsImZvcm1XcmFwcGVyIiwiY3VzdG9tQ2xhc3MiLCJiZWZvcmVDbG9zZSIsImRvU2F2ZVJlbWluZCIsInNhdmVSZW1pbmQiLCJuZWVkU2F2ZSIsIm1lc3NhZ2VCb3giLCJjb25maXJtIiwiY29uZmlybUJ1dHRvblRleHQiLCJjYW5jZWxCdXR0b25UZXh0Iiwicm91dGUiLCJ1c2VSb3V0ZSIsImRyYWZ0U3RvcmUiLCJnZXREcmFmdFN0b3JlIiwic2F2ZURyYWZ0IiwiJHJvdXRlciIsImRvU2F2ZURyYWZ0IiwidXBkYXRlVGFibGVWYWx1ZSIsImNsZWFyRHJhZnQiLCJjbGVhclRhYmxlVmFsdWUiLCJsb2FkRHJhZnQiLCJkcmFmdCIsImdldFRhYmxlVmFsdWUiLCJtZXJnZUZvcm0iLCJzYXZlZERyYWZ0IiwiZWxlbWVudEJlZm9yZUNsb3NlRml4IiwiZG9uZSIsImRyYWdnYWJsZSIsImRyYWdlbmFibGVkIiwiZ2V0TW9kYWwiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRDb21wdXRlQ29udGV4dCIsImNvbXB1dGVkQ3VzdG9tQnV0dG9ucyIsImRlZkJ0bnMiLCJjYW5jZWwiLCJvayIsImJ1dHRvbnNBcnIiLCJvbkNsaWNrIiwiY2xpY2siLCJleHBvc2VkIiwiZW5kc1dpdGgiLCJidWlsZElubmVyQmluZCIsImdldElubmVyV3JhcHBlciIsImlubmVyQ29udGFpbmVyU2VsZWN0b3IiLCJjbGFzc0xpc3QiLCJhZGQiLCJjb25zb2xlIiwidXNlU2xvdHMiLCJfc2xvdHMiLCJzbG90c1JlbmRlciIsIl9zZWxmIiwidGl0bGVTbG90TmFtZSIsImZ1bGxTY3JlZW5JY29uIiwiaWNvbnMiLCJmdWxsU2NyZWVuIiwidW5GdWxsU2NyZWVuIiwic2hvdyIsImhhc0NvbnRlbnRXcmFwIiwiY29udGVudFdyYXAiLCJzdWJDaGlsZHJlbiIsImNvbnRlbnRXcmFwQ29tcCIsInZpc2libGUiLCJ2Q2xvc2VkIiwiYnVpbGRPbkNsb3NlZEJpbmQiLCJ2Q3VzdG9tQ2xhc3MiLCJ2RnVsbFNjcmVlbiIsInZTdHlsZSIsImZvcm1XcmFwcGVyQ29tcCIsImZvcm1XcmFwcGVyTGlzdCIsInVzZVByb3ZpZGVycyIsInNlYXJjaFJlZiIsImdldFNlYXJjaFJlZiIsImdldFNlYXJjaEZvcm1EYXRhIiwiZ2V0U2VhcmNoVmFsaWRhdGVkRm9ybURhdGEiLCJzZXRTZWFyY2hGb3JtRGF0YSIsInNlYXJjaFJldCIsImRlZmF1bHRUYWJzIiwiX2ciLCJfZiIsInNsb3RGaWx0ZXIiLCJjdHhTbG90cyIsImtleVByZWZpeCIsInVzZUZpeGVkSGVpZ2h0IiwiY29udGFpbmVyUmVmIiwibWF4SGVpZ2h0UmVmIiwiY29tcHV0ZUJvZHlIZWlnaHQiLCJ0YWJsZURvbSIsImhlYWREb20iLCJ0YWJsZUhlaWdodCIsImhlYWRIZWlnaHQiLCJ1dGlsTG9nIiwid2F0Y2hCb2R5SGVpZ2h0Q2hhbmdlIiwidGFibGVXcmFwcGVyRG9tIiwidG9vbGJhclJlZiIsInRhYmxlUHJvcFJlZiIsInRvUmVmIiwiY29tcHV0ZWRUYWJsZSIsImZpeGVkSGVpZ2h0IiwiY29tcHV0ZWRUb29sYmFyIiwiY29tcHV0ZWRDZWxsU2xvdHMiLCJjb21wdXRlZEZvcm1TbG90cyIsImNvbXB1dGVkU2VhcmNoU2xvdHMiLCJjb21wdXRlZFRvb2xiYXJTbG90cyIsImNvbXB1dGVkQ2xhc3MiLCJjbGF6eiIsImlubmVyV3JhcHBlclJlZiIsImlzRm9ybUlubmVyIiwiX3NmY19tYWluJHAiLCJ0YWJzIiwiX2NvbXBvbmVudF9mc19hY3Rpb25iYXIiLCJfZ3VhcmRSZWFjdGl2ZVByb3BzIiwiX2NvbXBvbmVudF9mc190YWJzX2ZpbHRlciIsInRhYnNCaW5kaW5nIiwiX2NvbXBvbmVudF9mc190YWJsZSIsIl9zZmNfbWFpbiRvIiwic2NvcGVSZWYiLCJkb0NsaWNrIiwicGlja2VkUHJvcHMiLCJjb21wdXRlUHJvcHMiLCJjb21wdXRlZEhhbmRsZUJ0bnMiLCJtZXJnZWRCdG5zIiwiYnRucyIsImNvbXB1dGVkRHJvcGRvd25BdExlYXN0IiwiaXNEcm9wZG93bkJ0biIsImhhc0Ryb3Bkb3duQnRuIiwiZG9Ecm9wZG93bkl0ZW1DbGljayIsImJ0biIsImNvbXB1dGVkRHJvcGRvd25CaW5kaW5nIiwiYmluZGluZyIsIl9jb21wb25lbnRfZnNfYnV0dG9uIiwiX2V4dGVuZHMiLCJzb3VyY2UiLCJfaW5oZXJpdHNMb29zZSIsInN1YkNsYXNzIiwic3VwZXJDbGFzcyIsIl9zZXRQcm90b3R5cGVPZiIsIl9nZXRQcm90b3R5cGVPZiIsIl9pc05hdGl2ZVJlZmxlY3RDb25zdHJ1Y3QiLCJfY29uc3RydWN0IiwiUGFyZW50IiwiQ2xhc3MiLCJDb25zdHJ1Y3RvciIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiX3dyYXBOYXRpdmVTdXBlciIsIldyYXBwZXIiLCJmb3JtYXRSZWdFeHAiLCJ3YXJuaW5nIiwiZXJyb3JzIiwiY29udmVydEZpZWxkc0Vycm9yIiwiZmllbGRzIiwidGVtcGxhdGUiLCJfbGVuIiwiX2tleSIsImxlbiIsInN0ciIsIngiLCJpc05hdGl2ZVN0cmluZ1R5cGUiLCJpc0VtcHR5VmFsdWUiLCJhc3luY1BhcmFsbGVsQXJyYXkiLCJmdW5jIiwicmVzdWx0cyIsImFyckxlbmd0aCIsImFzeW5jU2VyaWFsQXJyYXkiLCJuZXh0IiwiZmxhdHRlbk9iakFyciIsIm9iakFyciIsIkFzeW5jVmFsaWRhdGlvbkVycm9yIiwiX0Vycm9yIiwiX3RoaXMiLCJhc3luY01hcCIsIl9wZW5kaW5nIiwiZmxhdHRlbkFyciIsImZpcnN0RmllbGRzIiwib2JqQXJyS2V5cyIsIm9iakFyckxlbmd0aCIsInBlbmRpbmciLCJpc0Vycm9yT2JqIiwiY29tcGxlbWVudEVycm9yIiwib2UiLCJmaWVsZFZhbHVlIiwiZGVlcE1lcmdlIiwicmVxdWlyZWQkMSIsIndoaXRlc3BhY2UiLCJ1cmxSZWciLCJnZXRVcmxSZWdleCIsIndvcmQiLCJ2NCIsInY2c2VnIiwidjYiLCJ2NDZFeGFjdCIsInY0ZXhhY3QiLCJ2NmV4YWN0IiwiaXAiLCJwcm90b2NvbCIsImF1dGgiLCJpcHY0IiwiaXB2NiIsImhvc3QiLCJkb21haW4iLCJ0bGQiLCJwb3J0IiwicmVnZXgiLCJwYXR0ZXJuJDIiLCJ0eXBlJDEiLCJjdXN0b20iLCJydWxlVHlwZSIsInJhbmdlIiwibWluIiwic3BSZWdleHAiLCJudW0iLCJFTlVNJDEiLCJlbnVtZXJhYmxlJDEiLCJwYXR0ZXJuJDEiLCJfcGF0dGVybiIsInN0cmluZyIsIm1ldGhvZCIsIl9ib29sZWFuIiwicmVnZXhwIiwiaW50ZWdlciIsImZsb2F0Rm4iLCJhcnJheSIsIm9iamVjdCIsIkVOVU0iLCJlbnVtZXJhYmxlIiwicGF0dGVybiIsImRhdGVPYmplY3QiLCJhbnkiLCJ2YWxpZGF0b3JzIiwibmV3TWVzc2FnZXMiLCJjbG9uZWQiLCJtZXNzYWdlcyIsIlNjaGVtYSIsImRlc2NyaXB0b3IiLCJfcHJvdG8iLCJfbWVzc2FnZXMiLCJzb3VyY2VfIiwib2MiLCJfdGhpczIiLCJjb21wbGV0ZSIsIl9lcnJvcnMiLCJtZXNzYWdlcyQxIiwic2VyaWVzIiwieiIsImVycm9yRmllbGRzIiwiZG9JdCIsImRlZXAiLCJhZGRGdWxsRmllbGQiLCJzY2hlbWEiLCJlcnJvckxpc3QiLCJmaWxsZWRFcnJvcnMiLCJmaWVsZHNTY2hlbWEiLCJwYXJlZEZpZWxkc1NjaGVtYSIsImZpZWxkU2NoZW1hIiwiZmllbGRTY2hlbWFMaXN0IiwiZXJycyIsImZpbmFsRXJyb3JzIiwibWVzc2FnZUluZGV4IiwidmFsaWRhdG9yIiwiY3JlYXRlVmFsaWRhdG9yIiwiZWRpdGFibGVDZWxscyIsImN1ckRlc2MiLCJlYWNoVHJlZSIsInVzZVRhYmxlRGF0YSIsImdldERhdGEiLCJ0YWJsZURhdGEiLCJlZGl0YWJsZVJvd3MiLCJnZXRJZEZyb21Sb3ciLCJnZXRFZGl0YWJsZUlkRnJvbVJvdyIsImVkaXRhYmxlRWFjaFJvd3MiLCJjZWxscyIsImVkaXRhYmxlRWFjaENlbGxzIiwiY2VsbCIsImNyZWF0ZUVkaXRhYmxlQ2VsbCIsInRhYmxlUm93Iiwic2V0VmFsdWUiLCJ1cGRhdGVDZWxsIiwic2hvd0FjdGlvbiIsImVuYWJsZWQiLCJmb3JtSXRlbSIsInNldERlZmF1bHRWYWx1ZSIsInJvd0tleVZhbHVlIiwiY3JlYXRlRWRpdGFibGVSb3ciLCJkb1NhdmUiLCJuZXdSb3ciLCJzYXZlUm93IiwicDMiLCJjaGlsZCIsIm5leHRFZGl0YWJsZUlkIiwiZWRpdGFibGVJZEdlbiIsInNldHVwRWRpdGFibGUiLCJ0bXBSb3dzIiwiZm9yT3duIiwiYnVpbGRUaGluRGF0YSIsInRoaW5EYXRhIiwidGhpblJvdyIsIm9sZFRoaW5EYXRhIiwiZ2V0RWRpdGFibGVDZWxsIiwiYWN0aXZlIiwiaW5hY3RpdmUiLCJzYXZlRWFjaCIsImNhbmNlbEFsbCIsInBlcnNpc3QiLCJyZXN1bWUiLCJoYXNEaXJ0eSIsImRpcnR5IiwiYWRkSW5kZXgiLCJzZXREZWZhdWx0Rm9ybSIsImZvcm1Db2x1bW5Db25maWdzIiwiYWRkUm93IiwiZ2V0RWRpdGFibGVSb3ciLCJyZW1vdmVUYWJsZVJvd0J5RWRpdGFibGVJZCIsInJlbW92ZVJvdyIsImFjdGl2ZUNvbHMiLCJjb2xzIiwiZ2V0QWN0aXZlUm93cyIsInJvd3MiLCJoYXNFcnJvciIsInJlbW92ZURhdGFFZGl0YWJsZUlkIiwiZ2V0Q2xlYW5UYWJsZURhdGEiLCJ1c2VDb21wb25lbnRSZWZQcm92aWRlciIsImNvbXBvbmVudHNSZWYiLCJnZXR0ZXIiLCJzZXR0ZXIiLCJidWlsZFRhYmxlU2xvdHMiLCJzb3J0ZWRDb2x1bW5zIiwicmVuZGVyUm93SGFuZGxlIiwicmVuZGVyQ2VsbENvbXBvbmVudCIsInRhYmxlQ29sdW1uQ29tcCIsInRhYmxlQ29sdW1uR3JvdXBDb21wIiwidGFibGVDb2x1bW5Hcm91cCIsInRhYmxlU2xvdHMiLCJidWlsZENvbHVtbiIsImNlbGxTbG90cyIsImNvbHVtblNsb3RzIiwiY2VsbFNsb3ROYW1lIiwiY3VycmVudFRhYmxlQ29sdW1uQ29tcCIsInN1YkNvbHVtbnMiLCJzdWJDb2x1bW4iLCJuZXdJdGVtIiwicm93SGFuZGxlU2xvdHMiLCJ0YWJsZVZlcnNpb24iLCJ0YWJsZVYyIiwiX3BhcmVudCIsImRhdGFJbmRleCIsImNoaWxkT3B0aW9ucyIsImN1c3RvbVJlbmRlciIsInJlbmRlck1ldGhvZCIsIm5ld0NvbCIsInJlYnVpbGRSZW5kZXJTY29wZSIsImNlbGxSZW5kZXIiLCJjb25kaXRpb25hbFJlbmRlciIsImNvbXBvbmVudFJlZnMiLCJsZW5ndGgiLCJjZWxsUmVmIiwiY3VycmVudFJlZiIsInRhYmxlQ29sdW1uQ0kiLCJ0YWJsZUNvbHVtblYyIiwic2Nyb2xsVG8iLCJ0b3AiLCJ0YWJsZUNvbXAiLCJlZGl0YWJsZVdyYXAiLCJvblJvd0hhbmRsZSIsIm9uQ2hhbmdlIiwib25Tb3J0Q2hhbmdlIiwic29ydGVyIiwib25GaWx0ZXJDaGFuZ2UiLCJmaWx0ZXJzIiwib25QYWdpbmF0aW9uIiwiYnViYmxlVXAiLCJyb3dIYW5kbGVTbG90c05hbWUiLCJuZXdTY29wZSIsInNldFJlZiIsInJvd1JlZnMiLCJlZGl0YWJsZUNlbGwiLCJyZWFkb25seSIsInJlbmRlck1vZGUiLCJkYXRhU291cmNlIiwiY29tcHV0ZWRCaW5kaW5nIiwiY29tcHV0ZWRUYWJsZVNsb3RzIiwidGFibGVSZW5kZXIiLCJ2TG9hZGluZyIsInJlc29sdmVEaXJlY3RpdmUiLCJ3aXRoRGlyZWN0aXZlcyIsImNvbXB1dGVkRmxhdENvbHVtbnMiLCJmbGF0Q29sdW1ucyIsImZsYXRDb2x1bW5zRm4iLCJjb21wdXRlZE11bHRpSGVhZGVycyIsImJ1aWxkTXVsdGlIZWFkZXJzQmluZCIsInRyZWVDb2x1bW5zIiwiYmluZCIsImlzRmxhdCIsImNvbHVtbnNJc0ZsYXQiLCJjcmVhdGVUYWJsZUluc3RhbmNlIiwid2lkdGgiLCJoZWlnaHQiLCJjb21wdXRlZENvbXBvbmVudCIsImNvbXB1dGVkUHJvcHNDb21wb25lbnQiLCJjb21wdXRlZFRpdGxlIiwic2hvd1RpdGxlIiwiY29tcHV0ZWRDZWxsQ29udGVudFJlbmRlciIsInNsb3QiLCJsYXN0UmVuZGVyIiwiY2VsbENvbnRlbnRSZW5kZXIiLCJtYXRjaCIsImZvcm1hdHRlciIsInRvb2x0aXBQcm9wcyIsInRvb2x0aXBTbG90cyIsImNvbnRlbnQiLCJjb2x1bW5LZXkiLCJjb21wdXRlZEZvcm0iLCJnZXRGb3JtUmVmRnVuYyIsImdldEZvcm0iLCJjb21wdXRlZElzRWRpdGFibGUiLCJlZGl0aW5nVXBkYXRlIiwib25TdWJtaXQiLCJzYXZlIiwib25DYW5jZWwiLCJpc0NoYW5nZWQiLCJlZGl0IiwiaW5wdXRDb21wb25lbnQiLCJpc0VkaXRpbmciLCJhY3RpdmVUcmlnZ2VyIiwibWV0aG9kcyIsIiRyZWZzIiwidGFyZ2V0SW5wdXRSZWYiLCJfX2VtaXQiLCJkb1N1Ym1pdCIsImRvQ2FuY2VsIiwiZ2V0VmFsaWRhdGVFcnJvck1lc3NhZ2UiLCJlZGl0aW5nIiwiX3NmY19tYWluJG0iLCJzb3J0QXJyIiwic29ydGVkQnV0dG9ucyIsIlNldEZvcm1EYXRhT3B0aW9ucyIsIkNvbHVtbnNGaWx0ZXJQcm92aWRlS2V5IiwidHJhbnNmb3JtQ29sdW1uc1RyZWUiLCJjdXJyZW50Q29sdW1ucyIsIm9yaWdpbmFsQ29sdW1uc01hcCIsIl90ZXh0IiwiYnVpbGRDb2x1bW5GaWx0ZXJJdGVtIiwidHJhbnNmb3JtVG9UYWJsZUNvbHVtbnMiLCJzZXRDdXJyZW50VmFsdWUiLCJkb19zYXZlIiwiY2xlYXJUaGlzU3RvcmFnZSIsIm5vU2F2ZSIsInNhdmVPcHRpb25zVG9TdG9yYWdlIiwiZG9FbWl0IiwiY29tcHV0ZWRPcmlnaW5hbENvbHVtbnMiLCJzaW1wbGVTdWJtaXQiLCJzaW1wbGVSZXNldCIsInN0b3JhZ2VUYWJsZVN0b3JlIiwiZ2V0U3RvcmFnZVRhYmxlIiwicmVtb3RlU3RvcmFnZSIsInN0b3JlZE9wdGlvbnMiLCJnZXRPcHRpb25zRnJvbVN0b3JhZ2UiLCJnZXRDb2x1bW5zSGFzaCIsImhhc2giLCJpbml0Iiwic3RvcmVIYXNoIiwidXBkYXRlIiwiY2hhbmdlIiwiYnVpbGRUZXh0IiwiZWxlbWVudCIsIl93aXRoRGlyZWN0aXZlcyIsIl92U2hvdyIsIl9zZmNfbWFpbiRrIiwiRnNUYWJsZUNvbHVtbnNGaWx0ZXIiLCJjb2x1bW5zRmlsdGVyUmVmIiwiZGVmYXVsdEJ1dHRvbnMiLCJkZWZhdWx0QnV0dG9uc0tleSIsInBvcG92ZXJWaXNpYmxlIiwic3RvcmFnZSIsIm93bktleXMiLCJlbnVtZXJhYmxlT25seSIsInN5bWJvbHMiLCJzeW0iLCJfb2JqZWN0U3ByZWFkMiIsIl9kZWZpbmVQcm9wZXJ0eSIsIl90eXBlb2YiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImV4Y2x1ZGVkIiwic291cmNlS2V5cyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsInNvdXJjZVN5bWJvbEtleXMiLCJ2ZXJzaW9uIiwidXNlckFnZW50IiwiSUUxMU9yTGVzcyIsIkVkZ2UiLCJGaXJlRm94IiwiU2FmYXJpIiwiSU9TIiwiQ2hyb21lRm9yQW5kcm9pZCIsImNhcHR1cmVNb2RlIiwib2ZmIiwibWF0Y2hlcyIsInNlbGVjdG9yIiwiZ2V0UGFyZW50T3JIb3N0IiwiY2xvc2VzdCIsImluY2x1ZGVDVFgiLCJSX1NQQUNFIiwidG9nZ2xlQ2xhc3MiLCJzdGF0ZSIsImNzcyIsInN0eWxlIiwibWF0cml4Iiwic2VsZk9ubHkiLCJhcHBsaWVkVHJhbnNmb3JtcyIsIm1hdHJpeEZuIiwiZmluZCIsInRhZ05hbWUiLCJpdGVyYXRvciIsImdldFdpbmRvd1Njcm9sbGluZ0VsZW1lbnQiLCJzY3JvbGxpbmdFbGVtZW50IiwiZ2V0UmVjdCIsInJlbGF0aXZlVG9Db250YWluaW5nQmxvY2siLCJyZWxhdGl2ZVRvTm9uU3RhdGljUGFyZW50IiwidW5kb1NjYWxlIiwiZWxSZWN0IiwibGVmdCIsImJvdHRvbSIsInJpZ2h0IiwiY29udGFpbmVyUmVjdCIsImVsTWF0cml4Iiwic2NhbGVYIiwic2NhbGVZIiwiaXNTY3JvbGxlZFBhc3QiLCJlbFNpZGUiLCJwYXJlbnRTaWRlIiwiZ2V0UGFyZW50QXV0b1Njcm9sbEVsZW1lbnQiLCJlbFNpZGVWYWwiLCJwYXJlbnRTaWRlVmFsIiwiZ2V0Q2hpbGQiLCJjaGlsZE51bSIsImluY2x1ZGVEcmFnRWwiLCJjdXJyZW50Q2hpbGQiLCJTb3J0YWJsZSIsImxhc3RDaGlsZCIsImxhc3QiLCJnZXRSZWxhdGl2ZVNjcm9sbE9mZnNldCIsIm9mZnNldExlZnQiLCJvZmZzZXRUb3AiLCJ3aW5TY3JvbGxlciIsImluZGV4T2ZPYmplY3QiLCJpbmNsdWRlU2VsZiIsImVsZW0iLCJnb3RTZWxmIiwiZWxlbUNTUyIsImV4dGVuZCIsImRzdCIsInNyYyIsImlzUmVjdEVxdWFsIiwicmVjdDEiLCJyZWN0MiIsIl90aHJvdHRsZVRpbWVvdXQiLCJ0aHJvdHRsZSIsIm1zIiwiY2FuY2VsVGhyb3R0bGUiLCJzY3JvbGxCeSIsInkiLCJQb2x5bWVyIiwiJCIsImV4cGFuZG8iLCJBbmltYXRpb25TdGF0ZU1hbmFnZXIiLCJhbmltYXRpb25TdGF0ZXMiLCJhbmltYXRpb25DYWxsYmFja0lkIiwiZnJvbVJlY3QiLCJjaGlsZE1hdHJpeCIsImFuaW1hdGluZyIsImFuaW1hdGlvblRpbWUiLCJ0aW1lIiwidG9SZWN0IiwicHJldkZyb21SZWN0IiwicHJldlRvUmVjdCIsImFuaW1hdGluZ1JlY3QiLCJ0YXJnZXRNYXRyaXgiLCJjYWxjdWxhdGVSZWFsVGltZSIsImN1cnJlbnRSZWN0IiwiZHVyYXRpb24iLCJ0cmFuc2xhdGVYIiwidHJhbnNsYXRlWSIsInJlcGFpbnQiLCJkZWZhdWx0cyIsIlBsdWdpbk1hbmFnZXIiLCJzb3J0YWJsZSIsImV2dCIsImV2ZW50TmFtZUdsb2JhbCIsInBsdWdpbk5hbWUiLCJpbml0aWFsaXplZCIsIm1vZGlmaWVkIiwiZXZlbnRQcm9wZXJ0aWVzIiwibW9kaWZpZWRWYWx1ZSIsImRpc3BhdGNoRXZlbnQiLCJfcmVmIiwicm9vdEVsIiwidGFyZ2V0RWwiLCJjbG9uZUVsIiwidG9FbCIsImZyb21FbCIsIm9sZEluZGV4IiwibmV3SW5kZXgiLCJvbGREcmFnZ2FibGVJbmRleCIsIm5ld0RyYWdnYWJsZUluZGV4Iiwib3JpZ2luYWxFdmVudCIsInB1dFNvcnRhYmxlIiwiZXh0cmFFdmVudFByb3BlcnRpZXMiLCJvbk5hbWUiLCJhbGxFdmVudFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJwbHVnaW5FdmVudCIsImRyYWdFbCIsInBhcmVudEVsIiwiZ2hvc3RFbCIsIm5leHRFbCIsImxhc3REb3duRWwiLCJjbG9uZUhpZGRlbiIsIm1vdmVkIiwiX2hpZGVHaG9zdEZvclRhcmdldCIsIl91bmhpZGVHaG9zdEZvclRhcmdldCIsIl9kaXNwYXRjaEV2ZW50IiwiYWN0aXZlR3JvdXAiLCJhd2FpdGluZ0RyYWdTdGFydGVkIiwiaWdub3JlTmV4dENsaWNrIiwic29ydGFibGVzIiwidGFwRXZ0IiwidG91Y2hFdnQiLCJsYXN0RHgiLCJsYXN0RHkiLCJ0YXBEaXN0YW5jZUxlZnQiLCJ0YXBEaXN0YW5jZVRvcCIsImxhc3RUYXJnZXQiLCJsYXN0RGlyZWN0aW9uIiwicGFzdEZpcnN0SW52ZXJ0VGhyZXNoIiwiaXNDaXJjdW1zdGFudGlhbEludmVydCIsInRhcmdldE1vdmVEaXN0YW5jZSIsImdob3N0UmVsYXRpdmVQYXJlbnQiLCJnaG9zdFJlbGF0aXZlUGFyZW50SW5pdGlhbFNjcm9sbCIsIl9zaWxlbnQiLCJzYXZlZElucHV0Q2hlY2tlZCIsImRvY3VtZW50RXhpc3RzIiwiUG9zaXRpb25HaG9zdEFic29sdXRlbHkiLCJDU1NGbG9hdFByb3BlcnR5Iiwic3VwcG9ydERyYWdnYWJsZSIsInN1cHBvcnRDc3NQb2ludGVyRXZlbnRzIiwiX2RldGVjdERpcmVjdGlvbiIsImVsQ1NTIiwiZWxXaWR0aCIsImNoaWxkMSIsImNoaWxkMiIsImZpcnN0Q2hpbGRDU1MiLCJzZWNvbmRDaGlsZENTUyIsImZpcnN0Q2hpbGRXaWR0aCIsInNlY29uZENoaWxkV2lkdGgiLCJ0b3VjaGluZ1NpZGVDaGlsZDIiLCJfZHJhZ0VsSW5Sb3dDb2x1bW4iLCJkcmFnUmVjdCIsInRhcmdldFJlY3QiLCJ2ZXJ0aWNhbCIsImRyYWdFbFMxT3BwIiwiZHJhZ0VsUzJPcHAiLCJkcmFnRWxPcHBMZW5ndGgiLCJ0YXJnZXRTMU9wcCIsInRhcmdldFMyT3BwIiwidGFyZ2V0T3BwTGVuZ3RoIiwiX2RldGVjdE5lYXJlc3RFbXB0eVNvcnRhYmxlIiwidGhyZXNob2xkIiwicmVjdCIsImluc2lkZUhvcml6b250YWxseSIsImluc2lkZVZlcnRpY2FsbHkiLCJfcHJlcGFyZUdyb3VwIiwidG9GbiIsInB1bGwiLCJ0byIsImZyb20iLCJzYW1lR3JvdXAiLCJvdGhlckdyb3VwIiwib3JpZ2luYWxHcm91cCIsIm5lYXJlc3RFbXB0eUluc2VydERldGVjdEV2ZW50IiwibmVhcmVzdCIsIl9jaGVja091dHNpZGVUYXJnZXRFbCIsImRhdGFUcmFuc2ZlciIsInByZXZlbnRPbkZpbHRlciIsInRvdWNoIiwib3JpZ2luYWxUYXJnZXQiLCJmaWx0ZXIiLCJfc2F2ZUlucHV0Q2hlY2tlZFN0YXRlIiwiY3JpdGVyaWEiLCJvd25lckRvY3VtZW50IiwiZHJhZ1N0YXJ0Rm4iLCJfZGlzYWJsZURyYWdnYWJsZSIsIl9uZXh0VGljayIsImZhbGxiYWNrIiwiaW5zZXJ0ZWQiLCJmYWxsYmFja1RvbGVyYW5jZSIsImZhbGxiYWNrT2Zmc2V0IiwiZ2hvc3RNYXRyaXgiLCJyZWxhdGl2ZVNjcm9sbE9mZnNldCIsImR4IiwiZHkiLCJjc3NNYXRyaXgiLCJyZXZlcnQiLCJhY3RpdmVTb3J0YWJsZSIsImlzT3duZXIiLCJjYW5Tb3J0IiwiZnJvbVNvcnRhYmxlIiwiY29tcGxldGVkRmlyZWQiLCJkcmFnT3ZlckV2ZW50IiwiZXh0cmEiLCJjb21wbGV0ZWQiLCJfb25Nb3ZlIiwiY2FwdHVyZSIsImluc2VydGlvbiIsImVsTGFzdENoaWxkIiwiX2dob3N0SXNMYXN0IiwiX2dob3N0SXNGaXJzdCIsImZpcnN0Q2hpbGQiLCJkaXJlY3Rpb24iLCJ0YXJnZXRCZWZvcmVGaXJzdFN3YXAiLCJkaWZmZXJlbnRMZXZlbCIsImRpZmZlcmVudFJvd0NvbCIsInNpZGUxIiwic2Nyb2xsZWRQYXN0VG9wIiwic2Nyb2xsQmVmb3JlIiwiX2dldFN3YXBEaXJlY3Rpb24iLCJzaWJsaW5nIiwiZHJhZ0luZGV4IiwibmV4dFNpYmxpbmciLCJtb3ZlVmVjdG9yIiwiX3Vuc2lsZW50IiwiX2NhbmNlbE5leHRUaWNrIiwiX2dsb2JhbERyYWdPdmVyIiwiX2dlbmVyYXRlSWQiLCJ1c2VBbmltYXRpb24iLCJpdGVtcyIsIndpbGxJbnNlcnRBZnRlciIsIm9uTW92ZUZuIiwicmV0VmFsIiwic3BhY2VyIiwic3dhcFRocmVzaG9sZCIsImludmVydGVkU3dhcFRocmVzaG9sZCIsImludmVydFN3YXAiLCJpc0xhc3RUYXJnZXQiLCJtb3VzZU9uQXhpcyIsInRhcmdldExlbmd0aCIsInRhcmdldFMxIiwidGFyZ2V0UzIiLCJpbnZlcnQiLCJfZ2V0SW5zZXJ0RGlyZWN0aW9uIiwic3VtIiwicm9vdCIsImlucHV0cyIsImlkeCIsImF1dG9TY3JvbGxzIiwic2Nyb2xsRWwiLCJzY3JvbGxSb290RWwiLCJzY3JvbGxpbmciLCJsYXN0QXV0b1Njcm9sbFgiLCJsYXN0QXV0b1Njcm9sbFkiLCJ0b3VjaEV2dCQxIiwicG9pbnRlckVsZW1DaGFuZ2VkSW50ZXJ2YWwiLCJBdXRvU2Nyb2xsUGx1Z2luIiwiQXV0b1Njcm9sbCIsIl9yZWYyIiwiY2xlYXJQb2ludGVyRWxlbUNoYW5nZWRJbnRlcnZhbCIsImNsZWFyQXV0b1Njcm9sbHMiLCJhdXRvU2Nyb2xsIiwib2dFbGVtU2Nyb2xsZXIiLCJuZXdFbGVtIiwiaXNGYWxsYmFjayIsInNlbnMiLCJzcGVlZCIsInNjcm9sbFRoaXNJbnN0YW5jZSIsInNjcm9sbEN1c3RvbUZuIiwibGF5ZXJzT3V0IiwiY3VycmVudFBhcmVudCIsImNhblNjcm9sbFgiLCJjYW5TY3JvbGxZIiwic2Nyb2xsV2lkdGgiLCJzY3JvbGxIZWlnaHQiLCJzY3JvbGxQb3NYIiwic2Nyb2xsUG9zWSIsInZ4IiwidnkiLCJzY3JvbGxPZmZzZXRZIiwic2Nyb2xsT2Zmc2V0WCIsImRyb3AiLCJkaXNwYXRjaFNvcnRhYmxlRXZlbnQiLCJoaWRlR2hvc3RGb3JUYXJnZXQiLCJ1bmhpZGVHaG9zdEZvclRhcmdldCIsInRvU29ydGFibGUiLCJSZXZlcnQiLCJfcmVmMyIsIlJlbW92ZSIsIl9yZWY0IiwicGFyZW50U29ydGFibGUiLCJfX2RlZlByb3AiLCJfX2RlZlByb3BzIiwiX19nZXRPd25Qcm9wRGVzY3MiLCJfX2dldE93blByb3BTeW1ib2xzIiwiX19oYXNPd25Qcm9wIiwiX19wcm9wSXNFbnVtIiwiX19kZWZOb3JtYWxQcm9wIiwiX19zcHJlYWRWYWx1ZXMiLCJfX3NwcmVhZFByb3BzIiwicmVtb3ZlTm9kZSIsImluc2VydE5vZGVBdCIsImZhdGhlck5vZGUiLCJwb3NpdGlvbiIsInJlZk5vZGUiLCJnZXRDb25zb2xlIiwiY29uc29sZSQxIiwiY2FjaGUiLCJjYW1lbGl6ZSIsIm1hbmFnZUFuZEVtaXQkMSIsImVtaXQkMSIsIm1hbmFnZSQxIiwiZXZlbnRIYW5kbGVyTmFtZXMiLCJldmVudHMyIiwiaXNSZWFkT25seSIsInRhZ3MiLCJpc0h0bWxUYWciLCJpc1RyYW5zaXRpb24iLCJpc0h0bWxBdHRyaWJ1dGUiLCJwcm9qZWN0IiwiZ2V0Q29tcG9uZW50QXR0cmlidXRlcyIsIiRhdHRycyIsImNvbXBvbmVudERhdGEiLCJhdHRyaWJ1dGVzIiwiY3JlYXRlU29ydGFibGVPcHRpb24iLCJjYWxsQmFja0J1aWxkZXIiLCJnZXRWYWxpZFNvcnRhYmxlRW50cmllcyIsImV2ZW50VHlwZSIsImV2ZW50QnVpbGRlciIsInZhbHVlMiIsImdldEh0bWxFbGVtZW50RnJvbU5vZGUiLCJhZGRDb250ZXh0IiwiZG9tRWxlbWVudCIsImdldENvbnRleHQiLCJDb21wb25lbnRTdHJ1Y3R1cmUiLCJoZWFkZXIiLCJkZWZhdWx0Tm9kZXMiLCJmb290ZXIiLCJyZWFsTGlzdCIsImgyIiwidGFnIiwiX2lzUm9vdENvbXBvbmVudCIsImRvbUluZGV4IiwiZG9tQ2hpbGRyZW4iLCJmaXJzdERvbUxpc3RFbGVtZW50IiwiaW5kZXhGaXJzdERvbUxpc3RFbGVtZW50IiwiZWxlbWVudDIiLCJnZXRTbG90Iiwic2xvdFZhbHVlIiwiY29tcHV0ZU5vZGVzIiwiZ2V0S2V5Iiwibm9ybWFsaXplZExpc3QiLCJnZXRSb290SW5mb3JtYXRpb24iLCJ0cmFuc2l0aW9uIiwiZXh0ZXJuYWxDb21wb25lbnQiLCJUcmFuc2l0aW9uR3JvdXAiLCJjb21wdXRlQ29tcG9uZW50U3RydWN0dXJlIiwiZXZ0TmFtZSIsImV2dERhdGEiLCJtYW5hZ2UiLCJvcmlnaW5hbEVsZW1lbnQiLCJtYW5hZ2VBbmRFbWl0IiwiZGVsZWdhdGVDYWxsQmFjayIsImRyYWdnaW5nRWxlbWVudCIsImRyYWdnYWJsZUNvbXBvbmVudCIsImNvbXBvbmVudFN0cnVjdHVyZSIsIiRlbCIsInNvcnRhYmxlT3B0aW9ucyIsInRhcmdldERvbUVsZW1lbnQiLCJpdGVtS2V5IiwibmV3T3B0aW9uVmFsdWUiLCJfc29ydGFibGUiLCJodG1FbGVtZW50Iiwib25MaXN0IiwibmV3TGlzdCIsInNwbGljZUxpc3QiLCJ1cGRhdGVQb3NpdGlvbiIsInJlbGF0ZWQiLCJkZXN0aW5hdGlvbiIsImFkZGVkIiwicmVtb3ZlZCIsInJlbGF0ZWRDb250ZXh0IiwiY3VycmVudERvbUluZGV4IiwiY3VycmVudEluZGV4IiwibW92ZSIsImZ1dHVyZUluZGV4IiwiZHJhZ2dlZENvbnRleHQiLCJzZW5kRXZlbnQiLCJfc2ZjX21haW4kaiIsIm9uRHJhZ2dhYmxlTW92ZSIsImRyYWdlZCIsInNvcnRlZCIsImxlZnRJbmRleCIsInJpZ2h0SW5kZXgiLCJtaW5Ob3RJbmRleCIsIm1heE5vdEluZGV4IiwiYnVpbGRVcGRhdGVLZXkiLCJ1cGRhdGVDaGVja2VkIiwidXBkYXRlQ2hpbGRyZW4iLCJ1cGRhdGVQYXJlbnQiLCJvbkNoZWNrQ2hhbmdlZCIsImZpeGVkQ2hhbmdlIiwiaXNSb290IiwiRnNUYWJsZUNvbHVtbnNGaXhlZENvbnRyb2xsZXIiLCJfY29tcG9uZW50X2ZzX2NvbHVtbnNfZmlsdGVyX25lc3RfbGlzdCIsImRyYXdlckJpbmQiLCJjaGVja0FsbCIsIm9uQ2hlY2tBbGxDaGFuZ2UiLCJjaGVja0FsbEJpbmQiLCJzaG93TGVuZ3RoIiwiYWxsTGVuZ3RoIiwiaXNJbmRldGVybWluYXRlIiwiYWxsQ2hlY2tlZFVwZGF0ZSIsIkZzQ29sdW1uc0ZpbHRlck5lc3RMaXN0IiwiX3NmY19tYWluJGciLCJGc1NlYXJjaEJ1dHRvbnMiLCJ2YWxpZGF0ZWRGb3JtIiwic2VhcmNoQWZ0ZXJSZXNldCIsImF1dG9TZWFyY2giLCJkZWJvdW5jZSIsInZhbGlkYXRlT25DaGFuZ2UiLCJfY2VsbFJlbmRlciIsIm9uRm9ybVZhbGlkYXRlZCIsIkxvZGFzaEdldCIsInNwbGl0S2V5Iiwic3BsaXQiLCJfb25VcGRhdGVNb2RlbFZhbHVlIiwib25WYWx1ZUNoYW5nZWQiLCJfb25JbnB1dCIsIm9uSW5wdXQiLCJvbktleXVwIiwiYXV0b1NlYXJjaFRyaWdnZXIiLCJkb1NlYXJjaCIsImRlZmF1bHRTbG90IiwiYnVpbGRGaWVsZENvbnRleHQiLCJjb21wb25lbnRSZW5kZXJSZWZzIiwic3BsaXRlZEtleSIsInJ1bGVQYXRoIiwic2VhcmNoRm9ybVJlZiIsImdldENvbXBvbmVudFJlbmRlclJlZiIsImRvUmVzZXQiLCJkb1ZhbGlkYXRlIiwic2lsZW50IiwidmFsaWRhdGVXcmFwIiwiZGVmQnRuT3B0aW9ucyIsIl9jbGljayIsImluaXRBdXRvU2VhcmNoIiwid2FpdCIsImdldFZhbGlkYXRlZEZvcm0iLCJzZXRGb3JtIiwibmV3Rm9ybSIsImlucHV0RXZlbnREaXNhYmxlZCIsImRvQXV0b1NlYXJjaCIsImNoYW5nZUlucHV0RXZlbnREaXNhYmxlZCIsInZhbGlkYXRlT25DaGFuZ2VTaWxlbnQiLCJjb21wb25lbnRSZWYiLCJ2YWx1ZUNoYW5nZUNvbnRleHQiLCJpbW1lZGlhdGUiLCJjb21wdXRlZFJ1bGVzIiwiX3NmY19tYWluJGUiLCJjb21wdXRlZElzTXVsdGlMaW5lIiwiY29sdW1uc1Jvd1JlZiIsImNvbHVtbnNCb3hIZWlnaHRSZWYiLCJjb2x1bW5zTGlzdCIsImNvbHVtbnNMaW5lSGVpZ2h0UmVmIiwic2VhcmNoRXZlbnRDb250ZXh0UmVmIiwidG9nZ2xlQ29sbGFwc2UiLCJjb21wdXRlZENvbE5hbWUiLCJjb21wdXRlZENvbHVtbkJveEhlaWdodCIsIl9jb21wb25lbnRfZnNfc2VhcmNoX2J1dHRvbnMiLCJjb2xsYXBzZSIsIl9zZmNfbWFpbiRkIiwiY29sbGFwc2VCdXR0b24iLCJkZWZhdWx0T3B0aW9uIiwiX19ERUZBVUxUX18iLCJvblVwZGF0ZUFjdGl2ZUtleSIsImRlZmF1bHRMaW1pdCIsImRpYWxvZ09wZW5lZCIsImNvbXB1dGVkRGlhbG9nIiwiZm9ybUl0ZW1Db250ZXh0IiwiaW5wdXRCaW5kaW5nIiwiZW1pdENoYW5nZSIsImhhbmRsZUNsaWNrIiwicGFnZXIiLCJvblRhYkNoYW5nZSIsImFwaSIsImxpbWl0IiwiaWNvblN0b3JlIiwibG9hZEljb25TZXQiLCJzZXRzIiwidW5jYXRlZ29yaWVzIiwiY2F0ZWdvcmllcyIsInNlYXJjaEtleSIsInRhYktleSIsInJlc2V0UGFnZXIiLCJoYW5kbGVTZWFyY2giLCJnZXRQYWdlckZyb21JY29uU2V0IiwiZW5kIiwiaGFuZGxlSWNvblNlbGVjdCIsIm9uQ29uZmlybSIsImxvYWRNb3JlIiwiY29tcHV0ZVRhYnMiLCJfaG9pc3RlZF84IiwiX2NvbXBvbmVudF9mc19sb2FkaW5nIiwiX2hvaXN0ZWRfOSIsIl9ob2lzdGVkXzEwIiwiX3NmY19tYWluJGEiLCJjb21wdXRlZFJhZGlvTmFtZSIsInVzZWREaWN0IiwiY29tcHV0ZWRPcHRpb25zIiwib3B0Iiwib3B0aW9uUHJvcHMiLCJzZWxlY3RSZWYiLCJjb21wdXRlZFBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJvblNlbGVjdGVkQ2hhbmdlIiwiZGF0YU1hcCIsInRlbXBTbG90cyIsIl91c2VTbG90cyIsInNlbGVjdENvbXAiLCIkZW1pdCIsInRoaXNTbG90cyIsInJlbmRlckxhYmVsIiwib3B0aW9uQ29tcCIsImNvcyIsImdldEhhc2hDb2RlIiwiY2hyIiwiYnVpbGRBcnJheVZhbHVlIiwidmFsdWVBcnIiLCJfc2ZjX21haW4kOCIsIkNPTE9SX0xJU1QiLCJFRkZFQ1RfTElTVCIsImdldENvbG9yIiwic2V0Q29sb3IiLCJ0eXBlS2V5IiwiY29sb3IiLCJoYXNoY29kZSIsImNvbG9ycyIsImVmZmVjdHMiLCJjb21wdXRlZFZhbHVlSXRlbXMiLCJ2YWx1ZVByb3AiLCJsYWJlbFByb3AiLCJjb2xvcmZ1bE9wdGlvbnMiLCJuZXdWYWx1ZXMiLCJfc2ZjX21haW4kNyIsImNvbXB1dGVkTXVsdGlwbGUiLCJzdWIiLCJMYWJlbHMiLCJJbmRleCIsIl9zZmNfbWFpbiQ2IiwiY2FzY2FkZXJSZWYiLCJkaWN0VXNlUmV0IiwiZmllbGROYW1lc0JpbmRlciIsIm9uU2VsZWN0Q2hhbmdlIiwic2VsZWN0ZWRPcHRpb25zIiwiX3NmY19tYWluJDUiLCJfc2ZjX21haW4kNCIsIl9zZmNfbWFpbiQzIiwiX3NmY19tYWluJDIiLCJ0cmVlUmVmIiwiZGljdFNlbGVjdFJlZiIsInZhbHVlc0Zvcm1hdFJlZiIsImRpYWxvZ09wZW4iLCJvbkNsb3NlIiwiaW5pdFNlbGVjdGVkS2V5cyIsIm11bHRpcGxlIiwidmFsdWVUeXBlIiwiZm9ybVdyYXBwZXJPcHRpb25zIiwib3BlblRhYmxlU2VsZWN0Iiwib3Blbk9wdGlvbnMiLCJjcnVkT3B0aW9uc092ZXJyaWRlIiwiYnVpbGRNZXJnZWRDcnVkT3B0aW9ucyIsImJlZm9yZU9wZW4iLCJnZXRTY29wZUNvbnRleHQiLCJ3cmFwcGVyT3B0aW9ucyIsInZpZXdNb2RlIiwiZGlhbG9nIiwiYnVpbGRJbml0QmluZCIsIm9uT2siLCJjb21wdXRlZFZhbHVlc0Zvcm1hdCIsInZhbHVlc0Zvcm1hdCIsImNvbXB1dGVkU2VsZWN0IiwidXBkYXRlS2V5IiwiY2xlYXJhYmxlIiwiYnVpbGRNdWx0aUJpbmRpbmciLCJhcHBlbmRCeVZhbHVlcyIsInJlZnJlc2hpbmciLCJzZWxlY3Rpb25PcHRpb25zIiwiYnVpbGRTZWxlY3Rpb25DcnVkT3B0aW9ucyIsImNyb3NzUGFnZSIsInNlbGVjdE9uQ2xpY2tSb3ciLCJnZXRQYWdlRGF0YSIsIm9uU2VsZWN0ZWRLZXlzQ2hhbmdlZCIsIm9uUmVmcmVzaGVkIiwic2V0U2VsZWN0ZWRSb3dzIiwiZ2V0QmFzZVRhYmxlUmVmIiwiZ2V0RGljdE1hcCIsImVtaXRPblZpZXdNb2RlbCIsIm9wZW5lZCIsIl9jb21wb25lbnRfZnNfZGljdF9zZWxlY3QiLCJza2lwVmFsaWRhdGlvbldyYXBwZXIiLCJfY29tcG9uZW50X2ZzX2Zvcm1fd3JhcHBlciIsImRlc3Ryb3lPbkNsb3NlIiwiX2NvbXBvbmVudF9mc19jcnVkIiwic2hvd0N1cnJlbnQiLCJfY29tcG9uZW50X2ZzX3ZhbHVlc19mb3JtYXQiLCJjbG9zYWJsZSIsImRvVXBkYXRlIiwiZGljdFNlbGVjdCIsIl9jb21wb25lbnRfZnNfdGFibGVfc2VsZWN0IiwidGFibGVTZWxlY3QiLCJGYXN0Q3J1ZCIsImN1c3RvbUNvbXBvbmVudHMiLCJjb20iLCJwcmludFdhcm5pbmdMb2dnZXIiLCJicm93c2VyIiwidWEiLCJjc3YiLCJpZXYiLCJpZW9sZCIsInRyaWRlbnQiLCJydiIsIkJPTSIsImNzdkRhdGEiLCJmaWxlbmFtZSIsIm9XaW4iLCJsaW5rIiwibmV3TGluZSIsImFwcGVuZExpbmUiLCJzZXBhcmF0b3IiLCJxdW90ZWQiLCJsaW5lIiwiZGF0YXMiLCJub0hlYWRlciIsImNvbHVtbk9yZGVyIiwic2VsZiIsInZpZXciLCJCbG9iQnVpbGRlciIsImdldF9jbGFzcyIsIkZha2VCbG9iQnVpbGRlciIsIkZha2VCbG9iIiwiZW5jb2RpbmciLCJGQkJfcHJvdG8iLCJGQl9wcm90byIsIkZpbGVSZWFkZXJTeW5jIiwiRmlsZUV4Y2VwdGlvbiIsImZpbGVfZXhfY29kZXMiLCJmaWxlX2V4X2NvZGUiLCJyZWFsX1VSTCIsInJlYWxfY3JlYXRlX29iamVjdF9VUkwiLCJyZWFsX3Jldm9rZV9vYmplY3RfVVJMIiwiVVJMIiwiYnRvYSIsImF0b2IiLCJBcnJheUJ1ZmZlciIsIlVpbnQ4QXJyYXkiLCJibG9iIiwiZGF0YV9VUklfaGVhZGVyIiwib2JqZWN0X1VSTCIsImJiIiwiYnVmIiwiYnVmX2xlbiIsImZyIiwiYmxvYlBhcnRzIiwiYnVpbGRlciIsImciLCJnbG9iYWwiLCJqIiwibSIsIlhMU1giLCJjdXJyZW50X2Fuc2kiLCJWQUxJRF9BTlNJIiwiQ1MyQ1AiLCJzZXRfYW5zaSIsInJlc2V0X2Fuc2kiLCJzZXRfY3AiLCJyZXNldF9jcCIsImNoYXJfY29kZXMiLCJ1dGYxNmxlcmVhZCIsInV0ZjE2YmVyZWFkIiwiZGVib20iLCJjMSIsImMyIiwiX2dldGNoYXIiLCJfZ2V0YW5zaSIsIiRjcHRhYmxlIiwiQmFzZTY0X21hcCIsIkJhc2U2NF9lbmNvZGUiLCJjMyIsImUxIiwiZTIiLCJlMyIsImU0IiwiQmFzZTY0X2RlY29kZSIsImhhc19idWYiLCJCdWZmZXJfZnJvbSIsIm5iZnMiLCJlbmMiLCJuZXdfcmF3X2J1ZiIsIm5ld191bnNhZmVfYnVmIiwiczJhIiwiczJhYiIsImEycyIsImEydSIsImFiMmEiLCJiY29uY2F0IiwiYnVmcyIsIm1heGxlbiIsInV0ZjhkZWNvZGUiLCJvdXQiLCJ3aWR4IiwiTCIsInJpZHgiLCJjaHIwIiwiY2hyMSIsIl9zdHJyZXYiLCJwYWQwIiwiZmlsbCIsInBhZF8iLCJycGFkXyIsInBhZDByMSIsInBhZDByMiIsInAyXzMyIiwicGFkMHIiLCJTU0ZfaXNnZW5lcmFsIiwiZGF5cyIsIm1vbnRocyIsIlNTRl9pbml0X3RhYmxlIiwidGFibGVfZm10IiwiU1NGX2RlZmF1bHRfbWFwIiwiU1NGX2RlZmF1bHRfc3RyIiwiU1NGX2ZyYWMiLCJEIiwibWl4ZWQiLCJzZ24iLCJCIiwiUF8yIiwiUF8xIiwiUCIsIlFfMiIsIlFfMSIsIlEiLCJBIiwicSIsIlNTRl9wYXJzZV9kYXRlX2NvZGUiLCJiMiIsImRvdyIsImRvdXQiLCJTU0ZfZml4X2hpanJpIiwiU1NGYmFzZWRhdGUiLCJTU0ZkbnRocmVzaCIsIlNTRmJhc2UxOTA0IiwiZGF0ZW51bV9sb2NhbCIsImRhdGUxOTA0IiwiZXBvY2giLCJTU0Zfc3RyaXBfZGVjaW1hbCIsIlNTRl9ub3JtYWxpemVfZXhwIiwiU1NGX3NtYWxsX2V4cCIsInciLCJTU0ZfbGFyZ2VfZXhwIiwiU1NGX2dlbmVyYWxfbnVtIiwiViIsIlNTRl9nZW5lcmFsIiwiU1NGX2Zvcm1hdCIsIlNTRl93cml0ZV9kYXRlIiwiZm10Iiwic3MwIiwic3MiLCJ0dCIsIm91dGwiLCJvdXRzdHIiLCJjb21tYWlmeSIsInBjdDEiLCJ3cml0ZV9udW1fcGN0Iiwic2ZtdCIsIm11bCIsIndyaXRlX251bSIsIndyaXRlX251bV9jbSIsIndyaXRlX251bV9leHAiLCJwZXJpb2QiLCJlZSIsImZha2VlIiwiJCQiLCIkMSIsIiQyIiwiJDMiLCJmcmFjMSIsIndyaXRlX251bV9mMSIsImF2YWwiLCJzaWduIiwiZGVuIiwicnIiLCJteW4iLCJteWQiLCJ3cml0ZV9udW1fZjIiLCJkZWMxIiwiY2xvc2VwYXJlbiIsInBob25lIiwiaGFzaHEiLCJjYyIsInJuZCIsImRkIiwiZGVjIiwiX2ZyYWMiLCJjYXJyeSIsImZsciIsIndyaXRlX251bV9mbHQiLCJmZm10IiwicmkiLCJmZiIsIm9hIiwibHJlcyIsInJyZXMiLCJ3cml0ZV9udW1fY20yIiwid3JpdGVfbnVtX3BjdDIiLCJ3cml0ZV9udW1fZXhwMiIsIndyaXRlX251bV9pbnQiLCJTU0Zfc3BsaXRfZm10IiwiaW5fc3RyIiwiU1NGX2Fic3RpbWUiLCJmbXRfaXNfZGF0ZSIsImV2YWxfZm10IiwiZmxlbiIsImxzdCIsImhyIiwiYnQiLCJzc20iLCJuc3RyIiwiamoiLCJteXYiLCJvc3RyIiwiZGVjcHQiLCJsYXN0aSIsInJldHZhbCIsImNmcmVnZXgyIiwiY2hrY29uZCIsInRocmVzaCIsImNob29zZV9mbXQiLCJsYXQiLCJtMSIsIm0yIiwiU1NGX2xvYWQiLCJTU0ZfbG9hZF90YWJsZSIsInRibCIsIm1ha2Vfc3NmIiwiU1NGIiwiU1NGSW1wbGljaXQiLCJkYXRlTkZyZWdleCIsImRhdGVORl9yZWdleCIsImRhdGVORiIsImRhdGVORl9maXgiLCJIIiwiTSIsIlMiLCJkYXRlc3RyIiwidGltZXN0ciIsIkNSQzMyIiwic2lnbmVkX2NyY190YWJsZSIsIlQwIiwic2xpY2VfYnlfMTZfdGFibGVzIiwiVCIsIlRUIiwiVDEiLCJUMiIsIlQzIiwiVDQiLCJUNSIsIlQ2IiwiVDciLCJUOCIsIlQ5IiwiVGEiLCJUYiIsIlRjIiwiVGQiLCJUZSIsIlRmIiwiY3JjMzJfYnN0ciIsImJzdHIiLCJDIiwiY3JjMzJfYnVmIiwiY3JjMzJfc3RyIiwiQ0ZCIiwiZXhwb3J0cyIsIm5hbWVjbXAiLCJSIiwiWiIsImRpcm5hbWUiLCJ3cml0ZV9kb3NfZGF0ZSIsImhtcyIsInltZCIsInBhcnNlX2Rvc19kYXRlIiwicGFyc2VfZXh0cmFfZmllbGQiLCJwcmVwX2Jsb2IiLCJmbGFncyIsInN6IiwidGd0IiwiZnMiLCJnZXRfZnMiLCJwYXJzZSIsImZpbGUiLCJwYXJzZV96aXAiLCJwYXJzZV9tYWQiLCJtdmVyIiwic3N6Iiwibm1mcyIsImRpZmF0X3NlY19jbnQiLCJkaXJfc3RhcnQiLCJtaW5pZmF0X3N0YXJ0IiwiZGlmYXRfc3RhcnQiLCJmYXRfYWRkcnMiLCJtdiIsImNoZWNrX2dldF9tdmVyIiwiY2hlY2tfc2hpZnRzIiwiZGlyX2NudCIsInNlY3RvcnMiLCJzZWN0b3JpZnkiLCJzbGV1dGhfZmF0Iiwic2VjdG9yX2xpc3QiLCJtYWtlX3NlY3Rvcl9saXN0IiwiRU5ET0ZDSEFJTiIsImZpbGVzIiwiUGF0aHMiLCJGaWxlSW5kZXgiLCJGdWxsUGF0aHMiLCJyZWFkX2RpcmVjdG9yeSIsImJ1aWxkX2Z1bGxfcGF0aHMiLCJIRUFERVJfU0lHTkFUVVJFIiwic2hpZnQiLCJuc2VjdG9ycyIsIkZJIiwiRlAiLCJwbCIsImRhZCIsImdldF9tZmF0X2VudHJ5IiwicGF5bG9hZCIsIm1pbmkiLCJNU1NaIiwiX19yZWFkSW50MzJMRSIsIm5ld19idWYiLCJjbnQiLCJzZWN0b3IiLCJnZXRfc2VjdG9yX2xpc3QiLCJjaGtkIiwiYnVmX2NoYWluIiwibW9kdWx1cyIsImFkZHIiLCJfX3RvQnVmZmVyIiwic2wiLCJzZWVuIiwibWluaWZhdF9zdG9yZSIsIm5hbWVsZW4iLCJfX3V0ZjE2bGUiLCJjdGltZSIsInJlYWRfZGF0ZSIsIm10aW1lIiwib2Zmc2V0IiwiX19yZWFkVUludDMyTEUiLCJyZWFkX2ZpbGUiLCJyZWFkIiwiaW5pdF9jZmIiLCJjZmIiLCJzZWVkX2NmYiIsIm5tIiwicmVidWlsZF9jZmIiLCJnYyIsIl9maWxlIiwibm93IiwiZnVsbFBhdGhzIiwiSEVBREVSX0NMU0lEIiwiZWx0IiwiX3dyaXRlIiwiX29wdHMiLCJ3cml0ZV9tYWQiLCJ3cml0ZV96aXAiLCJtaW5pX3NpemUiLCJmYXRfc2l6ZSIsIm1pbmlfY250IiwibWZhdF9jbnQiLCJmYXRfYmFzZSIsImZhdF9jbnQiLCJkaWZhdF9jbnQiLCJIRUFERVJfU0lHIiwiY2hhaW5pdCIsImNvbnN0cyIsIl9ubSIsIlVDRnVsbFBhdGhzIiwiVUNQYXRocyIsIlVDUGF0aCIsIndyaXRlX2ZpbGUiLCJ3cml0ZSIsIl96bGliIiwidXNlX3psaWIiLCJ6bGliIiwiSW5mbGF0ZVJhdyIsIkluZmxSYXciLCJfaW5mbGF0ZVJhd1N5bmMiLCJ1c3oiLCJfaW5mbGF0ZSIsIl9kZWZsYXRlUmF3U3luYyIsIl9kZWZsYXRlIiwiQ0xFTl9PUkRFUiIsIkxFTl9MTiIsIkRTVF9MTiIsImJpdF9zd2FwXzgiLCJ1c2VfdHlwZWRfYXJyYXlzIiwiYml0c3dhcDgiLCJiaXRfc3dhcF9uIiwicmV2IiwicmVhZF9iaXRzXzIiLCJibCIsInJlYWRfYml0c18zIiwicmVhZF9iaXRzXzQiLCJyZWFkX2JpdHNfNSIsInJlYWRfYml0c183IiwicmVhZF9iaXRzX24iLCJ3cml0ZV9iaXRzXzMiLCJ3cml0ZV9iaXRzXzEiLCJ3cml0ZV9iaXRzXzgiLCJ3cml0ZV9iaXRzXzE2IiwicmVhbGxvYyIsInplcm9fZmlsbF9hcnJheSIsImJ1aWxkX3RyZWUiLCJjbGVucyIsImNtYXAiLCJNQVgiLCJjY29kZSIsImJsX2NvdW50IiwiY3RyZWUiLCJjbGVuaSIsImZpeF9sbWFwIiwiZml4X2RtYXAiLCJkbGVucyIsIl9kZWZsYXRlUmF3IiwiRFNUX0xOX1JFIiwiTEVOX0xOX1JFIiwid3JpdGVfc3RvcmVkIiwiYm9mZiIsIndyaXRlX2h1ZmZfZml4ZWQiLCJhZGRycyIsIm1sZW4iLCJsZW5fZWIiLCJkc3RfZWIiLCJkeW5fbG1hcCIsImR5bl9kbWFwIiwiZHluX2NtYXAiLCJkeW5fbGVuXzEiLCJkeW5fbGVuXzIiLCJkeW4iLCJfSExJVCIsIl9IRElTVCIsIl9IQ0xFTiIsIm5leHRfY29kZSIsImhjb2RlcyIsImgxIiwiaW5mbGF0ZSIsIm91dGJ1ZiIsIndvZmYiLCJPTCIsIm1heF9sZW5fMSIsIm1heF9sZW5fMiIsImJpdHMiLCJ3YXJuX29yX3Rocm93Iiwid3JuIiwiZmNudCIsInN0YXJ0X2NkIiwiY3N6IiwiZWZzeiIsImZjc3oiLCJFRiIsInBhcnNlX2xvY2FsX2ZpbGUiLCJtZXRoIiwiY3JjMzIiLCJfY3N6IiwiX3VzeiIsImVmIiwiY2ZiX2FkZCIsImNkaXJzIiwiZnAiLCJmaSIsImNyY3MiLCJzel9jZCIsIm5hbWVidWYiLCJDb250ZW50VHlwZU1hcCIsImdldF9jb250ZW50X3R5cGUiLCJleHQiLCJ3cml0ZV9iYXNlNjRfNzYiLCJ3cml0ZV9xdW90ZWRfcHJpbnRhYmxlIiwiZW5jb2RlZCIsInNpIiwicGFyc2VfcXVvdGVkX3ByaW50YWJsZSIsImRpIiwib2kiLCJwYXJzZV9taW1lIiwiZm5hbWUiLCJjdGUiLCJjdHlwZSIsImZkYXRhIiwibWJvdW5kYXJ5IiwiYm91bmRhcnkiLCJzdGFydF9kaSIsImNhIiwiY3N0ciIsImRpc3BjbnQiLCJjc2wiLCJxcCIsImNmYl9uZXciLCJ1bnNhZmUiLCJmcGF0aCIsImNmYl9kZWwiLCJjZmJfbW92Iiwib2xkX25hbWUiLCJuZXdfbmFtZSIsImNmYl9nYyIsIlJlYWRTaGlmdCIsIkNoZWNrRmllbGQiLCJibG9iaWZ5Iiwid3JpdGVfZGwiLCJ1dGY4d3JpdGUiLCJyZWFkX2JpbmFyeSIsImluZmlsZSIsImtzIiwibzIiLCJldmVydF9rZXkiLCJLIiwiZXZlcnQiLCJldmVydF9udW0iLCJldmVydF9hcnIiLCJiYXNlZGF0ZSIsImRhdGVudW0iLCJkbnRocmVzaCIsInJlZmRhdGUiLCJyZWZvZmZzZXQiLCJudW1kYXRlIiwicGFyc2VfaXNvZHVyIiwic2VjIiwibXQiLCJnb29kX3BkX2RhdGVfMSIsImdvb2RfcGRfZGF0ZSIsImdvb2RfcGQiLCJwYXJzZURhdGUiLCJmaXhkYXRlIiwiY2Myc3RyIiwiZGVib21pdCIsImR1cCIsImZ1enp5bnVtIiwid3QiLCJsb3dlcl9tb250aHMiLCJmdXp6eWRhdGUiLCJsb3dlciIsInNwbGl0X3JlZ2V4Iiwic2FmZV9zcGxpdF9yZWdleCIsInJlIiwiZ2V0ZGF0YXN0ciIsImdldGRhdGFiaW4iLCJnZXRkYXRhIiwic2FmZWdldHppcGZpbGUiLCJ6aXAiLCJnZXR6aXBmaWxlIiwiZ2V0emlwZGF0YSIsInNhZmUiLCJnZXR6aXBzdHIiLCJnZXR6aXBiaW4iLCJ6aXBlbnRyaWVzIiwiemlwX2FkZF9maWxlIiwiemlwX25ldyIsInppcF9yZWFkIiwicmVzb2x2ZV9wYXRoIiwic3RlcCIsIlhNTF9IRUFERVIiLCJhdHRyZWdleGciLCJ0YWdyZWdleDEiLCJ0YWdyZWdleDIiLCJ0YWdyZWdleCIsIm5zcmVnZXgiLCJuc3JlZ2V4MiIsInBhcnNleG1sdGFnIiwic2tpcF9yb290Iiwic2tpcF9MQyIsImVxIiwicXVvdCIsInN0cmlwX25zIiwiZW5jb2RpbmdzIiwicmVuY29kaW5nIiwidW5lc2NhcGV4bWwiLCJlbmNyZWdleCIsImNvZGVyZWdleCIsImRlY3JlZ2V4IiwiY2hhcmVnZXgiLCJlc2NhcGV4bWwiLCJlc2NhcGV4bWx0YWciLCJodG1sY2hhcmVnZXgiLCJlc2NhcGVodG1sIiwiZXNjYXBleGxtbCIsInhsbWxfZml4c3RyIiwiZW50cmVnZXgiLCJlbnRyZXBsIiwieGxtbF91bmZpeHN0ciIsInBhcnNleG1sYm9vbCIsInV0ZjhyZWFkYSIsIm9yaWciLCJ1dGY4cmVhZGIiLCJ3dyIsInV0ZjhyZWFkYyIsInV0Zjhjb3JwdXMiLCJ1dGY4cmVhZCIsIm1hdGNodGFnIiwibXRjYWNoZSIsImh0bWxkZWNvZGUiLCJlbnRpdGllcyIsInZ0cmVnZXgiLCJ2dF9jYWNoZSIsInZ0dnJlZ2V4IiwidnRtcmVnZXgiLCJwYXJzZVZlY3RvciIsInd0cmVnZXgiLCJ3cml0ZXRhZyIsInd4dF9oZWxwZXIiLCJ3cml0ZXh0YWciLCJ3cml0ZV93M2NkdGYiLCJ3cml0ZV92dCIsInhsc3giLCJ4bG1sX25vcm1hbGl6ZSIsInhsbWxyZWdleCIsIlhNTE5TIiwiWE1MTlNfbWFpbiIsIlhMTUxOUyIsInJlYWRfZG91YmxlX2xlIiwid3JpdGVfZG91YmxlX2xlIiwiYnMiLCJhdiIsIl9fX3RvQnVmZmVyIiwiX19fdXRmMTZsZSIsIl9fcmVhZFVJbnQxNkxFIiwiX19faGV4bGlmeSIsIl9faGV4bGlmeSIsIl9fX3V0ZjgiLCJfX3JlYWRVSW50OCIsIl9fdXRmOCIsIl9fX2xwc3RyIiwiX19scHN0ciIsIl9fX2Nwc3RyIiwiX19jcHN0ciIsIl9fX2xwd3N0ciIsIl9fbHB3c3RyIiwiX19fbHBwNCIsIl9fbHBwNCIsIl9fXzhscHA0IiwiX184bHBwNCIsIl9fX2RvdWJsZSIsIl9fZG91YmxlIiwiaXNfYnVmIiwiX19yZWFkSW50MTZMRSIsIl9fcmVhZEludDMyQkUiLCJvSSIsIm9SIiwib28iLCJsb2MiLCJfX3dyaXRlVUludDMyTEUiLCJfX3dyaXRlSW50MzJMRSIsIl9fd3JpdGVVSW50MTZMRSIsIldyaXRlU2hpZnQiLCJoZXhzdHIiLCJmbGQiLCJwb3MiLCJwYXJzZW5vb3AiLCJyZWNvcmRob3BwZXIiLCJ0bXBieXRlIiwiY250Ynl0ZSIsIlJUIiwiWExTQlJlY29yZEVudW0iLCJidWZfYXJyYXkiLCJibGtzeiIsIm5ld2JsayIsImN1cmJ1ZiIsImVuZGJ1ZiIsIndyaXRlX3JlY29yZCIsImJhIiwic2hpZnRfY2VsbF94bHMiLCJzaGlmdF9yYW5nZV94bHMiLCJlbmNvZGVfY2VsbF94bHMiLCJiaWZmIiwiZW5jb2RlX2NlbGwiLCJmaXhfY29sIiwiZml4X3JvdyIsImVuY29kZV9yYW5nZV94bHMiLCJlbmNvZGVfY29sIiwiZW5jb2RlX3JvdyIsImRlY29kZV9yb3ciLCJyb3dzdHIiLCJ1bmZpeF9yb3ciLCJkZWNvZGVfY29sIiwiY29sc3RyIiwidW5maXhfY29sIiwic3BsaXRfY2VsbCIsImRlY29kZV9jZWxsIiwiZGVjb2RlX3JhbmdlIiwiZW5jb2RlX3JhbmdlIiwiY3MiLCJjZSIsInNhZmVfZGVjb2RlX3JhbmdlIiwic2FmZV9mb3JtYXRfY2VsbCIsImZvcm1hdF9jZWxsIiwiQkVyciIsInNoZWV0X3RvX3dvcmtib29rIiwic2hlZXQiLCJzaGVldHMiLCJzaGVldF9hZGRfYW9hIiwiX3dzIiwiZGVuc2UiLCJ3cyIsIl9SIiwiX0MiLCJfb3JpZ2luIiwiX3JhbmdlIiwiX19SIiwiX19DIiwiY2VsbF9yZWYiLCJhb2FfdG9fc2hlZXQiLCJwYXJzZV9JbnQzMkxFIiwid3JpdGVfVUludDMyTEUiLCJwYXJzZV9YTFdpZGVTdHJpbmciLCJjY2hDaGFyYWN0ZXJzIiwid3JpdGVfWExXaWRlU3RyaW5nIiwiX251bGwiLCJwYXJzZV9TdHJSdW4iLCJ3cml0ZV9TdHJSdW4iLCJydW4iLCJwYXJzZV9SaWNoU3RyIiwicmdzU3RyUnVuIiwiZHdTaXplU3RyUnVuIiwid3JpdGVfUmljaFN0ciIsInBhcnNlX0JydENvbW1lbnRUZXh0Iiwid3JpdGVfQnJ0Q29tbWVudFRleHQiLCJwYXJzZV9YTFNCQ2VsbCIsImlTdHlsZVJlZiIsIndyaXRlX1hMU0JDZWxsIiwicGFyc2VfWExTQlNob3J0Q2VsbCIsIndyaXRlX1hMU0JTaG9ydENlbGwiLCJwYXJzZV9YTFNCQ29kZU5hbWUiLCJ3cml0ZV9YTFNCQ29kZU5hbWUiLCJwYXJzZV9YTE51bGxhYmxlV2lkZVN0cmluZyIsIndyaXRlX1hMTnVsbGFibGVXaWRlU3RyaW5nIiwicGFyc2VfWExOYW1lV2lkZVN0cmluZyIsInBhcnNlX1JlbElEIiwid3JpdGVfUmVsSUQiLCJwYXJzZV9Sa051bWJlciIsImZYMTAwIiwiZkludCIsIlJLIiwid3JpdGVfUmtOdW1iZXIiLCJkMTAwIiwicGFyc2VfUmZYIiwid3JpdGVfUmZYIiwicGFyc2VfVW5jaGVja2VkUmZYIiwid3JpdGVfVW5jaGVja2VkUmZYIiwicGFyc2VfWG51bSIsIndyaXRlX1hudW0iLCJwYXJzZV9CcnRDb2xvciIsInhDb2xvclR5cGUiLCJuVFMiLCJiUiIsImJHIiwiYkIiLCJpY3YiLCJYTFNJY3YiLCJyZ2IySGV4Iiwid3JpdGVfQnJ0Q29sb3IiLCJyZ2IiLCJwYXJzZV9Gb250RmxhZ3MiLCJ3cml0ZV9Gb250RmxhZ3MiLCJmb250IiwiZ3JiaXQiLCJwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclN0cmluZyIsIkNsaXBGbXQiLCJwYXJzZV9DbGlwYm9hcmRGb3JtYXRPckFuc2lTdHJpbmciLCJwYXJzZV9DbGlwYm9hcmRGb3JtYXRPclVuaWNvZGVTdHJpbmciLCJWVF9JMiIsIlZUX0k0IiwiVlRfQk9PTCIsIlZUX1ZBUklBTlQiLCJWVF9VSTQiLCJWVF9GSUxFVElNRSIsIlZUX0JMT0IiLCJWVF9DRiIsIlZUX1ZFQ1RPUl9WQVJJQU5UIiwiVlRfVkVDVE9SX0xQU1RSIiwiVlRfU1RSSU5HIiwiVlRfVVNUUiIsIlZUX0NVU1RPTSIsIkRvY1N1bW1hcnlQSUREU0kiLCJTdW1tYXJ5UElEU0kiLCJDb3VudHJ5RW51bSIsIlhMU0ZpbGxQYXR0ZXJuIiwicmdiaWZ5IiwiX1hMU0ljdiIsIlJCRXJyIiwiY3QydHlwZSIsIkNUX0xJU1QiLCJuZXdfY3QiLCJwYXJzZV9jdCIsImN0ZXh0Iiwid3JpdGVfY3QiLCJ0eXBlMmN0IiwiZjEiLCJmMiIsImYzIiwiUkVMUyIsImdldF9yZWxzX3BhdGgiLCJwYXJzZV9yZWxzIiwiY3VycmVudEZpbGVQYXRoIiwicmVscyIsInJlbCIsImNhbm9uaWN0YXJnZXQiLCJ3cml0ZV9yZWxzIiwicmlkIiwiYWRkX3JlbHMiLCJySWQiLCJyZWxvYmoiLCJ0YXJnZXRtb2RlIiwiQ1RfT0RTIiwicGFyc2VfbWFuaWZlc3QiLCJSbiIsIkZFdGFnIiwid3JpdGVfbWFuaWZlc3QiLCJtYW5pZmVzdCIsIndyaXRlX3JkZl90eXBlIiwid3JpdGVfcmRmX2hhcyIsIndyaXRlX3JkZiIsInJkZiIsIndyaXRlX21ldGFfb2RzIiwiQ09SRV9QUk9QUyIsIkNPUkVfUFJPUFNfUkVHRVgiLCJwYXJzZV9jb3JlX3Byb3BzIiwiY3VyIiwiY3BfZG9pdCIsIndyaXRlX2NvcmVfcHJvcHMiLCJFWFRfUFJPUFMiLCJQc2V1ZG9Qcm9wc1BhaXJzIiwibG9hZF9wcm9wc19wYWlycyIsIkhQIiwiVE9QIiwiaHAiLCJwYXJ0cyIsInBhcnNlX2V4dF9wcm9wcyIsInhtbCIsIndyaXRlX2V4dF9wcm9wcyIsIlciLCJjdXN0cmVnZXgiLCJwYXJzZV9jdXN0X3Byb3BzIiwidG9rcyIsIndyaXRlX2N1c3RfcHJvcHMiLCJwaWQiLCJYTE1MRG9jUHJvcHNNYXAiLCJldmVydF9YTE1MRFBNIiwieGxtbF9zZXRfcHJvcCIsIlByb3BzIiwieGxtbF93cml0ZV9kb2Nwcm9wcyIsInhsbWxfd3JpdGVfY3VzdHByb3BzIiwiQ3VzdHByb3BzIiwiQkxBQ0tMSVNUIiwicGFyc2VfRklMRVRJTUUiLCJkd0xvd0RhdGVUaW1lIiwiZHdIaWdoRGF0ZVRpbWUiLCJ3cml0ZV9GSUxFVElNRSIsInBhcnNlX2xwc3RyIiwicGFkIiwicGFyc2VfbHB3c3RyIiwicGFyc2VfVnRTdHJpbmdCYXNlIiwic3RyaW5nVHlwZSIsInBhcnNlX1Z0U3RyaW5nIiwicGFyc2VfVnRVbmFsaWduZWRTdHJpbmciLCJwYXJzZV9WdFZlY0xwd3N0clZhbHVlIiwicGFyc2VfVnRWZWNVbmFsaWduZWRMcHN0clZhbHVlIiwicGFyc2VfVnRIZWFkaW5nUGFpciIsImhlYWRpbmdTdHJpbmciLCJwYXJzZV9UeXBlZFByb3BlcnR5VmFsdWUiLCJoZWFkZXJQYXJ0cyIsInBhcnNlX1Z0VmVjSGVhZGluZ1BhaXJWYWx1ZSIsImNFbGVtZW50cyIsInBhcnNlX2RpY3Rpb25hcnkiLCJDb2RlUGFnZSIsInBhcnNlX0JMT0IiLCJieXRlcyIsInBhcnNlX0NsaXBib2FyZERhdGEiLCJ3cml0ZV9UeXBlZFByb3BlcnR5VmFsdWUiLCJwYXJzZV9Qcm9wZXJ0eVNldCIsIlBJRFNJIiwic3RhcnRfYWRkciIsIk51bVByb3BzIiwiRGljdGlvbmFyeSIsIkRpY3RPYmoiLCJQcm9wSUQiLCJPZmZzZXQiLCJQcm9wSCIsInBpZGRzaSIsIm9sZHBvcyIsInBhcnNlYm9vbCIsIlhMU1BTU2tpcCIsImd1ZXNzX3Byb3BlcnR5X3R5cGUiLCJ3cml0ZV9Qcm9wZXJ0eVNldCIsIlJFIiwiaGRyIiwicGlhbyIsInByIiwicGlvIiwicGluZm8iLCJwYXJzZV9Qcm9wZXJ0eVNldFN0cmVhbSIsImNsc2lkIiwiTnVtU2V0cyIsIkZNVElEMCIsIkZNVElEMSIsIk9mZnNldDAiLCJPZmZzZXQxIiwiU3lzdGVtSWRlbnRpZmllciIsIkNMU0lEIiwiUFNldDAiLCJydmFsIiwiUFNldDEiLCJ3cml0ZV9Qcm9wZXJ0eVNldFN0cmVhbSIsImVudHJpZXMyIiwiY2xzaWQyIiwicHMwIiwicHMxIiwicGFyc2Vub29wMiIsIndyaXRlemVyb2VzIiwicGFyc2x1cnAiLCJ3cml0ZWJvb2wiLCJwYXJzZXVpbnQxNiIsIndyaXRldWludDE2IiwicGFyc2V1aW50MTZhIiwicGFyc2VfQmVzIiwid3JpdGVfQmVzIiwicGFyc2VfU2hvcnRYTFVuaWNvZGVTdHJpbmciLCJjY2giLCJmSGlnaEJ5dGUiLCJwYXJzZV9YTFVuaWNvZGVSaWNoRXh0ZW5kZWRTdHJpbmciLCJmRXh0U3QiLCJmUmljaFN0IiwiY1J1biIsImNiRXh0UnN0Iiwid3JpdGVfWExVbmljb2RlUmljaEV4dGVuZGVkU3RyaW5nIiwieGxzdHIiLCJvdGV4dCIsInBhcnNlX1hMVW5pY29kZVN0cmluZ05vQ2NoIiwicGFyc2VfWExVbmljb2RlU3RyaW5nIiwicGFyc2VfWExVbmljb2RlU3RyaW5nMiIsIndyaXRlX1hMVW5pY29kZVN0cmluZyIsInBhcnNlX0NvbnRyb2xJbmZvIiwiYWNjZWwiLCJwYXJzZV9VUkxNb25pa2VyIiwicGFyc2VfRmlsZU1vbmlrZXIiLCJjQW50aSIsInByZWFtYmxlIiwiYW5zaVBhdGgiLCJ1bmljb2RlUGF0aCIsInBhcnNlX0h5cGVybGlua01vbmlrZXIiLCJwYXJzZV9IeXBlcmxpbmtTdHJpbmciLCJ3cml0ZV9IeXBlcmxpbmtTdHJpbmciLCJwYXJzZV9IeXBlcmxpbmsiLCJzVmVyIiwiZGlzcGxheU5hbWUiLCJ0YXJnZXRGcmFtZU5hbWUiLCJtb25pa2VyIiwib2xlTW9uaWtlciIsIkxvYyIsImd1aWQiLCJmaWxlVGltZSIsIndyaXRlX0h5cGVybGluayIsImhsIiwiVGFyZ2V0IiwiaGFzaGlkeCIsIkYiLCJQcmV0YXJnZXQiLCJwYXJzZV9Mb25nUkdCQSIsInBhcnNlX0xvbmdSR0IiLCJwYXJzZV9YTFNDZWxsIiwicnciLCJpeGZlIiwid3JpdGVfWExTQ2VsbCIsInBhcnNlX2ZydEhlYWRlciIsInJ0IiwicGFyc2VfT3B0WExVbmljb2RlU3RyaW5nIiwicGFyc2VfWFRJIiwiaVN1cEJvb2siLCJpdGFiRmlyc3QiLCJpdGFiTGFzdCIsInBhcnNlX1JrUmVjIiwicGFyc2VfQWRkaW5VZGYiLCJ1ZGZOYW1lIiwicGFyc2VfUmVmOFUiLCJyd0ZpcnN0IiwicndMYXN0IiwiY29sRmlyc3QiLCJjb2xMYXN0Iiwid3JpdGVfUmVmOFUiLCJwYXJzZV9SZWZVIiwicGFyc2VfUmVmIiwicGFyc2VfRnRDbW8iLCJvdCIsInBhcnNlX0Z0TnRzIiwicGFyc2VfRnRDZiIsInBhcnNlX0Z0U2tpcCIsIkZ0VGFiIiwicGFyc2VfRnRBcnJheSIsImZ0cyIsImZ0IiwicGFyc2VfQk9GIiwid3JpdGVfQk9GIiwid2IiLCJwYXJzZV9JbnRlcmZhY2VIZHIiLCJwYXJzZV9Xcml0ZUFjY2VzcyIsIlVzZXJOYW1lIiwid3JpdGVfV3JpdGVBY2Nlc3MiLCJiOCIsInBhcnNlX1dzQm9vbCIsInBhcnNlX0JvdW5kU2hlZXQ4IiwiaGlkZGVuIiwid3JpdGVfQm91bmRTaGVldDgiLCJwYXJzZV9TU1QiLCJ1Y250Iiwic3RycyIsIndyaXRlX1NTVCIsInNzdCIsInBhcnNlX0V4dFNTVCIsImV4dHNzdCIsInBhcnNlX1JvdyIsIm1peVJ3IiwicGFyc2VfRm9yY2VGdWxsQ2FsY3VsYXRpb24iLCJmdWxsY2FsYyIsInBhcnNlX1JlY2FsY0lkIiwicGFyc2VfRGVmYXVsdFJvd0hlaWdodCIsImZsIiwicGFyc2VfV2luZG93MSIsInhXbiIsInlXbiIsImR4V24iLCJkeVduIiwiaVRhYkN1ciIsImlUYWJGaXJzdCIsImN0YWJTZWwiLCJ3VGFiUmF0aW8iLCJ3cml0ZV9XaW5kb3cxIiwicGFyc2VfV2luZG93MiIsIndyaXRlX1dpbmRvdzIiLCJwYXJzZV9QYW5lIiwicGFyc2VfRm9udCIsIndyaXRlX0ZvbnQiLCJiNSIsInBhcnNlX0xhYmVsU3N0Iiwid3JpdGVfTGFiZWxTc3QiLCJvcyIsInBhcnNlX0xhYmVsIiwid3JpdGVfTGFiZWwiLCJwYXJzZV9Gb3JtYXQiLCJudW1GbXRJZCIsImZtdHN0ciIsIndyaXRlX0Zvcm1hdCIsInBhcnNlX0JJRkYyRm9ybWF0IiwicGFyc2VfRGltZW5zaW9ucyIsIndyaXRlX0RpbWVuc2lvbnMiLCJwYXJzZV9SSyIsInJrcmVjIiwicGFyc2VfTXVsUmsiLCJya3JlY3MiLCJsYXN0Y29sIiwicGFyc2VfTXVsQmxhbmsiLCJpeGZlcyIsInBhcnNlX0NlbGxTdHlsZVhGIiwicGFyc2VfWEYiLCJ3cml0ZV9YRiIsIml4ZmVQIiwicGFyc2VfR3V0cyIsIndyaXRlX0d1dHMiLCJndXRzIiwicGFyc2VfQm9vbEVyciIsIndyaXRlX0Jvb2xFcnIiLCJwYXJzZV9OdW1iZXIiLCJ4bnVtIiwid3JpdGVfTnVtYmVyIiwicGFyc2VfWExIZWFkZXJGb290ZXIiLCJwYXJzZV9TdXBCb29rIiwiY3RhYiIsInZpcnRQYXRoIiwicmdzdCIsInBhcnNlX0V4dGVybk5hbWUiLCJib2R5IiwiWExTTGJsQnVpbHRJbiIsInBhcnNlX0xibCIsImNoS2V5IiwiY2NlIiwiaXRhYiIsIm5wZmxlbiIsInJnY2UiLCJwYXJzZV9OYW1lUGFyc2VkRm9ybXVsYSIsInBhcnNlX0V4dGVyblNoZWV0IiwicGFyc2VfQklGRjVFeHRlcm5TaGVldCIsInBhcnNlX05hbWVDbXQiLCJjY2hOYW1lIiwiY2NoQ29tbWVudCIsImNvbW1lbnQiLCJwYXJzZV9TaHJGbWxhIiwiY1VzZSIsInBhcnNlX1NoYXJlZFBhcnNlZEZvcm11bGEiLCJwYXJzZV9BcnJheSIsInBhcnNlX0FycmF5UGFyc2VkRm9ybXVsYSIsInBhcnNlX01UUlNldHRpbmdzIiwiZk1UUkVuYWJsZWQiLCJmVXNlclNldFRocmVhZENvdW50IiwiY1VzZXJUaHJlYWRDb3VudCIsInBhcnNlX05vdGVTaCIsImlkT2JqIiwic3RBdXRob3IiLCJwYXJzZV9Ob3RlIiwicGFyc2VfTWVyZ2VDZWxscyIsIm1lcmdlcyIsImNtY3MiLCJ3cml0ZV9NZXJnZUNlbGxzIiwicGFyc2VfT2JqIiwicGFyc2VfQklGRjVPYmoiLCJjbW8iLCJwYXJzZV9CSUZGNU9UIiwiY2YiLCJwYXJzZV9UeE8iLCJ0ZXh0cyIsImNvbnRyb2xJbmZvIiwiY2NoVGV4dCIsInBhcnNlX0hMaW5rIiwiaGxpbmsiLCJ3cml0ZV9ITGluayIsIk8iLCJwYXJzZV9ITGlua1Rvb2x0aXAiLCJ3elRvb2x0aXAiLCJ3cml0ZV9ITGlua1Rvb2x0aXAiLCJwYXJzZV9Db3VudHJ5Iiwid3JpdGVfQ291bnRyeSIsInBhcnNlX0NscnRDbGllbnQiLCJjY3YiLCJwYXJzZV9QYWxldHRlIiwicGFyc2VfWEZDUkMiLCJwYXJzZV9Db2xJbmZvIiwiY29sZHgiLCJ3cml0ZV9Db2xJbmZvIiwicGFyc2VfU2V0dXAiLCJwYXJzZV9TaHRQcm9wcyIsIndyaXRlX1JSVGFiSWQiLCJwYXJzZV9CbGFuayIsInBhcnNlX1NjbCIsInBhcnNlX1N0cmluZyIsInBhcnNlX0ltRGF0YSIsImVudiIsImxjYiIsInBhcnNlX0JJRkYyU1RSIiwicGFyc2VfQklGRjJOVU0iLCJ3cml0ZV9CSUZGMk5VTSIsIndyaXRlX0JJRkYyQ2VsbCIsInBhcnNlX0JJRkYySU5UIiwid3JpdGVfQklGRjJJTlQiLCJwYXJzZV9CSUZGMlNUUklORyIsInBhcnNlX0JJRkYyRk9OVFhUUkEiLCJwYXJzZV9SU3RyaW5nIiwiREJGX1NVUFBPUlRFRF9WRVJTSU9OUyIsIkRCRiIsImRiZl9jb2RlcGFnZV9tYXAiLCJkYmZfcmV2ZXJzZV9tYXAiLCJkYmZfdG9fYW9hIiwibWVtbyIsInZmcCIsImw3IiwibnJvdyIsImZwb3MiLCJybGVuIiwiY3VycmVudF9jcCIsImhlbmQiLCJkYmZfdG9fc2hlZXQiLCJkYmZfdG9fd29ya2Jvb2siLCJfUkxFTiIsInNoZWV0X3RvX2RiZiIsImFvYSIsInNoZWV0X3RvX2pzb24iLCJoZWFkZXJzIiwiaGNudCIsImNvbHR5cGVzIiwiY29sd2lkdGhzIiwiY29sZGVjaW1hbHMiLCJndWVzcyIsIl9ndWVzcyIsImhmIiwiaGIiLCJyb3V0IiwiX24iLCJTWUxLIiwic3lsa19lc2NhcGVzIiwic3lsa19jaGFyX3JlZ2V4Iiwic3lsa19jaGFyX2ZuIiwiZGVjb2RlX3N5bGtfY2hhciIsIm5ld2NjIiwic3lsa190b19hb2EiLCJzeWxrX3RvX2FvYV9zdHIiLCJyaiIsImZvcm1hdHMiLCJuZXh0X2NlbGxfZm9ybWF0Iiwic2h0Iiwicm93aW5mbyIsImNvbGluZm8iLCJjdyIsIk12YWwiLCJyc3RyIiwicmVjb3JkIiwiQ19zZWVuX0siLCJDX3NlZW5fWCIsIkNfc2Vlbl9TIiwiQ19zZWVuX0UiLCJmb3JtdWxhIiwicmNfdG9fYTEiLCJzaHJiYXNlIiwic2hpZnRfZm9ybXVsYV9zdHIiLCJGX3NlZW4iLCJwcm9jZXNzX2NvbCIsInB0MnB4Iiwic3lsa190b19zaGVldCIsImFvYXNodCIsInN5bGtfdG9fd29ya2Jvb2siLCJ3cml0ZV93c19jZWxsX3N5bGsiLCJhMV90b19yYyIsIndyaXRlX3dzX2NvbHNfc3lsayIsInJlYyIsIndpZHRoMnB4IiwicHgyY2hhciIsIndyaXRlX3dzX3Jvd3Nfc3lsayIsInB4MnB0Iiwic2hlZXRfdG9fc3lsayIsIlJTIiwiY29vcmQiLCJESUYiLCJkaWZfdG9fYW9hIiwiZGlmX3RvX2FvYV9zdHIiLCJtZXRhZGF0YSIsImRpZl90b19zaGVldCIsImRpZl90b193b3JrYm9vayIsInNoZWV0X3RvX2RpZiIsInB1c2hfZmllbGQiLCJ0b3BpYyIsInB1c2hfdmFsdWUiLCJFVEgiLCJkZWNvZGUiLCJlbmNvZGUiLCJldGhfdG9fYW9hIiwiZXRoX3RvX3NoZWV0IiwiZXRoX3RvX3dvcmtib29rIiwic2VwIiwibWV0YSIsInNoZWV0X3RvX2V0aF9kYXRhIiwic2hlZXRfdG9fZXRoIiwiUFJOIiwic2V0X3RleHRfYXJyIiwicHJuX3RvX2FvYV9zdHIiLCJsaW5lcyIsImd1ZXNzX3NlcHMiLCJndWVzc19zZXBfd2VpZ2h0cyIsImd1ZXNzX3NlcCIsImluc3RyIiwiZHN2X3RvX3NoZWV0X3N0ciIsInNlcGNjIiwic3RhcnRjYyIsIl9yZSIsImZpbmlzaF9jZWxsIiwiZnV6enlmbWxhIiwib3V0ZXIiLCJwcm5fdG9fc2hlZXRfc3RyIiwicHJuX3RvX3NoZWV0IiwiZmlyc3RieXRlIiwicHJuX3RvX3dvcmtib29rIiwic2hlZXRfdG9fcHJuIiwicmVhZF93Yl9JRCIsIk9MRF9XVEYiLCJXS18iLCJsb3R1c2hvcHBlciIsIkVudW0iLCJXSzFFbnVtIiwibG90dXNfdG9fd29ya2Jvb2siLCJsb3R1c190b193b3JrYm9va19idWYiLCJuZXh0X24iLCJzaWR4Iiwic25hbWVzIiwicmVhbG5hbWVzIiwicmVmZ3Vlc3MiLCJzaGVldFJvd3MiLCJ0bXBjZWxsIiwiV0szRW51bSIsIm9zaGVldHMiLCJybmFtZXMiLCJzaGVldF90b193azEiLCJ3cml0ZV9iaWZmX3JlYyIsIndyaXRlX0JPRl9XSzEiLCJ3cml0ZV9SQU5HRSIsIm1heF9SIiwid3JpdGVfSU5URUdFUiIsIndyaXRlX05VTUJFUiIsIndyaXRlX0xBQkVMIiwiYm9va190b193azMiLCJ3cml0ZV9CT0ZfV0szIiwid3JpdGVfWEZPUk1BVF9TSEVFVE5BTUUiLCJ3c2lkeCIsIndyaXRlX05VTUJFUl8xNyIsIndyaXRlX0xBQkVMXzE2Iiwid3NjbnQiLCJwYXJzZV9SQU5HRSIsInBhcnNlX2NlbGwiLCJwYXJzZV9MQUJFTCIsInBhcnNlX0lOVEVHRVIiLCJwYXJzZV9OVU1CRVIiLCJwYXJzZV9GT1JNVUxBIiwid2sxX2ZtbGFfdG9fY3NmIiwid2sxX3BhcnNlX3JjIiwiRnVuY1RhYiIsIkJpbk9wVGFiIiwiYXJnYyIsImFyZ0wiLCJhcmdSIiwicGFyc2VfY2VsbF8zIiwicGFyc2VfTEFCRUxfMTYiLCJwYXJzZV9OVU1CRVJfMTgiLCJwYXJzZV9OVU1CRVJfMTciLCJ2MSIsInYyIiwicGFyc2VfRk9STVVMQV8xOSIsInBhcnNlX05VTUJFUl8yNSIsInBhcnNlX05VTUJFUl8yNyIsInBhcnNlX0ZPUk1VTEFfMjgiLCJwYXJzZV9TSEVFVE5BTUVDUyIsInBhcnNlX1NIRUVUTkFNRUxQIiwicGFyc2VfU0hFRVRJTkZPUVAiLCJwYXJzZV9YRk9STUFUIiwicGFyc2VfcnByIiwicnByIiwicGFzcyIsInBhcnNlX3JzIiwidHJlZ2V4IiwicnByZWdleCIsInBhcnNlX3IiLCJycmVnZXgiLCJyZW5kIiwicnMiLCJyc190b19odG1sIiwibmxyZWdleCIsInBhcnNlX3JwcjIiLCJpbnRybyIsIm91dHJvIiwiYWxpZ24iLCJyX3RvX2h0bWwiLCJ0ZXJtcyIsInNpdHJlZ2V4Iiwic2lycmVnZXgiLCJzaXJwaHJlZ2V4IiwicGFyc2Vfc2kiLCJodG1sIiwic3N0cjAiLCJzc3RyMSIsInNzdHIyIiwicGFyc2Vfc3N0X3htbCIsInN0cmF5d3NyZWdleCIsIndyaXRlX3NzdF94bWwiLCJzaXRhZyIsInBhcnNlX0JydEJlZ2luU3N0IiwicGFyc2Vfc3N0X2JpbiIsIndyaXRlX0JydEJlZ2luU3N0Iiwid3JpdGVfQnJ0U1NUSXRlbSIsIndyaXRlX3NzdF9iaW4iLCJfSlMyQU5TSSIsInBhcnNlX0NSWVBUT1ZlcnNpb24iLCJwYXJzZV9EYXRhU3BhY2VWZXJzaW9uSW5mbyIsInBhcnNlX0RhdGFTcGFjZU1hcEVudHJ5IiwiY29tcHMiLCJwYXJzZV9EYXRhU3BhY2VNYXAiLCJwYXJzZV9EYXRhU3BhY2VEZWZpbml0aW9uIiwicGFyc2VfVHJhbnNmb3JtSW5mb0hlYWRlciIsInBhcnNlX1ByaW1hcnkiLCJwYXJzZV9FbmNyeXB0aW9uSGVhZGVyIiwidmFsaWQiLCJwYXJzZV9FbmNyeXB0aW9uVmVyaWZpZXIiLCJwYXJzZV9FbmNyeXB0aW9uSW5mbyIsInZlcnMiLCJwYXJzZV9FbmNJbmZvU3RkIiwicGFyc2VfRW5jSW5mb0V4dCIsInBhcnNlX0VuY0luZm9BZ2wiLCJ2ZXJpZmllciIsIktleURhdGEiLCJwYXJzZV9SQzRDcnlwdG9IZWFkZXIiLCJwYXJzZV9SQzRIZWFkZXIiLCJjcnlwdG9fQ3JlYXRlUGFzc3dvcmRWZXJpZmllcl9NZXRob2QxIiwiUGFzc3dvcmQiLCJWZXJpZmllciIsIlBhc3N3b3JkQXJyYXkiLCJQYXNzd29yZERlY29kZWQiLCJQYXNzd29yZEJ5dGUiLCJJbnRlcm1lZGlhdGUxIiwiSW50ZXJtZWRpYXRlMiIsIkludGVybWVkaWF0ZTMiLCJjcnlwdG9fQ3JlYXRlWG9yQXJyYXlfTWV0aG9kMSIsIlBhZEFycmF5IiwiSW5pdGlhbENvZGUiLCJYb3JNYXRyaXgiLCJSb3IiLCJCeXRlIiwiWG9yUm9yIiwiYnl0ZTEiLCJieXRlMiIsIkNyZWF0ZVhvcktleV9NZXRob2QxIiwiWG9yS2V5IiwiQ3VycmVudEVsZW1lbnQiLCJDaGFyIiwicGFzc3dvcmQiLCJPYmZ1c2NhdGlvbkFycmF5IiwiVGVtcCIsIlBhc3N3b3JkTGFzdENoYXIiLCJQYWRJbmRleCIsImNyeXB0b19EZWNyeXB0RGF0YV9NZXRob2QxIiwiRGF0YSIsIlhvckFycmF5SW5kZXgiLCJYb3JBcnJheSIsIlZhbHVlIiwiY3J5cHRvX01ha2VYb3JEZWNyeXB0b3IiLCJwYXJzZV9YT1JPYmZ1c2NhdGlvbiIsInBhcnNlX0ZpbGVQYXNzSGVhZGVyIiwicGFyc2VfRmlsZVBhc3MiLCJSVEYiLCJydGZfdG9fc2hlZXQiLCJydGZfdG9fc2hlZXRfc3RyIiwicm93dGYiLCJydGZyZSIsImxhc3RfaW5kZXgiLCJydGZfdG9fd29ya2Jvb2siLCJzaGVldF90b19ydGYiLCJoZXgyUkdCIiwicmdiMkhTTCIsIkciLCJINiIsIkwyIiwiaHNsMlJHQiIsImhzbCIsImg2IiwicmdiX3RpbnQiLCJoZXgiLCJ0aW50IiwiREVGX01EVyIsIk1BWF9NRFciLCJNSU5fTURXIiwiTURXIiwicHgiLCJjaGFyMndpZHRoIiwiY3ljbGVfd2lkdGgiLCJjb2xsdyIsImZpbmRfbWR3X2NvbHciLCJkZWx0YSIsIl9NRFciLCJjb2xsIiwiREVGX1BQSSIsIlBQSSIsInB0IiwiWExNTFBhdHRlcm5UeXBlTWFwIiwicGFyc2VfYm9yZGVycyIsInN0eWxlcyIsInRoZW1lcyIsImJvcmRlciIsInBhcnNlX2ZpbGxzIiwicGFyc2VfZm9udHMiLCJwYXJzZV9udW1GbXRzIiwid3JpdGVfbnVtRm10cyIsIk5GIiwiY2VsbFhGX3VpbnQiLCJjZWxsWEZfYm9vbCIsInBhcnNlX2NlbGxYZnMiLCJ4ZiIsImFsaWdubWVudCIsIndyaXRlX2NlbGxYZnMiLCJjZWxsWGZzIiwicGFyc2Vfc3R5X3htbCIsIm51bUZtdFJlZ2V4IiwiY2VsbFhmUmVnZXgiLCJmaWxsc1JlZ2V4IiwiZm9udHNSZWdleCIsImJvcmRlcnNSZWdleCIsIndyaXRlX3N0eV94bWwiLCJwYXJzZV9CcnRGbXQiLCJzdEZtdENvZGUiLCJ3cml0ZV9CcnRGbXQiLCJwYXJzZV9CcnRGb250IiwiYmxzIiwidW5kZXJsaW5lIiwiZmFtaWx5IiwiYkNoYXJTZXQiLCJ3cml0ZV9CcnRGb250Iiwic3NzIiwic2NoZW1lIiwiWExTQkZpbGxQVE5hbWVzIiwicmV2X1hMU0JGaWxsUFROYW1lcyIsInBhcnNlX0JydEZpbGwiLCJ3cml0ZV9CcnRGaWxsIiwiZmxzIiwicGFyc2VfQnJ0WEYiLCJpeGZlUGFyZW50IiwiaWZtdCIsIndyaXRlX0JydFhGIiwiZmxvdyIsIndyaXRlX0JseGYiLCJwYXJzZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRCb3JkZXIiLCJ3cml0ZV9CcnRTdHlsZSIsIndyaXRlX0JydEJlZ2luVGFibGVTdHlsZXMiLCJkZWZUYWJsZVN0eWxlIiwiZGVmUGl2b3RTdHlsZSIsInBhcnNlX3N0eV9iaW4iLCJ3cml0ZV9GTVRTX2JpbiIsIndyaXRlX0ZPTlRTX2JpbiIsIndyaXRlX0ZJTExTX2JpbiIsIndyaXRlX0JPUkRFUlNfYmluIiwid3JpdGVfQ0VMTFNUWUxFWEZTX2JpbiIsIndyaXRlX0NFTExYRlNfYmluIiwid3JpdGVfU1RZTEVTX2JpbiIsIndyaXRlX0RYRlNfYmluIiwid3JpdGVfVEFCTEVTVFlMRVNfYmluIiwid3JpdGVfc3R5X2JpbiIsIlhMU1hUaGVtZUNsclNjaGVtZSIsInBhcnNlX2NsclNjaGVtZSIsInBhcnNlX2ZvbnRTY2hlbWUiLCJwYXJzZV9mbXRTY2hlbWUiLCJjbHJzcmVnZXgiLCJmbnRzcmVnZXgiLCJmbXRzcmVnZXgiLCJwYXJzZV90aGVtZUVsZW1lbnRzIiwidGhlbWVsdHJlZ2V4IiwicGFyc2VfdGhlbWVfeG1sIiwid3JpdGVfdGhlbWUiLCJUaGVtZXMiLCJwYXJzZV9UaGVtZSIsImR3VGhlbWVWZXJzaW9uIiwidGhlbWVYTUwiLCJwYXJzZV9Db2xvclRoZW1lIiwicGFyc2VfRnVsbENvbG9yRXh0IiwicGFyc2VfSWN2WEYiLCJwYXJzZV9YRkV4dEdyYWRpZW50IiwicGFyc2VfRXh0UHJvcCIsImV4dFR5cGUiLCJwYXJzZV9YRkV4dCIsImNleHRzIiwidXBkYXRlX3hmZXh0IiwieGZleHQiLCJ4ZmUiLCJwYXJzZV9CcnRNZHRpbmZvIiwid3JpdGVfQnJ0TWR0aW5mbyIsInBhcnNlX0JydE1kYiIsIndyaXRlX0JydE1kYiIsIm1kYiIsIndyaXRlX0JydEJlZ2luRXNmbWQiLCJwYXJzZV9CcnRCZWdpbkVzbWRiIiwid3JpdGVfQnJ0QmVnaW5Fc21kYiIsImNtIiwicGFyc2VfeGxtZXRhX2JpbiIsIm1ldGF0eXBlIiwid3JpdGVfeGxtZXRhX2JpbiIsInBhcnNlX3hsbWV0YV94bWwiLCJsYXN0bWV0YSIsIndyaXRlX3hsbWV0YV94bWwiLCJwYXJzZV9jY194bWwiLCJwYXJzZV9CcnRDYWxjQ2hhaW5JdGVtJCIsInBhcnNlX2NjX2JpbiIsInBhcnNlX3hsaW5rX3htbCIsInBhcnNlX3hsaW5rX2JpbiIsInBhcnNlX2RyYXdpbmciLCJfc2hhcGVpZCIsIndyaXRlX2NvbW1lbnRzX3ZtbCIsImNvbW1lbnRzIiwiY3NpemUiLCJiYm94IiwiZmlsbG9wdHMiLCJmaWxscGFybSIsImZpbGx4bWwiLCJzaGFkYXRhIiwic2hlZXRfaW5zZXJ0X2NvbW1lbnRzIiwidGhyZWFkZWQiLCJwZW9wbGUiLCJwYXJzZV9jb21tZW50c194bWwiLCJhdXRob3JzIiwiY29tbWVudExpc3QiLCJhdXRodGFnIiwiY21udHRhZyIsInRleHRNYXRjaCIsIndyaXRlX2NvbW1lbnRzX3htbCIsImlhdXRob3IiLCJsYXN0YXV0aG9yIiwidHMiLCJwYXJzZV90Y21udF94bWwiLCJ0aWR4Iiwid3JpdGVfdGNtbnRfeG1sIiwiY2FyciIsInJvb3RpZCIsInRjb3B0cyIsInBhcnNlX3Blb3BsZV94bWwiLCJ3cml0ZV9wZW9wbGVfeG1sIiwicGVyc29uIiwicGFyc2VfQnJ0QmVnaW5Db21tZW50IiwicmZ4Iiwid3JpdGVfQnJ0QmVnaW5Db21tZW50IiwicGFyc2VfQnJ0Q29tbWVudEF1dGhvciIsIndyaXRlX0JydENvbW1lbnRBdXRob3IiLCJwYXJzZV9jb21tZW50c19iaW4iLCJ3cml0ZV9jb21tZW50c19iaW4iLCJDVF9WQkEiLCJtYWtlX3ZiYV94bHMiLCJuZXdjZmIiLCJuZXdwYXRoIiwiZmlsbF92YmFfeGxzIiwidmJhIiwiVkJBRk1UUyIsInBhcnNlX2RzX2JpbiIsInBhcnNlX2RzX3htbCIsInBhcnNlX21zX2JpbiIsInBhcnNlX21zX3htbCIsInJjcmVnZXgiLCJyY2Jhc2UiLCJyY2Z1bmMiLCJjUmVsIiwiclJlbCIsImZzdHIiLCJjcmVmcmVnZXgiLCIkMCIsIiQ0IiwiJDUiLCJzaGlmdF9mb3JtdWxhX3hsc3giLCJfeGxmbiIsInBhcnNlcmVhZDEiLCJwYXJzZV9Db2xSZWxVIiwicGFyc2VfUmdjZUFyZWEiLCJwYXJzZV9SZ2NlQXJlYV9CSUZGMiIsInBhcnNlX1JnY2VBcmVhUmVsIiwicGFyc2VfUmdjZUxvYyIsInBhcnNlX1JnY2VMb2NfQklGRjIiLCJwYXJzZV9SZ2NlRWxmTG9jIiwicGFyc2VfUmdjZUxvY1JlbCIsInBhcnNlX1JnY2VMb2NSZWxfQklGRjIiLCJjbCIsInJsIiwicGFyc2VfUHRnQXJlYSIsImFyZWEiLCJwYXJzZV9QdGdBcmVhM2QiLCJpeHRpIiwicGFyc2VfUHRnQXJlYUVyciIsInBhcnNlX1B0Z0FyZWFFcnIzZCIsInBhcnNlX1B0Z0FyZWFOIiwicGFyc2VfUHRnQXJyYXkiLCJwYXJzZV9QdGdBdHRyQmF4Y2VsIiwiYml0U2VtaSIsImJpdEJheGNlbCIsInBhcnNlX1B0Z0F0dHJDaG9vc2UiLCJwYXJzZV9QdGdBdHRyR290byIsImJpdEdvdG8iLCJwYXJzZV9QdGdBdHRySWYiLCJiaXRJZiIsInBhcnNlX1B0Z0F0dHJJZkVycm9yIiwicGFyc2VfUHRnQXR0clNlbWkiLCJwYXJzZV9QdGdBdHRyU3BhY2VUeXBlIiwicGFyc2VfUHRnQXR0clNwYWNlIiwicGFyc2VfUHRnQXR0clNwYWNlU2VtaSIsInBhcnNlX1B0Z1JlZiIsInBhcnNlX1B0Z1JlZk4iLCJwYXJzZV9QdGdSZWYzZCIsInBhcnNlX1B0Z0Z1bmMiLCJpZnRhYiIsIkZ0YWJBcmdjIiwiRnRhYiIsInBhcnNlX1B0Z0Z1bmNWYXIiLCJjcGFyYW1zIiwidGFiIiwicGFyc2V0YWIiLCJDZXRhYiIsInBhcnNlX1B0Z0F0dHJTdW0iLCJwYXJzZV9QdGdFeHAiLCJwYXJzZV9QdGdFcnIiLCJwYXJzZV9QdGdJbnQiLCJwYXJzZV9QdGdCb29sIiwicGFyc2VfUHRnTnVtIiwicGFyc2VfUHRnU3RyIiwicGFyc2VfU2VyQXIiLCJwYXJzZV9QdGdFeHRyYU1lbSIsInBhcnNlX1B0Z0V4dHJhQXJyYXkiLCJwYXJzZV9QdGdOYW1lIiwibmFtZWluZGV4IiwicGFyc2VfUHRnTmFtZVgiLCJwYXJzZV9QdGdOYW1lWF9CSUZGNSIsInBhcnNlX1B0Z01lbUFyZWEiLCJwYXJzZV9QdGdNZW1GdW5jIiwicGFyc2VfUHRnUmVmRXJyIiwicGFyc2VfUHRnUmVmRXJyM2QiLCJwYXJzZV9QdGdNZW1FcnIiLCJwYXJzZV9QdGdNZW1Ob01lbSIsInBhcnNlX1B0Z1RibCIsInBhcnNlX1B0Z0VsZkxvYyIsInBhcnNlX1B0Z0VsZk5vb3AiLCJwYXJzZV9QdGdFbGZDb2wiLCJwYXJzZV9QdGdFbGZDb2xTIiwicGFyc2VfUHRnRWxmQ29sU1YiLCJwYXJzZV9QdGdFbGZDb2xWIiwicGFyc2VfUHRnRWxmTGVsIiwicGFyc2VfUHRnRWxmUmFkaWNhbCIsInBhcnNlX1B0Z0VsZlJhZGljYWxMZWwiLCJwYXJzZV9QdGdFbGZSYWRpY2FsUyIsInBhcnNlX1B0Z0VsZlJ3IiwicGFyc2VfUHRnRWxmUndWIiwiUHRnTGlzdFJUIiwicGFyc2VfUHRnTGlzdCIsInBhcnNlX1B0Z1N4TmFtZSIsInBhcnNlX1B0Z1NoZWV0IiwicGFyc2VfUHRnRW5kU2hlZXQiLCJwYXJzZV9QdGdNZW1BcmVhTiIsInBhcnNlX1B0Z01lbU5vTWVtTiIsInBhcnNlX1B0Z0F0dHJOb29wIiwiUHRnVHlwZXMiLCJQdGdEdXBlcyIsIlB0ZzE4IiwiUHRnMTkiLCJwYXJzZV9SZ2JFeHRyYSIsInBhcnNlX1JnY2UiLCJwdGdzIiwic3RyaW5naWZ5X2FycmF5IiwiUHRnQmluT3AiLCJmb3JtdWxhX3F1b3RlX3NoZWV0X25hbWUiLCJzbmFtZSIsImdldF9peHRpX3JhdyIsInN1cGJvb2tzIiwiWFRJIiwiZ2V0X2l4dGkiLCJpeHRpcmF3Iiwic3RyaW5naWZ5X2Zvcm11bGEiLCJzdGFjayIsIm5hbWVpZHgiLCJsYXN0X3NwIiwic3AiLCJmZmxlbiIsImxibCIsImJvb2tpZHgiLCJleHRlcm5ib29rIiwiaXh0aWRhdGEiLCJscCIsInJwIiwicGFyc2VkZiIsImZuZCIsIlB0Z05vbkRpc3AiLCJfbGVmdCIsInJnY2IiLCJwYXJzZV9YTFNDZWxsUGFyc2VkRm9ybXVsYSIsInBhcnNlX0Zvcm11bGFWYWx1ZSIsIndyaXRlX0Zvcm11bGFWYWx1ZSIsInBhcnNlX0Zvcm11bGEiLCJjYmYiLCJ3cml0ZV9Gb3JtdWxhIiwibzEiLCJvMyIsInBhcnNlX1hMU0JQYXJzZWRGb3JtdWxhIiwicGFyc2VfWExTQkFycmF5UGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JDZWxsUGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JOYW1lUGFyc2VkRm9ybXVsYSIsInBhcnNlX1hMU0JTaGFyZWRQYXJzZWRGb3JtdWxhIiwib2RzX3RvX2NzZl9mb3JtdWxhIiwiY3NmX3RvX29kc19mb3JtdWxhIiwib2RzX3RvX2NzZl8zRCIsImNzZl90b19vZHNfM0QiLCJfc3Nmb3B0cyIsImJyb3dzZXJfaGFzX01hcCIsImdldF9zc3RfaWQiLCJyZXZhcnIiLCJjb2xfb2JqX3ciLCJ3Y2giLCJkZWZhdWx0X21hcmdpbnMiLCJtYXJnaW5zIiwiZGVmcyIsImdldF9jZWxsX3N0eWxlIiwic2FmZV9mb3JtYXQiLCJmbXRpZCIsImZpbGxpZCIsImNoZWNrX3dzIiwicGFyc2Vfd3NfeG1sX2RpbSIsIm1lcmdlY3JlZ2V4Iiwic2hlZXRkYXRhcmVnZXgiLCJobGlua3JlZ2V4IiwiZGltcmVnZXgiLCJjb2xyZWdleCIsImFmcmVnZXgiLCJtYXJnaW5yZWdleCIsInNoZWV0cHJyZWdleCIsInNoZWV0cHJyZWdleDIiLCJzdnNyZWdleCIsInBhcnNlX3dzX3htbCIsImRhdGExIiwiZGF0YTIiLCJtdGNoIiwic2hlZXRQciIsInBhcnNlX3dzX3htbF9zaGVldHByIiwicGFyc2Vfd3NfeG1sX3NoZWV0cHIyIiwic3ZzIiwicGFyc2Vfd3NfeG1sX3NoZWV0dmlld3MiLCJwYXJzZV93c194bWxfY29scyIsInBhcnNlX3dzX3htbF9kYXRhIiwiYWZpbHRlciIsInBhcnNlX3dzX3htbF9hdXRvZmlsdGVyIiwiX21lcmdlIiwicGFyc2Vfd3NfeG1sX2hsaW5rcyIsInBhcnNlX3dzX3htbF9tYXJnaW5zIiwidG1wcmVmIiwid3JpdGVfd3NfeG1sX21lcmdlcyIsIndyaXRlX3dzX3htbF9zaGVldHByIiwibmVlZGVkIiwiY25hbWUiLCJvdXRsaW5lcHJvcHMiLCJzaGVldHByb3RfZGVmZmFsc2UiLCJzaGVldHByb3RfZGVmdHJ1ZSIsIndyaXRlX3dzX3htbF9wcm90ZWN0aW9uIiwicm5nIiwibWFyZ2luIiwid3JpdGVfd3NfeG1sX21hcmdpbnMiLCJzZWVuY29sIiwiY29saSIsImNvbG0iLCJjb2xNIiwid3JpdGVfd3NfeG1sX2NvbHMiLCJ3cml0ZV93c194bWxfYXV0b2ZpbHRlciIsIm5hbWVzIiwic3ZpZXdyZWdleCIsIndyaXRlX3dzX3htbF9zaGVldHZpZXdzIiwic3ZpZXciLCJ3cml0ZV93c194bWxfY2VsbCIsIm9sZHQiLCJvbGR2IiwiY2VsbHJlZ2V4Iiwicm93cmVnZXgiLCJpc3JlZ2V4IiwicmVmcmVnZXgiLCJtYXRjaF92IiwibWF0Y2hfZiIsInNkYXRhIiwiY3JlZiIsInRhZ3IiLCJ0YWdjIiwic3N0ciIsImZ0YWciLCJkb19mb3JtYXQiLCJhcnJheWYiLCJzaGFyZWRmIiwicm93b2JqIiwicm93cml0ZSIsInNoZWV0U3R1YnMiLCJtYXJyIiwibWFycmxlbiIsInhsZW4iLCJyc3RhcnRpIiwib3V0YSIsInJzbGljZSIsIl9fX2YiLCJfdGFnIiwiX3IiLCJ3cml0ZV93c194bWxfZGF0YSIsInBhcmFtcyIsIl9jZWxsIiwid3JpdGVfd3NfeG1sIiwicmRhdGEiLCJfZHJhd2luZyIsInJlbGMiLCJwYXJzZV9CcnRSb3dIZHIiLCJ3cml0ZV9CcnRSb3dIZHIiLCJuY29sc3BhbiIsImxjcyIsImNhZGRyIiwiZmlyc3QiLCJ3cml0ZV9yb3dfaGVhZGVyIiwicGFyc2VfQnJ0V3NEaW0iLCJ3cml0ZV9CcnRXc0RpbSIsInBhcnNlX0JydFdzRm10SW5mbyIsInBhcnNlX0JydFdzUHJvcCIsIndyaXRlX0JydFdzUHJvcCIsInBhcnNlX0JydENlbGxCbGFuayIsIndyaXRlX0JydENlbGxCbGFuayIsIm5jZWxsIiwicGFyc2VfQnJ0U2hvcnRCbGFuayIsIndyaXRlX0JydFNob3J0QmxhbmsiLCJwYXJzZV9CcnRDZWxsQm9vbCIsImZCb29sIiwid3JpdGVfQnJ0Q2VsbEJvb2wiLCJwYXJzZV9CcnRTaG9ydEJvb2wiLCJ3cml0ZV9CcnRTaG9ydEJvb2wiLCJwYXJzZV9CcnRDZWxsRXJyb3IiLCJiRXJyb3IiLCJ3cml0ZV9CcnRDZWxsRXJyb3IiLCJwYXJzZV9CcnRTaG9ydEVycm9yIiwid3JpdGVfQnJ0U2hvcnRFcnJvciIsInBhcnNlX0JydENlbGxJc3N0IiwiaXNzdCIsIndyaXRlX0JydENlbGxJc3N0IiwicGFyc2VfQnJ0U2hvcnRJc3N0Iiwid3JpdGVfQnJ0U2hvcnRJc3N0IiwicGFyc2VfQnJ0Q2VsbFJlYWwiLCJ3cml0ZV9CcnRDZWxsUmVhbCIsInBhcnNlX0JydFNob3J0UmVhbCIsIndyaXRlX0JydFNob3J0UmVhbCIsInBhcnNlX0JydENlbGxSayIsIndyaXRlX0JydENlbGxSayIsInBhcnNlX0JydFNob3J0UmsiLCJ3cml0ZV9CcnRTaG9ydFJrIiwicGFyc2VfQnJ0Q2VsbFJTdHJpbmciLCJwYXJzZV9CcnRDZWxsU3QiLCJ3cml0ZV9CcnRDZWxsU3QiLCJwYXJzZV9CcnRTaG9ydFN0Iiwid3JpdGVfQnJ0U2hvcnRTdCIsInBhcnNlX0JydEZtbGFCb29sIiwicGFyc2VfQnJ0Rm1sYUVycm9yIiwicGFyc2VfQnJ0Rm1sYU51bSIsInBhcnNlX0JydEZtbGFTdHJpbmciLCJwYXJzZV9CcnRNZXJnZUNlbGwiLCJ3cml0ZV9CcnRNZXJnZUNlbGwiLCJ3cml0ZV9CcnRCZWdpbk1lcmdlQ2VsbHMiLCJwYXJzZV9CcnRITGluayIsInJlbElkIiwid3JpdGVfQnJ0SExpbmsiLCJsb2NpZHgiLCJwYXJzZV9CcnRQYW5lIiwicGFyc2VfQnJ0QXJyRm1sYSIsImZBbHdheXNDYWxjIiwicGFyc2VfQnJ0U2hyRm1sYSIsIndyaXRlX0JydENvbEluZm8iLCJCcnRNYXJnaW5LZXlzIiwicGFyc2VfQnJ0TWFyZ2lucyIsIndyaXRlX0JydE1hcmdpbnMiLCJwYXJzZV9CcnRCZWdpbldzVmlldyIsIndyaXRlX0JydEJlZ2luV3NWaWV3IiwiV29ya2Jvb2siLCJ3cml0ZV9CcnRDZWxsSWdub3JlRUMiLCJ3cml0ZV9CcnRTaGVldFByb3RlY3Rpb24iLCJwYXJzZV9CcnREVmFsIiwicGFyc2VfQnJ0RFZhbDE0IiwicGFyc2Vfd3NfYmluIiwiYWkiLCJhZiIsIlJSIiwiYWlpIiwid3JpdGVfd3NfYmluX2NlbGwiLCJsYXN0X3NlZW4iLCJ3cml0ZV9DRUxMVEFCTEUiLCJjYXAiLCJ3cml0ZV9NRVJHRUNFTExTIiwid3JpdGVfQ09MSU5GT1MiLCJ3cml0ZV9JR05PUkVFQ1MiLCJ3cml0ZV9ITElOS1MiLCJ3cml0ZV9MRUdBQ1lEUkFXSU5HIiwid3JpdGVfQVVUT0ZJTFRFUiIsIndyaXRlX1dTVklFV1MyIiwid3JpdGVfU0hFRVRQUk9URUNUIiwid3JpdGVfd3NfYmluIiwicGFyc2VfQ2FjaGUiLCJuZiIsInBhcnNlX2NoYXJ0IiwiY3NoZWV0IiwibmMiLCJwYXJzZV9jc194bWwiLCJwYXJzZV9CcnRDc1Byb3AiLCJwYXJzZV9jc19iaW4iLCJXQlByb3BzRGVmIiwiV0JWaWV3RGVmIiwiU2hlZXREZWYiLCJDYWxjUHJEZWYiLCJwdXNoX2RlZmF1bHRzX2FycmF5IiwicHVzaF9kZWZhdWx0cyIsInBhcnNlX3diX2RlZmF1bHRzIiwic2FmZTE5MDQiLCJiYWRjaGFycyIsImNoZWNrX3dzX25hbWUiLCJfZ29vZCIsImNoZWNrX3diX25hbWVzIiwiTiIsImNvZGVzIiwiY24iLCJjaGVja193YiIsIlNoZWV0cyIsIndibnNyZWdleCIsInBhcnNlX3diX3htbCIsInhtbG5zIiwiZG5hbWUiLCJkbnN0YXJ0Iiwid3JpdGVfd2JfeG1sIiwid3JpdGVfbmFtZXMiLCJ3b3JrYm9va1ByIiwicGFyc2VfQnJ0QnVuZGxlU2giLCJ3cml0ZV9CcnRCdW5kbGVTaCIsInBhcnNlX0JydFdiUHJvcCIsInN0ck5hbWUiLCJ3cml0ZV9CcnRXYlByb3AiLCJwYXJzZV9CcnRGUlRBcmNoSUQkIiwicGFyc2VfQnJ0TmFtZSIsInBhcnNlX3diX2JpbiIsIk5hbWVzIiwid3JpdGVfQlVORExFU0hTIiwidml6Iiwid3JpdGVfQnJ0RmlsZVZlcnNpb24iLCJ3cml0ZV9CcnRCb29rVmlldyIsIndyaXRlX0JPT0tWSUVXUyIsInZpc3RhYiIsIndyaXRlX3diX2JpbiIsInBhcnNlX3diIiwicGFyc2Vfd3MiLCJwYXJzZV9jcyIsInBhcnNlX21zIiwicGFyc2VfZHMiLCJwYXJzZV9zdHkiLCJwYXJzZV90aGVtZSIsInBhcnNlX3NzdCIsInBhcnNlX2NtbnQiLCJwYXJzZV9jYyIsInBhcnNlX3hsaW5rIiwicGFyc2VfeGxtZXRhIiwid3JpdGVfd2IiLCJ3cml0ZV93cyIsIndyaXRlX3N0eSIsIndyaXRlX3NzdCIsIndyaXRlX2NtbnQiLCJ3cml0ZV94bG1ldGEiLCJhdHRyZWdleGcyIiwiYXR0cmVnZXgyIiwieGxtbF9wYXJzZXhtbHRhZyIsIndvcmRzIiwieGxtbF9wYXJzZXhtbHRhZ29iaiIsIlhMTUxGb3JtYXRNYXAiLCJ4bG1sX2Zvcm1hdCIsInhsbWxfc2V0X2N1c3Rwcm9wIiwib3ZhbCIsInNhZmVfZm9ybWF0X3hsbWwiLCJwcm9jZXNzX3N0eWxlX3hsbWwiLCJzdGFnIiwiSSIsInBhcnNlX3hsbWxfZGF0YSIsImNzdHkiLCJzaWQiLCJpbnRlcmlvcnMiLCJ4bG1sX2NsZWFuX2NvbW1lbnQiLCJwYXJzZV94bG1sX3htbCIsIm9wZW5pbmciLCJpc2h0bWwiLCJfbyIsImh0bWxfdG9fd29ya2Jvb2siLCJzaGVldG5hbWVzIiwiY3Vyc2hlZXQiLCJzaGVldG5hbWUiLCJkdGFnIiwiZGlkeCIsImZpZHgiLCJwaWR4IiwiY3N0eXMiLCJ3c3Byb3BzIiwicmF3X1JuMyIsImNtYSIsImNtZCIsInNzZmlkeCIsIl9jb2wiLCJfTmFtZWRSYW5nZSIsIl9EZWZpbmVkTmFtZSIsIkF1dG9GaWx0ZXIiLCJwYXJzZV9mb2RzIiwicGFnZW1hcmdpbnMiLCJwYXJzZV94bG1sIiwiZml4X3JlYWRfb3B0cyIsIndyaXRlX3Byb3BzX3hsbWwiLCJ3cml0ZV93Yl94bG1sIiwid3JpdGVfc3R5X3hsbWwiLCJ3cml0ZV9uYW1lX3hsbWwiLCJ3cml0ZV9uYW1lc194bG1sIiwid3JpdGVfd3NfeGxtbF9uYW1lcyIsIndyaXRlX3dzX3hsbWxfd3NvcHRzIiwid3JpdGVfd3NfeGxtbF9jb21tZW50Iiwid3JpdGVfd3NfeGxtbF9jZWxsIiwibWkiLCJ3cml0ZV93c194bG1sX3JvdyIsIndyaXRlX3dzX3hsbWxfdGFibGUiLCJza2lwIiwid3JpdGVfd3NfeGxtbCIsIndyaXRlX3hsbWwiLCJwYXJzZV9jb21wb2JqIiwiQ09OVElOVUVfUlQiLCJzbHVycCIsIlJlY29yZFR5cGUiLCJuZXh0cnQiLCJYTFNSZWNvcmRFbnVtIiwibGwiLCJzYWZlX2Zvcm1hdF94ZiIsIm1ha2VfY2VsbCIsInBhcnNlX3dvcmtib29rIiwiRGlyZWN0b3J5IiwibGFzdF9mb3JtdWxhIiwiY3VyX3NoZWV0IiwiUHJlYW1ibGUiLCJsYXN0Y2VsbCIsImxhc3RfY2VsbCIsImNtbnQiLCJybmdDIiwicm5nUiIsInRlbXBfdmFsIiwiY291bnRyeSIsIlhGcyIsInBhbGV0dGUiLCJnZXRfcmdiIiwicHJvY2Vzc19jZWxsX3N0eWxlIiwieGZkIiwiYWRkY2VsbCIsImZpbGVfZGVwdGgiLCJhZmkiLCJvYmplY3RzIiwibGFzdF9SVCIsIkJJRkYyRm10IiwiQklGRjJGbXRUYWJsZSIsIkZpbHRlckRhdGFiYXNlcyIsImxhc3RfbGJsIiwic2Vlbl9jb2RlcGFnZSIsImNwdmFsIiwidG1wcmkiLCJmYWtlYnM4IiwiX2ZyIiwiX2ZjIiwiX2ZlIiwiX2FycmF5c3RhcnQiLCJfaiIsIl9peGZlIiwiYjRpZHgiLCJiMmlkeCIsIm5vdGVvYmoiLCJQU0NMU0lEIiwicGFyc2VfeGxzX3Byb3BzIiwiRFNJIiwiRG9jU3VtbWFyeSIsIlNJIiwiU3VtbWFyeSIsIndyaXRlX3hsc19wcm9wcyIsIkRTRW50cmllcyIsIlNFbnRyaWVzIiwiQ0VudHJpZXMiLCJLZXlzIiwiRG9jU3VtbWFyeVJFIiwiU3VtbWFyeVJFIiwiQ0VudHJpZXMyIiwicGFyc2VfeGxzY2ZiIiwiQ29tcE9iaiIsIldCIiwiV29ya2Jvb2tQIiwiX2RhdGEiLCJ3cml0ZV94bHNjZmIiLCJ3YnBhdGgiLCJ3cml0ZV9iaWZmX2J1ZiIsIndyaXRlX2JpZmZfY29udGludWUiLCJ3cml0ZV9CSUZGMkJFUlIiLCJ3cml0ZV9CSUZGMkxBQkVMIiwid3JpdGVfd3NfYmlmZjJfY2VsbCIsIndyaXRlX3dzX2JpZmYyIiwid3JpdGVfYmlmZjJfYnVmIiwid3JpdGVfRk9OVFNfYmlmZjgiLCJ3cml0ZV9GTVRTX2JpZmY4Iiwid3JpdGVfRkVBVCIsIndyaXRlX0NFTExYRlNfYmlmZjgiLCJ3cml0ZV93c19iaWZmOF9obGlua3MiLCJITCIsIndyaXRlX3dzX2NvbHNfYmlmZjgiLCJ3cml0ZV93c19iaWZmOF9jZWxsIiwid3JpdGVfd3NfYmlmZjgiLCJfV0IiLCJfc2hlZXQiLCJNQVhfUk9XUyIsIndyaXRlX2JpZmY4X2dsb2JhbCIsIl9zaGVldHMiLCJfd2IiLCJibGVuIiwid3JpdGVfYmlmZjhfYnVmIiwiZml4X3dyaXRlX29wdHMiLCJodG1sX3RvX3NoZWV0IiwibXRjaDIiLCJDUyIsImhkIiwibWlkeCIsIl90IiwibWFrZV9odG1sX3JvdyIsIkhUTUxfQkVHSU4iLCJIVE1MX0VORCIsImJvb2tfbmV3IiwiYm9va19hcHBlbmRfc2hlZXQiLCJtYWtlX2h0bWxfcHJlYW1ibGUiLCJzaGVldF90b19odG1sIiwic2hlZXRfYWRkX2RvbSIsIm9yX1IiLCJvcl9DIiwiaXNfZG9tX2VsZW1lbnRfaGlkZGVuIiwiZWx0cyIsIkFlbHRzIiwiQWVsdGkiLCJwYXJzZV9kb21fdGFibGUiLCJ0YWJsZV90b19ib29rIiwiZ2V0X2NvbXB1dGVkX3N0eWxlIiwiZ2V0X2dldF9jb21wdXRlZF9zdHlsZV9mdW5jdGlvbiIsInBhcnNlX3RleHRfcCIsImZpeGVkIiwibnVtYmVyX2Zvcm1hdHNfb2RzIiwicGFyc2VfY29udGVudF94bWwiLCJORnRhZyIsInNoZWV0YWciLCJyb3d0YWciLCJTaGVldE5hbWVzIiwiY3RhZyIsInRleHRwIiwidGV4dHBpZHgiLCJ0ZXh0UiIsInJvd19vbCIsIm51bWJlcl9mb3JtYXRfbWFwIiwibXJhbmdlIiwibVIiLCJtQyIsInJvd3BlYXQiLCJjb2xwZWF0IiwiYXRhZyIsIl9SZWYiLCJjcmVhdG9yaWR4IiwiaXNzdHViIiwiaW50YWJsZSIsInJwdFIiLCJycHQiLCJucmFuZ2UiLCJwdHAiLCJwYXJzZV9vZHMiLCJ3cml0ZV9zdHlsZXNfb2RzIiwibWFzdGVyX3N0eWxlcyIsIndyaXRlX2NvbnRlbnRfb2RzIiwid3JpdGVfdGV4dF9wIiwibnVsbF9jZWxsX3htbCIsImNvdmVyZWRfY2VsbF94bWwiLCJST1dTIiwiX0ZyZWYiLCJ0ZXh0X3AiLCJfdGd0Iiwid3JpdGVfYXV0b21hdGljX3N0eWxlc19vZHMiLCJjaWR4IiwiY29sb2JqIiwiZm9kcyIsIndyaXRlX29kcyIsInU4X3RvX2RhdGF2aWV3IiwidThzdHIiLCJ1OCIsInN0cnU4IiwidThjb250YWlucyIsInU4Y29uY2F0IiwidThhIiwicG9wY250IiwicmVhZERlY2ltYWwxMjhMRSIsImV4cCIsIm1hbnRpc3NhIiwid3JpdGVEZWNpbWFsMTI4TEUiLCJwYXJzZV92YXJpbnQ0OSIsInB0ciIsInZhcmludCIsIndyaXRlX3ZhcmludDQ5IiwidmFyaW50X3RvX2kzMiIsImkzMiIsInBhcnNlX3NoYWxsb3ciLCJ3cml0ZV9zaGFsbG93IiwicHJvdG8iLCJtYXBwYSIsInBhcnNlX2l3YV9maWxlIiwid3JpdGVfaXdhX2ZpbGUiLCJpYXMiLCJpYSIsIm1pZGF0YSIsImFpcGF5bG9hZCIsIm1pZCIsInBhcnNlX3NuYXBweV9jaHVuayIsImNodW5rcyIsImRlY29tcHJlc3NfaXdhX2ZpbGUiLCJjb21wcmVzc19pd2FfZmlsZSIsImZyYW1lIiwicGFyc2Vfb2xkX3N0b3JhZ2UiLCJyc3N0IiwiZHYiLCJkYXRhX29mZnNldCIsImllZWUiLCJwYXJzZV9uZXdfc3RvcmFnZSIsImQxMjgiLCJ3cml0ZV9uZXdfc3RvcmFnZSIsIndyaXRlX29sZF9zdG9yYWdlIiwicGFyc2VfY2VsbF9zdG9yYWdlIiwicGFyc2VfVFNQX1JlZmVyZW5jZSIsInBiIiwicGFyc2VfVFNUX1RhYmxlRGF0YUxpc3QiLCJsZSIsInJ0cCIsInJ0cHJlZiIsIm10eXBlIiwidHN3cHNhIiwicGFyc2VfVFNUX1RpbGVSb3dJbmZvIiwiX2giLCJfbCIsIl9tIiwid2lkZV9vZmZzZXRzIiwidXNlZF9zdG9yYWdlX3U4IiwidXNlZF9zdG9yYWdlIiwidXNlZF9zdG9yYWdlX29mZnNldHMiLCJvZmZzZXRzIiwicGFyc2VfVFNUX1RpbGUiLCJwYXJzZV9UU1RfVGFibGVNb2RlbEFyY2hpdmUiLCJ0aWxlIiwidGwiLCJfdGlsZSIsInBhcnNlX1RTVF9UYWJsZUluZm9BcmNoaXZlIiwidGFibGVyZWYiLCJwYXJzZV9UTl9TaGVldEFyY2hpdmUiLCJzaGFwZW9mZnMiLCJwYXJzZV9UTl9Eb2N1bWVudEFyY2hpdmUiLCJzaGVldG9mZnMiLCJyb290MiIsInBhcnNlX251bWJlcnNfaXdhIiwiaW5kaWNlcyIsInBhY2tldHMiLCJwYWNrZXQiLCJkb2Nyb290IiwiaXdhbSIsIndyaXRlX3RpbGVfcm93IiwidHJpIiwiU1NUIiwibGFzdF9vZmZzZXQiLCJjZWxsX3N0b3JhZ2UiLCJfZHYiLCJfbGFzdF9vZmZzZXQiLCJfY2VsbF9zdG9yYWdlIiwiY2VsbG9hZCIsIl9jZWxsb2FkIiwid3JpdGVfbnVtYmVyc19pd2EiLCJ0cnVuYyIsImRlcGVuZGVudHMiLCJvbGRfY29udGVudCIsInJhdzEiLCJ4MiIsInBhY2tldDIiLCJ5MiIsImluZGljZXNfdmFyaW50IiwiaXZpIiwibWVzcyIsInhpIiwic2hlZXRyb290cmVmIiwiY3J1aWRzcmVmIiwib2xkYnVja2V0IiwiX3giLCJjcnVpZHMiLCJ1dWlkIiwicm93X2hlYWRlcnMiLCJyb3dfaGVhZGVyX3JlZiIsImJhc2VfYnVja2V0IiwiX2J1Y2tldCIsImNvbF9oZWFkZXJfcmVmIiwic3N0cmVmIiwic2VudHJ5Iiwic3giLCJzc3Ryb290Iiwic3hpIiwic3N0ZGF0YSIsIm5ld3NzdCIsInN5IiwicmF3MzIiLCJ0aWxlcmVmIiwidGVudHJ5IiwidHgiLCJ0aWxlcm9vdCIsInRpbGVkYXRhIiwicm93bG9hZCIsIlIyIiwidGlsZXJvdyIsInR5IiwicmF3MyIsImZpeF9vcHRzX2Z1bmMiLCJnZXRfc2hlZXRfdHlwZSIsInNhZmVfcGFyc2Vfd2JyZWxzIiwid2JyZWxzIiwic2FmZV9wYXJzZV9zaGVldCIsInJlbHNQYXRoIiwic2hlZXRSZWxzIiwic3R5cGUiLCJkZmlsZSIsImRyZWxzcCIsImRyYXciLCJjaGFydHAiLCJjcmVsc3AiLCJ0Y29tbWVudHMiLCJzdHJpcF9mcm9udF9zbGFzaCIsIl96aXAiLCJkaXIiLCJ4bHNiIiwiYmlubmFtZSIsInByb3BkYXRhIiwiY3VzdHByb3BzIiwiZGVwcyIsIndic2hlZXRzIiwid2JleHQiLCJ3YnJlbHNpIiwid2JyZWxzZmlsZSIsIm5tb2RlIiwid3Nsb29wIiwic25qc2VlbiIsInNuaiIsInBhcnNlX3hsc3hjZmIiLCJkc20iLCJzZWRzIiwiZWluZm8iLCJ3cml0ZV96aXBfeGxzeGIiLCJ3cml0ZV96aXBfeGxzeCIsInZiYWZtdCIsIl9zbiIsIndzcmVscyIsIl90eXBlIiwibmVlZF92bWwiLCJuZWVkdGMiLCJyZWFkX2NmYiIsInJlYWRfemlwIiwicmVhZF9wbGFpbnRleHQiLCJtYWluIiwicmVhZF9wbGFpbnRleHRfcmF3IiwicmVhZF91dGYxNiIsImJzdHJpZnkiLCJyZWFkX3BybiIsInJlYWRTeW5jIiwiYWIiLCJ2dSIsIndyaXRlX2NmYl9jdHIiLCJ3cml0ZV96aXBfdHlwZSIsIndyaXRlX3ppcF9kZW5vdWVtZW50Iiwib29wdHMiLCJmdHlwZSIsIndyaXRlX2NmYl90eXBlIiwid3JpdGVfc3RyaW5nX3R5cGUiLCJib20iLCJ3cml0ZV9zdHh0X3R5cGUiLCJ3cml0ZV9iaW5hcnlfdHlwZSIsIndyaXRlU3luYyIsInNoZWV0X3RvX3R4dCIsInNoZWV0X3RvX2NzdiIsIm1ha2VfanNvbl9yb3ciLCJkZWZ2YWwiLCJyYXciLCJpc2VtcHR5Iiwib3V0aSIsImNvdW50ZXIiLCJoZWFkZXJfY250IiwicXJlZyIsIm1ha2VfY3N2X3JvdyIsIkZTIiwidHh0IiwiZW5kcmVnZXgiLCJzaGVldF90b19mb3JtdWxhZSIsImNtZHMiLCJzaGVldF9hZGRfanNvbiIsImpzIiwiSlMiLCJ3c19nZXRfY2VsbF9zdHViIiwianNvbl90b19zaGVldCIsIlJDIiwid2Jfc2hlZXRfaWR4Iiwic2giLCJyb2xsIiwiYm9va19zZXRfc2hlZXRfdmlzaWJpbGl0eSIsInZpcyIsImNlbGxfc2V0X251bWJlcl9mb3JtYXQiLCJjZWxsX3NldF9oeXBlcmxpbmsiLCJjZWxsX3NldF9pbnRlcm5hbF9saW5rIiwiY2VsbF9hZGRfY29tbWVudCIsImF1dGhvciIsInNoZWV0X3NldF9hcnJheV9mb3JtdWxhIiwiZHluYW1pYyIsInJuZ3N0ciIsInNoZWV0X2Zyb21fYXJyYXlfb2ZfYXJyYXlzIiwiWExTWC51dGlscyIsIlhMU1guU1NGIiwiZXhwb3J0X2pzb25fdG9fZXhjZWwiLCJ0aCIsImpzb25EYXRhIiwiZGVmYXVsdFRpdGxlIiwid3NfbmFtZSIsIndib3V0IiwiWExTWC53cml0ZSIsIkZpbGVTYXZlciIsInByb2Nlc3NDc3ZEYXRhIiwiZGF0YVN0cmluZyIsImRhdGFTdHJpbmdMaW5lcyIsImltcG9ydENzdkZyb21GaWxlIiwicmVhZGVyIiwiWExTWC5yZWFkIiwid3NuYW1lIiwiaW1wb3J0ZWQiLCJ0cmFuc2Zvcm1FeHBvcnRDb2x1bW4iLCJfcGFyYW1zIiwiQ3N2IiwiRXhwb3J0Q3N2IiwiRXhjZWwuZXhwb3J0X2pzb25fdG9fZXhjZWwiXSwibWFwcGluZ3MiOiIwMkNBSUEsTUFBTUEsR0FBcUIsQ0FDekIsY0FBY0MsRUFBNEIsQ0FDeEMsTUFBTyxFQUNULEVBQ0EsZUFBZUMsRUFBZ0IsQ0FDdkIsS0FBQSxDQUFFLENBQU0sRUFBQUEsRUFDUkMsRUFBTUMsR0FDSEMsV0FBUyxJQUNQLEVBQUVELENBQUksQ0FDZCxFQUVHRSxFQUFLQyxhQUFVLE1BQ2QsTUFBQSxDQUNMLFNBQVUsQ0FDUixRQUFTLENBQ1AsT0FBUSxDQUNOLFFBQVMsR0FDVCxNQUFPLENBQ0wsU0FBVUYsV0FBUyxJQUdWLE9BQU8sV0FBYSxHQUM1QixDQUNGLENBQ0YsQ0FDRixDQUNGLEVBQ0QsS0FBTSxDQUFFLEVBQ1IsT0FBUSxDQUFFLEVBQ1YsT0FBUSxDQUNOLFVBQVcsQ0FDVCxHQUFJLDJCQUNKLFNBQVUsR0FDVixJQUFLLENBQ0gsS0FBTSxDQUNQLENBQ0YsRUFDRCxTQUFVLENBQ1IsV0FBWSxDQUNWLE1BQU8sQ0FFTixDQUNGLENBQ0YsRUFDRCxRQUFTLENBQ1AsR0FBR0MsRUFBRyxLQUFLLGFBRVgsYUFBYyxFQUNmLEVBQ0QsZ0JBQWdCLENBQUUsUUFBQUUsR0FBYyxDQUMxQkEsSUFBWSxVQUNkRixFQUFHLGFBQWEsTUFBTSxDQUFFLFFBQVMsRUFBRSx5QkFBeUIsRUFBRyxDQUVuRSxFQUNBLFNBQVUsR0FDVixLQUFNLEdBQ04sUUFBUyxDQUNQLE9BQVEsQ0FDTixVQUFXLENBQ1Qs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SUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxjQUFlLEVBQUVDLENBQW1CLEVBQ3ZELElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixJQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLElBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsSUFBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxjQUFlLEVBQUVFLEVBQW1CLEVBQ3ZELEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFDekIsS0FBZSxDQUFFLEVBQUUsSUFBTSxFQUN6QixLQUFlLENBQUUsRUFBRSxJQUFNLEVBQ3pCLEtBQWUsQ0FBRSxFQUFFLElBQU0sRUFD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LE1BQU0sRUFBUSw0Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSx1REFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDZDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwrQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLGtEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEscURBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxxREFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHNEQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBTyxpQkFDakJBLEVBQUVBLEVBQUUsTUFBTSxFQUFPLGdCQUNqQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsZ0NBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSxzQkFDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHNCQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsOENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLHdDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSwyQ0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDRDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsNENBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUsTUFBTSxFQUFRLDJDQUNsQkEsRUFBRUEsRUFBRSxNQUFNLEVBQVEsMkNBQ2xCQSxFQUFFQSxFQUFFLE1BQU0sRUFBUSw4Q0FDbEJBLEVBQUVBLEVBQUUs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TCxJQUFLLGNBQ0wsSUFBSyxrQkFDTCxJQUFLLFlBQ0wsSUFBSyxpQkFDTCxJQUFLLGNBQ0wsSUFBSyxlQUNMLElBQUssZUFDTCxJQUFLLFlBQ0wsSUFBSyxRQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxnQkFDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssYUFDTCxJQUFLLGdCQUNMLElBQUssWUFDTCxJQUFLLGFBQ0wsSUFBSyxVQUNMLElBQUssT0FDTCxJQUFLLGNBQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLGlCQUNMLElBQUssY0FDTCxJQUFLLG9CQUNMLElBQUssZ0JBQ0wsSUFBSyxlQUNMLElBQUssaUJBQ0wsSUFBSyxrQkFDTCxJQUFLLGNBQ0wsSUFBSyxxQkFDTCxJQUFLLFNBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxlQUNMLElBQUssZUFDTCxJQUFLLGlCQUNMLElBQUssZUFDTCxJQUFLLGtCQUNMLElBQUsscUJBQ0wsSUFBSyxhQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxnQkFDTCxJQUFLLGNBQ0wsSUFBSyxlQUNMLElBQUssa0JBQ0wsSUFBSyxvQkFDTCxJQUFLLGtCQUNMLElBQUssaUJBQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLFVBQ0wsSUFBSyxTQUNMLElBQUssY0FDTCxJQUFLLFVBQ0wsSUFBSyxvQkFDTCxJQUFLLGtCQUNMLElBQUssUUFDTCxJQUFLLGFBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLG1CQUNMLElBQUssb0JBQ0wsSUFBSyxjQUNMLElBQUssY0FDTCxJQUFLLG1CQUNMLElBQUssZUFDTCxJQUFLLGFBQ0wsSUFBSyxlQUNMLElBQUssZ0JBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLGNBQ0wsSUFBSyxpQkFDTCxJQUFLLFlBQ0wsSUFBSyxjQUNMLElBQUssZUFDTCxJQUFLLGFBQ0wsSUFBSyxhQUNMLElBQUssZ0JBQ0wsSUFBSyxlQUNMLElB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SixHQUFJLFFBQ0osR0FBSSxPQUNKLEdBQUksVUFDSixHQUFJLE9BQ0osR0FBSSxTQUNKLEdBQUksU0FDSixHQUFJLE1BQ0osR0FBSSxRQUNKLEdBQUksT0FDSixHQUFJLFVBQ0osR0FBSSxTQUNKLEdBQUksU0FDSixHQUFJLFNBQ0osR0FBSSxXQUNKLEdBQUksU0FDSixHQUFJLFlBQ0osR0FBSSxRQUNKLEdBQUksT0FDSixHQUFJLE9BQ0osR0FBSSxPQUNKLEdBQUksV0FDSixHQUFJLFNBQ0osR0FBSSxRQUNKLEdBQUksVUFDSixHQUFJLFNBQ0osR0FBSSxZQUNKLEdBQUksY0FDSixHQUFJLFlBQ0osR0FBSSxTQUNKLEdBQUksUUFDSixHQUFJLE9BQ0osR0FBSSxPQUNKLElBQUssU0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssY0FDTCxJQUFLLFdBQ0wsSUFBSyxZQUNMLElBQUssTUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxhQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxZQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLFdBQ0wsSUFBSyxVQUNMLElBQUssSUFDTCxJQUFLLElBQ0wsSUFBSyxRQUNMLElBQUssU0FDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFdBQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssTUFDTCxJQUFLLE1BQ0wsSUFBSyxNQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxjQUNMLElBQUssaUJBQ0wsSUFBSyxnQkFDTCxJQUFLLGlCQUNMLElBQUssV0FDTCxJQUFLLGNBQ0wsSUFBSyxpQkFDTCxJQUFLLGlCQUNMLElBQUssYUFDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxTQUNMLElBQUssYUFDTCxJQUFLLE1BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxPQUNMLElBQUssV0FDTCxJQUFLLGdCQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssU0FDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxhQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLE1BQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLE1BQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFNBQ0wsSUFBSyxXQUNMLElBQUssU0FDTCxJQUFLLGFBQ0wsSUFBSyxPQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssZ0JBQ0wsSUFBSyxXQUNMLElBQUssYUFDTCxJQUFLLGNBQ0wsSUFBSyxnQkFDTCxJQUFLLGtCQUNMLElBQUssZ0JBQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLFFBQ0wsSUFBSyxhQUNMLElBQUssS0FDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssWUFDTCxJQUFLLGNBQ0wsSUFBSyxpQkFDTCxJQUFLLE9BQ0wsSUFBSyxnQkFDTCxJQUFLLFdBQ0wsSUFBSyxjQUNMLElBQUssV0FDTCxJQUFLLGlCQUNMLElBQUssYUFDTCxJQUFLLFlBQ0wsSUFBSyxlQUNMLElBQUssZUFDTCxJQUFLLGNBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLGVBQ0wsSUFBSyxTQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxTQUNMLElBQUssU0FDTCxJQUFLLGFBQ0wsSUFBSyxZQUNMLElBQUssT0FDTCxJQUFLLFlBQ0wsSUFBSyxRQUNMLElBQUssT0FDTCxJQUFLLFNBQ0wsSUFBSyxZQUNMLElBQUssUUFDTCxJQUFLLFlBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLGNBQ0wsSUFBSyxjQUNMLElBQUssU0FDTCxJQUFLLGVBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssY0FDTCxJQUFLLE1BQ0wsSUFBSyxTQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFNBQ0wsSUFBSyxRQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLE1BQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxRQUNMLElBQUssV0FDTCxJQUFLLGFBQ0wsSUFBSyxjQUNMLElBQUssT0FDTCxJQUFLLFdBQ0wsSUFBSyxPQUNMLElBQUssZ0JBQ0wsSUFBSyxZQUNMLElBQUssY0FDTCxJQUFLLFFBQ0wsSUFBSyxpQkFDTCxJQUFLLGtCQUNMLElBQUssa0JBQ0wsSUFBSyxpQkFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxvQkFDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssYUFDTCxJQUFLLGVBQ0wsSUFBSyxRQUNMLElBQUssY0FDTCxJQUFLLGNBQ0wsSUFBSyxXQUNMLElBQUssZUFDTCxJQUFLLFlBQ0wsSUFBSyxXQUNMLElBQUssV0FDTCxJQUFLLE9BQ0wsSUFBSyxPQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssT0FDTCxJQUFLLFdBQ0wsSUFBSyxnQkFDTCxJQUFLLFlBQ0wsSUFBSyxrQkFDTCxJQUFLLGVBQ0wsSUFBSyxnQkFDTCxJQUFLLG1CQUNMLElBQUssY0FDTCxJQUFLLGdCQUNMLElBQUssY0FDTCxJQUFLLFdBQ0wsSUFBSyxNQUNMLElBQUssWUFDTCxJQUFLLGFBQ0wsSUFBSyxxQkFDTCxJQUFLLG1CQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxVQUNMLElBQUssUUFDTCxJQUFLLFNBQ0wsSUFBSyxPQUNMLElBQUssU0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxhQUNMLElBQUssY0FDTCxJQUFLLFlBQ0wsSUFBSyxTQUNMLElBQUssVUFDTCxJQUFLLFFBQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLGFBQ0wsSUFBSyxTQUNMLElBQUssV0FDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssU0FDTCxJQUFLLFFBQ0wsSUFBSyxTQUNMLElBQUssTUFDTCxJQUFLLE9BQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssT0FDTCxJQUFLLE9BQ0wsSUFBSyxXQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssT0FDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssVUFDTCxJQUFLLGFBQ0wsSUFBSyxhQUNMLElBQUssUUFDTCxJQUFLLFFBQ0wsSUFBSyxXQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxTQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxRQUNMLElBQUssVUFDTCxJQUFLLFdBQ0wsSUFBSyxZQUNMLElBQUssV0FDTCxJQUFLLGFBQ0wsSUFBSyxVQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxXQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxZQUNMLElBQUssWUFDTCxJQUFLLFlBQ0wsSUFBSyxjQUNMLElBQUssVUFDTCxJQUFLLFlBQ0wsSUFBSyxXQUNMLElBQUssVUFDTCxJQUFLLFVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFVBQ0wsSUFBSyxjQUNMLElBQUssTUFDTCxJQUFLLGNBQ0wsSUFBSyxNQUNMLElBQUssYUFDTCxJQUFLLGdCQUNMLElBQUssVUFDTCxJQUFLLGVBQ0wsSUFBSyxVQUNMLElBQUssV0FDTCxJQUFLLFNBQ0wsSUFBSyxZQUNMLElBQUssWUFDUCxFQUNJRCxHQUFXLENBQ2IsRUFBRyxFQUNILEVBQUcsRUFDSCxHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osR0FBSSxFQUNKLEdBQUksRUFDSixHQUFJLEVBQ0osSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUssRUFDTCxJQUFLLEVBQ0wsSUFBSyxFQUNMLElBQUss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RCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQXVDLEVBQUUsQ0FBRyxFQUMzRCxJQUFlLENBQXFDLEVBQUUsRUFBSSxFQUMxRCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQW1DLEVBQUUsQ0FBRyxFQUN2RCxJQUFlLENBQWlDLEVBQUUsRUFBSSxFQUN0RCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQXFDLEVBQUUsQ0FBRyxFQUN6RCxJQUFlLENBQW1DLEVBQUUsRUFBSSxFQUN4RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQW9DLEVBQUUsQ0FBRyxFQUN4RCxJQUFlLENBQWtDLEVBQUUsRUFBSSxFQUN2RCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWtDLEVBQUUsQ0FBRyxFQUN0RCxJQUFlLENBQWdDLEVBQUUsRUFBSSxFQUNyRCxJQUFlLENBQWlDLEVBQUUsQ0FBRyxFQUNyRCxJQUFlLENBQStCLEVBQUUsRUFBSSxFQUNwRCxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQStCLEVBQUUsQ0FBRyxFQUNuRCxJQUFlLENBQTZCLEVBQUUsRUFBSSxFQUNsRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTJCLEVBQUUsQ0FBRyxFQUMvQyxJQUFlLENBQXlCLEVBQUUsRUFBSSxFQUM5QyxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQWdDLEVBQUUsQ0FBRyxFQUNwRCxJQUFlLENBQThCLEVBQUUsRUFBSSxFQUNuRCxJQUFlLENBQThCLEVBQUUsQ0FBRyxFQUNsRCxJQUFlLENBQTRCLEVBQUUsRUFBSSxFQUNqRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTZCLEVBQUUsQ0FBRyxFQUNqRCxJQUFlLENBQTJCLEVBQUUsRUFBSSxFQUNoRCxJQUFlLENBQTRCLEVBQUUsQ0FBRyxFQUNoRCxJQUFlLENBQTBCLEVBQUUsRUFBSSxFQUMvQyxJQUFlLENBQTBCLEVBQUUsQ0FBRyxFQUM5QyxJQUFlLENBQXdCLEVBQUUsRUFBSSxFQUM3QyxJQUFlLENBQXlCLEVBQUUsQ0FBRyxFQUM3QyxJQUFlLENBQXVCLEVBQUUsRUFBSSxFQUM1QyxJQUFlLENBQTZCLEVBQzVDLElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBNEIsRUFBRSxDQUFHLEVBQ2hELElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBK0IsRUFBRSxDQUFHLEVBQ25ELElBQWUsQ0FBNkIsRUFBRSxFQUFJLEVBQ2xELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBK0IsRUFBRSxDQUFHLEVBQ25ELElBQWUsQ0FBNkIsRUFBRSxFQUFJLEVBQ2xELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBMEIsRUFBRSxFQUFJLEVBQy9DLElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBOEIsRUFBRSxDQUFHLEVBQ2xELElBQWUsQ0FBNEIsRUFBRSxFQUFJLEVBQ2pELElBQWUsQ0FBK0IsRUFBRSxD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QWUsQ0FBa0MsRUFBRSxDQUFHLEVBQ3RELElBQWUsQ0FBZ0MsRUFBRSxFQUFJLEVBQ3JELElBQWUsQ0FBaUMsRUFBRSxDQUFHLEVBQ3JELElBQWUsQ0FBK0IsRUFBRSxFQUFJLEVBQ3BELElBQWUsQ0FBb0MsRUFBRSxDQUFHLEVBQ3hELElBQWUsQ0FBa0MsRUFBRSxFQUFJLEVBQ3ZELElBQWUsQ0FBbUMsRUFBRSxDQUFHLEVBQ3ZELElBQWUsQ0FBaUMsRUFBRSxFQUFJLEVBQ3RELElBQWUsQ0FBeUIsRUFBRSxDQUFHLEVBQzdDLElBQWUsQ0FBdUIsRUFBRSxFQUFJLEVBQzVDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBa0MsRUFBRSxDQUFHLEVBQ3RELElBQWUsQ0FBZ0MsRUFBRSxFQUFJLEVBQ3JELElBQWUsQ0FBaUMsRUFBRSxDQUFHLEVBQ3JELElBQWUsQ0FBK0IsRUFBRSxFQUFJLEVBQ3BELElBQWUsQ0FBMkIsRUFBRSxDQUFHLEVBQy9DLElBQWUsQ0FBeUIsRUFBRSxFQUFJLEVBQzlDLElBQWUsQ0FBMEIsRUFBRSxDQUFHLEVBQzlDLElBQWUsQ0FBd0IsRUFBRSxFQUFJLEVBQzdDLElBQWUsQ0FBbUMsRUFBRSxDQUFHLEVBQ3ZELElBQWUsQ0FBaUMsRUFBRSxFQUFJLEVBQ3RELElBQWUsQ0FBMkMsRUFBRSxDQUFHLEVBQy9ELElBQWUsQ0FBeUMsRUFBRSxFQUFJLEVBQzlELElBQWUsQ0FBNEIsRUFBRSxDQUFHLEVBQ2hELElBQWUsQ0FBMEIsRUFBRSxFQUFJLEVBQy9DLElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBNkIsRUFBRSxDQUFHLEVBQ2pELElBQWUsQ0FBMkIsRUFBRSxFQUFJLEVBQ2hELElBQWUsQ0FBZ0MsRUFBRSxDQUFHLEVBQ3BELElBQWUsQ0FBOEIsRUFBRSxFQUFJLEVBQ25ELElBQWUsQ0FBcUIsRUFDcEMsSUFBZSxDQUFnQyxFQUMvQyxJQUFl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LE1BQU9BLEVBQUssS0FBQSxFQUVmLENBQ0gseUVBQ3NDLENBRXBDLElBQUlpeEgsRUFBaUIsQ0FDbkIsT0FBTyxJQUFJLFFBQVEsQ0FBQzU5RyxFQUFTQyxJQUFVLENBU3JDLE1BQU1vbEksRUFBcUIsT0FBTyxPQUFPLENBQUEsRUFQUixDQUMvQixRQUFTLENBQUUsRUFDWCxLQUFNLENBQUUsRUFDUixTQUFVLFFBQ1YsU0FBVSxFQUFBLEVBR2dEem5CLENBQU0sRUFFNURoOEcsRUFBTzBqSSxHQUFJRixHQUFzQkMsRUFBUSxPQUFPLEVBQUdBLEVBQVEsS0FBTXpuQixFQUFReW5CLEVBQVEsUUFBUSxFQUVyRkUsR0FBQSxTQUFTRixFQUFRLFNBQVV6akksQ0FBSSxNQUcxQyxDQUNILEVBRUEsTUFBTWc4RyxFQUFtQixDQUN2QixPQUFPLElBQUksUUFBUSxDQUFDNTlHLEVBQVNDLElBQVUsQ0FVckMsTUFBTW9sSSxFQUF1QixPQUFPLE9BQU8sQ0FBQSxFQVJSLENBQ2pDLFFBQVMsQ0FBRSxFQUNYLEtBQU0sQ0FBRSxFQUNSLFNBQVUsUUFDVixPQUFRLEtBQ1IsT0FBUSxDQUFFLENBQUEsRUFHa0R6bkIsQ0FBTSxFQUU5RDlrRSxFQUFTdXNGLEVBQVEsUUFBUSxJQUFLeHlJLEdBQU1BLEVBQUUsS0FBSyxFQUMzQytPLEVBQU95akksRUFBUSxLQUFLLElBQUsvd0ksR0FBUSt3SSxFQUFRLFFBQVEsSUFBSzlpSSxHQUFRak8sRUFBSWlPLEVBQUksR0FBRyxDQUFDLENBQUMsRUFFM0UwMUIsRUFBT290RyxFQUFRLFFBQVEsSUFBS3h5SSxHQUFLLENBQy9CLE1BQUEwUCxFQUFNLENBQUUsR0FBRzFQLEdBQ2pCLGNBQU8wUCxFQUFJLE1BQ1gsT0FBT0EsRUFBSSxJQUNKQSxDQUFBLENBQ1IsRUFFRGlqSSxHQUEyQjFzRixFQUFRbDNDLEVBQU15akksRUFBUSxTQUFVLENBQ3pELE9BQVFBLEVBQVEsT0FDaEIsT0FBUUEsRUFBUSxPQUVoQixLQUFBcHRHLENBQUEsQ0FDRCxNQUdGLENBQ0gsRUFFQSxJQUFJMmxGLEVBQWlCLENBQ25CLE9BQU8sSUFBSSxRQUFRLENBQUM1OUcsRUFBU0MsSUFBVSxDQU9yQyxNQUFNb2xJLEVBQXFCLE9BQU8sT0FBTyxDQUFBLEVBTEMsQ0FDeEMsS0FBTSxHQUNOLFNBQVUsSUFBQSxFQUdnRHpuQixDQUFNLEVBRTVEN3dELEVBQU8sSUFBSSxLQUFLLENBQUNzNEUsRUFBUSxJQUFJLEVBQUcsQ0FBRSxLQUFNLDBCQUFBLENBQTRCLEVBQzFFVixHQUFVLE9BQU81M0UsRUFBTXM0RSxFQUFRLFNBQVcsTUFBTSxNQUdqRCxDQUNILGNBR3dCLENBQ3hCLE1BQU0sSUFBSWxwRSxFQUFVLENBQ1gsT0FBQSxNQUFNNG9FLEdBQWtCNW9FLENBQUksQ0FDckMiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMTgsMjAsMjEsMjIsNDQsODIsOTcsOTgsMTM0LDEzNV19
|