@datagrok/peptides 1.9.1 → 1.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/563.js DELETED
@@ -1,2 +0,0 @@
1
- var peptides;(()=>{"use strict";var t,e,r={8563:(t,e,r)=>{var n=r(4221),s=r(7659),i=r(3659);function o(t){return Math.random()*t}function h(t){return Math.floor(o(t))}function a(t=!1,e="Assertion error."){if(!t)throw new Error(e)}function l(t,e,r=0){return new Array(t).fill(r).map((()=>new i.OW(e).fill(r)))}function u(t,e,r=1){const n=t.length;a(n==e.length,"Vector lengths do not match.");const s=new i.OW(n);for(let n=0;n<t.length;++n)s[n]=t[n]+r*e[n];return s}function c(t,e,r=1){const n=l(t,e);for(let s=0;s<t;++s)for(let t=0;t<e;++t)n[s][t]=o(r);return n}function f(t,e){const r=function(t){let e=0;for(let r=0;r<t.length;++r)e+=t[r];return e}(function(t){const e=t.length,r=new i.OW(e);for(let e=0;e<t.length;++e)r[e]=t[e]*t[e];return r}(u(t,e,-1)));return Math.sqrt(r)}function g(t,e){const r=t.length,n=l(r,r,0);for(let s=0;s<r;++s)for(let i=s+1;i<r;++i){const r=null==t[s]||null==t[i]?0:e(t[s],t[i]);n[s][i]=n[i][s]=r}return n}class m{constructor(t){var e,r,n,s,i,o,h;this.steps=null!==(e=null==t?void 0:t.steps)&&void 0!==e?e:0,this.cycles=null!==(r=null==t?void 0:t.cycles)&&void 0!==r?r:1e6,this.cutoff=null!==(n=null==t?void 0:t.cutoff)&&void 0!==n?n:0,this.lambda=null!==(s=null==t?void 0:t.lambda)&&void 0!==s?s:2,this.dlambda=null!==(i=null==t?void 0:t.dlambda)&&void 0!==i?i:.01,this.lambda2=this.lambda/2,this.dlambda2=this.dlambda/2,this.epsilon=null!==(o=null==t?void 0:t.epsilon)&&void 0!==o?o:1e-10,this.distanceFunction=null!==(h=null==t?void 0:t.distance)&&void 0!==h?h:f,this.distance=[]}initDistance(t){this.distance=g(t,this.distanceFunction)}calcDistance(t,e,r){return this.distance[e][r]}embed(t){const e=t.length,r=c(e,m.dimension,40);let n=this.lambda2;0==this.steps&&(this.steps=t.length-1),this.initDistance(t);for(let s=0;s<this.cycles;++s){for(let s=0;s<this.steps;++s){const s=h(e);let i=h(e);for(;s==i;)i=h(e);const o=r[s],a=r[i],l=this.calcDistance(t,s,i),c=f(o,a);if(0==this.cutoff||l<=this.cutoff||c<l){const t=n*(l-c)/(c+this.epsilon),e=u(o,a,-1);r[s]=u(o,e,t),r[i]=u(a,e,-t)}}if(n-=this.dlambda2,n<=0)break}return r}}m.dimension=2;class p extends m{embed(t){const e=t.length,r=c(e,p.dimension,40);let n=this.lambda;this.initDistance(t);for(let s=0;s<this.cycles;++s){const s=h(e),i=r[s];for(let o=0;o<e;++o){if(s==o)continue;const e=r[o],h=this.calcDistance(t,s,o),a=f(i,e);if(0==this.cutoff||h<=this.cutoff||a<h){const t=n*(h-a)/(a+this.epsilon),s=u(i,e,-1);r[o]=u(e,s,-t)}}if(n-=this.dlambda,n<=0)break}return r}}class d extends m{constructor(t){var e,r,n,s,i;super(t),this.cycles=null!==(e=null==t?void 0:t.cycles)&&void 0!==e?e:1e3,this.steps=null!==(r=null==t?void 0:t.steps)&&void 0!==r?r:1e5,this.radiusPercent=null!==(n=null==t?void 0:t.radiusPercent)&&void 0!==n?n:1,this.maxDistance=null!==(s=null==t?void 0:t.maxDistance)&&void 0!==s?s:null,this.maxDistanceSteps=null!==(i=null==t?void 0:t.maxDistanceSteps)&&void 0!==i?i:null}embed(t){const e=t.length,r=c(e,d.dimension,40);if(this.initDistance(t),null==this.maxDistanceSteps&&(this.maxDistanceSteps=e*Math.floor((e-1)/2)),null==this.maxDistance){this.maxDistance=-1e37;for(let r=0;r<this.maxDistanceSteps;r++){const r=h(e);let n=h(e);for(;r==n;)n=h(e);const s=this.calcDistance(t,r,n);s>this.maxDistance&&(this.maxDistance=s)}}let n=this.lambda;const s=0==this.radiusPercent?this.maxDistance:this.maxDistance*this.radiusPercent;for(let i=0;i<this.cycles;++i){for(let i=0;i<this.steps;++i){const i=h(e);let o=h(e);for(;i==o;)o=h(e);const a=r[i],l=r[o],c=this.calcDistance(t,i,o),g=f(a,l);if(c<=s||g<c){const t=.5*n*(c-g)/(g+this.epsilon),e=u(a,l,-1);r[i]=u(a,e,t),r[o]=u(l,e,-t)}}if(n-=(this.lambda-this.dlambda)/(this.cycles-1),n<this.dlambda)break}return r}}var w,y,v,b=r(1811),M=r(3979),x=r(5697),S=r(708);!function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan"}(w||(w={})),function(t){t.Euclidean="Euclidean"}(y||(y={})),function(t){t.Tanimoto="Tanimoto",t.Dice="Dice",t.Asymmetric="Asymmetric",t.BraunBlanquet="Braun-Blanquet",t.Cosine="Cosine",t.Kulczynski="Kulczynski",t.McConnaughey="Mc-Connaughey",t.RogotGoldberg="Rogot-Goldberg",t.Russel="Russel",t.Sokal="Sokal",t.Hamming="Hamming",t.Euclidean="Euclidean"}(v||(v={}));const _={[y.Euclidean]:f},E={[w.Levenshtein]:b.T,[w.JaroWinkler]:M.H$,[w.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let n=1;n<t.length;n++)r+=t[n]==e[n]?0:1;return r/t.length}}},N={[v.Tanimoto]:x.KR,[v.Dice]:x._h,[v.Asymmetric]:x.yU,[v.BraunBlanquet]:x.Dz,[v.Cosine]:x.Zd,[v.Kulczynski]:x.s,[v.McConnaughey]:x.aW,[v.RogotGoldberg]:x.MI,[v.Russel]:x.fX,[v.Sokal]:x.NB,[v.Hamming]:x.UX,[v.Euclidean]:x.WI};var R;!function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray",t.MacroMolecule="MacroMolecule"}(R||(R={}));const k={[R.Vector]:{[y.Euclidean]:_[y.Euclidean]},[R.String]:{[w.Levenshtein]:E[w.Levenshtein],[w.JaroWinkler]:E[w.JaroWinkler],[w.Manhattan]:E[w.Manhattan]},[R.BitArray]:{[v.Tanimoto]:N[v.Tanimoto],[v.Dice]:N[v.Dice],[v.Asymmetric]:N[v.Asymmetric],[v.BraunBlanquet]:N[v.BraunBlanquet],[v.Cosine]:N[v.Cosine],[v.Kulczynski]:N[v.Kulczynski],[v.McConnaughey]:N[v.McConnaughey],[v.RogotGoldberg]:N[v.RogotGoldberg],[v.Russel]:N[v.Russel],[v.Sokal]:N[v.Sokal]},[R.MacroMolecule]:{[S.U.HAMMING]:S.o[S.U.HAMMING],[S.U.LEVENSHTEIN]:S.o[S.U.LEVENSHTEIN],[S.U.NEEDLEMANN_WUNSCH]:S.o[S.U.NEEDLEMANN_WUNSCH]}},I=Object.keys(k).reduce(((t,e)=>{for(const r of Object.keys(k[e]))t[r]=e;return t}),{});class A{constructor(t){this.method=t,this.dataType=I[t]}getMeasure(t){const e=k;if(!e.hasOwnProperty(this.dataType)||!e[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return r=this.method,I[r]==R.MacroMolecule.toString()?e[this.dataType][this.method](t):e[this.dataType][this.method];var r}static getMetricByDataType(t){return Object.keys(k[t])}static get availableMeasures(){return Object.keys(k)}}class z{constructor(t,e=!1){if(this._length=0,this._version=0,this._updateLevel=0,this._selectedCount=0,this._selectedCountVersion=-1,this._selectedIndexesVersion=-1,this._versionedName="",this._versionedNameVersion=-1,this.SHRINK_THRESHOLD=256,"number"==typeof t){const r=t,n=z._createBuffer(r);if(e)for(let t=0;t<n.length;t++)n[t]=-1;this._data=n,this._length=r}else{if(!(t instanceof Uint32Array))throw new Error("Invalid constructor");this._data=t,this._length=e}}getRawData(){return this._data}assureGoez(t,e){if(t<0)throw new Error(`${e} should be greater than zero`)}assureInRange(t,e,r,n){if(t<e||t>r)throw new Error(`Argument ${n} (${t}) out of range (${e}, ${r})`)}copy(t,e,r){for(let n=0;n<r;n++)e[n]=t[n]}copyFrom(t){if(this._length!=t._length)throw new Error(`Lengths differ (${this._length} != ${t._length})`);this.copy(t._data,this._data,this.lengthInInts),this._version++}get length(){return this._length}get buffer(){return this._data}set buffer(t){this._data=t,this._version++}get version(){return this._version}set version(t){this._version=t}incrementVersion(t=!0){this._version++}get lengthInInts(){return Math.floor((this._length+31)/32)}get versionedName(){return this._version==this._versionedNameVersion?this._versionedName:""}set versionedName(t){this._versionedName=t,this._versionedNameVersion=this._version}get self(){return this}setLength(t){if(t<0)throw new Error("should be >= 0");if(t==this._length)return;const e=Math.floor((t+31)/32);if(e>this._data.length||e+this.SHRINK_THRESHOLD<this._data.length){const t=new Uint32Array(e);this.copy(this._data,t,e>this._data.length?this._data.length:e),this._data=t}t>this._length&&(this._length%32>0&&(this._data[this.lengthInInts-1]&=(1<<(this._length%32&31))-1),this._data.fill(0,this.lengthInInts,e)),this._length=t,this._version++}static fromAnd(t,e){if(t._length!=e._length)throw new Error(`Lengths differ (${t._length} != ${e._length})`);const r=new z(t._length);r._length=t._length,r._data=z._createBuffer(r._length),r._version=0;const n=t.lengthInInts;for(let s=0;s<n;s++)r._data[s]=t._data[s]&e._data[s];return r}static _createBuffer(t){return new Uint32Array(Math.floor((t+31)/32))}static fromValues(t){const e=new z(t.length);e._version=0;for(let r=0;r<e._length;r++)t[r]&&(e._data[Math.floor(r/32)]|=1<<(r%32&31));return e}static fromSeq(t,e){const r=new z(t);for(let n=0;n<t;++n)r.setBit(n,e(n));return r._version=0,r}static fromString(t){return z.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const r=new z(t);return r._data=e,r}static fromBytes(t){const e=t.length,r=new z(8*e);r._data=new Uint32Array(Math.floor((e+3)/4)),r._length=8*e;let n=0,s=0;for(;e-s>=4;)r._data[n++]=255&t[s]|(255&t[s+1])<<8|(255&t[s+2])<<16|(255&t[s+3])<<24,s+=4;return e-s==3&&(r._data[n]=(255&t[s+2])<<16),e-s==2&&(r._data[n]|=(255&t[s+1])<<8),e-s==1&&(r._data[n]|=255&t[s]),r._version=0,r}toString(){return`${this._length} bits, ${this.countBits(!0)} set`}equals(t){if(this==t)return!0;if(null==t)return!1;if(this._length!=t._length)return!1;if(0==this._length)return!0;for(let e=0;e<this._data.length-1;e++)if(this._data[e]!=t._data[e])return!1;for(let e=8*(this._data.length-1);e<this._length;e++)if(this.getBit(e)!=t.getBit(e))return!1;return!0}clone(){const t=new z(0,!1);return t._data=Uint32Array.from(this._data),t._length=this._length,t._version=this._version,t}init(t,e){this.setAll(!1,!1);for(let e=0;e<this._length;e++)t(e)&&(this._data[Math.floor(e/32)]|=1<<(e%32&31));return this.incrementVersion(e),this}invert(t=!0){for(let t=0;t<this._data.length;t++)this._data[t]^=-1;this.incrementVersion(t)}setAll(t,e=!1){const r=t?-1:0,n=this.lengthInInts;for(let t=0;t<n;t++)this._data[t]=r;this.incrementVersion(e)}setIndexes(t,e=!0,r=!0,n=!0){r&&this.setAll(!e,!1);for(const r of t)this.setFast(r,e);this.incrementVersion(n)}everyIndex(t,e=!0){for(const r of t)if(this.getBit(r)!=e)return!1;return!0}anyIndex(t,e=!0){for(const r of t)if(this.getBit(r)==e)return!0;return!1}setWhere(t,e=!0,r=!0,n=!0,s=!0){if(r&&s&&this.setAll(!e,!1),s)for(let r=0;r<this._length;r++)t(r)&&this.setFast(r,e);else for(let r=0;r<this._length;r++)this.setFast(r,t(r)?e:!e);this.incrementVersion(n)}getRange(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return z.fromValues(r)}getRangeAsList(t,e){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length,"to");const r=[];for(let n=t;n<e;++n)r.push(this.getBit(n));return r}setRange(t,e,r,n=!0){this.assureInRange(t,0,this._length-1,"from"),this.assureInRange(e,0,this._length-1,"to");const s=Math.min(t,e),i=Math.max(t,e);if(r)for(let t=s;t<=i;t++)this.setTrue(t);else for(let t=s;t<=i;t++)this.setFalse(t);return this.incrementVersion(n),this}setRandom(t,e,r=!0){if(t<0||t>this._length)throw new Error("n must be >= 0 && <= Count");t>this._length/2&&this.setRandom(this._length-t,!e),this.setAll(!e);for(let r=0;r<t;){const t=Math.floor(Math.random()*this._length);this.getBit(t)!=e&&(this.setFast(t,e),r++)}this.incrementVersion(r)}and(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]&=t._data[e];return this.incrementVersion(e),this}andNot(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");const r=this.lengthInInts;for(let e=0;e<r;e++)this._data[e]&=~t._data[e];return this.incrementVersion(e),this}notAnd(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]=~this._data[e]&t._data[e];return this.incrementVersion(e),this}not(t=!0){for(let t=0,e=this.lengthInInts;t<e;t++)this._data[t]=~this._data[t];return this.incrementVersion(t),this}or(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]|=t._data[e];return this.incrementVersion(e),this}xor(t,e=!0){if(this._length!=t._length)throw new Error("Array lengths differ.");for(let e=0,r=this.lengthInInts;e<r;e++)this._data[e]^=t._data[e];return this.incrementVersion(e),this}insertAt(t,e,r=!1){if(this.assureInRange(t,0,this._length,"pos"),0==e)return;const n=this._length;this.setLength(this._length+e);for(let r=n-1;r>=t;r--)this.setBit(r+e,this.getBit(r));for(let n=t;n<t+e;n++)this.setBit(n,r)}removeAt(t,e=1){if(e<0)throw new Error("n cannot be negative");if(this.assureInRange(t,0,this._length-e,"pos"),this.contains(!0))for(let r=t;r<this._length-e;r++)this.setBit(r,this.getBit(r+e));this.setLength(this._length-e)}removeByMask(t,e=!0){if(this._length!=t.length)throw new Error("length != mask.length");if(t==this)this.setLength(t.countBits(!e)),this.setAll(!e);else{let r=0;for(let n=-1;-1!=(n=t.findNext(n,!e));)this.setFast(r++,this.getBit(n));this._length=r,this._version++}return this}getBit(t){return 0!=(this._data[Math.floor(t/32)]&1<<(31&t))}setBit(t,e,r=!0){this.setFast(t,e),this._version++}setFast(t,e){e?this._data[Math.floor(t/32)]|=1<<(31&t):this._data[Math.floor(t/32)]&=~(1<<(31&t))}setTrue(t){this._data[Math.floor(t/32)]|=1<<(31&t)}setFalse(t){this._data[Math.floor(t/32)]&=~(1<<(31&t))}trueCount(){return this.countBits(!0)}falseCount(){return this.countBits(!1)}countBits(t){if(0==this._length)return 0;if(this._selectedCountVersion!=this._version){this._selectedCount=0;const t=this.lengthInInts;let e=0;for(;e<t-1;e++)for(let t=this._data[e];0!=t;t>>>=8)this._selectedCount+=z._onBitCount[255&t];let r=this._data[e];const n=31&this._length;for(0!=n&&(r&=~(4294967295<<n));0!=r;r>>>=8)this._selectedCount+=z._onBitCount[255&r];this._selectedCountVersion=this._version}return t?this._selectedCount:this._length-this._selectedCount}countWhere(t){let e=0;if(this.trueCount()==this._length)for(let r=0;r<this._length;r++)e+=t(r)?1:0;else for(let r=-1;-1!=(r=this.findNext(r,!0));)e+=t(r)?1:0;return e}andWithCountBits(t,e){if(0==this._length)return 0;let r=0;const n=this.lengthInInts;let s=0;for(;s<n-1;s++)for(let e=this._data[s]&t._data[s];0!=e;e>>>=8)r+=z._onBitCount[255&e];let i=this._data[s]&t._data[s];const o=31&this._length;for(0!=o&&(i&=~(4294967295<<o));0!=i;i>>>=8)r+=z._onBitCount[255&i];return e?r:this._length-r}clear(){this.setLength(0)}contains(t){return this.findNext(-1,t)>=0}get allTrue(){return this.countBits(!0)==this._length}get allFalse(){return this.countBits(!1)==this._length}get anyTrue(){return this.countBits(!0)>0}get anyFalse(){return this.countBits(!1)>0}findNext(t,e=!0){if(this.assureInRange(t,-1,this._length,"index"),t>=this._length-1)return-1;let r=31&(t=t<0?0:t+1);const n=this.lengthInInts;for(let s=Math.floor(t/32);s<n;s++){let n=e?this._data[s]:~this._data[s];if(0!=r)n&=4294967295<<r&4294967295,r=0;else if(!e&&-4294967296==n)continue;for(let e=0;0!=n;e+=8,n>>>=8){const r=z._firstOnBit[255&n];if(r>=0)return(t=r+32*s+e)>=this._length?-1:t}}return-1}findPrev(t,e=!0){if(0==t)return-1;this.assureInRange(t,-1,this._length,"index");let r=1+(t=t<0?this._length-1:t-1)&31;for(let n=Math.floor(t/32);n>=0;n--){let t=e?this._data[n]:~this._data[n];0!=r&&(t&=~(4294967295<<r),r=0);for(let e=24;0!=t;e-=8,t<<=8){const r=z._lastOnBit[t>>>24];if(r>=0)return r+32*n+e}}return-1}}z._onBitCount=Int8Array.from([0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8]),z._firstOnBit=Int8Array.from([-1,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0]),z._lastOnBit=Int8Array.from([-1,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7]);class C{constructor(t){this.data=t.data}}const T={UMAP:class extends C{constructor(t){super(t),a("distanceFn"in t),this.distanceFn=t.distanceFn,this.vectors=[],t.distanceFn=this._encodedDistance.bind(this),this.data.length<15&&(t.nNeighbors=this.data.length-1),this.reducer=new n.u(t)}_encodedDistance(t,e){return this.distanceFn(this.data[t[0]],this.data[e[0]])}_encode(){for(let t=0;t<this.data.length;++t)this.vectors.push([t])}transform(){this._encode();const t=this.reducer.fit(this.vectors);return{embedding:(e=t,new Array(e.length).fill(0).map(((t,r)=>i.OW.from(e[r]))))};var e}},"t-SNE":class extends C{constructor(t){var e;super(t),this.reducer=new s.Z(t),this.iterations=null!==(e=null==t?void 0:t.iterations)&&void 0!==e?e:100,this.distanceFn=t.distance}transform(){const t=g(this.data,this.distanceFn);this.reducer.initDataDist(t);for(let t=0;t<this.iterations;++t)this.reducer.step();return{distance:t,embedding:this.reducer.getSolution()}}},SPE:class extends C{constructor(t){super(t),this.reducer=new m(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},pSPE:class extends C{constructor(t){super(t),this.reducer=new p(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}},OriginalSPE:class extends C{constructor(t){super(t),this.reducer=new d(t)}transform(){const t=this.reducer.embed(this.data);return{distance:this.reducer.distance,embedding:t}}}};class F{constructor(t,e,r,n){var s;const i=new A(r).getMeasure();let o={};if("BitArray"==I[r])for(let e=0;e<t.length;++e)t[e]=new z(t[e]._data,t[e]._length);o="UMAP"==e?Object.assign(Object.assign(Object.assign({data:t},{distanceFn:i}),{nEpochs:null==n?void 0:n.cycles}),n):"t-SNE"==e?Object.assign(Object.assign(Object.assign({data:t},{distance:i}),{iterations:null!==(s=null==n?void 0:n.cycles)&&void 0!==s?s:void 0}),n):Object.assign(Object.assign({data:t},{distance:i}),n),this.reducer=new T[e](o)}transform(t=!1){if(null==this.reducer)throw new Error("Reducer was not defined.");let{embedding:e,distance:r}=this.reducer.transform();var n;return t&&(n=e,e=new Array(n[0].length).fill(0).map(((t,e)=>new i.OW(n.length).fill(0).map(((t,r)=>n[r][e]))))),{distance:r,embedding:e}}static availableMetricsByType(t){return Object.keys(k[t])}static get availableMethods(){return Object.keys(T)}static get availableMetrics(){let t=[];return Object.values(k).forEach((e=>{const r=Object.values(e);t=[...t,...r]})),t}}self.onmessage=({data:{columnData:t,method:e,measure:r,options:n}})=>{let s;try{s=function(t,e,r,n){return new F(t,e,r,n).transform(!0)}(t,e,r,n)}catch(t){s={error:t}}self.postMessage({error:s.error,distance:s.distance,embedding:s.embedding})}},7659:(t,e,r)=>{e.Z=void 0;var n=r(3832);Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return n.TSNE}})},3832:(t,e)=>{Object.defineProperty(e,"__esModule",{value:!0}),e.TSNE=void 0,e.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,e){if(!t)throw e||"Assertion failed"}getopt(t,e,r){return t.hasOwnProperty(e)?t[e]:r}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,e=2*Math.random()-1,r=t*t+e*e;if(0===r||r>1)return this.gaussRandom();const n=Math.sqrt(-2*Math.log(r)/r);return this.vValue=e*n,this.returnV=!0,t*n}randn(t,e){return t+this.gaussRandom()*e}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const e=new Array(t);for(let r=0;r<t;r++)e[r]=0;return e}return new Float64Array(t)}randn2d(t,e,r){const n=void 0!==r,s=[];for(let i=0;i<t;i++){const t=[];for(let s=0;s<e;s++)n?t.push(r):t.push(this.randn(0,1e-4));s.push(t)}return s}L2(t,e){const r=t.length;let n=0;for(let s=0;s<r;s++){const r=t[s],i=e[s];n+=(r-i)*(r-i)}return n}xtod(t){const e=t.length,r=this.zeros(e*e);for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){const i=this.L2(t[n],t[s]);r[n*e+s]=i,r[s*e+n]=i}return r}d2p(t,e,r){const n=Math.sqrt(t.length),s=Math.floor(n);this.assert(s===n,"D should have square number of elements.");const i=Math.log(e),o=this.zeros(s*s),h=this.zeros(s);for(let e=0;e<s;e++){let n=-1/0,a=1/0,l=1,u=!1;const c=50;let f=0;for(;!u;){let o=0;for(let r=0;r<s;r++){let n=Math.exp(-t[e*s+r]*l);e===r&&(n=0),h[r]=n,o+=n}let g=0;for(let t=0;t<s;t++){let e;e=0===o?0:h[t]/o,h[t]=e,e>1e-7&&(g-=e*Math.log(e))}g>i?(n=l,a===1/0?l*=2:l=(l+a)/2):(a=l,n===-1/0?l/=2:l=(l+n)/2),f++,Math.abs(g-i)<r&&(u=!0),f>=c&&(u=!0)}for(let t=0;t<s;t++)o[e*s+t]=h[t]}const a=this.zeros(s*s),l=2*s;for(let t=0;t<s;t++)for(let e=0;e<s;e++)a[t*s+e]=Math.max((o[t*s+e]+o[e*s+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const e=t.length,r=t[0].length;this.assert(e>0," X is empty? You must have some data!"),this.assert(r>0," X[0] is empty? Where is the data?");const n=this.xtod(t);this.P=this.d2p(n,this.perplexity,1e-4),this.N=e,this.initSolution()}initDataDist(t){const e=t.length;this.assert(e>0," X is empty? You must have some data!");const r=this.zeros(e*e);for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){const i=t[n][s];r[n*e+s]=i,r[s*e+n]=i}this.P=this.d2p(r,this.perplexity,1e-4),this.N=e,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,e=this.costGrad(this.Y),r=e.cost,n=e.grad,s=this.zeros(this.dim);for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const r=n[e][t],i=this.ystep[e][t],o=this.gains[e][t];let h=this.sign(r)===this.sign(i)?.8*o:o+.2;h<.01&&(h=.01),this.gains[e][t]=h;const a=(this.iter<250?.5:.8)*i-this.epsilon*h*n[e][t];this.ystep[e][t]=a,this.Y[e][t]+=a,s[t]+=this.Y[e][t]}for(let e=0;e<t;e++)for(let r=0;r<this.dim;r++)this.Y[e][r]-=s[r]/t;return r}debugGrad(){const t=this.N,e=this.costGrad(this.Y),r=(e.cost,e.grad),n=1e-5;for(let e=0;e<t;e++)for(let t=0;t<this.dim;t++){const s=this.Y[e][t];this.Y[e][t]=s+n;const i=this.costGrad(this.Y);this.Y[e][t]=s-n;const o=this.costGrad(this.Y),h=r[e][t],a=(i.cost-o.cost)/(2*n);console.log(e+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[e][t]=s}}costGrad(t){const e=this.N,r=this.dim,n=this.P,s=this.iter<100?4:1,i=this.zeros(e*e);let o=0;for(let n=0;n<e;n++)for(let s=n+1;s<e;s++){let h=0;for(let e=0;e<r;e++){const r=t[n][e]-t[s][e];h+=r*r}const a=1/(1+h);i[n*e+s]=a,i[s*e+n]=a,o+=2*a}const h=e*e,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(i[t]/o,1e-100);let l=0;const u=[];for(let o=0;o<e;o++){const h=new Array(r);for(let t=0;t<r;t++)h[t]=0;for(let u=0;u<e;u++){l+=-n[o*e+u]*Math.log(a[o*e+u]);const c=4*(s*n[o*e+u]-a[o*e+u])*i[o*e+u];for(let e=0;e<r;e++)h[e]+=c*(t[o][e]-t[u][e])}u.push(h)}return{cost:l,grad:u}}}},9251:(t,e,r)=>{r.r(e),r.d(e,{default:()=>O});const n=Object.prototype.toString;function s(t){return n.call(t).endsWith("Array]")}function i(t,e,r){let n=0;const s=r(e);for(let e=0;e<t.x.length;e++)n+=Math.abs(t.y[e]-s(t.x[e]));return n}const o=Object.prototype.toString;function h(t){const e=o.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const a=Object.prototype.toString;function l(t){const e=a.call(t);return e.endsWith("Array]")&&!e.includes("Big")}const u=Object.prototype.toString;const c=Object.prototype.toString;function f(t){var e,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!l(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");if(void 0!==r.output){if(!l(r.output))throw new TypeError("output option must be an array if specified");e=r.output}else e=new Array(t.length);var n=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=c.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,s=e.toIndex,i=void 0===s?t.length:s;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=n||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=t[n],h=n+1;h<i;h++)t[h]<o&&(o=t[h]);return o}(t),s=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!function(t){const e=u.call(t);return e.endsWith("Array]")&&!e.includes("Big")}(t))throw new TypeError("input must be an array");if(0===t.length)throw new TypeError("input must not be empty");var r=e.fromIndex,n=void 0===r?0:r,s=e.toIndex,i=void 0===s?t.length:s;if(n<0||n>=t.length||!Number.isInteger(n))throw new Error("fromIndex must be a positive integer smaller than length");if(i<=n||i>t.length||!Number.isInteger(i))throw new Error("toIndex must be an integer greater than fromIndex and at most equal to length");for(var o=t[n],h=n+1;h<i;h++)t[h]>o&&(o=t[h]);return o}(t);if(n===s)throw new RangeError("minimum and maximum input values are equal. Cannot rescale a constant array");var i=r.min,o=void 0===i?r.autoMinMax?n:0:i,h=r.max,a=void 0===h?r.autoMinMax?s:1:h;if(o>=a)throw new RangeError("min option must be smaller than max option");for(var f=(a-o)/(s-n),g=0;g<t.length;g++)e[g]=(t[g]-n)*f+o;return e}const g=" ".repeat(2),m=" ".repeat(4);function p(t,e={}){const{maxRows:r=15,maxColumns:n=10,maxNumSize:s=8,padMinus:i="auto"}=e;return`${t.constructor.name} {\n${g}[\n${m}${function(t,e,r,n,s){const{rows:i,columns:o}=t,h=Math.min(i,e),a=Math.min(o,r),l=[];if("auto"===s){s=!1;t:for(let e=0;e<h;e++)for(let r=0;r<a;r++)if(t.get(e,r)<0){s=!0;break t}}for(let e=0;e<h;e++){let r=[];for(let i=0;i<a;i++)r.push(d(t.get(e,i),n,s));l.push(`${r.join(" ")}`)}return a!==o&&(l[l.length-1]+=` ... ${o-r} more columns`),h!==i&&l.push(`... ${i-e} more rows`),l.join(`\n${m}`)}(t,r,n,s,i)}\n${g}]\n${g}rows: ${t.rows}\n${g}columns: ${t.columns}\n}`}function d(t,e,r){return(t>=0&&r?` ${w(t,e-1)}`:w(t,e)).padEnd(e)}function w(t,e){let r=t.toString();if(r.length<=e)return r;let n=t.toFixed(e);if(n.length>e&&(n=t.toFixed(Math.max(0,e-(n.length-e)))),n.length<=e&&!n.startsWith("0.000")&&!n.startsWith("-0.000"))return n;let s=t.toExponential(e);return s.length>e&&(s=t.toExponential(Math.max(0,e-(s.length-e)))),s.slice(0)}function y(t,e,r){let n=r?t.rows:t.rows-1;if(e<0||e>n)throw new RangeError("Row index out of range")}function v(t,e,r){let n=r?t.columns:t.columns-1;if(e<0||e>n)throw new RangeError("Column index out of range")}function b(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.columns)throw new RangeError("vector size must be the same as the number of columns");return e}function M(t,e){if(e.to1DArray&&(e=e.to1DArray()),e.length!==t.rows)throw new RangeError("vector size must be the same as the number of rows");return e}function x(t,e,r,n,s){if(5!==arguments.length)throw new RangeError("expected 4 arguments");if(_("startRow",e),_("endRow",r),_("startColumn",n),_("endColumn",s),e>r||n>s||e<0||e>=t.rows||r<0||r>=t.rows||n<0||n>=t.columns||s<0||s>=t.columns)throw new RangeError("Submatrix indices are out of range")}function S(t,e=0){let r=[];for(let n=0;n<t;n++)r.push(e);return r}function _(t,e){if("number"!=typeof e)throw new TypeError(`${t} must be a number`)}function E(t){if(t.isEmpty())throw new Error("Empty matrix has no elements to index")}class N{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let n=new k(t,e);for(let s=0;s<t;s++)for(let t=0;t<e;t++)n.set(s,t,r[s*e+t]);return n}static rowVector(t){let e=new k(1,t.length);for(let r=0;r<t.length;r++)e.set(0,r,t[r]);return e}static columnVector(t){let e=new k(t.length,1);for(let r=0;r<t.length;r++)e.set(r,0,t[r]);return e}static zeros(t,e){return new k(t,e)}static ones(t,e){return new k(t,e).fill(1)}static rand(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{random:n=Math.random}=r;let s=new k(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++)s.set(r,t,n());return s}static randInt(t,e,r={}){if("object"!=typeof r)throw new TypeError("options must be an object");const{min:n=0,max:s=1e3,random:i=Math.random}=r;if(!Number.isInteger(n))throw new TypeError("min must be an integer");if(!Number.isInteger(s))throw new TypeError("max must be an integer");if(n>=s)throw new RangeError("min must be smaller than max");let o=s-n,h=new k(t,e);for(let r=0;r<t;r++)for(let t=0;t<e;t++){let e=n+Math.round(i()*o);h.set(r,t,e)}return h}static eye(t,e,r){void 0===e&&(e=t),void 0===r&&(r=1);let n=Math.min(t,e),s=this.zeros(t,e);for(let t=0;t<n;t++)s.set(t,t,r);return s}static diag(t,e,r){let n=t.length;void 0===e&&(e=n),void 0===r&&(r=e);let s=Math.min(n,e,r),i=this.zeros(e,r);for(let e=0;e<s;e++)i.set(e,e,t[e]);return i}static min(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,s=new k(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)s.set(i,r,Math.min(t.get(i,r),e.get(i,r)));return s}static max(t,e){t=this.checkMatrix(t),e=this.checkMatrix(e);let r=t.rows,n=t.columns,s=new this(r,n);for(let i=0;i<r;i++)for(let r=0;r<n;r++)s.set(i,r,Math.max(t.get(i,r),e.get(i,r)));return s}static checkMatrix(t){return N.isMatrix(t)?t:new k(t)}static isMatrix(t){return null!=t&&"Matrix"===t.klass}get size(){return this.rows*this.columns}apply(t){if("function"!=typeof t)throw new TypeError("callback must be a function");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.call(this,e,r);return this}to1DArray(){let t=[];for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.push(this.get(e,r));return t}to2DArray(){let t=[];for(let e=0;e<this.rows;e++){t.push([]);for(let r=0;r<this.columns;r++)t[e].push(this.get(e,r))}return t}toJSON(){return this.to2DArray()}isRowVector(){return 1===this.rows}isColumnVector(){return 1===this.columns}isVector(){return 1===this.rows||1===this.columns}isSquare(){return this.rows===this.columns}isEmpty(){return 0===this.rows||0===this.columns}isSymmetric(){if(this.isSquare()){for(let t=0;t<this.rows;t++)for(let e=0;e<=t;e++)if(this.get(t,e)!==this.get(e,t))return!1;return!0}return!1}isEchelonForm(){let t=0,e=0,r=-1,n=!0,s=!1;for(;t<this.rows&&n;){for(e=0,s=!1;e<this.columns&&!1===s;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(s=!0,r=e):(n=!1,s=!0);t++}return n}isReducedEchelonForm(){let t=0,e=0,r=-1,n=!0,s=!1;for(;t<this.rows&&n;){for(e=0,s=!1;e<this.columns&&!1===s;)0===this.get(t,e)?e++:1===this.get(t,e)&&e>r?(s=!0,r=e):(n=!1,s=!0);for(let r=e+1;r<this.rows;r++)0!==this.get(t,r)&&(n=!1);t++}return n}echelonForm(){let t=this.clone(),e=0,r=0;for(;e<t.rows&&r<t.columns;){let n=e;for(let s=e;s<t.rows;s++)t.get(s,r)>t.get(n,r)&&(n=s);if(0===t.get(n,r))r++;else{t.swapRows(e,n);let s=t.get(e,r);for(let n=r;n<t.columns;n++)t.set(e,n,t.get(e,n)/s);for(let n=e+1;n<t.rows;n++){let s=t.get(n,r)/t.get(e,r);t.set(n,r,0);for(let i=r+1;i<t.columns;i++)t.set(n,i,t.get(n,i)-t.get(e,i)*s)}e++,r++}}return t}reducedEchelonForm(){let t=this.echelonForm(),e=t.columns,r=t.rows,n=r-1;for(;n>=0;)if(0===t.maxRow(n))n--;else{let s=0,i=!1;for(;s<r&&!1===i;)1===t.get(n,s)?i=!0:s++;for(let r=0;r<n;r++){let i=t.get(r,s);for(let o=s;o<e;o++){let e=t.get(r,o)-i*t.get(n,o);t.set(r,o,e)}}n--}return t}set(){throw new Error("set method is unimplemented")}get(){throw new Error("get method is unimplemented")}repeat(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{rows:e=1,columns:r=1}=t;if(!Number.isInteger(e)||e<=0)throw new TypeError("rows must be a positive integer");if(!Number.isInteger(r)||r<=0)throw new TypeError("columns must be a positive integer");let n=new k(this.rows*e,this.columns*r);for(let t=0;t<e;t++)for(let e=0;e<r;e++)n.setSubMatrix(this,this.rows*t,this.columns*e);return n}fill(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,t);return this}neg(){return this.mulS(-1)}getRow(t){y(this,t);let e=[];for(let r=0;r<this.columns;r++)e.push(this.get(t,r));return e}getRowVector(t){return k.rowVector(this.getRow(t))}setRow(t,e){y(this,t),e=b(this,e);for(let r=0;r<this.columns;r++)this.set(t,r,e[r]);return this}swapRows(t,e){y(this,t),y(this,e);for(let r=0;r<this.columns;r++){let n=this.get(t,r);this.set(t,r,this.get(e,r)),this.set(e,r,n)}return this}getColumn(t){v(this,t);let e=[];for(let r=0;r<this.rows;r++)e.push(this.get(r,t));return e}getColumnVector(t){return k.columnVector(this.getColumn(t))}setColumn(t,e){v(this,t),e=M(this,e);for(let r=0;r<this.rows;r++)this.set(r,t,e[r]);return this}swapColumns(t,e){v(this,t),v(this,e);for(let r=0;r<this.rows;r++){let n=this.get(r,t);this.set(r,t,this.get(r,e)),this.set(r,e,n)}return this}addRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[r]);return this}subRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[r]);return this}mulRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[r]);return this}divRowVector(t){t=b(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[r]);return this}addColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t[e]);return this}subColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t[e]);return this}mulColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t[e]);return this}divColumnVector(t){t=M(this,t);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t[e]);return this}mulRow(t,e){y(this,t);for(let r=0;r<this.columns;r++)this.set(t,r,this.get(t,r)*e);return this}mulColumn(t,e){v(this,t);for(let r=0;r<this.rows;r++)this.set(r,t,this.get(r,t)*e);return this}max(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.NEGATIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)>t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}maxIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)>t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}min(t){if(this.isEmpty())return NaN;switch(t){case"row":{const t=new Array(this.rows).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[e]&&(t[e]=this.get(e,r));return t}case"column":{const t=new Array(this.columns).fill(Number.POSITIVE_INFINITY);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t[r]&&(t[r]=this.get(e,r));return t}case void 0:{let t=this.get(0,0);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.get(e,r)<t&&(t=this.get(e,r));return t}default:throw new Error(`invalid option: ${t}`)}}minIndex(){E(this);let t=this.get(0,0),e=[0,0];for(let r=0;r<this.rows;r++)for(let n=0;n<this.columns;n++)this.get(r,n)<t&&(t=this.get(r,n),e[0]=r,e[1]=n);return e}maxRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)>e&&(e=this.get(t,r));return e}maxRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)>e&&(e=this.get(t,n),r[1]=n);return r}minRow(t){if(y(this,t),this.isEmpty())return NaN;let e=this.get(t,0);for(let r=1;r<this.columns;r++)this.get(t,r)<e&&(e=this.get(t,r));return e}minRowIndex(t){y(this,t),E(this);let e=this.get(t,0),r=[t,0];for(let n=1;n<this.columns;n++)this.get(t,n)<e&&(e=this.get(t,n),r[1]=n);return r}maxColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)>e&&(e=this.get(r,t));return e}maxColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)>e&&(e=this.get(n,t),r[0]=n);return r}minColumn(t){if(v(this,t),this.isEmpty())return NaN;let e=this.get(0,t);for(let r=1;r<this.rows;r++)this.get(r,t)<e&&(e=this.get(r,t));return e}minColumnIndex(t){v(this,t),E(this);let e=this.get(0,t),r=[0,t];for(let n=1;n<this.rows;n++)this.get(n,t)<e&&(e=this.get(n,t),r[0]=n);return r}diag(){let t=Math.min(this.rows,this.columns),e=[];for(let r=0;r<t;r++)e.push(this.get(r,r));return e}norm(t="frobenius"){let e=0;if("max"===t)return this.max();if("frobenius"===t){for(let t=0;t<this.rows;t++)for(let r=0;r<this.columns;r++)e+=this.get(t,r)*this.get(t,r);return Math.sqrt(e)}throw new RangeError(`unknown norm type: ${t}`)}cumulativeSum(){let t=0;for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t+=this.get(e,r),this.set(e,r,t);return this}dot(t){N.isMatrix(t)&&(t=t.to1DArray());let e=this.to1DArray();if(e.length!==t.length)throw new RangeError("vectors do not have the same size");let r=0;for(let n=0;n<e.length;n++)r+=e[n]*t[n];return r}mmul(t){t=k.checkMatrix(t);let e=this.rows,r=this.columns,n=t.columns,s=new k(e,n),i=new Float64Array(r);for(let o=0;o<n;o++){for(let e=0;e<r;e++)i[e]=t.get(e,o);for(let t=0;t<e;t++){let e=0;for(let n=0;n<r;n++)e+=this.get(t,n)*i[n];s.set(t,o,e)}}return s}strassen2x2(t){t=k.checkMatrix(t);let e=new k(2,2);const r=this.get(0,0),n=t.get(0,0),s=this.get(0,1),i=t.get(0,1),o=this.get(1,0),h=t.get(1,0),a=this.get(1,1),l=t.get(1,1),u=(r+a)*(n+l),c=(o+a)*n,f=r*(i-l),g=a*(h-n),m=(r+s)*l,p=u+g-m+(s-a)*(h+l),d=f+m,w=c+g,y=u-c+f+(o-r)*(n+i);return e.set(0,0,p),e.set(0,1,d),e.set(1,0,w),e.set(1,1,y),e}strassen3x3(t){t=k.checkMatrix(t);let e=new k(3,3);const r=this.get(0,0),n=this.get(0,1),s=this.get(0,2),i=this.get(1,0),o=this.get(1,1),h=this.get(1,2),a=this.get(2,0),l=this.get(2,1),u=this.get(2,2),c=t.get(0,0),f=t.get(0,1),g=t.get(0,2),m=t.get(1,0),p=t.get(1,1),d=t.get(1,2),w=t.get(2,0),y=t.get(2,1),v=t.get(2,2),b=(r-i)*(-f+p),M=(-r+i+o)*(c-f+p),x=(i+o)*(-c+f),S=r*c,_=(-r+a+l)*(c-g+d),E=(-r+a)*(g-d),N=(a+l)*(-c+g),R=(-s+l+u)*(p+w-y),I=(s-u)*(p-y),A=s*w,z=(l+u)*(-w+y),C=(-s+o+h)*(d+w-v),T=(s-h)*(d-v),F=(o+h)*(-w+v),O=S+A+n*m,V=(r+n+s-i-o-l-u)*p+M+x+S+R+A+z,P=S+_+N+(r+n+s-o-h-a-l)*d+A+C+F,D=b+o*(-c+f+m-p-d-w+v)+M+S+A+C+T,j=b+M+x+S+h*y,B=A+C+T+F+i*g,L=S+_+E+l*(-c+g+m-p-d-w+y)+R+I+A,q=R+I+A+z+a*f,$=S+_+E+N+u*v;return e.set(0,0,O),e.set(0,1,V),e.set(0,2,P),e.set(1,0,D),e.set(1,1,j),e.set(1,2,B),e.set(2,0,L),e.set(2,1,q),e.set(2,2,$),e}mmulStrassen(t){t=k.checkMatrix(t);let e=this.clone(),r=e.rows,n=e.columns,s=t.rows,i=t.columns;function o(t,e,r){let n=t.rows,s=t.columns;if(n===e&&s===r)return t;{let n=N.zeros(e,r);return n=n.setSubMatrix(t,0,0),n}}n!==s&&console.warn(`Multiplying ${r} x ${n} and ${s} x ${i} matrix: dimensions do not match.`);let h=Math.max(r,s),a=Math.max(n,i);return e=o(e,h,a),function t(e,r,n,s){if(n<=512||s<=512)return e.mmul(r);n%2==1&&s%2==1?(e=o(e,n+1,s+1),r=o(r,n+1,s+1)):n%2==1?(e=o(e,n+1,s),r=o(r,n+1,s)):s%2==1&&(e=o(e,n,s+1),r=o(r,n,s+1));let i=parseInt(e.rows/2,10),h=parseInt(e.columns/2,10),a=e.subMatrix(0,i-1,0,h-1),l=r.subMatrix(0,i-1,0,h-1),u=e.subMatrix(0,i-1,h,e.columns-1),c=r.subMatrix(0,i-1,h,r.columns-1),f=e.subMatrix(i,e.rows-1,0,h-1),g=r.subMatrix(i,r.rows-1,0,h-1),m=e.subMatrix(i,e.rows-1,h,e.columns-1),p=r.subMatrix(i,r.rows-1,h,r.columns-1),d=t(N.add(a,m),N.add(l,p),i,h),w=t(N.add(f,m),l,i,h),y=t(a,N.sub(c,p),i,h),v=t(m,N.sub(g,l),i,h),b=t(N.add(a,u),p,i,h),M=t(N.sub(f,a),N.add(l,c),i,h),x=t(N.sub(u,m),N.add(g,p),i,h),S=N.add(d,v);S.sub(b),S.add(x);let _=N.add(y,b),E=N.add(w,v),R=N.sub(d,w);R.add(y),R.add(M);let k=N.zeros(2*S.rows,2*S.columns);return k=k.setSubMatrix(S,0,0),k=k.setSubMatrix(_,S.rows,0),k=k.setSubMatrix(E,0,S.columns),k=k.setSubMatrix(R,S.rows,S.columns),k.subMatrix(0,n-1,0,s-1)}(e,t=o(t,h,a),h,a)}scaleRows(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new k(this.rows,this.columns);for(let t=0;t<this.rows;t++){const s=this.getRow(t);s.length>0&&f(s,{min:e,max:r,output:s}),n.setRow(t,s)}return n}scaleColumns(t={}){if("object"!=typeof t)throw new TypeError("options must be an object");const{min:e=0,max:r=1}=t;if(!Number.isFinite(e))throw new TypeError("min must be a number");if(!Number.isFinite(r))throw new TypeError("max must be a number");if(e>=r)throw new RangeError("min must be smaller than max");let n=new k(this.rows,this.columns);for(let t=0;t<this.columns;t++){const s=this.getColumn(t);s.length&&f(s,{min:e,max:r,output:s}),n.setColumn(t,s)}return n}flipRows(){const t=Math.ceil(this.columns/2);for(let e=0;e<this.rows;e++)for(let r=0;r<t;r++){let t=this.get(e,r),n=this.get(e,this.columns-1-r);this.set(e,r,n),this.set(e,this.columns-1-r,t)}return this}flipColumns(){const t=Math.ceil(this.rows/2);for(let e=0;e<this.columns;e++)for(let r=0;r<t;r++){let t=this.get(r,e),n=this.get(this.rows-1-r,e);this.set(r,e,n),this.set(this.rows-1-r,e,t)}return this}kroneckerProduct(t){t=k.checkMatrix(t);let e=this.rows,r=this.columns,n=t.rows,s=t.columns,i=new k(e*n,r*s);for(let o=0;o<e;o++)for(let e=0;e<r;e++)for(let r=0;r<n;r++)for(let h=0;h<s;h++)i.set(n*o+r,s*e+h,this.get(o,e)*t.get(r,h));return i}kroneckerSum(t){if(t=k.checkMatrix(t),!this.isSquare()||!t.isSquare())throw new Error("Kronecker Sum needs two Square Matrices");let e=this.rows,r=t.rows,n=this.kroneckerProduct(k.eye(r,r)),s=k.eye(e,e).kroneckerProduct(t);return n.add(s)}transpose(){let t=new k(this.columns,this.rows);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(r,e,this.get(e,r));return t}sortRows(t=R){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=R){for(let e=0;e<this.columns;e++)this.setColumn(e,this.getColumn(e).sort(t));return this}subMatrix(t,e,r,n){x(this,t,e,r,n);let s=new k(e-t+1,n-r+1);for(let i=t;i<=e;i++)for(let e=r;e<=n;e++)s.set(i-t,e-r,this.get(i,e));return s}subMatrixRow(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.columns-1),e>r||e<0||e>=this.columns||r<0||r>=this.columns)throw new RangeError("Argument out of range");let n=new k(t.length,r-e+1);for(let s=0;s<t.length;s++)for(let i=e;i<=r;i++){if(t[s]<0||t[s]>=this.rows)throw new RangeError(`Row index out of range: ${t[s]}`);n.set(s,i-e,this.get(t[s],i))}return n}subMatrixColumn(t,e,r){if(void 0===e&&(e=0),void 0===r&&(r=this.rows-1),e>r||e<0||e>=this.rows||r<0||r>=this.rows)throw new RangeError("Argument out of range");let n=new k(r-e+1,t.length);for(let s=0;s<t.length;s++)for(let i=e;i<=r;i++){if(t[s]<0||t[s]>=this.columns)throw new RangeError(`Column index out of range: ${t[s]}`);n.set(i-e,s,this.get(i,t[s]))}return n}setSubMatrix(t,e,r){if((t=k.checkMatrix(t)).isEmpty())return this;x(this,e,e+t.rows-1,r,r+t.columns-1);for(let n=0;n<t.rows;n++)for(let s=0;s<t.columns;s++)this.set(e+n,r+s,t.get(n,s));return this}selection(t,e){!function(t,e){if(!h(e))throw new TypeError("row indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.rows)throw new RangeError("row indices are out of range")}(this,t),function(t,e){if(!h(e))throw new TypeError("column indices must be an array");for(let r=0;r<e.length;r++)if(e[r]<0||e[r]>=t.columns)throw new RangeError("column indices are out of range")}(this,e);let r=new k(t.length,e.length);for(let n=0;n<t.length;n++){let s=t[n];for(let t=0;t<e.length;t++){let i=e[t];r.set(n,t,this.get(s,i))}}return r}trace(){let t=Math.min(this.rows,this.columns),e=0;for(let r=0;r<t;r++)e+=this.get(r,r);return e}clone(){let t=new k(this.rows,this.columns);for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)t.set(e,r,this.get(e,r));return t}sum(t){switch(t){case"row":return function(t){let e=S(t.rows);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]+=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]+=t.get(r,n);return e}(this);case void 0:return function(t){let e=0;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e+=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}product(t){switch(t){case"row":return function(t){let e=S(t.rows,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[r]*=t.get(r,n);return e}(this);case"column":return function(t){let e=S(t.columns,1);for(let r=0;r<t.rows;++r)for(let n=0;n<t.columns;++n)e[n]*=t.get(r,n);return e}(this);case void 0:return function(t){let e=1;for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)e*=t.get(r,n);return e}(this);default:throw new Error(`invalid option: ${t}`)}}mean(t){const e=this.sum(t);switch(t){case"row":for(let t=0;t<this.rows;t++)e[t]/=this.columns;return e;case"column":for(let t=0;t<this.columns;t++)e[t]/=this.rows;return e;case void 0:return e/this.size;default:throw new Error(`invalid option: ${t}`)}}variance(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{unbiased:r=!0,mean:n=this.mean(t)}=e;if("boolean"!=typeof r)throw new TypeError("unbiased must be a boolean");switch(t){case"row":if(!h(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,s=t.columns,i=[];for(let o=0;o<n;o++){let n=0,h=0,a=0;for(let e=0;e<s;e++)a=t.get(o,e)-r[o],n+=a,h+=a*a;e?i.push((h-n*n/s)/(s-1)):i.push((h-n*n/s)/s)}return i}(this,r,n);case"column":if(!h(n))throw new TypeError("mean must be an array");return function(t,e,r){const n=t.rows,s=t.columns,i=[];for(let o=0;o<s;o++){let s=0,h=0,a=0;for(let e=0;e<n;e++)a=t.get(e,o)-r[o],s+=a,h+=a*a;e?i.push((h-s*s/n)/(n-1)):i.push((h-s*s/n)/n)}return i}(this,r,n);case void 0:if("number"!=typeof n)throw new TypeError("mean must be a number");return function(t,e,r){const n=t.rows,s=t.columns,i=n*s;let o=0,h=0,a=0;for(let e=0;e<n;e++)for(let n=0;n<s;n++)a=t.get(e,n)-r,o+=a,h+=a*a;return e?(h-o*o/i)/(i-1):(h-o*o/i)/i}(this,r,n);default:throw new Error(`invalid option: ${t}`)}}standardDeviation(t,e){"object"==typeof t&&(e=t,t=void 0);const r=this.variance(t,e);if(void 0===t)return Math.sqrt(r);for(let t=0;t<r.length;t++)r[t]=Math.sqrt(r[t]);return r}center(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");const{center:r=this.mean(t)}=e;switch(t){case"row":if(!h(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[r])}(this,r),this;case"column":if(!h(r))throw new TypeError("center must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e[n])}(this,r),this;case void 0:if("number"!=typeof r)throw new TypeError("center must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)-e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}scale(t,e={}){if("object"==typeof t&&(e=t,t=void 0),"object"!=typeof e)throw new TypeError("options must be an object");let r=e.scale;switch(t){case"row":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.rows;r++){let n=0;for(let e=0;e<t.columns;e++)n+=Math.pow(t.get(r,e),2)/(t.columns-1);e.push(Math.sqrt(n))}return e}(this);else if(!h(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[r])}(this,r),this;case"column":if(void 0===r)r=function(t){const e=[];for(let r=0;r<t.columns;r++){let n=0;for(let e=0;e<t.rows;e++)n+=Math.pow(t.get(e,r),2)/(t.rows-1);e.push(Math.sqrt(n))}return e}(this);else if(!h(r))throw new TypeError("scale must be an array");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e[n])}(this,r),this;case void 0:if(void 0===r)r=function(t){const e=t.size-1;let r=0;for(let n=0;n<t.columns;n++)for(let s=0;s<t.rows;s++)r+=Math.pow(t.get(s,n),2)/e;return Math.sqrt(r)}(this);else if("number"!=typeof r)throw new TypeError("scale must be a number");return function(t,e){for(let r=0;r<t.rows;r++)for(let n=0;n<t.columns;n++)t.set(r,n,t.get(r,n)/e)}(this,r),this;default:throw new Error(`invalid option: ${t}`)}}toString(t){return p(this,t)}}function R(t,e){return t-e}N.prototype.klass="Matrix","undefined"!=typeof Symbol&&(N.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return p(this)}),N.random=N.rand,N.randomInt=N.randInt,N.diagonal=N.diag,N.prototype.diagonal=N.prototype.diag,N.identity=N.eye,N.prototype.negate=N.prototype.neg,N.prototype.tensorProduct=N.prototype.kroneckerProduct;class k extends N{constructor(t,e){if(super(),k.isMatrix(t))return t.clone();if(Number.isInteger(t)&&t>=0){if(this.data=[],!(Number.isInteger(e)&&e>=0))throw new TypeError("nColumns must be a positive integer");for(let r=0;r<t;r++)this.data.push(new Float64Array(e))}else{if(!h(t))throw new TypeError("First argument must be a positive number or an array");{const r=t;if("number"!=typeof(e=(t=r.length)?r[0].length:0))throw new TypeError("Data must be a 2D array with at least one element");this.data=[];for(let n=0;n<t;n++){if(r[n].length!==e)throw new RangeError("Inconsistent array dimensions");if(!r[n].every((t=>"number"==typeof t)))throw new TypeError("Input data contains non-numeric values");this.data.push(Float64Array.from(r[n]))}}}this.rows=t,this.columns=e}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}removeRow(t){return y(this,t),this.data.splice(t,1),this.rows-=1,this}addRow(t,e){return void 0===e&&(e=t,t=this.rows),y(this,t,!0),e=Float64Array.from(b(this,e)),this.data.splice(t,0,e),this.rows+=1,this}removeColumn(t){v(this,t);for(let e=0;e<this.rows;e++){const r=new Float64Array(this.columns-1);for(let n=0;n<t;n++)r[n]=this.data[e][n];for(let n=t+1;n<this.columns;n++)r[n-1]=this.data[e][n];this.data[e]=r}return this.columns-=1,this}addColumn(t,e){void 0===e&&(e=t,t=this.columns),v(this,t,!0),e=M(this,e);for(let r=0;r<this.rows;r++){const n=new Float64Array(this.columns+1);let s=0;for(;s<t;s++)n[s]=this.data[r][s];for(n[s++]=e[r];s<this.columns+1;s++)n[s]=this.data[r][s-1];this.data[r]=n}return this.columns+=1,this}}!function(t,e){t.prototype.add=function(t){return"number"==typeof t?this.addS(t):this.addM(t)},t.prototype.addS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t);return this},t.prototype.addM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)+t.get(e,r));return this},t.add=function(t,r){return new e(t).add(r)},t.prototype.sub=function(t){return"number"==typeof t?this.subS(t):this.subM(t)},t.prototype.subS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t);return this},t.prototype.subM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)-t.get(e,r));return this},t.sub=function(t,r){return new e(t).sub(r)},t.prototype.subtract=t.prototype.sub,t.prototype.subtractS=t.prototype.subS,t.prototype.subtractM=t.prototype.subM,t.subtract=t.sub,t.prototype.mul=function(t){return"number"==typeof t?this.mulS(t):this.mulM(t)},t.prototype.mulS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t);return this},t.prototype.mulM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)*t.get(e,r));return this},t.mul=function(t,r){return new e(t).mul(r)},t.prototype.multiply=t.prototype.mul,t.prototype.multiplyS=t.prototype.mulS,t.prototype.multiplyM=t.prototype.mulM,t.multiply=t.mul,t.prototype.div=function(t){return"number"==typeof t?this.divS(t):this.divM(t)},t.prototype.divS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t);return this},t.prototype.divM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)/t.get(e,r));return this},t.div=function(t,r){return new e(t).div(r)},t.prototype.divide=t.prototype.div,t.prototype.divideS=t.prototype.divS,t.prototype.divideM=t.prototype.divM,t.divide=t.div,t.prototype.mod=function(t){return"number"==typeof t?this.modS(t):this.modM(t)},t.prototype.modS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t);return this},t.prototype.modM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)%t.get(e,r));return this},t.mod=function(t,r){return new e(t).mod(r)},t.prototype.modulus=t.prototype.mod,t.prototype.modulusS=t.prototype.modS,t.prototype.modulusM=t.prototype.modM,t.modulus=t.mod,t.prototype.and=function(t){return"number"==typeof t?this.andS(t):this.andM(t)},t.prototype.andS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t);return this},t.prototype.andM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)&t.get(e,r));return this},t.and=function(t,r){return new e(t).and(r)},t.prototype.or=function(t){return"number"==typeof t?this.orS(t):this.orM(t)},t.prototype.orS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t);return this},t.prototype.orM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)|t.get(e,r));return this},t.or=function(t,r){return new e(t).or(r)},t.prototype.xor=function(t){return"number"==typeof t?this.xorS(t):this.xorM(t)},t.prototype.xorS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t);return this},t.prototype.xorM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)^t.get(e,r));return this},t.xor=function(t,r){return new e(t).xor(r)},t.prototype.leftShift=function(t){return"number"==typeof t?this.leftShiftS(t):this.leftShiftM(t)},t.prototype.leftShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t);return this},t.prototype.leftShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)<<t.get(e,r));return this},t.leftShift=function(t,r){return new e(t).leftShift(r)},t.prototype.signPropagatingRightShift=function(t){return"number"==typeof t?this.signPropagatingRightShiftS(t):this.signPropagatingRightShiftM(t)},t.prototype.signPropagatingRightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t);return this},t.prototype.signPropagatingRightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>t.get(e,r));return this},t.signPropagatingRightShift=function(t,r){return new e(t).signPropagatingRightShift(r)},t.prototype.rightShift=function(t){return"number"==typeof t?this.rightShiftS(t):this.rightShiftM(t)},t.prototype.rightShiftS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t);return this},t.prototype.rightShiftM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,this.get(e,r)>>>t.get(e,r));return this},t.rightShift=function(t,r){return new e(t).rightShift(r)},t.prototype.zeroFillRightShift=t.prototype.rightShift,t.prototype.zeroFillRightShiftS=t.prototype.rightShiftS,t.prototype.zeroFillRightShiftM=t.prototype.rightShiftM,t.zeroFillRightShift=t.rightShift,t.prototype.not=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,~this.get(t,e));return this},t.not=function(t){return new e(t).not()},t.prototype.abs=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.abs(this.get(t,e)));return this},t.abs=function(t){return new e(t).abs()},t.prototype.acos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acos(this.get(t,e)));return this},t.acos=function(t){return new e(t).acos()},t.prototype.acosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.acosh(this.get(t,e)));return this},t.acosh=function(t){return new e(t).acosh()},t.prototype.asin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asin(this.get(t,e)));return this},t.asin=function(t){return new e(t).asin()},t.prototype.asinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.asinh(this.get(t,e)));return this},t.asinh=function(t){return new e(t).asinh()},t.prototype.atan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atan(this.get(t,e)));return this},t.atan=function(t){return new e(t).atan()},t.prototype.atanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.atanh(this.get(t,e)));return this},t.atanh=function(t){return new e(t).atanh()},t.prototype.cbrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cbrt(this.get(t,e)));return this},t.cbrt=function(t){return new e(t).cbrt()},t.prototype.ceil=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.ceil(this.get(t,e)));return this},t.ceil=function(t){return new e(t).ceil()},t.prototype.clz32=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.clz32(this.get(t,e)));return this},t.clz32=function(t){return new e(t).clz32()},t.prototype.cos=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cos(this.get(t,e)));return this},t.cos=function(t){return new e(t).cos()},t.prototype.cosh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.cosh(this.get(t,e)));return this},t.cosh=function(t){return new e(t).cosh()},t.prototype.exp=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.exp(this.get(t,e)));return this},t.exp=function(t){return new e(t).exp()},t.prototype.expm1=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.expm1(this.get(t,e)));return this},t.expm1=function(t){return new e(t).expm1()},t.prototype.floor=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.floor(this.get(t,e)));return this},t.floor=function(t){return new e(t).floor()},t.prototype.fround=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.fround(this.get(t,e)));return this},t.fround=function(t){return new e(t).fround()},t.prototype.log=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log(this.get(t,e)));return this},t.log=function(t){return new e(t).log()},t.prototype.log1p=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log1p(this.get(t,e)));return this},t.log1p=function(t){return new e(t).log1p()},t.prototype.log10=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log10(this.get(t,e)));return this},t.log10=function(t){return new e(t).log10()},t.prototype.log2=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.log2(this.get(t,e)));return this},t.log2=function(t){return new e(t).log2()},t.prototype.round=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.round(this.get(t,e)));return this},t.round=function(t){return new e(t).round()},t.prototype.sign=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sign(this.get(t,e)));return this},t.sign=function(t){return new e(t).sign()},t.prototype.sin=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sin(this.get(t,e)));return this},t.sin=function(t){return new e(t).sin()},t.prototype.sinh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sinh(this.get(t,e)));return this},t.sinh=function(t){return new e(t).sinh()},t.prototype.sqrt=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.sqrt(this.get(t,e)));return this},t.sqrt=function(t){return new e(t).sqrt()},t.prototype.tan=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tan(this.get(t,e)));return this},t.tan=function(t){return new e(t).tan()},t.prototype.tanh=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.tanh(this.get(t,e)));return this},t.tanh=function(t){return new e(t).tanh()},t.prototype.trunc=function(){for(let t=0;t<this.rows;t++)for(let e=0;e<this.columns;e++)this.set(t,e,Math.trunc(this.get(t,e)));return this},t.trunc=function(t){return new e(t).trunc()},t.pow=function(t,r){return new e(t).pow(r)},t.prototype.pow=function(t){return"number"==typeof t?this.powS(t):this.powM(t)},t.prototype.powS=function(t){for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t));return this},t.prototype.powM=function(t){if(t=e.checkMatrix(t),this.rows!==t.rows||this.columns!==t.columns)throw new RangeError("Matrices dimensions must be equal");for(let e=0;e<this.rows;e++)for(let r=0;r<this.columns;r++)this.set(e,r,Math.pow(this.get(e,r),t.get(e,r)));return this}}(N,k);class I extends N{constructor(t){super(),this.data=t,this.rows=t.length,this.columns=t[0].length}set(t,e,r){return this.data[t][e]=r,this}get(t,e){return this.data[t][e]}}class A{constructor(t){let e,r,n,s,i,o,h,a,l,u=(t=I.checkMatrix(t)).clone(),c=u.rows,f=u.columns,g=new Float64Array(c),m=1;for(e=0;e<c;e++)g[e]=e;for(a=new Float64Array(c),r=0;r<f;r++){for(e=0;e<c;e++)a[e]=u.get(e,r);for(e=0;e<c;e++){for(l=Math.min(e,r),i=0,n=0;n<l;n++)i+=u.get(e,n)*a[n];a[e]-=i,u.set(e,r,a[e])}for(s=r,e=r+1;e<c;e++)Math.abs(a[e])>Math.abs(a[s])&&(s=e);if(s!==r){for(n=0;n<f;n++)o=u.get(s,n),u.set(s,n,u.get(r,n)),u.set(r,n,o);h=g[s],g[s]=g[r],g[r]=h,m=-m}if(r<c&&0!==u.get(r,r))for(e=r+1;e<c;e++)u.set(e,r,u.get(e,r)/u.get(r,r))}this.LU=u,this.pivotVector=g,this.pivotSign=m}isSingular(){let t=this.LU,e=t.columns;for(let r=0;r<e;r++)if(0===t.get(r,r))return!0;return!1}solve(t){t=k.checkMatrix(t);let e=this.LU;if(e.rows!==t.rows)throw new Error("Invalid matrix dimensions");if(this.isSingular())throw new Error("LU matrix is singular");let r,n,s,i=t.columns,o=t.subMatrixRow(this.pivotVector,0,i-1),h=e.columns;for(s=0;s<h;s++)for(r=s+1;r<h;r++)for(n=0;n<i;n++)o.set(r,n,o.get(r,n)-o.get(s,n)*e.get(r,s));for(s=h-1;s>=0;s--){for(n=0;n<i;n++)o.set(s,n,o.get(s,n)/e.get(s,s));for(r=0;r<s;r++)for(n=0;n<i;n++)o.set(r,n,o.get(r,n)-o.get(s,n)*e.get(r,s))}return o}get determinant(){let t=this.LU;if(!t.isSquare())throw new Error("Matrix must be square");let e=this.pivotSign,r=t.columns;for(let n=0;n<r;n++)e*=t.get(n,n);return e}get lowerTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new k(e,r);for(let s=0;s<e;s++)for(let e=0;e<r;e++)s>e?n.set(s,e,t.get(s,e)):s===e?n.set(s,e,1):n.set(s,e,0);return n}get upperTriangularMatrix(){let t=this.LU,e=t.rows,r=t.columns,n=new k(e,r);for(let s=0;s<e;s++)for(let e=0;e<r;e++)s<=e?n.set(s,e,t.get(s,e)):n.set(s,e,0);return n}get pivotPermutationVector(){return Array.from(this.pivotVector)}}function z(t,e){let r=0;return Math.abs(t)>Math.abs(e)?(r=e/t,Math.abs(t)*Math.sqrt(1+r*r)):0!==e?(r=t/e,Math.abs(e)*Math.sqrt(1+r*r)):0}class C{constructor(t){let e,r,n,s,i=(t=I.checkMatrix(t)).clone(),o=t.rows,h=t.columns,a=new Float64Array(h);for(n=0;n<h;n++){let t=0;for(e=n;e<o;e++)t=z(t,i.get(e,n));if(0!==t){for(i.get(n,n)<0&&(t=-t),e=n;e<o;e++)i.set(e,n,i.get(e,n)/t);for(i.set(n,n,i.get(n,n)+1),r=n+1;r<h;r++){for(s=0,e=n;e<o;e++)s+=i.get(e,n)*i.get(e,r);for(s=-s/i.get(n,n),e=n;e<o;e++)i.set(e,r,i.get(e,r)+s*i.get(e,n))}}a[n]=-t}this.QR=i,this.Rdiag=a}solve(t){t=k.checkMatrix(t);let e=this.QR,r=e.rows;if(t.rows!==r)throw new Error("Matrix row dimensions must agree");if(!this.isFullRank())throw new Error("Matrix is rank deficient");let n,s,i,o,h=t.columns,a=t.clone(),l=e.columns;for(i=0;i<l;i++)for(s=0;s<h;s++){for(o=0,n=i;n<r;n++)o+=e.get(n,i)*a.get(n,s);for(o=-o/e.get(i,i),n=i;n<r;n++)a.set(n,s,a.get(n,s)+o*e.get(n,i))}for(i=l-1;i>=0;i--){for(s=0;s<h;s++)a.set(i,s,a.get(i,s)/this.Rdiag[i]);for(n=0;n<i;n++)for(s=0;s<h;s++)a.set(n,s,a.get(n,s)-a.get(i,s)*e.get(n,i))}return a.subMatrix(0,l-1,0,h-1)}isFullRank(){let t=this.QR.columns;for(let e=0;e<t;e++)if(0===this.Rdiag[e])return!1;return!0}get upperTriangularMatrix(){let t,e,r=this.QR,n=r.columns,s=new k(n,n);for(t=0;t<n;t++)for(e=0;e<n;e++)t<e?s.set(t,e,r.get(t,e)):t===e?s.set(t,e,this.Rdiag[t]):s.set(t,e,0);return s}get orthogonalMatrix(){let t,e,r,n,s=this.QR,i=s.rows,o=s.columns,h=new k(i,o);for(r=o-1;r>=0;r--){for(t=0;t<i;t++)h.set(t,r,0);for(h.set(r,r,1),e=r;e<o;e++)if(0!==s.get(r,r)){for(n=0,t=r;t<i;t++)n+=s.get(t,r)*h.get(t,e);for(n=-n/s.get(r,r),t=r;t<i;t++)h.set(t,e,h.get(t,e)+n*s.get(t,r))}}return h}}class T{constructor(t,e={}){if((t=I.checkMatrix(t)).isEmpty())throw new Error("Matrix must be non-empty");let r=t.rows,n=t.columns;const{computeLeftSingularVectors:s=!0,computeRightSingularVectors:i=!0,autoTranspose:o=!1}=e;let h,a=Boolean(s),l=Boolean(i),u=!1;if(r<n)if(o){h=t.transpose(),r=h.rows,n=h.columns,u=!0;let e=a;a=l,l=e}else h=t.clone(),console.warn("Computing SVD on a matrix with more columns than rows. Consider enabling autoTranspose");else h=t.clone();let c=Math.min(r,n),f=Math.min(r+1,n),g=new Float64Array(f),m=new k(r,c),p=new k(n,n),d=new Float64Array(n),w=new Float64Array(r),y=new Float64Array(f);for(let t=0;t<f;t++)y[t]=t;let v=Math.min(r-1,n),b=Math.max(0,Math.min(n-2,r)),M=Math.max(v,b);for(let t=0;t<M;t++){if(t<v){g[t]=0;for(let e=t;e<r;e++)g[t]=z(g[t],h.get(e,t));if(0!==g[t]){h.get(t,t)<0&&(g[t]=-g[t]);for(let e=t;e<r;e++)h.set(e,t,h.get(e,t)/g[t]);h.set(t,t,h.get(t,t)+1)}g[t]=-g[t]}for(let e=t+1;e<n;e++){if(t<v&&0!==g[t]){let n=0;for(let s=t;s<r;s++)n+=h.get(s,t)*h.get(s,e);n=-n/h.get(t,t);for(let s=t;s<r;s++)h.set(s,e,h.get(s,e)+n*h.get(s,t))}d[e]=h.get(t,e)}if(a&&t<v)for(let e=t;e<r;e++)m.set(e,t,h.get(e,t));if(t<b){d[t]=0;for(let e=t+1;e<n;e++)d[t]=z(d[t],d[e]);if(0!==d[t]){d[t+1]<0&&(d[t]=0-d[t]);for(let e=t+1;e<n;e++)d[e]/=d[t];d[t+1]+=1}if(d[t]=-d[t],t+1<r&&0!==d[t]){for(let e=t+1;e<r;e++)w[e]=0;for(let e=t+1;e<r;e++)for(let r=t+1;r<n;r++)w[e]+=d[r]*h.get(e,r);for(let e=t+1;e<n;e++){let n=-d[e]/d[t+1];for(let s=t+1;s<r;s++)h.set(s,e,h.get(s,e)+n*w[s])}}if(l)for(let e=t+1;e<n;e++)p.set(e,t,d[e])}}let x=Math.min(n,r+1);if(v<n&&(g[v]=h.get(v,v)),r<x&&(g[x-1]=0),b+1<x&&(d[b]=h.get(b,x-1)),d[x-1]=0,a){for(let t=v;t<c;t++){for(let e=0;e<r;e++)m.set(e,t,0);m.set(t,t,1)}for(let t=v-1;t>=0;t--)if(0!==g[t]){for(let e=t+1;e<c;e++){let n=0;for(let s=t;s<r;s++)n+=m.get(s,t)*m.get(s,e);n=-n/m.get(t,t);for(let s=t;s<r;s++)m.set(s,e,m.get(s,e)+n*m.get(s,t))}for(let e=t;e<r;e++)m.set(e,t,-m.get(e,t));m.set(t,t,1+m.get(t,t));for(let e=0;e<t-1;e++)m.set(e,t,0)}else{for(let e=0;e<r;e++)m.set(e,t,0);m.set(t,t,1)}}if(l)for(let t=n-1;t>=0;t--){if(t<b&&0!==d[t])for(let e=t+1;e<n;e++){let r=0;for(let s=t+1;s<n;s++)r+=p.get(s,t)*p.get(s,e);r=-r/p.get(t+1,t);for(let s=t+1;s<n;s++)p.set(s,e,p.get(s,e)+r*p.get(s,t))}for(let e=0;e<n;e++)p.set(e,t,0);p.set(t,t,1)}let S=x-1,_=0,E=Number.EPSILON;for(;x>0;){let t,e;for(t=x-2;t>=-1&&-1!==t;t--){const e=Number.MIN_VALUE+E*Math.abs(g[t]+Math.abs(g[t+1]));if(Math.abs(d[t])<=e||Number.isNaN(d[t])){d[t]=0;break}}if(t===x-2)e=4;else{let r;for(r=x-1;r>=t&&r!==t;r--){let e=(r!==x?Math.abs(d[r]):0)+(r!==t+1?Math.abs(d[r-1]):0);if(Math.abs(g[r])<=E*e){g[r]=0;break}}r===t?e=3:r===x-1?e=1:(e=2,t=r)}switch(t++,e){case 1:{let e=d[x-2];d[x-2]=0;for(let r=x-2;r>=t;r--){let s=z(g[r],e),i=g[r]/s,o=e/s;if(g[r]=s,r!==t&&(e=-o*d[r-1],d[r-1]=i*d[r-1]),l)for(let t=0;t<n;t++)s=i*p.get(t,r)+o*p.get(t,x-1),p.set(t,x-1,-o*p.get(t,r)+i*p.get(t,x-1)),p.set(t,r,s)}break}case 2:{let e=d[t-1];d[t-1]=0;for(let n=t;n<x;n++){let s=z(g[n],e),i=g[n]/s,o=e/s;if(g[n]=s,e=-o*d[n],d[n]=i*d[n],a)for(let e=0;e<r;e++)s=i*m.get(e,n)+o*m.get(e,t-1),m.set(e,t-1,-o*m.get(e,n)+i*m.get(e,t-1)),m.set(e,n,s)}break}case 3:{const e=Math.max(Math.abs(g[x-1]),Math.abs(g[x-2]),Math.abs(d[x-2]),Math.abs(g[t]),Math.abs(d[t])),s=g[x-1]/e,i=g[x-2]/e,o=d[x-2]/e,h=g[t]/e,u=d[t]/e,c=((i+s)*(i-s)+o*o)/2,f=s*o*(s*o);let w=0;0===c&&0===f||(w=c<0?0-Math.sqrt(c*c+f):Math.sqrt(c*c+f),w=f/(c+w));let y=(h+s)*(h-s)+w,v=h*u;for(let e=t;e<x-1;e++){let s=z(y,v);0===s&&(s=Number.MIN_VALUE);let i=y/s,o=v/s;if(e!==t&&(d[e-1]=s),y=i*g[e]+o*d[e],d[e]=i*d[e]-o*g[e],v=o*g[e+1],g[e+1]=i*g[e+1],l)for(let t=0;t<n;t++)s=i*p.get(t,e)+o*p.get(t,e+1),p.set(t,e+1,-o*p.get(t,e)+i*p.get(t,e+1)),p.set(t,e,s);if(s=z(y,v),0===s&&(s=Number.MIN_VALUE),i=y/s,o=v/s,g[e]=s,y=i*d[e]+o*g[e+1],g[e+1]=-o*d[e]+i*g[e+1],v=o*d[e+1],d[e+1]=i*d[e+1],a&&e<r-1)for(let t=0;t<r;t++)s=i*m.get(t,e)+o*m.get(t,e+1),m.set(t,e+1,-o*m.get(t,e)+i*m.get(t,e+1)),m.set(t,e,s)}d[x-2]=y,_+=1;break}case 4:if(g[t]<=0&&(g[t]=g[t]<0?-g[t]:0,l))for(let e=0;e<=S;e++)p.set(e,t,-p.get(e,t));for(;t<S&&!(g[t]>=g[t+1]);){let e=g[t];if(g[t]=g[t+1],g[t+1]=e,l&&t<n-1)for(let r=0;r<n;r++)e=p.get(r,t+1),p.set(r,t+1,p.get(r,t)),p.set(r,t,e);if(a&&t<r-1)for(let n=0;n<r;n++)e=m.get(n,t+1),m.set(n,t+1,m.get(n,t)),m.set(n,t,e);t++}_=0,x--}}if(u){let t=p;p=m,m=t}this.m=r,this.n=n,this.s=g,this.U=m,this.V=p}solve(t){let e=t,r=this.threshold,n=this.s.length,s=k.zeros(n,n);for(let t=0;t<n;t++)Math.abs(this.s[t])<=r?s.set(t,t,0):s.set(t,t,1/this.s[t]);let i=this.U,o=this.rightSingularVectors,h=o.mmul(s),a=o.rows,l=i.rows,u=k.zeros(a,l);for(let t=0;t<a;t++)for(let e=0;e<l;e++){let r=0;for(let s=0;s<n;s++)r+=h.get(t,s)*i.get(e,s);u.set(t,e,r)}return u.mmul(e)}solveForDiagonal(t){return this.solve(k.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,n=t.columns,s=new k(r,this.s.length);for(let i=0;i<r;i++)for(let r=0;r<n;r++)Math.abs(this.s[r])>e&&s.set(i,r,t.get(i,r)/this.s[r]);let i=this.U,o=i.rows,h=i.columns,a=new k(r,o);for(let t=0;t<r;t++)for(let e=0;e<o;e++){let r=0;for(let n=0;n<h;n++)r+=s.get(t,n)*i.get(e,n);a.set(t,e,r)}return a}get condition(){return this.s[0]/this.s[Math.min(this.m,this.n)-1]}get norm2(){return this.s[0]}get rank(){let t=Math.max(this.m,this.n)*this.s[0]*Number.EPSILON,e=0,r=this.s;for(let n=0,s=r.length;n<s;n++)r[n]>t&&e++;return e}get diagonal(){return Array.from(this.s)}get threshold(){return Number.EPSILON/2*Math.max(this.m,this.n)*this.s[0]}get leftSingularVectors(){return this.U}get rightSingularVectors(){return this.V}get diagonalMatrix(){return k.diag(this.s)}}function F(t,e,r,n,s){let i=r*n*n,o=k.eye(e.length,e.length,i);const h=s(e);let a=new Float64Array(t.x.length);for(let e=0;e<t.x.length;e++)a[e]=h(t.x[e]);let l=function(t,e,r,n,s){const i=r.length,o=t.x.length;let h=new Array(i);for(let a=0;a<i;a++){h[a]=new Array(o);let i=r.slice();i[a]+=n;let l=s(i);for(let r=0;r<o;r++)h[a][r]=e[r]-l(t.x[r])}return new k(h)}(t,a,e,n,s),u=function(t,e){const r=t.x.length;let n=new Array(r);for(let s=0;s<r;s++)n[s]=[t.y[s]-e[s]];return new k(n)}(t,a),c=function(t,e=!1){return t=I.checkMatrix(t),e?new T(t).inverse():function(t,e,r=!1){return t=I.checkMatrix(t),e=I.checkMatrix(e),r?new T(t).solve(e):t.isSquare()?new A(t).solve(e):new C(t).solve(e)}(t,k.eye(t.rows))}(o.add(l.mmul(l.transpose())));return(e=(e=new k([e])).sub(c.mmul(l).mmul(u).mul(n).transpose())).to1DArray()}function O(t,e,r={}){let{maxIterations:n=100,gradientDifference:o=.1,damping:h=0,errorTolerance:a=.01,minValues:l,maxValues:u,initialValues:c}=r;if(h<=0)throw new Error("The damping option must be a positive number");if(!t.x||!t.y)throw new Error("The data parameter must have x and y elements");if(!s(t.x)||t.x.length<2||!s(t.y)||t.y.length<2)throw new Error("The data parameter elements must be an array with more than 2 points");if(t.x.length!==t.y.length)throw new Error("The data parameter elements must have the same size");let f=c||new Array(e.length).fill(1),g=f.length;if(u=u||new Array(g).fill(Number.MAX_SAFE_INTEGER),l=l||new Array(g).fill(Number.MIN_SAFE_INTEGER),u.length!==l.length)throw new Error("minValues and maxValues must be the same size");if(!s(f))throw new Error("initialValues must be an array");let m,p=i(t,f,e),d=p<=a;for(m=0;m<n&&!d;m++){f=F(t,f,h,o,e);for(let t=0;t<g;t++)f[t]=Math.min(Math.max(l[t],f[t]),u[t]);if(p=i(t,f,e),isNaN(p))break;d=p<=a}return{parameterValues:f,parameterError:p,iterations:m}}},9378:function(t,e,r){var n=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var s=n(r(4517));function i(t,e){var r=function(r){return s.empty(t).map((function(){return s.filled(e,r)}))},n=[];return n.push(r(-1)),n.push(r(1/0)),n.push(r(0)),n}function o(t,e,r,n,s){e=Math.floor(e);var i=t[0][e],o=t[1][e];if(t[2][e],r>=o[0])return 0;for(var a=0;a<i.length;a++)if(n===i[a])return 0;return h(t,e,r,n,s)}function h(t,e,r,n,s){var i=t[0][e],o=t[1][e],h=t[2][e];if(r>=o[0])return 0;o[0]=r,i[0]=n,h[0]=s;for(var a=0,l=0;;){var u=2*a+1,c=u+1,f=t[0][0].length;if(u>=f)break;if(c>=f){if(!(o[u]>r))break;l=u}else if(o[u]>=o[c]){if(!(r<o[u]))break;l=u}else{if(!(r<o[c]))break;l=c}o[a]=o[l],i[a]=i[l],h[a]=h[l],a=l}return o[a]=r,i[a]=n,h[a]=s,1}function a(t,e,r,n){for(;2*n+1<r;){var s=2*n+1,i=s+1,o=n;if(t[o]<t[s]&&(o=s),i<r&&t[o]<t[i]&&(o=i),o===n)break;var h=t[n];t[n]=t[o],t[o]=h;var a=e[n];e[n]=e[o],e[o]=a,n=o}}e.makeHeap=i,e.rejectionSample=function(t,e,r){for(var n=s.zeros(t),i=0;i<t;i++){for(var o=!0,h=0;o;){h=s.tauRandInt(e,r);for(var a=!1,l=0;l<i;l++)if(h===n[l]){a=!0;break}a||(o=!1)}n[i]=h}return n},e.heapPush=o,e.uncheckedHeapPush=h,e.buildCandidates=function(t,e,r,n,h){for(var a=i(e,n),l=0;l<e;l++)for(var u=0;u<r;u++)if(!(t[0][l][u]<0)){var c=t[0][l][u],f=t[2][l][u],g=s.tauRand(h);o(a,l,g,c,f),o(a,c,g,l,f),t[2][l][u]=0}return a},e.deheapSort=function(t){for(var e=t[0],r=t[1],n=0;n<e.length;n++)for(var s=e[n],i=r[n],o=0;o<s.length-1;o++){var h=s.length-o-1,l=i.length-o-1,u=s[0];s[0]=s[h],s[h]=u;var c=i[0];i[0]=i[l],i[l]=c,a(i,s,l,0)}return{indices:e,weights:r}},e.smallestFlagged=function(t,e){for(var r=t[0][e],n=t[1][e],s=t[2][e],i=1/0,o=-1,h=0;h>r.length;h++)1===s[h]&&n[h]<i&&(i=n[h],o=h);return o>=0?(s[o]=0,Math.floor(r[o])):-1}},4221:(t,e,r)=>{var n=r(4364);e.u=n.UMAP},5686:function(t,e,r){var n,s=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},i=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var h=o(r(4517)),a=function(){function t(t,e,r,n){if(this.entries=new Map,this.nRows=0,this.nCols=0,t.length!==e.length||t.length!==r.length)throw new Error("rows, cols and values arrays must all have the same length");this.nRows=n[0],this.nCols=n[1];for(var s=0;s<r.length;s++){var i=t[s],o=e[s];this.checkDims(i,o);var h=this.makeKey(i,o);this.entries.set(h,{value:r[s],row:i,col:o})}}return t.prototype.makeKey=function(t,e){return t+":"+e},t.prototype.checkDims=function(t,e){if(!(t<this.nRows&&e<this.nCols))throw new Error("row and/or col specified outside of matrix dimensions")},t.prototype.set=function(t,e,r){this.checkDims(t,e);var n=this.makeKey(t,e);this.entries.has(n)?this.entries.get(n).value=r:this.entries.set(n,{value:r,row:t,col:e})},t.prototype.get=function(t,e,r){void 0===r&&(r=0),this.checkDims(t,e);var n=this.makeKey(t,e);return this.entries.has(n)?this.entries.get(n).value:r},t.prototype.getAll=function(t){void 0===t&&(t=!0);var e=[];return this.entries.forEach((function(t){e.push(t)})),t&&e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row})),e},t.prototype.getDims=function(){return[this.nRows,this.nCols]},t.prototype.getRows=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].row}))},t.prototype.getCols=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].col}))},t.prototype.getValues=function(){return Array.from(this.entries,(function(t){var e=s(t,2);return e[0],e[1].value}))},t.prototype.forEach=function(t){this.entries.forEach((function(e){return t(e.value,e.row,e.col)}))},t.prototype.map=function(e){var r=[];this.entries.forEach((function(t){r.push(e(t.value,t.row,t.col))}));var n=[this.nRows,this.nCols];return new t(this.getRows(),this.getCols(),r,n)},t.prototype.toArray=function(){var t=this,e=h.empty(this.nRows).map((function(){return h.zeros(t.nCols)}));return this.entries.forEach((function(t){e[t.row][t.col]=t.value})),e},t}();e.SparseMatrix=a,e.transpose=function(t){var e=[],r=[],n=[];t.forEach((function(t,s,i){e.push(s),r.push(i),n.push(t)}));var s=[t.nCols,t.nRows];return new a(r,e,n,s)},e.identity=function(t){for(var e=s(t,1)[0],r=new a([],[],[],t),n=0;n<e;n++)r.set(n,n,1);return r},e.pairwiseMultiply=function(t,e){return u(t,e,(function(t,e){return t*e}))},e.add=function(t,e){return u(t,e,(function(t,e){return t+e}))},e.subtract=function(t,e){return u(t,e,(function(t,e){return t-e}))},e.maximum=function(t,e){return u(t,e,(function(t,e){return t>e?t:e}))},e.multiplyScalar=function(t,e){return t.map((function(t){return t*e}))},e.eliminateZeros=function(t){for(var e=new Set,r=t.getValues(),n=t.getRows(),s=t.getCols(),i=0;i<r.length;i++)0===r[i]&&e.add(i);var o=function(t,r){return!e.has(r)},h=r.filter(o),l=n.filter(o),u=s.filter(o);return new a(l,u,h,t.getDims())},e.normalize=function(t,e){var r,n;void 0===e&&(e="l2");var s=l[e],o=new Map;t.forEach((function(t,e,r){var n=o.get(e)||[];n.push(r),o.set(e,n)}));var h=new a([],[],[],t.getDims()),u=function(e){for(var r=o.get(e).sort(),n=r.map((function(r){return t.get(e,r)})),i=s(n),a=0;a<i.length;a++)h.set(e,r[a],i[a])};try{for(var c=i(o.keys()),f=c.next();!f.done;f=c.next())u(f.value)}catch(t){r={error:t}}finally{try{f&&!f.done&&(n=c.return)&&n.call(c)}finally{if(r)throw r.error}}return h};var l=((n={}).max=function(t){for(var e=-1/0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return t.map((function(t){return t/e}))},n.l1=function(t){for(var e=0,r=0;r<t.length;r++)e+=t[r];return t.map((function(t){return t/e}))},n.l2=function(t){for(var e=0,r=0;r<t.length;r++)e+=Math.pow(t[r],2);return t.map((function(t){return Math.sqrt(Math.pow(t,2)/e)}))},n);function u(t,e,r){for(var n=new Set,s=[],i=[],o=[],h=function(n,h){s.push(n),i.push(h);var a=r(t.get(n,h),e.get(n,h));o.push(a)},l=t.getValues(),u=t.getRows(),c=t.getCols(),f=0;f<l.length;f++){var g=(w=u[f])+":"+(y=c[f]);n.add(g),h(w,y)}var m=e.getValues(),p=e.getRows(),d=e.getCols();for(f=0;f<m.length;f++){var w,y;g=(w=p[f])+":"+(y=d[f]),n.has(g)||h(w,y)}var v=[t.nRows,t.nCols];return new a(s,i,o,v)}e.getCSR=function(t){var e=[];t.forEach((function(t,r,n){e.push({value:t,row:r,col:n})})),e.sort((function(t,e){return t.row===e.row?t.col-e.col:t.row-e.row}));for(var r=[],n=[],s=[],i=-1,o=0;o<e.length;o++){var h=e[o],a=h.row,l=h.col,u=h.value;a!==i&&(i=a,s.push(o)),r.push(l),n.push(u)}return{indices:r,values:n,indptr:s}}},760:function(t,e,r){var n=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},s=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var i=s(r(9378)),o=s(r(5686)),h=s(r(2320)),a=s(r(4517));e.makeNNDescent=function(t,e){return function(r,n,s,o,h,l,u,c){void 0===o&&(o=10),void 0===h&&(h=50),void 0===l&&(l=.001),void 0===u&&(u=.5),void 0===c&&(c=!0);for(var f=r.length,g=i.makeHeap(r.length,s),m=0;m<r.length;m++)for(var p=i.rejectionSample(s,r.length,e),d=0;d<p.length;d++){var w=t(r[m],r[p[d]]);i.heapPush(g,m,w,p[d],1),i.heapPush(g,p[d],w,m,1)}if(c)for(var y=0;y<n.length;y++)for(m=0;m<n[y].length&&!(n[y][m]<0);m++)for(d=m+1;d<n[y].length&&!(n[y][d]<0);d++)w=t(r[n[y][m]],r[n[y][d]]),i.heapPush(g,n[y][m],w,n[y][d],1),i.heapPush(g,n[y][d],w,n[y][m],1);for(y=0;y<o;y++){var v=i.buildCandidates(g,f,s,h,e),b=0;for(m=0;m<f;m++)for(d=0;d<h;d++){var M=Math.floor(v[0][m][d]);if(!(M<0||a.tauRand(e)<u))for(var x=0;x<h;x++){var S=Math.floor(v[0][m][x]),_=v[2][m][d],E=v[2][m][x];S<0||!_&&!E||(w=t(r[M],r[S]),b+=i.heapPush(g,M,w,S,1),b+=i.heapPush(g,S,w,M,1))}}if(b<=l*s*r.length)break}return i.deheapSort(g)}},e.makeInitializations=function(t){return{initFromRandom:function(e,r,n,s,o){for(var h=0;h<n.length;h++)for(var l=a.rejectionSample(e,r.length,o),u=0;u<l.length;u++)if(!(l[u]<0)){var c=t(r[l[u]],n[h]);i.heapPush(s,h,c,l[u],1)}},initFromTree:function(e,r,n,s,o){for(var a=0;a<n.length;a++)for(var l=h.searchFlatTree(n[a],e,o),u=0;u<l.length;u++){if(l[u]<0)return;var c=t(r[l[u]],n[a]);i.heapPush(s,a,c,l[u],1)}}}},e.makeInitializedNNSearch=function(t){return function(e,r,s,h){for(var a,l,u=o.getCSR(r),c=u.indices,f=u.indptr,g=0;g<h.length;g++)for(var m=new Set(s[0][g]);;){var p=i.smallestFlagged(s,g);if(-1===p)break;var d=c.slice(f[p],f[p+1]);try{for(var w=n(d),y=w.next();!y.done;y=w.next()){var v=y.value;if(v!==p&&-1!==v&&!m.has(v)){var b=t(e[v],h[g]);i.uncheckedHeapPush(s,g,b,v,1),m.add(v)}}}catch(t){a={error:t}}finally{try{y&&!y.done&&(l=w.return)&&l.call(w)}finally{if(a)throw a.error}}}return s}},e.initializeSearch=function(t,e,r,s,o,h,a){var l,u,c=i.makeHeap(r.length,s);if(o(s,e,r,c,a),t)try{for(var f=n(t),g=f.next();!g.done;g=f.next())h(g.value,e,r,c,a)}catch(t){l={error:t}}finally{try{g&&!g.done&&(u=f.return)&&u.call(f)}finally{if(l)throw l.error}}return c}},2320:function(t,e,r){var n=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},s=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(n(arguments[e]));return t},i=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}},o=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e};Object.defineProperty(e,"__esModule",{value:!0});var h=o(r(4517)),a=function(t,e,r,n){this.hyperplanes=t,this.offsets=e,this.children=r,this.indices=n};function l(t,e,r,n,s){if(void 0===r&&(r=30),e.length>r){var i=function(t,e,r){var n=t[0].length,s=h.tauRandInt(e.length,r),i=h.tauRandInt(e.length,r);i=(i+=s===i?1:0)%e.length;for(var o=e[s],a=e[i],l=0,u=h.zeros(n),c=0;c<u.length;c++)u[c]=t[o][c]-t[a][c],l-=u[c]*(t[o][c]+t[a][c])/2;var f=0,g=0,m=h.zeros(e.length);for(c=0;c<e.length;c++){for(var p=l,d=0;d<n;d++)p+=u[d]*t[e[c]][d];0===p?(m[c]=h.tauRandInt(2,r),0===m[c]?f+=1:g+=1):p>0?(m[c]=0,f+=1):(m[c]=1,g+=1)}var w=h.zeros(f),y=h.zeros(g);for(f=0,g=0,c=0;c<m.length;c++)0===m[c]?(w[f]=e[c],f+=1):(y[g]=e[c],g+=1);return{indicesLeft:w,indicesRight:y,hyperplane:u,offset:l}}(t,e,s),o=i.indicesLeft,a=i.indicesRight,u=i.hyperplane,c=i.offset;return{leftChild:l(t,o,r,n+1,s),rightChild:l(t,a,r,n+1,s),isLeaf:!1,hyperplane:u,offset:c}}return{indices:e,isLeaf:!0}}function u(t,e,r,n,i,o,h){var a;if(t.isLeaf)return n[o][0]=-h,(a=i[h]).splice.apply(a,s([0,t.indices.length],t.indices)),{nodeNum:o,leafNum:h+=1};e[o]=t.hyperplane,r[o]=t.offset,n[o][0]=o+1;var l=o,c=u(t.leftChild,e,r,n,i,o+1,h);return o=c.nodeNum,h=c.leafNum,n[l][1]=o+1,{nodeNum:(c=u(t.rightChild,e,r,n,i,o+1,h)).nodeNum,leafNum:c.leafNum}}function c(t){return t.isLeaf?1:1+c(t.leftChild)+c(t.rightChild)}function f(t){return t.isLeaf?1:f(t.leftChild)+f(t.rightChild)}function g(t,e,r,n){for(var s=e,i=0;i<r.length;i++)s+=t[i]*r[i];return 0===s?h.tauRandInt(2,n):s>0?0:1}e.FlatTree=a,e.makeForest=function(t,e,r,n){var s=Math.max(10,e);return h.range(r).map((function(e,r){return function(t,e,r,n){return void 0===e&&(e=30),l(t,h.range(t.length),e,r,n)}(t,s,r,n)})).map((function(t){return function(t,e){var r=c(t),n=f(t),s=h.range(r).map((function(){return h.zeros(t.hyperplane?t.hyperplane.length:0)})),i=h.zeros(r),o=h.range(r).map((function(){return[-1,-1]})),l=h.range(n).map((function(){return h.range(e).map((function(){return-1}))}));return u(t,s,i,o,l,0,0),new a(s,i,o,l)}(t,s)}))},e.makeLeafArray=function(t){var e,r;if(t.length>0){var n=[];try{for(var o=i(t),h=o.next();!h.done;h=o.next()){var a=h.value;n.push.apply(n,s(a.indices))}}catch(t){e={error:t}}finally{try{h&&!h.done&&(r=o.return)&&r.call(o)}finally{if(e)throw e.error}}return n}return[[-1]]},e.searchFlatTree=function(t,e,r){for(var n=0;e.children[n][0]>0;)n=0===g(e.hyperplanes[n],e.offsets[n],t,r)?e.children[n][0]:e.children[n][1];var s=-1*e.children[n][0];return e.indices[s]}},4364:function(t,e,r){var n=this&&this.__awaiter||function(t,e,r,n){return new(r||(r=Promise))((function(s,i){function o(t){try{a(n.next(t))}catch(t){i(t)}}function h(t){try{a(n.throw(t))}catch(t){i(t)}}function a(t){t.done?s(t.value):new r((function(e){e(t.value)})).then(o,h)}a((n=n.apply(t,e||[])).next())}))},s=this&&this.__generator||function(t,e){var r,n,s,i,o={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]};return i={next:h(0),throw:h(1),return:h(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function h(i){return function(h){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(s=2&i[0]?n.return:i[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,i[1])).done)return s;switch(n=0,s&&(i=[2&i[0],s.value]),i[0]){case 0:case 1:s=i;break;case 4:return o.label++,{value:i[1],done:!1};case 5:o.label++,n=i[1],i=[0];continue;case 7:i=o.ops.pop(),o.trys.pop();continue;default:if(!((s=(s=o.trys).length>0&&s[s.length-1])||6!==i[0]&&2!==i[0])){o=0;continue}if(3===i[0]&&(!s||i[1]>s[0]&&i[1]<s[3])){o.label=i[1];break}if(6===i[0]&&o.label<s[1]){o.label=s[1],s=i;break}if(s&&o.label<s[2]){o.label=s[2],o.ops.push(i);break}s[2]&&o.ops.pop(),o.trys.pop();continue}i=e.call(t,o)}catch(t){i=[6,t],n=0}finally{r=s=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,h])}}},i=this&&this.__read||function(t,e){var r="function"==typeof Symbol&&t[Symbol.iterator];if(!r)return t;var n,s,i=r.call(t),o=[];try{for(;(void 0===e||e-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(t){s={error:t}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(s)throw s.error}}return o},o=this&&this.__spread||function(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(i(arguments[e]));return t},h=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e},a=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=h(r(9378)),u=h(r(5686)),c=h(r(760)),f=h(r(2320)),g=h(r(4517)),m=a(r(9251)),p=1e-5,d=.001,w=function(){function t(t){void 0===t&&(t={});var e=this;this.learningRate=1,this.localConnectivity=1,this.minDist=.1,this.nComponents=2,this.nEpochs=0,this.nNeighbors=15,this.negativeSampleRate=5,this.random=Math.random,this.repulsionStrength=1,this.setOpMixRatio=1,this.spread=1,this.transformQueueSize=4,this.targetMetric="categorical",this.targetWeight=.5,this.targetNNeighbors=this.nNeighbors,this.distanceFn=y,this.isInitialized=!1,this.rpForest=[],this.embedding=[],this.optimizationState=new v;var r=function(r){void 0!==t[r]&&(e[r]=t[r])};r("distanceFn"),r("learningRate"),r("localConnectivity"),r("minDist"),r("nComponents"),r("nEpochs"),r("nNeighbors"),r("negativeSampleRate"),r("random"),r("repulsionStrength"),r("setOpMixRatio"),r("spread"),r("transformQueueSize")}return t.prototype.fit=function(t){return this.initializeFit(t),this.optimizeLayout(),this.embedding},t.prototype.fitAsync=function(t,e){return void 0===e&&(e=function(){return!0}),n(this,void 0,void 0,(function(){return s(this,(function(r){switch(r.label){case 0:return this.initializeFit(t),[4,this.optimizeLayoutAsync(e)];case 1:return r.sent(),[2,this.embedding]}}))}))},t.prototype.setSupervisedProjection=function(t,e){void 0===e&&(e={}),this.Y=t,this.targetMetric=e.targetMetric||this.targetMetric,this.targetWeight=e.targetWeight||this.targetWeight,this.targetNNeighbors=e.targetNNeighbors||this.targetNNeighbors},t.prototype.setPrecomputedKNN=function(t,e){this.knnIndices=t,this.knnDistances=e},t.prototype.initializeFit=function(t){if(t.length<=this.nNeighbors)throw new Error("Not enough data points ("+t.length+") to create nNeighbors: "+this.nNeighbors+". Add more data points or adjust the configuration.");if(this.X===t&&this.isInitialized)return this.getNEpochs();if(this.X=t,!this.knnIndices&&!this.knnDistances){var e=this.nearestNeighbors(t);this.knnIndices=e.knnIndices,this.knnDistances=e.knnDistances}this.graph=this.fuzzySimplicialSet(t,this.nNeighbors,this.setOpMixRatio),this.makeSearchFns(),this.searchGraph=this.makeSearchGraph(t),this.processGraphForSupervisedProjection();var r=this.initializeSimplicialSetEmbedding(),n=r.head,s=r.tail,i=r.epochsPerSample;return this.optimizationState.head=n,this.optimizationState.tail=s,this.optimizationState.epochsPerSample=i,this.initializeOptimization(),this.prepareForOptimizationLoop(),this.isInitialized=!0,this.getNEpochs()},t.prototype.makeSearchFns=function(){var t=c.makeInitializations(this.distanceFn),e=t.initFromTree,r=t.initFromRandom;this.initFromTree=e,this.initFromRandom=r,this.search=c.makeInitializedNNSearch(this.distanceFn)},t.prototype.makeSearchGraph=function(t){for(var e=this.knnIndices,r=this.knnDistances,n=[t.length,t.length],s=new u.SparseMatrix([],[],[],n),i=0;i<e.length;i++)for(var o=e[i],h=r[i],a=0;a<o.length;a++){var l=o[a],c=h[a];c>0&&s.set(i,l,c)}var f=u.transpose(s);return u.maximum(s,f)},t.prototype.transform=function(t){var e=this,r=this.X;if(void 0===r||0===r.length)throw new Error("No data has been fit.");var n=Math.floor(this.nNeighbors*this.transformQueueSize);n=Math.min(r.length,n);var s=c.initializeSearch(this.rpForest,r,t,n,this.initFromRandom,this.initFromTree,this.random),i=this.search(r,this.searchGraph,s,t),o=l.deheapSort(i),h=o.indices,a=o.weights;h=h.map((function(t){return t.slice(0,e.nNeighbors)})),a=a.map((function(t){return t.slice(0,e.nNeighbors)}));var f=Math.max(0,this.localConnectivity-1),m=this.smoothKNNDistance(a,this.nNeighbors,f),p=m.sigmas,d=m.rhos,w=this.computeMembershipStrengths(h,a,p,d),y=w.rows,v=w.cols,b=w.vals,M=[t.length,r.length],x=new u.SparseMatrix(y,v,b,M),S=u.normalize(x,"l1"),_=u.getCSR(S),N=t.length,R=E(g.reshape2d(_.indices,N,this.nNeighbors),g.reshape2d(_.values,N,this.nNeighbors),this.embedding),k=this.nEpochs?this.nEpochs/3:x.nRows<=1e4?100:30,I=x.getValues().reduce((function(t,e){return e>t?e:t}),0);x=x.map((function(t){return t<I/k?0:t})),x=u.eliminateZeros(x);var A=this.makeEpochsPerSample(x.getValues(),k),z=x.getRows(),C=x.getCols();return this.assignOptimizationStateParameters({headEmbedding:R,tailEmbedding:this.embedding,head:z,tail:C,currentEpoch:0,nEpochs:k,nVertices:x.getDims()[1],epochsPerSample:A}),this.prepareForOptimizationLoop(),this.optimizeLayout()},t.prototype.processGraphForSupervisedProjection=function(){var t=this.Y,e=this.X;if(t){if(t.length!==e.length)throw new Error("Length of X and y must be equal");if("categorical"===this.targetMetric){var r=this.targetWeight<1?1/(1-this.targetWeight)*2.5:1e12;this.graph=this.categoricalSimplicialSetIntersection(this.graph,t,r)}}},t.prototype.step=function(){var t=this.optimizationState.currentEpoch;return t<this.getNEpochs()&&this.optimizeLayoutStep(t),this.optimizationState.currentEpoch},t.prototype.getEmbedding=function(){return this.embedding},t.prototype.nearestNeighbors=function(t){var e,r=this.distanceFn,n=this.nNeighbors,s=c.makeNNDescent(r,this.random),i=5+Math.floor(.5==(e=Math.pow(t.length,.5)/20)?0:Math.round(e)),o=Math.max(5,Math.floor(Math.round(function(t){return Math.log(t)/Math.log(2)}(t.length))));this.rpForest=f.makeForest(t,n,i,this.random);var h=s(t,f.makeLeafArray(this.rpForest),n,o);return{knnIndices:h.indices,knnDistances:h.weights}},t.prototype.fuzzySimplicialSet=function(t,e,r){void 0===r&&(r=1);var n=this,s=n.knnIndices,i=void 0===s?[]:s,o=n.knnDistances,h=void 0===o?[]:o,a=n.localConnectivity,l=this.smoothKNNDistance(h,e,a),c=l.sigmas,f=l.rhos,g=this.computeMembershipStrengths(i,h,c,f),m=g.rows,p=g.cols,d=g.vals,w=[t.length,t.length],y=new u.SparseMatrix(m,p,d,w),v=u.transpose(y),b=u.pairwiseMultiply(y,v),M=u.subtract(u.add(y,v),b),x=u.multiplyScalar(M,r),S=u.multiplyScalar(b,1-r);return u.add(x,S)},t.prototype.categoricalSimplicialSetIntersection=function(t,e,r,n){void 0===n&&(n=1);var s=S(t,e,n,r);return _(s=u.eliminateZeros(s))},t.prototype.smoothKNNDistance=function(t,e,r,n,s){void 0===r&&(r=1),void 0===n&&(n=64),void 0===s&&(s=1);for(var i=Math.log(e)/Math.log(2)*s,o=g.zeros(t.length),h=g.zeros(t.length),a=0;a<t.length;a++){var l=0,u=1/0,c=1,f=t[a],m=f.filter((function(t){return t>0}));if(m.length>=r){var w=Math.floor(r),y=r-w;w>0?(o[a]=m[w-1],y>p&&(o[a]+=y*(m[w]-m[w-1]))):o[a]=y*m[0]}else m.length>0&&(o[a]=g.max(m));for(var v=0;v<n;v++){for(var b=0,M=1;M<t[a].length;M++){var x=t[a][M]-o[a];b+=x>0?Math.exp(-x/c):1}if(Math.abs(b-i)<p)break;b>i?c=(l+(u=c))/2:(l=c,u===1/0?c*=2:c=(l+u)/2)}if(h[a]=c,o[a]>0){var S=g.mean(f);h[a]<d*S&&(h[a]=d*S)}else{var _=g.mean(t.map(g.mean));h[a]<d*_&&(h[a]=d*_)}}return{sigmas:h,rhos:o}},t.prototype.computeMembershipStrengths=function(t,e,r,n){for(var s=t.length,i=t[0].length,o=g.zeros(s*i),h=g.zeros(s*i),a=g.zeros(s*i),l=0;l<s;l++)for(var u=0;u<i;u++){var c=0;-1!==t[l][u]&&(c=t[l][u]===l?0:e[l][u]-n[l]<=0?1:Math.exp(-(e[l][u]-n[l])/r[l]),o[l*i+u]=l,h[l*i+u]=t[l][u],a[l*i+u]=c)}return{rows:o,cols:h,vals:a}},t.prototype.initializeSimplicialSetEmbedding=function(){for(var t=this,e=this.getNEpochs(),r=this.nComponents,n=this.graph.getValues(),s=0,i=0;i<n.length;i++){var o=n[i];s<n[i]&&(s=o)}var h=this.graph.map((function(t){return t<s/e?0:t}));this.embedding=g.zeros(h.nRows).map((function(){return g.zeros(r).map((function(){return 20*g.tauRand(t.random)-10}))}));var a=[],l=[],u=[],c=h.getAll();for(i=0;i<c.length;i++){var f=c[i];f.value&&(a.push(f.value),u.push(f.row),l.push(f.col))}return{head:l,tail:u,epochsPerSample:this.makeEpochsPerSample(a,e)}},t.prototype.makeEpochsPerSample=function(t,e){var r=g.filled(t.length,-1),n=g.max(t),s=t.map((function(t){return t/n*e}));return s.forEach((function(t,n){t>0&&(r[n]=e/s[n])})),r},t.prototype.assignOptimizationStateParameters=function(t){Object.assign(this.optimizationState,t)},t.prototype.prepareForOptimizationLoop=function(){var t=this,e=t.repulsionStrength,r=t.learningRate,n=t.negativeSampleRate,s=this.optimizationState,i=s.epochsPerSample,h=s.headEmbedding,a=s.tailEmbedding,l=h[0].length,u=h.length===a.length,c=i.map((function(t){return t/n})),f=o(c),g=o(i);this.assignOptimizationStateParameters({epochOfNextSample:g,epochOfNextNegativeSample:f,epochsPerNegativeSample:c,moveOther:u,initialAlpha:r,alpha:r,gamma:e,dim:l})},t.prototype.initializeOptimization=function(){var t=this.embedding,e=this.embedding,r=this.optimizationState,n=r.head,s=r.tail,i=r.epochsPerSample,o=this.getNEpochs(),h=this.graph.nCols,a=x(this.spread,this.minDist),l=a.a,u=a.b;this.assignOptimizationStateParameters({headEmbedding:t,tailEmbedding:e,head:n,tail:s,epochsPerSample:i,a:l,b:u,nEpochs:o,nVertices:h})},t.prototype.optimizeLayoutStep=function(t){for(var e=this.optimizationState,r=e.head,n=e.tail,s=e.headEmbedding,i=e.tailEmbedding,o=e.epochsPerSample,h=e.epochOfNextSample,a=e.epochOfNextNegativeSample,l=e.epochsPerNegativeSample,u=e.moveOther,c=e.initialAlpha,f=e.alpha,m=e.gamma,p=e.a,d=e.b,w=e.dim,y=e.nEpochs,v=e.nVertices,x=0;x<o.length;x++)if(!(h[x]>t)){var S=r[x],_=n[x],E=s[S],N=i[_],R=M(E,N),k=0;R>0&&(k=-2*p*d*Math.pow(R,d-1),k/=p*Math.pow(R,d)+1);for(var I=0;I<w;I++){var A=b(k*(E[I]-N[I]),4);E[I]+=A*f,u&&(N[I]+=-A*f)}h[x]+=o[x];for(var z=Math.floor((t-a[x])/l[x]),C=0;C<z;C++){var T=g.tauRandInt(v,this.random),F=i[T],O=M(E,F),V=0;if(O>0)V=2*m*d,V/=(.001+O)*(p*Math.pow(O,d)+1);else if(S===T)continue;for(I=0;I<w;I++)A=4,V>0&&(A=b(V*(E[I]-F[I]),4)),E[I]+=A*f}a[x]+=z*l[x]}return e.alpha=c*(1-t/y),e.currentEpoch+=1,s},t.prototype.optimizeLayoutAsync=function(t){var e=this;return void 0===t&&(t=function(){return!0}),new Promise((function(r,i){var o=function(){return n(e,void 0,void 0,(function(){var e,n,h,a,l,u;return s(this,(function(s){try{if(e=this.optimizationState,n=e.nEpochs,h=e.currentEpoch,this.embedding=this.optimizeLayoutStep(h),a=this.optimizationState.currentEpoch,l=!1===t(a),u=a===n,l||u)return[2,r(u)];setTimeout((function(){return o()}),0)}catch(t){i(t)}return[2]}))}))};setTimeout((function(){return o()}),0)}))},t.prototype.optimizeLayout=function(t){void 0===t&&(t=function(){return!0});for(var e=!1,r=[];!e;){var n=this.optimizationState,s=n.nEpochs,i=n.currentEpoch;r=this.optimizeLayoutStep(i);var o=this.optimizationState.currentEpoch,h=!1===t(o);e=o===s||h}return r},t.prototype.getNEpochs=function(){var t=this.graph;if(this.nEpochs>0)return this.nEpochs;var e=t.nRows;return e<=2500?500:e<=5e3?400:e<=7500?300:200},t}();function y(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return Math.sqrt(r)}e.UMAP=w,e.euclidean=y,e.cosine=function(t,e){for(var r=0,n=0,s=0,i=0;i<t.length;i++)r+=t[i]*e[i],n+=Math.pow(t[i],2),s+=Math.pow(e[i],2);return 0===n&&0===s?0:0===n||0===s?1:1-r/Math.sqrt(n*s)};var v=function(){this.currentEpoch=0,this.headEmbedding=[],this.tailEmbedding=[],this.head=[],this.tail=[],this.epochsPerSample=[],this.epochOfNextSample=[],this.epochOfNextNegativeSample=[],this.epochsPerNegativeSample=[],this.moveOther=!0,this.initialAlpha=1,this.alpha=1,this.gamma=1,this.a=1.5769434603113077,this.b=.8950608779109733,this.dim=2,this.nEpochs=500,this.nVertices=0};function b(t,e){return t>e?e:t<-e?-e:t}function M(t,e){for(var r=0,n=0;n<t.length;n++)r+=Math.pow(t[n]-e[n],2);return r}function x(t,e){var r=g.linear(0,3*t,300).map((function(t){return t<e?1:t})),n=g.zeros(r.length).map((function(n,s){return r[s]>=e?Math.exp(-(r[s]-e)/t):n})),s={x:r,y:n},o=m.default(s,(function(t){var e=i(t,2),r=e[0],n=e[1];return function(t){return 1/(1+r*Math.pow(t,2*n))}}),{damping:1.5,initialValues:[.5,.5],gradientDifference:.1,maxIterations:100,errorTolerance:.01}).parameterValues,h=i(o,2);return{a:h[0],b:h[1]}}function S(t,e,r,n){return void 0===r&&(r=1),void 0===n&&(n=5),t.map((function(t,s,i){return-1===e[s]||-1===e[i]?t*Math.exp(-r):e[s]!==e[i]?t*Math.exp(-n):t}))}function _(t){t=u.normalize(t,"max");var e=u.transpose(t),r=u.pairwiseMultiply(e,t);return t=u.add(t,u.subtract(e,r)),u.eliminateZeros(t)}function E(t,e,r){for(var n=g.zeros(t.length).map((function(t){return g.zeros(r[0].length)})),s=0;s<t.length;s++)for(var i=0;i<t[0].length;i++)for(var o=0;o<r[0].length;o++){var h=t[s][i];n[s][o]+=e[s][i]*r[h][o]}return n}e.findABParams=x,e.fastIntersection=S,e.resetLocalConnectivity=_,e.initTransform=E},4517:function(t,e){var r=this&&this.__values||function(t){var e="function"==typeof Symbol&&t[Symbol.iterator],r=0;return e?e.call(t):{next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}}};function n(t,e){return Math.floor(e()*t)}function s(t){for(var e=[],r=0;r<t;r++)e.push(void 0);return e}function i(t,e){return s(t).map((function(){return e}))}function o(t){return i(t,0)}function h(t){return t.reduce((function(t,e){return t+e}))}Object.defineProperty(e,"__esModule",{value:!0}),e.tauRandInt=n,e.tauRand=function(t){return t()},e.norm=function(t){var e,n,s=0;try{for(var i=r(t),o=i.next();!o.done;o=i.next()){var h=o.value;s+=Math.pow(h,2)}}catch(t){e={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(e)throw e.error}}return Math.sqrt(s)},e.empty=s,e.range=function(t){return s(t).map((function(t,e){return e}))},e.filled=i,e.zeros=o,e.ones=function(t){return i(t,1)},e.linear=function(t,e,r){return s(r).map((function(n,s){return t+s*((e-t)/(r-1))}))},e.sum=h,e.mean=function(t){return h(t)/t.length},e.max=function(t){for(var e=0,r=0;r<t.length;r++)e=t[r]>e?t[r]:e;return e},e.max2d=function(t){for(var e=0,r=0;r<t.length;r++)for(var n=0;n<t[r].length;n++)e=t[r][n]>e?t[r][n]:e;return e},e.rejectionSample=function(t,e,r){for(var s=o(t),i=0;i<t;i++)for(var h=!0;h;){for(var a=n(e,r),l=!1,u=0;u<i;u++)if(a===s[u]){l=!0;break}l||(h=!1),s[i]=a}return s},e.reshape2d=function(t,e,r){var n=[],s=0;if(t.length!==e*r)throw new Error("Array dimensions must match input length.");for(var i=0;i<e;i++){for(var o=[],h=0;h<r;h++)o.push(t[s]),s+=1;n.push(o)}return n}}},n={};function s(t){var e=n[t];if(void 0!==e)return e.exports;var i=n[t]={exports:{}};return r[t].call(i.exports,i,i.exports,s),i.exports}s.m=r,s.x=()=>{var t=s.O(void 0,[478],(()=>s(8563)));return s.O(t)},t=[],s.O=(e,r,n,i)=>{if(!r){var o=1/0;for(u=0;u<t.length;u++){for(var[r,n,i]=t[u],h=!0,a=0;a<r.length;a++)(!1&i||o>=i)&&Object.keys(s.O).every((t=>s.O[t](r[a])))?r.splice(a--,1):(h=!1,i<o&&(o=i));if(h){t.splice(u--,1);var l=n();void 0!==l&&(e=l)}}return e}i=i||0;for(var u=t.length;u>0&&t[u-1][2]>i;u--)t[u]=t[u-1];t[u]=[r,n,i]},s.d=(t,e)=>{for(var r in e)s.o(e,r)&&!s.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},s.f={},s.e=t=>Promise.all(Object.keys(s.f).reduce(((e,r)=>(s.f[r](t,e),e)),[])),s.u=t=>t+".js",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{var t;s.g.importScripts&&(t=s.g.location+"");var e=s.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!t;)t=r[n--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=t})(),(()=>{var t={563:1};s.f.i=(e,r)=>{t[e]||importScripts(s.p+s.u(e))};var e=self.webpackChunkpeptides=self.webpackChunkpeptides||[],r=e.push.bind(e);e.push=e=>{var[n,i,o]=e;for(var h in i)s.o(i,h)&&(s.m[h]=i[h]);for(o&&o(s);n.length;)t[n.pop()]=1;r(e)}})(),e=s.x,s.x=()=>s.e(478).then(e);var i=s.x();peptides=i})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakQ3RSxFQUFTd0ksWUFBY0csVUFBVTlELEtBQUssRUFDakMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakQ3RSxFQUFTMEksV0FBYUMsVUFBVTlELEtBQUssRUFDaEMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUMva0JqRCxNQUFNK0QsRUFDRmpOLFlBQVlDLEdB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R0FBSyxJQUFNb3FDLEdBQVdBLEVBQVlLLEVBQVF6cUMsS0FBS2lJLEdBRXhELENBSUQsSUFBS21pQyxFQUFXLE1BQU0sSUFBSWxyQyxNQUFNLHlEQUNoQ2tyQyxFQUFZQSxFQUFVTyxRQUFRLE9BQVEsSUFBSUEsUUFBUSxRQUFTLElBQUlBLFFBQVEsWUFBYSxLQUNwRjFCLEVBQW9CdnBDLEVBQUkwcUMsQyxXQ2R4QixJQUFJUSxFQUFrQixDQUNyQixJQUFLLEdBZ0JOM0IsRUFBb0I1WSxFQUFFcndCLEVBQUksQ0FBQzRwQyxFQUFTRSxLQUUvQmMsRUFBZ0JoQixJQUVsQlMsY0FBY3BCLEVBQW9CdnBDLEVBQUl1cEMsRUFBb0J6NkIsRUFBRW83QixHQUU5RCxFQUdELElBQUlpQixFQUFxQmppQyxLQUEyQixxQkFBSUEsS0FBMkIsc0JBQUssR0FDcEZraUMsRUFBNkJELEVBQW1Cei9CLEtBQUtpRCxLQUFLdzhCLEdBQzlEQSxFQUFtQnovQixLQXZCQ3hLLElBQ25CLElBQUs0b0MsRUFBVXVCLEVBQWFDLEdBQVdwcUMsRUFDdkMsSUFBSSxJQUFJc29DLEtBQVk2QixFQUNoQjlCLEVBQW9CN1IsRUFBRTJULEVBQWE3QixLQUNyQ0QsRUFBb0Joc0IsRUFBRWlzQixHQUFZNkIsRUFBWTdCLElBSWhELElBREc4QixHQUFTQSxFQUFRL0IsR0FDZE8sRUFBUzFwQyxRQUNkOHFDLEVBQWdCcEIsRUFBUzNJLE9BQVMsRUFDbkNpSyxFQUEyQmxxQyxFQUFLLEMsSy9DbkI3Qm5DLEVBQU93cUMsRUFBb0I3MkIsRUFDL0I2MkIsRUFBb0I3MkIsRUFBSSxJQUNoQjYyQixFQUFvQjM0QixFQUFFLEtBQUsrdkIsS0FBSzVoQyxHZ0REeEMsSUFBSTZxQyxFQUFzQkwsRUFBb0I3MkIsSSIsInNvdXJjZXMiOlsid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3JhbmRvbS5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9zcGUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvcmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi90c25lLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvZXJyb3JDYWxjdWxhdGlvbi5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1heC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1yZXNjYWxlL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWF4L2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9pbnNwZWN0LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvdXRpbC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL21hdHJpeC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3N0YXQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9tYXRoT3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3dyYXAvV3JhcHBlck1hdHJpeDJELmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvbHUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy91dGlsLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvcXIuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9zdmQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvc3RlcC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RlY29tcG9zaXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWxldmVuYmVyZy1tYXJxdWFyZHQvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9oZWFwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy91bWFwLWpzL2Rpc3QvbWF0cml4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9ubl9kZXNjZW50LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC90cmVlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC91bWFwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC91dGlscy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2Vuc3VyZSBjaHVuayIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmUoNDc4KS50aGVuKG5leHQpO1xufTsiLCIvKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGZsb2F0IGZyb20gMCB0byByYW5nZS5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gcmFuZ2UgTWF4IGdlbmVyYXRpbmcgdmFsdWUuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEEgcmFuZG9tIGZsb2F0IGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUZsb2F0KHJhbmdlKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiByYW5nZTtcbn1cbi8qKlxuICogR2VuZXJhdGVzIHNpbmdsZSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBpbnRlZ2VyIGdlbmVyYXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJhbmRvbUludChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbUZsb2F0KHJhbmdlKSk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbUZ1Wkc5dExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21GdVpHOXRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQk96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4WFFVRlhMRU5CUVVNc1MwRkJZVHRKUVVOMlF5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1IwRkJSeXhMUVVGTExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTMEZCWVR0SlFVTnlReXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03UVVGRGVFTXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1IyVnVaWEpoZEdWeklITnBibWRzWlNCeVlXNWtiMjBnWm14dllYUWdabkp2YlNBd0lIUnZJSEpoYm1kbExseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdiblZ0WW1WeWZTQnlZVzVuWlNCTllYZ2daMlZ1WlhKaGRHbHVaeUIyWVd4MVpTNWNiaUFxSUVCeVpYUjFjbTRnZTI1MWJXSmxjbjBnUVNCeVlXNWtiMjBnWm14dllYUWdaMlZ1WlhKaGRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJSEpsZEhWeWJpQk5ZWFJvTG5KaGJtUnZiU2dwSUNvZ2NtRnVaMlU3WEc1OVhHNWNiaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ2FXNTBaV2RsY2lCbWNtOXRJREFnZEc4Z2NtRnVaMlV1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUhKaGJtZGxJRTFoZUNCblpXNWxjbUYwYVc1bklIWmhiSFZsTGx4dUlDb2dRSEpsZEhWeWJpQjdiblZ0WW1WeWZTQkJJSEpoYm1SdmJTQnBiblJsWjJWeUlHZGxibVZ5WVhSbFpDNWNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhKaGJtUnZiVWx1ZENoeVlXNW5aVG9nYm5WdFltVnlLVG9nYm5WdFltVnlJSHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VabXh2YjNJb2NtRnVaRzl0Um14dllYUW9jbUZ1WjJVcEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBWZWN0b3IgfSBmcm9tICcuL3R5cGUtZGVjbGFyYXRpb25zJztcbmltcG9ydCB7IHJhbmRvbUZsb2F0LCByYW5kb21JbnQgfSBmcm9tICcuL3JhbmRvbSc7XG4vKipcbiAqIEFzc2VydHMgYSBjb25kaXRpb24gYnkgdGhyb3dpbmcgYW4gRXJyb3IuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtib29sZWFufSBbY29uZGl0aW9uPWZhbHNlXSBDb25kaXRpb24gdG8gYXNzZXJ0LlxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlPSdBc3NlcnRpb24gZXJyb3IuJ10gTWVzc2FnZSB0byBvdXRwdXQuXG4gKiBAdGhyb3dzIHtFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydChjb25kaXRpb24gPSBmYWxzZSwgbWVzc2FnZSA9ICdBc3NlcnRpb24gZXJyb3IuJykge1xuICAgIGlmICghY29uZGl0aW9uKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG59XG4vKipcbiAqIENyZWF0ZXMgbmV3IHR3by1kaW1lbnNpb25hbCBhcnJheSBhbmQgZmlsbHMgaXQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGRpbWVuc2lvbjEgVGhlIGZpcnN0IGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiByb3dzKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBjb29yZGluYXRlcyAobnVtYmVyIG9mIGNvbHVtbnMpLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmaWxsPTBdIEEgdmFsdWUgdG8gZmlsbCB0aGUgY29vcmRpbmF0ZXMgd2l0aC5cbiAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBBIHR3by1kaW1lbnNpb25hbCBmaWxsZWQgd2l0aCB0aGUgdmFsdWUgZ2l2ZW4uXG4gKiBAdG9kbyBNaWdodCBiZSBzbG93IHNpbmNlIHVzZWQgQXJyYXkubWFwLiBQcm9iYWJseSBuZWVkcyBwZXJmb3JtYW5jZSByZXZpc2lvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIsIGZpbGwgPSAwKSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShkaW1lbnNpb24xKS5maWxsKGZpbGwpLm1hcCgoKSA9PiAobmV3IFZlY3RvcihkaW1lbnNpb24yKS5maWxsKGZpbGwpKSk7XG59XG4vKipcbiAqIFRyYW5zcG9zZSBtYXRyaXguXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeCBUaGUgbWF0cml4IHRvIGJlIHRyYW5zcG9zZWQuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IFRyYW5zcG9zZWQgbWF0cml4LlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2VNYXRyaXgobWF0cml4KSB7XG4gICAgcmV0dXJuIG5ldyBBcnJheShtYXRyaXhbMF0ubGVuZ3RoKS5maWxsKDApXG4gICAgICAgIC5tYXAoKF8sIGkpID0+IChuZXcgVmVjdG9yKG1hdHJpeC5sZW5ndGgpLmZpbGwoMCkubWFwKChfLCBqKSA9PiAobWF0cml4W2pdW2ldKSkpKTtcbn1cbi8qKlxuICogQWRkcyB0d28gdmVjdG9ycyB3aXRoIHRoZSBzZWNvbmQgb25lIHRvIGJlIG11bHRpcGxpZWQgYnkgdGhlIGdpdmVuIHJhdGlvLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IgdG8gYWRkLlxuICogQHBhcmFtIHtudW1iZXJ9IFttdWx0aXBsaWVyPTFdIEEgbXVsdGlwbGllciB0byBiZSB1c2VkIGJlZm9yZSB0aGUgc2Vjb25kIHZlY3RvciBpcyBhZGRlZC5cbiAqIEByZXR1cm4ge1ZlY3Rvcn0gTmV3IHZlY3RvciBjb250YWluZWQgdGhlIHJlc3VsdCBvZiBvcGVyYXRpb24gcCttdWx0aXBsaWVyKnEuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JBZGQocCwgcSwgbXVsdGlwbGllciA9IDEpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBwLmxlbmd0aDtcbiAgICBhc3NlcnQobkl0ZW1zID09IHEubGVuZ3RoLCAnVmVjdG9yIGxlbmd0aHMgZG8gbm90IG1hdGNoLicpO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcC5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSBwW2ldICsgbXVsdGlwbGllciAqIHFbaV07XG4gICAgcmV0dXJuIHRvdGFsO1xufVxuLyoqXG4gKiBTdW1zIHRoZSB2ZWN0b3IncyBpdGVtcy5cbiAqXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gdiBUaGUgdmVjdG9yIHRvIGJlIHN1bW1lZC5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlY3RvcidzIGl0ZW1zIHN1bS5cbiAqL1xuZnVuY3Rpb24gaXRlbXNTdW0odikge1xuICAgIGxldCB0b3RhbCA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbCArPSB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VxYXJlcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBzcXVhcmUuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IEEgbmV3IHZlY3RvciBjb250YWluaW5nIHRoZSBvcmlnaW5hbCdzIGl0ZW1zIHNxdWFyZWQuXG4gKi9cbmZ1bmN0aW9uIHZlY3RvclNxdWFyZSh2KSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gdi5sZW5ndGg7XG4gICAgY29uc3QgdG90YWwgPSBuZXcgVmVjdG9yKG5JdGVtcyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2Lmxlbmd0aDsgKytpKVxuICAgICAgICB0b3RhbFtpXSA9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JMZW5ndGgodikge1xuICAgIGxldCBzcXJTdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7IGkrKylcbiAgICAgICAgc3FyU3VtICs9IHZbaV0gKiB2W2ldO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FyU3VtKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB2ZWN0b3JEb3RQcm9kdWN0KHYxLCB2Mikge1xuICAgIGlmICh2MS5sZW5ndGggIT0gdjIubGVuZ3RoKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkaW1lbnNpb25hbGl0eSBvZiB0aGUgdmVjdG9ycyBtdXN0IG1hdGNoJyk7XG4gICAgbGV0IHByb2QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdjEubGVuZ3RoOyBpKyspXG4gICAgICAgIHByb2QgKz0gdjFbaV0gKiB2MltpXTtcbiAgICByZXR1cm4gcHJvZDtcbn1cbi8qKlxuICogQ3JlYXRlcyBhIG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgdmFsdWVzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIG1hdHJpeC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24yIFRoZSBzZWNvbmQgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gW3NjYWxlPTEuXSBNYXggdmFsdWUgZ2l2ZW4gYnkgcmFuZG9tIGdlbmVyYXRvci5cbiAqIEByZXR1cm4ge01hdHJpeH0gQSBuZXcgbWF0cml4IGZpbGxlZCB3aXRoIHJhbmRvbSBmbG9hdGluZyBwb2ludCAgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsbFJhbmRvbU1hdHJpeChkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBzY2FsZSA9IDEuKSB7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKGRpbWVuc2lvbjEsIGRpbWVuc2lvbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGltZW5zaW9uMTsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGltZW5zaW9uMjsgKytqKVxuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gcmFuZG9tRmxvYXQoc2NhbGUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDYWxjdWxhdGVzIEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yfSBwIFRoZSBmaXJzdCB2ZWN0b3IuXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcSBUaGUgc2Vjb25kIHZlY3Rvci5cbiAqIEByZXR1cm4ge251bWJlcn0gRXVjbGlkZWFuIGRpc3RhbmNlIGJldHdlZW4gdGhlIGdpdmVuIHZlY3RvcnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShwLCBxKSB7XG4gICAgY29uc3QgZGlmZiA9IHZlY3RvckFkZChwLCBxLCAtMSk7XG4gICAgY29uc3Qgc3FkaWZmID0gdmVjdG9yU3F1YXJlKGRpZmYpO1xuICAgIGNvbnN0IHNxZGlmZlN1bW0gPSBpdGVtc1N1bShzcWRpZmYpO1xuICAgIHJldHVybiBNYXRoLnNxcnQoc3FkaWZmU3VtbSk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBkaXN0YW5jZSBtYXRyaXggdXNpbmcgYSBjdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtWZWN0b3JzfSBkYXRhIElucHV0IHZlY3RvcnMgdG8gY2FsY3VsYXRlIGRpc3RhbmNlcy5cbiAqIEBwYXJhbSB7RGlzdGFuY2VNZXRyaWN9IGRpc3RhbmNlIEN1c3RvbSBkaXN0YW5jZSBmdW5jdGlvbi5cbiAqIEByZXR1cm4ge01hdHJpeH0gQ2FsY3VsYXRlZCBjdXN0b20gZGlzdGFuY2UgbWF0cml4LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY0Rpc3RhbmNlTWF0cml4KGRhdGEsIGRpc3RhbmNlKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gZGF0YS5sZW5ndGg7XG4gICAgY29uc3QgbWF0cml4ID0gaW5pdENvb3JkaW5hdGVzKG5JdGVtcywgbkl0ZW1zLCAwKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IG5JdGVtczsgKytqKSB7XG4gICAgICAgICAgICBjb25zdCBkID0gKGRhdGFbaV0gPT0gbnVsbCkgfHwgKGRhdGFbal0gPT0gbnVsbCkgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGEsIGIpID0+IChiWzBdIC0gYVswXSkgOiAoYSwgYikgPT4gKGFbMF0gLSBiWzBdKTtcbiAgICBjb25zdCBkZWNvciA9ICh2LCBpKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICAgIGNvbnN0IHVuZGVjb3IgPSAoYSkgPT4gYVsxXTsgLy8gbGVhdmUgb25seSBpbmRleFxuICAgIGNvbnN0IF9hcmdzb3J0ID0gKGFycikgPT4gYXJyLm1hcChkZWNvcikuc29ydChzb3J0Zm4pLm1hcCh1bmRlY29yKTtcbiAgICByZXR1cm4gX2FyZ3NvcnQodmFsdWVzKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHMgYWNjb3JkaW5nIHRvIHRoZSBkaXN0IGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIHRvdGFsIG51bWJlciBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgZGl2ZXJzZSBlbGVtZW50cyB0byBmaW5kXG4gKiBAcGFyYW0geyhpMTogbnVtYmVyLCBpMjogbnVtYmVyKSA9PiBudW1iZXJ9IGRpc3QgYSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gb2JqZWN0cyB1c2luZyB0aGVpciBpbmRleGVzXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIG5vcm1hbGl6ZWQgdmVjdG9yXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gZGF0YSBudW1lcmljYWwgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgbGV0IG1lYW4gPSAwO1xuICAgIGxldCBzdGQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgbWVhbiArPSBkYXRhW2ldO1xuICAgIG1lYW4gLz0gZGF0YS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBzdGQgKz0gKGRhdGFbaV0gLSBtZWFuKSAqIChkYXRhW2ldIC0gbWVhbik7XG4gICAgc3RkID0gTWF0aC5zcXJ0KHN0ZCAvIGRhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pIC8gc3RkO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhLCBiKSB7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhLmZpbHRlcigoeCkgPT4gIWJTZXQuaGFzKHgpKSkudmFsdWVzKCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WamRHOXlMVzl3WlhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjJaV04wYjNJdGIzQmxjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVZNc1RVRkJUU3hGUVVGMVF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM3BHTEU5QlFVOHNSVUZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJXaEVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRmxCUVhGQ0xFdEJRVXNzUlVGQlJTeFZRVUZyUWl4clFrRkJhMEk3U1VGRGNrWXNTVUZCU1N4RFFVRkRMRk5CUVZNN1VVRkRXaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxGTkJRVk1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1ZVRkJhMElzUlVGQlJTeFBRVUZsTEVOQlFVTTdTVUZETDBVc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42Uml4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUVVNc1RVRkJZenRKUVVNMVF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1pETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkdMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4aFFVRnhRaXhEUVVGRE8wbEJRM0JGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmVFSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTERoQ1FVRTRRaXhEUVVGRExFTkJRVU03U1VGRk0wUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRk5CUVZNc1VVRkJVU3hEUVVGRExFTkJRVk03U1VGRGVrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSV1FzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZhRUlzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hUUVVGVExGbEJRVmtzUTBGQlF5eERRVUZUTzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZUVJc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhwQ0xFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUTBGQlV6dEpRVU53UXl4SlFVRkpMRTFCUVUwc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM1pETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRlZPMGxCUTNKRUxFbEJRVWtzUlVGQlJTeERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUVHRSUVVONFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRGhEUVVFNFF5eERRVUZETEVOQlFVTTdTVUZEYkVVc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzBsQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4VlFVRnJRaXhGUVVGRkxGVkJRV3RDTEVWQlFVVXNVVUZCWjBJc1JVRkJSVHRKUVVONlJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlJYWkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTnlRenRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMREJDUVVFd1FpeERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUXpkRUxFMUJRVTBzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYWtNc1RVRkJUU3hOUVVGTkxFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFMUJRVTBzVlVGQlZTeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOd1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zU1VGQllTeEZRVUZGTEZGQlFYZENPMGxCUTNoRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU12UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU51UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRekZHTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEycERPMHRCUTBZN1NVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRc2EwWkJRV3RHTzBGQlEyeEdMRTFCUVUwc1ZVRkJWU3hSUVVGUkxFTkJRVU1zUzBGQllTeEZRVUZGTEVkQlFWY3NSVUZCUlN4WlFVRlpMRWRCUVVjc1MwRkJTenRKUVVOMlJTeE5RVUZOTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzQkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlhSRExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF6ZENMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlhoQ0xFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMRTlCUVU4c1EwRkJReXhOUVVGaExFVkJRVVVzVDBGQlR5eEhRVUZITEV0QlFVczdTVUZEY0VRc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVZFc1JVRkJSU3hEUVVGUkxFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVkVzUlVGQlJTeERRVUZSTEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRM1pITEUxQlFVMHNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJUU3hGUVVGRkxFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHhRa0ZCY1VJN1NVRkRiRVVzVFVGQlRTeFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRlJMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFDUVVGdFFqdEpRVU4yUkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhEUVVGRExFZEJRVlVzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzBsQlF6RkZMRTlCUVU4c1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBGQlF6RkNMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEUxQlFXTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1NVRkJkME03U1VGRGJFY3NVMEZCVXl4TFFVRkxMRU5CUVVNc1RVRkJaME1zUlVGQlJTeFBRVUU0UWp0UlFVTTNSU3hKUVVGSkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZEY0VJc1NVRkJTU3hWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETzFGQlJYUkNMRXRCUVVzc1RVRkJUU3hQUVVGUExFbEJRVWtzVFVGQlRTeEZRVUZGTzFsQlF6VkNMRTFCUVUwc1kwRkJZeXhIUVVGSExFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0WlFVTjRReXhKUVVGSkxGVkJRVlVzU1VGQlNTeEpRVUZKTEVsQlFVa3NZMEZCWXl4SFFVRkhMRlZCUVZVc1JVRkJSVHRuUWtGRGNrUXNVVUZCVVN4SFFVRkhMRTlCUVU4c1EwRkJRenRuUWtGRGJrSXNWVUZCVlN4SFFVRkhMR05CUVdNc1EwRkJRenRoUVVNM1FqdFRRVU5HTzFGQlEwUXNUMEZCVHl4UlFVRlJMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFMUJRVTBzVlVGQlZTeEhRVUZITEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkZOMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRja0lzVlVGQlZTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRMUVVOeVFqdEpRVVZFTEU5QlFVOHNUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFVkJRVVU3VVVGRGVFSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1MwRkJTeXhEUVVObUxGVkJRVlVzUTBGQlF5eE5RVUZOTEVWQlFUaENMRVZCUXk5RExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhWUVVGVExFZEJRVWNzUlVGQlJTeExRVUZMTzFsQlEzaEVMRTlCUVU4c1NVRkJTU3hEUVVGRExFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjBRaXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEVUN4SlFVRkpMRWRCUVVjc1JVRkJSVHRaUVVOUUxFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha0lzVlVGQlZTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVONFFqdExRVU5HTzBsQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFT3pzN1IwRkhSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFRRVUZUTEVOQlFVTXNTVUZCV1R0SlFVTndReXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEWWl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRldpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRiRU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVWc1FpeEpRVUZKTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVWd1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNN1VVRkRiRU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlJUZERMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRmJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMnhETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU03U1VGRmJrTXNUMEZCVHl4SlFVRkpMRU5CUVVNN1FVRkRaQ3hEUVVGRE8wRkJSVVE3T3pzN08wZEJTMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNZVUZCWVN4RFFVRkRMRU5CUVZFc1JVRkJSU3hEUVVGUk8wbEJRemxETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEzaENMRTlCUVU4c1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVU03UVVGRGNrVXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1RXRjBjbWw0TENCV1pXTjBiM0lzSUVOdmIzSmthVzVoZEdWekxDQldaV04wYjNKekxDQkVhWE4wWVc1alpVMWxkSEpwWTMwZ1puSnZiU0FuTGk5MGVYQmxMV1JsWTJ4aGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ2UzSmhibVJ2YlVac2IyRjBMQ0J5WVc1a2IyMUpiblI5SUdaeWIyMGdKeTR2Y21GdVpHOXRKenRjYmx4dUx5b3FYRzRnS2lCQmMzTmxjblJ6SUdFZ1kyOXVaR2wwYVc5dUlHSjVJSFJvY205M2FXNW5JR0Z1SUVWeWNtOXlMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3WW05dmJHVmhibjBnVzJOdmJtUnBkR2x2YmoxbVlXeHpaVjBnUTI5dVpHbDBhVzl1SUhSdklHRnpjMlZ5ZEM1Y2JpQXFJRUJ3WVhKaGJTQjdjM1J5YVc1bmZTQmJiV1Z6YzJGblpUMG5RWE56WlhKMGFXOXVJR1Z5Y205eUxpZGRJRTFsYzNOaFoyVWdkRzhnYjNWMGNIVjBMbHh1SUNvZ1FIUm9jbTkzY3lCN1JYSnliM0o5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQmhjM05sY25Rb1kyOXVaR2wwYVc5dU9pQmliMjlzWldGdUlEMGdabUZzYzJVc0lHMWxjM05oWjJVNklITjBjbWx1WnlBOUlDZEJjM05sY25ScGIyNGdaWEp5YjNJdUp5a2dlMXh1SUNCcFppQW9JV052Ym1ScGRHbHZiaWxjYmlBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb2JXVnpjMkZuWlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJ1WlhjZ2RIZHZMV1JwYldWdWMybHZibUZzSUdGeWNtRjVJR0Z1WkNCbWFXeHNjeUJwZENCM2FYUm9JSFJvWlNCMllXeDFaU0JuYVhabGJpNWNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1pHbHRaVzV6YVc5dU1TQlVhR1VnWm1seWMzUWdaR2x0Wlc1emFXOXVJRzltSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUFvYm5WdFltVnlJRzltSUhKdmQzTXBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpJZ1ZHaGxJSE5sWTI5dVpDQmthVzFsYm5OcGIyNGdiMllnZEdobElHTnZiM0prYVc1aGRHVnpJQ2h1ZFcxaVpYSWdiMllnWTI5c2RXMXVjeWt1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ1cyWnBiR3c5TUYwZ1FTQjJZV3gxWlNCMGJ5Qm1hV3hzSUhSb1pTQmpiMjl5WkdsdVlYUmxjeUIzYVhSb0xseHVJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlFRWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lHWnBiR3hsWkNCM2FYUm9JSFJvWlNCMllXeDFaU0JuYVhabGJpNWNiaUFxSUVCMGIyUnZJRTFwWjJoMElHSmxJSE5zYjNjZ2MybHVZMlVnZFhObFpDQkJjbkpoZVM1dFlYQXVJRkJ5YjJKaFlteDVJRzVsWldSeklIQmxjbVp2Y20xaGJtTmxJSEpsZG1semFXOXVMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBibWwwUTI5dmNtUnBibUYwWlhNb1pHbHRaVzV6YVc5dU1Ub2diblZ0WW1WeUxDQmthVzFsYm5OcGIyNHlPaUJ1ZFcxaVpYSXNJR1pwYkd3NklHNTFiV0psY2lBOUlEQXBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJSEpsZEhWeWJpQnVaWGNnUVhKeVlYa29aR2x0Wlc1emFXOXVNU2t1Wm1sc2JDaG1hV3hzS1M1dFlYQW9LQ2tnUFQ0Z0tHNWxkeUJXWldOMGIzSW9aR2x0Wlc1emFXOXVNaWt1Wm1sc2JDaG1hV3hzS1NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUZSeVlXNXpjRzl6WlNCdFlYUnlhWGd1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0TllYUnlhWGg5SUcxaGRISnBlQ0JVYUdVZ2JXRjBjbWw0SUhSdklHSmxJSFJ5WVc1emNHOXpaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdE5ZWFJ5YVhoOUlGUnlZVzV6Y0c5elpXUWdiV0YwY21sNExseHVJQ29nUUhSdlpHOGdUV2xuYUhRZ1ltVWdjMnh2ZHlCemFXNWpaU0IxYzJWa0lFRnljbUY1TG0xaGNDNGdVSEp2WW1GaWJIa2dibVZsWkhNZ2NHVnlabTl5YldGdVkyVWdjbVYyYVhOcGIyNHVYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCMGNtRnVjM0J2YzJWTllYUnlhWGdvYldGMGNtbDRPaUJOWVhSeWFYZ3BPaUJOWVhSeWFYZ2dlMXh1SUNCeVpYUjFjbTRnYm1WM0lFRnljbUY1S0cxaGRISnBlRnN3WFM1c1pXNW5kR2dwTG1acGJHd29NQ2xjYmlBZ0lDQXViV0Z3S0NoZkxDQnBLU0E5UGlBb2JtVjNJRlpsWTNSdmNpaHRZWFJ5YVhndWJHVnVaM1JvS1M1bWFXeHNLREFwTG0xaGNDZ29YeXdnYWlrZ1BUNGdLRzFoZEhKcGVGdHFYVnRwWFNrcEtTazdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1FXUmtjeUIwZDI4Z2RtVmpkRzl5Y3lCM2FYUm9JSFJvWlNCelpXTnZibVFnYjI1bElIUnZJR0psSUcxMWJIUnBjR3hwWldRZ1lua2dkR2hsSUdkcGRtVnVJSEpoZEdsdkxseHVJQ3BjYmlBcUlFQmxlSEJ2Y25SY2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQndJRlJvWlNCbWFYSnpkQ0IyWldOMGIzSWdkRzhnWVdSa0xseHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEVnVkdobElITmxZMjl1WkNCMlpXTjBiM0lnZEc4Z1lXUmtMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0dGRXeDBhWEJzYVdWeVBURmRJRUVnYlhWc2RHbHdiR2xsY2lCMGJ5QmlaU0IxYzJWa0lHSmxabTl5WlNCMGFHVWdjMlZqYjI1a0lIWmxZM1J2Y2lCcGN5QmhaR1JsWkM1Y2JpQXFJRUJ5WlhSMWNtNGdlMVpsWTNSdmNuMGdUbVYzSUhabFkzUnZjaUJqYjI1MFlXbHVaV1FnZEdobElISmxjM1ZzZENCdlppQnZjR1Z5WVhScGIyNGdjQ3R0ZFd4MGFYQnNhV1Z5S25FdVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSkJaR1FvY0RvZ1ZtVmpkRzl5TENCeE9pQldaV04wYjNJc0lHMTFiSFJwY0d4cFpYSTZJRzUxYldKbGNpQTlJREVwT2lCV1pXTjBiM0lnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCd0xteGxibWQwYUR0Y2JseHVJQ0JoYzNObGNuUW9ia2wwWlcxeklEMDlJSEV1YkdWdVozUm9MQ0FuVm1WamRHOXlJR3hsYm1kMGFITWdaRzhnYm05MElHMWhkR05vTGljcE8xeHVYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdibVYzSUZabFkzUnZjaWh1U1hSbGJYTXBPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2djQzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJGdHBYU0E5SUhCYmFWMGdLeUJ0ZFd4MGFYQnNhV1Z5SUNvZ2NWdHBYVHRjYmx4dUlDQnlaWFIxY200Z2RHOTBZV3c3WEc1OVhHNWNiaThxS2x4dUlDb2dVM1Z0Y3lCMGFHVWdkbVZqZEc5eUozTWdhWFJsYlhNdVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0o5SUhZZ1ZHaGxJSFpsWTNSdmNpQjBieUJpWlNCemRXMXRaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlGUm9aU0IyWldOMGIzSW5jeUJwZEdWdGN5QnpkVzB1WEc0Z0tpOWNibVoxYm1OMGFXOXVJR2wwWlcxelUzVnRLSFk2SUZabFkzUnZjaWs2SUc1MWJXSmxjaUI3WEc0Z0lHeGxkQ0IwYjNSaGJDQTlJREE3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IyTG14bGJtZDBhRHNnS3l0cEtWeHVJQ0FnSUhSdmRHRnNJQ3M5SUhaYmFWMDdYRzVjYmlBZ2NtVjBkWEp1SUhSdmRHRnNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTjFjV0Z5WlhNZ2RHaGxJSFpsWTNSdmNpZHpJR2wwWlcxekxseHVJQ3BjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCMklGUm9aU0IyWldOMGIzSWdkRzhnYzNGMVlYSmxMbHh1SUNvZ1FISmxkSFZ5YmlCN1ZtVmpkRzl5ZlNCQklHNWxkeUIyWldOMGIzSWdZMjl1ZEdGcGJtbHVaeUIwYUdVZ2IzSnBaMmx1WVd3bmN5QnBkR1Z0Y3lCemNYVmhjbVZrTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUIyWldOMGIzSlRjWFZoY21Vb2Rqb2dWbVZqZEc5eUtUb2dWbVZqZEc5eUlIdGNiaUFnWTI5dWMzUWdia2wwWlcxeklEMGdkaTVzWlc1bmRHZzdYRzRnSUdOdmJuTjBJSFJ2ZEdGc0lEMGdibVYzSUZabFkzUnZjaWh1U1hSbGJYTXBPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJGdHBYU0E5SUhaYmFWMGdLaUIyVzJsZE8xeHVYRzRnSUhKbGRIVnliaUIwYjNSaGJEdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUhabFkzUnZja3hsYm1kMGFDaDJPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdjM0Z5VTNWdE9pQnVkVzFpWlhJZ1BTQXdPMXh1SUNCbWIzSWdLR3hsZENCcE9pQnVkVzFpWlhJZ1BTQXdPeUJwSUR3Z2RpNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQnpjWEpUZFcwZ0t6MGdkbHRwWFNBcUlIWmJhVjA3WEc0Z0lISmxkSFZ5YmlCTllYUm9Mbk54Y25Rb2MzRnlVM1Z0S1R0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJSFpsWTNSdmNrUnZkRkJ5YjJSMVkzUW9kakU2SUZabFkzUnZjaXdnZGpJNklGWmxZM1J2Y2lrNklHNTFiV0psY2lCN1hHNGdJR2xtSUNoMk1TNXNaVzVuZEdnZ0lUMGdkakl1YkdWdVozUm9LVnh1SUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblZHaGxJR1JwYldWdWMybHZibUZzYVhSNUlHOW1JSFJvWlNCMlpXTjBiM0p6SUcxMWMzUWdiV0YwWTJnbktUdGNiaUFnYkdWMElIQnliMlE2SUc1MWJXSmxjaUE5SURBN1hHNGdJR1p2Y2lBb2JHVjBJR2s2SUc1MWJXSmxjaUE5SURBN0lHa2dQQ0IyTVM1c1pXNW5kR2c3SUdrckt5bGNiaUFnSUNCd2NtOWtJQ3M5SUhZeFcybGRJQ29nZGpKYmFWMDdYRzRnSUhKbGRIVnliaUJ3Y205a08xeHVmVnh1WEc0dktpcGNiaUFxSUVOeVpXRjBaWE1nWVNCdFlYUnlhWGdnWm1sc2JHVmtJSGRwZEdnZ2NtRnVaRzl0SUdac2IyRjBhVzVuSUhCdmFXNTBJSFpoYkhWbGN5NWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdaR2x0Wlc1emFXOXVNU0JVYUdVZ1ptbHljM1FnWkdsdFpXNXphVzl1SUc5bUlIUm9aU0J0WVhSeWFYZ3VYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnWkdsdFpXNXphVzl1TWlCVWFHVWdjMlZqYjI1a0lHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ2JXRjBjbWw0TGx4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlGdHpZMkZzWlQweExsMGdUV0Y0SUhaaGJIVmxJR2RwZG1WdUlHSjVJSEpoYm1SdmJTQm5aVzVsY21GMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVFZ2JtVjNJRzFoZEhKcGVDQm1hV3hzWldRZ2QybDBhQ0J5WVc1a2IyMGdabXh2WVhScGJtY2djRzlwYm5RZ0lIWmhiSFZsY3k1Y2JpQXFMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ29aR2x0Wlc1emFXOXVNVG9nYm5WdFltVnlMQ0JrYVcxbGJuTnBiMjR5T2lCdWRXMWlaWElzSUhOallXeGxPaUJ1ZFcxaVpYSWdQU0F4TGlrNklFMWhkSEpwZUNCN1hHNGdJR052Ym5OMElHMWhkSEpwZUNBOUlHbHVhWFJEYjI5eVpHbHVZWFJsY3loa2FXMWxibk5wYjI0eExDQmthVzFsYm5OcGIyNHlLVHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JwYldWdWMybHZiakU3SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcUlEd2daR2x0Wlc1emFXOXVNanNnS3l0cUtWeHVJQ0FnSUNBZ2JXRjBjbWw0VzJsZFcycGRJRDBnY21GdVpHOXRSbXh2WVhRb2MyTmhiR1VwTzF4dUlDQjlYRzRnSUhKbGRIVnliaUJ0WVhSeWFYZzdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1EyRnNZM1ZzWVhSbGN5QkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdZbVYwZDJWbGJpQjBkMjhnZG1WamRHOXljeTVjYmlBcVhHNGdLaUJBWlhod2IzSjBYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnY0NCVWFHVWdabWx5YzNRZ2RtVmpkRzl5TGx4dUlDb2dRSEJoY21GdElIdFdaV04wYjNKOUlIRWdWR2hsSUhObFkyOXVaQ0IyWldOMGIzSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVWMVkyeHBaR1ZoYmlCa2FYTjBZVzVqWlNCaVpYUjNaV1Z1SUhSb1pTQm5hWFpsYmlCMlpXTjBiM0p6TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jRG9nVm1WamRHOXlMQ0J4T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQmpiMjV6ZENCa2FXWm1JRDBnZG1WamRHOXlRV1JrS0hBc0lIRXNJQzB4S1R0Y2JpQWdZMjl1YzNRZ2MzRmthV1ptSUQwZ2RtVmpkRzl5VTNGMVlYSmxLR1JwWm1ZcE8xeHVJQ0JqYjI1emRDQnpjV1JwWm1aVGRXMXRJRDBnYVhSbGJYTlRkVzBvYzNGa2FXWm1LVHRjYmlBZ2NtVjBkWEp1SUUxaGRHZ3VjM0Z5ZENoemNXUnBabVpUZFcxdEtUdGNibjFjYmx4dUx5b3FYRzRnS2lCRGNtVmhkR1Z6SUdFZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhWemFXNW5JR0VnWTNWemRHOXRJR1JwYzNSaGJtTmxJR1oxYm1OMGFXOXVMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXljMzBnWkdGMFlTQkpibkIxZENCMlpXTjBiM0p6SUhSdklHTmhiR04xYkdGMFpTQmthWE4wWVc1alpYTXVYRzRnS2lCQWNHRnlZVzBnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JrYVhOMFlXNWpaU0JEZFhOMGIyMGdaR2x6ZEdGdVkyVWdablZ1WTNScGIyNHVYRzRnS2lCQWNtVjBkWEp1SUh0TllYUnlhWGg5SUVOaGJHTjFiR0YwWldRZ1kzVnpkRzl0SUdScGMzUmhibU5sSUcxaGRISnBlQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhiR05FYVhOMFlXNWpaVTFoZEhKcGVDaGtZWFJoT2lCV1pXTjBiM0p6TENCa2FYTjBZVzVqWlRvZ1JHbHpkR0Z1WTJWTlpYUnlhV01wT2lCTllYUnlhWGdnZTF4dUlDQmpiMjV6ZENCdVNYUmxiWE1nUFNCa1lYUmhMbXhsYm1kMGFEdGNiaUFnWTI5dWMzUWdiV0YwY21sNElEMGdhVzVwZEVOdmIzSmthVzVoZEdWektHNUpkR1Z0Y3l3Z2JrbDBaVzF6TENBd0tUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHNUpkR1Z0Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdabTl5SUNoc1pYUWdhaUE5SUdrZ0t5QXhPeUJxSUR3Z2JrbDBaVzF6T3lBcksyb3BJSHRjYmlBZ0lDQWdJR052Ym5OMElHUTZJRzUxYldKbGNpQTlJQ2hrWVhSaFcybGRJRDA5SUc1MWJHd3BJSHg4SUNoa1lYUmhXMnBkSUQwOUlHNTFiR3dwSUQ4Z01DQTZJR1JwYzNSaGJtTmxLR1JoZEdGYmFWMHNJR1JoZEdGYmFsMHBPMXh1SUNBZ0lDQWdiV0YwY21sNFcybGRXMnBkSUQwZ2JXRjBjbWw0VzJwZFcybGRJRDBnWkR0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJRzFoZEhKcGVEdGNibjFjYmx4dUx5b3FJRWRsYm1WeVlYUmxjeUJoY25KaGVTQm1jbTl0SUdFZ2NtRnVaMlVnVzJKbFoybHVPeUJsYm1SZElHOXlJRnRpWldkcGJqc2daVzVrS1NCcFppQmxibVJGZUdOc2RYTnBkbVV1SUNvcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxibEpoYm1kbEtHSmxaMmx1T2lCdWRXMWlaWElzSUdWdVpEb2diblZ0WW1WeUxDQmxibVJGZUdOc2RYTnBkbVVnUFNCbVlXeHpaU2s2SUVsdWRETXlRWEp5WVhrZ2UxeHVJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQmxibVFnTFNCaVpXZHBiaUFySUNobGJtUkZlR05zZFhOcGRtVWdQeUF3SURvZ01TazdYRzRnSUdOdmJuTjBJSE5sY21sbGN5QTlJRzVsZHlCSmJuUXpNa0Z5Y21GNUtHNUpkR1Z0Y3lrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTbGNiaUFnSUNCelpYSnBaWE5iYVYwZ1BTQmlaV2RwYmlBcklHazdYRzVjYmlBZ2NtVjBkWEp1SUhObGNtbGxjenRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHOXlaR1Z5SUc5bUlIWmhiSFZsY3lCaGN5QnBaaUIwYUdWNUlHRnlaU0J6YjNKMFpXUXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdkbUZzZFdWeklFbHVjSFYwSUdGeWNtRjVMbHh1SUNvZ1FIQmhjbUZ0SUh0aWIyOXNaV0Z1ZlNCYmNtVjJaWEp6WlQxbVlXeHpaVjBnVjJobGRHaGxjaUIwYnlCeVpYUjFjbTRnY21WMlpYSnpaV1FnYjNKa1pYSXVYRzRnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEpiWFgwZ1ZHaGxJRzl5WkdWeUlHTnZiWEIxZEdWa0xseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWVhKblUyOXlkQ2gyWVd4MVpYTTZJR0Z1ZVZ0ZExDQnlaWFpsY25ObElEMGdabUZzYzJVcE9pQnVkVzFpWlhKYlhTQjdYRzRnSUdOdmJuTjBJSE52Y25SbWJpQTlJSEpsZG1WeWMyVWdQeUFvWVRvZ1lXNTVXMTBzSUdJNklHRnVlVnRkS1NBOVBpQW9ZbHN3WFNBdElHRmJNRjBwSURvZ0tHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTa2dQVDRnS0dGYk1GMGdMU0JpV3pCZEtUdGNiaUFnWTI5dWMzUWdaR1ZqYjNJZ1BTQW9kam9nWVc1NUxDQnBPaUJ1ZFcxaVpYSXBJRDArSUZ0MkxDQnBYVHNnTHk4Z2MyVjBJR2x1WkdWNElIUnZJSFpoYkhWbFhHNGdJR052Ym5OMElIVnVaR1ZqYjNJZ1BTQW9ZVG9nWVc1NVcxMHBJRDArSUdGYk1WMDdJQzh2SUd4bFlYWmxJRzl1YkhrZ2FXNWtaWGhjYmlBZ1kyOXVjM1FnWDJGeVozTnZjblFnUFNBb1lYSnlPaUJoYm5sYlhTa2dQVDRnWVhKeUxtMWhjQ2hrWldOdmNpa3VjMjl5ZENoemIzSjBabTRwTG0xaGNDaDFibVJsWTI5eUtUdGNiaUFnY21WMGRYSnVJRjloY21kemIzSjBLSFpoYkhWbGN5azdYRzU5WEc1Y2JpOHFLbHh1SUNvZ1VtVjBkWEp1Y3lCMGFHVWdhVzVrWlhobGN5QnZaaUIwYUdVZ2JXOXpkQ0JrYVhabGNuTmxJRzlpYW1WamRITWdZV05qYjNKa2FXNW5JSFJ2SUhSb1pTQmthWE4wSUdaMWJtTjBhVzl1WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JHVnVaM1JvSUhSdmRHRnNJRzUxYldKbGNpQnZaaUJ2WW1wbFkzUnpYRzRnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYmlCdWRXMWlaWElnYjJZZ1pHbDJaWEp6WlNCbGJHVnRaVzUwY3lCMGJ5Qm1hVzVrWEc0Z0tpQkFjR0Z5WVcwZ2V5aHBNVG9nYm5WdFltVnlMQ0JwTWpvZ2JuVnRZbVZ5S1NBOVBpQnVkVzFpWlhKOUlHUnBjM1FnWVNCbWRXNWpkR2x2YmlCM2FHbGphQ0JqWVd4amRXeGhkR1Z6SUdScGMzUmhibU5sSUdKbGRIZGxaVzVjYmlBcUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0IwZDI4Z2IySnFaV04wY3lCMWMybHVaeUIwYUdWcGNpQnBibVJsZUdWelhHNGdLaUJBY21WMGRYSnVjeUI3Ym5WdFltVnlXMTE5SUZSb1pTQnBibVJsZUdWeklHOW1JSFJvWlNCdGIzTjBJR1JwZG1WeWMyVWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnWjJWMFJHbDJaWEp6WlZOMVluTmxkQ2hzWlc1bmRHZzZJRzUxYldKbGNpd2diam9nYm5WdFltVnlMQ0JrYVhOME9pQW9hVEU2SUc1MWJXSmxjaXdnYVRJNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtUb2diblZ0WW1WeVcxMGdlMXh1SUNCbWRXNWpkR2x2YmlCdFlYaENlU2gyWVd4MVpYTTZJRWwwWlhKaFlteGxTWFJsY21GMGIzSThiblZ0WW1WeVBpd2diM0prWlhKQ2VUb2dLR2s2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYkdWMElHMWhlRlpoYkhWbElEMGdiblZzYkR0Y2JpQWdJQ0JzWlhRZ2JXRjRUM0prWlhKQ2VTQTlJRzUxYkd3N1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHVnNaVzFsYm5RZ2IyWWdkbUZzZFdWektTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCbGJHVnRaVzUwVDNKa1pYSkNlU0E5SUc5eVpHVnlRbmtvWld4bGJXVnVkQ2s3WEc0Z0lDQWdJQ0JwWmlBb2JXRjRUM0prWlhKQ2VTQTlQU0J1ZFd4c0lIeDhJR1ZzWlcxbGJuUlBjbVJsY2tKNUlENGdiV0Y0VDNKa1pYSkNlU2tnZTF4dUlDQWdJQ0FnSUNCdFlYaFdZV3gxWlNBOUlHVnNaVzFsYm5RN1hHNGdJQ0FnSUNBZ0lHMWhlRTl5WkdWeVFua2dQU0JsYkdWdFpXNTBUM0prWlhKQ2VUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJRzFoZUZaaGJIVmxPMXh1SUNCOVhHNWNiaUFnWTI5dWMzUWdjM1ZpYzJWMElEMGdXM0poYm1SdmJVbHVkQ2hzWlc1bmRHZ2dMU0F4S1YwN1hHNGdJR052Ym5OMElHTnZiWEJzWlcxbGJuUWdQU0J1WlhjZ1UyVjBLQ2s3WEc1Y2JpQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0JzWlc1bmRHZzdJQ3NyYVNrZ2UxeHVJQ0FnSUdsbUlDZ2hjM1ZpYzJWMExtbHVZMngxWkdWektHa3BLVnh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVoWkdRb2FTazdYRzRnSUgxY2JseHVJQ0IzYUdsc1pTQW9jM1ZpYzJWMExteGxibWQwYUNBOElHNHBJSHRjYmlBZ0lDQmpiMjV6ZENCcFpIZ2dQU0J0WVhoQ2VTaGNiaUFnSUNBZ0lHTnZiWEJzWlcxbGJuUXVkbUZzZFdWektDa2dZWE1nU1hSbGNtRmliR1ZKZEdWeVlYUnZjanh1ZFcxaVpYSStMRnh1SUNBZ0lDQWdLR2twSUQwK0lFMWhkR2d1YldsdUxtRndjR3g1S0UxaGRHZ3NJSE4xWW5ObGRDNXRZWEFvWm5WdVkzUnBiMjRvZG1Gc0xDQnBibVJsZUNrZ2UxeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1pHbHpkQ2hwTENCMllXd3BPMXh1SUNBZ0lDQWdmU2twS1R0Y2JpQWdJQ0JwWmlBb2FXUjRLU0I3WEc0Z0lDQWdJQ0J6ZFdKelpYUXVjSFZ6YUNocFpIZ3BPMXh1SUNBZ0lDQWdZMjl0Y0d4bGJXVnVkQzVrWld4bGRHVW9hV1I0S1R0Y2JpQWdJQ0I5WEc0Z0lIMWNiaUFnY21WMGRYSnVJSE4xWW5ObGREdGNibjFjYmx4dUx5b3FYRzRnS2lCU1pYUjFjbTV6SUc1dmNtMWhiR2w2WldRZ2RtVmpkRzl5WEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ1pHRjBZU0J1ZFcxbGNtbGpZV3dnWVhKeVlYbGNiaUFxTDF4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUc1dmNtMWhiR2w2WlNoa1lYUmhPaUJXWldOMGIzSXBPaUJXWldOMGIzSWdlMXh1SUNCc1pYUWdiV1ZoYmlBOUlEQTdYRzRnSUd4bGRDQnpkR1FnUFNBd08xeHVYRzRnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z1pHRjBZUzVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0J0WldGdUlDczlJR1JoZEdGYmFWMDdYRzVjYmlBZ2JXVmhiaUF2UFNCa1lYUmhMbXhsYm1kMGFEdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHUmhkR0V1YkdWdVozUm9PeUFySzJrcFhHNGdJQ0FnYzNSa0lDczlJQ2hrWVhSaFcybGRJQzBnYldWaGJpa2dLaUFvWkdGMFlWdHBYU0F0SUcxbFlXNHBPMXh1WEc0Z0lITjBaQ0E5SUUxaGRHZ3VjM0Z5ZENoemRHUWdMeUJrWVhSaExteGxibWQwYUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCa1lYUmhMbXhsYm1kMGFEc2dLeXRwS1Z4dUlDQWdJR1JoZEdGYmFWMGdQU0FvWkdGMFlWdHBYU0F0SUcxbFlXNHBJQzhnYzNSa08xeHVYRzRnSUhKbGRIVnliaUJrWVhSaE8xeHVmVnh1WEc0dktpcGNiaUFxSUVacGJtUnpJSE5sZENCa2FXWm1aWEpsYm1ObElHSmxkSGRsWlc0Z2RIZHZJR3hwYzNSekxseHVJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdZU0JVYUdVZ1ptbHljM1FnYkdsemRDNWNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR0lnVkdobElITmxZMjl1WkNCc2FYTjBMbHh1SUNvZ1FISmxkSFZ5YmlCN1lXNTVXMTE5WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQnpaWFJFYVdabVpYSmxibU5sS0dFNklHRnVlVnRkTENCaU9pQmhibmxiWFNrNklHRnVlVnRkSUh0Y2JpQWdZMjl1YzNRZ1lsTmxkQ0E5SUc1bGR5QlRaWFFvWWlrN1hHNGdJSEpsZEhWeWJpQkJjbkpoZVM1bWNtOXRLRzVsZHlCVFpYUW9ZUzVtYVd4MFpYSW9LSGdwSUQwK0lDRmlVMlYwTG1oaGN5aDRLU2twTG5aaGJIVmxjeWdwS1R0Y2JuMWNiaUpkZlE9PSIsImltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLCBjYWxjRGlzdGFuY2VNYXRyaXgsIGZpbGxSYW5kb21NYXRyaXgsIHZlY3RvckFkZCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21JbnQgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20nO1xuLyoqXG4gKiBJbXBsZW1lbnRzIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgU1BFQmFzZVxuICogQGxpbmsgZG9pOjEwLjEwMTYvUzEwOTMtMzI2MygwMykwMDE1NS00XG4gKi9cbmNsYXNzIFNQRUJhc2Uge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgU1BFQmFzZS5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IFtvcHRpb25zXSBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lLCBfZiwgX2c7XG4gICAgICAgIHRoaXMuc3RlcHMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcHMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDA7XG4gICAgICAgIHRoaXMuY3ljbGVzID0gKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmN5Y2xlcykgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMWU2O1xuICAgICAgICAvLyBTZWxlY3QgYSBjdXRvZmYgZGlzdGFuY2Uge2N1dG9mZn0gYW5kIC4uLlxuICAgICAgICB0aGlzLmN1dG9mZiA9IChfYyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jdXRvZmYpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgIC8vIC4uLiBhbiBpbml0aWFsIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gPiAwXG4gICAgICAgIHRoaXMubGFtYmRhID0gKF9kID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmxhbWJkYSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMi4wO1xuICAgICAgICB0aGlzLmRsYW1iZGEgPSAoX2UgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGxhbWJkYSkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMC4wMTtcbiAgICAgICAgdGhpcy5sYW1iZGEyID0gdGhpcy5sYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5kbGFtYmRhMiA9IHRoaXMuZGxhbWJkYSAvIDIuO1xuICAgICAgICB0aGlzLmVwc2lsb24gPSAoX2YgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXBzaWxvbikgIT09IG51bGwgJiYgX2YgIT09IHZvaWQgMCA/IF9mIDogMWUtMTA7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBicmFjZS1zdHlsZVxuICAgICAgICB0aGlzLmRpc3RhbmNlRnVuY3Rpb24gPSAoX2cgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZGlzdGFuY2UpICE9PSBudWxsICYmIF9nICE9PSB2b2lkIDAgPyBfZyA6IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlO1xuICAgICAgICB0aGlzLmRpc3RhbmNlID0gW107XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEluaXRpYWxpemVzIGRpc3RhbmNlIG1hdHJpeC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuLlxuICAgICAqIEBtZW1iZXJvZiBTUEVCYXNlXG4gICAgICovXG4gICAgaW5pdERpc3RhbmNlKHZlY3RvcnMpIHtcbiAgICAgICAgdGhpcy5kaXN0YW5jZSA9IGNhbGNEaXN0YW5jZU1hdHJpeCh2ZWN0b3JzLCB0aGlzLmRpc3RhbmNlRnVuY3Rpb24pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW4gdGhlIHR3byB2ZWN0b3JzIGdpdmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIFNldCBvZiB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMgYmV0d2Vlbi5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgxIEluZGV4IG9mIHRoZSBmaXJzdCB2ZWN0b3Igb2YgdGhlIHBhaXIuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MiBJbmRleCBvZiB0aGUgc2Vjb25kIHZlY3RvciBvZiB0aGUgcGFpci5cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IERpc3RhbmNlIGJldHdlZW4gdGhlc2UgdHdvIHZlY3RvcnMuXG4gICAgICovXG4gICAgY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGluZGV4MSwgaW5kZXgyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3RhbmNlW2luZGV4MV1baW5kZXgyXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcy5cbiAgICAgKiBAcmV0dXJuIHtDb29yZGluYXRlc30gU1BFIGNvb3JkaW5hdGVzIGluIEQgc3BhY2UuXG4gICAgICovXG4gICAgZW1iZWQodmVjdG9ycykge1xuICAgICAgICBjb25zdCBuSXRlbXMgPSB2ZWN0b3JzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgYXJlYVdpZHRoID0gNDA7XG4gICAgICAgIC8vIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYTIgPSB0aGlzLmxhbWJkYTI7XG4gICAgICAgIGlmICh0aGlzLnN0ZXBzID09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMgPSB2ZWN0b3JzLmxlbmd0aCAtIDE7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSB0aGVpciBwcm94aW1pdHkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogYW5kIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEyICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGkgYW5kIHhqLlxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tpXSA9IHZlY3RvckFkZChyb3dpLCBkaWZmSUosIG11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgICAgICBjb29yZGluYXRlc1tqXSA9IHZlY3RvckFkZChyb3dqLCBkaWZmSUosIC1tdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBEZWNyZWFzZSB0aGUgbGVhcm5pbmcgcmF0ZSB7bGFtYmRhfSBieSBhIHByZXNjcmliZWQge2RsYW1iZGF9LlxuICAgICAgICAgICAgbGFtYmRhMiAtPSB0aGlzLmRsYW1iZGEyO1xuICAgICAgICAgICAgaWYgKGxhbWJkYTIgPD0gMC4pIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29vcmRpbmF0ZXM7XG4gICAgfVxufVxuU1BFQmFzZS5kaW1lbnNpb24gPSAyO1xuZXhwb3J0IHsgU1BFQmFzZSB9O1xuLyoqXG4gKiBJbXBsZW1lbnRzIG1vZGlmaWVkIHN0b2NoYXN0aWMgcHJveGltaXR5IGVtYmVkZGluZy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAY2xhc3MgUFNQRUJhc2VcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxuICovXG5leHBvcnQgY2xhc3MgUFNQRUJhc2UgZXh0ZW5kcyBTUEVCYXNlIHtcbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIHZlY3RvcnMgZ2l2ZW4gaW50byBhIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyBhIG1vZGlmaWVkIHVwZGF0ZSBydWxlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXG4gICAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxuICAgICAqL1xuICAgIGVtYmVkKHZlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgICAgICAvLyAgSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIFBTUEVCYXNlLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xuICAgICAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcbiAgICAgICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XG4gICAgICAgICAgICAvLyBTZWxlY3QgYSBwb2ludCwgaSwgYXQgcmFuZG9tIChwaXZvdCkuXG4gICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07XG4gICAgICAgICAgICAvLyBGb3IgZXZlcnkgcG9pbnQgaiAhPSBpIC4uLlxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgICAgIGlmIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gcmV0cmlldmUgKG9yIGV2YWx1YXRlKSBpdHMgcHJveGltaXR5IHRvIGkgaW4gdGhlIGlucHV0IHNwYWNlLCByaWogLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xuICAgICAgICAgICAgICAgIC8vIC4uLiBhbmQgY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIC8vIElmIHJpaiA8PSByYywgb3IgaWYgcmlqID4gcmMgYW5kIGRpaiA8IHJpaiAuLi5cbiAgICAgICAgICAgICAgICBpZiAoKHRoaXMuY3V0b2ZmID09IDApIHx8IChyIDw9IHRoaXMuY3V0b2ZmKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEgKiAociAtIGQpIC8gKGQgKyB0aGlzLmVwc2lsb24pO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaWZmSUogPSB2ZWN0b3JBZGQocm93aSwgcm93aiwgLTEpO1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4ai5cbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbal0gPSB2ZWN0b3JBZGQocm93aiwgZGlmZklKLCAtbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cbiAgICAgICAgICAgIGxhbWJkYSAtPSB0aGlzLmRsYW1iZGE7XG4gICAgICAgICAgICBpZiAobGFtYmRhIDw9IDAuKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIE9yaWdpbmFsU1BFXG4gKiBAbGluayBkb2k6MTAuMTAwMi9qY2MuMTAyMzRcbiAqL1xuZXhwb3J0IGNsYXNzIE9yaWdpbmFsU1BFIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgdGhpcy5jeWNsZXMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY3ljbGVzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAxZTM7XG4gICAgICAgIHRoaXMuc3RlcHMgPSAoX2IgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuc3RlcHMpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDEwMDAwMDtcbiAgICAgICAgdGhpcy5yYWRpdXNQZXJjZW50ID0gKF9jID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnJhZGl1c1BlcmNlbnQpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDEuMDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IChfZCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tYXhEaXN0YW5jZSkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogbnVsbDtcbiAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gKF9lID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLm1heERpc3RhbmNlU3RlcHMpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IG51bGw7XG4gICAgfVxuICAgIGVtYmVkKHZlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmaWxsUmFuZG9tTWF0cml4KG5JdGVtcywgT3JpZ2luYWxTUEUuZGltZW5zaW9uLCBhcmVhV2lkdGgpO1xuICAgICAgICB0aGlzLmluaXREaXN0YW5jZSh2ZWN0b3JzKTtcbiAgICAgICAgaWYgKHRoaXMubWF4RGlzdGFuY2VTdGVwcyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlU3RlcHMgPSBuSXRlbXMgKiBNYXRoLmZsb29yKChuSXRlbXMgLSAxKSAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSAtMWUzNztcbiAgICAgICAgICAgIGZvciAobGV0IG4gPSAwOyBuIDwgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzOyBuKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xuICAgICAgICAgICAgICAgIGlmIChkID4gdGhpcy5tYXhEaXN0YW5jZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGxhbWJkYSA9IHRoaXMubGFtYmRhO1xuICAgICAgICBjb25zdCByYWRpdXMgPSAodGhpcy5yYWRpdXNQZXJjZW50ID09IDAuMCkgPyB0aGlzLm1heERpc3RhbmNlIDogdGhpcy5tYXhEaXN0YW5jZSAqIHRoaXMucmFkaXVzUGVyY2VudDtcbiAgICAgICAgZm9yIChsZXQgY3ljbGUgPSAwOyBjeWNsZSA8IHRoaXMuY3ljbGVzOyArK2N5Y2xlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBzdGVwID0gMDsgc3RlcCA8IHRoaXMuc3RlcHM7ICsrc3RlcCkge1xuICAgICAgICAgICAgICAgIC8vIFNlbGVjdCB0d28gcG9pbnRzLCBpIGFuZCBqLCBhdCByYW5kb20sIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IGkgPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBsZXQgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChpID09IGopXG4gICAgICAgICAgICAgICAgICAgIGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dpID0gY29vcmRpbmF0ZXNbaV07XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aiA9IGNvb3JkaW5hdGVzW2pdO1xuICAgICAgICAgICAgICAgIC8vIHJldHJpZXZlIChvciBldmFsdWF0ZSkgdGhlaXIgcHJveGltaXR5IGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIGFuZCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSB0aGVpciBFdWNsaWRlYW4gZGlzdGFuY2Ugb24gdGhlIEQtZGltZW5zaW9uYWwgbWFwLCBkaWouXG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlKHJvd2ksIHJvd2opO1xuICAgICAgICAgICAgICAgIGlmICgociA8PSByYWRpdXMpIHx8IChkIDwgcikpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbXVsdGlwbGllciA9IGxhbWJkYSAqIDAuNSAqIChyIC0gZCkgLyAoZCArIHRoaXMuZXBzaWxvbik7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiB1cGRhdGUgdGhlIGNvb3JkaW5hdGVzIHhpIGFuZCB4ai5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbaV0gPSB2ZWN0b3JBZGQocm93aSwgZGlmZklKLCBtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbal0gPSB2ZWN0b3JBZGQocm93aiwgZGlmZklKLCAtbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFtYmRhIC09ICgodGhpcy5sYW1iZGEgLSB0aGlzLmRsYW1iZGEpIC8gKHRoaXMuY3ljbGVzIC0gMS4wKSk7XG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBpZiAobGFtYmRhIDwgdGhpcy5kbGFtYmRhKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzQmxMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWMzQmxMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVOQkxFOUJRVThzUlVGRFRDd3dRa0ZCTUVJc1JVRkRNVUlzYTBKQlFXdENMRVZCUTJ4Q0xHZENRVUZuUWl4RlFVTm9RaXhUUVVGVExFZEJRMVlzVFVGQlRTeHBSRUZCYVVRc1EwRkJRenRCUVVONlJDeFBRVUZQTEVWQlFVTXNVMEZCVXl4RlFVRkRMRTFCUVUwc2MwTkJRWE5ETEVOQlFVTTdRVUZGTDBRN096czdPenRIUVUxSE8wRkJRMGdzVFVGQllTeFBRVUZQTzBsQllXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVdsQ096dFJRVU16UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhIUVVGSExFMUJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFdEJRVXNzYlVOQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJwRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNUVUZCVFN4dFEwRkJTU3hIUVVGSExFTkJRVU03VVVGRGNrTXNORU5CUVRSRE8xRkJRelZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJRU3hQUVVGUExHRkJRVkFzVDBGQlR5eDFRa0ZCVUN4UFFVRlBMRU5CUVVVc1RVRkJUU3h0UTBGQlNTeERRVUZETEVOQlFVTTdVVUZEYmtNc05FTkJRVFJETzFGQlF6VkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlFTeFBRVUZQTEdGQlFWQXNUMEZCVHl4MVFrRkJVQ3hQUVVGUExFTkJRVVVzVFVGQlRTeHRRMEZCU1N4SFFVRkhMRU5CUVVNN1VVRkRja01zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4UFFVRlBMRzFEUVVGSkxFbEJRVWtzUTBGQlF6dFJRVU40UXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVTXNSVUZCUlN4RFFVRkRPMUZCUXpsQ0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJReXhGUVVGRkxFTkJRVU03VVVGRGFFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hQUVVGUExHMURRVUZKTEV0QlFVc3NRMEZCUXp0UlFVTjZReXgxUTBGQmRVTTdVVUZEZGtNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4SFFVRkhMRTFCUVVFc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRkZCUVZFc2JVTkJRVWtzTUVKQlFUQkNMRU5CUVVNN1VVRkRlRVVzU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RlFVRkZMRU5CUVVNN1NVRkRja0lzUTBGQlF6dEpRVVZFT3pzN096dFBRVXRITzBsQlEwOHNXVUZCV1N4RFFVRkRMRTlCUVdkQ08xRkJRM0pETEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc2EwSkJRV3RDTEVOQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMGxCUTNKRkxFTkJRVU03U1VGRlJEczdPenM3T3p0UFFVOUhPMGxCUTA4c1dVRkJXU3hEUVVGRExFOUJRV2RDTEVWQlFVVXNUVUZCWXl4RlFVRkZMRTFCUVdNN1VVRkRja1VzVDBGQlR5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEzWkRMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFdEJRVXNzUTBGQlF5eFBRVUZuUWp0UlFVTXpRaXhOUVVGTkxFMUJRVTBzUjBGQlJ5eFBRVUZQTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXpsQ0xFMUJRVTBzVTBGQlV5eEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTnlRaXcwUkVGQk5FUTdVVUZETlVRc1RVRkJUU3hYUVVGWExFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hGUVVGRkxFOUJRVThzUTBGQlF5eFRRVUZUTEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkZNMFVzU1VGQlNTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVVelFpeEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhGUVVGRk8xbEJRMjVDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1QwRkJUeXhEUVVGRExFMUJRVTBzUjBGQlF5eERRVUZETEVOQlFVTTdVMEZETDBJN1VVRkZSQ3hKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUlROQ0xFdEJRVXNzU1VGQlNTeExRVUZMTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTMEZCU3l4RlFVRkZPMWxCUTJoRUxFdEJRVXNzU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVWQlFVVXNTVUZCU1N4RlFVRkZPMmRDUVVNMVF5dzJRMEZCTmtNN1owSkJRemRETEUxQlFVMHNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dG5Ra0ZETlVJc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVNeFFpeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJSWEpETEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETlVJc1RVRkJUU3hKUVVGSkxFZEJRVWNzVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVVMVFpdzJSVUZCTmtVN1owSkJRemRGTEUxQlFVMHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE0wTXNjMFZCUVhORk8yZENRVU4wUlN4TlFVRk5MRU5CUVVNc1IwRkJSeXd3UWtGQk1FSXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlJXcEVMR2xFUVVGcFJEdG5Ra0ZEYWtRc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTzI5Q1FVTjJSQ3hOUVVGTkxGVkJRVlVzUjBGQlJ5eFBRVUZQTEVkQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yOUNRVU40UkN4M1EwRkJkME03YjBKQlEzaERMRTFCUVUwc1RVRkJUU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzcERMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RlFVRkZMRTFCUVUwc1JVRkJSU3hWUVVGVkxFTkJRVU1zUTBGQlF6dHZRa0ZEY2tRc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdhVUpCUTNaRU8yRkJRMFk3V1VGRFJDeHBSVUZCYVVVN1dVRkRha1VzVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNN1dVRkRla0lzU1VGQlNTeFBRVUZQTEVsQlFVa3NSVUZCUlN4RlFVRkZPMmRDUVVOcVFpeE5RVUZOTzJGQlExQTdVMEZEUmp0UlFVTkVMRTlCUVU4c1YwRkJWeXhEUVVGRE8wbEJRM0pDTEVOQlFVTTdPMEZCTVVkblFpeHBRa0ZCVXl4SFFVRkhMRU5CUVVNc1EwRkJRenRUUVVSd1FpeFBRVUZQTzBGQk9FZHdRanM3T3pzN08wZEJUVWM3UVVGRFNDeE5RVUZOTEU5QlFVOHNVVUZCVXl4VFFVRlJMRTlCUVU4N1NVRkRia003T3pzN08wOUJTMGM3U1VGRFNTeExRVUZMTEVOQlFVTXNUMEZCWjBJN1VVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzTmtSQlFUWkVPMUZCUXpkRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFJRVUZSTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJRelZGTEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRmVrSXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVV6UWl4TFFVRkxMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFdEJRVXNzUlVGQlJUdFpRVU5vUkN4M1EwRkJkME03V1VGRGVFTXNUVUZCVFN4RFFVRkRMRWRCUVZjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFsQlEzQkRMRTFCUVUwc1NVRkJTU3hIUVVGSExGZEJRVmNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVVTFRaXcyUWtGQk5rSTdXVUZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZETDBJc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZCUlN4VFFVRlRPMmRDUVVOeVFpeE5RVUZOTEVsQlFVa3NSMEZCUnl4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlF6VkNMRFJGUVVFMFJUdG5Ra0ZETlVVc1RVRkJUU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTXpReXd3UlVGQk1FVTdaMEpCUXpGRkxFMUJRVTBzUTBGQlF5eEhRVUZITERCQ1FVRXdRaXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRha1FzYVVSQlFXbEVPMmRDUVVOcVJDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVN2IwSkJRM1pFTEUxQlFVMHNWVUZCVlN4SFFVRkhMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdiMEpCUTNwRUxFMUJRVTBzVFVGQlRTeEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdiMEpCUTNwRExHbERRVUZwUXp0dlFrRkRha01zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzVFVGQlRTeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN2FVSkJRM1pFTzJGQlEwWTdXVUZEUkN4cFJVRkJhVVU3V1VGRGFrVXNUVUZCVFN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03V1VGRGRrSXNTVUZCU1N4TlFVRk5MRWxCUVVrc1JVRkJSU3hGUVVGRk8yZENRVU5vUWl4TlFVRk5PMkZCUTFBN1UwRkRSanRSUVVORUxFOUJRVThzVjBGQlZ5eERRVUZETzBsQlEzSkNMRU5CUVVNN1EwRkRSanRCUVVWRU96czdPenM3UjBGTlJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4WFFVRlpMRk5CUVZFc1QwRkJUenRKUVZkMFF5eFpRVUZaTEU5QlFXbENPenRSUVVNelFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEUxQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEUxQlFVMHNiVU5CUVVrc1IwRkJSeXhEUVVGRE8xRkJRM0pETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1RVRkJRU3hQUVVGUExHRkJRVkFzVDBGQlR5eDFRa0ZCVUN4UFFVRlBMRU5CUVVVc1MwRkJTeXh0UTBGQlNTeE5RVUZOTEVOQlFVTTdVVUZEZEVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeGhRVUZoTEcxRFFVRkpMRWRCUVVjc1EwRkJRenRSUVVOdVJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4SFFVRkhMRTFCUVVFc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRmRCUVZjc2JVTkJRVWtzU1VGQlNTeERRVUZETzFGQlEyaEVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4TlFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4blFrRkJaMElzYlVOQlFVa3NTVUZCU1N4RFFVRkRPMGxCUXpWRUxFTkJRVU03U1VGRlRTeExRVUZMTEVOQlFVTXNUMEZCWjBJN1VVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNNVFpeE5RVUZOTEZOQlFWTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRja0lzTkVSQlFUUkVPMUZCUXpWRUxFMUJRVTBzVjBGQlZ5eEhRVUZITEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUlVGQlJTeFhRVUZYTEVOQlFVTXNVMEZCVXl4RlFVRkZMRk5CUVZNc1EwRkJReXhEUVVGRE8xRkJSUzlGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03VVVGRk0wSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVsQlFVa3NTVUZCU1N4RlFVRkZPMWxCUTJwRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1IwRkJSeXhOUVVGTkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTXZSRHRSUVVORUxFbEJRVWtzU1VGQlNTeERRVUZETEZkQlFWY3NTVUZCU1N4SlFVRkpMRVZCUVVVN1dVRkROVUlzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVONlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTzJkQ1FVTTVReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVU4yUkN4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRE8yOUNRVUZGTEVOQlFVTXNSMEZCUnl4VFFVRlRMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03WjBKQlJYSkRMRTFCUVUwc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETTBNc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NSVUZCUlR0dlFrRkRlRUlzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4RFFVRkRMRU5CUVVNN2FVSkJRM1JDTzJGQlEwWTdVMEZEUmp0UlFVVkVMRWxCUVVrc1RVRkJUU3hIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEZWtJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNZVUZCWVN4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4aFFVRmhMRU5CUVVNN1VVRkZkRWNzUzBGQlN5eEpRVUZKTEV0QlFVc3NSMEZCUnl4RFFVRkRMRVZCUVVVc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4TFFVRkxMRVZCUVVVN1dVRkRhRVFzUzBGQlN5eEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRVZCUVVVc1NVRkJTU3hIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVWQlFVVXNSVUZCUlN4SlFVRkpMRVZCUVVVN1owSkJRelZETERaRFFVRTJRenRuUWtGRE4wTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJRekZDTEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNN2IwSkJRVVVzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRmNrTXNUVUZCVFN4SlFVRkpMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVTTFRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJSVFZDTEhsRlFVRjVSVHRuUWtGRGVrVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU16UXl4clJVRkJhMFU3WjBKQlEyeEZMRTFCUVUwc1EwRkJReXhIUVVGSExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZGYWtRc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJUdHZRa0ZETlVJc1RVRkJUU3hWUVVGVkxFZEJRVWNzVFVGQlRTeEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03YjBKQlF5OUVMSGREUVVGM1F6dHZRa0ZEZUVNc1RVRkJUU3hOUVVGTkxFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dHZRa0ZEZWtNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzI5Q1FVTnlSQ3hYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0cFFrRkRka1E3WVVGRFJqdFpRVU5FTEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkJReXhEUVVGRE8xbEJRMnBGTEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3WjBKQlEzcENMRTFCUVUwN1lVRkRVRHRUUVVOR08xRkJRMFFzVDBGQlR5eFhRVUZYTEVOQlFVTTdTVUZEY2tJc1EwRkJRenREUVVOR0lpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdFBjSFJwYjI1ekxDQkRiMjl5WkdsdVlYUmxjeXdnVm1WamRHOXljeXdnUkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3WEc0Z0lHTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVJQ0JqWVd4alJHbHpkR0Z1WTJWTllYUnlhWGdzWEc0Z0lHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnc1hHNGdJSFpsWTNSdmNrRmtaQ3hjYm4wZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHlZVzVrYjIxSmJuUjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM0poYm1SdmJTYzdYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCemRHOWphR0Z6ZEdsaklIQnliM2hwYldsMGVTQmxiV0psWkdScGJtY3VYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRk5RUlVKaGMyVmNiaUFxSUVCc2FXNXJJR1J2YVRveE1DNHhNREUyTDFNeE1Ea3pMVE15TmpNb01ETXBNREF4TlRVdE5GeHVJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdVMUJGUW1GelpTQjdYRzRnSUhCeWIzUmxZM1JsWkNCemRHRjBhV01nWkdsdFpXNXphVzl1SUQwZ01qdGNiaUFnY0hKdmRHVmpkR1ZrSUhOMFpYQnpPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCamVXTnNaWE02SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHTjFkRzltWmpvZ2JuVnRZbVZ5TzF4dUlDQndjbTkwWldOMFpXUWdiR0Z0WW1SaE9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYkdGdFltUmhPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCc1lXMWlaR0V5T2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQmtiR0Z0WW1SaE1qb2diblZ0WW1WeU8xeHVJQ0J3Y205MFpXTjBaV1FnWlhCemFXeHZiam9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2RXNWpkR2x2YmpvZ1JHbHpkR0Z1WTJWTlpYUnlhV003WEc0Z0lHUnBjM1JoYm1ObE9pQkRiMjl5WkdsdVlYUmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCVFVFVkNZWE5sTGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRnR2Y0hScGIyNXpYU0JQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdVMUJGUW1GelpWeHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjejg2SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0IwYUdsekxuTjBaWEJ6SUQwZ2IzQjBhVzl1Y3o4dWMzUmxjSE1nUHo4Z01EdGNiaUFnSUNCMGFHbHpMbU41WTJ4bGN5QTlJRzl3ZEdsdmJuTS9MbU41WTJ4bGN5QS9QeUF4WlRZN1hHNGdJQ0FnTHk4Z1UyVnNaV04wSUdFZ1kzVjBiMlptSUdScGMzUmhibU5sSUh0amRYUnZabVo5SUdGdVpDQXVMaTVjYmlBZ0lDQjBhR2x6TG1OMWRHOW1aaUE5SUc5d2RHbHZibk0vTG1OMWRHOW1aaUEvUHlBd08xeHVJQ0FnSUM4dklDNHVMaUJoYmlCcGJtbDBhV0ZzSUd4bFlYSnVhVzVuSUhKaGRHVWdlMnhoYldKa1lYMGdQaUF3WEc0Z0lDQWdkR2hwY3k1c1lXMWlaR0VnUFNCdmNIUnBiMjV6UHk1c1lXMWlaR0VnUHo4Z01pNHdPMXh1SUNBZ0lIUm9hWE11Wkd4aGJXSmtZU0E5SUc5d2RHbHZibk0vTG1Sc1lXMWlaR0VnUHo4Z01DNHdNVHRjYmlBZ0lDQjBhR2x6TG14aGJXSmtZVElnUFNCMGFHbHpMbXhoYldKa1lTOHlManRjYmlBZ0lDQjBhR2x6TG1Sc1lXMWlaR0V5SUQwZ2RHaHBjeTVrYkdGdFltUmhMekl1TzF4dUlDQWdJSFJvYVhNdVpYQnphV3h2YmlBOUlHOXdkR2x2Ym5NL0xtVndjMmxzYjI0Z1B6OGdNV1V0TVRBN1hHNGdJQ0FnTHk4Z1pYTnNhVzUwTFdScGMyRmliR1V0Ym1WNGRDMXNhVzVsSUdKeVlXTmxMWE4wZVd4bFhHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWjFibU4wYVc5dUlEMGdiM0IwYVc5dWN6OHVaR2x6ZEdGdVkyVWdQejhnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlU3WEc0Z0lDQWdkR2hwY3k1a2FYTjBZVzVqWlNBOUlGdGRPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUVsdWFYUnBZV3hwZW1WeklHUnBjM1JoYm1ObElHMWhkSEpwZUM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFdaV04wYjNKemZTQjJaV04wYjNKeklFbHVjSFYwSUhabFkzUnZjbk1nZEc4Z1kyRnNZM1ZzWVhSbElHUnBjM1JoYm1ObElHSmxkSGRsWlc0dVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVFVFVkNZWE5sWEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ2FXNXBkRVJwYzNSaGJtTmxLSFpsWTNSdmNuTTZJRlpsWTNSdmNuTXBJSHRjYmlBZ0lDQjBhR2x6TG1ScGMzUmhibU5sSUQwZ1kyRnNZMFJwYzNSaGJtTmxUV0YwY21sNEtIWmxZM1J2Y25Nc0lIUm9hWE11WkdsemRHRnVZMlZHZFc1amRHbHZiaWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1EyRnNZM1ZzWVhSbGN5QmthWE4wWVc1alpTQmlaWFIzWldWdUlIUm9aU0IwZDI4Z2RtVmpkRzl5Y3lCbmFYWmxiaTVjYmlBZ0lDcGNiaUFnSUNvZ1FIQmhjbUZ0SUh0V1pXTjBiM0p6ZlNCMlpXTjBiM0p6SUZObGRDQnZaaUIyWldOMGIzSnpJSFJ2SUdOaGJHTjFiR0YwWlNCa2FYTjBZVzVqWlhNZ1ltVjBkMlZsYmk1Y2JpQWdJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR2x1WkdWNE1TQkpibVJsZUNCdlppQjBhR1VnWm1seWMzUWdkbVZqZEc5eUlHOW1JSFJvWlNCd1lXbHlMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2FXNWtaWGd5SUVsdVpHVjRJRzltSUhSb1pTQnpaV052Ym1RZ2RtVmpkRzl5SUc5bUlIUm9aU0J3WVdseUxseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVScGMzUmhibU5sSUdKbGRIZGxaVzRnZEdobGMyVWdkSGR2SUhabFkzUnZjbk11WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ1kyRnNZMFJwYzNSaGJtTmxLSFpsWTNSdmNuTTZJRlpsWTNSdmNuTXNJR2x1WkdWNE1Ub2diblZ0WW1WeUxDQnBibVJsZURJNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJQ0FnY21WMGRYSnVJSFJvYVhNdVpHbHpkR0Z1WTJWYmFXNWtaWGd4WFZ0cGJtUmxlREpkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdkbVZqZEc5eWN5Qm5hWFpsYmlCcGJuUnZJR0VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJR1Z0WW1Wa0tIWmxZM1J2Y25NNklGWmxZM1J2Y25NcE9pQkRiMjl5WkdsdVlYUmxjeUI3WEc0Z0lDQWdZMjl1YzNRZ2JrbDBaVzF6SUQwZ2RtVmpkRzl5Y3k1c1pXNW5kR2c3WEc0Z0lDQWdZMjl1YzNRZ1lYSmxZVmRwWkhSb0lEMGdOREE3WEc0Z0lDQWdMeThnU1c1cGRHbGhiR2w2WlNCMGFHVWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5QnZaaUIwYUdVZ1RpQndiMmx1ZEhNdVhHNGdJQ0FnWTI5dWMzUWdZMjl2Y21ScGJtRjBaWE1nUFNCbWFXeHNVbUZ1Wkc5dFRXRjBjbWw0S0c1SmRHVnRjeXdnVTFCRlFtRnpaUzVrYVcxbGJuTnBiMjRzSUdGeVpXRlhhV1IwYUNrN1hHNWNiaUFnSUNCc1pYUWdiR0Z0WW1SaE1pQTlJSFJvYVhNdWJHRnRZbVJoTWp0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG5OMFpYQnpJRDA5SURBcElIdGNiaUFnSUNBZ0lIUm9hWE11YzNSbGNITWdQU0IyWldOMGIzSnpMbXhsYm1kMGFDMHhPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YVc1cGRFUnBjM1JoYm1ObEtIWmxZM1J2Y25NcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ1kzbGpiR1VnUFNBd095QmplV05zWlNBOElIUm9hWE11WTNsamJHVnpPeUFySzJONVkyeGxLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0J6ZEdWd0lEMGdNRHNnYzNSbGNDQThJSFJvYVhNdWMzUmxjSE03SUNzcmMzUmxjQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlRaV3hsWTNRZ2RIZHZJSEJ2YVc1MGN5d2dhU0JoYm1RZ2Fpd2dZWFFnY21GdVpHOXRMQ0F1TGk1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQnNaWFFnYWlBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FTQTlQU0JxS1NCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbTkzYVNBOUlHTnZiM0prYVc1aGRHVnpXMmxkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5YjNkcUlEMGdZMjl2Y21ScGJtRjBaWE5iYWwwN1hHNWNiaUFnSUNBZ0lDQWdMeThnTGk0dUlISmxkSEpwWlhabElDaHZjaUJsZG1Gc2RXRjBaU2tnZEdobGFYSWdjSEp2ZUdsdGFYUjVJR2x1SUhSb1pTQnBibkIxZENCemNHRmpaU3dnY21scUlHRnVaQ0F1TGk1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY2lBOUlIUm9hWE11WTJGc1kwUnBjM1JoYm1ObEtIWmxZM1J2Y25Nc0lHa3NJR29wTzF4dUlDQWdJQ0FnSUNBdkx5QXVMaTRnWTI5dGNIVjBaU0IwYUdWcGNpQkZkV05zYVdSbFlXNGdaR2x6ZEdGdVkyVWdiMjRnZEdobElFUXRaR2x0Wlc1emFXOXVZV3dnYldGd0xDQmthV291WEc0Z0lDQWdJQ0FnSUdOdmJuTjBJR1FnUFNCallXeGpkV3hoZEdWRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlNoeWIzZHBMQ0J5YjNkcUtUdGNibHh1SUNBZ0lDQWdJQ0F2THlCSlppQnlhV29nUEQwZ2NtTXNJRzl5SUdsbUlISnBhaUErSUhKaklHRnVaQ0JrYVdvZ1BDQnlhV29nTGk0dVhHNGdJQ0FnSUNBZ0lHbG1JQ2dvZEdocGN5NWpkWFJ2Wm1ZZ1BUMGdNQ2tnZkh3Z0tISWdQRDBnZEdocGN5NWpkWFJ2Wm1ZcElIeDhJQ2hrSUR3Z2Npa3BJSHRjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0J0ZFd4MGFYQnNhV1Z5SUQwZ2JHRnRZbVJoTWlvb2NpQXRJR1FwSUM4Z0tHUWdLeUIwYUdsekxtVndjMmxzYjI0cE8xeHVJQ0FnSUNBZ0lDQWdJQzh2SUM0dUxpQjFjR1JoZEdVZ2RHaGxJR052YjNKa2FXNWhkR1Z6SUhocElHRnVaQ0I0YWk1Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCa2FXWm1TVW9nUFNCMlpXTjBiM0pCWkdRb2NtOTNhU3dnY205M2Fpd2dMVEVwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZiM0prYVc1aGRHVnpXMmxkSUQwZ2RtVmpkRzl5UVdSa0tISnZkMmtzSUdScFptWkpTaXdnYlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lDQWdZMjl2Y21ScGJtRjBaWE5iYWwwZ1BTQjJaV04wYjNKQlpHUW9jbTkzYWl3Z1pHbG1aa2xLTENBdGJYVnNkR2x3YkdsbGNpazdYRzRnSUNBZ0lDQWdJSDFjYmlBZ0lDQWdJSDFjYmlBZ0lDQWdJQzh2SUVSbFkzSmxZWE5sSUhSb1pTQnNaV0Z5Ym1sdVp5QnlZWFJsSUh0c1lXMWlaR0Y5SUdKNUlHRWdjSEpsYzJOeWFXSmxaQ0I3Wkd4aGJXSmtZWDB1WEc0Z0lDQWdJQ0JzWVcxaVpHRXlJQzA5SUhSb2FYTXVaR3hoYldKa1lUSTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhNaUE4UFNBd0xpa2dlMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR052YjNKa2FXNWhkR1Z6TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUZCVFVFVkNZWE5sWEc0Z0tpQkFiR2x1YXlCa2IyazZNVEF1TVRBeE5pOVRNVEE1TXkwek1qWXpLREF6S1RBd01UVTFMVFJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUZCVFVFVkNZWE5sSUdWNGRHVnVaSE1nVTFCRlFtRnpaU0I3WEc0Z0lDOHFLbHh1SUNBZ0tpQkZiV0psWkhNZ2RHaGxJSFpsWTNSdmNuTWdaMmwyWlc0Z2FXNTBieUJoSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0J6Y0dGalpTQjFjMmx1WnlCaElHMXZaR2xtYVdWa0lIVndaR0YwWlNCeWRXeGxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFabFkzUnZjbk45SUhabFkzUnZjbk1nUkMxa2FXMWxibk5wYjI1aGJDQmpiMjl5WkdsdVlYUmxjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUZOUVJTQmpiMjl5WkdsdVlYUmxjeUJwYmlCRUlITndZV05sTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdWdFltVmtLSFpsWTNSdmNuTTZJRlpsWTNSdmNuTXBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJQ0FnWTI5dWMzUWdia2wwWlcxeklEMGdkbVZqZEc5eWN5NXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdZWEpsWVZkcFpIUm9JRDBnTkRBN1hHNGdJQ0FnTHk4Z0lFbHVhWFJwWVd4cGVtVWdkR2hsSUVRdFpHbHRaVzV6YVc5dVlXd2dZMjl2Y21ScGJtRjBaWE1nYjJZZ2RHaGxJRTRnY0c5cGJuUnpMbHh1SUNBZ0lHTnZibk4wSUdOdmIzSmthVzVoZEdWeklEMGdabWxzYkZKaGJtUnZiVTFoZEhKcGVDaHVTWFJsYlhNc0lGQlRVRVZDWVhObExtUnBiV1Z1YzJsdmJpd2dZWEpsWVZkcFpIUm9LVHRjYmlBZ0lDQnNaWFFnYkdGdFltUmhJRDBnZEdocGN5NXNZVzFpWkdFN1hHNWNiaUFnSUNCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdONVkyeGxJRDBnTURzZ1kzbGpiR1VnUENCMGFHbHpMbU41WTJ4bGN6c2dLeXRqZVdOc1pTa2dlMXh1SUNBZ0lDQWdMeThnVTJWc1pXTjBJR0VnY0c5cGJuUXNJR2tzSUdGMElISmhibVJ2YlNBb2NHbDJiM1FwTGx4dUlDQWdJQ0FnWTI5dWMzUWdhVG9nYm5WdFltVnlJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc0Z0lDQWdJQ0JqYjI1emRDQnliM2RwSUQwZ1kyOXZjbVJwYm1GMFpYTmJhVjA3WEc1Y2JpQWdJQ0FnSUM4dklFWnZjaUJsZG1WeWVTQndiMmx1ZENCcUlDRTlJR2tnTGk0dVhHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcUlEMGdNRHNnYWlBOElHNUpkR1Z0Y3pzZ0t5dHFLU0I3WEc0Z0lDQWdJQ0FnSUdsbUlDaHBJRDA5SUdvcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzRnSUNBZ0lDQWdJQzh2SUM0dUxpQnlaWFJ5YVdWMlpTQW9iM0lnWlhaaGJIVmhkR1VwSUdsMGN5QndjbTk0YVcxcGRIa2dkRzhnYVNCcGJpQjBhR1VnYVc1d2RYUWdjM0JoWTJVc0lISnBhaUF1TGk1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY2lBOUlIUm9hWE11WTJGc1kwUnBjM1JoYm1ObEtIWmxZM1J2Y25Nc0lHa3NJR29wTzF4dUlDQWdJQ0FnSUNBdkx5QXVMaTRnWVc1a0lHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc0Z0lDQWdJQ0FnSUM4dklFbG1JSEpwYWlBOFBTQnlZeXdnYjNJZ2FXWWdjbWxxSUQ0Z2NtTWdZVzVrSUdScGFpQThJSEpwYWlBdUxpNWNiaUFnSUNBZ0lDQWdhV1lnS0NoMGFHbHpMbU4xZEc5bVppQTlQU0F3S1NCOGZDQW9jaUE4UFNCMGFHbHpMbU4xZEc5bVppa2dmSHdnS0dRZ1BDQnlLU2tnZTF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUcxMWJIUnBjR3hwWlhJZ1BTQnNZVzFpWkdFZ0tpQW9jaUF0SUdRcElDOGdLR1FnS3lCMGFHbHpMbVZ3YzJsc2IyNHBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJR1JwWm1aSlNpQTlJSFpsWTNSdmNrRmtaQ2h5YjNkcExDQnliM2RxTENBdE1TazdYRzRnSUNBZ0lDQWdJQ0FnTHk4Z0xpNHVJSFZ3WkdGMFpTQjBhR1VnWTI5dmNtUnBibUYwWlhNZ2VHb3VYRzRnSUNBZ0lDQWdJQ0FnWTI5dmNtUnBibUYwWlhOYmFsMGdQU0IyWldOMGIzSkJaR1FvY205M2Fpd2daR2xtWmtsS0xDQXRiWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFUmxZM0psWVhObElIUm9aU0JzWldGeWJtbHVaeUJ5WVhSbElIdHNZVzFpWkdGOUlHSjVJR0VnY0hKbGMyTnlhV0psWkNCN1pHeGhiV0prWVgwdVhHNGdJQ0FnSUNCc1lXMWlaR0VnTFQwZ2RHaHBjeTVrYkdGdFltUmhPMXh1SUNBZ0lDQWdhV1lnS0d4aGJXSmtZU0E4UFNBd0xpa2dlMXh1SUNBZ0lDQWdJQ0JpY21WaGF6dGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR052YjNKa2FXNWhkR1Z6TzF4dUlDQjlYRzU5WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnRiMlJwWm1sbFpDQnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUU5eWFXZHBibUZzVTFCRlhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXdNaTlxWTJNdU1UQXlNelJjYmlBcUwxeHVaWGh3YjNKMElHTnNZWE56SUU5eWFXZHBibUZzVTFCRklHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSEp2ZEdWamRHVmtJSEpoWkdsMWMxQmxjbU5sYm5RNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJRzFoZUVScGMzUmhibU5sT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnRZWGhFYVhOMFlXNWpaVk4wWlhCek9pQnVkVzFpWlhJN1hHNWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUTTdYRzRnSUNBZ2RHaHBjeTV6ZEdWd2N5QTlJRzl3ZEdsdmJuTS9Mbk4wWlhCeklEOC9JREV3TURBd01EdGNiaUFnSUNCMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BTQnZjSFJwYjI1elB5NXlZV1JwZFhOUVpYSmpaVzUwSUQ4L0lERXVNRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElEMGdiM0IwYVc5dWN6OHViV0Y0UkdsemRHRnVZMlVnUHo4Z2JuVnNiRHRjYmlBZ0lDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFNCdmNIUnBiMjV6UHk1dFlYaEVhWE4wWVc1alpWTjBaWEJ6SUQ4L0lHNTFiR3c3WEc0Z0lIMWNibHh1SUNCd2RXSnNhV01nWlcxaVpXUW9kbVZqZEc5eWN6b2dWbVZqZEc5eWN5azZJRU52YjNKa2FXNWhkR1Z6SUh0Y2JpQWdJQ0JqYjI1emRDQnVTWFJsYlhNZ1BTQjJaV04wYjNKekxteGxibWQwYUR0Y2JpQWdJQ0JqYjI1emRDQmhjbVZoVjJsa2RHZ2dQU0EwTUR0Y2JpQWdJQ0F2THlCSmJtbDBhV0ZzYVhwbElIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHTnZiM0prYVc1aGRHVnpJRzltSUhSb1pTQk9JSEJ2YVc1MGN5NWNiaUFnSUNCamIyNXpkQ0JqYjI5eVpHbHVZWFJsY3lBOUlHWnBiR3hTWVc1a2IyMU5ZWFJ5YVhnb2JrbDBaVzF6TENCUGNtbG5hVzVoYkZOUVJTNWthVzFsYm5OcGIyNHNJR0Z5WldGWGFXUjBhQ2s3WEc1Y2JpQWdJQ0IwYUdsekxtbHVhWFJFYVhOMFlXNWpaU2gyWldOMGIzSnpLVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbTFoZUVScGMzUmhibU5sVTNSbGNITWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dFlYaEVhWE4wWVc1alpWTjBaWEJ6SUQwZ2JrbDBaVzF6SUNvZ1RXRjBhQzVtYkc5dmNpZ29ia2wwWlcxeklDMGdNU2tnTHlBeUtUdGNiaUFnSUNCOVhHNGdJQ0FnYVdZZ0tIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ1BUMGdiblZzYkNrZ2UxeHVJQ0FnSUNBZ2RHaHBjeTV0WVhoRWFYTjBZVzVqWlNBOUlDMHhaVE0zTzF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYmlBOUlEQTdJRzRnUENCMGFHbHpMbTFoZUVScGMzUmhibU5sVTNSbGNITTdJRzRyS3lrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCcElEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdJR3hsZENCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzRnSUNBZ0lDQWdJSGRvYVd4bElDaHBJRDA5SUdvcElHb2dQU0J5WVc1a2IyMUpiblFvYmtsMFpXMXpLVHRjYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrSUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUdsbUlDaGtJRDRnZEdocGN5NXRZWGhFYVhOMFlXNWpaU2tnZTF4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ1BTQmtPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdiR1YwSUd4aGJXSmtZU0E5SUhSb2FYTXViR0Z0WW1SaE8xeHVJQ0FnSUdOdmJuTjBJSEpoWkdsMWN5QTlJQ2gwYUdsekxuSmhaR2wxYzFCbGNtTmxiblFnUFQwZ01DNHdLU0EvSUhSb2FYTXViV0Y0UkdsemRHRnVZMlVnT2lCMGFHbHpMbTFoZUVScGMzUmhibU5sSUNvZ2RHaHBjeTV5WVdScGRYTlFaWEpqWlc1ME8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ1kzbGpiR1VnUFNBd095QmplV05zWlNBOElIUm9hWE11WTNsamJHVnpPeUFySzJONVkyeGxLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0J6ZEdWd0lEMGdNRHNnYzNSbGNDQThJSFJvYVhNdWMzUmxjSE03SUNzcmMzUmxjQ2tnZTF4dUlDQWdJQ0FnSUNBdkx5QlRaV3hsWTNRZ2RIZHZJSEJ2YVc1MGN5d2dhU0JoYm1RZ2Fpd2dZWFFnY21GdVpHOXRMQ0F1TGk1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQnNaWFFnYWlBOUlISmhibVJ2YlVsdWRDaHVTWFJsYlhNcE8xeHVJQ0FnSUNBZ0lDQjNhR2xzWlNBb2FTQTlQU0JxS1NCcUlEMGdjbUZ1Wkc5dFNXNTBLRzVKZEdWdGN5azdYRzVjYmlBZ0lDQWdJQ0FnWTI5dWMzUWdjbTkzYVNBOUlHTnZiM0prYVc1aGRHVnpXMmxkTzF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5YjNkcUlEMGdZMjl2Y21ScGJtRjBaWE5iYWwwN1hHNWNiaUFnSUNBZ0lDQWdMeThnY21WMGNtbGxkbVVnS0c5eUlHVjJZV3gxWVhSbEtTQjBhR1ZwY2lCd2NtOTRhVzFwZEhrZ2FXNGdkR2hsSUdsdWNIVjBJSE53WVdObExDQnlhV29nWVc1a0lDNHVMbHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnlJRDBnZEdocGN5NWpZV3hqUkdsemRHRnVZMlVvZG1WamRHOXljeXdnYVN3Z2FpazdYRzRnSUNBZ0lDQWdJQzh2SUdOdmJYQjFkR1VnZEdobGFYSWdSWFZqYkdsa1pXRnVJR1JwYzNSaGJtTmxJRzl1SUhSb1pTQkVMV1JwYldWdWMybHZibUZzSUcxaGNDd2daR2xxTGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0JrSUQwZ1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVb2NtOTNhU3dnY205M2FpazdYRzVjYmlBZ0lDQWdJQ0FnYVdZZ0tDaHlJRHc5SUhKaFpHbDFjeWtnZkh3Z0tHUWdQQ0J5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMTFiSFJwY0d4cFpYSWdQU0JzWVcxaVpHRWdLaUF3TGpVZ0tpQW9jaUF0SUdRcElDOGdLR1FnS3lCMGFHbHpMbVZ3YzJsc2IyNHBPMXh1SUNBZ0lDQWdJQ0FnSUM4dklDNHVMaUIxY0dSaGRHVWdkR2hsSUdOdmIzSmthVzVoZEdWeklIaHBJR0Z1WkNCNGFpNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmthV1ptU1VvZ1BTQjJaV04wYjNKQlpHUW9jbTkzYVN3Z2NtOTNhaXdnTFRFcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJsZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJrc0lHUnBabVpKU2l3Z2JYVnNkR2x3YkdsbGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTI5dmNtUnBibUYwWlhOYmFsMGdQU0IyWldOMGIzSkJaR1FvY205M2Fpd2daR2xtWmtsS0xDQXRiWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUd4aGJXSmtZU0F0UFNBb0tIUm9hWE11YkdGdFltUmhJQzBnZEdocGN5NWtiR0Z0WW1SaEtTQXZJQ2gwYUdsekxtTjVZMnhsY3lBdElERXVNQ2twT3lBN1hHNGdJQ0FnSUNCcFppQW9iR0Z0WW1SaElEd2dkR2hwY3k1a2JHRnRZbVJoS1NCN1hHNGdJQ0FnSUNBZ0lHSnlaV0ZyTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z1kyOXZjbVJwYm1GMFpYTTdYRzRnSUgxY2JuMWNiaUpkZlE9PSIsImltcG9ydCAqIGFzIGZsIGZyb20gJ2Zhc3Rlc3QtbGV2ZW5zaHRlaW4nO1xuaW1wb3J0IHsgamFyb1dpbmtsZXIgfSBmcm9tICdqYXJvLXdpbmtsZXItdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBhc3ltbWV0cmljRGlzdGFuY2UsIGJyYXVuQmxhbnF1ZXREaXN0YW5jZSwgY29zaW5lRGlzdGFuY2UsIGRpY2VEaXN0YW5jZSwgZXVjbGlkZWFuRGlzdGFuY2UsIGhhbW1pbmdEaXN0YW5jZSwga3VsY3p5bnNraURpc3RhbmNlLCBtY0Nvbm5hdWdoZXlEaXN0YW5jZSwgcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLCBydXNzZWxEaXN0YW5jZSwgc29rYWxEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZSwgfSBmcm9tICcuL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IG1tRGlzdGFuY2VGdW5jdGlvbnMsIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcyB9IGZyb20gJy4vbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMnO1xuZXhwb3J0IHZhciBTdHJpbmdNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKFN0cmluZ01ldHJpY3NOYW1lcykge1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIkxldmVuc2h0ZWluXCJdID0gXCJMZXZlbnNodGVpblwiO1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIkphcm9XaW5rbGVyXCJdID0gXCJKYXJvLVdpbmtsZXJcIjtcbiAgICBTdHJpbmdNZXRyaWNzTmFtZXNbXCJNYW5oYXR0YW5cIl0gPSBcIk1hbmhhdHRhblwiO1xufSkoU3RyaW5nTWV0cmljc05hbWVzIHx8IChTdHJpbmdNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IHZhciBWZWN0b3JNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKFZlY3Rvck1ldHJpY3NOYW1lcykge1xuICAgIFZlY3Rvck1ldHJpY3NOYW1lc1tcIkV1Y2xpZGVhblwiXSA9IFwiRXVjbGlkZWFuXCI7XG59KShWZWN0b3JNZXRyaWNzTmFtZXMgfHwgKFZlY3Rvck1ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgdmFyIEJpdEFycmF5TWV0cmljc05hbWVzO1xuKGZ1bmN0aW9uIChCaXRBcnJheU1ldHJpY3NOYW1lcykge1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiVGFuaW1vdG9cIl0gPSBcIlRhbmltb3RvXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJEaWNlXCJdID0gXCJEaWNlXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJBc3ltbWV0cmljXCJdID0gXCJBc3ltbWV0cmljXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJCcmF1bkJsYW5xdWV0XCJdID0gXCJCcmF1bi1CbGFucXVldFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiQ29zaW5lXCJdID0gXCJDb3NpbmVcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkt1bGN6eW5za2lcIl0gPSBcIkt1bGN6eW5za2lcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIk1jQ29ubmF1Z2hleVwiXSA9IFwiTWMtQ29ubmF1Z2hleVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiUm9nb3RHb2xkYmVyZ1wiXSA9IFwiUm9nb3QtR29sZGJlcmdcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlJ1c3NlbFwiXSA9IFwiUnVzc2VsXCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJTb2thbFwiXSA9IFwiU29rYWxcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkhhbW1pbmdcIl0gPSBcIkhhbW1pbmdcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkV1Y2xpZGVhblwiXSA9IFwiRXVjbGlkZWFuXCI7XG59KShCaXRBcnJheU1ldHJpY3NOYW1lcyB8fCAoQml0QXJyYXlNZXRyaWNzTmFtZXMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1ZlY3Rvck1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3Qgc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogZmwuZGlzdGFuY2UsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl06IGphcm9XaW5rbGVyLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogbWFuaGF0dGFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogZGljZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYnJhdW5CbGFucXVldERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBjb3NpbmVEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGt1bGN6eW5za2lEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IHJ1c3NlbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IHNva2FsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkhhbW1pbmddOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCB2YXIgQXZhaWxhYmxlTWV0cmljc1R5cGVzO1xuKGZ1bmN0aW9uIChBdmFpbGFibGVNZXRyaWNzVHlwZXMpIHtcbiAgICBBdmFpbGFibGVNZXRyaWNzVHlwZXNbXCJWZWN0b3JcIl0gPSBcIlZlY3RvclwiO1xuICAgIEF2YWlsYWJsZU1ldHJpY3NUeXBlc1tcIlN0cmluZ1wiXSA9IFwiU3RyaW5nXCI7XG4gICAgQXZhaWxhYmxlTWV0cmljc1R5cGVzW1wiQml0QXJyYXlcIl0gPSBcIkJpdEFycmF5XCI7XG4gICAgQXZhaWxhYmxlTWV0cmljc1R5cGVzW1wiTWFjcm9Nb2xlY3VsZVwiXSA9IFwiTWFjcm9Nb2xlY3VsZVwiO1xufSkoQXZhaWxhYmxlTWV0cmljc1R5cGVzIHx8IChBdmFpbGFibGVNZXRyaWNzVHlwZXMgPSB7fSkpO1xuZXhwb3J0IGNvbnN0IEF2YWlsYWJsZU1ldHJpY3MgPSB7XG4gICAgW0F2YWlsYWJsZU1ldHJpY3NUeXBlcy5WZWN0b3JdOiB7XG4gICAgICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXSxcbiAgICB9LFxuICAgIFtBdmFpbGFibGVNZXRyaWNzVHlwZXMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbQXZhaWxhYmxlTWV0cmljc1R5cGVzLkJpdEFycmF5XToge1xuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF0sXG4gICAgfSxcbiAgICBbQXZhaWxhYmxlTWV0cmljc1R5cGVzLk1hY3JvTW9sZWN1bGVdOiB7XG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuSEFNTUlOR106IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTEVWRU5TSFRFSU5dLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTkVFRExFTUFOTl9XVU5TQ0hdLFxuICAgIH0sXG59O1xuZXhwb3J0IGNvbnN0IE1ldHJpY1RvRGF0YVR5cGUgPSBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzKVxuICAgIC5yZWR1Y2UoKHJldCwga2V5KSA9PiB7XG4gICAgZm9yIChjb25zdCB2YWwgb2YgT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1trZXldKSkge1xuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbn0sIHt9KTtcbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ01ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1N0cmluZyc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaXRBcnJheU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ0JpdEFycmF5Jztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3Rvck1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gJ1ZlY3Rvcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNNYWNyb01vbGVjdWxlTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSBBdmFpbGFibGVNZXRyaWNzVHlwZXMuTWFjcm9Nb2xlY3VsZS50b1N0cmluZygpO1xufVxuLyoqIE1hbmhhdHRhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzZXF1ZW5jZXMgKG1hdGNoIC0gMCwgbWlzbWF0Y2ggLSAxKSBub3JtYWxpemVkIGZvciBsZW5ndGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuaGF0dGFuRGlzdGFuY2UoczEsIHMyKSB7XG4gICAgaWYgKHMxLmxlbmd0aCAhPT0gczIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IGRpc3QgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHMxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkaXN0ICs9IHMxW2ldID09IHMyW2ldID8gMCA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFZEJRMnBDTEUxQlFVMHNORUpCUVRSQ0xFTkJRVU03UVVGRmNFTXNUMEZCVHl4RlFVRkRMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNhVVJCUVdsRUxFTkJRVU03UVVGSE0wWXNUMEZCVHl4RlFVRkRMRzFDUVVGdFFpeEZRVUZGTEhkQ1FVRjNRaXhGUVVGRExFMUJRVTBzYjBOQlFXOURMRU5CUVVNN1FVRkZha2NzVFVGQlRTeERRVUZPTEVsQlFWa3NhMEpCU1ZnN1FVRktSQ3hYUVVGWkxHdENRVUZyUWp0SlFVTTFRaXhwUkVGQk1rSXNRMEZCUVR0SlFVTXpRaXhyUkVGQk5FSXNRMEZCUVR0SlFVTTFRaXcyUTBGQmRVSXNRMEZCUVR0QlFVTjZRaXhEUVVGRExFVkJTbGNzYTBKQlFXdENMRXRCUVd4Q0xHdENRVUZyUWl4UlFVazNRanRCUVVWRUxFMUJRVTBzUTBGQlRpeEpRVUZaTEd0Q1FVVllPMEZCUmtRc1YwRkJXU3hyUWtGQmEwSTdTVUZETlVJc05rTkJRWFZDTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVVaWExHdENRVUZyUWl4TFFVRnNRaXhyUWtGQmEwSXNVVUZGTjBJN1FVRkZSQ3hOUVVGTkxFTkJRVTRzU1VGQldTeHZRa0ZoV0R0QlFXSkVMRmRCUVZrc2IwSkJRVzlDTzBsQlF6bENMRFpEUVVGeFFpeERRVUZCTzBsQlEzSkNMSEZEUVVGaExFTkJRVUU3U1VGRFlpeHBSRUZCZVVJc1EwRkJRVHRKUVVONlFpeDNSRUZCWjBNc1EwRkJRVHRKUVVOb1F5eDVRMEZCYVVJc1EwRkJRVHRKUVVOcVFpeHBSRUZCZVVJc1EwRkJRVHRKUVVONlFpeHpSRUZCT0VJc1EwRkJRVHRKUVVNNVFpeDNSRUZCWjBNc1EwRkJRVHRKUVVOb1F5eDVRMEZCYVVJc1EwRkJRVHRKUVVOcVFpeDFRMEZCWlN4RFFVRkJPMGxCUTJZc01rTkJRVzFDTEVOQlFVRTdTVUZEYmtJc0swTkJRWFZDTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVdKWExHOUNRVUZ2UWl4TFFVRndRaXh2UWtGQmIwSXNVVUZoTDBJN1FVRkZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTdzBRa0ZCTkVJc1IwRkJlVVE3U1VGRGFFY3NRMEZCUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlN3d1FrRkJNRUk3UTBGRE0wUXNRMEZCUXp0QlFVVkdMRTFCUVUwc1EwRkJReXhOUVVGTkxEUkNRVUUwUWl4SFFVRjVSRHRKUVVOb1J5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4UlFVRlJPMGxCUXpkRExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzVjBGQlZ6dEpRVU0zUXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMR2xDUVVGcFFqdERRVU5zUkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzT0VKQlFUaENMRWRCUVRaRU8wbEJRM1JITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVVVGQlVTeERRVUZETEVWQlFVVXNaMEpCUVdkQ08wbEJRMnBFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNXVUZCV1R0SlFVTjZReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxHdENRVUZyUWp0SlFVTnlSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXpSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV003U1VGRE4wTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFZRVUZWTEVOQlFVTXNSVUZCUlN4clFrRkJhMEk3U1VGRGNrUXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4dlFrRkJiMEk3U1VGRGVrUXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eGhRVUZoTEVOQlFVTXNSVUZCUlN4eFFrRkJjVUk3U1VGRE0wUXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4alFVRmpPMGxCUXpkRExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzWVVGQllUdEpRVU16UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMR1ZCUVdVN1NVRkRMME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTeHBRa0ZCYVVJN1EwRkRjRVFzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCVGl4SlFVRlpMSEZDUVV0WU8wRkJURVFzVjBGQldTeHhRa0ZCY1VJN1NVRkRMMElzTUVOQlFXbENMRU5CUVVFN1NVRkRha0lzTUVOQlFXbENMRU5CUVVFN1NVRkRha0lzT0VOQlFYRkNMRU5CUVVFN1NVRkRja0lzZDBSQlFTdENMRU5CUVVFN1FVRkRha01zUTBGQlF5eEZRVXhYTEhGQ1FVRnhRaXhMUVVGeVFpeHhRa0ZCY1VJc1VVRkxhRU03UVVGRlJDeE5RVUZOTEVOQlFVTXNUVUZCVFN4blFrRkJaMElzUjBGQlJ6dEpRVU01UWl4RFFVRkRMSEZDUVVGeFFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZPMUZCUXpsQ0xFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzTkVKQlFUUkNMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRPMHRCUXpOR08wbEJRMFFzUTBGQlF5eHhRa0ZCY1VJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFJRVU01UWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF6dFJRVU01Uml4RFFVRkRMR3RDUVVGclFpeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGZEJRVmNzUTBGQlF6dFJRVU01Uml4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF6dExRVU16Ump0SlFVTkVMRU5CUVVNc2NVSkJRWEZDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNN1VVRkRPVVlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNN1VVRkRkRVlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRiRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4aFFVRmhMRU5CUVVNN1VVRkRlRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRNVVlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhWUVVGVkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRiRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhaUVVGWkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRkRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4aFFVRmhMRU5CUVVNN1VVRkRlRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRNVVlzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRU5CUVVNN1MwRkRla1k3U1VGRFJDeERRVUZETEhGQ1FVRnhRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTzFGQlEzSkRMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zVDBGQlR5eERRVUZETzFGQlEzcEdMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlEycEhMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF6dExRVU01Unp0RFFVTkdMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJjVUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU0xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGeFFpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMGxCUTNKRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRjVRaXhEUVVGRExFTkJRVU1zUlVGQlJUdFJRVU14UlN4SFFVRkhMRU5CUVVNc1IwRkJlVUlzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0TFFVTjBRenRKUVVORUxFOUJRVThzUjBGQlJ5eERRVUZETzBGQlEySXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8wRkJZVlFzVFVGQlRTeFZRVUZWTEdOQlFXTXNRMEZCUXl4SlFVRnJRanRKUVVNdlF5eFBRVUZQTEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEZGQlFWRXNRMEZCUXp0QlFVTTFReXhEUVVGRE8wRkJSVVFzVFVGQlRTeFZRVUZWTEdkQ1FVRm5RaXhEUVVGRExFbEJRV3RDTzBsQlEycEVMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1ZVRkJWU3hEUVVGRE8wRkJRemxETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1kwRkJZeXhEUVVGRExFbEJRV3RDTzBsQlF5OURMRTlCUVU4c1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1VVRkJVU3hEUVVGRE8wRkJRelZETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc2NVSkJRWEZDTEVOQlFVTXNTVUZCYTBJN1NVRkRkRVFzVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeHhRa0ZCY1VJc1EwRkJReXhoUVVGaExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdRVUZEYkVZc1EwRkJRenRCUVVWRUxHZEhRVUZuUnp0QlFVTm9SeXhOUVVGTkxGVkJRVlVzYVVKQlFXbENMRU5CUVVNc1JVRkJWU3hGUVVGRkxFVkJRVlU3U1VGRGRFUXNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUU3hMUVVGTExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVTdVVUZETTBJc1QwRkJUeXhEUVVGRExFTkJRVU03UzBGRFZqdFRRVUZOTzFGQlEwd3NTVUZCU1N4SlFVRkpMRWRCUVZjc1EwRkJReXhEUVVGRE8xRkJRM0pDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRMnhETEVsQlFVa3NTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTm9RenRSUVVORUxFOUJRVThzU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1MwRkRla0k3UVVGRFNDeERRVUZETzBGQlJVUXNORVJCUVRSRU8wRkJRelZFTEUxQlFVMHNUMEZCVHl4UFFVRlBPMGxCU1d4Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFMUJRVzlDTzFGQlF6bENMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlRTeERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGMVFpeERRVUZETzBsQlEycEZMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxGVkJRVlVzUTBGQlF5eEpRVUZWTzFGQlF6RkNMRTFCUVUwc1NVRkJTU3hIUVVWT0xHZENRVUZuUWl4RFFVRkRPMUZCUTNKQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1dVRkRla1lzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4dFFrRkJiVUlzU1VGQlNTeERRVUZETEUxQlFVMHNhMEpCUVd0Q0xFbEJRVWtzUTBGQlF5eFJRVUZSTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUTI1R0xFOUJRVThzY1VKQlFYRkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZEZUVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGeFF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROMFVzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZ0UWl4RFFVRkRPMGxCUTNaRUxFTkJRVU03U1VGRlJEczdPenM3VDBGTFJ6dEpRVU5KTEUxQlFVMHNRMEZCUXl4dFFrRkJiVUlzUTBGQlF5eFJRVUUwUWp0UlFVTTFSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnFSQ3hEUVVGRE8wbEJSVVE3TzA5QlJVYzdTVUZEU0N4TlFVRk5MRXRCUVVzc2FVSkJRV2xDTzFGQlF6RkNMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdRMEZEUmlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENBcUlHRnpJR1pzSUdaeWIyMGdKMlpoYzNSbGMzUXRiR1YyWlc1emFIUmxhVzRuTzF4dWFXMXdiM0owSUh0cVlYSnZWMmx1YTJ4bGNuMGdabkp2YlNBbmFtRnlieTEzYVc1cmJHVnlMWFI1Y0dWelkzSnBjSFFuTzF4dWFXMXdiM0owSUh0RWFYTjBZVzVqWlUxbGRISnBZMzBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0Y2JpQWdZWE41YlcxbGRISnBZMFJwYzNSaGJtTmxMRnh1SUNCaWNtRjFia0pzWVc1eGRXVjBSR2x6ZEdGdVkyVXNYRzRnSUdOdmMybHVaVVJwYzNSaGJtTmxMRnh1SUNCa2FXTmxSR2x6ZEdGdVkyVXNYRzRnSUdWMVkyeHBaR1ZoYmtScGMzUmhibU5sTEZ4dUlDQm9ZVzF0YVc1blJHbHpkR0Z1WTJVc1hHNGdJR3QxYkdONmVXNXphMmxFYVhOMFlXNWpaU3hjYmlBZ2JXTkRiMjV1WVhWbmFHVjVSR2x6ZEdGdVkyVXNYRzRnSUhKdloyOTBSMjlzWkdKbGNtZEVhWE4wWVc1alpTeGNiaUFnY25WemMyVnNSR2x6ZEdGdVkyVXNYRzRnSUhOdmEyRnNSR2x6ZEdGdVkyVXNYRzRnSUhSaGJtbHRiM1J2UkdsemRHRnVZMlVzWEc1OUlHWnliMjBnSnk0dlpHbHpkR0Z1WTJVdGJXVjBjbWxqY3kxdFpYUm9iMlJ6Snp0Y2JseHVhVzF3YjNKMElIdGpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZTFabFkzUnZjaXdnVTNSeWFXNW5SR2xqZEdsdmJtRnllWDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0dGJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1ekxDQk5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhOOUlHWnliMjBnSnk0dmJXRmpjbTl0YjJ4bFkzVnNaUzFrYVhOMFlXNWpaUzFtZFc1amRHbHZibk1uTzF4dVhHNWxlSEJ2Y25RZ1pXNTFiU0JUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE1nZTF4dUlDQk1aWFpsYm5Ob2RHVnBiaUE5SUNkTVpYWmxibk5vZEdWcGJpY3NYRzRnSUVwaGNtOVhhVzVyYkdWeUlEMGdKMHBoY204dFYybHVhMnhsY2ljc1hHNGdJRTFoYm1oaGRIUmhiaUE5SUNkTllXNW9ZWFIwWVc0bkxGeHVmVnh1WEc1bGVIQnZjblFnWlc1MWJTQldaV04wYjNKTlpYUnlhV056VG1GdFpYTWdlMXh1SUNCRmRXTnNhV1JsWVc0Z1BTQW5SWFZqYkdsa1pXRnVKeXhjYm4xY2JseHVaWGh3YjNKMElHVnVkVzBnUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNZ2UxeHVJQ0JVWVc1cGJXOTBieUE5SUNkVVlXNXBiVzkwYnljc1hHNGdJRVJwWTJVZ1BTQW5SR2xqWlNjc1hHNGdJRUZ6ZVcxdFpYUnlhV01nUFNBblFYTjViVzFsZEhKcFl5Y3NYRzRnSUVKeVlYVnVRbXhoYm5GMVpYUWdQU0FuUW5KaGRXNHRRbXhoYm5GMVpYUW5MRnh1SUNCRGIzTnBibVVnUFNBblEyOXphVzVsSnl4Y2JpQWdTM1ZzWTNwNWJuTnJhU0E5SUNkTGRXeGplbmx1YzJ0cEp5eGNiaUFnVFdORGIyNXVZWFZuYUdWNUlEMGdKMDFqTFVOdmJtNWhkV2RvWlhrbkxGeHVJQ0JTYjJkdmRFZHZiR1JpWlhKbklEMGdKMUp2WjI5MExVZHZiR1JpWlhKbkp5eGNiaUFnVW5WemMyVnNJRDBnSjFKMWMzTmxiQ2NzWEc0Z0lGTnZhMkZzSUQwZ0oxTnZhMkZzSnl4Y2JpQWdTR0Z0YldsdVp5QTlJQ2RJWVcxdGFXNW5KeXhjYmlBZ1JYVmpiR2xrWldGdUlEMGdKMFYxWTJ4cFpHVmhiaWNzWEc1OVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nVm1WamRHOXlMQ0I1T2lCV1pXTjBiM0lwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlZtVmpkRzl5VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ6ZEhKcGJtY3NJSGs2SUhOMGNtbHVaeWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRPaUJtYkM1a2FYTjBZVzVqWlN4Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklHcGhjbTlYYVc1cmJHVnlMRnh1SUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMDZJRzFoYm1oaGRIUmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2N6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwNklIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYVG9nWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMDZJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrdDFiR042ZVc1emEybGRPaUJyZFd4amVubHVjMnRwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZE9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEp2WjI5MFIyOXNaR0psY21kZE9pQnliMmR2ZEVkdmJHUmlaWEpuUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJ5ZFhOelpXeEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFRvZ2MyOXJZV3hFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa2hoYlcxcGJtZGRPaUJvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRPaUJsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmxiblZ0SUVGMllXbHNZV0pzWlUxbGRISnBZM05VZVhCbGN5QjdYRzRnSUZabFkzUnZjaUE5SUNkV1pXTjBiM0luTEZ4dUlDQlRkSEpwYm1jZ1BTQW5VM1J5YVc1bkp5eGNiaUFnUW1sMFFYSnlZWGtnUFNBblFtbDBRWEp5WVhrbkxGeHVJQ0JOWVdOeWIwMXZiR1ZqZFd4bElEMGdKMDFoWTNKdlRXOXNaV04xYkdVblhHNTlYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNCYlFYWmhhV3hoWW14bFRXVjBjbWxqYzFSNWNHVnpMbFpsWTNSdmNsMDZJSHRjYmlBZ0lDQmJWbVZqZEc5eVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDA2SUhabFkzUnZja1JwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlZtVmpkRzl5VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMHNYRzRnSUgwc1hHNGdJRnRCZG1GcGJHRmliR1ZOWlhSeWFXTnpWSGx3WlhNdVUzUnlhVzVuWFRvZ2UxeHVJQ0FnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRPaUJ6ZEhKcGJtZEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TVpYWmxibk5vZEdWcGJsMHNYRzRnSUNBZ1cxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NUtZWEp2VjJsdWEyeGxjbDA2SUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrcGhjbTlYYVc1cmJHVnlYU3hjYmlBZ0lDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMazFoYm1oaGRIUmhibDA2SUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMHNYRzRnSUgwc1hHNGdJRnRCZG1GcGJHRmliR1ZOWlhSeWFXTnpWSGx3WlhNdVFtbDBRWEp5WVhsZE9pQjdYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbFJoYm1sdGIzUnZYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbFJoYm1sdGIzUnZYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UkdsalpWMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUVhV05sWFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUJjM2x0YldWMGNtbGpYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UW5KaGRXNUNiR0Z1Y1hWbGRGMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUNjbUYxYmtKc1lXNXhkV1YwWFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVEyOXphVzVsWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtOdmMybHVaVjBzWEc0Z0lDQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGt0MWJHTjZlVzV6YTJsZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVMzVnNZM3A1Ym5OcmFWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1TlkwTnZibTVoZFdkb1pYbGRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTYjJkdmRFZHZiR1JpWlhKblhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSnZaMjkwUjI5c1pHSmxjbWRkTEZ4dUlDQWdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1U2RYTnpaV3hkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW5WemMyVnNYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VTI5cllXeGRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZExGeHVJQ0I5TEZ4dUlDQmJRWFpoYVd4aFlteGxUV1YwY21samMxUjVjR1Z6TGsxaFkzSnZUVzlzWldOMWJHVmRPaUI3SUM4dklHOXdkR2x2Ym1Gc0lHRnlaM01nWVhKbElHNWxaV1JsWkNCbWIzSWdiV0ZqY205dGIyeGxZM1ZzWlNCbWRXNWpkR2x2Ym5NZ2QyaHBZMmdnYVc1cGRHbGhiR2w2WlNCMGFHVnRYRzRnSUNBZ1cwMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3k1SVFVMU5TVTVIWFRvZ2JXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMxdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVNFRk5UVWxPUjEwc1hHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVNUlZaRlRsTklWRVZKVGwwNklHMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxreEZWa1ZPVTBoVVJVbE9YU3hjYmlBZ0lDQmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxrNUZSVVJNUlUxQlRrNWZWMVZPVTBOSVhUb2diVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMXROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVUa1ZGUkV4RlRVRk9UbDlYVlU1VFEwaGRMRnh1SUNCOUxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0JQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1Z4dUlDQXVjbVZrZFdObEtDaHlaWFE2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtzSUd0bGVTa2dQVDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnZG1Gc0lHOW1JRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iYTJWNUlHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBwS1NCN1hHNGdJQ0FnSUNCeVpYUmJkbUZzSUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMGdQU0JyWlhrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHNJSHQ5S1R0Y2JseHVaWGh3YjNKMElIUjVjR1VnUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTTdYRzVsZUhCdmNuUWdkSGx3WlNCV1pXTjBiM0pOWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlFYWmhhV3hoWW14bFRXVjBjbWxqYzFSNWNHVnpMbFpsWTNSdmNsMDdYRzVsZUhCdmNuUWdkSGx3WlNCVGRISnBibWROWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlFYWmhhV3hoWW14bFRXVjBjbWxqYzFSNWNHVnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEJkbUZwYkdGaWJHVk5aWFJ5YVdOelZIbHdaWE11UW1sMFFYSnlZWGxkTzF4dVpYaHdiM0owSUhSNWNHVWdTMjV2ZDI1TlpYUnlhV056SUQwZ1UzUnlhVzVuVFdWMGNtbGpjeUI4SUVKcGRFRnljbUY1VFdWMGNtbGpjeUI4SUZabFkzUnZjazFsZEhKcFkzTWdmQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTTdYRzVjYm1WNGNHOXlkQ0IwZVhCbElGWmhiR2xrVkhsd1pYTWdQVnh1SUNCN0lHUmhkR0U2SUhOMGNtbHVaMXRkTENCdFpYUnlhV002SUZOMGNtbHVaMDFsZEhKcFkzTWdmQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTWdmU0I4WEc0Z0lIc2daR0YwWVRvZ1ZtVmpkRzl5VzEwc0lHMWxkSEpwWXpvZ1ZtVmpkRzl5VFdWMGNtbGpjeUI5SUh4Y2JpQWdleUJrWVhSaE9pQkNhWFJCY25KaGVWdGRMQ0J0WlhSeWFXTTZJRUpwZEVGeWNtRjVUV1YwY21samN5QjlPMXh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOVGRISnBibWROWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkVGRISnBibWNuTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnSjBKcGRFRnljbUY1Snp0Y2JuMWNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x6Vm1WamRHOXlUV1YwY21saktHNWhiV1U2SUV0dWIzZHVUV1YwY21samN5a2dlMXh1SUNCeVpYUjFjbTRnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR1WVcxbFhTQTlQU0FuVm1WamRHOXlKenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpUV0ZqY205TmIyeGxZM1ZzWlUxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ1FYWmhhV3hoWW14bFRXVjBjbWxqYzFSNWNHVnpMazFoWTNKdlRXOXNaV04xYkdVdWRHOVRkSEpwYm1jb0tUdGNibjFjYmx4dUx5b3FJRTFoYm1oaGRIUmhiaUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFIzYnlCelpYRjFaVzVqWlhNZ0tHMWhkR05vSUMwZ01Dd2diV2x6YldGMFkyZ2dMU0F4S1NCdWIzSnRZV3hwZW1Wa0lHWnZjaUJzWlc1bmRHZ3VJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYldGdWFHRjBkR0Z1UkdsemRHRnVZMlVvY3pFNklITjBjbWx1Wnl3Z2N6STZJSE4wY21sdVp5azZJRzUxYldKbGNpQjdYRzRnSUdsbUlDaHpNUzVzWlc1bmRHZ2dJVDA5SUhNeUxteGxibWQwYUNrZ2UxeHVJQ0FnSUhKbGRIVnliaUF4TzF4dUlDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUd4bGRDQmthWE4wT2lCdWRXMWlaWElnUFNBd08xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXhPeUJwSUR3Z2N6RXViR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUdScGMzUWdLejBnY3pGYmFWMGdQVDBnY3pKYmFWMGdQeUF3SURvZ01UdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1JwYzNRZ0x5QnpNUzVzWlc1bmRHZzdYRzRnSUgxY2JuMWNibHh1THlvcUlGVnVhV1pwWldRZ1kyeGhjM01nYVcxd2JHVnRaVzUwYVc1bklHUnBabVpsY21WdWRDQnpkSEpwYm1jZ2JXVmhjM1Z5WlhNdUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1RXVmhjM1Z5WlNCN1hHNGdJSEJ5YjNSbFkzUmxaQ0J0WlhSb2IyUTZJRXR1YjNkdVRXVjBjbWxqY3p0Y2JpQWdjSEp2ZEdWamRHVmtJR1JoZEdGVWVYQmxPaUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE03WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpYTWdZVzRnYVc1emRHRnVZMlVnYjJZZ1RXVmhjM1Z5WlNCM2FYUm9JQzVjYmlBZ0lDb2dRSEJoY21GdElIdHpkSEpwYm1kOUlHMWxkR2h2WkNCTlpYUm9iMlFnZEc4Z1kyRnNZM1ZzWVhSbElHUnBjM1JoYm1ObElHSmxkSGRsWlc0Z2MzUnlhVzVuY3k1Y2JpQWdJQ29nUUcxbGJXSmxjbTltSUUxbFlYTjFjbVZ5WEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNSdmNpaHRaWFJvYjJRNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQWdJSFJvYVhNdWJXVjBhRzlrSUQwZ2JXVjBhRzlrTzF4dUlDQWdJSFJvYVhNdVpHRjBZVlI1Y0dVZ1BTQk5aWFJ5YVdOVWIwUmhkR0ZVZVhCbFcyMWxkR2h2WkYwZ1lYTWdRWFpoYVd4aFlteGxSR0YwWVZSNWNHVnpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWTNWemRHOXRJSE4wY21sdVp5QmthWE4wWVc1alpTQm1kVzVqZEdsdmJpQnpjR1ZqYVdacFpXUXVYRzRnSUNBcUlFQndZWEpoYlNCN2IzQjBjMzBnYjNCMGN5QlBjSFJwYjI1eklHWnZjaUIwYUdVZ2JXVmhjM1Z5WlM0Z2RYTmxaQ0JtYjNJZ2JXRmpjbTl0YjJ4bFkzVnNaU0JrYVhOMFlXNWpaWE5jYmlBZ0lDb2dRSEpsZEhWeWJpQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlFTmhiR3hpWVdOcklHOW1JSFJvWlNCdFpXRnpkWEpsSUdOb2IzTmxiaTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRTFsWVhOMWNtVnlYRzRnSUNBcUwxeHVJQ0J3ZFdKc2FXTWdaMlYwVFdWaGMzVnlaU2h2Y0hSelB6b2dZVzU1S1RvZ1JHbHpkR0Z1WTJWTlpYUnlhV01nZTF4dUlDQWdJR052Ym5OMElHUnBZM1E2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVHBjYmlBZ0lDQWdJSHRiYTJWNU1qb2djM1J5YVc1blhUb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNZ2ZDQW9LRzl3ZEhNNklHRnVlU2tnUFQ0Z1JHbHpkR0Z1WTJWTlpYUnlhV01wZlZ4dUlDQWdJSDBnUFNCQmRtRnBiR0ZpYkdWTlpYUnlhV056TzF4dUlDQWdJR2xtSUNnaFpHbGpkQzVvWVhOUGQyNVFjbTl3WlhKMGVTaDBhR2x6TG1SaGRHRlVlWEJsS1NCOGZDQWhaR2xqZEZ0MGFHbHpMbVJoZEdGVWVYQmxYUzVvWVhOUGQyNVFjbTl3WlhKMGVTaDBhR2x6TG0xbGRHaHZaQ2twWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRlZ1YTI1dmQyNGdiV1ZoYzNWeVpTQWtlM1JvYVhNdWJXVjBhRzlrZlNCbWIzSWdaR0YwWVNCMGVYQmxJQ1I3ZEdocGN5NWtZWFJoVkhsd1pYMWdLVHRjYmlBZ0lDQnlaWFIxY200Z2FYTk5ZV055YjAxdmJHVmpkV3hsVFdWMGNtbGpLSFJvYVhNdWJXVjBhRzlrS1NBL1hHNGdJQ0FnSUNBb1pHbGpkRnQwYUdsekxtUmhkR0ZVZVhCbFhWdDBhR2x6TG0xbGRHaHZaRjBnWVhNZ0tDaHZjSFJ6T2lCaGJua3BJRDArSUVScGMzUmhibU5sVFdWMGNtbGpLU2tvYjNCMGN5a2dPbHh1SUNBZ0lDQWdaR2xqZEZ0MGFHbHpMbVJoZEdGVWVYQmxYVnQwYUdsekxtMWxkR2h2WkYwZ1lYTWdSR2x6ZEdGdVkyVk5aWFJ5YVdNN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dVbVYwZFhKdWN5QmpkWE4wYjIwZ2MzUnlhVzVuSUdScGMzUmhibU5sSUdKNUlIUm9aU0JuYVhabGJpQmtZWFJoSUhSNWNHVXVYRzRnSUNBcUlFQndZWEpoYlNCN1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWemZTQmtZWFJoVkhsd1pTQk5aWFJ5YVdNbmN5QmtZWFJoSUhSNWNHVmNiaUFnSUNvZ1FISmxkSFZ5YmlCN2MzUnlhVzVuVzExOUlFMWxkSEpwWXlCdVlXMWxjeUIzYUdsamFDQmxlSEJsWTNSeklIUm9aU0JuYVhabGJpQmtZWFJoSUhSNWNHVmNiaUFnSUNvZ1FHMWxiV0psY205bUlFMWxZWE4xY21WeVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2MzUmhkR2xqSUdkbGRFMWxkSEpwWTBKNVJHRjBZVlI1Y0dVb1pHRjBZVlI1Y0dVNklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGN5azZJSE4wY21sdVoxdGRJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG10bGVYTW9RWFpoYVd4aFlteGxUV1YwY21samMxdGtZWFJoVkhsd1pWMHBPMXh1SUNCOVhHNWNiaUFnTHlvcUlGSmxkSFZ5Ym5NZ2JXVjBjbWxqSUc1aGJXVnpJR0YyWVdsc1lXSnNaUzVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRTFsWVhOMWNtVnlYRzRnSUNBcUwxeHVJQ0J6ZEdGMGFXTWdaMlYwSUdGMllXbHNZV0pzWlUxbFlYTjFjbVZ6S0NrNklITjBjbWx1WjF0ZElIdGNiaUFnSUNCeVpYUjFjbTRnVDJKcVpXTjBMbXRsZVhNb1FYWmhhV3hoWW14bFRXVjBjbWxqY3lrN1hHNGdJSDFjYm4xY2JpSmRmUT09IiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgQml0QXJyYXkge1xuICAgIGNvbnN0cnVjdG9yKGFyZywgZGVmYXVsdFZhbHVlID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5fbGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUxldmVsID0gMDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uID0gLTE7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXhlc1ZlcnNpb24gPSAtMTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZSA9ICcnO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA9IC0xO1xuICAgICAgICB0aGlzLlNIUklOS19USFJFU0hPTEQgPSAweDEwMDtcbiAgICAgICAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBjb25zdCBsZW5ndGggPSBhcmc7XG4gICAgICAgICAgICBjb25zdCBidWZmID0gQml0QXJyYXkuX2NyZWF0ZUJ1ZmZlcihsZW5ndGgpO1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnVmZi5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgYnVmZltpXSA9IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGJ1ZmY7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoYXJnIGluc3RhbmNlb2YgVWludDMyQXJyYXkpIHtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBhcmc7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgY29uc3RydWN0b3InKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRSYXdEYXRhKCkgeyByZXR1cm4gdGhpcy5fZGF0YTsgfVxuICAgIGFzc3VyZUdvZXoobnVtLCBhcmdOYW1lKSB7XG4gICAgICAgIGlmIChudW0gPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke2FyZ05hbWV9IHNob3VsZCBiZSBncmVhdGVyIHRoYW4gemVyb2ApO1xuICAgIH1cbiAgICBhc3N1cmVJblJhbmdlKHZhbHVlLCBtaW4sIG1heCwgYXJnTmFtZSkge1xuICAgICAgICBpZiAoKHZhbHVlIDwgbWluKSB8fCAodmFsdWUgPiBtYXgpKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcmd1bWVudCAke2FyZ05hbWV9ICgke3ZhbHVlfSkgb3V0IG9mIHJhbmdlICgke21pbn0sICR7bWF4fSlgKTtcbiAgICB9XG4gICAgY29weShzcmMsIGRzdCwgY291bnQpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuICAgICAgICAgICAgZHN0W2ldID0gc3JjW2ldO1xuICAgIH1cbiAgICBjb3B5RnJvbShvdGhlcikge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG90aGVyLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExlbmd0aHMgZGlmZmVyICgke3RoaXMuX2xlbmd0aH0gIT0gJHtvdGhlci5fbGVuZ3RofSlgKTtcbiAgICAgICAgdGhpcy5jb3B5KG90aGVyLl9kYXRhLCB0aGlzLl9kYXRhLCB0aGlzLmxlbmd0aEluSW50cyk7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgZ2V0IGxlbmd0aCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGJ1ZmZlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuICAgIHNldCBidWZmZXIoZGF0YSkge1xuICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIHNldCB2ZXJzaW9uKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24gPSB2YWx1ZTtcbiAgICB9XG4gICAgaW5jcmVtZW50VmVyc2lvbihub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgZ2V0IGxlbmd0aEluSW50cygpIHtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoKHRoaXMuX2xlbmd0aCArIDB4MWYpIC8gMHgyMCk7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uZWROYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbiA9PSB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA/IHRoaXMuX3ZlcnNpb25lZE5hbWUgOiAnJztcbiAgICB9XG4gICAgc2V0IHZlcnNpb25lZE5hbWUobmFtZSkge1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbmVkTmFtZVZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xuICAgIH1cbiAgICBnZXQgc2VsZigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIHNldExlbmd0aCh2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUgPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdzaG91bGQgYmUgPj0gMCcpO1xuICAgICAgICBpZiAodmFsdWUgPT0gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBuSW50c05lZWRlZCA9IE1hdGguZmxvb3IoKHZhbHVlICsgMHgxZikgLyAweDIwKTtcbiAgICAgICAgaWYgKChuSW50c05lZWRlZCA+IHRoaXMuX2RhdGEubGVuZ3RoKSB8fCAoKG5JbnRzTmVlZGVkICsgdGhpcy5TSFJJTktfVEhSRVNIT0xEKSA8IHRoaXMuX2RhdGEubGVuZ3RoKSkge1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IG5ldyBVaW50MzJBcnJheShuSW50c05lZWRlZCk7XG4gICAgICAgICAgICB0aGlzLmNvcHkodGhpcy5fZGF0YSwgbmV3RGF0YSwgKG5JbnRzTmVlZGVkID4gdGhpcy5fZGF0YS5sZW5ndGgpID8gdGhpcy5fZGF0YS5sZW5ndGggOiBuSW50c05lZWRlZCk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gbmV3RGF0YTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPiB0aGlzLl9sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9sZW5ndGggJSAweDIwID4gMClcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhW3RoaXMubGVuZ3RoSW5JbnRzIC0gMV0gJj0gKDEgPDwgKCh0aGlzLl9sZW5ndGggJSAweDIwKSAmIDB4MWYpKSAtIDE7XG4gICAgICAgICAgICB0aGlzLl9kYXRhLmZpbGwoMCwgdGhpcy5sZW5ndGhJbkludHMsIG5JbnRzTmVlZGVkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9sZW5ndGggPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbUFuZChzZXQxLCBzZXQyKSB7XG4gICAgICAgIGlmIChzZXQxLl9sZW5ndGggIT0gc2V0Mi5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBMZW5ndGhzIGRpZmZlciAoJHtzZXQxLl9sZW5ndGh9ICE9ICR7c2V0Mi5fbGVuZ3RofSlgKTtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShzZXQxLl9sZW5ndGgpO1xuICAgICAgICB0ZW1wLl9sZW5ndGggPSBzZXQxLl9sZW5ndGg7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBCaXRBcnJheS5fY3JlYXRlQnVmZmVyKHRlbXAuX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSBzZXQxLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbaV0gPSBzZXQxLl9kYXRhW2ldICYgc2V0Mi5fZGF0YVtpXTtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIHN0YXRpYyBfY3JlYXRlQnVmZmVyKGxlbmd0aCkge1xuICAgICAgICByZXR1cm4gbmV3IFVpbnQzMkFycmF5KE1hdGguZmxvb3IoKGxlbmd0aCArIDB4MWYpIC8gMHgyMCkpO1xuICAgIH1cbiAgICBzdGF0aWMgZnJvbVZhbHVlcyh2YWx1ZXMpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheSh2YWx1ZXMubGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVtcC5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0pXG4gICAgICAgICAgICAgICAgdGVtcC5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gfD0gMSA8PCAoKGkgJSAweDIwKSAmIDB4MWYpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICAvLy8gQ29uc3RydWN0cyBhIFtCaXRTZXRdIG9mIGxlbmd0aCBbY291bnRdLCB3aGVyZSBpZHgtdGggYml0IGlzIGRldGVybWluZWQgYnkgYSBjYWxsIHRvIFtmbGFnXSAoaWR4KS5cbiAgICBzdGF0aWMgZnJvbVNlcShjb3VudCwgZmxhZykge1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KGNvdW50KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgKytpKVxuICAgICAgICAgICAgdGVtcC5zZXRCaXQoaSwgZmxhZyhpKSk7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgLy8vIENvbnN0cnVjdHMgYSBbQml0U2V0XSBmcm9tIGEgc3RyaW5nIFtzXSBjb250YWluaW5nICcwJyBvciAnMScuXG4gICAgc3RhdGljIGZyb21TdHJpbmcocykge1xuICAgICAgICByZXR1cm4gQml0QXJyYXkuZnJvbVNlcShzLmxlbmd0aCwgKGkpID0+IHMuY2hhckF0KGkpID09ICcxJyk7XG4gICAgfVxuICAgIC8vLyBDb25zdHJ1Y3RzIGEgW0JpdFNldF0sIGJhc2VkIG9uIGxlbmd0aCBbX2xlbmd0aF0gYW5kIGJ5dGUgYXJyYXkgW19kYXRhXS5cbiAgICBzdGF0aWMgZnJvbVVpbnQzMkFycmF5KF9sZW5ndGgsIF9kYXRhKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkoX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBfZGF0YTtcbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIC8vLyBEZXNlcmlhbGl6ZXMgYSBbQml0U2V0XSBmcm9tIFtieXRlc10uXG4gICAgc3RhdGljIGZyb21CeXRlcyhieXRlcykge1xuICAgICAgICBjb25zdCBsZW4gPSBieXRlcy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkobGVuICogOCk7XG4gICAgICAgIHRlbXAuX2RhdGEgPSBuZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcigobGVuICsgMykgLyA0KSk7XG4gICAgICAgIHRlbXAuX2xlbmd0aCA9IGxlbiAqIDg7XG4gICAgICAgIGxldCBudW0xID0gMDtcbiAgICAgICAgbGV0IG51bTIgPSAwO1xuICAgICAgICB3aGlsZSAoKGxlbiAtIG51bTIpID49IDQpIHtcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMSsrXSA9ICgoKGJ5dGVzW251bTJdICYgMHhmZikgfCAoKGJ5dGVzW251bTIgKyAxXSAmIDB4ZmYpIDw8IDgpKSB8XG4gICAgICAgICAgICAgICAgKChieXRlc1tudW0yICsgMl0gJiAweGZmKSA8PCAweDEwKSkgfCAoKGJ5dGVzW251bTIgKyAzXSAmIDB4ZmYpIDw8IDB4MTgpO1xuICAgICAgICAgICAgbnVtMiArPSA0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDMpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdID0gKGJ5dGVzW251bTIgKyAyXSAmIDB4ZmYpIDw8IDB4MTA7XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDIpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdIHw9IChieXRlc1tudW0yICsgMV0gJiAweGZmKSA8PCA4O1xuICAgICAgICBpZiAobGVuIC0gbnVtMiA9PSAxKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xXSB8PSBieXRlc1tudW0yXSAmIDB4ZmY7XG4gICAgICAgIHRlbXAuX3ZlcnNpb24gPSAwO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLl9sZW5ndGh9IGJpdHMsICR7dGhpcy5jb3VudEJpdHModHJ1ZSl9IHNldGA7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyBkZWVwIGNvbXBhcmlzb24gb2YgdHdvIGJpdHNldHMuXG4gICAgZXF1YWxzKG90aGVyKSB7XG4gICAgICAgIGlmICh0aGlzID09IG90aGVyKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmIChvdGhlciA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG90aGVyLl9sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoIC0gMTsgaSsrKVxuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gIT0gb3RoZXIuX2RhdGFbaV0pXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBmb3IgKGxldCBpID0gKHRoaXMuX2RhdGEubGVuZ3RoIC0gMSkgKiA4OyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpKSAhPSBvdGhlci5nZXRCaXQoaSkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICAvKiogQ2xvbmVzIGEgYml0c2V0LiAqL1xuICAgIGNsb25lKCkge1xuICAgICAgICBjb25zdCBiaXRBcnJheSA9IG5ldyBCaXRBcnJheSgwLCBmYWxzZSk7XG4gICAgICAgIGJpdEFycmF5Ll9kYXRhID0gVWludDMyQXJyYXkuZnJvbSh0aGlzLl9kYXRhKTsgLy8gZWZmZWN0aXZlIGxlbmd0aDogKGxlbmd0aEluSW50cylcbiAgICAgICAgYml0QXJyYXkuX2xlbmd0aCA9IHRoaXMuX2xlbmd0aDtcbiAgICAgICAgYml0QXJyYXkuX3ZlcnNpb24gPSB0aGlzLl92ZXJzaW9uO1xuICAgICAgICByZXR1cm4gYml0QXJyYXk7XG4gICAgfVxuICAgIC8qKiBJbml0aWFsaXplcyBhIGJpdHNldC4gKi9cbiAgICBpbml0KGZsYWcsIG5vdGlmeSkge1xuICAgICAgICB0aGlzLnNldEFsbChmYWxzZSwgZmFsc2UpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZmxhZyhpKSlcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8ICgoaSAlIDB4MjApICYgMHgxZik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW52ZXJ0cyBhIGJpdHNldC5cbiAgICBpbnZlcnQobm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldIF49IC0xO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgLy8vIFNldHMgYWxsIGJpdHMgdG8gW3ZhbHVlXSwgb3B0aW9uYWxseSBzdXBwcmVzc2luZyBub3RpZmljYXRpb25zLlxuICAgIHNldEFsbCh2YWx1ZSwgbm90aWZ5ID0gZmFsc2UpIHtcbiAgICAgICAgY29uc3QgZmxhZ3MgPSB2YWx1ZSA/IC0xIDogMDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIC8vdG9kbzogb3B0aW1pemVcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSBmbGFncztcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIC8vLyBTZXRzIGJpdHMgYXQgW2luZGV4ZXNdIHBvc2l0aW9uIHRvIFt2YWx1ZV0uXG4gICAgLy8vIENsZWFycyB0aGUgYml0c2V0IGlmIFtjbGVhcl0gZmxhZyBpcyB0cnVlLlxuICAgIC8vLyBDaGFuZ2Ugbm90aWZpY2F0aW9uIGlzIHJhaXNlZCB3aGVuIFtub3RpZnldIGlzIHRydWUuXG4gICAgc2V0SW5kZXhlcyhpbmRleGVzLCB2YWx1ZSA9IHRydWUsIGNsZWFyID0gdHJ1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAoY2xlYXIpXG4gICAgICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgZm9yIChjb25zdCBpIG9mIGluZGV4ZXMpXG4gICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgdmFsdWUpO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgZXZlcnlJbmRleChpbmRleGVzLCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBvZiBpbmRleGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaW5kZXgpICE9IHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgYW55SW5kZXgoaW5kZXhlcywgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgaW5kZXhlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGluZGV4KSA9PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHNldFdoZXJlKGNoZWNrLCB2YWx1ZSA9IHRydWUsIGNsZWFyID0gdHJ1ZSwgbm90aWZ5ID0gdHJ1ZSwgYWxsb3dDbGVhciA9IHRydWUpIHtcbiAgICAgICAgaWYgKGNsZWFyICYmIGFsbG93Q2xlYXIpXG4gICAgICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUsIGZhbHNlKTtcbiAgICAgICAgaWYgKGFsbG93Q2xlYXIpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hlY2soaSkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2xlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCBjaGVjayhpKSA/IHZhbHVlIDogIXZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgZ2V0UmFuZ2UoZnJvbSwgdG8pIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoLCAndG8nKTtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87ICsraSlcbiAgICAgICAgICAgIGFyci5wdXNoKHRoaXMuZ2V0Qml0KGkpKTtcbiAgICAgICAgcmV0dXJuIEJpdEFycmF5LmZyb21WYWx1ZXMoYXJyKTtcbiAgICB9XG4gICAgZ2V0UmFuZ2VBc0xpc3QoZnJvbSwgdG8pIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoLCAndG8nKTtcbiAgICAgICAgY29uc3QgYXJyID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSBmcm9tOyBpIDwgdG87ICsraSlcbiAgICAgICAgICAgIGFyci5wdXNoKHRoaXMuZ2V0Qml0KGkpKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9XG4gICAgc2V0UmFuZ2UoZnJvbSwgdG8sIHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShmcm9tLCAwLCB0aGlzLl9sZW5ndGggLSAxLCAnZnJvbScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UodG8sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICd0bycpO1xuICAgICAgICBjb25zdCBzdGFydCA9IE1hdGgubWluKGZyb20sIHRvKTtcbiAgICAgICAgY29uc3QgZW5kID0gTWF0aC5tYXgoZnJvbSwgdG8pO1xuICAgICAgICAvL3RvZG86IG9wdGltaXplXG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VHJ1ZShpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZhbHNlKGkpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFNldHMgbiByYW5kb21seSBjaG9zZW4gYml0cyB0byB2YWx1ZSwgcmVtYWluaW5nIGJpdHMgdG8gIXZhbHVlLlxuICAgIHNldFJhbmRvbShuLCB2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAobiA8IDAgfHwgbiA+IHRoaXMuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbiBtdXN0IGJlID49IDAgJiYgPD0gQ291bnQnKTtcbiAgICAgICAgaWYgKG4gPiB0aGlzLl9sZW5ndGggLyAyKVxuICAgICAgICAgICAgdGhpcy5zZXRSYW5kb20odGhpcy5fbGVuZ3RoIC0gbiwgIXZhbHVlKTtcbiAgICAgICAgdGhpcy5zZXRBbGwoIXZhbHVlKTtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOykge1xuICAgICAgICAgICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHRoaXMuX2xlbmd0aCk7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaSkgPT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB0aGlzLnNldEZhc3QoaSwgdmFsdWUpO1xuICAgICAgICAgICAgaysrO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICAvLy8gTW9kaWZpZXMgY3VycmVudCBiaXRzZXQgYnkgcGVyZm9ybWluZyB0aGUgYml0d2lzZSBBTkQgb3BlcmF0aW9uIGFnYWluc3QgdGhlXG4gICAgLy8vIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgYW5kKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSAmPSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgQU5EIE5PVCBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIGFuZE5vdCh2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgbnVtMiA9IDA7IG51bTIgPCBsZW47IG51bTIrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbbnVtMl0gJj0gfnZhbHVlLl9kYXRhW251bTJdO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBOT1QgQU5EIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgbm90QW5kKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9ICh+dGhpcy5fZGF0YVtpXSkgJiB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW52ZXJ0cyBhbGwgYml0IHZhbHVlcyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICBub3Qobm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSB+dGhpcy5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgT1Igb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBvcih2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gfD0gdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIGV4Y2x1c2l2ZSBPUiBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIHhvcih2YWx1ZSwgbm90aWZ5ID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IHZhbHVlLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGxlbmd0aHMgZGlmZmVyLicpO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7IGkgPCBsZW47IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gXj0gdmFsdWUuX2RhdGFbaV07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIEluc2VydHMgbiAwLWJpdHMgYXQgcG9zaXRpb24gcG9zLCByZXNpemluZyBzZWxmIGFuZCBzaGlmdGluZyBiaXRzIGFwcHJvcHJpYXRlbHkuXG4gICAgaW5zZXJ0QXQocG9zLCBuLCBmbGFnID0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHBvcywgMCwgdGhpcy5fbGVuZ3RoLCAncG9zJyk7XG4gICAgICAgIGlmIChuID09IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vVE9ETzogb3B0aW1pemVcbiAgICAgICAgLy90aGUgbW9zdCBwcmltaXRpdmUgaW1wbGVtZW50YXRpb24sIG9wdGltaXplIGl0IGxhdGVyIVxuICAgICAgICAvLyBiZWdpblVwZGF0ZSgpO1xuICAgICAgICBjb25zdCBvbGRsZW5ndGggPSB0aGlzLl9sZW5ndGg7XG4gICAgICAgIHRoaXMuc2V0TGVuZ3RoKHRoaXMuX2xlbmd0aCArIG4pO1xuICAgICAgICAvL2lmICghY29udGFpbnMoIWZsYWcpKSByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgZm9yIChsZXQgaSA9IG9sZGxlbmd0aCAtIDE7IGkgPj0gcG9zOyBpLS0pXG4gICAgICAgICAgICB0aGlzLnNldEJpdChpICsgbiwgdGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICBmb3IgKGxldCBpID0gcG9zOyBpIDwgcG9zICsgbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5zZXRCaXQoaSwgZmxhZyk7XG4gICAgICAgIC8vIGVuZFVwZGF0ZSgpO1xuICAgIH1cbiAgICAvLy8gRGVsZXRlcyBuIGJpdHMgYmVnaW5uaW5nIGF0IHBvc2l0aW9uIHBvcywgcmVzaXppbmcgc2VsZiBhbmQgc2hpZnRpbmcgcmVtYWluaW5nXG4gICAgLy8vIGJpdHMgYXBwcm9wcmlhdGVseS5cbiAgICByZW1vdmVBdChwb3MsIG4gPSAxKSB7XG4gICAgICAgIC8vIHRoZSBtb3N0IHByaW1pdGl2ZSBpbXBsZW1lbnRhdGlvbiwgb3B0aW1pemUgaXQgbGF0ZXIhXG4gICAgICAgIGlmIChuIDwgMClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbiBjYW5ub3QgYmUgbmVnYXRpdmUnKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHBvcywgMCwgdGhpcy5fbGVuZ3RoIC0gbiwgJ3BvcycpO1xuICAgICAgICBpZiAodGhpcy5jb250YWlucyh0cnVlKSkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHBvczsgaSA8IHRoaXMuX2xlbmd0aCAtIG47IGkrKylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEJpdChpLCB0aGlzLmdldEJpdChpICsgbikpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0TGVuZ3RoKHRoaXMuX2xlbmd0aCAtIG4pO1xuICAgIH1cbiAgICByZW1vdmVCeU1hc2sobWFzaywgZmxhZyA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSBtYXNrLmxlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbGVuZ3RoICE9IG1hc2subGVuZ3RoJyk7XG4gICAgICAgIGlmIChtYXNrID09IHRoaXMpIHsgLy8gbm8gbmVlZCB0byBpdGVyYXRlXG4gICAgICAgICAgICB0aGlzLnNldExlbmd0aChtYXNrLmNvdW50Qml0cyghZmxhZykpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbGwoIWZsYWcpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbGV0IGRzdElkeCA9IDA7XG4gICAgICAgICAgICBmb3IgKGxldCBzcmNJZHggPSAtMTsgKHNyY0lkeCA9IG1hc2suZmluZE5leHQoc3JjSWR4LCAhZmxhZykpICE9IC0xOylcbiAgICAgICAgICAgICAgICB0aGlzLnNldEZhc3QoZHN0SWR4KyssIHRoaXMuZ2V0Qml0KHNyY0lkeCkpO1xuICAgICAgICAgICAgdGhpcy5fbGVuZ3RoID0gZHN0SWR4O1xuICAgICAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gU2ltaWxhciB0byB0aGUgW10gb3BlcmF0b3IuXG4gICAgZ2V0Qml0KHBvcykge1xuICAgICAgICByZXR1cm4gKHRoaXMuX2RhdGFbTWF0aC5mbG9vcihwb3MgLyAweDIwKV0gJiAoMSA8PCAocG9zICYgMHgxZikpKSAhPSAwO1xuICAgIH1cbiAgICAvLy8gU2ltaWxhciB0byB0aGUgW10gb3BlcmF0b3IuXG4gICAgc2V0Qml0KHBvcywgYml0LCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuc2V0RmFzdChwb3MsIGJpdCk7XG4gICAgICAgIGlmIChub3RpZnkpXG4gICAgICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICB9XG4gICAgLy8vIFNldHMgW2ldLXRoIGJpdCB0byBbdmFsdWVdLCBkb2VzIG5vdCBjaGVjayBib3VuZHMsIGRvZXMgbm90IGluY3JlbWVudCB2ZXJzaW9uXG4gICAgc2V0RmFzdChpLCB2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpXG4gICAgICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8IChpICYgMHgxZik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldICY9IH4oMSA8PCAoaSAmIDB4MWYpKTtcbiAgICB9XG4gICAgc2V0VHJ1ZShwb3MpIHtcbiAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSB8PSAxIDw8IChwb3MgJiAweDFmKTtcbiAgICB9XG4gICAgc2V0RmFsc2UocG9zKSB7XG4gICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihwb3MgLyAweDIwKV0gJj0gfigxIDw8IChwb3MgJiAweDFmKSk7XG4gICAgfVxuICAgIHRydWVDb3VudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKHRydWUpO1xuICAgIH1cbiAgICBmYWxzZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHMoZmFsc2UpO1xuICAgIH1cbiAgICAvLy8gQ291bnRzIGJpdHMgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZS5cbiAgICBjb3VudEJpdHModmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZENvdW50VmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICAgICAgZm9yICg7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBrID0gdGhpcy5fZGF0YVtpXTsgayAhPSAwOyBrID4+Pj0gOCkgeyAvL3RvZG86IGNhc3QgZGF0YVtpXSB0byB1aW50XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFRoZSBsYXN0IGludC5cbiAgICAgICAgICAgIGxldCBrID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ0JpdHMgPSB0aGlzLl9sZW5ndGggJiAweDFmO1xuICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMCkgLyogaWYgcmVtYWluaW5nQml0cyA9PSAwLCB0aGUgbGFzdCBpbnQgaXMgZnVsbHkgdXNlZCBhbmQgQUxMIGJpdHMgc2hvdWxkIGJlIGxlZnQgYXMgaXMgKi9cbiAgICAgICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICAgICAgZm9yICg7IGsgIT0gMDsgayA+Pj49IDgpXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50VmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh2YWx1ZSA/IHRoaXMuX3NlbGVjdGVkQ291bnQgOiB0aGlzLl9sZW5ndGggLSB0aGlzLl9zZWxlY3RlZENvdW50KTtcbiAgICB9XG4gICAgLy8vIFJldHVybnMgYSBudW1iZXIgb2Ygc2V0IGJpdHMgd2hlcmUgYWxzbyBbY2hlY2tdIGlzIHRydWVcbiAgICBjb3VudFdoZXJlKGNoZWNrKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgICBpZiAodGhpcy50cnVlQ291bnQoKSA9PSB0aGlzLl9sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNoZWNrKGkpID8gMSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gLTE7IChpID0gdGhpcy5maW5kTmV4dChpLCB0cnVlKSkgIT0gLTE7KVxuICAgICAgICAgICAgICAgIHJlc3VsdCArPSBjaGVjayhpKSA/IDEgOiAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyBiaXQgXCJhbmRcIiBhbmQgY291bnRzIGJpdHMgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSwgd2l0aG91dCBiaXRzZXQgbW9kaWZpY2F0aW9uLlxuICAgIGFuZFdpdGhDb3VudEJpdHMoc2Vjb25kLCB2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoID09IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yICg7IGkgPCBsZW4gLSAxOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGsgPSB0aGlzLl9kYXRhW2ldICYgc2Vjb25kLl9kYXRhW2ldOyBrICE9IDA7IGsgPj4+PSA4KVxuICAgICAgICAgICAgICAgIGNvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgbGFzdCBpbnQuXG4gICAgICAgIGxldCBrID0gdGhpcy5fZGF0YVtpXSAmIHNlY29uZC5fZGF0YVtpXTtcbiAgICAgICAgY29uc3QgcmVtYWluaW5nQml0cyA9IHRoaXMuX2xlbmd0aCAmIDB4MWY7XG4gICAgICAgIGlmIChyZW1haW5pbmdCaXRzICE9IDApXG4gICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICBmb3IgKDsgayAhPSAwOyBrID4+Pj0gOClcbiAgICAgICAgICAgIGNvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgcmV0dXJuICh2YWx1ZSA/IGNvdW50IDogdGhpcy5fbGVuZ3RoIC0gY291bnQpO1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgdGhpcy5zZXRMZW5ndGgoMCk7XG4gICAgfVxuICAgIGNvbnRhaW5zKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZpbmROZXh0KC0xLCB2YWx1ZSkgPj0gMDtcbiAgICB9XG4gICAgZ2V0IGFsbFRydWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyh0cnVlKSA9PSB0aGlzLl9sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbGxGYWxzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKGZhbHNlKSA9PSB0aGlzLl9sZW5ndGg7XG4gICAgfVxuICAgIGdldCBhbnlUcnVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHModHJ1ZSkgPiAwO1xuICAgIH1cbiAgICBnZXQgYW55RmFsc2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyhmYWxzZSkgPiAwO1xuICAgIH1cbiAgICAvLy8gUmV0dXJucyB0aGUgcG9zaXRpb24gb2YgdGhlIG5leHQgYml0IG9mIHRoZSBzcGVjaWZpZWQgdmFsdWUsIHN0YXJ0aW5nIGZyb20gdGhlIHNwZWNpZmllZCBwb3NpdGlvbi5cbiAgICAvLy8gUmV0dXJucyAtMSwgaWYgdGhlcmUgYXJlIG5vIHN1Y2ggYml0cy5cbiAgICBmaW5kTmV4dChpbmRleCwgdmFsdWUgPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShpbmRleCwgLTEsIHRoaXMuX2xlbmd0aCwgJ2luZGV4Jyk7XG4gICAgICAgIGlmIChpbmRleCA+PSB0aGlzLl9sZW5ndGggLSAxKVxuICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICBpbmRleCA9IGluZGV4IDwgMCA/IDAgOiBpbmRleCArIDE7IC8vIHNraXAgc3RhcnRcbiAgICAgICAgbGV0IHVudXNlZEJpdHMgPSBpbmRleCAmIDB4MWY7XG4gICAgICAgIGNvbnN0IG51bUludHMgPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IE1hdGguZmxvb3IoaW5kZXggLyAzMik7IGkgPCBudW1JbnRzOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBrID0gKHZhbHVlID8gdGhpcy5fZGF0YVtpXSA6IH50aGlzLl9kYXRhW2ldKTsgLy8gdWludCBjYXN0XG4gICAgICAgICAgICBpZiAodW51c2VkQml0cyAhPSAwKSB7XG4gICAgICAgICAgICAgICAgayAmPSAoKDB4ZmZmZmZmZmYgPDwgdW51c2VkQml0cykgJiAweGZmZmZmZmZmKTtcbiAgICAgICAgICAgICAgICB1bnVzZWRCaXRzID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKCF2YWx1ZSAmJiBrID09IC00Mjk0OTY3Mjk2KSAvKiBsb29raW5nIGZvciBmYWxzZSwgYWxsIGJpdHMgYXJlIHNldCAqLyB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgayAhPSAwOyBqICs9IDgsIGsgPj4+PSA4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IEJpdEFycmF5Ll9maXJzdE9uQml0W2sgJiAweGZmXTtcbiAgICAgICAgICAgICAgICBpZiAocCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcCArIChpICogMzIpICsgajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuX2xlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxuICAgIC8vLyBGaW5kcyBwcmV2aW91cyBiaXQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSBpbiB0aGUgYml0c2V0LlxuICAgIGZpbmRQcmV2KGluZGV4LCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgaWYgKGluZGV4ID09IDApXG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZShpbmRleCwgLTEsIHRoaXMuX2xlbmd0aCwgJ2luZGV4Jyk7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gdGhpcy5fbGVuZ3RoIC0gMSA6IGluZGV4IC0gMTsgLy8gc2tpcCBzdGFydFxuICAgICAgICBjb25zdCBsYXN0SW50SWR4ID0gTWF0aC5mbG9vcihpbmRleCAvIDB4MjApO1xuICAgICAgICBsZXQgcmVtYWluaW5nQml0cyA9IChpbmRleCArIDEpICYgMHgxZjtcbiAgICAgICAgZm9yIChsZXQgaSA9IGxhc3RJbnRJZHg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBsZXQgayA9ICh2YWx1ZSA/IHRoaXMuX2RhdGFbaV0gOiB+dGhpcy5fZGF0YVtpXSk7IC8vIGNhc3RcbiAgICAgICAgICAgIGlmIChyZW1haW5pbmdCaXRzICE9IDApIHtcbiAgICAgICAgICAgICAgICBrICY9IH4oKDQyOTQ5NjcyOTUpIDw8IHJlbWFpbmluZ0JpdHMpO1xuICAgICAgICAgICAgICAgIHJlbWFpbmluZ0JpdHMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDI0OyBrICE9IDA7IGogLT0gOCwgayA8PD0gOCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHAgPSBCaXRBcnJheS5fbGFzdE9uQml0W2sgPj4+IDB4MThdO1xuICAgICAgICAgICAgICAgIGlmIChwID49IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwICsgKGkgKiAzMikgKyBqO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG59XG5CaXRBcnJheS5fb25CaXRDb3VudCA9IEludDhBcnJheS5mcm9tKFtcbiAgICAwLCAxLCAxLCAyLCAxLCAyLCAyLCAzLCAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LCA1LCA2LCA2LCA3LCA2LCA3LCA3LCA4XG5dKTtcbkJpdEFycmF5Ll9maXJzdE9uQml0ID0gSW50OEFycmF5LmZyb20oW1xuICAgIC0xLCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDYsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNywgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA2LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwXG5dKTtcbkJpdEFycmF5Ll9sYXN0T25CaXQgPSBJbnQ4QXJyYXkuZnJvbShbXG4gICAgLTEsIDAsIDEsIDEsIDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsIDMsIDMsIDMsIDMsXG4gICAgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCwgNCxcbiAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDdcbl0pO1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWW1sMExXRnljbUY1TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lZbWwwTFdGeWNtRjVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTBzUTBGQlF5eFBRVUZQTEU5QlFVOHNVVUZCVVR0SlFXOUZNMElzV1VGQldTeEhRVUY1UWl4RlFVRkZMR1ZCUVdsRExFdEJRVXM3VVVGYWNrVXNXVUZCVHl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOYUxHRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWWl4cFFrRkJXU3hIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5xUWl4dFFrRkJZeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU51UWl3d1FrRkJjVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTXpRaXcwUWtGQmRVSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNM1FpeHRRa0ZCWXl4SFFVRkhMRVZCUVVVc1EwRkJRenRSUVVOd1Fpd3dRa0ZCY1VJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU51UXl4eFFrRkJaMElzUjBGQlJ5eExRVUZMTEVOQlFVTTdVVUZMZGtJc1NVRkJTU3hQUVVGUExFZEJRVWNzUzBGQlN5eFJRVUZSTEVWQlFVVTdXVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eERRVUZETzFsQlEyNUNMRTFCUVUwc1NVRkJTU3hIUVVGSExGRkJRVkVzUTBGQlF5eGhRVUZoTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1dVRkROVU1zU1VGQlNTeFpRVUZaTEVWQlFVVTdaMEpCUTJoQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRiRU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRMmhDTzFsQlEwUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGJFSXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhOUVVGTkxFTkJRVU03VTBGRGRrSTdZVUZCVFN4SlFVRkpMRWRCUVVjc1dVRkJXU3hYUVVGWExFVkJRVVU3V1VGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGclFpeERRVUZETzFsQlEyaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzV1VGQmMwSXNRMEZCUXp0VFFVTjJRenRoUVVGTk8xbEJRMHdzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4eFFrRkJjVUlzUTBGQlF5eERRVUZETzFOQlEzaERPMGxCUTBnc1EwRkJRenRKUVVkRUxGVkJRVlVzUzBGQlN5eFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSVzVETEZWQlFWVXNRMEZCUXl4SFFVRlhMRVZCUVVVc1QwRkJaVHRSUVVOeVF5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUVVVc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eEhRVUZITEU5QlFVOHNPRUpCUVRoQ0xFTkJRVU1zUTBGQlF6dEpRVU42UlN4RFFVRkRPMGxCUlVRc1lVRkJZU3hEUVVGRExFdEJRV0VzUlVGQlJTeEhRVUZYTEVWQlFVVXNSMEZCVnl4RlFVRkZMRTlCUVdVN1VVRkRjRVVzU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZITEVOQlFVTTdXVUZEYUVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eFpRVUZaTEU5QlFVOHNTMEZCU3l4TFFVRkxMRzFDUVVGdFFpeEhRVUZITEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOd1JpeERRVUZETzBsQlJVUXNTVUZCU1N4RFFVRkRMRWRCUVdkQ0xFVkJRVVVzUjBGQlowSXNSVUZCUlN4TFFVRmhPMUZCUTNCRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlF6VkNMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRjRUlzUTBGQlF6dEpRVVZFTEZGQlFWRXNRMEZCUXl4TFFVRmxPMUZCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUenRaUVVNdlFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRzFDUVVGdFFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4UFFVRlBMRXRCUVVzc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6RkZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEV0QlFVc3NSVUZCUlN4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTjBSQ3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRUxFbEJRVWtzVFVGQlRUdFJRVU5TTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRKUVVOMFFpeERRVUZETzBsQlJVUXNTVUZCU1N4TlFVRk5PMUZCUTFJc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETzBsQlEzQkNMRU5CUVVNN1NVRkZSQ3hKUVVGSkxFMUJRVTBzUTBGQlF5eEpRVUZwUWp0UlFVTXhRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTnNRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdTVUZEYkVJc1EwRkJRenRKUVVWRUxFbEJRVWtzVDBGQlR6dFJRVU5VTEU5QlFVOHNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJRenRKUVVOMlFpeERRVUZETzBsQlJVUXNTVUZCU1N4UFFVRlBMRU5CUVVNc1MwRkJZVHRSUVVOMlFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVONFFpeERRVUZETzBsQlJVUXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVazdVVUZETlVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hKUVVGSkxGbEJRVms3VVVGRFpDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRMnhFTEVOQlFVTTdTVUZGUkN4SlFVRkpMR0ZCUVdFN1VVRkRaaXhQUVVGUExFbEJRVWtzUTBGQlF5eFJRVUZSTEVsQlFVa3NTVUZCU1N4RFFVRkRMSEZDUVVGeFFpeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZEYUVZc1EwRkJRenRKUVVWRUxFbEJRVWtzWVVGQllTeERRVUZETEVsQlFWazdVVUZETlVJc1NVRkJTU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZETTBJc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03U1VGRE4wTXNRMEZCUXp0SlFVVkVMRWxCUVVrc1NVRkJTVHRSUVVOT0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMRk5CUVZNc1EwRkJReXhMUVVGaE8xRkJRM0pDTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNN1dVRkRXQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEdkQ1FVRm5RaXhEUVVGRExFTkJRVU03VVVGRmNFTXNTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVTg3V1VGQlJTeFBRVUZQTzFGQlEyeERMRTFCUVUwc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eFhRVUZYTEVkQlFVY3NTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFpRVU53Unl4TlFVRk5MRTlCUVU4c1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVTTNReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRVZCUVVVc1QwRkJUeXhGUVVGRkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0WlFVTndSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEU5QlFVOHNRMEZCUXp0VFFVTjBRanRSUVVWRUxFbEJRVWtzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRlRUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRE8yZENRVU42UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eFpRVUZaTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkZha1lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNWMEZCVnl4RFFVRkRMRU5CUVVNN1UwRkRjRVE3VVVGRFJDeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEUxQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNc1NVRkJZeXhGUVVGRkxFbEJRV003VVVGRE0wTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTzFsQlF6bENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYlVKQlFXMUNMRWxCUVVrc1EwRkJReXhQUVVGUExFOUJRVThzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkZla1VzVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzaERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTTFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eEhRVUZITEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyeEVMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlJXeENMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRE1VSXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZhRVFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlU4c1RVRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZqTzFGQlEzcERMRTlCUVU4c1NVRkJTU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpkRUxFTkJRVU03U1VGRlJDeE5RVUZOTEVOQlFVTXNWVUZCVlN4RFFVRkRMRTFCUVhOQ08xRkJRM1JETEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTjZReXhKUVVGSkxFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVVnNRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTnlReXhKUVVGSkxFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTFnc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUTJoRk8xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2MwZEJRWE5ITzBsQlEzUkhMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zUzBGQllTeEZRVUZGTEVsQlFXTTdVVUZETVVNc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFdEJRVXNzUlVGQlJTeEZRVUZGTEVOQlFVTTdXVUZETlVJc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRk1VSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGJFSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzYTBWQlFXdEZPMGxCUTJ4RkxFMUJRVTBzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCVXp0UlFVTjZRaXhQUVVGUExGRkJRVkVzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hEUVVGRExFTkJRVk1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTjJSU3hEUVVGRE8wbEJSVVFzTkVWQlFUUkZPMGxCUXpWRkxFMUJRVTBzUTBGQlF5eGxRVUZsTEVOQlFVTXNUMEZCWlN4RlFVRkZMRXRCUVd0Q08xRkJRM2hFTEUxQlFVMHNTVUZCU1N4SFFVRkhMRWxCUVVrc1VVRkJVU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyNURMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUzBGQlN5eERRVUZETzFGQlEyNUNMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEhsRFFVRjVRenRKUVVONlF5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRMRXRCUVdsQ08xRkJRMmhETEUxQlFVMHNSMEZCUnl4SFFVRkhMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVrSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaEVMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEWWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRllpeFBRVUZQTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU40UWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVkQlFVY3NRMEZEYmtJc1EwRkJReXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRlRVFzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUTI1RExFZEJRVWNzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkZka01zU1VGQlNTeEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTllPMUZCUlVRc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeEpRVUZKTEVOQlFVTTdXVUZEYWtJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRE8xRkJSWFJFTEVsQlFVa3NSMEZCUnl4SFFVRkhMRWxCUVVrc1NVRkJTU3hEUVVGRE8xbEJRMnBDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVndSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVsQlFVa3NRMEZCUXp0WlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTTdVVUZGZWtNc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNVVUZCVVR0UlFVTk9MRTlCUVU4c1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eFZRVUZWTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF6dEpRVU0zUkN4RFFVRkRPMGxCUlVRc05FTkJRVFJETzBsQlF6VkRMRTFCUVUwc1EwRkJReXhMUVVGbE8xRkJRM0JDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRXRCUVVzN1dVRkJSU3hQUVVGUExFbEJRVWtzUTBGQlF6dFJRVU12UWl4SlFVRkpMRXRCUVVzc1NVRkJTU3hKUVVGSk8xbEJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEYUVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMWxCUVVVc1QwRkJUeXhMUVVGTExFTkJRVU03VVVGRGFFUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVVnVReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVNMVF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZGY0VRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0WlFVTXZSQ3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUTI1RExFOUJRVThzUzBGQlN5eERRVUZETzFOQlEyaENPMUZCUTBRc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNkVUpCUVhWQ08wbEJRM1pDTEV0QlFVczdVVUZEU0N4TlFVRk5MRkZCUVZFc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eERRVUZETEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRlRU1zVVVGQlVTeERRVUZETEV0QlFVc3NSMEZCUnl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRzFEUVVGdFF6dFJRVU5zUml4UlFVRlJMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEYUVNc1VVRkJVU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUTJ4RExFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3cwUWtGQk5FSTdTVUZETlVJc1NVRkJTU3hEUVVGRExFbEJRV01zUlVGQlJTeE5RVUZsTzFGQlEyeERMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUTNKRExFbEJRVWtzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRWQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRhRVU3VVVGRlJDeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdVVUZET1VJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNjVUpCUVhGQ08wbEJRM0pDTEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVOc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGZEVJc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN4dFJVRkJiVVU3U1VGRGJrVXNUVUZCVFN4RFFVRkRMRXRCUVdNc1JVRkJSU3hOUVVGTkxFZEJRVWNzUzBGQlN6dFJRVU51UXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRE4wSXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVVU1UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRkxHZENRVUZuUWp0WlFVTTFReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRSUVVWNFFpeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxDdERRVUVyUXp0SlFVTXZReXc0UTBGQk9FTTdTVUZET1VNc2QwUkJRWGRFTzBsQlEzaEVMRlZCUVZVc1EwRkJReXhQUVVGelFpeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRVZCUVVVc1MwRkJTeXhIUVVGSExFbEJRVWtzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTXhSU3hKUVVGSkxFdEJRVXM3V1VGRFVDeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJUZENMRXRCUVVzc1RVRkJUU3hEUVVGRExFbEJRVWtzVDBGQlR6dFpRVU55UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUlVGQlJTeExRVUZMTEVOQlFVTXNRMEZCUXp0UlFVVjZRaXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGFFTXNRMEZCUXp0SlFVVkVMRlZCUVZVc1EwRkJReXhQUVVGelFpeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpPMUZCUXpkRExFdEJRVXNzVFVGQlRTeExRVUZMTEVsQlFVa3NUMEZCVHl4RlFVRkZPMWxCUXpOQ0xFbEJRVWtzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hMUVVGTE8yZENRVU0zUWl4UFFVRlBMRXRCUVVzc1EwRkJRenRUUVVOb1FqdFJRVU5FTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxGRkJRVkVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSk8xRkJRek5ETEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1QwRkJUeXhGUVVGRk8xbEJRek5DTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTzJkQ1FVTTNRaXhQUVVGUExFbEJRVWtzUTBGQlF6dFRRVU5tTzFGQlEwUXNUMEZCVHl4TFFVRkxMRU5CUVVNN1NVRkRaaXhEUVVGRE8wbEJSVVFzVVVGQlVTeERRVUZETEV0QlFXVXNSVUZCUlN4TFFVRkxMRWRCUVVjc1NVRkJTU3hGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrc1JVRkJSU3hWUVVGVkxFZEJRVWNzU1VGQlNUdFJRVU53Uml4SlFVRkpMRXRCUVVzc1NVRkJTU3hWUVVGVk8xbEJRM0pDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGTjBJc1NVRkJTU3hWUVVGVkxFVkJRVVU3V1VGRFpDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGNrTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8yOUNRVU5XTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzJGQlF6RkNPMU5CUTBZN1lVRkJUVHRaUVVOTUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlR0blFrRkRia01zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVMEZET1VNN1VVRkZSQ3hKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03U1VGRGFFTXNRMEZCUXp0SlFVVkVMRkZCUVZFc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZUdFJRVU12UWl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZET1VNc1RVRkJUU3hIUVVGSExFZEJRVzFDTEVWQlFVVXNRMEZCUXp0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVsQlFVa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFVkJRVVVzUTBGQlF6dFpRVU0xUWl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpeFBRVUZQTEZGQlFWRXNRMEZCUXl4VlFVRlZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGJFTXNRMEZCUXp0SlFVVkVMR05CUVdNc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZUdFJRVU55UXl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZET1VNc1RVRkJUU3hIUVVGSExFZEJRV01zUlVGQlJTeERRVUZETzFGQlF6RkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzU1VGQlNTeEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRelZDTEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFOUJRVThzUjBGQlJ5eERRVUZETzBsQlEySXNRMEZCUXp0SlFVZEVMRkZCUVZFc1EwRkJReXhKUVVGWkxFVkJRVVVzUlVGQlZTeEZRVUZGTEV0QlFXTXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNNVJDeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRGRFUXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlJXeEVMRTFCUVUwc1MwRkJTeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJRMnBETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMUZCUlM5Q0xHZENRVUZuUWp0UlFVTm9RaXhKUVVGSkxFdEJRVXNzUlVGQlJUdFpRVU5VTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1MwRkJTeXhGUVVGRkxFTkJRVU1zU1VGQlNTeEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVNdlFpeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRMjVDTzJGQlFVMDdXVUZEVEN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFdEJRVXNzUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU53UWp0UlFVVkVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3h0UlVGQmJVVTdTVUZEYmtVc1UwRkJVeXhEUVVGRExFTkJRVk1zUlVGQlJTeExRVUZqTEVWQlFVVXNUVUZCVFN4SFFVRkhMRWxCUVVrN1VVRkRhRVFzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR6dFpRVU16UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExEUkNRVUUwUWl4RFFVRkRMRU5CUVVNN1VVRkZhRVFzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVVelF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRmNFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnp0WlFVTjBRaXhOUVVGTkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1dVRkRia1FzU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFdEJRVXM3WjBKQlFVVXNVMEZCVXp0WlFVTjBReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRaUVVOMlFpeERRVUZETEVWQlFVVXNRMEZCUXp0VFFVTk1PMUZCUlVRc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRMmhETEVOQlFVTTdTVUZGUkN3clJVRkJLMFU3U1VGREwwVXNiVVJCUVcxRU8wbEJRMjVFTEVkQlFVY3NRMEZCUXl4TFFVRmxMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWs3VVVGRGFFTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFBRVUZQTzFsQlF5OUNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRSUVVVelF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU51UkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmJFTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMR2RHUVVGblJqdEpRVU5vUml3clJFRkJLMFE3U1VGREwwUXNUVUZCVFN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU51UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRE9VSXNTMEZCU3l4SlFVRkpMRWxCUVVrc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeEhRVUZITEVkQlFVY3NSVUZCUlN4SlFVRkpMRVZCUVVVN1dVRkRia01zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZla01zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzFGQlF6bENMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEdkR1FVRm5SanRKUVVOb1Jpd3JSRUZCSzBRN1NVRkRMMFFzVFVGQlRTeERRVUZETEV0QlFXVXNSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVOdVF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1MwRkJTeXhEUVVGRExFOUJRVTg3V1VGREwwSXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4RFFVRkRPMUZCUlRORExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRMjVFTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eExRVUZMTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhQUVVGUExFbEJRVWtzUTBGQlF6dEpRVU5rTEVOQlFVTTdTVUZGUkN4blJFRkJaMFE3U1VGRGFFUXNSMEZCUnl4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSk8xRkJRMllzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVWQlFVVXNRMEZCUXl4SFFVRkhMRWRCUVVjc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGJrUXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFrTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMREpGUVVFeVJUdEpRVU16UlN3clJFRkJLMFE3U1VGREwwUXNSVUZCUlN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU12UWl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNUVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVVZzUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRPVUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2NVWkJRWEZHTzBsQlEzSkdMQ3RFUVVFclJEdEpRVU12UkN4SFFVRkhMRU5CUVVNc1MwRkJaU3hGUVVGRkxFMUJRVTBzUjBGQlJ5eEpRVUZKTzFGQlEyaERMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNUMEZCVHp0WlFVTXZRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhWQ1FVRjFRaXhEUVVGRExFTkJRVU03VVVGRk0wTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJXeERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3h2UmtGQmIwWTdTVUZEY0VZc1VVRkJVU3hEUVVGRExFZEJRVmNzUlVGQlJTeERRVUZUTEVWQlFVVXNTVUZCU1N4SFFVRkhMRXRCUVVzN1VVRkRNME1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZhRVFzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0WlFVRkZMRTlCUVU4N1VVRkZia0lzWjBKQlFXZENPMUZCUTJoQ0xIVkVRVUYxUkR0UlFVVjJSQ3hwUWtGQmFVSTdVVUZEYWtJc1RVRkJUU3hUUVVGVExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTXZRaXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFrTXNaMFJCUVdkRU8xRkJSV2hFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1UwRkJVeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NSMEZCUnl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOMlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJSWEpETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVOb1F5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dFJRVVYyUWl4bFFVRmxPMGxCUTJwQ0xFTkJRVU03U1VGRlJDeHJSa0ZCYTBZN1NVRkRiRVlzZFVKQlFYVkNPMGxCUTNaQ0xGRkJRVkVzUTBGQlF5eEhRVUZYTEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNN1VVRkRla0lzZDBSQlFYZEVPMUZCUTNoRUxFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdXVUZEVUN4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExITkNRVUZ6UWl4RFFVRkRMRU5CUVVNN1VVRkZNVU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSWEJFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTzJkQ1FVTjZReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMU5CUTNSRE8xRkJSVVFzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEyNURMRU5CUVVNN1NVRkZSQ3haUVVGWkxFTkJRVU1zU1VGQll5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpPMUZCUTNSRExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUVHRaUVVNM1FpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZGTTBNc1NVRkJTU3hKUVVGSkxFbEJRVWtzU1VGQlNTeEZRVUZGTEVWQlFVVXNjVUpCUVhGQ08xbEJRM1pETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkRkRU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRM0JDTzJGQlFVMDdXVUZEVEN4SlFVRkpMRTFCUVUwc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRlppeExRVUZMTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRMnBGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJSVGxETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1RVRkJUU3hEUVVGRE8xbEJRM1JDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRUUVVOcVFqdFJRVVZFTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxDdENRVUVyUWp0SlFVTXZRaXhOUVVGTkxFTkJRVU1zUjBGQlZ6dFJRVU5vUWl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNN1NVRkRla1VzUTBGQlF6dEpRVVZFTEN0Q1FVRXJRanRKUVVNdlFpeE5RVUZOTEVOQlFVTXNSMEZCVnl4RlFVRkZMRWRCUVZrc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU0zUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTjJRaXhKUVVGSkxFMUJRVTA3V1VGRFVpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN08xbEJSV2hDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1EwRkJRenRKUVVOd1FpeERRVUZETzBsQlJVUXNhVVpCUVdsR08wbEJRMnBHTEU5QlFVOHNRMEZCUXl4RFFVRlRMRVZCUVVVc1MwRkJZenRSUVVNdlFpeEpRVUZKTEV0QlFVczdXVUZEVUN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE96dFpRVVZ3UkN4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6TkVMRU5CUVVNN1NVRkZSQ3hQUVVGUExFTkJRVU1zUjBGQlZ6dFJRVU5xUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRekZFTEVOQlFVTTdTVUZGUkN4UlFVRlJMRU5CUVVNc1IwRkJWenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemRFTEVOQlFVTTdTVUZGUkN4VFFVRlRPMUZCUTFBc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUXpsQ0xFTkJRVU03U1VGRlJDeFZRVUZWTzFGQlExSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETzBsQlF5OUNMRU5CUVVNN1NVRkZSQ3gxUTBGQmRVTTdTVUZEZGtNc1UwRkJVeXhEUVVGRExFdEJRV003VVVGRGRFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhKUVVGSkxFTkJRVU03V1VGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVm9ReXhKUVVGSkxFbEJRVWtzUTBGQlF5eHhRa0ZCY1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTzFsQlF5OURMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzaENMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdXVUZET1VJc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlExWXNUMEZCVHl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0blFrRkRka0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJTeEZRVUZGTERSQ1FVRTBRanR2UWtGRE1VVXNTVUZCU1N4RFFVRkRMR05CUVdNc1NVRkJTU3hSUVVGUkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRwUWtGRGRrUTdZVUZEUmp0WlFVVkVMR2RDUVVGblFqdFpRVU5vUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFMUJRVTBzWVVGQllTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRekZETEVsQlFVa3NZVUZCWVN4SlFVRkpMRU5CUVVNc1JVRkJSU3g1UmtGQmVVWTdaMEpCUXk5SExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hoUVVGaExFTkJRVU1zUTBGQlF6dFpRVVY0UXl4UFFVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdaMEpCUTNKQ0xFbEJRVWtzUTBGQlF5eGpRVUZqTEVsQlFVa3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdXVUZGZUVRc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU03VTBGRE5VTTdVVUZGUkN4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4alFVRmpMRU5CUVVNc1EwRkJRenRKUVVNMVJTeERRVUZETzBsQlJVUXNNa1JCUVRKRU8wbEJRek5FTEZWQlFWVXNRMEZCUXl4TFFVRmxPMUZCUTNoQ0xFbEJRVWtzVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTm1MRWxCUVVrc1NVRkJTU3hEUVVGRExGTkJRVk1zUlVGQlJTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRjRU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVOdVF5eE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVNNVFqdGhRVUZOTzFsQlEwd3NTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRGFrUXNUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VTBGRE9VSTdVVUZEUkN4UFFVRlBMRTFCUVUwc1EwRkJRenRKUVVOb1FpeERRVUZETzBsQlJVUXNNa1pCUVRKR08wbEJRek5HTEdkQ1FVRm5RaXhEUVVGRExFMUJRV2RDTEVWQlFVVXNTMEZCWXp0UlFVTXZReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NRMEZCUXp0WlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSV2hETEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOa0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRPVUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFZc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOMlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1RVRkJUU3hEUVVGRE8yZENRVU0xUkN4TFFVRkxMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1UwRkRNME03VVVGRlJDeG5Ra0ZCWjBJN1VVRkRhRUlzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM2hETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlF6RkRMRWxCUVVrc1lVRkJZU3hKUVVGSkxFTkJRVU03V1VGRGNFSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEdGQlFXRXNRMEZCUXl4RFFVRkRPMUZCUTNoRExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJRenRaUVVOeVFpeExRVUZMTEVsQlFVa3NVVUZCVVN4RFFVRkRMRmRCUVZjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZGTVVNc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUTJoRUxFTkJRVU03U1VGRlJDeExRVUZMTzFGQlEwZ3NTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UWl4RFFVRkRPMGxCUlVRc1VVRkJVU3hEUVVGRExFdEJRV003VVVGRGNrSXNUMEZCVHl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBsQlJVUXNTVUZCU1N4UFFVRlBPMUZCUTFRc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU03U1VGRE9VTXNRMEZCUXp0SlFVVkVMRWxCUVVrc1VVRkJVVHRSUVVOV0xFOUJRVThzU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETzBsQlF5OURMRU5CUVVNN1NVRkZSQ3hKUVVGSkxFOUJRVTg3VVVGRFZDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyeERMRU5CUVVNN1NVRkZSQ3hKUVVGSkxGRkJRVkU3VVVGRFZpeFBRVUZQTEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEyNURMRU5CUVVNN1NVRkZSQ3h6UjBGQmMwYzdTVUZEZEVjc01FTkJRVEJETzBsQlF6RkRMRkZCUVZFc1EwRkJReXhMUVVGaExFVkJRVVVzUzBGQlN5eEhRVUZITEVsQlFVazdVVUZEYkVNc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVnlSQ3hKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNN1dVRkJSU3hQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzcERMRXRCUVVzc1IwRkJSeXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4aFFVRmhPMUZCUTJoRUxFbEJRVWtzVlVGQlZTeEhRVUZITEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRPVUlzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVWc1F5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUzBGQlN5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZEY2tRc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1dVRkJXVHRaUVVNNVJDeEpRVUZKTEZWQlFWVXNTVUZCU1N4RFFVRkRMRVZCUVVVN1owSkJRMjVDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1ZVRkJWU3hKUVVGSkxGVkJRVlVzUTBGQlF5eEhRVUZITEZWQlFWVXNRMEZCUXl4RFFVRkRPMmRDUVVNdlF5eFZRVUZWTEVkQlFVY3NRMEZCUXl4RFFVRkRPMkZCUTJoQ08ybENRVUZOTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEZRVUZGTEhsRFFVRjVReXhEUVVGQk8yZENRVU01UlN4VFFVRlRPMkZCUTFZN1dVRkZSQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRuUWtGRGVFTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJRM3BETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSVHR2UWtGRFZpeExRVUZMTEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0dlFrRkRla0lzU1VGQlNTeExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4N2QwSkJRVVVzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0dlFrRkRja01zVDBGQlR5eExRVUZMTEVOQlFVTTdhVUpCUTJRN1lVRkRSanRUUVVOR08xRkJRMFFzVDBGQlR5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTmFMRU5CUVVNN1NVRkZSQ3cwUkVGQk5FUTdTVUZETlVRc1VVRkJVU3hEUVVGRExFdEJRV0VzUlVGQlJTeExRVUZMTEVkQlFVY3NTVUZCU1R0UlFVTnNReXhKUVVGSkxFdEJRVXNzU1VGQlNTeERRVUZETzFsQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNeFFpeEpRVUZKTEVOQlFVTXNZVUZCWVN4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJSWEpFTEV0QlFVc3NSMEZCUnl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMR0ZCUVdFN1VVRkZMMFFzVFVGQlRTeFZRVUZWTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETlVNc1NVRkJTU3hoUVVGaExFZEJRVWNzUTBGQlF5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJSWFpETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1ZVRkJWU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRjRU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVDBGQlR6dFpRVU42UkN4SlFVRkpMR0ZCUVdFc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEzUkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4aFFVRmhMRU5CUVVNc1EwRkJRenRuUWtGRGRFTXNZVUZCWVN4SFFVRkhMRU5CUVVNc1EwRkJRenRoUVVOdVFqdFpRVU5FTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTzJkQ1FVTjRReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eFJRVUZSTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZETVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF6dHZRa0ZEVWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1lVRkRNMEk3VTBGRFJqdFJRVU5FTEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRXaXhEUVVGRE96dEJRWEoxUWswc2IwSkJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTJ4RExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03UTBGQlF5eERRVUZETEVOQlFVTTdRVUZGTlVNc2IwSkJRVmNzUjBGQlJ5eFRRVUZUTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTJ4RExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTXZReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dERRVUZETEVOQlFVTXNRMEZCUXp0QlFVVTFReXh0UWtGQlZTeEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRU5CUVVNN1NVRkRha01zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXk5RExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBOQlFVTXNRMEZCUXl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWlhod2IzSjBJR1JsWm1GMWJIUWdZMnhoYzNNZ1FtbDBRWEp5WVhrZ2UxeHVJQ0J6ZEdGMGFXTWdYMjl1UW1sMFEyOTFiblFnUFNCSmJuUTRRWEp5WVhrdVpuSnZiU2hiWEc0Z0lDQWdNQ3dnTVN3Z01Td2dNaXdnTVN3Z01pd2dNaXdnTXl3Z01Td2dNaXdnTWl3Z015d2dNaXdnTXl3Z015d2dOQ3hjYmlBZ0lDQXhMQ0F5TENBeUxDQXpMQ0F5TENBekxDQXpMQ0EwTENBeUxDQXpMQ0F6TENBMExDQXpMQ0EwTENBMExDQTFMRnh1SUNBZ0lERXNJRElzSURJc0lETXNJRElzSURNc0lETXNJRFFzSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBeExDQXlMQ0F5TENBekxDQXlMQ0F6TENBekxDQTBMQ0F5TENBekxDQXpMQ0EwTENBekxDQTBMQ0EwTENBMUxGeHVJQ0FnSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNJRE1zSURRc0lEUXNJRFVzSURRc0lEVXNJRFVzSURZc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxDQTBMQ0ExTENBMUxDQTJMQ0ExTENBMkxDQTJMQ0EzTEZ4dUlDQWdJREVzSURJc0lESXNJRE1zSURJc0lETXNJRE1zSURRc0lESXNJRE1zSURNc0lEUXNJRE1zSURRc0lEUXNJRFVzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXlMQ0F6TENBekxDQTBMQ0F6TENBMExDQTBMQ0ExTENBekxDQTBMQ0EwTENBMUxDQTBMQ0ExTENBMUxDQTJMRnh1SUNBZ0lETXNJRFFzSURRc0lEVXNJRFFzSURVc0lEVXNJRFlzSURRc0lEVXNJRFVzSURZc0lEVXNJRFlzSURZc0lEY3NYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBekxDQTBMQ0EwTENBMUxDQTBMQ0ExTENBMUxDQTJMQ0EwTENBMUxDQTFMQ0EyTENBMUxDQTJMQ0EyTENBM0xGeHVJQ0FnSURNc0lEUXNJRFFzSURVc0lEUXNJRFVzSURVc0lEWXNJRFFzSURVc0lEVXNJRFlzSURVc0lEWXNJRFlzSURjc1hHNGdJQ0FnTkN3Z05Td2dOU3dnTml3Z05Td2dOaXdnTml3Z055d2dOU3dnTml3Z05pd2dOeXdnTml3Z055d2dOeXdnT0YwcE8xeHVYRzRnSUhOMFlYUnBZeUJmWm1seWMzUlBia0pwZENBOUlFbHVkRGhCY25KaGVTNW1jbTl0S0Z0Y2JpQWdJQ0F0TVN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EwTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFVzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOQ3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTJMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEUXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Td2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMExDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURjc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTkN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0ExTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRFFzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOaXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTBMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEVXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Dd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01GMHBPMXh1WEc0Z0lITjBZWFJwWXlCZmJHRnpkRTl1UW1sMElEMGdTVzUwT0VGeWNtRjVMbVp5YjIwb1cxeHVJQ0FnSUMweExDQXdMQ0F4TENBeExDQXlMQ0F5TENBeUxDQXlMQ0F6TENBekxDQXpMQ0F6TENBekxDQXpMQ0F6TENBekxGeHVJQ0FnSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc1hHNGdJQ0FnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN4Y2JpQWdJQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTEZ4dUlDQWdJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzWEc0Z0lDQWdOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXhjYmlBZ0lDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMRnh1SUNBZ0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNYRzRnSUNBZ055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055eGNiaUFnSUNBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xGeHVJQ0FnSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc1hHNGdJQ0FnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl4Y2JpQWdJQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTEZ4dUlDQWdJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzWEc0Z0lDQWdOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXhjYmlBZ0lDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNYU2s3WEc1Y2JpQWdjSEpwZG1GMFpTQmZaR0YwWVRvZ1ZXbHVkRE15UVhKeVlYazdYRzRnSUhCeWFYWmhkR1VnWDJ4bGJtZDBhQ0E5SURBN1hHNGdJSEJ5YVhaaGRHVWdYM1psY25OcGIyNGdQU0F3TzF4dUlDQndjbWwyWVhSbElGOTFjR1JoZEdWTVpYWmxiQ0E5SURBN1hHNGdJSEJ5YVhaaGRHVWdYM05sYkdWamRHVmtRMjkxYm5RZ1BTQXdPMXh1SUNCd2NtbDJZWFJsSUY5elpXeGxZM1JsWkVOdmRXNTBWbVZ5YzJsdmJpQTlJQzB4TzF4dUlDQndjbWwyWVhSbElGOXpaV3hsWTNSbFpFbHVaR1Y0WlhOV1pYSnphVzl1SUQwZ0xURTdYRzRnSUhCeWFYWmhkR1VnWDNabGNuTnBiMjVsWkU1aGJXVWdQU0FuSnp0Y2JpQWdjSEpwZG1GMFpTQmZkbVZ5YzJsdmJtVmtUbUZ0WlZabGNuTnBiMjRnUFNBdE1UdGNiaUFnVTBoU1NVNUxYMVJJVWtWVFNFOU1SQ0E5SURCNE1UQXdPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLR1JoZEdFNklGVnBiblF6TWtGeWNtRjVMQ0JzWlc1bmRHZzZJRzUxYldKbGNpbGNiaUFnWTI5dWMzUnlkV04wYjNJb2JHVnVaM1JvT2lCdWRXMWlaWElzSUdSbFptRjFiSFJXWVd4MVpUODZJR0p2YjJ4bFlXNHBYRzRnSUdOdmJuTjBjblZqZEc5eUtHRnlaem9nYm5WdFltVnlJSHdnVldsdWRETXlRWEp5WVhrc0lHUmxabUYxYkhSV1lXeDFaVG9nWW05dmJHVmhiaUI4SUc1MWJXSmxjaUE5SUdaaGJITmxLU0I3WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJoY21jZ1BUMDlJQ2R1ZFcxaVpYSW5LU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnNaVzVuZEdnZ1BTQmhjbWM3WEc0Z0lDQWdJQ0JqYjI1emRDQmlkV1ptSUQwZ1FtbDBRWEp5WVhrdVgyTnlaV0YwWlVKMVptWmxjaWhzWlc1bmRHZ3BPMXh1SUNBZ0lDQWdhV1lnS0dSbFptRjFiSFJXWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUdKMVptWXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0FnSUNBZ1luVm1abHRwWFNBOUlDMHhPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZU0E5SUdKMVptWTdYRzRnSUNBZ0lDQjBhR2x6TGw5c1pXNW5kR2dnUFNCc1pXNW5kR2c3WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2hoY21jZ2FXNXpkR0Z1WTJWdlppQlZhVzUwTXpKQmNuSmhlU2tnZTF4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHRnlaeUJoY3lCVmFXNTBNekpCY25KaGVUdGNiaUFnSUNBZ0lIUm9hWE11WDJ4bGJtZDBhQ0E5SUdSbFptRjFiSFJXWVd4MVpTQmhjeUJ1ZFcxaVpYSTdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduU1c1MllXeHBaQ0JqYjI1emRISjFZM1J2Y2ljcE8xeHVJQ0FnSUgxY2JpQWdmVnh1WEc1Y2JpQWdaMlYwVW1GM1JHRjBZU2dwSUhzZ2NtVjBkWEp1SUhSb2FYTXVYMlJoZEdFN0lIMWNibHh1SUNCaGMzTjFjbVZIYjJWNktHNTFiVG9nYm5WdFltVnlMQ0JoY21kT1lXMWxPaUJUZEhKcGJtY3BPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9iblZ0SUR3Z01Da2dkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQWtlMkZ5WjA1aGJXVjlJSE5vYjNWc1pDQmlaU0JuY21WaGRHVnlJSFJvWVc0Z2VtVnliMkFwTzF4dUlDQjlYRzVjYmlBZ1lYTnpkWEpsU1c1U1lXNW5aU2gyWVd4MVpUb2diblZ0WW1WeUxDQnRhVzQ2SUc1MWJXSmxjaXdnYldGNE9pQnVkVzFpWlhJc0lHRnlaMDVoYldVNklGTjBjbWx1WnlrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNnb2RtRnNkV1VnUENCdGFXNHBJSHg4SUNoMllXeDFaU0ErSUcxaGVDa3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFRnlaM1Z0Wlc1MElDUjdZWEpuVG1GdFpYMGdLQ1I3ZG1Gc2RXVjlLU0J2ZFhRZ2IyWWdjbUZ1WjJVZ0tDUjdiV2x1ZlN3Z0pIdHRZWGg5S1dBcE8xeHVJQ0I5WEc1Y2JpQWdZMjl3ZVNoemNtTTZJRlZwYm5Rek1rRnljbUY1TENCa2MzUTZJRlZwYm5Rek1rRnljbUY1TENCamIzVnVkRG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmpiM1Z1ZERzZ2FTc3JLVnh1SUNBZ0lDQWdaSE4wVzJsZElEMGdjM0pqVzJsZE8xeHVJQ0I5WEc1Y2JpQWdZMjl3ZVVaeWIyMG9iM1JvWlhJNklFSnBkRUZ5Y21GNUtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0FoUFNCdmRHaGxjaTVmYkdWdVozUm9LVnh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtHQk1aVzVuZEdoeklHUnBabVpsY2lBb0pIdDBhR2x6TGw5c1pXNW5kR2g5SUNFOUlDUjdiM1JvWlhJdVgyeGxibWQwYUgwcFlDazdYRzRnSUNBZ2RHaHBjeTVqYjNCNUtHOTBhR1Z5TGw5a1lYUmhMQ0IwYUdsekxsOWtZWFJoTENCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3lrN1hHNGdJQ0FnZEdocGN5NWZkbVZ5YzJsdmJpc3JPMXh1SUNCOVhHNWNiaUFnWjJWMElHeGxibWQwYUNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZiR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdKMVptWmxjaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVHRjYmlBZ2ZWeHVYRzRnSUhObGRDQmlkV1ptWlhJb1pHRjBZVG9nVldsdWRETXlRWEp5WVhrcElIdGNiaUFnSUNCMGFHbHpMbDlrWVhSaElEMGdaR0YwWVR0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0JuWlhRZ2RtVnljMmx2YmlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWZkbVZ5YzJsdmJqdGNiaUFnZlZ4dVhHNGdJSE5sZENCMlpYSnphVzl1S0haaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1SUQwZ2RtRnNkV1U3WEc0Z0lIMWNibHh1SUNCcGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU0E5SUhSeWRXVXBPaUIyYjJsa0lIdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lIMWNibHh1SUNCblpYUWdiR1Z1WjNSb1NXNUpiblJ6S0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUJOWVhSb0xtWnNiMjl5S0NoMGFHbHpMbDlzWlc1bmRHZ2dLeUF3ZURGbUtTQXZJREI0TWpBcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUhabGNuTnBiMjVsWkU1aGJXVW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WDNabGNuTnBiMjRnUFQwZ2RHaHBjeTVmZG1WeWMybHZibVZrVG1GdFpWWmxjbk5wYjI0Z1B5QjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxJRG9nSnljN1hHNGdJSDFjYmx4dUlDQnpaWFFnZG1WeWMybHZibVZrVG1GdFpTaHVZVzFsT2lCemRISnBibWNwSUh0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dVpXUk9ZVzFsSUQwZ2JtRnRaVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxWbVZ5YzJsdmJpQTlJSFJvYVhNdVgzWmxjbk5wYjI0N1hHNGdJSDFjYmx4dUlDQm5aWFFnYzJWc1ppZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUhObGRFeGxibWQwYUNoMllXeDFaVG9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLSFpoYkhWbElEd2dNQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25jMmh2ZFd4a0lHSmxJRDQ5SURBbktUdGNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTQTlQU0IwYUdsekxsOXNaVzVuZEdncElISmxkSFZ5Ymp0Y2JpQWdJQ0JqYjI1emRDQnVTVzUwYzA1bFpXUmxaQ0E5SUUxaGRHZ3VabXh2YjNJb0tIWmhiSFZsSUNzZ01IZ3haaWtnTHlBd2VESXdLVHRjYmlBZ0lDQnBaaUFvS0c1SmJuUnpUbVZsWkdWa0lENGdkR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ3BJSHg4SUNnb2JrbHVkSE5PWldWa1pXUWdLeUIwYUdsekxsTklVa2xPUzE5VVNGSkZVMGhQVEVRcElEd2dkR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ3BLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQnVaWGRFWVhSaElEMGdibVYzSUZWcGJuUXpNa0Z5Y21GNUtHNUpiblJ6VG1WbFpHVmtLVHRjYmlBZ0lDQWdJSFJvYVhNdVkyOXdlU2gwYUdsekxsOWtZWFJoTENCdVpYZEVZWFJoTENBb2JrbHVkSE5PWldWa1pXUWdQaUIwYUdsekxsOWtZWFJoTG14bGJtZDBhQ2tnUHlCMGFHbHpMbDlrWVhSaExteGxibWQwYUNBNklHNUpiblJ6VG1WbFpHVmtLVHRjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0VnUFNCdVpYZEVZWFJoTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoMllXeDFaU0ErSUhSb2FYTXVYMnhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWxJREI0TWpBZ1BpQXdLVnh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtZWFJoVzNSb2FYTXViR1Z1WjNSb1NXNUpiblJ6SUMwZ01WMGdKajBnS0RFZ1BEd2dLQ2gwYUdsekxsOXNaVzVuZEdnZ0pTQXdlREl3S1NBbUlEQjRNV1lwS1NBdElERTdYRzVjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0V1Wm1sc2JDZ3dMQ0IwYUdsekxteGxibWQwYUVsdVNXNTBjeXdnYmtsdWRITk9aV1ZrWldRcE8xeHVJQ0FnSUgxY2JpQWdJQ0IwYUdsekxsOXNaVzVuZEdnZ1BTQjJZV3gxWlR0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0J6ZEdGMGFXTWdabkp2YlVGdVpDaHpaWFF4T2lCQ2FYUkJjbkpoZVN3Z2MyVjBNam9nUW1sMFFYSnlZWGtwT2lCQ2FYUkJjbkpoZVNCN1hHNGdJQ0FnYVdZZ0tITmxkREV1WDJ4bGJtZDBhQ0FoUFNCelpYUXlMbDlzWlc1bmRHZ3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFeGxibWQwYUhNZ1pHbG1abVZ5SUNna2UzTmxkREV1WDJ4bGJtZDBhSDBnSVQwZ0pIdHpaWFF5TGw5c1pXNW5kR2g5S1dBcE8xeHVYRzRnSUNBZ1kyOXVjM1FnZEdWdGNDQTlJRzVsZHlCQ2FYUkJjbkpoZVNoelpYUXhMbDlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDJ4bGJtZDBhQ0E5SUhObGRERXVYMnhsYm1kMGFEdGNiaUFnSUNCMFpXMXdMbDlrWVhSaElEMGdRbWwwUVhKeVlYa3VYMk55WldGMFpVSjFabVpsY2loMFpXMXdMbDlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVYRzRnSUNBZ1kyOXVjM1FnYkdWdUlEMGdjMlYwTVM1c1pXNW5kR2hKYmtsdWRITTdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnNaVzQ3SUdrckt5bGNiaUFnSUNBZ0lIUmxiWEF1WDJSaGRHRmJhVjBnUFNCelpYUXhMbDlrWVhSaFcybGRJQ1lnYzJWME1pNWZaR0YwWVZ0cFhUdGNibHh1SUNBZ0lISmxkSFZ5YmlCMFpXMXdPMXh1SUNCOVhHNWNiaUFnY0hKcGRtRjBaU0J6ZEdGMGFXTWdYMk55WldGMFpVSjFabVpsY2loc1pXNW5kR2c2SUc1MWJXSmxjaWs2SUZWcGJuUXpNa0Z5Y21GNUlIdGNiaUFnSUNCeVpYUjFjbTRnYm1WM0lGVnBiblF6TWtGeWNtRjVLRTFoZEdndVpteHZiM0lvS0d4bGJtZDBhQ0FySURCNE1XWXBJQzhnTUhneU1Da3BPMXh1SUNCOVhHNWNiaUFnYzNSaGRHbGpJR1p5YjIxV1lXeDFaWE1vZG1Gc2RXVnpPaUJCY25KaGVUeGliMjlzWldGdVBpazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCMFpXMXdJRDBnYm1WM0lFSnBkRUZ5Y21GNUtIWmhiSFZsY3k1c1pXNW5kR2dwTzF4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdhU0E5SURBN0lHa2dQQ0IwWlcxd0xsOXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIWmhiSFZsYzF0cFhTbGNiaUFnSUNBZ0lDQWdkR1Z0Y0M1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0drZ0x5QXdlREl3S1YwZ2ZEMGdNU0E4UENBb0tHa2dKU0F3ZURJd0tTQW1JREI0TVdZcE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdkR1Z0Y0R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJEYjI1emRISjFZM1J6SUdFZ1cwSnBkRk5sZEYwZ2IyWWdiR1Z1WjNSb0lGdGpiM1Z1ZEYwc0lIZG9aWEpsSUdsa2VDMTBhQ0JpYVhRZ2FYTWdaR1YwWlhKdGFXNWxaQ0JpZVNCaElHTmhiR3dnZEc4Z1cyWnNZV2RkSUNocFpIZ3BMbHh1SUNCemRHRjBhV01nWm5KdmJWTmxjU2hqYjNWdWREb2diblZ0WW1WeUxDQm1iR0ZuT2lCR2RXNWpkR2x2YmlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0IwWlcxd0lEMGdibVYzSUVKcGRFRnljbUY1S0dOdmRXNTBLVHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR052ZFc1ME95QXJLMmtwWEc0Z0lDQWdJQ0IwWlcxd0xuTmxkRUpwZENocExDQm1iR0ZuS0drcEtUdGNibHh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVOdmJuTjBjblZqZEhNZ1lTQmJRbWwwVTJWMFhTQm1jbTl0SUdFZ2MzUnlhVzVuSUZ0elhTQmpiMjUwWVdsdWFXNW5JQ2N3SnlCdmNpQW5NU2N1WEc0Z0lITjBZWFJwWXlCbWNtOXRVM1J5YVc1bktITTZJSE4wY21sdVp5azZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQnlaWFIxY200Z1FtbDBRWEp5WVhrdVpuSnZiVk5sY1NoekxteGxibWQwYUN3Z0tHazZJRzUxYldKbGNpa2dQVDRnY3k1amFHRnlRWFFvYVNrZ1BUMGdKekVuS1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJEYjI1emRISjFZM1J6SUdFZ1cwSnBkRk5sZEYwc0lHSmhjMlZrSUc5dUlHeGxibWQwYUNCYlgyeGxibWQwYUYwZ1lXNWtJR0o1ZEdVZ1lYSnlZWGtnVzE5a1lYUmhYUzVjYmlBZ2MzUmhkR2xqSUdaeWIyMVZhVzUwTXpKQmNuSmhlU2hmYkdWdVozUm9PaUJ1ZFcxaVpYSXNJRjlrWVhSaE9pQlZhVzUwTXpKQmNuSmhlU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQjBaVzF3SUQwZ2JtVjNJRUpwZEVGeWNtRjVLRjlzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDJSaGRHRWdQU0JmWkdGMFlUdGNiaUFnSUNCeVpYUjFjbTRnZEdWdGNEdGNiaUFnZlZ4dVhHNGdJQzh2THlCRVpYTmxjbWxoYkdsNlpYTWdZU0JiUW1sMFUyVjBYU0JtY205dElGdGllWFJsYzEwdVhHNGdJSE4wWVhScFl5Qm1jbTl0UW5sMFpYTW9ZbmwwWlhNNklGVnBiblE0UVhKeVlYa3BPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdZMjl1YzNRZ2JHVnVJRDBnWW5sMFpYTXViR1Z1WjNSb08xeHVJQ0FnSUdOdmJuTjBJSFJsYlhBZ1BTQnVaWGNnUW1sMFFYSnlZWGtvYkdWdUlDb2dPQ2s3WEc0Z0lDQWdkR1Z0Y0M1ZlpHRjBZU0E5SUc1bGR5QlZhVzUwTXpKQmNuSmhlU2hOWVhSb0xtWnNiMjl5S0Noc1pXNGdLeUF6S1NBdklEUXBLVHRjYmlBZ0lDQjBaVzF3TGw5c1pXNW5kR2dnUFNCc1pXNGdLaUE0TzF4dUlDQWdJR3hsZENCdWRXMHhJRDBnTUR0Y2JpQWdJQ0JzWlhRZ2JuVnRNaUE5SURBN1hHNWNiaUFnSUNCM2FHbHNaU0FvS0d4bGJpQXRJRzUxYlRJcElENDlJRFFwSUh0Y2JpQWdJQ0FnSUhSbGJYQXVYMlJoZEdGYmJuVnRNU3NyWFNBOUlDaGNiaUFnSUNBZ0lDQWdLQ2hpZVhSbGMxdHVkVzB5WFNBbUlEQjRabVlwSUh3Z0tDaGllWFJsYzF0dWRXMHlJQ3NnTVYwZ0ppQXdlR1ptS1NBOFBDQTRLU2tnZkZ4dUlDQWdJQ0FnSUNBb0tHSjVkR1Z6VzI1MWJUSWdLeUF5WFNBbUlEQjRabVlwSUR3OElEQjRNVEFwWEc0Z0lDQWdJQ0FwSUh3Z0tDaGllWFJsYzF0dWRXMHlJQ3NnTTEwZ0ppQXdlR1ptS1NBOFBDQXdlREU0S1R0Y2JseHVJQ0FnSUNBZ2JuVnRNaUFyUFNBME8xeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaHNaVzRnTFNCdWRXMHlJRDA5SURNcFhHNGdJQ0FnSUNCMFpXMXdMbDlrWVhSaFcyNTFiVEZkSUQwZ0tHSjVkR1Z6VzI1MWJUSWdLeUF5WFNBbUlEQjRabVlwSUR3OElEQjRNVEE3WEc1Y2JpQWdJQ0JwWmlBb2JHVnVJQzBnYm5WdE1pQTlQU0F5S1Z4dUlDQWdJQ0FnZEdWdGNDNWZaR0YwWVZ0dWRXMHhYU0I4UFNBb1lubDBaWE5iYm5WdE1pQXJJREZkSUNZZ01IaG1aaWtnUER3Z09EdGNibHh1SUNBZ0lHbG1JQ2hzWlc0Z0xTQnVkVzB5SUQwOUlERXBYRzRnSUNBZ0lDQjBaVzF3TGw5a1lYUmhXMjUxYlRGZElIdzlJR0o1ZEdWelcyNTFiVEpkSUNZZ01IaG1aanRjYmx4dUlDQWdJSFJsYlhBdVgzWmxjbk5wYjI0Z1BTQXdPMXh1SUNBZ0lISmxkSFZ5YmlCMFpXMXdPMXh1SUNCOVhHNWNiaUFnZEc5VGRISnBibWNvS1RvZ2MzUnlhVzVuSUh0Y2JpQWdJQ0J5WlhSMWNtNGdZQ1I3ZEdocGN5NWZiR1Z1WjNSb2ZTQmlhWFJ6TENBa2UzUm9hWE11WTI5MWJuUkNhWFJ6S0hSeWRXVXBmU0J6WlhSZ08xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUdSbFpYQWdZMjl0Y0dGeWFYTnZiaUJ2WmlCMGQyOGdZbWwwYzJWMGN5NWNiaUFnWlhGMVlXeHpLRzkwYUdWeU9pQkNhWFJCY25KaGVTazZJR0p2YjJ4bFlXNGdlMXh1SUNBZ0lHbG1JQ2gwYUdseklEMDlJRzkwYUdWeUtTQnlaWFIxY200Z2RISjFaVHRjYmlBZ0lDQnBaaUFvYjNSb1pYSWdQVDBnYm5Wc2JDa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dJVDBnYjNSb1pYSXVYMnhsYm1kMGFDa2djbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dQVDBnTUNrZ2NtVjBkWEp1SUhSeWRXVTdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9JQzBnTVRzZ2FTc3JLVnh1SUNBZ0lDQWdhV1lnS0hSb2FYTXVYMlJoZEdGYmFWMGdJVDBnYjNSb1pYSXVYMlJoZEdGYmFWMHBJSEpsZEhWeWJpQm1ZV3h6WlR0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQW9kR2hwY3k1ZlpHRjBZUzVzWlc1bmRHZ2dMU0F4S1NBcUlEZzdJR2tnUENCMGFHbHpMbDlzWlc1bmRHZzdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVoyVjBRbWwwS0drcElDRTlJRzkwYUdWeUxtZGxkRUpwZENocEtTbGNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RISjFaVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkRiRzl1WlhNZ1lTQmlhWFJ6WlhRdUlDb3ZYRzRnSUdOc2IyNWxLQ2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQmlhWFJCY25KaGVTQTlJRzVsZHlCQ2FYUkJjbkpoZVNnd0xDQm1ZV3h6WlNrN1hHNGdJQ0FnWW1sMFFYSnlZWGt1WDJSaGRHRWdQU0JWYVc1ME16SkJjbkpoZVM1bWNtOXRLSFJvYVhNdVgyUmhkR0VwT3lBdkx5QmxabVpsWTNScGRtVWdiR1Z1WjNSb09pQW9iR1Z1WjNSb1NXNUpiblJ6S1Z4dUlDQWdJR0pwZEVGeWNtRjVMbDlzWlc1bmRHZ2dQU0IwYUdsekxsOXNaVzVuZEdnN1hHNGdJQ0FnWW1sMFFYSnlZWGt1WDNabGNuTnBiMjRnUFNCMGFHbHpMbDkyWlhKemFXOXVPMXh1SUNBZ0lISmxkSFZ5YmlCaWFYUkJjbkpoZVR0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJKYm1sMGFXRnNhWHBsY3lCaElHSnBkSE5sZEM0Z0tpOWNiaUFnYVc1cGRDaG1iR0ZuT2lCR2RXNWpkR2x2Yml3Z2JtOTBhV1o1T2lCaWIyOXNaV0Z1S1RvZ1FtbDBRWEp5WVhrZ2UxeHVJQ0FnSUhSb2FYTXVjMlYwUVd4c0tHWmhiSE5sTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMnhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9abXhoWnlocEtTbGNiaUFnSUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0drZ0x5QXdlREl3S1YwZ2ZEMGdNU0E4UENBb0tHa2dKU0F3ZURJd0tTQW1JREI0TVdZcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVsdWRtVnlkSE1nWVNCaWFYUnpaWFF1WEc0Z0lHbHVkbVZ5ZENodWIzUnBabmtnUFNCMGNuVmxLVG9nZG05cFpDQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFEc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQmVQU0F0TVR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZObGRITWdZV3hzSUdKcGRITWdkRzhnVzNaaGJIVmxYU3dnYjNCMGFXOXVZV3hzZVNCemRYQndjbVZ6YzJsdVp5QnViM1JwWm1sallYUnBiMjV6TGx4dUlDQnpaWFJCYkd3b2RtRnNkV1U2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUdaaGJITmxLVG9nZG05cFpDQjdYRzRnSUNBZ1kyOXVjM1FnWm14aFozTWdQU0IyWVd4MVpTQS9JQzB4SURvZ01EdGNiaUFnSUNCamIyNXpkQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6dGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2diR1Z1T3lCcEt5c3BJQzh2ZEc5a2J6b2diM0IwYVcxcGVtVmNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRmJhVjBnUFNCbWJHRm5jenRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRk5sZEhNZ1ltbDBjeUJoZENCYmFXNWtaWGhsYzEwZ2NHOXphWFJwYjI0Z2RHOGdXM1poYkhWbFhTNWNiaUFnTHk4dklFTnNaV0Z5Y3lCMGFHVWdZbWwwYzJWMElHbG1JRnRqYkdWaGNsMGdabXhoWnlCcGN5QjBjblZsTGx4dUlDQXZMeThnUTJoaGJtZGxJRzV2ZEdsbWFXTmhkR2x2YmlCcGN5QnlZV2x6WldRZ2QyaGxiaUJiYm05MGFXWjVYU0JwY3lCMGNuVmxMbHh1SUNCelpYUkpibVJsZUdWektHbHVaR1Y0WlhNNklFRnljbUY1UEc1MWJXSmxjajRzSUhaaGJIVmxJRDBnZEhKMVpTd2dZMnhsWVhJZ1BTQjBjblZsTENCdWIzUnBabmtnUFNCMGNuVmxLVG9nZG05cFpDQjdYRzRnSUNBZ2FXWWdLR05zWldGeUtWeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQmJHd29JWFpoYkhWbExDQm1ZV3h6WlNrN1hHNWNiaUFnSUNCbWIzSWdLR052Ym5OMElHa2diMllnYVc1a1pYaGxjeWxjYmlBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENocExDQjJZV3gxWlNrN1hHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnZlZ4dVhHNGdJR1YyWlhKNVNXNWtaWGdvYVc1a1pYaGxjem9nUVhKeVlYazhiblZ0WW1WeVBpd2dkbUZzZFdVZ1BTQjBjblZsS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCcGJtUmxlQ0J2WmlCcGJtUmxlR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVc1a1pYZ3BJQ0U5SUhaaGJIVmxLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQjBjblZsTzF4dUlDQjlYRzVjYmlBZ1lXNTVTVzVrWlhnb2FXNWtaWGhsY3pvZ1FYSnlZWGs4Ym5WdFltVnlQaXdnZG1Gc2RXVWdQU0IwY25WbEtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ1ptOXlJQ2hqYjI1emRDQnBibVJsZUNCdlppQnBibVJsZUdWektTQjdYRzRnSUNBZ0lDQnBaaUFvZEdocGN5NW5aWFJDYVhRb2FXNWtaWGdwSUQwOUlIWmhiSFZsS1Z4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJR1poYkhObE8xeHVJQ0I5WEc1Y2JpQWdjMlYwVjJobGNtVW9ZMmhsWTJzNklFWjFibU4wYVc5dUxDQjJZV3gxWlNBOUlIUnlkV1VzSUdOc1pXRnlJRDBnZEhKMVpTd2dibTkwYVdaNUlEMGdkSEoxWlN3Z1lXeHNiM2REYkdWaGNpQTlJSFJ5ZFdVcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb1kyeGxZWElnSmlZZ1lXeHNiM2REYkdWaGNpbGNiaUFnSUNBZ0lIUm9hWE11YzJWMFFXeHNLQ0YyWVd4MVpTd2dabUZzYzJVcE8xeHVYRzRnSUNBZ2FXWWdLR0ZzYkc5M1EyeGxZWElwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9PeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdhV1lnS0dOb1pXTnJLR2twS1Z4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCMllXeDFaU2s3WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJSFJvYVhNdWMyVjBSbUZ6ZENocExDQmphR1ZqYXlocEtTQS9JSFpoYkhWbElEb2dJWFpoYkhWbEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnZlZ4dVhHNGdJR2RsZEZKaGJtZGxLR1p5YjIwNklHNTFiV0psY2l3Z2RHODZJRzUxYldKbGNpazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9abkp2YlN3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ01Td2dKMlp5YjIwbktUdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2RHOHNJREFzSUhSb2FYTXVYMnhsYm1kMGFDd2dKM1J2SnlrN1hHNGdJQ0FnWTI5dWMzUWdZWEp5T2lCQmNuSmhlVHhpYjI5c1pXRnVQaUE5SUZ0ZE8xeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQm1jbTl0T3lCcElEd2dkRzg3SUNzcmFTbGNiaUFnSUNBZ0lHRnljaTV3ZFhOb0tIUm9hWE11WjJWMFFtbDBLR2twS1R0Y2JpQWdJQ0J5WlhSMWNtNGdRbWwwUVhKeVlYa3Vabkp2YlZaaGJIVmxjeWhoY25JcE8xeHVJQ0I5WEc1Y2JpQWdaMlYwVW1GdVoyVkJjMHhwYzNRb1puSnZiVG9nYm5WdFltVnlMQ0IwYnpvZ2JuVnRZbVZ5S1RvZ1ltOXZiR1ZoYmx0ZElIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb1puSnZiU3dnTUN3Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVN3Z0oyWnliMjBuS1R0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvZEc4c0lEQXNJSFJvYVhNdVgyeGxibWQwYUN3Z0ozUnZKeWs3WEc0Z0lDQWdZMjl1YzNRZ1lYSnlPaUJpYjI5c1pXRnVXMTBnUFNCYlhUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdabkp2YlRzZ2FTQThJSFJ2T3lBcksya3BYRzRnSUNBZ0lDQmhjbkl1Y0hWemFDaDBhR2x6TG1kbGRFSnBkQ2hwS1NrN1hHNGdJQ0FnY21WMGRYSnVJR0Z5Y2p0Y2JpQWdmVnh1WEc1Y2JpQWdjMlYwVW1GdVoyVW9abkp2YlRvZ2JuVnRZbVZ5TENCMGJ6b2diblZ0WW1WeUxDQjJZV3gxWlRvZ1ltOXZiR1ZoYml3Z2JtOTBhV1o1SUQwZ2RISjFaU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvWm5KdmJTd2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU3dnSjJaeWIyMG5LVHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9kRzhzSURBc0lIUm9hWE11WDJ4bGJtZDBhQ0F0SURFc0lDZDBieWNwTzF4dVhHNGdJQ0FnWTI5dWMzUWdjM1JoY25RZ1BTQk5ZWFJvTG0xcGJpaG1jbTl0TENCMGJ5azdYRzRnSUNBZ1kyOXVjM1FnWlc1a0lEMGdUV0YwYUM1dFlYZ29abkp2YlN3Z2RHOHBPMXh1WEc0Z0lDQWdMeTkwYjJSdk9pQnZjSFJwYldsNlpWeHVJQ0FnSUdsbUlDaDJZV3gxWlNrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJSE4wWVhKME95QnBJRHc5SUdWdVpEc2dhU3NyS1Z4dUlDQWdJQ0FnSUNCMGFHbHpMbk5sZEZSeWRXVW9hU2s3WEc0Z0lDQWdmU0JsYkhObElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0J6ZEdGeWREc2dhU0E4UFNCbGJtUTdJR2tyS3lsY2JpQWdJQ0FnSUNBZ2RHaHBjeTV6WlhSR1lXeHpaU2hwS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUWlhSeklHNGdjbUZ1Wkc5dGJIa2dZMmh2YzJWdUlHSnBkSE1nZEc4Z2RtRnNkV1VzSUhKbGJXRnBibWx1WnlCaWFYUnpJSFJ2SUNGMllXeDFaUzVjYmlBZ2MyVjBVbUZ1Wkc5dEtHNDZJRzUxYldKbGNpd2dkbUZzZFdVNklHSnZiMnhsWVc0c0lHNXZkR2xtZVNBOUlIUnlkV1VwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvYmlBOElEQWdmSHdnYmlBK0lIUm9hWE11WDJ4bGJtZDBhQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25iaUJ0ZFhOMElHSmxJRDQ5SURBZ0ppWWdQRDBnUTI5MWJuUW5LVHRjYmx4dUlDQWdJR2xtSUNodUlENGdkR2hwY3k1ZmJHVnVaM1JvSUM4Z01pbGNiaUFnSUNBZ0lIUm9hWE11YzJWMFVtRnVaRzl0S0hSb2FYTXVYMnhsYm1kMGFDQXRJRzRzSUNGMllXeDFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxuTmxkRUZzYkNnaGRtRnNkV1VwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYXlBOUlEQTdJR3NnUENCdU95a2dlMXh1SUNBZ0lDQWdZMjl1YzNRZ2FTQTlJRTFoZEdndVpteHZiM0lvVFdGMGFDNXlZVzVrYjIwb0tTQXFJSFJvYVhNdVgyeGxibWQwYUNrN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVNrZ1BUMGdkbUZzZFdVcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSR1lYTjBLR2tzSUhaaGJIVmxLVHRjYmlBZ0lDQWdJR3NyS3p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJOYjJScFptbGxjeUJqZFhKeVpXNTBJR0pwZEhObGRDQmllU0J3WlhKbWIzSnRhVzVuSUhSb1pTQmlhWFIzYVhObElFRk9SQ0J2Y0dWeVlYUnBiMjRnWVdkaGFXNXpkQ0IwYUdWY2JpQWdMeTh2SUdOdmNuSmxjM0J2Ym1ScGJtY2daV3hsYldWdWRITWdhVzRnZEdobElITndaV05wWm1sbFpDQmlhWFJ6WlhRdVhHNGdJR0Z1WkNoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3pzZ2FTQThJR3hsYmpzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBbVBTQjJZV3gxWlM1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUhSb1pTQmlhWFIzYVhObElFRk9SQ0JPVDFRZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHRnVaRTV2ZENoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR052Ym5OMElHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb1NXNUpiblJ6TzF4dUlDQWdJR1p2Y2lBb2JHVjBJRzUxYlRJZ1BTQXdPeUJ1ZFcweUlEd2diR1Z1T3lCdWRXMHlLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzI1MWJUSmRJQ1k5SUg1MllXeDFaUzVmWkdGMFlWdHVkVzB5WFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZCbGNtWnZjbTF6SUhSb1pTQmlhWFIzYVhObElFNVBWQ0JCVGtRZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHNXZkRUZ1WkNoMllXeDFaVG9nUW1sMFFYSnlZWGtzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0IyWVd4MVpTNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0NkQmNuSmhlU0JzWlc1bmRHaHpJR1JwWm1abGNpNG5LVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd0xDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3pzZ2FTQThJR3hsYmpzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlDaCtkR2hwY3k1ZlpHRjBZVnRwWFNrZ0ppQjJZV3gxWlM1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhSb2FYTXVhVzVqY21WdFpXNTBWbVZ5YzJsdmJpaHViM1JwWm5rcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsek8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVsdWRtVnlkSE1nWVd4c0lHSnBkQ0IyWVd4MVpYTWdhVzRnZEdobElHTjFjbkpsYm5RZ1ltbDBjMlYwWEc0Z0lHNXZkQ2h1YjNScFpua2dQU0IwY25WbEtUb2dRbWwwUVhKeVlYa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0E5SUg1MGFHbHpMbDlrWVhSaFcybGRPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdkx5OGdVR1Z5Wm05eWJYTWdkR2hsSUdKcGRIZHBjMlVnVDFJZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHOXlLSFpoYkhWbE9pQkNhWFJCY25KaGVTd2dibTkwYVdaNUlEMGdkSEoxWlNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5c1pXNW5kR2dnSVQwZ2RtRnNkV1V1WDJ4bGJtZDBhQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25RWEp5WVhrZ2JHVnVaM1JvY3lCa2FXWm1aWEl1SnlrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNQ3dnYkdWdUlEMGdkR2hwY3k1c1pXNW5kR2hKYmtsdWRITTdJR2tnUENCc1pXNDdJR2tyS3lsY2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdGYmFWMGdmRDBnZG1Gc2RXVXVYMlJoZEdGYmFWMDdYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlFaWEptYjNKdGN5QjBhR1VnWW1sMGQybHpaU0JsZUdOc2RYTnBkbVVnVDFJZ2IzQmxjbUYwYVc5dUlHOXVJSFJvWlNCbGJHVnRaVzUwY3lCcGJpQjBhR1VnWTNWeWNtVnVkQ0JpYVhSelpYUmNiaUFnTHk4dklHRm5ZV2x1YzNRZ2RHaGxJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lIaHZjaWgyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcElIdGNiaUFnSUNCcFppQW9kR2hwY3k1ZmJHVnVaM1JvSUNFOUlIWmhiSFZsTGw5c1pXNW5kR2dwWEc0Z0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMEZ5Y21GNUlHeGxibWQwYUhNZ1pHbG1abVZ5TGljcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPeUJwSUR3Z2JHVnVPeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRjQ5SUhaaGJIVmxMbDlrWVhSaFcybGRPMXh1WEc0Z0lDQWdkR2hwY3k1cGJtTnlaVzFsYm5SV1pYSnphVzl1S0c1dmRHbG1lU2s3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE03WEc0Z0lIMWNibHh1SUNBdkx5OGdTVzV6WlhKMGN5QnVJREF0WW1sMGN5QmhkQ0J3YjNOcGRHbHZiaUJ3YjNNc0lISmxjMmw2YVc1bklITmxiR1lnWVc1a0lITm9hV1owYVc1bklHSnBkSE1nWVhCd2NtOXdjbWxoZEdWc2VTNWNiaUFnYVc1elpYSjBRWFFvY0c5ek9pQnVkVzFpWlhJc0lHNDZJRzUxYldKbGNpd2dabXhoWnlBOUlHWmhiSE5sS1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1aGMzTjFjbVZKYmxKaGJtZGxLSEJ2Y3l3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvTENBbmNHOXpKeWs3WEc1Y2JpQWdJQ0JwWmlBb2JpQTlQU0F3S1NCeVpYUjFjbTQ3WEc1Y2JpQWdJQ0F2TDFSUFJFODZJRzl3ZEdsdGFYcGxYRzRnSUNBZ0x5OTBhR1VnYlc5emRDQndjbWx0YVhScGRtVWdhVzF3YkdWdFpXNTBZWFJwYjI0c0lHOXdkR2x0YVhwbElHbDBJR3hoZEdWeUlWeHVYRzRnSUNBZ0x5OGdZbVZuYVc1VmNHUmhkR1VvS1R0Y2JpQWdJQ0JqYjI1emRDQnZiR1JzWlc1bmRHZ2dQU0IwYUdsekxsOXNaVzVuZEdnN1hHNGdJQ0FnZEdocGN5NXpaWFJNWlc1bmRHZ29kR2hwY3k1ZmJHVnVaM1JvSUNzZ2JpazdYRzVjYmlBZ0lDQXZMMmxtSUNnaFkyOXVkR0ZwYm5Nb0lXWnNZV2NwS1NCeVpYUjFjbTQ3SUM4dklHNXZkR2hwYm1jZ2RHOGdaRzljYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCdmJHUnNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlIQnZjenNnYVMwdEtWeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQ2FYUW9hU0FySUc0c0lIUm9hWE11WjJWMFFtbDBLR2twS1R0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQndiM003SUdrZ1BDQndiM01nS3lCdU95QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxuTmxkRUpwZENocExDQm1iR0ZuS1R0Y2JseHVJQ0FnSUM4dklHVnVaRlZ3WkdGMFpTZ3BPMXh1SUNCOVhHNWNiaUFnTHk4dklFUmxiR1YwWlhNZ2JpQmlhWFJ6SUdKbFoybHVibWx1WnlCaGRDQndiM05wZEdsdmJpQndiM01zSUhKbGMybDZhVzVuSUhObGJHWWdZVzVrSUhOb2FXWjBhVzVuSUhKbGJXRnBibWx1WjF4dUlDQXZMeThnWW1sMGN5QmhjSEJ5YjNCeWFXRjBaV3g1TGx4dUlDQnlaVzF2ZG1WQmRDaHdiM002SUc1MWJXSmxjaXdnYmlBOUlERXBPaUIyYjJsa0lIdGNiaUFnSUNBdkx5QjBhR1VnYlc5emRDQndjbWx0YVhScGRtVWdhVzF3YkdWdFpXNTBZWFJwYjI0c0lHOXdkR2x0YVhwbElHbDBJR3hoZEdWeUlWeHVJQ0FnSUdsbUlDaHVJRHdnTUNsY2JpQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduYmlCallXNXViM1FnWW1VZ2JtVm5ZWFJwZG1VbktUdGNibHh1SUNBZ0lIUm9hWE11WVhOemRYSmxTVzVTWVc1blpTaHdiM01zSURBc0lIUm9hWE11WDJ4bGJtZDBhQ0F0SUc0c0lDZHdiM01uS1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1OdmJuUmhhVzV6S0hSeWRXVXBLU0I3WEc0Z0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ2NHOXpPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9JQzBnYmpzZ2FTc3JLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRUpwZENocExDQjBhR2x6TG1kbGRFSnBkQ2hwSUNzZ2Jpa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lIUm9hWE11YzJWMFRHVnVaM1JvS0hSb2FYTXVYMnhsYm1kMGFDQXRJRzRwTzF4dUlDQjlYRzVjYmlBZ2NtVnRiM1psUW5sTllYTnJLRzFoYzJzNklFSnBkRUZ5Y21GNUxDQm1iR0ZuSUQwZ2RISjFaU2s2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JQ0U5SUcxaGMyc3ViR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0Nkc1pXNW5kR2dnSVQwZ2JXRnpheTVzWlc1bmRHZ25LVHRjYmx4dUlDQWdJR2xtSUNodFlYTnJJRDA5SUhSb2FYTXBJSHNnTHk4Z2JtOGdibVZsWkNCMGJ5QnBkR1Z5WVhSbFhHNGdJQ0FnSUNCMGFHbHpMbk5sZEV4bGJtZDBhQ2h0WVhOckxtTnZkVzUwUW1sMGN5Z2habXhoWnlrcE8xeHVJQ0FnSUNBZ2RHaHBjeTV6WlhSQmJHd29JV1pzWVdjcE8xeHVJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0JzWlhRZ1pITjBTV1I0SUQwZ01EdGNibHh1SUNBZ0lDQWdabTl5SUNoc1pYUWdjM0pqU1dSNElEMGdMVEU3SUNoemNtTkpaSGdnUFNCdFlYTnJMbVpwYm1ST1pYaDBLSE55WTBsa2VDd2dJV1pzWVdjcEtTQWhQU0F0TVRzcFhHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hrYzNSSlpIZ3JLeXdnZEdocGN5NW5aWFJDYVhRb2MzSmpTV1I0S1NrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJ4bGJtZDBhQ0E5SUdSemRFbGtlRHRjYmlBZ0lDQWdJSFJvYVhNdVgzWmxjbk5wYjI0ckt6dGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzh2THlCVGFXMXBiR0Z5SUhSdklIUm9aU0JiWFNCdmNHVnlZWFJ2Y2k1Y2JpQWdaMlYwUW1sMEtIQnZjem9nYm5WdFltVnlLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdjbVYwZFhKdUlDaDBhR2x6TGw5a1lYUmhXMDFoZEdndVpteHZiM0lvY0c5eklDOGdNSGd5TUNsZElDWWdLREVnUER3Z0tIQnZjeUFtSURCNE1XWXBLU2tnSVQwZ01EdGNiaUFnZlZ4dVhHNGdJQzh2THlCVGFXMXBiR0Z5SUhSdklIUm9aU0JiWFNCdmNHVnlZWFJ2Y2k1Y2JpQWdjMlYwUW1sMEtIQnZjem9nYm5WdFltVnlMQ0JpYVhRNklHSnZiMnhsWVc0c0lHNXZkR2xtZVNBOUlIUnlkV1VwSUh0Y2JpQWdJQ0IwYUdsekxuTmxkRVpoYzNRb2NHOXpMQ0JpYVhRcE8xeHVJQ0FnSUdsbUlDaHViM1JwWm5rcFhHNGdJQ0FnSUNCMGFHbHpMbDkyWlhKemFXOXVLeXM3WEc0Z0lDQWdaV3h6WlZ4dUlDQWdJQ0FnZEdocGN5NWZkbVZ5YzJsdmJpc3JPMXh1SUNCOVhHNWNiaUFnTHk4dklGTmxkSE1nVzJsZExYUm9JR0pwZENCMGJ5QmJkbUZzZFdWZExDQmtiMlZ6SUc1dmRDQmphR1ZqYXlCaWIzVnVaSE1zSUdSdlpYTWdibTkwSUdsdVkzSmxiV1Z1ZENCMlpYSnphVzl1WEc0Z0lITmxkRVpoYzNRb2FUb2diblZ0WW1WeUxDQjJZV3gxWlRvZ1ltOXZiR1ZoYmlrNklIWnZhV1FnZTF4dUlDQWdJR2xtSUNoMllXeDFaU2xjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0ZiVFdGMGFDNW1iRzl2Y2locElDOGdNSGd5TUNsZElIdzlJREVnUER3Z0tHa2dKaUF3ZURGbUtUdGNiaUFnSUNCbGJITmxYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMDFoZEdndVpteHZiM0lvYVNBdklEQjRNakFwWFNBbVBTQitLREVnUER3Z0tHa2dKaUF3ZURGbUtTazdYRzRnSUgxY2JseHVJQ0J6WlhSVWNuVmxLSEJ2Y3pvZ2JuVnRZbVZ5S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdkR2hwY3k1ZlpHRjBZVnROWVhSb0xtWnNiMjl5S0hCdmN5QXZJREI0TWpBcFhTQjhQU0F4SUR3OElDaHdiM01nSmlBd2VERm1LVHRjYmlBZ2ZWeHVYRzRnSUhObGRFWmhiSE5sS0hCdmN6b2diblZ0WW1WeUtTQjdYRzRnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLSEJ2Y3lBdklEQjRNakFwWFNBbVBTQitLREVnUER3Z0tIQnZjeUFtSURCNE1XWXBLVHRjYmlBZ2ZWeHVYRzRnSUhSeWRXVkRiM1Z1ZENncE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZkVzUwUW1sMGN5aDBjblZsS1R0Y2JpQWdmVnh1WEc0Z0lHWmhiSE5sUTI5MWJuUW9LVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vWm1Gc2MyVXBPMXh1SUNCOVhHNWNiaUFnTHk4dklFTnZkVzUwY3lCaWFYUnpJRzltSUhSb1pTQnpjR1ZqYVdacFpXUWdkbUZzZFdVdVhHNGdJR052ZFc1MFFtbDBjeWgyWVd4MVpUb2dZbTl2YkdWaGJpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBOVBTQXdLU0J5WlhSMWNtNGdNRHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBaFBTQjBhR2x6TGw5MlpYSnphVzl1S1NCN1hHNGdJQ0FnSUNCMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MElEMGdNRHRjYmlBZ0lDQWdJR052Ym5OMElHeGxiaUE5SUhSb2FYTXViR1Z1WjNSb1NXNUpiblJ6TzF4dUlDQWdJQ0FnYkdWMElHa2dQU0F3TzF4dUlDQWdJQ0FnWm05eUlDZzdJR2tnUENCc1pXNGdMU0F4T3lCcEt5c3BJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYXlBOUlIUm9hWE11WDJSaGRHRmJhVjA3SUdzZ0lUMGdNRHNnYXlBK1BqNDlJRGdwSUhzZ0x5OTBiMlJ2T2lCallYTjBJR1JoZEdGYmFWMGdkRzhnZFdsdWRGeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdVgzTmxiR1ZqZEdWa1EyOTFiblFnS3owZ1FtbDBRWEp5WVhrdVgyOXVRbWwwUTI5MWJuUmJheUFtSURCNFptWmRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc1Y2JpQWdJQ0FnSUM4dklGUm9aU0JzWVhOMElHbHVkQzVjYmlBZ0lDQWdJR3hsZENCcklEMGdkR2hwY3k1ZlpHRjBZVnRwWFR0Y2JpQWdJQ0FnSUdOdmJuTjBJSEpsYldGcGJtbHVaMEpwZEhNZ1BTQjBhR2x6TGw5c1pXNW5kR2dnSmlBd2VERm1PMXh1SUNBZ0lDQWdhV1lnS0hKbGJXRnBibWx1WjBKcGRITWdJVDBnTUNrZ0x5b2dhV1lnY21WdFlXbHVhVzVuUW1sMGN5QTlQU0F3TENCMGFHVWdiR0Z6ZENCcGJuUWdhWE1nWm5Wc2JIa2dkWE5sWkNCaGJtUWdRVXhNSUdKcGRITWdjMmh2ZFd4a0lHSmxJR3hsWm5RZ1lYTWdhWE1nS2k5Y2JpQWdJQ0FnSUNBZ2F5QW1QU0IrS0NnME1qazBPVFkzTWprMUtTQThQQ0J5WlcxaGFXNXBibWRDYVhSektUdGNibHh1SUNBZ0lDQWdabTl5SUNnN0lHc2dJVDBnTURzZ2F5QStQajQ5SURncFhHNGdJQ0FnSUNBZ0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdLejBnUW1sMFFYSnlZWGt1WDI5dVFtbDBRMjkxYm5SYmF5QW1JREI0Wm1aZE8xeHVYRzRnSUNBZ0lDQjBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBWbVZ5YzJsdmJpQTlJSFJvYVhNdVgzWmxjbk5wYjI0N1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnY21WMGRYSnVJQ2gyWVd4MVpTQS9JSFJvYVhNdVgzTmxiR1ZqZEdWa1EyOTFiblFnT2lCMGFHbHpMbDlzWlc1bmRHZ2dMU0IwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwS1R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJTWlhSMWNtNXpJR0VnYm5WdFltVnlJRzltSUhObGRDQmlhWFJ6SUhkb1pYSmxJR0ZzYzI4Z1cyTm9aV05yWFNCcGN5QjBjblZsWEc0Z0lHTnZkVzUwVjJobGNtVW9ZMmhsWTJzNklFWjFibU4wYVc5dUtUb2diblZ0WW1WeUlIdGNiaUFnSUNCc1pYUWdjbVZ6ZFd4MElEMGdNRHRjYmlBZ0lDQnBaaUFvZEdocGN5NTBjblZsUTI5MWJuUW9LU0E5UFNCMGFHbHpMbDlzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZiR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0FnSUhKbGMzVnNkQ0FyUFNCamFHVmpheWhwS1NBL0lERWdPaUF3TzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTFRFN0lDaHBJRDBnZEdocGN5NW1hVzVrVG1WNGRDaHBMQ0IwY25WbEtTa2dJVDBnTFRFN0tWeHVJQ0FnSUNBZ0lDQnlaWE4xYkhRZ0t6MGdZMmhsWTJzb2FTa2dQeUF4SURvZ01EdGNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsYzNWc2REdGNiaUFnZlZ4dVhHNGdJQzh2THlCUVpYSm1iM0p0Y3lCaWFYUWdYQ0poYm1SY0lpQmhibVFnWTI5MWJuUnpJR0pwZEhNZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU3dnZDJsMGFHOTFkQ0JpYVhSelpYUWdiVzlrYVdacFkyRjBhVzl1TGx4dUlDQmhibVJYYVhSb1EyOTFiblJDYVhSektITmxZMjl1WkRvZ1FtbDBRWEp5WVhrc0lIWmhiSFZsT2lCaWIyOXNaV0Z1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JRDA5SURBcElISmxkSFZ5YmlBd08xeHVYRzRnSUNBZ2JHVjBJR052ZFc1MElEMGdNRHRjYmlBZ0lDQmpiMjV6ZENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenRjYmlBZ0lDQnNaWFFnYVNBOUlEQTdYRzRnSUNBZ1ptOXlJQ2c3SUdrZ1BDQnNaVzRnTFNBeE95QnBLeXNwSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdzZ1BTQjBhR2x6TGw5a1lYUmhXMmxkSUNZZ2MyVmpiMjVrTGw5a1lYUmhXMmxkT3lCcklDRTlJREE3SUdzZ1BqNCtQU0E0S1Z4dUlDQWdJQ0FnSUNCamIzVnVkQ0FyUFNCQ2FYUkJjbkpoZVM1ZmIyNUNhWFJEYjNWdWRGdHJJQ1lnTUhobVpsMDdYRzRnSUNBZ2ZWeHVYRzRnSUNBZ0x5OGdWR2hsSUd4aGMzUWdhVzUwTGx4dUlDQWdJR3hsZENCcklEMGdkR2hwY3k1ZlpHRjBZVnRwWFNBbUlITmxZMjl1WkM1ZlpHRjBZVnRwWFR0Y2JpQWdJQ0JqYjI1emRDQnlaVzFoYVc1cGJtZENhWFJ6SUQwZ2RHaHBjeTVmYkdWdVozUm9JQ1lnTUhneFpqdGNiaUFnSUNCcFppQW9jbVZ0WVdsdWFXNW5RbWwwY3lBaFBTQXdLVnh1SUNBZ0lDQWdheUFtUFNCK0tDZzBNamswT1RZM01qazFLU0E4UENCeVpXMWhhVzVwYm1kQ2FYUnpLVHRjYmlBZ0lDQm1iM0lnS0RzZ2F5QWhQU0F3T3lCcklENCtQajBnT0NsY2JpQWdJQ0FnSUdOdmRXNTBJQ3M5SUVKcGRFRnljbUY1TGw5dmJrSnBkRU52ZFc1MFcyc2dKaUF3ZUdabVhUdGNibHh1SUNBZ0lISmxkSFZ5YmlBb2RtRnNkV1VnUHlCamIzVnVkQ0E2SUhSb2FYTXVYMnhsYm1kMGFDQXRJR052ZFc1MEtUdGNiaUFnZlZ4dVhHNGdJR05zWldGeUtDazZJSFp2YVdRZ2UxeHVJQ0FnSUhSb2FYTXVjMlYwVEdWdVozUm9LREFwTzF4dUlDQjlYRzVjYmlBZ1kyOXVkR0ZwYm5Nb2RtRnNkV1U2SUdKdmIyeGxZVzRwT2lCaWIyOXNaV0Z1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1bWFXNWtUbVY0ZENndE1Td2dkbUZzZFdVcElENDlJREE3WEc0Z0lIMWNibHh1SUNCblpYUWdZV3hzVkhKMVpTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vZEhKMVpTa2dQVDBnZEdocGN5NWZiR1Z1WjNSb08xeHVJQ0I5WEc1Y2JpQWdaMlYwSUdGc2JFWmhiSE5sS0NrZ2UxeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxtTnZkVzUwUW1sMGN5aG1ZV3h6WlNrZ1BUMGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0Z1ZVZSeWRXVW9LU0I3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WTI5MWJuUkNhWFJ6S0hSeWRXVXBJRDRnTUR0Y2JpQWdmVnh1WEc0Z0lHZGxkQ0JoYm5sR1lXeHpaU2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1amIzVnVkRUpwZEhNb1ptRnNjMlVwSUQ0Z01EdGNiaUFnZlZ4dVhHNGdJQzh2THlCU1pYUjFjbTV6SUhSb1pTQndiM05wZEdsdmJpQnZaaUIwYUdVZ2JtVjRkQ0JpYVhRZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU3dnYzNSaGNuUnBibWNnWm5KdmJTQjBhR1VnYzNCbFkybG1hV1ZrSUhCdmMybDBhVzl1TGx4dUlDQXZMeThnVW1WMGRYSnVjeUF0TVN3Z2FXWWdkR2hsY21VZ1lYSmxJRzV2SUhOMVkyZ2dZbWwwY3k1Y2JpQWdabWx1WkU1bGVIUW9hVzVrWlhnNklHNTFiV0psY2l3Z2RtRnNkV1VnUFNCMGNuVmxLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9hVzVrWlhnc0lDMHhMQ0IwYUdsekxsOXNaVzVuZEdnc0lDZHBibVJsZUNjcE8xeHVYRzRnSUNBZ2FXWWdLR2x1WkdWNElENDlJSFJvYVhNdVgyeGxibWQwYUNBdElERXBJSEpsZEhWeWJpQXRNVHRjYmlBZ0lDQnBibVJsZUNBOUlHbHVaR1Y0SUR3Z01DQS9JREFnT2lCcGJtUmxlQ0FySURFN0lDOHZJSE5yYVhBZ2MzUmhjblJjYmlBZ0lDQnNaWFFnZFc1MWMyVmtRbWwwY3lBOUlHbHVaR1Y0SUNZZ01IZ3haanRjYmlBZ0lDQmpiMjV6ZENCdWRXMUpiblJ6SUQwZ2RHaHBjeTVzWlc1bmRHaEpia2x1ZEhNN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdUV0YwYUM1bWJHOXZjaWhwYm1SbGVDQXZJRE15S1RzZ2FTQThJRzUxYlVsdWRITTdJR2tyS3lrZ2UxeHVJQ0FnSUNBZ2JHVjBJR3NnUFNBb2RtRnNkV1VnUHlCMGFHbHpMbDlrWVhSaFcybGRJRG9nZm5Sb2FYTXVYMlJoZEdGYmFWMHBPeUF2THlCMWFXNTBJR05oYzNSY2JpQWdJQ0FnSUdsbUlDaDFiblZ6WldSQ2FYUnpJQ0U5SURBcElIdGNiaUFnSUNBZ0lDQWdheUFtUFNBb0tEQjRabVptWm1abVptWWdQRHdnZFc1MWMyVmtRbWwwY3lrZ0ppQXdlR1ptWm1abVptWm1LVHRjYmlBZ0lDQWdJQ0FnZFc1MWMyVmtRbWwwY3lBOUlEQTdYRzRnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLQ0YyWVd4MVpTQW1KaUJySUQwOUlDMDBNamswT1RZM01qazJLU0F2S2lCc2IyOXJhVzVuSUdadmNpQm1ZV3h6WlN3Z1lXeHNJR0pwZEhNZ1lYSmxJSE5sZENBcUwzdGNiaUFnSUNBZ0lDQWdZMjl1ZEdsdWRXVTdYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNBd095QnJJQ0U5SURBN0lHb2dLejBnT0N3Z2F5QStQajQ5SURncElIdGNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NDQTlJRUpwZEVGeWNtRjVMbDltYVhKemRFOXVRbWwwVzJzZ0ppQXdlR1ptWFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEFnUGowZ01Da2dlMXh1SUNBZ0lDQWdJQ0FnSUdsdVpHVjRJRDBnY0NBcklDaHBJQ29nTXpJcElDc2dhanRjYmlBZ0lDQWdJQ0FnSUNCcFppQW9hVzVrWlhnZ1BqMGdkR2hwY3k1ZmJHVnVaM1JvS1NCeVpYUjFjbTRnTFRFN1hHNGdJQ0FnSUNBZ0lDQWdjbVYwZFhKdUlHbHVaR1Y0TzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQXRNVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkdhVzVrY3lCd2NtVjJhVzkxY3lCaWFYUWdiMllnZEdobElITndaV05wWm1sbFpDQjJZV3gxWlNCcGJpQjBhR1VnWW1sMGMyVjBMbHh1SUNCbWFXNWtVSEpsZGlocGJtUmxlRG9nYm5WdFltVnlMQ0IyWVd4MVpTQTlJSFJ5ZFdVcE9pQnVkVzFpWlhJZ2UxeHVJQ0FnSUdsbUlDaHBibVJsZUNBOVBTQXdLU0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdkR2hwY3k1aGMzTjFjbVZKYmxKaGJtZGxLR2x1WkdWNExDQXRNU3dnZEdocGN5NWZiR1Z1WjNSb0xDQW5hVzVrWlhnbktUdGNibHh1SUNBZ0lHbHVaR1Y0SUQwZ2FXNWtaWGdnUENBd0lEOGdkR2hwY3k1ZmJHVnVaM1JvSUMwZ01TQTZJR2x1WkdWNElDMGdNVHNnTHk4Z2MydHBjQ0J6ZEdGeWRGeHVYRzRnSUNBZ1kyOXVjM1FnYkdGemRFbHVkRWxrZUNBOUlFMWhkR2d1Wm14dmIzSW9hVzVrWlhnZ0x5QXdlREl3S1R0Y2JpQWdJQ0JzWlhRZ2NtVnRZV2x1YVc1blFtbDBjeUE5SUNocGJtUmxlQ0FySURFcElDWWdNSGd4Wmp0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnNZWE4wU1c1MFNXUjRPeUJwSUQ0OUlEQTdJR2t0TFNrZ2UxeHVJQ0FnSUNBZ2JHVjBJR3NnUFNBb2RtRnNkV1VnUHlCMGFHbHpMbDlrWVhSaFcybGRJRG9nZm5Sb2FYTXVYMlJoZEdGYmFWMHBPeUF2THlCallYTjBYRzRnSUNBZ0lDQnBaaUFvY21WdFlXbHVhVzVuUW1sMGN5QWhQU0F3S1NCN1hHNGdJQ0FnSUNBZ0lHc2dKajBnZmlnb05ESTVORGsyTnpJNU5Ta2dQRHdnY21WdFlXbHVhVzVuUW1sMGN5azdYRzRnSUNBZ0lDQWdJSEpsYldGcGJtbHVaMEpwZEhNZ1BTQXdPMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdabTl5SUNoc1pYUWdhaUE5SURJME95QnJJQ0U5SURBN0lHb2dMVDBnT0N3Z2F5QThQRDBnT0NrZ2UxeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCd0lEMGdRbWwwUVhKeVlYa3VYMnhoYzNSUGJrSnBkRnRySUQ0K1BpQXdlREU0WFR0Y2JpQWdJQ0FnSUNBZ2FXWWdLSEFnUGowZ01DbGNiaUFnSUNBZ0lDQWdJQ0J5WlhSMWNtNGdjQ0FySUNocElDb2dNeklwSUNzZ2FqdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJQzB4TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgKiBhcyB1bWogZnJvbSAndW1hcC1qcyc7XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5pbXBvcnQgeyBWZWN0b3IsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdHlwZS1kZWNsYXJhdGlvbnMnO1xuaW1wb3J0IHsgY2FsY0Rpc3RhbmNlTWF0cml4LCB0cmFuc3Bvc2VNYXRyaXgsIGFzc2VydCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBTUEVCYXNlLCBQU1BFQmFzZSwgT3JpZ2luYWxTUEUgfSBmcm9tICcuL3NwZSc7XG5pbXBvcnQgeyBNZWFzdXJlLCBBdmFpbGFibGVNZXRyaWNzLCBpc0JpdEFycmF5TWV0cmljIH0gZnJvbSAnLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xuZXhwb3J0IGNvbnN0IFVNQVAgPSAnVU1BUCc7XG5leHBvcnQgY29uc3QgVF9TTkUgPSAndC1TTkUnO1xuZXhwb3J0IGNsYXNzIFVNQVBPcHRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSB7IHVpTmFtZTogJ0xlYXJpbmlnIHJhdGUnLCB2YWx1ZTogMSwgdG9vbHRpcDogJ1RoZSBpbml0aWFsIGxlYXJuaW5nIHJhdGUgZm9yIHRoZSBlbWJlZGRpbmcgb3B0aW1pemF0aW9uJyB9O1xuICAgICAgICB0aGlzLm5Db21wb25lbnRzID0geyB1aU5hbWU6ICdDb21wb25lbnRzJywgdmFsdWU6IDIsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGNvbXBvbmVudHMgKGRpbWVuc2lvbnMpIHRvIHByb2plY3QgdGhlIGRhdGEgdG8nIH07XG4gICAgICAgIHRoaXMubkVwb2NocyA9IHsgdWlOYW1lOiAnRXBvY2hzJywgdmFsdWU6IDAsIHRvb2x0aXA6ICdUaGUgbnVtYmVyIG9mIGVwb2NocyB0byBvcHRpbWl6ZSBlbWJlZGRpbmdzIHZpYSBTR0QuIENvbXB1dGVkIGF1dG9tYXRpY2FsbHkgaWYgc2V0IHRvIDAnIH07XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IHsgdWlOYW1lOiAnTmVpZ2hib3JzJywgdmFsdWU6IDE1LCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9ycyB0byBjb25zdHJ1Y3QgdGhlIGZ1enp5IG1hbmlmb2xkJyB9O1xuICAgICAgICB0aGlzLnNwcmVhZCA9IHsgdWlOYW1lOiAnU3ByZWFkJywgdmFsdWU6IDEsIHRvb2x0aXA6ICdUaGUgZWZmZWN0aXZlIHNjYWxlIG9mIGVtYmVkZGVkIHBvaW50cywgdXNlZCB3aXRoIG1pbiBkaXN0YW5jZSB0byBjb250cm9sIHRoZSBjbHVtcGVkL2Rpc3BlcnNlZCBuYXR1cmUgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICAgICAgdGhpcy5taW5EaXN0ID0geyB1aU5hbWU6ICdNaW4gZGlzdGFuY2UnLCB2YWx1ZTogMC4xLCB0b29sdGlwOiAnVGhlIGVmZmVjdGl2ZSBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gZW1iZWRkZWQgcG9pbnRzLCB1c2VkIHdpdGggc3ByZWFkIHRvIGNvbnRyb2wgdGhlIGNsdW1wZWQvZGlzcGVyc2VkIG5hdHVyZSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG5leHBvcnQgY2xhc3MgVFNORU9wdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmVwc2lsb24gPSB7IHVpTmFtZTogJ0Vwc2lsb24nLCB2YWx1ZTogMTAsIHRvb2x0aXA6ICdFcHNpbG9uIGlzIGxlYXJuaW5nIHJhdGUnIH07XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHsgdWlOYW1lOiAnUGVycGxleGl0eScsIHZhbHVlOiAzMCwgdG9vbHRpcDogJ1JvdWdobHkgaG93IG1hbnkgbmVpZ2hib3JzIGVhY2ggcG9pbnQgaW5mbHVlbmNlcycgfTtcbiAgICAgICAgdGhpcy5kaW0gPSB7IHVpTmFtZTogJ0RpbWVuc2lvbmFsaXR5JywgdmFsdWU6IDIsIHRvb2x0aXA6ICdEaW1lbnNpb25hbGl0eSBvZiB0aGUgZW1iZWRkaW5nJyB9O1xuICAgIH1cbiAgICA7XG59XG4vKiogQWJzdHJhY3QgZGltZW5zaW9uYWxpdHkgcmVkdWNlciAqL1xuY2xhc3MgUmVkdWNlciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgfVxufVxuLyoqIHQtU05FIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi4gKi9cbmNsYXNzIFRTTkVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBUU05FUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgVFNORVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBUU05FKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLml0ZXJhdGlvbnMgPSAoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuaXRlcmF0aW9ucykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMTAwO1xuICAgICAgICB0aGlzLmRpc3RhbmNlRm4gPSBvcHRpb25zLmRpc3RhbmNlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHQtU05FIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGRpc3RhbmNlID0gY2FsY0Rpc3RhbmNlTWF0cml4KHRoaXMuZGF0YSwgdGhpcy5kaXN0YW5jZUZuKTtcbiAgICAgICAgdGhpcy5yZWR1Y2VyLmluaXREYXRhRGlzdChkaXN0YW5jZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5pdGVyYXRpb25zOyArK2kpIHtcbiAgICAgICAgICAgIHRoaXMucmVkdWNlci5zdGVwKCk7IC8vIGV2ZXJ5IHRpbWUgeW91IGNhbGwgdGhpcywgc29sdXRpb24gZ2V0cyBiZXR0ZXJcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogdGhpcy5yZWR1Y2VyLmdldFNvbHV0aW9uKCkgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgVU1BUCBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uXG4gKlxuICogQGNsYXNzIFVNQVBSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgVU1BUFJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFVNQVBSZWR1Y2VyLlxuICAgICAqIEBwYXJhbSB7T3B0aW9uc30gb3B0aW9ucyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGNvbnN0cnVjdG9yLlxuICAgICAqIEBtZW1iZXJvZiBVTUFQUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIGFzc2VydCgnZGlzdGFuY2VGbicgaW4gb3B0aW9ucyk7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IG9wdGlvbnMuZGlzdGFuY2VGbjtcbiAgICAgICAgdGhpcy52ZWN0b3JzID0gW107XG4gICAgICAgIG9wdGlvbnMuZGlzdGFuY2VGbiA9IHRoaXMuX2VuY29kZWREaXN0YW5jZS5iaW5kKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5kYXRhLmxlbmd0aCA8IDE1KVxuICAgICAgICAgICAgb3B0aW9ucy5uTmVpZ2hib3JzID0gdGhpcy5kYXRhLmxlbmd0aCAtIDE7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyB1bWouVU1BUChvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGRpc3RhbmNlIHdyYXBwZXIgdG8gaGF2ZSBudW1lcmljIGlucHV0cyBpbnN0ZWFkIG9mIHN0cmluZyBvbmVzLlxuICAgICAqXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGEgVGhlIGZpcnN0IGl0ZW0uXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gYiBUaGUgZmlyc3QgaXRlbS5cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IERpc3RhbmNlIG1ldHJpYy5cbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBfZW5jb2RlZERpc3RhbmNlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VGbih0aGlzLmRhdGFbYVswXV0sIHRoaXMuZGF0YVtiWzBdXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuY29kZXMgdGhlIGlucHV0IGRhdGEgYXMgYSB2ZWN0b3Igb2YgaW5kaWNlcy5cbiAgICAgKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBfZW5jb2RlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdGhpcy52ZWN0b3JzLnB1c2goW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIFVNQVAgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKCkge1xuICAgICAgICB0aGlzLl9lbmNvZGUoKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5nID0gdGhpcy5yZWR1Y2VyLmZpdCh0aGlzLnZlY3RvcnMpO1xuICAgICAgICBmdW5jdGlvbiBhcnJheUNhc3QyQ29vcmRpbmF0ZXMoZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBBcnJheShkYXRhLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IChWZWN0b3IuZnJvbShkYXRhW2ldKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGVtYmVkZGluZzogYXJyYXlDYXN0MkNvb3JkaW5hdGVzKGVtYmVkZGluZykgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBQU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgUFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgUFNQRUJhc2Uob3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIG1vZGlmaWVkIFNQRSBtZXRob2QuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKCkge1xuICAgICAgICBjb25zdCBlbWIgPSB0aGlzLnJlZHVjZXIuZW1iZWQodGhpcy5kYXRhKTtcbiAgICAgICAgcmV0dXJuIHsgZGlzdGFuY2U6IHRoaXMucmVkdWNlci5kaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWIgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBPcmlnaW5hbFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIE9yaWdpbmFsU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBPcmlnaW5hbFNQRShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbmNvbnN0IEF2YWlsYWJsZVJlZHVjZXJzID0ge1xuICAgICdVTUFQJzogVU1BUFJlZHVjZXIsXG4gICAgJ3QtU05FJzogVFNORVJlZHVjZXIsXG4gICAgJ1NQRSc6IFNQRVJlZHVjZXIsXG4gICAgJ3BTUEUnOiBQU1BFUmVkdWNlcixcbiAgICAnT3JpZ2luYWxTUEUnOiBPcmlnaW5hbFNQRVJlZHVjZXIsXG59O1xuLyoqXG4gKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICovXG5leHBvcnQgY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpbWVuc2lvbmFsaXR5UmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhIFZlY3RvcnMgdG8gZW1iZWQuXG4gICAgICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kIHRvIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWV0cmljIERpc3RhbmNlIG1ldHJpYyB0byBiZSBjb21wdXRlZCBiZXR3ZWVuIGVhY2ggb2YgdGhlIHZlY3RvcnMuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBpbXBsZW1lbnRpbmcgZW1iZWRkZXJzLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhLCBtZXRob2QsIG1ldHJpYywgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSBuZXcgTWVhc3VyZShtZXRyaWMpLmdldE1lYXN1cmUoKTtcbiAgICAgICAgbGV0IHNwZWNPcHRpb25zID0ge307XG4gICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpYykpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBuZXcgQml0QXJyYXkoZGF0YVtpXS5fZGF0YSwgZGF0YVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kID09ICdVTUFQJykge1xuICAgICAgICAgICAgc3BlY09wdGlvbnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZUZuOiBtZWFzdXJlIH0pLCB7IG5FcG9jaHM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jeWNsZXMgfSksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAndC1TTkUnKSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgZGF0YTogZGF0YSB9LCB7IGRpc3RhbmNlOiBtZWFzdXJlIH0pLCB7IGl0ZXJhdGlvbnM6IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jeWNsZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZCB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWV0aG9kID09ICdTUEUnKSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZTogbWVhc3VyZSB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZTogbWVhc3VyZSB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IEF2YWlsYWJsZVJlZHVjZXJzW21ldGhvZF0oc3BlY09wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBjaG9zZW4gbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UgV2hldGhlciB0byB0cmFuc2Zvcm0gY29vcmRpbmF0ZXMgdG8gaGF2ZSBjb2x1bW5zLWZpcnN0IG9yaWVudGF0aW9uLlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odHJhbnNwb3NlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMucmVkdWNlciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgZW1iZWRkaW5nLCBkaXN0YW5jZSB9ID0gdGhpcy5yZWR1Y2VyLnRyYW5zZm9ybSgpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKSB7XG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0cmFuc3Bvc2VNYXRyaXgoZW1iZWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbWV0cmljcyBhdmFpbGFibGUgYnkgdHlwZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSB0eXBlTmFtZSB0eXBlIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gTWV0cmljIG5hbWVzIHdoaWNoIGV4cGVjdHMgdGhlIGdpdmVuIGRhdGEgdHlwZVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgYXZhaWxhYmxlTWV0cmljc0J5VHlwZSh0eXBlTmFtZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1t0eXBlTmFtZV0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBtZXRob2RzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldGhvZHMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVSZWR1Y2Vycyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbWV0cmljcyBhdmFpbGFibGUuXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZXRyaWNzKCkge1xuICAgICAgICBsZXQgYW5zID0gW107XG4gICAgICAgIE9iamVjdC52YWx1ZXMoQXZhaWxhYmxlTWV0cmljcykuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhcnJheSA9IE9iamVjdC52YWx1ZXMob2JqKTtcbiAgICAgICAgICAgIGFucyA9IFsuLi5hbnMsIC4uLmFycmF5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhbnM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNTMEZCU3l4SFFVRkhMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJReTlDTEU5QlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVNc1RVRkJUU3hsUVVGbExFTkJRVU03UVVGRGJrTXNUMEZCVHl4RlFVbE1MRTFCUVUwc1IwRkhVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGRFRDeHJRa0ZCYTBJc1JVRkRiRUlzWlVGQlpTeEZRVU5tTEUxQlFVMHNSMEZEVUN4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlEzcEVMRTlCUVU4c1JVRkJReXhQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEZkQlFWY3NSVUZCUXl4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVOeVJDeFBRVUZQTEVWQlFVTXNUMEZCVHl4RlFVRm5RaXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQmNVSXNUVUZCVFN4cFFrRkJhVUlzUTBGQlF6dEJRVU01Unl4UFFVRlBMRkZCUVZFc1RVRkJUU3g1UTBGQmVVTXNRMEZCUXp0QlFVY3ZSQ3hOUVVGTkxFTkJRVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NUVUZCVFN4RFFVRkRPMEZCUXpOQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4UFFVRlBMRU5CUVVNN1FVRjNRamRDTEUxQlFVMHNUMEZCVHl4WFFVRlhPMGxCVVhSQ08xRkJVRUVzYVVKQlFWa3NSMEZCZDBJc1JVRkJReXhOUVVGTkxFVkJRVVVzWlVGQlpTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxEQkVRVUV3UkN4RlFVRkRMRU5CUVVNN1VVRkROMGtzWjBKQlFWY3NSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzV1VGQldTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxEaEVRVUU0UkN4RlFVRkRMRU5CUVVNN1VVRkROVWtzV1VGQlR5eEhRVUYxUWl4RlFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzUzBGQlN5eEZRVUZGTEVOQlFVTXNSVUZCUlN4UFFVRlBMRVZCUVVVc2VVWkJRWGxHTEVWQlFVTXNRMEZCUXp0UlFVTXZTaXhsUVVGVkxFZEJRWFZDTEVWQlFVTXNUVUZCVFN4RlFVRkZMRmRCUVZjc1JVRkJSU3hMUVVGTExFVkJRVVVzUlVGQlJTeEZRVUZGTEU5QlFVOHNSVUZCUlN4cFJVRkJhVVVzUlVGQlF5eERRVUZETzFGQlF6bEpMRmRCUVUwc1IwRkJkVUlzUlVGQlF5eE5RVUZOTEVWQlFVVXNVVUZCVVN4RlFVRkZMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVVVzVDBGQlR5eEZRVUZGTEhsSVFVRjVTQ3hGUVVGRExFTkJRVU03VVVGRE9Vd3NXVUZCVHl4SFFVRjFRaXhGUVVGRExFMUJRVTBzUlVGQlJTeGpRVUZqTEVWQlFVVXNTMEZCU3l4RlFVRkZMRWRCUVVjc1JVRkJSU3hQUVVGUExFVkJRVVVzYlVsQlFXMUpMRVZCUVVNc1EwRkJRenRKUVVWc1RTeERRVUZETzBsQlFVRXNRMEZCUXp0RFFVTnNRanRCUVVWRUxFMUJRVTBzVDBGQlR5eFhRVUZYTzBsQlMzUkNPMUZCU2tFc1dVRkJUeXhIUVVGM1FpeEZRVUZETEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeFBRVUZQTEVWQlFVVXNNRUpCUVRCQ0xFVkJRVU1zUTBGQlF6dFJRVU51Unl4bFFVRlZMRWRCUVhWQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1JVRkJSU3hGUVVGRkxFOUJRVThzUlVGQlJTeHJSRUZCYTBRc1JVRkJReXhEUVVGRE8xRkJRMmhKTEZGQlFVY3NSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzWjBKQlFXZENMRVZCUVVVc1MwRkJTeXhGUVVGRkxFTkJRVU1zUlVGQlJTeFBRVUZQTEVWQlFVVXNhVU5CUVdsRExFVkJRVU1zUTBGQlF6dEpRVVUxUml4RFFVRkRPMGxCUVVFc1EwRkJRenREUVVOc1FqdEJRVWRFTEhORFFVRnpRenRCUVVOMFF5eE5RVUZsTEU5QlFVODdTVUZIY0VJc1dVRkJXU3hQUVVGblFqdFJRVU14UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdTVUZETTBJc1EwRkJRenREUVV0R08wRkJSVVFzYzBOQlFYTkRPMEZCUTNSRExFMUJRVTBzVjBGQldTeFRRVUZSTEU5QlFVODdTVUZMTDBJN096czdUMEZKUnp0SlFVTklMRmxCUVZrc1QwRkJaMEk3TzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEYWtNc1NVRkJTU3hEUVVGRExGVkJRVlVzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeFZRVUZWTEcxRFFVRkpMRWRCUVVjc1EwRkJRenRSUVVNM1F5eEpRVUZKTEVOQlFVTXNWVUZCVlN4SFFVRkhMRTlCUVU4c1EwRkJReXhSUVVGUkxFTkJRVU03U1VGRGNrTXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEZOQlFWTTdVVUZEWkN4TlFVRk5MRkZCUVZFc1IwRkJSeXhyUWtGQmEwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFbEJRVWtzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXp0UlFVTm9SU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZsQlFWa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRenRSUVVWd1F5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVONFF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zYVVSQlFXbEVPMU5CUTNaRk8xRkJRMFFzVDBGQlR5eEZRVUZETEZGQlFWRXNSVUZCUlN4UlFVRlJMRVZCUVVVc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNWMEZCVnl4RlFVRkZMRVZCUVVNc1EwRkJRenRKUVVOeVJTeERRVUZETzBOQlEwWTdRVUZKUkRzN096czdSMEZMUnp0QlFVTklMRTFCUVUwc1YwRkJXU3hUUVVGUkxFOUJRVTg3U1VGTEwwSTdPenM3VDBGSlJ6dEpRVU5JTEZsQlFWa3NUMEZCYjBJN1VVRkRPVUlzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUldZc1RVRkJUU3hEUVVGRExGbEJRVmtzU1VGQlNTeFBRVUZQTEVOQlFVTXNRMEZCUXp0UlFVVm9ReXhKUVVGSkxFTkJRVU1zVlVGQlZTeEhRVUZITEU5QlFVOHNRMEZCUXl4VlFVRlhMRU5CUVVNN1VVRkRkRU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RlFVRkZMRU5CUVVNN1VVRkRiRUlzVDBGQlR5eERRVUZETEZWQlFWVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRM1JFTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzUlVGQlJUdFpRVU4yUWl4UFFVRlBMRU5CUVVNc1ZVRkJWU3hIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVNMVF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wbEJSVVE3T3pzN096czdPMDlCVVVjN1NVRkRUeXhuUWtGQlowSXNRMEZCUXl4RFFVRlhMRVZCUVVVc1EwRkJWenRSUVVOcVJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE0wUXNRMEZCUXp0SlFVVkVPenM3T3p0UFFVdEhPMGxCUTA4c1QwRkJUenRSUVVObUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVONlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEZUVJN1NVRkRTQ3hEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1UwRkJVenRSUVVOa0xFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXp0UlFVVm1MRTFCUVUwc1UwRkJVeXhIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVVZxUkN4VFFVRlRMSEZDUVVGeFFpeERRVUZETEVsQlFXZENPMWxCUXpkRExFOUJRVThzU1VGQlNTeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemxGTEVOQlFVTTdVVUZGUkN4UFFVRlBMRVZCUVVNc1UwRkJVeXhGUVVGRkxIRkNRVUZ4UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRExFTkJRVU03U1VGRGRrUXNRMEZCUXp0RFFVTkdPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGVkJRVmNzVTBGQlVTeFBRVUZQTzBsQlJ6bENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVdkQ08xRkJRekZDTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVObUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRFTXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEZOQlFWTTdVVUZEWkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VTXNUMEZCVHl4RlFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1IwRkJSeXhGUVVGRExFTkJRVU03U1VGRE0wUXNRMEZCUXp0RFFVTkdPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGZEJRVmtzVTBGQlVTeFBRVUZQTzBsQlJ5OUNPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVdkQ08xRkJRekZDTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVObUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03U1VGRGRrTXNRMEZCUXp0SlFVVkVPenM3VDBGSFJ6dEpRVU5KTEZOQlFWTTdVVUZEWkN4TlFVRk5MRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRE1VTXNUMEZCVHl4RlFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1IwRkJSeXhGUVVGRExFTkJRVU03U1VGRE0wUXNRMEZCUXp0RFFVTkdPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxHdENRVUZ0UWl4VFFVRlJMRTlCUVU4N1NVRkhkRU03T3pzN1QwRkpSenRKUVVOSUxGbEJRVmtzVDBGQlowSTdVVUZETVVJc1MwRkJTeXhEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEyWXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhKUVVGSkxGZEJRVmNzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0SlFVTXhReXhEUVVGRE8wbEJSVVE3T3p0UFFVZEhPMGxCUTBrc1UwRkJVenRSUVVOa0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVTXhReXhQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEhRVUZITEVWQlFVTXNRMEZCUXp0SlFVTXpSQ3hEUVVGRE8wTkJRMFk3UVVGRlJDeE5RVUZOTEdsQ1FVRnBRaXhIUVVGSE8wbEJRM2hDTEUxQlFVMHNSVUZCUlN4WFFVRlhPMGxCUTI1Q0xFOUJRVThzUlVGQlJTeFhRVUZYTzBsQlEzQkNMRXRCUVVzc1JVRkJSU3hWUVVGVk8wbEJRMnBDTEUxQlFVMHNSVUZCUlN4WFFVRlhPMGxCUTI1Q0xHRkJRV0VzUlVGQlJTeHJRa0ZCYTBJN1EwRkRiRU1zUTBGQlF6dEJRVWxHT3pzN096dEhRVXRITzBGQlEwZ3NUVUZCVFN4UFFVRlBMSEZDUVVGeFFqdEpRVWRvUXpzN096czdPenRQUVU5SE8wbEJRMGdzV1VGQldTeEpRVUZYTEVWQlFVVXNUVUZCYjBJc1JVRkJSU3hOUVVGdlFpeEZRVUZGTEU5QlFXbENPenRSUVVOd1JpeE5RVUZOTEU5QlFVOHNSMEZCUnl4SlFVRkpMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFZRVUZWTEVWQlFVVXNRMEZCUXp0UlFVTnFSQ3hKUVVGSkxGZEJRVmNzUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZGY2tJc1NVRkJTU3huUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1JVRkJSVHRaUVVNMVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGNFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFVkJRVVVzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yRkJRM2hFTzFOQlEwWTdVVUZGUkN4SlFVRkpMRTFCUVUwc1NVRkJTU3hOUVVGTkxFVkJRVVU3V1VGRGNFSXNWMEZCVnl3MlEwRkRUaXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVTXNSVUZEV2l4RlFVRkRMRlZCUVZVc1JVRkJSU3hQUVVGUExFVkJRVU1zUjBGRGNrSXNSVUZCUXl4UFFVRlBMRVZCUVVVc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRTFCUVUwc1JVRkJReXhIUVVNeFFpeFBRVUZQTEVOQlExZ3NRMEZCUXp0VFFVTklPMkZCUVUwc1NVRkJTU3hOUVVGTkxFbEJRVWtzVDBGQlR5eEZRVUZGTzFsQlF6VkNMRmRCUVZjc05rTkJRMDRzUlVGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkRMRVZCUTFvc1JVRkJReXhSUVVGUkxFVkJRVVVzVDBGQlR5eEZRVUZETEVkQlEyNUNMRVZCUVVNc1ZVRkJWU3hGUVVGRkxFMUJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFMUJRVTBzYlVOQlFVa3NVMEZCVXl4RlFVRkRMRWRCUXpGRExFOUJRVThzUTBGRFdDeERRVUZETzFOQlEwZzdZVUZCVFN4SlFVRkpMRTFCUVUwc1NVRkJTU3hMUVVGTExFVkJRVVU3V1VGRE1VSXNWMEZCVnl3clFrRkJUeXhGUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVTXNSVUZCU3l4RlFVRkRMRkZCUVZFc1JVRkJSU3hQUVVGUExFVkJRVU1zUjBGQlN5eFBRVUZQTEVOQlFVTXNRMEZCUXp0VFFVTnlSVHRoUVVGTk8xbEJRMHdzVjBGQlZ5d3JRa0ZCVHl4RlFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFVkJRVU1zUlVGQlN5eEZRVUZETEZGQlFWRXNSVUZCUlN4UFFVRlBMRVZCUVVNc1IwRkJTeXhQUVVGUExFTkJRVU1zUTBGQlF6dFRRVU55UlR0UlFVTkVMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeHBRa0ZCYVVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0SlFVTTFSQ3hEUVVGRE8wbEJSVVE3T3pzN096czdUMEZQUnp0SlFVTkpMRk5CUVZNc1EwRkJReXhaUVVGeFFpeExRVUZMTzFGQlEzcERMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVThzU1VGQlNTeFRRVUZUTEVWQlFVVTdXVUZETjBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5d3dRa0ZCTUVJc1EwRkJReXhEUVVGRE8xTkJRemRETzFGQlJVUXNTVUZCU1N4RlFVRkRMRk5CUVZNc1JVRkJSU3hSUVVGUkxFVkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRk5CUVZNc1JVRkJSU3hEUVVGRE8xRkJSWEpFTEVsQlFVa3NVMEZCVXl4RlFVRkZPMWxCUTJJc1UwRkJVeXhIUVVGSExHVkJRV1VzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXp0VFFVTjRRenRSUVVORUxFOUJRVThzUlVGQlF5eFJRVUZSTEVWQlFVVXNVVUZCVVN4RlFVRkZMRk5CUVZNc1JVRkJSU3hUUVVGVExFVkJRVU1zUTBGQlF6dEpRVU53UkN4RFFVRkRPMGxCUlVRN096czdPenRQUVUxSE8wbEJRMGdzVFVGQlRTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExGRkJRVFJDTzFGQlEzaEVMRTlCUVU4c1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlEycEVMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUzBGQlN5eG5Ra0ZCWjBJN1VVRkRla0lzVDBGQlR5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdTVUZEZUVNc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMGdzVFVGQlRTeExRVUZMTEdkQ1FVRm5RanRSUVVONlFpeEpRVUZKTEVkQlFVY3NSMEZCWVN4RlFVRkZMRU5CUVVNN1VVRkRka0lzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRWRCUVVjc1JVRkJSU3hGUVVGRk8xbEJRemxETEUxQlFVMHNTMEZCU3l4SFFVRkhMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVNelFpeERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTklMRTlCUVU4c1IwRkJSeXhEUVVGRE8wbEJRMklzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdkVzFxSUdaeWIyMGdKM1Z0WVhBdGFuTW5PMXh1YVcxd2IzSjBJSHRVVTA1RmZTQm1jbTl0SUNkQWEyVmphMlZzZEM5MGMyNWxKenRjYm1sdGNHOXlkQ0I3WEc0Z0lFOXdkR2x2Ym5Nc1hHNGdJRVJwYzNSaGJtTmxUV1YwY21sakxGeHVJQ0JEYjI5eVpHbHVZWFJsY3l4Y2JpQWdWbVZqZEc5eUxGeHVJQ0JXWldOMGIzSnpMRnh1SUNCTllYUnlhWGdzWEc1OUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdYRzRnSUdOaGJHTkVhWE4wWVc1alpVMWhkSEpwZUN4Y2JpQWdkSEpoYm5Od2IzTmxUV0YwY21sNExGeHVJQ0JoYzNObGNuUXNYRzU5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNabFkzUnZjaTF2Y0dWeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1UxQkZRbUZ6WlN3Z1VGTlFSVUpoYzJVc0lFOXlhV2RwYm1Gc1UxQkZmU0JtY205dElDY3VMM053WlNjN1hHNXBiWEJ2Y25RZ2UwMWxZWE4xY21Vc0lFdHViM2R1VFdWMGNtbGpjeXdnUVhaaGFXeGhZbXhsVFdWMGNtbGpjeXdnYVhOQ2FYUkJjbkpoZVUxbGRISnBZeXdnUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6ZlNCbWNtOXRJQ2N1TDNSNWNHVmtMVzFsZEhKcFkzTW5PMXh1YVcxd2IzSjBJRUpwZEVGeWNtRjVJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMMkpwZEMxaGNuSmhlU2M3WEc1cGJYQnZjblFnZTFWTlFWQlFZWEpoYldWMFpYSnpmU0JtY205dElDZDFiV0Z3TFdwekp6dGNibHh1Wlhod2IzSjBJR052Ym5OMElGVk5RVkFnUFNBblZVMUJVQ2M3WEc1bGVIQnZjblFnWTI5dWMzUWdWRjlUVGtVZ1BTQW5kQzFUVGtVbk8xeHVYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJRWxWVFVGUVQzQjBhVzl1Y3lCN1hHNGdJR3hsWVhKdWFXNW5VbUYwWlQ4NklHNTFiV0psY2p0Y2JpQWdia052YlhCdmJtVnVkSE0vT2lCdWRXMWlaWEk3WEc0Z0lHNUZjRzlqYUhNL09pQnVkVzFpWlhJN1hHNGdJRzVPWldsbmFHSnZjbk0vT2lCdWRXMWlaWEk3WEc0Z0lITndjbVZoWkQ4NklHNTFiV0psY2p0Y2JpQWdiV2x1UkdsemREODZJRzUxYldKbGNqdGNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlZGTk9SVTl3ZEdsdmJuTWdlMXh1SUNCbGNITnBiRzl1UHpvZ2JuVnRZbVZ5TzF4dUlDQndaWEp3YkdWNGFYUjVQem9nYm5WdFltVnlPMXh1SUNCa2FXMC9PaUJ1ZFcxaVpYSTdYRzU5WEc1Y2JtVjRjRzl5ZENCcGJuUmxjbVpoWTJVZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElIdGNiaUFnZFdsT1lXMWxPaUJ6ZEhKcGJtYzdYRzRnSUhaaGJIVmxPaUJ1ZFcxaVpYSWdmQ0J1ZFd4c08xeHVJQ0IwYjI5c2RHbHdPaUJ6ZEhKcGJtYzdYRzRnSUhCc1lXTmxhRzlzWkdWeVB6b2djM1J5YVc1bk8xeHVmVnh1WEc1bGVIQnZjblFnWTJ4aGMzTWdWVTFCVUU5d2RHbHZibk1nZTF4dUlDQnNaV0Z5Ym1sdVoxSmhkR1U2SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlDQjdkV2xPWVcxbE9pQW5UR1ZoY21sdWFXY2djbUYwWlNjc0lIWmhiSFZsT2lBeExDQjBiMjlzZEdsd09pQW5WR2hsSUdsdWFYUnBZV3dnYkdWaGNtNXBibWNnY21GMFpTQm1iM0lnZEdobElHVnRZbVZrWkdsdVp5QnZjSFJwYldsNllYUnBiMjRuZlR0Y2JpQWdia052YlhCdmJtVnVkSE02SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZERiMjF3YjI1bGJuUnpKeXdnZG1Gc2RXVTZJRElzSUhSdmIyeDBhWEE2SUNkVWFHVWdiblZ0WW1WeUlHOW1JR052YlhCdmJtVnVkSE1nS0dScGJXVnVjMmx2Ym5NcElIUnZJSEJ5YjJwbFkzUWdkR2hsSUdSaGRHRWdkRzhuZlR0Y2JpQWdia1Z3YjJOb2N6b2dTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJRDBnZTNWcFRtRnRaVG9nSjBWd2IyTm9jeWNzSUhaaGJIVmxPaUF3TENCMGIyOXNkR2x3T2lBblZHaGxJRzUxYldKbGNpQnZaaUJsY0c5amFITWdkRzhnYjNCMGFXMXBlbVVnWlcxaVpXUmthVzVuY3lCMmFXRWdVMGRFTGlCRGIyMXdkWFJsWkNCaGRYUnZiV0YwYVdOaGJHeDVJR2xtSUhObGRDQjBieUF3SjMwN1hHNGdJRzVPWldsbmFHSnZjbk02SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZE9aV2xuYUdKdmNuTW5MQ0IyWVd4MVpUb2dNVFVzSUhSdmIyeDBhWEE2SUNkVWFHVWdiblZ0WW1WeUlHOW1JRzVsWVhKbGMzUWdibVZwWjJoaWIzSnpJSFJ2SUdOdmJuTjBjblZqZENCMGFHVWdablY2ZW5rZ2JXRnVhV1p2YkdRbmZUdGNiaUFnYzNCeVpXRmtPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNCN2RXbE9ZVzFsT2lBblUzQnlaV0ZrSnl3Z2RtRnNkV1U2SURFc0lIUnZiMngwYVhBNklDZFVhR1VnWldabVpXTjBhWFpsSUhOallXeGxJRzltSUdWdFltVmtaR1ZrSUhCdmFXNTBjeXdnZFhObFpDQjNhWFJvSUcxcGJpQmthWE4wWVc1alpTQjBieUJqYjI1MGNtOXNJSFJvWlNCamJIVnRjR1ZrTDJScGMzQmxjbk5sWkNCdVlYUjFjbVVnYjJZZ2RHaGxJR1Z0WW1Wa1pHbHVaeWQ5TzF4dUlDQnRhVzVFYVhOME9pQkpSR2x0VW1Wa2RXTjBhVzl1VUdGeVlXMGdQU0I3ZFdsT1lXMWxPaUFuVFdsdUlHUnBjM1JoYm1ObEp5d2dkbUZzZFdVNklEQXVNU3dnZEc5dmJIUnBjRG9nSjFSb1pTQmxabVpsWTNScGRtVWdiV2x1YVcxMWJTQmthWE4wWVc1alpTQmlaWFIzWldWdUlHVnRZbVZrWkdWa0lIQnZhVzUwY3l3Z2RYTmxaQ0IzYVhSb0lITndjbVZoWkNCMGJ5QmpiMjUwY205c0lIUm9aU0JqYkhWdGNHVmtMMlJwYzNCbGNuTmxaQ0J1WVhSMWNtVWdiMllnZEdobElHVnRZbVZrWkdsdVp5ZDlPMXh1WEc0Z0lHTnZibk4wY25WamRHOXlLQ2tnZTMwN1hHNTlYRzVjYm1WNGNHOXlkQ0JqYkdGemN5QlVVMDVGVDNCMGFXOXVjeUI3WEc0Z0lHVndjMmxzYjI0NklFbEVhVzFTWldSMVkzUnBiMjVRWVhKaGJTQTlJQ0I3ZFdsT1lXMWxPaUFuUlhCemFXeHZiaWNzSUhaaGJIVmxPaUF4TUN3Z2RHOXZiSFJwY0RvZ0owVndjMmxzYjI0Z2FYTWdiR1ZoY201cGJtY2djbUYwWlNkOU8xeHVJQ0J3WlhKd2JHVjRhWFI1T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQjdkV2xPWVcxbE9pQW5VR1Z5Y0d4bGVHbDBlU2NzSUhaaGJIVmxPaUF6TUN3Z2RHOXZiSFJwY0RvZ0oxSnZkV2RvYkhrZ2FHOTNJRzFoYm5rZ2JtVnBaMmhpYjNKeklHVmhZMmdnY0c5cGJuUWdhVzVtYkhWbGJtTmxjeWQ5TzF4dUlDQmthVzA2SUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNBOUlIdDFhVTVoYldVNklDZEVhVzFsYm5OcGIyNWhiR2wwZVNjc0lIWmhiSFZsT2lBeUxDQjBiMjlzZEdsd09pQW5SR2x0Wlc1emFXOXVZV3hwZEhrZ2IyWWdkR2hsSUdWdFltVmtaR2x1WnlkOU8xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtDa2dlMzA3WEc1OVhHNWNibHh1THlvcUlFRmljM1J5WVdOMElHUnBiV1Z1YzJsdmJtRnNhWFI1SUhKbFpIVmpaWElnS2k5Y2JtRmljM1J5WVdOMElHTnNZWE56SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVRvZ1ZtVmpkRzl5Y3p0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2lodmNIUnBiMjV6T2lCUGNIUnBiMjV6S1NCN1hHNGdJQ0FnZEdocGN5NWtZWFJoSUQwZ2IzQjBhVzl1Y3k1a1lYUmhPMXh1SUNCOVhHNWNiaUFnTHlvcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVdVhHNGdJQ0FxSUVCeVpYUjFjbTRnZTJGdWVYMGdRMkZ5ZEdWemFXRnVJR052YjNKa2FXNWhkR1VnYjJZZ2RHaHBjeUJsYldKbFpHUnBibWNnWVc1a0lHUnBjM1JoYm1ObElHMWhkSEpwZUNCM2FHVnlaU0JoY0hCc2FXTmhZbXhsTGlBcUwxeHVJQ0JoWW5OMGNtRmpkQ0IwY21GdWMyWnZjbTBvS1RvZ2V5QmJhMlY1T2lCemRISnBibWRkT2lCTllYUnlhWGdnZlR0Y2JuMWNibHh1THlvcUlIUXRVMDVGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTRnS2k5Y2JtTnNZWE56SUZSVFRrVlNaV1IxWTJWeUlHVjRkR1Z1WkhNZ1VtVmtkV05sY2lCN1hHNGdJSEJ5YjNSbFkzUmxaQ0J5WldSMVkyVnlPaUJVVTA1Rk8xeHVJQ0J3Y205MFpXTjBaV1FnYVhSbGNtRjBhVzl1Y3pvZ2JuVnRZbVZ5TzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdiam9nUkdsemRHRnVZMlZOWlhSeWFXTTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lXNGdhVzV6ZEdGdVkyVWdiMllnVkZOT1JWSmxaSFZqWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdWRk5PUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dWRk5PUlNodmNIUnBiMjV6S1R0Y2JpQWdJQ0IwYUdsekxtbDBaWEpoZEdsdmJuTWdQU0J2Y0hScGIyNXpQeTVwZEdWeVlYUnBiMjV6SUQ4L0lERXdNRHRjYmlBZ0lDQjBhR2x6TG1ScGMzUmhibU5sUm00Z1BTQnZjSFJwYjI1ekxtUnBjM1JoYm1ObE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ2RDMVRUa1VnYldWMGFHOWtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bklHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTNWNiaUFnSUNvdlhHNGdJSEIxWW14cFl5QjBjbUZ1YzJadmNtMG9LVG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPaUJOWVhSeWFYZ2dmU0I3WEc0Z0lDQWdZMjl1YzNRZ1pHbHpkR0Z1WTJVZ1BTQmpZV3hqUkdsemRHRnVZMlZOWVhSeWFYZ29kR2hwY3k1a1lYUmhMQ0IwYUdsekxtUnBjM1JoYm1ObFJtNHBPMXh1SUNBZ0lIUm9hWE11Y21Wa2RXTmxjaTVwYm1sMFJHRjBZVVJwYzNRb1pHbHpkR0Z1WTJVcE8xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TG1sMFpYSmhkR2x2Ym5NN0lDc3JhU2tnZTF4dUlDQWdJQ0FnZEdocGN5NXlaV1IxWTJWeUxuTjBaWEFvS1RzZ0x5OGdaWFpsY25rZ2RHbHRaU0I1YjNVZ1kyRnNiQ0IwYUdsekxDQnpiMngxZEdsdmJpQm5aWFJ6SUdKbGRIUmxjbHh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZTJScGMzUmhibU5sT2lCa2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQjBhR2x6TG5KbFpIVmpaWEl1WjJWMFUyOXNkWFJwYjI0b0tYMDdYRzRnSUgxY2JuMWNibHh1Wlhod2IzSjBJSFI1Y0dVZ1ZXMWhjRTl3ZEdsdmJuTWdQU0JQY0hScGIyNXpJQ1lnVlUxQlVGQmhjbUZ0WlhSbGNuTTdYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCVlRVRlFJR1JwYldWdWMybHZibUZzYVhSNUlISmxaSFZqZEdsdmJpNWNiaUFxWEc0Z0tpQkFZMnhoYzNNZ1ZVMUJVRkpsWkhWalpYSmNiaUFxSUVCbGVIUmxibVJ6SUh0U1pXUjFZMlZ5ZlZ4dUlDb3ZYRzVqYkdGemN5QlZUVUZRVW1Wa2RXTmxjaUJsZUhSbGJtUnpJRkpsWkhWalpYSWdlMXh1SUNCd2NtOTBaV04wWldRZ2NtVmtkV05sY2pvZ2RXMXFMbFZOUVZBN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYVhOMFlXNWpaVVp1T2lCR2RXNWpkR2x2Ymp0Y2JpQWdjSEp2ZEdWamRHVmtJSFpsWTNSdmNuTTZJRzUxYldKbGNsdGRXMTA3WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU55WldGMFpYTWdZVzRnYVc1emRHRnVZMlVnYjJZZ1ZVMUJVRkpsWkhWalpYSXVYRzRnSUNBcUlFQndZWEpoYlNCN1QzQjBhVzl1YzMwZ2IzQjBhVzl1Y3lCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVlUxQlVGSmxaSFZqWlhKY2JpQWdJQ292WEc0Z0lHTnZibk4wY25WamRHOXlLRzl3ZEdsdmJuTTZJRlZ0WVhCUGNIUnBiMjV6S1NCN1hHNGdJQ0FnYzNWd1pYSW9iM0IwYVc5dWN5azdYRzVjYmlBZ0lDQmhjM05sY25Rb0oyUnBjM1JoYm1ObFJtNG5JR2x1SUc5d2RHbHZibk1wTzF4dVhHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpVWnVJRDBnYjNCMGFXOXVjeTVrYVhOMFlXNWpaVVp1SVR0Y2JpQWdJQ0IwYUdsekxuWmxZM1J2Y25NZ1BTQmJYVHRjYmlBZ0lDQnZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNGdQU0IwYUdsekxsOWxibU52WkdWa1JHbHpkR0Z1WTJVdVltbHVaQ2gwYUdsektUdGNiaUFnSUNCcFppQW9kR2hwY3k1a1lYUmhMbXhsYm1kMGFDQThJREUxS1Z4dUlDQWdJQ0FnYjNCMGFXOXVjeTV1VG1WcFoyaGliM0p6SUQwZ2RHaHBjeTVrWVhSaExteGxibWQwYUNBdElERTdYRzRnSUNBZ2RHaHBjeTV5WldSMVkyVnlJRDBnYm1WM0lIVnRhaTVWVFVGUUtHOXdkR2x2Ym5NcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU4xYzNSdmJTQmthWE4wWVc1alpTQjNjbUZ3Y0dWeUlIUnZJR2hoZG1VZ2JuVnRaWEpwWXlCcGJuQjFkSE1nYVc1emRHVmhaQ0J2WmlCemRISnBibWNnYjI1bGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0JoSUZSb1pTQm1hWEp6ZENCcGRHVnRMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY2x0ZGZTQmlJRlJvWlNCbWFYSnpkQ0JwZEdWdExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVScGMzUmhibU5sSUcxbGRISnBZeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRlZOUVZCU1pXUjFZMlZ5WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ1gyVnVZMjlrWldSRWFYTjBZVzVqWlNoaE9pQnVkVzFpWlhKYlhTd2dZam9nYm5WdFltVnlXMTBwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1ScGMzUmhibU5sUm00b2RHaHBjeTVrWVhSaFcyRmJNRjFkTENCMGFHbHpMbVJoZEdGYllsc3dYVjBwTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnVZMjlrWlhNZ2RHaGxJR2x1Y0hWMElHUmhkR0VnWVhNZ1lTQjJaV04wYjNJZ2IyWWdhVzVrYVdObGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaUJBYldWdFltVnliMllnVlUxQlVGSmxaSFZqWlhKY2JpQWdJQ292WEc0Z0lIQnliM1JsWTNSbFpDQmZaVzVqYjJSbEtDa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1a1lYUmhMbXhsYm1kMGFEc2dLeXRwS1NCN1hHNGdJQ0FnSUNCMGFHbHpMblpsWTNSdmNuTXVjSFZ6YUNoYmFWMHBPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUdSaGRHRWdaMmwyWlc0Z2FXNTBieUIwYUdVZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxJSFZ6YVc1bklGVk5RVkFnYldWMGFHOWtMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdGhibmw5SUVOaGNuUmxjMmxoYmlCamIyOXlaR2x1WVhSbElHOW1JSFJvYVhNZ1pXMWlaV1JrYVc1bkxseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIUnlZVzV6Wm05eWJTZ3BPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJRTFoZEhKcGVDQjlJSHRjYmlBZ0lDQjBhR2x6TGw5bGJtTnZaR1VvS1R0Y2JseHVJQ0FnSUdOdmJuTjBJR1Z0WW1Wa1pHbHVaeUE5SUhSb2FYTXVjbVZrZFdObGNpNW1hWFFvZEdocGN5NTJaV04wYjNKektUdGNibHh1SUNBZ0lHWjFibU4wYVc5dUlHRnljbUY1UTJGemRESkRiMjl5WkdsdVlYUmxjeWhrWVhSaE9pQnVkVzFpWlhKYlhWdGRLVG9nUTI5dmNtUnBibUYwWlhNZ2UxeHVJQ0FnSUNBZ2NtVjBkWEp1SUc1bGR5QkJjbkpoZVNoa1lYUmhMbXhsYm1kMGFDa3VabWxzYkNnd0tTNXRZWEFvS0Y4c0lHa3BJRDArSUNoV1pXTjBiM0l1Wm5KdmJTaGtZWFJoVzJsZEtTa3BPMXh1SUNBZ0lIMWNibHh1SUNBZ0lISmxkSFZ5YmlCN1pXMWlaV1JrYVc1bk9pQmhjbkpoZVVOaGMzUXlRMjl2Y21ScGJtRjBaWE1vWlcxaVpXUmthVzVuS1gwN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkpiWEJzWlcxbGJuUnpJRzl5YVdkcGJtRnNJRk5RUlNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRk5RUlZKbFpIVmpaWEpjYmlBcUlFQmxlSFJsYm1SeklIdFNaV1IxWTJWeWZWeHVJQ292WEc1amJHRnpjeUJUVUVWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlRVRVZDWVhObE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1UxQkZVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJSE4xY0dWeUtHOXdkR2x2Ym5NcE8xeHVJQ0FnSUhSb2FYTXVjbVZrZFdObGNpQTlJRzVsZHlCVFVFVkNZWE5sS0c5d2RHbHZibk1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnZEdobElHOXlhV2RwYm1Gc0lGTlFSU0J0WlhSb2IyUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jZ1lXNWtJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjNhR1Z5WlNCaGNIQnNhV05oWW14bExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIUnlZVzV6Wm05eWJTZ3BPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJRTFoZEhKcGVDQjlJSHRjYmlBZ0lDQmpiMjV6ZENCbGJXSWdQU0IwYUdsekxuSmxaSFZqWlhJdVpXMWlaV1FvZEdocGN5NWtZWFJoS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpZlR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdiVzlrYVdacFpXUWdVMUJGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdVRk5RUlZKbFpIVmpaWEpjYmlBcUlFQmxlSFJsYm1SeklIdFNaV1IxWTJWeWZWeHVJQ292WEc1amJHRnpjeUJRVTFCRlVtVmtkV05sY2lCbGVIUmxibVJ6SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdjbVZrZFdObGNqb2dVRk5RUlVKaGMyVTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lXNGdhVzV6ZEdGdVkyVWdiMllnVUZOUVJWSmxaSFZqWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdVRk5RUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dVRk5RUlVKaGMyVW9iM0IwYVc5dWN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUlcxaVpXUnpJSFJvWlNCa1lYUmhJR2RwZG1WdUlHbHVkRzhnZEdobElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QjBhR1VnYlc5a2FXWnBaV1FnVTFCRklHMWxkR2h2WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nZEhKaGJuTm1iM0p0S0NrNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ1RXRjBjbWw0SUgwZ2UxeHVJQ0FnSUdOdmJuTjBJR1Z0WWlBOUlIUm9hWE11Y21Wa2RXTmxjaTVsYldKbFpDaDBhR2x6TG1SaGRHRXBPMXh1SUNBZ0lISmxkSFZ5YmlCN1pHbHpkR0Z1WTJVNklIUm9hWE11Y21Wa2RXTmxjaTVrYVhOMFlXNWpaU3dnWlcxaVpXUmthVzVuT2lCbGJXSjlPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCdmNtbG5hVzVoYkNCVFVFVWdaR2x0Wlc1emFXOXVZV3hwZEhrZ2NtVmtkV04wYVc5dUxseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCUGNtbG5hVzVoYkZOUVJWSmxaSFZqWlhKY2JpQXFJRUJsZUhSbGJtUnpJSHRTWldSMVkyVnlmVnh1SUNvdlhHNWpiR0Z6Y3lCUGNtbG5hVzVoYkZOUVJWSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJRTl5YVdkcGJtRnNVMUJGTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJR0Z1SUdsdWMzUmhibU5sSUc5bUlFOXlhV2RwYm1Gc1UxQkZVbVZrZFdObGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0UGNIUnBiMjV6ZlNCdmNIUnBiMjV6SUU5d2RHbHZibk1nZEc4Z2NHRnpjeUIwYnlCMGFHVWdZMjl1YzNSeWRXTjBiM0l1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dUM0pwWjJsdVlXeFRVRVVvYjNCMGFXOXVjeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JXMWlaV1J6SUhSb1pTQmtZWFJoSUdkcGRtVnVJR2x1ZEc4Z2RHaGxJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlNCMWMybHVaeUIwYUdVZ2IzSnBaMmx1WVd3Z1UxQkZJRzFsZEdodlpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1lXNTVmU0JEWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlNCdlppQjBhR2x6SUdWdFltVmtaR2x1WnlCaGJtUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIZG9aWEpsSUdGd2NHeHBZMkZpYkdVdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2RISmhibk5tYjNKdEtDazZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dUV0YwY21sNElIMGdlMXh1SUNBZ0lHTnZibk4wSUdWdFlpQTlJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JtTnZibk4wSUVGMllXbHNZV0pzWlZKbFpIVmpaWEp6SUQwZ2UxeHVJQ0FuVlUxQlVDYzZJRlZOUVZCU1pXUjFZMlZ5TEZ4dUlDQW5kQzFUVGtVbk9pQlVVMDVGVW1Wa2RXTmxjaXhjYmlBZ0oxTlFSU2M2SUZOUVJWSmxaSFZqWlhJc1hHNGdJQ2R3VTFCRkp6b2dVRk5RUlZKbFpIVmpaWElzWEc0Z0lDZFBjbWxuYVc1aGJGTlFSU2M2SUU5eWFXZHBibUZzVTFCRlVtVmtkV05sY2l4Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFdHViM2R1VFdWMGFHOWtjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVlNaV1IxWTJWeWN6dGNibHh1THlvcVhHNGdLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlJSHRjYmlBZ2NISnBkbUYwWlNCeVpXUjFZMlZ5T2lCU1pXUjFZMlZ5SUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdaR0YwWVNCV1pXTjBiM0p6SUhSdklHVnRZbVZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBhRzlrYzMwZ2JXVjBhRzlrSUVWdFltVmtaR2x1WnlCdFpYUm9iMlFnZEc4Z1ltVWdZWEJ3YkdsbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1YwY21saklFUnBjM1JoYm1ObElHMWxkSEpwWXlCMGJ5QmlaU0JqYjIxd2RYUmxaQ0JpWlhSM1pXVnVJR1ZoWTJnZ2IyWWdkR2hsSUhabFkzUnZjbk11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdXMjl3ZEdsdmJuTmRJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ2FXMXdiR1Z0Wlc1MGFXNW5JR1Z0WW1Wa1pHVnljeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9aR0YwWVRvZ1lXNTVXMTBzSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJvYjJSekxDQnRaWFJ5YVdNNklFdHViM2R1VFdWMGNtbGpjeXdnYjNCMGFXOXVjejg2SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnRaV0Z6ZFhKbElEMGdibVYzSUUxbFlYTjFjbVVvYldWMGNtbGpLUzVuWlhSTlpXRnpkWEpsS0NrN1hHNGdJQ0FnYkdWMElITndaV05QY0hScGIyNXpJRDBnZTMwN1hHNWNiaUFnSUNCcFppQW9hWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHRaWFJ5YVdNcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQWdJQ0FnWkdGMFlWdHBYU0E5SUc1bGR5QkNhWFJCY25KaGVTaGtZWFJoVzJsZExsOWtZWFJoTENCa1lYUmhXMmxkTGw5c1pXNW5kR2dwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodFpYUm9iMlFnUFQwZ0oxVk5RVkFuS1NCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHRjYmlBZ0lDQWdJQ0FnTGk0dWUyUmhkR0U2SUdSaGRHRjlMRnh1SUNBZ0lDQWdJQ0F1TGk1N1pHbHpkR0Z1WTJWR2Jqb2diV1ZoYzNWeVpYMHNYRzRnSUNBZ0lDQWdJQzR1TG50dVJYQnZZMmh6T2lCdmNIUnBiMjV6UHk1amVXTnNaWE45TEZ4dUlDQWdJQ0FnSUNBdUxpNXZjSFJwYjI1ekxGeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHMWxkR2h2WkNBOVBTQW5kQzFUVGtVbktTQjdYRzRnSUNBZ0lDQnpjR1ZqVDNCMGFXOXVjeUE5SUh0Y2JpQWdJQ0FnSUNBZ0xpNHVlMlJoZEdFNklHUmhkR0Y5TEZ4dUlDQWdJQ0FnSUNBdUxpNTdaR2x6ZEdGdVkyVTZJRzFsWVhOMWNtVjlMRnh1SUNBZ0lDQWdJQ0F1TGk1N2FYUmxjbUYwYVc5dWN6b2diM0IwYVc5dWN6OHVZM2xqYkdWeklEOC9JSFZ1WkdWbWFXNWxaSDBzWEc0Z0lDQWdJQ0FnSUM0dUxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JXVjBhRzlrSUQwOUlDZFRVRVVuS1NCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHN1TGk1N1pHRjBZVG9nWkdGMFlYMHNJQzR1TG50a2FYTjBZVzVqWlRvZ2JXVmhjM1Z5Wlgwc0lDNHVMbTl3ZEdsdmJuTjlPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHN1TGk1N1pHRjBZVG9nWkdGMFlYMHNJQzR1TG50a2FYTjBZVzVqWlRvZ2JXVmhjM1Z5Wlgwc0lDNHVMbTl3ZEdsdmJuTjlPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1FYWmhhV3hoWW14bFVtVmtkV05sY25OYmJXVjBhRzlrWFNoemNHVmpUM0IwYVc5dWN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUlcxaVpXUnpJSFJvWlNCa1lYUmhJR2RwZG1WdUlHbHVkRzhnZEdobElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QjBhR1VnWTJodmMyVnVJRzFsZEdodlpDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0IwY21GdWMzQnZjMlVnVjJobGRHaGxjaUIwYnlCMGNtRnVjMlp2Y20wZ1kyOXZjbVJwYm1GMFpYTWdkRzhnYUdGMlpTQmpiMngxYlc1ekxXWnBjbk4wSUc5eWFXVnVkR0YwYVc5dUxseHVJQ0FnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjBnU1dZZ2RHaGxJR1Z0WW1Wa1pHbHVaeUJ0WlhSb2IyUWdkMkZ6SUc1dmRDQm1iM1Z1WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCMGNtRnVjMlp2Y20wb2RISmhibk53YjNObE9pQmliMjlzWldGdUlEMGdabUZzYzJVcE9pQjdJRnRyWlhrNklITjBjbWx1WjEwNklFMWhkSEpwZUNCOUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVpXUjFZMlZ5SUQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFNaV1IxWTJWeUlIZGhjeUJ1YjNRZ1pHVm1hVzVsWkM0bktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdlMlZ0WW1Wa1pHbHVaeXdnWkdsemRHRnVZMlY5SUQwZ2RHaHBjeTV5WldSMVkyVnlMblJ5WVc1elptOXliU2dwTzF4dVhHNGdJQ0FnYVdZZ0tIUnlZVzV6Y0c5elpTa2dlMXh1SUNBZ0lDQWdaVzFpWldSa2FXNW5JRDBnZEhKaGJuTndiM05sVFdGMGNtbDRLR1Z0WW1Wa1pHbHVaeWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCdFpYUnlhV056SUdGMllXbHNZV0pzWlNCaWVTQjBlWEJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdkSGx3WlU1aGJXVWdkSGx3WlNCdVlXMWxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJoZG1GcGJHRmliR1ZOWlhSeWFXTnpRbmxVZVhCbEtIUjVjR1ZPWVcxbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG10bGVYTW9RWFpoYVd4aFlteGxUV1YwY21samMxdDBlWEJsVG1GdFpWMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVmhaRzl1YkhsY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JoZG1GcGJHRmliR1ZOWlhSb2IyUnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZTWldSMVkyVnljeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCdFpYUnlhV056SUdGMllXbHNZV0pzWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsWVdSdmJteDVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1lYWmhhV3hoWW14bFRXVjBjbWxqY3lncElIdGNiaUFnSUNCc1pYUWdZVzV6T2lCemRISnBibWRiWFNBOUlGdGRPMXh1SUNBZ0lFOWlhbVZqZEM1MllXeDFaWE1vUVhaaGFXeGhZbXhsVFdWMGNtbGpjeWt1Wm05eVJXRmphQ2dvYjJKcUtTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbkpoZVNBOUlFOWlhbVZqZEM1MllXeDFaWE1vYjJKcUtUdGNiaUFnSUNBZ0lHRnVjeUE5SUZzdUxpNWhibk1zSUM0dUxtRnljbUY1WFR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdZVzV6TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBEaW1lbnNpb25hbGl0eVJlZHVjZXIgfSBmcm9tICcuLi9yZWR1Y2UtZGltZW5zaW9uYWxpdHknO1xuLyoqXG4gKiBXb3JrZXIgdGhyZWFkIHJlY2VpdmluZyBkYXRhIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7YW55W119IGNvbHVtbkRhdGEgU2FtcGxlcyB0byBwcm9jZXNzLlxuICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kLlxuICogQHBhcmFtIHtLbm93bk1ldHJpY3N9IG1lYXN1cmUgRGlzdGFuY2UgbWV0cmljLlxuICogQHBhcmFtIHthbnl9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIGFsZ29yaXRobS5cbiAqIEByZXR1cm4ge2FueX0gRW1iZWRkaW5nIChhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUpLlxuICovXG5mdW5jdGlvbiBvbk1lc3NhZ2UoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgcmVkdWNlciA9IG5ldyBEaW1lbnNpb25hbGl0eVJlZHVjZXIoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gcmVkdWNlci50cmFuc2Zvcm0odHJ1ZSk7XG59XG5zZWxmLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zIH0gfSkgPT4ge1xuICAgIGxldCBkYXRhO1xuICAgIHRyeSB7XG4gICAgICAgIGRhdGEgPSBvbk1lc3NhZ2UoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZGF0YSA9IHsgZXJyb3I6IGUgfTtcbiAgICB9XG4gICAgc2VsZi5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGVycm9yOiBkYXRhLmVycm9yLFxuICAgICAgICBkaXN0YW5jZTogZGF0YS5kaXN0YW5jZSxcbiAgICAgICAgZW1iZWRkaW5nOiBkYXRhLmVtYmVkZGluZyxcbiAgICB9KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05sY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbVJwYldWdWMybHZibUZzYVhSNUxYSmxaSFZqWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVUZETEhGQ1FVRnhRaXhGUVVGbExFMUJRVTBzTUVKQlFUQkNMRU5CUVVNN1FVRkhOMFU3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hUUVVGVExGTkJRVk1zUTBGQlF5eFZRVUZwUWl4RlFVRkZMRTFCUVc5Q0xFVkJRVVVzVDBGQmNVSXNSVUZCUlN4UFFVRmhPMGxCUXpsR0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NjVUpCUVhGQ0xFTkJRM1pETEZWQlFWVXNSVUZEVml4TlFVRk5MRVZCUTA0c1QwRkJUeXhGUVVOUUxFOUJRVThzUTBGRFVpeERRVUZETzBsQlEwWXNUMEZCVHl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEycERMRU5CUVVNN1FVRkZSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJReXhWUVVGVkxFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVVU3U1VGRGJFVXNTVUZCU1N4SlFVRnZSQ3hEUVVGRE8wbEJRM3BFTEVsQlFVYzdVVUZEUkN4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRM2hFTzBsQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVN1VVRkRaaXhKUVVGSkxFZEJRVWNzUlVGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1MwRkRia0k3U1VGRFJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTJZc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTzFGQlEycENMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdFJRVU4yUWl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk03UzBGRE1VSXNRMEZCUXl4RFFVRkRPMEZCUTB3c1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdEVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWElzSUV0dWIzZHVUV1YwYUc5a2MzMGdabkp2YlNBbkxpNHZjbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1Snp0Y2JtbHRjRzl5ZENCN1MyNXZkMjVOWlhSeWFXTnpmU0JtY205dElDY3VMaTkwZVhCbFpDMXRaWFJ5YVdOekp6dGNibHh1THlvcVhHNGdLaUJYYjNKclpYSWdkR2h5WldGa0lISmxZMlZwZG1sdVp5QmtZWFJoSUdaMWJtTjBhVzl1TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3WVc1NVcxMTlJR052YkhWdGJrUmhkR0VnVTJGdGNHeGxjeUIwYnlCd2NtOWpaWE56TGx4dUlDb2dRSEJoY21GdElIdExibTkzYmsxbGRHaHZaSE45SUcxbGRHaHZaQ0JGYldKbFpHUnBibWNnYldWMGFHOWtMbHh1SUNvZ1FIQmhjbUZ0SUh0TGJtOTNiazFsZEhKcFkzTjlJRzFsWVhOMWNtVWdSR2x6ZEdGdVkyVWdiV1YwY21sakxseHVJQ29nUUhCaGNtRnRJSHRoYm5sOUlHOXdkR2x2Ym5NZ1QzQjBhVzl1Y3lCMGJ5QndZWE56SUhSdklHRnNaMjl5YVhSb2JTNWNiaUFxSUVCeVpYUjFjbTRnZTJGdWVYMGdSVzFpWldSa2FXNW5JQ2hoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1VwTGx4dUlDb3ZYRzVtZFc1amRHbHZiaUJ2YmsxbGMzTmhaMlVvWTI5c2RXMXVSR0YwWVRvZ1lXNTVXMTBzSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJvYjJSekxDQnRaV0Z6ZFhKbE9pQkxibTkzYmsxbGRISnBZM01zSUc5d2RHbHZibk0vT2lCaGJua3BPaUI3WkdsemRHRnVZMlUvT2lCaGJua3NJR1Z0WW1Wa1pHbHVaejg2SUdGdWVYMGdlMXh1SUNCamIyNXpkQ0J5WldSMVkyVnlJRDBnYm1WM0lFUnBiV1Z1YzJsdmJtRnNhWFI1VW1Wa2RXTmxjaWhjYmlBZ0lDQmpiMngxYlc1RVlYUmhMRnh1SUNBZ0lHMWxkR2h2WkN4Y2JpQWdJQ0J0WldGemRYSmxMRnh1SUNBZ0lHOXdkR2x2Ym5Nc1hHNGdJQ2s3WEc0Z0lISmxkSFZ5YmlCeVpXUjFZMlZ5TG5SeVlXNXpabTl5YlNoMGNuVmxLVHRjYm4xY2JseHVjMlZzWmk1dmJtMWxjM05oWjJVZ1BTQW9lMlJoZEdFNklIdGpiMngxYlc1RVlYUmhMQ0J0WlhSb2IyUXNJRzFsWVhOMWNtVXNJRzl3ZEdsdmJuTjlmU2tnUFQ0Z2UxeHVJQ0JzWlhRZ1pHRjBZVG9nZTJWeWNtOXlQem9nWVc1NUxDQmthWE4wWVc1alpUODZJR0Z1ZVN3Z1pXMWlaV1JrYVc1blB6b2dZVzU1ZlR0Y2JpQWdkSEo1ZTF4dUlDQWdJR1JoZEdFZ1BTQnZiazFsYzNOaFoyVW9ZMjlzZFcxdVJHRjBZU3dnYldWMGFHOWtMQ0J0WldGemRYSmxMQ0J2Y0hScGIyNXpLVHRjYmlBZ2ZTQmpZWFJqYUNBb1pUb2dZVzU1S1NCN1hHNGdJQ0FnWkdGMFlTQTlJSHRsY25KdmNqb2daWDA3WEc0Z0lIMWNiaUFnYzJWc1ppNXdiM04wVFdWemMyRm5aU2g3WEc0Z0lDQWdaWEp5YjNJNklHUmhkR0V1WlhKeWIzSXNYRzRnSUNBZ1pHbHpkR0Z1WTJVNklHUmhkR0V1WkdsemRHRnVZMlVzWEc0Z0lDQWdaVzFpWldSa2FXNW5PaUJrWVhSaExtVnRZbVZrWkdsdVp5eGNiaUFnZlNrN1hHNTlPMXh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xudmFyIHRzbmVfMSA9IHJlcXVpcmUoXCIuL3RzbmVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUU05FXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0c25lXzEuVFNORTsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xuY2xhc3MgVFNORSB7XG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG4gICAgICAgIC8vIHJldHVybiAwIG1lYW4gdW5pdCBzdGFuZGFyZCBkZXZpYXRpb24gcmFuZG9tIG51bWJlclxuICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSAwLjA7XG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgICAgIG9wdCA9IG9wdCB8fCB7fTtcbiAgICAgICAgdGhpcy5wZXJwbGV4aXR5ID0gdGhpcy5nZXRvcHQob3B0LCAncGVycGxleGl0eScsIDMwKTsgLy8gZWZmZWN0aXZlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9yc1xuICAgICAgICB0aGlzLmRpbSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2RpbScsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgICAgIHRoaXMuZXBzaWxvbiA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2Vwc2lsb24nLCAxMCk7IC8vIGxlYXJuaW5nIHJhdGVcbiAgICB9XG4gICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbWVzc2FnZSB8fCAnQXNzZXJ0aW9uIGZhaWxlZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3ludGF4IHN1Z2FyXG4gICAgZ2V0b3B0KG9wdCwgZmllbGQsIGRlZmF1bHR2YWwpIHtcbiAgICAgICAgaWYgKG9wdC5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRbZmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHR2YWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2F1c3NSYW5kb20oKSB7XG4gICAgICAgIGlmICh0aGlzLnJldHVyblYpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuViA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudlZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHYgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHIgPSB1ICogdSArIHYgKiB2O1xuICAgICAgICBpZiAociA9PT0gMCB8fCByID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2F1c3NSYW5kb20oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjID0gTWF0aC5zcXJ0KC0yICogTWF0aC5sb2cocikgLyByKTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSB2ICogYzsgLy8gY2FjaGUgdGhpcyBmb3IgbmV4dCBmdW5jdGlvbiBjYWxsIGZvciBlZmZpY2llbmN5XG4gICAgICAgIHRoaXMucmV0dXJuViA9IHRydWU7XG4gICAgICAgIHJldHVybiB1ICogYztcbiAgICB9XG4gICAgLy8gcmV0dXJuIHJhbmRvbSBub3JtYWwgbnVtYmVyXG4gICAgcmFuZG4obXUsIHN0ZCkgeyByZXR1cm4gbXUgKyB0aGlzLmdhdXNzUmFuZG9tKCkgKiBzdGQ7IH1cbiAgICAvLyB1dGlsaXRpdHkgdGhhdCBjcmVhdGVzIGNvbnRpZ3VvdXMgdmVjdG9yIG9mIHplcm9zIG9mIHNpemUgblxuICAgIHplcm9zKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobikgPT09ICd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGFycltpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkobik7IC8vIHR5cGVkIGFycmF5cyBhcmUgZmFzdGVyXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdXRpbGl0eSB0aGF0IHJldHVybnMgMmQgYXJyYXkgZmlsbGVkIHdpdGggcmFuZG9tIG51bWJlcnNcbiAgICAvLyBvciB3aXRoIHZhbHVlIHMsIGlmIHByb3ZpZGVkXG4gICAgcmFuZG4yZChuLCBkLCBzKSB7XG4gICAgICAgIGNvbnN0IHVzZXMgPSB0eXBlb2YgcyAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IHggPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhoZXJlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGQ7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh1c2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHhoZXJlLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHRoaXMucmFuZG4oMC4wLCAxZS00KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeC5wdXNoKHhoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBMMiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAgTDIoeDEsIHgyKSB7XG4gICAgICAgIGNvbnN0IEQgPSB4MS5sZW5ndGg7XG4gICAgICAgIGxldCBkID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBEOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHgxaSA9IHgxW2ldO1xuICAgICAgICAgICAgY29uc3QgeDJpID0geDJbaV07XG4gICAgICAgICAgICBkICs9ICh4MWkgLSB4MmkpICogKHgxaSAtIHgyaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgcGFpcndpc2UgZGlzdGFuY2UgaW4gYWxsIHZlY3RvcnMgaW4gWFxuICAgIHh0b2QoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpc3QgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuTDIoWFtpXSwgWFtqXSk7XG4gICAgICAgICAgICAgICAgZGlzdFtpICogTiArIGpdID0gZDtcbiAgICAgICAgICAgICAgICBkaXN0W2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXN0O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIChwX3tpfGp9ICsgcF97anxpfSkvKDJuKVxuICAgIGQycChELCBwZXJwbGV4aXR5LCB0b2wpIHtcbiAgICAgICAgY29uc3QgbmYgPSBNYXRoLnNxcnQoRC5sZW5ndGgpOyAvLyB0aGlzIGJldHRlciBiZSBhbiBpbnRlZ2VyXG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLmZsb29yKG5mKTtcbiAgICAgICAgdGhpcy5hc3NlcnQobiA9PT0gbmYsICdEIHNob3VsZCBoYXZlIHNxdWFyZSBudW1iZXIgb2YgZWxlbWVudHMuJyk7XG4gICAgICAgIGNvbnN0IGhUYXJnZXQgPSBNYXRoLmxvZyhwZXJwbGV4aXR5KTsgLy8gdGFyZ2V0IGVudHJvcHkgb2YgZGlzdHJpYnV0aW9uXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLnplcm9zKG4gKiBuKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuICAgICAgICBjb25zdCBwcm93ID0gdGhpcy56ZXJvcyhuKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgbGV0IGJldGFtaW4gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YW1heCA9IEluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGEgPSAxOyAvLyBpbml0aWFsIHZhbHVlIG9mIHByZWNpc2lvblxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1heHRyaWVzID0gNTA7XG4gICAgICAgICAgICAvLyBwZXJmb3JtIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHByZWNpc2lvbiBiZXRhXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSBlbnRyb3B5IG9mIHRoZSBkaXN0cmlidXRpb24gaXMgYXBwcm9wcmlhdGVcbiAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGVudHJvcHkgYW5kIGtlcm5lbCByb3cgd2l0aCBiZXRhIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIGxldCBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaiA9IE1hdGguZXhwKC1EW2kgKiBuICsgal0gKiBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyB3ZSBkb250IGNhcmUgYWJvdXQgZGlhZ29uYWxzXG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBwajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIHAgYW5kIGNvbXB1dGUgZW50cm9weVxuICAgICAgICAgICAgICAgIGxldCBuSGVyZSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwc3VtID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IHByb3dbal0gLyBwc3VtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBqID4gMWUtNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbkhlcmUgLT0gcGogKiBNYXRoLmxvZyhwaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYWRqdXN0IGJldGEgYmFzZWQgb24gcmVzdWx0XG4gICAgICAgICAgICAgICAgaWYgKG5IZXJlID4gaFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlbnRyb3B5IHdhcyB0b28gaGlnaCAoZGlzdHJpYnV0aW9uIHRvbyBkaWZmdXNlKVxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gZm9yIG1vcmUgcGVha3kgZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJldGFtaW4gPSBiZXRhOyAvLyBtb3ZlIHVwIHRoZSBib3VuZHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtYXggPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAqIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gKGJldGEgKyBiZXRhbWF4KSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgICAgICAgICAgICBiZXRhbWF4ID0gYmV0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtaW4gPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHN0b3BwaW5nIGNvbmRpdGlvbnM6IHRvbyBtYW55IHRyaWVzIG9yIGdvdCBhIGdvb2QgcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgbnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5IZXJlIC0gaFRhcmdldCkgPCB0b2wpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChudW0gPj0gbWF4dHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGEgcG9pbnQgJyArIGkgKyAnIGdldHMgcHJlY2lzaW9uICcgKyBiZXRhICsgJyBhZnRlciAnICsgbnVtICsgJyBiaW5hcnkgc2VhcmNoIHN0ZXBzLicpO1xuICAgICAgICAgICAgLy8gY29weSBvdmVyIHRoZSBmaW5hbCBwcm93IHRvIFAgYXQgcm93IGlcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgUFtpICogbiArIGpdID0gcHJvd1tqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBlbmQgbG9vcCBvdmVyIGV4YW1wbGVzIGlcbiAgICAgICAgLy8gc3ltbWV0cml6ZSBQIGFuZCBub3JtYWxpemUgaXQgdG8gc3VtIHRvIDEgb3ZlciBhbGwgaWpcbiAgICAgICAgY29uc3QgcE91dCA9IHRoaXMuemVyb3MobiAqIG4pO1xuICAgICAgICBjb25zdCBOMiA9IG4gKiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBwT3V0W2kgKiBuICsgal0gPSBNYXRoLm1heCgoUFtpICogbiArIGpdICsgUFtqICogbiArIGldKSAvIE4yLCAxZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwT3V0O1xuICAgIH1cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb25cbiAgICBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNldCBvZiBoaWdoLWRpbWVuc2lvbmFsIHBvaW50c1xuICAgIC8vIGFuZCBjcmVhdGVzIG1hdHJpeCBQIGZyb20gdGhlbSB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICBpbml0RGF0YVJhdyhYKSB7XG4gICAgICAgIGNvbnN0IE4gPSBYLmxlbmd0aDtcbiAgICAgICAgY29uc3QgRCA9IFhbMF0ubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgdGhpcy5hc3NlcnQoRCA+IDAsICcgWFswXSBpcyBlbXB0eT8gV2hlcmUgaXMgdGhlIGRhdGE/Jyk7XG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy54dG9kKFgpOyAvLyBjb252ZXJ0IFggdG8gZGlzdGFuY2VzIHVzaW5nIGdhdXNzaWFuIGtlcm5lbFxuICAgICAgICB0aGlzLlAgPSB0aGlzLmQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTsgLy8gYXR0YWNoIHRvIG9iamVjdFxuICAgICAgICB0aGlzLk4gPSBOOyAvLyBiYWNrIHVwIHRoZSBzaXplIG9mIHRoZSBkYXRhc2V0XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgZ2l2ZW4gZGlzdGFuY2UgbWF0cml4IGFuZCBjcmVhdGVzXG4gICAgLy8gbWF0cml4IFAgZnJvbSB0aGVtLlxuICAgIC8vIEQgaXMgYXNzdW1lZCB0byBiZSBwcm92aWRlZCBhcyBhIGxpc3Qgb2YgbGlzdHMsIGFuZCBzaG91bGQgYmUgc3ltbWV0cmljXG4gICAgaW5pdERhdGFEaXN0KEQpIHtcbiAgICAgICAgY29uc3QgTiA9IEQubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgLy8gY29udmVydCBEIHRvIGEgKGZhc3QpIHR5cGVkIGFycmF5IHZlcnNpb25cbiAgICAgICAgY29uc3QgZGlzdHMgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IERbaV1bal07XG4gICAgICAgICAgICAgICAgZGlzdHNbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdHNbaiAqIE4gKyBpXSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7XG4gICAgICAgIHRoaXMuTiA9IE47XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyAocmUpaW5pdGlhbGl6ZXMgdGhlIHNvbHV0aW9uIHRvIHJhbmRvbVxuICAgIGluaXRTb2x1dGlvbigpIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgcmFuZG9tIHNvbHV0aW9uIHRvIHQtU05FXG4gICAgICAgIHRoaXMuWSA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltKTsgLy8gdGhlIHNvbHV0aW9uXG4gICAgICAgIHRoaXMuZ2FpbnMgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMS4wKTsgLy8gc3RlcCBnYWlucyB0byBhY2NlbGVyYXRlIHByb2dyZXNzIGluIHVuY2hhbmdpbmcgZGlyZWN0aW9uc1xuICAgICAgICB0aGlzLnlzdGVwID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDAuMCk7IC8vIG1vbWVudHVtIGFjY3VtdWxhdG9yXG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgfVxuICAgIC8vIHJldHVybiBwb2ludGVyIHRvIGN1cnJlbnQgc29sdXRpb25cbiAgICBnZXRTb2x1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuWTtcbiAgICB9XG4gICAgLy8gcGVyZm9ybSBhIHNpbmdsZSBzdGVwIG9mIG9wdGltaXphdGlvbiB0byBpbXByb3ZlIHRoZSBlbWJlZGRpbmdcbiAgICBzdGVwKCkge1xuICAgICAgICB0aGlzLml0ZXIgKz0gMTtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIGNvbnN0IGNvc3QgPSBjZy5jb3N0O1xuICAgICAgICBjb25zdCBncmFkID0gY2cuZ3JhZDtcbiAgICAgICAgLy8gcGVyZm9ybSBncmFkaWVudCBzdGVwXG4gICAgICAgIGNvbnN0IHltZWFuID0gdGhpcy56ZXJvcyh0aGlzLmRpbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnaWQgPSBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZCA9IHRoaXMueXN0ZXBbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ2FpbmlkID0gdGhpcy5nYWluc1tpXVtkXTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGdhaW4gdXBkYXRlXG4gICAgICAgICAgICAgICAgbGV0IG5ld2dhaW4gPSB0aGlzLnNpZ24oZ2lkKSA9PT0gdGhpcy5zaWduKHNpZCkgPyBnYWluaWQgKiAwLjggOiBnYWluaWQgKyAwLjI7XG4gICAgICAgICAgICAgICAgaWYgKG5ld2dhaW4gPCAwLjAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld2dhaW4gPSAwLjAxO1xuICAgICAgICAgICAgICAgIH0gLy8gY2xhbXBcbiAgICAgICAgICAgICAgICB0aGlzLmdhaW5zW2ldW2RdID0gbmV3Z2FpbjsgLy8gc3RvcmUgZm9yIG5leHQgdHVyblxuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbW9tZW50dW0gc3RlcCBkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBtb212YWwgPSB0aGlzLml0ZXIgPCAyNTAgPyAwLjUgOiAwLjg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c2lkID0gbW9tdmFsICogc2lkIC0gdGhpcy5lcHNpbG9uICogbmV3Z2FpbiAqIGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy55c3RlcFtpXVtkXSA9IG5ld3NpZDsgLy8gcmVtZW1iZXIgdGhlIHN0ZXAgd2UgdG9va1xuICAgICAgICAgICAgICAgIC8vIHN0ZXAhXG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdICs9IG5ld3NpZDtcbiAgICAgICAgICAgICAgICB5bWVhbltkXSArPSB0aGlzLllbaV1bZF07IC8vIGFjY3VtdWxhdGUgbWVhbiBzbyB0aGF0IHdlIGNhbiBjZW50ZXIgbGF0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXByb2plY3QgWSB0byBiZSB6ZXJvIG1lYW5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSAtPSB5bWVhbltkXSAvIE47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pZih0aGlzLml0ZXIlMTAwPT09MCkgY29uc29sZS5sb2coJ2l0ZXIgJyArIHRoaXMuaXRlciArICcsIGNvc3Q6ICcgKyBjb3N0KTtcbiAgICAgICAgcmV0dXJuIGNvc3Q7IC8vIHJldHVybiBjdXJyZW50IGNvc3RcbiAgICB9XG4gICAgLy8gZm9yIGRlYnVnZ2luZzogZ3JhZGllbnQgY2hlY2tcbiAgICBkZWJ1Z0dyYWQoKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIGNvbnN0IGUgPSAxZS01O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeW9sZCA9IHRoaXMuWVtpXVtkXTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkICsgZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZzAgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCAtIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cxID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuYWx5dGljID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1lcmljYWwgPSAoY2cwLmNvc3QgLSBjZzEuY29zdCkgLyAoMiAqIGUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGkgKyAnLCcgKyBkICsgJzogZ3JhZGNoZWNrIGFuYWx5dGljOiAnICsgYW5hbHl0aWMgKyAnIHZzLiBudW1lcmljYWw6ICcgKyBudW1lcmljYWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGNvc3QgYW5kIGdyYWRpZW50LCBnaXZlbiBhbiBhcnJhbmdlbWVudFxuICAgIGNvc3RHcmFkKFkpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgZGltID0gdGhpcy5kaW07IC8vIGRpbSBvZiBvdXRwdXQgc3BhY2VcbiAgICAgICAgY29uc3QgUCA9IHRoaXMuUDtcbiAgICAgICAgY29uc3QgcG11bCA9IHRoaXMuaXRlciA8IDEwMCA/IDQgOiAxOyAvLyB0cmljayB0aGF0IGhlbHBzIHdpdGggbG9jYWwgb3B0aW1hXG4gICAgICAgIC8vIGNvbXB1dGUgY3VycmVudCBRIGRpc3RyaWJ1dGlvbiwgdW5ub3JtYWxpemVkIGZpcnN0XG4gICAgICAgIGNvbnN0IHF1QXJyID0gdGhpcy56ZXJvcyhOICogTik7XG4gICAgICAgIGxldCBxc3VtID0gMC4wO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaGVyZSA9IFlbaV1bZF0gLSBZW2pdW2RdO1xuICAgICAgICAgICAgICAgICAgICBkc3VtICs9IGRoZXJlICogZGhlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ID0gMS4wIC8gKDEuMCArIGRzdW0pOyAvLyBTdHVkZW50IHQtZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgcXVBcnJbaSAqIE4gKyBqXSA9IHF1O1xuICAgICAgICAgICAgICAgIHF1QXJyW2ogKiBOICsgaV0gPSBxdTtcbiAgICAgICAgICAgICAgICBxc3VtICs9IDIgKiBxdTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBub3JtYWxpemUgUSBkaXN0cmlidXRpb24gdG8gc3VtIHRvIDFcbiAgICAgICAgY29uc3QgTk4gPSBOICogTjtcbiAgICAgICAgY29uc3QgUSA9IHRoaXMuemVyb3MoTk4pO1xuICAgICAgICBmb3IgKGxldCBxID0gMDsgcSA8IE5OOyBxKyspIHtcbiAgICAgICAgICAgIFFbcV0gPSBNYXRoLm1heChxdUFycltxXSAvIHFzdW0sIDFlLTEwMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvc3QgPSAwLjA7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGdzdW0gPSBuZXcgQXJyYXkoZGltKTsgLy8gaW5pdCBncmFkIGZvciBwb2ludCBpXG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgZ3N1bVtkXSA9IDAuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29zdCArPSAtUFtpICogTiArIGpdICogTWF0aC5sb2coUVtpICogTiArIGpdKTsgLy8gYWNjdW11bGF0ZSBjb3N0ICh0aGUgbm9uLWNvbnN0YW50IHBvcnRpb24gYXQgbGVhc3QuLi4pXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSAqIE4gKyBqXSAtIFFbaSAqIE4gKyBqXSkgKiBxdUFycltpICogTiArIGpdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZ3N1bVtkXSArPSBwcmVtdWx0ICogKFlbaV1bZF0gLSBZW2pdW2RdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFkLnB1c2goZ3N1bSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29zdCwgZ3JhZCB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVFNORSA9IFRTTkU7XG4iLCJjb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzQW55QXJyYXkob2JqZWN0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKG9iamVjdCkuZW5kc1dpdGgoJ0FycmF5XScpO1xufVxuIiwiLyoqXG4gKiBDYWxjdWxhdGUgY3VycmVudCBlcnJvclxuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbWV0ZXJzIC0gQXJyYXkgb2YgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVycm9yQ2FsY3VsYXRpb24oXG4gIGRhdGEsXG4gIHBhcmFtZXRlcnMsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbikge1xuICBsZXQgZXJyb3IgPSAwO1xuICBjb25zdCBmdW5jID0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uKHBhcmFtZXRlcnMpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgZXJyb3IgKz0gTWF0aC5hYnMoZGF0YS55W2ldIC0gZnVuYyhkYXRhLnhbaV0pKTtcbiAgfVxuXG4gIHJldHVybiBlcnJvcjtcbn1cbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCJpbXBvcnQgeyBpc0FueUFycmF5IH0gZnJvbSAnaXMtYW55LWFycmF5JztcbmltcG9ydCBtYXggZnJvbSAnbWwtYXJyYXktbWF4JztcbmltcG9ydCBtaW4gZnJvbSAnbWwtYXJyYXktbWluJztcblxuZnVuY3Rpb24gcmVzY2FsZShpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FueUFycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfSBlbHNlIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIG91dHB1dDtcblxuICBpZiAob3B0aW9ucy5vdXRwdXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICghaXNBbnlBcnJheShvcHRpb25zLm91dHB1dCkpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ291dHB1dCBvcHRpb24gbXVzdCBiZSBhbiBhcnJheSBpZiBzcGVjaWZpZWQnKTtcbiAgICB9XG5cbiAgICBvdXRwdXQgPSBvcHRpb25zLm91dHB1dDtcbiAgfSBlbHNlIHtcbiAgICBvdXRwdXQgPSBuZXcgQXJyYXkoaW5wdXQubGVuZ3RoKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50TWluID0gbWluKGlucHV0KTtcbiAgdmFyIGN1cnJlbnRNYXggPSBtYXgoaW5wdXQpO1xuXG4gIGlmIChjdXJyZW50TWluID09PSBjdXJyZW50TWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbmltdW0gYW5kIG1heGltdW0gaW5wdXQgdmFsdWVzIGFyZSBlcXVhbC4gQ2Fubm90IHJlc2NhbGUgYSBjb25zdGFudCBhcnJheScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1pbiA9IG9wdGlvbnMubWluLFxuICAgICAgbWluVmFsdWUgPSBfb3B0aW9ucyRtaW4gPT09IHZvaWQgMCA/IG9wdGlvbnMuYXV0b01pbk1heCA/IGN1cnJlbnRNaW4gOiAwIDogX29wdGlvbnMkbWluLFxuICAgICAgX29wdGlvbnMkbWF4ID0gb3B0aW9ucy5tYXgsXG4gICAgICBtYXhWYWx1ZSA9IF9vcHRpb25zJG1heCA9PT0gdm9pZCAwID8gb3B0aW9ucy5hdXRvTWluTWF4ID8gY3VycmVudE1heCA6IDEgOiBfb3B0aW9ucyRtYXg7XG5cbiAgaWYgKG1pblZhbHVlID49IG1heFZhbHVlKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBvcHRpb24gbXVzdCBiZSBzbWFsbGVyIHRoYW4gbWF4IG9wdGlvbicpO1xuICB9XG5cbiAgdmFyIGZhY3RvciA9IChtYXhWYWx1ZSAtIG1pblZhbHVlKSAvIChjdXJyZW50TWF4IC0gY3VycmVudE1pbik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFtpXSA9IChpbnB1dFtpXSAtIGN1cnJlbnRNaW4pICogZmFjdG9yICsgbWluVmFsdWU7XG4gIH1cblxuICByZXR1cm4gb3V0cHV0O1xufVxuXG5leHBvcnQgeyByZXNjYWxlIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtaW4oaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtaW5WYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPCBtaW5WYWx1ZSkgbWluVmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtaW5WYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWluIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5mdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgdmFyIG9wdGlvbnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1sxXSA6IHt9O1xuXG4gIGlmICghaXNBbnlBcnJheShpbnB1dCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBpZiAoaW5wdXQubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBub3QgYmUgZW1wdHknKTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyRmcm9tSW5kZXggPSBvcHRpb25zLmZyb21JbmRleCxcbiAgICAgIGZyb21JbmRleCA9IF9vcHRpb25zJGZyb21JbmRleCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJGZyb21JbmRleCxcbiAgICAgIF9vcHRpb25zJHRvSW5kZXggPSBvcHRpb25zLnRvSW5kZXgsXG4gICAgICB0b0luZGV4ID0gX29wdGlvbnMkdG9JbmRleCA9PT0gdm9pZCAwID8gaW5wdXQubGVuZ3RoIDogX29wdGlvbnMkdG9JbmRleDtcblxuICBpZiAoZnJvbUluZGV4IDwgMCB8fCBmcm9tSW5kZXggPj0gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKGZyb21JbmRleCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Zyb21JbmRleCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciBzbWFsbGVyIHRoYW4gbGVuZ3RoJyk7XG4gIH1cblxuICBpZiAodG9JbmRleCA8PSBmcm9tSW5kZXggfHwgdG9JbmRleCA+IGlucHV0Lmxlbmd0aCB8fCAhTnVtYmVyLmlzSW50ZWdlcih0b0luZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndG9JbmRleCBtdXN0IGJlIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIGZyb21JbmRleCBhbmQgYXQgbW9zdCBlcXVhbCB0byBsZW5ndGgnKTtcbiAgfVxuXG4gIHZhciBtYXhWYWx1ZSA9IGlucHV0W2Zyb21JbmRleF07XG5cbiAgZm9yICh2YXIgaSA9IGZyb21JbmRleCArIDE7IGkgPCB0b0luZGV4OyBpKyspIHtcbiAgICBpZiAoaW5wdXRbaV0gPiBtYXhWYWx1ZSkgbWF4VmFsdWUgPSBpbnB1dFtpXTtcbiAgfVxuXG4gIHJldHVybiBtYXhWYWx1ZTtcbn1cblxuZXhwb3J0IHsgbWF4IGFzIGRlZmF1bHQgfTtcbiIsImNvbnN0IGluZGVudCA9ICcgJy5yZXBlYXQoMik7XG5jb25zdCBpbmRlbnREYXRhID0gJyAnLnJlcGVhdCg0KTtcblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RNYXRyaXgoKSB7XG4gIHJldHVybiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnModGhpcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0TWF0cml4V2l0aE9wdGlvbnMobWF0cml4LCBvcHRpb25zID0ge30pIHtcbiAgY29uc3Qge1xuICAgIG1heFJvd3MgPSAxNSxcbiAgICBtYXhDb2x1bW5zID0gMTAsXG4gICAgbWF4TnVtU2l6ZSA9IDgsXG4gICAgcGFkTWludXMgPSAnYXV0bycsXG4gIH0gPSBvcHRpb25zO1xuICByZXR1cm4gYCR7bWF0cml4LmNvbnN0cnVjdG9yLm5hbWV9IHtcbiR7aW5kZW50fVtcbiR7aW5kZW50RGF0YX0ke2luc3BlY3REYXRhKG1hdHJpeCwgbWF4Um93cywgbWF4Q29sdW1ucywgbWF4TnVtU2l6ZSwgcGFkTWludXMpfVxuJHtpbmRlbnR9XVxuJHtpbmRlbnR9cm93czogJHttYXRyaXgucm93c31cbiR7aW5kZW50fWNvbHVtbnM6ICR7bWF0cml4LmNvbHVtbnN9XG59YDtcbn1cblxuZnVuY3Rpb24gaW5zcGVjdERhdGEobWF0cml4LCBtYXhSb3dzLCBtYXhDb2x1bW5zLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICBjb25zdCB7IHJvd3MsIGNvbHVtbnMgfSA9IG1hdHJpeDtcbiAgY29uc3QgbWF4SSA9IE1hdGgubWluKHJvd3MsIG1heFJvd3MpO1xuICBjb25zdCBtYXhKID0gTWF0aC5taW4oY29sdW1ucywgbWF4Q29sdW1ucyk7XG4gIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gIGlmIChwYWRNaW51cyA9PT0gJ2F1dG8nKSB7XG4gICAgcGFkTWludXMgPSBmYWxzZTtcbiAgICBsb29wOiBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgICAgaWYgKG1hdHJpeC5nZXQoaSwgaikgPCAwKSB7XG4gICAgICAgICAgcGFkTWludXMgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrIGxvb3A7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1heEk7IGkrKykge1xuICAgIGxldCBsaW5lID0gW107XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXhKOyBqKyspIHtcbiAgICAgIGxpbmUucHVzaChmb3JtYXROdW1iZXIobWF0cml4LmdldChpLCBqKSwgbWF4TnVtU2l6ZSwgcGFkTWludXMpKTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2goYCR7bGluZS5qb2luKCcgJyl9YCk7XG4gIH1cbiAgaWYgKG1heEogIT09IGNvbHVtbnMpIHtcbiAgICByZXN1bHRbcmVzdWx0Lmxlbmd0aCAtIDFdICs9IGAgLi4uICR7Y29sdW1ucyAtIG1heENvbHVtbnN9IG1vcmUgY29sdW1uc2A7XG4gIH1cbiAgaWYgKG1heEkgIT09IHJvd3MpIHtcbiAgICByZXN1bHQucHVzaChgLi4uICR7cm93cyAtIG1heFJvd3N9IG1vcmUgcm93c2ApO1xuICB9XG4gIHJldHVybiByZXN1bHQuam9pbihgXFxuJHtpbmRlbnREYXRhfWApO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIobnVtLCBtYXhOdW1TaXplLCBwYWRNaW51cykge1xuICByZXR1cm4gKFxuICAgIG51bSA+PSAwICYmIHBhZE1pbnVzXG4gICAgICA/IGAgJHtmb3JtYXROdW1iZXIyKG51bSwgbWF4TnVtU2l6ZSAtIDEpfWBcbiAgICAgIDogZm9ybWF0TnVtYmVyMihudW0sIG1heE51bVNpemUpXG4gICkucGFkRW5kKG1heE51bVNpemUpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXROdW1iZXIyKG51bSwgbGVuKSB7XG4gIC8vIHNtYWxsLmxlbmd0aCBudW1iZXJzIHNob3VsZCBiZSBhcyBpc1xuICBsZXQgc3RyID0gbnVtLnRvU3RyaW5nKCk7XG4gIGlmIChzdHIubGVuZ3RoIDw9IGxlbikgcmV0dXJuIHN0cjtcblxuICAvLyAoNyknMC4wMDEyMycgaXMgYmV0dGVyIHRoZW4gKDcpJzEuMjNlLTInXG4gIC8vICg4KScwLjAwMDEyMycgaXMgd29yc2UgdGhlbiAoNyknMS4yM2UtMycsXG4gIGxldCBmaXggPSBudW0udG9GaXhlZChsZW4pO1xuICBpZiAoZml4Lmxlbmd0aCA+IGxlbikge1xuICAgIGZpeCA9IG51bS50b0ZpeGVkKE1hdGgubWF4KDAsIGxlbiAtIChmaXgubGVuZ3RoIC0gbGVuKSkpO1xuICB9XG4gIGlmIChcbiAgICBmaXgubGVuZ3RoIDw9IGxlbiAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnMC4wMDAnKSAmJlxuICAgICFmaXguc3RhcnRzV2l0aCgnLTAuMDAwJylcbiAgKSB7XG4gICAgcmV0dXJuIGZpeDtcbiAgfVxuXG4gIC8vIHdlbGwsIGlmIGl0J3Mgc3RpbGwgdG9vIGxvbmcgdGhlIHVzZXIgc2hvdWxkJ3ZlIHVzZWQgbG9uZ2VyIG51bWJlcnNcbiAgbGV0IGV4cCA9IG51bS50b0V4cG9uZW50aWFsKGxlbik7XG4gIGlmIChleHAubGVuZ3RoID4gbGVuKSB7XG4gICAgZXhwID0gbnVtLnRvRXhwb25lbnRpYWwoTWF0aC5tYXgoMCwgbGVuIC0gKGV4cC5sZW5ndGggLSBsZW4pKSk7XG4gIH1cbiAgcmV0dXJuIGV4cC5zbGljZSgwKTtcbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IGEgcm93IGluZGV4IGlzIG5vdCBvdXQgb2YgYm91bmRzXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW291dGVyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dJbmRleChtYXRyaXgsIGluZGV4LCBvdXRlcikge1xuICBsZXQgbWF4ID0gb3V0ZXIgPyBtYXRyaXgucm93cyA6IG1hdHJpeC5yb3dzIC0gMTtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IG1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdSb3cgaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCBhIGNvbHVtbiBpbmRleCBpcyBub3Qgb3V0IG9mIGJvdW5kc1xuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvdXRlcl1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uSW5kZXgobWF0cml4LCBpbmRleCwgb3V0ZXIpIHtcbiAgbGV0IG1heCA9IG91dGVyID8gbWF0cml4LmNvbHVtbnMgOiBtYXRyaXguY29sdW1ucyAtIDE7XG4gIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiBtYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQ29sdW1uIGluZGV4IG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93VmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgJ3ZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiBjb2x1bW5zJyxcbiAgICApO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgdGhlIHByb3ZpZGVkIHZlY3RvciBpcyBhbiBhcnJheSB3aXRoIHRoZSByaWdodCBsZW5ndGhcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7QXJyYXl8TWF0cml4fSB2ZWN0b3JcbiAqIEByZXR1cm4ge0FycmF5fVxuICogQHRocm93cyB7UmFuZ2VFcnJvcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrQ29sdW1uVmVjdG9yKG1hdHJpeCwgdmVjdG9yKSB7XG4gIGlmICh2ZWN0b3IudG8xREFycmF5KSB7XG4gICAgdmVjdG9yID0gdmVjdG9yLnRvMURBcnJheSgpO1xuICB9XG4gIGlmICh2ZWN0b3IubGVuZ3RoICE9PSBtYXRyaXgucm93cykge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd2ZWN0b3Igc2l6ZSBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBudW1iZXIgb2Ygcm93cycpO1xuICB9XG4gIHJldHVybiB2ZWN0b3I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGljZXMobWF0cml4LCByb3dJbmRpY2VzKSB7XG4gIGlmICghaXNBbnlBcnJheShyb3dJbmRpY2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3JvdyBpbmRpY2VzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93SW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChyb3dJbmRpY2VzW2ldIDwgMCB8fCByb3dJbmRpY2VzW2ldID49IG1hdHJpeC5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigncm93IGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5JbmRpY2VzKG1hdHJpeCwgY29sdW1uSW5kaWNlcykge1xuICBpZiAoIWlzQW55QXJyYXkoY29sdW1uSW5kaWNlcykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjb2x1bW4gaW5kaWNlcyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY29sdW1uSW5kaWNlc1tpXSA8IDAgfHwgY29sdW1uSW5kaWNlc1tpXSA+PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2NvbHVtbiBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUmFuZ2UobWF0cml4LCBzdGFydFJvdywgZW5kUm93LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKSB7XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoICE9PSA1KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2V4cGVjdGVkIDQgYXJndW1lbnRzJyk7XG4gIH1cbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Um93Jywgc3RhcnRSb3cpO1xuICBjaGVja051bWJlcignZW5kUm93JywgZW5kUm93KTtcbiAgY2hlY2tOdW1iZXIoJ3N0YXJ0Q29sdW1uJywgc3RhcnRDb2x1bW4pO1xuICBjaGVja051bWJlcignZW5kQ29sdW1uJywgZW5kQ29sdW1uKTtcbiAgaWYgKFxuICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgc3RhcnRDb2x1bW4gPiBlbmRDb2x1bW4gfHxcbiAgICBzdGFydFJvdyA8IDAgfHxcbiAgICBzdGFydFJvdyA+PSBtYXRyaXgucm93cyB8fFxuICAgIGVuZFJvdyA8IDAgfHxcbiAgICBlbmRSb3cgPj0gbWF0cml4LnJvd3MgfHxcbiAgICBzdGFydENvbHVtbiA8IDAgfHxcbiAgICBzdGFydENvbHVtbiA+PSBtYXRyaXguY29sdW1ucyB8fFxuICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICBlbmRDb2x1bW4gPj0gbWF0cml4LmNvbHVtbnNcbiAgKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1N1Ym1hdHJpeCBpbmRpY2VzIGFyZSBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbmV3QXJyYXkobGVuZ3RoLCB2YWx1ZSA9IDApIHtcbiAgbGV0IGFycmF5ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBhcnJheS5wdXNoKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmZ1bmN0aW9uIGNoZWNrTnVtYmVyKG5hbWUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrTm9uRW1wdHkobWF0cml4KSB7XG4gIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdFbXB0eSBtYXRyaXggaGFzIG5vIGVsZW1lbnRzIHRvIGluZGV4Jyk7XG4gIH1cbn1cbiIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuaW1wb3J0IHJlc2NhbGUgZnJvbSAnbWwtYXJyYXktcmVzY2FsZSc7XG5cbmltcG9ydCB7IGluc3BlY3RNYXRyaXgsIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyB9IGZyb20gJy4vaW5zcGVjdCc7XG5pbXBvcnQgeyBpbnN0YWxsTWF0aE9wZXJhdGlvbnMgfSBmcm9tICcuL21hdGhPcGVyYXRpb25zJztcbmltcG9ydCB7XG4gIHN1bUJ5Um93LFxuICBzdW1CeUNvbHVtbixcbiAgc3VtQWxsLFxuICBwcm9kdWN0QnlSb3csXG4gIHByb2R1Y3RCeUNvbHVtbixcbiAgcHJvZHVjdEFsbCxcbiAgdmFyaWFuY2VCeVJvdyxcbiAgdmFyaWFuY2VCeUNvbHVtbixcbiAgdmFyaWFuY2VBbGwsXG4gIGNlbnRlckJ5Um93LFxuICBjZW50ZXJCeUNvbHVtbixcbiAgY2VudGVyQWxsLFxuICBzY2FsZUJ5Um93LFxuICBzY2FsZUJ5Q29sdW1uLFxuICBzY2FsZUFsbCxcbiAgZ2V0U2NhbGVCeVJvdyxcbiAgZ2V0U2NhbGVCeUNvbHVtbixcbiAgZ2V0U2NhbGVBbGwsXG59IGZyb20gJy4vc3RhdCc7XG5pbXBvcnQge1xuICBjaGVja1Jvd1ZlY3RvcixcbiAgY2hlY2tSb3dJbmRleCxcbiAgY2hlY2tDb2x1bW5JbmRleCxcbiAgY2hlY2tDb2x1bW5WZWN0b3IsXG4gIGNoZWNrUmFuZ2UsXG4gIGNoZWNrTm9uRW1wdHksXG4gIGNoZWNrUm93SW5kaWNlcyxcbiAgY2hlY2tDb2x1bW5JbmRpY2VzLFxufSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RNYXRyaXgge1xuICBzdGF0aWMgZnJvbTFEQXJyYXkobmV3Um93cywgbmV3Q29sdW1ucywgbmV3RGF0YSkge1xuICAgIGxldCBsZW5ndGggPSBuZXdSb3dzICogbmV3Q29sdW1ucztcbiAgICBpZiAobGVuZ3RoICE9PSBuZXdEYXRhLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2RhdGEgbGVuZ3RoIGRvZXMgbm90IG1hdGNoIGdpdmVuIGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobmV3Um93cywgbmV3Q29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgbmV3Um93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IG5ld0NvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgIG5ld01hdHJpeC5zZXQocm93LCBjb2x1bW4sIG5ld0RhdGFbcm93ICogbmV3Q29sdW1ucyArIGNvbHVtbl0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJvd1ZlY3RvcihuZXdEYXRhKSB7XG4gICAgbGV0IHZlY3RvciA9IG5ldyBNYXRyaXgoMSwgbmV3RGF0YS5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgdmVjdG9yLnNldCgwLCBpLCBuZXdEYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyBjb2x1bW5WZWN0b3IobmV3RGF0YSkge1xuICAgIGxldCB2ZWN0b3IgPSBuZXcgTWF0cml4KG5ld0RhdGEubGVuZ3RoLCAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld0RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZlY3Rvci5zZXQoaSwgMCwgbmV3RGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB2ZWN0b3I7XG4gIH1cblxuICBzdGF0aWMgemVyb3Mocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICB9XG5cbiAgc3RhdGljIG9uZXMocm93cywgY29sdW1ucykge1xuICAgIHJldHVybiBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpLmZpbGwoMSk7XG4gIH1cblxuICBzdGF0aWMgcmFuZChyb3dzLCBjb2x1bW5zLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcmFuZG9tID0gTWF0aC5yYW5kb20gfSA9IG9wdGlvbnM7XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgcmFuZG9tKCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIHJhbmRJbnQocm93cywgY29sdW1ucywgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEwMDAsIHJhbmRvbSA9IE1hdGgucmFuZG9tIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihtaW4pKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtaW4gbXVzdCBiZSBhbiBpbnRlZ2VyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1heCkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21heCBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgaW50ZXJ2YWwgPSBtYXggLSBtaW47XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG1pbiArIE1hdGgucm91bmQocmFuZG9tKCkgKiBpbnRlcnZhbCk7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaiwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGV5ZShyb3dzLCBjb2x1bW5zLCB2YWx1ZSkge1xuICAgIGlmIChjb2x1bW5zID09PSB1bmRlZmluZWQpIGNvbHVtbnMgPSByb3dzO1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB2YWx1ZSA9IDE7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgdmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xuICB9XG5cbiAgc3RhdGljIGRpYWcoZGF0YSwgcm93cywgY29sdW1ucykge1xuICAgIGxldCBsID0gZGF0YS5sZW5ndGg7XG4gICAgaWYgKHJvd3MgPT09IHVuZGVmaW5lZCkgcm93cyA9IGw7XG4gICAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkgY29sdW1ucyA9IHJvd3M7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKGwsIHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBtYXRyaXggPSB0aGlzLnplcm9zKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaSwgZGF0YVtpXSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgbWluKG1hdHJpeDEsIG1hdHJpeDIpIHtcbiAgICBtYXRyaXgxID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgxKTtcbiAgICBtYXRyaXgyID0gdGhpcy5jaGVja01hdHJpeChtYXRyaXgyKTtcbiAgICBsZXQgcm93cyA9IG1hdHJpeDEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IG1hdHJpeDEuY29sdW1ucztcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1pbihtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBtYXgobWF0cml4MSwgbWF0cml4Mikge1xuICAgIG1hdHJpeDEgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDEpO1xuICAgIG1hdHJpeDIgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDIpO1xuICAgIGxldCByb3dzID0gbWF0cml4MS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbWF0cml4MS5jb2x1bW5zO1xuICAgIGxldCByZXN1bHQgPSBuZXcgdGhpcyhyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBNYXRoLm1heChtYXRyaXgxLmdldChpLCBqKSwgbWF0cml4Mi5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0YXRpYyBjaGVja01hdHJpeCh2YWx1ZSkge1xuICAgIHJldHVybiBBYnN0cmFjdE1hdHJpeC5pc01hdHJpeCh2YWx1ZSkgPyB2YWx1ZSA6IG5ldyBNYXRyaXgodmFsdWUpO1xuICB9XG5cbiAgc3RhdGljIGlzTWF0cml4KHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdmFsdWUua2xhc3MgPT09ICdNYXRyaXgnO1xuICB9XG5cbiAgZ2V0IHNpemUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyAqIHRoaXMuY29sdW1ucztcbiAgfVxuXG4gIGFwcGx5KGNhbGxiYWNrKSB7XG4gICAgaWYgKHR5cGVvZiBjYWxsYmFjayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzLCBpLCBqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0bzFEQXJyYXkoKSB7XG4gICAgbGV0IGFycmF5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBhcnJheS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cbiAgdG8yREFycmF5KCkge1xuICAgIGxldCBjb3B5ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29weS5wdXNoKFtdKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgY29weVtpXS5wdXNoKHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvcHk7XG4gIH1cblxuICB0b0pTT04oKSB7XG4gICAgcmV0dXJuIHRoaXMudG8yREFycmF5KCk7XG4gIH1cblxuICBpc1Jvd1ZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAxO1xuICB9XG5cbiAgaXNDb2x1bW5WZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucyA9PT0gMTtcbiAgfVxuXG4gIGlzVmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDEgfHwgdGhpcy5jb2x1bW5zID09PSAxO1xuICB9XG5cbiAgaXNTcXVhcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgaXNFbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSAwIHx8IHRoaXMuY29sdW1ucyA9PT0gMDtcbiAgfVxuXG4gIGlzU3ltbWV0cmljKCkge1xuICAgIGlmICh0aGlzLmlzU3F1YXJlKCkpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPD0gaTsgaisrKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopICE9PSB0aGlzLmdldChqLCBpKSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlzRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNFY2hlbG9uRm9ybSA9IHRydWU7XG4gICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICB3aGlsZSAoaSA8IHRoaXMucm93cyAmJiBpc0VjaGVsb25Gb3JtKSB7XG4gICAgICBqID0gMDtcbiAgICAgIGNoZWNrZWQgPSBmYWxzZTtcbiAgICAgIHdoaWxlIChqIDwgdGhpcy5jb2x1bW5zICYmIGNoZWNrZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMCkge1xuICAgICAgICAgIGorKztcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdldChpLCBqKSA9PT0gMSAmJiBqID4gcHJldmlvdXNDb2x1bW4pIHtcbiAgICAgICAgICBjaGVja2VkID0gdHJ1ZTtcbiAgICAgICAgICBwcmV2aW91c0NvbHVtbiA9IGo7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXNFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc0VjaGVsb25Gb3JtO1xuICB9XG5cbiAgaXNSZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IGkgPSAwO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgcHJldmlvdXNDb2x1bW4gPSAtMTtcbiAgICBsZXQgaXNSZWR1Y2VkRWNoZWxvbkZvcm0gPSB0cnVlO1xuICAgIGxldCBjaGVja2VkID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCB0aGlzLnJvd3MgJiYgaXNSZWR1Y2VkRWNoZWxvbkZvcm0pIHtcbiAgICAgIGogPSAwO1xuICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMgJiYgY2hlY2tlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID09PSAwKSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KGksIGopID09PSAxICYmIGogPiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHByZXZpb3VzQ29sdW1uID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBrID0gaiArIDE7IGsgPCB0aGlzLnJvd3M7IGsrKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaykgIT09IDApIHtcbiAgICAgICAgICBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpKys7XG4gICAgfVxuICAgIHJldHVybiBpc1JlZHVjZWRFY2hlbG9uRm9ybTtcbiAgfVxuXG4gIGVjaGVsb25Gb3JtKCkge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IGggPSAwO1xuICAgIGxldCBrID0gMDtcbiAgICB3aGlsZSAoaCA8IHJlc3VsdC5yb3dzICYmIGsgPCByZXN1bHQuY29sdW1ucykge1xuICAgICAgbGV0IGlNYXggPSBoO1xuICAgICAgZm9yIChsZXQgaSA9IGg7IGkgPCByZXN1bHQucm93czsgaSsrKSB7XG4gICAgICAgIGlmIChyZXN1bHQuZ2V0KGksIGspID4gcmVzdWx0LmdldChpTWF4LCBrKSkge1xuICAgICAgICAgIGlNYXggPSBpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocmVzdWx0LmdldChpTWF4LCBrKSA9PT0gMCkge1xuICAgICAgICBrKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHQuc3dhcFJvd3MoaCwgaU1heCk7XG4gICAgICAgIGxldCB0bXAgPSByZXN1bHQuZ2V0KGgsIGspO1xuICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHJlc3VsdC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICByZXN1bHQuc2V0KGgsIGosIHJlc3VsdC5nZXQoaCwgaikgLyB0bXApO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSBoICsgMTsgaSA8IHJlc3VsdC5yb3dzOyBpKyspIHtcbiAgICAgICAgICBsZXQgZmFjdG9yID0gcmVzdWx0LmdldChpLCBrKSAvIHJlc3VsdC5nZXQoaCwgayk7XG4gICAgICAgICAgcmVzdWx0LnNldChpLCBrLCAwKTtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCByZXN1bHQuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHJlc3VsdC5nZXQoaSwgaikgLSByZXN1bHQuZ2V0KGgsIGopICogZmFjdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaCsrO1xuICAgICAgICBrKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZWR1Y2VkRWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuZWNoZWxvbkZvcm0oKTtcbiAgICBsZXQgbSA9IHJlc3VsdC5jb2x1bW5zO1xuICAgIGxldCBuID0gcmVzdWx0LnJvd3M7XG4gICAgbGV0IGggPSBuIC0gMTtcbiAgICB3aGlsZSAoaCA+PSAwKSB7XG4gICAgICBpZiAocmVzdWx0Lm1heFJvdyhoKSA9PT0gMCkge1xuICAgICAgICBoLS07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcCA9IDA7XG4gICAgICAgIGxldCBwaXZvdCA9IGZhbHNlO1xuICAgICAgICB3aGlsZSAocCA8IG4gJiYgcGl2b3QgPT09IGZhbHNlKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdC5nZXQoaCwgcCkgPT09IDEpIHtcbiAgICAgICAgICAgIHBpdm90ID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGg7IGkrKykge1xuICAgICAgICAgIGxldCBmYWN0b3IgPSByZXN1bHQuZ2V0KGksIHApO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwOyBqIDwgbTsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdG1wID0gcmVzdWx0LmdldChpLCBqKSAtIGZhY3RvciAqIHJlc3VsdC5nZXQoaCwgaik7XG4gICAgICAgICAgICByZXN1bHQuc2V0KGksIGosIHRtcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGgtLTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNldCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldCBtZXRob2QgaXMgdW5pbXBsZW1lbnRlZCcpO1xuICB9XG5cbiAgZ2V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignZ2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkJyk7XG4gIH1cblxuICByZXBlYXQob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHJvd3MgPSAxLCBjb2x1bW5zID0gMSB9ID0gb3B0aW9ucztcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIocm93cykgfHwgcm93cyA8PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdyb3dzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgfVxuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihjb2x1bW5zKSB8fCBjb2x1bW5zIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgbGV0IG1hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzICogcm93cywgdGhpcy5jb2x1bW5zICogY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIG1hdHJpeC5zZXRTdWJNYXRyaXgodGhpcywgdGhpcy5yb3dzICogaSwgdGhpcy5jb2x1bW5zICogaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBmaWxsKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbmVnKCkge1xuICAgIHJldHVybiB0aGlzLm11bFMoLTEpO1xuICB9XG5cbiAgZ2V0Um93KGluZGV4KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IHJvdyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHJvdy5wdXNoKHRoaXMuZ2V0KGluZGV4LCBpKSk7XG4gICAgfVxuICAgIHJldHVybiByb3c7XG4gIH1cblxuICBnZXRSb3dWZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LnJvd1ZlY3Rvcih0aGlzLmdldFJvdyhpbmRleCkpO1xuICB9XG5cbiAgc2V0Um93KGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tSb3dWZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcFJvd3Mocm93MSwgcm93Mikge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93MSk7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KHJvdzEsIGkpO1xuICAgICAgdGhpcy5zZXQocm93MSwgaSwgdGhpcy5nZXQocm93MiwgaSkpO1xuICAgICAgdGhpcy5zZXQocm93MiwgaSwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0Q29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgbGV0IGNvbHVtbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGNvbHVtbi5wdXNoKHRoaXMuZ2V0KGksIGluZGV4KSk7XG4gICAgfVxuICAgIHJldHVybiBjb2x1bW47XG4gIH1cblxuICBnZXRDb2x1bW5WZWN0b3IoaW5kZXgpIHtcbiAgICByZXR1cm4gTWF0cml4LmNvbHVtblZlY3Rvcih0aGlzLmdldENvbHVtbihpbmRleCkpO1xuICB9XG5cbiAgc2V0Q29sdW1uKGluZGV4LCBhcnJheSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGFycmF5ID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgYXJyYXkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCBhcnJheVtpXSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3dhcENvbHVtbnMoY29sdW1uMSwgY29sdW1uMikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uMSk7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBsZXQgdGVtcCA9IHRoaXMuZ2V0KGksIGNvbHVtbjEpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMSwgdGhpcy5nZXQoaSwgY29sdW1uMikpO1xuICAgICAgdGhpcy5zZXQoaSwgY29sdW1uMiwgdGVtcCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Um93VmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrUm93VmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltqXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZGl2Q29sdW1uVmVjdG9yKHZlY3Rvcikge1xuICAgIHZlY3RvciA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIHZlY3Rvcik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZlY3RvcltpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsUm93KGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGluZGV4LCBpLCB0aGlzLmdldChpbmRleCwgaSkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbXVsQ29sdW1uKGluZGV4LCB2YWx1ZSkge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgaW5kZXgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0KGksIGluZGV4LCB0aGlzLmdldChpLCBpbmRleCkgKiB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgbWF4KGJ5KSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1heCA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPiBtYXhbcm93XSkge1xuICAgICAgICAgICAgICBtYXhbcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWF4ID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heFtjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1heFtjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heCkge1xuICAgICAgICAgICAgICBtYXggPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1heEluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID4gdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbihieSkge1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGNvbnN0IG1pbiA9IG5ldyBBcnJheSh0aGlzLnJvd3MpLmZpbGwoTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICAgICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldChyb3csIGNvbHVtbikgPCBtaW5bcm93XSkge1xuICAgICAgICAgICAgICBtaW5bcm93XSA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgY29uc3QgbWluID0gbmV3IEFycmF5KHRoaXMuY29sdW1ucykuZmlsbChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbltjb2x1bW5dKSB7XG4gICAgICAgICAgICAgIG1pbltjb2x1bW5dID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgbGV0IG1pbiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbikge1xuICAgICAgICAgICAgICBtaW4gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1pbkluZGV4KCkge1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBsZXQgaWR4ID0gWzAsIDBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopIDwgdikge1xuICAgICAgICAgIHYgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgICAgIGlkeFsxXSA9IGo7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1heFJvdyhyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1heFJvd0luZGV4KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBsZXQgaWR4ID0gW3JvdywgMF07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgaSkgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChyb3csIGkpO1xuICAgICAgICBpZHhbMV0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluUm93KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWluUm93SW5kZXgocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGxldCBpZHggPSBbcm93LCAwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICAgIGlkeFsxXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtYXhDb2x1bW4oY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtYXhDb2x1bW5JbmRleChjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgbGV0IGlkeCA9IFswLCBjb2x1bW5dO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChpLCBjb2x1bW4pID4gdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQoaSwgY29sdW1uKTtcbiAgICAgICAgaWR4WzBdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1pbkNvbHVtbihjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1pbkNvbHVtbkluZGV4KGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBsZXQgaWR4ID0gWzAsIGNvbHVtbl07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPCB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgZGlhZygpIHtcbiAgICBsZXQgbWluID0gTWF0aC5taW4odGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGxldCBkaWFnID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgZGlhZy5wdXNoKHRoaXMuZ2V0KGksIGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGRpYWc7XG4gIH1cblxuICBub3JtKHR5cGUgPSAnZnJvYmVuaXVzJykge1xuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGlmICh0eXBlID09PSAnbWF4Jykge1xuICAgICAgcmV0dXJuIHRoaXMubWF4KCk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZnJvYmVuaXVzJykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICsgdGhpcy5nZXQoaSwgaikgKiB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgdW5rbm93biBub3JtIHR5cGU6ICR7dHlwZX1gKTtcbiAgICB9XG4gIH1cblxuICBjdW11bGF0aXZlU3VtKCkge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgc3VtICs9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBzdW0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGRvdCh2ZWN0b3IyKSB7XG4gICAgaWYgKEFic3RyYWN0TWF0cml4LmlzTWF0cml4KHZlY3RvcjIpKSB2ZWN0b3IyID0gdmVjdG9yMi50bzFEQXJyYXkoKTtcbiAgICBsZXQgdmVjdG9yMSA9IHRoaXMudG8xREFycmF5KCk7XG4gICAgaWYgKHZlY3RvcjEubGVuZ3RoICE9PSB2ZWN0b3IyLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvcnMgZG8gbm90IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICAgIH1cbiAgICBsZXQgZG90ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZlY3RvcjEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGRvdCArPSB2ZWN0b3IxW2ldICogdmVjdG9yMltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGRvdDtcbiAgfVxuXG4gIG1tdWwob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG5cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IHRoaXMuY29sdW1ucztcbiAgICBsZXQgcCA9IG90aGVyLmNvbHVtbnM7XG5cbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeChtLCBwKTtcblxuICAgIGxldCBCY29saiA9IG5ldyBGbG9hdDY0QXJyYXkobik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBwOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgIEJjb2xqW2tdID0gb3RoZXIuZ2V0KGssIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICBsZXQgcyA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbjsgaysrKSB7XG4gICAgICAgICAgcyArPSB0aGlzLmdldChpLCBrKSAqIEJjb2xqW2tdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzdWx0LnNldChpLCBqLCBzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuMngyKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDIsIDIpO1xuICAgIGNvbnN0IGExMSA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGIxMSA9IG90aGVyLmdldCgwLCAwKTtcbiAgICBjb25zdCBhMTIgPSB0aGlzLmdldCgwLCAxKTtcbiAgICBjb25zdCBiMTIgPSBvdGhlci5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDEsIDApO1xuICAgIGNvbnN0IGEyMiA9IHRoaXMuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgxLCAxKTtcblxuICAgIC8vIENvbXB1dGUgaW50ZXJtZWRpYXRlIHZhbHVlcy5cbiAgICBjb25zdCBtMSA9IChhMTEgKyBhMjIpICogKGIxMSArIGIyMik7XG4gICAgY29uc3QgbTIgPSAoYTIxICsgYTIyKSAqIGIxMTtcbiAgICBjb25zdCBtMyA9IGExMSAqIChiMTIgLSBiMjIpO1xuICAgIGNvbnN0IG00ID0gYTIyICogKGIyMSAtIGIxMSk7XG4gICAgY29uc3QgbTUgPSAoYTExICsgYTEyKSAqIGIyMjtcbiAgICBjb25zdCBtNiA9IChhMjEgLSBhMTEpICogKGIxMSArIGIxMik7XG4gICAgY29uc3QgbTcgPSAoYTEyIC0gYTIyKSAqIChiMjEgKyBiMjIpO1xuXG4gICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICBjb25zdCBjMDAgPSBtMSArIG00IC0gbTUgKyBtNztcbiAgICBjb25zdCBjMDEgPSBtMyArIG01O1xuICAgIGNvbnN0IGMxMCA9IG0yICsgbTQ7XG4gICAgY29uc3QgYzExID0gbTEgLSBtMiArIG0zICsgbTY7XG5cbiAgICByZXN1bHQuc2V0KDAsIDAsIGMwMCk7XG4gICAgcmVzdWx0LnNldCgwLCAxLCBjMDEpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHN0cmFzc2VuM3gzKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KDMsIDMpO1xuXG4gICAgY29uc3QgYTAwID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgY29uc3QgYTAxID0gdGhpcy5nZXQoMCwgMSk7XG4gICAgY29uc3QgYTAyID0gdGhpcy5nZXQoMCwgMik7XG4gICAgY29uc3QgYTEwID0gdGhpcy5nZXQoMSwgMCk7XG4gICAgY29uc3QgYTExID0gdGhpcy5nZXQoMSwgMSk7XG4gICAgY29uc3QgYTEyID0gdGhpcy5nZXQoMSwgMik7XG4gICAgY29uc3QgYTIwID0gdGhpcy5nZXQoMiwgMCk7XG4gICAgY29uc3QgYTIxID0gdGhpcy5nZXQoMiwgMSk7XG4gICAgY29uc3QgYTIyID0gdGhpcy5nZXQoMiwgMik7XG5cbiAgICBjb25zdCBiMDAgPSBvdGhlci5nZXQoMCwgMCk7XG4gICAgY29uc3QgYjAxID0gb3RoZXIuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGIwMiA9IG90aGVyLmdldCgwLCAyKTtcbiAgICBjb25zdCBiMTAgPSBvdGhlci5nZXQoMSwgMCk7XG4gICAgY29uc3QgYjExID0gb3RoZXIuZ2V0KDEsIDEpO1xuICAgIGNvbnN0IGIxMiA9IG90aGVyLmdldCgxLCAyKTtcbiAgICBjb25zdCBiMjAgPSBvdGhlci5nZXQoMiwgMCk7XG4gICAgY29uc3QgYjIxID0gb3RoZXIuZ2V0KDIsIDEpO1xuICAgIGNvbnN0IGIyMiA9IG90aGVyLmdldCgyLCAyKTtcblxuICAgIGNvbnN0IG0xID0gKGEwMCArIGEwMSArIGEwMiAtIGExMCAtIGExMSAtIGEyMSAtIGEyMikgKiBiMTE7XG4gICAgY29uc3QgbTIgPSAoYTAwIC0gYTEwKSAqICgtYjAxICsgYjExKTtcbiAgICBjb25zdCBtMyA9IGExMSAqICgtYjAwICsgYjAxICsgYjEwIC0gYjExIC0gYjEyIC0gYjIwICsgYjIyKTtcbiAgICBjb25zdCBtNCA9ICgtYTAwICsgYTEwICsgYTExKSAqIChiMDAgLSBiMDEgKyBiMTEpO1xuICAgIGNvbnN0IG01ID0gKGExMCArIGExMSkgKiAoLWIwMCArIGIwMSk7XG4gICAgY29uc3QgbTYgPSBhMDAgKiBiMDA7XG4gICAgY29uc3QgbTcgPSAoLWEwMCArIGEyMCArIGEyMSkgKiAoYjAwIC0gYjAyICsgYjEyKTtcbiAgICBjb25zdCBtOCA9ICgtYTAwICsgYTIwKSAqIChiMDIgLSBiMTIpO1xuICAgIGNvbnN0IG05ID0gKGEyMCArIGEyMSkgKiAoLWIwMCArIGIwMik7XG4gICAgY29uc3QgbTEwID0gKGEwMCArIGEwMSArIGEwMiAtIGExMSAtIGExMiAtIGEyMCAtIGEyMSkgKiBiMTI7XG4gICAgY29uc3QgbTExID0gYTIxICogKC1iMDAgKyBiMDIgKyBiMTAgLSBiMTEgLSBiMTIgLSBiMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xMiA9ICgtYTAyICsgYTIxICsgYTIyKSAqIChiMTEgKyBiMjAgLSBiMjEpO1xuICAgIGNvbnN0IG0xMyA9IChhMDIgLSBhMjIpICogKGIxMSAtIGIyMSk7XG4gICAgY29uc3QgbTE0ID0gYTAyICogYjIwO1xuICAgIGNvbnN0IG0xNSA9IChhMjEgKyBhMjIpICogKC1iMjAgKyBiMjEpO1xuICAgIGNvbnN0IG0xNiA9ICgtYTAyICsgYTExICsgYTEyKSAqIChiMTIgKyBiMjAgLSBiMjIpO1xuICAgIGNvbnN0IG0xNyA9IChhMDIgLSBhMTIpICogKGIxMiAtIGIyMik7XG4gICAgY29uc3QgbTE4ID0gKGExMSArIGExMikgKiAoLWIyMCArIGIyMik7XG4gICAgY29uc3QgbTE5ID0gYTAxICogYjEwO1xuICAgIGNvbnN0IG0yMCA9IGExMiAqIGIyMTtcbiAgICBjb25zdCBtMjEgPSBhMTAgKiBiMDI7XG4gICAgY29uc3QgbTIyID0gYTIwICogYjAxO1xuICAgIGNvbnN0IG0yMyA9IGEyMiAqIGIyMjtcblxuICAgIGNvbnN0IGMwMCA9IG02ICsgbTE0ICsgbTE5O1xuICAgIGNvbnN0IGMwMSA9IG0xICsgbTQgKyBtNSArIG02ICsgbTEyICsgbTE0ICsgbTE1O1xuICAgIGNvbnN0IGMwMiA9IG02ICsgbTcgKyBtOSArIG0xMCArIG0xNCArIG0xNiArIG0xODtcbiAgICBjb25zdCBjMTAgPSBtMiArIG0zICsgbTQgKyBtNiArIG0xNCArIG0xNiArIG0xNztcbiAgICBjb25zdCBjMTEgPSBtMiArIG00ICsgbTUgKyBtNiArIG0yMDtcbiAgICBjb25zdCBjMTIgPSBtMTQgKyBtMTYgKyBtMTcgKyBtMTggKyBtMjE7XG4gICAgY29uc3QgYzIwID0gbTYgKyBtNyArIG04ICsgbTExICsgbTEyICsgbTEzICsgbTE0O1xuICAgIGNvbnN0IGMyMSA9IG0xMiArIG0xMyArIG0xNCArIG0xNSArIG0yMjtcbiAgICBjb25zdCBjMjIgPSBtNiArIG03ICsgbTggKyBtOSArIG0yMztcblxuICAgIHJlc3VsdC5zZXQoMCwgMCwgYzAwKTtcbiAgICByZXN1bHQuc2V0KDAsIDEsIGMwMSk7XG4gICAgcmVzdWx0LnNldCgwLCAyLCBjMDIpO1xuICAgIHJlc3VsdC5zZXQoMSwgMCwgYzEwKTtcbiAgICByZXN1bHQuc2V0KDEsIDEsIGMxMSk7XG4gICAgcmVzdWx0LnNldCgxLCAyLCBjMTIpO1xuICAgIHJlc3VsdC5zZXQoMiwgMCwgYzIwKTtcbiAgICByZXN1bHQuc2V0KDIsIDEsIGMyMSk7XG4gICAgcmVzdWx0LnNldCgyLCAyLCBjMjIpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBtbXVsU3RyYXNzZW4oeSkge1xuICAgIHkgPSBNYXRyaXguY2hlY2tNYXRyaXgoeSk7XG4gICAgbGV0IHggPSB0aGlzLmNsb25lKCk7XG4gICAgbGV0IHIxID0geC5yb3dzO1xuICAgIGxldCBjMSA9IHguY29sdW1ucztcbiAgICBsZXQgcjIgPSB5LnJvd3M7XG4gICAgbGV0IGMyID0geS5jb2x1bW5zO1xuICAgIGlmIChjMSAhPT0gcjIpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIGBNdWx0aXBseWluZyAke3IxfSB4ICR7YzF9IGFuZCAke3IyfSB4ICR7YzJ9IG1hdHJpeDogZGltZW5zaW9ucyBkbyBub3QgbWF0Y2guYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gUHV0IGEgbWF0cml4IGludG8gdGhlIHRvcCBsZWZ0IG9mIGEgbWF0cml4IG9mIHplcm9zLlxuICAgIC8vIGByb3dzYCBhbmQgYGNvbHNgIGFyZSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgb3V0cHV0IG1hdHJpeC5cbiAgICBmdW5jdGlvbiBlbWJlZChtYXQsIHJvd3MsIGNvbHMpIHtcbiAgICAgIGxldCByID0gbWF0LnJvd3M7XG4gICAgICBsZXQgYyA9IG1hdC5jb2x1bW5zO1xuICAgICAgaWYgKHIgPT09IHJvd3MgJiYgYyA9PT0gY29scykge1xuICAgICAgICByZXR1cm4gbWF0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHJlc3VsdGF0ID0gQWJzdHJhY3RNYXRyaXguemVyb3Mocm93cywgY29scyk7XG4gICAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KG1hdCwgMCwgMCk7XG4gICAgICAgIHJldHVybiByZXN1bHRhdDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgYm90aCBtYXRyaWNlcyBhcmUgdGhlIHNhbWUgc2l6ZS5cbiAgICAvLyBUaGlzIGlzIGV4Y2x1c2l2ZWx5IGZvciBzaW1wbGljaXR5OlxuICAgIC8vIHRoaXMgYWxnb3JpdGhtIGNhbiBiZSBpbXBsZW1lbnRlZCB3aXRoIG1hdHJpY2VzIG9mIGRpZmZlcmVudCBzaXplcy5cblxuICAgIGxldCByID0gTWF0aC5tYXgocjEsIHIyKTtcbiAgICBsZXQgYyA9IE1hdGgubWF4KGMxLCBjMik7XG4gICAgeCA9IGVtYmVkKHgsIHIsIGMpO1xuICAgIHkgPSBlbWJlZCh5LCByLCBjKTtcblxuICAgIC8vIE91ciByZWN1cnNpdmUgbXVsdGlwbGljYXRpb24gZnVuY3Rpb24uXG4gICAgZnVuY3Rpb24gYmxvY2tNdWx0KGEsIGIsIHJvd3MsIGNvbHMpIHtcbiAgICAgIC8vIEZvciBzbWFsbCBtYXRyaWNlcywgcmVzb3J0IHRvIG5haXZlIG11bHRpcGxpY2F0aW9uLlxuICAgICAgaWYgKHJvd3MgPD0gNTEyIHx8IGNvbHMgPD0gNTEyKSB7XG4gICAgICAgIHJldHVybiBhLm1tdWwoYik7IC8vIGEgaXMgZXF1aXZhbGVudCB0byB0aGlzXG4gICAgICB9XG5cbiAgICAgIC8vIEFwcGx5IGR5bmFtaWMgcGFkZGluZy5cbiAgICAgIGlmIChyb3dzICUgMiA9PT0gMSAmJiBjb2xzICUgMiA9PT0gMSkge1xuICAgICAgICBhID0gZW1iZWQoYSwgcm93cyArIDEsIGNvbHMgKyAxKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MgKyAxLCBjb2xzICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKHJvd3MgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzICsgMSwgY29scyk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzICsgMSwgY29scyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbHMgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICAgIGIgPSBlbWJlZChiLCByb3dzLCBjb2xzICsgMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBoYWxmUm93cyA9IHBhcnNlSW50KGEucm93cyAvIDIsIDEwKTtcbiAgICAgIGxldCBoYWxmQ29scyA9IHBhcnNlSW50KGEuY29sdW1ucyAvIDIsIDEwKTtcbiAgICAgIC8vIFN1YmRpdmlkZSBpbnB1dCBtYXRyaWNlcy5cbiAgICAgIGxldCBhMTEgPSBhLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG4gICAgICBsZXQgYjExID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuXG4gICAgICBsZXQgYTEyID0gYS5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjEyID0gYi5zdWJNYXRyaXgoMCwgaGFsZlJvd3MgLSAxLCBoYWxmQ29scywgYi5jb2x1bW5zIC0gMSk7XG5cbiAgICAgIGxldCBhMjEgPSBhLnN1Yk1hdHJpeChoYWxmUm93cywgYS5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcbiAgICAgIGxldCBiMjEgPSBiLnN1Yk1hdHJpeChoYWxmUm93cywgYi5yb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcblxuICAgICAgbGV0IGEyMiA9IGEuc3ViTWF0cml4KGhhbGZSb3dzLCBhLnJvd3MgLSAxLCBoYWxmQ29scywgYS5jb2x1bW5zIC0gMSk7XG4gICAgICBsZXQgYjIyID0gYi5zdWJNYXRyaXgoaGFsZlJvd3MsIGIucm93cyAtIDEsIGhhbGZDb2xzLCBiLmNvbHVtbnMgLSAxKTtcblxuICAgICAgLy8gQ29tcHV0ZSBpbnRlcm1lZGlhdGUgdmFsdWVzLlxuICAgICAgbGV0IG0xID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYTExLCBhMjIpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjExLCBiMjIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuICAgICAgbGV0IG0yID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMjEsIGEyMiksIGIxMSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtMyA9IGJsb2NrTXVsdChhMTEsIEFic3RyYWN0TWF0cml4LnN1YihiMTIsIGIyMiksIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTQgPSBibG9ja011bHQoYTIyLCBBYnN0cmFjdE1hdHJpeC5zdWIoYjIxLCBiMTEpLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG01ID0gYmxvY2tNdWx0KEFic3RyYWN0TWF0cml4LmFkZChhMTEsIGExMiksIGIyMiwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNiA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGEyMSwgYTExKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIxMSwgYjEyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcbiAgICAgIGxldCBtNyA9IGJsb2NrTXVsdChcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguc3ViKGExMiwgYTIyKSxcbiAgICAgICAgQWJzdHJhY3RNYXRyaXguYWRkKGIyMSwgYjIyKSxcbiAgICAgICAgaGFsZlJvd3MsXG4gICAgICAgIGhhbGZDb2xzLFxuICAgICAgKTtcblxuICAgICAgLy8gQ29tYmluZSBpbnRlcm1lZGlhdGUgdmFsdWVzIGludG8gdGhlIG91dHB1dC5cbiAgICAgIGxldCBjMTEgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTEsIG00KTtcbiAgICAgIGMxMS5zdWIobTUpO1xuICAgICAgYzExLmFkZChtNyk7XG4gICAgICBsZXQgYzEyID0gQWJzdHJhY3RNYXRyaXguYWRkKG0zLCBtNSk7XG4gICAgICBsZXQgYzIxID0gQWJzdHJhY3RNYXRyaXguYWRkKG0yLCBtNCk7XG4gICAgICBsZXQgYzIyID0gQWJzdHJhY3RNYXRyaXguc3ViKG0xLCBtMik7XG4gICAgICBjMjIuYWRkKG0zKTtcbiAgICAgIGMyMi5hZGQobTYpO1xuXG4gICAgICAvLyBDcm9wIG91dHB1dCB0byB0aGUgZGVzaXJlZCBzaXplICh1bmRvIGR5bmFtaWMgcGFkZGluZykuXG4gICAgICBsZXQgcmVzdWx0YXQgPSBBYnN0cmFjdE1hdHJpeC56ZXJvcygyICogYzExLnJvd3MsIDIgKiBjMTEuY29sdW1ucyk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMTEsIDAsIDApO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzEyLCBjMTEucm93cywgMCk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMjEsIDAsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMyMiwgYzExLnJvd3MsIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJldHVybiByZXN1bHRhdC5zdWJNYXRyaXgoMCwgcm93cyAtIDEsIDAsIGNvbHMgLSAxKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYmxvY2tNdWx0KHgsIHksIHIsIGMpO1xuICB9XG5cbiAgc2NhbGVSb3dzKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3Qgcm93ID0gdGhpcy5nZXRSb3coaSk7XG4gICAgICBpZiAocm93Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmVzY2FsZShyb3csIHsgbWluLCBtYXgsIG91dHB1dDogcm93IH0pO1xuICAgICAgfVxuICAgICAgbmV3TWF0cml4LnNldFJvdyhpLCByb3cpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc2NhbGVDb2x1bW5zKG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBtaW4gPSAwLCBtYXggPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzRmluaXRlKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGEgbnVtYmVyJyk7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAobWluID49IG1heCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ21pbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXgnKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgY29uc3QgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oaSk7XG4gICAgICBpZiAoY29sdW1uLmxlbmd0aCkge1xuICAgICAgICByZXNjYWxlKGNvbHVtbiwge1xuICAgICAgICAgIG1pbjogbWluLFxuICAgICAgICAgIG1heDogbWF4LFxuICAgICAgICAgIG91dHB1dDogY29sdW1uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG5ld01hdHJpeC5zZXRDb2x1bW4oaSwgY29sdW1uKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIGZsaXBSb3dzKCkge1xuICAgIGNvbnN0IG1pZGRsZSA9IE1hdGguY2VpbCh0aGlzLmNvbHVtbnMgLyAyKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1pZGRsZTsgaisrKSB7XG4gICAgICAgIGxldCBmaXJzdCA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICBsZXQgbGFzdCA9IHRoaXMuZ2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqKTtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgbGFzdCk7XG4gICAgICAgIHRoaXMuc2V0KGksIHRoaXMuY29sdW1ucyAtIDEgLSBqLCBmaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZmxpcENvbHVtbnMoKSB7XG4gICAgY29uc3QgbWlkZGxlID0gTWF0aC5jZWlsKHRoaXMucm93cyAvIDIpO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWlkZGxlOyBpKyspIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIGxldCBsYXN0ID0gdGhpcy5nZXQodGhpcy5yb3dzIC0gMSAtIGksIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBsYXN0KTtcbiAgICAgICAgdGhpcy5zZXQodGhpcy5yb3dzIC0gMSAtIGksIGosIGZpcnN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBrcm9uZWNrZXJQcm9kdWN0KG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuXG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSB0aGlzLmNvbHVtbnM7XG4gICAgbGV0IHAgPSBvdGhlci5yb3dzO1xuICAgIGxldCBxID0gb3RoZXIuY29sdW1ucztcblxuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KG0gKiBwLCBuICogcSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcDsgaysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgbCA9IDA7IGwgPCBxOyBsKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQocCAqIGkgKyBrLCBxICogaiArIGwsIHRoaXMuZ2V0KGksIGopICogb3RoZXIuZ2V0KGssIGwpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGtyb25lY2tlclN1bShvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcbiAgICBpZiAoIXRoaXMuaXNTcXVhcmUoKSB8fCAhb3RoZXIuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLcm9uZWNrZXIgU3VtIG5lZWRzIHR3byBTcXVhcmUgTWF0cmljZXMnKTtcbiAgICB9XG4gICAgbGV0IG0gPSB0aGlzLnJvd3M7XG4gICAgbGV0IG4gPSBvdGhlci5yb3dzO1xuICAgIGxldCBBeEkgPSB0aGlzLmtyb25lY2tlclByb2R1Y3QoTWF0cml4LmV5ZShuLCBuKSk7XG4gICAgbGV0IEl4QiA9IE1hdHJpeC5leWUobSwgbSkua3JvbmVja2VyUHJvZHVjdChvdGhlcik7XG4gICAgcmV0dXJuIEF4SS5hZGQoSXhCKTtcbiAgfVxuXG4gIHRyYW5zcG9zZSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gbmV3IE1hdHJpeCh0aGlzLmNvbHVtbnMsIHRoaXMucm93cyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGosIGksIHRoaXMuZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHNvcnRSb3dzKGNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVOdW1iZXJzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXRSb3coaSwgdGhpcy5nZXRSb3coaSkuc29ydChjb21wYXJlRnVuY3Rpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzb3J0Q29sdW1ucyhjb21wYXJlRnVuY3Rpb24gPSBjb21wYXJlTnVtYmVycykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIHRoaXMuc2V0Q29sdW1uKGksIHRoaXMuZ2V0Q29sdW1uKGkpLnNvcnQoY29tcGFyZUZ1bmN0aW9uKSk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgc3ViTWF0cml4KHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KFxuICAgICAgZW5kUm93IC0gc3RhcnRSb3cgKyAxLFxuICAgICAgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxLFxuICAgICk7XG4gICAgZm9yIChsZXQgaSA9IHN0YXJ0Um93OyBpIDw9IGVuZFJvdzsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRDb2x1bW47IGogPD0gZW5kQ29sdW1uOyBqKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChpIC0gc3RhcnRSb3csIGogLSBzdGFydENvbHVtbiwgdGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3ViTWF0cml4Um93KGluZGljZXMsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgICBpZiAoc3RhcnRDb2x1bW4gPT09IHVuZGVmaW5lZCkgc3RhcnRDb2x1bW4gPSAwO1xuICAgIGlmIChlbmRDb2x1bW4gPT09IHVuZGVmaW5lZCkgZW5kQ29sdW1uID0gdGhpcy5jb2x1bW5zIC0gMTtcbiAgICBpZiAoXG4gICAgICBzdGFydENvbHVtbiA+IGVuZENvbHVtbiB8fFxuICAgICAgc3RhcnRDb2x1bW4gPCAwIHx8XG4gICAgICBzdGFydENvbHVtbiA+PSB0aGlzLmNvbHVtbnMgfHxcbiAgICAgIGVuZENvbHVtbiA8IDAgfHxcbiAgICAgIGVuZENvbHVtbiA+PSB0aGlzLmNvbHVtbnNcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBcmd1bWVudCBvdXQgb2YgcmFuZ2UnKTtcbiAgICB9XG5cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChpbmRpY2VzLmxlbmd0aCwgZW5kQ29sdW1uIC0gc3RhcnRDb2x1bW4gKyAxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydENvbHVtbjsgaiA8PSBlbmRDb2x1bW47IGorKykge1xuICAgICAgICBpZiAoaW5kaWNlc1tpXSA8IDAgfHwgaW5kaWNlc1tpXSA+PSB0aGlzLnJvd3MpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihgUm93IGluZGV4IG91dCBvZiByYW5nZTogJHtpbmRpY2VzW2ldfWApO1xuICAgICAgICB9XG4gICAgICAgIG5ld01hdHJpeC5zZXQoaSwgaiAtIHN0YXJ0Q29sdW1uLCB0aGlzLmdldChpbmRpY2VzW2ldLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdWJNYXRyaXhDb2x1bW4oaW5kaWNlcywgc3RhcnRSb3csIGVuZFJvdykge1xuICAgIGlmIChzdGFydFJvdyA9PT0gdW5kZWZpbmVkKSBzdGFydFJvdyA9IDA7XG4gICAgaWYgKGVuZFJvdyA9PT0gdW5kZWZpbmVkKSBlbmRSb3cgPSB0aGlzLnJvd3MgLSAxO1xuICAgIGlmIChcbiAgICAgIHN0YXJ0Um93ID4gZW5kUm93IHx8XG4gICAgICBzdGFydFJvdyA8IDAgfHxcbiAgICAgIHN0YXJ0Um93ID49IHRoaXMucm93cyB8fFxuICAgICAgZW5kUm93IDwgMCB8fFxuICAgICAgZW5kUm93ID49IHRoaXMucm93c1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FyZ3VtZW50IG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KGVuZFJvdyAtIHN0YXJ0Um93ICsgMSwgaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Um93OyBqIDw9IGVuZFJvdzsgaisrKSB7XG4gICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHRoaXMuY29sdW1ucykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlOiAke2luZGljZXNbaV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TWF0cml4LnNldChqIC0gc3RhcnRSb3csIGksIHRoaXMuZ2V0KGosIGluZGljZXNbaV0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHNldFN1Yk1hdHJpeChtYXRyaXgsIHN0YXJ0Um93LCBzdGFydENvbHVtbikge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmIChtYXRyaXguaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgbGV0IGVuZFJvdyA9IHN0YXJ0Um93ICsgbWF0cml4LnJvd3MgLSAxO1xuICAgIGxldCBlbmRDb2x1bW4gPSBzdGFydENvbHVtbiArIG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgICBjaGVja1JhbmdlKHRoaXMsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KHN0YXJ0Um93ICsgaSwgc3RhcnRDb2x1bW4gKyBqLCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzZWxlY3Rpb24ocm93SW5kaWNlcywgY29sdW1uSW5kaWNlcykge1xuICAgIGNoZWNrUm93SW5kaWNlcyh0aGlzLCByb3dJbmRpY2VzKTtcbiAgICBjaGVja0NvbHVtbkluZGljZXModGhpcywgY29sdW1uSW5kaWNlcyk7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgocm93SW5kaWNlcy5sZW5ndGgsIGNvbHVtbkluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd0luZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGxldCByb3dJbmRleCA9IHJvd0luZGljZXNbaV07XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbkluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gY29sdW1uSW5kaWNlc1tqXTtcbiAgICAgICAgbmV3TWF0cml4LnNldChpLCBqLCB0aGlzLmdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHRyYWNlKCkge1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbih0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgbGV0IHRyYWNlID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICB0cmFjZSArPSB0aGlzLmdldChpLCBpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRyYWNlO1xuICB9XG5cbiAgY2xvbmUoKSB7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgodGhpcy5yb3dzLCB0aGlzLmNvbHVtbnMpO1xuICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgIGZvciAobGV0IGNvbHVtbiA9IDA7IGNvbHVtbiA8IHRoaXMuY29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChyb3csIGNvbHVtbiwgdGhpcy5nZXQocm93LCBjb2x1bW4pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1bShieSkge1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6XG4gICAgICAgIHJldHVybiBzdW1CeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBzdW1CeUNvbHVtbih0aGlzKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gc3VtQWxsKHRoaXMpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBwcm9kdWN0KGJ5KSB7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RCeVJvdyh0aGlzKTtcbiAgICAgIGNhc2UgJ2NvbHVtbic6XG4gICAgICAgIHJldHVybiBwcm9kdWN0QnlDb2x1bW4odGhpcyk7XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RBbGwodGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIG1lYW4oYnkpIHtcbiAgICBjb25zdCBzdW0gPSB0aGlzLnN1bShieSk7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMuY29sdW1ucztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICAgICAgc3VtW2ldIC89IHRoaXMucm93cztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc3VtO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBzdW0gLyB0aGlzLnNpemU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHZhcmlhbmNlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyB1bmJpYXNlZCA9IHRydWUsIG1lYW4gPSB0aGlzLm1lYW4oYnkpIH0gPSBvcHRpb25zO1xuICAgIGlmICh0eXBlb2YgdW5iaWFzZWQgIT09ICdib29sZWFuJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigndW5iaWFzZWQgbXVzdCBiZSBhIGJvb2xlYW4nKTtcbiAgICB9XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93Jzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkobWVhbikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VCeVJvdyh0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShtZWFuKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUJ5Q29sdW1uKHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmICh0eXBlb2YgbWVhbiAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdtZWFuIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFyaWFuY2VBbGwodGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICBzdGFuZGFyZERldmlhdGlvbihieSwgb3B0aW9ucykge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgdmFyaWFuY2UgPSB0aGlzLnZhcmlhbmNlKGJ5LCBvcHRpb25zKTtcbiAgICBpZiAoYnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIE1hdGguc3FydCh2YXJpYW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFyaWFuY2UubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyaWFuY2VbaV0gPSBNYXRoLnNxcnQodmFyaWFuY2VbaV0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhcmlhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGNlbnRlcihieSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgY2VudGVyID0gdGhpcy5tZWFuKGJ5KSB9ID0gb3B0aW9ucztcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShjZW50ZXIpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJCeVJvdyh0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KGNlbnRlcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckJ5Q29sdW1uKHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjZW50ZXIgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY2VudGVyIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBjZW50ZXJBbGwodGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHNjYWxlKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgbGV0IHNjYWxlID0gb3B0aW9ucy5zY2FsZTtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Um93KHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Um93KHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUJ5Q29sdW1uKHRoaXMpO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0FueUFycmF5KHNjYWxlKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUJ5Q29sdW1uKHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAoc2NhbGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjYWxlID0gZ2V0U2NhbGVBbGwodGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHNjYWxlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3NjYWxlIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICAgICAgfVxuICAgICAgICBzY2FsZUFsbCh0aGlzLCBzY2FsZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIG9wdGlvbjogJHtieX1gKTtcbiAgICB9XG4gIH1cblxuICB0b1N0cmluZyhvcHRpb25zKSB7XG4gICAgcmV0dXJuIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuXG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUua2xhc3MgPSAnTWF0cml4JztcbmlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJykge1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGVbU3ltYm9sLmZvcignbm9kZWpzLnV0aWwuaW5zcGVjdC5jdXN0b20nKV0gPVxuICAgIGluc3BlY3RNYXRyaXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVOdW1iZXJzKGEsIGIpIHtcbiAgcmV0dXJuIGEgLSBiO1xufVxuXG5mdW5jdGlvbiBpc0FycmF5T2ZOdW1iZXJzKGFycmF5KSB7XG4gIHJldHVybiBhcnJheS5ldmVyeSgoZWxlbWVudCkgPT4ge1xuICAgIHJldHVybiB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcic7XG4gIH0pO1xufVxuXG4vLyBTeW5vbnltc1xuQWJzdHJhY3RNYXRyaXgucmFuZG9tID0gQWJzdHJhY3RNYXRyaXgucmFuZDtcbkFic3RyYWN0TWF0cml4LnJhbmRvbUludCA9IEFic3RyYWN0TWF0cml4LnJhbmRJbnQ7XG5BYnN0cmFjdE1hdHJpeC5kaWFnb25hbCA9IEFic3RyYWN0TWF0cml4LmRpYWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZ29uYWwgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGlhZztcbkFic3RyYWN0TWF0cml4LmlkZW50aXR5ID0gQWJzdHJhY3RNYXRyaXguZXllO1xuQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5lZ2F0ZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5uZWc7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGVuc29yUHJvZHVjdCA9XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5rcm9uZWNrZXJQcm9kdWN0O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNYXRyaXggZXh0ZW5kcyBBYnN0cmFjdE1hdHJpeCB7XG4gIGNvbnN0cnVjdG9yKG5Sb3dzLCBuQ29sdW1ucykge1xuICAgIHN1cGVyKCk7XG4gICAgaWYgKE1hdHJpeC5pc01hdHJpeChuUm93cykpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zdHJ1Y3Rvci1yZXR1cm5cbiAgICAgIHJldHVybiBuUm93cy5jbG9uZSgpO1xuICAgIH0gZWxzZSBpZiAoTnVtYmVyLmlzSW50ZWdlcihuUm93cykgJiYgblJvd3MgPj0gMCkge1xuICAgICAgLy8gQ3JlYXRlIGFuIGVtcHR5IG1hdHJpeFxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihuQ29sdW1ucykgJiYgbkNvbHVtbnMgPj0gMCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgICB0aGlzLmRhdGEucHVzaChuZXcgRmxvYXQ2NEFycmF5KG5Db2x1bW5zKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25Db2x1bW5zIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc0FueUFycmF5KG5Sb3dzKSkge1xuICAgICAgLy8gQ29weSB0aGUgdmFsdWVzIGZyb20gdGhlIDJEIGFycmF5XG4gICAgICBjb25zdCBhcnJheURhdGEgPSBuUm93cztcbiAgICAgIG5Sb3dzID0gYXJyYXlEYXRhLmxlbmd0aDtcbiAgICAgIG5Db2x1bW5zID0gblJvd3MgPyBhcnJheURhdGFbMF0ubGVuZ3RoIDogMDtcbiAgICAgIGlmICh0eXBlb2YgbkNvbHVtbnMgIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgJ0RhdGEgbXVzdCBiZSBhIDJEIGFycmF5IHdpdGggYXQgbGVhc3Qgb25lIGVsZW1lbnQnLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5Sb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKGFycmF5RGF0YVtpXS5sZW5ndGggIT09IG5Db2x1bW5zKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luY29uc2lzdGVudCBhcnJheSBkaW1lbnNpb25zJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc0FycmF5T2ZOdW1iZXJzKGFycmF5RGF0YVtpXSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnB1dCBkYXRhIGNvbnRhaW5zIG5vbi1udW1lcmljIHZhbHVlcycpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKEZsb2F0NjRBcnJheS5mcm9tKGFycmF5RGF0YVtpXSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICAnRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlciBvciBhbiBhcnJheScsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnJvd3MgPSBuUm93cztcbiAgICB0aGlzLmNvbHVtbnMgPSBuQ29sdW1ucztcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cblxuICByZW1vdmVSb3coaW5kZXgpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB0aGlzLnJvd3MgLT0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZFJvdyhpbmRleCwgYXJyYXkpIHtcbiAgICBpZiAoYXJyYXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgYXJyYXkgPSBpbmRleDtcbiAgICAgIGluZGV4ID0gdGhpcy5yb3dzO1xuICAgIH1cbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4LCB0cnVlKTtcbiAgICBhcnJheSA9IEZsb2F0NjRBcnJheS5mcm9tKGNoZWNrUm93VmVjdG9yKHRoaXMsIGFycmF5KSk7XG4gICAgdGhpcy5kYXRhLnNwbGljZShpbmRleCwgMCwgYXJyYXkpO1xuICAgIHRoaXMucm93cyArPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcmVtb3ZlQ29sdW1uKGluZGV4KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgLSAxKTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBmb3IgKGxldCBqID0gaW5kZXggKyAxOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2ogLSAxXSA9IHRoaXMuZGF0YVtpXVtqXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zIC09IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRDb2x1bW4oaW5kZXgsIGFycmF5KSB7XG4gICAgaWYgKHR5cGVvZiBhcnJheSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGFycmF5ID0gaW5kZXg7XG4gICAgICBpbmRleCA9IHRoaXMuY29sdW1ucztcbiAgICB9XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCwgdHJ1ZSk7XG4gICAgYXJyYXkgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCBhcnJheSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29uc3QgbmV3Um93ID0gbmV3IEZsb2F0NjRBcnJheSh0aGlzLmNvbHVtbnMgKyAxKTtcbiAgICAgIGxldCBqID0gMDtcbiAgICAgIGZvciAoOyBqIDwgaW5kZXg7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1bal07XG4gICAgICB9XG4gICAgICBuZXdSb3dbaisrXSA9IGFycmF5W2ldO1xuICAgICAgZm9yICg7IGogPCB0aGlzLmNvbHVtbnMgKyAxOyBqKyspIHtcbiAgICAgICAgbmV3Um93W2pdID0gdGhpcy5kYXRhW2ldW2ogLSAxXTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YVtpXSA9IG5ld1JvdztcbiAgICB9XG4gICAgdGhpcy5jb2x1bW5zICs9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn1cblxuaW5zdGFsbE1hdGhPcGVyYXRpb25zKEFic3RyYWN0TWF0cml4LCBNYXRyaXgpO1xuIiwiaW1wb3J0IHsgbmV3QXJyYXkgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc3VtQnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cyk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICs9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1CeUNvbHVtbihtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5jb2x1bW5zKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1bal0gKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUFsbChtYXRyaXgpIHtcbiAgbGV0IHYgPSAwO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIHYgKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlSb3cobWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXgucm93cywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2ldICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QnlDb2x1bW4obWF0cml4KSB7XG4gIGxldCBzdW0gPSBuZXdBcnJheShtYXRyaXguY29sdW1ucywgMSk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7ICsraSkge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7ICsraikge1xuICAgICAgc3VtW2pdICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdW07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9kdWN0QWxsKG1hdHJpeCkge1xuICBsZXQgdiA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgdiAqPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQnlSb3cobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3QgdmFyaWFuY2UgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgIGxldCBzdW0xID0gMDtcbiAgICBsZXQgc3VtMiA9IDA7XG4gICAgbGV0IHggPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sczsgaisrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW5baV07XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgICBpZiAodW5iaWFzZWQpIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gY29scykgLyAoY29scyAtIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyBjb2xzKSAvIGNvbHMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFyaWFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUJ5Q29sdW1uKG1hdHJpeCwgdW5iaWFzZWQsIG1lYW4pIHtcbiAgY29uc3Qgcm93cyA9IG1hdHJpeC5yb3dzO1xuICBjb25zdCBjb2xzID0gbWF0cml4LmNvbHVtbnM7XG4gIGNvbnN0IHZhcmlhbmNlID0gW107XG5cbiAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICBsZXQgc3VtMSA9IDA7XG4gICAgbGV0IHN1bTIgPSAwO1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gICAgaWYgKHVuYmlhc2VkKSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHJvd3MpIC8gKHJvd3MgLSAxKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gcm93cykgLyByb3dzKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhcmlhbmNlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VBbGwobWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3Qgc2l6ZSA9IHJvd3MgKiBjb2xzO1xuXG4gIGxldCBzdW0xID0gMDtcbiAgbGV0IHN1bTIgPSAwO1xuICBsZXQgeCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbjtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICB9XG4gIGlmICh1bmJpYXNlZCkge1xuICAgIHJldHVybiAoc3VtMiAtIChzdW0xICogc3VtMSkgLyBzaXplKSAvIChzaXplIC0gMSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHNpemUpIC8gc2l6ZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQnlSb3cobWF0cml4LCBtZWFuKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltpXSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJCeUNvbHVtbihtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckFsbChtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlSb3cobWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5jb2x1bW5zIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlSb3cobWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQnlDb2x1bW4obWF0cml4KSB7XG4gIGNvbnN0IHNjYWxlID0gW107XG4gIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgIGxldCBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgICAgc3VtICs9IE1hdGgucG93KG1hdHJpeC5nZXQoaSwgaiksIDIpIC8gKG1hdHJpeC5yb3dzIC0gMSk7XG4gICAgfVxuICAgIHNjYWxlLnB1c2goTWF0aC5zcXJ0KHN1bSkpO1xuICB9XG4gIHJldHVybiBzY2FsZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQnlDb2x1bW4obWF0cml4LCBzY2FsZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAvIHNjYWxlW2pdKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjYWxlQWxsKG1hdHJpeCkge1xuICBjb25zdCBkaXZpZGVyID0gbWF0cml4LnNpemUgLSAxO1xuICBsZXQgc3VtID0gMDtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyBkaXZpZGVyO1xuICAgIH1cbiAgfVxuICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY2FsZUFsbChtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGUpO1xuICAgIH1cbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGluc3RhbGxNYXRoT3BlcmF0aW9ucyhBYnN0cmFjdE1hdHJpeCwgTWF0cml4KSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBhZGQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuYWRkUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuYWRkTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZFMgPSBmdW5jdGlvbiBhZGRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZE0gPSBmdW5jdGlvbiBhZGRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKyBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWRkID0gZnVuY3Rpb24gYWRkKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hZGQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWIgPSBmdW5jdGlvbiBzdWIodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuc3ViUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuc3ViTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlMgPSBmdW5jdGlvbiBzdWJTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1Yk0gPSBmdW5jdGlvbiBzdWJNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLSBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc3ViID0gZnVuY3Rpb24gc3ViKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zdWIodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3VidHJhY3RTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdE0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViTTtcbiAgQWJzdHJhY3RNYXRyaXguc3VidHJhY3QgPSBBYnN0cmFjdE1hdHJpeC5zdWI7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bCA9IGZ1bmN0aW9uIG11bCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5tdWxTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5tdWxNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUyA9IGZ1bmN0aW9uIG11bFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsTSA9IGZ1bmN0aW9uIG11bE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAqIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5tdWwgPSBmdW5jdGlvbiBtdWwobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lm11bCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWw7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWx0aXBseVMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxNO1xuICBBYnN0cmFjdE1hdHJpeC5tdWx0aXBseSA9IEFic3RyYWN0TWF0cml4Lm11bDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2ID0gZnVuY3Rpb24gZGl2KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmRpdlModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmRpdk0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZTID0gZnVuY3Rpb24gZGl2Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZNID0gZnVuY3Rpb24gZGl2TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmRpdiA9IGZ1bmN0aW9uIGRpdihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZGl2KHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXY7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdlM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXZpZGVNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdk07XG4gIEFic3RyYWN0TWF0cml4LmRpdmlkZSA9IEFic3RyYWN0TWF0cml4LmRpdjtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kID0gZnVuY3Rpb24gbW9kKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm1vZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm1vZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RTID0gZnVuY3Rpb24gbW9kUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJSB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RNID0gZnVuY3Rpb24gbW9kTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICUgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm1vZCA9IGZ1bmN0aW9uIG1vZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubW9kKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1c1MgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZHVsdXNNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZE07XG4gIEFic3RyYWN0TWF0cml4Lm1vZHVsdXMgPSBBYnN0cmFjdE1hdHJpeC5tb2Q7XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5hbmRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5hbmRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kUyA9IGZ1bmN0aW9uIGFuZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICYgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kTSA9IGZ1bmN0aW9uIGFuZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAmIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hbmQgPSBmdW5jdGlvbiBhbmQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFuZCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gb3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMub3JTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5vck0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vclMgPSBmdW5jdGlvbiBvclModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIHwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3JNID0gZnVuY3Rpb24gb3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgfCBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgub3IgPSBmdW5jdGlvbiBvcihtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgub3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS54b3IgPSBmdW5jdGlvbiB4b3IodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMueG9yUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMueG9yTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvclMgPSBmdW5jdGlvbiB4b3JTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSBeIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvck0gPSBmdW5jdGlvbiB4b3JNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgXiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgueG9yID0gZnVuY3Rpb24geG9yKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC54b3IodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubGVmdFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubGVmdFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdFMgPSBmdW5jdGlvbiBsZWZ0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA8PCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sZWZ0U2hpZnRNID0gZnVuY3Rpb24gbGVmdFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIDw8IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sZWZ0U2hpZnQgPSBmdW5jdGlvbiBsZWZ0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxlZnRTaGlmdCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRTID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0ID0gZnVuY3Rpb24gcmlnaHRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5yaWdodFNoaWZ0Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucmlnaHRTaGlmdE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0UyA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnRTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSA+Pj4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdE0gPSBmdW5jdGlvbiByaWdodFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+PiBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJpZ2h0U2hpZnQodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnQ7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRTID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuemVyb0ZpbGxSaWdodFNoaWZ0TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0TTtcbiAgQWJzdHJhY3RNYXRyaXguemVyb0ZpbGxSaWdodFNoaWZ0ID0gQWJzdHJhY3RNYXRyaXgucmlnaHRTaGlmdDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gbm90KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgfih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5ub3QgPSBmdW5jdGlvbiBub3QobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubm90KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFicyA9IGZ1bmN0aW9uIGFicygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWJzKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFicyA9IGZ1bmN0aW9uIGFicyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hYnMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWNvcyA9IGZ1bmN0aW9uIGFjb3MoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFjb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWNvcyA9IGZ1bmN0aW9uIGFjb3MobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hY29zaCA9IGZ1bmN0aW9uIGFjb3NoKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFjb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFzaW4gPSBmdW5jdGlvbiBhc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hc2luKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFzaW4gPSBmdW5jdGlvbiBhc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFzaW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXNpbmggPSBmdW5jdGlvbiBhc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXNpbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXNpbmggPSBmdW5jdGlvbiBhc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hc2luaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hdGFuID0gZnVuY3Rpb24gYXRhbigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXRhbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hdGFuID0gZnVuY3Rpb24gYXRhbihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hdGFuKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmF0YW5oID0gZnVuY3Rpb24gYXRhbmgoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmF0YW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmF0YW5oID0gZnVuY3Rpb24gYXRhbmgobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXRhbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2JydCA9IGZ1bmN0aW9uIGNicnQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNicnQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2JydCA9IGZ1bmN0aW9uIGNicnQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2JydCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jZWlsID0gZnVuY3Rpb24gY2VpbCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2VpbCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jZWlsID0gZnVuY3Rpb24gY2VpbChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jZWlsKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNsejMyID0gZnVuY3Rpb24gY2x6MzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNsejMyKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNsejMyID0gZnVuY3Rpb24gY2x6MzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY2x6MzIoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY29zID0gZnVuY3Rpb24gY29zKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jb3ModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY29zID0gZnVuY3Rpb24gY29zKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNvcygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jb3NoID0gZnVuY3Rpb24gY29zaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY29zaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jb3NoID0gZnVuY3Rpb24gY29zaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jb3NoKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmV4cCA9IGZ1bmN0aW9uIGV4cCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmV4cCA9IGZ1bmN0aW9uIGV4cChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZXhwbTEgPSBmdW5jdGlvbiBleHBtMSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZXhwbTEodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZXhwbTEgPSBmdW5jdGlvbiBleHBtMShtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5leHBtMSgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5mbG9vcih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5mbG9vciA9IGZ1bmN0aW9uIGZsb29yKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmZsb29yKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguZnJvdW5kKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmZyb3VuZCA9IGZ1bmN0aW9uIGZyb3VuZChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5mcm91bmQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nID0gZnVuY3Rpb24gbG9nKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2codGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nID0gZnVuY3Rpb24gbG9nKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5sb2cxcCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cxcCA9IGZ1bmN0aW9uIGxvZzFwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmxvZzFwKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzEwID0gZnVuY3Rpb24gbG9nMTAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzEwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzEwID0gZnVuY3Rpb24gbG9nMTAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMTAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMiA9IGZ1bmN0aW9uIGxvZzIoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzIodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMiA9IGZ1bmN0aW9uIGxvZzIobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5yb3VuZCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5yb3VuZCA9IGZ1bmN0aW9uIHJvdW5kKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnJvdW5kKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiBzaWduKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaWduKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpZ24gPSBmdW5jdGlvbiBzaWduKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpZ24oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2luID0gZnVuY3Rpb24gc2luKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2luID0gZnVuY3Rpb24gc2luKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaW5oID0gZnVuY3Rpb24gc2luaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguc2luaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaW5oID0gZnVuY3Rpb24gc2luaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5zaW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNxcnQgPSBmdW5jdGlvbiBzcXJ0KCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zcXJ0KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNxcnQgPSBmdW5jdGlvbiBzcXJ0KG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNxcnQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudGFuID0gZnVuY3Rpb24gdGFuKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50YW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudGFuID0gZnVuY3Rpb24gdGFuKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRhbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50YW5oID0gZnVuY3Rpb24gdGFuaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudGFuaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50YW5oID0gZnVuY3Rpb24gdGFuaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50YW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRydW5jID0gZnVuY3Rpb24gdHJ1bmMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRydW5jKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRydW5jID0gZnVuY3Rpb24gdHJ1bmMobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudHJ1bmMoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wb3cgPSBmdW5jdGlvbiBwb3cobWF0cml4LCBhcmcwKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucG93KGFyZzApO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiBwb3codmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMucG93Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMucG93TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd1MgPSBmdW5jdGlvbiBwb3dTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnBvdyh0aGlzLmdldChpLCBqKSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvd00gPSBmdW5jdGlvbiBwb3dNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5wb3codGhpcy5nZXQoaSwgaiksIG1hdHJpeC5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBBYnN0cmFjdE1hdHJpeCB9IGZyb20gJy4uL21hdHJpeCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdyYXBwZXJNYXRyaXgyRCBleHRlbmRzIEFic3RyYWN0TWF0cml4IHtcbiAgY29uc3RydWN0b3IoZGF0YSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB0aGlzLnJvd3MgPSBkYXRhLmxlbmd0aDtcbiAgICB0aGlzLmNvbHVtbnMgPSBkYXRhWzBdLmxlbmd0aDtcbiAgfVxuXG4gIHNldChyb3dJbmRleCwgY29sdW1uSW5kZXgsIHZhbHVlKSB7XG4gICAgdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF0gPSB2YWx1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGdldChyb3dJbmRleCwgY29sdW1uSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhW3Jvd0luZGV4XVtjb2x1bW5JbmRleF07XG4gIH1cbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMdURlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3RvcihtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcblxuICAgIGxldCBsdSA9IG1hdHJpeC5jbG9uZSgpO1xuICAgIGxldCByb3dzID0gbHUucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IHBpdm90VmVjdG9yID0gbmV3IEZsb2F0NjRBcnJheShyb3dzKTtcbiAgICBsZXQgcGl2b3RTaWduID0gMTtcbiAgICBsZXQgaSwgaiwgaywgcCwgcywgdCwgdjtcbiAgICBsZXQgTFVjb2xqLCBrbWF4O1xuXG4gICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgcGl2b3RWZWN0b3JbaV0gPSBpO1xuICAgIH1cblxuICAgIExVY29saiA9IG5ldyBGbG9hdDY0QXJyYXkocm93cyk7XG5cbiAgICBmb3IgKGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIExVY29saltpXSA9IGx1LmdldChpLCBqKTtcbiAgICAgIH1cblxuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBrbWF4ID0gTWF0aC5taW4oaSwgaik7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGsgPSAwOyBrIDwga21heDsgaysrKSB7XG4gICAgICAgICAgcyArPSBsdS5nZXQoaSwgaykgKiBMVWNvbGpba107XG4gICAgICAgIH1cbiAgICAgICAgTFVjb2xqW2ldIC09IHM7XG4gICAgICAgIGx1LnNldChpLCBqLCBMVWNvbGpbaV0pO1xuICAgICAgfVxuXG4gICAgICBwID0gajtcbiAgICAgIGZvciAoaSA9IGogKyAxOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGlmIChNYXRoLmFicyhMVWNvbGpbaV0pID4gTWF0aC5hYnMoTFVjb2xqW3BdKSkge1xuICAgICAgICAgIHAgPSBpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwICE9PSBqKSB7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBjb2x1bW5zOyBrKyspIHtcbiAgICAgICAgICB0ID0gbHUuZ2V0KHAsIGspO1xuICAgICAgICAgIGx1LnNldChwLCBrLCBsdS5nZXQoaiwgaykpO1xuICAgICAgICAgIGx1LnNldChqLCBrLCB0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHYgPSBwaXZvdFZlY3RvcltwXTtcbiAgICAgICAgcGl2b3RWZWN0b3JbcF0gPSBwaXZvdFZlY3RvcltqXTtcbiAgICAgICAgcGl2b3RWZWN0b3Jbal0gPSB2O1xuXG4gICAgICAgIHBpdm90U2lnbiA9IC1waXZvdFNpZ247XG4gICAgICB9XG5cbiAgICAgIGlmIChqIDwgcm93cyAmJiBsdS5nZXQoaiwgaikgIT09IDApIHtcbiAgICAgICAgZm9yIChpID0gaiArIDE7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICBsdS5zZXQoaSwgaiwgbHUuZ2V0KGksIGopIC8gbHUuZ2V0KGosIGopKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuTFUgPSBsdTtcbiAgICB0aGlzLnBpdm90VmVjdG9yID0gcGl2b3RWZWN0b3I7XG4gICAgdGhpcy5waXZvdFNpZ24gPSBwaXZvdFNpZ247XG4gIH1cblxuICBpc1Npbmd1bGFyKCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgY29sID0gZGF0YS5jb2x1bW5zO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sOyBqKyspIHtcbiAgICAgIGlmIChkYXRhLmdldChqLCBqKSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IE1hdHJpeC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgbHUgPSB0aGlzLkxVO1xuICAgIGxldCByb3dzID0gbHUucm93cztcblxuICAgIGlmIChyb3dzICE9PSB2YWx1ZS5yb3dzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNTaW5ndWxhcigpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xVIG1hdHJpeCBpcyBzaW5ndWxhcicpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5zdWJNYXRyaXhSb3codGhpcy5waXZvdFZlY3RvciwgMCwgY291bnQgLSAxKTtcbiAgICBsZXQgY29sdW1ucyA9IGx1LmNvbHVtbnM7XG4gICAgbGV0IGksIGosIGs7XG5cbiAgICBmb3IgKGsgPSAwOyBrIDwgY29sdW1uczsgaysrKSB7XG4gICAgICBmb3IgKGkgPSBrICsgMTsgaSA8IGNvbHVtbnM7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyBsdS5nZXQoaywgaykpO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBsdS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IGRldGVybWluYW50KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBpZiAoIWRhdGEuaXNTcXVhcmUoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggbXVzdCBiZSBzcXVhcmUnKTtcbiAgICB9XG4gICAgbGV0IGRldGVybWluYW50ID0gdGhpcy5waXZvdFNpZ247XG4gICAgbGV0IGNvbCA9IGRhdGEuY29sdW1ucztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbDsgaisrKSB7XG4gICAgICBkZXRlcm1pbmFudCAqPSBkYXRhLmdldChqLCBqKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldGVybWluYW50O1xuICB9XG5cbiAgZ2V0IGxvd2VyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA+IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBkYXRhLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHVwcGVyVHJpYW5ndWxhck1hdHJpeCgpIHtcbiAgICBsZXQgZGF0YSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBkYXRhLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBkYXRhLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAoaSA8PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgZGF0YS5nZXQoaSwgaikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IHBpdm90UGVybXV0YXRpb25WZWN0b3IoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5waXZvdFZlY3Rvcik7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBoeXBvdGVudXNlKGEsIGIpIHtcbiAgbGV0IHIgPSAwO1xuICBpZiAoTWF0aC5hYnMoYSkgPiBNYXRoLmFicyhiKSkge1xuICAgIHIgPSBiIC8gYTtcbiAgICByZXR1cm4gTWF0aC5hYnMoYSkgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICBpZiAoYiAhPT0gMCkge1xuICAgIHIgPSBhIC8gYjtcbiAgICByZXR1cm4gTWF0aC5hYnMoYikgKiBNYXRoLnNxcnQoMSArIHIgKiByKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbiIsImltcG9ydCBNYXRyaXggZnJvbSAnLi4vbWF0cml4JztcbmltcG9ydCBXcmFwcGVyTWF0cml4MkQgZnJvbSAnLi4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5pbXBvcnQgeyBoeXBvdGVudXNlIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXJEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUpIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgcXIgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IHJkaWFnID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGxldCBucm0gPSAwO1xuICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICBucm0gPSBoeXBvdGVudXNlKG5ybSwgcXIuZ2V0KGksIGspKTtcbiAgICAgIH1cbiAgICAgIGlmIChucm0gIT09IDApIHtcbiAgICAgICAgaWYgKHFyLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICBucm0gPSAtbnJtO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBxci5zZXQoaSwgaywgcXIuZ2V0KGksIGspIC8gbnJtKTtcbiAgICAgICAgfVxuICAgICAgICBxci5zZXQoaywgaywgcXIuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIGZvciAoaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBxci5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHMgPSAtcyAvIHFyLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBxci5zZXQoaSwgaiwgcXIuZ2V0KGksIGopICsgcyAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZGlhZ1trXSA9IC1ucm07XG4gICAgfVxuXG4gICAgdGhpcy5RUiA9IHFyO1xuICAgIHRoaXMuUmRpYWcgPSByZGlhZztcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgdmFsdWUgPSBNYXRyaXguY2hlY2tNYXRyaXgodmFsdWUpO1xuXG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgbSA9IHFyLnJvd3M7XG5cbiAgICBpZiAodmFsdWUucm93cyAhPT0gbSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXRyaXggcm93IGRpbWVuc2lvbnMgbXVzdCBhZ3JlZScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNGdWxsUmFuaygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBpcyByYW5rIGRlZmljaWVudCcpO1xuICAgIH1cblxuICAgIGxldCBjb3VudCA9IHZhbHVlLmNvbHVtbnM7XG4gICAgbGV0IFggPSB2YWx1ZS5jbG9uZSgpO1xuICAgIGxldCBuID0gcXIuY29sdW1ucztcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgIHMgPSAwO1xuICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgfVxuICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoayA9IG4gLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgWC5zZXQoaywgaiwgWC5nZXQoaywgaikgLyB0aGlzLlJkaWFnW2tdKTtcbiAgICAgIH1cbiAgICAgIGZvciAoaSA9IDA7IGkgPCBrOyBpKyspIHtcbiAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSAtIFguZ2V0KGssIGopICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBYLnN1Yk1hdHJpeCgwLCBuIC0gMSwgMCwgY291bnQgLSAxKTtcbiAgfVxuXG4gIGlzRnVsbFJhbmsoKSB7XG4gICAgbGV0IGNvbHVtbnMgPSB0aGlzLlFSLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLlJkaWFnW2ldID09PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBxciA9IHRoaXMuUVI7XG4gICAgbGV0IG4gPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChuLCBuKTtcbiAgICBsZXQgaSwgajtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgIGlmIChpIDwgaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHFyLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSBpZiAoaSA9PT0gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIHRoaXMuUmRpYWdbaV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFguc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG5cbiAgZ2V0IG9ydGhvZ29uYWxNYXRyaXgoKSB7XG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgcm93cyA9IHFyLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBxci5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBsZXQgaSwgaiwgaywgcztcblxuICAgIGZvciAoayA9IGNvbHVtbnMgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgZm9yIChpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICBYLnNldChpLCBrLCAwKTtcbiAgICAgIH1cbiAgICAgIFguc2V0KGssIGssIDEpO1xuICAgICAgZm9yIChqID0gazsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAocXIuZ2V0KGssIGspICE9PSAwKSB7XG4gICAgICAgICAgcyA9IDA7XG4gICAgICAgICAgZm9yIChpID0gazsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgICAgcyArPSBxci5nZXQoaSwgaykgKiBYLmdldChpLCBqKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBzID0gLXMgLyBxci5nZXQoaywgayk7XG5cbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICBYLnNldChpLCBqLCBYLmdldChpLCBqKSArIHMgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWDtcbiAgfVxufVxuIiwiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmltcG9ydCB7IGh5cG90ZW51c2UgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHZhbHVlLCBvcHRpb25zID0ge30pIHtcbiAgICB2YWx1ZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUuaXNFbXB0eSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBtdXN0IGJlIG5vbi1lbXB0eScpO1xuICAgIH1cblxuICAgIGxldCBtID0gdmFsdWUucm93cztcbiAgICBsZXQgbiA9IHZhbHVlLmNvbHVtbnM7XG5cbiAgICBjb25zdCB7XG4gICAgICBjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyA9IHRydWUsXG4gICAgICBjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMgPSB0cnVlLFxuICAgICAgYXV0b1RyYW5zcG9zZSA9IGZhbHNlLFxuICAgIH0gPSBvcHRpb25zO1xuXG4gICAgbGV0IHdhbnR1ID0gQm9vbGVhbihjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyk7XG4gICAgbGV0IHdhbnR2ID0gQm9vbGVhbihjb21wdXRlUmlnaHRTaW5ndWxhclZlY3RvcnMpO1xuXG4gICAgbGV0IHN3YXBwZWQgPSBmYWxzZTtcbiAgICBsZXQgYTtcbiAgICBpZiAobSA8IG4pIHtcbiAgICAgIGlmICghYXV0b1RyYW5zcG9zZSkge1xuICAgICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdDb21wdXRpbmcgU1ZEIG9uIGEgbWF0cml4IHdpdGggbW9yZSBjb2x1bW5zIHRoYW4gcm93cy4gQ29uc2lkZXIgZW5hYmxpbmcgYXV0b1RyYW5zcG9zZScsXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhID0gdmFsdWUudHJhbnNwb3NlKCk7XG4gICAgICAgIG0gPSBhLnJvd3M7XG4gICAgICAgIG4gPSBhLmNvbHVtbnM7XG4gICAgICAgIHN3YXBwZWQgPSB0cnVlO1xuICAgICAgICBsZXQgYXV4ID0gd2FudHU7XG4gICAgICAgIHdhbnR1ID0gd2FudHY7XG4gICAgICAgIHdhbnR2ID0gYXV4O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBhID0gdmFsdWUuY2xvbmUoKTtcbiAgICB9XG5cbiAgICBsZXQgbnUgPSBNYXRoLm1pbihtLCBuKTtcbiAgICBsZXQgbmkgPSBNYXRoLm1pbihtICsgMSwgbik7XG4gICAgbGV0IHMgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBsZXQgVSA9IG5ldyBNYXRyaXgobSwgbnUpO1xuICAgIGxldCBWID0gbmV3IE1hdHJpeChuLCBuKTtcblxuICAgIGxldCBlID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBsZXQgd29yayA9IG5ldyBGbG9hdDY0QXJyYXkobSk7XG5cbiAgICBsZXQgc2kgPSBuZXcgRmxvYXQ2NEFycmF5KG5pKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5pOyBpKyspIHNpW2ldID0gaTtcblxuICAgIGxldCBuY3QgPSBNYXRoLm1pbihtIC0gMSwgbik7XG4gICAgbGV0IG5ydCA9IE1hdGgubWF4KDAsIE1hdGgubWluKG4gLSAyLCBtKSk7XG4gICAgbGV0IG1yYyA9IE1hdGgubWF4KG5jdCwgbnJ0KTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgbXJjOyBrKyspIHtcbiAgICAgIGlmIChrIDwgbmN0KSB7XG4gICAgICAgIHNba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHNba10gPSBoeXBvdGVudXNlKHNba10sIGEuZ2V0KGksIGspKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChhLmdldChrLCBrKSA8IDApIHtcbiAgICAgICAgICAgIHNba10gPSAtc1trXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGEuc2V0KGksIGssIGEuZ2V0KGksIGspIC8gc1trXSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGEuc2V0KGssIGssIGEuZ2V0KGssIGspICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgc1trXSA9IC1zW2tdO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKGsgPCBuY3QgJiYgc1trXSAhPT0gMCkge1xuICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgdCArPSBhLmdldChpLCBrKSAqIGEuZ2V0KGksIGopO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0ID0gLXQgLyBhLmdldChrLCBrKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogYS5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlW2pdID0gYS5nZXQoaywgaik7XG4gICAgICB9XG5cbiAgICAgIGlmICh3YW50dSAmJiBrIDwgbmN0KSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgVS5zZXQoaSwgaywgYS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChrIDwgbnJ0KSB7XG4gICAgICAgIGVba10gPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICBlW2tdID0gaHlwb3RlbnVzZShlW2tdLCBlW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGlmIChlW2sgKyAxXSA8IDApIHtcbiAgICAgICAgICAgIGVba10gPSAwIC0gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBlW2ldIC89IGVba107XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbayArIDFdICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZVtrXSA9IC1lW2tdO1xuICAgICAgICBpZiAoayArIDEgPCBtICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHdvcmtbaV0gPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICB3b3JrW2ldICs9IGVbal0gKiBhLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICBsZXQgdCA9IC1lW2pdIC8gZVtrICsgMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgYS5zZXQoaSwgaiwgYS5nZXQoaSwgaikgKyB0ICogd29ya1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh3YW50dikge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgVi5zZXQoaSwgaywgZVtpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHAgPSBNYXRoLm1pbihuLCBtICsgMSk7XG4gICAgaWYgKG5jdCA8IG4pIHtcbiAgICAgIHNbbmN0XSA9IGEuZ2V0KG5jdCwgbmN0KTtcbiAgICB9XG4gICAgaWYgKG0gPCBwKSB7XG4gICAgICBzW3AgLSAxXSA9IDA7XG4gICAgfVxuICAgIGlmIChucnQgKyAxIDwgcCkge1xuICAgICAgZVtucnRdID0gYS5nZXQobnJ0LCBwIC0gMSk7XG4gICAgfVxuICAgIGVbcCAtIDFdID0gMDtcblxuICAgIGlmICh3YW50dSkge1xuICAgICAgZm9yIChsZXQgaiA9IG5jdDsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBVLnNldChpLCBqLCAwKTtcbiAgICAgICAgfVxuICAgICAgICBVLnNldChqLCBqLCAxKTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGsgPSBuY3QgLSAxOyBrID49IDA7IGstLSkge1xuICAgICAgICBpZiAoc1trXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG51OyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgIHQgKz0gVS5nZXQoaSwgaykgKiBVLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtdCAvIFUuZ2V0KGssIGspO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgVS5nZXQoaSwgaikgKyB0ICogVS5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgLVUuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgVS5zZXQoaywgaywgMSArIFUuZ2V0KGssIGspKTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGsgLSAxOyBpKyspIHtcbiAgICAgICAgICAgIFUuc2V0KGksIGssIDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIFUuc2V0KGssIGssIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHdhbnR2KSB7XG4gICAgICBmb3IgKGxldCBrID0gbiAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICAgIGlmIChrIDwgbnJ0ICYmIGVba10gIT09IDApIHtcbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICB0ICs9IFYuZ2V0KGksIGspICogVi5nZXQoaSwgaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0ID0gLXQgLyBWLmdldChrICsgMSwgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgVi5nZXQoaSwgaikgKyB0ICogVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgIFYuc2V0KGksIGssIDApO1xuICAgICAgICB9XG4gICAgICAgIFYuc2V0KGssIGssIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBwcCA9IHAgLSAxO1xuICAgIGxldCBpdGVyID0gMDtcbiAgICBsZXQgZXBzID0gTnVtYmVyLkVQU0lMT047XG4gICAgd2hpbGUgKHAgPiAwKSB7XG4gICAgICBsZXQgaywga2FzZTtcbiAgICAgIGZvciAoayA9IHAgLSAyOyBrID49IC0xOyBrLS0pIHtcbiAgICAgICAgaWYgKGsgPT09IC0xKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWxwaGEgPVxuICAgICAgICAgIE51bWJlci5NSU5fVkFMVUUgKyBlcHMgKiBNYXRoLmFicyhzW2tdICsgTWF0aC5hYnMoc1trICsgMV0pKTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGVba10pIDw9IGFscGhhIHx8IE51bWJlci5pc05hTihlW2tdKSkge1xuICAgICAgICAgIGVba10gPSAwO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoayA9PT0gcCAtIDIpIHtcbiAgICAgICAga2FzZSA9IDQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga3M7XG4gICAgICAgIGZvciAoa3MgPSBwIC0gMTsga3MgPj0gazsga3MtLSkge1xuICAgICAgICAgIGlmIChrcyA9PT0gaykge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCB0ID1cbiAgICAgICAgICAgIChrcyAhPT0gcCA/IE1hdGguYWJzKGVba3NdKSA6IDApICtcbiAgICAgICAgICAgIChrcyAhPT0gayArIDEgPyBNYXRoLmFicyhlW2tzIC0gMV0pIDogMCk7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKHNba3NdKSA8PSBlcHMgKiB0KSB7XG4gICAgICAgICAgICBzW2tzXSA9IDA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGtzID09PSBrKSB7XG4gICAgICAgICAga2FzZSA9IDM7XG4gICAgICAgIH0gZWxzZSBpZiAoa3MgPT09IHAgLSAxKSB7XG4gICAgICAgICAga2FzZSA9IDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAga2FzZSA9IDI7XG4gICAgICAgICAgayA9IGtzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGsrKztcblxuICAgICAgc3dpdGNoIChrYXNlKSB7XG4gICAgICAgIGNhc2UgMToge1xuICAgICAgICAgIGxldCBmID0gZVtwIC0gMl07XG4gICAgICAgICAgZVtwIC0gMl0gPSAwO1xuICAgICAgICAgIGZvciAobGV0IGogPSBwIC0gMjsgaiA+PSBrOyBqLS0pIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGlmIChqICE9PSBrKSB7XG4gICAgICAgICAgICAgIGYgPSAtc24gKiBlW2ogLSAxXTtcbiAgICAgICAgICAgICAgZVtqIC0gMV0gPSBjcyAqIGVbaiAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIHAgLSAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBwIC0gMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIHAgLSAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAyOiB7XG4gICAgICAgICAgbGV0IGYgPSBlW2sgLSAxXTtcbiAgICAgICAgICBlW2sgLSAxXSA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGs7IGogPCBwOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShzW2pdLCBmKTtcbiAgICAgICAgICAgIGxldCBjcyA9IHNbal0gLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZiAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSAtc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXTtcbiAgICAgICAgICAgIGlmICh3YW50dSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBrIC0gMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayAtIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBrIC0gMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgMzoge1xuICAgICAgICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgoXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAxXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhlW3AgLSAyXSksXG4gICAgICAgICAgICBNYXRoLmFicyhzW2tdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKGVba10pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgY29uc3Qgc3AgPSBzW3AgLSAxXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNwbTEgPSBzW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVwbTEgPSBlW3AgLSAyXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IHNrID0gc1trXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGVrID0gZVtrXSAvIHNjYWxlO1xuICAgICAgICAgIGNvbnN0IGIgPSAoKHNwbTEgKyBzcCkgKiAoc3BtMSAtIHNwKSArIGVwbTEgKiBlcG0xKSAvIDI7XG4gICAgICAgICAgY29uc3QgYyA9IHNwICogZXBtMSAqIChzcCAqIGVwbTEpO1xuICAgICAgICAgIGxldCBzaGlmdCA9IDA7XG4gICAgICAgICAgaWYgKGIgIT09IDAgfHwgYyAhPT0gMCkge1xuICAgICAgICAgICAgaWYgKGIgPCAwKSB7XG4gICAgICAgICAgICAgIHNoaWZ0ID0gMCAtIE1hdGguc3FydChiICogYiArIGMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2hpZnQgPSBNYXRoLnNxcnQoYiAqIGIgKyBjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoaWZ0ID0gYyAvIChiICsgc2hpZnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZXQgZiA9IChzayArIHNwKSAqIChzayAtIHNwKSArIHNoaWZ0O1xuICAgICAgICAgIGxldCBnID0gc2sgKiBlaztcbiAgICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHAgLSAxOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gaHlwb3RlbnVzZShmLCBnKTtcbiAgICAgICAgICAgIGlmICh0ID09PSAwKSB0ID0gTnVtYmVyLk1JTl9WQUxVRTtcbiAgICAgICAgICAgIGxldCBjcyA9IGYgLyB0O1xuICAgICAgICAgICAgbGV0IHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBpZiAoaiAhPT0gaykge1xuICAgICAgICAgICAgICBlW2ogLSAxXSA9IHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmID0gY3MgKiBzW2pdICsgc24gKiBlW2pdO1xuICAgICAgICAgICAgZVtqXSA9IGNzICogZVtqXSAtIHNuICogc1tqXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSBjcyAqIHNbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVi5nZXQoaSwgaikgKyBzbiAqIFYuZ2V0KGksIGogKyAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqICsgMSwgLXNuICogVi5nZXQoaSwgaikgKyBjcyAqIFYuZ2V0KGksIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSBoeXBvdGVudXNlKGYsIGcpO1xuICAgICAgICAgICAgaWYgKHQgPT09IDApIHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICAgICAgY3MgPSBmIC8gdDtcbiAgICAgICAgICAgIHNuID0gZyAvIHQ7XG4gICAgICAgICAgICBzW2pdID0gdDtcbiAgICAgICAgICAgIGYgPSBjcyAqIGVbal0gKyBzbiAqIHNbaiArIDFdO1xuICAgICAgICAgICAgc1tqICsgMV0gPSAtc24gKiBlW2pdICsgY3MgKiBzW2ogKyAxXTtcbiAgICAgICAgICAgIGcgPSBzbiAqIGVbaiArIDFdO1xuICAgICAgICAgICAgZVtqICsgMV0gPSBjcyAqIGVbaiArIDFdO1xuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGogPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBjcyAqIFUuZ2V0KGksIGopICsgc24gKiBVLmdldChpLCBqICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiArIDEsIC1zbiAqIFUuZ2V0KGksIGopICsgY3MgKiBVLmdldChpLCBqICsgMSkpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGosIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVbcCAtIDJdID0gZjtcbiAgICAgICAgICBpdGVyID0gaXRlciArIDE7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSA0OiB7XG4gICAgICAgICAgaWYgKHNba10gPD0gMCkge1xuICAgICAgICAgICAgc1trXSA9IHNba10gPCAwID8gLXNba10gOiAwO1xuICAgICAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHBwOyBpKyspIHtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCAtVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHdoaWxlIChrIDwgcHApIHtcbiAgICAgICAgICAgIGlmIChzW2tdID49IHNbayArIDFdKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHQgPSBzW2tdO1xuICAgICAgICAgICAgc1trXSA9IHNbayArIDFdO1xuICAgICAgICAgICAgc1trICsgMV0gPSB0O1xuICAgICAgICAgICAgaWYgKHdhbnR2ICYmIGsgPCBuIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBWLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVi5zZXQoaSwgayArIDEsIFYuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHdhbnR1ICYmIGsgPCBtIC0gMSkge1xuICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICAgIHQgPSBVLmdldChpLCBrICsgMSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgayArIDEsIFUuZ2V0KGksIGspKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaysrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpdGVyID0gMDtcbiAgICAgICAgICBwLS07XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm8gZGVmYXVsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzd2FwcGVkKSB7XG4gICAgICBsZXQgdG1wID0gVjtcbiAgICAgIFYgPSBVO1xuICAgICAgVSA9IHRtcDtcbiAgICB9XG5cbiAgICB0aGlzLm0gPSBtO1xuICAgIHRoaXMubiA9IG47XG4gICAgdGhpcy5zID0gcztcbiAgICB0aGlzLlUgPSBVO1xuICAgIHRoaXMuViA9IFY7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIGxldCBZID0gdmFsdWU7XG4gICAgbGV0IGUgPSB0aGlzLnRocmVzaG9sZDtcbiAgICBsZXQgc2NvbHMgPSB0aGlzLnMubGVuZ3RoO1xuICAgIGxldCBMcyA9IE1hdHJpeC56ZXJvcyhzY29scywgc2NvbHMpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY29sczsgaSsrKSB7XG4gICAgICBpZiAoTWF0aC5hYnModGhpcy5zW2ldKSA8PSBlKSB7XG4gICAgICAgIExzLnNldChpLCBpLCAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIExzLnNldChpLCBpLCAxIC8gdGhpcy5zW2ldKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgVSA9IHRoaXMuVTtcbiAgICBsZXQgViA9IHRoaXMucmlnaHRTaW5ndWxhclZlY3RvcnM7XG5cbiAgICBsZXQgVkwgPSBWLm1tdWwoTHMpO1xuICAgIGxldCB2cm93cyA9IFYucm93cztcbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IFZMVSA9IE1hdHJpeC56ZXJvcyh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc2NvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBWTC5nZXQoaSwgaykgKiBVLmdldChqLCBrKTtcbiAgICAgICAgfVxuICAgICAgICBWTFUuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFZMVS5tbXVsKFkpO1xuICB9XG5cbiAgc29sdmVGb3JEaWFnb25hbCh2YWx1ZSkge1xuICAgIHJldHVybiB0aGlzLnNvbHZlKE1hdHJpeC5kaWFnKHZhbHVlKSk7XG4gIH1cblxuICBpbnZlcnNlKCkge1xuICAgIGxldCBWID0gdGhpcy5WO1xuICAgIGxldCBlID0gdGhpcy50aHJlc2hvbGQ7XG4gICAgbGV0IHZyb3dzID0gVi5yb3dzO1xuICAgIGxldCB2Y29scyA9IFYuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgodnJvd3MsIHRoaXMucy5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHZjb2xzOyBqKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKHRoaXMuc1tqXSkgPiBlKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgVi5nZXQoaSwgaikgLyB0aGlzLnNbal0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IFUgPSB0aGlzLlU7XG5cbiAgICBsZXQgdXJvd3MgPSBVLnJvd3M7XG4gICAgbGV0IHVjb2xzID0gVS5jb2x1bW5zO1xuICAgIGxldCBZID0gbmV3IE1hdHJpeCh2cm93cywgdXJvd3MpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2cm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHVyb3dzOyBqKyspIHtcbiAgICAgICAgbGV0IHN1bSA9IDA7XG4gICAgICAgIGZvciAobGV0IGsgPSAwOyBrIDwgdWNvbHM7IGsrKykge1xuICAgICAgICAgIHN1bSArPSBYLmdldChpLCBrKSAqIFUuZ2V0KGosIGspO1xuICAgICAgICB9XG4gICAgICAgIFkuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFk7XG4gIH1cblxuICBnZXQgY29uZGl0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnNbMF0gLyB0aGlzLnNbTWF0aC5taW4odGhpcy5tLCB0aGlzLm4pIC0gMV07XG4gIH1cblxuICBnZXQgbm9ybTIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCByYW5rKCkge1xuICAgIGxldCB0b2wgPSBNYXRoLm1heCh0aGlzLm0sIHRoaXMubikgKiB0aGlzLnNbMF0gKiBOdW1iZXIuRVBTSUxPTjtcbiAgICBsZXQgciA9IDA7XG4gICAgbGV0IHMgPSB0aGlzLnM7XG4gICAgZm9yIChsZXQgaSA9IDAsIGlpID0gcy5sZW5ndGg7IGkgPCBpaTsgaSsrKSB7XG4gICAgICBpZiAoc1tpXSA+IHRvbCkge1xuICAgICAgICByKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG5cbiAgZ2V0IGRpYWdvbmFsKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMucyk7XG4gIH1cblxuICBnZXQgdGhyZXNob2xkKCkge1xuICAgIHJldHVybiAoTnVtYmVyLkVQU0lMT04gLyAyKSAqIE1hdGgubWF4KHRoaXMubSwgdGhpcy5uKSAqIHRoaXMuc1swXTtcbiAgfVxuXG4gIGdldCBsZWZ0U2luZ3VsYXJWZWN0b3JzKCkge1xuICAgIHJldHVybiB0aGlzLlU7XG4gIH1cblxuICBnZXQgcmlnaHRTaW5ndWxhclZlY3RvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuVjtcbiAgfVxuXG4gIGdldCBkaWFnb25hbE1hdHJpeCgpIHtcbiAgICByZXR1cm4gTWF0cml4LmRpYWcodGhpcy5zKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaW52ZXJzZSwgTWF0cml4IH0gZnJvbSAnbWwtbWF0cml4JztcblxuLyoqXG4gKiBEaWZmZXJlbmNlIG9mIHRoZSBtYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgcGFyYW1ldGVyc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbUZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBncmFkaWVudEZ1bmN0aW9uKFxuICBkYXRhLFxuICBldmFsdWF0ZWREYXRhLFxuICBwYXJhbXMsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1GdW5jdGlvbixcbikge1xuICBjb25zdCBuID0gcGFyYW1zLmxlbmd0aDtcbiAgY29uc3QgbSA9IGRhdGEueC5sZW5ndGg7XG5cbiAgbGV0IGFucyA9IG5ldyBBcnJheShuKTtcblxuICBmb3IgKGxldCBwYXJhbSA9IDA7IHBhcmFtIDwgbjsgcGFyYW0rKykge1xuICAgIGFuc1twYXJhbV0gPSBuZXcgQXJyYXkobSk7XG4gICAgbGV0IGF1eFBhcmFtcyA9IHBhcmFtcy5zbGljZSgpO1xuICAgIGF1eFBhcmFtc1twYXJhbV0gKz0gZ3JhZGllbnREaWZmZXJlbmNlO1xuICAgIGxldCBmdW5jUGFyYW0gPSBwYXJhbUZ1bmN0aW9uKGF1eFBhcmFtcyk7XG5cbiAgICBmb3IgKGxldCBwb2ludCA9IDA7IHBvaW50IDwgbTsgcG9pbnQrKykge1xuICAgICAgYW5zW3BhcmFtXVtwb2ludF0gPSBldmFsdWF0ZWREYXRhW3BvaW50XSAtIGZ1bmNQYXJhbShkYXRhLnhbcG9pbnRdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXRyaXgoYW5zKTtcbn1cblxuLyoqXG4gKiBNYXRyaXggZnVuY3Rpb24gb3ZlciB0aGUgc2FtcGxlc1xuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBldmFsdWF0ZWREYXRhIC0gQXJyYXkgb2YgcHJldmlvdXMgZXZhbHVhdGVkIGZ1bmN0aW9uIHZhbHVlc1xuICogQHJldHVybiB7TWF0cml4fVxuICovXG5mdW5jdGlvbiBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKSB7XG4gIGNvbnN0IG0gPSBkYXRhLngubGVuZ3RoO1xuXG4gIGxldCBhbnMgPSBuZXcgQXJyYXkobSk7XG5cbiAgZm9yIChsZXQgcG9pbnQgPSAwOyBwb2ludCA8IG07IHBvaW50KyspIHtcbiAgICBhbnNbcG9pbnRdID0gW2RhdGEueVtwb2ludF0gLSBldmFsdWF0ZWREYXRhW3BvaW50XV07XG4gIH1cblxuICByZXR1cm4gbmV3IE1hdHJpeChhbnMpO1xufVxuXG4vKipcbiAqIEl0ZXJhdGlvbiBmb3IgTGV2ZW5iZXJnLU1hcnF1YXJkdFxuICogQGlnbm9yZVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBwYXJhbXMgLSBBcnJheSBvZiBwcmV2aW91cyBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZGFtcGluZyAtIExldmVuYmVyZy1NYXJxdWFyZHQgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge251bWJlcn0gZ3JhZGllbnREaWZmZXJlbmNlIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtBcnJheTxudW1iZXI+fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGVwKFxuICBkYXRhLFxuICBwYXJhbXMsXG4gIGRhbXBpbmcsXG4gIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuKSB7XG4gIGxldCB2YWx1ZSA9IGRhbXBpbmcgKiBncmFkaWVudERpZmZlcmVuY2UgKiBncmFkaWVudERpZmZlcmVuY2U7XG4gIGxldCBpZGVudGl0eSA9IE1hdHJpeC5leWUocGFyYW1zLmxlbmd0aCwgcGFyYW1zLmxlbmd0aCwgdmFsdWUpO1xuXG4gIGNvbnN0IGZ1bmMgPSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24ocGFyYW1zKTtcblxuICBsZXQgZXZhbHVhdGVkRGF0YSA9IG5ldyBGbG9hdDY0QXJyYXkoZGF0YS54Lmxlbmd0aCk7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS54Lmxlbmd0aDsgaSsrKSB7XG4gICAgZXZhbHVhdGVkRGF0YVtpXSA9IGZ1bmMoZGF0YS54W2ldKTtcbiAgfVxuXG4gIGxldCBncmFkaWVudEZ1bmMgPSBncmFkaWVudEZ1bmN0aW9uKFxuICAgIGRhdGEsXG4gICAgZXZhbHVhdGVkRGF0YSxcbiAgICBwYXJhbXMsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICAgIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgKTtcbiAgbGV0IG1hdHJpeEZ1bmMgPSBtYXRyaXhGdW5jdGlvbihkYXRhLCBldmFsdWF0ZWREYXRhKTtcbiAgbGV0IGludmVyc2VNYXRyaXggPSBpbnZlcnNlKFxuICAgIGlkZW50aXR5LmFkZChncmFkaWVudEZ1bmMubW11bChncmFkaWVudEZ1bmMudHJhbnNwb3NlKCkpKSxcbiAgKTtcblxuICBwYXJhbXMgPSBuZXcgTWF0cml4KFtwYXJhbXNdKTtcbiAgcGFyYW1zID0gcGFyYW1zLnN1YihcbiAgICBpbnZlcnNlTWF0cml4XG4gICAgICAubW11bChncmFkaWVudEZ1bmMpXG4gICAgICAubW11bChtYXRyaXhGdW5jKVxuICAgICAgLm11bChncmFkaWVudERpZmZlcmVuY2UpXG4gICAgICAudHJhbnNwb3NlKCksXG4gICk7XG5cbiAgcmV0dXJuIHBhcmFtcy50bzFEQXJyYXkoKTtcbn1cbiIsImltcG9ydCBMdURlY29tcG9zaXRpb24gZnJvbSAnLi9kYy9sdSc7XG5pbXBvcnQgUXJEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvcXInO1xuaW1wb3J0IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIGZyb20gJy4vZGMvc3ZkJztcbmltcG9ydCBNYXRyaXggZnJvbSAnLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuZXhwb3J0IGZ1bmN0aW9uIGludmVyc2UobWF0cml4LCB1c2VTVkQgPSBmYWxzZSkge1xuICBtYXRyaXggPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgaWYgKHVzZVNWRCkge1xuICAgIHJldHVybiBuZXcgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24obWF0cml4KS5pbnZlcnNlKCk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHNvbHZlKG1hdHJpeCwgTWF0cml4LmV5ZShtYXRyaXgucm93cykpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzb2x2ZShsZWZ0SGFuZFNpZGUsIHJpZ2h0SGFuZFNpZGUsIHVzZVNWRCA9IGZhbHNlKSB7XG4gIGxlZnRIYW5kU2lkZSA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChsZWZ0SGFuZFNpZGUpO1xuICByaWdodEhhbmRTaWRlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHJpZ2h0SGFuZFNpZGUpO1xuICBpZiAodXNlU1ZEKSB7XG4gICAgcmV0dXJuIG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBsZWZ0SGFuZFNpZGUuaXNTcXVhcmUoKVxuICAgICAgPyBuZXcgTHVEZWNvbXBvc2l0aW9uKGxlZnRIYW5kU2lkZSkuc29sdmUocmlnaHRIYW5kU2lkZSlcbiAgICAgIDogbmV3IFFyRGVjb21wb3NpdGlvbihsZWZ0SGFuZFNpZGUpLnNvbHZlKHJpZ2h0SGFuZFNpZGUpO1xuICB9XG59XG4iLCJpbXBvcnQgaXNBcnJheSBmcm9tICdpcy1hbnktYXJyYXknO1xuXG5pbXBvcnQgZXJyb3JDYWxjdWxhdGlvbiBmcm9tICcuL2Vycm9yQ2FsY3VsYXRpb24nO1xuaW1wb3J0IHN0ZXAgZnJvbSAnLi9zdGVwJztcblxuLyoqXG4gKiBDdXJ2ZSBmaXR0aW5nIGFsZ29yaXRobVxuICogQHBhcmFtIHt7eDpBcnJheTxudW1iZXI+LCB5OkFycmF5PG51bWJlcj59fSBkYXRhIC0gQXJyYXkgb2YgcG9pbnRzIHRvIGZpdCBpbiB0aGUgZm9ybWF0IFt4MSwgeDIsIC4uLiBdLCBbeTEsIHkyLCAuLi4gXVxuICogQHBhcmFtIHtmdW5jdGlvbn0gcGFyYW1ldGVyaXplZEZ1bmN0aW9uIC0gVGhlIHBhcmFtZXRlcnMgYW5kIHJldHVybnMgYSBmdW5jdGlvbiB3aXRoIHRoZSBpbmRlcGVuZGVudCB2YXJpYWJsZSBhcyBhIHBhcmFtZXRlclxuICogQHBhcmFtIHtvYmplY3R9IFtvcHRpb25zXSAtIE9wdGlvbnMgb2JqZWN0XG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZGFtcGluZ10gLSBMZXZlbmJlcmctTWFycXVhcmR0IHBhcmFtZXRlclxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmdyYWRpZW50RGlmZmVyZW5jZSA9IDEwZS0yXSAtIEFkanVzdG1lbnQgZm9yIGRlY3JlYXNlIHRoZSBkYW1waW5nIHBhcmFtZXRlclxuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5taW5WYWx1ZXNdIC0gTWluaW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5tYXhWYWx1ZXNdIC0gTWF4aW11bSBhbGxvd2VkIHZhbHVlcyBmb3IgcGFyYW1ldGVyc1xuICogQHBhcmFtIHtBcnJheTxudW1iZXI+fSBbb3B0aW9ucy5pbml0aWFsVmFsdWVzXSAtIEFycmF5IG9mIGluaXRpYWwgcGFyYW1ldGVyIHZhbHVlc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heEl0ZXJhdGlvbnMgPSAxMDBdIC0gTWF4aW11bSBvZiBhbGxvd2VkIGl0ZXJhdGlvbnNcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5lcnJvclRvbGVyYW5jZSA9IDEwZS0zXSAtIE1pbmltdW0gdW5jZXJ0YWludHkgYWxsb3dlZCBmb3IgZWFjaCBwb2ludFxuICogQHJldHVybiB7e3BhcmFtZXRlclZhbHVlczogQXJyYXk8bnVtYmVyPiwgcGFyYW1ldGVyRXJyb3I6IG51bWJlciwgaXRlcmF0aW9uczogbnVtYmVyfX1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGV2ZW5iZXJnTWFycXVhcmR0KFxuICBkYXRhLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gIG9wdGlvbnMgPSB7fSxcbikge1xuICBsZXQge1xuICAgIG1heEl0ZXJhdGlvbnMgPSAxMDAsXG4gICAgZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTIsXG4gICAgZGFtcGluZyA9IDAsXG4gICAgZXJyb3JUb2xlcmFuY2UgPSAxMGUtMyxcbiAgICBtaW5WYWx1ZXMsXG4gICAgbWF4VmFsdWVzLFxuICAgIGluaXRpYWxWYWx1ZXMsXG4gIH0gPSBvcHRpb25zO1xuXG4gIGlmIChkYW1waW5nIDw9IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYW1waW5nIG9wdGlvbiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJyk7XG4gIH0gZWxzZSBpZiAoIWRhdGEueCB8fCAhZGF0YS55KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGF0YSBwYXJhbWV0ZXIgbXVzdCBoYXZlIHggYW5kIHkgZWxlbWVudHMnKTtcbiAgfSBlbHNlIGlmIChcbiAgICAhaXNBcnJheShkYXRhLngpIHx8XG4gICAgZGF0YS54Lmxlbmd0aCA8IDIgfHxcbiAgICAhaXNBcnJheShkYXRhLnkpIHx8XG4gICAgZGF0YS55Lmxlbmd0aCA8IDJcbiAgKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGJlIGFuIGFycmF5IHdpdGggbW9yZSB0aGFuIDIgcG9pbnRzJyxcbiAgICApO1xuICB9IGVsc2UgaWYgKGRhdGEueC5sZW5ndGggIT09IGRhdGEueS5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBlbGVtZW50cyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIGluaXRpYWxWYWx1ZXMgfHwgbmV3IEFycmF5KHBhcmFtZXRlcml6ZWRGdW5jdGlvbi5sZW5ndGgpLmZpbGwoMSk7XG4gIGxldCBwYXJMZW4gPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgbWF4VmFsdWVzID0gbWF4VmFsdWVzIHx8IG5ldyBBcnJheShwYXJMZW4pLmZpbGwoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpO1xuICBtaW5WYWx1ZXMgPSBtaW5WYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUlOX1NBRkVfSU5URUdFUik7XG5cbiAgaWYgKG1heFZhbHVlcy5sZW5ndGggIT09IG1pblZhbHVlcy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ21pblZhbHVlcyBhbmQgbWF4VmFsdWVzIG11c3QgYmUgdGhlIHNhbWUgc2l6ZScpO1xuICB9XG5cbiAgaWYgKCFpc0FycmF5KHBhcmFtZXRlcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdpbml0aWFsVmFsdWVzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGxldCBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcblxuICBsZXQgY29udmVyZ2VkID0gZXJyb3IgPD0gZXJyb3JUb2xlcmFuY2U7XG5cbiAgbGV0IGl0ZXJhdGlvbjtcbiAgZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCBtYXhJdGVyYXRpb25zICYmICFjb252ZXJnZWQ7IGl0ZXJhdGlvbisrKSB7XG4gICAgcGFyYW1ldGVycyA9IHN0ZXAoXG4gICAgICBkYXRhLFxuICAgICAgcGFyYW1ldGVycyxcbiAgICAgIGRhbXBpbmcsXG4gICAgICBncmFkaWVudERpZmZlcmVuY2UsXG4gICAgICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4gICAgKTtcblxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgcGFyTGVuOyBrKyspIHtcbiAgICAgIHBhcmFtZXRlcnNba10gPSBNYXRoLm1pbihcbiAgICAgICAgTWF0aC5tYXgobWluVmFsdWVzW2tdLCBwYXJhbWV0ZXJzW2tdKSxcbiAgICAgICAgbWF4VmFsdWVzW2tdLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBlcnJvciA9IGVycm9yQ2FsY3VsYXRpb24oZGF0YSwgcGFyYW1ldGVycywgcGFyYW1ldGVyaXplZEZ1bmN0aW9uKTtcbiAgICBpZiAoaXNOYU4oZXJyb3IpKSBicmVhaztcbiAgICBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcGFyYW1ldGVyVmFsdWVzOiBwYXJhbWV0ZXJzLFxuICAgIHBhcmFtZXRlckVycm9yOiBlcnJvcixcbiAgICBpdGVyYXRpb25zOiBpdGVyYXRpb24sXG4gIH07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG5mdW5jdGlvbiBtYWtlSGVhcChuUG9pbnRzLCBzaXplKSB7XG4gICAgdmFyIG1ha2VBcnJheXMgPSBmdW5jdGlvbiAoZmlsbFZhbHVlKSB7XG4gICAgICAgIHJldHVybiB1dGlscy5lbXB0eShuUG9pbnRzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLmZpbGxlZChzaXplLCBmaWxsVmFsdWUpO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIHZhciBoZWFwID0gW107XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoLTEpKTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cyhJbmZpbml0eSkpO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKDApKTtcbiAgICByZXR1cm4gaGVhcDtcbn1cbmV4cG9ydHMubWFrZUhlYXAgPSBtYWtlSGVhcDtcbmZ1bmN0aW9uIHJlamVjdGlvblNhbXBsZShuU2FtcGxlcywgcG9vbFNpemUsIHJhbmRvbSkge1xuICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgIHZhciByZWplY3RTYW1wbGUgPSB0cnVlO1xuICAgICAgICB2YXIgaiA9IDA7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIGogPSB1dGlscy50YXVSYW5kSW50KHBvb2xTaXplLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gcmVzdWx0W2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYnJva2VuKVxuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdFtpXSA9IGo7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnJlamVjdGlvblNhbXBsZSA9IHJlamVjdGlvblNhbXBsZTtcbmZ1bmN0aW9uIGhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHJvdyA9IE1hdGguZmxvb3Iocm93KTtcbiAgICB2YXIgaW5kaWNlcyA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgaXNOZXcgPSBoZWFwWzJdW3Jvd107XG4gICAgaWYgKHdlaWdodCA+PSB3ZWlnaHRzWzBdKSB7XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGluZGV4ID09PSBpbmRpY2VzW2ldKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5jaGVja2VkSGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKTtcbn1cbmV4cG9ydHMuaGVhcFB1c2ggPSBoZWFwUHVzaDtcbmZ1bmN0aW9uIHVuY2hlY2tlZEhlYXBQdXNoKGhlYXAsIHJvdywgd2VpZ2h0LCBpbmRleCwgZmxhZykge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIHZhciB3ZWlnaHRzID0gaGVhcFsxXVtyb3ddO1xuICAgIHZhciBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIHdlaWdodHNbMF0gPSB3ZWlnaHQ7XG4gICAgaW5kaWNlc1swXSA9IGluZGV4O1xuICAgIGlzTmV3WzBdID0gZmxhZztcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIGlTd2FwID0gMDtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgaWMxID0gMiAqIGkgKyAxO1xuICAgICAgICB2YXIgaWMyID0gaWMxICsgMTtcbiAgICAgICAgdmFyIGhlYXBTaGFwZTIgPSBoZWFwWzBdWzBdLmxlbmd0aDtcbiAgICAgICAgaWYgKGljMSA+PSBoZWFwU2hhcGUyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChpYzIgPj0gaGVhcFNoYXBlMikge1xuICAgICAgICAgICAgaWYgKHdlaWdodHNbaWMxXSA+IHdlaWdodCkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAod2VpZ2h0c1tpYzFdID49IHdlaWdodHNbaWMyXSkge1xuICAgICAgICAgICAgaWYgKHdlaWdodCA8IHdlaWdodHNbaWMxXSkge1xuICAgICAgICAgICAgICAgIGlTd2FwID0gaWMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0IDwgd2VpZ2h0c1tpYzJdKSB7XG4gICAgICAgICAgICAgICAgaVN3YXAgPSBpYzI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB3ZWlnaHRzW2ldID0gd2VpZ2h0c1tpU3dhcF07XG4gICAgICAgIGluZGljZXNbaV0gPSBpbmRpY2VzW2lTd2FwXTtcbiAgICAgICAgaXNOZXdbaV0gPSBpc05ld1tpU3dhcF07XG4gICAgICAgIGkgPSBpU3dhcDtcbiAgICB9XG4gICAgd2VpZ2h0c1tpXSA9IHdlaWdodDtcbiAgICBpbmRpY2VzW2ldID0gaW5kZXg7XG4gICAgaXNOZXdbaV0gPSBmbGFnO1xuICAgIHJldHVybiAxO1xufVxuZXhwb3J0cy51bmNoZWNrZWRIZWFwUHVzaCA9IHVuY2hlY2tlZEhlYXBQdXNoO1xuZnVuY3Rpb24gYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pIHtcbiAgICB2YXIgY2FuZGlkYXRlTmVpZ2hib3JzID0gbWFrZUhlYXAoblZlcnRpY2VzLCBtYXhDYW5kaWRhdGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5WZXJ0aWNlczsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudEdyYXBoWzBdW2ldW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGlkeCA9IGN1cnJlbnRHcmFwaFswXVtpXVtqXTtcbiAgICAgICAgICAgIHZhciBpc24gPSBjdXJyZW50R3JhcGhbMl1baV1bal07XG4gICAgICAgICAgICB2YXIgZCA9IHV0aWxzLnRhdVJhbmQocmFuZG9tKTtcbiAgICAgICAgICAgIGhlYXBQdXNoKGNhbmRpZGF0ZU5laWdoYm9ycywgaSwgZCwgaWR4LCBpc24pO1xuICAgICAgICAgICAgaGVhcFB1c2goY2FuZGlkYXRlTmVpZ2hib3JzLCBpZHgsIGQsIGksIGlzbik7XG4gICAgICAgICAgICBjdXJyZW50R3JhcGhbMl1baV1bal0gPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjYW5kaWRhdGVOZWlnaGJvcnM7XG59XG5leHBvcnRzLmJ1aWxkQ2FuZGlkYXRlcyA9IGJ1aWxkQ2FuZGlkYXRlcztcbmZ1bmN0aW9uIGRlaGVhcFNvcnQoaGVhcCkge1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXTtcbiAgICB2YXIgd2VpZ2h0cyA9IGhlYXBbMV07XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBpbmRIZWFwID0gaW5kaWNlc1tpXTtcbiAgICAgICAgdmFyIGRpc3RIZWFwID0gd2VpZ2h0c1tpXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRIZWFwLmxlbmd0aCAtIDE7IGorKykge1xuICAgICAgICAgICAgdmFyIGluZEhlYXBJbmRleCA9IGluZEhlYXAubGVuZ3RoIC0gaiAtIDE7XG4gICAgICAgICAgICB2YXIgZGlzdEhlYXBJbmRleCA9IGRpc3RIZWFwLmxlbmd0aCAtIGogLSAxO1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaW5kSGVhcFswXTtcbiAgICAgICAgICAgIGluZEhlYXBbMF0gPSBpbmRIZWFwW2luZEhlYXBJbmRleF07XG4gICAgICAgICAgICBpbmRIZWFwW2luZEhlYXBJbmRleF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IGRpc3RIZWFwWzBdO1xuICAgICAgICAgICAgZGlzdEhlYXBbMF0gPSBkaXN0SGVhcFtkaXN0SGVhcEluZGV4XTtcbiAgICAgICAgICAgIGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdID0gdGVtcDI7XG4gICAgICAgICAgICBzaWZ0RG93bihkaXN0SGVhcCwgaW5kSGVhcCwgZGlzdEhlYXBJbmRleCwgMCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kaWNlczogaW5kaWNlcywgd2VpZ2h0czogd2VpZ2h0cyB9O1xufVxuZXhwb3J0cy5kZWhlYXBTb3J0ID0gZGVoZWFwU29ydDtcbmZ1bmN0aW9uIHNpZnREb3duKGhlYXAxLCBoZWFwMiwgY2VpbGluZywgZWx0KSB7XG4gICAgd2hpbGUgKGVsdCAqIDIgKyAxIDwgY2VpbGluZykge1xuICAgICAgICB2YXIgbGVmdENoaWxkID0gZWx0ICogMiArIDE7XG4gICAgICAgIHZhciByaWdodENoaWxkID0gbGVmdENoaWxkICsgMTtcbiAgICAgICAgdmFyIHN3YXAgPSBlbHQ7XG4gICAgICAgIGlmIChoZWFwMVtzd2FwXSA8IGhlYXAxW2xlZnRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSBsZWZ0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJpZ2h0Q2hpbGQgPCBjZWlsaW5nICYmIGhlYXAxW3N3YXBdIDwgaGVhcDFbcmlnaHRDaGlsZF0pIHtcbiAgICAgICAgICAgIHN3YXAgPSByaWdodENoaWxkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzd2FwID09PSBlbHQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHRlbXAxID0gaGVhcDFbZWx0XTtcbiAgICAgICAgICAgIGhlYXAxW2VsdF0gPSBoZWFwMVtzd2FwXTtcbiAgICAgICAgICAgIGhlYXAxW3N3YXBdID0gdGVtcDE7XG4gICAgICAgICAgICB2YXIgdGVtcDIgPSBoZWFwMltlbHRdO1xuICAgICAgICAgICAgaGVhcDJbZWx0XSA9IGhlYXAyW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDJbc3dhcF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIGVsdCA9IHN3YXA7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBzbWFsbGVzdEZsYWdnZWQoaGVhcCwgcm93KSB7XG4gICAgdmFyIGluZCA9IGhlYXBbMF1bcm93XTtcbiAgICB2YXIgZGlzdCA9IGhlYXBbMV1bcm93XTtcbiAgICB2YXIgZmxhZyA9IGhlYXBbMl1bcm93XTtcbiAgICB2YXIgbWluRGlzdCA9IEluZmluaXR5O1xuICAgIHZhciByZXN1bHRJbmRleCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpID4gaW5kLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChmbGFnW2ldID09PSAxICYmIGRpc3RbaV0gPCBtaW5EaXN0KSB7XG4gICAgICAgICAgICBtaW5EaXN0ID0gZGlzdFtpXTtcbiAgICAgICAgICAgIHJlc3VsdEluZGV4ID0gaTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocmVzdWx0SW5kZXggPj0gMCkge1xuICAgICAgICBmbGFnW3Jlc3VsdEluZGV4XSA9IDA7XG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKGluZFtyZXN1bHRJbmRleF0pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbmV4cG9ydHMuc21hbGxlc3RGbGFnZ2VkID0gc21hbGxlc3RGbGFnZ2VkO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgdW1hcF8xID0gcmVxdWlyZShcIi4vdW1hcFwiKTtcbmV4cG9ydHMuVU1BUCA9IHVtYXBfMS5VTUFQO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIF9hO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBTcGFyc2VNYXRyaXggPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWx1ZXMsIGRpbXMpIHtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLm5Sb3dzID0gMDtcbiAgICAgICAgdGhpcy5uQ29scyA9IDA7XG4gICAgICAgIGlmIChyb3dzLmxlbmd0aCAhPT0gY29scy5sZW5ndGggfHwgcm93cy5sZW5ndGggIT09IHZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93cywgY29scyBhbmQgdmFsdWVzIGFycmF5cyBtdXN0IGFsbCBoYXZlIHRoZSBzYW1lIGxlbmd0aCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMublJvd3MgPSBkaW1zWzBdO1xuICAgICAgICB0aGlzLm5Db2xzID0gZGltc1sxXTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciByb3cgPSByb3dzW2ldO1xuICAgICAgICAgICAgdmFyIGNvbCA9IGNvbHNbaV07XG4gICAgICAgICAgICB0aGlzLmNoZWNrRGltcyhyb3csIGNvbCk7XG4gICAgICAgICAgICB2YXIga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlOiB2YWx1ZXNbaV0sIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLm1ha2VLZXkgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgcmV0dXJuIHJvdyArIFwiOlwiICsgY29sO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5jaGVja0RpbXMgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgdmFyIHdpdGhpbkJvdW5kcyA9IHJvdyA8IHRoaXMublJvd3MgJiYgY29sIDwgdGhpcy5uQ29scztcbiAgICAgICAgaWYgKCF3aXRoaW5Cb3VuZHMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigncm93IGFuZC9vciBjb2wgc3BlY2lmaWVkIG91dHNpZGUgb2YgbWF0cml4IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAocm93LCBjb2wsIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICghdGhpcy5lbnRyaWVzLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc2V0KGtleSwgeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChyb3csIGNvbCwgZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgIGlmIChkZWZhdWx0VmFsdWUgPT09IHZvaWQgMCkgeyBkZWZhdWx0VmFsdWUgPSAwOyB9XG4gICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgdmFyIGtleSA9IHRoaXMubWFrZUtleShyb3csIGNvbCk7XG4gICAgICAgIGlmICh0aGlzLmVudHJpZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmVudHJpZXMuZ2V0KGtleSkudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uIChvcmRlcmVkKSB7XG4gICAgICAgIGlmIChvcmRlcmVkID09PSB2b2lkIDApIHsgb3JkZXJlZCA9IHRydWU7IH1cbiAgICAgICAgdmFyIHJvd0NvbFZhbHVlcyA9IFtdO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChvcmRlcmVkKSB7XG4gICAgICAgICAgICByb3dDb2xWYWx1ZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIGlmIChhLnJvdyA9PT0gYi5yb3cpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcm93Q29sVmFsdWVzO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXREaW1zID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gW3RoaXMublJvd3MsIHRoaXMubkNvbHNdO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRSb3dzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUucm93O1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0Q29scyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbDtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldFZhbHVlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5lbnRyaWVzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgIHZhciBfYiA9IF9fcmVhZChfYSwgMiksIGtleSA9IF9iWzBdLCB2YWx1ZSA9IF9iWzFdO1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIGZuKHZhbHVlLnZhbHVlLCB2YWx1ZS5yb3csIHZhbHVlLmNvbCk7IH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5tYXAgPSBmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgdmFyIHZhbHMgPSBbXTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLmZvckVhY2goZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgICB2YWxzLnB1c2goZm4odmFsdWUudmFsdWUsIHZhbHVlLnJvdywgdmFsdWUuY29sKSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgZGltcyA9IFt0aGlzLm5Sb3dzLCB0aGlzLm5Db2xzXTtcbiAgICAgICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgodGhpcy5nZXRSb3dzKCksIHRoaXMuZ2V0Q29scygpLCB2YWxzLCBkaW1zKTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy5lbXB0eSh0aGlzLm5Sb3dzKTtcbiAgICAgICAgdmFyIG91dHB1dCA9IHJvd3MubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhfdGhpcy5uQ29scyk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIG91dHB1dFt2YWx1ZS5yb3ddW3ZhbHVlLmNvbF0gPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfTtcbiAgICByZXR1cm4gU3BhcnNlTWF0cml4O1xufSgpKTtcbmV4cG9ydHMuU3BhcnNlTWF0cml4ID0gU3BhcnNlTWF0cml4O1xuZnVuY3Rpb24gdHJhbnNwb3NlKG1hdHJpeCkge1xuICAgIHZhciBjb2xzID0gW107XG4gICAgdmFyIHJvd3MgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIG1hdHJpeC5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSwgcm93LCBjb2wpIHtcbiAgICAgICAgY29scy5wdXNoKHJvdyk7XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICB2YWxzLnB1c2godmFsdWUpO1xuICAgIH0pO1xuICAgIHZhciBkaW1zID0gW21hdHJpeC5uQ29scywgbWF0cml4Lm5Sb3dzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmV4cG9ydHMudHJhbnNwb3NlID0gdHJhbnNwb3NlO1xuZnVuY3Rpb24gaWRlbnRpdHkoc2l6ZSkge1xuICAgIHZhciBfYSA9IF9fcmVhZChzaXplLCAxKSwgcm93cyA9IF9hWzBdO1xuICAgIHZhciBtYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIHNpemUpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIG1hdHJpeC5zZXQoaSwgaSwgMSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG5leHBvcnRzLmlkZW50aXR5ID0gaWRlbnRpdHk7XG5mdW5jdGlvbiBwYWlyd2lzZU11bHRpcGx5KGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggKiB5OyB9KTtcbn1cbmV4cG9ydHMucGFpcndpc2VNdWx0aXBseSA9IHBhaXJ3aXNlTXVsdGlwbHk7XG5mdW5jdGlvbiBhZGQoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geCArIHk7IH0pO1xufVxuZXhwb3J0cy5hZGQgPSBhZGQ7XG5mdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4IC0geTsgfSk7XG59XG5leHBvcnRzLnN1YnRyYWN0ID0gc3VidHJhY3Q7XG5mdW5jdGlvbiBtYXhpbXVtKGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuICh4ID4geSA/IHggOiB5KTsgfSk7XG59XG5leHBvcnRzLm1heGltdW0gPSBtYXhpbXVtO1xuZnVuY3Rpb24gbXVsdGlwbHlTY2FsYXIoYSwgc2NhbGFyKSB7XG4gICAgcmV0dXJuIGEubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gdmFsdWUgKiBzY2FsYXI7XG4gICAgfSk7XG59XG5leHBvcnRzLm11bHRpcGx5U2NhbGFyID0gbXVsdGlwbHlTY2FsYXI7XG5mdW5jdGlvbiBlbGltaW5hdGVaZXJvcyhtKSB7XG4gICAgdmFyIHplcm9JbmRpY2VzID0gbmV3IFNldCgpO1xuICAgIHZhciB2YWx1ZXMgPSBtLmdldFZhbHVlcygpO1xuICAgIHZhciByb3dzID0gbS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHMgPSBtLmdldENvbHMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAodmFsdWVzW2ldID09PSAwKSB7XG4gICAgICAgICAgICB6ZXJvSW5kaWNlcy5hZGQoaSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIHJlbW92ZUJ5WmVyb0luZGV4ID0gZnVuY3Rpb24gKF8sIGluZGV4KSB7IHJldHVybiAhemVyb0luZGljZXMuaGFzKGluZGV4KTsgfTtcbiAgICB2YXIgbmV4dFZhbHVlcyA9IHZhbHVlcy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHZhciBuZXh0Um93cyA9IHJvd3MuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICB2YXIgbmV4dENvbHMgPSBjb2xzLmZpbHRlcihyZW1vdmVCeVplcm9JbmRleCk7XG4gICAgcmV0dXJuIG5ldyBTcGFyc2VNYXRyaXgobmV4dFJvd3MsIG5leHRDb2xzLCBuZXh0VmFsdWVzLCBtLmdldERpbXMoKSk7XG59XG5leHBvcnRzLmVsaW1pbmF0ZVplcm9zID0gZWxpbWluYXRlWmVyb3M7XG5mdW5jdGlvbiBub3JtYWxpemUobSwgbm9ybVR5cGUpIHtcbiAgICBpZiAobm9ybVR5cGUgPT09IHZvaWQgMCkgeyBub3JtVHlwZSA9IFwibDJcIjsgfVxuICAgIHZhciBlXzEsIF9hO1xuICAgIHZhciBub3JtRm4gPSBub3JtRm5zW25vcm1UeXBlXTtcbiAgICB2YXIgY29sc0J5Um93ID0gbmV3IE1hcCgpO1xuICAgIG0uZm9yRWFjaChmdW5jdGlvbiAoXywgcm93LCBjb2wpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykgfHwgW107XG4gICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICBjb2xzQnlSb3cuc2V0KHJvdywgY29scyk7XG4gICAgfSk7XG4gICAgdmFyIG5leHRNYXRyaXggPSBuZXcgU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIG0uZ2V0RGltcygpKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgdmFyIGNvbHMgPSBjb2xzQnlSb3cuZ2V0KHJvdykuc29ydCgpO1xuICAgICAgICB2YXIgdmFscyA9IGNvbHMubWFwKGZ1bmN0aW9uIChjb2wpIHsgcmV0dXJuIG0uZ2V0KHJvdywgY29sKTsgfSk7XG4gICAgICAgIHZhciBub3JtID0gbm9ybUZuKHZhbHMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vcm0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIG5leHRNYXRyaXguc2V0KHJvdywgY29sc1tpXSwgbm9ybVtpXSk7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9iID0gX192YWx1ZXMoY29sc0J5Um93LmtleXMoKSksIF9jID0gX2IubmV4dCgpOyAhX2MuZG9uZTsgX2MgPSBfYi5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciByb3cgPSBfYy52YWx1ZTtcbiAgICAgICAgICAgIF9sb29wXzEocm93KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKF9jICYmICFfYy5kb25lICYmIChfYSA9IF9iLnJldHVybikpIF9hLmNhbGwoX2IpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIG5leHRNYXRyaXg7XG59XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTtcbnZhciBub3JtRm5zID0gKF9hID0ge30sXG4gICAgX2FbXCJtYXhcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIG1heCA9IC1JbmZpbml0eTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbWF4ID0geHNbaV0gPiBtYXggPyB4c1tpXSA6IG1heDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gbWF4OyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDFcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSB4c1tpXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IC8gc3VtOyB9KTtcbiAgICB9LFxuICAgIF9hW1wibDJcIl0gPSBmdW5jdGlvbiAoeHMpIHtcbiAgICAgICAgdmFyIHN1bSA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHN1bSArPSBNYXRoLnBvdyh4c1tpXSwgMik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHhzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4gTWF0aC5zcXJ0KE1hdGgucG93KHgsIDIpIC8gc3VtKTsgfSk7XG4gICAgfSxcbiAgICBfYSk7XG5mdW5jdGlvbiBlbGVtZW50V2lzZShhLCBiLCBvcCkge1xuICAgIHZhciB2aXNpdGVkID0gbmV3IFNldCgpO1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvbHMgPSBbXTtcbiAgICB2YXIgdmFscyA9IFtdO1xuICAgIHZhciBvcGVyYXRlID0gZnVuY3Rpb24gKHJvdywgY29sKSB7XG4gICAgICAgIHJvd3MucHVzaChyb3cpO1xuICAgICAgICBjb2xzLnB1c2goY29sKTtcbiAgICAgICAgdmFyIG5leHRWYWx1ZSA9IG9wKGEuZ2V0KHJvdywgY29sKSwgYi5nZXQocm93LCBjb2wpKTtcbiAgICAgICAgdmFscy5wdXNoKG5leHRWYWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgdmFsdWVzQSA9IGEuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NBID0gYS5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNBID0gYS5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQVtpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNBW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIHZpc2l0ZWQuYWRkKGtleSk7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgdmFsdWVzQiA9IGIuZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3NCID0gYi5nZXRSb3dzKCk7XG4gICAgdmFyIGNvbHNCID0gYi5nZXRDb2xzKCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZXNCLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciByb3cgPSByb3dzQltpXTtcbiAgICAgICAgdmFyIGNvbCA9IGNvbHNCW2ldO1xuICAgICAgICB2YXIga2V5ID0gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgICAgIGlmICh2aXNpdGVkLmhhcyhrZXkpKVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIG9wZXJhdGUocm93LCBjb2wpO1xuICAgIH1cbiAgICB2YXIgZGltcyA9IFthLm5Sb3dzLCBhLm5Db2xzXTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBkaW1zKTtcbn1cbmZ1bmN0aW9uIGdldENTUih4KSB7XG4gICAgdmFyIGVudHJpZXMgPSBbXTtcbiAgICB4LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCByb3csIGNvbCkge1xuICAgICAgICBlbnRyaWVzLnB1c2goeyB2YWx1ZTogdmFsdWUsIHJvdzogcm93LCBjb2w6IGNvbCB9KTtcbiAgICB9KTtcbiAgICBlbnRyaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgcmV0dXJuIGEuY29sIC0gYi5jb2w7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYS5yb3cgLSBiLnJvdztcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHZhciBpbmRpY2VzID0gW107XG4gICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgIHZhciBpbmRwdHIgPSBbXTtcbiAgICB2YXIgY3VycmVudFJvdyA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZW50cmllcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgX2EgPSBlbnRyaWVzW2ldLCByb3cgPSBfYS5yb3csIGNvbCA9IF9hLmNvbCwgdmFsdWUgPSBfYS52YWx1ZTtcbiAgICAgICAgaWYgKHJvdyAhPT0gY3VycmVudFJvdykge1xuICAgICAgICAgICAgY3VycmVudFJvdyA9IHJvdztcbiAgICAgICAgICAgIGluZHB0ci5wdXNoKGkpO1xuICAgICAgICB9XG4gICAgICAgIGluZGljZXMucHVzaChjb2wpO1xuICAgICAgICB2YWx1ZXMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiB7IGluZGljZXM6IGluZGljZXMsIHZhbHVlczogdmFsdWVzLCBpbmRwdHI6IGluZHB0ciB9O1xufVxuZXhwb3J0cy5nZXRDU1IgPSBnZXRDU1I7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaGVhcCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9oZWFwXCIpKTtcbnZhciBtYXRyaXggPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vbWF0cml4XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbmZ1bmN0aW9uIG1ha2VOTkRlc2NlbnQoZGlzdGFuY2VGbiwgcmFuZG9tKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5ORGVzY2VudChkYXRhLCBsZWFmQXJyYXksIG5OZWlnaGJvcnMsIG5JdGVycywgbWF4Q2FuZGlkYXRlcywgZGVsdGEsIHJobywgcnBUcmVlSW5pdCkge1xuICAgICAgICBpZiAobkl0ZXJzID09PSB2b2lkIDApIHsgbkl0ZXJzID0gMTA7IH1cbiAgICAgICAgaWYgKG1heENhbmRpZGF0ZXMgPT09IHZvaWQgMCkgeyBtYXhDYW5kaWRhdGVzID0gNTA7IH1cbiAgICAgICAgaWYgKGRlbHRhID09PSB2b2lkIDApIHsgZGVsdGEgPSAwLjAwMTsgfVxuICAgICAgICBpZiAocmhvID09PSB2b2lkIDApIHsgcmhvID0gMC41OyB9XG4gICAgICAgIGlmIChycFRyZWVJbml0ID09PSB2b2lkIDApIHsgcnBUcmVlSW5pdCA9IHRydWU7IH1cbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IGRhdGEubGVuZ3RoO1xuICAgICAgICB2YXIgY3VycmVudEdyYXBoID0gaGVhcC5tYWtlSGVhcChkYXRhLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGluZGljZXMgPSBoZWFwLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2ldLCBkYXRhW2luZGljZXNbal1dKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGluZGljZXNbal0sIGQsIGksIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChycFRyZWVJbml0KSB7XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IGxlYWZBcnJheS5sZW5ndGg7IG4rKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVhZkFycmF5W25dLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1baV0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaSArIDE7IGogPCBsZWFmQXJyYXlbbl0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZWFmQXJyYXlbbl1bal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtsZWFmQXJyYXlbbl1baV1dLCBkYXRhW2xlYWZBcnJheVtuXVtqXV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtpXSwgZCwgbGVhZkFycmF5W25dW2pdLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBsZWFmQXJyYXlbbl1bal0sIGQsIGxlYWZBcnJheVtuXVtpXSwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZm9yICh2YXIgbiA9IDA7IG4gPCBuSXRlcnM7IG4rKykge1xuICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZU5laWdoYm9ycyA9IGhlYXAuYnVpbGRDYW5kaWRhdGVzKGN1cnJlbnRHcmFwaCwgblZlcnRpY2VzLCBuTmVpZ2hib3JzLCBtYXhDYW5kaWRhdGVzLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGMgPSAwO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuVmVydGljZXM7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbWF4Q2FuZGlkYXRlczsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwID0gTWF0aC5mbG9vcihjYW5kaWRhdGVOZWlnaGJvcnNbMF1baV1bal0pO1xuICAgICAgICAgICAgICAgICAgICBpZiAocCA8IDAgfHwgdXRpbHMudGF1UmFuZChyYW5kb20pIDwgcmhvKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IG1heENhbmRpZGF0ZXM7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHEgPSBNYXRoLmZsb29yKGNhbmRpZGF0ZU5laWdoYm9yc1swXVtpXVtrXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2ogPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1bal07XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2sgPSBjYW5kaWRhdGVOZWlnaGJvcnNbMl1baV1ba107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocSA8IDAgfHwgKCFjaiAmJiAhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtwXSwgZGF0YVtxXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjICs9IGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBwLCBkLCBxLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHEsIGQsIHAsIDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGMgPD0gZGVsdGEgKiBuTmVpZ2hib3JzICogZGF0YS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgc29ydGVkID0gaGVhcC5kZWhlYXBTb3J0KGN1cnJlbnRHcmFwaCk7XG4gICAgICAgIHJldHVybiBzb3J0ZWQ7XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZU5ORGVzY2VudCA9IG1ha2VOTkRlc2NlbnQ7XG5mdW5jdGlvbiBtYWtlSW5pdGlhbGl6YXRpb25zKGRpc3RhbmNlRm4pIHtcbiAgICBmdW5jdGlvbiBpbml0RnJvbVJhbmRvbShuTmVpZ2hib3JzLCBkYXRhLCBxdWVyeVBvaW50cywgX2hlYXAsIHJhbmRvbSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5kaWNlcyA9IHV0aWxzLnJlamVjdGlvblNhbXBsZShuTmVpZ2hib3JzLCBkYXRhLmxlbmd0aCwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbaW5kaWNlc1tqXV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKF9oZWFwLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBpbml0RnJvbVRyZWUoX3RyZWUsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRpY2VzID0gdHJlZS5zZWFyY2hGbGF0VHJlZShxdWVyeVBvaW50c1tpXSwgX3RyZWUsIHJhbmRvbSk7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtpbmRpY2VzW2pdXSwgcXVlcnlQb2ludHNbaV0pO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goX2hlYXAsIGksIGQsIGluZGljZXNbal0sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5pdEZyb21SYW5kb206IGluaXRGcm9tUmFuZG9tLCBpbml0RnJvbVRyZWU6IGluaXRGcm9tVHJlZSB9O1xufVxuZXhwb3J0cy5tYWtlSW5pdGlhbGl6YXRpb25zID0gbWFrZUluaXRpYWxpemF0aW9ucztcbmZ1bmN0aW9uIG1ha2VJbml0aWFsaXplZE5OU2VhcmNoKGRpc3RhbmNlRm4pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbm5TZWFyY2hGbihkYXRhLCBncmFwaCwgaW5pdGlhbGl6YXRpb24sIHF1ZXJ5UG9pbnRzKSB7XG4gICAgICAgIHZhciBlXzEsIF9hO1xuICAgICAgICB2YXIgX2IgPSBtYXRyaXguZ2V0Q1NSKGdyYXBoKSwgaW5kaWNlcyA9IF9iLmluZGljZXMsIGluZHB0ciA9IF9iLmluZHB0cjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHRyaWVkID0gbmV3IFNldChpbml0aWFsaXphdGlvblswXVtpXSk7XG4gICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgIHZhciB2ZXJ0ZXggPSBoZWFwLnNtYWxsZXN0RmxhZ2dlZChpbml0aWFsaXphdGlvbiwgaSk7XG4gICAgICAgICAgICAgICAgaWYgKHZlcnRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjYW5kaWRhdGVzID0gaW5kaWNlcy5zbGljZShpbmRwdHJbdmVydGV4XSwgaW5kcHRyW3ZlcnRleCArIDFdKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBjYW5kaWRhdGVzXzEgPSBfX3ZhbHVlcyhjYW5kaWRhdGVzKSwgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpOyAhY2FuZGlkYXRlc18xXzEuZG9uZTsgY2FuZGlkYXRlc18xXzEgPSBjYW5kaWRhdGVzXzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2FuZGlkYXRlID0gY2FuZGlkYXRlc18xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSB2ZXJ0ZXggfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5kaWRhdGUgPT09IC0xIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZWQuaGFzKGNhbmRpZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2NhbmRpZGF0ZV0sIHF1ZXJ5UG9pbnRzW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYXAudW5jaGVja2VkSGVhcFB1c2goaW5pdGlhbGl6YXRpb24sIGksIGQsIGNhbmRpZGF0ZSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5hZGQoY2FuZGlkYXRlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICAgICAgICAgIGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZXNfMV8xICYmICFjYW5kaWRhdGVzXzFfMS5kb25lICYmIChfYSA9IGNhbmRpZGF0ZXNfMS5yZXR1cm4pKSBfYS5jYWxsKGNhbmRpZGF0ZXNfMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247XG4gICAgfTtcbn1cbmV4cG9ydHMubWFrZUluaXRpYWxpemVkTk5TZWFyY2ggPSBtYWtlSW5pdGlhbGl6ZWROTlNlYXJjaDtcbmZ1bmN0aW9uIGluaXRpYWxpemVTZWFyY2goZm9yZXN0LCBkYXRhLCBxdWVyeVBvaW50cywgbk5laWdoYm9ycywgaW5pdEZyb21SYW5kb20sIGluaXRGcm9tVHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIGVfMiwgX2E7XG4gICAgdmFyIHJlc3VsdHMgPSBoZWFwLm1ha2VIZWFwKHF1ZXJ5UG9pbnRzLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgaW5pdEZyb21SYW5kb20obk5laWdoYm9ycywgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgaWYgKGZvcmVzdCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZm9yICh2YXIgZm9yZXN0XzEgPSBfX3ZhbHVlcyhmb3Jlc3QpLCBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpOyAhZm9yZXN0XzFfMS5kb25lOyBmb3Jlc3RfMV8xID0gZm9yZXN0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyZWVfMSA9IGZvcmVzdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgaW5pdEZyb21UcmVlKHRyZWVfMSwgZGF0YSwgcXVlcnlQb2ludHMsIHJlc3VsdHMsIHJhbmRvbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMl8xKSB7IGVfMiA9IHsgZXJyb3I6IGVfMl8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChmb3Jlc3RfMV8xICYmICFmb3Jlc3RfMV8xLmRvbmUgJiYgKF9hID0gZm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChmb3Jlc3RfMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMikgdGhyb3cgZV8yLmVycm9yOyB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHM7XG59XG5leHBvcnRzLmluaXRpYWxpemVTZWFyY2ggPSBpbml0aWFsaXplU2VhcmNoO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWQgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1dGlscyA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi91dGlsc1wiKSk7XG52YXIgRmxhdFRyZWUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEZsYXRUcmVlKGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcykge1xuICAgICAgICB0aGlzLmh5cGVycGxhbmVzID0gaHlwZXJwbGFuZXM7XG4gICAgICAgIHRoaXMub2Zmc2V0cyA9IG9mZnNldHM7XG4gICAgICAgIHRoaXMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICAgICAgdGhpcy5pbmRpY2VzID0gaW5kaWNlcztcbiAgICB9XG4gICAgcmV0dXJuIEZsYXRUcmVlO1xufSgpKTtcbmV4cG9ydHMuRmxhdFRyZWUgPSBGbGF0VHJlZTtcbmZ1bmN0aW9uIG1ha2VGb3Jlc3QoZGF0YSwgbk5laWdoYm9ycywgblRyZWVzLCByYW5kb20pIHtcbiAgICB2YXIgbGVhZlNpemUgPSBNYXRoLm1heCgxMCwgbk5laWdoYm9ycyk7XG4gICAgdmFyIHRyZWVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5UcmVlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gbWFrZVRyZWUoZGF0YSwgbGVhZlNpemUsIGksIHJhbmRvbSk7IH0pO1xuICAgIHZhciBmb3Jlc3QgPSB0cmVlcy5tYXAoZnVuY3Rpb24gKHRyZWUpIHsgcmV0dXJuIGZsYXR0ZW5UcmVlKHRyZWUsIGxlYWZTaXplKTsgfSk7XG4gICAgcmV0dXJuIGZvcmVzdDtcbn1cbmV4cG9ydHMubWFrZUZvcmVzdCA9IG1ha2VGb3Jlc3Q7XG5mdW5jdGlvbiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIHZhciBpbmRpY2VzID0gdXRpbHMucmFuZ2UoZGF0YS5sZW5ndGgpO1xuICAgIHZhciB0cmVlID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlcywgbGVhZlNpemUsIG4sIHJhbmRvbSk7XG4gICAgcmV0dXJuIHRyZWU7XG59XG5mdW5jdGlvbiBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgcSwgcmFuZG9tKSB7XG4gICAgaWYgKGxlYWZTaXplID09PSB2b2lkIDApIHsgbGVhZlNpemUgPSAzMDsgfVxuICAgIGlmIChpbmRpY2VzLmxlbmd0aCA+IGxlYWZTaXplKSB7XG4gICAgICAgIHZhciBzcGxpdFJlc3VsdHMgPSBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKTtcbiAgICAgICAgdmFyIGluZGljZXNMZWZ0ID0gc3BsaXRSZXN1bHRzLmluZGljZXNMZWZ0LCBpbmRpY2VzUmlnaHQgPSBzcGxpdFJlc3VsdHMuaW5kaWNlc1JpZ2h0LCBoeXBlcnBsYW5lID0gc3BsaXRSZXN1bHRzLmh5cGVycGxhbmUsIG9mZnNldCA9IHNwbGl0UmVzdWx0cy5vZmZzZXQ7XG4gICAgICAgIHZhciBsZWZ0Q2hpbGQgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzTGVmdCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgcmlnaHRDaGlsZCA9IG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXNSaWdodCwgbGVhZlNpemUsIHEgKyAxLCByYW5kb20pO1xuICAgICAgICB2YXIgbm9kZSA9IHsgbGVmdENoaWxkOiBsZWZ0Q2hpbGQsIHJpZ2h0Q2hpbGQ6IHJpZ2h0Q2hpbGQsIGlzTGVhZjogZmFsc2UsIGh5cGVycGxhbmU6IGh5cGVycGxhbmUsIG9mZnNldDogb2Zmc2V0IH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdmFyIG5vZGUgPSB7IGluZGljZXM6IGluZGljZXMsIGlzTGVhZjogdHJ1ZSB9O1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG59XG5mdW5jdGlvbiBldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQoZGF0YSwgaW5kaWNlcywgcmFuZG9tKSB7XG4gICAgdmFyIGRpbSA9IGRhdGFbMF0ubGVuZ3RoO1xuICAgIHZhciBsZWZ0SW5kZXggPSB1dGlscy50YXVSYW5kSW50KGluZGljZXMubGVuZ3RoLCByYW5kb20pO1xuICAgIHZhciByaWdodEluZGV4ID0gdXRpbHMudGF1UmFuZEludChpbmRpY2VzLmxlbmd0aCwgcmFuZG9tKTtcbiAgICByaWdodEluZGV4ICs9IGxlZnRJbmRleCA9PT0gcmlnaHRJbmRleCA/IDEgOiAwO1xuICAgIHJpZ2h0SW5kZXggPSByaWdodEluZGV4ICUgaW5kaWNlcy5sZW5ndGg7XG4gICAgdmFyIGxlZnQgPSBpbmRpY2VzW2xlZnRJbmRleF07XG4gICAgdmFyIHJpZ2h0ID0gaW5kaWNlc1tyaWdodEluZGV4XTtcbiAgICB2YXIgaHlwZXJwbGFuZU9mZnNldCA9IDA7XG4gICAgdmFyIGh5cGVycGxhbmVWZWN0b3IgPSB1dGlscy56ZXJvcyhkaW0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaHlwZXJwbGFuZVZlY3Rvci5sZW5ndGg7IGkrKykge1xuICAgICAgICBoeXBlcnBsYW5lVmVjdG9yW2ldID0gZGF0YVtsZWZ0XVtpXSAtIGRhdGFbcmlnaHRdW2ldO1xuICAgICAgICBoeXBlcnBsYW5lT2Zmc2V0IC09XG4gICAgICAgICAgICAoaHlwZXJwbGFuZVZlY3RvcltpXSAqIChkYXRhW2xlZnRdW2ldICsgZGF0YVtyaWdodF1baV0pKSAvIDIuMDtcbiAgICB9XG4gICAgdmFyIG5MZWZ0ID0gMDtcbiAgICB2YXIgblJpZ2h0ID0gMDtcbiAgICB2YXIgc2lkZSA9IHV0aWxzLnplcm9zKGluZGljZXMubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIG1hcmdpbiA9IGh5cGVycGxhbmVPZmZzZXQ7XG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgIG1hcmdpbiArPSBoeXBlcnBsYW5lVmVjdG9yW2RdICogZGF0YVtpbmRpY2VzW2ldXVtkXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gdXRpbHMudGF1UmFuZEludCgyLCByYW5kb20pO1xuICAgICAgICAgICAgaWYgKHNpZGVbaV0gPT09IDApIHtcbiAgICAgICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDA7XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc2lkZVtpXSA9IDE7XG4gICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW5kaWNlc0xlZnQgPSB1dGlscy56ZXJvcyhuTGVmdCk7XG4gICAgdmFyIGluZGljZXNSaWdodCA9IHV0aWxzLnplcm9zKG5SaWdodCk7XG4gICAgbkxlZnQgPSAwO1xuICAgIG5SaWdodCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaWRlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChzaWRlW2ldID09PSAwKSB7XG4gICAgICAgICAgICBpbmRpY2VzTGVmdFtuTGVmdF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgbkxlZnQgKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGluZGljZXNSaWdodFtuUmlnaHRdID0gaW5kaWNlc1tpXTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIGluZGljZXNMZWZ0OiBpbmRpY2VzTGVmdCxcbiAgICAgICAgaW5kaWNlc1JpZ2h0OiBpbmRpY2VzUmlnaHQsXG4gICAgICAgIGh5cGVycGxhbmU6IGh5cGVycGxhbmVWZWN0b3IsXG4gICAgICAgIG9mZnNldDogaHlwZXJwbGFuZU9mZnNldCxcbiAgICB9O1xufVxuZnVuY3Rpb24gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpIHtcbiAgICB2YXIgbk5vZGVzID0gbnVtTm9kZXModHJlZSk7XG4gICAgdmFyIG5MZWF2ZXMgPSBudW1MZWF2ZXModHJlZSk7XG4gICAgdmFyIGh5cGVycGxhbmVzID0gdXRpbHNcbiAgICAgICAgLnJhbmdlKG5Ob2RlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy56ZXJvcyh0cmVlLmh5cGVycGxhbmUgPyB0cmVlLmh5cGVycGxhbmUubGVuZ3RoIDogMCk7IH0pO1xuICAgIHZhciBvZmZzZXRzID0gdXRpbHMuemVyb3Mobk5vZGVzKTtcbiAgICB2YXIgY2hpbGRyZW4gPSB1dGlscy5yYW5nZShuTm9kZXMpLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiBbLTEsIC0xXTsgfSk7XG4gICAgdmFyIGluZGljZXMgPSB1dGlsc1xuICAgICAgICAucmFuZ2UobkxlYXZlcylcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoKSB7IHJldHVybiB1dGlscy5yYW5nZShsZWFmU2l6ZSkubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIC0xOyB9KTsgfSk7XG4gICAgcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIDAsIDApO1xuICAgIHJldHVybiBuZXcgRmxhdFRyZWUoaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzKTtcbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZSwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtLCBsZWFmTnVtKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0cmVlLmlzTGVhZikge1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IC1sZWFmTnVtO1xuICAgICAgICAoX2EgPSBpbmRpY2VzW2xlYWZOdW1dKS5zcGxpY2UuYXBwbHkoX2EsIF9fc3ByZWFkKFswLCB0cmVlLmluZGljZXMubGVuZ3RoXSwgdHJlZS5pbmRpY2VzKSk7XG4gICAgICAgIGxlYWZOdW0gKz0gMTtcbiAgICAgICAgcmV0dXJuIHsgbm9kZU51bTogbm9kZU51bSwgbGVhZk51bTogbGVhZk51bSB9O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgaHlwZXJwbGFuZXNbbm9kZU51bV0gPSB0cmVlLmh5cGVycGxhbmU7XG4gICAgICAgIG9mZnNldHNbbm9kZU51bV0gPSB0cmVlLm9mZnNldDtcbiAgICAgICAgY2hpbGRyZW5bbm9kZU51bV1bMF0gPSBub2RlTnVtICsgMTtcbiAgICAgICAgdmFyIG9sZE5vZGVOdW0gPSBub2RlTnVtO1xuICAgICAgICB2YXIgcmVzID0gcmVjdXJzaXZlRmxhdHRlbih0cmVlLmxlZnRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIG5vZGVOdW0gPSByZXMubm9kZU51bTtcbiAgICAgICAgbGVhZk51bSA9IHJlcy5sZWFmTnVtO1xuICAgICAgICBjaGlsZHJlbltvbGROb2RlTnVtXVsxXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICByZXMgPSByZWN1cnNpdmVGbGF0dGVuKHRyZWUucmlnaHRDaGlsZCwgaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzLCBub2RlTnVtICsgMSwgbGVhZk51bSk7XG4gICAgICAgIHJldHVybiB7IG5vZGVOdW06IHJlcy5ub2RlTnVtLCBsZWFmTnVtOiByZXMubGVhZk51bSB9O1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bU5vZGVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMSArIG51bU5vZGVzKHRyZWUubGVmdENoaWxkKSArIG51bU5vZGVzKHRyZWUucmlnaHRDaGlsZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbnVtTGVhdmVzKHRyZWUpIHtcbiAgICBpZiAodHJlZS5pc0xlYWYpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gbnVtTGVhdmVzKHRyZWUubGVmdENoaWxkKSArIG51bUxlYXZlcyh0cmVlLnJpZ2h0Q2hpbGQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG1ha2VMZWFmQXJyYXkocnBGb3Jlc3QpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICBpZiAocnBGb3Jlc3QubGVuZ3RoID4gMCkge1xuICAgICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBycEZvcmVzdF8xID0gX192YWx1ZXMocnBGb3Jlc3QpLCBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKTsgIXJwRm9yZXN0XzFfMS5kb25lOyBycEZvcmVzdF8xXzEgPSBycEZvcmVzdF8xLm5leHQoKSkge1xuICAgICAgICAgICAgICAgIHZhciB0cmVlID0gcnBGb3Jlc3RfMV8xLnZhbHVlO1xuICAgICAgICAgICAgICAgIG91dHB1dC5wdXNoLmFwcGx5KG91dHB1dCwgX19zcHJlYWQodHJlZS5pbmRpY2VzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGlmIChycEZvcmVzdF8xXzEgJiYgIXJwRm9yZXN0XzFfMS5kb25lICYmIChfYSA9IHJwRm9yZXN0XzEucmV0dXJuKSkgX2EuY2FsbChycEZvcmVzdF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8xKSB0aHJvdyBlXzEuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0cHV0O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFtbLTFdXTtcbiAgICB9XG59XG5leHBvcnRzLm1ha2VMZWFmQXJyYXkgPSBtYWtlTGVhZkFycmF5O1xuZnVuY3Rpb24gc2VsZWN0U2lkZShoeXBlcnBsYW5lLCBvZmZzZXQsIHBvaW50LCByYW5kb20pIHtcbiAgICB2YXIgbWFyZ2luID0gb2Zmc2V0O1xuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgcG9pbnQubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgbWFyZ2luICs9IGh5cGVycGxhbmVbZF0gKiBwb2ludFtkXTtcbiAgICB9XG4gICAgaWYgKG1hcmdpbiA9PT0gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHV0aWxzLnRhdVJhbmRJbnQoMiwgcmFuZG9tKTtcbiAgICAgICAgcmV0dXJuIHNpZGU7XG4gICAgfVxuICAgIGVsc2UgaWYgKG1hcmdpbiA+IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG59XG5mdW5jdGlvbiBzZWFyY2hGbGF0VHJlZShwb2ludCwgdHJlZSwgcmFuZG9tKSB7XG4gICAgdmFyIG5vZGUgPSAwO1xuICAgIHdoaWxlICh0cmVlLmNoaWxkcmVuW25vZGVdWzBdID4gMCkge1xuICAgICAgICB2YXIgc2lkZSA9IHNlbGVjdFNpZGUodHJlZS5oeXBlcnBsYW5lc1tub2RlXSwgdHJlZS5vZmZzZXRzW25vZGVdLCBwb2ludCwgcmFuZG9tKTtcbiAgICAgICAgaWYgKHNpZGUgPT09IDApIHtcbiAgICAgICAgICAgIG5vZGUgPSB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFyIGluZGV4ID0gLTEgKiB0cmVlLmNoaWxkcmVuW25vZGVdWzBdO1xuICAgIHJldHVybiB0cmVlLmluZGljZXNbaW5kZXhdO1xufVxuZXhwb3J0cy5zZWFyY2hGbGF0VHJlZSA9IHNlYXJjaEZsYXRUcmVlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHJlc3VsdC52YWx1ZSk7IH0pLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX2dlbmVyYXRvciA9ICh0aGlzICYmIHRoaXMuX19nZW5lcmF0b3IpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBib2R5KSB7XG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcbiAgICB9XG59O1xudmFyIF9fcmVhZCA9ICh0aGlzICYmIHRoaXMuX19yZWFkKSB8fCBmdW5jdGlvbiAobywgbikge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcbiAgICBpZiAoIW0pIHJldHVybiBvO1xuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xuICAgIHRyeSB7XG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xuICAgICAgICB9XG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9fc3ByZWFkID0gKHRoaXMgJiYgdGhpcy5fX3NwcmVhZCkgfHwgZnVuY3Rpb24gKCkge1xuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbnZhciBfX2ltcG9ydERlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0RGVmYXVsdCkgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgXCJkZWZhdWx0XCI6IG1vZCB9O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBoZWFwID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hlYXBcIikpO1xudmFyIG1hdHJpeCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9tYXRyaXhcIikpO1xudmFyIG5uRGVzY2VudCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9ubl9kZXNjZW50XCIpKTtcbnZhciB0cmVlID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3RyZWVcIikpO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEgPSBfX2ltcG9ydERlZmF1bHQocmVxdWlyZShcIm1sLWxldmVuYmVyZy1tYXJxdWFyZHRcIikpO1xudmFyIFNNT09USF9LX1RPTEVSQU5DRSA9IDFlLTU7XG52YXIgTUlOX0tfRElTVF9TQ0FMRSA9IDFlLTM7XG52YXIgVU1BUCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gVU1BUChwYXJhbXMpIHtcbiAgICAgICAgaWYgKHBhcmFtcyA9PT0gdm9pZCAwKSB7IHBhcmFtcyA9IHt9OyB9XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMubGVhcm5pbmdSYXRlID0gMS4wO1xuICAgICAgICB0aGlzLmxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wO1xuICAgICAgICB0aGlzLm1pbkRpc3QgPSAwLjE7XG4gICAgICAgIHRoaXMubkNvbXBvbmVudHMgPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSAwO1xuICAgICAgICB0aGlzLm5OZWlnaGJvcnMgPSAxNTtcbiAgICAgICAgdGhpcy5uZWdhdGl2ZVNhbXBsZVJhdGUgPSA1O1xuICAgICAgICB0aGlzLnJhbmRvbSA9IE1hdGgucmFuZG9tO1xuICAgICAgICB0aGlzLnJlcHVsc2lvblN0cmVuZ3RoID0gMS4wO1xuICAgICAgICB0aGlzLnNldE9wTWl4UmF0aW8gPSAxLjA7XG4gICAgICAgIHRoaXMuc3ByZWFkID0gMS4wO1xuICAgICAgICB0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSA9IDQuMDtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBcImNhdGVnb3JpY2FsXCI7XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gMC41O1xuICAgICAgICB0aGlzLnRhcmdldE5OZWlnaGJvcnMgPSB0aGlzLm5OZWlnaGJvcnM7XG4gICAgICAgIHRoaXMuZGlzdGFuY2VGbiA9IGV1Y2xpZGVhbjtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMucnBGb3Jlc3QgPSBbXTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSA9IG5ldyBPcHRpbWl6YXRpb25TdGF0ZSgpO1xuICAgICAgICB2YXIgc2V0UGFyYW0gPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICBpZiAocGFyYW1zW2tleV0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBfdGhpc1trZXldID0gcGFyYW1zW2tleV07XG4gICAgICAgIH07XG4gICAgICAgIHNldFBhcmFtKCdkaXN0YW5jZUZuJyk7XG4gICAgICAgIHNldFBhcmFtKCdsZWFybmluZ1JhdGUnKTtcbiAgICAgICAgc2V0UGFyYW0oJ2xvY2FsQ29ubmVjdGl2aXR5Jyk7XG4gICAgICAgIHNldFBhcmFtKCdtaW5EaXN0Jyk7XG4gICAgICAgIHNldFBhcmFtKCduQ29tcG9uZW50cycpO1xuICAgICAgICBzZXRQYXJhbSgnbkVwb2NocycpO1xuICAgICAgICBzZXRQYXJhbSgnbk5laWdoYm9ycycpO1xuICAgICAgICBzZXRQYXJhbSgnbmVnYXRpdmVTYW1wbGVSYXRlJyk7XG4gICAgICAgIHNldFBhcmFtKCdyYW5kb20nKTtcbiAgICAgICAgc2V0UGFyYW0oJ3JlcHVsc2lvblN0cmVuZ3RoJyk7XG4gICAgICAgIHNldFBhcmFtKCdzZXRPcE1peFJhdGlvJyk7XG4gICAgICAgIHNldFBhcmFtKCdzcHJlYWQnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3RyYW5zZm9ybVF1ZXVlU2l6ZScpO1xuICAgIH1cbiAgICBVTUFQLnByb3RvdHlwZS5maXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVGaXQoWCk7XG4gICAgICAgIHRoaXMub3B0aW1pemVMYXlvdXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZml0QXN5bmMgPSBmdW5jdGlvbiAoWCwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHsgY2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKF9hLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCwgdGhpcy5vcHRpbWl6ZUxheW91dEFzeW5jKGNhbGxiYWNrKV07XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgICAgIF9hLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgdGhpcy5lbWJlZGRpbmddO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFN1cGVydmlzZWRQcm9qZWN0aW9uID0gZnVuY3Rpb24gKFksIHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zID09PSB2b2lkIDApIHsgcGFyYW1zID0ge307IH1cbiAgICAgICAgdGhpcy5ZID0gWTtcbiAgICAgICAgdGhpcy50YXJnZXRNZXRyaWMgPSBwYXJhbXMudGFyZ2V0TWV0cmljIHx8IHRoaXMudGFyZ2V0TWV0cmljO1xuICAgICAgICB0aGlzLnRhcmdldFdlaWdodCA9IHBhcmFtcy50YXJnZXRXZWlnaHQgfHwgdGhpcy50YXJnZXRXZWlnaHQ7XG4gICAgICAgIHRoaXMudGFyZ2V0Tk5laWdoYm9ycyA9IHBhcmFtcy50YXJnZXROTmVpZ2hib3JzIHx8IHRoaXMudGFyZ2V0Tk5laWdoYm9ycztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNldFByZWNvbXB1dGVkS05OID0gZnVuY3Rpb24gKGtubkluZGljZXMsIGtubkRpc3RhbmNlcykge1xuICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5JbmRpY2VzO1xuICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtubkRpc3RhbmNlcztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVGaXQgPSBmdW5jdGlvbiAoWCkge1xuICAgICAgICBpZiAoWC5sZW5ndGggPD0gdGhpcy5uTmVpZ2hib3JzKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgZW5vdWdoIGRhdGEgcG9pbnRzIChcIiArIFgubGVuZ3RoICsgXCIpIHRvIGNyZWF0ZSBuTmVpZ2hib3JzOiBcIiArIHRoaXMubk5laWdoYm9ycyArIFwiLiAgQWRkIG1vcmUgZGF0YSBwb2ludHMgb3IgYWRqdXN0IHRoZSBjb25maWd1cmF0aW9uLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5YID09PSBYICYmIHRoaXMuaXNJbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuWCA9IFg7XG4gICAgICAgIGlmICghdGhpcy5rbm5JbmRpY2VzICYmICF0aGlzLmtubkRpc3RhbmNlcykge1xuICAgICAgICAgICAgdmFyIGtublJlc3VsdHMgPSB0aGlzLm5lYXJlc3ROZWlnaGJvcnMoWCk7XG4gICAgICAgICAgICB0aGlzLmtubkluZGljZXMgPSBrbm5SZXN1bHRzLmtubkluZGljZXM7XG4gICAgICAgICAgICB0aGlzLmtubkRpc3RhbmNlcyA9IGtublJlc3VsdHMua25uRGlzdGFuY2VzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmZ1enp5U2ltcGxpY2lhbFNldChYLCB0aGlzLm5OZWlnaGJvcnMsIHRoaXMuc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIHRoaXMubWFrZVNlYXJjaEZucygpO1xuICAgICAgICB0aGlzLnNlYXJjaEdyYXBoID0gdGhpcy5tYWtlU2VhcmNoR3JhcGgoWCk7XG4gICAgICAgIHRoaXMucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24oKTtcbiAgICAgICAgdmFyIF9hID0gdGhpcy5pbml0aWFsaXplU2ltcGxpY2lhbFNldEVtYmVkZGluZygpLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5oZWFkID0gaGVhZDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS50YWlsID0gdGFpbDtcbiAgICAgICAgdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJTYW1wbGUgPSBlcG9jaHNQZXJTYW1wbGU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGltaXphdGlvbigpO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hGbnMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6YXRpb25zKHRoaXMuZGlzdGFuY2VGbiksIGluaXRGcm9tVHJlZSA9IF9hLmluaXRGcm9tVHJlZSwgaW5pdEZyb21SYW5kb20gPSBfYS5pbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVRyZWUgPSBpbml0RnJvbVRyZWU7XG4gICAgICAgIHRoaXMuaW5pdEZyb21SYW5kb20gPSBpbml0RnJvbVJhbmRvbTtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBubkRlc2NlbnQubWFrZUluaXRpYWxpemVkTk5TZWFyY2godGhpcy5kaXN0YW5jZUZuKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VTZWFyY2hHcmFwaCA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBrbm5JbmRpY2VzID0gdGhpcy5rbm5JbmRpY2VzO1xuICAgICAgICB2YXIga25uRGlzdGFuY2VzID0gdGhpcy5rbm5EaXN0YW5jZXM7XG4gICAgICAgIHZhciBkaW1zID0gW1gubGVuZ3RoLCBYLmxlbmd0aF07XG4gICAgICAgIHZhciBzZWFyY2hHcmFwaCA9IG5ldyBtYXRyaXguU3BhcnNlTWF0cml4KFtdLCBbXSwgW10sIGRpbXMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtubkluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBrbm4gPSBrbm5JbmRpY2VzW2ldO1xuICAgICAgICAgICAgdmFyIGRpc3RhbmNlcyA9IGtubkRpc3RhbmNlc1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwga25uLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5laWdoYm9yID0ga25uW2pdO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0YW5jZSA9IGRpc3RhbmNlc1tqXTtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaEdyYXBoLnNldChpLCBuZWlnaGJvciwgZGlzdGFuY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzZWFyY2hHcmFwaCk7XG4gICAgICAgIHJldHVybiBtYXRyaXgubWF4aW11bShzZWFyY2hHcmFwaCwgdHJhbnNwb3NlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnRyYW5zZm9ybSA9IGZ1bmN0aW9uICh0b1RyYW5zZm9ybSkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcmF3RGF0YSA9IHRoaXMuWDtcbiAgICAgICAgaWYgKHJhd0RhdGEgPT09IHVuZGVmaW5lZCB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBkYXRhIGhhcyBiZWVuIGZpdC4nKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbk5laWdoYm9ycyA9IE1hdGguZmxvb3IodGhpcy5uTmVpZ2hib3JzICogdGhpcy50cmFuc2Zvcm1RdWV1ZVNpemUpO1xuICAgICAgICBuTmVpZ2hib3JzID0gTWF0aC5taW4ocmF3RGF0YS5sZW5ndGgsIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgaW5pdCA9IG5uRGVzY2VudC5pbml0aWFsaXplU2VhcmNoKHRoaXMucnBGb3Jlc3QsIHJhd0RhdGEsIHRvVHJhbnNmb3JtLCBuTmVpZ2hib3JzLCB0aGlzLmluaXRGcm9tUmFuZG9tLCB0aGlzLmluaXRGcm9tVHJlZSwgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5zZWFyY2gocmF3RGF0YSwgdGhpcy5zZWFyY2hHcmFwaCwgaW5pdCwgdG9UcmFuc2Zvcm0pO1xuICAgICAgICB2YXIgX2EgPSBoZWFwLmRlaGVhcFNvcnQocmVzdWx0KSwgaW5kaWNlcyA9IF9hLmluZGljZXMsIGRpc3RhbmNlcyA9IF9hLndlaWdodHM7XG4gICAgICAgIGluZGljZXMgPSBpbmRpY2VzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5zbGljZSgwLCBfdGhpcy5uTmVpZ2hib3JzKTsgfSk7XG4gICAgICAgIGRpc3RhbmNlcyA9IGRpc3RhbmNlcy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHguc2xpY2UoMCwgX3RoaXMubk5laWdoYm9ycyk7IH0pO1xuICAgICAgICB2YXIgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSA9IE1hdGgubWF4KDAsIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgLSAxKTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5zbW9vdGhLTk5EaXN0YW5jZShkaXN0YW5jZXMsIHRoaXMubk5laWdoYm9ycywgYWRqdXN0ZWRMb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9iLnNpZ21hcywgcmhvcyA9IF9iLnJob3M7XG4gICAgICAgIHZhciBfYyA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoaW5kaWNlcywgZGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Mucm93cywgY29scyA9IF9jLmNvbHMsIHZhbHMgPSBfYy52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFt0b1RyYW5zZm9ybS5sZW5ndGgsIHJhd0RhdGEubGVuZ3RoXTtcbiAgICAgICAgdmFyIGdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciBub3JtZWQgPSBtYXRyaXgubm9ybWFsaXplKGdyYXBoLCBcImwxXCIpO1xuICAgICAgICB2YXIgY3NyTWF0cml4ID0gbWF0cml4LmdldENTUihub3JtZWQpO1xuICAgICAgICB2YXIgblBvaW50cyA9IHRvVHJhbnNmb3JtLmxlbmd0aDtcbiAgICAgICAgdmFyIGVJbmRpY2VzID0gdXRpbHMucmVzaGFwZTJkKGNzck1hdHJpeC5pbmRpY2VzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgZVdlaWdodHMgPSB1dGlscy5yZXNoYXBlMmQoY3NyTWF0cml4LnZhbHVlcywgblBvaW50cywgdGhpcy5uTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IGluaXRUcmFuc2Zvcm0oZUluZGljZXMsIGVXZWlnaHRzLCB0aGlzLmVtYmVkZGluZyk7XG4gICAgICAgIHZhciBuRXBvY2hzID0gdGhpcy5uRXBvY2hzXG4gICAgICAgICAgICA/IHRoaXMubkVwb2NocyAvIDNcbiAgICAgICAgICAgIDogZ3JhcGgublJvd3MgPD0gMTAwMDBcbiAgICAgICAgICAgICAgICA/IDEwMFxuICAgICAgICAgICAgICAgIDogMzA7XG4gICAgICAgIHZhciBncmFwaE1heCA9IGdyYXBoXG4gICAgICAgICAgICAuZ2V0VmFsdWVzKClcbiAgICAgICAgICAgIC5yZWR1Y2UoZnVuY3Rpb24gKG1heCwgdmFsKSB7IHJldHVybiAodmFsID4gbWF4ID8gdmFsIDogbWF4KTsgfSwgMCk7XG4gICAgICAgIGdyYXBoID0gZ3JhcGgubWFwKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzID8gMCA6IHZhbHVlKTsgfSk7XG4gICAgICAgIGdyYXBoID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGdyYXBoKTtcbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZShncmFwaC5nZXRWYWx1ZXMoKSwgbkVwb2Nocyk7XG4gICAgICAgIHZhciBoZWFkID0gZ3JhcGguZ2V0Um93cygpO1xuICAgICAgICB2YXIgdGFpbCA9IGdyYXBoLmdldENvbHMoKTtcbiAgICAgICAgdGhpcy5hc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMoe1xuICAgICAgICAgICAgaGVhZEVtYmVkZGluZzogZW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGhpcy5lbWJlZGRpbmcsXG4gICAgICAgICAgICBoZWFkOiBoZWFkLFxuICAgICAgICAgICAgdGFpbDogdGFpbCxcbiAgICAgICAgICAgIGN1cnJlbnRFcG9jaDogMCxcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IGdyYXBoLmdldERpbXMoKVsxXSxcbiAgICAgICAgICAgIGVwb2Noc1BlclNhbXBsZTogZXBvY2hzUGVyU2FtcGxlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5wcmVwYXJlRm9yT3B0aW1pemF0aW9uTG9vcCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpbWl6ZUxheW91dCgpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUucHJvY2Vzc0dyYXBoRm9yU3VwZXJ2aXNlZFByb2plY3Rpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIFkgPSBfYS5ZLCBYID0gX2EuWDtcbiAgICAgICAgaWYgKFkpIHtcbiAgICAgICAgICAgIGlmIChZLmxlbmd0aCAhPT0gWC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0xlbmd0aCBvZiBYIGFuZCB5IG11c3QgYmUgZXF1YWwnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldE1ldHJpYyA9PT0gXCJjYXRlZ29yaWNhbFwiKSB7XG4gICAgICAgICAgICAgICAgdmFyIGx0ID0gdGhpcy50YXJnZXRXZWlnaHQgPCAxLjA7XG4gICAgICAgICAgICAgICAgdmFyIGZhckRpc3QgPSBsdCA/IDIuNSAqICgxLjAgLyAoMS4wIC0gdGhpcy50YXJnZXRXZWlnaHQpKSA6IDEuMGUxMjtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoID0gdGhpcy5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24odGhpcy5ncmFwaCwgWSwgZmFyRGlzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnN0ZXAgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBjdXJyZW50RXBvY2ggPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgaWYgKGN1cnJlbnRFcG9jaCA8IHRoaXMuZ2V0TkVwb2NocygpKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmdldEVtYmVkZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubmVhcmVzdE5laWdoYm9ycyA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIGRpc3RhbmNlRm4gPSBfYS5kaXN0YW5jZUZuLCBuTmVpZ2hib3JzID0gX2Eubk5laWdoYm9ycztcbiAgICAgICAgdmFyIGxvZzIgPSBmdW5jdGlvbiAobikgeyByZXR1cm4gTWF0aC5sb2cobikgLyBNYXRoLmxvZygyKTsgfTtcbiAgICAgICAgdmFyIG1ldHJpY05ORGVzY2VudCA9IG5uRGVzY2VudC5tYWtlTk5EZXNjZW50KGRpc3RhbmNlRm4sIHRoaXMucmFuZG9tKTtcbiAgICAgICAgdmFyIHJvdW5kID0gZnVuY3Rpb24gKG4pIHtcbiAgICAgICAgICAgIHJldHVybiBuID09PSAwLjUgPyAwIDogTWF0aC5yb3VuZChuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdmFyIG5UcmVlcyA9IDUgKyBNYXRoLmZsb29yKHJvdW5kKE1hdGgucG93KFgubGVuZ3RoLCAwLjUpIC8gMjAuMCkpO1xuICAgICAgICB2YXIgbkl0ZXJzID0gTWF0aC5tYXgoNSwgTWF0aC5mbG9vcihNYXRoLnJvdW5kKGxvZzIoWC5sZW5ndGgpKSkpO1xuICAgICAgICB0aGlzLnJwRm9yZXN0ID0gdHJlZS5tYWtlRm9yZXN0KFgsIG5OZWlnaGJvcnMsIG5UcmVlcywgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgbGVhZkFycmF5ID0gdHJlZS5tYWtlTGVhZkFycmF5KHRoaXMucnBGb3Jlc3QpO1xuICAgICAgICB2YXIgX2IgPSBtZXRyaWNOTkRlc2NlbnQoWCwgbGVhZkFycmF5LCBuTmVpZ2hib3JzLCBuSXRlcnMpLCBpbmRpY2VzID0gX2IuaW5kaWNlcywgd2VpZ2h0cyA9IF9iLndlaWdodHM7XG4gICAgICAgIHJldHVybiB7IGtubkluZGljZXM6IGluZGljZXMsIGtubkRpc3RhbmNlczogd2VpZ2h0cyB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZnV6enlTaW1wbGljaWFsU2V0ID0gZnVuY3Rpb24gKFgsIG5OZWlnaGJvcnMsIHNldE9wTWl4UmF0aW8pIHtcbiAgICAgICAgaWYgKHNldE9wTWl4UmF0aW8gPT09IHZvaWQgMCkgeyBzZXRPcE1peFJhdGlvID0gMS4wOyB9XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIF9iID0gX2Eua25uSW5kaWNlcywga25uSW5kaWNlcyA9IF9iID09PSB2b2lkIDAgPyBbXSA6IF9iLCBfYyA9IF9hLmtubkRpc3RhbmNlcywga25uRGlzdGFuY2VzID0gX2MgPT09IHZvaWQgMCA/IFtdIDogX2MsIGxvY2FsQ29ubmVjdGl2aXR5ID0gX2EubG9jYWxDb25uZWN0aXZpdHk7XG4gICAgICAgIHZhciBfZCA9IHRoaXMuc21vb3RoS05ORGlzdGFuY2Uoa25uRGlzdGFuY2VzLCBuTmVpZ2hib3JzLCBsb2NhbENvbm5lY3Rpdml0eSksIHNpZ21hcyA9IF9kLnNpZ21hcywgcmhvcyA9IF9kLnJob3M7XG4gICAgICAgIHZhciBfZSA9IHRoaXMuY29tcHV0ZU1lbWJlcnNoaXBTdHJlbmd0aHMoa25uSW5kaWNlcywga25uRGlzdGFuY2VzLCBzaWdtYXMsIHJob3MpLCByb3dzID0gX2Uucm93cywgY29scyA9IF9lLmNvbHMsIHZhbHMgPSBfZS52YWxzO1xuICAgICAgICB2YXIgc2l6ZSA9IFtYLmxlbmd0aCwgWC5sZW5ndGhdO1xuICAgICAgICB2YXIgc3BhcnNlTWF0cml4ID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgocm93cywgY29scywgdmFscywgc2l6ZSk7XG4gICAgICAgIHZhciB0cmFuc3Bvc2UgPSBtYXRyaXgudHJhbnNwb3NlKHNwYXJzZU1hdHJpeCk7XG4gICAgICAgIHZhciBwcm9kTWF0cml4ID0gbWF0cml4LnBhaXJ3aXNlTXVsdGlwbHkoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpO1xuICAgICAgICB2YXIgYSA9IG1hdHJpeC5zdWJ0cmFjdChtYXRyaXguYWRkKHNwYXJzZU1hdHJpeCwgdHJhbnNwb3NlKSwgcHJvZE1hdHJpeCk7XG4gICAgICAgIHZhciBiID0gbWF0cml4Lm11bHRpcGx5U2NhbGFyKGEsIHNldE9wTWl4UmF0aW8pO1xuICAgICAgICB2YXIgYyA9IG1hdHJpeC5tdWx0aXBseVNjYWxhcihwcm9kTWF0cml4LCAxLjAgLSBzZXRPcE1peFJhdGlvKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IG1hdHJpeC5hZGQoYiwgYyk7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24gPSBmdW5jdGlvbiAoc2ltcGxpY2lhbFNldCwgdGFyZ2V0LCBmYXJEaXN0LCB1bmtub3duRGlzdCkge1xuICAgICAgICBpZiAodW5rbm93bkRpc3QgPT09IHZvaWQgMCkgeyB1bmtub3duRGlzdCA9IDEuMDsgfVxuICAgICAgICB2YXIgaW50ZXJzZWN0aW9uID0gZmFzdEludGVyc2VjdGlvbihzaW1wbGljaWFsU2V0LCB0YXJnZXQsIHVua25vd25EaXN0LCBmYXJEaXN0KTtcbiAgICAgICAgaW50ZXJzZWN0aW9uID0gbWF0cml4LmVsaW1pbmF0ZVplcm9zKGludGVyc2VjdGlvbik7XG4gICAgICAgIHJldHVybiByZXNldExvY2FsQ29ubmVjdGl2aXR5KGludGVyc2VjdGlvbik7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5zbW9vdGhLTk5EaXN0YW5jZSA9IGZ1bmN0aW9uIChkaXN0YW5jZXMsIGssIGxvY2FsQ29ubmVjdGl2aXR5LCBuSXRlciwgYmFuZHdpZHRoKSB7XG4gICAgICAgIGlmIChsb2NhbENvbm5lY3Rpdml0eSA9PT0gdm9pZCAwKSB7IGxvY2FsQ29ubmVjdGl2aXR5ID0gMS4wOyB9XG4gICAgICAgIGlmIChuSXRlciA9PT0gdm9pZCAwKSB7IG5JdGVyID0gNjQ7IH1cbiAgICAgICAgaWYgKGJhbmR3aWR0aCA9PT0gdm9pZCAwKSB7IGJhbmR3aWR0aCA9IDEuMDsgfVxuICAgICAgICB2YXIgdGFyZ2V0ID0gKE1hdGgubG9nKGspIC8gTWF0aC5sb2coMikpICogYmFuZHdpZHRoO1xuICAgICAgICB2YXIgcmhvID0gdXRpbHMuemVyb3MoZGlzdGFuY2VzLmxlbmd0aCk7XG4gICAgICAgIHZhciByZXN1bHQgPSB1dGlscy56ZXJvcyhkaXN0YW5jZXMubGVuZ3RoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXN0YW5jZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBsbyA9IDAuMDtcbiAgICAgICAgICAgIHZhciBoaSA9IEluZmluaXR5O1xuICAgICAgICAgICAgdmFyIG1pZCA9IDEuMDtcbiAgICAgICAgICAgIHZhciBpdGhEaXN0YW5jZXMgPSBkaXN0YW5jZXNbaV07XG4gICAgICAgICAgICB2YXIgbm9uWmVyb0Rpc3RzID0gaXRoRGlzdGFuY2VzLmZpbHRlcihmdW5jdGlvbiAoZCkgeyByZXR1cm4gZCA+IDAuMDsgfSk7XG4gICAgICAgICAgICBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+PSBsb2NhbENvbm5lY3Rpdml0eSkge1xuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IE1hdGguZmxvb3IobG9jYWxDb25uZWN0aXZpdHkpO1xuICAgICAgICAgICAgICAgIHZhciBpbnRlcnBvbGF0aW9uID0gbG9jYWxDb25uZWN0aXZpdHkgLSBpbmRleDtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJob1tpXSA9IG5vblplcm9EaXN0c1tpbmRleCAtIDFdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW50ZXJwb2xhdGlvbiA+IFNNT09USF9LX1RPTEVSQU5DRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmhvW2ldICs9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJwb2xhdGlvbiAqIChub25aZXJvRGlzdHNbaW5kZXhdIC0gbm9uWmVyb0Rpc3RzW2luZGV4IC0gMV0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByaG9baV0gPSBpbnRlcnBvbGF0aW9uICogbm9uWmVyb0Rpc3RzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKG5vblplcm9EaXN0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmhvW2ldID0gdXRpbHMubWF4KG5vblplcm9EaXN0cyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5JdGVyOyBuKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMTsgaiA8IGRpc3RhbmNlc1tpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlc1tpXVtqXSAtIHJob1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGQgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc3VtICs9IE1hdGguZXhwKC0oZCAvIG1pZCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHN1bSArPSAxLjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHBzdW0gLSB0YXJnZXQpIDwgU01PT1RIX0tfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocHN1bSA+IHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBoaSA9IG1pZDtcbiAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgbG8gPSBtaWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoaSA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1pZCAqPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkID0gKGxvICsgaGkpIC8gMi4wO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gbWlkO1xuICAgICAgICAgICAgaWYgKHJob1tpXSA+IDAuMCkge1xuICAgICAgICAgICAgICAgIHZhciBtZWFuSXRoRGlzdGFuY2VzID0gdXRpbHMubWVhbihpdGhEaXN0YW5jZXMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHRbaV0gPCBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBNSU5fS19ESVNUX1NDQUxFICogbWVhbkl0aERpc3RhbmNlcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbWVhbkRpc3RhbmNlcyA9IHV0aWxzLm1lYW4oZGlzdGFuY2VzLm1hcCh1dGlscy5tZWFuKSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuRGlzdGFuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBzaWdtYXM6IHJlc3VsdCwgcmhvczogcmhvIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyA9IGZ1bmN0aW9uIChrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMsIHNpZ21hcywgcmhvcykge1xuICAgICAgICB2YXIgblNhbXBsZXMgPSBrbm5JbmRpY2VzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5OZWlnaGJvcnMgPSBrbm5JbmRpY2VzWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIHJvd3MgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgY29scyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIHZhciB2YWxzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuU2FtcGxlczsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IG5OZWlnaGJvcnM7IGorKykge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSAwO1xuICAgICAgICAgICAgICAgIGlmIChrbm5JbmRpY2VzW2ldW2pdID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IGkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gMC4wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldIDw9IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAxLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmV4cCgtKChrbm5EaXN0YW5jZXNbaV1bal0gLSByaG9zW2ldKSAvIHNpZ21hc1tpXSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByb3dzW2kgKiBuTmVpZ2hib3JzICsgal0gPSBpO1xuICAgICAgICAgICAgICAgIGNvbHNbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGtubkluZGljZXNbaV1bal07XG4gICAgICAgICAgICAgICAgdmFsc1tpICogbk5laWdoYm9ycyArIGpdID0gdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHJvd3M6IHJvd3MsIGNvbHM6IGNvbHMsIHZhbHM6IHZhbHMgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgbkVwb2NocyA9IHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB2YXIgbkNvbXBvbmVudHMgPSB0aGlzLm5Db21wb25lbnRzO1xuICAgICAgICB2YXIgZ3JhcGhWYWx1ZXMgPSB0aGlzLmdyYXBoLmdldFZhbHVlcygpO1xuICAgICAgICB2YXIgZ3JhcGhNYXggPSAwO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyYXBoVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBncmFwaFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChncmFwaE1heCA8IGdyYXBoVmFsdWVzW2ldKSB7XG4gICAgICAgICAgICAgICAgZ3JhcGhNYXggPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA8IGdyYXBoTWF4IC8gbkVwb2Nocykge1xuICAgICAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB1dGlscy56ZXJvcyhncmFwaC5uUm93cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB1dGlscy56ZXJvcyhuQ29tcG9uZW50cykubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdXRpbHMudGF1UmFuZChfdGhpcy5yYW5kb20pICogMjAgKyAtMTA7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciB3ZWlnaHRzID0gW107XG4gICAgICAgIHZhciBoZWFkID0gW107XG4gICAgICAgIHZhciB0YWlsID0gW107XG4gICAgICAgIHZhciByb3dDb2xWYWx1ZXMgPSBncmFwaC5nZXRBbGwoKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dDb2xWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBlbnRyeSA9IHJvd0NvbFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHdlaWdodHMucHVzaChlbnRyeS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGFpbC5wdXNoKGVudHJ5LnJvdyk7XG4gICAgICAgICAgICAgICAgaGVhZC5wdXNoKGVudHJ5LmNvbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVwb2Noc1BlclNhbXBsZSA9IHRoaXMubWFrZUVwb2Noc1BlclNhbXBsZSh3ZWlnaHRzLCBuRXBvY2hzKTtcbiAgICAgICAgcmV0dXJuIHsgaGVhZDogaGVhZCwgdGFpbDogdGFpbCwgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUgfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm1ha2VFcG9jaHNQZXJTYW1wbGUgPSBmdW5jdGlvbiAod2VpZ2h0cywgbkVwb2Nocykge1xuICAgICAgICB2YXIgcmVzdWx0ID0gdXRpbHMuZmlsbGVkKHdlaWdodHMubGVuZ3RoLCAtMS4wKTtcbiAgICAgICAgdmFyIG1heCA9IHV0aWxzLm1heCh3ZWlnaHRzKTtcbiAgICAgICAgdmFyIG5TYW1wbGVzID0gd2VpZ2h0cy5tYXAoZnVuY3Rpb24gKHcpIHsgcmV0dXJuICh3IC8gbWF4KSAqIG5FcG9jaHM7IH0pO1xuICAgICAgICBuU2FtcGxlcy5mb3JFYWNoKGZ1bmN0aW9uIChuLCBpKSB7XG4gICAgICAgICAgICBpZiAobiA+IDApXG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gbkVwb2NocyAvIG5TYW1wbGVzW2ldO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIHN0YXRlKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX2EgPSB0aGlzLCByZXB1bHNpb25TdHJlbmd0aCA9IF9hLnJlcHVsc2lvblN0cmVuZ3RoLCBsZWFybmluZ1JhdGUgPSBfYS5sZWFybmluZ1JhdGUsIG5lZ2F0aXZlU2FtcGxlUmF0ZSA9IF9hLm5lZ2F0aXZlU2FtcGxlUmF0ZTtcbiAgICAgICAgdmFyIF9iID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgZXBvY2hzUGVyU2FtcGxlID0gX2IuZXBvY2hzUGVyU2FtcGxlLCBoZWFkRW1iZWRkaW5nID0gX2IuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IF9iLnRhaWxFbWJlZGRpbmc7XG4gICAgICAgIHZhciBkaW0gPSBoZWFkRW1iZWRkaW5nWzBdLmxlbmd0aDtcbiAgICAgICAgdmFyIG1vdmVPdGhlciA9IGhlYWRFbWJlZGRpbmcubGVuZ3RoID09PSB0YWlsRW1iZWRkaW5nLmxlbmd0aDtcbiAgICAgICAgdmFyIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gZXBvY2hzUGVyU2FtcGxlLm1hcChmdW5jdGlvbiAoZSkgeyByZXR1cm4gZSAvIG5lZ2F0aXZlU2FtcGxlUmF0ZTsgfSk7XG4gICAgICAgIHZhciBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gX19zcHJlYWQoZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUpO1xuICAgICAgICB2YXIgZXBvY2hPZk5leHRTYW1wbGUgPSBfX3NwcmVhZChlcG9jaHNQZXJTYW1wbGUpO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZTogZXBvY2hPZk5leHRTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlOiBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGU6IGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlLFxuICAgICAgICAgICAgbW92ZU90aGVyOiBtb3ZlT3RoZXIsXG4gICAgICAgICAgICBpbml0aWFsQWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGFscGhhOiBsZWFybmluZ1JhdGUsXG4gICAgICAgICAgICBnYW1tYTogcmVwdWxzaW9uU3RyZW5ndGgsXG4gICAgICAgICAgICBkaW06IGRpbSxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5pbml0aWFsaXplT3B0aW1pemF0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgaGVhZEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgdGFpbEVtYmVkZGluZyA9IHRoaXMuZW1iZWRkaW5nO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBoZWFkID0gX2EuaGVhZCwgdGFpbCA9IF9hLnRhaWwsIGVwb2Noc1BlclNhbXBsZSA9IF9hLmVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdmFyIG5FcG9jaHMgPSB0aGlzLmdldE5FcG9jaHMoKTtcbiAgICAgICAgdmFyIG5WZXJ0aWNlcyA9IHRoaXMuZ3JhcGgubkNvbHM7XG4gICAgICAgIHZhciBfYiA9IGZpbmRBQlBhcmFtcyh0aGlzLnNwcmVhZCwgdGhpcy5taW5EaXN0KSwgYSA9IF9iLmEsIGIgPSBfYi5iO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBoZWFkRW1iZWRkaW5nOiBoZWFkRW1iZWRkaW5nLFxuICAgICAgICAgICAgdGFpbEVtYmVkZGluZzogdGFpbEVtYmVkZGluZyxcbiAgICAgICAgICAgIGhlYWQ6IGhlYWQsXG4gICAgICAgICAgICB0YWlsOiB0YWlsLFxuICAgICAgICAgICAgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgICAgICBhOiBhLFxuICAgICAgICAgICAgYjogYixcbiAgICAgICAgICAgIG5FcG9jaHM6IG5FcG9jaHMsXG4gICAgICAgICAgICBuVmVydGljZXM6IG5WZXJ0aWNlcyxcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dFN0ZXAgPSBmdW5jdGlvbiAobikge1xuICAgICAgICB2YXIgb3B0aW1pemF0aW9uU3RhdGUgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlO1xuICAgICAgICB2YXIgaGVhZCA9IG9wdGltaXphdGlvblN0YXRlLmhlYWQsIHRhaWwgPSBvcHRpbWl6YXRpb25TdGF0ZS50YWlsLCBoZWFkRW1iZWRkaW5nID0gb3B0aW1pemF0aW9uU3RhdGUuaGVhZEVtYmVkZGluZywgdGFpbEVtYmVkZGluZyA9IG9wdGltaXphdGlvblN0YXRlLnRhaWxFbWJlZGRpbmcsIGVwb2Noc1BlclNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZSwgZXBvY2hPZk5leHRTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaE9mTmV4dFNhbXBsZSwgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsIG1vdmVPdGhlciA9IG9wdGltaXphdGlvblN0YXRlLm1vdmVPdGhlciwgaW5pdGlhbEFscGhhID0gb3B0aW1pemF0aW9uU3RhdGUuaW5pdGlhbEFscGhhLCBhbHBoYSA9IG9wdGltaXphdGlvblN0YXRlLmFscGhhLCBnYW1tYSA9IG9wdGltaXphdGlvblN0YXRlLmdhbW1hLCBhID0gb3B0aW1pemF0aW9uU3RhdGUuYSwgYiA9IG9wdGltaXphdGlvblN0YXRlLmIsIGRpbSA9IG9wdGltaXphdGlvblN0YXRlLmRpbSwgbkVwb2NocyA9IG9wdGltaXphdGlvblN0YXRlLm5FcG9jaHMsIG5WZXJ0aWNlcyA9IG9wdGltaXphdGlvblN0YXRlLm5WZXJ0aWNlcztcbiAgICAgICAgdmFyIGNsaXBWYWx1ZSA9IDQuMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcG9jaHNQZXJTYW1wbGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlcG9jaE9mTmV4dFNhbXBsZVtpXSA+IG4pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBqID0gaGVhZFtpXTtcbiAgICAgICAgICAgIHZhciBrID0gdGFpbFtpXTtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gaGVhZEVtYmVkZGluZ1tqXTtcbiAgICAgICAgICAgIHZhciBvdGhlciA9IHRhaWxFbWJlZGRpbmdba107XG4gICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWQgPSByRGlzdChjdXJyZW50LCBvdGhlcik7XG4gICAgICAgICAgICB2YXIgZ3JhZENvZWZmID0gMDtcbiAgICAgICAgICAgIGlmIChkaXN0U3F1YXJlZCA+IDApIHtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgPSAtMi4wICogYSAqIGIgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYiAtIDEuMCk7XG4gICAgICAgICAgICAgICAgZ3JhZENvZWZmIC89IGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZCwgYikgKyAxLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGdyYWREID0gY2xpcChncmFkQ29lZmYgKiAoY3VycmVudFtkXSAtIG90aGVyW2RdKSwgY2xpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICBjdXJyZW50W2RdICs9IGdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgaWYgKG1vdmVPdGhlcikge1xuICAgICAgICAgICAgICAgICAgICBvdGhlcltkXSArPSAtZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlcG9jaE9mTmV4dFNhbXBsZVtpXSArPSBlcG9jaHNQZXJTYW1wbGVbaV07XG4gICAgICAgICAgICB2YXIgbk5lZ1NhbXBsZXMgPSBNYXRoLmZsb29yKChuIC0gZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZVtpXSkgLyBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXSk7XG4gICAgICAgICAgICBmb3IgKHZhciBwID0gMDsgcCA8IG5OZWdTYW1wbGVzOyBwKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga18xID0gdXRpbHMudGF1UmFuZEludChuVmVydGljZXMsIHRoaXMucmFuZG9tKTtcbiAgICAgICAgICAgICAgICB2YXIgb3RoZXJfMSA9IHRhaWxFbWJlZGRpbmdba18xXTtcbiAgICAgICAgICAgICAgICB2YXIgZGlzdFNxdWFyZWRfMSA9IHJEaXN0KGN1cnJlbnQsIG90aGVyXzEpO1xuICAgICAgICAgICAgICAgIHZhciBncmFkQ29lZmZfMSA9IDAuMDtcbiAgICAgICAgICAgICAgICBpZiAoZGlzdFNxdWFyZWRfMSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICBncmFkQ29lZmZfMSA9IDIuMCAqIGdhbW1hICogYjtcbiAgICAgICAgICAgICAgICAgICAgZ3JhZENvZWZmXzEgLz1cbiAgICAgICAgICAgICAgICAgICAgICAgICgwLjAwMSArIGRpc3RTcXVhcmVkXzEpICogKGEgKiBNYXRoLnBvdyhkaXN0U3F1YXJlZF8xLCBiKSArIDEpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChqID09PSBrXzEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGdyYWREID0gNC4wO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZ3JhZENvZWZmXzEgPiAwLjApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyYWREID0gY2xpcChncmFkQ29lZmZfMSAqIChjdXJyZW50W2RdIC0gb3RoZXJfMVtkXSksIGNsaXBWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFtkXSArPSBncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGVbaV0gKz0gbk5lZ1NhbXBsZXMgKiBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZVtpXTtcbiAgICAgICAgfVxuICAgICAgICBvcHRpbWl6YXRpb25TdGF0ZS5hbHBoYSA9IGluaXRpYWxBbHBoYSAqICgxLjAgLSBuIC8gbkVwb2Nocyk7XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaCArPSAxO1xuICAgICAgICByZXR1cm4gaGVhZEVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm9wdGltaXplTGF5b3V0QXN5bmMgPSBmdW5jdGlvbiAoZXBvY2hDYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICBpZiAoZXBvY2hDYWxsYmFjayA9PT0gdm9pZCAwKSB7IGVwb2NoQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0cnVlOyB9OyB9XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICB2YXIgc3RlcCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9fYXdhaXRlcihfdGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2EsIG5FcG9jaHMsIGN1cnJlbnRFcG9jaCwgZXBvY2hDb21wbGV0ZWQsIHNob3VsZFN0b3AsIGlzRmluaXNoZWQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYikge1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBuRXBvY2hzID0gX2EubkVwb2NocywgY3VycmVudEVwb2NoID0gX2EuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZXBvY2hDb21wbGV0ZWQgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZFN0b3AgPSBlcG9jaENhbGxiYWNrKGVwb2NoQ29tcGxldGVkKSA9PT0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkID0gZXBvY2hDb21wbGV0ZWQgPT09IG5FcG9jaHM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZFN0b3AgJiYgIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgcmV0dXJuIHN0ZXAoKTsgfSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzIsIHJlc29sdmUoaXNGaW5pc2hlZCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbMl07XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTsgfTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RlcCgpOyB9LCAwKTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5vcHRpbWl6ZUxheW91dCA9IGZ1bmN0aW9uIChlcG9jaENhbGxiYWNrKSB7XG4gICAgICAgIGlmIChlcG9jaENhbGxiYWNrID09PSB2b2lkIDApIHsgZXBvY2hDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07IH1cbiAgICAgICAgdmFyIGlzRmluaXNoZWQgPSBmYWxzZTtcbiAgICAgICAgdmFyIGVtYmVkZGluZyA9IFtdO1xuICAgICAgICB3aGlsZSAoIWlzRmluaXNoZWQpIHtcbiAgICAgICAgICAgIHZhciBfYSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIG5FcG9jaHMgPSBfYS5uRXBvY2hzLCBjdXJyZW50RXBvY2ggPSBfYS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0aGlzLm9wdGltaXplTGF5b3V0U3RlcChjdXJyZW50RXBvY2gpO1xuICAgICAgICAgICAgdmFyIGVwb2NoQ29tcGxldGVkID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICB2YXIgc2hvdWxkU3RvcCA9IGVwb2NoQ2FsbGJhY2soZXBvY2hDb21wbGV0ZWQpID09PSBmYWxzZTtcbiAgICAgICAgICAgIGlzRmluaXNoZWQgPSBlcG9jaENvbXBsZXRlZCA9PT0gbkVwb2NocyB8fCBzaG91bGRTdG9wO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBlbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5nZXRORXBvY2hzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgZ3JhcGggPSB0aGlzLmdyYXBoO1xuICAgICAgICBpZiAodGhpcy5uRXBvY2hzID4gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubkVwb2NocztcbiAgICAgICAgfVxuICAgICAgICB2YXIgbGVuZ3RoID0gZ3JhcGgublJvd3M7XG4gICAgICAgIGlmIChsZW5ndGggPD0gMjUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDUwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDQwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChsZW5ndGggPD0gNzUwMCkge1xuICAgICAgICAgICAgcmV0dXJuIDMwMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAyMDA7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBVTUFQO1xufSgpKTtcbmV4cG9ydHMuVU1BUCA9IFVNQVA7XG5mdW5jdGlvbiBldWNsaWRlYW4oeCwgeSkge1xuICAgIHZhciByZXN1bHQgPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coKHhbaV0gLSB5W2ldKSwgMik7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbmV4cG9ydHMuZXVjbGlkZWFuID0gZXVjbGlkZWFuO1xuZnVuY3Rpb24gY29zaW5lKHgsIHkpIHtcbiAgICB2YXIgcmVzdWx0ID0gMC4wO1xuICAgIHZhciBub3JtWCA9IDAuMDtcbiAgICB2YXIgbm9ybVkgPSAwLjA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSB4W2ldICogeVtpXTtcbiAgICAgICAgbm9ybVggKz0gTWF0aC5wb3coeFtpXSwgMik7XG4gICAgICAgIG5vcm1ZICs9IE1hdGgucG93KHlbaV0sIDIpO1xuICAgIH1cbiAgICBpZiAobm9ybVggPT09IDAgJiYgbm9ybVkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGVsc2UgaWYgKG5vcm1YID09PSAwIHx8IG5vcm1ZID09PSAwKSB7XG4gICAgICAgIHJldHVybiAxLjA7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gMS4wIC0gcmVzdWx0IC8gTWF0aC5zcXJ0KG5vcm1YICogbm9ybVkpO1xuICAgIH1cbn1cbmV4cG9ydHMuY29zaW5lID0gY29zaW5lO1xudmFyIE9wdGltaXphdGlvblN0YXRlID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBPcHRpbWl6YXRpb25TdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50RXBvY2ggPSAwO1xuICAgICAgICB0aGlzLmhlYWRFbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy50YWlsRW1iZWRkaW5nID0gW107XG4gICAgICAgIHRoaXMuaGVhZCA9IFtdO1xuICAgICAgICB0aGlzLnRhaWwgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaE9mTmV4dFNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUgPSBbXTtcbiAgICAgICAgdGhpcy5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLm1vdmVPdGhlciA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbEFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmFscGhhID0gMS4wO1xuICAgICAgICB0aGlzLmdhbW1hID0gMS4wO1xuICAgICAgICB0aGlzLmEgPSAxLjU3Njk0MzQ2MDMxMTMwNzc7XG4gICAgICAgIHRoaXMuYiA9IDAuODk1MDYwODc3OTEwOTczMztcbiAgICAgICAgdGhpcy5kaW0gPSAyO1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSA1MDA7XG4gICAgICAgIHRoaXMublZlcnRpY2VzID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIE9wdGltaXphdGlvblN0YXRlO1xufSgpKTtcbmZ1bmN0aW9uIGNsaXAoeCwgY2xpcFZhbHVlKSB7XG4gICAgaWYgKHggPiBjbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiBjbGlwVmFsdWU7XG4gICAgZWxzZSBpZiAoeCA8IC1jbGlwVmFsdWUpXG4gICAgICAgIHJldHVybiAtY2xpcFZhbHVlO1xuICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIHg7XG59XG5mdW5jdGlvbiByRGlzdCh4LCB5KSB7XG4gICAgdmFyIHJlc3VsdCA9IDAuMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IE1hdGgucG93KHhbaV0gLSB5W2ldLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGZpbmRBQlBhcmFtcyhzcHJlYWQsIG1pbkRpc3QpIHtcbiAgICB2YXIgY3VydmUgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwgYSA9IF9iWzBdLCBiID0gX2JbMV07XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgcmV0dXJuIDEuMCAvICgxLjAgKyBhICogTWF0aC5wb3coeCwgKDIgKiBiKSkpO1xuICAgICAgICB9O1xuICAgIH07XG4gICAgdmFyIHh2ID0gdXRpbHNcbiAgICAgICAgLmxpbmVhcigwLCBzcHJlYWQgKiAzLCAzMDApXG4gICAgICAgIC5tYXAoZnVuY3Rpb24gKHZhbCkgeyByZXR1cm4gKHZhbCA8IG1pbkRpc3QgPyAxLjAgOiB2YWwpOyB9KTtcbiAgICB2YXIgeXYgPSB1dGlscy56ZXJvcyh4di5sZW5ndGgpLm1hcChmdW5jdGlvbiAodmFsLCBpbmRleCkge1xuICAgICAgICB2YXIgZ3RlID0geHZbaW5kZXhdID49IG1pbkRpc3Q7XG4gICAgICAgIHJldHVybiBndGUgPyBNYXRoLmV4cCgtKHh2W2luZGV4XSAtIG1pbkRpc3QpIC8gc3ByZWFkKSA6IHZhbDtcbiAgICB9KTtcbiAgICB2YXIgaW5pdGlhbFZhbHVlcyA9IFswLjUsIDAuNV07XG4gICAgdmFyIGRhdGEgPSB7IHg6IHh2LCB5OiB5diB9O1xuICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBkYW1waW5nOiAxLjUsXG4gICAgICAgIGluaXRpYWxWYWx1ZXM6IGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIGdyYWRpZW50RGlmZmVyZW5jZTogMTBlLTIsXG4gICAgICAgIG1heEl0ZXJhdGlvbnM6IDEwMCxcbiAgICAgICAgZXJyb3JUb2xlcmFuY2U6IDEwZS0zLFxuICAgIH07XG4gICAgdmFyIHBhcmFtZXRlclZhbHVlcyA9IG1sX2xldmVuYmVyZ19tYXJxdWFyZHRfMS5kZWZhdWx0KGRhdGEsIGN1cnZlLCBvcHRpb25zKS5wYXJhbWV0ZXJWYWx1ZXM7XG4gICAgdmFyIF9hID0gX19yZWFkKHBhcmFtZXRlclZhbHVlcywgMiksIGEgPSBfYVswXSwgYiA9IF9hWzFdO1xuICAgIHJldHVybiB7IGE6IGEsIGI6IGIgfTtcbn1cbmV4cG9ydHMuZmluZEFCUGFyYW1zID0gZmluZEFCUGFyYW1zO1xuZnVuY3Rpb24gZmFzdEludGVyc2VjdGlvbihncmFwaCwgdGFyZ2V0LCB1bmtub3duRGlzdCwgZmFyRGlzdCkge1xuICAgIGlmICh1bmtub3duRGlzdCA9PT0gdm9pZCAwKSB7IHVua25vd25EaXN0ID0gMS4wOyB9XG4gICAgaWYgKGZhckRpc3QgPT09IHZvaWQgMCkgeyBmYXJEaXN0ID0gNS4wOyB9XG4gICAgcmV0dXJuIGdyYXBoLm1hcChmdW5jdGlvbiAodmFsdWUsIHJvdywgY29sKSB7XG4gICAgICAgIGlmICh0YXJnZXRbcm93XSA9PT0gLTEgfHwgdGFyZ2V0W2NvbF0gPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtdW5rbm93bkRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRhcmdldFtyb3ddICE9PSB0YXJnZXRbY29sXSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlICogTWF0aC5leHAoLWZhckRpc3QpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG4gICAgfSk7XG59XG5leHBvcnRzLmZhc3RJbnRlcnNlY3Rpb24gPSBmYXN0SW50ZXJzZWN0aW9uO1xuZnVuY3Rpb24gcmVzZXRMb2NhbENvbm5lY3Rpdml0eShzaW1wbGljaWFsU2V0KSB7XG4gICAgc2ltcGxpY2lhbFNldCA9IG1hdHJpeC5ub3JtYWxpemUoc2ltcGxpY2lhbFNldCwgXCJtYXhcIik7XG4gICAgdmFyIHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc2ltcGxpY2lhbFNldCk7XG4gICAgdmFyIHByb2RNYXRyaXggPSBtYXRyaXgucGFpcndpc2VNdWx0aXBseSh0cmFuc3Bvc2UsIHNpbXBsaWNpYWxTZXQpO1xuICAgIHNpbXBsaWNpYWxTZXQgPSBtYXRyaXguYWRkKHNpbXBsaWNpYWxTZXQsIG1hdHJpeC5zdWJ0cmFjdCh0cmFuc3Bvc2UsIHByb2RNYXRyaXgpKTtcbiAgICByZXR1cm4gbWF0cml4LmVsaW1pbmF0ZVplcm9zKHNpbXBsaWNpYWxTZXQpO1xufVxuZXhwb3J0cy5yZXNldExvY2FsQ29ubmVjdGl2aXR5ID0gcmVzZXRMb2NhbENvbm5lY3Rpdml0eTtcbmZ1bmN0aW9uIGluaXRUcmFuc2Zvcm0oaW5kaWNlcywgd2VpZ2h0cywgZW1iZWRkaW5nKSB7XG4gICAgdmFyIHJlc3VsdCA9IHV0aWxzXG4gICAgICAgIC56ZXJvcyhpbmRpY2VzLmxlbmd0aClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAoeikgeyByZXR1cm4gdXRpbHMuemVyb3MoZW1iZWRkaW5nWzBdLmxlbmd0aCk7IH0pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZGljZXNbMF0ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZW1iZWRkaW5nWzBdLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGEgPSBpbmRpY2VzW2ldW2pdO1xuICAgICAgICAgICAgICAgIHJlc3VsdFtpXVtkXSArPSB3ZWlnaHRzW2ldW2pdICogZW1iZWRkaW5nW2FdW2RdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLmluaXRUcmFuc2Zvcm0gPSBpbml0VHJhbnNmb3JtO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZnVuY3Rpb24gdGF1UmFuZEludChuLCByYW5kb20pIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb20oKSAqIG4pO1xufVxuZXhwb3J0cy50YXVSYW5kSW50ID0gdGF1UmFuZEludDtcbmZ1bmN0aW9uIHRhdVJhbmQocmFuZG9tKSB7XG4gICAgcmV0dXJuIHJhbmRvbSgpO1xufVxuZXhwb3J0cy50YXVSYW5kID0gdGF1UmFuZDtcbmZ1bmN0aW9uIG5vcm0odmVjKSB7XG4gICAgdmFyIGVfMSwgX2E7XG4gICAgdmFyIHJlc3VsdCA9IDA7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgdmVjXzEgPSBfX3ZhbHVlcyh2ZWMpLCB2ZWNfMV8xID0gdmVjXzEubmV4dCgpOyAhdmVjXzFfMS5kb25lOyB2ZWNfMV8xID0gdmVjXzEubmV4dCgpKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IHZlY18xXzEudmFsdWU7XG4gICAgICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coaXRlbSwgMik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY2F0Y2ggKGVfMV8xKSB7IGVfMSA9IHsgZXJyb3I6IGVfMV8xIH07IH1cbiAgICBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmICh2ZWNfMV8xICYmICF2ZWNfMV8xLmRvbmUgJiYgKF9hID0gdmVjXzEucmV0dXJuKSkgX2EuY2FsbCh2ZWNfMSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG59XG5leHBvcnRzLm5vcm0gPSBub3JtO1xuZnVuY3Rpb24gZW1wdHkobikge1xuICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICBvdXRwdXQucHVzaCh1bmRlZmluZWQpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0cy5lbXB0eSA9IGVtcHR5O1xuZnVuY3Rpb24gcmFuZ2Uobikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoZnVuY3Rpb24gKF8sIGkpIHsgcmV0dXJuIGk7IH0pO1xufVxuZXhwb3J0cy5yYW5nZSA9IHJhbmdlO1xuZnVuY3Rpb24gZmlsbGVkKG4sIHYpIHtcbiAgICByZXR1cm4gZW1wdHkobikubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHY7IH0pO1xufVxuZXhwb3J0cy5maWxsZWQgPSBmaWxsZWQ7XG5mdW5jdGlvbiB6ZXJvcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAwKTtcbn1cbmV4cG9ydHMuemVyb3MgPSB6ZXJvcztcbmZ1bmN0aW9uIG9uZXMobikge1xuICAgIHJldHVybiBmaWxsZWQobiwgMSk7XG59XG5leHBvcnRzLm9uZXMgPSBvbmVzO1xuZnVuY3Rpb24gbGluZWFyKGEsIGIsIGxlbikge1xuICAgIHJldHVybiBlbXB0eShsZW4pLm1hcChmdW5jdGlvbiAoXywgaSkge1xuICAgICAgICByZXR1cm4gYSArIGkgKiAoKGIgLSBhKSAvIChsZW4gLSAxKSk7XG4gICAgfSk7XG59XG5leHBvcnRzLmxpbmVhciA9IGxpbmVhcjtcbmZ1bmN0aW9uIHN1bShpbnB1dCkge1xuICAgIHJldHVybiBpbnB1dC5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgdmFsKSB7IHJldHVybiBzdW0gKyB2YWw7IH0pO1xufVxuZXhwb3J0cy5zdW0gPSBzdW07XG5mdW5jdGlvbiBtZWFuKGlucHV0KSB7XG4gICAgcmV0dXJuIHN1bShpbnB1dCkgLyBpbnB1dC5sZW5ndGg7XG59XG5leHBvcnRzLm1lYW4gPSBtZWFuO1xuZnVuY3Rpb24gbWF4KGlucHV0KSB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBtYXggPSBpbnB1dFtpXSA+IG1heCA/IGlucHV0W2ldIDogbWF4O1xuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXggPSBtYXg7XG5mdW5jdGlvbiBtYXgyZChpbnB1dCkge1xuICAgIHZhciBtYXggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbnB1dFtpXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgbWF4ID0gaW5wdXRbaV1bal0gPiBtYXggPyBpbnB1dFtpXVtqXSA6IG1heDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF4O1xufVxuZXhwb3J0cy5tYXgyZCA9IG1heDJkO1xuZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgdmFyIHJlc3VsdCA9IHplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgdmFyIHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIHdoaWxlIChyZWplY3RTYW1wbGUpIHtcbiAgICAgICAgICAgIHZhciBqID0gdGF1UmFuZEludChwb29sU2l6ZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIHZhciBicm9rZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgaTsgaysrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGogPT09IHJlc3VsdFtrXSkge1xuICAgICAgICAgICAgICAgICAgICBicm9rZW4gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWJyb2tlbikge1xuICAgICAgICAgICAgICAgIHJlamVjdFNhbXBsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0W2ldID0gajtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZXhwb3J0cy5yZWplY3Rpb25TYW1wbGUgPSByZWplY3Rpb25TYW1wbGU7XG5mdW5jdGlvbiByZXNoYXBlMmQoeCwgYSwgYikge1xuICAgIHZhciByb3dzID0gW107XG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIGlmICh4Lmxlbmd0aCAhPT0gYSAqIGIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBkaW1lbnNpb25zIG11c3QgbWF0Y2ggaW5wdXQgbGVuZ3RoLicpO1xuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGE7IGkrKykge1xuICAgICAgICB2YXIgY29sID0gW107XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgYjsgaisrKSB7XG4gICAgICAgICAgICBjb2wucHVzaCh4W2luZGV4XSk7XG4gICAgICAgICAgICBpbmRleCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIHJvd3MucHVzaChjb2wpO1xuICAgICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbn1cbmV4cG9ydHMucmVzaGFwZTJkID0gcmVzaGFwZTJkO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzQ3OF0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDg1NjMpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDU2MzogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gPSBzZWxmW1wid2VicGFja0NodW5rcGVwdGlkZXNcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsInJhbmRvbUZsb2F0IiwicmFuZ2UiLCJNYXRoIiwicmFuZG9tIiwiZmxvb3IiLCJhc3NlcnQiLCJjb25kaXRpb24iLCJtZXNzYWdlIiwiRXJyb3IiLCJpbml0Q29vcmRpbmF0ZXMiLCJkaW1lbnNpb24xIiwiZGltZW5zaW9uMiIsImZpbGwiLCJBcnJheSIsIm1hcCIsInZlY3RvckFkZCIsInAiLCJxIiwibXVsdGlwbGllciIsIm5JdGVtcyIsImxlbmd0aCIsInRvdGFsIiwiaSIsImZpbGxSYW5kb21NYXRyaXgiLCJzY2FsZSIsIm1hdHJpeCIsImoiLCJjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSIsInNxZGlmZlN1bW0iLCJ2IiwiaXRlbXNTdW0iLCJ2ZWN0b3JTcXVhcmUiLCJzcXJ0IiwiY2FsY0Rpc3RhbmNlTWF0cml4IiwiZGF0YSIsImRpc3RhbmNlIiwiZCIsIlNQRUJhc2UiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJfYSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJfZyIsInRoaXMiLCJzdGVwcyIsImN5Y2xlcyIsImN1dG9mZiIsImxhbWJkYSIsImRsYW1iZGEiLCJsYW1iZGEyIiwiZGxhbWJkYTIiLCJlcHNpbG9uIiwiZGlzdGFuY2VGdW5jdGlvbiIsImluaXREaXN0YW5jZSIsInZlY3RvcnMiLCJjYWxjRGlzdGFuY2UiLCJpbmRleDEiLCJpbmRleDIiLCJlbWJlZCIsImNvb3JkaW5hdGVzIiwiZGltZW5zaW9uIiwiY3ljbGUiLCJzdGVwIiwicm93aSIsInJvd2oiLCJyIiwiZGlmZklKIiwiUFNQRUJhc2UiLCJPcmlnaW5hbFNQRSIsInN1cGVyIiwicmFkaXVzUGVyY2VudCIsIm1heERpc3RhbmNlIiwibWF4RGlzdGFuY2VTdGVwcyIsIm4iLCJyYWRpdXMiLCJTdHJpbmdNZXRyaWNzTmFtZXMiLCJWZWN0b3JNZXRyaWNzTmFtZXMiLCJCaXRBcnJheU1ldHJpY3NOYW1lcyIsInZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJFdWNsaWRlYW4iLCJzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiTGV2ZW5zaHRlaW4iLCJKYXJvV2lua2xlciIsIk1hbmhhdHRhbiIsInMxIiwiczIiLCJkaXN0IiwiYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiVGFuaW1vdG8iLCJEaWNlIiwiQXN5bW1ldHJpYyIsIkJyYXVuQmxhbnF1ZXQiLCJDb3NpbmUiLCJLdWxjenluc2tpIiwiTWNDb25uYXVnaGV5IiwiUm9nb3RHb2xkYmVyZyIsIlJ1c3NlbCIsIlNva2FsIiwiSGFtbWluZyIsIkF2YWlsYWJsZU1ldHJpY3NUeXBlcyIsIkF2YWlsYWJsZU1ldHJpY3MiLCJWZWN0b3IiLCJTdHJpbmciLCJCaXRBcnJheSIsIk1hY3JvTW9sZWN1bGUiLCJNZXRyaWNUb0RhdGFUeXBlIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsInJldCIsImtleSIsInZhbCIsIk1lYXN1cmUiLCJtZXRob2QiLCJkYXRhVHlwZSIsImdldE1lYXN1cmUiLCJvcHRzIiwiZGljdCIsImhhc093blByb3BlcnR5IiwibmFtZSIsInRvU3RyaW5nIiwic3RhdGljIiwiYXZhaWxhYmxlTWVhc3VyZXMiLCJhcmciLCJkZWZhdWx0VmFsdWUiLCJfbGVuZ3RoIiwiX3ZlcnNpb24iLCJfdXBkYXRlTGV2ZWwiLCJfc2VsZWN0ZWRDb3VudCIsIl9zZWxlY3RlZENvdW50VmVyc2lvbiIsIl9zZWxlY3RlZEluZGV4ZXNWZXJzaW9uIiwiX3ZlcnNpb25lZE5hbWUiLCJfdmVyc2lvbmVkTmFtZVZlcnNpb24iLCJTSFJJTktfVEhSRVNIT0xEIiwiYnVmZiIsIl9jcmVhdGVCdWZmZXIiLCJfZGF0YSIsIlVpbnQzMkFycmF5IiwiZ2V0UmF3RGF0YSIsImFzc3VyZUdvZXoiLCJudW0iLCJhcmdOYW1lIiwiYXNzdXJlSW5SYW5nZSIsInZhbHVlIiwibWluIiwibWF4IiwiY29weSIsInNyYyIsImRzdCIsImNvdW50IiwiY29weUZyb20iLCJvdGhlciIsImxlbmd0aEluSW50cyIsImJ1ZmZlciIsInZlcnNpb24iLCJpbmNyZW1lbnRWZXJzaW9uIiwibm90aWZ5IiwidmVyc2lvbmVkTmFtZSIsInNlbGYiLCJzZXRMZW5ndGgiLCJuSW50c05lZWRlZCIsIm5ld0RhdGEiLCJzZXQxIiwic2V0MiIsInRlbXAiLCJsZW4iLCJ2YWx1ZXMiLCJmbGFnIiwic2V0Qml0IiwicyIsImZyb21TZXEiLCJjaGFyQXQiLCJieXRlcyIsIm51bTEiLCJudW0yIiwiY291bnRCaXRzIiwiZXF1YWxzIiwiZ2V0Qml0IiwiY2xvbmUiLCJiaXRBcnJheSIsImZyb20iLCJpbml0Iiwic2V0QWxsIiwiaW52ZXJ0IiwiZmxhZ3MiLCJzZXRJbmRleGVzIiwiaW5kZXhlcyIsImNsZWFyIiwic2V0RmFzdCIsImV2ZXJ5SW5kZXgiLCJpbmRleCIsImFueUluZGV4Iiwic2V0V2hlcmUiLCJjaGVjayIsImFsbG93Q2xlYXIiLCJnZXRSYW5nZSIsInRvIiwiYXJyIiwicHVzaCIsImZyb21WYWx1ZXMiLCJnZXRSYW5nZUFzTGlzdCIsInNldFJhbmdlIiwic3RhcnQiLCJlbmQiLCJzZXRUcnVlIiwic2V0RmFsc2UiLCJzZXRSYW5kb20iLCJrIiwiYW5kIiwiYW5kTm90Iiwibm90QW5kIiwibm90Iiwib3IiLCJ4b3IiLCJpbnNlcnRBdCIsInBvcyIsIm9sZGxlbmd0aCIsInJlbW92ZUF0IiwiY29udGFpbnMiLCJyZW1vdmVCeU1hc2siLCJtYXNrIiwiZHN0SWR4Iiwic3JjSWR4IiwiZmluZE5leHQiLCJiaXQiLCJ0cnVlQ291bnQiLCJmYWxzZUNvdW50IiwiX29uQml0Q291bnQiLCJyZW1haW5pbmdCaXRzIiwiY291bnRXaGVyZSIsInJlc3VsdCIsImFuZFdpdGhDb3VudEJpdHMiLCJzZWNvbmQiLCJhbGxUcnVlIiwiYWxsRmFsc2UiLCJhbnlUcnVlIiwiYW55RmFsc2UiLCJ1bnVzZWRCaXRzIiwibnVtSW50cyIsIl9maXJzdE9uQml0IiwiZmluZFByZXYiLCJfbGFzdE9uQml0IiwiSW50OEFycmF5IiwiUmVkdWNlciIsIkF2YWlsYWJsZVJlZHVjZXJzIiwiZGlzdGFuY2VGbiIsIl9lbmNvZGVkRGlzdGFuY2UiLCJiaW5kIiwibk5laWdoYm9ycyIsInJlZHVjZXIiLCJ1IiwiYSIsImIiLCJfZW5jb2RlIiwidHJhbnNmb3JtIiwiZW1iZWRkaW5nIiwiZml0IiwiXyIsIml0ZXJhdGlvbnMiLCJpbml0RGF0YURpc3QiLCJnZXRTb2x1dGlvbiIsImVtYiIsIkRpbWVuc2lvbmFsaXR5UmVkdWNlciIsIm1ldHJpYyIsIm1lYXN1cmUiLCJzcGVjT3B0aW9ucyIsImFzc2lnbiIsIm5FcG9jaHMiLCJ1bmRlZmluZWQiLCJ0cmFuc3Bvc2UiLCJ0eXBlTmFtZSIsImF2YWlsYWJsZU1ldGhvZHMiLCJhdmFpbGFibGVNZXRyaWNzIiwiYW5zIiwiZm9yRWFjaCIsIm9iaiIsImFycmF5Iiwib25tZXNzYWdlIiwiY29sdW1uRGF0YSIsIm9uTWVzc2FnZSIsImUiLCJlcnJvciIsInBvc3RNZXNzYWdlIiwiZXhwb3J0cyIsInRzbmVfMSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIlRTTkUiLCJvcHQiLCJyZXR1cm5WIiwidlZhbHVlIiwiaXRlciIsInBlcnBsZXhpdHkiLCJnZXRvcHQiLCJkaW0iLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJnYXVzc1JhbmRvbSIsImMiLCJsb2ciLCJyYW5kbiIsIm11Iiwic3RkIiwiemVyb3MiLCJpc05hTiIsIkFycmF5QnVmZmVyIiwiRmxvYXQ2NEFycmF5IiwicmFuZG4yZCIsInVzZXMiLCJ4IiwieGhlcmUiLCJMMiIsIngxIiwieDIiLCJEIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZDJwIiwidG9sIiwibmYiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsImNvbnNvbGUiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJnc3VtIiwicHJlbXVsdCIsInByb3RvdHlwZSIsImlzQW55QXJyYXkiLCJvYmplY3QiLCJjYWxsIiwiZW5kc1dpdGgiLCJlcnJvckNhbGN1bGF0aW9uIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcml6ZWRGdW5jdGlvbiIsImZ1bmMiLCJ5IiwidGFnIiwiaW5jbHVkZXMiLCJyZXNjYWxlIiwiaW5wdXQiLCJvdXRwdXQiLCJhcmd1bWVudHMiLCJUeXBlRXJyb3IiLCJjdXJyZW50TWluIiwiX29wdGlvbnMkZnJvbUluZGV4IiwiZnJvbUluZGV4IiwiX29wdGlvbnMkdG9JbmRleCIsInRvSW5kZXgiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtaW5WYWx1ZSIsImN1cnJlbnRNYXgiLCJtYXhWYWx1ZSIsIlJhbmdlRXJyb3IiLCJfb3B0aW9ucyRtaW4iLCJhdXRvTWluTWF4IiwiX29wdGlvbnMkbWF4IiwiZmFjdG9yIiwiaW5kZW50IiwicmVwZWF0IiwiaW5kZW50RGF0YSIsImluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyIsIm1heFJvd3MiLCJtYXhDb2x1bW5zIiwibWF4TnVtU2l6ZSIsInBhZE1pbnVzIiwicm93cyIsImNvbHVtbnMiLCJtYXhJIiwibWF4SiIsImxvb3AiLCJsaW5lIiwiZm9ybWF0TnVtYmVyIiwiam9pbiIsImluc3BlY3REYXRhIiwiZm9ybWF0TnVtYmVyMiIsInBhZEVuZCIsInN0ciIsImZpeCIsInRvRml4ZWQiLCJzdGFydHNXaXRoIiwidG9FeHBvbmVudGlhbCIsInNsaWNlIiwiY2hlY2tSb3dJbmRleCIsIm91dGVyIiwiY2hlY2tDb2x1bW5JbmRleCIsImNoZWNrUm93VmVjdG9yIiwidmVjdG9yIiwidG8xREFycmF5IiwiY2hlY2tDb2x1bW5WZWN0b3IiLCJjaGVja1JhbmdlIiwic3RhcnRSb3ciLCJlbmRSb3ciLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsImNoZWNrTnVtYmVyIiwibmV3QXJyYXkiLCJjaGVja05vbkVtcHR5IiwiaXNFbXB0eSIsIkFic3RyYWN0TWF0cml4IiwibmV3Um93cyIsIm5ld0NvbHVtbnMiLCJuZXdNYXRyaXgiLCJNYXRyaXgiLCJyb3ciLCJjb2x1bW4iLCJzZXQiLCJpbnRlcnZhbCIsInJvdW5kIiwibCIsIm1hdHJpeDEiLCJtYXRyaXgyIiwiY2hlY2tNYXRyaXgiLCJpc01hdHJpeCIsImtsYXNzIiwic2l6ZSIsImFwcGx5IiwiY2FsbGJhY2siLCJ0bzJEQXJyYXkiLCJ0b0pTT04iLCJpc1Jvd1ZlY3RvciIsImlzQ29sdW1uVmVjdG9yIiwiaXNWZWN0b3IiLCJpc1NxdWFyZSIsImlzU3ltbWV0cmljIiwiaXNFY2hlbG9uRm9ybSIsInByZXZpb3VzQ29sdW1uIiwiY2hlY2tlZCIsImlzUmVkdWNlZEVjaGVsb25Gb3JtIiwiZWNoZWxvbkZvcm0iLCJoIiwiaU1heCIsInN3YXBSb3dzIiwidG1wIiwicmVkdWNlZEVjaGVsb25Gb3JtIiwibSIsIm1heFJvdyIsInBpdm90Iiwic2V0U3ViTWF0cml4IiwibmVnIiwibXVsUyIsImdldFJvdyIsImdldFJvd1ZlY3RvciIsInJvd1ZlY3RvciIsInNldFJvdyIsInJvdzEiLCJyb3cyIiwiZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uVmVjdG9yIiwiY29sdW1uVmVjdG9yIiwic2V0Q29sdW1uIiwic3dhcENvbHVtbnMiLCJjb2x1bW4xIiwiY29sdW1uMiIsImFkZFJvd1ZlY3RvciIsInN1YlJvd1ZlY3RvciIsIm11bFJvd1ZlY3RvciIsImRpdlJvd1ZlY3RvciIsImFkZENvbHVtblZlY3RvciIsInN1YkNvbHVtblZlY3RvciIsIm11bENvbHVtblZlY3RvciIsImRpdkNvbHVtblZlY3RvciIsIm11bFJvdyIsIm11bENvbHVtbiIsImJ5IiwiTmFOIiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJtYXhJbmRleCIsImlkeCIsIlBPU0lUSVZFX0lORklOSVRZIiwibWluSW5kZXgiLCJtYXhSb3dJbmRleCIsIm1pblJvdyIsIm1pblJvd0luZGV4IiwibWF4Q29sdW1uIiwibWF4Q29sdW1uSW5kZXgiLCJtaW5Db2x1bW4iLCJtaW5Db2x1bW5JbmRleCIsImRpYWciLCJub3JtIiwidHlwZSIsImN1bXVsYXRpdmVTdW0iLCJzdW0iLCJkb3QiLCJ2ZWN0b3IyIiwidmVjdG9yMSIsIm1tdWwiLCJCY29saiIsInN0cmFzc2VuMngyIiwiYTExIiwiYjExIiwiYTEyIiwiYjEyIiwiYTIxIiwiYjIxIiwiYTIyIiwiYjIyIiwibTEiLCJtMiIsIm0zIiwibTQiLCJtNSIsImMwMCIsImMwMSIsImMxMCIsImMxMSIsInN0cmFzc2VuM3gzIiwiYTAwIiwiYTAxIiwiYTAyIiwiYTEwIiwiYTIwIiwiYjAwIiwiYjAxIiwiYjAyIiwiYjEwIiwiYjIwIiwibTYiLCJtNyIsIm04IiwibTkiLCJtMTIiLCJtMTMiLCJtMTQiLCJtMTUiLCJtMTYiLCJtMTciLCJtMTgiLCJjMDIiLCJjMTIiLCJjMjAiLCJjMjEiLCJjMjIiLCJtbXVsU3RyYXNzZW4iLCJyMSIsImMxIiwicjIiLCJjMiIsIm1hdCIsImNvbHMiLCJyZXN1bHRhdCIsIndhcm4iLCJibG9ja011bHQiLCJoYWxmUm93cyIsInBhcnNlSW50IiwiaGFsZkNvbHMiLCJzdWJNYXRyaXgiLCJhZGQiLCJzdWIiLCJzY2FsZVJvd3MiLCJpc0Zpbml0ZSIsInNjYWxlQ29sdW1ucyIsImZsaXBSb3dzIiwibWlkZGxlIiwiY2VpbCIsImZpcnN0IiwibGFzdCIsImZsaXBDb2x1bW5zIiwia3JvbmVja2VyUHJvZHVjdCIsImtyb25lY2tlclN1bSIsIkF4SSIsImV5ZSIsIkl4QiIsInNvcnRSb3dzIiwiY29tcGFyZUZ1bmN0aW9uIiwiY29tcGFyZU51bWJlcnMiLCJzb3J0Iiwic29ydENvbHVtbnMiLCJzdWJNYXRyaXhSb3ciLCJpbmRpY2VzIiwic3ViTWF0cml4Q29sdW1uIiwic2VsZWN0aW9uIiwicm93SW5kaWNlcyIsImNvbHVtbkluZGljZXMiLCJjaGVja1Jvd0luZGljZXMiLCJjaGVja0NvbHVtbkluZGljZXMiLCJyb3dJbmRleCIsImNvbHVtbkluZGV4IiwidHJhY2UiLCJzdW1CeVJvdyIsInN1bUJ5Q29sdW1uIiwic3VtQWxsIiwicHJvZHVjdCIsInByb2R1Y3RCeVJvdyIsInByb2R1Y3RCeUNvbHVtbiIsInByb2R1Y3RBbGwiLCJtZWFuIiwidmFyaWFuY2UiLCJ1bmJpYXNlZCIsInN1bTEiLCJzdW0yIiwidmFyaWFuY2VCeVJvdyIsInZhcmlhbmNlQnlDb2x1bW4iLCJ2YXJpYW5jZUFsbCIsInN0YW5kYXJkRGV2aWF0aW9uIiwiY2VudGVyIiwiY2VudGVyQnlSb3ciLCJjZW50ZXJCeUNvbHVtbiIsImNlbnRlckFsbCIsInBvdyIsImdldFNjYWxlQnlSb3ciLCJzY2FsZUJ5Um93IiwiZ2V0U2NhbGVCeUNvbHVtbiIsInNjYWxlQnlDb2x1bW4iLCJkaXZpZGVyIiwiZ2V0U2NhbGVBbGwiLCJzY2FsZUFsbCIsIlN5bWJvbCIsImZvciIsInJhbmQiLCJyYW5kb21JbnQiLCJyYW5kSW50IiwiZGlhZ29uYWwiLCJpZGVudGl0eSIsIm5lZ2F0ZSIsInRlbnNvclByb2R1Y3QiLCJuUm93cyIsIm5Db2x1bW5zIiwiYXJyYXlEYXRhIiwiZXZlcnkiLCJlbGVtZW50IiwicmVtb3ZlUm93Iiwic3BsaWNlIiwiYWRkUm93IiwicmVtb3ZlQ29sdW1uIiwibmV3Um93IiwiYWRkQ29sdW1uIiwiYWRkUyIsImFkZE0iLCJzdWJTIiwic3ViTSIsInN1YnRyYWN0Iiwic3VidHJhY3RTIiwic3VidHJhY3RNIiwibXVsIiwibXVsTSIsIm11bHRpcGx5IiwibXVsdGlwbHlTIiwibXVsdGlwbHlNIiwiZGl2IiwiZGl2UyIsImRpdk0iLCJkaXZpZGUiLCJkaXZpZGVTIiwiZGl2aWRlTSIsIm1vZCIsIm1vZFMiLCJtb2RNIiwibW9kdWx1cyIsIm1vZHVsdXNTIiwibW9kdWx1c00iLCJhbmRTIiwiYW5kTSIsIm9yUyIsIm9yTSIsInhvclMiLCJ4b3JNIiwibGVmdFNoaWZ0IiwibGVmdFNoaWZ0UyIsImxlZnRTaGlmdE0iLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Iiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFMiLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSIsInJpZ2h0U2hpZnQiLCJyaWdodFNoaWZ0UyIsInJpZ2h0U2hpZnRNIiwiemVyb0ZpbGxSaWdodFNoaWZ0IiwiemVyb0ZpbGxSaWdodFNoaWZ0UyIsInplcm9GaWxsUmlnaHRTaGlmdE0iLCJhY29zIiwiYWNvc2giLCJhc2luIiwiYXNpbmgiLCJhdGFuIiwiYXRhbmgiLCJjYnJ0IiwiY2x6MzIiLCJjb3MiLCJjb3NoIiwiZXhwbTEiLCJmcm91bmQiLCJsb2cxcCIsImxvZzEwIiwibG9nMiIsInNpbiIsInNpbmgiLCJ0YW4iLCJ0YW5oIiwidHJ1bmMiLCJhcmcwIiwicG93UyIsInBvd00iLCJpbnN0YWxsTWF0aE9wZXJhdGlvbnMiLCJXcmFwcGVyTWF0cml4MkQiLCJMdURlY29tcG9zaXRpb24iLCJ0IiwiTFVjb2xqIiwia21heCIsImx1IiwicGl2b3RWZWN0b3IiLCJwaXZvdFNpZ24iLCJMVSIsImlzU2luZ3VsYXIiLCJjb2wiLCJzb2x2ZSIsImRldGVybWluYW50IiwibG93ZXJUcmlhbmd1bGFyTWF0cml4IiwidXBwZXJUcmlhbmd1bGFyTWF0cml4IiwicGl2b3RQZXJtdXRhdGlvblZlY3RvciIsImh5cG90ZW51c2UiLCJRckRlY29tcG9zaXRpb24iLCJxciIsInJkaWFnIiwibnJtIiwiUVIiLCJSZGlhZyIsImlzRnVsbFJhbmsiLCJvcnRob2dvbmFsTWF0cml4IiwiU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24iLCJjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyIsImNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyIsImF1dG9UcmFuc3Bvc2UiLCJ3YW50dSIsIkJvb2xlYW4iLCJ3YW50diIsInN3YXBwZWQiLCJhdXgiLCJudSIsIm5pIiwiVSIsIlYiLCJ3b3JrIiwic2kiLCJuY3QiLCJucnQiLCJtcmMiLCJwcCIsImVwcyIsIkVQU0lMT04iLCJrYXNlIiwiYWxwaGEiLCJNSU5fVkFMVUUiLCJrcyIsImYiLCJjcyIsInNuIiwic3AiLCJzcG0xIiwiZXBtMSIsInNrIiwiZWsiLCJzaGlmdCIsImciLCJ0aHJlc2hvbGQiLCJzY29scyIsIkxzIiwicmlnaHRTaW5ndWxhclZlY3RvcnMiLCJWTCIsInZyb3dzIiwidXJvd3MiLCJWTFUiLCJzb2x2ZUZvckRpYWdvbmFsIiwiaW52ZXJzZSIsInZjb2xzIiwidWNvbHMiLCJub3JtMiIsInJhbmsiLCJpaSIsImxlZnRTaW5ndWxhclZlY3RvcnMiLCJkaWFnb25hbE1hdHJpeCIsInBhcmFtcyIsImRhbXBpbmciLCJncmFkaWVudERpZmZlcmVuY2UiLCJldmFsdWF0ZWREYXRhIiwiZ3JhZGllbnRGdW5jIiwicGFyYW1GdW5jdGlvbiIsInBhcmFtIiwiYXV4UGFyYW1zIiwiZnVuY1BhcmFtIiwicG9pbnQiLCJncmFkaWVudEZ1bmN0aW9uIiwibWF0cml4RnVuYyIsIm1hdHJpeEZ1bmN0aW9uIiwiaW52ZXJzZU1hdHJpeCIsInVzZVNWRCIsImxlZnRIYW5kU2lkZSIsInJpZ2h0SGFuZFNpZGUiLCJsZXZlbmJlcmdNYXJxdWFyZHQiLCJtYXhJdGVyYXRpb25zIiwiZXJyb3JUb2xlcmFuY2UiLCJtaW5WYWx1ZXMiLCJtYXhWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwicGFyTGVuIiwiTUFYX1NBRkVfSU5URUdFUiIsIk1JTl9TQUZFX0lOVEVHRVIiLCJpdGVyYXRpb24iLCJjb252ZXJnZWQiLCJwYXJhbWV0ZXJWYWx1ZXMiLCJwYXJhbWV0ZXJFcnJvciIsIl9faW1wb3J0U3RhciIsIl9fZXNNb2R1bGUiLCJ1dGlscyIsIm1ha2VIZWFwIiwiblBvaW50cyIsIm1ha2VBcnJheXMiLCJmaWxsVmFsdWUiLCJlbXB0eSIsImZpbGxlZCIsImhlYXAiLCJoZWFwUHVzaCIsIndlaWdodCIsIndlaWdodHMiLCJ1bmNoZWNrZWRIZWFwUHVzaCIsImlzTmV3IiwiaVN3YXAiLCJpYzEiLCJpYzIiLCJoZWFwU2hhcGUyIiwic2lmdERvd24iLCJoZWFwMSIsImhlYXAyIiwiY2VpbGluZyIsImVsdCIsImxlZnRDaGlsZCIsInJpZ2h0Q2hpbGQiLCJzd2FwIiwidGVtcDEiLCJ0ZW1wMiIsInJlamVjdGlvblNhbXBsZSIsIm5TYW1wbGVzIiwicG9vbFNpemUiLCJyZWplY3RTYW1wbGUiLCJ0YXVSYW5kSW50IiwiYnJva2VuIiwiYnVpbGRDYW5kaWRhdGVzIiwiY3VycmVudEdyYXBoIiwiblZlcnRpY2VzIiwibWF4Q2FuZGlkYXRlcyIsImNhbmRpZGF0ZU5laWdoYm9ycyIsImlzbiIsInRhdVJhbmQiLCJkZWhlYXBTb3J0IiwiaW5kSGVhcCIsImRpc3RIZWFwIiwiaW5kSGVhcEluZGV4IiwiZGlzdEhlYXBJbmRleCIsInNtYWxsZXN0RmxhZ2dlZCIsImluZCIsIm1pbkRpc3QiLCJyZXN1bHRJbmRleCIsInVtYXBfMSIsIlVNQVAiLCJfX3JlYWQiLCJvIiwiaXRlcmF0b3IiLCJhciIsIl9fdmFsdWVzIiwiU3BhcnNlTWF0cml4IiwiZGltcyIsImVudHJpZXMiLCJNYXAiLCJuQ29scyIsImNoZWNrRGltcyIsIm1ha2VLZXkiLCJoYXMiLCJnZXRBbGwiLCJvcmRlcmVkIiwicm93Q29sVmFsdWVzIiwiZ2V0RGltcyIsImdldFJvd3MiLCJnZXRDb2xzIiwiZ2V0VmFsdWVzIiwiZm4iLCJ2YWxzIiwidG9BcnJheSIsIl90aGlzIiwicGFpcndpc2VNdWx0aXBseSIsImVsZW1lbnRXaXNlIiwibWF4aW11bSIsIm11bHRpcGx5U2NhbGFyIiwic2NhbGFyIiwiZWxpbWluYXRlWmVyb3MiLCJ6ZXJvSW5kaWNlcyIsIlNldCIsInJlbW92ZUJ5WmVyb0luZGV4IiwibmV4dFZhbHVlcyIsImZpbHRlciIsIm5leHRSb3dzIiwibmV4dENvbHMiLCJub3JtYWxpemUiLCJub3JtVHlwZSIsImVfMSIsIm5vcm1GbiIsIm5vcm1GbnMiLCJjb2xzQnlSb3ciLCJuZXh0TWF0cml4IiwiX2xvb3BfMSIsImVfMV8xIiwicmV0dXJuIiwieHMiLCJvcCIsInZpc2l0ZWQiLCJvcGVyYXRlIiwibmV4dFZhbHVlIiwidmFsdWVzQSIsInJvd3NBIiwiY29sc0EiLCJ2YWx1ZXNCIiwicm93c0IiLCJjb2xzQiIsImdldENTUiIsImluZHB0ciIsImN1cnJlbnRSb3ciLCJ0cmVlIiwibWFrZU5ORGVzY2VudCIsImxlYWZBcnJheSIsIm5JdGVycyIsImRlbHRhIiwicmhvIiwicnBUcmVlSW5pdCIsImNqIiwiY2siLCJtYWtlSW5pdGlhbGl6YXRpb25zIiwiaW5pdEZyb21SYW5kb20iLCJxdWVyeVBvaW50cyIsIl9oZWFwIiwiaW5pdEZyb21UcmVlIiwiX3RyZWUiLCJzZWFyY2hGbGF0VHJlZSIsIm1ha2VJbml0aWFsaXplZE5OU2VhcmNoIiwiZ3JhcGgiLCJpbml0aWFsaXphdGlvbiIsInRyaWVkIiwidmVydGV4IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZXNfMSIsImNhbmRpZGF0ZXNfMV8xIiwiY2FuZGlkYXRlIiwiaW5pdGlhbGl6ZVNlYXJjaCIsImZvcmVzdCIsImVfMiIsInJlc3VsdHMiLCJmb3Jlc3RfMSIsImZvcmVzdF8xXzEiLCJlXzJfMSIsIl9fc3ByZWFkIiwiY29uY2F0IiwiRmxhdFRyZWUiLCJoeXBlcnBsYW5lcyIsIm9mZnNldHMiLCJjaGlsZHJlbiIsIm1ha2VFdWNsaWRlYW5UcmVlIiwibGVhZlNpemUiLCJzcGxpdFJlc3VsdHMiLCJsZWZ0SW5kZXgiLCJyaWdodEluZGV4IiwibGVmdCIsInJpZ2h0IiwiaHlwZXJwbGFuZU9mZnNldCIsImh5cGVycGxhbmVWZWN0b3IiLCJuTGVmdCIsIm5SaWdodCIsInNpZGUiLCJtYXJnaW4iLCJpbmRpY2VzTGVmdCIsImluZGljZXNSaWdodCIsImh5cGVycGxhbmUiLCJvZmZzZXQiLCJldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQiLCJpc0xlYWYiLCJyZWN1cnNpdmVGbGF0dGVuIiwibm9kZU51bSIsImxlYWZOdW0iLCJvbGROb2RlTnVtIiwicmVzIiwibnVtTm9kZXMiLCJudW1MZWF2ZXMiLCJzZWxlY3RTaWRlIiwibWFrZUZvcmVzdCIsIm5UcmVlcyIsIm1ha2VUcmVlIiwibk5vZGVzIiwibkxlYXZlcyIsImZsYXR0ZW5UcmVlIiwibWFrZUxlYWZBcnJheSIsInJwRm9yZXN0IiwicnBGb3Jlc3RfMSIsInJwRm9yZXN0XzFfMSIsIm5vZGUiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwicmVqZWN0ZWQiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJwb3AiLCJfX2ltcG9ydERlZmF1bHQiLCJubkRlc2NlbnQiLCJtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEiLCJTTU9PVEhfS19UT0xFUkFOQ0UiLCJNSU5fS19ESVNUX1NDQUxFIiwibGVhcm5pbmdSYXRlIiwibG9jYWxDb25uZWN0aXZpdHkiLCJuQ29tcG9uZW50cyIsIm5lZ2F0aXZlU2FtcGxlUmF0ZSIsInJlcHVsc2lvblN0cmVuZ3RoIiwic2V0T3BNaXhSYXRpbyIsInNwcmVhZCIsInRyYW5zZm9ybVF1ZXVlU2l6ZSIsInRhcmdldE1ldHJpYyIsInRhcmdldFdlaWdodCIsInRhcmdldE5OZWlnaGJvcnMiLCJldWNsaWRlYW4iLCJpc0luaXRpYWxpemVkIiwib3B0aW1pemF0aW9uU3RhdGUiLCJPcHRpbWl6YXRpb25TdGF0ZSIsInNldFBhcmFtIiwiaW5pdGlhbGl6ZUZpdCIsIm9wdGltaXplTGF5b3V0IiwiZml0QXN5bmMiLCJvcHRpbWl6ZUxheW91dEFzeW5jIiwic2V0U3VwZXJ2aXNlZFByb2plY3Rpb24iLCJzZXRQcmVjb21wdXRlZEtOTiIsImtubkluZGljZXMiLCJrbm5EaXN0YW5jZXMiLCJnZXRORXBvY2hzIiwia25uUmVzdWx0cyIsIm5lYXJlc3ROZWlnaGJvcnMiLCJmdXp6eVNpbXBsaWNpYWxTZXQiLCJtYWtlU2VhcmNoRm5zIiwic2VhcmNoR3JhcGgiLCJtYWtlU2VhcmNoR3JhcGgiLCJwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiIsImluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nIiwiaGVhZCIsInRhaWwiLCJlcG9jaHNQZXJTYW1wbGUiLCJpbml0aWFsaXplT3B0aW1pemF0aW9uIiwicHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AiLCJzZWFyY2giLCJrbm4iLCJkaXN0YW5jZXMiLCJuZWlnaGJvciIsInRvVHJhbnNmb3JtIiwicmF3RGF0YSIsImFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkiLCJzbW9vdGhLTk5EaXN0YW5jZSIsInNpZ21hcyIsInJob3MiLCJjb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyIsIm5vcm1lZCIsImNzck1hdHJpeCIsImluaXRUcmFuc2Zvcm0iLCJyZXNoYXBlMmQiLCJncmFwaE1heCIsIm1ha2VFcG9jaHNQZXJTYW1wbGUiLCJhc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMiLCJoZWFkRW1iZWRkaW5nIiwidGFpbEVtYmVkZGluZyIsImN1cnJlbnRFcG9jaCIsImZhckRpc3QiLCJjYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24iLCJvcHRpbWl6ZUxheW91dFN0ZXAiLCJnZXRFbWJlZGRpbmciLCJtZXRyaWNOTkRlc2NlbnQiLCJzcGFyc2VNYXRyaXgiLCJwcm9kTWF0cml4Iiwic2ltcGxpY2lhbFNldCIsInRhcmdldCIsInVua25vd25EaXN0IiwiaW50ZXJzZWN0aW9uIiwiZmFzdEludGVyc2VjdGlvbiIsInJlc2V0TG9jYWxDb25uZWN0aXZpdHkiLCJuSXRlciIsImJhbmR3aWR0aCIsImxvIiwiaGkiLCJtaWQiLCJpdGhEaXN0YW5jZXMiLCJub25aZXJvRGlzdHMiLCJpbnRlcnBvbGF0aW9uIiwibWVhbkl0aERpc3RhbmNlcyIsIm1lYW5EaXN0YW5jZXMiLCJncmFwaFZhbHVlcyIsImVudHJ5IiwidyIsInN0YXRlIiwibW92ZU90aGVyIiwiZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUiLCJlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHRTYW1wbGUiLCJpbml0aWFsQWxwaGEiLCJnYW1tYSIsImZpbmRBQlBhcmFtcyIsImN1cnJlbnQiLCJkaXN0U3F1YXJlZCIsInJEaXN0IiwiZ3JhZENvZWZmIiwiZ3JhZEQiLCJjbGlwIiwibk5lZ1NhbXBsZXMiLCJrXzEiLCJvdGhlcl8xIiwiZGlzdFNxdWFyZWRfMSIsImdyYWRDb2VmZl8xIiwiZXBvY2hDYWxsYmFjayIsImVwb2NoQ29tcGxldGVkIiwic2hvdWxkU3RvcCIsImlzRmluaXNoZWQiLCJzZXRUaW1lb3V0IiwiZXJyIiwiY29zaW5lIiwibm9ybVgiLCJub3JtWSIsImNsaXBWYWx1ZSIsInh2IiwibGluZWFyIiwieXYiLCJkZWZhdWx0IiwieiIsInZlYyIsInZlY18xIiwidmVjXzFfMSIsIml0ZW0iLCJvbmVzIiwibWF4MmQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJjaHVua0lkcyIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiZGVmaW5pdGlvbiIsImNodW5rSWQiLCJhbGwiLCJwcm9taXNlcyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsInByb3AiLCJ0b1N0cmluZ1RhZyIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsIm1vcmVNb2R1bGVzIiwicnVudGltZSJdLCJzb3VyY2VSb290IjoiIn0=