@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/168.js ADDED
@@ -0,0 +1,2 @@
1
+ var peptides;(()=>{"use strict";var t,e,r={1040:(t,e,r)=>{var n,s,i,o;r.d(e,{CF:()=>s,Qe:()=>o,W:()=>n,gk:()=>i}),function(t){t.Levenshtein="Levenshtein",t.JaroWinkler="Jaro-Winkler",t.Manhattan="Manhattan"}(n||(n={})),function(t){t.Euclidean="Euclidean"}(s||(s={})),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"}(i||(i={})),function(t){t.Vector="Vector",t.String="String",t.BitArray="BitArray",t.MacroMolecule="MacroMolecule"}(o||(o={}))},7168:(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);let s=Number.MIN_VALUE,i=Number.MAX_VALUE;for(let o=0;o<r;++o)for(let h=o;h<r;++h){const r=null==t[o]||null==t[h]||o===h?0:e(t[o],t[h]);n[o][h]=n[h][o]=r,r>s&&(s=r),r<i&&(i=r)}for(let t=0;t<r;++t)for(let e=t+1;e<r;++e)n[t][e]=n[e][t]=(n[t][e]-i)/(s-i);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=function(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}(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=r(1811),y=r(3979),v=r(5697),b=r(708),M=r(1040);const x={[M.CF.Euclidean]:f},S={[M.W.Levenshtein]:w.T,[M.W.JaroWinkler]:y.H$,[M.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}}},_={[M.gk.Tanimoto]:v.KR,[M.gk.Dice]:v._h,[M.gk.Asymmetric]:v.yU,[M.gk.BraunBlanquet]:v.Dz,[M.gk.Cosine]:v.Zd,[M.gk.Kulczynski]:v.s,[M.gk.McConnaughey]:v.aW,[M.gk.RogotGoldberg]:v.MI,[M.gk.Russel]:v.fX,[M.gk.Sokal]:v.NB,[M.gk.Hamming]:v.UX,[M.gk.Euclidean]:v.WI},E={[M.Qe.Vector]:{[M.CF.Euclidean]:x[M.CF.Euclidean]},[M.Qe.String]:{[M.W.Levenshtein]:S[M.W.Levenshtein],[M.W.JaroWinkler]:S[M.W.JaroWinkler],[M.W.Manhattan]:S[M.W.Manhattan]},[M.Qe.BitArray]:{[M.gk.Tanimoto]:_[M.gk.Tanimoto],[M.gk.Dice]:_[M.gk.Dice],[M.gk.Asymmetric]:_[M.gk.Asymmetric],[M.gk.BraunBlanquet]:_[M.gk.BraunBlanquet],[M.gk.Cosine]:_[M.gk.Cosine],[M.gk.Kulczynski]:_[M.gk.Kulczynski],[M.gk.McConnaughey]:_[M.gk.McConnaughey],[M.gk.RogotGoldberg]:_[M.gk.RogotGoldberg],[M.gk.Russel]:_[M.gk.Russel],[M.gk.Sokal]:_[M.gk.Sokal]},[M.Qe.MacroMolecule]:{[b.U.HAMMING]:b.o[b.U.HAMMING],[b.U.LEVENSHTEIN]:b.o[b.U.LEVENSHTEIN],[b.U.NEEDLEMANN_WUNSCH]:b.o[b.U.NEEDLEMANN_WUNSCH]}},k=Object.keys(E).reduce(((t,e)=>{for(const r of Object.keys(E[e]))t[r]=e;return t}),{});class N{constructor(t){this.method=t,this.dataType=k[t]}getMeasure(t){const e=E;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,k[r]==M.Qe.MacroMolecule.toString()?e[this.dataType][this.method](t):e[this.dataType][this.method];var r}static getMetricByDataType(t){return Object.keys(E[t])}static get availableMeasures(){return Object.keys(E)}}class R{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=R._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 R(t._length);r._length=t._length,r._data=R._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 R(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 R(t);for(let n=0;n<t;++n)r.setBit(n,e(n));return r._version=0,r}static fromString(t){return R.fromSeq(t.length,(e=>"1"==t.charAt(e)))}static fromUint32Array(t,e){const r=new R(t);return r._data=e,r}static fromBytes(t){const e=t.length,r=new R(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 R(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 R.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+=R._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+=R._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+=R._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+=R._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=R._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=R._lastOnBit[t>>>24];if(r>=0)return r+32*n+e}}return-1}}var I;R._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]),R._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]),R._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]),function(t){t.UMAP="UMAP",t.T_SNE="t-SNE"}(I||(I={}));class A{constructor(t){this.data=t.data}}const z={UMAP:class extends A{constructor(t){super(t),a("distanceFn"in t),this.distanceFn=t.distanceFn,this.vectors=new Array(this.data.length).fill(0).map(((t,e)=>[e])),this.usingDistanceMatrix=!(!t.preCalculateDistanceMatrix&&this.data.length>1e4),this.usingDistanceMatrix?(this.distanceMatrix=Array(this.data.length).fill(0).map((()=>new Float32Array(this.data.length).fill(0))),t.distanceFn=this._encodedDistanceMatrix.bind(this)):t.distanceFn=this._encodedDistance.bind(this),this.data.length<15&&(t.nNeighbors=this.data.length-1),this.reducer=new n.u(t)}_encodedDistanceMatrix(t,e){return this.distanceMatrix[t[0]][e[0]]}_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.usingDistanceMatrix&&(this.distanceMatrix=g(this.data,this.distanceFn));const t=this.reducer.fit(this.vectors);return Object.assign({embedding:(e=t,new Array(e.length).fill(0).map(((t,r)=>i.OW.from(e[r]))))},this.distanceMatrix?{distance:this.distanceMatrix}:{});var e}},"t-SNE":class extends A{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 A{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 A{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 A{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 C{constructor(t,e,r,n){var s;const i=new N(r).getMeasure();let o={};if("BitArray"==k[r])for(let e=0;e<t.length;++e)t[e]=new R(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 z[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(E[t])}static get availableMethods(){return Object.keys(z)}static get availableMetrics(){let t=[];return Object.values(E).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 C(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(6215);Object.defineProperty(e,"Z",{enumerable:!0,get:function(){return n.TSNE}})},6215:(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 k{static from1DArray(t,e,r){if(t*e!==r.length)throw new RangeError("data length does not match given dimensions");let n=new R(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 R(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 R(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 R(t,e)}static ones(t,e){return new R(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 R(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 R(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 R(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 k.isMatrix(t)?t:new R(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 R(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 R.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 R.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){k.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=R.checkMatrix(t);let e=this.rows,r=this.columns,n=t.columns,s=new R(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=R.checkMatrix(t);let e=new R(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=R.checkMatrix(t);let e=new R(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),k=(a+l)*(-c+g),N=(-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),F=(s-h)*(d-v),T=(o+h)*(-w+v),O=S+A+n*m,V=(r+n+s-i-o-l-u)*p+M+x+S+N+A+z,P=S+_+k+(r+n+s-o-h-a-l)*d+A+C+T,D=b+o*(-c+f+m-p-d-w+v)+M+S+A+C+F,j=b+M+x+S+h*y,B=A+C+F+T+i*g,L=S+_+E+l*(-c+g+m-p-d-w+y)+N+I+A,q=N+I+A+z+a*f,$=S+_+E+k+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=R.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=k.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(k.add(a,m),k.add(l,p),i,h),w=t(k.add(f,m),l,i,h),y=t(a,k.sub(c,p),i,h),v=t(m,k.sub(g,l),i,h),b=t(k.add(a,u),p,i,h),M=t(k.sub(f,a),k.add(l,c),i,h),x=t(k.sub(u,m),k.add(g,p),i,h),S=k.add(d,v);S.sub(b),S.add(x);let _=k.add(y,b),E=k.add(w,v),N=k.sub(d,w);N.add(y),N.add(M);let R=k.zeros(2*S.rows,2*S.columns);return R=R.setSubMatrix(S,0,0),R=R.setSubMatrix(_,S.rows,0),R=R.setSubMatrix(E,0,S.columns),R=R.setSubMatrix(N,S.rows,S.columns),R.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 R(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 R(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=R.checkMatrix(t);let e=this.rows,r=this.columns,n=t.rows,s=t.columns,i=new R(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=R.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(R.eye(r,r)),s=R.eye(e,e).kroneckerProduct(t);return n.add(s)}transpose(){let t=new R(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=N){for(let e=0;e<this.rows;e++)this.setRow(e,this.getRow(e).sort(t));return this}sortColumns(t=N){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 R(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 R(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 R(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=R.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 R(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 R(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 N(t,e){return t-e}k.prototype.klass="Matrix","undefined"!=typeof Symbol&&(k.prototype[Symbol.for("nodejs.util.inspect.custom")]=function(){return p(this)}),k.random=k.rand,k.randomInt=k.randInt,k.diagonal=k.diag,k.prototype.diagonal=k.prototype.diag,k.identity=k.eye,k.prototype.negate=k.prototype.neg,k.prototype.tensorProduct=k.prototype.kroneckerProduct;class R extends k{constructor(t,e){if(super(),R.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}}(k,R);class I extends k{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=R.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 R(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 R(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=R.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 R(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 R(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 F{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 R(r,c),p=new R(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=R.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=R.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(R.diag(t))}inverse(){let t=this.V,e=this.threshold,r=t.rows,n=t.columns,s=new R(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 R(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 R.diag(this.s)}}function T(t,e,r,n,s){let i=r*n*n,o=R.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 R(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 R(n)}(t,a),c=function(t,e=!1){return t=I.checkMatrix(t),e?new F(t).inverse():function(t,e,r=!1){return t=I.checkMatrix(t),e=I.checkMatrix(e),r?new F(t).solve(e):t.isSquare()?new A(t).solve(e):new C(t).solve(e)}(t,R.eye(t.rows))}(o.add(l.mmul(l.transpose())));return(e=(e=new R([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=T(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),k=t.length,N=E(g.reshape2d(_.indices,k,this.nNeighbors),g.reshape2d(_.values,k,this.nNeighbors),this.embedding),R=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/R?0:t})),x=u.eliminateZeros(x);var A=this.makeEpochsPerSample(x.getValues(),R),z=x.getRows(),C=x.getCols();return this.assignOptimizationStateParameters({headEmbedding:N,tailEmbedding:this.embedding,head:z,tail:C,currentEpoch:0,nEpochs:R,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],k=i[_],N=M(E,k),R=0;N>0&&(R=-2*p*d*Math.pow(N,d-1),R/=p*Math.pow(N,d)+1);for(var I=0;I<w;I++){var A=b(R*(E[I]-k[I]),4);E[I]+=A*f,u&&(k[I]+=-A*f)}h[x]+=o[x];for(var z=Math.floor((t-a[x])/l[x]),C=0;C<z;C++){var F=g.tauRandInt(v,this.random),T=i[F],O=M(E,T),V=0;if(O>0)V=2*m*d,V/=(.001+O)*(p*Math.pow(O,d)+1);else if(S===F)continue;for(I=0;I<w;I++)A=4,V>0&&(A=b(V*(E[I]-T[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(7168)));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={168: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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QUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakR6RCxFQUFTb0gsWUFBY0ksVUFBVS9ELEtBQUssRUFDakMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsSUFFakR6RCxFQUFTc0gsV0FBYUUsVUFBVS9ELEtBQUssRUFDaEMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDOUMsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFDN0MsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVBQUcsRUFBRyxFQUFHLEVB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RUFBVyxNQUFNLElBQUlwcUMsTUFBTSx5REFDaENvcUMsRUFBWUEsRUFBVU8sUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEYxQixFQUFvQnpvQyxFQUFJNHBDLEMsV0NkeEIsSUFBSVEsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTjNCLEVBQW9CNVksRUFBRXZ2QixFQUFJLENBQUM4b0MsRUFBU0UsS0FFL0JjLEVBQWdCaEIsSUFFbEJTLGNBQWNwQixFQUFvQnpvQyxFQUFJeW9DLEVBQW9CdDZCLEVBQUVpN0IsR0FFOUQsRUFHRCxJQUFJaUIsRUFBcUJ0aUMsS0FBMkIscUJBQUlBLEtBQTJCLHNCQUFLLEdBQ3BGdWlDLEVBQTZCRCxFQUFtQjcvQixLQUFLdUQsS0FBS3M4QixHQUM5REEsRUFBbUI3L0IsS0F2QkN0SixJQUNuQixJQUFLOG5DLEVBQVV1QixFQUFhQyxHQUFXdHBDLEVBQ3ZDLElBQUksSUFBSXduQyxLQUFZNkIsRUFDaEI5QixFQUFvQjdSLEVBQUUyVCxFQUFhN0IsS0FDckNELEVBQW9CL3JCLEVBQUVnc0IsR0FBWTZCLEVBQVk3QixJQUloRCxJQURHOEIsR0FBU0EsRUFBUS9CLEdBQ2RPLEVBQVM1b0MsUUFDZGdxQyxFQUFnQnBCLEVBQVMzSSxPQUFTLEVBQ25DaUssRUFBMkJwcEMsRUFBSyxDLEtoRG5CN0J2QyxFQUFPOHBDLEVBQW9CMzJCLEVBQy9CMjJCLEVBQW9CMzJCLEVBQUksSUFDaEIyMkIsRUFBb0J6NEIsRUFBRSxLQUFLNnZCLEtBQUtsaEMsR2lERHhDLElBQUltcUMsRUFBc0JMLEVBQW9CMzJCLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGNodW5rIGRlcGVuZGVuY2llcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzL2NvbnN0cy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9yYW5kb20uanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvc3BlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvcmVkdWNlLWRpbWVuc2lvbmFsaXR5LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3dvcmtlcnMvZGltZW5zaW9uYWxpdHktcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9Aa2Vja2VsdC90c25lL2xpYi90c25lLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvZXJyb3JDYWxjdWxhdGlvbi5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LXJlc2NhbGUvbm9kZV9tb2R1bGVzL2lzLWFueS1hcnJheS9saWItZXNtL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWFycmF5LW1heC9ub2RlX21vZHVsZXMvaXMtYW55LWFycmF5L2xpYi1lc20vaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL25vZGVfbW9kdWxlcy9pcy1hbnktYXJyYXkvbGliLWVzbS9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1hcnJheS1yZXNjYWxlL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWluL2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtYXJyYXktbWF4L2xpYi1lczYvaW5kZXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9pbnNwZWN0LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvdXRpbC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL21hdHJpeC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3N0YXQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9tYXRoT3BlcmF0aW9ucy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL3dyYXAvV3JhcHBlck1hdHJpeDJELmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvbHUuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy91dGlsLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLW1hdHJpeC9zcmMvZGMvcXIuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbWF0cml4L3NyYy9kYy9zdmQuanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvbWwtbGV2ZW5iZXJnLW1hcnF1YXJkdC9zcmMvc3RlcC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9tbC1tYXRyaXgvc3JjL2RlY29tcG9zaXRpb25zLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL21sLWxldmVuYmVyZy1tYXJxdWFyZHQvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9oZWFwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy91bWFwLWpzL2Rpc3QvbWF0cml4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC9ubl9kZXNjZW50LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC90cmVlLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC91bWFwLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL3VtYXAtanMvZGlzdC91dGlscy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2Vuc3VyZSBjaHVuayIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fLmUoNDc4KS50aGVuKG5leHQpO1xufTsiLCJleHBvcnQgdmFyIFN0cmluZ01ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoU3RyaW5nTWV0cmljc05hbWVzKSB7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiTGV2ZW5zaHRlaW5cIl0gPSBcIkxldmVuc2h0ZWluXCI7XG4gICAgU3RyaW5nTWV0cmljc05hbWVzW1wiSmFyb1dpbmtsZXJcIl0gPSBcIkphcm8tV2lua2xlclwiO1xuICAgIFN0cmluZ01ldHJpY3NOYW1lc1tcIk1hbmhhdHRhblwiXSA9IFwiTWFuaGF0dGFuXCI7XG59KShTdHJpbmdNZXRyaWNzTmFtZXMgfHwgKFN0cmluZ01ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgdmFyIFZlY3Rvck1ldHJpY3NOYW1lcztcbihmdW5jdGlvbiAoVmVjdG9yTWV0cmljc05hbWVzKSB7XG4gICAgVmVjdG9yTWV0cmljc05hbWVzW1wiRXVjbGlkZWFuXCJdID0gXCJFdWNsaWRlYW5cIjtcbn0pKFZlY3Rvck1ldHJpY3NOYW1lcyB8fCAoVmVjdG9yTWV0cmljc05hbWVzID0ge30pKTtcbmV4cG9ydCB2YXIgQml0QXJyYXlNZXRyaWNzTmFtZXM7XG4oZnVuY3Rpb24gKEJpdEFycmF5TWV0cmljc05hbWVzKSB7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJUYW5pbW90b1wiXSA9IFwiVGFuaW1vdG9cIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkRpY2VcIl0gPSBcIkRpY2VcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkFzeW1tZXRyaWNcIl0gPSBcIkFzeW1tZXRyaWNcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIkJyYXVuQmxhbnF1ZXRcIl0gPSBcIkJyYXVuLUJsYW5xdWV0XCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJDb3NpbmVcIl0gPSBcIkNvc2luZVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiS3VsY3p5bnNraVwiXSA9IFwiS3VsY3p5bnNraVwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiTWNDb25uYXVnaGV5XCJdID0gXCJNYy1Db25uYXVnaGV5XCI7XG4gICAgQml0QXJyYXlNZXRyaWNzTmFtZXNbXCJSb2dvdEdvbGRiZXJnXCJdID0gXCJSb2dvdC1Hb2xkYmVyZ1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiUnVzc2VsXCJdID0gXCJSdXNzZWxcIjtcbiAgICBCaXRBcnJheU1ldHJpY3NOYW1lc1tcIlNva2FsXCJdID0gXCJTb2thbFwiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiSGFtbWluZ1wiXSA9IFwiSGFtbWluZ1wiO1xuICAgIEJpdEFycmF5TWV0cmljc05hbWVzW1wiRXVjbGlkZWFuXCJdID0gXCJFdWNsaWRlYW5cIjtcbn0pKEJpdEFycmF5TWV0cmljc05hbWVzIHx8IChCaXRBcnJheU1ldHJpY3NOYW1lcyA9IHt9KSk7XG5leHBvcnQgdmFyIERpc3RhbmNlTWV0cmljc1N1YmplY3RzO1xuKGZ1bmN0aW9uIChEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cykge1xuICAgIERpc3RhbmNlTWV0cmljc1N1YmplY3RzW1wiVmVjdG9yXCJdID0gXCJWZWN0b3JcIjtcbiAgICBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0c1tcIlN0cmluZ1wiXSA9IFwiU3RyaW5nXCI7XG4gICAgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHNbXCJCaXRBcnJheVwiXSA9IFwiQml0QXJyYXlcIjtcbiAgICBEaXN0YW5jZU1ldHJpY3NTdWJqZWN0c1tcIk1hY3JvTW9sZWN1bGVcIl0gPSBcIk1hY3JvTW9sZWN1bGVcIjtcbn0pKERpc3RhbmNlTWV0cmljc1N1YmplY3RzIHx8IChEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cyA9IHt9KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZMjl1YzNSekxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWTI5dWMzUnpMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxFMUJRVTBzUTBGQlRpeEpRVUZaTEd0Q1FVbFVPMEZCU2tnc1YwRkJXU3hyUWtGQmEwSTdTVUZETVVJc2FVUkJRVEpDTEVOQlFVRTdTVUZETTBJc2EwUkJRVFJDTEVOQlFVRTdTVUZETlVJc05rTkJRWFZDTEVOQlFVRTdRVUZEZWtJc1EwRkJReXhGUVVwVExHdENRVUZyUWl4TFFVRnNRaXhyUWtGQmEwSXNVVUZKTTBJN1FVRkZSQ3hOUVVGTkxFTkJRVTRzU1VGQldTeHJRa0ZGV0R0QlFVWkVMRmRCUVZrc2EwSkJRV3RDTzBsQlF6VkNMRFpEUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRkdWeXhyUWtGQmEwSXNTMEZCYkVJc2EwSkJRV3RDTEZGQlJUZENPMEZCUlVRc1RVRkJUU3hEUVVGT0xFbEJRVmtzYjBKQllWZzdRVUZpUkN4WFFVRlpMRzlDUVVGdlFqdEpRVU01UWl3MlEwRkJjVUlzUTBGQlFUdEpRVU55UWl4eFEwRkJZU3hEUVVGQk8wbEJRMklzYVVSQlFYbENMRU5CUVVFN1NVRkRla0lzZDBSQlFXZERMRU5CUVVFN1NVRkRhRU1zZVVOQlFXbENMRU5CUVVFN1NVRkRha0lzYVVSQlFYbENMRU5CUVVFN1NVRkRla0lzYzBSQlFUaENMRU5CUVVFN1NVRkRPVUlzZDBSQlFXZERMRU5CUVVFN1NVRkRhRU1zZVVOQlFXbENMRU5CUVVFN1NVRkRha0lzZFVOQlFXVXNRMEZCUVR0SlFVTm1MREpEUVVGdFFpeERRVUZCTzBsQlEyNUNMQ3REUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRmlWeXh2UWtGQmIwSXNTMEZCY0VJc2IwSkJRVzlDTEZGQllTOUNPMEZCUlVRc1RVRkJUU3hEUVVGT0xFbEJRVmtzZFVKQlMxZzdRVUZNUkN4WFFVRlpMSFZDUVVGMVFqdEpRVU5xUXl3MFEwRkJhVUlzUTBGQlFUdEpRVU5xUWl3MFEwRkJhVUlzUTBGQlFUdEpRVU5xUWl4blJFRkJjVUlzUTBGQlFUdEpRVU55UWl3d1JFRkJLMElzUTBGQlFUdEJRVU5xUXl4RFFVRkRMRVZCVEZjc2RVSkJRWFZDTEV0QlFYWkNMSFZDUVVGMVFpeFJRVXRzUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENCbGJuVnRJRk4wY21sdVowMWxkSEpwWTNOT1lXMWxjeUI3WEc0Z0lDQWdUR1YyWlc1emFIUmxhVzRnUFNBblRHVjJaVzV6YUhSbGFXNG5MRnh1SUNBZ0lFcGhjbTlYYVc1cmJHVnlJRDBnSjBwaGNtOHRWMmx1YTJ4bGNpY3NYRzRnSUNBZ1RXRnVhR0YwZEdGdUlEMGdKMDFoYm1oaGRIUmhiaWNzWEc0Z0lIMWNiaUFnWEc0Z0lHVjRjRzl5ZENCbGJuVnRJRlpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeUI3WEc0Z0lDQWdSWFZqYkdsa1pXRnVJRDBnSjBWMVkyeHBaR1ZoYmljc1hHNGdJSDFjYmlBZ1hHNGdJR1Y0Y0c5eWRDQmxiblZ0SUVKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWeklIdGNiaUFnSUNCVVlXNXBiVzkwYnlBOUlDZFVZVzVwYlc5MGJ5Y3NYRzRnSUNBZ1JHbGpaU0E5SUNkRWFXTmxKeXhjYmlBZ0lDQkJjM2x0YldWMGNtbGpJRDBnSjBGemVXMXRaWFJ5YVdNbkxGeHVJQ0FnSUVKeVlYVnVRbXhoYm5GMVpYUWdQU0FuUW5KaGRXNHRRbXhoYm5GMVpYUW5MRnh1SUNBZ0lFTnZjMmx1WlNBOUlDZERiM05wYm1VbkxGeHVJQ0FnSUV0MWJHTjZlVzV6YTJrZ1BTQW5TM1ZzWTNwNWJuTnJhU2NzWEc0Z0lDQWdUV05EYjI1dVlYVm5hR1Y1SUQwZ0owMWpMVU52Ym01aGRXZG9aWGtuTEZ4dUlDQWdJRkp2WjI5MFIyOXNaR0psY21jZ1BTQW5VbTluYjNRdFIyOXNaR0psY21jbkxGeHVJQ0FnSUZKMWMzTmxiQ0E5SUNkU2RYTnpaV3duTEZ4dUlDQWdJRk52YTJGc0lEMGdKMU52YTJGc0p5eGNiaUFnSUNCSVlXMXRhVzVuSUQwZ0owaGhiVzFwYm1jbkxGeHVJQ0FnSUVWMVkyeHBaR1ZoYmlBOUlDZEZkV05zYVdSbFlXNG5MRnh1SUNCOVhHNWNiaUFnWlhod2IzSjBJR1Z1ZFcwZ1JHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE1nZTF4dUlDQWdJRlpsWTNSdmNpQTlJQ2RXWldOMGIzSW5MRnh1SUNBZ0lGTjBjbWx1WnlBOUlDZFRkSEpwYm1jbkxGeHVJQ0FnSUVKcGRFRnljbUY1SUQwZ0owSnBkRUZ5Y21GNUp5eGNiaUFnSUNCTllXTnliMDF2YkdWamRXeGxJRDBnSjAxaFkzSnZUVzlzWldOMWJHVW5YRzRnSUgxY2JpQWdJbDE5IiwiLyoqXG4gKiBHZW5lcmF0ZXMgc2luZ2xlIHJhbmRvbSBmbG9hdCBmcm9tIDAgdG8gcmFuZ2UuXG4gKlxuICogQGV4cG9ydFxuICogQHBhcmFtIHtudW1iZXJ9IHJhbmdlIE1heCBnZW5lcmF0aW5nIHZhbHVlLlxuICogQHJldHVybiB7bnVtYmVyfSBBIHJhbmRvbSBmbG9hdCBnZW5lcmF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21GbG9hdChyYW5nZSkge1xuICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogcmFuZ2U7XG59XG4vKipcbiAqIEdlbmVyYXRlcyBzaW5nbGUgcmFuZG9tIGludGVnZXIgZnJvbSAwIHRvIHJhbmdlLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7bnVtYmVyfSByYW5nZSBNYXggZ2VuZXJhdGluZyB2YWx1ZS5cbiAqIEByZXR1cm4ge251bWJlcn0gQSByYW5kb20gaW50ZWdlciBnZW5lcmF0ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByYW5kb21JbnQocmFuZ2UpIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihyYW5kb21GbG9hdChyYW5nZSkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21GdVpHOXRMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaWNtRnVaRzl0TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVlVGQlZTeFhRVUZYTEVOQlFVTXNTMEZCWVR0SlFVTjJReXhQUVVGUExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4TFFVRkxMRU5CUVVNN1FVRkRMMElzUTBGQlF6dEJRVVZFT3pzN096czdSMEZOUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUzBGQllUdEpRVU55UXl4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVjBGQlZ5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkRlRU1zUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJaThxS2x4dUlDb2dSMlZ1WlhKaGRHVnpJSE5wYm1kc1pTQnlZVzVrYjIwZ1pteHZZWFFnWm5KdmJTQXdJSFJ2SUhKaGJtZGxMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0J5WVc1blpTQk5ZWGdnWjJWdVpYSmhkR2x1WnlCMllXeDFaUzVjYmlBcUlFQnlaWFIxY200Z2UyNTFiV0psY24wZ1FTQnlZVzVrYjIwZ1pteHZZWFFnWjJWdVpYSmhkR1ZrTGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdjbUZ1Wkc5dFJteHZZWFFvY21GdVoyVTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUhKbGRIVnliaUJOWVhSb0xuSmhibVJ2YlNncElDb2djbUZ1WjJVN1hHNTlYRzVjYmk4cUtseHVJQ29nUjJWdVpYSmhkR1Z6SUhOcGJtZHNaU0J5WVc1a2IyMGdhVzUwWldkbGNpQm1jbTl0SURBZ2RHOGdjbUZ1WjJVdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlISmhibWRsSUUxaGVDQm5aVzVsY21GMGFXNW5JSFpoYkhWbExseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JCSUhKaGJtUnZiU0JwYm5SbFoyVnlJR2RsYm1WeVlYUmxaQzVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlISmhibVJ2YlVsdWRDaHlZVzVuWlRvZ2JuVnRZbVZ5S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdjbVYwZFhKdUlFMWhkR2d1Wm14dmIzSW9jbUZ1Wkc5dFJteHZZWFFvY21GdVoyVXBLVHRjYm4xY2JpSmRmUT09IiwiaW1wb3J0IHsgVmVjdG9yIH0gZnJvbSAnLi90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyByYW5kb21GbG9hdCwgcmFuZG9tSW50IH0gZnJvbSAnLi9yYW5kb20nO1xuLyoqXG4gKiBBc3NlcnRzIGEgY29uZGl0aW9uIGJ5IHRocm93aW5nIGFuIEVycm9yLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2NvbmRpdGlvbj1mYWxzZV0gQ29uZGl0aW9uIHRvIGFzc2VydC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZT0nQXNzZXJ0aW9uIGVycm9yLiddIE1lc3NhZ2UgdG8gb3V0cHV0LlxuICogQHRocm93cyB7RXJyb3J9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnQoY29uZGl0aW9uID0gZmFsc2UsIG1lc3NhZ2UgPSAnQXNzZXJ0aW9uIGVycm9yLicpIHtcbiAgICBpZiAoIWNvbmRpdGlvbilcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xufVxuLyoqXG4gKiBDcmVhdGVzIG5ldyB0d28tZGltZW5zaW9uYWwgYXJyYXkgYW5kIGZpbGxzIGl0IHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBkaW1lbnNpb24xIFRoZSBmaXJzdCBkaW1lbnNpb24gb2YgdGhlIGNvb3JkaW5hdGVzIChudW1iZXIgb2Ygcm93cykuXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgY29vcmRpbmF0ZXMgKG51bWJlciBvZiBjb2x1bW5zKS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZmlsbD0wXSBBIHZhbHVlIHRvIGZpbGwgdGhlIGNvb3JkaW5hdGVzIHdpdGguXG4gKiBAcmV0dXJuIHtDb29yZGluYXRlc30gQSB0d28tZGltZW5zaW9uYWwgZmlsbGVkIHdpdGggdGhlIHZhbHVlIGdpdmVuLlxuICogQHRvZG8gTWlnaHQgYmUgc2xvdyBzaW5jZSB1c2VkIEFycmF5Lm1hcC4gUHJvYmFibHkgbmVlZHMgcGVyZm9ybWFuY2UgcmV2aXNpb24uXG4gKi9cbmZ1bmN0aW9uIGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yLCBmaWxsID0gMCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkoZGltZW5zaW9uMSkuZmlsbChmaWxsKS5tYXAoKCkgPT4gKG5ldyBWZWN0b3IoZGltZW5zaW9uMikuZmlsbChmaWxsKSkpO1xufVxuLyoqXG4gKiBUcmFuc3Bvc2UgbWF0cml4LlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXggVGhlIG1hdHJpeCB0byBiZSB0cmFuc3Bvc2VkLlxuICogQHJldHVybiB7TWF0cml4fSBUcmFuc3Bvc2VkIG1hdHJpeC5cbiAqIEB0b2RvIE1pZ2h0IGJlIHNsb3cgc2luY2UgdXNlZCBBcnJheS5tYXAuIFByb2JhYmx5IG5lZWRzIHBlcmZvcm1hbmNlIHJldmlzaW9uLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNwb3NlTWF0cml4KG1hdHJpeCkge1xuICAgIHJldHVybiBuZXcgQXJyYXkobWF0cml4WzBdLmxlbmd0aCkuZmlsbCgwKVxuICAgICAgICAubWFwKChfLCBpKSA9PiAobmV3IFZlY3RvcihtYXRyaXgubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaikgPT4gKG1hdHJpeFtqXVtpXSkpKSk7XG59XG4vKipcbiAqIEFkZHMgdHdvIHZlY3RvcnMgd2l0aCB0aGUgc2Vjb25kIG9uZSB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSBnaXZlbiByYXRpby5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7VmVjdG9yfSBxIFRoZSBzZWNvbmQgdmVjdG9yIHRvIGFkZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbXVsdGlwbGllcj0xXSBBIG11bHRpcGxpZXIgdG8gYmUgdXNlZCBiZWZvcmUgdGhlIHNlY29uZCB2ZWN0b3IgaXMgYWRkZWQuXG4gKiBAcmV0dXJuIHtWZWN0b3J9IE5ldyB2ZWN0b3IgY29udGFpbmVkIHRoZSByZXN1bHQgb2Ygb3BlcmF0aW9uIHArbXVsdGlwbGllcipxLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yQWRkKHAsIHEsIG11bHRpcGxpZXIgPSAxKSB7XG4gICAgY29uc3Qgbkl0ZW1zID0gcC5sZW5ndGg7XG4gICAgYXNzZXJ0KG5JdGVtcyA9PSBxLmxlbmd0aCwgJ1ZlY3RvciBsZW5ndGhzIGRvIG5vdCBtYXRjaC4nKTtcbiAgICBjb25zdCB0b3RhbCA9IG5ldyBWZWN0b3Iobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHAubGVuZ3RoOyArK2kpXG4gICAgICAgIHRvdGFsW2ldID0gcFtpXSArIG11bHRpcGxpZXIgKiBxW2ldO1xuICAgIHJldHVybiB0b3RhbDtcbn1cbi8qKlxuICogU3VtcyB0aGUgdmVjdG9yJ3MgaXRlbXMuXG4gKlxuICogQHBhcmFtIHtWZWN0b3J9IHYgVGhlIHZlY3RvciB0byBiZSBzdW1tZWQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZWN0b3IncyBpdGVtcyBzdW0uXG4gKi9cbmZ1bmN0aW9uIGl0ZW1zU3VtKHYpIHtcbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWwgKz0gdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG4vKipcbiAqIFN1cWFyZXMgdGhlIHZlY3RvcidzIGl0ZW1zLlxuICpcbiAqIEBwYXJhbSB7VmVjdG9yfSB2IFRoZSB2ZWN0b3IgdG8gc3F1YXJlLlxuICogQHJldHVybiB7VmVjdG9yfSBBIG5ldyB2ZWN0b3IgY29udGFpbmluZyB0aGUgb3JpZ2luYWwncyBpdGVtcyBzcXVhcmVkLlxuICovXG5mdW5jdGlvbiB2ZWN0b3JTcXVhcmUodikge1xuICAgIGNvbnN0IG5JdGVtcyA9IHYubGVuZ3RoO1xuICAgIGNvbnN0IHRvdGFsID0gbmV3IFZlY3RvcihuSXRlbXMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSlcbiAgICAgICAgdG90YWxbaV0gPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gdG90YWw7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yTGVuZ3RoKHYpIHtcbiAgICBsZXQgc3FyU3VtID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyBpKyspXG4gICAgICAgIHNxclN1bSArPSB2W2ldICogdltpXTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxclN1bSk7XG59XG5leHBvcnQgZnVuY3Rpb24gdmVjdG9yRG90UHJvZHVjdCh2MSwgdjIpIHtcbiAgICBpZiAodjEubGVuZ3RoICE9IHYyLmxlbmd0aClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgZGltZW5zaW9uYWxpdHkgb2YgdGhlIHZlY3RvcnMgbXVzdCBtYXRjaCcpO1xuICAgIGxldCBwcm9kID0gMDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYxLmxlbmd0aDsgaSsrKVxuICAgICAgICBwcm9kICs9IHYxW2ldICogdjJbaV07XG4gICAgcmV0dXJuIHByb2Q7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBtYXRyaXggZmlsbGVkIHdpdGggcmFuZG9tIGZsb2F0aW5nIHBvaW50IHZhbHVlcy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMSBUaGUgZmlyc3QgZGltZW5zaW9uIG9mIHRoZSBtYXRyaXguXG4gKiBAcGFyYW0ge251bWJlcn0gZGltZW5zaW9uMiBUaGUgc2Vjb25kIGRpbWVuc2lvbiBvZiB0aGUgbWF0cml4LlxuICogQHBhcmFtIHtudW1iZXJ9IFtzY2FsZT0xLl0gTWF4IHZhbHVlIGdpdmVuIGJ5IHJhbmRvbSBnZW5lcmF0b3IuXG4gKiBAcmV0dXJuIHtNYXRyaXh9IEEgbmV3IG1hdHJpeCBmaWxsZWQgd2l0aCByYW5kb20gZmxvYXRpbmcgcG9pbnQgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbGxSYW5kb21NYXRyaXgoZGltZW5zaW9uMSwgZGltZW5zaW9uMiwgc2NhbGUgPSAxLikge1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhkaW1lbnNpb24xLCBkaW1lbnNpb24yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbWVuc2lvbjE7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGRpbWVuc2lvbjI7ICsrailcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IHJhbmRvbUZsb2F0KHNjYWxlKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbi8qKlxuICogQ2FsY3VsYXRlcyBFdWNsaWRlYW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9ycy5cbiAqXG4gKiBAZXhwb3J0XG4gKiBAcGFyYW0ge1ZlY3Rvcn0gcCBUaGUgZmlyc3QgdmVjdG9yLlxuICogQHBhcmFtIHtWZWN0b3J9IHEgVGhlIHNlY29uZCB2ZWN0b3IuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IEV1Y2xpZGVhbiBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBnaXZlbiB2ZWN0b3JzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UocCwgcSkge1xuICAgIGNvbnN0IGRpZmYgPSB2ZWN0b3JBZGQocCwgcSwgLTEpO1xuICAgIGNvbnN0IHNxZGlmZiA9IHZlY3RvclNxdWFyZShkaWZmKTtcbiAgICBjb25zdCBzcWRpZmZTdW1tID0gaXRlbXNTdW0oc3FkaWZmKTtcbiAgICByZXR1cm4gTWF0aC5zcXJ0KHNxZGlmZlN1bW0pO1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZGlzdGFuY2UgbWF0cml4IHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yc30gZGF0YSBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMuXG4gKiBAcGFyYW0ge0Rpc3RhbmNlTWV0cmljfSBkaXN0YW5jZSBDdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtNYXRyaXh9IENhbGN1bGF0ZWQgY3VzdG9tIGRpc3RhbmNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNEaXN0YW5jZU1hdHJpeChkYXRhLCBkaXN0YW5jZSkge1xuICAgIGNvbnN0IG5JdGVtcyA9IGRhdGEubGVuZ3RoO1xuICAgIGNvbnN0IG1hdHJpeCA9IGluaXRDb29yZGluYXRlcyhuSXRlbXMsIG5JdGVtcywgMCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgY29uc3QgZCA9IChkYXRhW2ldID09IG51bGwpIHx8IChkYXRhW2pdID09IG51bGwpID8gMCA6IGRpc3RhbmNlKGRhdGFbaV0sIGRhdGFbal0pO1xuICAgICAgICAgICAgbWF0cml4W2ldW2pdID0gbWF0cml4W2pdW2ldID0gZDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWF0cml4O1xufVxuLyoqXG4gKiBDcmVhdGVzIGEgZGlzdGFuY2UgbWF0cml4IHVzaW5nIGEgY3VzdG9tIGRpc3RhbmNlIGZ1bmN0aW9uLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7VmVjdG9yc30gZGF0YSBJbnB1dCB2ZWN0b3JzIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZXMuXG4gKiBAcGFyYW0ge0Rpc3RhbmNlTWV0cmljfSBkaXN0YW5jZSBDdXN0b20gZGlzdGFuY2UgZnVuY3Rpb24uXG4gKiBAcmV0dXJuIHtNYXRyaXh9IENhbGN1bGF0ZWQgY3VzdG9tIGRpc3RhbmNlIG1hdHJpeC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGNOb3JtYWxpemVkRGlzdGFuY2VNYXRyaXgoZGF0YSwgZGlzdGFuY2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBkYXRhLmxlbmd0aDtcbiAgICBjb25zdCBtYXRyaXggPSBpbml0Q29vcmRpbmF0ZXMobkl0ZW1zLCBuSXRlbXMsIDApO1xuICAgIGxldCBtYXggPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgIGxldCBtaW4gPSBOdW1iZXIuTUFYX1ZBTFVFO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbkl0ZW1zOyArK2kpIHtcbiAgICAgICAgZm9yIChsZXQgaiA9IGk7IGogPCBuSXRlbXM7ICsraikge1xuICAgICAgICAgICAgY29uc3QgZCA9IChkYXRhW2ldID09IG51bGwpIHx8IChkYXRhW2pdID09IG51bGwgfHwgaSA9PT0gaikgPyAwIDogZGlzdGFuY2UoZGF0YVtpXSwgZGF0YVtqXSk7XG4gICAgICAgICAgICBtYXRyaXhbaV1bal0gPSBtYXRyaXhbal1baV0gPSBkO1xuICAgICAgICAgICAgaWYgKGQgPiBtYXgpXG4gICAgICAgICAgICAgICAgbWF4ID0gZDtcbiAgICAgICAgICAgIGlmIChkIDwgbWluKVxuICAgICAgICAgICAgICAgIG1pbiA9IGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuSXRlbXM7ICsraSkge1xuICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBuSXRlbXM7ICsrailcbiAgICAgICAgICAgIG1hdHJpeFtpXVtqXSA9IG1hdHJpeFtqXVtpXSA9IChtYXRyaXhbaV1bal0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG59XG4vKiogR2VuZXJhdGVzIGFycmF5IGZyb20gYSByYW5nZSBbYmVnaW47IGVuZF0gb3IgW2JlZ2luOyBlbmQpIGlmIGVuZEV4Y2x1c2l2ZS4gKiovXG5leHBvcnQgZnVuY3Rpb24gZ2VuUmFuZ2UoYmVnaW4sIGVuZCwgZW5kRXhjbHVzaXZlID0gZmFsc2UpIHtcbiAgICBjb25zdCBuSXRlbXMgPSBlbmQgLSBiZWdpbiArIChlbmRFeGNsdXNpdmUgPyAwIDogMSk7XG4gICAgY29uc3Qgc2VyaWVzID0gbmV3IEludDMyQXJyYXkobkl0ZW1zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5JdGVtczsgKytpKVxuICAgICAgICBzZXJpZXNbaV0gPSBiZWdpbiArIGk7XG4gICAgcmV0dXJuIHNlcmllcztcbn1cbi8qKlxuICogUmV0dXJucyBvcmRlciBvZiB2YWx1ZXMgYXMgaWYgdGhleSBhcmUgc29ydGVkLlxuICpcbiAqIEBleHBvcnRcbiAqIEBwYXJhbSB7YW55W119IHZhbHVlcyBJbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3JldmVyc2U9ZmFsc2VdIFdoZXRoZXIgdG8gcmV0dXJuIHJldmVyc2VkIG9yZGVyLlxuICogQHJldHVybiB7bnVtYmVyW119IFRoZSBvcmRlciBjb21wdXRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFyZ1NvcnQodmFsdWVzLCByZXZlcnNlID0gZmFsc2UpIHtcbiAgICBjb25zdCBzb3J0Zm4gPSByZXZlcnNlID8gKGEsIGIpID0+IChiWzBdIC0gYVswXSkgOiAoYSwgYikgPT4gKGFbMF0gLSBiWzBdKTtcbiAgICBjb25zdCBkZWNvciA9ICh2LCBpKSA9PiBbdiwgaV07IC8vIHNldCBpbmRleCB0byB2YWx1ZVxuICAgIGNvbnN0IHVuZGVjb3IgPSAoYSkgPT4gYVsxXTsgLy8gbGVhdmUgb25seSBpbmRleFxuICAgIGNvbnN0IF9hcmdzb3J0ID0gKGFycikgPT4gYXJyLm1hcChkZWNvcikuc29ydChzb3J0Zm4pLm1hcCh1bmRlY29yKTtcbiAgICByZXR1cm4gX2FyZ3NvcnQodmFsdWVzKTtcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgaW5kZXhlcyBvZiB0aGUgbW9zdCBkaXZlcnNlIG9iamVjdHMgYWNjb3JkaW5nIHRvIHRoZSBkaXN0IGZ1bmN0aW9uXG4gKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIHRvdGFsIG51bWJlciBvZiBvYmplY3RzXG4gKiBAcGFyYW0ge251bWJlcn0gbiBudW1iZXIgb2YgZGl2ZXJzZSBlbGVtZW50cyB0byBmaW5kXG4gKiBAcGFyYW0geyhpMTogbnVtYmVyLCBpMjogbnVtYmVyKSA9PiBudW1iZXJ9IGRpc3QgYSBmdW5jdGlvbiB3aGljaCBjYWxjdWxhdGVzIGRpc3RhbmNlIGJldHdlZW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0d28gb2JqZWN0cyB1c2luZyB0aGVpciBpbmRleGVzXG4gKiBAcmV0dXJucyB7bnVtYmVyW119IFRoZSBpbmRleGVzIG9mIHRoZSBtb3N0IGRpdmVyc2Ugb2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGl2ZXJzZVN1YnNldChsZW5ndGgsIG4sIGRpc3QpIHtcbiAgICBmdW5jdGlvbiBtYXhCeSh2YWx1ZXMsIG9yZGVyQnkpIHtcbiAgICAgICAgbGV0IG1heFZhbHVlID0gbnVsbDtcbiAgICAgICAgbGV0IG1heE9yZGVyQnkgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50T3JkZXJCeSA9IG9yZGVyQnkoZWxlbWVudCk7XG4gICAgICAgICAgICBpZiAobWF4T3JkZXJCeSA9PSBudWxsIHx8IGVsZW1lbnRPcmRlckJ5ID4gbWF4T3JkZXJCeSkge1xuICAgICAgICAgICAgICAgIG1heFZhbHVlID0gZWxlbWVudDtcbiAgICAgICAgICAgICAgICBtYXhPcmRlckJ5ID0gZWxlbWVudE9yZGVyQnk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heFZhbHVlO1xuICAgIH1cbiAgICBjb25zdCBzdWJzZXQgPSBbcmFuZG9tSW50KGxlbmd0aCAtIDEpXTtcbiAgICBjb25zdCBjb21wbGVtZW50ID0gbmV3IFNldCgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICAgICAgaWYgKCFzdWJzZXQuaW5jbHVkZXMoaSkpXG4gICAgICAgICAgICBjb21wbGVtZW50LmFkZChpKTtcbiAgICB9XG4gICAgd2hpbGUgKHN1YnNldC5sZW5ndGggPCBuKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IG1heEJ5KGNvbXBsZW1lbnQudmFsdWVzKCksIChpKSA9PiBNYXRoLm1pbi5hcHBseShNYXRoLCBzdWJzZXQubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gZGlzdChpLCB2YWwpO1xuICAgICAgICB9KSkpO1xuICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICBzdWJzZXQucHVzaChpZHgpO1xuICAgICAgICAgICAgY29tcGxlbWVudC5kZWxldGUoaWR4KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3Vic2V0O1xufVxuLyoqXG4gKiBSZXR1cm5zIG5vcm1hbGl6ZWQgdmVjdG9yXG4gKiBAcGFyYW0ge1ZlY3Rvcn0gZGF0YSBudW1lcmljYWwgYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShkYXRhKSB7XG4gICAgbGV0IG1lYW4gPSAwO1xuICAgIGxldCBzdGQgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSlcbiAgICAgICAgbWVhbiArPSBkYXRhW2ldO1xuICAgIG1lYW4gLz0gZGF0YS5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKVxuICAgICAgICBzdGQgKz0gKGRhdGFbaV0gLSBtZWFuKSAqIChkYXRhW2ldIC0gbWVhbik7XG4gICAgc3RkID0gTWF0aC5zcXJ0KHN0ZCAvIGRhdGEubGVuZ3RoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpXG4gICAgICAgIGRhdGFbaV0gPSAoZGF0YVtpXSAtIG1lYW4pIC8gc3RkO1xuICAgIHJldHVybiBkYXRhO1xufVxuLyoqXG4gKiBGaW5kcyBzZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBsaXN0cy5cbiAqIEBwYXJhbSB7YW55W119IGEgVGhlIGZpcnN0IGxpc3QuXG4gKiBAcGFyYW0ge2FueVtdfSBiIFRoZSBzZWNvbmQgbGlzdC5cbiAqIEByZXR1cm4ge2FueVtdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGlmZmVyZW5jZShhLCBiKSB7XG4gICAgY29uc3QgYlNldCA9IG5ldyBTZXQoYik7XG4gICAgcmV0dXJuIEFycmF5LmZyb20obmV3IFNldChhLmZpbHRlcigoeCkgPT4gIWJTZXQuaGFzKHgpKSkudmFsdWVzKCkpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZG1WamRHOXlMVzl3WlhKaGRHbHZibk11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjJaV04wYjNJdGIzQmxjbUYwYVc5dWN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVZNc1RVRkJUU3hGUVVGMVF5eE5RVUZOTEhGQ1FVRnhRaXhEUVVGRE8wRkJRM3BHTEU5QlFVOHNSVUZCUXl4WFFVRlhMRVZCUVVVc1UwRkJVeXhGUVVGRExFMUJRVTBzVlVGQlZTeERRVUZETzBGQlJXaEVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNUVUZCVFN4RFFVRkRMRmxCUVhGQ0xFdEJRVXNzUlVGQlJTeFZRVUZyUWl4clFrRkJhMEk3U1VGRGNrWXNTVUZCU1N4RFFVRkRMRk5CUVZNN1VVRkRXaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMEZCUXpkQ0xFTkJRVU03UVVGRlJEczdPenM3T3pzN1IwRlJSenRCUVVOSUxGTkJRVk1zWlVGQlpTeERRVUZETEZWQlFXdENMRVZCUVVVc1ZVRkJhMElzUlVGQlJTeFBRVUZsTEVOQlFVTTdTVUZETDBVc1QwRkJUeXhKUVVGSkxFdEJRVXNzUTBGQlF5eFZRVUZWTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEJRVU42Uml4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN4bFFVRmxMRU5CUVVNc1RVRkJZenRKUVVNMVF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1pETEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEVOQlFVTXNTVUZCU1N4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzBGQlEzUkdMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3hUUVVGVExFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTXNSVUZCUlN4aFFVRnhRaXhEUVVGRE8wbEJRM0JGTEUxQlFVMHNUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRmVFSXNUVUZCVFN4RFFVRkRMRTFCUVUwc1NVRkJTU3hEUVVGRExFTkJRVU1zVFVGQlRTeEZRVUZGTERoQ1FVRTRRaXhEUVVGRExFTkJRVU03U1VGRk0wUXNUVUZCVFN4TFFVRkxMRWRCUVVjc1NVRkJTU3hOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZGYWtNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlF5OUNMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1ZVRkJWU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVVjBReXhQUVVGUExFdEJRVXNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkRzN096czdSMEZMUnp0QlFVTklMRk5CUVZNc1VVRkJVU3hEUVVGRExFTkJRVk03U1VGRGVrSXNTVUZCU1N4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJSV1FzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZhRUlzVDBGQlR5eExRVUZMTEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUlVRN096czdPMGRCUzBjN1FVRkRTQ3hUUVVGVExGbEJRVmtzUTBGQlF5eERRVUZUTzBsQlF6ZENMRTFCUVUwc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZEZUVJc1RVRkJUU3hMUVVGTExFZEJRVWNzU1VGQlNTeE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZha01zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRPMUZCUXk5Q0xFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhwQ0xFOUJRVThzUzBGQlN5eERRVUZETzBGQlEyWXNRMEZCUXp0QlFVVkVMRTFCUVUwc1ZVRkJWU3haUVVGWkxFTkJRVU1zUTBGQlV6dEpRVU53UXl4SlFVRkpMRTFCUVUwc1IwRkJWeXhEUVVGRExFTkJRVU03U1VGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJWeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJRM1pETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTNoQ0xFOUJRVThzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNelFpeERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR2RDUVVGblFpeERRVUZETEVWQlFWVXNSVUZCUlN4RlFVRlZPMGxCUTNKRUxFbEJRVWtzUlVGQlJTeERRVUZETEUxQlFVMHNTVUZCU1N4RlFVRkZMRU5CUVVNc1RVRkJUVHRSUVVONFFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMRGhEUVVFNFF5eERRVUZETEVOQlFVTTdTVUZEYkVVc1NVRkJTU3hKUVVGSkxFZEJRVmNzUTBGQlF5eERRVUZETzBsQlEzSkNMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVmNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU40UXl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0QlFVTmtMRU5CUVVNN1FVRkZSRHM3T3pzN096czdSMEZSUnp0QlFVTklMRTFCUVUwc1ZVRkJWU3huUWtGQlowSXNRMEZCUXl4VlFVRnJRaXhGUVVGRkxGVkJRV3RDTEVWQlFVVXNVVUZCWjBJc1JVRkJSVHRKUVVONlJpeE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRU5CUVVNc1ZVRkJWU3hGUVVGRkxGVkJRVlVzUTBGQlF5eERRVUZETzBsQlJYWkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGRGJrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEZWQlFWVXNSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkRha01zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGZEJRVmNzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXp0TFFVTnlRenRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3T3pzN096dEhRVTlITzBGQlEwZ3NUVUZCVFN4VlFVRlZMREJDUVVFd1FpeERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMGxCUXpkRUxFMUJRVTBzU1VGQlNTeEhRVUZITEZOQlFWTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYWtNc1RVRkJUU3hOUVVGTkxFZEJRVWNzV1VGQldTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFMUJRVTBzVlVGQlZTeEhRVUZITEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRKUVVOd1F5eFBRVUZQTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03UVVGREwwSXNRMEZCUXp0QlFVVkVPenM3T3pzN08wZEJUMGM3UVVGRFNDeE5RVUZOTEZWQlFWVXNhMEpCUVd0Q0xFTkJRVU1zU1VGQllTeEZRVUZGTEZGQlFYZENPMGxCUTNoRkxFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NaVUZCWlN4RFFVRkRMRTFCUVUwc1JVRkJSU3hOUVVGTkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVRc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFJRVU12UWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU51UXl4TlFVRk5MRU5CUVVNc1IwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRekZHTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEycERPMHRCUTBZN1NVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEJRVU5vUWl4RFFVRkRPMEZCUlVRN096czdPenM3UjBGUFJ6dEJRVU5JTEUxQlFVMHNWVUZCVlN3MFFrRkJORUlzUTBGQlF5eEpRVUZoTEVWQlFVVXNVVUZCZDBJN1NVRkRiRVlzVFVGQlRTeE5RVUZOTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJRenRKUVVNelFpeE5RVUZOTEUxQlFVMHNSMEZCUnl4bFFVRmxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnNSQ3hKUVVGSkxFZEJRVWNzUjBGQlJ5eE5RVUZOTEVOQlFVTXNVMEZCVXl4RFFVRkRPMGxCUXpOQ0xFbEJRVWtzUjBGQlJ5eEhRVUZITEUxQlFVMHNRMEZCUXl4VFFVRlRMRU5CUVVNN1NVRkRNMElzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0UlFVTXZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlF5OUNMRTFCUVUwc1EwRkJReXhIUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVVVGQlVTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTnlSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVOb1F5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SFFVRkhPMmRDUVVGRkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEY2tJc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ6dG5Ra0ZCUlN4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRM1JDTzB0QlEwWTdTVUZEUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRk8xRkJReTlDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRaUVVOcVF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRM0JGTzBsQlEwUXNUMEZCVHl4TlFVRk5MRU5CUVVNN1FVRkRhRUlzUTBGQlF6dEJRVVZFTEd0R1FVRnJSanRCUVVOc1JpeE5RVUZOTEZWQlFWVXNVVUZCVVN4RFFVRkRMRXRCUVdFc1JVRkJSU3hIUVVGWExFVkJRVVVzV1VGQldTeEhRVUZITEV0QlFVczdTVUZEZGtVc1RVRkJUU3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEhRVUZITEV0QlFVc3NSMEZCUnl4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOd1JDeE5RVUZOTEUxQlFVMHNSMEZCUnl4SlFVRkpMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVVYwUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NUVUZCVFN4RlFVRkZMRVZCUVVVc1EwRkJRenRSUVVNM1FpeE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVVY0UWl4UFFVRlBMRTFCUVUwc1EwRkJRenRCUVVOb1FpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeFBRVUZQTEVOQlFVTXNUVUZCWVN4RlFVRkZMRTlCUVU4c1IwRkJSeXhMUVVGTE8wbEJRM0JFTEUxQlFVMHNUVUZCVFN4SFFVRkhMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVN4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRlJMRVZCUVVVc1EwRkJVU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTjJSeXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVMHNSVUZCUlN4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc2NVSkJRWEZDTzBsQlEyeEZMRTFCUVUwc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlVTeEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eHRRa0ZCYlVJN1NVRkRka1FzVFVGQlRTeFJRVUZSTEVkQlFVY3NRMEZCUXl4SFFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRKUVVNeFJTeFBRVUZQTEZGQlFWRXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRCUVVNeFFpeERRVUZETzBGQlJVUTdPenM3T3pzN1IwRlBSenRCUVVOSUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhOUVVGakxFVkJRVVVzUTBGQlV5eEZRVUZGTEVsQlFYZERPMGxCUTJ4SExGTkJRVk1zUzBGQlN5eERRVUZETEUxQlFXZERMRVZCUVVVc1QwRkJPRUk3VVVGRE4wVXNTVUZCU1N4UlFVRlJMRWRCUVVjc1NVRkJTU3hEUVVGRE8xRkJRM0JDTEVsQlFVa3NWVUZCVlN4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVWMFFpeExRVUZMTEUxQlFVMHNUMEZCVHl4SlFVRkpMRTFCUVUwc1JVRkJSVHRaUVVNMVFpeE5RVUZOTEdOQlFXTXNSMEZCUnl4UFFVRlBMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4VlFVRlZMRWxCUVVrc1NVRkJTU3hKUVVGSkxHTkJRV01zUjBGQlJ5eFZRVUZWTEVWQlFVVTdaMEpCUTNKRUxGRkJRVkVzUjBGQlJ5eFBRVUZQTEVOQlFVTTdaMEpCUTI1Q0xGVkJRVlVzUjBGQlJ5eGpRVUZqTEVOQlFVTTdZVUZETjBJN1UwRkRSanRSUVVORUxFOUJRVThzVVVGQlVTeERRVUZETzBsQlEyeENMRU5CUVVNN1NVRkZSQ3hOUVVGTkxFMUJRVTBzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUXl4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFZEJRVWNzUlVGQlJTeERRVUZETzBsQlJUZENMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4TlFVRk5MRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3VVVGREwwSXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzSkNMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTMEZEY2tJN1NVRkZSQ3hQUVVGUExFMUJRVTBzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RlFVRkZPMUZCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZEWml4VlFVRlZMRU5CUVVNc1RVRkJUU3hGUVVFNFFpeEZRVU12UXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hGUVVGRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVXl4SFFVRkhMRVZCUVVVc1MwRkJTenRaUVVONFJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRFSXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMUFzU1VGQlNTeEhRVUZITEVWQlFVVTdXVUZEVUN4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycENMRlZCUVZVc1EwRkJReXhOUVVGTkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVMEZEZUVJN1MwRkRSanRKUVVORUxFOUJRVThzVFVGQlRTeERRVUZETzBGQlEyaENMRU5CUVVNN1FVRkZSRHM3TzBkQlIwYzdRVUZEU0N4TlFVRk5MRlZCUVZVc1UwRkJVeXhEUVVGRExFbEJRVms3U1VGRGNFTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRMklzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUlZvc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWxCUVVrc1NVRkJTU3hKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGYkVJc1NVRkJTU3hKUVVGSkxFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdTVUZGY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeERRVUZETzFGQlEyeERMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJRenRKUVVVM1F5eEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMGxCUlc1RExFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNRMEZCUXp0UlFVTnNReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRPMGxCUlc1RExFOUJRVThzU1VGQlNTeERRVUZETzBGQlEyUXNRMEZCUXp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGVkxHRkJRV0VzUTBGQlF5eERRVUZSTEVWQlFVVXNRMEZCVVR0SlFVTTVReXhOUVVGTkxFbEJRVWtzUjBGQlJ5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVONFFpeFBRVUZQTEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RFFVRkRPMEZCUTNKRkxFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTAxaGRISnBlQ3dnVm1WamRHOXlMQ0JEYjI5eVpHbHVZWFJsY3l3Z1ZtVmpkRzl5Y3l3Z1JHbHpkR0Z1WTJWTlpYUnlhV045SUdaeWIyMGdKeTR2ZEhsd1pTMWtaV05zWVhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUh0eVlXNWtiMjFHYkc5aGRDd2djbUZ1Wkc5dFNXNTBmU0JtY205dElDY3VMM0poYm1SdmJTYzdYRzVjYmk4cUtseHVJQ29nUVhOelpYSjBjeUJoSUdOdmJtUnBkR2x2YmlCaWVTQjBhSEp2ZDJsdVp5QmhiaUJGY25KdmNpNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMkp2YjJ4bFlXNTlJRnRqYjI1a2FYUnBiMjQ5Wm1Gc2MyVmRJRU52Ym1ScGRHbHZiaUIwYnlCaGMzTmxjblF1WEc0Z0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ1cyMWxjM05oWjJVOUowRnpjMlZ5ZEdsdmJpQmxjbkp2Y2k0blhTQk5aWE56WVdkbElIUnZJRzkxZEhCMWRDNWNiaUFxSUVCMGFISnZkM01nZTBWeWNtOXlmVnh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYTnpaWEowS0dOdmJtUnBkR2x2YmpvZ1ltOXZiR1ZoYmlBOUlHWmhiSE5sTENCdFpYTnpZV2RsT2lCemRISnBibWNnUFNBblFYTnpaWEowYVc5dUlHVnljbTl5TGljcElIdGNiaUFnYVdZZ0tDRmpiMjVrYVhScGIyNHBYRzRnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0cxbGMzTmhaMlVwTzF4dWZWeHVYRzR2S2lwY2JpQXFJRU55WldGMFpYTWdibVYzSUhSM2J5MWthVzFsYm5OcGIyNWhiQ0JoY25KaGVTQmhibVFnWm1sc2JITWdhWFFnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdScGJXVnVjMmx2YmpFZ1ZHaGxJR1pwY25OMElHUnBiV1Z1YzJsdmJpQnZaaUIwYUdVZ1kyOXZjbVJwYm1GMFpYTWdLRzUxYldKbGNpQnZaaUJ5YjNkektTNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JrYVcxbGJuTnBiMjR5SUZSb1pTQnpaV052Ym1RZ1pHbHRaVzV6YVc5dUlHOW1JSFJvWlNCamIyOXlaR2x1WVhSbGN5QW9iblZ0WW1WeUlHOW1JR052YkhWdGJuTXBMbHh1SUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUZ0bWFXeHNQVEJkSUVFZ2RtRnNkV1VnZEc4Z1ptbHNiQ0IwYUdVZ1kyOXZjbVJwYm1GMFpYTWdkMmwwYUM1Y2JpQXFJRUJ5WlhSMWNtNGdlME52YjNKa2FXNWhkR1Z6ZlNCQklIUjNieTFrYVcxbGJuTnBiMjVoYkNCbWFXeHNaV1FnZDJsMGFDQjBhR1VnZG1Gc2RXVWdaMmwyWlc0dVhHNGdLaUJBZEc5a2J5Qk5hV2RvZENCaVpTQnpiRzkzSUhOcGJtTmxJSFZ6WldRZ1FYSnlZWGt1YldGd0xpQlFjbTlpWVdKc2VTQnVaV1ZrY3lCd1pYSm1iM0p0WVc1alpTQnlaWFpwYzJsdmJpNWNiaUFxTDF4dVpuVnVZM1JwYjI0Z2FXNXBkRU52YjNKa2FXNWhkR1Z6S0dScGJXVnVjMmx2YmpFNklHNTFiV0psY2l3Z1pHbHRaVzV6YVc5dU1qb2diblZ0WW1WeUxDQm1hV3hzT2lCdWRXMWlaWElnUFNBd0tUb2dRMjl2Y21ScGJtRjBaWE1nZTF4dUlDQnlaWFIxY200Z2JtVjNJRUZ5Y21GNUtHUnBiV1Z1YzJsdmJqRXBMbVpwYkd3b1ptbHNiQ2t1YldGd0tDZ3BJRDArSUNodVpYY2dWbVZqZEc5eUtHUnBiV1Z1YzJsdmJqSXBMbVpwYkd3b1ptbHNiQ2twS1R0Y2JuMWNibHh1THlvcVhHNGdLaUJVY21GdWMzQnZjMlVnYldGMGNtbDRMbHh1SUNwY2JpQXFJRUJsZUhCdmNuUmNiaUFxSUVCd1lYSmhiU0I3VFdGMGNtbDRmU0J0WVhSeWFYZ2dWR2hsSUcxaGRISnBlQ0IwYnlCaVpTQjBjbUZ1YzNCdmMyVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN1RXRjBjbWw0ZlNCVWNtRnVjM0J2YzJWa0lHMWhkSEpwZUM1Y2JpQXFJRUIwYjJSdklFMXBaMmgwSUdKbElITnNiM2NnYzJsdVkyVWdkWE5sWkNCQmNuSmhlUzV0WVhBdUlGQnliMkpoWW14NUlHNWxaV1J6SUhCbGNtWnZjbTFoYm1ObElISmxkbWx6YVc5dUxseHVJQ292WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnZEhKaGJuTndiM05sVFdGMGNtbDRLRzFoZEhKcGVEb2dUV0YwY21sNEtUb2dUV0YwY21sNElIdGNiaUFnY21WMGRYSnVJRzVsZHlCQmNuSmhlU2h0WVhSeWFYaGJNRjB1YkdWdVozUm9LUzVtYVd4c0tEQXBYRzRnSUNBZ0xtMWhjQ2dvWHl3Z2FTa2dQVDRnS0c1bGR5QldaV04wYjNJb2JXRjBjbWw0TG14bGJtZDBhQ2t1Wm1sc2JDZ3dLUzV0WVhBb0tGOHNJR29wSUQwK0lDaHRZWFJ5YVhoYmFsMWJhVjBwS1NrcE8xeHVmVnh1WEc0dktpcGNiaUFxSUVGa1pITWdkSGR2SUhabFkzUnZjbk1nZDJsMGFDQjBhR1VnYzJWamIyNWtJRzl1WlNCMGJ5QmlaU0J0ZFd4MGFYQnNhV1ZrSUdKNUlIUm9aU0JuYVhabGJpQnlZWFJwYnk1Y2JpQXFYRzRnS2lCQVpYaHdiM0owWEc0Z0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y24wZ2NDQlVhR1VnWm1seWMzUWdkbVZqZEc5eUlIUnZJR0ZrWkM1Y2JpQXFJRUJ3WVhKaGJTQjdWbVZqZEc5eWZTQnhJRlJvWlNCelpXTnZibVFnZG1WamRHOXlJSFJ2SUdGa1pDNWNiaUFxSUVCd1lYSmhiU0I3Ym5WdFltVnlmU0JiYlhWc2RHbHdiR2xsY2oweFhTQkJJRzExYkhScGNHeHBaWElnZEc4Z1ltVWdkWE5sWkNCaVpXWnZjbVVnZEdobElITmxZMjl1WkNCMlpXTjBiM0lnYVhNZ1lXUmtaV1F1WEc0Z0tpQkFjbVYwZFhKdUlIdFdaV04wYjNKOUlFNWxkeUIyWldOMGIzSWdZMjl1ZEdGcGJtVmtJSFJvWlNCeVpYTjFiSFFnYjJZZ2IzQmxjbUYwYVc5dUlIQXJiWFZzZEdsd2JHbGxjaXB4TGx4dUlDb3ZYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdkbVZqZEc5eVFXUmtLSEE2SUZabFkzUnZjaXdnY1RvZ1ZtVmpkRzl5TENCdGRXeDBhWEJzYVdWeU9pQnVkVzFpWlhJZ1BTQXhLVG9nVm1WamRHOXlJSHRjYmlBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnY0M1c1pXNW5kR2c3WEc1Y2JpQWdZWE56WlhKMEtHNUpkR1Z0Y3lBOVBTQnhMbXhsYm1kMGFDd2dKMVpsWTNSdmNpQnNaVzVuZEdoeklHUnZJRzV2ZENCdFlYUmphQzRuS1R0Y2JseHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIQXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0J3VzJsZElDc2diWFZzZEdsd2JHbGxjaUFxSUhGYmFWMDdYRzVjYmlBZ2NtVjBkWEp1SUhSdmRHRnNPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlGTjFiWE1nZEdobElIWmxZM1J2Y2lkeklHbDBaVzF6TGx4dUlDcGNiaUFxSUVCd1lYSmhiU0I3Vm1WamRHOXlmU0IySUZSb1pTQjJaV04wYjNJZ2RHOGdZbVVnYzNWdGJXVmtMbHh1SUNvZ1FISmxkSFZ5YmlCN2JuVnRZbVZ5ZlNCVWFHVWdkbVZqZEc5eUozTWdhWFJsYlhNZ2MzVnRMbHh1SUNvdlhHNW1kVzVqZEdsdmJpQnBkR1Z0YzFOMWJTaDJPaUJXWldOMGIzSXBPaUJ1ZFcxaVpYSWdlMXh1SUNCc1pYUWdkRzkwWVd3Z1BTQXdPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkaTVzWlc1bmRHZzdJQ3NyYVNsY2JpQWdJQ0IwYjNSaGJDQXJQU0IyVzJsZE8xeHVYRzRnSUhKbGRIVnliaUIwYjNSaGJEdGNibjFjYmx4dUx5b3FYRzRnS2lCVGRYRmhjbVZ6SUhSb1pTQjJaV04wYjNJbmN5QnBkR1Z0Y3k1Y2JpQXFYRzRnS2lCQWNHRnlZVzBnZTFabFkzUnZjbjBnZGlCVWFHVWdkbVZqZEc5eUlIUnZJSE54ZFdGeVpTNWNiaUFxSUVCeVpYUjFjbTRnZTFabFkzUnZjbjBnUVNCdVpYY2dkbVZqZEc5eUlHTnZiblJoYVc1cGJtY2dkR2hsSUc5eWFXZHBibUZzSjNNZ2FYUmxiWE1nYzNGMVlYSmxaQzVjYmlBcUwxeHVablZ1WTNScGIyNGdkbVZqZEc5eVUzRjFZWEpsS0hZNklGWmxZM1J2Y2lrNklGWmxZM1J2Y2lCN1hHNGdJR052Ym5OMElHNUpkR1Z0Y3lBOUlIWXViR1Z1WjNSb08xeHVJQ0JqYjI1emRDQjBiM1JoYkNBOUlHNWxkeUJXWldOMGIzSW9ia2wwWlcxektUdGNibHh1SUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QXJLMmtwWEc0Z0lDQWdkRzkwWVd4YmFWMGdQU0IyVzJsZElDb2dkbHRwWFR0Y2JseHVJQ0J5WlhSMWNtNGdkRzkwWVd3N1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUIyWldOMGIzSk1aVzVuZEdnb2Rqb2dWbVZqZEc5eUtUb2diblZ0WW1WeUlIdGNiaUFnYkdWMElITnhjbE4xYlRvZ2JuVnRZbVZ5SUQwZ01EdGNiaUFnWm05eUlDaHNaWFFnYVRvZ2JuVnRZbVZ5SUQwZ01Ec2dhU0E4SUhZdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ2MzRnlVM1Z0SUNzOUlIWmJhVjBnS2lCMlcybGRPMXh1SUNCeVpYUjFjbTRnVFdGMGFDNXpjWEowS0hOeGNsTjFiU2s3WEc1OVhHNWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQjJaV04wYjNKRWIzUlFjbTlrZFdOMEtIWXhPaUJXWldOMGIzSXNJSFl5T2lCV1pXTjBiM0lwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvZGpFdWJHVnVaM1JvSUNFOUlIWXlMbXhsYm1kMGFDbGNiaUFnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvSjFSb1pTQmthVzFsYm5OcGIyNWhiR2wwZVNCdlppQjBhR1VnZG1WamRHOXljeUJ0ZFhOMElHMWhkR05vSnlrN1hHNGdJR3hsZENCd2NtOWtPaUJ1ZFcxaVpYSWdQU0F3TzF4dUlDQm1iM0lnS0d4bGRDQnBPaUJ1ZFcxaVpYSWdQU0F3T3lCcElEd2dkakV1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnY0hKdlpDQXJQU0IyTVZ0cFhTQXFJSFl5VzJsZE8xeHVJQ0J5WlhSMWNtNGdjSEp2WkR0Y2JuMWNibHh1THlvcVhHNGdLaUJEY21WaGRHVnpJR0VnYldGMGNtbDRJR1pwYkd4bFpDQjNhWFJvSUhKaGJtUnZiU0JtYkc5aGRHbHVaeUJ3YjJsdWRDQjJZV3gxWlhNdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRSEJoY21GdElIdHVkVzFpWlhKOUlHUnBiV1Z1YzJsdmJqRWdWR2hsSUdacGNuTjBJR1JwYldWdWMybHZiaUJ2WmlCMGFHVWdiV0YwY21sNExseHVJQ29nUUhCaGNtRnRJSHR1ZFcxaVpYSjlJR1JwYldWdWMybHZiaklnVkdobElITmxZMjl1WkNCa2FXMWxibk5wYjI0Z2IyWWdkR2hsSUcxaGRISnBlQzVjYmlBcUlFQndZWEpoYlNCN2JuVnRZbVZ5ZlNCYmMyTmhiR1U5TVM1ZElFMWhlQ0IyWVd4MVpTQm5hWFpsYmlCaWVTQnlZVzVrYjIwZ1oyVnVaWEpoZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JCSUc1bGR5QnRZWFJ5YVhnZ1ptbHNiR1ZrSUhkcGRHZ2djbUZ1Wkc5dElHWnNiMkYwYVc1bklIQnZhVzUwSUNCMllXeDFaWE11WEc0Z0tpOWNibVY0Y0c5eWRDQm1kVzVqZEdsdmJpQm1hV3hzVW1GdVpHOXRUV0YwY21sNEtHUnBiV1Z1YzJsdmJqRTZJRzUxYldKbGNpd2daR2x0Wlc1emFXOXVNam9nYm5WdFltVnlMQ0J6WTJGc1pUb2diblZ0WW1WeUlEMGdNUzRwT2lCTllYUnlhWGdnZTF4dUlDQmpiMjV6ZENCdFlYUnlhWGdnUFNCcGJtbDBRMjl2Y21ScGJtRjBaWE1vWkdsdFpXNXphVzl1TVN3Z1pHbHRaVzV6YVc5dU1pazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmthVzFsYm5OcGIyNHhPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdNRHNnYWlBOElHUnBiV1Z1YzJsdmJqSTdJQ3NyYWlsY2JpQWdJQ0FnSUcxaGRISnBlRnRwWFZ0cVhTQTlJSEpoYm1SdmJVWnNiMkYwS0hOallXeGxLVHRjYmlBZ2ZWeHVJQ0J5WlhSMWNtNGdiV0YwY21sNE8xeHVmVnh1WEc0dktpcGNiaUFxSUVOaGJHTjFiR0YwWlhNZ1JYVmpiR2xrWldGdUlHUnBjM1JoYm1ObElHSmxkSGRsWlc0Z2RIZHZJSFpsWTNSdmNuTXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUhCaGNtRnRJSHRXWldOMGIzSjlJSEFnVkdobElHWnBjbk4wSUhabFkzUnZjaTVjYmlBcUlFQndZWEpoYlNCN1ZtVmpkRzl5ZlNCeElGUm9aU0J6WldOdmJtUWdkbVZqZEc5eUxseHVJQ29nUUhKbGRIVnliaUI3Ym5WdFltVnlmU0JGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnWW1WMGQyVmxiaUIwYUdVZ1oybDJaVzRnZG1WamRHOXljeTVjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHTmhiR04xYkdGMFpVVjFZMnhwWkdWaGJrUnBjM1JoYm1ObEtIQTZJRlpsWTNSdmNpd2djVG9nVm1WamRHOXlLVG9nYm5WdFltVnlJSHRjYmlBZ1kyOXVjM1FnWkdsbVppQTlJSFpsWTNSdmNrRmtaQ2h3TENCeExDQXRNU2s3WEc0Z0lHTnZibk4wSUhOeFpHbG1aaUE5SUhabFkzUnZjbE54ZFdGeVpTaGthV1ptS1R0Y2JpQWdZMjl1YzNRZ2MzRmthV1ptVTNWdGJTQTlJR2wwWlcxelUzVnRLSE54WkdsbVppazdYRzRnSUhKbGRIVnliaUJOWVhSb0xuTnhjblFvYzNGa2FXWm1VM1Z0YlNrN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoSUdScGMzUmhibU5sSUcxaGRISnBlQ0IxYzJsdVp5QmhJR04xYzNSdmJTQmthWE4wWVc1alpTQm1kVzVqZEdsdmJpNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJR1JoZEdFZ1NXNXdkWFFnZG1WamRHOXljeUIwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJWekxseHVJQ29nUUhCaGNtRnRJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdaR2x6ZEdGdVkyVWdRM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JEWVd4amRXeGhkR1ZrSUdOMWMzUnZiU0JrYVhOMFlXNWpaU0J0WVhSeWFYZ3VYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCallXeGpSR2x6ZEdGdVkyVk5ZWFJ5YVhnb1pHRjBZVG9nVm1WamRHOXljeXdnWkdsemRHRnVZMlU2SUVScGMzUmhibU5sVFdWMGNtbGpLVG9nVFdGMGNtbDRJSHRjYmlBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnWkdGMFlTNXNaVzVuZEdnN1hHNGdJR052Ym5OMElHMWhkSEpwZUNBOUlHbHVhWFJEYjI5eVpHbHVZWFJsY3lodVNYUmxiWE1zSUc1SmRHVnRjeXdnTUNrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCdVNYUmxiWE03SUNzcmFTa2dlMXh1SUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUc1SmRHVnRjenNnS3l0cUtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCa09pQnVkVzFpWlhJZ1BTQW9aR0YwWVZ0cFhTQTlQU0J1ZFd4c0tTQjhmQ0FvWkdGMFlWdHFYU0E5UFNCdWRXeHNLU0EvSURBZ09pQmthWE4wWVc1alpTaGtZWFJoVzJsZExDQmtZWFJoVzJwZEtUdGNiaUFnSUNBZ0lHMWhkSEpwZUZ0cFhWdHFYU0E5SUcxaGRISnBlRnRxWFZ0cFhTQTlJR1E3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJSEpsZEhWeWJpQnRZWFJ5YVhnN1hHNTlYRzVjYmk4cUtseHVJQ29nUTNKbFlYUmxjeUJoSUdScGMzUmhibU5sSUcxaGRISnBlQ0IxYzJsdVp5QmhJR04xYzNSdmJTQmthWE4wWVc1alpTQm1kVzVqZEdsdmJpNWNiaUFxWEc0Z0tpQkFaWGh3YjNKMFhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJR1JoZEdFZ1NXNXdkWFFnZG1WamRHOXljeUIwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJWekxseHVJQ29nUUhCaGNtRnRJSHRFYVhOMFlXNWpaVTFsZEhKcFkzMGdaR2x6ZEdGdVkyVWdRM1Z6ZEc5dElHUnBjM1JoYm1ObElHWjFibU4wYVc5dUxseHVJQ29nUUhKbGRIVnliaUI3VFdGMGNtbDRmU0JEWVd4amRXeGhkR1ZrSUdOMWMzUnZiU0JrYVhOMFlXNWpaU0J0WVhSeWFYZ3VYRzRnS2k5Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCallXeGpUbTl5YldGc2FYcGxaRVJwYzNSaGJtTmxUV0YwY21sNEtHUmhkR0U2SUZabFkzUnZjbk1zSUdScGMzUmhibU5sT2lCRWFYTjBZVzVqWlUxbGRISnBZeWs2SUUxaGRISnBlQ0I3WEc0Z0lHTnZibk4wSUc1SmRHVnRjeUE5SUdSaGRHRXViR1Z1WjNSb08xeHVJQ0JqYjI1emRDQnRZWFJ5YVhnZ1BTQnBibWwwUTI5dmNtUnBibUYwWlhNb2JrbDBaVzF6TENCdVNYUmxiWE1zSURBcE8xeHVJQ0JzWlhRZ2JXRjRJRDBnVG5WdFltVnlMazFKVGw5V1FVeFZSVHRjYmlBZ2JHVjBJRzFwYmlBOUlFNTFiV0psY2k1TlFWaGZWa0ZNVlVVN1hHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYmtsMFpXMXpPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdhVHNnYWlBOElHNUpkR1Z0Y3pzZ0t5dHFLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmtPaUJ1ZFcxaVpYSWdQU0FvWkdGMFlWdHBYU0E5UFNCdWRXeHNLU0I4ZkNBb1pHRjBZVnRxWFNBOVBTQnVkV3hzSUh4OElHa2dQVDA5SUdvcElEOGdNQ0E2SUdScGMzUmhibU5sS0dSaGRHRmJhVjBzSUdSaGRHRmJhbDBwTzF4dUlDQWdJQ0FnYldGMGNtbDRXMmxkVzJwZElEMGdiV0YwY21sNFcycGRXMmxkSUQwZ1pEdGNiaUFnSUNBZ0lHbG1JQ2hrSUQ0Z2JXRjRLU0J0WVhnZ1BTQmtPMXh1SUNBZ0lDQWdhV1lnS0dRZ1BDQnRhVzRwSUcxcGJpQTlJR1E3WEc0Z0lDQWdmVnh1SUNCOVhHNGdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnYmtsMFpXMXpPeUFySzJrcElIdGNiaUFnSUNCbWIzSWdLR3hsZENCcUlEMGdhU0FySURFN0lHb2dQQ0J1U1hSbGJYTTdJQ3NyYWlsY2JpQWdJQ0FnSUcxaGRISnBlRnRwWFZ0cVhTQTlJRzFoZEhKcGVGdHFYVnRwWFNBOUlDaHRZWFJ5YVhoYmFWMWJhbDBnTFNCdGFXNHBJQzhnS0cxaGVDQXRJRzFwYmlrN1hHNGdJSDFjYmlBZ2NtVjBkWEp1SUcxaGRISnBlRHRjYm4xY2JseHVMeW9xSUVkbGJtVnlZWFJsY3lCaGNuSmhlU0JtY205dElHRWdjbUZ1WjJVZ1cySmxaMmx1T3lCbGJtUmRJRzl5SUZ0aVpXZHBianNnWlc1a0tTQnBaaUJsYm1SRmVHTnNkWE5wZG1VdUlDb3FMMXh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2RsYmxKaGJtZGxLR0psWjJsdU9pQnVkVzFpWlhJc0lHVnVaRG9nYm5WdFltVnlMQ0JsYm1SRmVHTnNkWE5wZG1VZ1BTQm1ZV3h6WlNrNklFbHVkRE15UVhKeVlYa2dlMXh1SUNCamIyNXpkQ0J1U1hSbGJYTWdQU0JsYm1RZ0xTQmlaV2RwYmlBcklDaGxibVJGZUdOc2RYTnBkbVVnUHlBd0lEb2dNU2s3WEc0Z0lHTnZibk4wSUhObGNtbGxjeUE5SUc1bGR5QkpiblF6TWtGeWNtRjVLRzVKZEdWdGN5azdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnVTWFJsYlhNN0lDc3JhU2xjYmlBZ0lDQnpaWEpwWlhOYmFWMGdQU0JpWldkcGJpQXJJR2s3WEc1Y2JpQWdjbVYwZFhKdUlITmxjbWxsY3p0Y2JuMWNibHh1THlvcVhHNGdLaUJTWlhSMWNtNXpJRzl5WkdWeUlHOW1JSFpoYkhWbGN5QmhjeUJwWmlCMGFHVjVJR0Z5WlNCemIzSjBaV1F1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FIQmhjbUZ0SUh0aGJubGJYWDBnZG1Gc2RXVnpJRWx1Y0hWMElHRnljbUY1TGx4dUlDb2dRSEJoY21GdElIdGliMjlzWldGdWZTQmJjbVYyWlhKelpUMW1ZV3h6WlYwZ1YyaGxkR2hsY2lCMGJ5QnlaWFIxY200Z2NtVjJaWEp6WldRZ2IzSmtaWEl1WEc0Z0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKYlhYMGdWR2hsSUc5eVpHVnlJR052YlhCMWRHVmtMbHh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1lYSm5VMjl5ZENoMllXeDFaWE02SUdGdWVWdGRMQ0J5WlhabGNuTmxJRDBnWm1Gc2MyVXBPaUJ1ZFcxaVpYSmJYU0I3WEc0Z0lHTnZibk4wSUhOdmNuUm1iaUE5SUhKbGRtVnljMlVnUHlBb1lUb2dZVzU1VzEwc0lHSTZJR0Z1ZVZ0ZEtTQTlQaUFvWWxzd1hTQXRJR0ZiTUYwcElEb2dLR0U2SUdGdWVWdGRMQ0JpT2lCaGJubGJYU2tnUFQ0Z0tHRmJNRjBnTFNCaVd6QmRLVHRjYmlBZ1kyOXVjM1FnWkdWamIzSWdQU0FvZGpvZ1lXNTVMQ0JwT2lCdWRXMWlaWElwSUQwK0lGdDJMQ0JwWFRzZ0x5OGdjMlYwSUdsdVpHVjRJSFJ2SUhaaGJIVmxYRzRnSUdOdmJuTjBJSFZ1WkdWamIzSWdQU0FvWVRvZ1lXNTVXMTBwSUQwK0lHRmJNVjA3SUM4dklHeGxZWFpsSUc5dWJIa2dhVzVrWlhoY2JpQWdZMjl1YzNRZ1gyRnlaM052Y25RZ1BTQW9ZWEp5T2lCaGJubGJYU2tnUFQ0Z1lYSnlMbTFoY0Noa1pXTnZjaWt1YzI5eWRDaHpiM0owWm00cExtMWhjQ2gxYm1SbFkyOXlLVHRjYmlBZ2NtVjBkWEp1SUY5aGNtZHpiM0owS0haaGJIVmxjeWs3WEc1OVhHNWNiaThxS2x4dUlDb2dVbVYwZFhKdWN5QjBhR1VnYVc1a1pYaGxjeUJ2WmlCMGFHVWdiVzl6ZENCa2FYWmxjbk5sSUc5aWFtVmpkSE1nWVdOamIzSmthVzVuSUhSdklIUm9aU0JrYVhOMElHWjFibU4wYVc5dVhHNGdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdiR1Z1WjNSb0lIUnZkR0ZzSUc1MWJXSmxjaUJ2WmlCdlltcGxZM1J6WEc0Z0tpQkFjR0Z5WVcwZ2UyNTFiV0psY24wZ2JpQnVkVzFpWlhJZ2IyWWdaR2wyWlhKelpTQmxiR1Z0Wlc1MGN5QjBieUJtYVc1a1hHNGdLaUJBY0dGeVlXMGdleWhwTVRvZ2JuVnRZbVZ5TENCcE1qb2diblZ0WW1WeUtTQTlQaUJ1ZFcxaVpYSjlJR1JwYzNRZ1lTQm1kVzVqZEdsdmJpQjNhR2xqYUNCallXeGpkV3hoZEdWeklHUnBjM1JoYm1ObElHSmxkSGRsWlc1Y2JpQXFJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCMGQyOGdiMkpxWldOMGN5QjFjMmx1WnlCMGFHVnBjaUJwYm1SbGVHVnpYRzRnS2lCQWNtVjBkWEp1Y3lCN2JuVnRZbVZ5VzExOUlGUm9aU0JwYm1SbGVHVnpJRzltSUhSb1pTQnRiM04wSUdScGRtVnljMlVnYjJKcVpXTjBjMXh1SUNvdlhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z1oyVjBSR2wyWlhKelpWTjFZbk5sZENoc1pXNW5kR2c2SUc1MWJXSmxjaXdnYmpvZ2JuVnRZbVZ5TENCa2FYTjBPaUFvYVRFNklHNTFiV0psY2l3Z2FUSTZJRzUxYldKbGNpa2dQVDRnYm5WdFltVnlLVG9nYm5WdFltVnlXMTBnZTF4dUlDQm1kVzVqZEdsdmJpQnRZWGhDZVNoMllXeDFaWE02SUVsMFpYSmhZbXhsU1hSbGNtRjBiM0k4Ym5WdFltVnlQaXdnYjNKa1pYSkNlVG9nS0drNklHNTFiV0psY2lrZ1BUNGdiblZ0WW1WeUtTQjdYRzRnSUNBZ2JHVjBJRzFoZUZaaGJIVmxJRDBnYm5Wc2JEdGNiaUFnSUNCc1pYUWdiV0Y0VDNKa1pYSkNlU0E5SUc1MWJHdzdYRzVjYmlBZ0lDQm1iM0lnS0dOdmJuTjBJR1ZzWlcxbGJuUWdiMllnZG1Gc2RXVnpLU0I3WEc0Z0lDQWdJQ0JqYjI1emRDQmxiR1Z0Wlc1MFQzSmtaWEpDZVNBOUlHOXlaR1Z5UW5rb1pXeGxiV1Z1ZENrN1hHNGdJQ0FnSUNCcFppQW9iV0Y0VDNKa1pYSkNlU0E5UFNCdWRXeHNJSHg4SUdWc1pXMWxiblJQY21SbGNrSjVJRDRnYldGNFQzSmtaWEpDZVNrZ2UxeHVJQ0FnSUNBZ0lDQnRZWGhXWVd4MVpTQTlJR1ZzWlcxbGJuUTdYRzRnSUNBZ0lDQWdJRzFoZUU5eVpHVnlRbmtnUFNCbGJHVnRaVzUwVDNKa1pYSkNlVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUcxaGVGWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ1kyOXVjM1FnYzNWaWMyVjBJRDBnVzNKaGJtUnZiVWx1ZENoc1pXNW5kR2dnTFNBeEtWMDdYRzRnSUdOdmJuTjBJR052YlhCc1pXMWxiblFnUFNCdVpYY2dVMlYwS0NrN1hHNWNiaUFnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc1pXNW5kR2c3SUNzcmFTa2dlMXh1SUNBZ0lHbG1JQ2doYzNWaWMyVjBMbWx1WTJ4MVpHVnpLR2twS1Z4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1aFpHUW9hU2s3WEc0Z0lIMWNibHh1SUNCM2FHbHNaU0FvYzNWaWMyVjBMbXhsYm1kMGFDQThJRzRwSUh0Y2JpQWdJQ0JqYjI1emRDQnBaSGdnUFNCdFlYaENlU2hjYmlBZ0lDQWdJR052YlhCc1pXMWxiblF1ZG1Gc2RXVnpLQ2tnWVhNZ1NYUmxjbUZpYkdWSmRHVnlZWFJ2Y2p4dWRXMWlaWEkrTEZ4dUlDQWdJQ0FnS0drcElEMCtJRTFoZEdndWJXbHVMbUZ3Y0d4NUtFMWhkR2dzSUhOMVluTmxkQzV0WVhBb1puVnVZM1JwYjI0b2RtRnNMQ0JwYm1SbGVDa2dlMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdaR2x6ZENocExDQjJZV3dwTzF4dUlDQWdJQ0FnZlNrcEtUdGNiaUFnSUNCcFppQW9hV1I0S1NCN1hHNGdJQ0FnSUNCemRXSnpaWFF1Y0hWemFDaHBaSGdwTzF4dUlDQWdJQ0FnWTI5dGNHeGxiV1Z1ZEM1a1pXeGxkR1VvYVdSNEtUdGNiaUFnSUNCOVhHNGdJSDFjYmlBZ2NtVjBkWEp1SUhOMVluTmxkRHRjYm4xY2JseHVMeW9xWEc0Z0tpQlNaWFIxY201eklHNXZjbTFoYkdsNlpXUWdkbVZqZEc5eVhHNGdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuMGdaR0YwWVNCdWRXMWxjbWxqWVd3Z1lYSnlZWGxjYmlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHNXZjbTFoYkdsNlpTaGtZWFJoT2lCV1pXTjBiM0lwT2lCV1pXTjBiM0lnZTF4dUlDQnNaWFFnYldWaGJpQTlJREE3WEc0Z0lHeGxkQ0J6ZEdRZ1BTQXdPMXh1WEc0Z0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2daR0YwWVM1c1pXNW5kR2c3SUNzcmFTbGNiaUFnSUNCdFpXRnVJQ3M5SUdSaGRHRmJhVjA3WEc1Y2JpQWdiV1ZoYmlBdlBTQmtZWFJoTG14bGJtZDBhRHRjYmx4dUlDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BYRzRnSUNBZ2MzUmtJQ3M5SUNoa1lYUmhXMmxkSUMwZ2JXVmhiaWtnS2lBb1pHRjBZVnRwWFNBdElHMWxZVzRwTzF4dVhHNGdJSE4wWkNBOUlFMWhkR2d1YzNGeWRDaHpkR1FnTHlCa1lYUmhMbXhsYm1kMGFDazdYRzVjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmtZWFJoTG14bGJtZDBhRHNnS3l0cEtWeHVJQ0FnSUdSaGRHRmJhVjBnUFNBb1pHRjBZVnRwWFNBdElHMWxZVzRwSUM4Z2MzUmtPMXh1WEc0Z0lISmxkSFZ5YmlCa1lYUmhPMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFWnBibVJ6SUhObGRDQmthV1ptWlhKbGJtTmxJR0psZEhkbFpXNGdkSGR2SUd4cGMzUnpMbHh1SUNvZ1FIQmhjbUZ0SUh0aGJubGJYWDBnWVNCVWFHVWdabWx5YzNRZ2JHbHpkQzVjYmlBcUlFQndZWEpoYlNCN1lXNTVXMTE5SUdJZ1ZHaGxJSE5sWTI5dVpDQnNhWE4wTGx4dUlDb2dRSEpsZEhWeWJpQjdZVzU1VzExOVhHNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ6WlhSRWFXWm1aWEpsYm1ObEtHRTZJR0Z1ZVZ0ZExDQmlPaUJoYm5sYlhTazZJR0Z1ZVZ0ZElIdGNiaUFnWTI5dWMzUWdZbE5sZENBOUlHNWxkeUJUWlhRb1lpazdYRzRnSUhKbGRIVnliaUJCY25KaGVTNW1jbTl0S0c1bGR5QlRaWFFvWVM1bWFXeDBaWElvS0hncElEMCtJQ0ZpVTJWMExtaGhjeWg0S1NrcExuWmhiSFZsY3lncEtUdGNibjFjYmlKZGZRPT0iLCJpbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSwgY2FsY0Rpc3RhbmNlTWF0cml4LCBmaWxsUmFuZG9tTWF0cml4LCB2ZWN0b3JBZGQsIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgcmFuZG9tSW50IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvcmFuZG9tJztcbi8qKlxuICogSW1wbGVtZW50cyBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFNQRUJhc2VcbiAqIEBsaW5rIGRvaToxMC4xMDE2L1MxMDkzLTMyNjMoMDMpMDAxNTUtNFxuICovXG5jbGFzcyBTUEVCYXNlIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRUJhc2UuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgU1BFQmFzZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nO1xuICAgICAgICB0aGlzLnN0ZXBzID0gKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0ZXBzKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICB0aGlzLmN5Y2xlcyA9IChfYiA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jeWNsZXMpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDFlNjtcbiAgICAgICAgLy8gU2VsZWN0IGEgY3V0b2ZmIGRpc3RhbmNlIHtjdXRvZmZ9IGFuZCAuLi5cbiAgICAgICAgdGhpcy5jdXRvZmYgPSAoX2MgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY3V0b2ZmKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAvLyAuLi4gYW4gaW5pdGlhbCBsZWFybmluZyByYXRlIHtsYW1iZGF9ID4gMFxuICAgICAgICB0aGlzLmxhbWJkYSA9IChfZCA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5sYW1iZGEpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IDIuMDtcbiAgICAgICAgdGhpcy5kbGFtYmRhID0gKF9lID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmRsYW1iZGEpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IDAuMDE7XG4gICAgICAgIHRoaXMubGFtYmRhMiA9IHRoaXMubGFtYmRhIC8gMi47XG4gICAgICAgIHRoaXMuZGxhbWJkYTIgPSB0aGlzLmRsYW1iZGEgLyAyLjtcbiAgICAgICAgdGhpcy5lcHNpbG9uID0gKF9mID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmVwc2lsb24pICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDFlLTEwO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgYnJhY2Utc3R5bGVcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uID0gKF9nID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmRpc3RhbmNlKSAhPT0gbnVsbCAmJiBfZyAhPT0gdm9pZCAwID8gX2cgOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZSA9IFtdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBJbml0aWFsaXplcyBkaXN0YW5jZSBtYXRyaXguXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1ZlY3RvcnN9IHZlY3RvcnMgSW5wdXQgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2UgYmV0d2Vlbi5cbiAgICAgKiBAbWVtYmVyb2YgU1BFQmFzZVxuICAgICAqL1xuICAgIGluaXREaXN0YW5jZSh2ZWN0b3JzKSB7XG4gICAgICAgIHRoaXMuZGlzdGFuY2UgPSBjYWxjRGlzdGFuY2VNYXRyaXgodmVjdG9ycywgdGhpcy5kaXN0YW5jZUZ1bmN0aW9uKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogQ2FsY3VsYXRlcyBkaXN0YW5jZSBiZXR3ZWVuIHRoZSB0d28gdmVjdG9ycyBnaXZlbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBTZXQgb2YgdmVjdG9ycyB0byBjYWxjdWxhdGUgZGlzdGFuY2VzIGJldHdlZW4uXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4MSBJbmRleCBvZiB0aGUgZmlyc3QgdmVjdG9yIG9mIHRoZSBwYWlyLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleDIgSW5kZXggb2YgdGhlIHNlY29uZCB2ZWN0b3Igb2YgdGhlIHBhaXIuXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBiZXR3ZWVuIHRoZXNlIHR3byB2ZWN0b3JzLlxuICAgICAqL1xuICAgIGNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpbmRleDEsIGluZGV4Mikge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXN0YW5jZVtpbmRleDFdW2luZGV4Ml07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgdmVjdG9ycyBnaXZlbiBpbnRvIGEgdHdvLWRpbWVuc2lvbmFsIHNwYWNlLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtWZWN0b3JzfSB2ZWN0b3JzIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMuXG4gICAgICogQHJldHVybiB7Q29vcmRpbmF0ZXN9IFNQRSBjb29yZGluYXRlcyBpbiBEIHNwYWNlLlxuICAgICAqL1xuICAgIGVtYmVkKHZlY3RvcnMpIHtcbiAgICAgICAgY29uc3Qgbkl0ZW1zID0gdmVjdG9ycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGFyZWFXaWR0aCA9IDQwO1xuICAgICAgICAvLyBJbml0aWFsaXplIHRoZSBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzIG9mIHRoZSBOIHBvaW50cy5cbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSBmaWxsUmFuZG9tTWF0cml4KG5JdGVtcywgU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgICAgIGxldCBsYW1iZGEyID0gdGhpcy5sYW1iZGEyO1xuICAgICAgICBpZiAodGhpcy5zdGVwcyA9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzID0gdmVjdG9ycy5sZW5ndGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdERpc3RhbmNlKHZlY3RvcnMpO1xuICAgICAgICBmb3IgKGxldCBjeWNsZSA9IDA7IGN5Y2xlIDwgdGhpcy5jeWNsZXM7ICsrY3ljbGUpIHtcbiAgICAgICAgICAgIGZvciAobGV0IHN0ZXAgPSAwOyBzdGVwIDwgdGhpcy5zdGVwczsgKytzdGVwKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHR3byBwb2ludHMsIGkgYW5kIGosIGF0IHJhbmRvbSwgLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPT0gailcbiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2kgPSBjb29yZGluYXRlc1tpXTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgdGhlaXIgcHJveGltaXR5IGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIGFuZCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCByID0gdGhpcy5jYWxjRGlzdGFuY2UodmVjdG9ycywgaSwgaik7XG4gICAgICAgICAgICAgICAgLy8gLi4uIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhMiAqIChyIC0gZCkgLyAoZCArIHRoaXMuZXBzaWxvbik7XG4gICAgICAgICAgICAgICAgICAgIC8vIC4uLiB1cGRhdGUgdGhlIGNvb3JkaW5hdGVzIHhpIGFuZCB4ai5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbaV0gPSB2ZWN0b3JBZGQocm93aSwgZGlmZklKLCBtdWx0aXBsaWVyKTtcbiAgICAgICAgICAgICAgICAgICAgY29vcmRpbmF0ZXNbal0gPSB2ZWN0b3JBZGQocm93aiwgZGlmZklKLCAtbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGxlYXJuaW5nIHJhdGUge2xhbWJkYX0gYnkgYSBwcmVzY3JpYmVkIHtkbGFtYmRhfS5cbiAgICAgICAgICAgIGxhbWJkYTIgLT0gdGhpcy5kbGFtYmRhMjtcbiAgICAgICAgICAgIGlmIChsYW1iZGEyIDw9IDAuKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvb3JkaW5hdGVzO1xuICAgIH1cbn1cblNQRUJhc2UuZGltZW5zaW9uID0gMjtcbmV4cG9ydCB7IFNQRUJhc2UgfTtcbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBzdG9jaGFzdGljIHByb3hpbWl0eSBlbWJlZGRpbmcuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIFBTUEVCYXNlXG4gKiBAbGluayBkb2k6MTAuMTAxNi9TMTA5My0zMjYzKDAzKTAwMTU1LTRcbiAqL1xuZXhwb3J0IGNsYXNzIFBTUEVCYXNlIGV4dGVuZHMgU1BFQmFzZSB7XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSB2ZWN0b3JzIGdpdmVuIGludG8gYSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgYSBtb2RpZmllZCB1cGRhdGUgcnVsZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7VmVjdG9yc30gdmVjdG9ycyBELWRpbWVuc2lvbmFsIGNvb3JkaW5hdGVzLlxuICAgICAqIEByZXR1cm4ge0Nvb3JkaW5hdGVzfSBTUEUgY29vcmRpbmF0ZXMgaW4gRCBzcGFjZS5cbiAgICAgKi9cbiAgICBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gIEluaXRpYWxpemUgdGhlIEQtZGltZW5zaW9uYWwgY29vcmRpbmF0ZXMgb2YgdGhlIE4gcG9pbnRzLlxuICAgICAgICBjb25zdCBjb29yZGluYXRlcyA9IGZpbGxSYW5kb21NYXRyaXgobkl0ZW1zLCBQU1BFQmFzZS5kaW1lbnNpb24sIGFyZWFXaWR0aCk7XG4gICAgICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcbiAgICAgICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgLy8gU2VsZWN0IGEgcG9pbnQsIGksIGF0IHJhbmRvbSAocGl2b3QpLlxuICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgLy8gRm9yIGV2ZXJ5IHBvaW50IGogIT0gaSAuLi5cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbkl0ZW1zOyArK2opIHtcbiAgICAgICAgICAgICAgICBpZiAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjb25zdCByb3dqID0gY29vcmRpbmF0ZXNbal07XG4gICAgICAgICAgICAgICAgLy8gLi4uIHJldHJpZXZlIChvciBldmFsdWF0ZSkgaXRzIHByb3hpbWl0eSB0byBpIGluIHRoZSBpbnB1dCBzcGFjZSwgcmlqIC4uLlxuICAgICAgICAgICAgICAgIGNvbnN0IHIgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICAvLyAuLi4gYW5kIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICAvLyBJZiByaWogPD0gcmMsIG9yIGlmIHJpaiA+IHJjIGFuZCBkaWogPCByaWogLi4uXG4gICAgICAgICAgICAgICAgaWYgKCh0aGlzLmN1dG9mZiA9PSAwKSB8fCAociA8PSB0aGlzLmN1dG9mZikgfHwgKGQgPCByKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtdWx0aXBsaWVyID0gbGFtYmRhICogKHIgLSBkKSAvIChkICsgdGhpcy5lcHNpbG9uKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGlmZklKID0gdmVjdG9yQWRkKHJvd2ksIHJvd2osIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gLi4uIHVwZGF0ZSB0aGUgY29vcmRpbmF0ZXMgeGouXG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIERlY3JlYXNlIHRoZSBsZWFybmluZyByYXRlIHtsYW1iZGF9IGJ5IGEgcHJlc2NyaWJlZCB7ZGxhbWJkYX0uXG4gICAgICAgICAgICBsYW1iZGEgLT0gdGhpcy5kbGFtYmRhO1xuICAgICAgICAgICAgaWYgKGxhbWJkYSA8PSAwLikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb29yZGluYXRlcztcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgbW9kaWZpZWQgc3RvY2hhc3RpYyBwcm94aW1pdHkgZW1iZWRkaW5nLlxuICpcbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBPcmlnaW5hbFNQRVxuICogQGxpbmsgZG9pOjEwLjEwMDIvamNjLjEwMjM0XG4gKi9cbmV4cG9ydCBjbGFzcyBPcmlnaW5hbFNQRSBleHRlbmRzIFNQRUJhc2Uge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZTtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMuY3ljbGVzID0gKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmN5Y2xlcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogMWUzO1xuICAgICAgICB0aGlzLnN0ZXBzID0gKF9iID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLnN0ZXBzKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiAxMDAwMDA7XG4gICAgICAgIHRoaXMucmFkaXVzUGVyY2VudCA9IChfYyA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5yYWRpdXNQZXJjZW50KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAxLjA7XG4gICAgICAgIHRoaXMubWF4RGlzdGFuY2UgPSAoX2QgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMubWF4RGlzdGFuY2UpICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IG51bGw7XG4gICAgICAgIHRoaXMubWF4RGlzdGFuY2VTdGVwcyA9IChfZSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5tYXhEaXN0YW5jZVN0ZXBzKSAhPT0gbnVsbCAmJiBfZSAhPT0gdm9pZCAwID8gX2UgOiBudWxsO1xuICAgIH1cbiAgICBlbWJlZCh2ZWN0b3JzKSB7XG4gICAgICAgIGNvbnN0IG5JdGVtcyA9IHZlY3RvcnMubGVuZ3RoO1xuICAgICAgICBjb25zdCBhcmVhV2lkdGggPSA0MDtcbiAgICAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgRC1kaW1lbnNpb25hbCBjb29yZGluYXRlcyBvZiB0aGUgTiBwb2ludHMuXG4gICAgICAgIGNvbnN0IGNvb3JkaW5hdGVzID0gZmlsbFJhbmRvbU1hdHJpeChuSXRlbXMsIE9yaWdpbmFsU1BFLmRpbWVuc2lvbiwgYXJlYVdpZHRoKTtcbiAgICAgICAgdGhpcy5pbml0RGlzdGFuY2UodmVjdG9ycyk7XG4gICAgICAgIGlmICh0aGlzLm1heERpc3RhbmNlU3RlcHMgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZVN0ZXBzID0gbkl0ZW1zICogTWF0aC5mbG9vcigobkl0ZW1zIC0gMSkgLyAyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5tYXhEaXN0YW5jZSA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm1heERpc3RhbmNlID0gLTFlMzc7XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IHRoaXMubWF4RGlzdGFuY2VTdGVwczsgbisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaSA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGxldCBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPT0gailcbiAgICAgICAgICAgICAgICAgICAgaiA9IHJhbmRvbUludChuSXRlbXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLmNhbGNEaXN0YW5jZSh2ZWN0b3JzLCBpLCBqKTtcbiAgICAgICAgICAgICAgICBpZiAoZCA+IHRoaXMubWF4RGlzdGFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhEaXN0YW5jZSA9IGQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBsYW1iZGEgPSB0aGlzLmxhbWJkYTtcbiAgICAgICAgY29uc3QgcmFkaXVzID0gKHRoaXMucmFkaXVzUGVyY2VudCA9PSAwLjApID8gdGhpcy5tYXhEaXN0YW5jZSA6IHRoaXMubWF4RGlzdGFuY2UgKiB0aGlzLnJhZGl1c1BlcmNlbnQ7XG4gICAgICAgIGZvciAobGV0IGN5Y2xlID0gMDsgY3ljbGUgPCB0aGlzLmN5Y2xlczsgKytjeWNsZSkge1xuICAgICAgICAgICAgZm9yIChsZXQgc3RlcCA9IDA7IHN0ZXAgPCB0aGlzLnN0ZXBzOyArK3N0ZXApIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdHdvIHBvaW50cywgaSBhbmQgaiwgYXQgcmFuZG9tLCAuLi5cbiAgICAgICAgICAgICAgICBjb25zdCBpID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgbGV0IGogPSByYW5kb21JbnQobkl0ZW1zKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoaSA9PSBqKVxuICAgICAgICAgICAgICAgICAgICBqID0gcmFuZG9tSW50KG5JdGVtcyk7XG4gICAgICAgICAgICAgICAgY29uc3Qgcm93aSA9IGNvb3JkaW5hdGVzW2ldO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJvd2ogPSBjb29yZGluYXRlc1tqXTtcbiAgICAgICAgICAgICAgICAvLyByZXRyaWV2ZSAob3IgZXZhbHVhdGUpIHRoZWlyIHByb3hpbWl0eSBpbiB0aGUgaW5wdXQgc3BhY2UsIHJpaiBhbmQgLi4uXG4gICAgICAgICAgICAgICAgY29uc3QgciA9IHRoaXMuY2FsY0Rpc3RhbmNlKHZlY3RvcnMsIGksIGopO1xuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlaXIgRXVjbGlkZWFuIGRpc3RhbmNlIG9uIHRoZSBELWRpbWVuc2lvbmFsIG1hcCwgZGlqLlxuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZShyb3dpLCByb3dqKTtcbiAgICAgICAgICAgICAgICBpZiAoKHIgPD0gcmFkaXVzKSB8fCAoZCA8IHIpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG11bHRpcGxpZXIgPSBsYW1iZGEgKiAwLjUgKiAociAtIGQpIC8gKGQgKyB0aGlzLmVwc2lsb24pO1xuICAgICAgICAgICAgICAgICAgICAvLyAuLi4gdXBkYXRlIHRoZSBjb29yZGluYXRlcyB4aSBhbmQgeGouXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRpZmZJSiA9IHZlY3RvckFkZChyb3dpLCByb3dqLCAtMSk7XG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2ldID0gdmVjdG9yQWRkKHJvd2ksIGRpZmZJSiwgbXVsdGlwbGllcik7XG4gICAgICAgICAgICAgICAgICAgIGNvb3JkaW5hdGVzW2pdID0gdmVjdG9yQWRkKHJvd2osIGRpZmZJSiwgLW11bHRpcGxpZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhbWJkYSAtPSAoKHRoaXMubGFtYmRhIC0gdGhpcy5kbGFtYmRhKSAvICh0aGlzLmN5Y2xlcyAtIDEuMCkpO1xuICAgICAgICAgICAgO1xuICAgICAgICAgICAgaWYgKGxhbWJkYSA8IHRoaXMuZGxhbWJkYSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb29yZGluYXRlcztcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljM0JsTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2ljM0JsTG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVTkJMRTlCUVU4c1JVRkRUQ3d3UWtGQk1FSXNSVUZETVVJc2EwSkJRV3RDTEVWQlEyeENMR2RDUVVGblFpeEZRVU5vUWl4VFFVRlRMRWRCUTFZc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVTjZSQ3hQUVVGUExFVkJRVU1zVTBGQlV5eEZRVUZETEUxQlFVMHNjME5CUVhORExFTkJRVU03UVVGRkwwUTdPenM3T3p0SFFVMUhPMEZCUTBnc1RVRkJZU3hQUVVGUE8wbEJZV3hDT3pzN08wOUJTVWM3U1VGRFNDeFpRVUZaTEU5QlFXbENPenRSUVVNelFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTFCUVVFc1QwRkJUeXhoUVVGUUxFOUJRVThzZFVKQlFWQXNUMEZCVHl4RFFVRkZMRXRCUVVzc2JVTkJRVWtzUTBGQlF5eERRVUZETzFGQlEycERMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzVFVGQlFTeFBRVUZQTEdGQlFWQXNUMEZCVHl4MVFrRkJVQ3hQUVVGUExFTkJRVVVzVFVGQlRTeHRRMEZCU1N4SFFVRkhMRU5CUVVNN1VVRkRja01zTkVOQlFUUkRPMUZCUXpWRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNUVUZCVFN4dFEwRkJTU3hEUVVGRExFTkJRVU03VVVGRGJrTXNORU5CUVRSRE8xRkJRelZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJRU3hQUVVGUExHRkJRVkFzVDBGQlR5eDFRa0ZCVUN4UFFVRlBMRU5CUVVVc1RVRkJUU3h0UTBGQlNTeEhRVUZITEVOQlFVTTdVVUZEY2tNc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeFBRVUZQTEcxRFFVRkpMRWxCUVVrc1EwRkJRenRSUVVONFF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVU1zUlVGQlJTeERRVUZETzFGQlF6bENMRWxCUVVrc1EwRkJReXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUXl4RlFVRkZMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4TlFVRkJMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4UFFVRlBMRzFEUVVGSkxFdEJRVXNzUTBGQlF6dFJRVU42UXl4MVEwRkJkVU03VVVGRGRrTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeEhRVUZITEUxQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZGQlFWRXNiVU5CUVVrc01FSkJRVEJDTEVOQlFVTTdVVUZEZUVVc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEY2tJc1EwRkJRenRKUVVWRU96czdPenRQUVV0SE8wbEJRMDhzV1VGQldTeERRVUZETEU5QlFXZENPMUZCUTNKRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NhMEpCUVd0Q0xFTkJRVU1zVDBGQlR5eEZRVUZGTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF5eERRVUZETzBsQlEzSkZMRU5CUVVNN1NVRkZSRHM3T3pzN096dFBRVTlITzBsQlEwOHNXVUZCV1N4RFFVRkRMRTlCUVdkQ0xFVkJRVVVzVFVGQll5eEZRVUZGTEUxQlFXTTdVVUZEY2tVc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRXRCUVVzc1EwRkJReXhQUVVGblFqdFJRVU16UWl4TlFVRk5MRTFCUVUwc1IwRkJSeXhQUVVGUExFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6bENMRTFCUVUwc1UwRkJVeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU55UWl3MFJFRkJORVE3VVVGRE5VUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RlFVRkZMRTlCUVU4c1EwRkJReXhUUVVGVExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVTTdVVUZGTTBVc1NVRkJTU3hQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXp0UlFVVXpRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eExRVUZMTEVsQlFVa3NRMEZCUXl4RlFVRkZPMWxCUTI1Q0xFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NUMEZCVHl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU03VTBGREwwSTdVVUZGUkN4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlJUTkNMRXRCUVVzc1NVRkJTU3hMUVVGTExFZEJRVWNzUTBGQlF5eEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUzBGQlN5eEZRVUZGTzFsQlEyaEVMRXRCUVVzc1NVRkJTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhGUVVGRkxFVkJRVVVzU1VGQlNTeEZRVUZGTzJkQ1FVTTFReXcyUTBGQk5rTTdaMEpCUXpkRExFMUJRVTBzUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRuUWtGRE5VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1UwRkJVeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzJkQ1FVTXhRaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETzI5Q1FVRkZMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUlhKRExFMUJRVTBzU1VGQlNTeEhRVUZITEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE5VSXNUVUZCVFN4SlFVRkpMRWRCUVVjc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzJkQ1FVVTFRaXcyUlVGQk5rVTdaMEpCUXpkRkxFMUJRVTBzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRNME1zYzBWQlFYTkZPMmRDUVVOMFJTeE5RVUZOTEVOQlFVTXNSMEZCUnl3d1FrRkJNRUlzUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1owSkJSV3BFTEdsRVFVRnBSRHRuUWtGRGFrUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRk8yOUNRVU4yUkN4TlFVRk5MRlZCUVZVc1IwRkJSeXhQUVVGUExFZEJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMjlDUVVONFJDeDNRMEZCZDBNN2IwSkJRM2hETEUxQlFVMHNUVUZCVFN4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN2IwSkJRM3BETEZkQlFWY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zU1VGQlNTeEZRVUZGTEUxQlFVMHNSVUZCUlN4VlFVRlZMRU5CUVVNc1EwRkJRenR2UWtGRGNrUXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03YVVKQlEzWkVPMkZCUTBZN1dVRkRSQ3hwUlVGQmFVVTdXVUZEYWtVc1QwRkJUeXhKUVVGSkxFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdXVUZEZWtJc1NVRkJTU3hQUVVGUExFbEJRVWtzUlVGQlJTeEZRVUZGTzJkQ1FVTnFRaXhOUVVGTk8yRkJRMUE3VTBGRFJqdFJRVU5FTEU5QlFVOHNWMEZCVnl4RFFVRkRPMGxCUTNKQ0xFTkJRVU03TzBGQk1VZG5RaXhwUWtGQlV5eEhRVUZITEVOQlFVTXNRMEZCUXp0VFFVUndRaXhQUVVGUE8wRkJPRWR3UWpzN096czdPMGRCVFVjN1FVRkRTQ3hOUVVGTkxFOUJRVThzVVVGQlV5eFRRVUZSTEU5QlFVODdTVUZEYmtNN096czdPMDlCUzBjN1NVRkRTU3hMUVVGTExFTkJRVU1zVDBGQlowSTdVVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTTVRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEY2tJc05rUkJRVFpFTzFGQlF6ZEVMRTFCUVUwc1YwRkJWeXhIUVVGSExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUXpWRkxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkZla0lzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVVelFpeExRVUZMTEVsQlFVa3NTMEZCU3l4SFFVRkhMRU5CUVVNc1JVRkJSU3hMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEUxQlFVMHNSVUZCUlN4RlFVRkZMRXRCUVVzc1JVRkJSVHRaUVVOb1JDeDNRMEZCZDBNN1dVRkRlRU1zVFVGQlRTeERRVUZETEVkQlFWY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xbEJRM0JETEUxQlFVMHNTVUZCU1N4SFFVRkhMRmRCUVZjc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFpRVVUxUWl3MlFrRkJOa0k3V1VGRE4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEUxQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGREwwSXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenR2UWtGQlJTeFRRVUZUTzJkQ1FVTnlRaXhOUVVGTkxFbEJRVWtzUjBGQlJ5eFhRVUZYTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRelZDTERSRlFVRTBSVHRuUWtGRE5VVXNUVUZCVFN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU16UXl3d1JVRkJNRVU3WjBKQlF6RkZMRTFCUVUwc1EwRkJReXhIUVVGSExEQkNRVUV3UWl4RFFVRkRMRWxCUVVrc1JVRkJSU3hKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtRc2FVUkJRV2xFTzJkQ1FVTnFSQ3hKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVTdiMEpCUTNaRUxFMUJRVTBzVlVGQlZTeEhRVUZITEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03YjBKQlEzcEVMRTFCUVUwc1RVRkJUU3hIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNTVUZCU1N4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03YjBKQlEzcERMR2xEUVVGcFF6dHZRa0ZEYWtNc1YwRkJWeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZOQlFWTXNRMEZCUXl4SlFVRkpMRVZCUVVVc1RVRkJUU3hGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdhVUpCUTNaRU8yRkJRMFk3V1VGRFJDeHBSVUZCYVVVN1dVRkRha1VzVFVGQlRTeEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1dVRkRka0lzU1VGQlNTeE5RVUZOTEVsQlFVa3NSVUZCUlN4RlFVRkZPMmRDUVVOb1FpeE5RVUZOTzJGQlExQTdVMEZEUmp0UlFVTkVMRTlCUVU4c1YwRkJWeXhEUVVGRE8wbEJRM0pDTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3pzN1IwRk5SenRCUVVOSUxFMUJRVTBzVDBGQlR5eFhRVUZaTEZOQlFWRXNUMEZCVHp0SlFWZDBReXhaUVVGWkxFOUJRV2xDT3p0UlFVTXpRaXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVUVzVDBGQlR5eGhRVUZRTEU5QlFVOHNkVUpCUVZBc1QwRkJUeXhEUVVGRkxFMUJRVTBzYlVOQlFVa3NSMEZCUnl4RFFVRkRPMUZCUTNKRExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNTMEZCU3l4dFEwRkJTU3hOUVVGTkxFTkJRVU03VVVGRGRFTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1IwRkJSeXhOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hoUVVGaExHMURRVUZKTEVkQlFVY3NRMEZCUXp0UlFVTnVSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eEhRVUZITEUxQlFVRXNUMEZCVHl4aFFVRlFMRTlCUVU4c2RVSkJRVkFzVDBGQlR5eERRVUZGTEZkQlFWY3NiVU5CUVVrc1NVRkJTU3hEUVVGRE8xRkJRMmhFTEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eE5RVUZCTEU5QlFVOHNZVUZCVUN4UFFVRlBMSFZDUVVGUUxFOUJRVThzUTBGQlJTeG5Ra0ZCWjBJc2JVTkJRVWtzU1VGQlNTeERRVUZETzBsQlF6VkVMRU5CUVVNN1NVRkZUU3hMUVVGTExFTkJRVU1zVDBGQlowSTdVVUZETTBJc1RVRkJUU3hOUVVGTkxFZEJRVWNzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXp0UlFVTTVRaXhOUVVGTkxGTkJRVk1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdVVUZEY2tJc05FUkJRVFJFTzFGQlF6VkVMRTFCUVUwc1YwRkJWeXhIUVVGSExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1JVRkJSU3hYUVVGWExFTkJRVU1zVTBGQlV5eEZRVUZGTEZOQlFWTXNRMEZCUXl4RFFVRkRPMUZCUlM5RkxFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZNMElzU1VGQlNTeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFbEJRVWtzU1VGQlNTeEZRVUZGTzFsQlEycERMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNSMEZCUnl4TlFVRk5MRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU12UkR0UlFVTkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGZEJRVmNzU1VGQlNTeEpRVUZKTEVWQlFVVTdXVUZETlVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXp0WlFVTjZRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8yZENRVU01UXl4TlFVRk5MRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMmRDUVVOMlJDeFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMjlDUVVGRkxFTkJRVU1zUjBGQlJ5eFRRVUZUTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1owSkJSWEpETEUxQlFVMHNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zVDBGQlR5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRE0wTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExGZEJRVmNzUlVGQlJUdHZRa0ZEZUVJc1NVRkJTU3hEUVVGRExGZEJRVmNzUjBGQlJ5eERRVUZETEVOQlFVTTdhVUpCUTNSQ08yRkJRMFk3VTBGRFJqdFJRVVZFTEVsQlFVa3NUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGVrSXNUVUZCVFN4TlFVRk5MRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zWVVGQllTeEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1YwRkJWeXhIUVVGSExFbEJRVWtzUTBGQlF5eGhRVUZoTEVOQlFVTTdVVUZGZEVjc1MwRkJTeXhKUVVGSkxFdEJRVXNzUjBGQlJ5eERRVUZETEVWQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhOUVVGTkxFVkJRVVVzUlVGQlJTeExRVUZMTEVWQlFVVTdXVUZEYUVRc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzUlVGQlJTeEpRVUZKTEVWQlFVVTdaMEpCUXpWRExEWkRRVUUyUXp0blFrRkROME1zVFVGQlRTeERRVUZETEVkQlFVY3NVMEZCVXl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8yZENRVU0xUWl4SlFVRkpMRU5CUVVNc1IwRkJSeXhUUVVGVExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdaMEpCUXpGQ0xFOUJRVThzUTBGQlF5eEpRVUZKTEVOQlFVTTdiMEpCUVVVc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXp0blFrRkZja01zVFVGQlRTeEpRVUZKTEVkQlFVY3NWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8yZENRVU0xUWl4TlFVRk5MRWxCUVVrc1IwRkJSeXhYUVVGWExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdaMEpCUlRWQ0xIbEZRVUY1UlR0blFrRkRla1VzVFVGQlRTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMmRDUVVNelF5eHJSVUZCYTBVN1owSkJRMnhGTEUxQlFVMHNRMEZCUXl4SFFVRkhMREJDUVVFd1FpeERRVUZETEVsQlFVa3NSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJRenRuUWtGRmFrUXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSVHR2UWtGRE5VSXNUVUZCVFN4VlFVRlZMRWRCUVVjc1RVRkJUU3hIUVVGSExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN2IwSkJReTlFTEhkRFFVRjNRenR2UWtGRGVFTXNUVUZCVFN4TlFVRk5MRWRCUVVjc1UwRkJVeXhEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGVrTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGTkJRVk1zUTBGQlF5eEpRVUZKTEVWQlFVVXNUVUZCVFN4RlFVRkZMRlZCUVZVc1EwRkJReXhEUVVGRE8yOUNRVU55UkN4WFFVRlhMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzVTBGQlV5eERRVUZETEVsQlFVa3NSVUZCUlN4TlFVRk5MRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVORUxFMUJRVTBzU1VGQlNTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZCUXl4RFFVRkRPMWxCUTJwRkxFbEJRVWtzVFVGQlRTeEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVN1owSkJRM3BDTEUxQlFVMDdZVUZEVUR0VFFVTkdPMUZCUTBRc1QwRkJUeXhYUVVGWExFTkJRVU03U1VGRGNrSXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHRQY0hScGIyNXpMQ0JEYjI5eVpHbHVZWFJsY3l3Z1ZtVmpkRzl5Y3l3Z1JHbHpkR0Z1WTJWTlpYUnlhV045SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNSNWNHVXRaR1ZqYkdGeVlYUnBiMjV6Snp0Y2JtbHRjRzl5ZENCN1hHNGdJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1SUNCallXeGpSR2x6ZEdGdVkyVk5ZWFJ5YVhnc1hHNGdJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ3NYRzRnSUhabFkzUnZja0ZrWkN4Y2JuMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR5WVc1a2IyMUpiblI5SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDNKaGJtUnZiU2M3WEc1Y2JpOHFLbHh1SUNvZ1NXMXdiR1Z0Wlc1MGN5QnpkRzlqYUdGemRHbGpJSEJ5YjNocGJXbDBlU0JsYldKbFpHUnBibWN1WEc0Z0tseHVJQ29nUUdWNGNHOXlkRnh1SUNvZ1FHTnNZWE56SUZOUVJVSmhjMlZjYmlBcUlFQnNhVzVySUdSdmFUb3hNQzR4TURFMkwxTXhNRGt6TFRNeU5qTW9NRE1wTURBeE5UVXRORnh1SUNvdlhHNWxlSEJ2Y25RZ1kyeGhjM01nVTFCRlFtRnpaU0I3WEc0Z0lIQnliM1JsWTNSbFpDQnpkR0YwYVdNZ1pHbHRaVzV6YVc5dUlEMGdNanRjYmlBZ2NISnZkR1ZqZEdWa0lITjBaWEJ6T2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQmplV05zWlhNNklHNTFiV0psY2p0Y2JpQWdjSEp2ZEdWamRHVmtJR04xZEc5bVpqb2diblZ0WW1WeU8xeHVJQ0J3Y205MFpXTjBaV1FnYkdGdFltUmhPaUJ1ZFcxaVpYSTdYRzRnSUhCeWIzUmxZM1JsWkNCa2JHRnRZbVJoT2lCdWRXMWlaWEk3WEc0Z0lIQnliM1JsWTNSbFpDQnNZVzFpWkdFeU9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0JrYkdGdFltUmhNam9nYm5WdFltVnlPMXh1SUNCd2NtOTBaV04wWldRZ1pYQnphV3h2YmpvZ2JuVnRZbVZ5TzF4dUlDQndjbTkwWldOMFpXUWdaR2x6ZEdGdVkyVkdkVzVqZEdsdmJqb2dSR2x6ZEdGdVkyVk5aWFJ5YVdNN1hHNGdJR1JwYzNSaGJtTmxPaUJEYjI5eVpHbHVZWFJsY3p0Y2JseHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlRVRVZDWVhObExseHVJQ0FnS2lCQWNHRnlZVzBnZTA5d2RHbHZibk45SUZ0dmNIUnBiMjV6WFNCUGNIUnBiMjV6SUhSdklIQmhjM01nZEc4Z2RHaGxJR052Ym5OMGNuVmpkRzl5TGx4dUlDQWdLaUJBYldWdFltVnliMllnVTFCRlFtRnpaVnh1SUNBZ0tpOWNiaUFnWTI5dWMzUnlkV04wYjNJb2IzQjBhVzl1Y3o4NklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCMGFHbHpMbk4wWlhCeklEMGdiM0IwYVc5dWN6OHVjM1JsY0hNZ1B6OGdNRHRjYmlBZ0lDQjBhR2x6TG1ONVkyeGxjeUE5SUc5d2RHbHZibk0vTG1ONVkyeGxjeUEvUHlBeFpUWTdYRzRnSUNBZ0x5OGdVMlZzWldOMElHRWdZM1YwYjJabUlHUnBjM1JoYm1ObElIdGpkWFJ2Wm1aOUlHRnVaQ0F1TGk1Y2JpQWdJQ0IwYUdsekxtTjFkRzltWmlBOUlHOXdkR2x2Ym5NL0xtTjFkRzltWmlBL1B5QXdPMXh1SUNBZ0lDOHZJQzR1TGlCaGJpQnBibWwwYVdGc0lHeGxZWEp1YVc1bklISmhkR1VnZTJ4aGJXSmtZWDBnUGlBd1hHNGdJQ0FnZEdocGN5NXNZVzFpWkdFZ1BTQnZjSFJwYjI1elB5NXNZVzFpWkdFZ1B6OGdNaTR3TzF4dUlDQWdJSFJvYVhNdVpHeGhiV0prWVNBOUlHOXdkR2x2Ym5NL0xtUnNZVzFpWkdFZ1B6OGdNQzR3TVR0Y2JpQWdJQ0IwYUdsekxteGhiV0prWVRJZ1BTQjBhR2x6TG14aGJXSmtZUzh5TGp0Y2JpQWdJQ0IwYUdsekxtUnNZVzFpWkdFeUlEMGdkR2hwY3k1a2JHRnRZbVJoTHpJdU8xeHVJQ0FnSUhSb2FYTXVaWEJ6YVd4dmJpQTlJRzl3ZEdsdmJuTS9MbVZ3YzJsc2IyNGdQejhnTVdVdE1UQTdYRzRnSUNBZ0x5OGdaWE5zYVc1MExXUnBjMkZpYkdVdGJtVjRkQzFzYVc1bElHSnlZV05sTFhOMGVXeGxYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVoxYm1OMGFXOXVJRDBnYjNCMGFXOXVjejh1WkdsemRHRnVZMlVnUHo4Z1kyRnNZM1ZzWVhSbFJYVmpiR2xrWldGdVJHbHpkR0Z1WTJVN1hHNGdJQ0FnZEdocGN5NWthWE4wWVc1alpTQTlJRnRkTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFbHVhWFJwWVd4cGVtVnpJR1JwYzNSaGJtTmxJRzFoZEhKcGVDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRXWldOMGIzSnpmU0IyWldOMGIzSnpJRWx1Y0hWMElIWmxZM1J2Y25NZ2RHOGdZMkZzWTNWc1lYUmxJR1JwYzNSaGJtTmxJR0psZEhkbFpXNHVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQlRVRVZDWVhObFhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdhVzVwZEVScGMzUmhibU5sS0habFkzUnZjbk02SUZabFkzUnZjbk1wSUh0Y2JpQWdJQ0IwYUdsekxtUnBjM1JoYm1ObElEMGdZMkZzWTBScGMzUmhibU5sVFdGMGNtbDRLSFpsWTNSdmNuTXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2RXNWpkR2x2YmlrN1hHNGdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRMkZzWTNWc1lYUmxjeUJrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSFJvWlNCMGQyOGdkbVZqZEc5eWN5Qm5hWFpsYmk1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEJoY21GdElIdFdaV04wYjNKemZTQjJaV04wYjNKeklGTmxkQ0J2WmlCMlpXTjBiM0p6SUhSdklHTmhiR04xYkdGMFpTQmthWE4wWVc1alpYTWdZbVYwZDJWbGJpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dWRXMWlaWEo5SUdsdVpHVjRNU0JKYm1SbGVDQnZaaUIwYUdVZ1ptbHljM1FnZG1WamRHOXlJRzltSUhSb1pTQndZV2x5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdhVzVrWlhneUlFbHVaR1Y0SUc5bUlIUm9aU0J6WldOdmJtUWdkbVZqZEc5eUlHOW1JSFJvWlNCd1lXbHlMbHh1SUNBZ0tpQkFjbVYwZFhKdUlIdHVkVzFpWlhKOUlFUnBjM1JoYm1ObElHSmxkSGRsWlc0Z2RHaGxjMlVnZEhkdklIWmxZM1J2Y25NdVhHNGdJQ0FxTDF4dUlDQndjbTkwWldOMFpXUWdZMkZzWTBScGMzUmhibU5sS0habFkzUnZjbk02SUZabFkzUnZjbk1zSUdsdVpHVjRNVG9nYm5WdFltVnlMQ0JwYm1SbGVESTZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVaR2x6ZEdGdVkyVmJhVzVrWlhneFhWdHBibVJsZURKZE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnZG1WamRHOXljeUJuYVhabGJpQnBiblJ2SUdFZ2RIZHZMV1JwYldWdWMybHZibUZzSUhOd1lXTmxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNHRnlZVzBnZTFabFkzUnZjbk45SUhabFkzUnZjbk1nUkMxa2FXMWxibk5wYjI1aGJDQmpiMjl5WkdsdVlYUmxjeTVjYmlBZ0lDb2dRSEpsZEhWeWJpQjdRMjl2Y21ScGJtRjBaWE45SUZOUVJTQmpiMjl5WkdsdVlYUmxjeUJwYmlCRUlITndZV05sTGx4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdWdFltVmtLSFpsWTNSdmNuTTZJRlpsWTNSdmNuTXBPaUJEYjI5eVpHbHVZWFJsY3lCN1hHNGdJQ0FnWTI5dWMzUWdia2wwWlcxeklEMGdkbVZqZEc5eWN5NXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdZWEpsWVZkcFpIUm9JRDBnTkRBN1hHNGdJQ0FnTHk4Z1NXNXBkR2xoYkdsNlpTQjBhR1VnUkMxa2FXMWxibk5wYjI1aGJDQmpiMjl5WkdsdVlYUmxjeUJ2WmlCMGFHVWdUaUJ3YjJsdWRITXVYRzRnSUNBZ1kyOXVjM1FnWTI5dmNtUnBibUYwWlhNZ1BTQm1hV3hzVW1GdVpHOXRUV0YwY21sNEtHNUpkR1Z0Y3l3Z1UxQkZRbUZ6WlM1a2FXMWxibk5wYjI0c0lHRnlaV0ZYYVdSMGFDazdYRzVjYmlBZ0lDQnNaWFFnYkdGdFltUmhNaUE5SUhSb2FYTXViR0Z0WW1SaE1qdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxuTjBaWEJ6SUQwOUlEQXBJSHRjYmlBZ0lDQWdJSFJvYVhNdWMzUmxjSE1nUFNCMlpXTjBiM0p6TG14bGJtZDBhQzB4TzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNXBkRVJwYzNSaGJtTmxLSFpsWTNSdmNuTXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z0xpNHVJSEpsZEhKcFpYWmxJQ2h2Y2lCbGRtRnNkV0YwWlNrZ2RHaGxhWElnY0hKdmVHbHRhWFI1SUdsdUlIUm9aU0JwYm5CMWRDQnpjR0ZqWlN3Z2NtbHFJR0Z1WkNBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NpQTlJSFJvYVhNdVkyRnNZMFJwYzNSaGJtTmxLSFpsWTNSdmNuTXNJR2tzSUdvcE8xeHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z1kyOXRjSFYwWlNCMGFHVnBjaUJGZFdOc2FXUmxZVzRnWkdsemRHRnVZMlVnYjI0Z2RHaGxJRVF0WkdsdFpXNXphVzl1WVd3Z2JXRndMQ0JrYVdvdVhHNGdJQ0FnSUNBZ0lHTnZibk4wSUdRZ1BTQmpZV3hqZFd4aGRHVkZkV05zYVdSbFlXNUVhWE4wWVc1alpTaHliM2RwTENCeWIzZHFLVHRjYmx4dUlDQWdJQ0FnSUNBdkx5QkpaaUJ5YVdvZ1BEMGdjbU1zSUc5eUlHbG1JSEpwYWlBK0lISmpJR0Z1WkNCa2FXb2dQQ0J5YVdvZ0xpNHVYRzRnSUNBZ0lDQWdJR2xtSUNnb2RHaHBjeTVqZFhSdlptWWdQVDBnTUNrZ2ZId2dLSElnUEQwZ2RHaHBjeTVqZFhSdlptWXBJSHg4SUNoa0lEd2djaWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmpiMjV6ZENCdGRXeDBhWEJzYVdWeUlEMGdiR0Z0WW1SaE1pb29jaUF0SUdRcElDOGdLR1FnS3lCMGFHbHpMbVZ3YzJsc2IyNHBPMXh1SUNBZ0lDQWdJQ0FnSUM4dklDNHVMaUIxY0dSaGRHVWdkR2hsSUdOdmIzSmthVzVoZEdWeklIaHBJR0Z1WkNCNGFpNWNiaUFnSUNBZ0lDQWdJQ0JqYjI1emRDQmthV1ptU1VvZ1BTQjJaV04wYjNKQlpHUW9jbTkzYVN3Z2NtOTNhaXdnTFRFcE8xeHVJQ0FnSUNBZ0lDQWdJR052YjNKa2FXNWhkR1Z6VzJsZElEMGdkbVZqZEc5eVFXUmtLSEp2ZDJrc0lHUnBabVpKU2l3Z2JYVnNkR2x3YkdsbGNpazdYRzRnSUNBZ0lDQWdJQ0FnWTI5dmNtUnBibUYwWlhOYmFsMGdQU0IyWldOMGIzSkJaR1FvY205M2Fpd2daR2xtWmtsS0xDQXRiWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUgxY2JpQWdJQ0FnSUgxY2JpQWdJQ0FnSUM4dklFUmxZM0psWVhObElIUm9aU0JzWldGeWJtbHVaeUJ5WVhSbElIdHNZVzFpWkdGOUlHSjVJR0VnY0hKbGMyTnlhV0psWkNCN1pHeGhiV0prWVgwdVhHNGdJQ0FnSUNCc1lXMWlaR0V5SUMwOUlIUm9hWE11Wkd4aGJXSmtZVEk3WEc0Z0lDQWdJQ0JwWmlBb2JHRnRZbVJoTWlBOFBTQXdMaWtnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmIzSmthVzVoZEdWek8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJ0YjJScFptbGxaQ0J6ZEc5amFHRnpkR2xqSUhCeWIzaHBiV2wwZVNCbGJXSmxaR1JwYm1jdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklGQlRVRVZDWVhObFhHNGdLaUJBYkdsdWF5QmtiMms2TVRBdU1UQXhOaTlUTVRBNU15MHpNall6S0RBektUQXdNVFUxTFRSY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklGQlRVRVZDWVhObElHVjRkR1Z1WkhNZ1UxQkZRbUZ6WlNCN1hHNGdJQzhxS2x4dUlDQWdLaUJGYldKbFpITWdkR2hsSUhabFkzUnZjbk1nWjJsMlpXNGdhVzUwYnlCaElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QmhJRzF2WkdsbWFXVmtJSFZ3WkdGMFpTQnlkV3hsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UxWmxZM1J2Y25OOUlIWmxZM1J2Y25NZ1JDMWthVzFsYm5OcGIyNWhiQ0JqYjI5eVpHbHVZWFJsY3k1Y2JpQWdJQ29nUUhKbGRIVnliaUI3UTI5dmNtUnBibUYwWlhOOUlGTlFSU0JqYjI5eVpHbHVZWFJsY3lCcGJpQkVJSE53WVdObExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklHVnRZbVZrS0habFkzUnZjbk02SUZabFkzUnZjbk1wT2lCRGIyOXlaR2x1WVhSbGN5QjdYRzRnSUNBZ1kyOXVjM1FnYmtsMFpXMXpJRDBnZG1WamRHOXljeTVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnWVhKbFlWZHBaSFJvSUQwZ05EQTdYRzRnSUNBZ0x5OGdJRWx1YVhScFlXeHBlbVVnZEdobElFUXRaR2x0Wlc1emFXOXVZV3dnWTI5dmNtUnBibUYwWlhNZ2IyWWdkR2hsSUU0Z2NHOXBiblJ6TGx4dUlDQWdJR052Ym5OMElHTnZiM0prYVc1aGRHVnpJRDBnWm1sc2JGSmhibVJ2YlUxaGRISnBlQ2h1U1hSbGJYTXNJRkJUVUVWQ1lYTmxMbVJwYldWdWMybHZiaXdnWVhKbFlWZHBaSFJvS1R0Y2JpQWdJQ0JzWlhRZ2JHRnRZbVJoSUQwZ2RHaHBjeTVzWVcxaVpHRTdYRzVjYmlBZ0lDQjBhR2x6TG1sdWFYUkVhWE4wWVc1alpTaDJaV04wYjNKektUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHTjVZMnhsSUQwZ01Ec2dZM2xqYkdVZ1BDQjBhR2x6TG1ONVkyeGxjenNnS3l0amVXTnNaU2tnZTF4dUlDQWdJQ0FnTHk4Z1UyVnNaV04wSUdFZ2NHOXBiblFzSUdrc0lHRjBJSEpoYm1SdmJTQW9jR2wyYjNRcExseHVJQ0FnSUNBZ1kyOXVjM1FnYVRvZ2JuVnRZbVZ5SUQwZ2NtRnVaRzl0U1c1MEtHNUpkR1Z0Y3lrN1hHNGdJQ0FnSUNCamIyNXpkQ0J5YjNkcElEMGdZMjl2Y21ScGJtRjBaWE5iYVYwN1hHNWNiaUFnSUNBZ0lDOHZJRVp2Y2lCbGRtVnllU0J3YjJsdWRDQnFJQ0U5SUdrZ0xpNHVYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnFJRDBnTURzZ2FpQThJRzVKZEdWdGN6c2dLeXRxS1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hwSUQwOUlHb3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnliM2RxSUQwZ1kyOXZjbVJwYm1GMFpYTmJhbDA3WEc0Z0lDQWdJQ0FnSUM4dklDNHVMaUJ5WlhSeWFXVjJaU0FvYjNJZ1pYWmhiSFZoZEdVcElHbDBjeUJ3Y205NGFXMXBkSGtnZEc4Z2FTQnBiaUIwYUdVZ2FXNXdkWFFnYzNCaFkyVXNJSEpwYWlBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2NpQTlJSFJvYVhNdVkyRnNZMFJwYzNSaGJtTmxLSFpsWTNSdmNuTXNJR2tzSUdvcE8xeHVJQ0FnSUNBZ0lDQXZMeUF1TGk0Z1lXNWtJR052YlhCMWRHVWdkR2hsYVhJZ1JYVmpiR2xrWldGdUlHUnBjM1JoYm1ObElHOXVJSFJvWlNCRUxXUnBiV1Z1YzJsdmJtRnNJRzFoY0N3Z1pHbHFMbHh1SUNBZ0lDQWdJQ0JqYjI1emRDQmtJRDBnWTJGc1kzVnNZWFJsUlhWamJHbGtaV0Z1UkdsemRHRnVZMlVvY205M2FTd2djbTkzYWlrN1hHNGdJQ0FnSUNBZ0lDOHZJRWxtSUhKcGFpQThQU0J5WXl3Z2IzSWdhV1lnY21scUlENGdjbU1nWVc1a0lHUnBhaUE4SUhKcGFpQXVMaTVjYmlBZ0lDQWdJQ0FnYVdZZ0tDaDBhR2x6TG1OMWRHOW1aaUE5UFNBd0tTQjhmQ0FvY2lBOFBTQjBhR2x6TG1OMWRHOW1aaWtnZkh3Z0tHUWdQQ0J5S1NrZ2UxeHVJQ0FnSUNBZ0lDQWdJR052Ym5OMElHMTFiSFJwY0d4cFpYSWdQU0JzWVcxaVpHRWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lHTnZibk4wSUdScFptWkpTaUE5SUhabFkzUnZja0ZrWkNoeWIzZHBMQ0J5YjNkcUxDQXRNU2s3WEc0Z0lDQWdJQ0FnSUNBZ0x5OGdMaTR1SUhWd1pHRjBaU0IwYUdVZ1kyOXZjbVJwYm1GMFpYTWdlR291WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lDOHZJRVJsWTNKbFlYTmxJSFJvWlNCc1pXRnlibWx1WnlCeVlYUmxJSHRzWVcxaVpHRjlJR0o1SUdFZ2NISmxjMk55YVdKbFpDQjdaR3hoYldKa1lYMHVYRzRnSUNBZ0lDQnNZVzFpWkdFZ0xUMGdkR2hwY3k1a2JHRnRZbVJoTzF4dUlDQWdJQ0FnYVdZZ0tHeGhiV0prWVNBOFBTQXdMaWtnZTF4dUlDQWdJQ0FnSUNCaWNtVmhhenRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUNBZ2NtVjBkWEp1SUdOdmIzSmthVzVoZEdWek8xeHVJQ0I5WEc1OVhHNWNiaThxS2x4dUlDb2dTVzF3YkdWdFpXNTBjeUJ0YjJScFptbGxaQ0J6ZEc5amFHRnpkR2xqSUhCeWIzaHBiV2wwZVNCbGJXSmxaR1JwYm1jdVhHNGdLbHh1SUNvZ1FHVjRjRzl5ZEZ4dUlDb2dRR05zWVhOeklFOXlhV2RwYm1Gc1UxQkZYRzRnS2lCQWJHbHVheUJrYjJrNk1UQXVNVEF3TWk5cVkyTXVNVEF5TXpSY2JpQXFMMXh1Wlhod2IzSjBJR05zWVhOeklFOXlhV2RwYm1Gc1UxQkZJR1Y0ZEdWdVpITWdVMUJGUW1GelpTQjdYRzRnSUM4cUtseHVJQ0FnS2lCRmJXSmxaSE1nZEdobElIWmxZM1J2Y25NZ1oybDJaVzRnYVc1MGJ5QmhJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlNCMWMybHVaeUJoSUcxdlpHbG1hV1ZrSUhWd1pHRjBaU0J5ZFd4bExseHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMVpsWTNSdmNuTjlJSFpsWTNSdmNuTWdSQzFrYVcxbGJuTnBiMjVoYkNCamIyOXlaR2x1WVhSbGN5NWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1EyOXZjbVJwYm1GMFpYTjlJRk5RUlNCamIyOXlaR2x1WVhSbGN5QnBiaUJFSUhOd1lXTmxMbHh1SUNBZ0tpOWNiaUFnY0hKdmRHVmpkR1ZrSUhKaFpHbDFjMUJsY21ObGJuUTZJRzUxYldKbGNqdGNiaUFnY0hKdmRHVmpkR1ZrSUcxaGVFUnBjM1JoYm1ObE9pQnVkVzFpWlhJN1hHNGdJSEJ5YjNSbFkzUmxaQ0J0WVhoRWFYTjBZVzVqWlZOMFpYQnpPaUJ1ZFcxaVpYSTdYRzVjYmlBZ1kyOXVjM1J5ZFdOMGIzSW9iM0IwYVc5dWN6ODZJRTl3ZEdsdmJuTXBJSHRjYmlBZ0lDQnpkWEJsY2lodmNIUnBiMjV6S1R0Y2JpQWdJQ0IwYUdsekxtTjVZMnhsY3lBOUlHOXdkR2x2Ym5NL0xtTjVZMnhsY3lBL1B5QXhaVE03WEc0Z0lDQWdkR2hwY3k1emRHVndjeUE5SUc5d2RHbHZibk0vTG5OMFpYQnpJRDgvSURFd01EQXdNRHRjYmlBZ0lDQjBhR2x6TG5KaFpHbDFjMUJsY21ObGJuUWdQU0J2Y0hScGIyNXpQeTV5WVdScGRYTlFaWEpqWlc1MElEOC9JREV1TUR0Y2JpQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxJRDBnYjNCMGFXOXVjejh1YldGNFJHbHpkR0Z1WTJVZ1B6OGdiblZzYkR0Y2JpQWdJQ0IwYUdsekxtMWhlRVJwYzNSaGJtTmxVM1JsY0hNZ1BTQnZjSFJwYjI1elB5NXRZWGhFYVhOMFlXNWpaVk4wWlhCeklEOC9JRzUxYkd3N1hHNGdJSDFjYmx4dUlDQndkV0pzYVdNZ1pXMWlaV1FvZG1WamRHOXljem9nVm1WamRHOXljeWs2SUVOdmIzSmthVzVoZEdWeklIdGNiaUFnSUNCamIyNXpkQ0J1U1hSbGJYTWdQU0IyWldOMGIzSnpMbXhsYm1kMGFEdGNiaUFnSUNCamIyNXpkQ0JoY21WaFYybGtkR2dnUFNBME1EdGNiaUFnSUNBdkx5QkpibWwwYVdGc2FYcGxJSFJvWlNCRUxXUnBiV1Z1YzJsdmJtRnNJR052YjNKa2FXNWhkR1Z6SUc5bUlIUm9aU0JPSUhCdmFXNTBjeTVjYmlBZ0lDQmpiMjV6ZENCamIyOXlaR2x1WVhSbGN5QTlJR1pwYkd4U1lXNWtiMjFOWVhSeWFYZ29ia2wwWlcxekxDQlBjbWxuYVc1aGJGTlFSUzVrYVcxbGJuTnBiMjRzSUdGeVpXRlhhV1IwYUNrN1hHNWNiaUFnSUNCMGFHbHpMbWx1YVhSRWFYTjBZVzVqWlNoMlpXTjBiM0p6S1R0Y2JseHVJQ0FnSUdsbUlDaDBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE1nUFQwZ2JuVnNiQ2tnZTF4dUlDQWdJQ0FnZEdocGN5NXRZWGhFYVhOMFlXNWpaVk4wWlhCeklEMGdia2wwWlcxeklDb2dUV0YwYUM1bWJHOXZjaWdvYmtsMFpXMXpJQzBnTVNrZ0x5QXlLVHRjYmlBZ0lDQjlYRzRnSUNBZ2FXWWdLSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVWdQVDBnYm5Wc2JDa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dFlYaEVhWE4wWVc1alpTQTlJQzB4WlRNM08xeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2JpQTlJREE3SUc0Z1BDQjBhR2x6TG0xaGVFUnBjM1JoYm1ObFUzUmxjSE03SUc0ckt5a2dlMXh1SUNBZ0lDQWdJQ0JqYjI1emRDQnBJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3SUd4bGRDQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc0Z0lDQWdJQ0FnSUhkb2FXeGxJQ2hwSUQwOUlHb3BJR29nUFNCeVlXNWtiMjFKYm5Rb2JrbDBaVzF6S1R0Y2JseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdkR2hwY3k1allXeGpSR2x6ZEdGdVkyVW9kbVZqZEc5eWN5d2dhU3dnYWlrN1hHNGdJQ0FnSUNBZ0lHbG1JQ2hrSUQ0Z2RHaHBjeTV0WVhoRWFYTjBZVzVqWlNrZ2UxeHVJQ0FnSUNBZ0lDQWdJSFJvYVhNdWJXRjRSR2x6ZEdGdVkyVWdQU0JrTzF4dUlDQWdJQ0FnSUNCOVhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlZ4dVhHNGdJQ0FnYkdWMElHeGhiV0prWVNBOUlIUm9hWE11YkdGdFltUmhPMXh1SUNBZ0lHTnZibk4wSUhKaFpHbDFjeUE5SUNoMGFHbHpMbkpoWkdsMWMxQmxjbU5sYm5RZ1BUMGdNQzR3S1NBL0lIUm9hWE11YldGNFJHbHpkR0Z1WTJVZ09pQjBhR2x6TG0xaGVFUnBjM1JoYm1ObElDb2dkR2hwY3k1eVlXUnBkWE5RWlhKalpXNTBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdZM2xqYkdVZ1BTQXdPeUJqZVdOc1pTQThJSFJvYVhNdVkzbGpiR1Z6T3lBcksyTjVZMnhsS1NCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCemRHVndJRDBnTURzZ2MzUmxjQ0E4SUhSb2FYTXVjM1JsY0hNN0lDc3JjM1JsY0NrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJUWld4bFkzUWdkSGR2SUhCdmFXNTBjeXdnYVNCaGJtUWdhaXdnWVhRZ2NtRnVaRzl0TENBdUxpNWNiaUFnSUNBZ0lDQWdZMjl1YzNRZ2FTQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0JzWlhRZ2FpQTlJSEpoYm1SdmJVbHVkQ2h1U1hSbGJYTXBPMXh1SUNBZ0lDQWdJQ0IzYUdsc1pTQW9hU0E5UFNCcUtTQnFJRDBnY21GdVpHOXRTVzUwS0c1SmRHVnRjeWs3WEc1Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY205M2FTQTlJR052YjNKa2FXNWhkR1Z6VzJsZE8xeHVJQ0FnSUNBZ0lDQmpiMjV6ZENCeWIzZHFJRDBnWTI5dmNtUnBibUYwWlhOYmFsMDdYRzVjYmlBZ0lDQWdJQ0FnTHk4Z2NtVjBjbWxsZG1VZ0tHOXlJR1YyWVd4MVlYUmxLU0IwYUdWcGNpQndjbTk0YVcxcGRIa2dhVzRnZEdobElHbHVjSFYwSUhOd1lXTmxMQ0J5YVdvZ1lXNWtJQzR1TGx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J5SUQwZ2RHaHBjeTVqWVd4alJHbHpkR0Z1WTJVb2RtVmpkRzl5Y3l3Z2FTd2dhaWs3WEc0Z0lDQWdJQ0FnSUM4dklHTnZiWEIxZEdVZ2RHaGxhWElnUlhWamJHbGtaV0Z1SUdScGMzUmhibU5sSUc5dUlIUm9aU0JFTFdScGJXVnVjMmx2Ym1Gc0lHMWhjQ3dnWkdscUxseHVJQ0FnSUNBZ0lDQmpiMjV6ZENCa0lEMGdZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVW9jbTkzYVN3Z2NtOTNhaWs3WEc1Y2JpQWdJQ0FnSUNBZ2FXWWdLQ2h5SUR3OUlISmhaR2wxY3lrZ2ZId2dLR1FnUENCeUtTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdOdmJuTjBJRzExYkhScGNHeHBaWElnUFNCc1lXMWlaR0VnS2lBd0xqVWdLaUFvY2lBdElHUXBJQzhnS0dRZ0t5QjBhR2x6TG1Wd2MybHNiMjRwTzF4dUlDQWdJQ0FnSUNBZ0lDOHZJQzR1TGlCMWNHUmhkR1VnZEdobElHTnZiM0prYVc1aGRHVnpJSGhwSUdGdVpDQjRhaTVjYmlBZ0lDQWdJQ0FnSUNCamIyNXpkQ0JrYVdabVNVb2dQU0IyWldOMGIzSkJaR1FvY205M2FTd2djbTkzYWl3Z0xURXBPMXh1SUNBZ0lDQWdJQ0FnSUdOdmIzSmthVzVoZEdWelcybGRJRDBnZG1WamRHOXlRV1JrS0hKdmQya3NJR1JwWm1aSlNpd2diWFZzZEdsd2JHbGxjaWs3WEc0Z0lDQWdJQ0FnSUNBZ1kyOXZjbVJwYm1GMFpYTmJhbDBnUFNCMlpXTjBiM0pCWkdRb2NtOTNhaXdnWkdsbVprbEtMQ0F0YlhWc2RHbHdiR2xsY2lrN1hHNGdJQ0FnSUNBZ0lIMWNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lHeGhiV0prWVNBdFBTQW9LSFJvYVhNdWJHRnRZbVJoSUMwZ2RHaHBjeTVrYkdGdFltUmhLU0F2SUNoMGFHbHpMbU41WTJ4bGN5QXRJREV1TUNrcE95QTdYRzRnSUNBZ0lDQnBaaUFvYkdGdFltUmhJRHdnZEdocGN5NWtiR0Z0WW1SaEtTQjdYRzRnSUNBZ0lDQWdJR0p5WldGck8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdZMjl2Y21ScGJtRjBaWE03WEc0Z0lIMWNibjFjYmlKZGZRPT0iLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIH0gZnJvbSAnLi4vZGlzdGFuY2UtbWV0cmljcy1tZXRob2RzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgbW1EaXN0YW5jZUZ1bmN0aW9ucywgTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIH0gZnJvbSAnLi4vbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMsIEJpdEFycmF5TWV0cmljc05hbWVzLCBTdHJpbmdNZXRyaWNzTmFtZXMsIFZlY3Rvck1ldHJpY3NOYW1lcyB9IGZyb20gJy4vY29uc3RzJztcbmV4cG9ydCBjb25zdCB2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogY2FsY3VsYXRlRXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl06IGZsLmRpc3RhbmNlLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBqYXJvV2lua2xlcixcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IG1hbmhhdHRhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogdGFuaW1vdG9EaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV06IGRpY2VEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGFzeW1tZXRyaWNEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJyYXVuQmxhbnF1ZXREaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXTogY29zaW5lRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBrdWxjenluc2tpRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IG1jQ29ubmF1Z2hleURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXTogcm9nb3RHb2xkYmVyZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBydXNzZWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBzb2thbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5IYW1taW5nXTogaGFtbWluZ0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBldWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuQml0QXJyYXldOiB7XG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlXToge1xuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXSxcbiAgICB9LFxufTtcbmV4cG9ydCBjb25zdCBNZXRyaWNUb0RhdGFUeXBlID0gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcylcbiAgICAucmVkdWNlKChyZXQsIGtleSkgPT4ge1xuICAgIGZvciAoY29uc3QgdmFsIG9mIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3Nba2V5XSkpIHtcbiAgICAgICAgcmV0W3ZhbF0gPSBrZXk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG59LCB7fSk7XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdTdHJpbmcnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQml0QXJyYXlNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdCaXRBcnJheSc7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09ICdWZWN0b3InO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTWFjcm9Nb2xlY3VsZU1ldHJpYyhuYW1lKSB7XG4gICAgcmV0dXJuIE1ldHJpY1RvRGF0YVR5cGVbbmFtZV0gPT0gRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuTWFjcm9Nb2xlY3VsZS50b1N0cmluZygpO1xufVxuLyoqIE1hbmhhdHRhbiBkaXN0YW5jZSBiZXR3ZWVuIHR3byBzZXF1ZW5jZXMgKG1hdGNoIC0gMCwgbWlzbWF0Y2ggLSAxKSBub3JtYWxpemVkIGZvciBsZW5ndGguICovXG5leHBvcnQgZnVuY3Rpb24gbWFuaGF0dGFuRGlzdGFuY2UoczEsIHMyKSB7XG4gICAgaWYgKHMxLmxlbmd0aCAhPT0gczIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgbGV0IGRpc3QgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHMxLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBkaXN0ICs9IHMxW2ldID09IHMyW2ldID8gMCA6IDE7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFZEJRMnBDTEUxQlFVMHNOa0pCUVRaQ0xFTkJRVU03UVVGRmNrTXNUMEZCVHl4RlFVRkRMREJDUVVFd1FpeEZRVUZETEUxQlFVMHNhVVJCUVdsRUxFTkJRVU03UVVGSE0wWXNUMEZCVHl4RlFVRkRMRzFDUVVGdFFpeEZRVUZGTEhkQ1FVRjNRaXhGUVVGRExFMUJRVTBzY1VOQlFYRkRMRU5CUVVNN1FVRkRiRWNzVDBGQlR5eEZRVUZGTEhWQ1FVRjFRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxFMUJRVTBzVlVGQlZTeERRVUZETzBGQlIycElMRTFCUVUwc1EwRkJReXhOUVVGTkxEUkNRVUUwUWl4SFFVRjVSRHRKUVVOb1J5eERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTERCQ1FVRXdRanREUVVNelJDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFYbEVPMGxCUTJoSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1YwRkJWeXhEUVVGRExFVkJRVVVzUlVGQlJTeERRVUZETEZGQlFWRTdTVUZETjBNc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3hYUVVGWE8wbEJRemRETEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETEVWQlFVVXNhVUpCUVdsQ08wTkJRMnhFTEVOQlFVTTdRVUZGUml4TlFVRk5MRU5CUVVNc1RVRkJUU3c0UWtGQk9FSXNSMEZCTmtRN1NVRkRkRWNzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhSUVVGUkxFTkJRVU1zUlVGQlJTeG5Ra0ZCWjBJN1NVRkRha1FzUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeFpRVUZaTzBsQlEzcERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc2EwSkJRV3RDTzBsQlEzSkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc2NVSkJRWEZDTzBsQlF6TkVMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1kwRkJZenRKUVVNM1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTEd0Q1FVRnJRanRKUVVOeVJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEc5Q1FVRnZRanRKUVVONlJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEhGQ1FVRnhRanRKUVVNelJDeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTEdOQlFXTTdTVUZETjBNc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1JVRkJSU3hoUVVGaE8wbEJRek5ETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVXNaVUZCWlR0SlFVTXZReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxHbENRVUZwUWp0RFFVTndSQ3hEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNaMEpCUVdkQ0xFZEJRVWM3U1VGRE9VSXNRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlR0UlFVTm9ReXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxEUkNRVUUwUWl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXp0TFFVTXpSanRKUVVORUxFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3VVVGRGFFTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN3MFFrRkJORUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU03VVVGRE9VWXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN3MFFrRkJORUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU03VVVGRE9VWXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlN3MFFrRkJORUlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU03UzBGRE0wWTdTVUZEUkN4RFFVRkRMSFZDUVVGMVFpeERRVUZETEZGQlFWRXNRMEZCUXl4RlFVRkZPMUZCUTJ4RExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1VVRkJVU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVN4RFFVRkRPMUZCUXpsR0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRPMUZCUTNSR0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTJ4SExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTNoSExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXpGR0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTJ4SExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1dVRkJXU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNXVUZCV1N4RFFVRkRPMUZCUTNSSExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRPMUZCUTNoSExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRPMUZCUXpGR0xFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1MwRkJTeXhEUVVGRExFVkJRVVVzT0VKQlFUaENMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRPMHRCUTNwR08wbEJRMFFzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhoUVVGaExFTkJRVU1zUlVGQlJUdFJRVU4yUXl4RFFVRkRMSGRDUVVGM1FpeERRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExFOUJRVThzUTBGQlF6dFJRVU42Uml4RFFVRkRMSGRDUVVGM1FpeERRVUZETEZkQlFWY3NRMEZCUXl4RlFVRkZMRzFDUVVGdFFpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExGZEJRVmNzUTBGQlF6dFJRVU5xUnl4RFFVRkRMSGRDUVVGM1FpeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFVkJRVVVzYlVKQlFXMUNMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03UzBGRE9VYzdRMEZEUml4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVhGQ0xFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU03UzBGRE5VVXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJjVUlzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlR0SlFVTnlReXhMUVVGTExFMUJRVTBzUjBGQlJ5eEpRVUZKTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNSMEZCZVVJc1EwRkJReXhEUVVGRExFVkJRVVU3VVVGRE1VVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTMEZEZEVNN1NVRkRSQ3hQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVdGVUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYTBJN1NVRkRMME1zVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGclFqdEpRVU5xUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhKUVVGclFqdEpRVU12UXl4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJRenRCUVVNMVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVUZETEVsQlFXdENPMGxCUTNSRUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzZFVKQlFYVkNMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEzQkdMRU5CUVVNN1FVRkZSQ3huUjBGQlowYzdRVUZEYUVjc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM1JFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1MwRkJTeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTzFGQlF6TkNMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRMVk3VTBGQlRUdFJRVU5NTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOc1F5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZEYUVNN1VVRkRSQ3hQUVVGUExFbEJRVWtzUjBGQlJ5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRPMHRCUTNwQ08wRkJRMGdzUTBGQlF6dEJRVVZFTERSRVFVRTBSRHRCUVVNMVJDeE5RVUZOTEU5QlFVOHNUMEZCVHp0SlFVbHNRanM3T3p0UFFVbEhPMGxCUTBnc1dVRkJXU3hOUVVGdlFqdFJRVU01UWl4SlFVRkpMRU5CUVVNc1RVRkJUU3hIUVVGSExFMUJRVTBzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJkVUlzUTBGQlF6dEpRVU5xUlN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTU3hWUVVGVkxFTkJRVU1zU1VGQlZUdFJRVU14UWl4TlFVRk5MRWxCUVVrc1IwRkZUaXhuUWtGQlowSXNRMEZCUXp0UlFVTnlRaXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRPMWxCUTNwR0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFbEJRVWtzUTBGQlF5eE5RVUZOTEd0Q1FVRnJRaXhKUVVGSkxFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTnVSaXhQUVVGUExIRkNRVUZ4UWl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlEzaERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJjVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUXpkRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQmJVSXNRMEZCUXp0SlFVTjJSQ3hEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFNTeE5RVUZOTEVOQlFVTXNiVUpCUVcxQ0xFTkJRVU1zVVVGQk5FSTdVVUZETlVRc1QwRkJUeXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZEYWtRc1EwRkJRenRKUVVWRU96dFBRVVZITzBsQlEwZ3NUVUZCVFN4TFFVRkxMR2xDUVVGcFFqdFJRVU14UWl4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1EwRkJRenRKUVVOMlF5eERRVUZETzBOQlEwWWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdLaUJoY3lCbWJDQm1jbTl0SUNkbVlYTjBaWE4wTFd4bGRtVnVjMmgwWldsdUp6dGNibWx0Y0c5eWRDQjdhbUZ5YjFkcGJtdHNaWEo5SUdaeWIyMGdKMnBoY204dGQybHVhMnhsY2kxMGVYQmxjMk55YVhCMEp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOOUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwzUjVjR1V0WkdWamJHRnlZWFJwYjI1ekp6dGNibWx0Y0c5eWRDQjdYRzRnSUdGemVXMXRaWFJ5YVdORWFYTjBZVzVqWlN4Y2JpQWdZbkpoZFc1Q2JHRnVjWFZsZEVScGMzUmhibU5sTEZ4dUlDQmpiM05wYm1WRWFYTjBZVzVqWlN4Y2JpQWdaR2xqWlVScGMzUmhibU5sTEZ4dUlDQmxkV05zYVdSbFlXNUVhWE4wWVc1alpTeGNiaUFnYUdGdGJXbHVaMFJwYzNSaGJtTmxMRnh1SUNCcmRXeGplbmx1YzJ0cFJHbHpkR0Z1WTJVc1hHNGdJRzFqUTI5dWJtRjFaMmhsZVVScGMzUmhibU5sTEZ4dUlDQnliMmR2ZEVkdmJHUmlaWEpuUkdsemRHRnVZMlVzWEc0Z0lISjFjM05sYkVScGMzUmhibU5sTEZ4dUlDQnpiMnRoYkVScGMzUmhibU5sTEZ4dUlDQjBZVzVwYlc5MGIwUnBjM1JoYm1ObExGeHVmU0JtY205dElDY3VMaTlrYVhOMFlXNWpaUzF0WlhSeWFXTnpMVzFsZEdodlpITW5PMXh1WEc1cGJYQnZjblFnZTJOaGJHTjFiR0YwWlVWMVkyeHBaR1ZoYmtScGMzUmhibU5sZlNCbWNtOXRJQ2RBWkdGMFlXZHliMnN0YkdsaWNtRnlhV1Z6TDNWMGFXeHpMM055WXk5MlpXTjBiM0l0YjNCbGNtRjBhVzl1Y3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdWbVZqZEc5eUxDQlRkSEpwYm1kRWFXTjBhVzl1WVhKNWZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwzVjBhV3h6TDNOeVl5OTBlWEJsTFdSbFkyeGhjbUYwYVc5dWN5YzdYRzVwYlhCdmNuUWdlMjF0UkdsemRHRnVZMlZHZFc1amRHbHZibk1zSUUxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjMzBnWm5KdmJTQW5MaTR2YldGamNtOXRiMnhsWTNWc1pTMWthWE4wWVc1alpTMW1kVzVqZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHNnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXNJRUpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TENCVGRISnBibWROWlhSeWFXTnpUbUZ0WlhNc0lGWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5QjlJR1p5YjIwZ0p5NHZZMjl1YzNSekp6dGNibHh1WEc1bGVIQnZjblFnWTI5dWMzUWdkbVZqZEc5eVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjem9nZXlCYmJtRnRaVG9nYzNSeWFXNW5YVG9nS0hnNklGWmxZM1J2Y2l3Z2VUb2dWbVZqZEc5eUtTQTlQaUJ1ZFcxaVpYSWdmU0E5SUh0Y2JpQWdXMVpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeTVGZFdOc2FXUmxZVzVkT2lCallXeGpkV3hoZEdWRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpPaUI3SUZ0dVlXMWxPaUJ6ZEhKcGJtZGRPaUFvZURvZ2MzUnlhVzVuTENCNU9pQnpkSEpwYm1jcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFRvZ1ptd3VaR2x6ZEdGdVkyVXNYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVNtRnliMWRwYm10c1pYSmRPaUJxWVhKdlYybHVhMnhsY2l4Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVOWVc1b1lYUjBZVzVkT2lCdFlXNW9ZWFIwWVc1RWFYTjBZVzVqWlN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE02SUhzZ1cyNWhiV1U2SUhOMGNtbHVaMTA2SUNoNE9pQkNhWFJCY25KaGVTd2dlVG9nUW1sMFFYSnlZWGtwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVWR0Z1YVcxdmRHOWRPaUIwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlYwNklHUnBZMlZFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0Z6ZVcxdFpYUnlhV05kT2lCaGMzbHRiV1YwY21salJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYVG9nWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVEyOXphVzVsWFRvZ1kyOXphVzVsUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFRvZ2EzVnNZM3A1Ym5OcmFVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVRXTkRiMjV1WVhWbmFHVjVYVG9nYldORGIyNXVZWFZuYUdWNVJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1U2IyZHZkRWR2YkdSaVpYSm5YVG9nY205bmIzUkhiMnhrWW1WeVowUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVVuVnpjMlZzWFRvZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVUYjJ0aGJGMDZJSE52YTJGc1JHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1SVlXMXRhVzVuWFRvZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ1pYVmpiR2xrWldGdVJHbHpkR0Z1WTJVc1hHNTlPMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdRWFpoYVd4aFlteGxUV1YwY21samN5QTlJSHRjYmlBZ1cwUnBjM1JoYm1ObFRXVjBjbWxqYzFOMVltcGxZM1J6TGxabFkzUnZjbDA2SUh0Y2JpQWdJQ0JiVm1WamRHOXlUV1YwY21samMwNWhiV1Z6TGtWMVkyeHBaR1ZoYmwwNklIWmxZM1J2Y2tScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJWbVZqZEc5eVRXVjBjbWxqYzA1aGJXVnpMa1YxWTJ4cFpHVmhibDBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVUZEhKcGJtZGRPaUI3WEc0Z0lDQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVNWlhabGJuTm9kR1ZwYmwwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFN4Y2JpQWdJQ0JiVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGtwaGNtOVhhVzVyYkdWeVhUb2djM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11U21GeWIxZHBibXRzWlhKZExGeHVJQ0FnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRXRnVhR0YwZEdGdVhUb2djM1J5YVc1blJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11VFdGdWFHRjBkR0Z1WFN4Y2JpQWdmU3hjYmlBZ1cwUnBjM1JoYm1ObFRXVjBjbWxqYzFOMVltcGxZM1J6TGtKcGRFRnljbUY1WFRvZ2UxeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVVZVzVwYlc5MGIxMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVVZVzVwYlc5MGIxMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa1JwWTJWZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVJHbGpaVjBzWEc0Z0lDQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtGemVXMXRaWFJ5YVdOZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFuSmhkVzVDYkdGdWNYVmxkRjBzWEc0Z0lDQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtOdmMybHVaVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGt0MWJHTjZlVzV6YTJsZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NU5ZME52Ym01aGRXZG9aWGxkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VFdORGIyNXVZWFZuYUdWNVhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVbTluYjNSSGIyeGtZbVZ5WjEwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1U2IyZHZkRWR2YkdSaVpYSm5YU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW5WemMyVnNYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbE52YTJGc1hUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFN4Y2JpQWdmU3hjYmlBZ1cwUnBjM1JoYm1ObFRXVjBjbWxqYzFOMVltcGxZM1J6TGsxaFkzSnZUVzlzWldOMWJHVmRPaUI3SUM4dklHOXdkR2x2Ym1Gc0lHRnlaM01nWVhKbElHNWxaV1JsWkNCbWIzSWdiV0ZqY205dGIyeGxZM1ZzWlNCbWRXNWpkR2x2Ym5NZ2QyaHBZMmdnYVc1cGRHbGhiR2w2WlNCMGFHVnRYRzRnSUNBZ1cwMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3k1SVFVMU5TVTVIWFRvZ2JXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMxdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVNFRk5UVWxPUjEwc1hHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVNUlZaRlRsTklWRVZKVGwwNklHMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxreEZWa1ZPVTBoVVJVbE9YU3hjYmlBZ0lDQmJUVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMDVoYldWekxrNUZSVVJNUlUxQlRrNWZWMVZPVTBOSVhUb2diVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMXROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVUa1ZGUkV4RlRVRk9UbDlYVlU1VFEwaGRMRnh1SUNCOUxGeHVmVHRjYmx4dVpYaHdiM0owSUdOdmJuTjBJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVTZJRk4wY21sdVowUnBZM1JwYjI1aGNua2dQU0JQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1Z4dUlDQXVjbVZrZFdObEtDaHlaWFE2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtzSUd0bGVTa2dQVDRnZTF4dUlDQWdJR1p2Y2lBb1kyOXVjM1FnZG1Gc0lHOW1JRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iYTJWNUlHRnpJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMTBwS1NCN1hHNGdJQ0FnSUNCeVpYUmJkbUZzSUdGeklFRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMxMGdQU0JyWlhrN1hHNGdJQ0FnZlZ4dUlDQWdJSEpsZEhWeWJpQnlaWFE3WEc0Z0lIMHNJSHQ5S1R0Y2JseHVaWGh3YjNKMElIUjVjR1VnUVhaaGFXeGhZbXhsUkdGMFlWUjVjR1Z6SUQwZ2EyVjViMllnZEhsd1pXOW1JRUYyWVdsc1lXSnNaVTFsZEhKcFkzTTdYRzVsZUhCdmNuUWdkSGx3WlNCV1pXTjBiM0pOWlhSeWFXTnpJRDBnYTJWNWIyWWdkSGx3Wlc5bUlFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11Vm1WamRHOXlYVHRjYm1WNGNHOXlkQ0IwZVhCbElGTjBjbWx1WjAxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1VGRISnBibWRkTzF4dVpYaHdiM0owSUhSNWNHVWdRbWwwUVhKeVlYbE5aWFJ5YVdOeklEMGdhMlY1YjJZZ2RIbHdaVzltSUVGMllXbHNZV0pzWlUxbGRISnBZM05iUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVRbWwwUVhKeVlYbGRPMXh1Wlhod2IzSjBJSFI1Y0dVZ1MyNXZkMjVOWlhSeWFXTnpJRDBnVTNSeWFXNW5UV1YwY21samN5QjhJRUpwZEVGeWNtRjVUV1YwY21samN5QjhJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZDQk5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNN1hHNWNibVY0Y0c5eWRDQjBlWEJsSUZaaGJHbGtWSGx3WlhNZ1BWeHVJQ0I3SUdSaGRHRTZJSE4wY21sdVoxdGRMQ0J0WlhSeWFXTTZJRk4wY21sdVowMWxkSEpwWTNNZ2ZDQk5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNZ2ZTQjhYRzRnSUhzZ1pHRjBZVG9nVm1WamRHOXlXMTBzSUcxbGRISnBZem9nVm1WamRHOXlUV1YwY21samN5QjlJSHhjYmlBZ2V5QmtZWFJoT2lCQ2FYUkJjbkpoZVZ0ZExDQnRaWFJ5YVdNNklFSnBkRUZ5Y21GNVRXVjBjbWxqY3lCOU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5UZEhKcGJtZE5aWFJ5YVdNb2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUhKbGRIVnliaUJOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjVoYldWZElEMDlJQ2RUZEhKcGJtY25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTkNhWFJCY25KaGVVMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMEpwZEVGeWNtRjVKenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpWbVZqZEc5eVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5WbVZqZEc5eUp6dGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdselRXRmpjbTlOYjJ4bFkzVnNaVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVUV0ZqY205TmIyeGxZM1ZzWlM1MGIxTjBjbWx1WnlncE8xeHVmVnh1WEc0dktpb2dUV0Z1YUdGMGRHRnVJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdkSGR2SUhObGNYVmxibU5sY3lBb2JXRjBZMmdnTFNBd0xDQnRhWE50WVhSamFDQXRJREVwSUc1dmNtMWhiR2w2WldRZ1ptOXlJR3hsYm1kMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVc1b1lYUjBZVzVFYVhOMFlXNWpaU2h6TVRvZ2MzUnlhVzVuTENCek1qb2djM1J5YVc1bktUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tITXhMbXhsYm1kMGFDQWhQVDBnY3pJdWJHVnVaM1JvS1NCN1hHNGdJQ0FnY21WMGRYSnVJREU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYkdWMElHUnBjM1E2SUc1MWJXSmxjaUE5SURBN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlERTdJR2tnUENCek1TNXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnWkdsemRDQXJQU0J6TVZ0cFhTQTlQU0J6TWx0cFhTQS9JREFnT2lBeE8xeHVJQ0FnSUgxY2JpQWdJQ0J5WlhSMWNtNGdaR2x6ZENBdklITXhMbXhsYm1kMGFEdGNiaUFnZlZ4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dmNIUnpmU0J2Y0hSeklFOXdkR2x2Ym5NZ1ptOXlJSFJvWlNCdFpXRnpkWEpsTGlCMWMyVmtJR1p2Y2lCdFlXTnliMjF2YkdWamRXeGxJR1JwYzNSaGJtTmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1EyRnNiR0poWTJzZ2IyWWdkR2hsSUcxbFlYTjFjbVVnWTJodmMyVnVMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJOWldGemRYSmxLRzl3ZEhNL09pQmhibmtwT2lCRWFYTjBZVzVqWlUxbGRISnBZeUI3WEc0Z0lDQWdZMjl1YzNRZ1pHbGpkRG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPbHh1SUNBZ0lDQWdlMXRyWlhreU9pQnpkSEpwYm1kZE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCOElDZ29iM0IwY3pvZ1lXNTVLU0E5UGlCRWFYTjBZVzVqWlUxbGRISnBZeWw5WEc0Z0lDQWdmU0E5SUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc0Z0lDQWdhV1lnS0NGa2FXTjBMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11WkdGMFlWUjVjR1VwSUh4OElDRmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11YldWMGFHOWtLU2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVyYm05M2JpQnRaV0Z6ZFhKbElDUjdkR2hwY3k1dFpYUm9iMlI5SUdadmNpQmtZWFJoSUhSNWNHVWdKSHQwYUdsekxtUmhkR0ZVZVhCbGZXQXBPMXh1SUNBZ0lISmxkSFZ5YmlCcGMwMWhZM0p2VFc5c1pXTjFiR1ZOWlhSeWFXTW9kR2hwY3k1dFpYUm9iMlFwSUQ5Y2JpQWdJQ0FnSUNoa2FXTjBXM1JvYVhNdVpHRjBZVlI1Y0dWZFczUm9hWE11YldWMGFHOWtYU0JoY3lBb0tHOXdkSE02SUdGdWVTa2dQVDRnUkdsemRHRnVZMlZOWlhSeWFXTXBLU2h2Y0hSektTQTZYRzRnSUNBZ0lDQmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRXM1JvYVhNdWJXVjBhRzlrWFNCaGN5QkVhWE4wWVc1alpVMWxkSEpwWXp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWW5rZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0QmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhOOUlHUmhkR0ZVZVhCbElFMWxkSEpwWXlkeklHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgwZ1RXVjBjbWxqSUc1aGJXVnpJSGRvYVdOb0lHVjRjR1ZqZEhNZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFRXVjBjbWxqUW5sRVlYUmhWSGx3WlNoa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWektUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOelcyUmhkR0ZVZVhCbFhTazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCdFpYUnlhV01nYm1GdFpYTWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnWVhaaGFXeGhZbXhsVFdWaGMzVnlaWE1vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1R0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBCaXRBcnJheSB7XG4gICAgY29uc3RydWN0b3IoYXJnLCBkZWZhdWx0VmFsdWUgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLl9sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLl92ZXJzaW9uID0gMDtcbiAgICAgICAgdGhpcy5fdXBkYXRlTGV2ZWwgPSAwO1xuICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudFZlcnNpb24gPSAtMTtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleGVzVmVyc2lvbiA9IC0xO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lID0gJyc7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWVWZXJzaW9uID0gLTE7XG4gICAgICAgIHRoaXMuU0hSSU5LX1RIUkVTSE9MRCA9IDB4MTAwO1xuICAgICAgICBpZiAodHlwZW9mIGFyZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IGFyZztcbiAgICAgICAgICAgIGNvbnN0IGJ1ZmYgPSBCaXRBcnJheS5fY3JlYXRlQnVmZmVyKGxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWZmLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICBidWZmW2ldID0gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gYnVmZjtcbiAgICAgICAgICAgIHRoaXMuX2xlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChhcmcgaW5zdGFuY2VvZiBVaW50MzJBcnJheSkge1xuICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGFyZztcbiAgICAgICAgICAgIHRoaXMuX2xlbmd0aCA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb25zdHJ1Y3RvcicpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldFJhd0RhdGEoKSB7IHJldHVybiB0aGlzLl9kYXRhOyB9XG4gICAgYXNzdXJlR29leihudW0sIGFyZ05hbWUpIHtcbiAgICAgICAgaWYgKG51bSA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXJnTmFtZX0gc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvYCk7XG4gICAgfVxuICAgIGFzc3VyZUluUmFuZ2UodmFsdWUsIG1pbiwgbWF4LCBhcmdOYW1lKSB7XG4gICAgICAgIGlmICgodmFsdWUgPCBtaW4pIHx8ICh2YWx1ZSA+IG1heCkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFyZ3VtZW50ICR7YXJnTmFtZX0gKCR7dmFsdWV9KSBvdXQgb2YgcmFuZ2UgKCR7bWlufSwgJHttYXh9KWApO1xuICAgIH1cbiAgICBjb3B5KHNyYywgZHN0LCBjb3VudCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspXG4gICAgICAgICAgICBkc3RbaV0gPSBzcmNbaV07XG4gICAgfVxuICAgIGNvcHlGcm9tKG90aGVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gb3RoZXIuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTGVuZ3RocyBkaWZmZXIgKCR7dGhpcy5fbGVuZ3RofSAhPSAke290aGVyLl9sZW5ndGh9KWApO1xuICAgICAgICB0aGlzLmNvcHkob3RoZXIuX2RhdGEsIHRoaXMuX2RhdGEsIHRoaXMubGVuZ3RoSW5JbnRzKTtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fbGVuZ3RoO1xuICAgIH1cbiAgICBnZXQgYnVmZmVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG4gICAgc2V0IGJ1ZmZlcihkYXRhKSB7XG4gICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIGdldCB2ZXJzaW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmVyc2lvbjtcbiAgICB9XG4gICAgc2V0IHZlcnNpb24odmFsdWUpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbiA9IHZhbHVlO1xuICAgIH1cbiAgICBpbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoSW5JbnRzKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigodGhpcy5fbGVuZ3RoICsgMHgxZikgLyAweDIwKTtcbiAgICB9XG4gICAgZ2V0IHZlcnNpb25lZE5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92ZXJzaW9uID09IHRoaXMuX3ZlcnNpb25lZE5hbWVWZXJzaW9uID8gdGhpcy5fdmVyc2lvbmVkTmFtZSA6ICcnO1xuICAgIH1cbiAgICBzZXQgdmVyc2lvbmVkTmFtZShuYW1lKSB7XG4gICAgICAgIHRoaXMuX3ZlcnNpb25lZE5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLl92ZXJzaW9uZWROYW1lVmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgfVxuICAgIGdldCBzZWxmKCkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0TGVuZ3RoKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSA8IDApXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Nob3VsZCBiZSA+PSAwJyk7XG4gICAgICAgIGlmICh2YWx1ZSA9PSB0aGlzLl9sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5JbnRzTmVlZGVkID0gTWF0aC5mbG9vcigodmFsdWUgKyAweDFmKSAvIDB4MjApO1xuICAgICAgICBpZiAoKG5JbnRzTmVlZGVkID4gdGhpcy5fZGF0YS5sZW5ndGgpIHx8ICgobkludHNOZWVkZWQgKyB0aGlzLlNIUklOS19USFJFU0hPTEQpIDwgdGhpcy5fZGF0YS5sZW5ndGgpKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gbmV3IFVpbnQzMkFycmF5KG5JbnRzTmVlZGVkKTtcbiAgICAgICAgICAgIHRoaXMuY29weSh0aGlzLl9kYXRhLCBuZXdEYXRhLCAobkludHNOZWVkZWQgPiB0aGlzLl9kYXRhLmxlbmd0aCkgPyB0aGlzLl9kYXRhLmxlbmd0aCA6IG5JbnRzTmVlZGVkKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXdEYXRhO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA+IHRoaXMuX2xlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAlIDB4MjAgPiAwKVxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFbdGhpcy5sZW5ndGhJbkludHMgLSAxXSAmPSAoMSA8PCAoKHRoaXMuX2xlbmd0aCAlIDB4MjApICYgMHgxZikpIC0gMTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEuZmlsbCgwLCB0aGlzLmxlbmd0aEluSW50cywgbkludHNOZWVkZWQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2xlbmd0aCA9IHZhbHVlO1xuICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tQW5kKHNldDEsIHNldDIpIHtcbiAgICAgICAgaWYgKHNldDEuX2xlbmd0aCAhPSBzZXQyLl9sZW5ndGgpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYExlbmd0aHMgZGlmZmVyICgke3NldDEuX2xlbmd0aH0gIT0gJHtzZXQyLl9sZW5ndGh9KWApO1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KHNldDEuX2xlbmd0aCk7XG4gICAgICAgIHRlbXAuX2xlbmd0aCA9IHNldDEuX2xlbmd0aDtcbiAgICAgICAgdGVtcC5fZGF0YSA9IEJpdEFycmF5Ll9jcmVhdGVCdWZmZXIodGVtcC5fbGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIGNvbnN0IGxlbiA9IHNldDEubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGVtcC5fZGF0YVtpXSA9IHNldDEuX2RhdGFbaV0gJiBzZXQyLl9kYXRhW2ldO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgc3RhdGljIF9jcmVhdGVCdWZmZXIobGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBuZXcgVWludDMyQXJyYXkoTWF0aC5mbG9vcigobGVuZ3RoICsgMHgxZikgLyAweDIwKSk7XG4gICAgfVxuICAgIHN0YXRpYyBmcm9tVmFsdWVzKHZhbHVlcykge1xuICAgICAgICBjb25zdCB0ZW1wID0gbmV3IEJpdEFycmF5KHZhbHVlcy5sZW5ndGgpO1xuICAgICAgICB0ZW1wLl92ZXJzaW9uID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZW1wLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSlcbiAgICAgICAgICAgICAgICB0ZW1wLl9kYXRhW01hdGguZmxvb3IoaSAvIDB4MjApXSB8PSAxIDw8ICgoaSAlIDB4MjApICYgMHgxZik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRlbXA7XG4gICAgfVxuICAgIC8vLyBDb25zdHJ1Y3RzIGEgW0JpdFNldF0gb2YgbGVuZ3RoIFtjb3VudF0sIHdoZXJlIGlkeC10aCBiaXQgaXMgZGV0ZXJtaW5lZCBieSBhIGNhbGwgdG8gW2ZsYWddIChpZHgpLlxuICAgIHN0YXRpYyBmcm9tU2VxKGNvdW50LCBmbGFnKSB7XG4gICAgICAgIGNvbnN0IHRlbXAgPSBuZXcgQml0QXJyYXkoY291bnQpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpXG4gICAgICAgICAgICB0ZW1wLnNldEJpdChpLCBmbGFnKGkpKTtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICAvLy8gQ29uc3RydWN0cyBhIFtCaXRTZXRdIGZyb20gYSBzdHJpbmcgW3NdIGNvbnRhaW5pbmcgJzAnIG9yICcxJy5cbiAgICBzdGF0aWMgZnJvbVN0cmluZyhzKSB7XG4gICAgICAgIHJldHVybiBCaXRBcnJheS5mcm9tU2VxKHMubGVuZ3RoLCAoaSkgPT4gcy5jaGFyQXQoaSkgPT0gJzEnKTtcbiAgICB9XG4gICAgLy8vIENvbnN0cnVjdHMgYSBbQml0U2V0XSwgYmFzZWQgb24gbGVuZ3RoIFtfbGVuZ3RoXSBhbmQgYnl0ZSBhcnJheSBbX2RhdGFdLlxuICAgIHN0YXRpYyBmcm9tVWludDMyQXJyYXkoX2xlbmd0aCwgX2RhdGEpIHtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShfbGVuZ3RoKTtcbiAgICAgICAgdGVtcC5fZGF0YSA9IF9kYXRhO1xuICAgICAgICByZXR1cm4gdGVtcDtcbiAgICB9XG4gICAgLy8vIERlc2VyaWFsaXplcyBhIFtCaXRTZXRdIGZyb20gW2J5dGVzXS5cbiAgICBzdGF0aWMgZnJvbUJ5dGVzKGJ5dGVzKSB7XG4gICAgICAgIGNvbnN0IGxlbiA9IGJ5dGVzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGVtcCA9IG5ldyBCaXRBcnJheShsZW4gKiA4KTtcbiAgICAgICAgdGVtcC5fZGF0YSA9IG5ldyBVaW50MzJBcnJheShNYXRoLmZsb29yKChsZW4gKyAzKSAvIDQpKTtcbiAgICAgICAgdGVtcC5fbGVuZ3RoID0gbGVuICogODtcbiAgICAgICAgbGV0IG51bTEgPSAwO1xuICAgICAgICBsZXQgbnVtMiA9IDA7XG4gICAgICAgIHdoaWxlICgobGVuIC0gbnVtMikgPj0gNCkge1xuICAgICAgICAgICAgdGVtcC5fZGF0YVtudW0xKytdID0gKCgoYnl0ZXNbbnVtMl0gJiAweGZmKSB8ICgoYnl0ZXNbbnVtMiArIDFdICYgMHhmZikgPDwgOCkpIHxcbiAgICAgICAgICAgICAgICAoKGJ5dGVzW251bTIgKyAyXSAmIDB4ZmYpIDw8IDB4MTApKSB8ICgoYnl0ZXNbbnVtMiArIDNdICYgMHhmZikgPDwgMHgxOCk7XG4gICAgICAgICAgICBudW0yICs9IDQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxlbiAtIG51bTIgPT0gMylcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMV0gPSAoYnl0ZXNbbnVtMiArIDJdICYgMHhmZikgPDwgMHgxMDtcbiAgICAgICAgaWYgKGxlbiAtIG51bTIgPT0gMilcbiAgICAgICAgICAgIHRlbXAuX2RhdGFbbnVtMV0gfD0gKGJ5dGVzW251bTIgKyAxXSAmIDB4ZmYpIDw8IDg7XG4gICAgICAgIGlmIChsZW4gLSBudW0yID09IDEpXG4gICAgICAgICAgICB0ZW1wLl9kYXRhW251bTFdIHw9IGJ5dGVzW251bTJdICYgMHhmZjtcbiAgICAgICAgdGVtcC5fdmVyc2lvbiA9IDA7XG4gICAgICAgIHJldHVybiB0ZW1wO1xuICAgIH1cbiAgICB0b1N0cmluZygpIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuX2xlbmd0aH0gYml0cywgJHt0aGlzLmNvdW50Qml0cyh0cnVlKX0gc2V0YDtcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIGRlZXAgY29tcGFyaXNvbiBvZiB0d28gYml0c2V0cy5cbiAgICBlcXVhbHMob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMgPT0gb3RoZXIpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKG90aGVyID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gb3RoZXIuX2xlbmd0aClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCA9PSAwKVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGggLSAxOyBpKyspXG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVtpXSAhPSBvdGhlci5fZGF0YVtpXSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGZvciAobGV0IGkgPSAodGhpcy5fZGF0YS5sZW5ndGggLSAxKSAqIDg7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0Qml0KGkpICE9IG90aGVyLmdldEJpdChpKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8qKiBDbG9uZXMgYSBiaXRzZXQuICovXG4gICAgY2xvbmUoKSB7XG4gICAgICAgIGNvbnN0IGJpdEFycmF5ID0gbmV3IEJpdEFycmF5KDAsIGZhbHNlKTtcbiAgICAgICAgYml0QXJyYXkuX2RhdGEgPSBVaW50MzJBcnJheS5mcm9tKHRoaXMuX2RhdGEpOyAvLyBlZmZlY3RpdmUgbGVuZ3RoOiAobGVuZ3RoSW5JbnRzKVxuICAgICAgICBiaXRBcnJheS5fbGVuZ3RoID0gdGhpcy5fbGVuZ3RoO1xuICAgICAgICBiaXRBcnJheS5fdmVyc2lvbiA9IHRoaXMuX3ZlcnNpb247XG4gICAgICAgIHJldHVybiBiaXRBcnJheTtcbiAgICB9XG4gICAgLyoqIEluaXRpYWxpemVzIGEgYml0c2V0LiAqL1xuICAgIGluaXQoZmxhZywgbm90aWZ5KSB7XG4gICAgICAgIHRoaXMuc2V0QWxsKGZhbHNlLCBmYWxzZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChmbGFnKGkpKVxuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldIHw9IDEgPDwgKChpICUgMHgyMCkgJiAweDFmKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBJbnZlcnRzIGEgYml0c2V0LlxuICAgIGludmVydChub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gXj0gLTE7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICAvLy8gU2V0cyBhbGwgYml0cyB0byBbdmFsdWVdLCBvcHRpb25hbGx5IHN1cHByZXNzaW5nIG5vdGlmaWNhdGlvbnMuXG4gICAgc2V0QWxsKHZhbHVlLCBub3RpZnkgPSBmYWxzZSkge1xuICAgICAgICBjb25zdCBmbGFncyA9IHZhbHVlID8gLTEgOiAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykgLy90b2RvOiBvcHRpbWl6ZVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IGZsYWdzO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICB9XG4gICAgLy8vIFNldHMgYml0cyBhdCBbaW5kZXhlc10gcG9zaXRpb24gdG8gW3ZhbHVlXS5cbiAgICAvLy8gQ2xlYXJzIHRoZSBiaXRzZXQgaWYgW2NsZWFyXSBmbGFnIGlzIHRydWUuXG4gICAgLy8vIENoYW5nZSBub3RpZmljYXRpb24gaXMgcmFpc2VkIHdoZW4gW25vdGlmeV0gaXMgdHJ1ZS5cbiAgICBzZXRJbmRleGVzKGluZGV4ZXMsIHZhbHVlID0gdHJ1ZSwgY2xlYXIgPSB0cnVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmIChjbGVhcilcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsKCF2YWx1ZSwgZmFsc2UpO1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgaW5kZXhlcylcbiAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICBldmVyeUluZGV4KGluZGV4ZXMsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGluZGV4ZXMpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpbmRleCkgIT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBhbnlJbmRleChpbmRleGVzLCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgZm9yIChjb25zdCBpbmRleCBvZiBpbmRleGVzKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXRCaXQoaW5kZXgpID09IHZhbHVlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgc2V0V2hlcmUoY2hlY2ssIHZhbHVlID0gdHJ1ZSwgY2xlYXIgPSB0cnVlLCBub3RpZnkgPSB0cnVlLCBhbGxvd0NsZWFyID0gdHJ1ZSkge1xuICAgICAgICBpZiAoY2xlYXIgJiYgYWxsb3dDbGVhcilcbiAgICAgICAgICAgIHRoaXMuc2V0QWxsKCF2YWx1ZSwgZmFsc2UpO1xuICAgICAgICBpZiAoYWxsb3dDbGVhcikge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChjaGVjayhpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fbGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRGYXN0KGksIGNoZWNrKGkpID8gdmFsdWUgOiAhdmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgIH1cbiAgICBnZXRSYW5nZShmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoZnJvbSwgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ2Zyb20nKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHRvLCAwLCB0aGlzLl9sZW5ndGgsICd0bycpO1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGZyb207IGkgPCB0bzsgKytpKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICByZXR1cm4gQml0QXJyYXkuZnJvbVZhbHVlcyhhcnIpO1xuICAgIH1cbiAgICBnZXRSYW5nZUFzTGlzdChmcm9tLCB0bykge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UoZnJvbSwgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ2Zyb20nKTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKHRvLCAwLCB0aGlzLl9sZW5ndGgsICd0bycpO1xuICAgICAgICBjb25zdCBhcnIgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IGZyb207IGkgPCB0bzsgKytpKVxuICAgICAgICAgICAgYXJyLnB1c2godGhpcy5nZXRCaXQoaSkpO1xuICAgICAgICByZXR1cm4gYXJyO1xuICAgIH1cbiAgICBzZXRSYW5nZShmcm9tLCB0bywgdmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGZyb20sIDAsIHRoaXMuX2xlbmd0aCAtIDEsICdmcm9tJyk7XG4gICAgICAgIHRoaXMuYXNzdXJlSW5SYW5nZSh0bywgMCwgdGhpcy5fbGVuZ3RoIC0gMSwgJ3RvJyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gTWF0aC5taW4oZnJvbSwgdG8pO1xuICAgICAgICBjb25zdCBlbmQgPSBNYXRoLm1heChmcm9tLCB0byk7XG4gICAgICAgIC8vdG9kbzogb3B0aW1pemVcbiAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpKyspXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUcnVlKGkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFsc2UoaSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gU2V0cyBuIHJhbmRvbWx5IGNob3NlbiBiaXRzIHRvIHZhbHVlLCByZW1haW5pbmcgYml0cyB0byAhdmFsdWUuXG4gICAgc2V0UmFuZG9tKG4sIHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmIChuIDwgMCB8fCBuID4gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduIG11c3QgYmUgPj0gMCAmJiA8PSBDb3VudCcpO1xuICAgICAgICBpZiAobiA+IHRoaXMuX2xlbmd0aCAvIDIpXG4gICAgICAgICAgICB0aGlzLnNldFJhbmRvbSh0aGlzLl9sZW5ndGggLSBuLCAhdmFsdWUpO1xuICAgICAgICB0aGlzLnNldEFsbCghdmFsdWUpO1xuICAgICAgICBmb3IgKGxldCBrID0gMDsgayA8IG47KSB7XG4gICAgICAgICAgICBjb25zdCBpID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogdGhpcy5fbGVuZ3RoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmdldEJpdChpKSA9PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIHRoaXMuc2V0RmFzdChpLCB2YWx1ZSk7XG4gICAgICAgICAgICBrKys7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgfVxuICAgIC8vLyBNb2RpZmllcyBjdXJyZW50IGJpdHNldCBieSBwZXJmb3JtaW5nIHRoZSBiaXR3aXNlIEFORCBvcGVyYXRpb24gYWdhaW5zdCB0aGVcbiAgICAvLy8gY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBhbmQodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldICY9IHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBBTkQgTk9UIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgYW5kTm90KHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGNvbnN0IGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBudW0yID0gMDsgbnVtMiA8IGxlbjsgbnVtMisrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtudW0yXSAmPSB+dmFsdWUuX2RhdGFbbnVtMl07XG4gICAgICAgIHRoaXMuaW5jcmVtZW50VmVyc2lvbihub3RpZnkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIHRoZSBiaXR3aXNlIE5PVCBBTkQgb3BlcmF0aW9uIG9uIHRoZSBlbGVtZW50cyBpbiB0aGUgY3VycmVudCBiaXRzZXRcbiAgICAvLy8gYWdhaW5zdCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgc3BlY2lmaWVkIGJpdHNldC5cbiAgICBub3RBbmQodmFsdWUsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgaWYgKHRoaXMuX2xlbmd0aCAhPSB2YWx1ZS5fbGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcnJheSBsZW5ndGhzIGRpZmZlci4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRoaXMubGVuZ3RoSW5JbnRzOyBpIDwgbGVuOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gKH50aGlzLl9kYXRhW2ldKSAmIHZhbHVlLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBJbnZlcnRzIGFsbCBiaXQgdmFsdWVzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIG5vdChub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSA9IH50aGlzLl9kYXRhW2ldO1xuICAgICAgICB0aGlzLmluY3JlbWVudFZlcnNpb24obm90aWZ5KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBQZXJmb3JtcyB0aGUgYml0d2lzZSBPUiBvcGVyYXRpb24gb24gdGhlIGVsZW1lbnRzIGluIHRoZSBjdXJyZW50IGJpdHNldFxuICAgIC8vLyBhZ2FpbnN0IHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnRzIGluIHRoZSBzcGVjaWZpZWQgYml0c2V0LlxuICAgIG9yKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSB8PSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gUGVyZm9ybXMgdGhlIGJpdHdpc2UgZXhjbHVzaXZlIE9SIG9wZXJhdGlvbiBvbiB0aGUgZWxlbWVudHMgaW4gdGhlIGN1cnJlbnQgYml0c2V0XG4gICAgLy8vIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBiaXRzZXQuXG4gICAgeG9yKHZhbHVlLCBub3RpZnkgPSB0cnVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggIT0gdmFsdWUuX2xlbmd0aClcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJyYXkgbGVuZ3RocyBkaWZmZXIuJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsZW4gPSB0aGlzLmxlbmd0aEluSW50czsgaSA8IGxlbjsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSBePSB2YWx1ZS5fZGF0YVtpXTtcbiAgICAgICAgdGhpcy5pbmNyZW1lbnRWZXJzaW9uKG5vdGlmeSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICAvLy8gSW5zZXJ0cyBuIDAtYml0cyBhdCBwb3NpdGlvbiBwb3MsIHJlc2l6aW5nIHNlbGYgYW5kIHNoaWZ0aW5nIGJpdHMgYXBwcm9wcmlhdGVseS5cbiAgICBpbnNlcnRBdChwb3MsIG4sIGZsYWcgPSBmYWxzZSkge1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UocG9zLCAwLCB0aGlzLl9sZW5ndGgsICdwb3MnKTtcbiAgICAgICAgaWYgKG4gPT0gMClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgLy9UT0RPOiBvcHRpbWl6ZVxuICAgICAgICAvL3RoZSBtb3N0IHByaW1pdGl2ZSBpbXBsZW1lbnRhdGlvbiwgb3B0aW1pemUgaXQgbGF0ZXIhXG4gICAgICAgIC8vIGJlZ2luVXBkYXRlKCk7XG4gICAgICAgIGNvbnN0IG9sZGxlbmd0aCA9IHRoaXMuX2xlbmd0aDtcbiAgICAgICAgdGhpcy5zZXRMZW5ndGgodGhpcy5fbGVuZ3RoICsgbik7XG4gICAgICAgIC8vaWYgKCFjb250YWlucyghZmxhZykpIHJldHVybjsgLy8gbm90aGluZyB0byBkb1xuICAgICAgICBmb3IgKGxldCBpID0gb2xkbGVuZ3RoIC0gMTsgaSA+PSBwb3M7IGktLSlcbiAgICAgICAgICAgIHRoaXMuc2V0Qml0KGkgKyBuLCB0aGlzLmdldEJpdChpKSk7XG4gICAgICAgIGZvciAobGV0IGkgPSBwb3M7IGkgPCBwb3MgKyBuOyBpKyspXG4gICAgICAgICAgICB0aGlzLnNldEJpdChpLCBmbGFnKTtcbiAgICAgICAgLy8gZW5kVXBkYXRlKCk7XG4gICAgfVxuICAgIC8vLyBEZWxldGVzIG4gYml0cyBiZWdpbm5pbmcgYXQgcG9zaXRpb24gcG9zLCByZXNpemluZyBzZWxmIGFuZCBzaGlmdGluZyByZW1haW5pbmdcbiAgICAvLy8gYml0cyBhcHByb3ByaWF0ZWx5LlxuICAgIHJlbW92ZUF0KHBvcywgbiA9IDEpIHtcbiAgICAgICAgLy8gdGhlIG1vc3QgcHJpbWl0aXZlIGltcGxlbWVudGF0aW9uLCBvcHRpbWl6ZSBpdCBsYXRlciFcbiAgICAgICAgaWYgKG4gPCAwKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCduIGNhbm5vdCBiZSBuZWdhdGl2ZScpO1xuICAgICAgICB0aGlzLmFzc3VyZUluUmFuZ2UocG9zLCAwLCB0aGlzLl9sZW5ndGggLSBuLCAncG9zJyk7XG4gICAgICAgIGlmICh0aGlzLmNvbnRhaW5zKHRydWUpKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gcG9zOyBpIDwgdGhpcy5fbGVuZ3RoIC0gbjsgaSsrKVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0Qml0KGksIHRoaXMuZ2V0Qml0KGkgKyBuKSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRMZW5ndGgodGhpcy5fbGVuZ3RoIC0gbik7XG4gICAgfVxuICAgIHJlbW92ZUJ5TWFzayhtYXNrLCBmbGFnID0gdHJ1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoICE9IG1hc2subGVuZ3RoKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdsZW5ndGggIT0gbWFzay5sZW5ndGgnKTtcbiAgICAgICAgaWYgKG1hc2sgPT0gdGhpcykgeyAvLyBubyBuZWVkIHRvIGl0ZXJhdGVcbiAgICAgICAgICAgIHRoaXMuc2V0TGVuZ3RoKG1hc2suY291bnRCaXRzKCFmbGFnKSk7XG4gICAgICAgICAgICB0aGlzLnNldEFsbCghZmxhZyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBsZXQgZHN0SWR4ID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IHNyY0lkeCA9IC0xOyAoc3JjSWR4ID0gbWFzay5maW5kTmV4dChzcmNJZHgsICFmbGFnKSkgIT0gLTE7KVxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RmFzdChkc3RJZHgrKywgdGhpcy5nZXRCaXQoc3JjSWR4KSk7XG4gICAgICAgICAgICB0aGlzLl9sZW5ndGggPSBkc3RJZHg7XG4gICAgICAgICAgICB0aGlzLl92ZXJzaW9uKys7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIC8vLyBTaW1pbGFyIHRvIHRoZSBbXSBvcGVyYXRvci5cbiAgICBnZXRCaXQocG9zKSB7XG4gICAgICAgIHJldHVybiAodGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSAmICgxIDw8IChwb3MgJiAweDFmKSkpICE9IDA7XG4gICAgfVxuICAgIC8vLyBTaW1pbGFyIHRvIHRoZSBbXSBvcGVyYXRvci5cbiAgICBzZXRCaXQocG9zLCBiaXQsIG5vdGlmeSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5zZXRGYXN0KHBvcywgYml0KTtcbiAgICAgICAgaWYgKG5vdGlmeSlcbiAgICAgICAgICAgIHRoaXMuX3ZlcnNpb24rKztcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fdmVyc2lvbisrO1xuICAgIH1cbiAgICAvLy8gU2V0cyBbaV0tdGggYml0IHRvIFt2YWx1ZV0sIGRvZXMgbm90IGNoZWNrIGJvdW5kcywgZG9lcyBub3QgaW5jcmVtZW50IHZlcnNpb25cbiAgICBzZXRGYXN0KGksIHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWx1ZSlcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbTWF0aC5mbG9vcihpIC8gMHgyMCldIHw9IDEgPDwgKGkgJiAweDFmKTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKGkgLyAweDIwKV0gJj0gfigxIDw8IChpICYgMHgxZikpO1xuICAgIH1cbiAgICBzZXRUcnVlKHBvcykge1xuICAgICAgICB0aGlzLl9kYXRhW01hdGguZmxvb3IocG9zIC8gMHgyMCldIHw9IDEgPDwgKHBvcyAmIDB4MWYpO1xuICAgIH1cbiAgICBzZXRGYWxzZShwb3MpIHtcbiAgICAgICAgdGhpcy5fZGF0YVtNYXRoLmZsb29yKHBvcyAvIDB4MjApXSAmPSB+KDEgPDwgKHBvcyAmIDB4MWYpKTtcbiAgICB9XG4gICAgdHJ1ZUNvdW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHModHJ1ZSk7XG4gICAgfVxuICAgIGZhbHNlQ291bnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyhmYWxzZSk7XG4gICAgfVxuICAgIC8vLyBDb3VudHMgYml0cyBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlLlxuICAgIGNvdW50Qml0cyh2YWx1ZSkge1xuICAgICAgICBpZiAodGhpcy5fbGVuZ3RoID09IDApXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uICE9IHRoaXMuX3ZlcnNpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnQgPSAwO1xuICAgICAgICAgICAgY29uc3QgbGVuID0gdGhpcy5sZW5ndGhJbkludHM7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICBmb3IgKDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGsgPSB0aGlzLl9kYXRhW2ldOyBrICE9IDA7IGsgPj4+PSA4KSB7IC8vdG9kbzogY2FzdCBkYXRhW2ldIHRvIHVpbnRcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRDb3VudCArPSBCaXRBcnJheS5fb25CaXRDb3VudFtrICYgMHhmZl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVGhlIGxhc3QgaW50LlxuICAgICAgICAgICAgbGV0IGsgPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgICAgICAgY29uc3QgcmVtYWluaW5nQml0cyA9IHRoaXMuX2xlbmd0aCAmIDB4MWY7XG4gICAgICAgICAgICBpZiAocmVtYWluaW5nQml0cyAhPSAwKSAvKiBpZiByZW1haW5pbmdCaXRzID09IDAsIHRoZSBsYXN0IGludCBpcyBmdWxseSB1c2VkIGFuZCBBTEwgYml0cyBzaG91bGQgYmUgbGVmdCBhcyBpcyAqL1xuICAgICAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgICAgICBmb3IgKDsgayAhPSAwOyBrID4+Pj0gOClcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZENvdW50ICs9IEJpdEFycmF5Ll9vbkJpdENvdW50W2sgJiAweGZmXTtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkQ291bnRWZXJzaW9uID0gdGhpcy5fdmVyc2lvbjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKHZhbHVlID8gdGhpcy5fc2VsZWN0ZWRDb3VudCA6IHRoaXMuX2xlbmd0aCAtIHRoaXMuX3NlbGVjdGVkQ291bnQpO1xuICAgIH1cbiAgICAvLy8gUmV0dXJucyBhIG51bWJlciBvZiBzZXQgYml0cyB3aGVyZSBhbHNvIFtjaGVja10gaXMgdHJ1ZVxuICAgIGNvdW50V2hlcmUoY2hlY2spIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgICAgIGlmICh0aGlzLnRydWVDb3VudCgpID09IHRoaXMuX2xlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICByZXN1bHQgKz0gY2hlY2soaSkgPyAxIDogMDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAtMTsgKGkgPSB0aGlzLmZpbmROZXh0KGksIHRydWUpKSAhPSAtMTspXG4gICAgICAgICAgICAgICAgcmVzdWx0ICs9IGNoZWNrKGkpID8gMSA6IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG4gICAgLy8vIFBlcmZvcm1zIGJpdCBcImFuZFwiIGFuZCBjb3VudHMgYml0cyBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlLCB3aXRob3V0IGJpdHNldCBtb2RpZmljYXRpb24uXG4gICAgYW5kV2l0aENvdW50Qml0cyhzZWNvbmQsIHZhbHVlKSB7XG4gICAgICAgIGlmICh0aGlzLl9sZW5ndGggPT0gMClcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aEluSW50cztcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKDsgaSA8IGxlbiAtIDE7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgayA9IHRoaXMuX2RhdGFbaV0gJiBzZWNvbmQuX2RhdGFbaV07IGsgIT0gMDsgayA+Pj49IDgpXG4gICAgICAgICAgICAgICAgY291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICB9XG4gICAgICAgIC8vIFRoZSBsYXN0IGludC5cbiAgICAgICAgbGV0IGsgPSB0aGlzLl9kYXRhW2ldICYgc2Vjb25kLl9kYXRhW2ldO1xuICAgICAgICBjb25zdCByZW1haW5pbmdCaXRzID0gdGhpcy5fbGVuZ3RoICYgMHgxZjtcbiAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMClcbiAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgIGZvciAoOyBrICE9IDA7IGsgPj4+PSA4KVxuICAgICAgICAgICAgY291bnQgKz0gQml0QXJyYXkuX29uQml0Q291bnRbayAmIDB4ZmZdO1xuICAgICAgICByZXR1cm4gKHZhbHVlID8gY291bnQgOiB0aGlzLl9sZW5ndGggLSBjb3VudCk7XG4gICAgfVxuICAgIGNsZWFyKCkge1xuICAgICAgICB0aGlzLnNldExlbmd0aCgwKTtcbiAgICB9XG4gICAgY29udGFpbnModmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmluZE5leHQoLTEsIHZhbHVlKSA+PSAwO1xuICAgIH1cbiAgICBnZXQgYWxsVHJ1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKHRydWUpID09IHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGFsbEZhbHNlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb3VudEJpdHMoZmFsc2UpID09IHRoaXMuX2xlbmd0aDtcbiAgICB9XG4gICAgZ2V0IGFueVRydWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvdW50Qml0cyh0cnVlKSA+IDA7XG4gICAgfVxuICAgIGdldCBhbnlGYWxzZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY291bnRCaXRzKGZhbHNlKSA+IDA7XG4gICAgfVxuICAgIC8vLyBSZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgbmV4dCBiaXQgb2YgdGhlIHNwZWNpZmllZCB2YWx1ZSwgc3RhcnRpbmcgZnJvbSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLlxuICAgIC8vLyBSZXR1cm5zIC0xLCBpZiB0aGVyZSBhcmUgbm8gc3VjaCBiaXRzLlxuICAgIGZpbmROZXh0KGluZGV4LCB2YWx1ZSA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGluZGV4LCAtMSwgdGhpcy5fbGVuZ3RoLCAnaW5kZXgnKTtcbiAgICAgICAgaWYgKGluZGV4ID49IHRoaXMuX2xlbmd0aCAtIDEpXG4gICAgICAgICAgICByZXR1cm4gLTE7XG4gICAgICAgIGluZGV4ID0gaW5kZXggPCAwID8gMCA6IGluZGV4ICsgMTsgLy8gc2tpcCBzdGFydFxuICAgICAgICBsZXQgdW51c2VkQml0cyA9IGluZGV4ICYgMHgxZjtcbiAgICAgICAgY29uc3QgbnVtSW50cyA9IHRoaXMubGVuZ3RoSW5JbnRzO1xuICAgICAgICBmb3IgKGxldCBpID0gTWF0aC5mbG9vcihpbmRleCAvIDMyKTsgaSA8IG51bUludHM7IGkrKykge1xuICAgICAgICAgICAgbGV0IGsgPSAodmFsdWUgPyB0aGlzLl9kYXRhW2ldIDogfnRoaXMuX2RhdGFbaV0pOyAvLyB1aW50IGNhc3RcbiAgICAgICAgICAgIGlmICh1bnVzZWRCaXRzICE9IDApIHtcbiAgICAgICAgICAgICAgICBrICY9ICgoMHhmZmZmZmZmZiA8PCB1bnVzZWRCaXRzKSAmIDB4ZmZmZmZmZmYpO1xuICAgICAgICAgICAgICAgIHVudXNlZEJpdHMgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIXZhbHVlICYmIGsgPT0gLTQyOTQ5NjcyOTYpIC8qIGxvb2tpbmcgZm9yIGZhbHNlLCBhbGwgYml0cyBhcmUgc2V0ICovIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBrICE9IDA7IGogKz0gOCwgayA+Pj49IDgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwID0gQml0QXJyYXkuX2ZpcnN0T25CaXRbayAmIDB4ZmZdO1xuICAgICAgICAgICAgICAgIGlmIChwID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwICsgKGkgKiAzMikgKyBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fbGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgLy8vIEZpbmRzIHByZXZpb3VzIGJpdCBvZiB0aGUgc3BlY2lmaWVkIHZhbHVlIGluIHRoZSBiaXRzZXQuXG4gICAgZmluZFByZXYoaW5kZXgsIHZhbHVlID0gdHJ1ZSkge1xuICAgICAgICBpZiAoaW5kZXggPT0gMClcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgdGhpcy5hc3N1cmVJblJhbmdlKGluZGV4LCAtMSwgdGhpcy5fbGVuZ3RoLCAnaW5kZXgnKTtcbiAgICAgICAgaW5kZXggPSBpbmRleCA8IDAgPyB0aGlzLl9sZW5ndGggLSAxIDogaW5kZXggLSAxOyAvLyBza2lwIHN0YXJ0XG4gICAgICAgIGNvbnN0IGxhc3RJbnRJZHggPSBNYXRoLmZsb29yKGluZGV4IC8gMHgyMCk7XG4gICAgICAgIGxldCByZW1haW5pbmdCaXRzID0gKGluZGV4ICsgMSkgJiAweDFmO1xuICAgICAgICBmb3IgKGxldCBpID0gbGFzdEludElkeDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGxldCBrID0gKHZhbHVlID8gdGhpcy5fZGF0YVtpXSA6IH50aGlzLl9kYXRhW2ldKTsgLy8gY2FzdFxuICAgICAgICAgICAgaWYgKHJlbWFpbmluZ0JpdHMgIT0gMCkge1xuICAgICAgICAgICAgICAgIGsgJj0gfigoNDI5NDk2NzI5NSkgPDwgcmVtYWluaW5nQml0cyk7XG4gICAgICAgICAgICAgICAgcmVtYWluaW5nQml0cyA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMjQ7IGsgIT0gMDsgaiAtPSA4LCBrIDw8PSA4KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcCA9IEJpdEFycmF5Ll9sYXN0T25CaXRbayA+Pj4gMHgxOF07XG4gICAgICAgICAgICAgICAgaWYgKHAgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHAgKyAoaSAqIDMyKSArIGo7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbn1cbkJpdEFycmF5Ll9vbkJpdENvdW50ID0gSW50OEFycmF5LmZyb20oW1xuICAgIDAsIDEsIDEsIDIsIDEsIDIsIDIsIDMsIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSxcbiAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNixcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsXG4gICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNyxcbiAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LFxuICAgIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsIDUsIDYsIDYsIDcsIDYsIDcsIDcsIDhcbl0pO1xuQml0QXJyYXkuX2ZpcnN0T25CaXQgPSBJbnQ4QXJyYXkuZnJvbShbXG4gICAgLTEsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNiwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDUsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA3LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNSwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA0LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDYsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDAsXG4gICAgNCwgMCwgMSwgMCwgMiwgMCwgMSwgMCwgMywgMCwgMSwgMCwgMiwgMCwgMSwgMCxcbiAgICA1LCAwLCAxLCAwLCAyLCAwLCAxLCAwLCAzLCAwLCAxLCAwLCAyLCAwLCAxLCAwLFxuICAgIDQsIDAsIDEsIDAsIDIsIDAsIDEsIDAsIDMsIDAsIDEsIDAsIDIsIDAsIDEsIDBcbl0pO1xuQml0QXJyYXkuX2xhc3RPbkJpdCA9IEludDhBcnJheS5mcm9tKFtcbiAgICAtMSwgMCwgMSwgMSwgMiwgMiwgMiwgMiwgMywgMywgMywgMywgMywgMywgMywgMyxcbiAgICA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LCA0LFxuICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsXG4gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSxcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsIDYsXG4gICAgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNiwgNixcbiAgICA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LCA2LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNyxcbiAgICA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LCA3LFxuICAgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDcsXG4gICAgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgNywgN1xuXSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lZbWwwTFdGeWNtRjVMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVltbDBMV0Z5Y21GNUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEUxQlFVMHNRMEZCUXl4UFFVRlBMRTlCUVU4c1VVRkJVVHRKUVc5Rk0wSXNXVUZCV1N4SFFVRjVRaXhGUVVGRkxHVkJRV2xETEV0QlFVczdVVUZhY2tVc1dVRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5hTEdGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRZaXhwUWtGQldTeEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnFRaXh0UWtGQll5eEhRVUZITEVOQlFVTXNRMEZCUXp0UlFVTnVRaXd3UWtGQmNVSXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVNelFpdzBRa0ZCZFVJc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU0zUWl4dFFrRkJZeXhIUVVGSExFVkJRVVVzUTBGQlF6dFJRVU53UWl3d1FrRkJjVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTnVReXh4UWtGQlowSXNSMEZCUnl4TFFVRkxMRU5CUVVNN1VVRkxka0lzU1VGQlNTeFBRVUZQTEVkQlFVY3NTMEZCU3l4UlFVRlJMRVZCUVVVN1dVRkRNMElzVFVGQlRTeE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRPMWxCUTI1Q0xFMUJRVTBzU1VGQlNTeEhRVUZITEZGQlFWRXNRMEZCUXl4aFFVRmhMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03V1VGRE5VTXNTVUZCU1N4WlFVRlpMRVZCUVVVN1owSkJRMmhDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSVHR2UWtGRGJFTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzJGQlEyaENPMWxCUTBRc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZEYkVJc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eE5RVUZOTEVOQlFVTTdVMEZEZGtJN1lVRkJUU3hKUVVGSkxFZEJRVWNzV1VGQldTeFhRVUZYTEVWQlFVVTdXVUZEY2tNc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eEhRVUZyUWl4RFFVRkRPMWxCUTJoRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NXVUZCYzBJc1EwRkJRenRUUVVOMlF6dGhRVUZOTzFsQlEwd3NUVUZCVFN4SlFVRkpMRXRCUVVzc1EwRkJReXh4UWtGQmNVSXNRMEZCUXl4RFFVRkRPMU5CUTNoRE8wbEJRMGdzUTBGQlF6dEpRVWRFTEZWQlFWVXNTMEZCU3l4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlJXNURMRlZCUVZVc1EwRkJReXhIUVVGWExFVkJRVVVzVDBGQlpUdFJRVU55UXl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRE8xbEJRVVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4SFFVRkhMRTlCUVU4c09FSkJRVGhDTEVOQlFVTXNRMEZCUXp0SlFVTjZSU3hEUVVGRE8wbEJSVVFzWVVGQllTeERRVUZETEV0QlFXRXNSVUZCUlN4SFFVRlhMRVZCUVVVc1IwRkJWeXhGUVVGRkxFOUJRV1U3VVVGRGNFVXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NSMEZCUnl4SFFVRkhMRU5CUVVNN1dVRkRhRU1zVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4WlFVRlpMRTlCUVU4c1MwRkJTeXhMUVVGTExHMUNRVUZ0UWl4SFFVRkhMRXRCUVVzc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF6dEpRVU53Uml4RFFVRkRPMGxCUlVRc1NVRkJTU3hEUVVGRExFZEJRV2RDTEVWQlFVVXNSMEZCWjBJc1JVRkJSU3hMUVVGaE8xRkJRM0JFTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUXpWQ0xFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGNFSXNRMEZCUXp0SlFVVkVMRkZCUVZFc1EwRkJReXhMUVVGbE8xRkJRM1JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR6dFpRVU12UWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExHMUNRVUZ0UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhQUVVGUExFdEJRVXNzUTBGQlF5eFBRVUZQTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpGRkxFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRXRCUVVzc1JVRkJSU3hKUVVGSkxFTkJRVU1zUzBGQlN5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJRenRSUVVOMFJDeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEVsQlFVa3NUVUZCVFR0UlFVTlNMRTlCUVU4c1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF6dEpRVU4wUWl4RFFVRkRPMGxCUlVRc1NVRkJTU3hOUVVGTk8xRkJRMUlzVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRPMGxCUTNCQ0xFTkJRVU03U1VGRlJDeEpRVUZKTEUxQlFVMHNRMEZCUXl4SlFVRnBRanRSUVVNeFFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOc1FpeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1NVRkRiRUlzUTBGQlF6dEpRVVZFTEVsQlFVa3NUMEZCVHp0UlFVTlVMRTlCUVU4c1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF6dEpRVU4yUWl4RFFVRkRPMGxCUlVRc1NVRkJTU3hQUVVGUExFTkJRVU1zUzBGQllUdFJRVU4yUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU40UWl4RFFVRkRPMGxCUlVRc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrN1VVRkROVUlzU1VGQlNTeERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDeEpRVUZKTEZsQlFWazdVVUZEWkN4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlEyeEVMRU5CUVVNN1NVRkZSQ3hKUVVGSkxHRkJRV0U3VVVGRFppeFBRVUZQTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWxCUVVrc1NVRkJTU3hEUVVGRExIRkNRVUZ4UWl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRhRVlzUTBGQlF6dEpRVVZFTEVsQlFVa3NZVUZCWVN4RFFVRkRMRWxCUVZrN1VVRkROVUlzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkRNMElzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxFbEJRVWtzU1VGQlNUdFJRVU5PTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxGTkJRVk1zUTBGQlF5eExRVUZoTzFGQlEzSkNMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU03V1VGRFdDeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZGY0VNc1NVRkJTU3hMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVODdXVUZCUlN4UFFVRlBPMUZCUTJ4RExFMUJRVTBzVjBGQlZ5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEZkQlFWY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4WFFVRlhMRWRCUVVjc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlR0WlFVTndSeXhOUVVGTkxFOUJRVThzUjBGQlJ5eEpRVUZKTEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVNM1F5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFVkJRVVVzVDBGQlR5eEZRVUZGTEVOQlFVTXNWMEZCVnl4SFFVRkhMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4WFFVRlhMRU5CUVVNc1EwRkJRenRaUVVOd1J5eEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRTlCUVU4c1EwRkJRenRUUVVOMFFqdFJRVVZFTEVsQlFVa3NTMEZCU3l4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGVFSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzUjBGQlJ5eERRVUZETzJkQ1FVTjZRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRWRCUVVjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRmFrWXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1YwRkJWeXhEUVVGRExFTkJRVU03VTBGRGNFUTdVVUZEUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03U1VGRGJFSXNRMEZCUXp0SlFVVkVMRTFCUVUwc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQll5eEZRVUZGTEVsQlFXTTdVVUZETTBNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBPMWxCUXpsQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNiVUpCUVcxQ0xFbEJRVWtzUTBGQlF5eFBRVUZQTEU5QlFVOHNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRmVrVXNUVUZCVFN4SlFVRkpMRWRCUVVjc1NVRkJTU3hSUVVGUkxFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNoRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVNMVFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4SFFVRkhMRkZCUVZFc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJ4RUxFbEJRVWtzUTBGQlF5eFJRVUZSTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUld4Q0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1VVRkRPVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZETVVJc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03VVVGRmFFUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVThzVFVGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRmpPMUZCUTNwRExFOUJRVThzU1VGQlNTeFhRVUZYTEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRemRFTEVOQlFVTTdTVUZGUkN4TlFVRk5MRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRWE5DTzFGQlEzUkRMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVVVGQlVTeERRVUZETEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVONlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVWc1FpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVOeVF5eEpRVUZKTEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMWdzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRE8xTkJRMmhGTzFGQlEwUXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzYzBkQlFYTkhPMGxCUTNSSExFMUJRVTBzUTBGQlF5eFBRVUZQTEVOQlFVTXNTMEZCWVN4RlFVRkZMRWxCUVdNN1VVRkRNVU1zVFVGQlRTeEpRVUZKTEVkQlFVY3NTVUZCU1N4UlFVRlJMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGFrTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNN1dVRkROVUlzU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGTVVJc1NVRkJTU3hEUVVGRExGRkJRVkVzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhKUVVGSkxFTkJRVU03U1VGRFpDeERRVUZETzBsQlJVUXNhMFZCUVd0Rk8wbEJRMnhGTEUxQlFVMHNRMEZCUXl4VlFVRlZMRU5CUVVNc1EwRkJVenRSUVVONlFpeFBRVUZQTEZGQlFWRXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeERRVUZETEVOQlFWTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOMlJTeERRVUZETzBsQlJVUXNORVZCUVRSRk8wbEJRelZGTEUxQlFVMHNRMEZCUXl4bFFVRmxMRU5CUVVNc1QwRkJaU3hGUVVGRkxFdEJRV3RDTzFGQlEzaEVMRTFCUVUwc1NVRkJTU3hIUVVGSExFbEJRVWtzVVVGQlVTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTI1RExFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTMEZCU3l4RFFVRkRPMUZCUTI1Q0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMSGxEUVVGNVF6dEpRVU42UXl4TlFVRk5MRU5CUVVNc1UwRkJVeXhEUVVGRExFdEJRV2xDTzFGQlEyaERMRTFCUVUwc1IwRkJSeXhIUVVGSExFdEJRVXNzUTBGQlF5eE5RVUZOTEVOQlFVTTdVVUZEZWtJc1RVRkJUU3hKUVVGSkxFZEJRVWNzU1VGQlNTeFJRVUZSTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRMjVETEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNoRUxFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeEpRVUZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRZaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZGWWl4UFFVRlBMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjRRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkRia0lzUTBGQlF5eERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGVFUXNRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRMjVETEVkQlFVY3NRMEZCUXl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1NVRkJTU3hEUVVGRExFTkJRVU03V1VGRmRrTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1EwRkJRenRUUVVOWU8xRkJSVVFzU1VGQlNTeEhRVUZITEVkQlFVY3NTVUZCU1N4SlFVRkpMRU5CUVVNN1dVRkRha0lzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFdEJRVXNzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzU1VGQlNTeERRVUZETzFGQlJYUkVMRWxCUVVrc1IwRkJSeXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETzFsQlEycENMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJRenRSUVVWd1JDeEpRVUZKTEVkQlFVY3NSMEZCUnl4SlFVRkpMRWxCUVVrc1EwRkJRenRaUVVOcVFpeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlF5eEpRVUZKTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1VVRkZla01zU1VGQlNTeERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNN1VVRkRiRUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc1VVRkJVVHRSUVVOT0xFOUJRVThzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4VlFVRlZMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXp0SlFVTTNSQ3hEUVVGRE8wbEJSVVFzTkVOQlFUUkRPMGxCUXpWRExFMUJRVTBzUTBGQlF5eExRVUZsTzFGQlEzQkNMRWxCUVVrc1NVRkJTU3hKUVVGSkxFdEJRVXM3V1VGQlJTeFBRVUZQTEVsQlFVa3NRMEZCUXp0UlFVTXZRaXhKUVVGSkxFdEJRVXNzU1VGQlNTeEpRVUZKTzFsQlFVVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkRhRU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4SlFVRkpMRXRCUVVzc1EwRkJReXhQUVVGUE8xbEJRVVVzVDBGQlR5eExRVUZMTEVOQlFVTTdVVUZEYUVRc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRWxCUVVrc1EwRkJRenRSUVVWdVF5eExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU0xUXl4SlFVRkpMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03WjBKQlFVVXNUMEZCVHl4TFFVRkxMRU5CUVVNN1VVRkZjRVFzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRaUVVNdlJDeEpRVUZKTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNN1owSkJRMjVETEU5QlFVOHNTMEZCU3l4RFFVRkRPMU5CUTJoQ08xRkJRMFFzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2RVSkJRWFZDTzBsQlEzWkNMRXRCUVVzN1VVRkRTQ3hOUVVGTkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEZGQlFWRXNRMEZCUXl4RFFVRkRMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRGVFTXNVVUZCVVN4RFFVRkRMRXRCUVVzc1IwRkJSeXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExHMURRVUZ0UXp0UlFVTnNSaXhSUVVGUkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkRhRU1zVVVGQlVTeERRVUZETEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRE8xRkJRMnhETEU5QlFVOHNVVUZCVVN4RFFVRkRPMGxCUTJ4Q0xFTkJRVU03U1VGRlJDdzBRa0ZCTkVJN1NVRkROVUlzU1VGQlNTeERRVUZETEVsQlFXTXNSVUZCUlN4TlFVRmxPMUZCUTJ4RExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNTMEZCU3l4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8xRkJSVEZDTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSU3hGUVVGRk8xbEJRM0pETEVsQlFVa3NTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRFZDeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRGFFVTdVVUZGUkN4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRPVUlzVDBGQlR5eEpRVUZKTEVOQlFVTTdTVUZEWkN4RFFVRkRPMGxCUlVRc2NVSkJRWEZDTzBsQlEzSkNMRTFCUVUwc1EwRkJReXhOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU5zUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkZkRUlzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3h0UlVGQmJVVTdTVUZEYmtVc1RVRkJUU3hEUVVGRExFdEJRV01zUlVGQlJTeE5RVUZOTEVkQlFVY3NTMEZCU3p0UlFVTnVReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZETjBJc1RVRkJUU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXp0UlFVVTVRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEdkQ1FVRm5RanRaUVVNMVF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dFJRVVY0UWl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkRhRU1zUTBGQlF6dEpRVVZFTEN0RFFVRXJRenRKUVVNdlF5dzRRMEZCT0VNN1NVRkRPVU1zZDBSQlFYZEVPMGxCUTNoRUxGVkJRVlVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSkxFVkJRVVVzUzBGQlN5eEhRVUZITEVsQlFVa3NSVUZCUlN4TlFVRk5MRWRCUVVjc1NVRkJTVHRSUVVNeFJTeEpRVUZKTEV0QlFVczdXVUZEVUN4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMUZCUlRkQ0xFdEJRVXNzVFVGQlRTeERRVUZETEVsQlFVa3NUMEZCVHp0WlFVTnlRaXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRSUVVWNlFpeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxGVkJRVlVzUTBGQlF5eFBRVUZ6UWl4RlFVRkZMRXRCUVVzc1IwRkJSeXhKUVVGSk8xRkJRemRETEV0QlFVc3NUVUZCVFN4TFFVRkxMRWxCUVVrc1QwRkJUeXhGUVVGRk8xbEJRek5DTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeExRVUZMTzJkQ1FVTTNRaXhQUVVGUExFdEJRVXNzUTBGQlF6dFRRVU5vUWp0UlFVTkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEZGQlFWRXNRMEZCUXl4UFFVRnpRaXhGUVVGRkxFdEJRVXNzUjBGQlJ5eEpRVUZKTzFGQlF6TkRMRXRCUVVzc1RVRkJUU3hMUVVGTExFbEJRVWtzVDBGQlR5eEZRVUZGTzFsQlF6TkNMRWxCUVVrc1NVRkJTU3hEUVVGRExFMUJRVTBzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4TFFVRkxPMmRDUVVNM1FpeFBRVUZQTEVsQlFVa3NRMEZCUXp0VFFVTm1PMUZCUTBRc1QwRkJUeXhMUVVGTExFTkJRVU03U1VGRFppeERRVUZETzBsQlJVUXNVVUZCVVN4RFFVRkRMRXRCUVdVc1JVRkJSU3hMUVVGTExFZEJRVWNzU1VGQlNTeEZRVUZGTEV0QlFVc3NSMEZCUnl4SlFVRkpMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWtzUlVGQlJTeFZRVUZWTEVkQlFVY3NTVUZCU1R0UlFVTndSaXhKUVVGSkxFdEJRVXNzU1VGQlNTeFZRVUZWTzFsQlEzSkNMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eExRVUZMTEVWQlFVVXNTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkZOMElzU1VGQlNTeFZRVUZWTEVWQlFVVTdXVUZEWkN4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdG5Ra0ZEY2tNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETzI5Q1FVTldMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eEZRVUZGTEV0QlFVc3NRMEZCUXl4RFFVRkRPMkZCUXpGQ08xTkJRMFk3WVVGQlRUdFpRVU5NTEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNc1JVRkJSVHRuUWtGRGJrTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFVkJRVVVzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRPVU03VVVGRlJDeEpRVUZKTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTTdTVUZEYUVNc1EwRkJRenRKUVVWRUxGRkJRVkVzUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlR0UlFVTXZRaXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRPVU1zVFVGQlRTeEhRVUZITEVkQlFXMUNMRVZCUVVVc1EwRkJRenRSUVVNdlFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRWxCUVVrc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTTFRaXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU16UWl4UFFVRlBMRkZCUVZFc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYkVNc1EwRkJRenRKUVVWRUxHTkJRV01zUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlR0UlFVTnlReXhKUVVGSkxFTkJRVU1zWVVGQllTeERRVUZETEVsQlFVa3NSVUZCUlN4RFFVRkRMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1VVRkRkRVFzU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVWQlFVVXNTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkRPVU1zVFVGQlRTeEhRVUZITEVkQlFXTXNSVUZCUlN4RFFVRkRPMUZCUXpGQ0xFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NTVUZCU1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFVkJRVVVzUlVGQlJTeERRVUZETzFsQlF6VkNMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRek5DTEU5QlFVOHNSMEZCUnl4RFFVRkRPMGxCUTJJc1EwRkJRenRKUVVkRUxGRkJRVkVzUTBGQlF5eEpRVUZaTEVWQlFVVXNSVUZCVlN4RlFVRkZMRXRCUVdNc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU01UkN4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFbEJRVWtzUlVGQlJTeERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFVkJRVVVzVFVGQlRTeERRVUZETEVOQlFVTTdVVUZEZEVRc1NVRkJTU3hEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUld4RUxFMUJRVTBzUzBGQlN5eEhRVUZITEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEycERMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xRkJSUzlDTEdkQ1FVRm5RanRSUVVOb1FpeEpRVUZKTEV0QlFVc3NSVUZCUlR0WlFVTlVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUzBGQlN5eEZRVUZGTEVOQlFVTXNTVUZCU1N4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU12UWl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFOQlEyNUNPMkZCUVUwN1dVRkRUQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEV0QlFVc3NSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdG5Ra0ZETDBJc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTndRanRSUVVWRUxFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU01UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDeHRSVUZCYlVVN1NVRkRia1VzVTBGQlV5eERRVUZETEVOQlFWTXNSVUZCUlN4TFFVRmpMRVZCUVVVc1RVRkJUU3hIUVVGSExFbEJRVWs3VVVGRGFFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHp0WlFVTXpRaXhOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETERSQ1FVRTBRaXhEUVVGRExFTkJRVU03VVVGRmFFUXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEU5QlFVOHNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF6dFJRVVV6UXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTTdVVUZGY0VJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSenRaUVVOMFFpeE5RVUZOTEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSMEZCUnl4SlFVRkpMRU5CUVVNc1QwRkJUeXhEUVVGRExFTkJRVU03V1VGRGJrUXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEV0QlFVczdaMEpCUVVVc1UwRkJVenRaUVVOMFF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dFpRVU4yUWl4RFFVRkRMRVZCUVVVc1EwRkJRenRUUVVOTU8xRkJSVVFzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETzBsQlEyaERMRU5CUVVNN1NVRkZSQ3dyUlVGQkswVTdTVUZETDBVc2JVUkJRVzFFTzBsQlEyNUVMRWRCUVVjc1EwRkJReXhMUVVGbExFVkJRVVVzVFVGQlRTeEhRVUZITEVsQlFVazdVVUZEYUVNc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEV0QlFVc3NRMEZCUXl4UFFVRlBPMWxCUXk5Q0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVVV6UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeEhRVUZITEVkQlFVY3NTVUZCU1N4RFFVRkRMRmxCUVZrc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSVUZCUlR0WlFVTnVSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYkVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRemxDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxHZEdRVUZuUmp0SlFVTm9SaXdyUkVGQkswUTdTVUZETDBRc1RVRkJUU3hEUVVGRExFdEJRV1VzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTnVReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4N1dVRkRMMElzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlJUTkRMRTFCUVUwc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eFpRVUZaTEVOQlFVTTdVVUZET1VJc1MwRkJTeXhKUVVGSkxFbEJRVWtzUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4SFFVRkhMRWRCUVVjc1JVRkJSU3hKUVVGSkxFVkJRVVU3V1VGRGJrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03VVVGRmVrTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRPMUZCUXpsQ0xFOUJRVThzU1VGQlNTeERRVUZETzBsQlEyUXNRMEZCUXp0SlFVVkVMR2RHUVVGblJqdEpRVU5vUml3clJFRkJLMFE3U1VGREwwUXNUVUZCVFN4RFFVRkRMRXRCUVdVc1JVRkJSU3hOUVVGTkxFZEJRVWNzU1VGQlNUdFJRVU51UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzUzBGQlN5eERRVUZETEU5QlFVODdXVUZETDBJc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhEUVVGRE8xRkJSVE5ETEV0QlFVc3NTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhGUVVGRkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEyNUVMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRenRSUVVNNVFpeFBRVUZQTEVsQlFVa3NRMEZCUXp0SlFVTmtMRU5CUVVNN1NVRkZSQ3huUkVGQlowUTdTVUZEYUVRc1IwRkJSeXhEUVVGRExFMUJRVTBzUjBGQlJ5eEpRVUZKTzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRVZCUVVVc1EwRkJReXhIUVVGSExFZEJRVWNzUlVGQlJTeERRVUZETEVWQlFVVTdXVUZEYmtRc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYWtNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRE8xRkJRemxDTEU5QlFVOHNTVUZCU1N4RFFVRkRPMGxCUTJRc1EwRkJRenRKUVVWRUxESkZRVUV5UlR0SlFVTXpSU3dyUkVGQkswUTdTVUZETDBRc1JVRkJSU3hEUVVGRExFdEJRV1VzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTXZRaXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVsQlFVa3NTMEZCU3l4RFFVRkRMRTlCUVU4N1dVRkRMMElzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl4MVFrRkJkVUlzUTBGQlF5eERRVUZETzFGQlJUTkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVkQlFVY3NSMEZCUnl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTI1RUxFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVVnNReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU03VVVGRE9VSXNUMEZCVHl4SlFVRkpMRU5CUVVNN1NVRkRaQ3hEUVVGRE8wbEJSVVFzY1VaQlFYRkdPMGxCUTNKR0xDdEVRVUVyUkR0SlFVTXZSQ3hIUVVGSExFTkJRVU1zUzBGQlpTeEZRVUZGTEUxQlFVMHNSMEZCUnl4SlFVRkpPMUZCUTJoRExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUenRaUVVNdlFpeE5RVUZOTEVsQlFVa3NTMEZCU3l4RFFVRkRMSFZDUVVGMVFpeERRVUZETEVOQlFVTTdVVUZGTTBNc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFVkJRVVVzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRia1FzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hMUVVGTExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUld4RExFbEJRVWtzUTBGQlF5eG5Ra0ZCWjBJc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF6dFJRVU01UWl4UFFVRlBMRWxCUVVrc1EwRkJRenRKUVVOa0xFTkJRVU03U1VGRlJDeHZSa0ZCYjBZN1NVRkRjRVlzVVVGQlVTeERRVUZETEVkQlFWY3NSVUZCUlN4RFFVRlRMRVZCUVVVc1NVRkJTU3hIUVVGSExFdEJRVXM3VVVGRE0wTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1MwRkJTeXhEUVVGRExFTkJRVU03VVVGRmFFUXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJRenRaUVVGRkxFOUJRVTg3VVVGRmJrSXNaMEpCUVdkQ08xRkJRMmhDTEhWRVFVRjFSRHRSUVVWMlJDeHBRa0ZCYVVJN1VVRkRha0lzVFVGQlRTeFRRVUZUTEVkQlFVY3NTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVNdlFpeEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZGYWtNc1owUkJRV2RFTzFGQlJXaEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzVTBGQlV5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU4yUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlJYSkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWRCUVVjc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU5vUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zUlVGQlJTeEpRVUZKTEVOQlFVTXNRMEZCUXp0UlFVVjJRaXhsUVVGbE8wbEJRMnBDTEVOQlFVTTdTVUZGUkN4clJrRkJhMFk3U1VGRGJFWXNkVUpCUVhWQ08wbEJRM1pDTEZGQlFWRXNRMEZCUXl4SFFVRlhMRVZCUVVVc1EwRkJReXhIUVVGSExFTkJRVU03VVVGRGVrSXNkMFJCUVhkRU8xRkJRM2hFTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRVQ3hOUVVGTkxFbEJRVWtzUzBGQlN5eERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU03VVVGRk1VTXNTVUZCU1N4RFFVRkRMR0ZCUVdFc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzFGQlJYQkVMRWxCUVVrc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlR0WlFVTjJRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVkQlFVY3NSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUjBGQlJ5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZPMmRDUVVONlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1JVRkJSU3hKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xTkJRM1JETzFGQlJVUXNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTI1RExFTkJRVU03U1VGRlJDeFpRVUZaTEVOQlFVTXNTVUZCWXl4RlFVRkZMRWxCUVVrc1IwRkJSeXhKUVVGSk8xRkJRM1JETEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRUdFpRVU0zUWl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExIVkNRVUYxUWl4RFFVRkRMRU5CUVVNN1VVRkZNME1zU1VGQlNTeEpRVUZKTEVsQlFVa3NTVUZCU1N4RlFVRkZMRVZCUVVVc2NVSkJRWEZDTzFsQlEzWkRMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGRFTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzFOQlEzQkNPMkZCUVUwN1dVRkRUQ3hKUVVGSkxFMUJRVTBzUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZGWml4TFFVRkxMRWxCUVVrc1RVRkJUU3hIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4SFFVRkhMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEycEZMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zVFVGQlRTeEZRVUZGTEVWQlFVVXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlJUbERMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzVFVGQlRTeERRVUZETzFsQlEzUkNMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dFRRVU5xUWp0UlFVVkVMRTlCUVU4c1NVRkJTU3hEUVVGRE8wbEJRMlFzUTBGQlF6dEpRVVZFTEN0Q1FVRXJRanRKUVVNdlFpeE5RVUZOTEVOQlFVTXNSMEZCVnp0UlFVTm9RaXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVrVXNRMEZCUXp0SlFVVkVMQ3RDUVVFclFqdEpRVU12UWl4TlFVRk5MRU5CUVVNc1IwRkJWeXhGUVVGRkxFZEJRVmtzUlVGQlJTeE5RVUZOTEVkQlFVY3NTVUZCU1R0UlFVTTNReXhKUVVGSkxFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeEpRVUZKTEUxQlFVMDdXVUZEVWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03TzFsQlJXaENMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEpRVU53UWl4RFFVRkRPMGxCUlVRc2FVWkJRV2xHTzBsQlEycEdMRTlCUVU4c1EwRkJReXhEUVVGVExFVkJRVVVzUzBGQll6dFJRVU12UWl4SlFVRkpMRXRCUVVzN1dVRkRVQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZET3p0WlFVVndSQ3hKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpORUxFTkJRVU03U1VGRlJDeFBRVUZQTEVOQlFVTXNSMEZCVnp0UlFVTnFRaXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhIUVVGSExFbEJRVWtzUTBGQlF5eERRVUZETzBsQlF6RkVMRU5CUVVNN1NVRkZSQ3hSUVVGUkxFTkJRVU1zUjBGQlZ6dFJRVU5zUWl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6ZEVMRU5CUVVNN1NVRkZSQ3hUUVVGVE8xRkJRMUFzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8wbEJRemxDTEVOQlFVTTdTVUZGUkN4VlFVRlZPMUZCUTFJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVTBGQlV5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRPMGxCUXk5Q0xFTkJRVU03U1VGRlJDeDFRMEZCZFVNN1NVRkRka01zVTBGQlV5eERRVUZETEV0QlFXTTdVVUZEZEVJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVDBGQlR5eEpRVUZKTEVOQlFVTTdXVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWb1F5eEpRVUZKTEVsQlFVa3NRMEZCUXl4eFFrRkJjVUlzU1VGQlNTeEpRVUZKTEVOQlFVTXNVVUZCVVN4RlFVRkZPMWxCUXk5RExFbEJRVWtzUTBGQlF5eGpRVUZqTEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFMUJRVTBzUjBGQlJ5eEhRVUZITEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNN1dVRkRPVUlzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTFZc1QwRkJUeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRuUWtGRGRrSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1NVRkJTU3hEUVVGRExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNSVUZCUlN4RlFVRkZMRFJDUVVFMFFqdHZRa0ZETVVVc1NVRkJTU3hEUVVGRExHTkJRV01zU1VGQlNTeFJRVUZSTEVOQlFVTXNWMEZCVnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUTBGQlF6dHBRa0ZEZGtRN1lVRkRSanRaUVVWRUxHZENRVUZuUWp0WlFVTm9RaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFZEJRVWNzU1VGQlNTeERRVUZETzFsQlF6RkRMRWxCUVVrc1lVRkJZU3hKUVVGSkxFTkJRVU1zUlVGQlJTeDVSa0ZCZVVZN1owSkJReTlITEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeGhRVUZoTEVOQlFVTXNRMEZCUXp0WlFVVjRReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNN1owSkJRM0pDTEVsQlFVa3NRMEZCUXl4alFVRmpMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1dVRkZlRVFzU1VGQlNTeERRVUZETEhGQ1FVRnhRaXhIUVVGSExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTTdVMEZETlVNN1VVRkZSQ3hQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1kwRkJZeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRWxCUVVrc1EwRkJReXhqUVVGakxFTkJRVU1zUTBGQlF6dEpRVU0xUlN4RFFVRkRPMGxCUlVRc01rUkJRVEpFTzBsQlF6TkVMRlZCUVZVc1EwRkJReXhMUVVGbE8xRkJRM2hDTEVsQlFVa3NUVUZCVFN4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVObUxFbEJRVWtzU1VGQlNTeERRVUZETEZOQlFWTXNSVUZCUlN4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRGNFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4UFFVRlBMRVZCUVVVc1EwRkJReXhGUVVGRk8yZENRVU51UXl4TlFVRk5MRWxCUVVrc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFRRVU01UWp0aFFVRk5PMWxCUTB3c1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dG5Ra0ZEYWtRc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdVMEZET1VJN1VVRkRSQ3hQUVVGUExFMUJRVTBzUTBGQlF6dEpRVU5vUWl4RFFVRkRPMGxCUlVRc01rWkJRVEpHTzBsQlF6TkdMR2RDUVVGblFpeERRVUZETEUxQlFXZENMRVZCUVVVc1MwRkJZenRSUVVNdlF5eEpRVUZKTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWxCUVVrc1EwRkJRenRaUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlJXaERMRWxCUVVrc1MwRkJTeXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU5rTEUxQlFVMHNSMEZCUnl4SFFVRkhMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU03VVVGRE9VSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMVlzVDBGQlR5eERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUlVGQlJUdFpRVU4yUWl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzJkQ1FVTTFSQ3hMUVVGTExFbEJRVWtzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03VTBGRE0wTTdVVUZGUkN4blFrRkJaMEk3VVVGRGFFSXNTVUZCU1N4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4TlFVRk5MRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaERMRTFCUVUwc1lVRkJZU3hIUVVGSExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4RFFVRkRPMUZCUXpGRExFbEJRVWtzWVVGQllTeEpRVUZKTEVOQlFVTTdXVUZEY0VJc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEZWQlFWVXNRMEZCUXl4SlFVRkpMR0ZCUVdFc1EwRkJReXhEUVVGRE8xRkJRM2hETEU5QlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFMUJRVTBzUTBGQlF6dFpRVU55UWl4TFFVRkxMRWxCUVVrc1VVRkJVU3hEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkZNVU1zVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUMEZCVHl4SFFVRkhMRXRCUVVzc1EwRkJReXhEUVVGRE8wbEJRMmhFTEVOQlFVTTdTVUZGUkN4TFFVRkxPMUZCUTBnc1NVRkJTU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndRaXhEUVVGRE8wbEJSVVFzVVVGQlVTeERRVUZETEV0QlFXTTdVVUZEY2tJc1QwRkJUeXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF6dEpRVU4yUXl4RFFVRkRPMGxCUlVRc1NVRkJTU3hQUVVGUE8xRkJRMVFzVDBGQlR5eEpRVUZKTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFbEJRVWtzUTBGQlF5eFBRVUZQTEVOQlFVTTdTVUZET1VNc1EwRkJRenRKUVVWRUxFbEJRVWtzVVVGQlVUdFJRVU5XTEU5QlFVOHNTVUZCU1N4RFFVRkRMRk5CUVZNc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRPMGxCUXk5RExFTkJRVU03U1VGRlJDeEpRVUZKTEU5QlFVODdVVUZEVkN4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJ4RExFTkJRVU03U1VGRlJDeEpRVUZKTEZGQlFWRTdVVUZEVml4UFFVRlBMRWxCUVVrc1EwRkJReXhUUVVGVExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTI1RExFTkJRVU03U1VGRlJDeHpSMEZCYzBjN1NVRkRkRWNzTUVOQlFUQkRPMGxCUXpGRExGRkJRVkVzUTBGQlF5eExRVUZoTEVWQlFVVXNTMEZCU3l4SFFVRkhMRWxCUVVrN1VVRkRiRU1zU1VGQlNTeERRVUZETEdGQlFXRXNRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJReXhEUVVGRExFVkJRVVVzU1VGQlNTeERRVUZETEU5QlFVOHNSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWeVJDeEpRVUZKTEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU03V1VGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNwRExFdEJRVXNzUjBGQlJ5eExRVUZMTEVkQlFVY3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhoUVVGaE8xRkJRMmhFTEVsQlFVa3NWVUZCVlN4SFFVRkhMRXRCUVVzc1IwRkJSeXhKUVVGSkxFTkJRVU03VVVGRE9VSXNUVUZCVFN4UFFVRlBMRWRCUVVjc1NVRkJTU3hEUVVGRExGbEJRVmtzUTBGQlF6dFJRVVZzUXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTMEZCU3l4SFFVRkhMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUjBGQlJ5eFBRVUZQTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRja1FzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zV1VGQldUdFpRVU01UkN4SlFVRkpMRlZCUVZVc1NVRkJTU3hEUVVGRExFVkJRVVU3WjBKQlEyNUNMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zVlVGQlZTeEpRVUZKTEZWQlFWVXNRMEZCUXl4SFFVRkhMRlZCUVZVc1EwRkJReXhEUVVGRE8yZENRVU12UXl4VlFVRlZMRWRCUVVjc1EwRkJReXhEUVVGRE8yRkJRMmhDTzJsQ1FVRk5MRWxCUVVrc1EwRkJReXhMUVVGTExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNWVUZCVlN4RlFVRkZMSGxEUVVGNVF5eERRVUZCTzJkQ1FVTTVSU3hUUVVGVE8yRkJRMVk3V1VGRlJDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdG5Ra0ZEZUVNc1RVRkJUU3hEUVVGRExFZEJRVWNzVVVGQlVTeERRVUZETEZkQlFWY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFTkJRVU03WjBKQlEzcERMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdHZRa0ZEVml4TFFVRkxMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenR2UWtGRGVrSXNTVUZCU1N4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFOUJRVTg3ZDBKQlFVVXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenR2UWtGRGNrTXNUMEZCVHl4TFFVRkxMRU5CUVVNN2FVSkJRMlE3WVVGRFJqdFRRVU5HTzFGQlEwUXNUMEZCVHl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOYUxFTkJRVU03U1VGRlJDdzBSRUZCTkVRN1NVRkROVVFzVVVGQlVTeERRVUZETEV0QlFXRXNSVUZCUlN4TFFVRkxMRWRCUVVjc1NVRkJTVHRSUVVOc1F5eEpRVUZKTEV0QlFVc3NTVUZCU1N4RFFVRkRPMWxCUVVVc1QwRkJUeXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU14UWl4SlFVRkpMRU5CUVVNc1lVRkJZU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTXNSVUZCUlN4SlFVRkpMRU5CUVVNc1QwRkJUeXhGUVVGRkxFOUJRVThzUTBGQlF5eERRVUZETzFGQlJYSkVMRXRCUVVzc1IwRkJSeXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTMEZCU3l4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRExHRkJRV0U3VVVGRkwwUXNUVUZCVFN4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRMRU5CUVVNN1VVRkROVU1zU1VGQlNTeGhRVUZoTEVkQlFVY3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETzFGQlJYWkRMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzVlVGQlZTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRGNFTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUMEZCVHp0WlFVTjZSQ3hKUVVGSkxHRkJRV0VzU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTNSQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hoUVVGaExFTkJRVU1zUTBGQlF6dG5Ra0ZEZEVNc1lVRkJZU3hIUVVGSExFTkJRVU1zUTBGQlF6dGhRVU51UWp0WlFVTkVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXl4RlFVRkZPMmRDUVVONFF5eE5RVUZOTEVOQlFVTXNSMEZCUnl4UlFVRlJMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNRMEZCUXp0blFrRkRNVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXp0dlFrRkRVaXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRE0wSTdVMEZEUmp0UlFVTkVMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU03U1VGRFdpeERRVUZET3p0QlFYSjFRazBzYjBKQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdRMEZCUXl4RFFVRkRMRU5CUVVNN1FVRkZOVU1zYjBKQlFWY3NSMEZCUnl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRMnhETEVOQlFVTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNdlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0RFFVRkRMRU5CUVVNc1EwRkJRenRCUVVVMVF5eHRRa0ZCVlN4SFFVRkhMRk5CUVZNc1EwRkJReXhKUVVGSkxFTkJRVU03U1VGRGFrTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJReTlETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPMGxCUXpsRExFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTTdTVUZET1VNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF6dEpRVU01UXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRE8wbEJRemxETEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNN1NVRkRPVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXp0SlFVTTVReXhEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETzBsQlF6bERMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU03U1VGRE9VTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJRenRKUVVNNVF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4RFFVRkRPME5CUVVNc1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2laWGh3YjNKMElHUmxabUYxYkhRZ1kyeGhjM01nUW1sMFFYSnlZWGtnZTF4dUlDQnpkR0YwYVdNZ1gyOXVRbWwwUTI5MWJuUWdQU0JKYm5RNFFYSnlZWGt1Wm5KdmJTaGJYRzRnSUNBZ01Dd2dNU3dnTVN3Z01pd2dNU3dnTWl3Z01pd2dNeXdnTVN3Z01pd2dNaXdnTXl3Z01pd2dNeXdnTXl3Z05DeGNiaUFnSUNBeExDQXlMQ0F5TENBekxDQXlMQ0F6TENBekxDQTBMQ0F5TENBekxDQXpMQ0EwTENBekxDQTBMQ0EwTENBMUxGeHVJQ0FnSURFc0lESXNJRElzSURNc0lESXNJRE1zSURNc0lEUXNJRElzSURNc0lETXNJRFFzSURNc0lEUXNJRFFzSURVc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F4TENBeUxDQXlMQ0F6TENBeUxDQXpMQ0F6TENBMExDQXlMQ0F6TENBekxDQTBMQ0F6TENBMExDQTBMQ0ExTEZ4dUlDQWdJRElzSURNc0lETXNJRFFzSURNc0lEUXNJRFFzSURVc0lETXNJRFFzSURRc0lEVXNJRFFzSURVc0lEVXNJRFlzWEc0Z0lDQWdNaXdnTXl3Z015d2dOQ3dnTXl3Z05Dd2dOQ3dnTlN3Z015d2dOQ3dnTkN3Z05Td2dOQ3dnTlN3Z05Td2dOaXhjYmlBZ0lDQXpMQ0EwTENBMExDQTFMQ0EwTENBMUxDQTFMQ0EyTENBMExDQTFMQ0ExTENBMkxDQTFMQ0EyTENBMkxDQTNMRnh1SUNBZ0lERXNJRElzSURJc0lETXNJRElzSURNc0lETXNJRFFzSURJc0lETXNJRE1zSURRc0lETXNJRFFzSURRc0lEVXNYRzRnSUNBZ01pd2dNeXdnTXl3Z05Dd2dNeXdnTkN3Z05Dd2dOU3dnTXl3Z05Dd2dOQ3dnTlN3Z05Dd2dOU3dnTlN3Z05peGNiaUFnSUNBeUxDQXpMQ0F6TENBMExDQXpMQ0EwTENBMExDQTFMQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxGeHVJQ0FnSURNc0lEUXNJRFFzSURVc0lEUXNJRFVzSURVc0lEWXNJRFFzSURVc0lEVXNJRFlzSURVc0lEWXNJRFlzSURjc1hHNGdJQ0FnTWl3Z015d2dNeXdnTkN3Z015d2dOQ3dnTkN3Z05Td2dNeXdnTkN3Z05Dd2dOU3dnTkN3Z05Td2dOU3dnTml4Y2JpQWdJQ0F6TENBMExDQTBMQ0ExTENBMExDQTFMQ0ExTENBMkxDQTBMQ0ExTENBMUxDQTJMQ0ExTENBMkxDQTJMQ0EzTEZ4dUlDQWdJRE1zSURRc0lEUXNJRFVzSURRc0lEVXNJRFVzSURZc0lEUXNJRFVzSURVc0lEWXNJRFVzSURZc0lEWXNJRGNzWEc0Z0lDQWdOQ3dnTlN3Z05Td2dOaXdnTlN3Z05pd2dOaXdnTnl3Z05Td2dOaXdnTml3Z055d2dOaXdnTnl3Z055d2dPRjBwTzF4dVhHNGdJSE4wWVhScFl5QmZabWx5YzNSUGJrSnBkQ0E5SUVsdWREaEJjbkpoZVM1bWNtOXRLRnRjYmlBZ0lDQXRNU3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTBMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEVXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05Dd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMkxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURRc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTlN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN4Y2JpQWdJQ0EwTENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xDQXpMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TEZ4dUlDQWdJRGNzSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc0lETXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzWEc0Z0lDQWdOQ3dnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUN3Z015d2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3hjYmlBZ0lDQTFMQ0F3TENBeExDQXdMQ0F5TENBd0xDQXhMQ0F3TENBekxDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMRnh1SUNBZ0lEUXNJREFzSURFc0lEQXNJRElzSURBc0lERXNJREFzSURNc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNYRzRnSUNBZ05pd2dNQ3dnTVN3Z01Dd2dNaXdnTUN3Z01Td2dNQ3dnTXl3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01DeGNiaUFnSUNBMExDQXdMQ0F4TENBd0xDQXlMQ0F3TENBeExDQXdMQ0F6TENBd0xDQXhMQ0F3TENBeUxDQXdMQ0F4TENBd0xGeHVJQ0FnSURVc0lEQXNJREVzSURBc0lESXNJREFzSURFc0lEQXNJRE1zSURBc0lERXNJREFzSURJc0lEQXNJREVzSURBc1hHNGdJQ0FnTkN3Z01Dd2dNU3dnTUN3Z01pd2dNQ3dnTVN3Z01Dd2dNeXdnTUN3Z01Td2dNQ3dnTWl3Z01Dd2dNU3dnTUYwcE8xeHVYRzRnSUhOMFlYUnBZeUJmYkdGemRFOXVRbWwwSUQwZ1NXNTBPRUZ5Y21GNUxtWnliMjBvVzF4dUlDQWdJQzB4TENBd0xDQXhMQ0F4TENBeUxDQXlMQ0F5TENBeUxDQXpMQ0F6TENBekxDQXpMQ0F6TENBekxDQXpMQ0F6TEZ4dUlDQWdJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzSURRc0lEUXNJRFFzWEc0Z0lDQWdOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3dnTlN3Z05Td2dOU3hjYmlBZ0lDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMQ0ExTENBMUxDQTFMRnh1SUNBZ0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNYRzRnSUNBZ05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05pd2dOaXdnTml3Z05peGNiaUFnSUNBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxDQTJMQ0EyTENBMkxGeHVJQ0FnSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc0lEWXNJRFlzSURZc1hHNGdJQ0FnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl4Y2JpQWdJQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTEZ4dUlDQWdJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzWEc0Z0lDQWdOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXhjYmlBZ0lDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMRnh1SUNBZ0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NJRGNzSURjc0lEY3NYRzRnSUNBZ055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055d2dOeXdnTnl3Z055eGNiaUFnSUNBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM0xDQTNMQ0EzTENBM1hTazdYRzVjYmlBZ2NISnBkbUYwWlNCZlpHRjBZVG9nVldsdWRETXlRWEp5WVhrN1hHNGdJSEJ5YVhaaGRHVWdYMnhsYm1kMGFDQTlJREE3WEc0Z0lIQnlhWFpoZEdVZ1gzWmxjbk5wYjI0Z1BTQXdPMXh1SUNCd2NtbDJZWFJsSUY5MWNHUmhkR1ZNWlhabGJDQTlJREE3WEc0Z0lIQnlhWFpoZEdVZ1gzTmxiR1ZqZEdWa1EyOTFiblFnUFNBd08xeHVJQ0J3Y21sMllYUmxJRjl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBOUlDMHhPMXh1SUNCd2NtbDJZWFJsSUY5elpXeGxZM1JsWkVsdVpHVjRaWE5XWlhKemFXOXVJRDBnTFRFN1hHNGdJSEJ5YVhaaGRHVWdYM1psY25OcGIyNWxaRTVoYldVZ1BTQW5KenRjYmlBZ2NISnBkbUYwWlNCZmRtVnljMmx2Ym1Wa1RtRnRaVlpsY25OcGIyNGdQU0F0TVR0Y2JpQWdVMGhTU1U1TFgxUklVa1ZUU0U5TVJDQTlJREI0TVRBd08xeHVYRzRnSUdOdmJuTjBjblZqZEc5eUtHUmhkR0U2SUZWcGJuUXpNa0Z5Y21GNUxDQnNaVzVuZEdnNklHNTFiV0psY2lsY2JpQWdZMjl1YzNSeWRXTjBiM0lvYkdWdVozUm9PaUJ1ZFcxaVpYSXNJR1JsWm1GMWJIUldZV3gxWlQ4NklHSnZiMnhsWVc0cFhHNGdJR052Ym5OMGNuVmpkRzl5S0dGeVp6b2diblZ0WW1WeUlId2dWV2x1ZERNeVFYSnlZWGtzSUdSbFptRjFiSFJXWVd4MVpUb2dZbTl2YkdWaGJpQjhJRzUxYldKbGNpQTlJR1poYkhObEtTQjdYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmhjbWNnUFQwOUlDZHVkVzFpWlhJbktTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCc1pXNW5kR2dnUFNCaGNtYzdYRzRnSUNBZ0lDQmpiMjV6ZENCaWRXWm1JRDBnUW1sMFFYSnlZWGt1WDJOeVpXRjBaVUoxWm1abGNpaHNaVzVuZEdncE8xeHVJQ0FnSUNBZ2FXWWdLR1JsWm1GMWJIUldZV3gxWlNrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR0oxWm1ZdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJQ0FnWW5WbVpsdHBYU0E5SUMweE8xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlTQTlJR0oxWm1ZN1hHNGdJQ0FnSUNCMGFHbHpMbDlzWlc1bmRHZ2dQU0JzWlc1bmRHZzdYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDaGhjbWNnYVc1emRHRnVZMlZ2WmlCVmFXNTBNekpCY25KaGVTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZU0E5SUdGeVp5QmhjeUJWYVc1ME16SkJjbkpoZVR0Y2JpQWdJQ0FnSUhSb2FYTXVYMnhsYm1kMGFDQTlJR1JsWm1GMWJIUldZV3gxWlNCaGN5QnVkVzFpWlhJN1hHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25TVzUyWVd4cFpDQmpiMjV6ZEhKMVkzUnZjaWNwTzF4dUlDQWdJSDFjYmlBZ2ZWeHVYRzVjYmlBZ1oyVjBVbUYzUkdGMFlTZ3BJSHNnY21WMGRYSnVJSFJvYVhNdVgyUmhkR0U3SUgxY2JseHVJQ0JoYzNOMWNtVkhiMlY2S0c1MWJUb2diblZ0WW1WeUxDQmhjbWRPWVcxbE9pQlRkSEpwYm1jcE9pQjJiMmxrSUh0Y2JpQWdJQ0JwWmlBb2JuVnRJRHdnTUNrZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dBa2UyRnlaMDVoYldWOUlITm9iM1ZzWkNCaVpTQm5jbVZoZEdWeUlIUm9ZVzRnZW1WeWIyQXBPMXh1SUNCOVhHNWNiaUFnWVhOemRYSmxTVzVTWVc1blpTaDJZV3gxWlRvZ2JuVnRZbVZ5TENCdGFXNDZJRzUxYldKbGNpd2diV0Y0T2lCdWRXMWlaWElzSUdGeVowNWhiV1U2SUZOMGNtbHVaeWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2dvZG1Gc2RXVWdQQ0J0YVc0cElIeDhJQ2gyWVd4MVpTQStJRzFoZUNrcFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUVGeVozVnRaVzUwSUNSN1lYSm5UbUZ0WlgwZ0tDUjdkbUZzZFdWOUtTQnZkWFFnYjJZZ2NtRnVaMlVnS0NSN2JXbHVmU3dnSkh0dFlYaDlLV0FwTzF4dUlDQjlYRzVjYmlBZ1kyOXdlU2h6Y21NNklGVnBiblF6TWtGeWNtRjVMQ0JrYzNRNklGVnBiblF6TWtGeWNtRjVMQ0JqYjNWdWREb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCamIzVnVkRHNnYVNzcktWeHVJQ0FnSUNBZ1pITjBXMmxkSUQwZ2MzSmpXMmxkTzF4dUlDQjlYRzVjYmlBZ1kyOXdlVVp5YjIwb2IzUm9aWEk2SUVKcGRFRnljbUY1S1RvZ2RtOXBaQ0I3WEc0Z0lDQWdhV1lnS0hSb2FYTXVYMnhsYm1kMGFDQWhQU0J2ZEdobGNpNWZiR1Z1WjNSb0tWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCTVpXNW5kR2h6SUdScFptWmxjaUFvSkh0MGFHbHpMbDlzWlc1bmRHaDlJQ0U5SUNSN2IzUm9aWEl1WDJ4bGJtZDBhSDBwWUNrN1hHNGdJQ0FnZEdocGN5NWpiM0I1S0c5MGFHVnlMbDlrWVhSaExDQjBhR2x6TGw5a1lYUmhMQ0IwYUdsekxteGxibWQwYUVsdVNXNTBjeWs3WEc0Z0lDQWdkR2hwY3k1ZmRtVnljMmx2Ymlzck8xeHVJQ0I5WEc1Y2JpQWdaMlYwSUd4bGJtZDBhQ2dwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0oxWm1abGNpZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVmWkdGMFlUdGNiaUFnZlZ4dVhHNGdJSE5sZENCaWRXWm1aWElvWkdGMFlUb2dWV2x1ZERNeVFYSnlZWGtwSUh0Y2JpQWdJQ0IwYUdsekxsOWtZWFJoSUQwZ1pHRjBZVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJSDFjYmx4dUlDQm5aWFFnZG1WeWMybHZiaWdwSUh0Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZmRtVnljMmx2Ymp0Y2JpQWdmVnh1WEc0Z0lITmxkQ0IyWlhKemFXOXVLSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVJRDBnZG1Gc2RXVTdYRzRnSUgxY2JseHVJQ0JwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQjJiMmxrSUh0Y2JpQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUgxY2JseHVJQ0JuWlhRZ2JHVnVaM1JvU1c1SmJuUnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQk5ZWFJvTG1ac2IyOXlLQ2gwYUdsekxsOXNaVzVuZEdnZ0t5QXdlREZtS1NBdklEQjRNakFwTzF4dUlDQjlYRzVjYmlBZ1oyVjBJSFpsY25OcGIyNWxaRTVoYldVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVYM1psY25OcGIyNGdQVDBnZEdocGN5NWZkbVZ5YzJsdmJtVmtUbUZ0WlZabGNuTnBiMjRnUHlCMGFHbHpMbDkyWlhKemFXOXVaV1JPWVcxbElEb2dKeWM3WEc0Z0lIMWNibHh1SUNCelpYUWdkbVZ5YzJsdmJtVmtUbUZ0WlNodVlXMWxPaUJ6ZEhKcGJtY3BJSHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1WldST1lXMWxJRDBnYm1GdFpUdGNiaUFnSUNCMGFHbHpMbDkyWlhKemFXOXVaV1JPWVcxbFZtVnljMmx2YmlBOUlIUm9hWE11WDNabGNuTnBiMjQ3WEc0Z0lIMWNibHh1SUNCblpYUWdjMlZzWmlncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJSE5sZEV4bGJtZDBhQ2gyWVd4MVpUb2diblZ0WW1WeUtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tIWmhiSFZsSUR3Z01DbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmMyaHZkV3hrSUdKbElENDlJREFuS1R0Y2JseHVJQ0FnSUdsbUlDaDJZV3gxWlNBOVBTQjBhR2x6TGw5c1pXNW5kR2dwSUhKbGRIVnlianRjYmlBZ0lDQmpiMjV6ZENCdVNXNTBjMDVsWldSbFpDQTlJRTFoZEdndVpteHZiM0lvS0haaGJIVmxJQ3NnTUhneFppa2dMeUF3ZURJd0tUdGNiaUFnSUNCcFppQW9LRzVKYm5SelRtVmxaR1ZrSUQ0Z2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdncElIeDhJQ2dvYmtsdWRITk9aV1ZrWldRZ0t5QjBhR2x6TGxOSVVrbE9TMTlVU0ZKRlUwaFBURVFwSUR3Z2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdncEtTQjdYRzRnSUNBZ0lDQmpiMjV6ZENCdVpYZEVZWFJoSUQwZ2JtVjNJRlZwYm5Rek1rRnljbUY1S0c1SmJuUnpUbVZsWkdWa0tUdGNiaUFnSUNBZ0lIUm9hWE11WTI5d2VTaDBhR2x6TGw5a1lYUmhMQ0J1WlhkRVlYUmhMQ0FvYmtsdWRITk9aV1ZrWldRZ1BpQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDa2dQeUIwYUdsekxsOWtZWFJoTG14bGJtZDBhQ0E2SUc1SmJuUnpUbVZsWkdWa0tUdGNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRWdQU0J1WlhkRVlYUmhPMXh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2gyWVd4MVpTQStJSFJvYVhNdVgyeGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBbElEQjRNakFnUGlBd0tWeHVJQ0FnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXM1JvYVhNdWJHVnVaM1JvU1c1SmJuUnpJQzBnTVYwZ0pqMGdLREVnUER3Z0tDaDBhR2x6TGw5c1pXNW5kR2dnSlNBd2VESXdLU0FtSURCNE1XWXBLU0F0SURFN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRXVabWxzYkNnd0xDQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN5d2dia2x1ZEhOT1pXVmtaV1FwTzF4dUlDQWdJSDFjYmlBZ0lDQjBhR2x6TGw5c1pXNW5kR2dnUFNCMllXeDFaVHRjYmlBZ0lDQjBhR2x6TGw5MlpYSnphVzl1S3lzN1hHNGdJSDFjYmx4dUlDQnpkR0YwYVdNZ1puSnZiVUZ1WkNoelpYUXhPaUJDYVhSQmNuSmhlU3dnYzJWME1qb2dRbWwwUVhKeVlYa3BPaUJDYVhSQmNuSmhlU0I3WEc0Z0lDQWdhV1lnS0hObGRERXVYMnhsYm1kMGFDQWhQU0J6WlhReUxsOXNaVzVuZEdncFhHNGdJQ0FnSUNCMGFISnZkeUJ1WlhjZ1JYSnliM0lvWUV4bGJtZDBhSE1nWkdsbVptVnlJQ2drZTNObGRERXVYMnhsYm1kMGFIMGdJVDBnSkh0elpYUXlMbDlzWlc1bmRHaDlLV0FwTzF4dVhHNGdJQ0FnWTI5dWMzUWdkR1Z0Y0NBOUlHNWxkeUJDYVhSQmNuSmhlU2h6WlhReExsOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYMnhsYm1kMGFDQTlJSE5sZERFdVgyeGxibWQwYUR0Y2JpQWdJQ0IwWlcxd0xsOWtZWFJoSUQwZ1FtbDBRWEp5WVhrdVgyTnlaV0YwWlVKMVptWmxjaWgwWlcxd0xsOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dVhHNGdJQ0FnWTI5dWMzUWdiR1Z1SUQwZ2MyVjBNUzVzWlc1bmRHaEpia2x1ZEhNN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCc1pXNDdJR2tyS3lsY2JpQWdJQ0FnSUhSbGJYQXVYMlJoZEdGYmFWMGdQU0J6WlhReExsOWtZWFJoVzJsZElDWWdjMlYwTWk1ZlpHRjBZVnRwWFR0Y2JseHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdjSEpwZG1GMFpTQnpkR0YwYVdNZ1gyTnlaV0YwWlVKMVptWmxjaWhzWlc1bmRHZzZJRzUxYldKbGNpazZJRlZwYm5Rek1rRnljbUY1SUh0Y2JpQWdJQ0J5WlhSMWNtNGdibVYzSUZWcGJuUXpNa0Z5Y21GNUtFMWhkR2d1Wm14dmIzSW9LR3hsYm1kMGFDQXJJREI0TVdZcElDOGdNSGd5TUNrcE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHWnliMjFXWVd4MVpYTW9kbUZzZFdWek9pQkJjbkpoZVR4aWIyOXNaV0Z1UGlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCamIyNXpkQ0IwWlcxd0lEMGdibVYzSUVKcGRFRnljbUY1S0haaGJIVmxjeTVzWlc1bmRHZ3BPMXh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBaVzF3TGw5c1pXNW5kR2c3SUdrckt5a2dlMXh1SUNBZ0lDQWdhV1lnS0haaGJIVmxjMXRwWFNsY2JpQWdJQ0FnSUNBZ2RHVnRjQzVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLR2tnTHlBd2VESXdLVjBnZkQwZ01TQThQQ0FvS0drZ0pTQXdlREl3S1NBbUlEQjRNV1lwTzF4dUlDQWdJSDFjYmlBZ0lDQnlaWFIxY200Z2RHVnRjRHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkRiMjV6ZEhKMVkzUnpJR0VnVzBKcGRGTmxkRjBnYjJZZ2JHVnVaM1JvSUZ0amIzVnVkRjBzSUhkb1pYSmxJR2xrZUMxMGFDQmlhWFFnYVhNZ1pHVjBaWEp0YVc1bFpDQmllU0JoSUdOaGJHd2dkRzhnVzJac1lXZGRJQ2hwWkhncExseHVJQ0J6ZEdGMGFXTWdabkp2YlZObGNTaGpiM1Z1ZERvZ2JuVnRZbVZ5TENCbWJHRm5PaUJHZFc1amRHbHZiaWs2SUVKcGRFRnljbUY1SUh0Y2JpQWdJQ0JqYjI1emRDQjBaVzF3SUQwZ2JtVjNJRUpwZEVGeWNtRjVLR052ZFc1MEtUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElHTnZkVzUwT3lBcksya3BYRzRnSUNBZ0lDQjBaVzF3TG5ObGRFSnBkQ2hwTENCbWJHRm5LR2twS1R0Y2JseHVJQ0FnSUhSbGJYQXVYM1psY25OcGIyNGdQU0F3TzF4dUlDQWdJSEpsZEhWeWJpQjBaVzF3TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRU52Ym5OMGNuVmpkSE1nWVNCYlFtbDBVMlYwWFNCbWNtOXRJR0VnYzNSeWFXNW5JRnR6WFNCamIyNTBZV2x1YVc1bklDY3dKeUJ2Y2lBbk1TY3VYRzRnSUhOMFlYUnBZeUJtY205dFUzUnlhVzVuS0hNNklITjBjbWx1WnlrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCeVpYUjFjbTRnUW1sMFFYSnlZWGt1Wm5KdmJWTmxjU2h6TG14bGJtZDBhQ3dnS0drNklHNTFiV0psY2lrZ1BUNGdjeTVqYUdGeVFYUW9hU2tnUFQwZ0p6RW5LVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QkRiMjV6ZEhKMVkzUnpJR0VnVzBKcGRGTmxkRjBzSUdKaGMyVmtJRzl1SUd4bGJtZDBhQ0JiWDJ4bGJtZDBhRjBnWVc1a0lHSjVkR1VnWVhKeVlYa2dXMTlrWVhSaFhTNWNiaUFnYzNSaGRHbGpJR1p5YjIxVmFXNTBNekpCY25KaGVTaGZiR1Z1WjNSb09pQnVkVzFpWlhJc0lGOWtZWFJoT2lCVmFXNTBNekpCY25KaGVTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCMFpXMXdJRDBnYm1WM0lFSnBkRUZ5Y21GNUtGOXNaVzVuZEdncE8xeHVJQ0FnSUhSbGJYQXVYMlJoZEdFZ1BTQmZaR0YwWVR0Y2JpQWdJQ0J5WlhSMWNtNGdkR1Z0Y0R0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJFWlhObGNtbGhiR2w2WlhNZ1lTQmJRbWwwVTJWMFhTQm1jbTl0SUZ0aWVYUmxjMTB1WEc0Z0lITjBZWFJwWXlCbWNtOXRRbmwwWlhNb1lubDBaWE02SUZWcGJuUTRRWEp5WVhrcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ1kyOXVjM1FnYkdWdUlEMGdZbmwwWlhNdWJHVnVaM1JvTzF4dUlDQWdJR052Ym5OMElIUmxiWEFnUFNCdVpYY2dRbWwwUVhKeVlYa29iR1Z1SUNvZ09DazdYRzRnSUNBZ2RHVnRjQzVmWkdGMFlTQTlJRzVsZHlCVmFXNTBNekpCY25KaGVTaE5ZWFJvTG1ac2IyOXlLQ2hzWlc0Z0t5QXpLU0F2SURRcEtUdGNiaUFnSUNCMFpXMXdMbDlzWlc1bmRHZ2dQU0JzWlc0Z0tpQTRPMXh1SUNBZ0lHeGxkQ0J1ZFcweElEMGdNRHRjYmlBZ0lDQnNaWFFnYm5WdE1pQTlJREE3WEc1Y2JpQWdJQ0IzYUdsc1pTQW9LR3hsYmlBdElHNTFiVElwSUQ0OUlEUXBJSHRjYmlBZ0lDQWdJSFJsYlhBdVgyUmhkR0ZiYm5WdE1Tc3JYU0E5SUNoY2JpQWdJQ0FnSUNBZ0tDaGllWFJsYzF0dWRXMHlYU0FtSURCNFptWXBJSHdnS0NoaWVYUmxjMXR1ZFcweUlDc2dNVjBnSmlBd2VHWm1LU0E4UENBNEtTa2dmRnh1SUNBZ0lDQWdJQ0FvS0dKNWRHVnpXMjUxYlRJZ0t5QXlYU0FtSURCNFptWXBJRHc4SURCNE1UQXBYRzRnSUNBZ0lDQXBJSHdnS0NoaWVYUmxjMXR1ZFcweUlDc2dNMTBnSmlBd2VHWm1LU0E4UENBd2VERTRLVHRjYmx4dUlDQWdJQ0FnYm5WdE1pQXJQU0EwTzF4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNoc1pXNGdMU0J1ZFcweUlEMDlJRE1wWEc0Z0lDQWdJQ0IwWlcxd0xsOWtZWFJoVzI1MWJURmRJRDBnS0dKNWRHVnpXMjUxYlRJZ0t5QXlYU0FtSURCNFptWXBJRHc4SURCNE1UQTdYRzVjYmlBZ0lDQnBaaUFvYkdWdUlDMGdiblZ0TWlBOVBTQXlLVnh1SUNBZ0lDQWdkR1Z0Y0M1ZlpHRjBZVnR1ZFcweFhTQjhQU0FvWW5sMFpYTmJiblZ0TWlBcklERmRJQ1lnTUhobVppa2dQRHdnT0R0Y2JseHVJQ0FnSUdsbUlDaHNaVzRnTFNCdWRXMHlJRDA5SURFcFhHNGdJQ0FnSUNCMFpXMXdMbDlrWVhSaFcyNTFiVEZkSUh3OUlHSjVkR1Z6VzI1MWJUSmRJQ1lnTUhobVpqdGNibHh1SUNBZ0lIUmxiWEF1WDNabGNuTnBiMjRnUFNBd08xeHVJQ0FnSUhKbGRIVnliaUIwWlcxd08xeHVJQ0I5WEc1Y2JpQWdkRzlUZEhKcGJtY29LVG9nYzNSeWFXNW5JSHRjYmlBZ0lDQnlaWFIxY200Z1lDUjdkR2hwY3k1ZmJHVnVaM1JvZlNCaWFYUnpMQ0FrZTNSb2FYTXVZMjkxYm5SQ2FYUnpLSFJ5ZFdVcGZTQnpaWFJnTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJR1JsWlhBZ1kyOXRjR0Z5YVhOdmJpQnZaaUIwZDI4Z1ltbDBjMlYwY3k1Y2JpQWdaWEYxWVd4ektHOTBhR1Z5T2lCQ2FYUkJjbkpoZVNrNklHSnZiMnhsWVc0Z2UxeHVJQ0FnSUdsbUlDaDBhR2x6SUQwOUlHOTBhR1Z5S1NCeVpYUjFjbTRnZEhKMVpUdGNiaUFnSUNCcFppQW9iM1JvWlhJZ1BUMGdiblZzYkNrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXNaVzVuZEdnZ0lUMGdiM1JvWlhJdVgyeGxibWQwYUNrZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXNaVzVuZEdnZ1BUMGdNQ2tnY21WMGRYSnVJSFJ5ZFdVN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJSaGRHRXViR1Z1WjNSb0lDMGdNVHNnYVNzcktWeHVJQ0FnSUNBZ2FXWWdLSFJvYVhNdVgyUmhkR0ZiYVYwZ0lUMGdiM1JvWlhJdVgyUmhkR0ZiYVYwcElISmxkSFZ5YmlCbVlXeHpaVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBb2RHaHBjeTVmWkdGMFlTNXNaVzVuZEdnZ0xTQXhLU0FxSURnN0lHa2dQQ0IwYUdsekxsOXNaVzVuZEdnN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYVdZZ0tIUm9hWE11WjJWMFFtbDBLR2twSUNFOUlHOTBhR1Z5TG1kbGRFSnBkQ2hwS1NsY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh1SUNBZ0lIMWNiaUFnSUNCeVpYUjFjbTRnZEhKMVpUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCRGJHOXVaWE1nWVNCaWFYUnpaWFF1SUNvdlhHNGdJR05zYjI1bEtDazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQmpiMjV6ZENCaWFYUkJjbkpoZVNBOUlHNWxkeUJDYVhSQmNuSmhlU2d3TENCbVlXeHpaU2s3WEc0Z0lDQWdZbWwwUVhKeVlYa3VYMlJoZEdFZ1BTQlZhVzUwTXpKQmNuSmhlUzVtY205dEtIUm9hWE11WDJSaGRHRXBPeUF2THlCbFptWmxZM1JwZG1VZ2JHVnVaM1JvT2lBb2JHVnVaM1JvU1c1SmJuUnpLVnh1SUNBZ0lHSnBkRUZ5Y21GNUxsOXNaVzVuZEdnZ1BTQjBhR2x6TGw5c1pXNW5kR2c3WEc0Z0lDQWdZbWwwUVhKeVlYa3VYM1psY25OcGIyNGdQU0IwYUdsekxsOTJaWEp6YVc5dU8xeHVJQ0FnSUhKbGRIVnliaUJpYVhSQmNuSmhlVHRjYmlBZ2ZWeHVYRzRnSUM4cUtpQkpibWwwYVdGc2FYcGxjeUJoSUdKcGRITmxkQzRnS2k5Y2JpQWdhVzVwZENobWJHRm5PaUJHZFc1amRHbHZiaXdnYm05MGFXWjVPaUJpYjI5c1pXRnVLVG9nUW1sMFFYSnlZWGtnZTF4dUlDQWdJSFJvYVhNdWMyVjBRV3hzS0daaGJITmxMQ0JtWVd4elpTazdYRzVjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyeGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pteGhaeWhwS1NsY2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLR2tnTHlBd2VESXdLVjBnZkQwZ01TQThQQ0FvS0drZ0pTQXdlREl3S1NBbUlEQjRNV1lwTzF4dUlDQWdJSDFjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRWx1ZG1WeWRITWdZU0JpYVhSelpYUXVYRzRnSUdsdWRtVnlkQ2h1YjNScFpua2dQU0IwY25WbEtUb2dkbTlwWkNCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNCZVBTQXRNVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQjlYRzVjYmlBZ0x5OHZJRk5sZEhNZ1lXeHNJR0pwZEhNZ2RHOGdXM1poYkhWbFhTd2diM0IwYVc5dVlXeHNlU0J6ZFhCd2NtVnpjMmx1WnlCdWIzUnBabWxqWVhScGIyNXpMbHh1SUNCelpYUkJiR3dvZG1Gc2RXVTZJR0p2YjJ4bFlXNHNJRzV2ZEdsbWVTQTlJR1poYkhObEtUb2dkbTlwWkNCN1hHNGdJQ0FnWTI5dWMzUWdabXhoWjNNZ1BTQjJZV3gxWlNBL0lDMHhJRG9nTUR0Y2JpQWdJQ0JqYjI1emRDQnNaVzRnUFNCMGFHbHpMbXhsYm1kMGFFbHVTVzUwY3p0Y2JseHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2JHVnVPeUJwS3lzcElDOHZkRzlrYnpvZ2IzQjBhVzFwZW1WY2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdGYmFWMGdQU0JtYkdGbmN6dGNibHh1SUNBZ0lIUm9hWE11YVc1amNtVnRaVzUwVm1WeWMybHZiaWh1YjNScFpua3BPMXh1SUNCOVhHNWNiaUFnTHk4dklGTmxkSE1nWW1sMGN5QmhkQ0JiYVc1a1pYaGxjMTBnY0c5emFYUnBiMjRnZEc4Z1czWmhiSFZsWFM1Y2JpQWdMeTh2SUVOc1pXRnljeUIwYUdVZ1ltbDBjMlYwSUdsbUlGdGpiR1ZoY2wwZ1pteGhaeUJwY3lCMGNuVmxMbHh1SUNBdkx5OGdRMmhoYm1kbElHNXZkR2xtYVdOaGRHbHZiaUJwY3lCeVlXbHpaV1FnZDJobGJpQmJibTkwYVdaNVhTQnBjeUIwY25WbExseHVJQ0J6WlhSSmJtUmxlR1Z6S0dsdVpHVjRaWE02SUVGeWNtRjVQRzUxYldKbGNqNHNJSFpoYkhWbElEMGdkSEoxWlN3Z1kyeGxZWElnUFNCMGNuVmxMQ0J1YjNScFpua2dQU0IwY25WbEtUb2dkbTlwWkNCN1hHNGdJQ0FnYVdZZ0tHTnNaV0Z5S1Z4dUlDQWdJQ0FnZEdocGN5NXpaWFJCYkd3b0lYWmhiSFZsTENCbVlXeHpaU2s3WEc1Y2JpQWdJQ0JtYjNJZ0tHTnZibk4wSUdrZ2IyWWdhVzVrWlhobGN5bGNiaUFnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCMllXeDFaU2s3WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lHVjJaWEo1U1c1a1pYZ29hVzVrWlhobGN6b2dRWEp5WVhrOGJuVnRZbVZ5UGl3Z2RtRnNkV1VnUFNCMGNuVmxLVG9nWW05dmJHVmhiaUI3WEc0Z0lDQWdabTl5SUNoamIyNXpkQ0JwYm1SbGVDQnZaaUJwYm1SbGVHVnpLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVuWlhSQ2FYUW9hVzVrWlhncElDRTlJSFpoYkhWbEtWeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1ptRnNjMlU3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCMGNuVmxPMXh1SUNCOVhHNWNiaUFnWVc1NVNXNWtaWGdvYVc1a1pYaGxjem9nUVhKeVlYazhiblZ0WW1WeVBpd2dkbUZzZFdVZ1BTQjBjblZsS1RvZ1ltOXZiR1ZoYmlCN1hHNGdJQ0FnWm05eUlDaGpiMjV6ZENCcGJtUmxlQ0J2WmlCcGJtUmxlR1Z6S1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1blpYUkNhWFFvYVc1a1pYZ3BJRDA5SUhaaGJIVmxLVnh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkSEoxWlR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4dUlDQjlYRzVjYmlBZ2MyVjBWMmhsY21Vb1kyaGxZMnM2SUVaMWJtTjBhVzl1TENCMllXeDFaU0E5SUhSeWRXVXNJR05zWldGeUlEMGdkSEoxWlN3Z2JtOTBhV1o1SUQwZ2RISjFaU3dnWVd4c2IzZERiR1ZoY2lBOUlIUnlkV1VwT2lCMmIybGtJSHRjYmlBZ0lDQnBaaUFvWTJ4bFlYSWdKaVlnWVd4c2IzZERiR1ZoY2lsY2JpQWdJQ0FnSUhSb2FYTXVjMlYwUVd4c0tDRjJZV3gxWlN3Z1ptRnNjMlVwTzF4dVhHNGdJQ0FnYVdZZ0tHRnNiRzkzUTJ4bFlYSXBJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR2tnUFNBd095QnBJRHdnZEdocGN5NWZiR1Z1WjNSb095QnBLeXNwSUh0Y2JpQWdJQ0FnSUNBZ2FXWWdLR05vWldOcktHa3BLVnh1SUNBZ0lDQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaHBMQ0IyWVd4MVpTazdYRzRnSUNBZ0lDQjlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2RHaHBjeTVmYkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNBZ0lIUm9hWE11YzJWMFJtRnpkQ2hwTENCamFHVmpheWhwS1NBL0lIWmhiSFZsSURvZ0lYWmhiSFZsS1R0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0IwYUdsekxtbHVZM0psYldWdWRGWmxjbk5wYjI0b2JtOTBhV1o1S1R0Y2JpQWdmVnh1WEc0Z0lHZGxkRkpoYm1kbEtHWnliMjA2SUc1MWJXSmxjaXdnZEc4NklHNTFiV0psY2lrNklFSnBkRUZ5Y21GNUlIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb1puSnZiU3dnTUN3Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVN3Z0oyWnliMjBuS1R0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvZEc4c0lEQXNJSFJvYVhNdVgyeGxibWQwYUN3Z0ozUnZKeWs3WEc0Z0lDQWdZMjl1YzNRZ1lYSnlPaUJCY25KaGVUeGliMjlzWldGdVBpQTlJRnRkTzF4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCbWNtOXRPeUJwSUR3Z2RHODdJQ3NyYVNsY2JpQWdJQ0FnSUdGeWNpNXdkWE5vS0hSb2FYTXVaMlYwUW1sMEtHa3BLVHRjYmlBZ0lDQnlaWFIxY200Z1FtbDBRWEp5WVhrdVpuSnZiVlpoYkhWbGN5aGhjbklwTzF4dUlDQjlYRzVjYmlBZ1oyVjBVbUZ1WjJWQmMweHBjM1FvWm5KdmJUb2diblZ0WW1WeUxDQjBiem9nYm5WdFltVnlLVG9nWW05dmJHVmhibHRkSUh0Y2JpQWdJQ0IwYUdsekxtRnpjM1Z5WlVsdVVtRnVaMlVvWm5KdmJTd2dNQ3dnZEdocGN5NWZiR1Z1WjNSb0lDMGdNU3dnSjJaeWIyMG5LVHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9kRzhzSURBc0lIUm9hWE11WDJ4bGJtZDBhQ3dnSjNSdkp5azdYRzRnSUNBZ1kyOXVjM1FnWVhKeU9pQmliMjlzWldGdVcxMGdQU0JiWFR0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ1puSnZiVHNnYVNBOElIUnZPeUFySzJrcFhHNGdJQ0FnSUNCaGNuSXVjSFZ6YUNoMGFHbHpMbWRsZEVKcGRDaHBLU2s3WEc0Z0lDQWdjbVYwZFhKdUlHRnljanRjYmlBZ2ZWeHVYRzVjYmlBZ2MyVjBVbUZ1WjJVb1puSnZiVG9nYm5WdFltVnlMQ0IwYnpvZ2JuVnRZbVZ5TENCMllXeDFaVG9nWW05dmJHVmhiaXdnYm05MGFXWjVJRDBnZEhKMVpTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQjBhR2x6TG1GemMzVnlaVWx1VW1GdVoyVW9abkp2YlN3Z01Dd2dkR2hwY3k1ZmJHVnVaM1JvSUMwZ01Td2dKMlp5YjIwbktUdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2RHOHNJREFzSUhSb2FYTXVYMnhsYm1kMGFDQXRJREVzSUNkMGJ5Y3BPMXh1WEc0Z0lDQWdZMjl1YzNRZ2MzUmhjblFnUFNCTllYUm9MbTFwYmlobWNtOXRMQ0IwYnlrN1hHNGdJQ0FnWTI5dWMzUWdaVzVrSUQwZ1RXRjBhQzV0WVhnb1puSnZiU3dnZEc4cE8xeHVYRzRnSUNBZ0x5OTBiMlJ2T2lCdmNIUnBiV2w2WlZ4dUlDQWdJR2xtSUNoMllXeDFaU2tnZTF4dUlDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlITjBZWEowT3lCcElEdzlJR1Z1WkRzZ2FTc3JLVnh1SUNBZ0lDQWdJQ0IwYUdsekxuTmxkRlJ5ZFdVb2FTazdYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2JpQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQnpkR0Z5ZERzZ2FTQThQU0JsYm1RN0lHa3JLeWxjYmlBZ0lDQWdJQ0FnZEdocGN5NXpaWFJHWVd4elpTaHBLVHRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjenRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlRaWFJ6SUc0Z2NtRnVaRzl0YkhrZ1kyaHZjMlZ1SUdKcGRITWdkRzhnZG1Gc2RXVXNJSEpsYldGcGJtbHVaeUJpYVhSeklIUnZJQ0YyWVd4MVpTNWNiaUFnYzJWMFVtRnVaRzl0S0c0NklHNTFiV0psY2l3Z2RtRnNkV1U2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUhSeWRXVXBPaUIyYjJsa0lIdGNiaUFnSUNCcFppQW9iaUE4SURBZ2ZId2diaUErSUhSb2FYTXVYMnhsYm1kMGFDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnbmJpQnRkWE4wSUdKbElENDlJREFnSmlZZ1BEMGdRMjkxYm5RbktUdGNibHh1SUNBZ0lHbG1JQ2h1SUQ0Z2RHaHBjeTVmYkdWdVozUm9JQzhnTWlsY2JpQWdJQ0FnSUhSb2FYTXVjMlYwVW1GdVpHOXRLSFJvYVhNdVgyeGxibWQwYUNBdElHNHNJQ0YyWVd4MVpTazdYRzVjYmlBZ0lDQjBhR2x6TG5ObGRFRnNiQ2doZG1Gc2RXVXBPMXh1WEc0Z0lDQWdabTl5SUNoc1pYUWdheUE5SURBN0lHc2dQQ0J1T3lrZ2UxeHVJQ0FnSUNBZ1kyOXVjM1FnYVNBOUlFMWhkR2d1Wm14dmIzSW9UV0YwYUM1eVlXNWtiMjBvS1NBcUlIUm9hWE11WDJ4bGJtZDBhQ2s3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVuWlhSQ2FYUW9hU2tnUFQwZ2RtRnNkV1VwSUdOdmJuUnBiblZsTzF4dUlDQWdJQ0FnZEdocGN5NXpaWFJHWVhOMEtHa3NJSFpoYkhWbEtUdGNiaUFnSUNBZ0lHc3JLenRjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG1sdVkzSmxiV1Z1ZEZabGNuTnBiMjRvYm05MGFXWjVLVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5Qk5iMlJwWm1sbGN5QmpkWEp5Wlc1MElHSnBkSE5sZENCaWVTQndaWEptYjNKdGFXNW5JSFJvWlNCaWFYUjNhWE5sSUVGT1JDQnZjR1Z5WVhScGIyNGdZV2RoYVc1emRDQjBhR1ZjYmlBZ0x5OHZJR052Y25KbGMzQnZibVJwYm1jZ1pXeGxiV1Z1ZEhNZ2FXNGdkR2hsSUhOd1pXTnBabWxsWkNCaWFYUnpaWFF1WEc0Z0lHRnVaQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0FtUFNCMllXeDFaUzVmWkdGMFlWdHBYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJSFJvWlNCaWFYUjNhWE5sSUVGT1JDQk9UMVFnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUdGdVpFNXZkQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHTnZibk4wSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPMXh1SUNBZ0lHWnZjaUFvYkdWMElHNTFiVElnUFNBd095QnVkVzB5SUR3Z2JHVnVPeUJ1ZFcweUt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMjUxYlRKZElDWTlJSDUyWVd4MVpTNWZaR0YwWVZ0dWRXMHlYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRkJsY21admNtMXpJSFJvWlNCaWFYUjNhWE5sSUU1UFZDQkJUa1FnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUc1dmRFRnVaQ2gyWVd4MVpUb2dRbWwwUVhKeVlYa3NJRzV2ZEdsbWVTQTlJSFJ5ZFdVcE9pQkNhWFJCY25KaGVTQjdYRzRnSUNBZ2FXWWdLSFJvYVhNdVgyeGxibWQwYUNBaFBTQjJZV3gxWlM1ZmJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RCY25KaGVTQnNaVzVuZEdoeklHUnBabVpsY2k0bktUdGNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3TENCc1pXNGdQU0IwYUdsekxteGxibWQwYUVsdVNXNTBjenNnYVNBOElHeGxianNnYVNzcktWeHVJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlWdHBYU0E5SUNoK2RHaHBjeTVmWkdGMFlWdHBYU2tnSmlCMllXeDFaUzVmWkdGMFlWdHBYVHRjYmx4dUlDQWdJSFJvYVhNdWFXNWpjbVZ0Wlc1MFZtVnljMmx2YmlodWIzUnBabmtwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TzF4dUlDQjlYRzVjYmlBZ0x5OHZJRWx1ZG1WeWRITWdZV3hzSUdKcGRDQjJZV3gxWlhNZ2FXNGdkR2hsSUdOMWNuSmxiblFnWW1sMGMyVjBYRzRnSUc1dmRDaHViM1JwWm5rZ1BTQjBjblZsS1RvZ1FtbDBRWEp5WVhrZ2UxeHVJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdMQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6c2dhU0E4SUd4bGJqc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQTlJSDUwYUdsekxsOWtZWFJoVzJsZE8xeHVYRzRnSUNBZ2RHaHBjeTVwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2THk4Z1VHVnlabTl5YlhNZ2RHaGxJR0pwZEhkcGMyVWdUMUlnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUc5eUtIWmhiSFZsT2lCQ2FYUkJjbkpoZVN3Z2JtOTBhV1o1SUQwZ2RISjFaU2tnZTF4dUlDQWdJR2xtSUNoMGFHbHpMbDlzWlc1bmRHZ2dJVDBnZG1Gc2RXVXVYMnhsYm1kMGFDbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblFYSnlZWGtnYkdWdVozUm9jeUJrYVdabVpYSXVKeWs3WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTVzWlc1bmRHaEpia2x1ZEhNN0lHa2dQQ0JzWlc0N0lHa3JLeWxjYmlBZ0lDQWdJSFJvYVhNdVgyUmhkR0ZiYVYwZ2ZEMGdkbUZzZFdVdVgyUmhkR0ZiYVYwN1hHNWNiaUFnSUNCMGFHbHpMbWx1WTNKbGJXVnVkRlpsY25OcGIyNG9ibTkwYVdaNUtUdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN6dGNiaUFnZlZ4dVhHNGdJQzh2THlCUVpYSm1iM0p0Y3lCMGFHVWdZbWwwZDJselpTQmxlR05zZFhOcGRtVWdUMUlnYjNCbGNtRjBhVzl1SUc5dUlIUm9aU0JsYkdWdFpXNTBjeUJwYmlCMGFHVWdZM1Z5Y21WdWRDQmlhWFJ6WlhSY2JpQWdMeTh2SUdGbllXbHVjM1FnZEdobElHTnZjbkpsYzNCdmJtUnBibWNnWld4bGJXVnVkSE1nYVc0Z2RHaGxJSE53WldOcFptbGxaQ0JpYVhSelpYUXVYRzRnSUhodmNpaDJZV3gxWlRvZ1FtbDBRWEp5WVhrc0lHNXZkR2xtZVNBOUlIUnlkV1VwSUh0Y2JpQWdJQ0JwWmlBb2RHaHBjeTVmYkdWdVozUm9JQ0U5SUhaaGJIVmxMbDlzWlc1bmRHZ3BYRzRnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0owRnljbUY1SUd4bGJtZDBhSE1nWkdsbVptVnlMaWNwTzF4dVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQXNJR3hsYmlBOUlIUm9hWE11YkdWdVozUm9TVzVKYm5Sek95QnBJRHdnYkdWdU95QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzJsZElGNDlJSFpoYkhWbExsOWtZWFJoVzJsZE8xeHVYRzRnSUNBZ2RHaHBjeTVwYm1OeVpXMWxiblJXWlhKemFXOXVLRzV2ZEdsbWVTazdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTTdYRzRnSUgxY2JseHVJQ0F2THk4Z1NXNXpaWEowY3lCdUlEQXRZbWwwY3lCaGRDQndiM05wZEdsdmJpQndiM01zSUhKbGMybDZhVzVuSUhObGJHWWdZVzVrSUhOb2FXWjBhVzVuSUdKcGRITWdZWEJ3Y205d2NtbGhkR1ZzZVM1Y2JpQWdhVzV6WlhKMFFYUW9jRzl6T2lCdWRXMWlaWElzSUc0NklHNTFiV0psY2l3Z1pteGhaeUE5SUdaaGJITmxLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVoYzNOMWNtVkpibEpoYm1kbEtIQnZjeXdnTUN3Z2RHaHBjeTVmYkdWdVozUm9MQ0FuY0c5ekp5azdYRzVjYmlBZ0lDQnBaaUFvYmlBOVBTQXdLU0J5WlhSMWNtNDdYRzVjYmlBZ0lDQXZMMVJQUkU4NklHOXdkR2x0YVhwbFhHNGdJQ0FnTHk5MGFHVWdiVzl6ZENCd2NtbHRhWFJwZG1VZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRzSUc5d2RHbHRhWHBsSUdsMElHeGhkR1Z5SVZ4dVhHNGdJQ0FnTHk4Z1ltVm5hVzVWY0dSaGRHVW9LVHRjYmlBZ0lDQmpiMjV6ZENCdmJHUnNaVzVuZEdnZ1BTQjBhR2x6TGw5c1pXNW5kR2c3WEc0Z0lDQWdkR2hwY3k1elpYUk1aVzVuZEdnb2RHaHBjeTVmYkdWdVozUm9JQ3NnYmlrN1hHNWNiaUFnSUNBdkwybG1JQ2doWTI5dWRHRnBibk1vSVdac1lXY3BLU0J5WlhSMWNtNDdJQzh2SUc1dmRHaHBibWNnZEc4Z1pHOWNibHh1SUNBZ0lHWnZjaUFvYkdWMElHa2dQU0J2YkdSc1pXNW5kR2dnTFNBeE95QnBJRDQ5SUhCdmN6c2dhUzB0S1Z4dUlDQWdJQ0FnZEdocGN5NXpaWFJDYVhRb2FTQXJJRzRzSUhSb2FYTXVaMlYwUW1sMEtHa3BLVHRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCd2IzTTdJR2tnUENCd2IzTWdLeUJ1T3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TG5ObGRFSnBkQ2hwTENCbWJHRm5LVHRjYmx4dUlDQWdJQzh2SUdWdVpGVndaR0YwWlNncE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVSbGJHVjBaWE1nYmlCaWFYUnpJR0psWjJsdWJtbHVaeUJoZENCd2IzTnBkR2x2YmlCd2IzTXNJSEpsYzJsNmFXNW5JSE5sYkdZZ1lXNWtJSE5vYVdaMGFXNW5JSEpsYldGcGJtbHVaMXh1SUNBdkx5OGdZbWwwY3lCaGNIQnliM0J5YVdGMFpXeDVMbHh1SUNCeVpXMXZkbVZCZENod2IzTTZJRzUxYldKbGNpd2diaUE5SURFcE9pQjJiMmxrSUh0Y2JpQWdJQ0F2THlCMGFHVWdiVzl6ZENCd2NtbHRhWFJwZG1VZ2FXMXdiR1Z0Wlc1MFlYUnBiMjRzSUc5d2RHbHRhWHBsSUdsMElHeGhkR1Z5SVZ4dUlDQWdJR2xtSUNodUlEd2dNQ2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpZ25iaUJqWVc1dWIzUWdZbVVnYm1WbllYUnBkbVVuS1R0Y2JseHVJQ0FnSUhSb2FYTXVZWE56ZFhKbFNXNVNZVzVuWlNod2IzTXNJREFzSUhSb2FYTXVYMnhsYm1kMGFDQXRJRzRzSUNkd2IzTW5LVHRjYmx4dUlDQWdJR2xtSUNoMGFHbHpMbU52Ym5SaGFXNXpLSFJ5ZFdVcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnY0c5ek95QnBJRHdnZEdocGN5NWZiR1Z1WjNSb0lDMGdianNnYVNzcktWeHVJQ0FnSUNBZ0lDQjBhR2x6TG5ObGRFSnBkQ2hwTENCMGFHbHpMbWRsZEVKcGRDaHBJQ3NnYmlrcE8xeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXVjMlYwVEdWdVozUm9LSFJvYVhNdVgyeGxibWQwYUNBdElHNHBPMXh1SUNCOVhHNWNiaUFnY21WdGIzWmxRbmxOWVhOcktHMWhjMnM2SUVKcGRFRnljbUY1TENCbWJHRm5JRDBnZEhKMVpTazZJRUpwZEVGeWNtRjVJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZiR1Z1WjNSb0lDRTlJRzFoYzJzdWJHVnVaM1JvS1Z4dUlDQWdJQ0FnZEdoeWIzY2dibVYzSUVWeWNtOXlLQ2RzWlc1bmRHZ2dJVDBnYldGemF5NXNaVzVuZEdnbktUdGNibHh1SUNBZ0lHbG1JQ2h0WVhOcklEMDlJSFJvYVhNcElIc2dMeThnYm04Z2JtVmxaQ0IwYnlCcGRHVnlZWFJsWEc0Z0lDQWdJQ0IwYUdsekxuTmxkRXhsYm1kMGFDaHRZWE5yTG1OdmRXNTBRbWwwY3lnaFpteGhaeWtwTzF4dUlDQWdJQ0FnZEdocGN5NXpaWFJCYkd3b0lXWnNZV2NwTzF4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQnNaWFFnWkhOMFNXUjRJRDBnTUR0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2MzSmpTV1I0SUQwZ0xURTdJQ2h6Y21OSlpIZ2dQU0J0WVhOckxtWnBibVJPWlhoMEtITnlZMGxrZUN3Z0lXWnNZV2NwS1NBaFBTQXRNVHNwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVjMlYwUm1GemRDaGtjM1JKWkhnckt5d2dkR2hwY3k1blpYUkNhWFFvYzNKalNXUjRLU2s3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMnhsYm1kMGFDQTlJR1J6ZEVsa2VEdGNiaUFnSUNBZ0lIUm9hWE11WDNabGNuTnBiMjRyS3p0Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0J5WlhSMWNtNGdkR2hwY3p0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUYVcxcGJHRnlJSFJ2SUhSb1pTQmJYU0J2Y0dWeVlYUnZjaTVjYmlBZ1oyVjBRbWwwS0hCdmN6b2diblZ0WW1WeUtUb2dZbTl2YkdWaGJpQjdYRzRnSUNBZ2NtVjBkWEp1SUNoMGFHbHpMbDlrWVhSaFcwMWhkR2d1Wm14dmIzSW9jRzl6SUM4Z01IZ3lNQ2xkSUNZZ0tERWdQRHdnS0hCdmN5QW1JREI0TVdZcEtTa2dJVDBnTUR0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJUYVcxcGJHRnlJSFJ2SUhSb1pTQmJYU0J2Y0dWeVlYUnZjaTVjYmlBZ2MyVjBRbWwwS0hCdmN6b2diblZ0WW1WeUxDQmlhWFE2SUdKdmIyeGxZVzRzSUc1dmRHbG1lU0E5SUhSeWRXVXBJSHRjYmlBZ0lDQjBhR2x6TG5ObGRFWmhjM1FvY0c5ekxDQmlhWFFwTzF4dUlDQWdJR2xtSUNodWIzUnBabmtwWEc0Z0lDQWdJQ0IwYUdsekxsOTJaWEp6YVc5dUt5czdYRzRnSUNBZ1pXeHpaVnh1SUNBZ0lDQWdkR2hwY3k1ZmRtVnljMmx2Ymlzck8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUZObGRITWdXMmxkTFhSb0lHSnBkQ0IwYnlCYmRtRnNkV1ZkTENCa2IyVnpJRzV2ZENCamFHVmpheUJpYjNWdVpITXNJR1J2WlhNZ2JtOTBJR2x1WTNKbGJXVnVkQ0IyWlhKemFXOXVYRzRnSUhObGRFWmhjM1FvYVRvZ2JuVnRZbVZ5TENCMllXeDFaVG9nWW05dmJHVmhiaWs2SUhadmFXUWdlMXh1SUNBZ0lHbG1JQ2gyWVd4MVpTbGNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRmJUV0YwYUM1bWJHOXZjaWhwSUM4Z01IZ3lNQ2xkSUh3OUlERWdQRHdnS0drZ0ppQXdlREZtS1R0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcwMWhkR2d1Wm14dmIzSW9hU0F2SURCNE1qQXBYU0FtUFNCK0tERWdQRHdnS0drZ0ppQXdlREZtS1NrN1hHNGdJSDFjYmx4dUlDQnpaWFJVY25WbEtIQnZjem9nYm5WdFltVnlLVG9nZG05cFpDQjdYRzRnSUNBZ2RHaHBjeTVmWkdGMFlWdE5ZWFJvTG1ac2IyOXlLSEJ2Y3lBdklEQjRNakFwWFNCOFBTQXhJRHc4SUNod2IzTWdKaUF3ZURGbUtUdGNiaUFnZlZ4dVhHNGdJSE5sZEVaaGJITmxLSEJ2Y3pvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnZEdocGN5NWZaR0YwWVZ0TllYUm9MbVpzYjI5eUtIQnZjeUF2SURCNE1qQXBYU0FtUFNCK0tERWdQRHdnS0hCdmN5QW1JREI0TVdZcEtUdGNiaUFnZlZ4dVhHNGdJSFJ5ZFdWRGIzVnVkQ2dwT2lCdWRXMWlaWElnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmRXNTBRbWwwY3loMGNuVmxLVHRjYmlBZ2ZWeHVYRzRnSUdaaGJITmxRMjkxYm5Rb0tUb2diblZ0WW1WeUlIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiM1Z1ZEVKcGRITW9abUZzYzJVcE8xeHVJQ0I5WEc1Y2JpQWdMeTh2SUVOdmRXNTBjeUJpYVhSeklHOW1JSFJvWlNCemNHVmphV1pwWldRZ2RtRnNkV1V1WEc0Z0lHTnZkVzUwUW1sMGN5aDJZV3gxWlRvZ1ltOXZiR1ZoYmlrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tIUm9hWE11WDJ4bGJtZDBhQ0E5UFNBd0tTQnlaWFIxY200Z01EdGNibHh1SUNBZ0lHbG1JQ2gwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwVm1WeWMybHZiaUFoUFNCMGFHbHpMbDkyWlhKemFXOXVLU0I3WEc0Z0lDQWdJQ0IwYUdsekxsOXpaV3hsWTNSbFpFTnZkVzUwSUQwZ01EdGNiaUFnSUNBZ0lHTnZibk4wSUd4bGJpQTlJSFJvYVhNdWJHVnVaM1JvU1c1SmJuUnpPMXh1SUNBZ0lDQWdiR1YwSUdrZ1BTQXdPMXh1SUNBZ0lDQWdabTl5SUNnN0lHa2dQQ0JzWlc0Z0xTQXhPeUJwS3lzcElIdGNiaUFnSUNBZ0lDQWdabTl5SUNoc1pYUWdheUE5SUhSb2FYTXVYMlJoZEdGYmFWMDdJR3NnSVQwZ01Ec2dheUErUGo0OUlEZ3BJSHNnTHk5MGIyUnZPaUJqWVhOMElHUmhkR0ZiYVYwZ2RHOGdkV2x1ZEZ4dUlDQWdJQ0FnSUNBZ0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdLejBnUW1sMFFYSnlZWGt1WDI5dVFtbDBRMjkxYm5SYmF5QW1JREI0Wm1aZE8xeHVJQ0FnSUNBZ0lDQjlYRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJQzh2SUZSb1pTQnNZWE4wSUdsdWRDNWNiaUFnSUNBZ0lHeGxkQ0JySUQwZ2RHaHBjeTVmWkdGMFlWdHBYVHRjYmlBZ0lDQWdJR052Ym5OMElISmxiV0ZwYm1sdVowSnBkSE1nUFNCMGFHbHpMbDlzWlc1bmRHZ2dKaUF3ZURGbU8xeHVJQ0FnSUNBZ2FXWWdLSEpsYldGcGJtbHVaMEpwZEhNZ0lUMGdNQ2tnTHlvZ2FXWWdjbVZ0WVdsdWFXNW5RbWwwY3lBOVBTQXdMQ0IwYUdVZ2JHRnpkQ0JwYm5RZ2FYTWdablZzYkhrZ2RYTmxaQ0JoYm1RZ1FVeE1JR0pwZEhNZ2MyaHZkV3hrSUdKbElHeGxablFnWVhNZ2FYTWdLaTljYmlBZ0lDQWdJQ0FnYXlBbVBTQitLQ2cwTWprME9UWTNNamsxS1NBOFBDQnlaVzFoYVc1cGJtZENhWFJ6S1R0Y2JseHVJQ0FnSUNBZ1ptOXlJQ2c3SUdzZ0lUMGdNRHNnYXlBK1BqNDlJRGdwWEc0Z0lDQWdJQ0FnSUhSb2FYTXVYM05sYkdWamRHVmtRMjkxYm5RZ0t6MGdRbWwwUVhKeVlYa3VYMjl1UW1sMFEyOTFiblJiYXlBbUlEQjRabVpkTzF4dVhHNGdJQ0FnSUNCMGFHbHpMbDl6Wld4bFkzUmxaRU52ZFc1MFZtVnljMmx2YmlBOUlIUm9hWE11WDNabGNuTnBiMjQ3WEc0Z0lDQWdmVnh1WEc0Z0lDQWdjbVYwZFhKdUlDaDJZV3gxWlNBL0lIUm9hWE11WDNObGJHVmpkR1ZrUTI5MWJuUWdPaUIwYUdsekxsOXNaVzVuZEdnZ0xTQjBhR2x6TGw5elpXeGxZM1JsWkVOdmRXNTBLVHRjYmlBZ2ZWeHVYRzRnSUM4dkx5QlNaWFIxY201eklHRWdiblZ0WW1WeUlHOW1JSE5sZENCaWFYUnpJSGRvWlhKbElHRnNjMjhnVzJOb1pXTnJYU0JwY3lCMGNuVmxYRzRnSUdOdmRXNTBWMmhsY21Vb1kyaGxZMnM2SUVaMWJtTjBhVzl1S1RvZ2JuVnRZbVZ5SUh0Y2JpQWdJQ0JzWlhRZ2NtVnpkV3gwSUQwZ01EdGNiaUFnSUNCcFppQW9kR2hwY3k1MGNuVmxRMjkxYm5Rb0tTQTlQU0IwYUdsekxsOXNaVzVuZEdncElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHa2dQU0F3T3lCcElEd2dkR2hwY3k1ZmJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQWdJSEpsYzNWc2RDQXJQU0JqYUdWamF5aHBLU0EvSURFZ09pQXdPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdMVEU3SUNocElEMGdkR2hwY3k1bWFXNWtUbVY0ZENocExDQjBjblZsS1NrZ0lUMGdMVEU3S1Z4dUlDQWdJQ0FnSUNCeVpYTjFiSFFnS3owZ1kyaGxZMnNvYVNrZ1B5QXhJRG9nTUR0Y2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlISmxjM1ZzZER0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJRWlhKbWIzSnRjeUJpYVhRZ1hDSmhibVJjSWlCaGJtUWdZMjkxYm5SeklHSnBkSE1nYjJZZ2RHaGxJSE53WldOcFptbGxaQ0IyWVd4MVpTd2dkMmwwYUc5MWRDQmlhWFJ6WlhRZ2JXOWthV1pwWTJGMGFXOXVMbHh1SUNCaGJtUlhhWFJvUTI5MWJuUkNhWFJ6S0hObFkyOXVaRG9nUW1sMFFYSnlZWGtzSUhaaGJIVmxPaUJpYjI5c1pXRnVLVG9nYm5WdFltVnlJSHRjYmlBZ0lDQnBaaUFvZEdocGN5NWZiR1Z1WjNSb0lEMDlJREFwSUhKbGRIVnliaUF3TzF4dVhHNGdJQ0FnYkdWMElHTnZkVzUwSUQwZ01EdGNiaUFnSUNCamIyNXpkQ0JzWlc0Z1BTQjBhR2x6TG14bGJtZDBhRWx1U1c1MGN6dGNiaUFnSUNCc1pYUWdhU0E5SURBN1hHNGdJQ0FnWm05eUlDZzdJR2tnUENCc1pXNGdMU0F4T3lCcEt5c3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR3NnUFNCMGFHbHpMbDlrWVhSaFcybGRJQ1lnYzJWamIyNWtMbDlrWVhSaFcybGRPeUJySUNFOUlEQTdJR3NnUGo0K1BTQTRLVnh1SUNBZ0lDQWdJQ0JqYjNWdWRDQXJQU0JDYVhSQmNuSmhlUzVmYjI1Q2FYUkRiM1Z1ZEZ0cklDWWdNSGhtWmwwN1hHNGdJQ0FnZlZ4dVhHNGdJQ0FnTHk4Z1ZHaGxJR3hoYzNRZ2FXNTBMbHh1SUNBZ0lHeGxkQ0JySUQwZ2RHaHBjeTVmWkdGMFlWdHBYU0FtSUhObFkyOXVaQzVmWkdGMFlWdHBYVHRjYmlBZ0lDQmpiMjV6ZENCeVpXMWhhVzVwYm1kQ2FYUnpJRDBnZEdocGN5NWZiR1Z1WjNSb0lDWWdNSGd4Wmp0Y2JpQWdJQ0JwWmlBb2NtVnRZV2x1YVc1blFtbDBjeUFoUFNBd0tWeHVJQ0FnSUNBZ2F5QW1QU0IrS0NnME1qazBPVFkzTWprMUtTQThQQ0J5WlcxaGFXNXBibWRDYVhSektUdGNiaUFnSUNCbWIzSWdLRHNnYXlBaFBTQXdPeUJySUQ0K1BqMGdPQ2xjYmlBZ0lDQWdJR052ZFc1MElDczlJRUpwZEVGeWNtRjVMbDl2YmtKcGRFTnZkVzUwVzJzZ0ppQXdlR1ptWFR0Y2JseHVJQ0FnSUhKbGRIVnliaUFvZG1Gc2RXVWdQeUJqYjNWdWRDQTZJSFJvYVhNdVgyeGxibWQwYUNBdElHTnZkVzUwS1R0Y2JpQWdmVnh1WEc0Z0lHTnNaV0Z5S0NrNklIWnZhV1FnZTF4dUlDQWdJSFJvYVhNdWMyVjBUR1Z1WjNSb0tEQXBPMXh1SUNCOVhHNWNiaUFnWTI5dWRHRnBibk1vZG1Gc2RXVTZJR0p2YjJ4bFlXNHBPaUJpYjI5c1pXRnVJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVtYVc1a1RtVjRkQ2d0TVN3Z2RtRnNkV1VwSUQ0OUlEQTdYRzRnSUgxY2JseHVJQ0JuWlhRZ1lXeHNWSEoxWlNncElIdGNiaUFnSUNCeVpYUjFjbTRnZEdocGN5NWpiM1Z1ZEVKcGRITW9kSEoxWlNrZ1BUMGdkR2hwY3k1ZmJHVnVaM1JvTzF4dUlDQjlYRzVjYmlBZ1oyVjBJR0ZzYkVaaGJITmxLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TG1OdmRXNTBRbWwwY3lobVlXeHpaU2tnUFQwZ2RHaHBjeTVmYkdWdVozUm9PMXh1SUNCOVhHNWNiaUFnWjJWMElHRnVlVlJ5ZFdVb0tTQjdYRzRnSUNBZ2NtVjBkWEp1SUhSb2FYTXVZMjkxYm5SQ2FYUnpLSFJ5ZFdVcElENGdNRHRjYmlBZ2ZWeHVYRzRnSUdkbGRDQmhibmxHWVd4elpTZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z2RHaHBjeTVqYjNWdWRFSnBkSE1vWm1Gc2MyVXBJRDRnTUR0Y2JpQWdmVnh1WEc0Z0lDOHZMeUJTWlhSMWNtNXpJSFJvWlNCd2IzTnBkR2x2YmlCdlppQjBhR1VnYm1WNGRDQmlhWFFnYjJZZ2RHaGxJSE53WldOcFptbGxaQ0IyWVd4MVpTd2djM1JoY25ScGJtY2dabkp2YlNCMGFHVWdjM0JsWTJsbWFXVmtJSEJ2YzJsMGFXOXVMbHh1SUNBdkx5OGdVbVYwZFhKdWN5QXRNU3dnYVdZZ2RHaGxjbVVnWVhKbElHNXZJSE4xWTJnZ1ltbDBjeTVjYmlBZ1ptbHVaRTVsZUhRb2FXNWtaWGc2SUc1MWJXSmxjaXdnZG1Gc2RXVWdQU0IwY25WbEtUb2diblZ0WW1WeUlIdGNiaUFnSUNCMGFHbHpMbUZ6YzNWeVpVbHVVbUZ1WjJVb2FXNWtaWGdzSUMweExDQjBhR2x6TGw5c1pXNW5kR2dzSUNkcGJtUmxlQ2NwTzF4dVhHNGdJQ0FnYVdZZ0tHbHVaR1Y0SUQ0OUlIUm9hWE11WDJ4bGJtZDBhQ0F0SURFcElISmxkSFZ5YmlBdE1UdGNiaUFnSUNCcGJtUmxlQ0E5SUdsdVpHVjRJRHdnTUNBL0lEQWdPaUJwYm1SbGVDQXJJREU3SUM4dklITnJhWEFnYzNSaGNuUmNiaUFnSUNCc1pYUWdkVzUxYzJWa1FtbDBjeUE5SUdsdVpHVjRJQ1lnTUhneFpqdGNiaUFnSUNCamIyNXpkQ0J1ZFcxSmJuUnpJRDBnZEdocGN5NXNaVzVuZEdoSmJrbHVkSE03WEc1Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ1RXRjBhQzVtYkc5dmNpaHBibVJsZUNBdklETXlLVHNnYVNBOElHNTFiVWx1ZEhNN0lHa3JLeWtnZTF4dUlDQWdJQ0FnYkdWMElHc2dQU0FvZG1Gc2RXVWdQeUIwYUdsekxsOWtZWFJoVzJsZElEb2dmblJvYVhNdVgyUmhkR0ZiYVYwcE95QXZMeUIxYVc1MElHTmhjM1JjYmlBZ0lDQWdJR2xtSUNoMWJuVnpaV1JDYVhSeklDRTlJREFwSUh0Y2JpQWdJQ0FnSUNBZ2F5QW1QU0FvS0RCNFptWm1abVptWm1ZZ1BEd2dkVzUxYzJWa1FtbDBjeWtnSmlBd2VHWm1abVptWm1abUtUdGNiaUFnSUNBZ0lDQWdkVzUxYzJWa1FtbDBjeUE5SURBN1hHNGdJQ0FnSUNCOUlHVnNjMlVnYVdZZ0tDRjJZV3gxWlNBbUppQnJJRDA5SUMwME1qazBPVFkzTWprMktTQXZLaUJzYjI5cmFXNW5JR1p2Y2lCbVlXeHpaU3dnWVd4c0lHSnBkSE1nWVhKbElITmxkQ0FxTDN0Y2JpQWdJQ0FnSUNBZ1kyOXVkR2x1ZFdVN1hHNGdJQ0FnSUNCOVhHNWNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0F3T3lCcklDRTlJREE3SUdvZ0t6MGdPQ3dnYXlBK1BqNDlJRGdwSUh0Y2JpQWdJQ0FnSUNBZ1kyOXVjM1FnY0NBOUlFSnBkRUZ5Y21GNUxsOW1hWEp6ZEU5dVFtbDBXMnNnSmlBd2VHWm1YVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQWdQajBnTUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR2x1WkdWNElEMGdjQ0FySUNocElDb2dNeklwSUNzZ2FqdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FXNWtaWGdnUGowZ2RHaHBjeTVmYkdWdVozUm9LU0J5WlhSMWNtNGdMVEU3WEc0Z0lDQWdJQ0FnSUNBZ2NtVjBkWEp1SUdsdVpHVjRPMXh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlBdE1UdGNiaUFnZlZ4dVhHNGdJQzh2THlCR2FXNWtjeUJ3Y21WMmFXOTFjeUJpYVhRZ2IyWWdkR2hsSUhOd1pXTnBabWxsWkNCMllXeDFaU0JwYmlCMGFHVWdZbWwwYzJWMExseHVJQ0JtYVc1a1VISmxkaWhwYm1SbGVEb2diblZ0WW1WeUxDQjJZV3gxWlNBOUlIUnlkV1VwT2lCdWRXMWlaWElnZTF4dUlDQWdJR2xtSUNocGJtUmxlQ0E5UFNBd0tTQnlaWFIxY200Z0xURTdYRzRnSUNBZ2RHaHBjeTVoYzNOMWNtVkpibEpoYm1kbEtHbHVaR1Y0TENBdE1Td2dkR2hwY3k1ZmJHVnVaM1JvTENBbmFXNWtaWGduS1R0Y2JseHVJQ0FnSUdsdVpHVjRJRDBnYVc1a1pYZ2dQQ0F3SUQ4Z2RHaHBjeTVmYkdWdVozUm9JQzBnTVNBNklHbHVaR1Y0SUMwZ01Uc2dMeThnYzJ0cGNDQnpkR0Z5ZEZ4dVhHNGdJQ0FnWTI5dWMzUWdiR0Z6ZEVsdWRFbGtlQ0E5SUUxaGRHZ3VabXh2YjNJb2FXNWtaWGdnTHlBd2VESXdLVHRjYmlBZ0lDQnNaWFFnY21WdFlXbHVhVzVuUW1sMGN5QTlJQ2hwYm1SbGVDQXJJREVwSUNZZ01IZ3haanRjYmx4dUlDQWdJR1p2Y2lBb2JHVjBJR2tnUFNCc1lYTjBTVzUwU1dSNE95QnBJRDQ5SURBN0lHa3RMU2tnZTF4dUlDQWdJQ0FnYkdWMElHc2dQU0FvZG1Gc2RXVWdQeUIwYUdsekxsOWtZWFJoVzJsZElEb2dmblJvYVhNdVgyUmhkR0ZiYVYwcE95QXZMeUJqWVhOMFhHNGdJQ0FnSUNCcFppQW9jbVZ0WVdsdWFXNW5RbWwwY3lBaFBTQXdLU0I3WEc0Z0lDQWdJQ0FnSUdzZ0pqMGdmaWdvTkRJNU5EazJOekk1TlNrZ1BEd2djbVZ0WVdsdWFXNW5RbWwwY3lrN1hHNGdJQ0FnSUNBZ0lISmxiV0ZwYm1sdVowSnBkSE1nUFNBd08xeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FpQTlJREkwT3lCcklDRTlJREE3SUdvZ0xUMGdPQ3dnYXlBOFBEMGdPQ2tnZTF4dUlDQWdJQ0FnSUNCamIyNXpkQ0J3SUQwZ1FtbDBRWEp5WVhrdVgyeGhjM1JQYmtKcGRGdHJJRDQrUGlBd2VERTRYVHRjYmlBZ0lDQWdJQ0FnYVdZZ0tIQWdQajBnTUNsY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z2NDQXJJQ2hwSUNvZ016SXBJQ3NnYWp0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlDMHhPMXh1SUNCOVhHNTlYRzRpWFgwPSIsImltcG9ydCAqIGFzIHVtaiBmcm9tICd1bWFwLWpzJztcbmltcG9ydCB7IFRTTkUgfSBmcm9tICdAa2Vja2VsdC90c25lJztcbmltcG9ydCB7IFZlY3RvciwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy90eXBlLWRlY2xhcmF0aW9ucyc7XG5pbXBvcnQgeyB0cmFuc3Bvc2VNYXRyaXgsIGFzc2VydCwgY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeCwgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy92ZWN0b3Itb3BlcmF0aW9ucyc7XG5pbXBvcnQgeyBTUEVCYXNlLCBQU1BFQmFzZSwgT3JpZ2luYWxTUEUgfSBmcm9tICcuL3NwZSc7XG5pbXBvcnQgeyBNZWFzdXJlLCBBdmFpbGFibGVNZXRyaWNzLCBpc0JpdEFycmF5TWV0cmljIH0gZnJvbSAnLi90eXBlZC1tZXRyaWNzL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IEJpdEFycmF5IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheSc7XG5leHBvcnQgdmFyIERpbVJlZHVjdGlvbk1ldGhvZHM7XG4oZnVuY3Rpb24gKERpbVJlZHVjdGlvbk1ldGhvZHMpIHtcbiAgICBEaW1SZWR1Y3Rpb25NZXRob2RzW1wiVU1BUFwiXSA9IFwiVU1BUFwiO1xuICAgIERpbVJlZHVjdGlvbk1ldGhvZHNbXCJUX1NORVwiXSA9IFwidC1TTkVcIjtcbn0pKERpbVJlZHVjdGlvbk1ldGhvZHMgfHwgKERpbVJlZHVjdGlvbk1ldGhvZHMgPSB7fSkpO1xuLyoqIFVtYXAgdXNlcyBwcmVjYWxjdWxhdGVkIGRpc3RhbmNlIG1hdHJpeCB0byBzYXZlIHRpbWUuIHRob3VnaCBmb3IgdG9vIG11Y2ggZGF0YSwgbWVtb3J5IGJlY29tZXMgY29uc3RyYWludC5cbiAqIGlmIHdlIGhhdmUgMTAwIDAwMCByb3dzLCBkaXN0YW5jZSBtYXRyaXggd2lsbCB0YWtlIH4xMGdiIG9mIG1lbW9yeSBhbmQgcHJvYmFibHkgb3ZlcmZsb3cuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVhfRElTVEFOQ0VfTUFUUklYX1JPV1MgPSAxMDAwMDtcbmV4cG9ydCBjbGFzcyBVTUFQT3B0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVhcm5pbmdSYXRlID0geyB1aU5hbWU6ICdMZWFyaW5pZyByYXRlJywgdmFsdWU6IDEsIHRvb2x0aXA6ICdUaGUgaW5pdGlhbCBsZWFybmluZyByYXRlIGZvciB0aGUgZW1iZWRkaW5nIG9wdGltaXphdGlvbicgfTtcbiAgICAgICAgdGhpcy5uQ29tcG9uZW50cyA9IHsgdWlOYW1lOiAnQ29tcG9uZW50cycsIHZhbHVlOiAyLCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBjb21wb25lbnRzIChkaW1lbnNpb25zKSB0byBwcm9qZWN0IHRoZSBkYXRhIHRvJyB9O1xuICAgICAgICB0aGlzLm5FcG9jaHMgPSB7IHVpTmFtZTogJ0Vwb2NocycsIHZhbHVlOiAwLCB0b29sdGlwOiAnVGhlIG51bWJlciBvZiBlcG9jaHMgdG8gb3B0aW1pemUgZW1iZWRkaW5ncyB2aWEgU0dELiBDb21wdXRlZCBhdXRvbWF0aWNhbGx5IGlmIHNldCB0byAwJyB9O1xuICAgICAgICB0aGlzLm5OZWlnaGJvcnMgPSB7IHVpTmFtZTogJ05laWdoYm9ycycsIHZhbHVlOiAxNSwgdG9vbHRpcDogJ1RoZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnMgdG8gY29uc3RydWN0IHRoZSBmdXp6eSBtYW5pZm9sZCcgfTtcbiAgICAgICAgdGhpcy5zcHJlYWQgPSB7IHVpTmFtZTogJ1NwcmVhZCcsIHZhbHVlOiAxLCB0b29sdGlwOiAnVGhlIGVmZmVjdGl2ZSBzY2FsZSBvZiBlbWJlZGRlZCBwb2ludHMsIHVzZWQgd2l0aCBtaW4gZGlzdGFuY2UgdG8gY29udHJvbCB0aGUgY2x1bXBlZC9kaXNwZXJzZWQgbmF0dXJlIG9mIHRoZSBlbWJlZGRpbmcnIH07XG4gICAgICAgIHRoaXMubWluRGlzdCA9IHsgdWlOYW1lOiAnTWluIGRpc3RhbmNlJywgdmFsdWU6IDAuMSwgdG9vbHRpcDogJ1RoZSBlZmZlY3RpdmUgbWluaW11bSBkaXN0YW5jZSBiZXR3ZWVuIGVtYmVkZGVkIHBvaW50cywgdXNlZCB3aXRoIHNwcmVhZCB0byBjb250cm9sIHRoZSBjbHVtcGVkL2Rpc3BlcnNlZCBuYXR1cmUgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICB9XG4gICAgO1xufVxuZXhwb3J0IGNsYXNzIFRTTkVPcHRpb25zIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5lcHNpbG9uID0geyB1aU5hbWU6ICdFcHNpbG9uJywgdmFsdWU6IDEwLCB0b29sdGlwOiAnRXBzaWxvbiBpcyBsZWFybmluZyByYXRlJyB9O1xuICAgICAgICB0aGlzLnBlcnBsZXhpdHkgPSB7IHVpTmFtZTogJ1BlcnBsZXhpdHknLCB2YWx1ZTogMzAsIHRvb2x0aXA6ICdSb3VnaGx5IGhvdyBtYW55IG5laWdoYm9ycyBlYWNoIHBvaW50IGluZmx1ZW5jZXMnIH07XG4gICAgICAgIHRoaXMuZGltID0geyB1aU5hbWU6ICdEaW1lbnNpb25hbGl0eScsIHZhbHVlOiAyLCB0b29sdGlwOiAnRGltZW5zaW9uYWxpdHkgb2YgdGhlIGVtYmVkZGluZycgfTtcbiAgICB9XG4gICAgO1xufVxuLyoqIEFic3RyYWN0IGRpbWVuc2lvbmFsaXR5IHJlZHVjZXIgKi9cbmNsYXNzIFJlZHVjZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5kYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgIH1cbn1cbi8qKiB0LVNORSBkaW1lbnNpb25hbGl0eSByZWR1Y3Rpb24uICovXG5jbGFzcyBUU05FUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVFNORVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFRTTkVSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgVFNORShvcHRpb25zKTtcbiAgICAgICAgdGhpcy5pdGVyYXRpb25zID0gKF9hID0gb3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLml0ZXJhdGlvbnMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDEwMDtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0LVNORSBtZXRob2QuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKCkge1xuICAgICAgICBjb25zdCBkaXN0YW5jZSA9IGNhbGNOb3JtYWxpemVkRGlzdGFuY2VNYXRyaXgodGhpcy5kYXRhLCB0aGlzLmRpc3RhbmNlRm4pO1xuICAgICAgICB0aGlzLnJlZHVjZXIuaW5pdERhdGFEaXN0KGRpc3RhbmNlKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnM7ICsraSkge1xuICAgICAgICAgICAgdGhpcy5yZWR1Y2VyLnN0ZXAoKTsgLy8gZXZlcnkgdGltZSB5b3UgY2FsbCB0aGlzLCBzb2x1dGlvbiBnZXRzIGJldHRlclxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRpc3RhbmNlOiBkaXN0YW5jZSwgZW1iZWRkaW5nOiB0aGlzLnJlZHVjZXIuZ2V0U29sdXRpb24oKSB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBVTUFQIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgVU1BUFJlZHVjZXJcbiAqIEBleHRlbmRzIHtSZWR1Y2VyfVxuICovXG5jbGFzcyBVTUFQUmVkdWNlciBleHRlbmRzIFJlZHVjZXIge1xuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgVU1BUFJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXG4gICAgICovXG4gICAgY29uc3RydWN0b3Iob3B0aW9ucykge1xuICAgICAgICBzdXBlcihvcHRpb25zKTtcbiAgICAgICAgYXNzZXJ0KCdkaXN0YW5jZUZuJyBpbiBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gb3B0aW9ucy5kaXN0YW5jZUZuO1xuICAgICAgICB0aGlzLnZlY3RvcnMgPSBuZXcgQXJyYXkodGhpcy5kYXRhLmxlbmd0aCkuZmlsbCgwKS5tYXAoKF8sIGkpID0+IFtpXSk7XG4gICAgICAgIHRoaXMudXNpbmdEaXN0YW5jZU1hdHJpeCA9ICEoIW9wdGlvbnMucHJlQ2FsY3VsYXRlRGlzdGFuY2VNYXRyaXggJiYgdGhpcy5kYXRhLmxlbmd0aCA+IE1BWF9ESVNUQU5DRV9NQVRSSVhfUk9XUyk7XG4gICAgICAgIGlmICghdGhpcy51c2luZ0Rpc3RhbmNlTWF0cml4KSB7XG4gICAgICAgICAgICBvcHRpb25zLmRpc3RhbmNlRm4gPSB0aGlzLl9lbmNvZGVkRGlzdGFuY2UuYmluZCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGlzdGFuY2VNYXRyaXggPSBBcnJheSh0aGlzLmRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoKSA9PiBuZXcgRmxvYXQzMkFycmF5KHRoaXMuZGF0YS5sZW5ndGgpLmZpbGwoMCkpO1xuICAgICAgICAgICAgb3B0aW9ucy5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZERpc3RhbmNlTWF0cml4LmJpbmQodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZGF0YS5sZW5ndGggPCAxNSlcbiAgICAgICAgICAgIG9wdGlvbnMubk5laWdoYm9ycyA9IHRoaXMuZGF0YS5sZW5ndGggLSAxO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgdW1qLlVNQVAob3B0aW9ucyk7XG4gICAgICAgIC8vIHRoaXMucmVkdWNlci5kaXN0YW5jZUZuID0gdGhpcy5fZW5jb2RlZERpc3RhbmNlLmJpbmQodGhpcyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEN1c3RvbSBkaXN0YW5jZSB3cmFwcGVyIHRvIGhhdmUgbnVtZXJpYyBpbnB1dHMgaW5zdGVhZCBvZiBzdHJpbmcgb25lcy5cbiAgICAgKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBhIFRoZSBmaXJzdCBpdGVtLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IGIgVGhlIGZpcnN0IGl0ZW0uXG4gICAgICogQHJldHVybiB7bnVtYmVyfSBEaXN0YW5jZSBtZXRyaWMuXG4gICAgICogQG1lbWJlcm9mIFVNQVBSZWR1Y2VyXG4gICAgICovXG4gICAgX2VuY29kZWREaXN0YW5jZU1hdHJpeChhLCBiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3RhbmNlTWF0cml4W2FbMF1dW2JbMF1dO1xuICAgIH1cbiAgICBfZW5jb2RlZERpc3RhbmNlKGEsIGIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzdGFuY2VGbih0aGlzLmRhdGFbYVswXV0sIHRoaXMuZGF0YVtiWzBdXSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVuY29kZXMgdGhlIGlucHV0IGRhdGEgYXMgYSB2ZWN0b3Igb2YgaW5kaWNlcy5cbiAgICAgKlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKiBAbWVtYmVyb2YgVU1BUFJlZHVjZXJcbiAgICAgKi9cbiAgICBfZW5jb2RlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgdGhpcy52ZWN0b3JzLnB1c2goW2ldKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIFVNQVAgbWV0aG9kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKCkge1xuICAgICAgICBpZiAodGhpcy51c2luZ0Rpc3RhbmNlTWF0cml4KVxuICAgICAgICAgICAgdGhpcy5kaXN0YW5jZU1hdHJpeCA9IGNhbGNOb3JtYWxpemVkRGlzdGFuY2VNYXRyaXgodGhpcy5kYXRhLCB0aGlzLmRpc3RhbmNlRm4pO1xuICAgICAgICBjb25zdCBlbWJlZGRpbmcgPSB0aGlzLnJlZHVjZXIuZml0KHRoaXMudmVjdG9ycyk7XG4gICAgICAgIGZ1bmN0aW9uIGFycmF5Q2FzdDJDb29yZGluYXRlcyhkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEFycmF5KGRhdGEubGVuZ3RoKS5maWxsKDApLm1hcCgoXywgaSkgPT4gKFZlY3Rvci5mcm9tKGRhdGFbaV0pKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oeyBlbWJlZGRpbmc6IGFycmF5Q2FzdDJDb29yZGluYXRlcyhlbWJlZGRpbmcpIH0sICh0aGlzLmRpc3RhbmNlTWF0cml4ID8geyBkaXN0YW5jZTogdGhpcy5kaXN0YW5jZU1hdHJpeCB9IDoge30pKTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFNQRVJlZHVjZXIgZXh0ZW5kcyBSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgU1BFQmFzZShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbi8qKlxuICogSW1wbGVtZW50cyBtb2RpZmllZCBTUEUgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uLlxuICpcbiAqIEBjbGFzcyBQU1BFUmVkdWNlclxuICogQGV4dGVuZHMge1JlZHVjZXJ9XG4gKi9cbmNsYXNzIFBTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBQU1BFUmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge09wdGlvbnN9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgKiBAbWVtYmVyb2YgUFNQRVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zKSB7XG4gICAgICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgICAgICB0aGlzLnJlZHVjZXIgPSBuZXcgUFNQRUJhc2Uob3B0aW9ucyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEVtYmVkcyB0aGUgZGF0YSBnaXZlbiBpbnRvIHRoZSB0d28tZGltZW5zaW9uYWwgc3BhY2UgdXNpbmcgdGhlIG1vZGlmaWVkIFNQRSBtZXRob2QuXG4gICAgICogQHJldHVybiB7YW55fSBDYXJ0ZXNpYW4gY29vcmRpbmF0ZSBvZiB0aGlzIGVtYmVkZGluZyBhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUuXG4gICAgICovXG4gICAgdHJhbnNmb3JtKCkge1xuICAgICAgICBjb25zdCBlbWIgPSB0aGlzLnJlZHVjZXIuZW1iZWQodGhpcy5kYXRhKTtcbiAgICAgICAgcmV0dXJuIHsgZGlzdGFuY2U6IHRoaXMucmVkdWNlci5kaXN0YW5jZSwgZW1iZWRkaW5nOiBlbWIgfTtcbiAgICB9XG59XG4vKipcbiAqIEltcGxlbWVudHMgb3JpZ2luYWwgU1BFIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbi5cbiAqXG4gKiBAY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyXG4gKiBAZXh0ZW5kcyB7UmVkdWNlcn1cbiAqL1xuY2xhc3MgT3JpZ2luYWxTUEVSZWR1Y2VyIGV4dGVuZHMgUmVkdWNlciB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBPcmlnaW5hbFNQRVJlZHVjZXIuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBvcHRpb25zIE9wdGlvbnMgdG8gcGFzcyB0byB0aGUgY29uc3RydWN0b3IuXG4gICAgICogQG1lbWJlcm9mIE9yaWdpbmFsU1BFUmVkdWNlclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMpIHtcbiAgICAgICAgc3VwZXIob3B0aW9ucyk7XG4gICAgICAgIHRoaXMucmVkdWNlciA9IG5ldyBPcmlnaW5hbFNQRShvcHRpb25zKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogRW1iZWRzIHRoZSBkYXRhIGdpdmVuIGludG8gdGhlIHR3by1kaW1lbnNpb25hbCBzcGFjZSB1c2luZyB0aGUgb3JpZ2luYWwgU1BFIG1ldGhvZC5cbiAgICAgKiBAcmV0dXJuIHthbnl9IENhcnRlc2lhbiBjb29yZGluYXRlIG9mIHRoaXMgZW1iZWRkaW5nIGFuZCBkaXN0YW5jZSBtYXRyaXggd2hlcmUgYXBwbGljYWJsZS5cbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0oKSB7XG4gICAgICAgIGNvbnN0IGVtYiA9IHRoaXMucmVkdWNlci5lbWJlZCh0aGlzLmRhdGEpO1xuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogdGhpcy5yZWR1Y2VyLmRpc3RhbmNlLCBlbWJlZGRpbmc6IGVtYiB9O1xuICAgIH1cbn1cbmNvbnN0IEF2YWlsYWJsZVJlZHVjZXJzID0ge1xuICAgICdVTUFQJzogVU1BUFJlZHVjZXIsXG4gICAgJ3QtU05FJzogVFNORVJlZHVjZXIsXG4gICAgJ1NQRSc6IFNQRVJlZHVjZXIsXG4gICAgJ3BTUEUnOiBQU1BFUmVkdWNlcixcbiAgICAnT3JpZ2luYWxTUEUnOiBPcmlnaW5hbFNQRVJlZHVjZXIsXG59O1xuLyoqXG4gKiBVbmlmaWVkIGNsYXNzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgZGltZW5zaW9uYWxpdHkgcmVkdWN0aW9uIG1ldGhvZHMuXG4gKlxuICogQGV4cG9ydFxuICogQGNsYXNzIERpbWVuc2lvbmFsaXR5UmVkdWNlclxuICovXG5leHBvcnQgY2xhc3MgRGltZW5zaW9uYWxpdHlSZWR1Y2VyIHtcbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIERpbWVuc2lvbmFsaXR5UmVkdWNlci5cbiAgICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhIFZlY3RvcnMgdG8gZW1iZWQuXG4gICAgICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kIHRvIGJlIGFwcGxpZWRcbiAgICAgKiBAcGFyYW0ge0tub3duTWV0cmljc30gbWV0cmljIERpc3RhbmNlIG1ldHJpYyB0byBiZSBjb21wdXRlZCBiZXR3ZWVuIGVhY2ggb2YgdGhlIHZlY3RvcnMuXG4gICAgICogQHBhcmFtIHtPcHRpb25zfSBbb3B0aW9uc10gT3B0aW9ucyB0byBwYXNzIHRvIHRoZSBpbXBsZW1lbnRpbmcgZW1iZWRkZXJzLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhLCBtZXRob2QsIG1ldHJpYywgb3B0aW9ucykge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IG1lYXN1cmUgPSBuZXcgTWVhc3VyZShtZXRyaWMpLmdldE1lYXN1cmUoKTtcbiAgICAgICAgbGV0IHNwZWNPcHRpb25zID0ge307XG4gICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKG1ldHJpYykpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBuZXcgQml0QXJyYXkoZGF0YVtpXS5fZGF0YSwgZGF0YVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kID09ICdVTUFQJykge1xuICAgICAgICAgICAgc3BlY09wdGlvbnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZUZuOiBtZWFzdXJlIH0pLCB7IG5FcG9jaHM6IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jeWNsZXMgfSksIG9wdGlvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKG1ldGhvZCA9PSAndC1TTkUnKSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHsgZGF0YTogZGF0YSB9LCB7IGRpc3RhbmNlOiBtZWFzdXJlIH0pLCB7IGl0ZXJhdGlvbnM6IChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jeWNsZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IHVuZGVmaW5lZCB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAobWV0aG9kID09ICdTUEUnKSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZTogbWVhc3VyZSB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGVjT3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7IGRhdGE6IGRhdGEgfSwgeyBkaXN0YW5jZTogbWVhc3VyZSB9KSwgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZWR1Y2VyID0gbmV3IEF2YWlsYWJsZVJlZHVjZXJzW21ldGhvZF0oc3BlY09wdGlvbnMpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBFbWJlZHMgdGhlIGRhdGEgZ2l2ZW4gaW50byB0aGUgdHdvLWRpbWVuc2lvbmFsIHNwYWNlIHVzaW5nIHRoZSBjaG9zZW4gbWV0aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0cmFuc3Bvc2UgV2hldGhlciB0byB0cmFuc2Zvcm0gY29vcmRpbmF0ZXMgdG8gaGF2ZSBjb2x1bW5zLWZpcnN0IG9yaWVudGF0aW9uLlxuICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW1iZWRkaW5nIG1ldGhvZCB3YXMgbm90IGZvdW5kLlxuICAgICAqIEByZXR1cm4ge2FueX0gQ2FydGVzaWFuIGNvb3JkaW5hdGUgb2YgdGhpcyBlbWJlZGRpbmcgYW5kIGRpc3RhbmNlIG1hdHJpeCB3aGVyZSBhcHBsaWNhYmxlLlxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICB0cmFuc2Zvcm0odHJhbnNwb3NlID0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMucmVkdWNlciA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciB3YXMgbm90IGRlZmluZWQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHsgZW1iZWRkaW5nLCBkaXN0YW5jZSB9ID0gdGhpcy5yZWR1Y2VyLnRyYW5zZm9ybSgpO1xuICAgICAgICBpZiAodHJhbnNwb3NlKSB7XG4gICAgICAgICAgICBlbWJlZGRpbmcgPSB0cmFuc3Bvc2VNYXRyaXgoZW1iZWRkaW5nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBkaXN0YW5jZTogZGlzdGFuY2UsIGVtYmVkZGluZzogZW1iZWRkaW5nIH07XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbWV0cmljcyBhdmFpbGFibGUgYnkgdHlwZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QXZhaWxhYmxlRGF0YVR5cGVzfSB0eXBlTmFtZSB0eXBlIG5hbWVcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gTWV0cmljIG5hbWVzIHdoaWNoIGV4cGVjdHMgdGhlIGdpdmVuIGRhdGEgdHlwZVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgYXZhaWxhYmxlTWV0cmljc0J5VHlwZSh0eXBlTmFtZSkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljc1t0eXBlTmFtZV0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGRpbWVuc2lvbmFsaXR5IHJlZHVjdGlvbiBtZXRob2RzIGF2YWlsYWJsZS5cbiAgICAgKlxuICAgICAqIEByZWFkb25seVxuICAgICAqIEBtZW1iZXJvZiBEaW1lbnNpb25hbGl0eVJlZHVjZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1ldGhvZHMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhBdmFpbGFibGVSZWR1Y2Vycyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFJldHVybnMgbWV0cmljcyBhdmFpbGFibGUuXG4gICAgICpcbiAgICAgKiBAcmVhZG9ubHlcbiAgICAgKiBAbWVtYmVyb2YgRGltZW5zaW9uYWxpdHlSZWR1Y2VyXG4gICAgICovXG4gICAgc3RhdGljIGdldCBhdmFpbGFibGVNZXRyaWNzKCkge1xuICAgICAgICBsZXQgYW5zID0gW107XG4gICAgICAgIE9iamVjdC52YWx1ZXMoQXZhaWxhYmxlTWV0cmljcykuZm9yRWFjaCgob2JqKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhcnJheSA9IE9iamVjdC52YWx1ZXMob2JqKTtcbiAgICAgICAgICAgIGFucyA9IFsuLi5hbnMsIC4uLmFycmF5XTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBhbnM7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpY21Wa2RXTmxMV1JwYldWdWMybHZibUZzYVhSNUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEU5QlFVOHNTMEZCU3l4SFFVRkhMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJReTlDTEU5QlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVNc1RVRkJUU3hsUVVGbExFTkJRVU03UVVGRGJrTXNUMEZCVHl4RlFVbE1MRTFCUVUwc1IwRkhVQ3hOUVVGTkxHbEVRVUZwUkN4RFFVRkRPMEZCUTNwRUxFOUJRVThzUlVGRFRDeGxRVUZsTEVWQlEyWXNUVUZCVFN4RlFVTk9MRFJDUVVFMFFpeEhRVU0zUWl4TlFVRk5MR2xFUVVGcFJDeERRVUZETzBGQlEzcEVMRTlCUVU4c1JVRkJReXhQUVVGUExFVkJRVVVzVVVGQlVTeEZRVUZGTEZkQlFWY3NSVUZCUXl4TlFVRk5MRTlCUVU4c1EwRkJRenRCUVVOeVJDeFBRVUZQTEVWQlFVTXNUMEZCVHl4RlFVRm5RaXhuUWtGQlowSXNSVUZCUlN4blFrRkJaMElzUlVGQmNVSXNUVUZCVFN3clFrRkJLMElzUTBGQlF6dEJRVU0xU0N4UFFVRlBMRkZCUVZFc1RVRkJUU3g1UTBGQmVVTXNRMEZCUXp0QlFVY3ZSQ3hOUVVGTkxFTkJRVTRzU1VGQldTeHRRa0ZIV0R0QlFVaEVMRmRCUVZrc2JVSkJRVzFDTzBsQlF6ZENMRzlEUVVGaExFTkJRVUU3U1VGRFlpeHpRMEZCWjBJc1EwRkJRVHRCUVVOc1FpeERRVUZETEVWQlNGY3NiVUpCUVcxQ0xFdEJRVzVDTEcxQ1FVRnRRaXhSUVVjNVFqdEJRWGRDUkRzN1IwRkZSenRCUVVOSUxFMUJRVTBzUTBGQlF5eE5RVUZOTEhkQ1FVRjNRaXhIUVVGSExFdEJRVXNzUTBGQlF6dEJRVVU1UXl4TlFVRk5MRTlCUVU4c1YwRkJWenRKUVZGMFFqdFJRVkJCTEdsQ1FVRlpMRWRCUVhkQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEdWQlFXVXNSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFOUJRVThzUlVGQlJTd3dSRUZCTUVRc1JVRkJReXhEUVVGRE8xRkJRemRKTEdkQ1FVRlhMRWRCUVhWQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEZsQlFWa3NSVUZCUlN4TFFVRkxMRVZCUVVVc1EwRkJReXhGUVVGRkxFOUJRVThzUlVGQlJTdzRSRUZCT0VRc1JVRkJReXhEUVVGRE8xRkJRelZKTEZsQlFVOHNSMEZCZFVJc1JVRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEV0QlFVc3NSVUZCUlN4RFFVRkRMRVZCUVVVc1QwRkJUeXhGUVVGRkxIbEdRVUY1Uml4RlFVRkRMRU5CUVVNN1VVRkRMMG9zWlVGQlZTeEhRVUYxUWl4RlFVRkRMRTFCUVUwc1JVRkJSU3hYUVVGWExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNSVUZCUlN4UFFVRlBMRVZCUVVVc2FVVkJRV2xGTEVWQlFVTXNRMEZCUXp0UlFVTTVTU3hYUVVGTkxFZEJRWFZDTEVWQlFVTXNUVUZCVFN4RlFVRkZMRkZCUVZFc1JVRkJSU3hMUVVGTExFVkJRVVVzUTBGQlF5eEZRVUZGTEU5QlFVOHNSVUZCUlN4NVNFRkJlVWdzUlVGQlF5eERRVUZETzFGQlF6bE1MRmxCUVU4c1IwRkJkVUlzUlVGQlF5eE5RVUZOTEVWQlFVVXNZMEZCWXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hIUVVGSExFVkJRVVVzVDBGQlR5eEZRVUZGTEcxSlFVRnRTU3hGUVVGRExFTkJRVU03U1VGRmJFMHNRMEZCUXp0SlFVRkJMRU5CUVVNN1EwRkRiRUk3UVVGRlJDeE5RVUZOTEU5QlFVOHNWMEZCVnp0SlFVdDBRanRSUVVwQkxGbEJRVThzUjBGQmQwSXNSVUZCUXl4TlFVRk5MRVZCUVVVc1UwRkJVeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTEVWQlFVVXNUMEZCVHl4RlFVRkZMREJDUVVFd1FpeEZRVUZETEVOQlFVTTdVVUZEYmtjc1pVRkJWU3hIUVVGMVFpeEZRVUZETEUxQlFVMHNSVUZCUlN4WlFVRlpMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVVzUlVGQlJTeFBRVUZQTEVWQlFVVXNhMFJCUVd0RUxFVkJRVU1zUTBGQlF6dFJRVU5vU1N4UlFVRkhMRWRCUVhWQ0xFVkJRVU1zVFVGQlRTeEZRVUZGTEdkQ1FVRm5RaXhGUVVGRkxFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVVXNUMEZCVHl4RlFVRkZMR2xEUVVGcFF5eEZRVUZETEVOQlFVTTdTVUZGTlVZc1EwRkJRenRKUVVGQkxFTkJRVU03UTBGRGJFSTdRVUZIUkN4elEwRkJjME03UVVGRGRFTXNUVUZCWlN4UFFVRlBPMGxCUjNCQ0xGbEJRVmtzVDBGQlowSTdVVUZETVVJc1NVRkJTU3hEUVVGRExFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUXpOQ0xFTkJRVU03UTBGTFJqdEJRVVZFTEhORFFVRnpRenRCUVVOMFF5eE5RVUZOTEZkQlFWa3NVMEZCVVN4UFFVRlBPMGxCU3k5Q096czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDT3p0UlFVTXhRaXhMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdVVUZEWml4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTJwRExFbEJRVWtzUTBGQlF5eFZRVUZWTEVkQlFVY3NUVUZCUVN4UFFVRlBMR0ZCUVZBc1QwRkJUeXgxUWtGQlVDeFBRVUZQTEVOQlFVVXNWVUZCVlN4dFEwRkJTU3hIUVVGSExFTkJRVU03VVVGRE4wTXNTVUZCU1N4RFFVRkRMRlZCUVZVc1IwRkJSeXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETzBsQlEzSkRMRU5CUVVNN1NVRkZSRHM3TzA5QlIwYzdTVUZEU1N4VFFVRlRPMUZCUTJRc1RVRkJUU3hSUVVGUkxFZEJRVWNzTkVKQlFUUkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRNVVVzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4WlFVRlpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03VVVGRmNFTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4VlFVRlZMRVZCUVVVc1JVRkJSU3hEUVVGRExFVkJRVVU3V1VGRGVFTXNTVUZCU1N4RFFVRkRMRTlCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF5eERRVUZETEdsRVFVRnBSRHRUUVVOMlJUdFJRVU5FTEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1VVRkJVU3hGUVVGRkxGTkJRVk1zUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRmRCUVZjc1JVRkJSU3hGUVVGRExFTkJRVU03U1VGRGNrVXNRMEZCUXp0RFFVTkdPMEZCU1VRN096czdPMGRCUzBjN1FVRkRTQ3hOUVVGTkxGZEJRVmtzVTBGQlVTeFBRVUZQTzBsQlRTOUNPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTlCUVc5Q08xRkJRemxDTEV0QlFVc3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWbUxFMUJRVTBzUTBGQlF5eFpRVUZaTEVsQlFVa3NUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkZhRU1zU1VGQlNTeERRVUZETEZWQlFWVXNSMEZCUnl4UFFVRlBMRU5CUVVNc1ZVRkJWeXhEUVVGRE8xRkJRM1JETEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM1JGTEVsQlFVa3NRMEZCUXl4dFFrRkJiVUlzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc01FSkJRVEJDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFZEJRVWNzZDBKQlFYZENMRU5CUVVNc1EwRkJRenRSUVVOcVNDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRzFDUVVGdFFpeEZRVUZGTzFsQlF6ZENMRTlCUVU4c1EwRkJReXhWUVVGVkxFZEJRVWNzU1VGQlNTeERRVUZETEdkQ1FVRm5RaXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXp0VFFVTjJSRHRoUVVGTk8xbEJRMHdzU1VGQlNTeERRVUZETEdOQlFXTXNSMEZCUnl4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1dVRkJXU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETlVjc1QwRkJUeXhEUVVGRExGVkJRVlVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNjMEpCUVhOQ0xFTkJRVU1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMU5CUXpkRU8xRkJRMFFzU1VGQlNTeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1IwRkJSeXhGUVVGRk8xbEJRM1pDTEU5QlFVOHNRMEZCUXl4VlFVRlZMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpWRExFbEJRVWtzUTBGQlF5eFBRVUZQTEVkQlFVY3NTVUZCU1N4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eERRVUZETzFGQlEzSkRMRGhFUVVFNFJEdEpRVU5vUlN4RFFVRkRPMGxCUlVRN096czdPenM3TzA5QlVVYzdTVUZEVHl4elFrRkJjMElzUTBGQlF5eERRVUZYTEVWQlFVVXNRMEZCVnp0UlFVTjJSQ3hQUVVGUExFbEJRVWtzUTBGQlF5eGpRVUZsTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRNVU1zUTBGQlF6dEpRVVZUTEdkQ1FVRm5RaXhEUVVGRExFTkJRVmNzUlVGQlJTeERRVUZYTzFGQlEycEVMRTlCUVU4c1NVRkJTU3hEUVVGRExGVkJRVlVzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEZRVUZGTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXpSQ3hEUVVGRE8wbEJSVVE3T3pzN08wOUJTMGM3U1VGRFR5eFBRVUZQTzFGQlEyWXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzcERMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVONFFqdEpRVU5JTEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNTVUZCUnl4SlFVRkpMRU5CUVVNc2JVSkJRVzFDTzFsQlEzcENMRWxCUVVrc1EwRkJReXhqUVVGakxFZEJRVWNzTkVKQlFUUkNMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUlVGQlJTeEpRVUZKTEVOQlFVTXNWVUZCTkVJc1EwRkJReXhEUVVGRE8xRkJRMjVITEUxQlFVMHNVMEZCVXl4SFFVRkhMRWxCUVVrc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRSUVVWcVJDeFRRVUZUTEhGQ1FVRnhRaXhEUVVGRExFbEJRV2RDTzFsQlF6ZERMRTlCUVU4c1NVRkJTU3hMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eERRVUZETEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpsRkxFTkJRVU03VVVGRlJDeDFRa0ZCVVN4VFFVRlRMRVZCUVVVc2NVSkJRWEZDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRWxCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkRMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zWTBGQll5eEZRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRk8wbEJRM2hJTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hWUVVGWExGTkJRVkVzVDBGQlR6dEpRVWM1UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NUMEZCVHl4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1JETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hYUVVGWkxGTkJRVkVzVDBGQlR6dEpRVWN2UWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4UFFVRm5RanRSUVVNeFFpeExRVUZMTEVOQlFVTXNUMEZCVHl4RFFVRkRMRU5CUVVNN1VVRkRaaXhKUVVGSkxFTkJRVU1zVDBGQlR5eEhRVUZITEVsQlFVa3NVVUZCVVN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8wbEJRM1pETEVOQlFVTTdTVUZGUkRzN08wOUJSMGM3U1VGRFNTeFRRVUZUTzFGQlEyUXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8xRkJRekZETEU5QlFVOHNSVUZCUXl4UlFVRlJMRVZCUVVVc1NVRkJTU3hEUVVGRExFOUJRVThzUTBGQlF5eFJRVUZSTEVWQlFVVXNVMEZCVXl4RlFVRkZMRWRCUVVjc1JVRkJReXhEUVVGRE8wbEJRek5FTEVOQlFVTTdRMEZEUmp0QlFVVkVPenM3T3p0SFFVdEhPMEZCUTBnc1RVRkJUU3hyUWtGQmJVSXNVMEZCVVN4UFFVRlBPMGxCUjNSRE96czdPMDlCU1VjN1NVRkRTQ3haUVVGWkxFOUJRV2RDTzFGQlF6RkNMRXRCUVVzc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dFJRVU5tTEVsQlFVa3NRMEZCUXl4UFFVRlBMRWRCUVVjc1NVRkJTU3hYUVVGWExFTkJRVU1zVDBGQlR5eERRVUZETEVOQlFVTTdTVUZETVVNc1EwRkJRenRKUVVWRU96czdUMEZIUnp0SlFVTkpMRk5CUVZNN1VVRkRaQ3hOUVVGTkxFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdVVUZETVVNc1QwRkJUeXhGUVVGRExGRkJRVkVzUlVGQlJTeEpRVUZKTEVOQlFVTXNUMEZCVHl4RFFVRkRMRkZCUVZFc1JVRkJSU3hUUVVGVExFVkJRVVVzUjBGQlJ5eEZRVUZETEVOQlFVTTdTVUZETTBRc1EwRkJRenREUVVOR08wRkJSVVFzVFVGQlRTeHBRa0ZCYVVJc1IwRkJSenRKUVVONFFpeE5RVUZOTEVWQlFVVXNWMEZCVnp0SlFVTnVRaXhQUVVGUExFVkJRVVVzVjBGQlZ6dEpRVU53UWl4TFFVRkxMRVZCUVVVc1ZVRkJWVHRKUVVOcVFpeE5RVUZOTEVWQlFVVXNWMEZCVnp0SlFVTnVRaXhoUVVGaExFVkJRVVVzYTBKQlFXdENPME5CUTJ4RExFTkJRVU03UVVGSlJqczdPenM3UjBGTFJ6dEJRVU5JTEUxQlFVMHNUMEZCVHl4eFFrRkJjVUk3U1VGSGFFTTdPenM3T3pzN1QwRlBSenRKUVVOSUxGbEJRVmtzU1VGQlZ5eEZRVUZGTEUxQlFXOUNMRVZCUVVVc1RVRkJiMElzUlVGQlJTeFBRVUZwUWpzN1VVRkRjRVlzVFVGQlRTeFBRVUZQTEVkQlFVY3NTVUZCU1N4UFFVRlBMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdVVUZEYWtRc1NVRkJTU3hYUVVGWExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlJYSkNMRWxCUVVrc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1dVRkROVUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eE5RVUZOTEVWQlFVVXNSVUZCUlN4RFFVRkRMRVZCUVVVN1owSkJRM0JETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVONFJEdFRRVU5HTzFGQlJVUXNTVUZCU1N4TlFVRk5MRWxCUVVrc1RVRkJUU3hGUVVGRk8xbEJRM0JDTEZkQlFWY3NOa05CUTA0c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVWQlExb3NSVUZCUXl4VlFVRlZMRVZCUVVVc1QwRkJUeXhGUVVGRExFZEJRM0pDTEVWQlFVTXNUMEZCVHl4RlFVRkZMRTlCUVU4c1lVRkJVQ3hQUVVGUExIVkNRVUZRTEU5QlFVOHNRMEZCUlN4TlFVRk5MRVZCUVVNc1IwRkRNVUlzVDBGQlR5eERRVU5ZTEVOQlFVTTdVMEZEU0R0aFFVRk5MRWxCUVVrc1RVRkJUU3hKUVVGSkxFOUJRVThzUlVGQlJUdFpRVU0xUWl4WFFVRlhMRFpEUVVOT0xFVkJRVU1zU1VGQlNTeEZRVUZGTEVsQlFVa3NSVUZCUXl4RlFVTmFMRVZCUVVNc1VVRkJVU3hGUVVGRkxFOUJRVThzUlVGQlF5eEhRVU51UWl4RlFVRkRMRlZCUVZVc1JVRkJSU3hOUVVGQkxFOUJRVThzWVVGQlVDeFBRVUZQTEhWQ1FVRlFMRTlCUVU4c1EwRkJSU3hOUVVGTkxHMURRVUZKTEZOQlFWTXNSVUZCUXl4SFFVTXhReXhQUVVGUExFTkJRMWdzUTBGQlF6dFRRVU5JTzJGQlFVMHNTVUZCU1N4TlFVRk5MRWxCUVVrc1MwRkJTeXhGUVVGRk8xbEJRekZDTEZkQlFWY3NLMEpCUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzU1VGQlNTeEZRVUZETEVWQlFVc3NSVUZCUXl4UlFVRlJMRVZCUVVVc1QwRkJUeXhGUVVGRExFZEJRVXNzVDBGQlR5eERRVUZETEVOQlFVTTdVMEZEY2tVN1lVRkJUVHRaUVVOTUxGZEJRVmNzSzBKQlFVOHNSVUZCUXl4SlFVRkpMRVZCUVVVc1NVRkJTU3hGUVVGRExFVkJRVXNzUlVGQlF5eFJRVUZSTEVWQlFVVXNUMEZCVHl4RlFVRkRMRWRCUVVzc1QwRkJUeXhEUVVGRExFTkJRVU03VTBGRGNrVTdVVUZEUkN4SlFVRkpMRU5CUVVNc1QwRkJUeXhIUVVGSExFbEJRVWtzYVVKQlFXbENMRU5CUVVNc1RVRkJUU3hEUVVGRExFTkJRVU1zVjBGQlZ5eERRVUZETEVOQlFVTTdTVUZETlVRc1EwRkJRenRKUVVWRU96czdPenM3TzA5QlQwYzdTVUZEU1N4VFFVRlRMRU5CUVVNc1dVRkJjVUlzUzBGQlN6dFJRVU42UXl4SlFVRkpMRWxCUVVrc1EwRkJReXhQUVVGUExFbEJRVWtzVTBGQlV5eEZRVUZGTzFsQlF6ZENMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTUVKQlFUQkNMRU5CUVVNc1EwRkJRenRUUVVNM1F6dFJRVVZFTEVsQlFVa3NSVUZCUXl4VFFVRlRMRVZCUVVVc1VVRkJVU3hGUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEU5QlFVOHNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRenRSUVVWeVJDeEpRVUZKTEZOQlFWTXNSVUZCUlR0WlFVTmlMRk5CUVZNc1IwRkJSeXhsUVVGbExFTkJRVU1zVTBGQlV5eERRVUZETEVOQlFVTTdVMEZEZUVNN1VVRkRSQ3hQUVVGUExFVkJRVU1zVVVGQlVTeEZRVUZGTEZGQlFWRXNSVUZCUlN4VFFVRlRMRVZCUVVVc1UwRkJVeXhGUVVGRExFTkJRVU03U1VGRGNFUXNRMEZCUXp0SlFVVkVPenM3T3pzN1QwRk5SenRKUVVOSUxFMUJRVTBzUTBGQlF5eHpRa0ZCYzBJc1EwRkJReXhSUVVFMFFqdFJRVU40UkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTQ3hOUVVGTkxFdEJRVXNzWjBKQlFXZENPMUZCUTNwQ0xFOUJRVThzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eERRVUZETzBsQlEzaERMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSUxFMUJRVTBzUzBGQlN5eG5Ra0ZCWjBJN1VVRkRla0lzU1VGQlNTeEhRVUZITEVkQlFXRXNSVUZCUlN4RFFVRkRPMUZCUTNaQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1JVRkJSVHRaUVVNNVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4TlFVRk5MRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEycERMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEZRVUZGTEVkQlFVY3NTMEZCU3l4RFFVRkRMRU5CUVVNN1VVRkRNMElzUTBGQlF5eERRVUZETEVOQlFVTTdVVUZEU0N4UFFVRlBMRWRCUVVjc1EwRkJRenRKUVVOaUxFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUhWdGFpQm1jbTl0SUNkMWJXRndMV3B6Snp0Y2JtbHRjRzl5ZENCN1ZGTk9SWDBnWm5KdmJTQW5RR3RsWTJ0bGJIUXZkSE51WlNjN1hHNXBiWEJ2Y25RZ2UxeHVJQ0JQY0hScGIyNXpMRnh1SUNCRWFYTjBZVzVqWlUxbGRISnBZeXhjYmlBZ1EyOXZjbVJwYm1GMFpYTXNYRzRnSUZabFkzUnZjaXhjYmlBZ1ZtVmpkRzl5Y3l4Y2JpQWdUV0YwY21sNExGeHVmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTkwZVhCbExXUmxZMnhoY21GMGFXOXVjeWM3WEc1cGJYQnZjblFnZTF4dUlDQjBjbUZ1YzNCdmMyVk5ZWFJ5YVhnc1hHNGdJR0Z6YzJWeWRDeGNiaUFnWTJGc1kwNXZjbTFoYkdsNlpXUkVhWE4wWVc1alpVMWhkSEpwZUN4Y2JuMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkbVZqZEc5eUxXOXdaWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHRUVUVWQ1lYTmxMQ0JRVTFCRlFtRnpaU3dnVDNKcFoybHVZV3hUVUVWOUlHWnliMjBnSnk0dmMzQmxKenRjYm1sdGNHOXlkQ0I3VFdWaGMzVnlaU3dnUzI1dmQyNU5aWFJ5YVdOekxDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOekxDQnBjMEpwZEVGeWNtRjVUV1YwY21sakxDQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTjlJR1p5YjIwZ0p5NHZkSGx3WldRdGJXVjBjbWxqY3k5MGVYQmxaQzF0WlhSeWFXTnpKenRjYm1sdGNHOXlkQ0JDYVhSQmNuSmhlU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMM1YwYVd4ekwzTnlZeTlpYVhRdFlYSnlZWGtuTzF4dWFXMXdiM0owSUh0VlRVRlFVR0Z5WVcxbGRHVnljMzBnWm5KdmJTQW5kVzFoY0MxcWN5YzdYRzVjYm1WNGNHOXlkQ0JsYm5WdElFUnBiVkpsWkhWamRHbHZiazFsZEdodlpITjdYRzRnSUZWTlFWQWdQU0FuVlUxQlVDY3NYRzRnSUZSZlUwNUZJRDBnSUNkMExWTk9SU2RjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpWVTFCVUU5d2RHbHZibk1nZTF4dUlDQnNaV0Z5Ym1sdVoxSmhkR1UvT2lCdWRXMWlaWEk3WEc0Z0lHNURiMjF3YjI1bGJuUnpQem9nYm5WdFltVnlPMXh1SUNCdVJYQnZZMmh6UHpvZ2JuVnRZbVZ5TzF4dUlDQnVUbVZwWjJoaWIzSnpQem9nYm5WdFltVnlPMXh1SUNCemNISmxZV1EvT2lCdWRXMWlaWEk3WEc0Z0lHMXBia1JwYzNRL09pQnVkVzFpWlhJN1hHNTlYRzVjYm1WNGNHOXlkQ0JwYm5SbGNtWmhZMlVnU1ZSVFRrVlBjSFJwYjI1eklIdGNiaUFnWlhCemFXeHZiajg2SUc1MWJXSmxjanRjYmlBZ2NHVnljR3hsZUdsMGVUODZJRzUxYldKbGNqdGNiaUFnWkdsdFB6b2diblZ0WW1WeU8xeHVmVnh1WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsRWFXMVNaV1IxWTNScGIyNVFZWEpoYlNCN1hHNGdJSFZwVG1GdFpUb2djM1J5YVc1bk8xeHVJQ0IyWVd4MVpUb2diblZ0WW1WeUlId2diblZzYkR0Y2JpQWdkRzl2YkhScGNEb2djM1J5YVc1bk8xeHVJQ0J3YkdGalpXaHZiR1JsY2o4NklITjBjbWx1Wnp0Y2JuMWNibHh1THlvcUlGVnRZWEFnZFhObGN5QndjbVZqWVd4amRXeGhkR1ZrSUdScGMzUmhibU5sSUcxaGRISnBlQ0IwYnlCellYWmxJSFJwYldVdUlIUm9iM1ZuYUNCbWIzSWdkRzl2SUcxMVkyZ2daR0YwWVN3Z2JXVnRiM0o1SUdKbFkyOXRaWE1nWTI5dWMzUnlZV2x1ZEM1Y2JpQXFJR2xtSUhkbElHaGhkbVVnTVRBd0lEQXdNQ0J5YjNkekxDQmthWE4wWVc1alpTQnRZWFJ5YVhnZ2QybHNiQ0IwWVd0bElINHhNR2RpSUc5bUlHMWxiVzl5ZVNCaGJtUWdjSEp2WW1GaWJIa2diM1psY21ac2IzY3VYRzRnS2k5Y2JtVjRjRzl5ZENCamIyNXpkQ0JOUVZoZlJFbFRWRUZPUTBWZlRVRlVVa2xZWDFKUFYxTWdQU0F4TURBd01EdGNibHh1Wlhod2IzSjBJR05zWVhOeklGVk5RVkJQY0hScGIyNXpJSHRjYmlBZ2JHVmhjbTVwYm1kU1lYUmxPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNBZ2UzVnBUbUZ0WlRvZ0oweGxZWEpwYm1sbklISmhkR1VuTENCMllXeDFaVG9nTVN3Z2RHOXZiSFJwY0RvZ0oxUm9aU0JwYm1sMGFXRnNJR3hsWVhKdWFXNW5JSEpoZEdVZ1ptOXlJSFJvWlNCbGJXSmxaR1JwYm1jZ2IzQjBhVzFwZW1GMGFXOXVKMzA3WEc0Z0lHNURiMjF3YjI1bGJuUnpPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNCN2RXbE9ZVzFsT2lBblEyOXRjRzl1Wlc1MGN5Y3NJSFpoYkhWbE9pQXlMQ0IwYjI5c2RHbHdPaUFuVkdobElHNTFiV0psY2lCdlppQmpiMjF3YjI1bGJuUnpJQ2hrYVcxbGJuTnBiMjV6S1NCMGJ5QndjbTlxWldOMElIUm9aU0JrWVhSaElIUnZKMzA3WEc0Z0lHNUZjRzlqYUhNNklFbEVhVzFTWldSMVkzUnBiMjVRWVhKaGJTQTlJSHQxYVU1aGJXVTZJQ2RGY0c5amFITW5MQ0IyWVd4MVpUb2dNQ3dnZEc5dmJIUnBjRG9nSjFSb1pTQnVkVzFpWlhJZ2IyWWdaWEJ2WTJoeklIUnZJRzl3ZEdsdGFYcGxJR1Z0WW1Wa1pHbHVaM01nZG1saElGTkhSQzRnUTI5dGNIVjBaV1FnWVhWMGIyMWhkR2xqWVd4c2VTQnBaaUJ6WlhRZ2RHOGdNQ2Q5TzF4dUlDQnVUbVZwWjJoaWIzSnpPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNCN2RXbE9ZVzFsT2lBblRtVnBaMmhpYjNKekp5d2dkbUZzZFdVNklERTFMQ0IwYjI5c2RHbHdPaUFuVkdobElHNTFiV0psY2lCdlppQnVaV0Z5WlhOMElHNWxhV2RvWW05eWN5QjBieUJqYjI1emRISjFZM1FnZEdobElHWjFlbnA1SUcxaGJtbG1iMnhrSjMwN1hHNGdJSE53Y21WaFpEb2dTVVJwYlZKbFpIVmpkR2x2YmxCaGNtRnRJRDBnZTNWcFRtRnRaVG9nSjFOd2NtVmhaQ2NzSUhaaGJIVmxPaUF4TENCMGIyOXNkR2x3T2lBblZHaGxJR1ZtWm1WamRHbDJaU0J6WTJGc1pTQnZaaUJsYldKbFpHUmxaQ0J3YjJsdWRITXNJSFZ6WldRZ2QybDBhQ0J0YVc0Z1pHbHpkR0Z1WTJVZ2RHOGdZMjl1ZEhKdmJDQjBhR1VnWTJ4MWJYQmxaQzlrYVhOd1pYSnpaV1FnYm1GMGRYSmxJRzltSUhSb1pTQmxiV0psWkdScGJtY25mVHRjYmlBZ2JXbHVSR2x6ZERvZ1NVUnBiVkpsWkhWamRHbHZibEJoY21GdElEMGdlM1ZwVG1GdFpUb2dKMDFwYmlCa2FYTjBZVzVqWlNjc0lIWmhiSFZsT2lBd0xqRXNJSFJ2YjJ4MGFYQTZJQ2RVYUdVZ1pXWm1aV04wYVhabElHMXBibWx0ZFcwZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCbGJXSmxaR1JsWkNCd2IybHVkSE1zSUhWelpXUWdkMmwwYUNCemNISmxZV1FnZEc4Z1kyOXVkSEp2YkNCMGFHVWdZMngxYlhCbFpDOWthWE53WlhKelpXUWdibUYwZFhKbElHOW1JSFJvWlNCbGJXSmxaR1JwYm1jbmZUdGNibHh1SUNCamIyNXpkSEoxWTNSdmNpZ3BJSHQ5TzF4dWZWeHVYRzVsZUhCdmNuUWdZMnhoYzNNZ1ZGTk9SVTl3ZEdsdmJuTWdlMXh1SUNCbGNITnBiRzl1T2lCSlJHbHRVbVZrZFdOMGFXOXVVR0Z5WVcwZ1BTQWdlM1ZwVG1GdFpUb2dKMFZ3YzJsc2IyNG5MQ0IyWVd4MVpUb2dNVEFzSUhSdmIyeDBhWEE2SUNkRmNITnBiRzl1SUdseklHeGxZWEp1YVc1bklISmhkR1VuZlR0Y2JpQWdjR1Z5Y0d4bGVHbDBlVG9nU1VScGJWSmxaSFZqZEdsdmJsQmhjbUZ0SUQwZ2UzVnBUbUZ0WlRvZ0oxQmxjbkJzWlhocGRIa25MQ0IyWVd4MVpUb2dNekFzSUhSdmIyeDBhWEE2SUNkU2IzVm5hR3g1SUdodmR5QnRZVzU1SUc1bGFXZG9ZbTl5Y3lCbFlXTm9JSEJ2YVc1MElHbHVabXgxWlc1alpYTW5mVHRjYmlBZ1pHbHRPaUJKUkdsdFVtVmtkV04wYVc5dVVHRnlZVzBnUFNCN2RXbE9ZVzFsT2lBblJHbHRaVzV6YVc5dVlXeHBkSGtuTENCMllXeDFaVG9nTWl3Z2RHOXZiSFJwY0RvZ0owUnBiV1Z1YzJsdmJtRnNhWFI1SUc5bUlIUm9aU0JsYldKbFpHUnBibWNuZlR0Y2JseHVJQ0JqYjI1emRISjFZM1J2Y2lncElIdDlPMXh1ZlZ4dVhHNWNiaThxS2lCQlluTjBjbUZqZENCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkyVnlJQ292WEc1aFluTjBjbUZqZENCamJHRnpjeUJTWldSMVkyVnlJSHRjYmlBZ2NISnZkR1ZqZEdWa0lHUmhkR0U2SUZabFkzUnZjbk03WEc1Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJSFJvYVhNdVpHRjBZU0E5SUc5d2RHbHZibk11WkdGMFlUdGNiaUFnZlZ4dVhHNGdJQzhxS2lCRmJXSmxaSE1nZEdobElHUmhkR0VnWjJsMlpXNGdhVzUwYnlCMGFHVWdkSGR2TFdScGJXVnVjMmx2Ym1Gc0lITndZV05sTGx4dUlDQWdLaUJBY21WMGRYSnVJSHRoYm5sOUlFTmhjblJsYzJsaGJpQmpiMjl5WkdsdVlYUmxJRzltSUhSb2FYTWdaVzFpWldSa2FXNW5JR0Z1WkNCa2FYTjBZVzVqWlNCdFlYUnlhWGdnZDJobGNtVWdZWEJ3YkdsallXSnNaUzRnS2k5Y2JpQWdZV0p6ZEhKaFkzUWdkSEpoYm5ObWIzSnRLQ2s2SUhzZ1cydGxlVG9nYzNSeWFXNW5YVG9nVFdGMGNtbDRJSDA3WEc1OVhHNWNiaThxS2lCMExWTk9SU0JrYVcxbGJuTnBiMjVoYkdsMGVTQnlaV1IxWTNScGIyNHVJQ292WEc1amJHRnpjeUJVVTA1RlVtVmtkV05sY2lCbGVIUmxibVJ6SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdjbVZrZFdObGNqb2dWRk5PUlR0Y2JpQWdjSEp2ZEdWamRHVmtJR2wwWlhKaGRHbHZibk02SUc1MWJXSmxjanRjYmlBZ2NISnZkR1ZqZEdWa0lHUnBjM1JoYm1ObFJtNDZJRVJwYzNSaGJtTmxUV1YwY21sak8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRlJUVGtWU1pXUjFZMlZ5TGx4dUlDQWdLaUJBY0dGeVlXMGdlMDl3ZEdsdmJuTjlJRzl3ZEdsdmJuTWdUM0IwYVc5dWN5QjBieUJ3WVhOeklIUnZJSFJvWlNCamIyNXpkSEoxWTNSdmNpNWNiaUFnSUNvZ1FHMWxiV0psY205bUlGUlRUa1ZTWldSMVkyVnlYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2lodmNIUnBiMjV6T2lCUGNIUnBiMjV6S1NCN1hHNGdJQ0FnYzNWd1pYSW9iM0IwYVc5dWN5azdYRzRnSUNBZ2RHaHBjeTV5WldSMVkyVnlJRDBnYm1WM0lGUlRUa1VvYjNCMGFXOXVjeWs3WEc0Z0lDQWdkR2hwY3k1cGRHVnlZWFJwYjI1eklEMGdiM0IwYVc5dWN6OHVhWFJsY21GMGFXOXVjeUEvUHlBeE1EQTdYRzRnSUNBZ2RHaHBjeTVrYVhOMFlXNWpaVVp1SUQwZ2IzQjBhVzl1Y3k1a2FYTjBZVzVqWlR0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQkZiV0psWkhNZ2RHaGxJR1JoZEdFZ1oybDJaVzRnYVc1MGJ5QjBhR1VnZEhkdkxXUnBiV1Z1YzJsdmJtRnNJSE53WVdObElIVnphVzVuSUhRdFUwNUZJRzFsZEdodlpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1lXNTVmU0JEWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlNCdlppQjBhR2x6SUdWdFltVmtaR2x1WnlCaGJtUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIZG9aWEpsSUdGd2NHeHBZMkZpYkdVdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2RISmhibk5tYjNKdEtDazZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dUV0YwY21sNElIMGdlMXh1SUNBZ0lHTnZibk4wSUdScGMzUmhibU5sSUQwZ1kyRnNZMDV2Y20xaGJHbDZaV1JFYVhOMFlXNWpaVTFoZEhKcGVDaDBhR2x6TG1SaGRHRXNJSFJvYVhNdVpHbHpkR0Z1WTJWR2JpazdYRzRnSUNBZ2RHaHBjeTV5WldSMVkyVnlMbWx1YVhSRVlYUmhSR2x6ZENoa2FYTjBZVzVqWlNrN1hHNWNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11YVhSbGNtRjBhVzl1Y3pzZ0t5dHBLU0I3WEc0Z0lDQWdJQ0IwYUdsekxuSmxaSFZqWlhJdWMzUmxjQ2dwT3lBdkx5QmxkbVZ5ZVNCMGFXMWxJSGx2ZFNCallXeHNJSFJvYVhNc0lITnZiSFYwYVc5dUlHZGxkSE1nWW1WMGRHVnlYRzRnSUNBZ2ZWeHVJQ0FnSUhKbGRIVnliaUI3WkdsemRHRnVZMlU2SUdScGMzUmhibU5sTENCbGJXSmxaR1JwYm1jNklIUm9hWE11Y21Wa2RXTmxjaTVuWlhSVGIyeDFkR2x2YmlncGZUdGNiaUFnZlZ4dWZWeHVYRzVsZUhCdmNuUWdkSGx3WlNCVmJXRndUM0IwYVc5dWN5QTlJRTl3ZEdsdmJuTWdKaUJWVFVGUVVHRnlZVzFsZEdWeWN5QW1JSHR3Y21WRFlXeGpkV3hoZEdWRWFYTjBZVzVqWlUxaGRISnBlRDg2SUdKdmIyeGxZVzU5TzF4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdWVTFCVUNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRlZOUVZCU1pXUjFZMlZ5WEc0Z0tpQkFaWGgwWlc1a2N5QjdVbVZrZFdObGNuMWNiaUFxTDF4dVkyeGhjM01nVlUxQlVGSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJSFZ0YWk1VlRVRlFPMXh1SUNCd2NtOTBaV04wWldRZ1pHbHpkR0Z1WTJWR2Jqb2dSblZ1WTNScGIyNDdYRzRnSUhCeWIzUmxZM1JsWkNCMlpXTjBiM0p6T2lCdWRXMWlaWEpiWFZ0ZE8xeHVJQ0J3Y205MFpXTjBaV1FnWkdsemRHRnVZMlZOWVhSeWFYZy9PaUJOWVhSeWFYZzdYRzRnSUhCeWIzUmxZM1JsWkNCMWMybHVaMFJwYzNSaGJtTmxUV0YwY21sNE9pQmliMjlzWldGdU8xeHVJQ0F2S2lwY2JpQWdJQ29nUTNKbFlYUmxjeUJoYmlCcGJuTjBZVzVqWlNCdlppQlZUVUZRVW1Wa2RXTmxjaTVjYmlBZ0lDb2dRSEJoY21GdElIdFBjSFJwYjI1emZTQnZjSFJwYjI1eklFOXdkR2x2Ym5NZ2RHOGdjR0Z6Y3lCMGJ5QjBhR1VnWTI5dWMzUnlkV04wYjNJdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCVlRVRlFVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVlcxaGNFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmx4dUlDQWdJR0Z6YzJWeWRDZ25aR2x6ZEdGdVkyVkdiaWNnYVc0Z2IzQjBhVzl1Y3lrN1hHNWNiaUFnSUNCMGFHbHpMbVJwYzNSaGJtTmxSbTRnUFNCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm00aE8xeHVJQ0FnSUhSb2FYTXVkbVZqZEc5eWN5QTlJRzVsZHlCQmNuSmhlU2gwYUdsekxtUmhkR0V1YkdWdVozUm9LUzVtYVd4c0tEQXBMbTFoY0Nnb1h5d2dhU2tnUFQ0Z1cybGRLVHRjYmlBZ0lDQjBhR2x6TG5WemFXNW5SR2x6ZEdGdVkyVk5ZWFJ5YVhnZ1BTQWhLQ0Z2Y0hScGIyNXpMbkJ5WlVOaGJHTjFiR0YwWlVScGMzUmhibU5sVFdGMGNtbDRJQ1ltSUhSb2FYTXVaR0YwWVM1c1pXNW5kR2dnUGlCTlFWaGZSRWxUVkVGT1EwVmZUVUZVVWtsWVgxSlBWMU1wTzF4dUlDQWdJR2xtSUNnaGRHaHBjeTUxYzJsdVowUnBjM1JoYm1ObFRXRjBjbWw0S1NCN1hHNGdJQ0FnSUNCdmNIUnBiMjV6TG1ScGMzUmhibU5sUm00Z1BTQjBhR2x6TGw5bGJtTnZaR1ZrUkdsemRHRnVZMlV1WW1sdVpDaDBhR2x6S1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1a2FYTjBZVzVqWlUxaGRISnBlQ0E5SUVGeWNtRjVLSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ3BMbVpwYkd3b01Da3ViV0Z3S0NncElEMCtJRzVsZHlCR2JHOWhkRE15UVhKeVlYa29kR2hwY3k1a1lYUmhMbXhsYm1kMGFDa3VabWxzYkNnd0tTazdYRzRnSUNBZ0lDQnZjSFJwYjI1ekxtUnBjM1JoYm1ObFJtNGdQU0IwYUdsekxsOWxibU52WkdWa1JHbHpkR0Z1WTJWTllYUnlhWGd1WW1sdVpDaDBhR2x6S1R0Y2JpQWdJQ0I5WEc0Z0lDQWdhV1lnS0hSb2FYTXVaR0YwWVM1c1pXNW5kR2dnUENBeE5TbGNiaUFnSUNBZ0lHOXdkR2x2Ym5NdWJrNWxhV2RvWW05eWN5QTlJSFJvYVhNdVpHRjBZUzVzWlc1bmRHZ2dMU0F4TzF4dUlDQWdJSFJvYVhNdWNtVmtkV05sY2lBOUlHNWxkeUIxYldvdVZVMUJVQ2h2Y0hScGIyNXpLVHRjYmlBZ0lDQXZMeUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJWR2JpQTlJSFJvYVhNdVgyVnVZMjlrWldSRWFYTjBZVzVqWlM1aWFXNWtLSFJvYVhNcE8xeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRU4xYzNSdmJTQmthWE4wWVc1alpTQjNjbUZ3Y0dWeUlIUnZJR2hoZG1VZ2JuVnRaWEpwWXlCcGJuQjFkSE1nYVc1emRHVmhaQ0J2WmlCemRISnBibWNnYjI1bGN5NWNiaUFnSUNwY2JpQWdJQ29nUUhCeWIzUmxZM1JsWkZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNsdGRmU0JoSUZSb1pTQm1hWEp6ZENCcGRHVnRMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UyNTFiV0psY2x0ZGZTQmlJRlJvWlNCbWFYSnpkQ0JwZEdWdExseHVJQ0FnS2lCQWNtVjBkWEp1SUh0dWRXMWlaWEo5SUVScGMzUmhibU5sSUcxbGRISnBZeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRlZOUVZCU1pXUjFZMlZ5WEc0Z0lDQXFMMXh1SUNCd2NtOTBaV04wWldRZ1gyVnVZMjlrWldSRWFYTjBZVzVqWlUxaGRISnBlQ2hoT2lCdWRXMWlaWEpiWFN3Z1lqb2diblZ0WW1WeVcxMHBPaUJ1ZFcxaVpYSWdlMXh1SUNBZ0lISmxkSFZ5YmlCMGFHbHpMbVJwYzNSaGJtTmxUV0YwY21sNElWdGhXekJkWFZ0aVd6QmRYVHRjYmlBZ2ZWeHVYRzRnSUhCeWIzUmxZM1JsWkNCZlpXNWpiMlJsWkVScGMzUmhibU5sS0dFNklHNTFiV0psY2x0ZExDQmlPaUJ1ZFcxaVpYSmJYU2s2SUc1MWJXSmxjaUI3WEc0Z0lDQWdjbVYwZFhKdUlIUm9hWE11WkdsemRHRnVZMlZHYmloMGFHbHpMbVJoZEdGYllWc3dYVjBzSUhSb2FYTXVaR0YwWVZ0aVd6QmRYU2s3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JXNWpiMlJsY3lCMGFHVWdhVzV3ZFhRZ1pHRjBZU0JoY3lCaElIWmxZM1J2Y2lCdlppQnBibVJwWTJWekxseHVJQ0FnS2x4dUlDQWdLaUJBY0hKdmRHVmpkR1ZrWEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJWVFVGUVVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ2NISnZkR1ZqZEdWa0lGOWxibU52WkdVb0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TG1SaGRHRXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVkbVZqZEc5eWN5NXdkWE5vS0Z0cFhTazdYRzRnSUNBZ2ZWeHVJQ0I5WEc1Y2JpQWdMeW9xWEc0Z0lDQXFJRVZ0WW1Wa2N5QjBhR1VnWkdGMFlTQm5hWFpsYmlCcGJuUnZJSFJvWlNCMGQyOHRaR2x0Wlc1emFXOXVZV3dnYzNCaFkyVWdkWE5wYm1jZ1ZVMUJVQ0J0WlhSb2IyUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2RISmhibk5tYjNKdEtDazZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dUV0YwY21sNElIMGdlMXh1SUNBZ0lHbG1LSFJvYVhNdWRYTnBibWRFYVhOMFlXNWpaVTFoZEhKcGVDbGNiaUFnSUNBZ0lIUm9hWE11WkdsemRHRnVZMlZOWVhSeWFYZ2dQU0JqWVd4alRtOXliV0ZzYVhwbFpFUnBjM1JoYm1ObFRXRjBjbWw0S0hSb2FYTXVaR0YwWVN3Z2RHaHBjeTVrYVhOMFlXNWpaVVp1SUdGeklFUnBjM1JoYm1ObFRXVjBjbWxqS1R0Y2JpQWdJQ0JqYjI1emRDQmxiV0psWkdScGJtY2dQU0IwYUdsekxuSmxaSFZqWlhJdVptbDBLSFJvYVhNdWRtVmpkRzl5Y3lrN1hHNWNiaUFnSUNCbWRXNWpkR2x2YmlCaGNuSmhlVU5oYzNReVEyOXZjbVJwYm1GMFpYTW9aR0YwWVRvZ2JuVnRZbVZ5VzExYlhTazZJRU52YjNKa2FXNWhkR1Z6SUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJ1WlhjZ1FYSnlZWGtvWkdGMFlTNXNaVzVuZEdncExtWnBiR3dvTUNrdWJXRndLQ2hmTENCcEtTQTlQaUFvVm1WamRHOXlMbVp5YjIwb1pHRjBZVnRwWFNrcEtUdGNiaUFnSUNCOVhHNWNiaUFnSUNCeVpYUjFjbTRnZTJWdFltVmtaR2x1WnpvZ1lYSnlZWGxEWVhOME1rTnZiM0prYVc1aGRHVnpLR1Z0WW1Wa1pHbHVaeWtzSUM0dUxpaDBhR2x6TG1ScGMzUmhibU5sVFdGMGNtbDRJRDhnZTJScGMzUmhibU5sT2lCMGFHbHpMbVJwYzNSaGJtTmxUV0YwY21sNGZTQTZJSHQ5S1gwN1hHNGdJSDFjYm4xY2JseHVMeW9xWEc0Z0tpQkpiWEJzWlcxbGJuUnpJRzl5YVdkcGJtRnNJRk5RUlNCa2FXMWxibk5wYjI1aGJHbDBlU0J5WldSMVkzUnBiMjR1WEc0Z0tseHVJQ29nUUdOc1lYTnpJRk5RUlZKbFpIVmpaWEpjYmlBcUlFQmxlSFJsYm1SeklIdFNaV1IxWTJWeWZWeHVJQ292WEc1amJHRnpjeUJUVUVWU1pXUjFZMlZ5SUdWNGRHVnVaSE1nVW1Wa2RXTmxjaUI3WEc0Z0lIQnliM1JsWTNSbFpDQnlaV1IxWTJWeU9pQlRVRVZDWVhObE8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRk5RUlZKbFpIVmpaWEl1WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdiM0IwYVc5dWN5QlBjSFJwYjI1eklIUnZJSEJoYzNNZ2RHOGdkR2hsSUdOdmJuTjBjblZqZEc5eUxseHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1UxQkZVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYjNCMGFXOXVjem9nVDNCMGFXOXVjeWtnZTF4dUlDQWdJSE4xY0dWeUtHOXdkR2x2Ym5NcE8xeHVJQ0FnSUhSb2FYTXVjbVZrZFdObGNpQTlJRzVsZHlCVFVFVkNZWE5sS0c5d2RHbHZibk1wTzF4dUlDQjlYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFVnRZbVZrY3lCMGFHVWdaR0YwWVNCbmFYWmxiaUJwYm5SdklIUm9aU0IwZDI4dFpHbHRaVzV6YVc5dVlXd2djM0JoWTJVZ2RYTnBibWNnZEdobElHOXlhV2RwYm1Gc0lGTlFSU0J0WlhSb2IyUXVYRzRnSUNBcUlFQnlaWFIxY200Z2UyRnVlWDBnUTJGeWRHVnphV0Z1SUdOdmIzSmthVzVoZEdVZ2IyWWdkR2hwY3lCbGJXSmxaR1JwYm1jZ1lXNWtJR1JwYzNSaGJtTmxJRzFoZEhKcGVDQjNhR1Z5WlNCaGNIQnNhV05oWW14bExseHVJQ0FnS2k5Y2JpQWdjSFZpYkdsaklIUnlZVzV6Wm05eWJTZ3BPaUI3SUZ0clpYazZJSE4wY21sdVoxMDZJRTFoZEhKcGVDQjlJSHRjYmlBZ0lDQmpiMjV6ZENCbGJXSWdQU0IwYUdsekxuSmxaSFZqWlhJdVpXMWlaV1FvZEdocGN5NWtZWFJoS1R0Y2JpQWdJQ0J5WlhSMWNtNGdlMlJwYzNSaGJtTmxPaUIwYUdsekxuSmxaSFZqWlhJdVpHbHpkR0Z1WTJVc0lHVnRZbVZrWkdsdVp6b2daVzFpZlR0Y2JpQWdmVnh1ZlZ4dVhHNHZLaXBjYmlBcUlFbHRjR3hsYldWdWRITWdiVzlrYVdacFpXUWdVMUJGSUdScGJXVnVjMmx2Ym1Gc2FYUjVJSEpsWkhWamRHbHZiaTVjYmlBcVhHNGdLaUJBWTJ4aGMzTWdVRk5RUlZKbFpIVmpaWEpjYmlBcUlFQmxlSFJsYm1SeklIdFNaV1IxWTJWeWZWeHVJQ292WEc1amJHRnpjeUJRVTFCRlVtVmtkV05sY2lCbGVIUmxibVJ6SUZKbFpIVmpaWElnZTF4dUlDQndjbTkwWldOMFpXUWdjbVZrZFdObGNqb2dVRk5RUlVKaGMyVTdYRzVjYmlBZ0x5b3FYRzRnSUNBcUlFTnlaV0YwWlhNZ1lXNGdhVzV6ZEdGdVkyVWdiMllnVUZOUVJWSmxaSFZqWlhJdVhHNGdJQ0FxSUVCd1lYSmhiU0I3VDNCMGFXOXVjMzBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnZEdobElHTnZibk4wY25WamRHOXlMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdVRk5RUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dVRk5RUlVKaGMyVW9iM0IwYVc5dWN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUlcxaVpXUnpJSFJvWlNCa1lYUmhJR2RwZG1WdUlHbHVkRzhnZEdobElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QjBhR1VnYlc5a2FXWnBaV1FnVTFCRklHMWxkR2h2WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFMMXh1SUNCd2RXSnNhV01nZEhKaGJuTm1iM0p0S0NrNklIc2dXMnRsZVRvZ2MzUnlhVzVuWFRvZ1RXRjBjbWw0SUgwZ2UxeHVJQ0FnSUdOdmJuTjBJR1Z0WWlBOUlIUm9hWE11Y21Wa2RXTmxjaTVsYldKbFpDaDBhR2x6TG1SaGRHRXBPMXh1SUNBZ0lISmxkSFZ5YmlCN1pHbHpkR0Z1WTJVNklIUm9hWE11Y21Wa2RXTmxjaTVrYVhOMFlXNWpaU3dnWlcxaVpXUmthVzVuT2lCbGJXSjlPMXh1SUNCOVhHNTlYRzVjYmk4cUtseHVJQ29nU1cxd2JHVnRaVzUwY3lCdmNtbG5hVzVoYkNCVFVFVWdaR2x0Wlc1emFXOXVZV3hwZEhrZ2NtVmtkV04wYVc5dUxseHVJQ3BjYmlBcUlFQmpiR0Z6Y3lCUGNtbG5hVzVoYkZOUVJWSmxaSFZqWlhKY2JpQXFJRUJsZUhSbGJtUnpJSHRTWldSMVkyVnlmVnh1SUNvdlhHNWpiR0Z6Y3lCUGNtbG5hVzVoYkZOUVJWSmxaSFZqWlhJZ1pYaDBaVzVrY3lCU1pXUjFZMlZ5SUh0Y2JpQWdjSEp2ZEdWamRHVmtJSEpsWkhWalpYSTZJRTl5YVdkcGJtRnNVMUJGTzF4dVhHNGdJQzhxS2x4dUlDQWdLaUJEY21WaGRHVnpJR0Z1SUdsdWMzUmhibU5sSUc5bUlFOXlhV2RwYm1Gc1UxQkZVbVZrZFdObGNpNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0UGNIUnBiMjV6ZlNCdmNIUnBiMjV6SUU5d2RHbHZibk1nZEc4Z2NHRnpjeUIwYnlCMGFHVWdZMjl1YzNSeWRXTjBiM0l1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJQY21sbmFXNWhiRk5RUlZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHOXdkR2x2Ym5NNklFOXdkR2x2Ym5NcElIdGNiaUFnSUNCemRYQmxjaWh2Y0hScGIyNXpLVHRjYmlBZ0lDQjBhR2x6TG5KbFpIVmpaWElnUFNCdVpYY2dUM0pwWjJsdVlXeFRVRVVvYjNCMGFXOXVjeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1JXMWlaV1J6SUhSb1pTQmtZWFJoSUdkcGRtVnVJR2x1ZEc4Z2RHaGxJSFIzYnkxa2FXMWxibk5wYjI1aGJDQnpjR0ZqWlNCMWMybHVaeUIwYUdVZ2IzSnBaMmx1WVd3Z1UxQkZJRzFsZEdodlpDNWNiaUFnSUNvZ1FISmxkSFZ5YmlCN1lXNTVmU0JEWVhKMFpYTnBZVzRnWTI5dmNtUnBibUYwWlNCdlppQjBhR2x6SUdWdFltVmtaR2x1WnlCaGJtUWdaR2x6ZEdGdVkyVWdiV0YwY21sNElIZG9aWEpsSUdGd2NHeHBZMkZpYkdVdVhHNGdJQ0FxTDF4dUlDQndkV0pzYVdNZ2RISmhibk5tYjNKdEtDazZJSHNnVzJ0bGVUb2djM1J5YVc1blhUb2dUV0YwY21sNElIMGdlMXh1SUNBZ0lHTnZibk4wSUdWdFlpQTlJSFJvYVhNdWNtVmtkV05sY2k1bGJXSmxaQ2gwYUdsekxtUmhkR0VwTzF4dUlDQWdJSEpsZEhWeWJpQjdaR2x6ZEdGdVkyVTZJSFJvYVhNdWNtVmtkV05sY2k1a2FYTjBZVzVqWlN3Z1pXMWlaV1JrYVc1bk9pQmxiV0o5TzF4dUlDQjlYRzU5WEc1Y2JtTnZibk4wSUVGMllXbHNZV0pzWlZKbFpIVmpaWEp6SUQwZ2UxeHVJQ0FuVlUxQlVDYzZJRlZOUVZCU1pXUjFZMlZ5TEZ4dUlDQW5kQzFUVGtVbk9pQlVVMDVGVW1Wa2RXTmxjaXhjYmlBZ0oxTlFSU2M2SUZOUVJWSmxaSFZqWlhJc1hHNGdJQ2R3VTFCRkp6b2dVRk5RUlZKbFpIVmpaWElzWEc0Z0lDZFBjbWxuYVc1aGJGTlFSU2M2SUU5eWFXZHBibUZzVTFCRlVtVmtkV05sY2l4Y2JuMDdYRzVjYm1WNGNHOXlkQ0IwZVhCbElFdHViM2R1VFdWMGFHOWtjeUE5SUd0bGVXOW1JSFI1Y0dWdlppQkJkbUZwYkdGaWJHVlNaV1IxWTJWeWN6dGNibHh1THlvcVhHNGdLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITXVYRzRnS2x4dUlDb2dRR1Y0Y0c5eWRGeHVJQ29nUUdOc1lYTnpJRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHRaVzV6YVc5dVlXeHBkSGxTWldSMVkyVnlJSHRjYmlBZ2NISnBkbUYwWlNCeVpXUjFZMlZ5T2lCU1pXUjFZMlZ5SUh3Z2RXNWtaV1pwYm1Wa08xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2k1Y2JpQWdJQ29nUUhCaGNtRnRJSHRoYm5sYlhYMGdaR0YwWVNCV1pXTjBiM0p6SUhSdklHVnRZbVZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBhRzlrYzMwZ2JXVjBhRzlrSUVWdFltVmtaR2x1WnlCdFpYUm9iMlFnZEc4Z1ltVWdZWEJ3YkdsbFpGeHVJQ0FnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwY21samMzMGdiV1YwY21saklFUnBjM1JoYm1ObElHMWxkSEpwWXlCMGJ5QmlaU0JqYjIxd2RYUmxaQ0JpWlhSM1pXVnVJR1ZoWTJnZ2IyWWdkR2hsSUhabFkzUnZjbk11WEc0Z0lDQXFJRUJ3WVhKaGJTQjdUM0IwYVc5dWMzMGdXMjl3ZEdsdmJuTmRJRTl3ZEdsdmJuTWdkRzhnY0dGemN5QjBieUIwYUdVZ2FXMXdiR1Z0Wlc1MGFXNW5JR1Z0WW1Wa1pHVnljeTVjYmlBZ0lDb2dRRzFsYldKbGNtOW1JRVJwYldWdWMybHZibUZzYVhSNVVtVmtkV05sY2x4dUlDQWdLaTljYmlBZ1kyOXVjM1J5ZFdOMGIzSW9aR0YwWVRvZ1lXNTVXMTBzSUcxbGRHaHZaRG9nUzI1dmQyNU5aWFJvYjJSekxDQnRaWFJ5YVdNNklFdHViM2R1VFdWMGNtbGpjeXdnYjNCMGFXOXVjejg2SUU5d2RHbHZibk1wSUh0Y2JpQWdJQ0JqYjI1emRDQnRaV0Z6ZFhKbElEMGdibVYzSUUxbFlYTjFjbVVvYldWMGNtbGpLUzVuWlhSTlpXRnpkWEpsS0NrN1hHNGdJQ0FnYkdWMElITndaV05QY0hScGIyNXpJRDBnZTMwN1hHNWNiaUFnSUNCcFppQW9hWE5DYVhSQmNuSmhlVTFsZEhKcFl5aHRaWFJ5YVdNcEtTQjdYRzRnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJR1JoZEdFdWJHVnVaM1JvT3lBcksya3BJSHRjYmlBZ0lDQWdJQ0FnWkdGMFlWdHBYU0E5SUc1bGR5QkNhWFJCY25KaGVTaGtZWFJoVzJsZExsOWtZWFJoTENCa1lYUmhXMmxkTGw5c1pXNW5kR2dwTzF4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmx4dUlDQWdJR2xtSUNodFpYUm9iMlFnUFQwZ0oxVk5RVkFuS1NCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHRjYmlBZ0lDQWdJQ0FnTGk0dWUyUmhkR0U2SUdSaGRHRjlMRnh1SUNBZ0lDQWdJQ0F1TGk1N1pHbHpkR0Z1WTJWR2Jqb2diV1ZoYzNWeVpYMHNYRzRnSUNBZ0lDQWdJQzR1TG50dVJYQnZZMmh6T2lCdmNIUnBiMjV6UHk1amVXTnNaWE45TEZ4dUlDQWdJQ0FnSUNBdUxpNXZjSFJwYjI1ekxGeHVJQ0FnSUNBZ2ZUdGNiaUFnSUNCOUlHVnNjMlVnYVdZZ0tHMWxkR2h2WkNBOVBTQW5kQzFUVGtVbktTQjdYRzRnSUNBZ0lDQnpjR1ZqVDNCMGFXOXVjeUE5SUh0Y2JpQWdJQ0FnSUNBZ0xpNHVlMlJoZEdFNklHUmhkR0Y5TEZ4dUlDQWdJQ0FnSUNBdUxpNTdaR2x6ZEdGdVkyVTZJRzFsWVhOMWNtVjlMRnh1SUNBZ0lDQWdJQ0F1TGk1N2FYUmxjbUYwYVc5dWN6b2diM0IwYVc5dWN6OHVZM2xqYkdWeklEOC9JSFZ1WkdWbWFXNWxaSDBzWEc0Z0lDQWdJQ0FnSUM0dUxtOXdkR2x2Ym5Nc1hHNGdJQ0FnSUNCOU8xeHVJQ0FnSUgwZ1pXeHpaU0JwWmlBb2JXVjBhRzlrSUQwOUlDZFRVRVVuS1NCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHN1TGk1N1pHRjBZVG9nWkdGMFlYMHNJQzR1TG50a2FYTjBZVzVqWlRvZ2JXVmhjM1Z5Wlgwc0lDNHVMbTl3ZEdsdmJuTjlPMXh1SUNBZ0lIMGdaV3h6WlNCN1hHNGdJQ0FnSUNCemNHVmpUM0IwYVc5dWN5QTlJSHN1TGk1N1pHRjBZVG9nWkdGMFlYMHNJQzR1TG50a2FYTjBZVzVqWlRvZ2JXVmhjM1Z5Wlgwc0lDNHVMbTl3ZEdsdmJuTjlPMXh1SUNBZ0lIMWNiaUFnSUNCMGFHbHpMbkpsWkhWalpYSWdQU0J1WlhjZ1FYWmhhV3hoWW14bFVtVmtkV05sY25OYmJXVjBhRzlrWFNoemNHVmpUM0IwYVc5dWN5azdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUlcxaVpXUnpJSFJvWlNCa1lYUmhJR2RwZG1WdUlHbHVkRzhnZEdobElIUjNieTFrYVcxbGJuTnBiMjVoYkNCemNHRmpaU0IxYzJsdVp5QjBhR1VnWTJodmMyVnVJRzFsZEdodlpDNWNiaUFnSUNwY2JpQWdJQ29nUUhCaGNtRnRJSHRpYjI5c1pXRnVmU0IwY21GdWMzQnZjMlVnVjJobGRHaGxjaUIwYnlCMGNtRnVjMlp2Y20wZ1kyOXZjbVJwYm1GMFpYTWdkRzhnYUdGMlpTQmpiMngxYlc1ekxXWnBjbk4wSUc5eWFXVnVkR0YwYVc5dUxseHVJQ0FnS2lCQWRHaHliM2R6SUh0RmNuSnZjbjBnU1dZZ2RHaGxJR1Z0WW1Wa1pHbHVaeUJ0WlhSb2IyUWdkMkZ6SUc1dmRDQm1iM1Z1WkM1Y2JpQWdJQ29nUUhKbGRIVnliaUI3WVc1NWZTQkRZWEowWlhOcFlXNGdZMjl2Y21ScGJtRjBaU0J2WmlCMGFHbHpJR1Z0WW1Wa1pHbHVaeUJoYm1RZ1pHbHpkR0Z1WTJVZ2JXRjBjbWw0SUhkb1pYSmxJR0Z3Y0d4cFkyRmliR1V1WEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJFYVcxbGJuTnBiMjVoYkdsMGVWSmxaSFZqWlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCMGNtRnVjMlp2Y20wb2RISmhibk53YjNObE9pQmliMjlzWldGdUlEMGdabUZzYzJVcE9pQjdJRnRyWlhrNklITjBjbWx1WjEwNklFMWhkSEpwZUNCOUlIdGNiaUFnSUNCcFppQW9kR2hwY3k1eVpXUjFZMlZ5SUQwOUlIVnVaR1ZtYVc1bFpDa2dlMXh1SUNBZ0lDQWdkR2h5YjNjZ2JtVjNJRVZ5Y205eUtDZFNaV1IxWTJWeUlIZGhjeUJ1YjNRZ1pHVm1hVzVsWkM0bktUdGNiaUFnSUNCOVhHNWNiaUFnSUNCc1pYUWdlMlZ0WW1Wa1pHbHVaeXdnWkdsemRHRnVZMlY5SUQwZ2RHaHBjeTV5WldSMVkyVnlMblJ5WVc1elptOXliU2dwTzF4dVhHNGdJQ0FnYVdZZ0tIUnlZVzV6Y0c5elpTa2dlMXh1SUNBZ0lDQWdaVzFpWldSa2FXNW5JRDBnZEhKaGJuTndiM05sVFdGMGNtbDRLR1Z0WW1Wa1pHbHVaeWs3WEc0Z0lDQWdmVnh1SUNBZ0lISmxkSFZ5YmlCN1pHbHpkR0Z1WTJVNklHUnBjM1JoYm1ObExDQmxiV0psWkdScGJtYzZJR1Z0WW1Wa1pHbHVaMzA3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCdFpYUnlhV056SUdGMllXbHNZV0pzWlNCaWVTQjBlWEJsTGx4dUlDQWdLbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UwRjJZV2xzWVdKc1pVUmhkR0ZVZVhCbGMzMGdkSGx3WlU1aGJXVWdkSGx3WlNCdVlXMWxYRzRnSUNBcUlFQnlaWFIxY200Z2UzTjBjbWx1WjF0ZGZTQk5aWFJ5YVdNZ2JtRnRaWE1nZDJocFkyZ2daWGh3WldOMGN5QjBhR1VnWjJsMlpXNGdaR0YwWVNCMGVYQmxYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJoZG1GcGJHRmliR1ZOWlhSeWFXTnpRbmxVZVhCbEtIUjVjR1ZPWVcxbE9pQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTXBJSHRjYmlBZ0lDQnlaWFIxY200Z1QySnFaV04wTG10bGVYTW9RWFpoYVd4aFlteGxUV1YwY21samMxdDBlWEJsVG1GdFpWMHBPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWkdsdFpXNXphVzl1WVd4cGRIa2djbVZrZFdOMGFXOXVJRzFsZEdodlpITWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tseHVJQ0FnS2lCQWNtVmhaRzl1YkhsY2JpQWdJQ29nUUcxbGJXSmxjbTltSUVScGJXVnVjMmx2Ym1Gc2FYUjVVbVZrZFdObGNseHVJQ0FnS2k5Y2JpQWdjM1JoZEdsaklHZGxkQ0JoZG1GcGJHRmliR1ZOWlhSb2IyUnpLQ2tnZTF4dUlDQWdJSEpsZEhWeWJpQlBZbXBsWTNRdWEyVjVjeWhCZG1GcGJHRmliR1ZTWldSMVkyVnljeWs3WEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1VtVjBkWEp1Y3lCdFpYUnlhV056SUdGMllXbHNZV0pzWlM1Y2JpQWdJQ3BjYmlBZ0lDb2dRSEpsWVdSdmJteDVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQkVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWEpjYmlBZ0lDb3ZYRzRnSUhOMFlYUnBZeUJuWlhRZ1lYWmhhV3hoWW14bFRXVjBjbWxqY3lncElIdGNiaUFnSUNCc1pYUWdZVzV6T2lCemRISnBibWRiWFNBOUlGdGRPMXh1SUNBZ0lFOWlhbVZqZEM1MllXeDFaWE1vUVhaaGFXeGhZbXhsVFdWMGNtbGpjeWt1Wm05eVJXRmphQ2dvYjJKcUtTQTlQaUI3WEc0Z0lDQWdJQ0JqYjI1emRDQmhjbkpoZVNBOUlFOWlhbVZqZEM1MllXeDFaWE1vYjJKcUtUdGNiaUFnSUNBZ0lHRnVjeUE5SUZzdUxpNWhibk1zSUM0dUxtRnljbUY1WFR0Y2JpQWdJQ0I5S1R0Y2JpQWdJQ0J5WlhSMWNtNGdZVzV6TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBEaW1lbnNpb25hbGl0eVJlZHVjZXIgfSBmcm9tICcuLi9yZWR1Y2UtZGltZW5zaW9uYWxpdHknO1xuLyoqXG4gKiBXb3JrZXIgdGhyZWFkIHJlY2VpdmluZyBkYXRhIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7YW55W119IGNvbHVtbkRhdGEgU2FtcGxlcyB0byBwcm9jZXNzLlxuICogQHBhcmFtIHtLbm93bk1ldGhvZHN9IG1ldGhvZCBFbWJlZGRpbmcgbWV0aG9kLlxuICogQHBhcmFtIHtLbm93bk1ldHJpY3N9IG1lYXN1cmUgRGlzdGFuY2UgbWV0cmljLlxuICogQHBhcmFtIHthbnl9IG9wdGlvbnMgT3B0aW9ucyB0byBwYXNzIHRvIGFsZ29yaXRobS5cbiAqIEByZXR1cm4ge2FueX0gRW1iZWRkaW5nIChhbmQgZGlzdGFuY2UgbWF0cml4IHdoZXJlIGFwcGxpY2FibGUpLlxuICovXG5mdW5jdGlvbiBvbk1lc3NhZ2UoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgcmVkdWNlciA9IG5ldyBEaW1lbnNpb25hbGl0eVJlZHVjZXIoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKTtcbiAgICByZXR1cm4gcmVkdWNlci50cmFuc2Zvcm0odHJ1ZSk7XG59XG5zZWxmLm9ubWVzc2FnZSA9ICh7IGRhdGE6IHsgY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zIH0gfSkgPT4ge1xuICAgIGxldCBkYXRhO1xuICAgIHRyeSB7XG4gICAgICAgIGRhdGEgPSBvbk1lc3NhZ2UoY29sdW1uRGF0YSwgbWV0aG9kLCBtZWFzdXJlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZGF0YSA9IHsgZXJyb3I6IGUgfTtcbiAgICB9XG4gICAgc2VsZi5wb3N0TWVzc2FnZSh7XG4gICAgICAgIGVycm9yOiBkYXRhLmVycm9yLFxuICAgICAgICBkaXN0YW5jZTogZGF0YS5kaXN0YW5jZSxcbiAgICAgICAgZW1iZWRkaW5nOiBkYXRhLmVtYmVkZGluZyxcbiAgICB9KTtcbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x0Wlc1emFXOXVZV3hwZEhrdGNtVmtkV05sY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbVJwYldWdWMybHZibUZzYVhSNUxYSmxaSFZqWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzVDBGQlR5eEZRVUZETEhGQ1FVRnhRaXhGUVVGbExFMUJRVTBzTUVKQlFUQkNMRU5CUVVNN1FVRkhOMFU3T3pzN096czdPMGRCVVVjN1FVRkRTQ3hUUVVGVExGTkJRVk1zUTBGQlF5eFZRVUZwUWl4RlFVRkZMRTFCUVc5Q0xFVkJRVVVzVDBGQmNVSXNSVUZCUlN4UFFVRmhPMGxCUXpsR0xFMUJRVTBzVDBGQlR5eEhRVUZITEVsQlFVa3NjVUpCUVhGQ0xFTkJRM1pETEZWQlFWVXNSVUZEVml4TlFVRk5MRVZCUTA0c1QwRkJUeXhGUVVOUUxFOUJRVThzUTBGRFVpeERRVUZETzBsQlEwWXNUMEZCVHl4UFFVRlBMRU5CUVVNc1UwRkJVeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEycERMRU5CUVVNN1FVRkZSQ3hKUVVGSkxFTkJRVU1zVTBGQlV5eEhRVUZITEVOQlFVTXNSVUZCUXl4SlFVRkpMRVZCUVVVc1JVRkJReXhWUVVGVkxFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4UFFVRlBMRVZCUVVNc1JVRkJReXhGUVVGRkxFVkJRVVU3U1VGRGJFVXNTVUZCU1N4SlFVRnZSQ3hEUVVGRE8wbEJRM3BFTEVsQlFVYzdVVUZEUkN4SlFVRkpMRWRCUVVjc1UwRkJVeXhEUVVGRExGVkJRVlVzUlVGQlJTeE5RVUZOTEVWQlFVVXNUMEZCVHl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRM2hFTzBsQlFVTXNUMEZCVHl4RFFVRk5MRVZCUVVVN1VVRkRaaXhKUVVGSkxFZEJRVWNzUlVGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXl4RlFVRkRMRU5CUVVNN1MwRkRia0k3U1VGRFJDeEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRPMUZCUTJZc1MwRkJTeXhGUVVGRkxFbEJRVWtzUTBGQlF5eExRVUZMTzFGQlEycENMRkZCUVZFc1JVRkJSU3hKUVVGSkxFTkJRVU1zVVVGQlVUdFJRVU4yUWl4VFFVRlRMRVZCUVVVc1NVRkJTU3hEUVVGRExGTkJRVk03UzBGRE1VSXNRMEZCUXl4RFFVRkRPMEZCUTB3c1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdEVhVzFsYm5OcGIyNWhiR2wwZVZKbFpIVmpaWElzSUV0dWIzZHVUV1YwYUc5a2MzMGdabkp2YlNBbkxpNHZjbVZrZFdObExXUnBiV1Z1YzJsdmJtRnNhWFI1Snp0Y2JtbHRjRzl5ZENCN1MyNXZkMjVOWlhSeWFXTnpmU0JtY205dElDY3VMaTkwZVhCbFpDMXRaWFJ5YVdOekwzUjVjR1ZrTFcxbGRISnBZM01uTzF4dVhHNHZLaXBjYmlBcUlGZHZjbXRsY2lCMGFISmxZV1FnY21WalpXbDJhVzVuSUdSaGRHRWdablZ1WTNScGIyNHVYRzRnS2x4dUlDb2dRSEJoY21GdElIdGhibmxiWFgwZ1kyOXNkVzF1UkdGMFlTQlRZVzF3YkdWeklIUnZJSEJ5YjJObGMzTXVYRzRnS2lCQWNHRnlZVzBnZTB0dWIzZHVUV1YwYUc5a2MzMGdiV1YwYUc5a0lFVnRZbVZrWkdsdVp5QnRaWFJvYjJRdVhHNGdLaUJBY0dGeVlXMGdlMHR1YjNkdVRXVjBjbWxqYzMwZ2JXVmhjM1Z5WlNCRWFYTjBZVzVqWlNCdFpYUnlhV011WEc0Z0tpQkFjR0Z5WVcwZ2UyRnVlWDBnYjNCMGFXOXVjeUJQY0hScGIyNXpJSFJ2SUhCaGMzTWdkRzhnWVd4bmIzSnBkR2h0TGx4dUlDb2dRSEpsZEhWeWJpQjdZVzU1ZlNCRmJXSmxaR1JwYm1jZ0tHRnVaQ0JrYVhOMFlXNWpaU0J0WVhSeWFYZ2dkMmhsY21VZ1lYQndiR2xqWVdKc1pTa3VYRzRnS2k5Y2JtWjFibU4wYVc5dUlHOXVUV1Z6YzJGblpTaGpiMngxYlc1RVlYUmhPaUJoYm5sYlhTd2diV1YwYUc5a09pQkxibTkzYmsxbGRHaHZaSE1zSUcxbFlYTjFjbVU2SUV0dWIzZHVUV1YwY21samN5d2diM0IwYVc5dWN6ODZJR0Z1ZVNrNklIdGthWE4wWVc1alpUODZJR0Z1ZVN3Z1pXMWlaV1JrYVc1blB6b2dZVzU1ZlNCN1hHNGdJR052Ym5OMElISmxaSFZqWlhJZ1BTQnVaWGNnUkdsdFpXNXphVzl1WVd4cGRIbFNaV1IxWTJWeUtGeHVJQ0FnSUdOdmJIVnRia1JoZEdFc1hHNGdJQ0FnYldWMGFHOWtMRnh1SUNBZ0lHMWxZWE4xY21Vc1hHNGdJQ0FnYjNCMGFXOXVjeXhjYmlBZ0tUdGNiaUFnY21WMGRYSnVJSEpsWkhWalpYSXVkSEpoYm5ObWIzSnRLSFJ5ZFdVcE8xeHVmVnh1WEc1elpXeG1MbTl1YldWemMyRm5aU0E5SUNoN1pHRjBZVG9nZTJOdmJIVnRia1JoZEdFc0lHMWxkR2h2WkN3Z2JXVmhjM1Z5WlN3Z2IzQjBhVzl1YzMxOUtTQTlQaUI3WEc0Z0lHeGxkQ0JrWVhSaE9pQjdaWEp5YjNJL09pQmhibmtzSUdScGMzUmhibU5sUHpvZ1lXNTVMQ0JsYldKbFpHUnBibWMvT2lCaGJubDlPMXh1SUNCMGNubDdYRzRnSUNBZ1pHRjBZU0E5SUc5dVRXVnpjMkZuWlNoamIyeDFiVzVFWVhSaExDQnRaWFJvYjJRc0lHMWxZWE4xY21Vc0lHOXdkR2x2Ym5NcE8xeHVJQ0I5SUdOaGRHTm9JQ2hsT2lCaGJua3BJSHRjYmlBZ0lDQmtZWFJoSUQwZ2UyVnljbTl5T2lCbGZUdGNiaUFnZlZ4dUlDQnpaV3htTG5CdmMzUk5aWE56WVdkbEtIdGNiaUFnSUNCbGNuSnZjam9nWkdGMFlTNWxjbkp2Y2l4Y2JpQWdJQ0JrYVhOMFlXNWpaVG9nWkdGMFlTNWthWE4wWVc1alpTeGNiaUFnSUNCbGJXSmxaR1JwYm1jNklHUmhkR0V1WlcxaVpXUmthVzVuTEZ4dUlDQjlLVHRjYm4wN1hHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRTTkUgPSB2b2lkIDA7XG52YXIgdHNuZV8xID0gcmVxdWlyZShcIi4vdHNuZVwiKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIlRTTkVcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRzbmVfMS5UU05FOyB9IH0pO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLlRTTkUgPSB2b2lkIDA7XG5jbGFzcyBUU05FIHtcbiAgICBjb25zdHJ1Y3RvcihvcHQpIHtcbiAgICAgICAgLy8gcmV0dXJuIDAgbWVhbiB1bml0IHN0YW5kYXJkIGRldmlhdGlvbiByYW5kb20gbnVtYmVyXG4gICAgICAgIHRoaXMucmV0dXJuViA9IGZhbHNlO1xuICAgICAgICB0aGlzLnZWYWx1ZSA9IDAuMDtcbiAgICAgICAgdGhpcy5pdGVyID0gMDtcbiAgICAgICAgb3B0ID0gb3B0IHx8IHt9O1xuICAgICAgICB0aGlzLnBlcnBsZXhpdHkgPSB0aGlzLmdldG9wdChvcHQsICdwZXJwbGV4aXR5JywgMzApOyAvLyBlZmZlY3RpdmUgbnVtYmVyIG9mIG5lYXJlc3QgbmVpZ2hib3JzXG4gICAgICAgIHRoaXMuZGltID0gdGhpcy5nZXRvcHQob3B0LCAnZGltJywgMik7IC8vIGJ5IGRlZmF1bHQgMi1EIHRTTkVcbiAgICAgICAgdGhpcy5lcHNpbG9uID0gdGhpcy5nZXRvcHQob3B0LCAnZXBzaWxvbicsIDEwKTsgLy8gbGVhcm5pbmcgcmF0ZVxuICAgIH1cbiAgICBhc3NlcnQoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gICAgICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBtZXNzYWdlIHx8ICdBc3NlcnRpb24gZmFpbGVkJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBzeW50YXggc3VnYXJcbiAgICBnZXRvcHQob3B0LCBmaWVsZCwgZGVmYXVsdHZhbCkge1xuICAgICAgICBpZiAob3B0Lmhhc093blByb3BlcnR5KGZpZWxkKSkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdFtmaWVsZF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdHZhbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnYXVzc1JhbmRvbSgpIHtcbiAgICAgICAgaWYgKHRoaXMucmV0dXJuVikge1xuICAgICAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy52VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdSA9IDIgKiBNYXRoLnJhbmRvbSgpIC0gMTtcbiAgICAgICAgY29uc3QgdiA9IDIgKiBNYXRoLnJhbmRvbSgpIC0gMTtcbiAgICAgICAgY29uc3QgciA9IHUgKiB1ICsgdiAqIHY7XG4gICAgICAgIGlmIChyID09PSAwIHx8IHIgPiAxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nYXVzc1JhbmRvbSgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGMgPSBNYXRoLnNxcnQoLTIgKiBNYXRoLmxvZyhyKSAvIHIpO1xuICAgICAgICB0aGlzLnZWYWx1ZSA9IHYgKiBjOyAvLyBjYWNoZSB0aGlzIGZvciBuZXh0IGZ1bmN0aW9uIGNhbGwgZm9yIGVmZmljaWVuY3lcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHUgKiBjO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcmFuZG9tIG5vcm1hbCBudW1iZXJcbiAgICByYW5kbihtdSwgc3RkKSB7IHJldHVybiBtdSArIHRoaXMuZ2F1c3NSYW5kb20oKSAqIHN0ZDsgfVxuICAgIC8vIHV0aWxpdGl0eSB0aGF0IGNyZWF0ZXMgY29udGlndW91cyB2ZWN0b3Igb2YgemVyb3Mgb2Ygc2l6ZSBuXG4gICAgemVyb3Mobikge1xuICAgICAgICBpZiAodHlwZW9mIChuKSA9PT0gJ3VuZGVmaW5lZCcgfHwgaXNOYU4obikpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIEFycmF5QnVmZmVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgLy8gbGFja2luZyBicm93c2VyIHN1cHBvcnRcbiAgICAgICAgICAgIGNvbnN0IGFyciA9IG5ldyBBcnJheShuKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJyW2ldID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcnI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEZsb2F0NjRBcnJheShuKTsgLy8gdHlwZWQgYXJyYXlzIGFyZSBmYXN0ZXJcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyB1dGlsaXR5IHRoYXQgcmV0dXJucyAyZCBhcnJheSBmaWxsZWQgd2l0aCByYW5kb20gbnVtYmVyc1xuICAgIC8vIG9yIHdpdGggdmFsdWUgcywgaWYgcHJvdmlkZWRcbiAgICByYW5kbjJkKG4sIGQsIHMpIHtcbiAgICAgICAgY29uc3QgdXNlcyA9IHR5cGVvZiBzICE9PSAndW5kZWZpbmVkJztcbiAgICAgICAgY29uc3QgeCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeGhlcmUgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaChzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHhoZXJlLnB1c2godGhpcy5yYW5kbigwLjAsIDFlLTQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB4LnB1c2goeGhlcmUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIEwyIGRpc3RhbmNlIGJldHdlZW4gdHdvIHZlY3RvcnNcbiAgICBMMih4MSwgeDIpIHtcbiAgICAgICAgY29uc3QgRCA9IHgxLmxlbmd0aDtcbiAgICAgICAgbGV0IGQgPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IEQ7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgeDFpID0geDFbaV07XG4gICAgICAgICAgICBjb25zdCB4MmkgPSB4MltpXTtcbiAgICAgICAgICAgIGQgKz0gKHgxaSAtIHgyaSkgKiAoeDFpIC0geDJpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBwYWlyd2lzZSBkaXN0YW5jZSBpbiBhbGwgdmVjdG9ycyBpbiBYXG4gICAgeHRvZChYKSB7XG4gICAgICAgIGNvbnN0IE4gPSBYLmxlbmd0aDtcbiAgICAgICAgY29uc3QgZGlzdCA9IHRoaXMuemVyb3MoTiAqIE4pOyAvLyBhbGxvY2F0ZSBjb250aWd1b3VzIGFycmF5XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBOOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gdGhpcy5MMihYW2ldLCBYW2pdKTtcbiAgICAgICAgICAgICAgICBkaXN0W2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RbaiAqIE4gKyBpXSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRpc3Q7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgKHBfe2l8an0gKyBwX3tqfGl9KS8oMm4pXG4gICAgZDJwKEQsIHBlcnBsZXhpdHksIHRvbCkge1xuICAgICAgICBjb25zdCBuZiA9IE1hdGguc3FydChELmxlbmd0aCk7IC8vIHRoaXMgYmV0dGVyIGJlIGFuIGludGVnZXJcbiAgICAgICAgY29uc3QgbiA9IE1hdGguZmxvb3IobmYpO1xuICAgICAgICB0aGlzLmFzc2VydChuID09PSBuZiwgJ0Qgc2hvdWxkIGhhdmUgc3F1YXJlIG51bWJlciBvZiBlbGVtZW50cy4nKTtcbiAgICAgICAgY29uc3QgaFRhcmdldCA9IE1hdGgubG9nKHBlcnBsZXhpdHkpOyAvLyB0YXJnZXQgZW50cm9weSBvZiBkaXN0cmlidXRpb25cbiAgICAgICAgY29uc3QgUCA9IHRoaXMuemVyb3MobiAqIG4pOyAvLyB0ZW1wb3JhcnkgcHJvYmFiaWxpdHkgbWF0cml4XG4gICAgICAgIGNvbnN0IHByb3cgPSB0aGlzLnplcm9zKG4pOyAvLyBhIHRlbXBvcmFyeSBzdG9yYWdlIGNvbXBhcnRtZW50XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgYmV0YW1pbiA9IC1JbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhbWF4ID0gSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YSA9IDE7IC8vIGluaXRpYWwgdmFsdWUgb2YgcHJlY2lzaW9uXG4gICAgICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgY29uc3QgbWF4dHJpZXMgPSA1MDtcbiAgICAgICAgICAgIC8vIHBlcmZvcm0gYmluYXJ5IHNlYXJjaCB0byBmaW5kIGEgc3VpdGFibGUgcHJlY2lzaW9uIGJldGFcbiAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIGVudHJvcHkgb2YgdGhlIGRpc3RyaWJ1dGlvbiBpcyBhcHByb3ByaWF0ZVxuICAgICAgICAgICAgbGV0IG51bSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAoIWRvbmUpIHtcbiAgICAgICAgICAgICAgICAvL2RlYnVnZ2VyO1xuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgZW50cm9weSBhbmQga2VybmVsIHJvdyB3aXRoIGJldGEgcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgbGV0IHBzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqID0gTWF0aC5leHAoLURbaSAqIG4gKyBqXSAqIGJldGEpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gaikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9IC8vIHdlIGRvbnQgY2FyZSBhYm91dCBkaWFnb25hbHNcbiAgICAgICAgICAgICAgICAgICAgcHJvd1tqXSA9IHBqO1xuICAgICAgICAgICAgICAgICAgICBwc3VtICs9IHBqO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBub3JtYWxpemUgcCBhbmQgY29tcHV0ZSBlbnRyb3B5XG4gICAgICAgICAgICAgICAgbGV0IG5IZXJlID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBzdW0gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gcHJvd1tqXSAvIHBzdW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcHJvd1tqXSA9IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGogPiAxZS03KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuSGVyZSAtPSBwaiAqIE1hdGgubG9nKHBqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBhZGp1c3QgYmV0YSBiYXNlZCBvbiByZXN1bHRcbiAgICAgICAgICAgICAgICBpZiAobkhlcmUgPiBoVGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVudHJvcHkgd2FzIHRvbyBoaWdoIChkaXN0cmlidXRpb24gdG9vIGRpZmZ1c2UpXG4gICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gaW5jcmVhc2UgdGhlIHByZWNpc2lvbiBmb3IgbW9yZSBwZWFreSBkaXN0cmlidXRpb25cbiAgICAgICAgICAgICAgICAgICAgYmV0YW1pbiA9IGJldGE7IC8vIG1vdmUgdXAgdGhlIGJvdW5kc1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmV0YW1heCA9PT0gSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhICogMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtYXgpIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29udmVyc2UgY2FzZS4gbWFrZSBkaXN0cnVidGlvbiBsZXNzIHBlYWt5XG4gICAgICAgICAgICAgICAgICAgIGJldGFtYXggPSBiZXRhO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYmV0YW1pbiA9PT0gLUluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gKGJldGEgKyBiZXRhbWluKSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gc3RvcHBpbmcgY29uZGl0aW9uczogdG9vIG1hbnkgdHJpZXMgb3IgZ290IGEgZ29vZCBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBudW0rKztcbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMobkhlcmUgLSBoVGFyZ2V0KSA8IHRvbCkge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG51bSA+PSBtYXh0cmllcykge1xuICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnZGF0YSBwb2ludCAnICsgaSArICcgZ2V0cyBwcmVjaXNpb24gJyArIGJldGEgKyAnIGFmdGVyICcgKyBudW0gKyAnIGJpbmFyeSBzZWFyY2ggc3RlcHMuJyk7XG4gICAgICAgICAgICAvLyBjb3B5IG92ZXIgdGhlIGZpbmFsIHByb3cgdG8gUCBhdCByb3cgaVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBQW2kgKiBuICsgal0gPSBwcm93W2pdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IC8vIGVuZCBsb29wIG92ZXIgZXhhbXBsZXMgaVxuICAgICAgICAvLyBzeW1tZXRyaXplIFAgYW5kIG5vcm1hbGl6ZSBpdCB0byBzdW0gdG8gMSBvdmVyIGFsbCBpalxuICAgICAgICBjb25zdCBwT3V0ID0gdGhpcy56ZXJvcyhuICogbik7XG4gICAgICAgIGNvbnN0IE4yID0gbiAqIDI7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIHBPdXRbaSAqIG4gKyBqXSA9IE1hdGgubWF4KChQW2kgKiBuICsgal0gKyBQW2ogKiBuICsgaV0pIC8gTjIsIDFlLTEwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBPdXQ7XG4gICAgfVxuICAgIC8vIGhlbHBlciBmdW5jdGlvblxuICAgIHNpZ24oeCkgeyByZXR1cm4geCA+IDAgPyAxIDogeCA8IDAgPyAtMSA6IDA7IH1cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgc2V0IG9mIGhpZ2gtZGltZW5zaW9uYWwgcG9pbnRzXG4gICAgLy8gYW5kIGNyZWF0ZXMgbWF0cml4IFAgZnJvbSB0aGVtIHVzaW5nIGdhdXNzaWFuIGtlcm5lbFxuICAgIGluaXREYXRhUmF3KFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBEID0gWFswXS5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXNzZXJ0KE4gPiAwLCAnIFggaXMgZW1wdHk/IFlvdSBtdXN0IGhhdmUgc29tZSBkYXRhIScpO1xuICAgICAgICB0aGlzLmFzc2VydChEID4gMCwgJyBYWzBdIGlzIGVtcHR5PyBXaGVyZSBpcyB0aGUgZGF0YT8nKTtcbiAgICAgICAgY29uc3QgZGlzdHMgPSB0aGlzLnh0b2QoWCk7IC8vIGNvbnZlcnQgWCB0byBkaXN0YW5jZXMgdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpOyAvLyBhdHRhY2ggdG8gb2JqZWN0XG4gICAgICAgIHRoaXMuTiA9IE47IC8vIGJhY2sgdXAgdGhlIHNpemUgb2YgdGhlIGRhdGFzZXRcbiAgICAgICAgdGhpcy5pbml0U29sdXRpb24oKTsgLy8gcmVmcmVzaCB0aGlzXG4gICAgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBnaXZlbiBkaXN0YW5jZSBtYXRyaXggYW5kIGNyZWF0ZXNcbiAgICAvLyBtYXRyaXggUCBmcm9tIHRoZW0uXG4gICAgLy8gRCBpcyBhc3N1bWVkIHRvIGJlIHByb3ZpZGVkIGFzIGEgbGlzdCBvZiBsaXN0cywgYW5kIHNob3VsZCBiZSBzeW1tZXRyaWNcbiAgICBpbml0RGF0YURpc3QoRCkge1xuICAgICAgICBjb25zdCBOID0gRC5sZW5ndGg7XG4gICAgICAgIHRoaXMuYXNzZXJ0KE4gPiAwLCAnIFggaXMgZW1wdHk/IFlvdSBtdXN0IGhhdmUgc29tZSBkYXRhIScpO1xuICAgICAgICAvLyBjb252ZXJ0IEQgdG8gYSAoZmFzdCkgdHlwZWQgYXJyYXkgdmVyc2lvblxuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMuemVyb3MoTiAqIE4pOyAvLyBhbGxvY2F0ZSBjb250aWd1b3VzIGFycmF5XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBOOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkID0gRFtpXVtqXTtcbiAgICAgICAgICAgICAgICBkaXN0c1tpICogTiArIGpdID0gZDtcbiAgICAgICAgICAgICAgICBkaXN0c1tqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLlAgPSB0aGlzLmQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTtcbiAgICAgICAgdGhpcy5OID0gTjtcbiAgICAgICAgdGhpcy5pbml0U29sdXRpb24oKTsgLy8gcmVmcmVzaCB0aGlzXG4gICAgfVxuICAgIC8vIChyZSlpbml0aWFsaXplcyB0aGUgc29sdXRpb24gdG8gcmFuZG9tXG4gICAgaW5pdFNvbHV0aW9uKCkge1xuICAgICAgICAvLyBnZW5lcmF0ZSByYW5kb20gc29sdXRpb24gdG8gdC1TTkVcbiAgICAgICAgdGhpcy5ZID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0pOyAvLyB0aGUgc29sdXRpb25cbiAgICAgICAgdGhpcy5nYWlucyA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAxLjApOyAvLyBzdGVwIGdhaW5zIHRvIGFjY2VsZXJhdGUgcHJvZ3Jlc3MgaW4gdW5jaGFuZ2luZyBkaXJlY3Rpb25zXG4gICAgICAgIHRoaXMueXN0ZXAgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMC4wKTsgLy8gbW9tZW50dW0gYWNjdW11bGF0b3JcbiAgICAgICAgdGhpcy5pdGVyID0gMDtcbiAgICB9XG4gICAgLy8gcmV0dXJuIHBvaW50ZXIgdG8gY3VycmVudCBzb2x1dGlvblxuICAgIGdldFNvbHV0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ZO1xuICAgIH1cbiAgICAvLyBwZXJmb3JtIGEgc2luZ2xlIHN0ZXAgb2Ygb3B0aW1pemF0aW9uIHRvIGltcHJvdmUgdGhlIGVtYmVkZGluZ1xuICAgIHN0ZXAoKSB7XG4gICAgICAgIHRoaXMuaXRlciArPSAxO1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICAvLyBwZXJmb3JtIGdyYWRpZW50IHN0ZXBcbiAgICAgICAgY29uc3QgeW1lYW4gPSB0aGlzLnplcm9zKHRoaXMuZGltKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdpZCA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3Qgc2lkID0gdGhpcy55c3RlcFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBnYWluaWQgPSB0aGlzLmdhaW5zW2ldW2RdO1xuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgZ2FpbiB1cGRhdGVcbiAgICAgICAgICAgICAgICBsZXQgbmV3Z2FpbiA9IHRoaXMuc2lnbihnaWQpID09PSB0aGlzLnNpZ24oc2lkKSA/IGdhaW5pZCAqIDAuOCA6IGdhaW5pZCArIDAuMjtcbiAgICAgICAgICAgICAgICBpZiAobmV3Z2FpbiA8IDAuMDEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3Z2FpbiA9IDAuMDE7XG4gICAgICAgICAgICAgICAgfSAvLyBjbGFtcFxuICAgICAgICAgICAgICAgIHRoaXMuZ2FpbnNbaV1bZF0gPSBuZXdnYWluOyAvLyBzdG9yZSBmb3IgbmV4dCB0dXJuXG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBtb21lbnR1bSBzdGVwIGRpcmVjdGlvblxuICAgICAgICAgICAgICAgIGNvbnN0IG1vbXZhbCA9IHRoaXMuaXRlciA8IDI1MCA/IDAuNSA6IDAuODtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdzaWQgPSBtb212YWwgKiBzaWQgLSB0aGlzLmVwc2lsb24gKiBuZXdnYWluICogZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICB0aGlzLnlzdGVwW2ldW2RdID0gbmV3c2lkOyAvLyByZW1lbWJlciB0aGUgc3RlcCB3ZSB0b29rXG4gICAgICAgICAgICAgICAgLy8gc3RlcCFcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gKz0gbmV3c2lkO1xuICAgICAgICAgICAgICAgIHltZWFuW2RdICs9IHRoaXMuWVtpXVtkXTsgLy8gYWNjdW11bGF0ZSBtZWFuIHNvIHRoYXQgd2UgY2FuIGNlbnRlciBsYXRlclxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIHJlcHJvamVjdCBZIHRvIGJlIHplcm8gbWVhblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdIC09IHltZWFuW2RdIC8gTjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL2lmKHRoaXMuaXRlciUxMDA9PT0wKSBjb25zb2xlLmxvZygnaXRlciAnICsgdGhpcy5pdGVyICsgJywgY29zdDogJyArIGNvc3QpO1xuICAgICAgICByZXR1cm4gY29zdDsgLy8gcmV0dXJuIGN1cnJlbnQgY29zdFxuICAgIH1cbiAgICAvLyBmb3IgZGVidWdnaW5nOiBncmFkaWVudCBjaGVja1xuICAgIGRlYnVnR3JhZCgpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIGNvbnN0IGNvc3QgPSBjZy5jb3N0O1xuICAgICAgICBjb25zdCBncmFkID0gY2cuZ3JhZDtcbiAgICAgICAgY29uc3QgZSA9IDFlLTU7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCB5b2xkID0gdGhpcy5ZW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgKyBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMCA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkIC0gZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZzEgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgICAgICAgY29uc3QgYW5hbHl0aWMgPSBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IG51bWVyaWNhbCA9IChjZzAuY29zdCAtIGNnMS5jb3N0KSAvICgyICogZSk7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coaSArICcsJyArIGQgKyAnOiBncmFkY2hlY2sgYW5hbHl0aWM6ICcgKyBhbmFseXRpYyArICcgdnMuIG51bWVyaWNhbDogJyArIG51bWVyaWNhbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyByZXR1cm4gY29zdCBhbmQgZ3JhZGllbnQsIGdpdmVuIGFuIGFycmFuZ2VtZW50XG4gICAgY29zdEdyYWQoWSkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBkaW0gPSB0aGlzLmRpbTsgLy8gZGltIG9mIG91dHB1dCBzcGFjZVxuICAgICAgICBjb25zdCBQID0gdGhpcy5QO1xuICAgICAgICBjb25zdCBwbXVsID0gdGhpcy5pdGVyIDwgMTAwID8gNCA6IDE7IC8vIHRyaWNrIHRoYXQgaGVscHMgd2l0aCBsb2NhbCBvcHRpbWFcbiAgICAgICAgLy8gY29tcHV0ZSBjdXJyZW50IFEgZGlzdHJpYnV0aW9uLCB1bm5vcm1hbGl6ZWQgZmlyc3RcbiAgICAgICAgY29uc3QgcXVBcnIgPSB0aGlzLnplcm9zKE4gKiBOKTtcbiAgICAgICAgbGV0IHFzdW0gPSAwLjA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBOOyBqKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgZHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRoZXJlID0gWVtpXVtkXSAtIFlbal1bZF07XG4gICAgICAgICAgICAgICAgICAgIGRzdW0gKz0gZGhlcmUgKiBkaGVyZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcXUgPSAxLjAgLyAoMS4wICsgZHN1bSk7IC8vIFN0dWRlbnQgdC1kaXN0cmlidXRpb25cbiAgICAgICAgICAgICAgICBxdUFycltpICogTiArIGpdID0gcXU7XG4gICAgICAgICAgICAgICAgcXVBcnJbaiAqIE4gKyBpXSA9IHF1O1xuICAgICAgICAgICAgICAgIHFzdW0gKz0gMiAqIHF1O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIG5vcm1hbGl6ZSBRIGRpc3RyaWJ1dGlvbiB0byBzdW0gdG8gMVxuICAgICAgICBjb25zdCBOTiA9IE4gKiBOO1xuICAgICAgICBjb25zdCBRID0gdGhpcy56ZXJvcyhOTik7XG4gICAgICAgIGZvciAobGV0IHEgPSAwOyBxIDwgTk47IHErKykge1xuICAgICAgICAgICAgUVtxXSA9IE1hdGgubWF4KHF1QXJyW3FdIC8gcXN1bSwgMWUtMTAwKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgY29zdCA9IDAuMDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgY29uc3QgZ3N1bSA9IG5ldyBBcnJheShkaW0pOyAvLyBpbml0IGdyYWQgZm9yIHBvaW50IGlcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBnc3VtW2RdID0gMC4wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBOOyBqKyspIHtcbiAgICAgICAgICAgICAgICBjb3N0ICs9IC1QW2kgKiBOICsgal0gKiBNYXRoLmxvZyhRW2kgKiBOICsgal0pOyAvLyBhY2N1bXVsYXRlIGNvc3QgKHRoZSBub24tY29uc3RhbnQgcG9ydGlvbiBhdCBsZWFzdC4uLilcbiAgICAgICAgICAgICAgICBjb25zdCBwcmVtdWx0ID0gNCAqIChwbXVsICogUFtpICogTiArIGpdIC0gUVtpICogTiArIGpdKSAqIHF1QXJyW2kgKiBOICsgal07XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBnc3VtW2RdICs9IHByZW11bHQgKiAoWVtpXVtkXSAtIFlbal1bZF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGdyYWQucHVzaChnc3VtKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBjb3N0LCBncmFkIH07XG4gICAgfVxufVxuZXhwb3J0cy5UU05FID0gVFNORTtcbiIsImNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaXNBbnlBcnJheShvYmplY3QpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwob2JqZWN0KS5lbmRzV2l0aCgnQXJyYXldJyk7XG59XG4iLCIvKipcbiAqIENhbGN1bGF0ZSBjdXJyZW50IGVycm9yXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHBhcmFtZXRlcnMgLSBBcnJheSBvZiBjdXJyZW50IHBhcmFtZXRlciB2YWx1ZXNcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcmFtZXRlcml6ZWRGdW5jdGlvbiAtIFRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2l0aCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgYSBwYXJhbWV0ZXJcbiAqIEByZXR1cm4ge251bWJlcn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXJyb3JDYWxjdWxhdGlvbihcbiAgZGF0YSxcbiAgcGFyYW1ldGVycyxcbiAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuKSB7XG4gIGxldCBlcnJvciA9IDA7XG4gIGNvbnN0IGZ1bmMgPSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24ocGFyYW1ldGVycyk7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLngubGVuZ3RoOyBpKyspIHtcbiAgICBlcnJvciArPSBNYXRoLmFicyhkYXRhLnlbaV0gLSBmdW5jKGRhdGEueFtpXSkpO1xuICB9XG5cbiAgcmV0dXJuIGVycm9yO1xufVxuIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2RcbmNvbnN0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbi8qKlxuICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBhbiBBcnJheSAoYXJyYXkgb3IgdHlwZWQgYXJyYXksIGV4Y2VwdCB0aG9zZSB0aGF0IGNvbnRhaW4gYmlnaW50IHZhbHVlcykuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gT2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgb2JqZWN0IGlzIGFuIGFycmF5IG9yIGEgdHlwZWQgYXJyYXkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0FueUFycmF5KHZhbHVlKSB7XG4gICAgY29uc3QgdGFnID0gdG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gICAgcmV0dXJuIHRhZy5lbmRzV2l0aCgnQXJyYXldJykgJiYgIXRhZy5pbmNsdWRlcygnQmlnJyk7XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5qcy5tYXAiLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3VuYm91bmQtbWV0aG9kXG5jb25zdCB0b1N0cmluZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYW4gaW5zdGFuY2Ugb2YgYW4gQXJyYXkgKGFycmF5IG9yIHR5cGVkIGFycmF5LCBleGNlcHQgdGhvc2UgdGhhdCBjb250YWluIGJpZ2ludCB2YWx1ZXMpLlxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIHR5cGVkIGFycmF5LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBbnlBcnJheSh2YWx1ZSkge1xuICAgIGNvbnN0IHRhZyA9IHRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICAgIHJldHVybiB0YWcuZW5kc1dpdGgoJ0FycmF5XScpICYmICF0YWcuaW5jbHVkZXMoJ0JpZycpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZFxuY29uc3QgdG9TdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIGFuIEFycmF5IChhcnJheSBvciB0eXBlZCBhcnJheSwgZXhjZXB0IHRob3NlIHRoYXQgY29udGFpbiBiaWdpbnQgdmFsdWVzKS5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBPYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSB0eXBlZCBhcnJheS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQW55QXJyYXkodmFsdWUpIHtcbiAgICBjb25zdCB0YWcgPSB0b1N0cmluZy5jYWxsKHZhbHVlKTtcbiAgICByZXR1cm4gdGFnLmVuZHNXaXRoKCdBcnJheV0nKSAmJiAhdGFnLmluY2x1ZGVzKCdCaWcnKTtcbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4LmpzLm1hcCIsImltcG9ydCB7IGlzQW55QXJyYXkgfSBmcm9tICdpcy1hbnktYXJyYXknO1xuaW1wb3J0IG1heCBmcm9tICdtbC1hcnJheS1tYXgnO1xuaW1wb3J0IG1pbiBmcm9tICdtbC1hcnJheS1taW4nO1xuXG5mdW5jdGlvbiByZXNjYWxlKGlucHV0KSB7XG4gIHZhciBvcHRpb25zID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBpZiAoIWlzQW55QXJyYXkoaW5wdXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaW5wdXQgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9IGVsc2UgaWYgKGlucHV0Lmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cblxuICB2YXIgb3V0cHV0O1xuXG4gIGlmIChvcHRpb25zLm91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKCFpc0FueUFycmF5KG9wdGlvbnMub3V0cHV0KSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3V0cHV0IG9wdGlvbiBtdXN0IGJlIGFuIGFycmF5IGlmIHNwZWNpZmllZCcpO1xuICAgIH1cblxuICAgIG91dHB1dCA9IG9wdGlvbnMub3V0cHV0O1xuICB9IGVsc2Uge1xuICAgIG91dHB1dCA9IG5ldyBBcnJheShpbnB1dC5sZW5ndGgpO1xuICB9XG5cbiAgdmFyIGN1cnJlbnRNaW4gPSBtaW4oaW5wdXQpO1xuICB2YXIgY3VycmVudE1heCA9IG1heChpbnB1dCk7XG5cbiAgaWYgKGN1cnJlbnRNaW4gPT09IGN1cnJlbnRNYXgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluaW11bSBhbmQgbWF4aW11bSBpbnB1dCB2YWx1ZXMgYXJlIGVxdWFsLiBDYW5ub3QgcmVzY2FsZSBhIGNvbnN0YW50IGFycmF5Jyk7XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWluID0gb3B0aW9ucy5taW4sXG4gICAgICBtaW5WYWx1ZSA9IF9vcHRpb25zJG1pbiA9PT0gdm9pZCAwID8gb3B0aW9ucy5hdXRvTWluTWF4ID8gY3VycmVudE1pbiA6IDAgOiBfb3B0aW9ucyRtaW4sXG4gICAgICBfb3B0aW9ucyRtYXggPSBvcHRpb25zLm1heCxcbiAgICAgIG1heFZhbHVlID0gX29wdGlvbnMkbWF4ID09PSB2b2lkIDAgPyBvcHRpb25zLmF1dG9NaW5NYXggPyBjdXJyZW50TWF4IDogMSA6IF9vcHRpb25zJG1heDtcblxuICBpZiAobWluVmFsdWUgPj0gbWF4VmFsdWUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluIG9wdGlvbiBtdXN0IGJlIHNtYWxsZXIgdGhhbiBtYXggb3B0aW9uJyk7XG4gIH1cblxuICB2YXIgZmFjdG9yID0gKG1heFZhbHVlIC0gbWluVmFsdWUpIC8gKGN1cnJlbnRNYXggLSBjdXJyZW50TWluKTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgb3V0cHV0W2ldID0gKGlucHV0W2ldIC0gY3VycmVudE1pbikgKiBmYWN0b3IgKyBtaW5WYWx1ZTtcbiAgfVxuXG4gIHJldHVybiBvdXRwdXQ7XG59XG5cbmV4cG9ydCB7IHJlc2NhbGUgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmZ1bmN0aW9uIG1pbihpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FueUFycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJGZyb21JbmRleCA9IG9wdGlvbnMuZnJvbUluZGV4LFxuICAgICAgZnJvbUluZGV4ID0gX29wdGlvbnMkZnJvbUluZGV4ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkZnJvbUluZGV4LFxuICAgICAgX29wdGlvbnMkdG9JbmRleCA9IG9wdGlvbnMudG9JbmRleCxcbiAgICAgIHRvSW5kZXggPSBfb3B0aW9ucyR0b0luZGV4ID09PSB2b2lkIDAgPyBpbnB1dC5sZW5ndGggOiBfb3B0aW9ucyR0b0luZGV4O1xuXG4gIGlmIChmcm9tSW5kZXggPCAwIHx8IGZyb21JbmRleCA+PSBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIoZnJvbUluZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgnKTtcbiAgfVxuXG4gIGlmICh0b0luZGV4IDw9IGZyb21JbmRleCB8fCB0b0luZGV4ID4gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHRvSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCcpO1xuICB9XG5cbiAgdmFyIG1pblZhbHVlID0gaW5wdXRbZnJvbUluZGV4XTtcblxuICBmb3IgKHZhciBpID0gZnJvbUluZGV4ICsgMTsgaSA8IHRvSW5kZXg7IGkrKykge1xuICAgIGlmIChpbnB1dFtpXSA8IG1pblZhbHVlKSBtaW5WYWx1ZSA9IGlucHV0W2ldO1xuICB9XG5cbiAgcmV0dXJuIG1pblZhbHVlO1xufVxuXG5leHBvcnQgeyBtaW4gYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmZ1bmN0aW9uIG1heChpbnB1dCkge1xuICB2YXIgb3B0aW9ucyA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XG5cbiAgaWYgKCFpc0FueUFycmF5KGlucHV0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2lucHV0IG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGlmIChpbnB1dC5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnB1dCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJGZyb21JbmRleCA9IG9wdGlvbnMuZnJvbUluZGV4LFxuICAgICAgZnJvbUluZGV4ID0gX29wdGlvbnMkZnJvbUluZGV4ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkZnJvbUluZGV4LFxuICAgICAgX29wdGlvbnMkdG9JbmRleCA9IG9wdGlvbnMudG9JbmRleCxcbiAgICAgIHRvSW5kZXggPSBfb3B0aW9ucyR0b0luZGV4ID09PSB2b2lkIDAgPyBpbnB1dC5sZW5ndGggOiBfb3B0aW9ucyR0b0luZGV4O1xuXG4gIGlmIChmcm9tSW5kZXggPCAwIHx8IGZyb21JbmRleCA+PSBpbnB1dC5sZW5ndGggfHwgIU51bWJlci5pc0ludGVnZXIoZnJvbUluZGV4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignZnJvbUluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyIHNtYWxsZXIgdGhhbiBsZW5ndGgnKTtcbiAgfVxuXG4gIGlmICh0b0luZGV4IDw9IGZyb21JbmRleCB8fCB0b0luZGV4ID4gaW5wdXQubGVuZ3RoIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHRvSW5kZXgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0b0luZGV4IG11c3QgYmUgYW4gaW50ZWdlciBncmVhdGVyIHRoYW4gZnJvbUluZGV4IGFuZCBhdCBtb3N0IGVxdWFsIHRvIGxlbmd0aCcpO1xuICB9XG5cbiAgdmFyIG1heFZhbHVlID0gaW5wdXRbZnJvbUluZGV4XTtcblxuICBmb3IgKHZhciBpID0gZnJvbUluZGV4ICsgMTsgaSA8IHRvSW5kZXg7IGkrKykge1xuICAgIGlmIChpbnB1dFtpXSA+IG1heFZhbHVlKSBtYXhWYWx1ZSA9IGlucHV0W2ldO1xuICB9XG5cbiAgcmV0dXJuIG1heFZhbHVlO1xufVxuXG5leHBvcnQgeyBtYXggYXMgZGVmYXVsdCB9O1xuIiwiY29uc3QgaW5kZW50ID0gJyAnLnJlcGVhdCgyKTtcbmNvbnN0IGluZGVudERhdGEgPSAnICcucmVwZWF0KDQpO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdE1hdHJpeCgpIHtcbiAgcmV0dXJuIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyh0aGlzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyhtYXRyaXgsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgbWF4Um93cyA9IDE1LFxuICAgIG1heENvbHVtbnMgPSAxMCxcbiAgICBtYXhOdW1TaXplID0gOCxcbiAgICBwYWRNaW51cyA9ICdhdXRvJyxcbiAgfSA9IG9wdGlvbnM7XG4gIHJldHVybiBgJHttYXRyaXguY29uc3RydWN0b3IubmFtZX0ge1xuJHtpbmRlbnR9W1xuJHtpbmRlbnREYXRhfSR7aW5zcGVjdERhdGEobWF0cml4LCBtYXhSb3dzLCBtYXhDb2x1bW5zLCBtYXhOdW1TaXplLCBwYWRNaW51cyl9XG4ke2luZGVudH1dXG4ke2luZGVudH1yb3dzOiAke21hdHJpeC5yb3dzfVxuJHtpbmRlbnR9Y29sdW1uczogJHttYXRyaXguY29sdW1uc31cbn1gO1xufVxuXG5mdW5jdGlvbiBpbnNwZWN0RGF0YShtYXRyaXgsIG1heFJvd3MsIG1heENvbHVtbnMsIG1heE51bVNpemUsIHBhZE1pbnVzKSB7XG4gIGNvbnN0IHsgcm93cywgY29sdW1ucyB9ID0gbWF0cml4O1xuICBjb25zdCBtYXhJID0gTWF0aC5taW4ocm93cywgbWF4Um93cyk7XG4gIGNvbnN0IG1heEogPSBNYXRoLm1pbihjb2x1bW5zLCBtYXhDb2x1bW5zKTtcbiAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgaWYgKHBhZE1pbnVzID09PSAnYXV0bycpIHtcbiAgICBwYWRNaW51cyA9IGZhbHNlO1xuICAgIGxvb3A6IGZvciAobGV0IGkgPSAwOyBpIDwgbWF4STsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1heEo7IGorKykge1xuICAgICAgICBpZiAobWF0cml4LmdldChpLCBqKSA8IDApIHtcbiAgICAgICAgICBwYWRNaW51cyA9IHRydWU7XG4gICAgICAgICAgYnJlYWsgbG9vcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF4STsgaSsrKSB7XG4gICAgbGV0IGxpbmUgPSBbXTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1heEo7IGorKykge1xuICAgICAgbGluZS5wdXNoKGZvcm1hdE51bWJlcihtYXRyaXguZ2V0KGksIGopLCBtYXhOdW1TaXplLCBwYWRNaW51cykpO1xuICAgIH1cbiAgICByZXN1bHQucHVzaChgJHtsaW5lLmpvaW4oJyAnKX1gKTtcbiAgfVxuICBpZiAobWF4SiAhPT0gY29sdW1ucykge1xuICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoIC0gMV0gKz0gYCAuLi4gJHtjb2x1bW5zIC0gbWF4Q29sdW1uc30gbW9yZSBjb2x1bW5zYDtcbiAgfVxuICBpZiAobWF4SSAhPT0gcm93cykge1xuICAgIHJlc3VsdC5wdXNoKGAuLi4gJHtyb3dzIC0gbWF4Um93c30gbW9yZSByb3dzYCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5qb2luKGBcXG4ke2luZGVudERhdGF9YCk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE51bWJlcihudW0sIG1heE51bVNpemUsIHBhZE1pbnVzKSB7XG4gIHJldHVybiAoXG4gICAgbnVtID49IDAgJiYgcGFkTWludXNcbiAgICAgID8gYCAke2Zvcm1hdE51bWJlcjIobnVtLCBtYXhOdW1TaXplIC0gMSl9YFxuICAgICAgOiBmb3JtYXROdW1iZXIyKG51bSwgbWF4TnVtU2l6ZSlcbiAgKS5wYWRFbmQobWF4TnVtU2l6ZSk7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdE51bWJlcjIobnVtLCBsZW4pIHtcbiAgLy8gc21hbGwubGVuZ3RoIG51bWJlcnMgc2hvdWxkIGJlIGFzIGlzXG4gIGxldCBzdHIgPSBudW0udG9TdHJpbmcoKTtcbiAgaWYgKHN0ci5sZW5ndGggPD0gbGVuKSByZXR1cm4gc3RyO1xuXG4gIC8vICg3KScwLjAwMTIzJyBpcyBiZXR0ZXIgdGhlbiAoNyknMS4yM2UtMidcbiAgLy8gKDgpJzAuMDAwMTIzJyBpcyB3b3JzZSB0aGVuICg3KScxLjIzZS0zJyxcbiAgbGV0IGZpeCA9IG51bS50b0ZpeGVkKGxlbik7XG4gIGlmIChmaXgubGVuZ3RoID4gbGVuKSB7XG4gICAgZml4ID0gbnVtLnRvRml4ZWQoTWF0aC5tYXgoMCwgbGVuIC0gKGZpeC5sZW5ndGggLSBsZW4pKSk7XG4gIH1cbiAgaWYgKFxuICAgIGZpeC5sZW5ndGggPD0gbGVuICYmXG4gICAgIWZpeC5zdGFydHNXaXRoKCcwLjAwMCcpICYmXG4gICAgIWZpeC5zdGFydHNXaXRoKCctMC4wMDAnKVxuICApIHtcbiAgICByZXR1cm4gZml4O1xuICB9XG5cbiAgLy8gd2VsbCwgaWYgaXQncyBzdGlsbCB0b28gbG9uZyB0aGUgdXNlciBzaG91bGQndmUgdXNlZCBsb25nZXIgbnVtYmVyc1xuICBsZXQgZXhwID0gbnVtLnRvRXhwb25lbnRpYWwobGVuKTtcbiAgaWYgKGV4cC5sZW5ndGggPiBsZW4pIHtcbiAgICBleHAgPSBudW0udG9FeHBvbmVudGlhbChNYXRoLm1heCgwLCBsZW4gLSAoZXhwLmxlbmd0aCAtIGxlbikpKTtcbiAgfVxuICByZXR1cm4gZXhwLnNsaWNlKDApO1xufVxuIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbi8qKlxuICogQHByaXZhdGVcbiAqIENoZWNrIHRoYXQgYSByb3cgaW5kZXggaXMgbm90IG91dCBvZiBib3VuZHNcbiAqIEBwYXJhbSB7TWF0cml4fSBtYXRyaXhcbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICogQHBhcmFtIHtib29sZWFufSBbb3V0ZXJdXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGVja1Jvd0luZGV4KG1hdHJpeCwgaW5kZXgsIG91dGVyKSB7XG4gIGxldCBtYXggPSBvdXRlciA/IG1hdHJpeC5yb3dzIDogbWF0cml4LnJvd3MgLSAxO1xuICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID4gbWF4KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1JvdyBpbmRleCBvdXQgb2YgcmFuZ2UnKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwcml2YXRlXG4gKiBDaGVjayB0aGF0IGEgY29sdW1uIGluZGV4IGlzIG5vdCBvdXQgb2YgYm91bmRzXG4gKiBAcGFyYW0ge01hdHJpeH0gbWF0cml4XG4gKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW291dGVyXVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5JbmRleChtYXRyaXgsIGluZGV4LCBvdXRlcikge1xuICBsZXQgbWF4ID0gb3V0ZXIgPyBtYXRyaXguY29sdW1ucyA6IG1hdHJpeC5jb2x1bW5zIC0gMTtcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+IG1heCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdDb2x1bW4gaW5kZXggb3V0IG9mIHJhbmdlJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCB0aGUgcHJvdmlkZWQgdmVjdG9yIGlzIGFuIGFycmF5IHdpdGggdGhlIHJpZ2h0IGxlbmd0aFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtBcnJheXxNYXRyaXh9IHZlY3RvclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSb3dWZWN0b3IobWF0cml4LCB2ZWN0b3IpIHtcbiAgaWYgKHZlY3Rvci50bzFEQXJyYXkpIHtcbiAgICB2ZWN0b3IgPSB2ZWN0b3IudG8xREFycmF5KCk7XG4gIH1cbiAgaWYgKHZlY3Rvci5sZW5ndGggIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAndmVjdG9yIHNpemUgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUgbnVtYmVyIG9mIGNvbHVtbnMnLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHZlY3Rvcjtcbn1cblxuLyoqXG4gKiBAcHJpdmF0ZVxuICogQ2hlY2sgdGhhdCB0aGUgcHJvdmlkZWQgdmVjdG9yIGlzIGFuIGFycmF5IHdpdGggdGhlIHJpZ2h0IGxlbmd0aFxuICogQHBhcmFtIHtNYXRyaXh9IG1hdHJpeFxuICogQHBhcmFtIHtBcnJheXxNYXRyaXh9IHZlY3RvclxuICogQHJldHVybiB7QXJyYXl9XG4gKiBAdGhyb3dzIHtSYW5nZUVycm9yfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tDb2x1bW5WZWN0b3IobWF0cml4LCB2ZWN0b3IpIHtcbiAgaWYgKHZlY3Rvci50bzFEQXJyYXkpIHtcbiAgICB2ZWN0b3IgPSB2ZWN0b3IudG8xREFycmF5KCk7XG4gIH1cbiAgaWYgKHZlY3Rvci5sZW5ndGggIT09IG1hdHJpeC5yb3dzKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZlY3RvciBzaXplIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlIG51bWJlciBvZiByb3dzJyk7XG4gIH1cbiAgcmV0dXJuIHZlY3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUm93SW5kaWNlcyhtYXRyaXgsIHJvd0luZGljZXMpIHtcbiAgaWYgKCFpc0FueUFycmF5KHJvd0luZGljZXMpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcigncm93IGluZGljZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dJbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHJvd0luZGljZXNbaV0gPCAwIHx8IHJvd0luZGljZXNbaV0gPj0gbWF0cml4LnJvd3MpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdyb3cgaW5kaWNlcyBhcmUgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVja0NvbHVtbkluZGljZXMobWF0cml4LCBjb2x1bW5JbmRpY2VzKSB7XG4gIGlmICghaXNBbnlBcnJheShjb2x1bW5JbmRpY2VzKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NvbHVtbiBpbmRpY2VzIG11c3QgYmUgYW4gYXJyYXknKTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1uSW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChjb2x1bW5JbmRpY2VzW2ldIDwgMCB8fCBjb2x1bW5JbmRpY2VzW2ldID49IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignY29sdW1uIGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSYW5nZShtYXRyaXgsIHN0YXJ0Um93LCBlbmRSb3csIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW4pIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggIT09IDUpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZXhwZWN0ZWQgNCBhcmd1bWVudHMnKTtcbiAgfVxuICBjaGVja051bWJlcignc3RhcnRSb3cnLCBzdGFydFJvdyk7XG4gIGNoZWNrTnVtYmVyKCdlbmRSb3cnLCBlbmRSb3cpO1xuICBjaGVja051bWJlcignc3RhcnRDb2x1bW4nLCBzdGFydENvbHVtbik7XG4gIGNoZWNrTnVtYmVyKCdlbmRDb2x1bW4nLCBlbmRDb2x1bW4pO1xuICBpZiAoXG4gICAgc3RhcnRSb3cgPiBlbmRSb3cgfHxcbiAgICBzdGFydENvbHVtbiA+IGVuZENvbHVtbiB8fFxuICAgIHN0YXJ0Um93IDwgMCB8fFxuICAgIHN0YXJ0Um93ID49IG1hdHJpeC5yb3dzIHx8XG4gICAgZW5kUm93IDwgMCB8fFxuICAgIGVuZFJvdyA+PSBtYXRyaXgucm93cyB8fFxuICAgIHN0YXJ0Q29sdW1uIDwgMCB8fFxuICAgIHN0YXJ0Q29sdW1uID49IG1hdHJpeC5jb2x1bW5zIHx8XG4gICAgZW5kQ29sdW1uIDwgMCB8fFxuICAgIGVuZENvbHVtbiA+PSBtYXRyaXguY29sdW1uc1xuICApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignU3VibWF0cml4IGluZGljZXMgYXJlIG91dCBvZiByYW5nZScpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdBcnJheShsZW5ndGgsIHZhbHVlID0gMCkge1xuICBsZXQgYXJyYXkgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGFycmF5LnB1c2godmFsdWUpO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuZnVuY3Rpb24gY2hlY2tOdW1iZXIobmFtZSwgdmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke25hbWV9IG11c3QgYmUgYSBudW1iZXJgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tOb25FbXB0eShtYXRyaXgpIHtcbiAgaWYgKG1hdHJpeC5pc0VtcHR5KCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0VtcHR5IG1hdHJpeCBoYXMgbm8gZWxlbWVudHMgdG8gaW5kZXgnKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNBbnlBcnJheSB9IGZyb20gJ2lzLWFueS1hcnJheSc7XG5pbXBvcnQgcmVzY2FsZSBmcm9tICdtbC1hcnJheS1yZXNjYWxlJztcblxuaW1wb3J0IHsgaW5zcGVjdE1hdHJpeCwgaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zIH0gZnJvbSAnLi9pbnNwZWN0JztcbmltcG9ydCB7IGluc3RhbGxNYXRoT3BlcmF0aW9ucyB9IGZyb20gJy4vbWF0aE9wZXJhdGlvbnMnO1xuaW1wb3J0IHtcbiAgc3VtQnlSb3csXG4gIHN1bUJ5Q29sdW1uLFxuICBzdW1BbGwsXG4gIHByb2R1Y3RCeVJvdyxcbiAgcHJvZHVjdEJ5Q29sdW1uLFxuICBwcm9kdWN0QWxsLFxuICB2YXJpYW5jZUJ5Um93LFxuICB2YXJpYW5jZUJ5Q29sdW1uLFxuICB2YXJpYW5jZUFsbCxcbiAgY2VudGVyQnlSb3csXG4gIGNlbnRlckJ5Q29sdW1uLFxuICBjZW50ZXJBbGwsXG4gIHNjYWxlQnlSb3csXG4gIHNjYWxlQnlDb2x1bW4sXG4gIHNjYWxlQWxsLFxuICBnZXRTY2FsZUJ5Um93LFxuICBnZXRTY2FsZUJ5Q29sdW1uLFxuICBnZXRTY2FsZUFsbCxcbn0gZnJvbSAnLi9zdGF0JztcbmltcG9ydCB7XG4gIGNoZWNrUm93VmVjdG9yLFxuICBjaGVja1Jvd0luZGV4LFxuICBjaGVja0NvbHVtbkluZGV4LFxuICBjaGVja0NvbHVtblZlY3RvcixcbiAgY2hlY2tSYW5nZSxcbiAgY2hlY2tOb25FbXB0eSxcbiAgY2hlY2tSb3dJbmRpY2VzLFxuICBjaGVja0NvbHVtbkluZGljZXMsXG59IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE1hdHJpeCB7XG4gIHN0YXRpYyBmcm9tMURBcnJheShuZXdSb3dzLCBuZXdDb2x1bW5zLCBuZXdEYXRhKSB7XG4gICAgbGV0IGxlbmd0aCA9IG5ld1Jvd3MgKiBuZXdDb2x1bW5zO1xuICAgIGlmIChsZW5ndGggIT09IG5ld0RhdGEubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignZGF0YSBsZW5ndGggZG9lcyBub3QgbWF0Y2ggZ2l2ZW4gZGltZW5zaW9ucycpO1xuICAgIH1cbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChuZXdSb3dzLCBuZXdDb2x1bW5zKTtcbiAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCBuZXdSb3dzOyByb3crKykge1xuICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgbmV3Q29sdW1uczsgY29sdW1uKyspIHtcbiAgICAgICAgbmV3TWF0cml4LnNldChyb3csIGNvbHVtbiwgbmV3RGF0YVtyb3cgKiBuZXdDb2x1bW5zICsgY29sdW1uXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgcm93VmVjdG9yKG5ld0RhdGEpIHtcbiAgICBsZXQgdmVjdG9yID0gbmV3IE1hdHJpeCgxLCBuZXdEYXRhLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuZXdEYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2ZWN0b3Iuc2V0KDAsIGksIG5ld0RhdGFbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gdmVjdG9yO1xuICB9XG5cbiAgc3RhdGljIGNvbHVtblZlY3RvcihuZXdEYXRhKSB7XG4gICAgbGV0IHZlY3RvciA9IG5ldyBNYXRyaXgobmV3RGF0YS5sZW5ndGgsIDEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmV3RGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgdmVjdG9yLnNldChpLCAwLCBuZXdEYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHZlY3RvcjtcbiAgfVxuXG4gIHN0YXRpYyB6ZXJvcyhyb3dzLCBjb2x1bW5zKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gIH1cblxuICBzdGF0aWMgb25lcyhyb3dzLCBjb2x1bW5zKSB7XG4gICAgcmV0dXJuIG5ldyBNYXRyaXgocm93cywgY29sdW1ucykuZmlsbCgxKTtcbiAgfVxuXG4gIHN0YXRpYyByYW5kKHJvd3MsIGNvbHVtbnMsIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyByYW5kb20gPSBNYXRoLnJhbmRvbSB9ID0gb3B0aW9ucztcbiAgICBsZXQgbWF0cml4ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbWF0cml4LnNldChpLCBqLCByYW5kb20oKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgcmFuZEludChyb3dzLCBjb2x1bW5zLCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgbWluID0gMCwgbWF4ID0gMTAwMCwgcmFuZG9tID0gTWF0aC5yYW5kb20gfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKG1pbikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ21pbiBtdXN0IGJlIGFuIGludGVnZXInKTtcbiAgICBpZiAoIU51bWJlci5pc0ludGVnZXIobWF4KSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWF4IG11c3QgYmUgYW4gaW50ZWdlcicpO1xuICAgIGlmIChtaW4gPj0gbWF4KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCcpO1xuICAgIGxldCBpbnRlcnZhbCA9IG1heCAtIG1pbjtcbiAgICBsZXQgbWF0cml4ID0gbmV3IE1hdHJpeChyb3dzLCBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbGV0IHZhbHVlID0gbWluICsgTWF0aC5yb3VuZChyYW5kb20oKSAqIGludGVydmFsKTtcbiAgICAgICAgbWF0cml4LnNldChpLCBqLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgZXllKHJvd3MsIGNvbHVtbnMsIHZhbHVlKSB7XG4gICAgaWYgKGNvbHVtbnMgPT09IHVuZGVmaW5lZCkgY29sdW1ucyA9IHJvd3M7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHZhbHVlID0gMTtcbiAgICBsZXQgbWluID0gTWF0aC5taW4ocm93cywgY29sdW1ucyk7XG4gICAgbGV0IG1hdHJpeCA9IHRoaXMuemVyb3Mocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgbWF0cml4LnNldChpLCBpLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBtYXRyaXg7XG4gIH1cblxuICBzdGF0aWMgZGlhZyhkYXRhLCByb3dzLCBjb2x1bW5zKSB7XG4gICAgbGV0IGwgPSBkYXRhLmxlbmd0aDtcbiAgICBpZiAocm93cyA9PT0gdW5kZWZpbmVkKSByb3dzID0gbDtcbiAgICBpZiAoY29sdW1ucyA9PT0gdW5kZWZpbmVkKSBjb2x1bW5zID0gcm93cztcbiAgICBsZXQgbWluID0gTWF0aC5taW4obCwgcm93cywgY29sdW1ucyk7XG4gICAgbGV0IG1hdHJpeCA9IHRoaXMuemVyb3Mocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaW47IGkrKykge1xuICAgICAgbWF0cml4LnNldChpLCBpLCBkYXRhW2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIHN0YXRpYyBtaW4obWF0cml4MSwgbWF0cml4Mikge1xuICAgIG1hdHJpeDEgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDEpO1xuICAgIG1hdHJpeDIgPSB0aGlzLmNoZWNrTWF0cml4KG1hdHJpeDIpO1xuICAgIGxldCByb3dzID0gbWF0cml4MS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbWF0cml4MS5jb2x1bW5zO1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGksIGosIE1hdGgubWluKG1hdHJpeDEuZ2V0KGksIGopLCBtYXRyaXgyLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIG1heChtYXRyaXgxLCBtYXRyaXgyKSB7XG4gICAgbWF0cml4MSA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4MSk7XG4gICAgbWF0cml4MiA9IHRoaXMuY2hlY2tNYXRyaXgobWF0cml4Mik7XG4gICAgbGV0IHJvd3MgPSBtYXRyaXgxLnJvd3M7XG4gICAgbGV0IGNvbHVtbnMgPSBtYXRyaXgxLmNvbHVtbnM7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyB0aGlzKHJvd3MsIGNvbHVtbnMpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHVtbnM7IGorKykge1xuICAgICAgICByZXN1bHQuc2V0KGksIGosIE1hdGgubWF4KG1hdHJpeDEuZ2V0KGksIGopLCBtYXRyaXgyLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RhdGljIGNoZWNrTWF0cml4KHZhbHVlKSB7XG4gICAgcmV0dXJuIEFic3RyYWN0TWF0cml4LmlzTWF0cml4KHZhbHVlKSA/IHZhbHVlIDogbmV3IE1hdHJpeCh2YWx1ZSk7XG4gIH1cblxuICBzdGF0aWMgaXNNYXRyaXgodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5rbGFzcyA9PT0gJ01hdHJpeCc7XG4gIH1cblxuICBnZXQgc2l6ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzICogdGhpcy5jb2x1bW5zO1xuICB9XG5cbiAgYXBwbHkoY2FsbGJhY2spIHtcbiAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXMsIGksIGopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHRvMURBcnJheSgpIHtcbiAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIGFycmF5LnB1c2godGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXk7XG4gIH1cblxuICB0bzJEQXJyYXkoKSB7XG4gICAgbGV0IGNvcHkgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb3B5LnB1c2goW10pO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBjb3B5W2ldLnB1c2godGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29weTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gdGhpcy50bzJEQXJyYXkoKTtcbiAgfVxuXG4gIGlzUm93VmVjdG9yKCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDE7XG4gIH1cblxuICBpc0NvbHVtblZlY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zID09PSAxO1xuICB9XG5cbiAgaXNWZWN0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMucm93cyA9PT0gMSB8fCB0aGlzLmNvbHVtbnMgPT09IDE7XG4gIH1cblxuICBpc1NxdWFyZSgpIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzID09PSB0aGlzLmNvbHVtbnM7XG4gIH1cblxuICBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnJvd3MgPT09IDAgfHwgdGhpcy5jb2x1bW5zID09PSAwO1xuICB9XG5cbiAgaXNTeW1tZXRyaWMoKSB7XG4gICAgaWYgKHRoaXMuaXNTcXVhcmUoKSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8PSBpOyBqKyspIHtcbiAgICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgIT09IHRoaXMuZ2V0KGosIGkpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaXNFY2hlbG9uRm9ybSgpIHtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGogPSAwO1xuICAgIGxldCBwcmV2aW91c0NvbHVtbiA9IC0xO1xuICAgIGxldCBpc0VjaGVsb25Gb3JtID0gdHJ1ZTtcbiAgICBsZXQgY2hlY2tlZCA9IGZhbHNlO1xuICAgIHdoaWxlIChpIDwgdGhpcy5yb3dzICYmIGlzRWNoZWxvbkZvcm0pIHtcbiAgICAgIGogPSAwO1xuICAgICAgY2hlY2tlZCA9IGZhbHNlO1xuICAgICAgd2hpbGUgKGogPCB0aGlzLmNvbHVtbnMgJiYgY2hlY2tlZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0KGksIGopID09PSAwKSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZ2V0KGksIGopID09PSAxICYmIGogPiBwcmV2aW91c0NvbHVtbikge1xuICAgICAgICAgIGNoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgIHByZXZpb3VzQ29sdW1uID0gajtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpc0VjaGVsb25Gb3JtID0gZmFsc2U7XG4gICAgICAgICAgY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9XG4gICAgcmV0dXJuIGlzRWNoZWxvbkZvcm07XG4gIH1cblxuICBpc1JlZHVjZWRFY2hlbG9uRm9ybSgpIHtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGogPSAwO1xuICAgIGxldCBwcmV2aW91c0NvbHVtbiA9IC0xO1xuICAgIGxldCBpc1JlZHVjZWRFY2hlbG9uRm9ybSA9IHRydWU7XG4gICAgbGV0IGNoZWNrZWQgPSBmYWxzZTtcbiAgICB3aGlsZSAoaSA8IHRoaXMucm93cyAmJiBpc1JlZHVjZWRFY2hlbG9uRm9ybSkge1xuICAgICAgaiA9IDA7XG4gICAgICBjaGVja2VkID0gZmFsc2U7XG4gICAgICB3aGlsZSAoaiA8IHRoaXMuY29sdW1ucyAmJiBjaGVja2VkID09PSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgPT09IDApIHtcbiAgICAgICAgICBqKys7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5nZXQoaSwgaikgPT09IDEgJiYgaiA+IHByZXZpb3VzQ29sdW1uKSB7XG4gICAgICAgICAgY2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgcHJldmlvdXNDb2x1bW4gPSBqO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlzUmVkdWNlZEVjaGVsb25Gb3JtID0gZmFsc2U7XG4gICAgICAgICAgY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGsgPSBqICsgMTsgayA8IHRoaXMucm93czsgaysrKSB7XG4gICAgICAgIGlmICh0aGlzLmdldChpLCBrKSAhPT0gMCkge1xuICAgICAgICAgIGlzUmVkdWNlZEVjaGVsb25Gb3JtID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGkrKztcbiAgICB9XG4gICAgcmV0dXJuIGlzUmVkdWNlZEVjaGVsb25Gb3JtO1xuICB9XG5cbiAgZWNoZWxvbkZvcm0oKSB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuY2xvbmUoKTtcbiAgICBsZXQgaCA9IDA7XG4gICAgbGV0IGsgPSAwO1xuICAgIHdoaWxlIChoIDwgcmVzdWx0LnJvd3MgJiYgayA8IHJlc3VsdC5jb2x1bW5zKSB7XG4gICAgICBsZXQgaU1heCA9IGg7XG4gICAgICBmb3IgKGxldCBpID0gaDsgaSA8IHJlc3VsdC5yb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKHJlc3VsdC5nZXQoaSwgaykgPiByZXN1bHQuZ2V0KGlNYXgsIGspKSB7XG4gICAgICAgICAgaU1heCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChyZXN1bHQuZ2V0KGlNYXgsIGspID09PSAwKSB7XG4gICAgICAgIGsrKztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5zd2FwUm93cyhoLCBpTWF4KTtcbiAgICAgICAgbGV0IHRtcCA9IHJlc3VsdC5nZXQoaCwgayk7XG4gICAgICAgIGZvciAobGV0IGogPSBrOyBqIDwgcmVzdWx0LmNvbHVtbnM7IGorKykge1xuICAgICAgICAgIHJlc3VsdC5zZXQoaCwgaiwgcmVzdWx0LmdldChoLCBqKSAvIHRtcCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IGggKyAxOyBpIDwgcmVzdWx0LnJvd3M7IGkrKykge1xuICAgICAgICAgIGxldCBmYWN0b3IgPSByZXN1bHQuZ2V0KGksIGspIC8gcmVzdWx0LmdldChoLCBrKTtcbiAgICAgICAgICByZXN1bHQuc2V0KGksIGssIDApO1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IHJlc3VsdC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgcmVzdWx0LmdldChpLCBqKSAtIHJlc3VsdC5nZXQoaCwgaikgKiBmYWN0b3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBoKys7XG4gICAgICAgIGsrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJlZHVjZWRFY2hlbG9uRm9ybSgpIHtcbiAgICBsZXQgcmVzdWx0ID0gdGhpcy5lY2hlbG9uRm9ybSgpO1xuICAgIGxldCBtID0gcmVzdWx0LmNvbHVtbnM7XG4gICAgbGV0IG4gPSByZXN1bHQucm93cztcbiAgICBsZXQgaCA9IG4gLSAxO1xuICAgIHdoaWxlIChoID49IDApIHtcbiAgICAgIGlmIChyZXN1bHQubWF4Um93KGgpID09PSAwKSB7XG4gICAgICAgIGgtLTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwID0gMDtcbiAgICAgICAgbGV0IHBpdm90ID0gZmFsc2U7XG4gICAgICAgIHdoaWxlIChwIDwgbiAmJiBwaXZvdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBpZiAocmVzdWx0LmdldChoLCBwKSA9PT0gMSkge1xuICAgICAgICAgICAgcGl2b3QgPSB0cnVlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwKys7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaDsgaSsrKSB7XG4gICAgICAgICAgbGV0IGZhY3RvciA9IHJlc3VsdC5nZXQoaSwgcCk7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IHA7IGogPCBtOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0bXAgPSByZXN1bHQuZ2V0KGksIGopIC0gZmFjdG9yICogcmVzdWx0LmdldChoLCBqKTtcbiAgICAgICAgICAgIHJlc3VsdC5zZXQoaSwgaiwgdG1wKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaC0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc2V0KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0IG1ldGhvZCBpcyB1bmltcGxlbWVudGVkJyk7XG4gIH1cblxuICBnZXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdnZXQgbWV0aG9kIGlzIHVuaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIHJlcGVhdChvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdvcHRpb25zIG11c3QgYmUgYW4gb2JqZWN0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHsgcm93cyA9IDEsIGNvbHVtbnMgPSAxIH0gPSBvcHRpb25zO1xuICAgIGlmICghTnVtYmVyLmlzSW50ZWdlcihyb3dzKSB8fCByb3dzIDw9IDApIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ3Jvd3MgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICB9XG4gICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKGNvbHVtbnMpIHx8IGNvbHVtbnMgPD0gMCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignY29sdW1ucyBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlcicpO1xuICAgIH1cbiAgICBsZXQgbWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MgKiByb3dzLCB0aGlzLmNvbHVtbnMgKiBjb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgICAgbWF0cml4LnNldFN1Yk1hdHJpeCh0aGlzLCB0aGlzLnJvd3MgKiBpLCB0aGlzLmNvbHVtbnMgKiBqKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbiAgfVxuXG4gIGZpbGwodmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBuZWcoKSB7XG4gICAgcmV0dXJuIHRoaXMubXVsUygtMSk7XG4gIH1cblxuICBnZXRSb3coaW5kZXgpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIGluZGV4KTtcbiAgICBsZXQgcm93ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgcm93LnB1c2godGhpcy5nZXQoaW5kZXgsIGkpKTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdztcbiAgfVxuXG4gIGdldFJvd1ZlY3RvcihpbmRleCkge1xuICAgIHJldHVybiBNYXRyaXgucm93VmVjdG9yKHRoaXMuZ2V0Um93KGluZGV4KSk7XG4gIH1cblxuICBzZXRSb3coaW5kZXgsIGFycmF5KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgYXJyYXkgPSBjaGVja1Jvd1ZlY3Rvcih0aGlzLCBhcnJheSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgdGhpcy5zZXQoaW5kZXgsIGksIGFycmF5W2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzd2FwUm93cyhyb3cxLCByb3cyKSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cxKTtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdzIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGxldCB0ZW1wID0gdGhpcy5nZXQocm93MSwgaSk7XG4gICAgICB0aGlzLnNldChyb3cxLCBpLCB0aGlzLmdldChyb3cyLCBpKSk7XG4gICAgICB0aGlzLnNldChyb3cyLCBpLCB0ZW1wKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBnZXRDb2x1bW4oaW5kZXgpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBsZXQgY29sdW1uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgY29sdW1uLnB1c2godGhpcy5nZXQoaSwgaW5kZXgpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbHVtbjtcbiAgfVxuXG4gIGdldENvbHVtblZlY3RvcihpbmRleCkge1xuICAgIHJldHVybiBNYXRyaXguY29sdW1uVmVjdG9yKHRoaXMuZ2V0Q29sdW1uKGluZGV4KSk7XG4gIH1cblxuICBzZXRDb2x1bW4oaW5kZXgsIGFycmF5KSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgYXJyYXkgPSBjaGVja0NvbHVtblZlY3Rvcih0aGlzLCBhcnJheSk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXQoaSwgaW5kZXgsIGFycmF5W2ldKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzd2FwQ29sdW1ucyhjb2x1bW4xLCBjb2x1bW4yKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4xKTtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbjIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGxldCB0ZW1wID0gdGhpcy5nZXQoaSwgY29sdW1uMSk7XG4gICAgICB0aGlzLnNldChpLCBjb2x1bW4xLCB0aGlzLmdldChpLCBjb2x1bW4yKSk7XG4gICAgICB0aGlzLnNldChpLCBjb2x1bW4yLCB0ZW1wKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRSb3dWZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tSb3dWZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICsgdmVjdG9yW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWJSb3dWZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tSb3dWZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC0gdmVjdG9yW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtdWxSb3dWZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tSb3dWZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmVjdG9yW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkaXZSb3dWZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tSb3dWZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gdmVjdG9yW2pdKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBhZGRDb2x1bW5WZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICsgdmVjdG9yW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWJDb2x1bW5WZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC0gdmVjdG9yW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtdWxDb2x1bW5WZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogdmVjdG9yW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBkaXZDb2x1bW5WZWN0b3IodmVjdG9yKSB7XG4gICAgdmVjdG9yID0gY2hlY2tDb2x1bW5WZWN0b3IodGhpcywgdmVjdG9yKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC8gdmVjdG9yW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtdWxSb3coaW5kZXgsIHZhbHVlKSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCBpbmRleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgdGhpcy5zZXQoaW5kZXgsIGksIHRoaXMuZ2V0KGluZGV4LCBpKSAqIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtdWxDb2x1bW4oaW5kZXgsIHZhbHVlKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBpbmRleCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgdGhpcy5zZXQoaSwgaW5kZXgsIHRoaXMuZ2V0KGksIGluZGV4KSAqIHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBtYXgoYnkpIHtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgY29uc3QgbWF4ID0gbmV3IEFycmF5KHRoaXMucm93cykuZmlsbChOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA+IG1heFtyb3ddKSB7XG4gICAgICAgICAgICAgIG1heFtyb3ddID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWF4O1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBjb25zdCBtYXggPSBuZXcgQXJyYXkodGhpcy5jb2x1bW5zKS5maWxsKE51bWJlci5ORUdBVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pID4gbWF4W2NvbHVtbl0pIHtcbiAgICAgICAgICAgICAgbWF4W2NvbHVtbl0gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXg7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBsZXQgbWF4ID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pID4gbWF4KSB7XG4gICAgICAgICAgICAgIG1heCA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1heDtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgbWF4SW5kZXgoKSB7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGxldCBpZHggPSBbMCwgMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgPiB2KSB7XG4gICAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICAgIGlkeFswXSA9IGk7XG4gICAgICAgICAgaWR4WzFdID0gajtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluKGJ5KSB7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cblxuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgY29uc3QgbWluID0gbmV3IEFycmF5KHRoaXMucm93cykuZmlsbChOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkpO1xuICAgICAgICBmb3IgKGxldCByb3cgPSAwOyByb3cgPCB0aGlzLnJvd3M7IHJvdysrKSB7XG4gICAgICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ2V0KHJvdywgY29sdW1uKSA8IG1pbltyb3ddKSB7XG4gICAgICAgICAgICAgIG1pbltyb3ddID0gdGhpcy5nZXQocm93LCBjb2x1bW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWluO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBjb25zdCBtaW4gPSBuZXcgQXJyYXkodGhpcy5jb2x1bW5zKS5maWxsKE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pIDwgbWluW2NvbHVtbl0pIHtcbiAgICAgICAgICAgICAgbWluW2NvbHVtbl0gPSB0aGlzLmdldChyb3csIGNvbHVtbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtaW47XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBsZXQgbWluID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgICAgIGZvciAobGV0IHJvdyA9IDA7IHJvdyA8IHRoaXMucm93czsgcm93KyspIHtcbiAgICAgICAgICBmb3IgKGxldCBjb2x1bW4gPSAwOyBjb2x1bW4gPCB0aGlzLmNvbHVtbnM7IGNvbHVtbisrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5nZXQocm93LCBjb2x1bW4pIDwgbWluKSB7XG4gICAgICAgICAgICAgIG1pbiA9IHRoaXMuZ2V0KHJvdywgY29sdW1uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1pbjtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgbWluSW5kZXgoKSB7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIDApO1xuICAgIGxldCBpZHggPSBbMCwgMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBpZiAodGhpcy5nZXQoaSwgaikgPCB2KSB7XG4gICAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGopO1xuICAgICAgICAgIGlkeFswXSA9IGk7XG4gICAgICAgICAgaWR4WzFdID0gajtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWF4Um93KHJvdykge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgcm93KTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQocm93LCAwKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWF4Um93SW5kZXgocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGxldCBpZHggPSBbcm93LCAwXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQocm93LCBpKSA+IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KHJvdywgaSk7XG4gICAgICAgIGlkeFsxXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBtaW5Sb3cocm93KSB7XG4gICAgY2hlY2tSb3dJbmRleCh0aGlzLCByb3cpO1xuICAgIGlmICh0aGlzLmlzRW1wdHkoKSkge1xuICAgICAgcmV0dXJuIE5hTjtcbiAgICB9XG4gICAgbGV0IHYgPSB0aGlzLmdldChyb3csIDApO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHY7XG4gIH1cblxuICBtaW5Sb3dJbmRleChyb3cpIHtcbiAgICBjaGVja1Jvd0luZGV4KHRoaXMsIHJvdyk7XG4gICAgY2hlY2tOb25FbXB0eSh0aGlzKTtcbiAgICBsZXQgdiA9IHRoaXMuZ2V0KHJvdywgMCk7XG4gICAgbGV0IGlkeCA9IFtyb3csIDBdO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmdldChyb3csIGkpIDwgdikge1xuICAgICAgICB2ID0gdGhpcy5nZXQocm93LCBpKTtcbiAgICAgICAgaWR4WzFdID0gaTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGlkeDtcbiAgfVxuXG4gIG1heENvbHVtbihjb2x1bW4pIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGNvbHVtbik7XG4gICAgaWYgKHRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICByZXR1cm4gTmFOO1xuICAgIH1cbiAgICBsZXQgdiA9IHRoaXMuZ2V0KDAsIGNvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdjtcbiAgfVxuXG4gIG1heENvbHVtbkluZGV4KGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBjaGVja05vbkVtcHR5KHRoaXMpO1xuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBsZXQgaWR4ID0gWzAsIGNvbHVtbl07XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgaWYgKHRoaXMuZ2V0KGksIGNvbHVtbikgPiB2KSB7XG4gICAgICAgIHYgPSB0aGlzLmdldChpLCBjb2x1bW4pO1xuICAgICAgICBpZHhbMF0gPSBpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaWR4O1xuICB9XG5cbiAgbWluQ29sdW1uKGNvbHVtbikge1xuICAgIGNoZWNrQ29sdW1uSW5kZXgodGhpcywgY29sdW1uKTtcbiAgICBpZiAodGhpcy5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiBOYU47XG4gICAgfVxuICAgIGxldCB2ID0gdGhpcy5nZXQoMCwgY29sdW1uKTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2O1xuICB9XG5cbiAgbWluQ29sdW1uSW5kZXgoY29sdW1uKSB7XG4gICAgY2hlY2tDb2x1bW5JbmRleCh0aGlzLCBjb2x1bW4pO1xuICAgIGNoZWNrTm9uRW1wdHkodGhpcyk7XG4gICAgbGV0IHYgPSB0aGlzLmdldCgwLCBjb2x1bW4pO1xuICAgIGxldCBpZHggPSBbMCwgY29sdW1uXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBpZiAodGhpcy5nZXQoaSwgY29sdW1uKSA8IHYpIHtcbiAgICAgICAgdiA9IHRoaXMuZ2V0KGksIGNvbHVtbik7XG4gICAgICAgIGlkeFswXSA9IGk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpZHg7XG4gIH1cblxuICBkaWFnKCkge1xuICAgIGxldCBtaW4gPSBNYXRoLm1pbih0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgbGV0IGRpYWcgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1pbjsgaSsrKSB7XG4gICAgICBkaWFnLnB1c2godGhpcy5nZXQoaSwgaSkpO1xuICAgIH1cbiAgICByZXR1cm4gZGlhZztcbiAgfVxuXG4gIG5vcm0odHlwZSA9ICdmcm9iZW5pdXMnKSB7XG4gICAgbGV0IHJlc3VsdCA9IDA7XG4gICAgaWYgKHR5cGUgPT09ICdtYXgnKSB7XG4gICAgICByZXR1cm4gdGhpcy5tYXgoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmcm9iZW5pdXMnKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgICByZXN1bHQgPSByZXN1bHQgKyB0aGlzLmdldChpLCBqKSAqIHRoaXMuZ2V0KGksIGopO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KHJlc3VsdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGB1bmtub3duIG5vcm0gdHlwZTogJHt0eXBlfWApO1xuICAgIH1cbiAgfVxuXG4gIGN1bXVsYXRpdmVTdW0oKSB7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBzdW0gKz0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHN1bSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZG90KHZlY3RvcjIpIHtcbiAgICBpZiAoQWJzdHJhY3RNYXRyaXguaXNNYXRyaXgodmVjdG9yMikpIHZlY3RvcjIgPSB2ZWN0b3IyLnRvMURBcnJheSgpO1xuICAgIGxldCB2ZWN0b3IxID0gdGhpcy50bzFEQXJyYXkoKTtcbiAgICBpZiAodmVjdG9yMS5sZW5ndGggIT09IHZlY3RvcjIubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndmVjdG9ycyBkbyBub3QgaGF2ZSB0aGUgc2FtZSBzaXplJyk7XG4gICAgfVxuICAgIGxldCBkb3QgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmVjdG9yMS5sZW5ndGg7IGkrKykge1xuICAgICAgZG90ICs9IHZlY3RvcjFbaV0gKiB2ZWN0b3IyW2ldO1xuICAgIH1cbiAgICByZXR1cm4gZG90O1xuICB9XG5cbiAgbW11bChvdGhlcikge1xuICAgIG90aGVyID0gTWF0cml4LmNoZWNrTWF0cml4KG90aGVyKTtcblxuICAgIGxldCBtID0gdGhpcy5yb3dzO1xuICAgIGxldCBuID0gdGhpcy5jb2x1bW5zO1xuICAgIGxldCBwID0gb3RoZXIuY29sdW1ucztcblxuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KG0sIHApO1xuXG4gICAgbGV0IEJjb2xqID0gbmV3IEZsb2F0NjRBcnJheShuKTtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHA7IGorKykge1xuICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgICAgQmNvbGpba10gPSBvdGhlci5nZXQoaywgaik7XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIGxldCBzID0gMDtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBuOyBrKyspIHtcbiAgICAgICAgICBzICs9IHRoaXMuZ2V0KGksIGspICogQmNvbGpba107XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQuc2V0KGksIGosIHMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RyYXNzZW4yeDIob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgoMiwgMik7XG4gICAgY29uc3QgYTExID0gdGhpcy5nZXQoMCwgMCk7XG4gICAgY29uc3QgYjExID0gb3RoZXIuZ2V0KDAsIDApO1xuICAgIGNvbnN0IGExMiA9IHRoaXMuZ2V0KDAsIDEpO1xuICAgIGNvbnN0IGIxMiA9IG90aGVyLmdldCgwLCAxKTtcbiAgICBjb25zdCBhMjEgPSB0aGlzLmdldCgxLCAwKTtcbiAgICBjb25zdCBiMjEgPSBvdGhlci5nZXQoMSwgMCk7XG4gICAgY29uc3QgYTIyID0gdGhpcy5nZXQoMSwgMSk7XG4gICAgY29uc3QgYjIyID0gb3RoZXIuZ2V0KDEsIDEpO1xuXG4gICAgLy8gQ29tcHV0ZSBpbnRlcm1lZGlhdGUgdmFsdWVzLlxuICAgIGNvbnN0IG0xID0gKGExMSArIGEyMikgKiAoYjExICsgYjIyKTtcbiAgICBjb25zdCBtMiA9IChhMjEgKyBhMjIpICogYjExO1xuICAgIGNvbnN0IG0zID0gYTExICogKGIxMiAtIGIyMik7XG4gICAgY29uc3QgbTQgPSBhMjIgKiAoYjIxIC0gYjExKTtcbiAgICBjb25zdCBtNSA9IChhMTEgKyBhMTIpICogYjIyO1xuICAgIGNvbnN0IG02ID0gKGEyMSAtIGExMSkgKiAoYjExICsgYjEyKTtcbiAgICBjb25zdCBtNyA9IChhMTIgLSBhMjIpICogKGIyMSArIGIyMik7XG5cbiAgICAvLyBDb21iaW5lIGludGVybWVkaWF0ZSB2YWx1ZXMgaW50byB0aGUgb3V0cHV0LlxuICAgIGNvbnN0IGMwMCA9IG0xICsgbTQgLSBtNSArIG03O1xuICAgIGNvbnN0IGMwMSA9IG0zICsgbTU7XG4gICAgY29uc3QgYzEwID0gbTIgKyBtNDtcbiAgICBjb25zdCBjMTEgPSBtMSAtIG0yICsgbTMgKyBtNjtcblxuICAgIHJlc3VsdC5zZXQoMCwgMCwgYzAwKTtcbiAgICByZXN1bHQuc2V0KDAsIDEsIGMwMSk7XG4gICAgcmVzdWx0LnNldCgxLCAwLCBjMTApO1xuICAgIHJlc3VsdC5zZXQoMSwgMSwgYzExKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc3RyYXNzZW4zeDMob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgoMywgMyk7XG5cbiAgICBjb25zdCBhMDAgPSB0aGlzLmdldCgwLCAwKTtcbiAgICBjb25zdCBhMDEgPSB0aGlzLmdldCgwLCAxKTtcbiAgICBjb25zdCBhMDIgPSB0aGlzLmdldCgwLCAyKTtcbiAgICBjb25zdCBhMTAgPSB0aGlzLmdldCgxLCAwKTtcbiAgICBjb25zdCBhMTEgPSB0aGlzLmdldCgxLCAxKTtcbiAgICBjb25zdCBhMTIgPSB0aGlzLmdldCgxLCAyKTtcbiAgICBjb25zdCBhMjAgPSB0aGlzLmdldCgyLCAwKTtcbiAgICBjb25zdCBhMjEgPSB0aGlzLmdldCgyLCAxKTtcbiAgICBjb25zdCBhMjIgPSB0aGlzLmdldCgyLCAyKTtcblxuICAgIGNvbnN0IGIwMCA9IG90aGVyLmdldCgwLCAwKTtcbiAgICBjb25zdCBiMDEgPSBvdGhlci5nZXQoMCwgMSk7XG4gICAgY29uc3QgYjAyID0gb3RoZXIuZ2V0KDAsIDIpO1xuICAgIGNvbnN0IGIxMCA9IG90aGVyLmdldCgxLCAwKTtcbiAgICBjb25zdCBiMTEgPSBvdGhlci5nZXQoMSwgMSk7XG4gICAgY29uc3QgYjEyID0gb3RoZXIuZ2V0KDEsIDIpO1xuICAgIGNvbnN0IGIyMCA9IG90aGVyLmdldCgyLCAwKTtcbiAgICBjb25zdCBiMjEgPSBvdGhlci5nZXQoMiwgMSk7XG4gICAgY29uc3QgYjIyID0gb3RoZXIuZ2V0KDIsIDIpO1xuXG4gICAgY29uc3QgbTEgPSAoYTAwICsgYTAxICsgYTAyIC0gYTEwIC0gYTExIC0gYTIxIC0gYTIyKSAqIGIxMTtcbiAgICBjb25zdCBtMiA9IChhMDAgLSBhMTApICogKC1iMDEgKyBiMTEpO1xuICAgIGNvbnN0IG0zID0gYTExICogKC1iMDAgKyBiMDEgKyBiMTAgLSBiMTEgLSBiMTIgLSBiMjAgKyBiMjIpO1xuICAgIGNvbnN0IG00ID0gKC1hMDAgKyBhMTAgKyBhMTEpICogKGIwMCAtIGIwMSArIGIxMSk7XG4gICAgY29uc3QgbTUgPSAoYTEwICsgYTExKSAqICgtYjAwICsgYjAxKTtcbiAgICBjb25zdCBtNiA9IGEwMCAqIGIwMDtcbiAgICBjb25zdCBtNyA9ICgtYTAwICsgYTIwICsgYTIxKSAqIChiMDAgLSBiMDIgKyBiMTIpO1xuICAgIGNvbnN0IG04ID0gKC1hMDAgKyBhMjApICogKGIwMiAtIGIxMik7XG4gICAgY29uc3QgbTkgPSAoYTIwICsgYTIxKSAqICgtYjAwICsgYjAyKTtcbiAgICBjb25zdCBtMTAgPSAoYTAwICsgYTAxICsgYTAyIC0gYTExIC0gYTEyIC0gYTIwIC0gYTIxKSAqIGIxMjtcbiAgICBjb25zdCBtMTEgPSBhMjEgKiAoLWIwMCArIGIwMiArIGIxMCAtIGIxMSAtIGIxMiAtIGIyMCArIGIyMSk7XG4gICAgY29uc3QgbTEyID0gKC1hMDIgKyBhMjEgKyBhMjIpICogKGIxMSArIGIyMCAtIGIyMSk7XG4gICAgY29uc3QgbTEzID0gKGEwMiAtIGEyMikgKiAoYjExIC0gYjIxKTtcbiAgICBjb25zdCBtMTQgPSBhMDIgKiBiMjA7XG4gICAgY29uc3QgbTE1ID0gKGEyMSArIGEyMikgKiAoLWIyMCArIGIyMSk7XG4gICAgY29uc3QgbTE2ID0gKC1hMDIgKyBhMTEgKyBhMTIpICogKGIxMiArIGIyMCAtIGIyMik7XG4gICAgY29uc3QgbTE3ID0gKGEwMiAtIGExMikgKiAoYjEyIC0gYjIyKTtcbiAgICBjb25zdCBtMTggPSAoYTExICsgYTEyKSAqICgtYjIwICsgYjIyKTtcbiAgICBjb25zdCBtMTkgPSBhMDEgKiBiMTA7XG4gICAgY29uc3QgbTIwID0gYTEyICogYjIxO1xuICAgIGNvbnN0IG0yMSA9IGExMCAqIGIwMjtcbiAgICBjb25zdCBtMjIgPSBhMjAgKiBiMDE7XG4gICAgY29uc3QgbTIzID0gYTIyICogYjIyO1xuXG4gICAgY29uc3QgYzAwID0gbTYgKyBtMTQgKyBtMTk7XG4gICAgY29uc3QgYzAxID0gbTEgKyBtNCArIG01ICsgbTYgKyBtMTIgKyBtMTQgKyBtMTU7XG4gICAgY29uc3QgYzAyID0gbTYgKyBtNyArIG05ICsgbTEwICsgbTE0ICsgbTE2ICsgbTE4O1xuICAgIGNvbnN0IGMxMCA9IG0yICsgbTMgKyBtNCArIG02ICsgbTE0ICsgbTE2ICsgbTE3O1xuICAgIGNvbnN0IGMxMSA9IG0yICsgbTQgKyBtNSArIG02ICsgbTIwO1xuICAgIGNvbnN0IGMxMiA9IG0xNCArIG0xNiArIG0xNyArIG0xOCArIG0yMTtcbiAgICBjb25zdCBjMjAgPSBtNiArIG03ICsgbTggKyBtMTEgKyBtMTIgKyBtMTMgKyBtMTQ7XG4gICAgY29uc3QgYzIxID0gbTEyICsgbTEzICsgbTE0ICsgbTE1ICsgbTIyO1xuICAgIGNvbnN0IGMyMiA9IG02ICsgbTcgKyBtOCArIG05ICsgbTIzO1xuXG4gICAgcmVzdWx0LnNldCgwLCAwLCBjMDApO1xuICAgIHJlc3VsdC5zZXQoMCwgMSwgYzAxKTtcbiAgICByZXN1bHQuc2V0KDAsIDIsIGMwMik7XG4gICAgcmVzdWx0LnNldCgxLCAwLCBjMTApO1xuICAgIHJlc3VsdC5zZXQoMSwgMSwgYzExKTtcbiAgICByZXN1bHQuc2V0KDEsIDIsIGMxMik7XG4gICAgcmVzdWx0LnNldCgyLCAwLCBjMjApO1xuICAgIHJlc3VsdC5zZXQoMiwgMSwgYzIxKTtcbiAgICByZXN1bHQuc2V0KDIsIDIsIGMyMik7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIG1tdWxTdHJhc3Nlbih5KSB7XG4gICAgeSA9IE1hdHJpeC5jaGVja01hdHJpeCh5KTtcbiAgICBsZXQgeCA9IHRoaXMuY2xvbmUoKTtcbiAgICBsZXQgcjEgPSB4LnJvd3M7XG4gICAgbGV0IGMxID0geC5jb2x1bW5zO1xuICAgIGxldCByMiA9IHkucm93cztcbiAgICBsZXQgYzIgPSB5LmNvbHVtbnM7XG4gICAgaWYgKGMxICE9PSByMikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYE11bHRpcGx5aW5nICR7cjF9IHggJHtjMX0gYW5kICR7cjJ9IHggJHtjMn0gbWF0cml4OiBkaW1lbnNpb25zIGRvIG5vdCBtYXRjaC5gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBQdXQgYSBtYXRyaXggaW50byB0aGUgdG9wIGxlZnQgb2YgYSBtYXRyaXggb2YgemVyb3MuXG4gICAgLy8gYHJvd3NgIGFuZCBgY29sc2AgYXJlIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBvdXRwdXQgbWF0cml4LlxuICAgIGZ1bmN0aW9uIGVtYmVkKG1hdCwgcm93cywgY29scykge1xuICAgICAgbGV0IHIgPSBtYXQucm93cztcbiAgICAgIGxldCBjID0gbWF0LmNvbHVtbnM7XG4gICAgICBpZiAociA9PT0gcm93cyAmJiBjID09PSBjb2xzKSB7XG4gICAgICAgIHJldHVybiBtYXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgcmVzdWx0YXQgPSBBYnN0cmFjdE1hdHJpeC56ZXJvcyhyb3dzLCBjb2xzKTtcbiAgICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgobWF0LCAwLCAwKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdGF0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ha2Ugc3VyZSBib3RoIG1hdHJpY2VzIGFyZSB0aGUgc2FtZSBzaXplLlxuICAgIC8vIFRoaXMgaXMgZXhjbHVzaXZlbHkgZm9yIHNpbXBsaWNpdHk6XG4gICAgLy8gdGhpcyBhbGdvcml0aG0gY2FuIGJlIGltcGxlbWVudGVkIHdpdGggbWF0cmljZXMgb2YgZGlmZmVyZW50IHNpemVzLlxuXG4gICAgbGV0IHIgPSBNYXRoLm1heChyMSwgcjIpO1xuICAgIGxldCBjID0gTWF0aC5tYXgoYzEsIGMyKTtcbiAgICB4ID0gZW1iZWQoeCwgciwgYyk7XG4gICAgeSA9IGVtYmVkKHksIHIsIGMpO1xuXG4gICAgLy8gT3VyIHJlY3Vyc2l2ZSBtdWx0aXBsaWNhdGlvbiBmdW5jdGlvbi5cbiAgICBmdW5jdGlvbiBibG9ja011bHQoYSwgYiwgcm93cywgY29scykge1xuICAgICAgLy8gRm9yIHNtYWxsIG1hdHJpY2VzLCByZXNvcnQgdG8gbmFpdmUgbXVsdGlwbGljYXRpb24uXG4gICAgICBpZiAocm93cyA8PSA1MTIgfHwgY29scyA8PSA1MTIpIHtcbiAgICAgICAgcmV0dXJuIGEubW11bChiKTsgLy8gYSBpcyBlcXVpdmFsZW50IHRvIHRoaXNcbiAgICAgIH1cblxuICAgICAgLy8gQXBwbHkgZHluYW1pYyBwYWRkaW5nLlxuICAgICAgaWYgKHJvd3MgJSAyID09PSAxICYmIGNvbHMgJSAyID09PSAxKSB7XG4gICAgICAgIGEgPSBlbWJlZChhLCByb3dzICsgMSwgY29scyArIDEpO1xuICAgICAgICBiID0gZW1iZWQoYiwgcm93cyArIDEsIGNvbHMgKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAocm93cyAlIDIgPT09IDEpIHtcbiAgICAgICAgYSA9IGVtYmVkKGEsIHJvd3MgKyAxLCBjb2xzKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MgKyAxLCBjb2xzKTtcbiAgICAgIH0gZWxzZSBpZiAoY29scyAlIDIgPT09IDEpIHtcbiAgICAgICAgYSA9IGVtYmVkKGEsIHJvd3MsIGNvbHMgKyAxKTtcbiAgICAgICAgYiA9IGVtYmVkKGIsIHJvd3MsIGNvbHMgKyAxKTtcbiAgICAgIH1cblxuICAgICAgbGV0IGhhbGZSb3dzID0gcGFyc2VJbnQoYS5yb3dzIC8gMiwgMTApO1xuICAgICAgbGV0IGhhbGZDb2xzID0gcGFyc2VJbnQoYS5jb2x1bW5zIC8gMiwgMTApO1xuICAgICAgLy8gU3ViZGl2aWRlIGlucHV0IG1hdHJpY2VzLlxuICAgICAgbGV0IGExMSA9IGEuc3ViTWF0cml4KDAsIGhhbGZSb3dzIC0gMSwgMCwgaGFsZkNvbHMgLSAxKTtcbiAgICAgIGxldCBiMTEgPSBiLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIDAsIGhhbGZDb2xzIC0gMSk7XG5cbiAgICAgIGxldCBhMTIgPSBhLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIGhhbGZDb2xzLCBhLmNvbHVtbnMgLSAxKTtcbiAgICAgIGxldCBiMTIgPSBiLnN1Yk1hdHJpeCgwLCBoYWxmUm93cyAtIDEsIGhhbGZDb2xzLCBiLmNvbHVtbnMgLSAxKTtcblxuICAgICAgbGV0IGEyMSA9IGEuc3ViTWF0cml4KGhhbGZSb3dzLCBhLnJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuICAgICAgbGV0IGIyMSA9IGIuc3ViTWF0cml4KGhhbGZSb3dzLCBiLnJvd3MgLSAxLCAwLCBoYWxmQ29scyAtIDEpO1xuXG4gICAgICBsZXQgYTIyID0gYS5zdWJNYXRyaXgoaGFsZlJvd3MsIGEucm93cyAtIDEsIGhhbGZDb2xzLCBhLmNvbHVtbnMgLSAxKTtcbiAgICAgIGxldCBiMjIgPSBiLnN1Yk1hdHJpeChoYWxmUm93cywgYi5yb3dzIC0gMSwgaGFsZkNvbHMsIGIuY29sdW1ucyAtIDEpO1xuXG4gICAgICAvLyBDb21wdXRlIGludGVybWVkaWF0ZSB2YWx1ZXMuXG4gICAgICBsZXQgbTEgPSBibG9ja011bHQoXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChhMTEsIGEyMiksXG4gICAgICAgIEFic3RyYWN0TWF0cml4LmFkZChiMTEsIGIyMiksXG4gICAgICAgIGhhbGZSb3dzLFxuICAgICAgICBoYWxmQ29scyxcbiAgICAgICk7XG4gICAgICBsZXQgbTIgPSBibG9ja011bHQoQWJzdHJhY3RNYXRyaXguYWRkKGEyMSwgYTIyKSwgYjExLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG0zID0gYmxvY2tNdWx0KGExMSwgQWJzdHJhY3RNYXRyaXguc3ViKGIxMiwgYjIyKSwgaGFsZlJvd3MsIGhhbGZDb2xzKTtcbiAgICAgIGxldCBtNCA9IGJsb2NrTXVsdChhMjIsIEFic3RyYWN0TWF0cml4LnN1YihiMjEsIGIxMSksIGhhbGZSb3dzLCBoYWxmQ29scyk7XG4gICAgICBsZXQgbTUgPSBibG9ja011bHQoQWJzdHJhY3RNYXRyaXguYWRkKGExMSwgYTEyKSwgYjIyLCBoYWxmUm93cywgaGFsZkNvbHMpO1xuICAgICAgbGV0IG02ID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5zdWIoYTIxLCBhMTEpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjExLCBiMTIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuICAgICAgbGV0IG03ID0gYmxvY2tNdWx0KFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5zdWIoYTEyLCBhMjIpLFxuICAgICAgICBBYnN0cmFjdE1hdHJpeC5hZGQoYjIxLCBiMjIpLFxuICAgICAgICBoYWxmUm93cyxcbiAgICAgICAgaGFsZkNvbHMsXG4gICAgICApO1xuXG4gICAgICAvLyBDb21iaW5lIGludGVybWVkaWF0ZSB2YWx1ZXMgaW50byB0aGUgb3V0cHV0LlxuICAgICAgbGV0IGMxMSA9IEFic3RyYWN0TWF0cml4LmFkZChtMSwgbTQpO1xuICAgICAgYzExLnN1YihtNSk7XG4gICAgICBjMTEuYWRkKG03KTtcbiAgICAgIGxldCBjMTIgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTMsIG01KTtcbiAgICAgIGxldCBjMjEgPSBBYnN0cmFjdE1hdHJpeC5hZGQobTIsIG00KTtcbiAgICAgIGxldCBjMjIgPSBBYnN0cmFjdE1hdHJpeC5zdWIobTEsIG0yKTtcbiAgICAgIGMyMi5hZGQobTMpO1xuICAgICAgYzIyLmFkZChtNik7XG5cbiAgICAgIC8vIENyb3Agb3V0cHV0IHRvIHRoZSBkZXNpcmVkIHNpemUgKHVuZG8gZHluYW1pYyBwYWRkaW5nKS5cbiAgICAgIGxldCByZXN1bHRhdCA9IEFic3RyYWN0TWF0cml4Lnplcm9zKDIgKiBjMTEucm93cywgMiAqIGMxMS5jb2x1bW5zKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMxMSwgMCwgMCk7XG4gICAgICByZXN1bHRhdCA9IHJlc3VsdGF0LnNldFN1Yk1hdHJpeChjMTIsIGMxMS5yb3dzLCAwKTtcbiAgICAgIHJlc3VsdGF0ID0gcmVzdWx0YXQuc2V0U3ViTWF0cml4KGMyMSwgMCwgYzExLmNvbHVtbnMpO1xuICAgICAgcmVzdWx0YXQgPSByZXN1bHRhdC5zZXRTdWJNYXRyaXgoYzIyLCBjMTEucm93cywgYzExLmNvbHVtbnMpO1xuICAgICAgcmV0dXJuIHJlc3VsdGF0LnN1Yk1hdHJpeCgwLCByb3dzIC0gMSwgMCwgY29scyAtIDEpO1xuICAgIH1cblxuICAgIHJldHVybiBibG9ja011bHQoeCwgeSwgciwgYyk7XG4gIH1cblxuICBzY2FsZVJvd3Mob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWluIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtYXgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXggbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmIChtaW4gPj0gbWF4KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCcpO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLmdldFJvdyhpKTtcbiAgICAgIGlmIChyb3cubGVuZ3RoID4gMCkge1xuICAgICAgICByZXNjYWxlKHJvdywgeyBtaW4sIG1heCwgb3V0cHV0OiByb3cgfSk7XG4gICAgICB9XG4gICAgICBuZXdNYXRyaXguc2V0Um93KGksIHJvdyk7XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzY2FsZUNvbHVtbnMob3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IG1pbiA9IDAsIG1heCA9IDEgfSA9IG9wdGlvbnM7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUobWluKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignbWluIG11c3QgYmUgYSBudW1iZXInKTtcbiAgICBpZiAoIU51bWJlci5pc0Zpbml0ZShtYXgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdtYXggbXVzdCBiZSBhIG51bWJlcicpO1xuICAgIGlmIChtaW4gPj0gbWF4KSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignbWluIG11c3QgYmUgc21hbGxlciB0aGFuIG1heCcpO1xuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uczsgaSsrKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdldENvbHVtbihpKTtcbiAgICAgIGlmIChjb2x1bW4ubGVuZ3RoKSB7XG4gICAgICAgIHJlc2NhbGUoY29sdW1uLCB7XG4gICAgICAgICAgbWluOiBtaW4sXG4gICAgICAgICAgbWF4OiBtYXgsXG4gICAgICAgICAgb3V0cHV0OiBjb2x1bW4sXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgbmV3TWF0cml4LnNldENvbHVtbihpLCBjb2x1bW4pO1xuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgZmxpcFJvd3MoKSB7XG4gICAgY29uc3QgbWlkZGxlID0gTWF0aC5jZWlsKHRoaXMuY29sdW1ucyAvIDIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWlkZGxlOyBqKyspIHtcbiAgICAgICAgbGV0IGZpcnN0ID0gdGhpcy5nZXQoaSwgaik7XG4gICAgICAgIGxldCBsYXN0ID0gdGhpcy5nZXQoaSwgdGhpcy5jb2x1bW5zIC0gMSAtIGopO1xuICAgICAgICB0aGlzLnNldChpLCBqLCBsYXN0KTtcbiAgICAgICAgdGhpcy5zZXQoaSwgdGhpcy5jb2x1bW5zIC0gMSAtIGosIGZpcnN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBmbGlwQ29sdW1ucygpIHtcbiAgICBjb25zdCBtaWRkbGUgPSBNYXRoLmNlaWwodGhpcy5yb3dzIC8gMik7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtaWRkbGU7IGkrKykge1xuICAgICAgICBsZXQgZmlyc3QgPSB0aGlzLmdldChpLCBqKTtcbiAgICAgICAgbGV0IGxhc3QgPSB0aGlzLmdldCh0aGlzLnJvd3MgLSAxIC0gaSwgaik7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIGxhc3QpO1xuICAgICAgICB0aGlzLnNldCh0aGlzLnJvd3MgLSAxIC0gaSwgaiwgZmlyc3QpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGtyb25lY2tlclByb2R1Y3Qob3RoZXIpIHtcbiAgICBvdGhlciA9IE1hdHJpeC5jaGVja01hdHJpeChvdGhlcik7XG5cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IHRoaXMuY29sdW1ucztcbiAgICBsZXQgcCA9IG90aGVyLnJvd3M7XG4gICAgbGV0IHEgPSBvdGhlci5jb2x1bW5zO1xuXG4gICAgbGV0IHJlc3VsdCA9IG5ldyBNYXRyaXgobSAqIHAsIG4gKiBxKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBwOyBrKyspIHtcbiAgICAgICAgICBmb3IgKGxldCBsID0gMDsgbCA8IHE7IGwrKykge1xuICAgICAgICAgICAgcmVzdWx0LnNldChwICogaSArIGssIHEgKiBqICsgbCwgdGhpcy5nZXQoaSwgaikgKiBvdGhlci5nZXQoaywgbCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAga3JvbmVja2VyU3VtKG90aGVyKSB7XG4gICAgb3RoZXIgPSBNYXRyaXguY2hlY2tNYXRyaXgob3RoZXIpO1xuICAgIGlmICghdGhpcy5pc1NxdWFyZSgpIHx8ICFvdGhlci5pc1NxdWFyZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0tyb25lY2tlciBTdW0gbmVlZHMgdHdvIFNxdWFyZSBNYXRyaWNlcycpO1xuICAgIH1cbiAgICBsZXQgbSA9IHRoaXMucm93cztcbiAgICBsZXQgbiA9IG90aGVyLnJvd3M7XG4gICAgbGV0IEF4SSA9IHRoaXMua3JvbmVja2VyUHJvZHVjdChNYXRyaXguZXllKG4sIG4pKTtcbiAgICBsZXQgSXhCID0gTWF0cml4LmV5ZShtLCBtKS5rcm9uZWNrZXJQcm9kdWN0KG90aGVyKTtcbiAgICByZXR1cm4gQXhJLmFkZChJeEIpO1xuICB9XG5cbiAgdHJhbnNwb3NlKCkge1xuICAgIGxldCByZXN1bHQgPSBuZXcgTWF0cml4KHRoaXMuY29sdW1ucywgdGhpcy5yb3dzKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHJlc3VsdC5zZXQoaiwgaSwgdGhpcy5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgc29ydFJvd3MoY29tcGFyZUZ1bmN0aW9uID0gY29tcGFyZU51bWJlcnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICB0aGlzLnNldFJvdyhpLCB0aGlzLmdldFJvdyhpKS5zb3J0KGNvbXBhcmVGdW5jdGlvbikpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNvcnRDb2x1bW5zKGNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVOdW1iZXJzKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbnM7IGkrKykge1xuICAgICAgdGhpcy5zZXRDb2x1bW4oaSwgdGhpcy5nZXRDb2x1bW4oaSkuc29ydChjb21wYXJlRnVuY3Rpb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBzdWJNYXRyaXgoc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbikge1xuICAgIGNoZWNrUmFuZ2UodGhpcywgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7XG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgoXG4gICAgICBlbmRSb3cgLSBzdGFydFJvdyArIDEsXG4gICAgICBlbmRDb2x1bW4gLSBzdGFydENvbHVtbiArIDEsXG4gICAgKTtcbiAgICBmb3IgKGxldCBpID0gc3RhcnRSb3c7IGkgPD0gZW5kUm93OyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSBzdGFydENvbHVtbjsgaiA8PSBlbmRDb2x1bW47IGorKykge1xuICAgICAgICBuZXdNYXRyaXguc2V0KGkgLSBzdGFydFJvdywgaiAtIHN0YXJ0Q29sdW1uLCB0aGlzLmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdNYXRyaXg7XG4gIH1cblxuICBzdWJNYXRyaXhSb3coaW5kaWNlcywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbikge1xuICAgIGlmIChzdGFydENvbHVtbiA9PT0gdW5kZWZpbmVkKSBzdGFydENvbHVtbiA9IDA7XG4gICAgaWYgKGVuZENvbHVtbiA9PT0gdW5kZWZpbmVkKSBlbmRDb2x1bW4gPSB0aGlzLmNvbHVtbnMgLSAxO1xuICAgIGlmIChcbiAgICAgIHN0YXJ0Q29sdW1uID4gZW5kQ29sdW1uIHx8XG4gICAgICBzdGFydENvbHVtbiA8IDAgfHxcbiAgICAgIHN0YXJ0Q29sdW1uID49IHRoaXMuY29sdW1ucyB8fFxuICAgICAgZW5kQ29sdW1uIDwgMCB8fFxuICAgICAgZW5kQ29sdW1uID49IHRoaXMuY29sdW1uc1xuICAgICkge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0FyZ3VtZW50IG91dCBvZiByYW5nZScpO1xuICAgIH1cblxuICAgIGxldCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KGluZGljZXMubGVuZ3RoLCBlbmRDb2x1bW4gLSBzdGFydENvbHVtbiArIDEpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IHN0YXJ0Q29sdW1uOyBqIDw9IGVuZENvbHVtbjsgaisrKSB7XG4gICAgICAgIGlmIChpbmRpY2VzW2ldIDwgMCB8fCBpbmRpY2VzW2ldID49IHRoaXMucm93cykge1xuICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKGBSb3cgaW5kZXggb3V0IG9mIHJhbmdlOiAke2luZGljZXNbaV19YCk7XG4gICAgICAgIH1cbiAgICAgICAgbmV3TWF0cml4LnNldChpLCBqIC0gc3RhcnRDb2x1bW4sIHRoaXMuZ2V0KGluZGljZXNbaV0sIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld01hdHJpeDtcbiAgfVxuXG4gIHN1Yk1hdHJpeENvbHVtbihpbmRpY2VzLCBzdGFydFJvdywgZW5kUm93KSB7XG4gICAgaWYgKHN0YXJ0Um93ID09PSB1bmRlZmluZWQpIHN0YXJ0Um93ID0gMDtcbiAgICBpZiAoZW5kUm93ID09PSB1bmRlZmluZWQpIGVuZFJvdyA9IHRoaXMucm93cyAtIDE7XG4gICAgaWYgKFxuICAgICAgc3RhcnRSb3cgPiBlbmRSb3cgfHxcbiAgICAgIHN0YXJ0Um93IDwgMCB8fFxuICAgICAgc3RhcnRSb3cgPj0gdGhpcy5yb3dzIHx8XG4gICAgICBlbmRSb3cgPCAwIHx8XG4gICAgICBlbmRSb3cgPj0gdGhpcy5yb3dzXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXJndW1lbnQgb3V0IG9mIHJhbmdlJyk7XG4gICAgfVxuXG4gICAgbGV0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgoZW5kUm93IC0gc3RhcnRSb3cgKyAxLCBpbmRpY2VzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gc3RhcnRSb3c7IGogPD0gZW5kUm93OyBqKyspIHtcbiAgICAgICAgaWYgKGluZGljZXNbaV0gPCAwIHx8IGluZGljZXNbaV0gPj0gdGhpcy5jb2x1bW5zKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoYENvbHVtbiBpbmRleCBvdXQgb2YgcmFuZ2U6ICR7aW5kaWNlc1tpXX1gKTtcbiAgICAgICAgfVxuICAgICAgICBuZXdNYXRyaXguc2V0KGogLSBzdGFydFJvdywgaSwgdGhpcy5nZXQoaiwgaW5kaWNlc1tpXSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc2V0U3ViTWF0cml4KG1hdHJpeCwgc3RhcnRSb3csIHN0YXJ0Q29sdW1uKSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKG1hdHJpeC5pc0VtcHR5KCkpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBsZXQgZW5kUm93ID0gc3RhcnRSb3cgKyBtYXRyaXgucm93cyAtIDE7XG4gICAgbGV0IGVuZENvbHVtbiA9IHN0YXJ0Q29sdW1uICsgbWF0cml4LmNvbHVtbnMgLSAxO1xuICAgIGNoZWNrUmFuZ2UodGhpcywgc3RhcnRSb3csIGVuZFJvdywgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoc3RhcnRSb3cgKyBpLCBzdGFydENvbHVtbiArIGosIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHNlbGVjdGlvbihyb3dJbmRpY2VzLCBjb2x1bW5JbmRpY2VzKSB7XG4gICAgY2hlY2tSb3dJbmRpY2VzKHRoaXMsIHJvd0luZGljZXMpO1xuICAgIGNoZWNrQ29sdW1uSW5kaWNlcyh0aGlzLCBjb2x1bW5JbmRpY2VzKTtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChyb3dJbmRpY2VzLmxlbmd0aCwgY29sdW1uSW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93SW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IHJvd0luZGV4ID0gcm93SW5kaWNlc1tpXTtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uSW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICBsZXQgY29sdW1uSW5kZXggPSBjb2x1bW5JbmRpY2VzW2pdO1xuICAgICAgICBuZXdNYXRyaXguc2V0KGksIGosIHRoaXMuZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgdHJhY2UoKSB7XG4gICAgbGV0IG1pbiA9IE1hdGgubWluKHRoaXMucm93cywgdGhpcy5jb2x1bW5zKTtcbiAgICBsZXQgdHJhY2UgPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICAgIHRyYWNlICs9IHRoaXMuZ2V0KGksIGkpO1xuICAgIH1cbiAgICByZXR1cm4gdHJhY2U7XG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBsZXQgbmV3TWF0cml4ID0gbmV3IE1hdHJpeCh0aGlzLnJvd3MsIHRoaXMuY29sdW1ucyk7XG4gICAgZm9yIChsZXQgcm93ID0gMDsgcm93IDwgdGhpcy5yb3dzOyByb3crKykge1xuICAgICAgZm9yIChsZXQgY29sdW1uID0gMDsgY29sdW1uIDwgdGhpcy5jb2x1bW5zOyBjb2x1bW4rKykge1xuICAgICAgICBuZXdNYXRyaXguc2V0KHJvdywgY29sdW1uLCB0aGlzLmdldChyb3csIGNvbHVtbikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3TWF0cml4O1xuICB9XG5cbiAgc3VtKGJ5KSB7XG4gICAgc3dpdGNoIChieSkge1xuICAgICAgY2FzZSAncm93JzpcbiAgICAgICAgcmV0dXJuIHN1bUJ5Um93KHRoaXMpO1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHN1bUJ5Q29sdW1uKHRoaXMpO1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiBzdW1BbGwodGhpcyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHByb2R1Y3QoYnkpIHtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEJ5Um93KHRoaXMpO1xuICAgICAgY2FzZSAnY29sdW1uJzpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RCeUNvbHVtbih0aGlzKTtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICByZXR1cm4gcHJvZHVjdEFsbCh0aGlzKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgbWVhbihieSkge1xuICAgIGNvbnN0IHN1bSA9IHRoaXMuc3VtKGJ5KTtcbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgICAgICBzdW1baV0gLz0gdGhpcy5jb2x1bW5zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgICBjYXNlICdjb2x1bW4nOiB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zOyBpKyspIHtcbiAgICAgICAgICBzdW1baV0gLz0gdGhpcy5yb3dzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdW07XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHN1bSAvIHRoaXMuc2l6ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgdmFyaWFuY2UoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBjb25zdCB7IHVuYmlhc2VkID0gdHJ1ZSwgbWVhbiA9IHRoaXMubWVhbihieSkgfSA9IG9wdGlvbnM7XG4gICAgaWYgKHR5cGVvZiB1bmJpYXNlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmJpYXNlZCBtdXN0IGJlIGEgYm9vbGVhbicpO1xuICAgIH1cbiAgICBzd2l0Y2ggKGJ5KSB7XG4gICAgICBjYXNlICdyb3cnOiB7XG4gICAgICAgIGlmICghaXNBbnlBcnJheShtZWFuKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUJ5Um93KHRoaXMsIHVuYmlhc2VkLCBtZWFuKTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KG1lYW4pKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbWVhbiBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhcmlhbmNlQnlDb2x1bW4odGhpcywgdW5iaWFzZWQsIG1lYW4pO1xuICAgICAgfVxuICAgICAgY2FzZSB1bmRlZmluZWQ6IHtcbiAgICAgICAgaWYgKHR5cGVvZiBtZWFuICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ21lYW4gbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2YXJpYW5jZUFsbCh0aGlzLCB1bmJpYXNlZCwgbWVhbik7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHN0YW5kYXJkRGV2aWF0aW9uKGJ5LCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBieSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIG9wdGlvbnMgPSBieTtcbiAgICAgIGJ5ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCB2YXJpYW5jZSA9IHRoaXMudmFyaWFuY2UoYnksIG9wdGlvbnMpO1xuICAgIGlmIChieSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gTWF0aC5zcXJ0KHZhcmlhbmNlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YXJpYW5jZS5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXJpYW5jZVtpXSA9IE1hdGguc3FydCh2YXJpYW5jZVtpXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmFyaWFuY2U7XG4gICAgfVxuICB9XG5cbiAgY2VudGVyKGJ5LCBvcHRpb25zID0ge30pIHtcbiAgICBpZiAodHlwZW9mIGJ5ID09PSAnb2JqZWN0Jykge1xuICAgICAgb3B0aW9ucyA9IGJ5O1xuICAgICAgYnkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ29wdGlvbnMgbXVzdCBiZSBhbiBvYmplY3QnKTtcbiAgICB9XG4gICAgY29uc3QgeyBjZW50ZXIgPSB0aGlzLm1lYW4oYnkpIH0gPSBvcHRpb25zO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKCFpc0FueUFycmF5KGNlbnRlcikpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckJ5Um93KHRoaXMsIGNlbnRlcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuICAgICAgY2FzZSAnY29sdW1uJzoge1xuICAgICAgICBpZiAoIWlzQW55QXJyYXkoY2VudGVyKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2NlbnRlciBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY2VudGVyQnlDb2x1bW4odGhpcywgY2VudGVyKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBjYXNlIHVuZGVmaW5lZDoge1xuICAgICAgICBpZiAodHlwZW9mIGNlbnRlciAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdjZW50ZXIgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIGNlbnRlckFsbCh0aGlzLCBjZW50ZXIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBvcHRpb246ICR7Ynl9YCk7XG4gICAgfVxuICB9XG5cbiAgc2NhbGUoYnksIG9wdGlvbnMgPSB7fSkge1xuICAgIGlmICh0eXBlb2YgYnkgPT09ICdvYmplY3QnKSB7XG4gICAgICBvcHRpb25zID0gYnk7XG4gICAgICBieSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0Jykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignb3B0aW9ucyBtdXN0IGJlIGFuIG9iamVjdCcpO1xuICAgIH1cbiAgICBsZXQgc2NhbGUgPSBvcHRpb25zLnNjYWxlO1xuICAgIHN3aXRjaCAoYnkpIHtcbiAgICAgIGNhc2UgJ3Jvdyc6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQnlSb3codGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQW55QXJyYXkoc2NhbGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQnlSb3codGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ2NvbHVtbic6IHtcbiAgICAgICAgaWYgKHNjYWxlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY2FsZSA9IGdldFNjYWxlQnlDb2x1bW4odGhpcyk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQW55QXJyYXkoc2NhbGUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQnlDb2x1bW4odGhpcywgc2NhbGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIGNhc2UgdW5kZWZpbmVkOiB7XG4gICAgICAgIGlmIChzY2FsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NhbGUgPSBnZXRTY2FsZUFsbCh0aGlzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc2NhbGUgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignc2NhbGUgbXVzdCBiZSBhIG51bWJlcicpO1xuICAgICAgICB9XG4gICAgICAgIHNjYWxlQWxsKHRoaXMsIHNjYWxlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgb3B0aW9uOiAke2J5fWApO1xuICAgIH1cbiAgfVxuXG4gIHRvU3RyaW5nKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gaW5zcGVjdE1hdHJpeFdpdGhPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICB9XG59XG5cbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5rbGFzcyA9ICdNYXRyaXgnO1xuaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnKSB7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZVtTeW1ib2wuZm9yKCdub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbScpXSA9XG4gICAgaW5zcGVjdE1hdHJpeDtcbn1cblxuZnVuY3Rpb24gY29tcGFyZU51bWJlcnMoYSwgYikge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbmZ1bmN0aW9uIGlzQXJyYXlPZk51bWJlcnMoYXJyYXkpIHtcbiAgcmV0dXJuIGFycmF5LmV2ZXJ5KChlbGVtZW50KSA9PiB7XG4gICAgcmV0dXJuIHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJztcbiAgfSk7XG59XG5cbi8vIFN5bm9ueW1zXG5BYnN0cmFjdE1hdHJpeC5yYW5kb20gPSBBYnN0cmFjdE1hdHJpeC5yYW5kO1xuQWJzdHJhY3RNYXRyaXgucmFuZG9tSW50ID0gQWJzdHJhY3RNYXRyaXgucmFuZEludDtcbkFic3RyYWN0TWF0cml4LmRpYWdvbmFsID0gQWJzdHJhY3RNYXRyaXguZGlhZztcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaWFnb25hbCA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaWFnO1xuQWJzdHJhY3RNYXRyaXguaWRlbnRpdHkgPSBBYnN0cmFjdE1hdHJpeC5leWU7XG5BYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubmVnYXRlID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm5lZztcbkFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50ZW5zb3JQcm9kdWN0ID1cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmtyb25lY2tlclByb2R1Y3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hdHJpeCBleHRlbmRzIEFic3RyYWN0TWF0cml4IHtcbiAgY29uc3RydWN0b3IoblJvd3MsIG5Db2x1bW5zKSB7XG4gICAgc3VwZXIoKTtcbiAgICBpZiAoTWF0cml4LmlzTWF0cml4KG5Sb3dzKSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnN0cnVjdG9yLXJldHVyblxuICAgICAgcmV0dXJuIG5Sb3dzLmNsb25lKCk7XG4gICAgfSBlbHNlIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG5Sb3dzKSAmJiBuUm93cyA+PSAwKSB7XG4gICAgICAvLyBDcmVhdGUgYW4gZW1wdHkgbWF0cml4XG4gICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG5Db2x1bW5zKSAmJiBuQ29sdW1ucyA+PSAwKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblJvd3M7IGkrKykge1xuICAgICAgICAgIHRoaXMuZGF0YS5wdXNoKG5ldyBGbG9hdDY0QXJyYXkobkNvbHVtbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbkNvbHVtbnMgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXInKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzQW55QXJyYXkoblJvd3MpKSB7XG4gICAgICAvLyBDb3B5IHRoZSB2YWx1ZXMgZnJvbSB0aGUgMkQgYXJyYXlcbiAgICAgIGNvbnN0IGFycmF5RGF0YSA9IG5Sb3dzO1xuICAgICAgblJvd3MgPSBhcnJheURhdGEubGVuZ3RoO1xuICAgICAgbkNvbHVtbnMgPSBuUm93cyA/IGFycmF5RGF0YVswXS5sZW5ndGggOiAwO1xuICAgICAgaWYgKHR5cGVvZiBuQ29sdW1ucyAhPT0gJ251bWJlcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAnRGF0YSBtdXN0IGJlIGEgMkQgYXJyYXkgd2l0aCBhdCBsZWFzdCBvbmUgZWxlbWVudCcsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICB0aGlzLmRhdGEgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgblJvd3M7IGkrKykge1xuICAgICAgICBpZiAoYXJyYXlEYXRhW2ldLmxlbmd0aCAhPT0gbkNvbHVtbnMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5jb25zaXN0ZW50IGFycmF5IGRpbWVuc2lvbnMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIWlzQXJyYXlPZk51bWJlcnMoYXJyYXlEYXRhW2ldKSkge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0lucHV0IGRhdGEgY29udGFpbnMgbm9uLW51bWVyaWMgdmFsdWVzJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhLnB1c2goRmxvYXQ2NEFycmF5LmZyb20oYXJyYXlEYXRhW2ldKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyIG9yIGFuIGFycmF5JyxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMucm93cyA9IG5Sb3dzO1xuICAgIHRoaXMuY29sdW1ucyA9IG5Db2x1bW5zO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XTtcbiAgfVxuXG4gIHJlbW92ZVJvdyhpbmRleCkge1xuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgpO1xuICAgIHRoaXMuZGF0YS5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIHRoaXMucm93cyAtPSAxO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgYWRkUm93KGluZGV4LCBhcnJheSkge1xuICAgIGlmIChhcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcnJheSA9IGluZGV4O1xuICAgICAgaW5kZXggPSB0aGlzLnJvd3M7XG4gICAgfVxuICAgIGNoZWNrUm93SW5kZXgodGhpcywgaW5kZXgsIHRydWUpO1xuICAgIGFycmF5ID0gRmxvYXQ2NEFycmF5LmZyb20oY2hlY2tSb3dWZWN0b3IodGhpcywgYXJyYXkpKTtcbiAgICB0aGlzLmRhdGEuc3BsaWNlKGluZGV4LCAwLCBhcnJheSk7XG4gICAgdGhpcy5yb3dzICs9IDE7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICByZW1vdmVDb2x1bW4oaW5kZXgpIHtcbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb25zdCBuZXdSb3cgPSBuZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucyAtIDEpO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpbmRleDsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqXSA9IHRoaXMuZGF0YVtpXVtqXTtcbiAgICAgIH1cbiAgICAgIGZvciAobGV0IGogPSBpbmRleCArIDE7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICBuZXdSb3dbaiAtIDFdID0gdGhpcy5kYXRhW2ldW2pdO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhW2ldID0gbmV3Um93O1xuICAgIH1cbiAgICB0aGlzLmNvbHVtbnMgLT0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGFkZENvbHVtbihpbmRleCwgYXJyYXkpIHtcbiAgICBpZiAodHlwZW9mIGFycmF5ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgYXJyYXkgPSBpbmRleDtcbiAgICAgIGluZGV4ID0gdGhpcy5jb2x1bW5zO1xuICAgIH1cbiAgICBjaGVja0NvbHVtbkluZGV4KHRoaXMsIGluZGV4LCB0cnVlKTtcbiAgICBhcnJheSA9IGNoZWNrQ29sdW1uVmVjdG9yKHRoaXMsIGFycmF5KTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBjb25zdCBuZXdSb3cgPSBuZXcgRmxvYXQ2NEFycmF5KHRoaXMuY29sdW1ucyArIDEpO1xuICAgICAgbGV0IGogPSAwO1xuICAgICAgZm9yICg7IGogPCBpbmRleDsgaisrKSB7XG4gICAgICAgIG5ld1Jvd1tqXSA9IHRoaXMuZGF0YVtpXVtqXTtcbiAgICAgIH1cbiAgICAgIG5ld1Jvd1tqKytdID0gYXJyYXlbaV07XG4gICAgICBmb3IgKDsgaiA8IHRoaXMuY29sdW1ucyArIDE7IGorKykge1xuICAgICAgICBuZXdSb3dbal0gPSB0aGlzLmRhdGFbaV1baiAtIDFdO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhW2ldID0gbmV3Um93O1xuICAgIH1cbiAgICB0aGlzLmNvbHVtbnMgKz0gMTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5pbnN0YWxsTWF0aE9wZXJhdGlvbnMoQWJzdHJhY3RNYXRyaXgsIE1hdHJpeCk7XG4iLCJpbXBvcnQgeyBuZXdBcnJheSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdW1CeVJvdyhtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5yb3dzKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1baV0gKz0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1bUJ5Q29sdW1uKG1hdHJpeCkge1xuICBsZXQgc3VtID0gbmV3QXJyYXkobWF0cml4LmNvbHVtbnMpO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyArK2kpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyArK2opIHtcbiAgICAgIHN1bVtqXSArPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3VtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VtQWxsKG1hdHJpeCkge1xuICBsZXQgdiA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgdiArPSBtYXRyaXguZ2V0KGksIGopO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RCeVJvdyhtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5yb3dzLCAxKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1baV0gKj0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RCeUNvbHVtbihtYXRyaXgpIHtcbiAgbGV0IHN1bSA9IG5ld0FycmF5KG1hdHJpeC5jb2x1bW5zLCAxKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgKytpKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgKytqKSB7XG4gICAgICBzdW1bal0gKj0gbWF0cml4LmdldChpLCBqKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHN1bTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb2R1Y3RBbGwobWF0cml4KSB7XG4gIGxldCB2ID0gMTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICB2ICo9IG1hdHJpeC5nZXQoaSwgaik7XG4gICAgfVxuICB9XG4gIHJldHVybiB2O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFyaWFuY2VCeVJvdyhtYXRyaXgsIHVuYmlhc2VkLCBtZWFuKSB7XG4gIGNvbnN0IHJvd3MgPSBtYXRyaXgucm93cztcbiAgY29uc3QgY29scyA9IG1hdHJpeC5jb2x1bW5zO1xuICBjb25zdCB2YXJpYW5jZSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgbGV0IHN1bTEgPSAwO1xuICAgIGxldCBzdW0yID0gMDtcbiAgICBsZXQgeCA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHtcbiAgICAgIHggPSBtYXRyaXguZ2V0KGksIGopIC0gbWVhbltpXTtcbiAgICAgIHN1bTEgKz0geDtcbiAgICAgIHN1bTIgKz0geCAqIHg7XG4gICAgfVxuICAgIGlmICh1bmJpYXNlZCkge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyBjb2xzKSAvIChjb2xzIC0gMSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXJpYW5jZS5wdXNoKChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIGNvbHMpIC8gY29scyk7XG4gICAgfVxuICB9XG4gIHJldHVybiB2YXJpYW5jZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhbmNlQnlDb2x1bW4obWF0cml4LCB1bmJpYXNlZCwgbWVhbikge1xuICBjb25zdCByb3dzID0gbWF0cml4LnJvd3M7XG4gIGNvbnN0IGNvbHMgPSBtYXRyaXguY29sdW1ucztcbiAgY29uc3QgdmFyaWFuY2UgPSBbXTtcblxuICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgIGxldCBzdW0xID0gMDtcbiAgICBsZXQgc3VtMiA9IDA7XG4gICAgbGV0IHggPSAwO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICB4ID0gbWF0cml4LmdldChpLCBqKSAtIG1lYW5bal07XG4gICAgICBzdW0xICs9IHg7XG4gICAgICBzdW0yICs9IHggKiB4O1xuICAgIH1cbiAgICBpZiAodW5iaWFzZWQpIHtcbiAgICAgIHZhcmlhbmNlLnB1c2goKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gcm93cykgLyAocm93cyAtIDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyaWFuY2UucHVzaCgoc3VtMiAtIChzdW0xICogc3VtMSkgLyByb3dzKSAvIHJvd3MpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFyaWFuY2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YXJpYW5jZUFsbChtYXRyaXgsIHVuYmlhc2VkLCBtZWFuKSB7XG4gIGNvbnN0IHJvd3MgPSBtYXRyaXgucm93cztcbiAgY29uc3QgY29scyA9IG1hdHJpeC5jb2x1bW5zO1xuICBjb25zdCBzaXplID0gcm93cyAqIGNvbHM7XG5cbiAgbGV0IHN1bTEgPSAwO1xuICBsZXQgc3VtMiA9IDA7XG4gIGxldCB4ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGNvbHM7IGorKykge1xuICAgICAgeCA9IG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuO1xuICAgICAgc3VtMSArPSB4O1xuICAgICAgc3VtMiArPSB4ICogeDtcbiAgICB9XG4gIH1cbiAgaWYgKHVuYmlhc2VkKSB7XG4gICAgcmV0dXJuIChzdW0yIC0gKHN1bTEgKiBzdW0xKSAvIHNpemUpIC8gKHNpemUgLSAxKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gKHN1bTIgLSAoc3VtMSAqIHN1bTEpIC8gc2l6ZSkgLyBzaXplO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjZW50ZXJCeVJvdyhtYXRyaXgsIG1lYW4pIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLSBtZWFuW2ldKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNlbnRlckJ5Q29sdW1uKG1hdHJpeCwgbWVhbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAtIG1lYW5bal0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2VudGVyQWxsKG1hdHJpeCwgbWVhbikge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICAgIG1hdHJpeC5zZXQoaSwgaiwgbWF0cml4LmdldChpLCBqKSAtIG1lYW4pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVCeVJvdyhtYXRyaXgpIHtcbiAgY29uc3Qgc2NhbGUgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyAobWF0cml4LmNvbHVtbnMgLSAxKTtcbiAgICB9XG4gICAgc2NhbGUucHVzaChNYXRoLnNxcnQoc3VtKSk7XG4gIH1cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVCeVJvdyhtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGVbaV0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVCeUNvbHVtbihtYXRyaXgpIHtcbiAgY29uc3Qgc2NhbGUgPSBbXTtcbiAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgbGV0IHN1bSA9IDA7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgICBzdW0gKz0gTWF0aC5wb3cobWF0cml4LmdldChpLCBqKSwgMikgLyAobWF0cml4LnJvd3MgLSAxKTtcbiAgICB9XG4gICAgc2NhbGUucHVzaChNYXRoLnNxcnQoc3VtKSk7XG4gIH1cbiAgcmV0dXJuIHNjYWxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2NhbGVCeUNvbHVtbihtYXRyaXgsIHNjYWxlKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbWF0cml4LnJvd3M7IGkrKykge1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0cml4LmNvbHVtbnM7IGorKykge1xuICAgICAgbWF0cml4LnNldChpLCBqLCBtYXRyaXguZ2V0KGksIGopIC8gc2NhbGVbal0pO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NhbGVBbGwobWF0cml4KSB7XG4gIGNvbnN0IGRpdmlkZXIgPSBtYXRyaXguc2l6ZSAtIDE7XG4gIGxldCBzdW0gPSAwO1xuICBmb3IgKGxldCBqID0gMDsgaiA8IG1hdHJpeC5jb2x1bW5zOyBqKyspIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hdHJpeC5yb3dzOyBpKyspIHtcbiAgICAgIHN1bSArPSBNYXRoLnBvdyhtYXRyaXguZ2V0KGksIGopLCAyKSAvIGRpdmlkZXI7XG4gICAgfVxuICB9XG4gIHJldHVybiBNYXRoLnNxcnQoc3VtKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNjYWxlQWxsKG1hdHJpeCwgc2NhbGUpIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXRyaXgucm93czsgaSsrKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBtYXRyaXguY29sdW1uczsgaisrKSB7XG4gICAgICBtYXRyaXguc2V0KGksIGosIG1hdHJpeC5nZXQoaSwgaikgLyBzY2FsZSk7XG4gICAgfVxuICB9XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gaW5zdGFsbE1hdGhPcGVyYXRpb25zKEFic3RyYWN0TWF0cml4LCBNYXRyaXgpIHtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5hZGRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5hZGRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWRkUyA9IGZ1bmN0aW9uIGFkZFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICsgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWRkTSA9IGZ1bmN0aW9uIGFkZE0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSArIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hZGQgPSBmdW5jdGlvbiBhZGQobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFkZCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YiA9IGZ1bmN0aW9uIHN1Yih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5zdWJTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5zdWJNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViUyA9IGZ1bmN0aW9uIHN1YlModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIC0gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViTSA9IGZ1bmN0aW9uIHN1Yk0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAtIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zdWIgPSBmdW5jdGlvbiBzdWIobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnN1Yih2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdCA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWI7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJ0cmFjdFMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3ViUztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnN1YnRyYWN0TSA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zdWJNO1xuICBBYnN0cmFjdE1hdHJpeC5zdWJ0cmFjdCA9IEFic3RyYWN0TWF0cml4LnN1YjtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsID0gZnVuY3Rpb24gbXVsKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLm11bFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm11bE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxTID0gZnVuY3Rpb24gbXVsUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgKiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxNID0gZnVuY3Rpb24gbXVsTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICogbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm11bCA9IGZ1bmN0aW9uIG11bChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubXVsKHZhbHVlKTtcbiAgfTtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5ID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bDtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bHRpcGx5UyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tdWxTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubXVsdGlwbHlNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm11bE07XG4gIEFic3RyYWN0TWF0cml4Lm11bHRpcGx5ID0gQWJzdHJhY3RNYXRyaXgubXVsO1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5kaXYgPSBmdW5jdGlvbiBkaXYodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuZGl2Uyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMuZGl2TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdlMgPSBmdW5jdGlvbiBkaXZTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAvIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdk0gPSBmdW5jdGlvbiBkaXZNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgLyBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZGl2ID0gZnVuY3Rpb24gZGl2KG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5kaXYodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2aWRlID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdjtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZVMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2UztcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmRpdmlkZU0gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZGl2TTtcbiAgQWJzdHJhY3RNYXRyaXguZGl2aWRlID0gQWJzdHJhY3RNYXRyaXguZGl2O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2QgPSBmdW5jdGlvbiBtb2QodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMubW9kUyh2YWx1ZSk7XG4gICAgcmV0dXJuIHRoaXMubW9kTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZFMgPSBmdW5jdGlvbiBtb2RTKHZhbHVlKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSAlIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm1vZE0gPSBmdW5jdGlvbiBtb2RNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJSBtYXRyaXguZ2V0KGksIGopKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubW9kID0gZnVuY3Rpb24gbW9kKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5tb2QodmFsdWUpO1xuICB9O1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1cyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2Q7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2R1bHVzUyA9IEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5tb2RTO1xuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kdWx1c00gPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubW9kTTtcbiAgQWJzdHJhY3RNYXRyaXgubW9kdWx1cyA9IEFic3RyYWN0TWF0cml4Lm1vZDtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYW5kID0gZnVuY3Rpb24gYW5kKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLmFuZFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLmFuZE0odmFsdWUpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hbmRTID0gZnVuY3Rpb24gYW5kUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgJiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hbmRNID0gZnVuY3Rpb24gYW5kTShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopICYgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFuZCA9IGZ1bmN0aW9uIGFuZChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYW5kKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvcih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5vclModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLm9yTSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLm9yUyA9IGZ1bmN0aW9uIG9yUyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgfCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5vck0gPSBmdW5jdGlvbiBvck0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSB8IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5vciA9IGZ1bmN0aW9uIG9yKG1hdHJpeCwgdmFsdWUpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5vcih2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvcih2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy54b3JTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy54b3JNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUueG9yUyA9IGZ1bmN0aW9uIHhvclModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIF4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUueG9yTSA9IGZ1bmN0aW9uIHhvck0obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB0aGlzLmdldChpLCBqKSBeIG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC54b3IgPSBmdW5jdGlvbiB4b3IobWF0cml4LCB2YWx1ZSkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4Lnhvcih2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdCA9IGZ1bmN0aW9uIGxlZnRTaGlmdCh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5sZWZ0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5sZWZ0U2hpZnRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubGVmdFNoaWZ0UyA9IGZ1bmN0aW9uIGxlZnRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopIDw8IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxlZnRTaGlmdE0gPSBmdW5jdGlvbiBsZWZ0U2hpZnRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPDwgbWF0cml4LmdldChpLCBqKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxlZnRTaGlmdCA9IGZ1bmN0aW9uIGxlZnRTaGlmdChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubGVmdFNoaWZ0KHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCA9IGZ1bmN0aW9uIHNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnQodmFsdWUpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykgcmV0dXJuIHRoaXMuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFModmFsdWUpO1xuICAgIHJldHVybiB0aGlzLnNpZ25Qcm9wYWdhdGluZ1JpZ2h0U2hpZnRNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFMgPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Uyh2YWx1ZSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4gdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdE0gPSBmdW5jdGlvbiBzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TShtYXRyaXgpIHtcbiAgICBtYXRyaXggPSBNYXRyaXguY2hlY2tNYXRyaXgobWF0cml4KTtcbiAgICBpZiAodGhpcy5yb3dzICE9PSBtYXRyaXgucm93cyB8fFxuICAgICAgdGhpcy5jb2x1bW5zICE9PSBtYXRyaXguY29sdW1ucykge1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ01hdHJpY2VzIGRpbWVuc2lvbnMgbXVzdCBiZSBlcXVhbCcpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0ID0gZnVuY3Rpb24gc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdCh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnQgPSBmdW5jdGlvbiByaWdodFNoaWZ0KHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHJldHVybiB0aGlzLnJpZ2h0U2hpZnRTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5yaWdodFNoaWZ0TSh2YWx1ZSk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRTID0gZnVuY3Rpb24gcmlnaHRTaGlmdFModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIHRoaXMuZ2V0KGksIGopID4+PiB2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5yaWdodFNoaWZ0TSA9IGZ1bmN0aW9uIHJpZ2h0U2hpZnRNKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IE1hdHJpeC5jaGVja01hdHJpeChtYXRyaXgpO1xuICAgIGlmICh0aGlzLnJvd3MgIT09IG1hdHJpeC5yb3dzIHx8XG4gICAgICB0aGlzLmNvbHVtbnMgIT09IG1hdHJpeC5jb2x1bW5zKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignTWF0cmljZXMgZGltZW5zaW9ucyBtdXN0IGJlIGVxdWFsJyk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgdGhpcy5nZXQoaSwgaikgPj4+IG1hdHJpeC5nZXQoaSwgaikpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5yaWdodFNoaWZ0ID0gZnVuY3Rpb24gcmlnaHRTaGlmdChtYXRyaXgsIHZhbHVlKSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucmlnaHRTaGlmdCh2YWx1ZSk7XG4gIH07XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnQgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdDtcbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnplcm9GaWxsUmlnaHRTaGlmdFMgPSBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucmlnaHRTaGlmdFM7XG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS56ZXJvRmlsbFJpZ2h0U2hpZnRNID0gQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJpZ2h0U2hpZnRNO1xuICBBYnN0cmFjdE1hdHJpeC56ZXJvRmlsbFJpZ2h0U2hpZnQgPSBBYnN0cmFjdE1hdHJpeC5yaWdodFNoaWZ0O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5ub3QgPSBmdW5jdGlvbiBub3QoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCB+KHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4Lm5vdCA9IGZ1bmN0aW9uIG5vdChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5ub3QoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gYWJzKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hYnModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYWJzID0gZnVuY3Rpb24gYWJzKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFicygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hY29zID0gZnVuY3Rpb24gYWNvcygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYWNvcyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hY29zID0gZnVuY3Rpb24gYWNvcyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hY29zKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmFjb3NoID0gZnVuY3Rpb24gYWNvc2goKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFjb3NoKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmFjb3NoID0gZnVuY3Rpb24gYWNvc2gobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYWNvc2goKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXNpbiA9IGZ1bmN0aW9uIGFzaW4oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmFzaW4odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXNpbiA9IGZ1bmN0aW9uIGFzaW4obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguYXNpbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5hc2luaCA9IGZ1bmN0aW9uIGFzaW5oKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hc2luaCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5hc2luaCA9IGZ1bmN0aW9uIGFzaW5oKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmFzaW5oKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmF0YW4gPSBmdW5jdGlvbiBhdGFuKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5hdGFuKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmF0YW4gPSBmdW5jdGlvbiBhdGFuKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmF0YW4oKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuYXRhbmggPSBmdW5jdGlvbiBhdGFuaCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguYXRhbmgodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguYXRhbmggPSBmdW5jdGlvbiBhdGFuaChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5hdGFuaCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jYnJ0ID0gZnVuY3Rpb24gY2JydCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2JydCh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jYnJ0ID0gZnVuY3Rpb24gY2JydChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jYnJ0KCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNlaWwgPSBmdW5jdGlvbiBjZWlsKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jZWlsKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNlaWwgPSBmdW5jdGlvbiBjZWlsKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNlaWwoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuY2x6MzIgPSBmdW5jdGlvbiBjbHozMigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGguY2x6MzIodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguY2x6MzIgPSBmdW5jdGlvbiBjbHozMihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5jbHozMigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5jb3MgPSBmdW5jdGlvbiBjb3MoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmNvcyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5jb3MgPSBmdW5jdGlvbiBjb3MobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguY29zKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmNvc2ggPSBmdW5jdGlvbiBjb3NoKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5jb3NoKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmNvc2ggPSBmdW5jdGlvbiBjb3NoKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmNvc2goKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZXhwID0gZnVuY3Rpb24gZXhwKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5leHAodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZXhwID0gZnVuY3Rpb24gZXhwKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmV4cCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5leHBtMSA9IGZ1bmN0aW9uIGV4cG0xKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5leHBtMSh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5leHBtMSA9IGZ1bmN0aW9uIGV4cG0xKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmV4cG0xKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmZsb29yID0gZnVuY3Rpb24gZmxvb3IoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmZsb29yKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmZsb29yID0gZnVuY3Rpb24gZmxvb3IobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguZmxvb3IoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuZnJvdW5kID0gZnVuY3Rpb24gZnJvdW5kKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5mcm91bmQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguZnJvdW5kID0gZnVuY3Rpb24gZnJvdW5kKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LmZyb3VuZCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cgPSBmdW5jdGlvbiBsb2coKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZyh0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cgPSBmdW5jdGlvbiBsb2cobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLmxvZzFwID0gZnVuY3Rpb24gbG9nMXAoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLmxvZzFwKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LmxvZzFwID0gZnVuY3Rpb24gbG9nMXAobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgubG9nMXAoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUubG9nMTAgPSBmdW5jdGlvbiBsb2cxMCgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nMTAodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgubG9nMTAgPSBmdW5jdGlvbiBsb2cxMChtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2cxMCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5sb2cyID0gZnVuY3Rpb24gbG9nMigpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgubG9nMih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5sb2cyID0gZnVuY3Rpb24gbG9nMihtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5sb2cyKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnJvdW5kID0gZnVuY3Rpb24gcm91bmQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnJvdW5kKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnJvdW5kID0gZnVuY3Rpb24gcm91bmQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgucm91bmQoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIHNpZ24oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnNpZ24odGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc2lnbiA9IGZ1bmN0aW9uIHNpZ24obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc2lnbigpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS5zaW4gPSBmdW5jdGlvbiBzaW4oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnNpbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5zaW4gPSBmdW5jdGlvbiBzaW4obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc2luKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnNpbmggPSBmdW5jdGlvbiBzaW5oKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC5zaW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnNpbmggPSBmdW5jdGlvbiBzaW5oKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnNpbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUuc3FydCA9IGZ1bmN0aW9uIHNxcnQoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnNxcnQodGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXguc3FydCA9IGZ1bmN0aW9uIHNxcnQobWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXguc3FydCgpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnByb3RvdHlwZS50YW4gPSBmdW5jdGlvbiB0YW4oKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnRhbih0aGlzLmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC50YW4gPSBmdW5jdGlvbiB0YW4obWF0cml4KSB7XG4gICAgY29uc3QgbmV3TWF0cml4ID0gbmV3IE1hdHJpeChtYXRyaXgpO1xuICAgIHJldHVybiBuZXdNYXRyaXgudGFuKCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnRhbmggPSBmdW5jdGlvbiB0YW5oKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5yb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5zOyBqKyspIHtcbiAgICAgICAgdGhpcy5zZXQoaSwgaiwgTWF0aC50YW5oKHRoaXMuZ2V0KGksIGopKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnRhbmggPSBmdW5jdGlvbiB0YW5oKG1hdHJpeCkge1xuICAgIGNvbnN0IG5ld01hdHJpeCA9IG5ldyBNYXRyaXgobWF0cml4KTtcbiAgICByZXR1cm4gbmV3TWF0cml4LnRhbmgoKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUudHJ1bmMgPSBmdW5jdGlvbiB0cnVuYygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgudHJ1bmModGhpcy5nZXQoaSwgaikpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgudHJ1bmMgPSBmdW5jdGlvbiB0cnVuYyhtYXRyaXgpIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC50cnVuYygpO1xuICB9O1xuXG4gIEFic3RyYWN0TWF0cml4LnBvdyA9IGZ1bmN0aW9uIHBvdyhtYXRyaXgsIGFyZzApIHtcbiAgICBjb25zdCBuZXdNYXRyaXggPSBuZXcgTWF0cml4KG1hdHJpeCk7XG4gICAgcmV0dXJuIG5ld01hdHJpeC5wb3coYXJnMCk7XG4gIH07XG5cbiAgQWJzdHJhY3RNYXRyaXgucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uIHBvdyh2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSByZXR1cm4gdGhpcy5wb3dTKHZhbHVlKTtcbiAgICByZXR1cm4gdGhpcy5wb3dNKHZhbHVlKTtcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucG93UyA9IGZ1bmN0aW9uIHBvd1ModmFsdWUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucm93czsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuY29sdW1uczsgaisrKSB7XG4gICAgICAgIHRoaXMuc2V0KGksIGosIE1hdGgucG93KHRoaXMuZ2V0KGksIGopLCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBBYnN0cmFjdE1hdHJpeC5wcm90b3R5cGUucG93TSA9IGZ1bmN0aW9uIHBvd00obWF0cml4KSB7XG4gICAgbWF0cml4ID0gTWF0cml4LmNoZWNrTWF0cml4KG1hdHJpeCk7XG4gICAgaWYgKHRoaXMucm93cyAhPT0gbWF0cml4LnJvd3MgfHxcbiAgICAgIHRoaXMuY29sdW1ucyAhPT0gbWF0cml4LmNvbHVtbnMpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdNYXRyaWNlcyBkaW1lbnNpb25zIG11c3QgYmUgZXF1YWwnKTtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJvd3M7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbnM7IGorKykge1xuICAgICAgICB0aGlzLnNldChpLCBqLCBNYXRoLnBvdyh0aGlzLmdldChpLCBqKSwgbWF0cml4LmdldChpLCBqKSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cbiIsImltcG9ydCB7IEFic3RyYWN0TWF0cml4IH0gZnJvbSAnLi4vbWF0cml4JztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV3JhcHBlck1hdHJpeDJEIGV4dGVuZHMgQWJzdHJhY3RNYXRyaXgge1xuICBjb25zdHJ1Y3RvcihkYXRhKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMucm93cyA9IGRhdGEubGVuZ3RoO1xuICAgIHRoaXMuY29sdW1ucyA9IGRhdGFbMF0ubGVuZ3RoO1xuICB9XG5cbiAgc2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCwgdmFsdWUpIHtcbiAgICB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgZ2V0KHJvd0luZGV4LCBjb2x1bW5JbmRleCkge1xuICAgIHJldHVybiB0aGlzLmRhdGFbcm93SW5kZXhdW2NvbHVtbkluZGV4XTtcbiAgfVxufVxuIiwiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEx1RGVjb21wb3NpdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1hdHJpeCkge1xuICAgIG1hdHJpeCA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChtYXRyaXgpO1xuXG4gICAgbGV0IGx1ID0gbWF0cml4LmNsb25lKCk7XG4gICAgbGV0IHJvd3MgPSBsdS5yb3dzO1xuICAgIGxldCBjb2x1bW5zID0gbHUuY29sdW1ucztcbiAgICBsZXQgcGl2b3RWZWN0b3IgPSBuZXcgRmxvYXQ2NEFycmF5KHJvd3MpO1xuICAgIGxldCBwaXZvdFNpZ24gPSAxO1xuICAgIGxldCBpLCBqLCBrLCBwLCBzLCB0LCB2O1xuICAgIGxldCBMVWNvbGosIGttYXg7XG5cbiAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICBwaXZvdFZlY3RvcltpXSA9IGk7XG4gICAgfVxuXG4gICAgTFVjb2xqID0gbmV3IEZsb2F0NjRBcnJheShyb3dzKTtcblxuICAgIGZvciAoaiA9IDA7IGogPCBjb2x1bW5zOyBqKyspIHtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgTFVjb2xqW2ldID0gbHUuZ2V0KGksIGopO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIGttYXggPSBNYXRoLm1pbihpLCBqKTtcbiAgICAgICAgcyA9IDA7XG4gICAgICAgIGZvciAoayA9IDA7IGsgPCBrbWF4OyBrKyspIHtcbiAgICAgICAgICBzICs9IGx1LmdldChpLCBrKSAqIExVY29saltrXTtcbiAgICAgICAgfVxuICAgICAgICBMVWNvbGpbaV0gLT0gcztcbiAgICAgICAgbHUuc2V0KGksIGosIExVY29saltpXSk7XG4gICAgICB9XG5cbiAgICAgIHAgPSBqO1xuICAgICAgZm9yIChpID0gaiArIDE7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgaWYgKE1hdGguYWJzKExVY29saltpXSkgPiBNYXRoLmFicyhMVWNvbGpbcF0pKSB7XG4gICAgICAgICAgcCA9IGk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHAgIT09IGopIHtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGNvbHVtbnM7IGsrKykge1xuICAgICAgICAgIHQgPSBsdS5nZXQocCwgayk7XG4gICAgICAgICAgbHUuc2V0KHAsIGssIGx1LmdldChqLCBrKSk7XG4gICAgICAgICAgbHUuc2V0KGosIGssIHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdiA9IHBpdm90VmVjdG9yW3BdO1xuICAgICAgICBwaXZvdFZlY3RvcltwXSA9IHBpdm90VmVjdG9yW2pdO1xuICAgICAgICBwaXZvdFZlY3RvcltqXSA9IHY7XG5cbiAgICAgICAgcGl2b3RTaWduID0gLXBpdm90U2lnbjtcbiAgICAgIH1cblxuICAgICAgaWYgKGogPCByb3dzICYmIGx1LmdldChqLCBqKSAhPT0gMCkge1xuICAgICAgICBmb3IgKGkgPSBqICsgMTsgaSA8IHJvd3M7IGkrKykge1xuICAgICAgICAgIGx1LnNldChpLCBqLCBsdS5nZXQoaSwgaikgLyBsdS5nZXQoaiwgaikpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5MVSA9IGx1O1xuICAgIHRoaXMucGl2b3RWZWN0b3IgPSBwaXZvdFZlY3RvcjtcbiAgICB0aGlzLnBpdm90U2lnbiA9IHBpdm90U2lnbjtcbiAgfVxuXG4gIGlzU2luZ3VsYXIoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGxldCBjb2wgPSBkYXRhLmNvbHVtbnM7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBjb2w7IGorKykge1xuICAgICAgaWYgKGRhdGEuZ2V0KGosIGopID09PSAwKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzb2x2ZSh2YWx1ZSkge1xuICAgIHZhbHVlID0gTWF0cml4LmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBsdSA9IHRoaXMuTFU7XG4gICAgbGV0IHJvd3MgPSBsdS5yb3dzO1xuXG4gICAgaWYgKHJvd3MgIT09IHZhbHVlLnJvd3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBtYXRyaXggZGltZW5zaW9ucycpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc1Npbmd1bGFyKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTFUgbWF0cml4IGlzIHNpbmd1bGFyJyk7XG4gICAgfVxuXG4gICAgbGV0IGNvdW50ID0gdmFsdWUuY29sdW1ucztcbiAgICBsZXQgWCA9IHZhbHVlLnN1Yk1hdHJpeFJvdyh0aGlzLnBpdm90VmVjdG9yLCAwLCBjb3VudCAtIDEpO1xuICAgIGxldCBjb2x1bW5zID0gbHUuY29sdW1ucztcbiAgICBsZXQgaSwgaiwgaztcblxuICAgIGZvciAoayA9IDA7IGsgPCBjb2x1bW5zOyBrKyspIHtcbiAgICAgIGZvciAoaSA9IGsgKyAxOyBpIDwgY29sdW1uczsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIGx1LmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChrID0gY29sdW1ucyAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBYLnNldChrLCBqLCBYLmdldChrLCBqKSAvIGx1LmdldChrLCBrKSk7XG4gICAgICB9XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgazsgaSsrKSB7XG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBjb3VudDsgaisrKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgWC5nZXQoaSwgaikgLSBYLmdldChrLCBqKSAqIGx1LmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgZGV0ZXJtaW5hbnQoKSB7XG4gICAgbGV0IGRhdGEgPSB0aGlzLkxVO1xuICAgIGlmICghZGF0YS5pc1NxdWFyZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCBtdXN0IGJlIHNxdWFyZScpO1xuICAgIH1cbiAgICBsZXQgZGV0ZXJtaW5hbnQgPSB0aGlzLnBpdm90U2lnbjtcbiAgICBsZXQgY29sID0gZGF0YS5jb2x1bW5zO1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sOyBqKyspIHtcbiAgICAgIGRldGVybWluYW50ICo9IGRhdGEuZ2V0KGosIGopO1xuICAgIH1cbiAgICByZXR1cm4gZGV0ZXJtaW5hbnQ7XG4gIH1cblxuICBnZXQgbG93ZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGRhdGEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGRhdGEuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmIChpID4gaikge1xuICAgICAgICAgIFguc2V0KGksIGosIGRhdGEuZ2V0KGksIGopKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgdXBwZXJUcmlhbmd1bGFyTWF0cml4KCkge1xuICAgIGxldCBkYXRhID0gdGhpcy5MVTtcbiAgICBsZXQgcm93cyA9IGRhdGEucm93cztcbiAgICBsZXQgY29sdW1ucyA9IGRhdGEuY29sdW1ucztcbiAgICBsZXQgWCA9IG5ldyBNYXRyaXgocm93cywgY29sdW1ucyk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmIChpIDw9IGopIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBkYXRhLmdldChpLCBqKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgcGl2b3RQZXJtdXRhdGlvblZlY3RvcigpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBpdm90VmVjdG9yKTtcbiAgfVxufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGh5cG90ZW51c2UoYSwgYikge1xuICBsZXQgciA9IDA7XG4gIGlmIChNYXRoLmFicyhhKSA+IE1hdGguYWJzKGIpKSB7XG4gICAgciA9IGIgLyBhO1xuICAgIHJldHVybiBNYXRoLmFicyhhKSAqIE1hdGguc3FydCgxICsgciAqIHIpO1xuICB9XG4gIGlmIChiICE9PSAwKSB7XG4gICAgciA9IGEgLyBiO1xuICAgIHJldHVybiBNYXRoLmFicyhiKSAqIE1hdGguc3FydCgxICsgciAqIHIpO1xuICB9XG4gIHJldHVybiAwO1xufVxuIiwiaW1wb3J0IE1hdHJpeCBmcm9tICcuLi9tYXRyaXgnO1xuaW1wb3J0IFdyYXBwZXJNYXRyaXgyRCBmcm9tICcuLi93cmFwL1dyYXBwZXJNYXRyaXgyRCc7XG5cbmltcG9ydCB7IGh5cG90ZW51c2UgfSBmcm9tICcuL3V0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBRckRlY29tcG9zaXRpb24ge1xuICBjb25zdHJ1Y3Rvcih2YWx1ZSkge1xuICAgIHZhbHVlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGxldCBxciA9IHZhbHVlLmNsb25lKCk7XG4gICAgbGV0IG0gPSB2YWx1ZS5yb3dzO1xuICAgIGxldCBuID0gdmFsdWUuY29sdW1ucztcbiAgICBsZXQgcmRpYWcgPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGxldCBpLCBqLCBrLCBzO1xuXG4gICAgZm9yIChrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgbGV0IG5ybSA9IDA7XG4gICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIG5ybSA9IGh5cG90ZW51c2UobnJtLCBxci5nZXQoaSwgaykpO1xuICAgICAgfVxuICAgICAgaWYgKG5ybSAhPT0gMCkge1xuICAgICAgICBpZiAocXIuZ2V0KGssIGspIDwgMCkge1xuICAgICAgICAgIG5ybSA9IC1ucm07XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIHFyLnNldChpLCBrLCBxci5nZXQoaSwgaykgLyBucm0pO1xuICAgICAgICB9XG4gICAgICAgIHFyLnNldChrLCBrLCBxci5nZXQoaywgaykgKyAxKTtcbiAgICAgICAgZm9yIChqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICBzID0gMDtcbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBzICs9IHFyLmdldChpLCBrKSAqIHFyLmdldChpLCBqKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcyA9IC1zIC8gcXIuZ2V0KGssIGspO1xuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgIHFyLnNldChpLCBqLCBxci5nZXQoaSwgaikgKyBzICogcXIuZ2V0KGksIGspKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJkaWFnW2tdID0gLW5ybTtcbiAgICB9XG5cbiAgICB0aGlzLlFSID0gcXI7XG4gICAgdGhpcy5SZGlhZyA9IHJkaWFnO1xuICB9XG5cbiAgc29sdmUodmFsdWUpIHtcbiAgICB2YWx1ZSA9IE1hdHJpeC5jaGVja01hdHJpeCh2YWx1ZSk7XG5cbiAgICBsZXQgcXIgPSB0aGlzLlFSO1xuICAgIGxldCBtID0gcXIucm93cztcblxuICAgIGlmICh2YWx1ZS5yb3dzICE9PSBtKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hdHJpeCByb3cgZGltZW5zaW9ucyBtdXN0IGFncmVlJyk7XG4gICAgfVxuICAgIGlmICghdGhpcy5pc0Z1bGxSYW5rKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IGlzIHJhbmsgZGVmaWNpZW50Jyk7XG4gICAgfVxuXG4gICAgbGV0IGNvdW50ID0gdmFsdWUuY29sdW1ucztcbiAgICBsZXQgWCA9IHZhbHVlLmNsb25lKCk7XG4gICAgbGV0IG4gPSBxci5jb2x1bW5zO1xuICAgIGxldCBpLCBqLCBrLCBzO1xuXG4gICAgZm9yIChrID0gMDsgayA8IG47IGsrKykge1xuICAgICAgZm9yIChqID0gMDsgaiA8IGNvdW50OyBqKyspIHtcbiAgICAgICAgcyA9IDA7XG4gICAgICAgIGZvciAoaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBzICs9IHFyLmdldChpLCBrKSAqIFguZ2V0KGksIGopO1xuICAgICAgICB9XG4gICAgICAgIHMgPSAtcyAvIHFyLmdldChrLCBrKTtcbiAgICAgICAgZm9yIChpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopICsgcyAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChrID0gbiAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICBYLnNldChrLCBqLCBYLmdldChrLCBqKSAvIHRoaXMuUmRpYWdba10pO1xuICAgICAgfVxuICAgICAgZm9yIChpID0gMDsgaSA8IGs7IGkrKykge1xuICAgICAgICBmb3IgKGogPSAwOyBqIDwgY291bnQ7IGorKykge1xuICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopIC0gWC5nZXQoaywgaikgKiBxci5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFguc3ViTWF0cml4KDAsIG4gLSAxLCAwLCBjb3VudCAtIDEpO1xuICB9XG5cbiAgaXNGdWxsUmFuaygpIHtcbiAgICBsZXQgY29sdW1ucyA9IHRoaXMuUVIuY29sdW1ucztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHVtbnM7IGkrKykge1xuICAgICAgaWYgKHRoaXMuUmRpYWdbaV0gPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGdldCB1cHBlclRyaWFuZ3VsYXJNYXRyaXgoKSB7XG4gICAgbGV0IHFyID0gdGhpcy5RUjtcbiAgICBsZXQgbiA9IHFyLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KG4sIG4pO1xuICAgIGxldCBpLCBqO1xuICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgIGZvciAoaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgaWYgKGkgPCBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgcXIuZ2V0KGksIGopKTtcbiAgICAgICAgfSBlbHNlIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgdGhpcy5SZGlhZ1tpXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgWC5zZXQoaSwgaiwgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFg7XG4gIH1cblxuICBnZXQgb3J0aG9nb25hbE1hdHJpeCgpIHtcbiAgICBsZXQgcXIgPSB0aGlzLlFSO1xuICAgIGxldCByb3dzID0gcXIucm93cztcbiAgICBsZXQgY29sdW1ucyA9IHFyLmNvbHVtbnM7XG4gICAgbGV0IFggPSBuZXcgTWF0cml4KHJvd3MsIGNvbHVtbnMpO1xuICAgIGxldCBpLCBqLCBrLCBzO1xuXG4gICAgZm9yIChrID0gY29sdW1ucyAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgIFguc2V0KGksIGssIDApO1xuICAgICAgfVxuICAgICAgWC5zZXQoaywgaywgMSk7XG4gICAgICBmb3IgKGogPSBrOyBqIDwgY29sdW1uczsgaisrKSB7XG4gICAgICAgIGlmIChxci5nZXQoaywgaykgIT09IDApIHtcbiAgICAgICAgICBzID0gMDtcbiAgICAgICAgICBmb3IgKGkgPSBrOyBpIDwgcm93czsgaSsrKSB7XG4gICAgICAgICAgICBzICs9IHFyLmdldChpLCBrKSAqIFguZ2V0KGksIGopO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHMgPSAtcyAvIHFyLmdldChrLCBrKTtcblxuICAgICAgICAgIGZvciAoaSA9IGs7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgICAgIFguc2V0KGksIGosIFguZ2V0KGksIGopICsgcyAqIHFyLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBYO1xuICB9XG59XG4iLCJpbXBvcnQgTWF0cml4IGZyb20gJy4uL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4uL3dyYXAvV3JhcHBlck1hdHJpeDJEJztcblxuaW1wb3J0IHsgaHlwb3RlbnVzZSB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uIHtcbiAgY29uc3RydWN0b3IodmFsdWUsIG9wdGlvbnMgPSB7fSkge1xuICAgIHZhbHVlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KHZhbHVlKTtcblxuICAgIGlmICh2YWx1ZS5pc0VtcHR5KCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWF0cml4IG11c3QgYmUgbm9uLWVtcHR5Jyk7XG4gICAgfVxuXG4gICAgbGV0IG0gPSB2YWx1ZS5yb3dzO1xuICAgIGxldCBuID0gdmFsdWUuY29sdW1ucztcblxuICAgIGNvbnN0IHtcbiAgICAgIGNvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzID0gdHJ1ZSxcbiAgICAgIGNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyA9IHRydWUsXG4gICAgICBhdXRvVHJhbnNwb3NlID0gZmFsc2UsXG4gICAgfSA9IG9wdGlvbnM7XG5cbiAgICBsZXQgd2FudHUgPSBCb29sZWFuKGNvbXB1dGVMZWZ0U2luZ3VsYXJWZWN0b3JzKTtcbiAgICBsZXQgd2FudHYgPSBCb29sZWFuKGNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyk7XG5cbiAgICBsZXQgc3dhcHBlZCA9IGZhbHNlO1xuICAgIGxldCBhO1xuICAgIGlmIChtIDwgbikge1xuICAgICAgaWYgKCFhdXRvVHJhbnNwb3NlKSB7XG4gICAgICAgIGEgPSB2YWx1ZS5jbG9uZSgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ0NvbXB1dGluZyBTVkQgb24gYSBtYXRyaXggd2l0aCBtb3JlIGNvbHVtbnMgdGhhbiByb3dzLiBDb25zaWRlciBlbmFibGluZyBhdXRvVHJhbnNwb3NlJyxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGEgPSB2YWx1ZS50cmFuc3Bvc2UoKTtcbiAgICAgICAgbSA9IGEucm93cztcbiAgICAgICAgbiA9IGEuY29sdW1ucztcbiAgICAgICAgc3dhcHBlZCA9IHRydWU7XG4gICAgICAgIGxldCBhdXggPSB3YW50dTtcbiAgICAgICAgd2FudHUgPSB3YW50djtcbiAgICAgICAgd2FudHYgPSBhdXg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGEgPSB2YWx1ZS5jbG9uZSgpO1xuICAgIH1cblxuICAgIGxldCBudSA9IE1hdGgubWluKG0sIG4pO1xuICAgIGxldCBuaSA9IE1hdGgubWluKG0gKyAxLCBuKTtcbiAgICBsZXQgcyA9IG5ldyBGbG9hdDY0QXJyYXkobmkpO1xuICAgIGxldCBVID0gbmV3IE1hdHJpeChtLCBudSk7XG4gICAgbGV0IFYgPSBuZXcgTWF0cml4KG4sIG4pO1xuXG4gICAgbGV0IGUgPSBuZXcgRmxvYXQ2NEFycmF5KG4pO1xuICAgIGxldCB3b3JrID0gbmV3IEZsb2F0NjRBcnJheShtKTtcblxuICAgIGxldCBzaSA9IG5ldyBGbG9hdDY0QXJyYXkobmkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmk7IGkrKykgc2lbaV0gPSBpO1xuXG4gICAgbGV0IG5jdCA9IE1hdGgubWluKG0gLSAxLCBuKTtcbiAgICBsZXQgbnJ0ID0gTWF0aC5tYXgoMCwgTWF0aC5taW4obiAtIDIsIG0pKTtcbiAgICBsZXQgbXJjID0gTWF0aC5tYXgobmN0LCBucnQpO1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBtcmM7IGsrKykge1xuICAgICAgaWYgKGsgPCBuY3QpIHtcbiAgICAgICAgc1trXSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgc1trXSA9IGh5cG90ZW51c2Uoc1trXSwgYS5nZXQoaSwgaykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzW2tdICE9PSAwKSB7XG4gICAgICAgICAgaWYgKGEuZ2V0KGssIGspIDwgMCkge1xuICAgICAgICAgICAgc1trXSA9IC1zW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgYS5zZXQoaSwgaywgYS5nZXQoaSwgaykgLyBzW2tdKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYS5zZXQoaywgaywgYS5nZXQoaywgaykgKyAxKTtcbiAgICAgICAgfVxuICAgICAgICBzW2tdID0gLXNba107XG4gICAgICB9XG5cbiAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICBpZiAoayA8IG5jdCAmJiBzW2tdICE9PSAwKSB7XG4gICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICB0ICs9IGEuZ2V0KGksIGspICogYS5nZXQoaSwgaik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHQgPSAtdCAvIGEuZ2V0KGssIGspO1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBhLnNldChpLCBqLCBhLmdldChpLCBqKSArIHQgKiBhLmdldChpLCBrKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVbal0gPSBhLmdldChrLCBqKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHdhbnR1ICYmIGsgPCBuY3QpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICBVLnNldChpLCBrLCBhLmdldChpLCBrKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGsgPCBucnQpIHtcbiAgICAgICAgZVtrXSA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgIGVba10gPSBoeXBvdGVudXNlKGVba10sIGVbaV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlW2tdICE9PSAwKSB7XG4gICAgICAgICAgaWYgKGVbayArIDFdIDwgMCkge1xuICAgICAgICAgICAgZVtrXSA9IDAgLSBlW2tdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBpID0gayArIDE7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGVbaV0gLz0gZVtrXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZVtrICsgMV0gKz0gMTtcbiAgICAgICAgfVxuICAgICAgICBlW2tdID0gLWVba107XG4gICAgICAgIGlmIChrICsgMSA8IG0gJiYgZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgd29ya1tpXSA9IDA7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgIHdvcmtbaV0gKz0gZVtqXSAqIGEuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKGxldCBqID0gayArIDE7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgIGxldCB0ID0gLWVbal0gLyBlW2sgKyAxXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICBhLnNldChpLCBqLCBhLmdldChpLCBqKSArIHQgKiB3b3JrW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdhbnR2KSB7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBWLnNldChpLCBrLCBlW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcCA9IE1hdGgubWluKG4sIG0gKyAxKTtcbiAgICBpZiAobmN0IDwgbikge1xuICAgICAgc1tuY3RdID0gYS5nZXQobmN0LCBuY3QpO1xuICAgIH1cbiAgICBpZiAobSA8IHApIHtcbiAgICAgIHNbcCAtIDFdID0gMDtcbiAgICB9XG4gICAgaWYgKG5ydCArIDEgPCBwKSB7XG4gICAgICBlW25ydF0gPSBhLmdldChucnQsIHAgLSAxKTtcbiAgICB9XG4gICAgZVtwIC0gMV0gPSAwO1xuXG4gICAgaWYgKHdhbnR1KSB7XG4gICAgICBmb3IgKGxldCBqID0gbmN0OyBqIDwgbnU7IGorKykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG07IGkrKykge1xuICAgICAgICAgIFUuc2V0KGksIGosIDApO1xuICAgICAgICB9XG4gICAgICAgIFUuc2V0KGosIGosIDEpO1xuICAgICAgfVxuICAgICAgZm9yIChsZXQgayA9IG5jdCAtIDE7IGsgPj0gMDsgay0tKSB7XG4gICAgICAgIGlmIChzW2tdICE9PSAwKSB7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IGsgKyAxOyBqIDwgbnU7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGs7IGkgPCBtOyBpKyspIHtcbiAgICAgICAgICAgICAgdCArPSBVLmdldChpLCBrKSAqIFUuZ2V0KGksIGopO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IC10IC8gVS5nZXQoaywgayk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gazsgaSA8IG07IGkrKykge1xuICAgICAgICAgICAgICBVLnNldChpLCBqLCBVLmdldChpLCBqKSArIHQgKiBVLmdldChpLCBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGZvciAobGV0IGkgPSBrOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAtVS5nZXQoaSwgaykpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBVLnNldChrLCBrLCAxICsgVS5nZXQoaywgaykpO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgayAtIDE7IGkrKykge1xuICAgICAgICAgICAgVS5zZXQoaSwgaywgMCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICBVLnNldChpLCBrLCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgVS5zZXQoaywgaywgMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAod2FudHYpIHtcbiAgICAgIGZvciAobGV0IGsgPSBuIC0gMTsgayA+PSAwOyBrLS0pIHtcbiAgICAgICAgaWYgKGsgPCBucnQgJiYgZVtrXSAhPT0gMCkge1xuICAgICAgICAgIGZvciAobGV0IGogPSBrICsgMTsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSAwO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGsgKyAxOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgIHQgKz0gVi5nZXQoaSwgaykgKiBWLmdldChpLCBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHQgPSAtdCAvIFYuZ2V0KGsgKyAxLCBrKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBrICsgMTsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICBWLnNldChpLCBqLCBWLmdldChpLCBqKSArIHQgKiBWLmdldChpLCBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgVi5zZXQoaSwgaywgMCk7XG4gICAgICAgIH1cbiAgICAgICAgVi5zZXQoaywgaywgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHBwID0gcCAtIDE7XG4gICAgbGV0IGl0ZXIgPSAwO1xuICAgIGxldCBlcHMgPSBOdW1iZXIuRVBTSUxPTjtcbiAgICB3aGlsZSAocCA+IDApIHtcbiAgICAgIGxldCBrLCBrYXNlO1xuICAgICAgZm9yIChrID0gcCAtIDI7IGsgPj0gLTE7IGstLSkge1xuICAgICAgICBpZiAoayA9PT0gLTEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbHBoYSA9XG4gICAgICAgICAgTnVtYmVyLk1JTl9WQUxVRSArIGVwcyAqIE1hdGguYWJzKHNba10gKyBNYXRoLmFicyhzW2sgKyAxXSkpO1xuICAgICAgICBpZiAoTWF0aC5hYnMoZVtrXSkgPD0gYWxwaGEgfHwgTnVtYmVyLmlzTmFOKGVba10pKSB7XG4gICAgICAgICAgZVtrXSA9IDA7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChrID09PSBwIC0gMikge1xuICAgICAgICBrYXNlID0gNDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBrcztcbiAgICAgICAgZm9yIChrcyA9IHAgLSAxOyBrcyA+PSBrOyBrcy0tKSB7XG4gICAgICAgICAgaWYgKGtzID09PSBrKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IHQgPVxuICAgICAgICAgICAgKGtzICE9PSBwID8gTWF0aC5hYnMoZVtrc10pIDogMCkgK1xuICAgICAgICAgICAgKGtzICE9PSBrICsgMSA/IE1hdGguYWJzKGVba3MgLSAxXSkgOiAwKTtcbiAgICAgICAgICBpZiAoTWF0aC5hYnMoc1trc10pIDw9IGVwcyAqIHQpIHtcbiAgICAgICAgICAgIHNba3NdID0gMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoa3MgPT09IGspIHtcbiAgICAgICAgICBrYXNlID0gMztcbiAgICAgICAgfSBlbHNlIGlmIChrcyA9PT0gcCAtIDEpIHtcbiAgICAgICAgICBrYXNlID0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBrYXNlID0gMjtcbiAgICAgICAgICBrID0ga3M7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaysrO1xuXG4gICAgICBzd2l0Y2ggKGthc2UpIHtcbiAgICAgICAgY2FzZSAxOiB7XG4gICAgICAgICAgbGV0IGYgPSBlW3AgLSAyXTtcbiAgICAgICAgICBlW3AgLSAyXSA9IDA7XG4gICAgICAgICAgZm9yIChsZXQgaiA9IHAgLSAyOyBqID49IGs7IGotLSkge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKHNbal0sIGYpO1xuICAgICAgICAgICAgbGV0IGNzID0gc1tqXSAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBmIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgaWYgKGogIT09IGspIHtcbiAgICAgICAgICAgICAgZiA9IC1zbiAqIGVbaiAtIDFdO1xuICAgICAgICAgICAgICBlW2ogLSAxXSA9IGNzICogZVtqIC0gMV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBWLmdldChpLCBqKSArIHNuICogVi5nZXQoaSwgcCAtIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIHAgLSAxLCAtc24gKiBWLmdldChpLCBqKSArIGNzICogVi5nZXQoaSwgcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDI6IHtcbiAgICAgICAgICBsZXQgZiA9IGVbayAtIDFdO1xuICAgICAgICAgIGVbayAtIDFdID0gMDtcbiAgICAgICAgICBmb3IgKGxldCBqID0gazsgaiA8IHA7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKHNbal0sIGYpO1xuICAgICAgICAgICAgbGV0IGNzID0gc1tqXSAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBmIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgZiA9IC1zbiAqIGVbal07XG4gICAgICAgICAgICBlW2pdID0gY3MgKiBlW2pdO1xuICAgICAgICAgICAgaWYgKHdhbnR1KSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVS5nZXQoaSwgaikgKyBzbiAqIFUuZ2V0KGksIGsgLSAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrIC0gMSwgLXNuICogVS5nZXQoaSwgaikgKyBjcyAqIFUuZ2V0KGksIGsgLSAxKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAzOiB7XG4gICAgICAgICAgY29uc3Qgc2NhbGUgPSBNYXRoLm1heChcbiAgICAgICAgICAgIE1hdGguYWJzKHNbcCAtIDFdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKHNbcCAtIDJdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKGVbcCAtIDJdKSxcbiAgICAgICAgICAgIE1hdGguYWJzKHNba10pLFxuICAgICAgICAgICAgTWF0aC5hYnMoZVtrXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBzcCA9IHNbcCAtIDFdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3Qgc3BtMSA9IHNbcCAtIDJdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgZXBtMSA9IGVbcCAtIDJdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3Qgc2sgPSBzW2tdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgZWsgPSBlW2tdIC8gc2NhbGU7XG4gICAgICAgICAgY29uc3QgYiA9ICgoc3BtMSArIHNwKSAqIChzcG0xIC0gc3ApICsgZXBtMSAqIGVwbTEpIC8gMjtcbiAgICAgICAgICBjb25zdCBjID0gc3AgKiBlcG0xICogKHNwICogZXBtMSk7XG4gICAgICAgICAgbGV0IHNoaWZ0ID0gMDtcbiAgICAgICAgICBpZiAoYiAhPT0gMCB8fCBjICE9PSAwKSB7XG4gICAgICAgICAgICBpZiAoYiA8IDApIHtcbiAgICAgICAgICAgICAgc2hpZnQgPSAwIC0gTWF0aC5zcXJ0KGIgKiBiICsgYyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBzaGlmdCA9IE1hdGguc3FydChiICogYiArIGMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hpZnQgPSBjIC8gKGIgKyBzaGlmdCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBmID0gKHNrICsgc3ApICogKHNrIC0gc3ApICsgc2hpZnQ7XG4gICAgICAgICAgbGV0IGcgPSBzayAqIGVrO1xuICAgICAgICAgIGZvciAobGV0IGogPSBrOyBqIDwgcCAtIDE7IGorKykge1xuICAgICAgICAgICAgbGV0IHQgPSBoeXBvdGVudXNlKGYsIGcpO1xuICAgICAgICAgICAgaWYgKHQgPT09IDApIHQgPSBOdW1iZXIuTUlOX1ZBTFVFO1xuICAgICAgICAgICAgbGV0IGNzID0gZiAvIHQ7XG4gICAgICAgICAgICBsZXQgc24gPSBnIC8gdDtcbiAgICAgICAgICAgIGlmIChqICE9PSBrKSB7XG4gICAgICAgICAgICAgIGVbaiAtIDFdID0gdDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGYgPSBjcyAqIHNbal0gKyBzbiAqIGVbal07XG4gICAgICAgICAgICBlW2pdID0gY3MgKiBlW2pdIC0gc24gKiBzW2pdO1xuICAgICAgICAgICAgZyA9IHNuICogc1tqICsgMV07XG4gICAgICAgICAgICBzW2ogKyAxXSA9IGNzICogc1tqICsgMV07XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0ID0gY3MgKiBWLmdldChpLCBqKSArIHNuICogVi5nZXQoaSwgaiArIDEpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGogKyAxLCAtc24gKiBWLmdldChpLCBqKSArIGNzICogVi5nZXQoaSwgaiArIDEpKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBqLCB0KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdCA9IGh5cG90ZW51c2UoZiwgZyk7XG4gICAgICAgICAgICBpZiAodCA9PT0gMCkgdCA9IE51bWJlci5NSU5fVkFMVUU7XG4gICAgICAgICAgICBjcyA9IGYgLyB0O1xuICAgICAgICAgICAgc24gPSBnIC8gdDtcbiAgICAgICAgICAgIHNbal0gPSB0O1xuICAgICAgICAgICAgZiA9IGNzICogZVtqXSArIHNuICogc1tqICsgMV07XG4gICAgICAgICAgICBzW2ogKyAxXSA9IC1zbiAqIGVbal0gKyBjcyAqIHNbaiArIDFdO1xuICAgICAgICAgICAgZyA9IHNuICogZVtqICsgMV07XG4gICAgICAgICAgICBlW2ogKyAxXSA9IGNzICogZVtqICsgMV07XG4gICAgICAgICAgICBpZiAod2FudHUgJiYgaiA8IG0gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IGNzICogVS5nZXQoaSwgaikgKyBzbiAqIFUuZ2V0KGksIGogKyAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBqICsgMSwgLXNuICogVS5nZXQoaSwgaikgKyBjcyAqIFUuZ2V0KGksIGogKyAxKSk7XG4gICAgICAgICAgICAgICAgVS5zZXQoaSwgaiwgdCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZVtwIC0gMl0gPSBmO1xuICAgICAgICAgIGl0ZXIgPSBpdGVyICsgMTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIDQ6IHtcbiAgICAgICAgICBpZiAoc1trXSA8PSAwKSB7XG4gICAgICAgICAgICBzW2tdID0gc1trXSA8IDAgPyAtc1trXSA6IDA7XG4gICAgICAgICAgICBpZiAod2FudHYpIHtcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gcHA7IGkrKykge1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGssIC1WLmdldChpLCBrKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKGsgPCBwcCkge1xuICAgICAgICAgICAgaWYgKHNba10gPj0gc1trICsgMV0pIHtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgdCA9IHNba107XG4gICAgICAgICAgICBzW2tdID0gc1trICsgMV07XG4gICAgICAgICAgICBzW2sgKyAxXSA9IHQ7XG4gICAgICAgICAgICBpZiAod2FudHYgJiYgayA8IG4gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IFYuZ2V0KGksIGsgKyAxKTtcbiAgICAgICAgICAgICAgICBWLnNldChpLCBrICsgMSwgVi5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICAgIFYuc2V0KGksIGssIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2FudHUgJiYgayA8IG0gLSAxKSB7XG4gICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdCA9IFUuZ2V0KGksIGsgKyAxKTtcbiAgICAgICAgICAgICAgICBVLnNldChpLCBrICsgMSwgVS5nZXQoaSwgaykpO1xuICAgICAgICAgICAgICAgIFUuc2V0KGksIGssIHQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBrKys7XG4gICAgICAgICAgfVxuICAgICAgICAgIGl0ZXIgPSAwO1xuICAgICAgICAgIHAtLTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBubyBkZWZhdWx0XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN3YXBwZWQpIHtcbiAgICAgIGxldCB0bXAgPSBWO1xuICAgICAgViA9IFU7XG4gICAgICBVID0gdG1wO1xuICAgIH1cblxuICAgIHRoaXMubSA9IG07XG4gICAgdGhpcy5uID0gbjtcbiAgICB0aGlzLnMgPSBzO1xuICAgIHRoaXMuVSA9IFU7XG4gICAgdGhpcy5WID0gVjtcbiAgfVxuXG4gIHNvbHZlKHZhbHVlKSB7XG4gICAgbGV0IFkgPSB2YWx1ZTtcbiAgICBsZXQgZSA9IHRoaXMudGhyZXNob2xkO1xuICAgIGxldCBzY29scyA9IHRoaXMucy5sZW5ndGg7XG4gICAgbGV0IExzID0gTWF0cml4Lnplcm9zKHNjb2xzLCBzY29scyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNjb2xzOyBpKyspIHtcbiAgICAgIGlmIChNYXRoLmFicyh0aGlzLnNbaV0pIDw9IGUpIHtcbiAgICAgICAgTHMuc2V0KGksIGksIDApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTHMuc2V0KGksIGksIDEgLyB0aGlzLnNbaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBVID0gdGhpcy5VO1xuICAgIGxldCBWID0gdGhpcy5yaWdodFNpbmd1bGFyVmVjdG9ycztcblxuICAgIGxldCBWTCA9IFYubW11bChMcyk7XG4gICAgbGV0IHZyb3dzID0gVi5yb3dzO1xuICAgIGxldCB1cm93cyA9IFUucm93cztcbiAgICBsZXQgVkxVID0gTWF0cml4Lnplcm9zKHZyb3dzLCB1cm93cyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdXJvd3M7IGorKykge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCBzY29sczsgaysrKSB7XG4gICAgICAgICAgc3VtICs9IFZMLmdldChpLCBrKSAqIFUuZ2V0KGosIGspO1xuICAgICAgICB9XG4gICAgICAgIFZMVS5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gVkxVLm1tdWwoWSk7XG4gIH1cblxuICBzb2x2ZUZvckRpYWdvbmFsKHZhbHVlKSB7XG4gICAgcmV0dXJuIHRoaXMuc29sdmUoTWF0cml4LmRpYWcodmFsdWUpKTtcbiAgfVxuXG4gIGludmVyc2UoKSB7XG4gICAgbGV0IFYgPSB0aGlzLlY7XG4gICAgbGV0IGUgPSB0aGlzLnRocmVzaG9sZDtcbiAgICBsZXQgdnJvd3MgPSBWLnJvd3M7XG4gICAgbGV0IHZjb2xzID0gVi5jb2x1bW5zO1xuICAgIGxldCBYID0gbmV3IE1hdHJpeCh2cm93cywgdGhpcy5zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdmNvbHM7IGorKykge1xuICAgICAgICBpZiAoTWF0aC5hYnModGhpcy5zW2pdKSA+IGUpIHtcbiAgICAgICAgICBYLnNldChpLCBqLCBWLmdldChpLCBqKSAvIHRoaXMuc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgVSA9IHRoaXMuVTtcblxuICAgIGxldCB1cm93cyA9IFUucm93cztcbiAgICBsZXQgdWNvbHMgPSBVLmNvbHVtbnM7XG4gICAgbGV0IFkgPSBuZXcgTWF0cml4KHZyb3dzLCB1cm93cyk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZyb3dzOyBpKyspIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdXJvd3M7IGorKykge1xuICAgICAgICBsZXQgc3VtID0gMDtcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB1Y29sczsgaysrKSB7XG4gICAgICAgICAgc3VtICs9IFguZ2V0KGksIGspICogVS5nZXQoaiwgayk7XG4gICAgICAgIH1cbiAgICAgICAgWS5zZXQoaSwgaiwgc3VtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gWTtcbiAgfVxuXG4gIGdldCBjb25kaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc1swXSAvIHRoaXMuc1tNYXRoLm1pbih0aGlzLm0sIHRoaXMubikgLSAxXTtcbiAgfVxuXG4gIGdldCBub3JtMigpIHtcbiAgICByZXR1cm4gdGhpcy5zWzBdO1xuICB9XG5cbiAgZ2V0IHJhbmsoKSB7XG4gICAgbGV0IHRvbCA9IE1hdGgubWF4KHRoaXMubSwgdGhpcy5uKSAqIHRoaXMuc1swXSAqIE51bWJlci5FUFNJTE9OO1xuICAgIGxldCByID0gMDtcbiAgICBsZXQgcyA9IHRoaXMucztcbiAgICBmb3IgKGxldCBpID0gMCwgaWkgPSBzLmxlbmd0aDsgaSA8IGlpOyBpKyspIHtcbiAgICAgIGlmIChzW2ldID4gdG9sKSB7XG4gICAgICAgIHIrKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH1cblxuICBnZXQgZGlhZ29uYWwoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5zKTtcbiAgfVxuXG4gIGdldCB0aHJlc2hvbGQoKSB7XG4gICAgcmV0dXJuIChOdW1iZXIuRVBTSUxPTiAvIDIpICogTWF0aC5tYXgodGhpcy5tLCB0aGlzLm4pICogdGhpcy5zWzBdO1xuICB9XG5cbiAgZ2V0IGxlZnRTaW5ndWxhclZlY3RvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuVTtcbiAgfVxuXG4gIGdldCByaWdodFNpbmd1bGFyVmVjdG9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5WO1xuICB9XG5cbiAgZ2V0IGRpYWdvbmFsTWF0cml4KCkge1xuICAgIHJldHVybiBNYXRyaXguZGlhZyh0aGlzLnMpO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpbnZlcnNlLCBNYXRyaXggfSBmcm9tICdtbC1tYXRyaXgnO1xuXG4vKipcbiAqIERpZmZlcmVuY2Ugb2YgdGhlIG1hdHJpeCBmdW5jdGlvbiBvdmVyIHRoZSBwYXJhbWV0ZXJzXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGV2YWx1YXRlZERhdGEgLSBBcnJheSBvZiBwcmV2aW91cyBldmFsdWF0ZWQgZnVuY3Rpb24gdmFsdWVzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHBhcmFtcyAtIEFycmF5IG9mIHByZXZpb3VzIHBhcmFtZXRlciB2YWx1ZXNcbiAqIEBwYXJhbSB7bnVtYmVyfSBncmFkaWVudERpZmZlcmVuY2UgLSBBZGp1c3RtZW50IGZvciBkZWNyZWFzZSB0aGUgZGFtcGluZyBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcmFtRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcmV0dXJuIHtNYXRyaXh9XG4gKi9cbmZ1bmN0aW9uIGdyYWRpZW50RnVuY3Rpb24oXG4gIGRhdGEsXG4gIGV2YWx1YXRlZERhdGEsXG4gIHBhcmFtcyxcbiAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICBwYXJhbUZ1bmN0aW9uLFxuKSB7XG4gIGNvbnN0IG4gPSBwYXJhbXMubGVuZ3RoO1xuICBjb25zdCBtID0gZGF0YS54Lmxlbmd0aDtcblxuICBsZXQgYW5zID0gbmV3IEFycmF5KG4pO1xuXG4gIGZvciAobGV0IHBhcmFtID0gMDsgcGFyYW0gPCBuOyBwYXJhbSsrKSB7XG4gICAgYW5zW3BhcmFtXSA9IG5ldyBBcnJheShtKTtcbiAgICBsZXQgYXV4UGFyYW1zID0gcGFyYW1zLnNsaWNlKCk7XG4gICAgYXV4UGFyYW1zW3BhcmFtXSArPSBncmFkaWVudERpZmZlcmVuY2U7XG4gICAgbGV0IGZ1bmNQYXJhbSA9IHBhcmFtRnVuY3Rpb24oYXV4UGFyYW1zKTtcblxuICAgIGZvciAobGV0IHBvaW50ID0gMDsgcG9pbnQgPCBtOyBwb2ludCsrKSB7XG4gICAgICBhbnNbcGFyYW1dW3BvaW50XSA9IGV2YWx1YXRlZERhdGFbcG9pbnRdIC0gZnVuY1BhcmFtKGRhdGEueFtwb2ludF0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3IE1hdHJpeChhbnMpO1xufVxuXG4vKipcbiAqIE1hdHJpeCBmdW5jdGlvbiBvdmVyIHRoZSBzYW1wbGVzXG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IGV2YWx1YXRlZERhdGEgLSBBcnJheSBvZiBwcmV2aW91cyBldmFsdWF0ZWQgZnVuY3Rpb24gdmFsdWVzXG4gKiBAcmV0dXJuIHtNYXRyaXh9XG4gKi9cbmZ1bmN0aW9uIG1hdHJpeEZ1bmN0aW9uKGRhdGEsIGV2YWx1YXRlZERhdGEpIHtcbiAgY29uc3QgbSA9IGRhdGEueC5sZW5ndGg7XG5cbiAgbGV0IGFucyA9IG5ldyBBcnJheShtKTtcblxuICBmb3IgKGxldCBwb2ludCA9IDA7IHBvaW50IDwgbTsgcG9pbnQrKykge1xuICAgIGFuc1twb2ludF0gPSBbZGF0YS55W3BvaW50XSAtIGV2YWx1YXRlZERhdGFbcG9pbnRdXTtcbiAgfVxuXG4gIHJldHVybiBuZXcgTWF0cml4KGFucyk7XG59XG5cbi8qKlxuICogSXRlcmF0aW9uIGZvciBMZXZlbmJlcmctTWFycXVhcmR0XG4gKiBAaWdub3JlXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IHBhcmFtcyAtIEFycmF5IG9mIHByZXZpb3VzIHBhcmFtZXRlciB2YWx1ZXNcbiAqIEBwYXJhbSB7bnVtYmVyfSBkYW1waW5nIC0gTGV2ZW5iZXJnLU1hcnF1YXJkdCBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7bnVtYmVyfSBncmFkaWVudERpZmZlcmVuY2UgLSBBZGp1c3RtZW50IGZvciBkZWNyZWFzZSB0aGUgZGFtcGluZyBwYXJhbWV0ZXJcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHBhcmFtZXRlcml6ZWRGdW5jdGlvbiAtIFRoZSBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIGEgZnVuY3Rpb24gd2l0aCB0aGUgaW5kZXBlbmRlbnQgdmFyaWFibGUgYXMgYSBwYXJhbWV0ZXJcbiAqIEByZXR1cm4ge0FycmF5PG51bWJlcj59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0ZXAoXG4gIGRhdGEsXG4gIHBhcmFtcyxcbiAgZGFtcGluZyxcbiAgZ3JhZGllbnREaWZmZXJlbmNlLFxuICBwYXJhbWV0ZXJpemVkRnVuY3Rpb24sXG4pIHtcbiAgbGV0IHZhbHVlID0gZGFtcGluZyAqIGdyYWRpZW50RGlmZmVyZW5jZSAqIGdyYWRpZW50RGlmZmVyZW5jZTtcbiAgbGV0IGlkZW50aXR5ID0gTWF0cml4LmV5ZShwYXJhbXMubGVuZ3RoLCBwYXJhbXMubGVuZ3RoLCB2YWx1ZSk7XG5cbiAgY29uc3QgZnVuYyA9IHBhcmFtZXRlcml6ZWRGdW5jdGlvbihwYXJhbXMpO1xuXG4gIGxldCBldmFsdWF0ZWREYXRhID0gbmV3IEZsb2F0NjRBcnJheShkYXRhLngubGVuZ3RoKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLngubGVuZ3RoOyBpKyspIHtcbiAgICBldmFsdWF0ZWREYXRhW2ldID0gZnVuYyhkYXRhLnhbaV0pO1xuICB9XG5cbiAgbGV0IGdyYWRpZW50RnVuYyA9IGdyYWRpZW50RnVuY3Rpb24oXG4gICAgZGF0YSxcbiAgICBldmFsdWF0ZWREYXRhLFxuICAgIHBhcmFtcyxcbiAgICBncmFkaWVudERpZmZlcmVuY2UsXG4gICAgcGFyYW1ldGVyaXplZEZ1bmN0aW9uLFxuICApO1xuICBsZXQgbWF0cml4RnVuYyA9IG1hdHJpeEZ1bmN0aW9uKGRhdGEsIGV2YWx1YXRlZERhdGEpO1xuICBsZXQgaW52ZXJzZU1hdHJpeCA9IGludmVyc2UoXG4gICAgaWRlbnRpdHkuYWRkKGdyYWRpZW50RnVuYy5tbXVsKGdyYWRpZW50RnVuYy50cmFuc3Bvc2UoKSkpLFxuICApO1xuXG4gIHBhcmFtcyA9IG5ldyBNYXRyaXgoW3BhcmFtc10pO1xuICBwYXJhbXMgPSBwYXJhbXMuc3ViKFxuICAgIGludmVyc2VNYXRyaXhcbiAgICAgIC5tbXVsKGdyYWRpZW50RnVuYylcbiAgICAgIC5tbXVsKG1hdHJpeEZ1bmMpXG4gICAgICAubXVsKGdyYWRpZW50RGlmZmVyZW5jZSlcbiAgICAgIC50cmFuc3Bvc2UoKSxcbiAgKTtcblxuICByZXR1cm4gcGFyYW1zLnRvMURBcnJheSgpO1xufVxuIiwiaW1wb3J0IEx1RGVjb21wb3NpdGlvbiBmcm9tICcuL2RjL2x1JztcbmltcG9ydCBRckRlY29tcG9zaXRpb24gZnJvbSAnLi9kYy9xcic7XG5pbXBvcnQgU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24gZnJvbSAnLi9kYy9zdmQnO1xuaW1wb3J0IE1hdHJpeCBmcm9tICcuL21hdHJpeCc7XG5pbXBvcnQgV3JhcHBlck1hdHJpeDJEIGZyb20gJy4vd3JhcC9XcmFwcGVyTWF0cml4MkQnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW52ZXJzZShtYXRyaXgsIHVzZVNWRCA9IGZhbHNlKSB7XG4gIG1hdHJpeCA9IFdyYXBwZXJNYXRyaXgyRC5jaGVja01hdHJpeChtYXRyaXgpO1xuICBpZiAodXNlU1ZEKSB7XG4gICAgcmV0dXJuIG5ldyBTaW5ndWxhclZhbHVlRGVjb21wb3NpdGlvbihtYXRyaXgpLmludmVyc2UoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gc29sdmUobWF0cml4LCBNYXRyaXguZXllKG1hdHJpeC5yb3dzKSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNvbHZlKGxlZnRIYW5kU2lkZSwgcmlnaHRIYW5kU2lkZSwgdXNlU1ZEID0gZmFsc2UpIHtcbiAgbGVmdEhhbmRTaWRlID0gV3JhcHBlck1hdHJpeDJELmNoZWNrTWF0cml4KGxlZnRIYW5kU2lkZSk7XG4gIHJpZ2h0SGFuZFNpZGUgPSBXcmFwcGVyTWF0cml4MkQuY2hlY2tNYXRyaXgocmlnaHRIYW5kU2lkZSk7XG4gIGlmICh1c2VTVkQpIHtcbiAgICByZXR1cm4gbmV3IFNpbmd1bGFyVmFsdWVEZWNvbXBvc2l0aW9uKGxlZnRIYW5kU2lkZSkuc29sdmUocmlnaHRIYW5kU2lkZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxlZnRIYW5kU2lkZS5pc1NxdWFyZSgpXG4gICAgICA/IG5ldyBMdURlY29tcG9zaXRpb24obGVmdEhhbmRTaWRlKS5zb2x2ZShyaWdodEhhbmRTaWRlKVxuICAgICAgOiBuZXcgUXJEZWNvbXBvc2l0aW9uKGxlZnRIYW5kU2lkZSkuc29sdmUocmlnaHRIYW5kU2lkZSk7XG4gIH1cbn1cbiIsImltcG9ydCBpc0FycmF5IGZyb20gJ2lzLWFueS1hcnJheSc7XG5cbmltcG9ydCBlcnJvckNhbGN1bGF0aW9uIGZyb20gJy4vZXJyb3JDYWxjdWxhdGlvbic7XG5pbXBvcnQgc3RlcCBmcm9tICcuL3N0ZXAnO1xuXG4vKipcbiAqIEN1cnZlIGZpdHRpbmcgYWxnb3JpdGhtXG4gKiBAcGFyYW0ge3t4OkFycmF5PG51bWJlcj4sIHk6QXJyYXk8bnVtYmVyPn19IGRhdGEgLSBBcnJheSBvZiBwb2ludHMgdG8gZml0IGluIHRoZSBmb3JtYXQgW3gxLCB4MiwgLi4uIF0sIFt5MSwgeTIsIC4uLiBdXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBwYXJhbWV0ZXJpemVkRnVuY3Rpb24gLSBUaGUgcGFyYW1ldGVycyBhbmQgcmV0dXJucyBhIGZ1bmN0aW9uIHdpdGggdGhlIGluZGVwZW5kZW50IHZhcmlhYmxlIGFzIGEgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge29iamVjdH0gW29wdGlvbnNdIC0gT3B0aW9ucyBvYmplY3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBbb3B0aW9ucy5kYW1waW5nXSAtIExldmVuYmVyZy1NYXJxdWFyZHQgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMuZ3JhZGllbnREaWZmZXJlbmNlID0gMTBlLTJdIC0gQWRqdXN0bWVudCBmb3IgZGVjcmVhc2UgdGhlIGRhbXBpbmcgcGFyYW1ldGVyXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLm1pblZhbHVlc10gLSBNaW5pbXVtIGFsbG93ZWQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLm1heFZhbHVlc10gLSBNYXhpbXVtIGFsbG93ZWQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtvcHRpb25zLmluaXRpYWxWYWx1ZXNdIC0gQXJyYXkgb2YgaW5pdGlhbCBwYXJhbWV0ZXIgdmFsdWVzXG4gKiBAcGFyYW0ge251bWJlcn0gW29wdGlvbnMubWF4SXRlcmF0aW9ucyA9IDEwMF0gLSBNYXhpbXVtIG9mIGFsbG93ZWQgaXRlcmF0aW9uc1xuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLmVycm9yVG9sZXJhbmNlID0gMTBlLTNdIC0gTWluaW11bSB1bmNlcnRhaW50eSBhbGxvd2VkIGZvciBlYWNoIHBvaW50XG4gKiBAcmV0dXJuIHt7cGFyYW1ldGVyVmFsdWVzOiBBcnJheTxudW1iZXI+LCBwYXJhbWV0ZXJFcnJvcjogbnVtYmVyLCBpdGVyYXRpb25zOiBudW1iZXJ9fVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsZXZlbmJlcmdNYXJxdWFyZHQoXG4gIGRhdGEsXG4gIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgb3B0aW9ucyA9IHt9LFxuKSB7XG4gIGxldCB7XG4gICAgbWF4SXRlcmF0aW9ucyA9IDEwMCxcbiAgICBncmFkaWVudERpZmZlcmVuY2UgPSAxMGUtMixcbiAgICBkYW1waW5nID0gMCxcbiAgICBlcnJvclRvbGVyYW5jZSA9IDEwZS0zLFxuICAgIG1pblZhbHVlcyxcbiAgICBtYXhWYWx1ZXMsXG4gICAgaW5pdGlhbFZhbHVlcyxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKGRhbXBpbmcgPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhbXBpbmcgb3B0aW9uIG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXInKTtcbiAgfSBlbHNlIGlmICghZGF0YS54IHx8ICFkYXRhLnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBkYXRhIHBhcmFtZXRlciBtdXN0IGhhdmUgeCBhbmQgeSBlbGVtZW50cycpO1xuICB9IGVsc2UgaWYgKFxuICAgICFpc0FycmF5KGRhdGEueCkgfHxcbiAgICBkYXRhLngubGVuZ3RoIDwgMiB8fFxuICAgICFpc0FycmF5KGRhdGEueSkgfHxcbiAgICBkYXRhLnkubGVuZ3RoIDwgMlxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgYmUgYW4gYXJyYXkgd2l0aCBtb3JlIHRoYW4gMiBwb2ludHMnLFxuICAgICk7XG4gIH0gZWxzZSBpZiAoZGF0YS54Lmxlbmd0aCAhPT0gZGF0YS55Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGRhdGEgcGFyYW1ldGVyIGVsZW1lbnRzIG11c3QgaGF2ZSB0aGUgc2FtZSBzaXplJyk7XG4gIH1cblxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgaW5pdGlhbFZhbHVlcyB8fCBuZXcgQXJyYXkocGFyYW1ldGVyaXplZEZ1bmN0aW9uLmxlbmd0aCkuZmlsbCgxKTtcbiAgbGV0IHBhckxlbiA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICBtYXhWYWx1ZXMgPSBtYXhWYWx1ZXMgfHwgbmV3IEFycmF5KHBhckxlbikuZmlsbChOdW1iZXIuTUFYX1NBRkVfSU5URUdFUik7XG4gIG1pblZhbHVlcyA9IG1pblZhbHVlcyB8fCBuZXcgQXJyYXkocGFyTGVuKS5maWxsKE51bWJlci5NSU5fU0FGRV9JTlRFR0VSKTtcblxuICBpZiAobWF4VmFsdWVzLmxlbmd0aCAhPT0gbWluVmFsdWVzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignbWluVmFsdWVzIGFuZCBtYXhWYWx1ZXMgbXVzdCBiZSB0aGUgc2FtZSBzaXplJyk7XG4gIH1cblxuICBpZiAoIWlzQXJyYXkocGFyYW1ldGVycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2luaXRpYWxWYWx1ZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICB9XG5cbiAgbGV0IGVycm9yID0gZXJyb3JDYWxjdWxhdGlvbihkYXRhLCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJpemVkRnVuY3Rpb24pO1xuXG4gIGxldCBjb252ZXJnZWQgPSBlcnJvciA8PSBlcnJvclRvbGVyYW5jZTtcblxuICBsZXQgaXRlcmF0aW9uO1xuICBmb3IgKGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IG1heEl0ZXJhdGlvbnMgJiYgIWNvbnZlcmdlZDsgaXRlcmF0aW9uKyspIHtcbiAgICBwYXJhbWV0ZXJzID0gc3RlcChcbiAgICAgIGRhdGEsXG4gICAgICBwYXJhbWV0ZXJzLFxuICAgICAgZGFtcGluZyxcbiAgICAgIGdyYWRpZW50RGlmZmVyZW5jZSxcbiAgICAgIHBhcmFtZXRlcml6ZWRGdW5jdGlvbixcbiAgICApO1xuXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBwYXJMZW47IGsrKykge1xuICAgICAgcGFyYW1ldGVyc1trXSA9IE1hdGgubWluKFxuICAgICAgICBNYXRoLm1heChtaW5WYWx1ZXNba10sIHBhcmFtZXRlcnNba10pLFxuICAgICAgICBtYXhWYWx1ZXNba10sXG4gICAgICApO1xuICAgIH1cblxuICAgIGVycm9yID0gZXJyb3JDYWxjdWxhdGlvbihkYXRhLCBwYXJhbWV0ZXJzLCBwYXJhbWV0ZXJpemVkRnVuY3Rpb24pO1xuICAgIGlmIChpc05hTihlcnJvcikpIGJyZWFrO1xuICAgIGNvbnZlcmdlZCA9IGVycm9yIDw9IGVycm9yVG9sZXJhbmNlO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwYXJhbWV0ZXJWYWx1ZXM6IHBhcmFtZXRlcnMsXG4gICAgcGFyYW1ldGVyRXJyb3I6IGVycm9yLFxuICAgIGl0ZXJhdGlvbnM6IGl0ZXJhdGlvbixcbiAgfTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbmZ1bmN0aW9uIG1ha2VIZWFwKG5Qb2ludHMsIHNpemUpIHtcbiAgICB2YXIgbWFrZUFycmF5cyA9IGZ1bmN0aW9uIChmaWxsVmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHV0aWxzLmVtcHR5KG5Qb2ludHMpLm1hcChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gdXRpbHMuZmlsbGVkKHNpemUsIGZpbGxWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgdmFyIGhlYXAgPSBbXTtcbiAgICBoZWFwLnB1c2gobWFrZUFycmF5cygtMSkpO1xuICAgIGhlYXAucHVzaChtYWtlQXJyYXlzKEluZmluaXR5KSk7XG4gICAgaGVhcC5wdXNoKG1ha2VBcnJheXMoMCkpO1xuICAgIHJldHVybiBoZWFwO1xufVxuZXhwb3J0cy5tYWtlSGVhcCA9IG1ha2VIZWFwO1xuZnVuY3Rpb24gcmVqZWN0aW9uU2FtcGxlKG5TYW1wbGVzLCBwb29sU2l6ZSwgcmFuZG9tKSB7XG4gICAgdmFyIHJlc3VsdCA9IHV0aWxzLnplcm9zKG5TYW1wbGVzKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgdmFyIHJlamVjdFNhbXBsZSA9IHRydWU7XG4gICAgICAgIHZhciBqID0gMDtcbiAgICAgICAgd2hpbGUgKHJlamVjdFNhbXBsZSkge1xuICAgICAgICAgICAgaiA9IHV0aWxzLnRhdVJhbmRJbnQocG9vbFNpemUsIHJhbmRvbSk7XG4gICAgICAgICAgICB2YXIgYnJva2VuID0gZmFsc2U7XG4gICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IGk7IGsrKykge1xuICAgICAgICAgICAgICAgIGlmIChqID09PSByZXN1bHRba10pIHtcbiAgICAgICAgICAgICAgICAgICAgYnJva2VuID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFicm9rZW4pXG4gICAgICAgICAgICAgICAgcmVqZWN0U2FtcGxlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0W2ldID0gajtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMucmVqZWN0aW9uU2FtcGxlID0gcmVqZWN0aW9uU2FtcGxlO1xuZnVuY3Rpb24gaGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKSB7XG4gICAgcm93ID0gTWF0aC5mbG9vcihyb3cpO1xuICAgIHZhciBpbmRpY2VzID0gaGVhcFswXVtyb3ddO1xuICAgIHZhciB3ZWlnaHRzID0gaGVhcFsxXVtyb3ddO1xuICAgIHZhciBpc05ldyA9IGhlYXBbMl1bcm93XTtcbiAgICBpZiAod2VpZ2h0ID49IHdlaWdodHNbMF0pIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoaW5kZXggPT09IGluZGljZXNbaV0pIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmNoZWNrZWRIZWFwUHVzaChoZWFwLCByb3csIHdlaWdodCwgaW5kZXgsIGZsYWcpO1xufVxuZXhwb3J0cy5oZWFwUHVzaCA9IGhlYXBQdXNoO1xuZnVuY3Rpb24gdW5jaGVja2VkSGVhcFB1c2goaGVhcCwgcm93LCB3ZWlnaHQsIGluZGV4LCBmbGFnKSB7XG4gICAgdmFyIGluZGljZXMgPSBoZWFwWzBdW3Jvd107XG4gICAgdmFyIHdlaWdodHMgPSBoZWFwWzFdW3Jvd107XG4gICAgdmFyIGlzTmV3ID0gaGVhcFsyXVtyb3ddO1xuICAgIGlmICh3ZWlnaHQgPj0gd2VpZ2h0c1swXSkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgd2VpZ2h0c1swXSA9IHdlaWdodDtcbiAgICBpbmRpY2VzWzBdID0gaW5kZXg7XG4gICAgaXNOZXdbMF0gPSBmbGFnO1xuICAgIHZhciBpID0gMDtcbiAgICB2YXIgaVN3YXAgPSAwO1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciBpYzEgPSAyICogaSArIDE7XG4gICAgICAgIHZhciBpYzIgPSBpYzEgKyAxO1xuICAgICAgICB2YXIgaGVhcFNoYXBlMiA9IGhlYXBbMF1bMF0ubGVuZ3RoO1xuICAgICAgICBpZiAoaWMxID49IGhlYXBTaGFwZTIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGljMiA+PSBoZWFwU2hhcGUyKSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0c1tpYzFdID4gd2VpZ2h0KSB7XG4gICAgICAgICAgICAgICAgaVN3YXAgPSBpYzE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh3ZWlnaHRzW2ljMV0gPj0gd2VpZ2h0c1tpYzJdKSB7XG4gICAgICAgICAgICBpZiAod2VpZ2h0IDwgd2VpZ2h0c1tpYzFdKSB7XG4gICAgICAgICAgICAgICAgaVN3YXAgPSBpYzE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmICh3ZWlnaHQgPCB3ZWlnaHRzW2ljMl0pIHtcbiAgICAgICAgICAgICAgICBpU3dhcCA9IGljMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHdlaWdodHNbaV0gPSB3ZWlnaHRzW2lTd2FwXTtcbiAgICAgICAgaW5kaWNlc1tpXSA9IGluZGljZXNbaVN3YXBdO1xuICAgICAgICBpc05ld1tpXSA9IGlzTmV3W2lTd2FwXTtcbiAgICAgICAgaSA9IGlTd2FwO1xuICAgIH1cbiAgICB3ZWlnaHRzW2ldID0gd2VpZ2h0O1xuICAgIGluZGljZXNbaV0gPSBpbmRleDtcbiAgICBpc05ld1tpXSA9IGZsYWc7XG4gICAgcmV0dXJuIDE7XG59XG5leHBvcnRzLnVuY2hlY2tlZEhlYXBQdXNoID0gdW5jaGVja2VkSGVhcFB1c2g7XG5mdW5jdGlvbiBidWlsZENhbmRpZGF0ZXMoY3VycmVudEdyYXBoLCBuVmVydGljZXMsIG5OZWlnaGJvcnMsIG1heENhbmRpZGF0ZXMsIHJhbmRvbSkge1xuICAgIHZhciBjYW5kaWRhdGVOZWlnaGJvcnMgPSBtYWtlSGVhcChuVmVydGljZXMsIG1heENhbmRpZGF0ZXMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblZlcnRpY2VzOyBpKyspIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBuTmVpZ2hib3JzOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50R3JhcGhbMF1baV1bal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaWR4ID0gY3VycmVudEdyYXBoWzBdW2ldW2pdO1xuICAgICAgICAgICAgdmFyIGlzbiA9IGN1cnJlbnRHcmFwaFsyXVtpXVtqXTtcbiAgICAgICAgICAgIHZhciBkID0gdXRpbHMudGF1UmFuZChyYW5kb20pO1xuICAgICAgICAgICAgaGVhcFB1c2goY2FuZGlkYXRlTmVpZ2hib3JzLCBpLCBkLCBpZHgsIGlzbik7XG4gICAgICAgICAgICBoZWFwUHVzaChjYW5kaWRhdGVOZWlnaGJvcnMsIGlkeCwgZCwgaSwgaXNuKTtcbiAgICAgICAgICAgIGN1cnJlbnRHcmFwaFsyXVtpXVtqXSA9IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbmRpZGF0ZU5laWdoYm9ycztcbn1cbmV4cG9ydHMuYnVpbGRDYW5kaWRhdGVzID0gYnVpbGRDYW5kaWRhdGVzO1xuZnVuY3Rpb24gZGVoZWFwU29ydChoZWFwKSB7XG4gICAgdmFyIGluZGljZXMgPSBoZWFwWzBdO1xuICAgIHZhciB3ZWlnaHRzID0gaGVhcFsxXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGluZEhlYXAgPSBpbmRpY2VzW2ldO1xuICAgICAgICB2YXIgZGlzdEhlYXAgPSB3ZWlnaHRzW2ldO1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGluZEhlYXAubGVuZ3RoIC0gMTsgaisrKSB7XG4gICAgICAgICAgICB2YXIgaW5kSGVhcEluZGV4ID0gaW5kSGVhcC5sZW5ndGggLSBqIC0gMTtcbiAgICAgICAgICAgIHZhciBkaXN0SGVhcEluZGV4ID0gZGlzdEhlYXAubGVuZ3RoIC0gaiAtIDE7XG4gICAgICAgICAgICB2YXIgdGVtcDEgPSBpbmRIZWFwWzBdO1xuICAgICAgICAgICAgaW5kSGVhcFswXSA9IGluZEhlYXBbaW5kSGVhcEluZGV4XTtcbiAgICAgICAgICAgIGluZEhlYXBbaW5kSGVhcEluZGV4XSA9IHRlbXAxO1xuICAgICAgICAgICAgdmFyIHRlbXAyID0gZGlzdEhlYXBbMF07XG4gICAgICAgICAgICBkaXN0SGVhcFswXSA9IGRpc3RIZWFwW2Rpc3RIZWFwSW5kZXhdO1xuICAgICAgICAgICAgZGlzdEhlYXBbZGlzdEhlYXBJbmRleF0gPSB0ZW1wMjtcbiAgICAgICAgICAgIHNpZnREb3duKGRpc3RIZWFwLCBpbmRIZWFwLCBkaXN0SGVhcEluZGV4LCAwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBpbmRpY2VzOiBpbmRpY2VzLCB3ZWlnaHRzOiB3ZWlnaHRzIH07XG59XG5leHBvcnRzLmRlaGVhcFNvcnQgPSBkZWhlYXBTb3J0O1xuZnVuY3Rpb24gc2lmdERvd24oaGVhcDEsIGhlYXAyLCBjZWlsaW5nLCBlbHQpIHtcbiAgICB3aGlsZSAoZWx0ICogMiArIDEgPCBjZWlsaW5nKSB7XG4gICAgICAgIHZhciBsZWZ0Q2hpbGQgPSBlbHQgKiAyICsgMTtcbiAgICAgICAgdmFyIHJpZ2h0Q2hpbGQgPSBsZWZ0Q2hpbGQgKyAxO1xuICAgICAgICB2YXIgc3dhcCA9IGVsdDtcbiAgICAgICAgaWYgKGhlYXAxW3N3YXBdIDwgaGVhcDFbbGVmdENoaWxkXSkge1xuICAgICAgICAgICAgc3dhcCA9IGxlZnRDaGlsZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmlnaHRDaGlsZCA8IGNlaWxpbmcgJiYgaGVhcDFbc3dhcF0gPCBoZWFwMVtyaWdodENoaWxkXSkge1xuICAgICAgICAgICAgc3dhcCA9IHJpZ2h0Q2hpbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN3YXAgPT09IGVsdCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGVtcDEgPSBoZWFwMVtlbHRdO1xuICAgICAgICAgICAgaGVhcDFbZWx0XSA9IGhlYXAxW3N3YXBdO1xuICAgICAgICAgICAgaGVhcDFbc3dhcF0gPSB0ZW1wMTtcbiAgICAgICAgICAgIHZhciB0ZW1wMiA9IGhlYXAyW2VsdF07XG4gICAgICAgICAgICBoZWFwMltlbHRdID0gaGVhcDJbc3dhcF07XG4gICAgICAgICAgICBoZWFwMltzd2FwXSA9IHRlbXAyO1xuICAgICAgICAgICAgZWx0ID0gc3dhcDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHNtYWxsZXN0RmxhZ2dlZChoZWFwLCByb3cpIHtcbiAgICB2YXIgaW5kID0gaGVhcFswXVtyb3ddO1xuICAgIHZhciBkaXN0ID0gaGVhcFsxXVtyb3ddO1xuICAgIHZhciBmbGFnID0gaGVhcFsyXVtyb3ddO1xuICAgIHZhciBtaW5EaXN0ID0gSW5maW5pdHk7XG4gICAgdmFyIHJlc3VsdEluZGV4ID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPiBpbmQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGZsYWdbaV0gPT09IDEgJiYgZGlzdFtpXSA8IG1pbkRpc3QpIHtcbiAgICAgICAgICAgIG1pbkRpc3QgPSBkaXN0W2ldO1xuICAgICAgICAgICAgcmVzdWx0SW5kZXggPSBpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChyZXN1bHRJbmRleCA+PSAwKSB7XG4gICAgICAgIGZsYWdbcmVzdWx0SW5kZXhdID0gMDtcbiAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoaW5kW3Jlc3VsdEluZGV4XSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgfVxufVxuZXhwb3J0cy5zbWFsbGVzdEZsYWdnZWQgPSBzbWFsbGVzdEZsYWdnZWQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciB1bWFwXzEgPSByZXF1aXJlKFwiLi91bWFwXCIpO1xuZXhwb3J0cy5VTUFQID0gdW1hcF8xLlVNQVA7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG52YXIgX19pbXBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2ltcG9ydFN0YXIpIHx8IGZ1bmN0aW9uIChtb2QpIHtcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgcmVzdWx0W2tdID0gbW9kW2tdO1xuICAgIHJlc3VsdFtcImRlZmF1bHRcIl0gPSBtb2Q7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgX2E7XG52YXIgdXRpbHMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdXRpbHNcIikpO1xudmFyIFNwYXJzZU1hdHJpeCA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHVlcywgZGltcykge1xuICAgICAgICB0aGlzLmVudHJpZXMgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMublJvd3MgPSAwO1xuICAgICAgICB0aGlzLm5Db2xzID0gMDtcbiAgICAgICAgaWYgKHJvd3MubGVuZ3RoICE9PSBjb2xzLmxlbmd0aCB8fCByb3dzLmxlbmd0aCAhPT0gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb3dzLCBjb2xzIGFuZCB2YWx1ZXMgYXJyYXlzIG11c3QgYWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5uUm93cyA9IGRpbXNbMF07XG4gICAgICAgIHRoaXMubkNvbHMgPSBkaW1zWzFdO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIHJvdyA9IHJvd3NbaV07XG4gICAgICAgICAgICB2YXIgY29sID0gY29sc1tpXTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tEaW1zKHJvdywgY29sKTtcbiAgICAgICAgICAgIHZhciBrZXkgPSB0aGlzLm1ha2VLZXkocm93LCBjb2wpO1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNldChrZXksIHsgdmFsdWU6IHZhbHVlc1tpXSwgcm93OiByb3csIGNvbDogY29sIH0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUubWFrZUtleSA9IGZ1bmN0aW9uIChyb3csIGNvbCkge1xuICAgICAgICByZXR1cm4gcm93ICsgXCI6XCIgKyBjb2w7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmNoZWNrRGltcyA9IGZ1bmN0aW9uIChyb3csIGNvbCkge1xuICAgICAgICB2YXIgd2l0aGluQm91bmRzID0gcm93IDwgdGhpcy5uUm93cyAmJiBjb2wgPCB0aGlzLm5Db2xzO1xuICAgICAgICBpZiAoIXdpdGhpbkJvdW5kcykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdyb3cgYW5kL29yIGNvbCBzcGVjaWZpZWQgb3V0c2lkZSBvZiBtYXRyaXggZGltZW5zaW9ucycpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChyb3csIGNvbCwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5jaGVja0RpbXMocm93LCBjb2wpO1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgaWYgKCF0aGlzLmVudHJpZXMuaGFzKGtleSkpIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zZXQoa2V5LCB7IHZhbHVlOiB2YWx1ZSwgcm93OiByb3csIGNvbDogY29sIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRyaWVzLmdldChrZXkpLnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24gKHJvdywgY29sLCBkZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PT0gdm9pZCAwKSB7IGRlZmF1bHRWYWx1ZSA9IDA7IH1cbiAgICAgICAgdGhpcy5jaGVja0RpbXMocm93LCBjb2wpO1xuICAgICAgICB2YXIga2V5ID0gdGhpcy5tYWtlS2V5KHJvdywgY29sKTtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllcy5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcy5nZXQoa2V5KS52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24gKG9yZGVyZWQpIHtcbiAgICAgICAgaWYgKG9yZGVyZWQgPT09IHZvaWQgMCkgeyBvcmRlcmVkID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgcm93Q29sVmFsdWVzID0gW107XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgcm93Q29sVmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG9yZGVyZWQpIHtcbiAgICAgICAgICAgIHJvd0NvbFZhbHVlcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICAgICAgICAgICAgaWYgKGEucm93ID09PSBiLnJvdykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS5jb2wgLSBiLmNvbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnJvdyAtIGIucm93O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByb3dDb2xWYWx1ZXM7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldERpbXMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBbdGhpcy5uUm93cywgdGhpcy5uQ29sc107XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLmdldFJvd3MgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZW50cmllcywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgX2IgPSBfX3JlYWQoX2EsIDIpLCBrZXkgPSBfYlswXSwgdmFsdWUgPSBfYlsxXTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5yb3c7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5nZXRDb2xzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuY29sO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFNwYXJzZU1hdHJpeC5wcm90b3R5cGUuZ2V0VmFsdWVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmVudHJpZXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgdmFyIF9iID0gX19yZWFkKF9hLCAyKSwga2V5ID0gX2JbMF0sIHZhbHVlID0gX2JbMV07XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUudmFsdWU7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gZm4odmFsdWUudmFsdWUsIHZhbHVlLnJvdywgdmFsdWUuY29sKTsgfSk7XG4gICAgfTtcbiAgICBTcGFyc2VNYXRyaXgucHJvdG90eXBlLm1hcCA9IGZ1bmN0aW9uIChmbikge1xuICAgICAgICB2YXIgdmFscyA9IFtdO1xuICAgICAgICB0aGlzLmVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIHZhbHMucHVzaChmbih2YWx1ZS52YWx1ZSwgdmFsdWUucm93LCB2YWx1ZS5jb2wpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBkaW1zID0gW3RoaXMublJvd3MsIHRoaXMubkNvbHNdO1xuICAgICAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeCh0aGlzLmdldFJvd3MoKSwgdGhpcy5nZXRDb2xzKCksIHZhbHMsIGRpbXMpO1xuICAgIH07XG4gICAgU3BhcnNlTWF0cml4LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICB2YXIgcm93cyA9IHV0aWxzLmVtcHR5KHRoaXMublJvd3MpO1xuICAgICAgICB2YXIgb3V0cHV0ID0gcm93cy5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLnplcm9zKF90aGlzLm5Db2xzKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZW50cmllcy5mb3JFYWNoKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgb3V0cHV0W3ZhbHVlLnJvd11bdmFsdWUuY29sXSA9IHZhbHVlLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9O1xuICAgIHJldHVybiBTcGFyc2VNYXRyaXg7XG59KCkpO1xuZXhwb3J0cy5TcGFyc2VNYXRyaXggPSBTcGFyc2VNYXRyaXg7XG5mdW5jdGlvbiB0cmFuc3Bvc2UobWF0cml4KSB7XG4gICAgdmFyIGNvbHMgPSBbXTtcbiAgICB2YXIgcm93cyA9IFtdO1xuICAgIHZhciB2YWxzID0gW107XG4gICAgbWF0cml4LmZvckVhY2goZnVuY3Rpb24gKHZhbHVlLCByb3csIGNvbCkge1xuICAgICAgICBjb2xzLnB1c2gocm93KTtcbiAgICAgICAgcm93cy5wdXNoKGNvbCk7XG4gICAgICAgIHZhbHMucHVzaCh2YWx1ZSk7XG4gICAgfSk7XG4gICAgdmFyIGRpbXMgPSBbbWF0cml4Lm5Db2xzLCBtYXRyaXgublJvd3NdO1xuICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHMsIGRpbXMpO1xufVxuZXhwb3J0cy50cmFuc3Bvc2UgPSB0cmFuc3Bvc2U7XG5mdW5jdGlvbiBpZGVudGl0eShzaXplKSB7XG4gICAgdmFyIF9hID0gX19yZWFkKHNpemUsIDEpLCByb3dzID0gX2FbMF07XG4gICAgdmFyIG1hdHJpeCA9IG5ldyBTcGFyc2VNYXRyaXgoW10sIFtdLCBbXSwgc2l6ZSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByb3dzOyBpKyspIHtcbiAgICAgICAgbWF0cml4LnNldChpLCBpLCAxKTtcbiAgICB9XG4gICAgcmV0dXJuIG1hdHJpeDtcbn1cbmV4cG9ydHMuaWRlbnRpdHkgPSBpZGVudGl0eTtcbmZ1bmN0aW9uIHBhaXJ3aXNlTXVsdGlwbHkoYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4geCAqIHk7IH0pO1xufVxuZXhwb3J0cy5wYWlyd2lzZU11bHRpcGx5ID0gcGFpcndpc2VNdWx0aXBseTtcbmZ1bmN0aW9uIGFkZChhLCBiKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRXaXNlKGEsIGIsIGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4ICsgeTsgfSk7XG59XG5leHBvcnRzLmFkZCA9IGFkZDtcbmZ1bmN0aW9uIHN1YnRyYWN0KGEsIGIpIHtcbiAgICByZXR1cm4gZWxlbWVudFdpc2UoYSwgYiwgZnVuY3Rpb24gKHgsIHkpIHsgcmV0dXJuIHggLSB5OyB9KTtcbn1cbmV4cG9ydHMuc3VidHJhY3QgPSBzdWJ0cmFjdDtcbmZ1bmN0aW9uIG1heGltdW0oYSwgYikge1xuICAgIHJldHVybiBlbGVtZW50V2lzZShhLCBiLCBmdW5jdGlvbiAoeCwgeSkgeyByZXR1cm4gKHggPiB5ID8geCA6IHkpOyB9KTtcbn1cbmV4cG9ydHMubWF4aW11bSA9IG1heGltdW07XG5mdW5jdGlvbiBtdWx0aXBseVNjYWxhcihhLCBzY2FsYXIpIHtcbiAgICByZXR1cm4gYS5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB2YWx1ZSAqIHNjYWxhcjtcbiAgICB9KTtcbn1cbmV4cG9ydHMubXVsdGlwbHlTY2FsYXIgPSBtdWx0aXBseVNjYWxhcjtcbmZ1bmN0aW9uIGVsaW1pbmF0ZVplcm9zKG0pIHtcbiAgICB2YXIgemVyb0luZGljZXMgPSBuZXcgU2V0KCk7XG4gICAgdmFyIHZhbHVlcyA9IG0uZ2V0VmFsdWVzKCk7XG4gICAgdmFyIHJvd3MgPSBtLmdldFJvd3MoKTtcbiAgICB2YXIgY29scyA9IG0uZ2V0Q29scygpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh2YWx1ZXNbaV0gPT09IDApIHtcbiAgICAgICAgICAgIHplcm9JbmRpY2VzLmFkZChpKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgcmVtb3ZlQnlaZXJvSW5kZXggPSBmdW5jdGlvbiAoXywgaW5kZXgpIHsgcmV0dXJuICF6ZXJvSW5kaWNlcy5oYXMoaW5kZXgpOyB9O1xuICAgIHZhciBuZXh0VmFsdWVzID0gdmFsdWVzLmZpbHRlcihyZW1vdmVCeVplcm9JbmRleCk7XG4gICAgdmFyIG5leHRSb3dzID0gcm93cy5maWx0ZXIocmVtb3ZlQnlaZXJvSW5kZXgpO1xuICAgIHZhciBuZXh0Q29scyA9IGNvbHMuZmlsdGVyKHJlbW92ZUJ5WmVyb0luZGV4KTtcbiAgICByZXR1cm4gbmV3IFNwYXJzZU1hdHJpeChuZXh0Um93cywgbmV4dENvbHMsIG5leHRWYWx1ZXMsIG0uZ2V0RGltcygpKTtcbn1cbmV4cG9ydHMuZWxpbWluYXRlWmVyb3MgPSBlbGltaW5hdGVaZXJvcztcbmZ1bmN0aW9uIG5vcm1hbGl6ZShtLCBub3JtVHlwZSkge1xuICAgIGlmIChub3JtVHlwZSA9PT0gdm9pZCAwKSB7IG5vcm1UeXBlID0gXCJsMlwiOyB9XG4gICAgdmFyIGVfMSwgX2E7XG4gICAgdmFyIG5vcm1GbiA9IG5vcm1GbnNbbm9ybVR5cGVdO1xuICAgIHZhciBjb2xzQnlSb3cgPSBuZXcgTWFwKCk7XG4gICAgbS5mb3JFYWNoKGZ1bmN0aW9uIChfLCByb3csIGNvbCkge1xuICAgICAgICB2YXIgY29scyA9IGNvbHNCeVJvdy5nZXQocm93KSB8fCBbXTtcbiAgICAgICAgY29scy5wdXNoKGNvbCk7XG4gICAgICAgIGNvbHNCeVJvdy5zZXQocm93LCBjb2xzKTtcbiAgICB9KTtcbiAgICB2YXIgbmV4dE1hdHJpeCA9IG5ldyBTcGFyc2VNYXRyaXgoW10sIFtdLCBbXSwgbS5nZXREaW1zKCkpO1xuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKHJvdykge1xuICAgICAgICB2YXIgY29scyA9IGNvbHNCeVJvdy5nZXQocm93KS5zb3J0KCk7XG4gICAgICAgIHZhciB2YWxzID0gY29scy5tYXAoZnVuY3Rpb24gKGNvbCkgeyByZXR1cm4gbS5nZXQocm93LCBjb2wpOyB9KTtcbiAgICAgICAgdmFyIG5vcm0gPSBub3JtRm4odmFscyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9ybS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbmV4dE1hdHJpeC5zZXQocm93LCBjb2xzW2ldLCBub3JtW2ldKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2IgPSBfX3ZhbHVlcyhjb2xzQnlSb3cua2V5cygpKSwgX2MgPSBfYi5uZXh0KCk7ICFfYy5kb25lOyBfYyA9IF9iLm5leHQoKSkge1xuICAgICAgICAgICAgdmFyIHJvdyA9IF9jLnZhbHVlO1xuICAgICAgICAgICAgX2xvb3BfMShyb3cpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoX2MgJiYgIV9jLmRvbmUgJiYgKF9hID0gX2IucmV0dXJuKSkgX2EuY2FsbChfYik7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgIH1cbiAgICByZXR1cm4gbmV4dE1hdHJpeDtcbn1cbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xudmFyIG5vcm1GbnMgPSAoX2EgPSB7fSxcbiAgICBfYVtcIm1heFwiXSA9IGZ1bmN0aW9uICh4cykge1xuICAgICAgICB2YXIgbWF4ID0gLUluZmluaXR5O1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBtYXggPSB4c1tpXSA+IG1heCA/IHhzW2ldIDogbWF4O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggLyBtYXg7IH0pO1xuICAgIH0sXG4gICAgX2FbXCJsMVwiXSA9IGZ1bmN0aW9uICh4cykge1xuICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3VtICs9IHhzW2ldO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB4cy5tYXAoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggLyBzdW07IH0pO1xuICAgIH0sXG4gICAgX2FbXCJsMlwiXSA9IGZ1bmN0aW9uICh4cykge1xuICAgICAgICB2YXIgc3VtID0gMDtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgc3VtICs9IE1hdGgucG93KHhzW2ldLCAyKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiBNYXRoLnNxcnQoTWF0aC5wb3coeCwgMikgLyBzdW0pOyB9KTtcbiAgICB9LFxuICAgIF9hKTtcbmZ1bmN0aW9uIGVsZW1lbnRXaXNlKGEsIGIsIG9wKSB7XG4gICAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gICAgdmFyIHJvd3MgPSBbXTtcbiAgICB2YXIgY29scyA9IFtdO1xuICAgIHZhciB2YWxzID0gW107XG4gICAgdmFyIG9wZXJhdGUgPSBmdW5jdGlvbiAocm93LCBjb2wpIHtcbiAgICAgICAgcm93cy5wdXNoKHJvdyk7XG4gICAgICAgIGNvbHMucHVzaChjb2wpO1xuICAgICAgICB2YXIgbmV4dFZhbHVlID0gb3AoYS5nZXQocm93LCBjb2wpLCBiLmdldChyb3csIGNvbCkpO1xuICAgICAgICB2YWxzLnB1c2gobmV4dFZhbHVlKTtcbiAgICB9O1xuICAgIHZhciB2YWx1ZXNBID0gYS5nZXRWYWx1ZXMoKTtcbiAgICB2YXIgcm93c0EgPSBhLmdldFJvd3MoKTtcbiAgICB2YXIgY29sc0EgPSBhLmdldENvbHMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlc0EubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJvdyA9IHJvd3NBW2ldO1xuICAgICAgICB2YXIgY29sID0gY29sc0FbaV07XG4gICAgICAgIHZhciBrZXkgPSByb3cgKyBcIjpcIiArIGNvbDtcbiAgICAgICAgdmlzaXRlZC5hZGQoa2V5KTtcbiAgICAgICAgb3BlcmF0ZShyb3csIGNvbCk7XG4gICAgfVxuICAgIHZhciB2YWx1ZXNCID0gYi5nZXRWYWx1ZXMoKTtcbiAgICB2YXIgcm93c0IgPSBiLmdldFJvd3MoKTtcbiAgICB2YXIgY29sc0IgPSBiLmdldENvbHMoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlc0IubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHJvdyA9IHJvd3NCW2ldO1xuICAgICAgICB2YXIgY29sID0gY29sc0JbaV07XG4gICAgICAgIHZhciBrZXkgPSByb3cgKyBcIjpcIiArIGNvbDtcbiAgICAgICAgaWYgKHZpc2l0ZWQuaGFzKGtleSkpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgb3BlcmF0ZShyb3csIGNvbCk7XG4gICAgfVxuICAgIHZhciBkaW1zID0gW2EublJvd3MsIGEubkNvbHNdO1xuICAgIHJldHVybiBuZXcgU3BhcnNlTWF0cml4KHJvd3MsIGNvbHMsIHZhbHMsIGRpbXMpO1xufVxuZnVuY3Rpb24gZ2V0Q1NSKHgpIHtcbiAgICB2YXIgZW50cmllcyA9IFtdO1xuICAgIHguZm9yRWFjaChmdW5jdGlvbiAodmFsdWUsIHJvdywgY29sKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7IHZhbHVlOiB2YWx1ZSwgcm93OiByb3csIGNvbDogY29sIH0pO1xuICAgIH0pO1xuICAgIGVudHJpZXMuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICBpZiAoYS5yb3cgPT09IGIucm93KSB7XG4gICAgICAgICAgICByZXR1cm4gYS5jb2wgLSBiLmNvbDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhLnJvdyAtIGIucm93O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgdmFyIGluZGljZXMgPSBbXTtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgdmFyIGluZHB0ciA9IFtdO1xuICAgIHZhciBjdXJyZW50Um93ID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBfYSA9IGVudHJpZXNbaV0sIHJvdyA9IF9hLnJvdywgY29sID0gX2EuY29sLCB2YWx1ZSA9IF9hLnZhbHVlO1xuICAgICAgICBpZiAocm93ICE9PSBjdXJyZW50Um93KSB7XG4gICAgICAgICAgICBjdXJyZW50Um93ID0gcm93O1xuICAgICAgICAgICAgaW5kcHRyLnB1c2goaSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5kaWNlcy5wdXNoKGNvbCk7XG4gICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHsgaW5kaWNlczogaW5kaWNlcywgdmFsdWVzOiB2YWx1ZXMsIGluZHB0cjogaW5kcHRyIH07XG59XG5leHBvcnRzLmdldENTUiA9IGdldENTUjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fdmFsdWVzID0gKHRoaXMgJiYgdGhpcy5fX3ZhbHVlcykgfHwgZnVuY3Rpb24gKG8pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl0sIGkgPSAwO1xuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XG4gICAgICAgIH1cbiAgICB9O1xufTtcbnZhciBfX2ltcG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9faW1wb3J0U3RhcikgfHwgZnVuY3Rpb24gKG1vZCkge1xuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSByZXN1bHRba10gPSBtb2Rba107XG4gICAgcmVzdWx0W1wiZGVmYXVsdFwiXSA9IG1vZDtcbiAgICByZXR1cm4gcmVzdWx0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBoZWFwID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL2hlYXBcIikpO1xudmFyIG1hdHJpeCA9IF9faW1wb3J0U3RhcihyZXF1aXJlKFwiLi9tYXRyaXhcIikpO1xudmFyIHRyZWUgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdHJlZVwiKSk7XG52YXIgdXRpbHMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdXRpbHNcIikpO1xuZnVuY3Rpb24gbWFrZU5ORGVzY2VudChkaXN0YW5jZUZuLCByYW5kb20pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gbk5EZXNjZW50KGRhdGEsIGxlYWZBcnJheSwgbk5laWdoYm9ycywgbkl0ZXJzLCBtYXhDYW5kaWRhdGVzLCBkZWx0YSwgcmhvLCBycFRyZWVJbml0KSB7XG4gICAgICAgIGlmIChuSXRlcnMgPT09IHZvaWQgMCkgeyBuSXRlcnMgPSAxMDsgfVxuICAgICAgICBpZiAobWF4Q2FuZGlkYXRlcyA9PT0gdm9pZCAwKSB7IG1heENhbmRpZGF0ZXMgPSA1MDsgfVxuICAgICAgICBpZiAoZGVsdGEgPT09IHZvaWQgMCkgeyBkZWx0YSA9IDAuMDAxOyB9XG4gICAgICAgIGlmIChyaG8gPT09IHZvaWQgMCkgeyByaG8gPSAwLjU7IH1cbiAgICAgICAgaWYgKHJwVHJlZUluaXQgPT09IHZvaWQgMCkgeyBycFRyZWVJbml0ID0gdHJ1ZTsgfVxuICAgICAgICB2YXIgblZlcnRpY2VzID0gZGF0YS5sZW5ndGg7XG4gICAgICAgIHZhciBjdXJyZW50R3JhcGggPSBoZWFwLm1ha2VIZWFwKGRhdGEubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5kaWNlcyA9IGhlYXAucmVqZWN0aW9uU2FtcGxlKG5OZWlnaGJvcnMsIGRhdGEubGVuZ3RoLCByYW5kb20pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRpY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbaV0sIGRhdGFbaW5kaWNlc1tqXV0pO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goY3VycmVudEdyYXBoLCBpLCBkLCBpbmRpY2VzW2pdLCAxKTtcbiAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgaW5kaWNlc1tqXSwgZCwgaSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJwVHJlZUluaXQpIHtcbiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbGVhZkFycmF5Lmxlbmd0aDsgbisrKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZWFmQXJyYXlbbl0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxlYWZBcnJheVtuXVtpXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBpICsgMTsgaiA8IGxlYWZBcnJheVtuXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlYWZBcnJheVtuXVtqXSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2xlYWZBcnJheVtuXVtpXV0sIGRhdGFbbGVhZkFycmF5W25dW2pdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgbGVhZkFycmF5W25dW2ldLCBkLCBsZWFmQXJyYXlbbl1bal0sIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIGxlYWZBcnJheVtuXVtqXSwgZCwgbGVhZkFycmF5W25dW2ldLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBuID0gMDsgbiA8IG5JdGVyczsgbisrKSB7XG4gICAgICAgICAgICB2YXIgY2FuZGlkYXRlTmVpZ2hib3JzID0gaGVhcC5idWlsZENhbmRpZGF0ZXMoY3VycmVudEdyYXBoLCBuVmVydGljZXMsIG5OZWlnaGJvcnMsIG1heENhbmRpZGF0ZXMsIHJhbmRvbSk7XG4gICAgICAgICAgICB2YXIgYyA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5WZXJ0aWNlczsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBtYXhDYW5kaWRhdGVzOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBNYXRoLmZsb29yKGNhbmRpZGF0ZU5laWdoYm9yc1swXVtpXVtqXSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwIDwgMCB8fCB1dGlscy50YXVSYW5kKHJhbmRvbSkgPCByaG8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgbWF4Q2FuZGlkYXRlczsgaysrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcSA9IE1hdGguZmxvb3IoY2FuZGlkYXRlTmVpZ2hib3JzWzBdW2ldW2tdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaiA9IGNhbmRpZGF0ZU5laWdoYm9yc1syXVtpXVtqXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjayA9IGNhbmRpZGF0ZU5laWdoYm9yc1syXVtpXVtrXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxIDwgMCB8fCAoIWNqICYmICFjaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW3BdLCBkYXRhW3FdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGMgKz0gaGVhcC5oZWFwUHVzaChjdXJyZW50R3JhcGgsIHAsIGQsIHEsIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYyArPSBoZWFwLmhlYXBQdXNoKGN1cnJlbnRHcmFwaCwgcSwgZCwgcCwgMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYyA8PSBkZWx0YSAqIG5OZWlnaGJvcnMgKiBkYXRhLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBzb3J0ZWQgPSBoZWFwLmRlaGVhcFNvcnQoY3VycmVudEdyYXBoKTtcbiAgICAgICAgcmV0dXJuIHNvcnRlZDtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlTk5EZXNjZW50ID0gbWFrZU5ORGVzY2VudDtcbmZ1bmN0aW9uIG1ha2VJbml0aWFsaXphdGlvbnMoZGlzdGFuY2VGbikge1xuICAgIGZ1bmN0aW9uIGluaXRGcm9tUmFuZG9tKG5OZWlnaGJvcnMsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBfaGVhcCwgcmFuZG9tKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVlcnlQb2ludHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciBpbmRpY2VzID0gdXRpbHMucmVqZWN0aW9uU2FtcGxlKG5OZWlnaGJvcnMsIGRhdGEubGVuZ3RoLCByYW5kb20pO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpbmRpY2VzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGljZXNbal0gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgZCA9IGRpc3RhbmNlRm4oZGF0YVtpbmRpY2VzW2pdXSwgcXVlcnlQb2ludHNbaV0pO1xuICAgICAgICAgICAgICAgIGhlYXAuaGVhcFB1c2goX2hlYXAsIGksIGQsIGluZGljZXNbal0sIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZ1bmN0aW9uIGluaXRGcm9tVHJlZShfdHJlZSwgZGF0YSwgcXVlcnlQb2ludHMsIF9oZWFwLCByYW5kb20pIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWVyeVBvaW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGluZGljZXMgPSB0cmVlLnNlYXJjaEZsYXRUcmVlKHF1ZXJ5UG9pbnRzW2ldLCBfdHJlZSwgcmFuZG9tKTtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRpY2VzW2pdIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VGbihkYXRhW2luZGljZXNbal1dLCBxdWVyeVBvaW50c1tpXSk7XG4gICAgICAgICAgICAgICAgaGVhcC5oZWFwUHVzaChfaGVhcCwgaSwgZCwgaW5kaWNlc1tqXSwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4geyBpbml0RnJvbVJhbmRvbTogaW5pdEZyb21SYW5kb20sIGluaXRGcm9tVHJlZTogaW5pdEZyb21UcmVlIH07XG59XG5leHBvcnRzLm1ha2VJbml0aWFsaXphdGlvbnMgPSBtYWtlSW5pdGlhbGl6YXRpb25zO1xuZnVuY3Rpb24gbWFrZUluaXRpYWxpemVkTk5TZWFyY2goZGlzdGFuY2VGbikge1xuICAgIHJldHVybiBmdW5jdGlvbiBublNlYXJjaEZuKGRhdGEsIGdyYXBoLCBpbml0aWFsaXphdGlvbiwgcXVlcnlQb2ludHMpIHtcbiAgICAgICAgdmFyIGVfMSwgX2E7XG4gICAgICAgIHZhciBfYiA9IG1hdHJpeC5nZXRDU1IoZ3JhcGgpLCBpbmRpY2VzID0gX2IuaW5kaWNlcywgaW5kcHRyID0gX2IuaW5kcHRyO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXJ5UG9pbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdHJpZWQgPSBuZXcgU2V0KGluaXRpYWxpemF0aW9uWzBdW2ldKTtcbiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZlcnRleCA9IGhlYXAuc21hbGxlc3RGbGFnZ2VkKGluaXRpYWxpemF0aW9uLCBpKTtcbiAgICAgICAgICAgICAgICBpZiAodmVydGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGNhbmRpZGF0ZXMgPSBpbmRpY2VzLnNsaWNlKGluZHB0clt2ZXJ0ZXhdLCBpbmRwdHJbdmVydGV4ICsgMV0pO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGNhbmRpZGF0ZXNfMSA9IF9fdmFsdWVzKGNhbmRpZGF0ZXMpLCBjYW5kaWRhdGVzXzFfMSA9IGNhbmRpZGF0ZXNfMS5uZXh0KCk7ICFjYW5kaWRhdGVzXzFfMS5kb25lOyBjYW5kaWRhdGVzXzFfMSA9IGNhbmRpZGF0ZXNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjYW5kaWRhdGUgPSBjYW5kaWRhdGVzXzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5kaWRhdGUgPT09IHZlcnRleCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gLTEgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmllZC5oYXMoY2FuZGlkYXRlKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBkaXN0YW5jZUZuKGRhdGFbY2FuZGlkYXRlXSwgcXVlcnlQb2ludHNbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC51bmNoZWNrZWRIZWFwUHVzaChpbml0aWFsaXphdGlvbiwgaSwgZCwgY2FuZGlkYXRlLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWVkLmFkZChjYW5kaWRhdGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlXzFfMSkgeyBlXzEgPSB7IGVycm9yOiBlXzFfMSB9OyB9XG4gICAgICAgICAgICAgICAgZmluYWxseSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FuZGlkYXRlc18xXzEgJiYgIWNhbmRpZGF0ZXNfMV8xLmRvbmUgJiYgKF9hID0gY2FuZGlkYXRlc18xLnJldHVybikpIF9hLmNhbGwoY2FuZGlkYXRlc18xKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbml0aWFsaXphdGlvbjtcbiAgICB9O1xufVxuZXhwb3J0cy5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCA9IG1ha2VJbml0aWFsaXplZE5OU2VhcmNoO1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVNlYXJjaChmb3Jlc3QsIGRhdGEsIHF1ZXJ5UG9pbnRzLCBuTmVpZ2hib3JzLCBpbml0RnJvbVJhbmRvbSwgaW5pdEZyb21UcmVlLCByYW5kb20pIHtcbiAgICB2YXIgZV8yLCBfYTtcbiAgICB2YXIgcmVzdWx0cyA9IGhlYXAubWFrZUhlYXAocXVlcnlQb2ludHMubGVuZ3RoLCBuTmVpZ2hib3JzKTtcbiAgICBpbml0RnJvbVJhbmRvbShuTmVpZ2hib3JzLCBkYXRhLCBxdWVyeVBvaW50cywgcmVzdWx0cywgcmFuZG9tKTtcbiAgICBpZiAoZm9yZXN0KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmb3IgKHZhciBmb3Jlc3RfMSA9IF9fdmFsdWVzKGZvcmVzdCksIGZvcmVzdF8xXzEgPSBmb3Jlc3RfMS5uZXh0KCk7ICFmb3Jlc3RfMV8xLmRvbmU7IGZvcmVzdF8xXzEgPSBmb3Jlc3RfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgdHJlZV8xID0gZm9yZXN0XzFfMS52YWx1ZTtcbiAgICAgICAgICAgICAgICBpbml0RnJvbVRyZWUodHJlZV8xLCBkYXRhLCBxdWVyeVBvaW50cywgcmVzdWx0cywgcmFuZG9tKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8yXzEpIHsgZV8yID0geyBlcnJvcjogZV8yXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcmVzdF8xXzEgJiYgIWZvcmVzdF8xXzEuZG9uZSAmJiAoX2EgPSBmb3Jlc3RfMS5yZXR1cm4pKSBfYS5jYWxsKGZvcmVzdF8xKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZpbmFsbHkgeyBpZiAoZV8yKSB0aHJvdyBlXzIuZXJyb3I7IH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0cztcbn1cbmV4cG9ydHMuaW5pdGlhbGl6ZVNlYXJjaCA9IGluaXRpYWxpemVTZWFyY2g7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3JlYWQgPSAodGhpcyAmJiB0aGlzLl9fcmVhZCkgfHwgZnVuY3Rpb24gKG8sIG4pIHtcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XG4gICAgaWYgKCFtKSByZXR1cm4gbztcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcbiAgICB0cnkge1xuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XG4gICAgZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cbiAgICB9XG4gICAgcmV0dXJuIGFyO1xufTtcbnZhciBfX3NwcmVhZCA9ICh0aGlzICYmIHRoaXMuX19zcHJlYWQpIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xuICAgIHJldHVybiBhcjtcbn07XG52YXIgX192YWx1ZXMgPSAodGhpcyAmJiB0aGlzLl9fdmFsdWVzKSB8fCBmdW5jdGlvbiAobykge1xuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcbiAgICAgICAgfVxuICAgIH07XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHV0aWxzID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL3V0aWxzXCIpKTtcbnZhciBGbGF0VHJlZSA9IChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRmxhdFRyZWUoaHlwZXJwbGFuZXMsIG9mZnNldHMsIGNoaWxkcmVuLCBpbmRpY2VzKSB7XG4gICAgICAgIHRoaXMuaHlwZXJwbGFuZXMgPSBoeXBlcnBsYW5lcztcbiAgICAgICAgdGhpcy5vZmZzZXRzID0gb2Zmc2V0cztcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgICB0aGlzLmluZGljZXMgPSBpbmRpY2VzO1xuICAgIH1cbiAgICByZXR1cm4gRmxhdFRyZWU7XG59KCkpO1xuZXhwb3J0cy5GbGF0VHJlZSA9IEZsYXRUcmVlO1xuZnVuY3Rpb24gbWFrZUZvcmVzdChkYXRhLCBuTmVpZ2hib3JzLCBuVHJlZXMsIHJhbmRvbSkge1xuICAgIHZhciBsZWFmU2l6ZSA9IE1hdGgubWF4KDEwLCBuTmVpZ2hib3JzKTtcbiAgICB2YXIgdHJlZXMgPSB1dGlsc1xuICAgICAgICAucmFuZ2UoblRyZWVzKVxuICAgICAgICAubWFwKGZ1bmN0aW9uIChfLCBpKSB7IHJldHVybiBtYWtlVHJlZShkYXRhLCBsZWFmU2l6ZSwgaSwgcmFuZG9tKTsgfSk7XG4gICAgdmFyIGZvcmVzdCA9IHRyZWVzLm1hcChmdW5jdGlvbiAodHJlZSkgeyByZXR1cm4gZmxhdHRlblRyZWUodHJlZSwgbGVhZlNpemUpOyB9KTtcbiAgICByZXR1cm4gZm9yZXN0O1xufVxuZXhwb3J0cy5tYWtlRm9yZXN0ID0gbWFrZUZvcmVzdDtcbmZ1bmN0aW9uIG1ha2VUcmVlKGRhdGEsIGxlYWZTaXplLCBuLCByYW5kb20pIHtcbiAgICBpZiAobGVhZlNpemUgPT09IHZvaWQgMCkgeyBsZWFmU2l6ZSA9IDMwOyB9XG4gICAgdmFyIGluZGljZXMgPSB1dGlscy5yYW5nZShkYXRhLmxlbmd0aCk7XG4gICAgdmFyIHRyZWUgPSBtYWtlRXVjbGlkZWFuVHJlZShkYXRhLCBpbmRpY2VzLCBsZWFmU2l6ZSwgbiwgcmFuZG9tKTtcbiAgICByZXR1cm4gdHJlZTtcbn1cbmZ1bmN0aW9uIG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXMsIGxlYWZTaXplLCBxLCByYW5kb20pIHtcbiAgICBpZiAobGVhZlNpemUgPT09IHZvaWQgMCkgeyBsZWFmU2l6ZSA9IDMwOyB9XG4gICAgaWYgKGluZGljZXMubGVuZ3RoID4gbGVhZlNpemUpIHtcbiAgICAgICAgdmFyIHNwbGl0UmVzdWx0cyA9IGV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdChkYXRhLCBpbmRpY2VzLCByYW5kb20pO1xuICAgICAgICB2YXIgaW5kaWNlc0xlZnQgPSBzcGxpdFJlc3VsdHMuaW5kaWNlc0xlZnQsIGluZGljZXNSaWdodCA9IHNwbGl0UmVzdWx0cy5pbmRpY2VzUmlnaHQsIGh5cGVycGxhbmUgPSBzcGxpdFJlc3VsdHMuaHlwZXJwbGFuZSwgb2Zmc2V0ID0gc3BsaXRSZXN1bHRzLm9mZnNldDtcbiAgICAgICAgdmFyIGxlZnRDaGlsZCA9IG1ha2VFdWNsaWRlYW5UcmVlKGRhdGEsIGluZGljZXNMZWZ0LCBsZWFmU2l6ZSwgcSArIDEsIHJhbmRvbSk7XG4gICAgICAgIHZhciByaWdodENoaWxkID0gbWFrZUV1Y2xpZGVhblRyZWUoZGF0YSwgaW5kaWNlc1JpZ2h0LCBsZWFmU2l6ZSwgcSArIDEsIHJhbmRvbSk7XG4gICAgICAgIHZhciBub2RlID0geyBsZWZ0Q2hpbGQ6IGxlZnRDaGlsZCwgcmlnaHRDaGlsZDogcmlnaHRDaGlsZCwgaXNMZWFmOiBmYWxzZSwgaHlwZXJwbGFuZTogaHlwZXJwbGFuZSwgb2Zmc2V0OiBvZmZzZXQgfTtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgbm9kZSA9IHsgaW5kaWNlczogaW5kaWNlcywgaXNMZWFmOiB0cnVlIH07XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGV1Y2xpZGVhblJhbmRvbVByb2plY3Rpb25TcGxpdChkYXRhLCBpbmRpY2VzLCByYW5kb20pIHtcbiAgICB2YXIgZGltID0gZGF0YVswXS5sZW5ndGg7XG4gICAgdmFyIGxlZnRJbmRleCA9IHV0aWxzLnRhdVJhbmRJbnQoaW5kaWNlcy5sZW5ndGgsIHJhbmRvbSk7XG4gICAgdmFyIHJpZ2h0SW5kZXggPSB1dGlscy50YXVSYW5kSW50KGluZGljZXMubGVuZ3RoLCByYW5kb20pO1xuICAgIHJpZ2h0SW5kZXggKz0gbGVmdEluZGV4ID09PSByaWdodEluZGV4ID8gMSA6IDA7XG4gICAgcmlnaHRJbmRleCA9IHJpZ2h0SW5kZXggJSBpbmRpY2VzLmxlbmd0aDtcbiAgICB2YXIgbGVmdCA9IGluZGljZXNbbGVmdEluZGV4XTtcbiAgICB2YXIgcmlnaHQgPSBpbmRpY2VzW3JpZ2h0SW5kZXhdO1xuICAgIHZhciBoeXBlcnBsYW5lT2Zmc2V0ID0gMDtcbiAgICB2YXIgaHlwZXJwbGFuZVZlY3RvciA9IHV0aWxzLnplcm9zKGRpbSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBoeXBlcnBsYW5lVmVjdG9yLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGh5cGVycGxhbmVWZWN0b3JbaV0gPSBkYXRhW2xlZnRdW2ldIC0gZGF0YVtyaWdodF1baV07XG4gICAgICAgIGh5cGVycGxhbmVPZmZzZXQgLT1cbiAgICAgICAgICAgIChoeXBlcnBsYW5lVmVjdG9yW2ldICogKGRhdGFbbGVmdF1baV0gKyBkYXRhW3JpZ2h0XVtpXSkpIC8gMi4wO1xuICAgIH1cbiAgICB2YXIgbkxlZnQgPSAwO1xuICAgIHZhciBuUmlnaHQgPSAwO1xuICAgIHZhciBzaWRlID0gdXRpbHMuemVyb3MoaW5kaWNlcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgbWFyZ2luID0gaHlwZXJwbGFuZU9mZnNldDtcbiAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgbWFyZ2luICs9IGh5cGVycGxhbmVWZWN0b3JbZF0gKiBkYXRhW2luZGljZXNbaV1dW2RdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtYXJnaW4gPT09IDApIHtcbiAgICAgICAgICAgIHNpZGVbaV0gPSB1dGlscy50YXVSYW5kSW50KDIsIHJhbmRvbSk7XG4gICAgICAgICAgICBpZiAoc2lkZVtpXSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5MZWZ0ICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuUmlnaHQgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChtYXJnaW4gPiAwKSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gMDtcbiAgICAgICAgICAgIG5MZWZ0ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzaWRlW2ldID0gMTtcbiAgICAgICAgICAgIG5SaWdodCArPSAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBpbmRpY2VzTGVmdCA9IHV0aWxzLnplcm9zKG5MZWZ0KTtcbiAgICB2YXIgaW5kaWNlc1JpZ2h0ID0gdXRpbHMuemVyb3MoblJpZ2h0KTtcbiAgICBuTGVmdCA9IDA7XG4gICAgblJpZ2h0ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHNpZGVbaV0gPT09IDApIHtcbiAgICAgICAgICAgIGluZGljZXNMZWZ0W25MZWZ0XSA9IGluZGljZXNbaV07XG4gICAgICAgICAgICBuTGVmdCArPSAxO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaW5kaWNlc1JpZ2h0W25SaWdodF0gPSBpbmRpY2VzW2ldO1xuICAgICAgICAgICAgblJpZ2h0ICs9IDE7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgaW5kaWNlc0xlZnQ6IGluZGljZXNMZWZ0LFxuICAgICAgICBpbmRpY2VzUmlnaHQ6IGluZGljZXNSaWdodCxcbiAgICAgICAgaHlwZXJwbGFuZTogaHlwZXJwbGFuZVZlY3RvcixcbiAgICAgICAgb2Zmc2V0OiBoeXBlcnBsYW5lT2Zmc2V0LFxuICAgIH07XG59XG5mdW5jdGlvbiBmbGF0dGVuVHJlZSh0cmVlLCBsZWFmU2l6ZSkge1xuICAgIHZhciBuTm9kZXMgPSBudW1Ob2Rlcyh0cmVlKTtcbiAgICB2YXIgbkxlYXZlcyA9IG51bUxlYXZlcyh0cmVlKTtcbiAgICB2YXIgaHlwZXJwbGFuZXMgPSB1dGlsc1xuICAgICAgICAucmFuZ2Uobk5vZGVzKVxuICAgICAgICAubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxzLnplcm9zKHRyZWUuaHlwZXJwbGFuZSA/IHRyZWUuaHlwZXJwbGFuZS5sZW5ndGggOiAwKTsgfSk7XG4gICAgdmFyIG9mZnNldHMgPSB1dGlscy56ZXJvcyhuTm9kZXMpO1xuICAgIHZhciBjaGlsZHJlbiA9IHV0aWxzLnJhbmdlKG5Ob2RlcykubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIFstMSwgLTFdOyB9KTtcbiAgICB2YXIgaW5kaWNlcyA9IHV0aWxzXG4gICAgICAgIC5yYW5nZShuTGVhdmVzKVxuICAgICAgICAubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHV0aWxzLnJhbmdlKGxlYWZTaXplKS5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gLTE7IH0pOyB9KTtcbiAgICByZWN1cnNpdmVGbGF0dGVuKHRyZWUsIGh5cGVycGxhbmVzLCBvZmZzZXRzLCBjaGlsZHJlbiwgaW5kaWNlcywgMCwgMCk7XG4gICAgcmV0dXJuIG5ldyBGbGF0VHJlZShoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMpO1xufVxuZnVuY3Rpb24gcmVjdXJzaXZlRmxhdHRlbih0cmVlLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIG5vZGVOdW0sIGxlYWZOdW0pIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRyZWUuaXNMZWFmKSB7XG4gICAgICAgIGNoaWxkcmVuW25vZGVOdW1dWzBdID0gLWxlYWZOdW07XG4gICAgICAgIChfYSA9IGluZGljZXNbbGVhZk51bV0pLnNwbGljZS5hcHBseShfYSwgX19zcHJlYWQoWzAsIHRyZWUuaW5kaWNlcy5sZW5ndGhdLCB0cmVlLmluZGljZXMpKTtcbiAgICAgICAgbGVhZk51bSArPSAxO1xuICAgICAgICByZXR1cm4geyBub2RlTnVtOiBub2RlTnVtLCBsZWFmTnVtOiBsZWFmTnVtIH07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBoeXBlcnBsYW5lc1tub2RlTnVtXSA9IHRyZWUuaHlwZXJwbGFuZTtcbiAgICAgICAgb2Zmc2V0c1tub2RlTnVtXSA9IHRyZWUub2Zmc2V0O1xuICAgICAgICBjaGlsZHJlbltub2RlTnVtXVswXSA9IG5vZGVOdW0gKyAxO1xuICAgICAgICB2YXIgb2xkTm9kZU51bSA9IG5vZGVOdW07XG4gICAgICAgIHZhciByZXMgPSByZWN1cnNpdmVGbGF0dGVuKHRyZWUubGVmdENoaWxkLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIG5vZGVOdW0gKyAxLCBsZWFmTnVtKTtcbiAgICAgICAgbm9kZU51bSA9IHJlcy5ub2RlTnVtO1xuICAgICAgICBsZWFmTnVtID0gcmVzLmxlYWZOdW07XG4gICAgICAgIGNoaWxkcmVuW29sZE5vZGVOdW1dWzFdID0gbm9kZU51bSArIDE7XG4gICAgICAgIHJlcyA9IHJlY3Vyc2l2ZUZsYXR0ZW4odHJlZS5yaWdodENoaWxkLCBoeXBlcnBsYW5lcywgb2Zmc2V0cywgY2hpbGRyZW4sIGluZGljZXMsIG5vZGVOdW0gKyAxLCBsZWFmTnVtKTtcbiAgICAgICAgcmV0dXJuIHsgbm9kZU51bTogcmVzLm5vZGVOdW0sIGxlYWZOdW06IHJlcy5sZWFmTnVtIH07XG4gICAgfVxufVxuZnVuY3Rpb24gbnVtTm9kZXModHJlZSkge1xuICAgIGlmICh0cmVlLmlzTGVhZikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAxICsgbnVtTm9kZXModHJlZS5sZWZ0Q2hpbGQpICsgbnVtTm9kZXModHJlZS5yaWdodENoaWxkKTtcbiAgICB9XG59XG5mdW5jdGlvbiBudW1MZWF2ZXModHJlZSkge1xuICAgIGlmICh0cmVlLmlzTGVhZikge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBudW1MZWF2ZXModHJlZS5sZWZ0Q2hpbGQpICsgbnVtTGVhdmVzKHRyZWUucmlnaHRDaGlsZCk7XG4gICAgfVxufVxuZnVuY3Rpb24gbWFrZUxlYWZBcnJheShycEZvcmVzdCkge1xuICAgIHZhciBlXzEsIF9hO1xuICAgIGlmIChycEZvcmVzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgIHZhciBvdXRwdXQgPSBbXTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZvciAodmFyIHJwRm9yZXN0XzEgPSBfX3ZhbHVlcyhycEZvcmVzdCksIHJwRm9yZXN0XzFfMSA9IHJwRm9yZXN0XzEubmV4dCgpOyAhcnBGb3Jlc3RfMV8xLmRvbmU7IHJwRm9yZXN0XzFfMSA9IHJwRm9yZXN0XzEubmV4dCgpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRyZWUgPSBycEZvcmVzdF8xXzEudmFsdWU7XG4gICAgICAgICAgICAgICAgb3V0cHV0LnB1c2guYXBwbHkob3V0cHV0LCBfX3NwcmVhZCh0cmVlLmluZGljZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgICAgICBmaW5hbGx5IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKHJwRm9yZXN0XzFfMSAmJiAhcnBGb3Jlc3RfMV8xLmRvbmUgJiYgKF9hID0gcnBGb3Jlc3RfMS5yZXR1cm4pKSBfYS5jYWxsKHJwRm9yZXN0XzEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZmluYWxseSB7IGlmIChlXzEpIHRocm93IGVfMS5lcnJvcjsgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gW1stMV1dO1xuICAgIH1cbn1cbmV4cG9ydHMubWFrZUxlYWZBcnJheSA9IG1ha2VMZWFmQXJyYXk7XG5mdW5jdGlvbiBzZWxlY3RTaWRlKGh5cGVycGxhbmUsIG9mZnNldCwgcG9pbnQsIHJhbmRvbSkge1xuICAgIHZhciBtYXJnaW4gPSBvZmZzZXQ7XG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBwb2ludC5sZW5ndGg7IGQrKykge1xuICAgICAgICBtYXJnaW4gKz0gaHlwZXJwbGFuZVtkXSAqIHBvaW50W2RdO1xuICAgIH1cbiAgICBpZiAobWFyZ2luID09PSAwKSB7XG4gICAgICAgIHZhciBzaWRlID0gdXRpbHMudGF1UmFuZEludCgyLCByYW5kb20pO1xuICAgICAgICByZXR1cm4gc2lkZTtcbiAgICB9XG4gICAgZWxzZSBpZiAobWFyZ2luID4gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHNlYXJjaEZsYXRUcmVlKHBvaW50LCB0cmVlLCByYW5kb20pIHtcbiAgICB2YXIgbm9kZSA9IDA7XG4gICAgd2hpbGUgKHRyZWUuY2hpbGRyZW5bbm9kZV1bMF0gPiAwKSB7XG4gICAgICAgIHZhciBzaWRlID0gc2VsZWN0U2lkZSh0cmVlLmh5cGVycGxhbmVzW25vZGVdLCB0cmVlLm9mZnNldHNbbm9kZV0sIHBvaW50LCByYW5kb20pO1xuICAgICAgICBpZiAoc2lkZSA9PT0gMCkge1xuICAgICAgICAgICAgbm9kZSA9IHRyZWUuY2hpbGRyZW5bbm9kZV1bMF07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlID0gdHJlZS5jaGlsZHJlbltub2RlXVsxXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW5kZXggPSAtMSAqIHRyZWUuY2hpbGRyZW5bbm9kZV1bMF07XG4gICAgcmV0dXJuIHRyZWUuaW5kaWNlc1tpbmRleF07XG59XG5leHBvcnRzLnNlYXJjaEZsYXRUcmVlID0gc2VhcmNoRmxhdFRyZWU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG52YXIgX19yZWFkID0gKHRoaXMgJiYgdGhpcy5fX3JlYWQpIHx8IGZ1bmN0aW9uIChvLCBuKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xuICAgIGlmICghbSkgcmV0dXJuIG87XG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XG4gICAgdHJ5IHtcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XG4gICAgfVxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBhcjtcbn07XG52YXIgX19zcHJlYWQgPSAodGhpcyAmJiB0aGlzLl9fc3ByZWFkKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcbiAgICByZXR1cm4gYXI7XG59O1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIHJlc3VsdFtrXSA9IG1vZFtrXTtcbiAgICByZXN1bHRbXCJkZWZhdWx0XCJdID0gbW9kO1xuICAgIHJldHVybiByZXN1bHQ7XG59O1xudmFyIF9faW1wb3J0RGVmYXVsdCA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnREZWZhdWx0KSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBcImRlZmF1bHRcIjogbW9kIH07XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGhlYXAgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vaGVhcFwiKSk7XG52YXIgbWF0cml4ID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL21hdHJpeFwiKSk7XG52YXIgbm5EZXNjZW50ID0gX19pbXBvcnRTdGFyKHJlcXVpcmUoXCIuL25uX2Rlc2NlbnRcIikpO1xudmFyIHRyZWUgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdHJlZVwiKSk7XG52YXIgdXRpbHMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdXRpbHNcIikpO1xudmFyIG1sX2xldmVuYmVyZ19tYXJxdWFyZHRfMSA9IF9faW1wb3J0RGVmYXVsdChyZXF1aXJlKFwibWwtbGV2ZW5iZXJnLW1hcnF1YXJkdFwiKSk7XG52YXIgU01PT1RIX0tfVE9MRVJBTkNFID0gMWUtNTtcbnZhciBNSU5fS19ESVNUX1NDQUxFID0gMWUtMztcbnZhciBVTUFQID0gKGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBVTUFQKHBhcmFtcykge1xuICAgICAgICBpZiAocGFyYW1zID09PSB2b2lkIDApIHsgcGFyYW1zID0ge307IH1cbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgdGhpcy5sZWFybmluZ1JhdGUgPSAxLjA7XG4gICAgICAgIHRoaXMubG9jYWxDb25uZWN0aXZpdHkgPSAxLjA7XG4gICAgICAgIHRoaXMubWluRGlzdCA9IDAuMTtcbiAgICAgICAgdGhpcy5uQ29tcG9uZW50cyA9IDI7XG4gICAgICAgIHRoaXMubkVwb2NocyA9IDA7XG4gICAgICAgIHRoaXMubk5laWdoYm9ycyA9IDE1O1xuICAgICAgICB0aGlzLm5lZ2F0aXZlU2FtcGxlUmF0ZSA9IDU7XG4gICAgICAgIHRoaXMucmFuZG9tID0gTWF0aC5yYW5kb207XG4gICAgICAgIHRoaXMucmVwdWxzaW9uU3RyZW5ndGggPSAxLjA7XG4gICAgICAgIHRoaXMuc2V0T3BNaXhSYXRpbyA9IDEuMDtcbiAgICAgICAgdGhpcy5zcHJlYWQgPSAxLjA7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtUXVldWVTaXplID0gNC4wO1xuICAgICAgICB0aGlzLnRhcmdldE1ldHJpYyA9IFwiY2F0ZWdvcmljYWxcIjtcbiAgICAgICAgdGhpcy50YXJnZXRXZWlnaHQgPSAwLjU7XG4gICAgICAgIHRoaXMudGFyZ2V0Tk5laWdoYm9ycyA9IHRoaXMubk5laWdoYm9ycztcbiAgICAgICAgdGhpcy5kaXN0YW5jZUZuID0gZXVjbGlkZWFuO1xuICAgICAgICB0aGlzLmlzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5ycEZvcmVzdCA9IFtdO1xuICAgICAgICB0aGlzLmVtYmVkZGluZyA9IFtdO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlID0gbmV3IE9wdGltaXphdGlvblN0YXRlKCk7XG4gICAgICAgIHZhciBzZXRQYXJhbSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgICAgIGlmIChwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIF90aGlzW2tleV0gPSBwYXJhbXNba2V5XTtcbiAgICAgICAgfTtcbiAgICAgICAgc2V0UGFyYW0oJ2Rpc3RhbmNlRm4nKTtcbiAgICAgICAgc2V0UGFyYW0oJ2xlYXJuaW5nUmF0ZScpO1xuICAgICAgICBzZXRQYXJhbSgnbG9jYWxDb25uZWN0aXZpdHknKTtcbiAgICAgICAgc2V0UGFyYW0oJ21pbkRpc3QnKTtcbiAgICAgICAgc2V0UGFyYW0oJ25Db21wb25lbnRzJyk7XG4gICAgICAgIHNldFBhcmFtKCduRXBvY2hzJyk7XG4gICAgICAgIHNldFBhcmFtKCduTmVpZ2hib3JzJyk7XG4gICAgICAgIHNldFBhcmFtKCduZWdhdGl2ZVNhbXBsZVJhdGUnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3JhbmRvbScpO1xuICAgICAgICBzZXRQYXJhbSgncmVwdWxzaW9uU3RyZW5ndGgnKTtcbiAgICAgICAgc2V0UGFyYW0oJ3NldE9wTWl4UmF0aW8nKTtcbiAgICAgICAgc2V0UGFyYW0oJ3NwcmVhZCcpO1xuICAgICAgICBzZXRQYXJhbSgndHJhbnNmb3JtUXVldWVTaXplJyk7XG4gICAgfVxuICAgIFVNQVAucHJvdG90eXBlLmZpdCA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpdChYKTtcbiAgICAgICAgdGhpcy5vcHRpbWl6ZUxheW91dCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5lbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5maXRBc3luYyA9IGZ1bmN0aW9uIChYLCBjYWxsYmFjaykge1xuICAgICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkgeyBjYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07IH1cbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoX2EubGFiZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplRml0KFgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFs0LCB0aGlzLm9wdGltaXplTGF5b3V0QXN5bmMoY2FsbGJhY2spXTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgICAgICAgICAgX2Euc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyLCB0aGlzLmVtYmVkZGluZ107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuc2V0U3VwZXJ2aXNlZFByb2plY3Rpb24gPSBmdW5jdGlvbiAoWSwgcGFyYW1zKSB7XG4gICAgICAgIGlmIChwYXJhbXMgPT09IHZvaWQgMCkgeyBwYXJhbXMgPSB7fTsgfVxuICAgICAgICB0aGlzLlkgPSBZO1xuICAgICAgICB0aGlzLnRhcmdldE1ldHJpYyA9IHBhcmFtcy50YXJnZXRNZXRyaWMgfHwgdGhpcy50YXJnZXRNZXRyaWM7XG4gICAgICAgIHRoaXMudGFyZ2V0V2VpZ2h0ID0gcGFyYW1zLnRhcmdldFdlaWdodCB8fCB0aGlzLnRhcmdldFdlaWdodDtcbiAgICAgICAgdGhpcy50YXJnZXROTmVpZ2hib3JzID0gcGFyYW1zLnRhcmdldE5OZWlnaGJvcnMgfHwgdGhpcy50YXJnZXROTmVpZ2hib3JzO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuc2V0UHJlY29tcHV0ZWRLTk4gPSBmdW5jdGlvbiAoa25uSW5kaWNlcywga25uRGlzdGFuY2VzKSB7XG4gICAgICAgIHRoaXMua25uSW5kaWNlcyA9IGtubkluZGljZXM7XG4gICAgICAgIHRoaXMua25uRGlzdGFuY2VzID0ga25uRGlzdGFuY2VzO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuaW5pdGlhbGl6ZUZpdCA9IGZ1bmN0aW9uIChYKSB7XG4gICAgICAgIGlmIChYLmxlbmd0aCA8PSB0aGlzLm5OZWlnaGJvcnMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vdCBlbm91Z2ggZGF0YSBwb2ludHMgKFwiICsgWC5sZW5ndGggKyBcIikgdG8gY3JlYXRlIG5OZWlnaGJvcnM6IFwiICsgdGhpcy5uTmVpZ2hib3JzICsgXCIuICBBZGQgbW9yZSBkYXRhIHBvaW50cyBvciBhZGp1c3QgdGhlIGNvbmZpZ3VyYXRpb24uXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLlggPT09IFggJiYgdGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRORXBvY2hzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5YID0gWDtcbiAgICAgICAgaWYgKCF0aGlzLmtubkluZGljZXMgJiYgIXRoaXMua25uRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICB2YXIga25uUmVzdWx0cyA9IHRoaXMubmVhcmVzdE5laWdoYm9ycyhYKTtcbiAgICAgICAgICAgIHRoaXMua25uSW5kaWNlcyA9IGtublJlc3VsdHMua25uSW5kaWNlcztcbiAgICAgICAgICAgIHRoaXMua25uRGlzdGFuY2VzID0ga25uUmVzdWx0cy5rbm5EaXN0YW5jZXM7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmFwaCA9IHRoaXMuZnV6enlTaW1wbGljaWFsU2V0KFgsIHRoaXMubk5laWdoYm9ycywgdGhpcy5zZXRPcE1peFJhdGlvKTtcbiAgICAgICAgdGhpcy5tYWtlU2VhcmNoRm5zKCk7XG4gICAgICAgIHRoaXMuc2VhcmNoR3JhcGggPSB0aGlzLm1ha2VTZWFyY2hHcmFwaChYKTtcbiAgICAgICAgdGhpcy5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbigpO1xuICAgICAgICB2YXIgX2EgPSB0aGlzLmluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nKCksIGhlYWQgPSBfYS5oZWFkLCB0YWlsID0gX2EudGFpbCwgZXBvY2hzUGVyU2FtcGxlID0gX2EuZXBvY2hzUGVyU2FtcGxlO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLmhlYWQgPSBoZWFkO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLnRhaWwgPSB0YWlsO1xuICAgICAgICB0aGlzLm9wdGltaXphdGlvblN0YXRlLmVwb2Noc1BlclNhbXBsZSA9IGVwb2Noc1BlclNhbXBsZTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplT3B0aW1pemF0aW9uKCk7XG4gICAgICAgIHRoaXMucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AoKTtcbiAgICAgICAgdGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0TkVwb2NocygpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubWFrZVNlYXJjaEZucyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gbm5EZXNjZW50Lm1ha2VJbml0aWFsaXphdGlvbnModGhpcy5kaXN0YW5jZUZuKSwgaW5pdEZyb21UcmVlID0gX2EuaW5pdEZyb21UcmVlLCBpbml0RnJvbVJhbmRvbSA9IF9hLmluaXRGcm9tUmFuZG9tO1xuICAgICAgICB0aGlzLmluaXRGcm9tVHJlZSA9IGluaXRGcm9tVHJlZTtcbiAgICAgICAgdGhpcy5pbml0RnJvbVJhbmRvbSA9IGluaXRGcm9tUmFuZG9tO1xuICAgICAgICB0aGlzLnNlYXJjaCA9IG5uRGVzY2VudC5tYWtlSW5pdGlhbGl6ZWROTlNlYXJjaCh0aGlzLmRpc3RhbmNlRm4pO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubWFrZVNlYXJjaEdyYXBoID0gZnVuY3Rpb24gKFgpIHtcbiAgICAgICAgdmFyIGtubkluZGljZXMgPSB0aGlzLmtubkluZGljZXM7XG4gICAgICAgIHZhciBrbm5EaXN0YW5jZXMgPSB0aGlzLmtubkRpc3RhbmNlcztcbiAgICAgICAgdmFyIGRpbXMgPSBbWC5sZW5ndGgsIFgubGVuZ3RoXTtcbiAgICAgICAgdmFyIHNlYXJjaEdyYXBoID0gbmV3IG1hdHJpeC5TcGFyc2VNYXRyaXgoW10sIFtdLCBbXSwgZGltcyk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwga25uSW5kaWNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGtubiA9IGtubkluZGljZXNbaV07XG4gICAgICAgICAgICB2YXIgZGlzdGFuY2VzID0ga25uRGlzdGFuY2VzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBrbm4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgbmVpZ2hib3IgPSBrbm5bal07XG4gICAgICAgICAgICAgICAgdmFyIGRpc3RhbmNlID0gZGlzdGFuY2VzW2pdO1xuICAgICAgICAgICAgICAgIGlmIChkaXN0YW5jZSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoR3JhcGguc2V0KGksIG5laWdoYm9yLCBkaXN0YW5jZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciB0cmFuc3Bvc2UgPSBtYXRyaXgudHJhbnNwb3NlKHNlYXJjaEdyYXBoKTtcbiAgICAgICAgcmV0dXJuIG1hdHJpeC5tYXhpbXVtKHNlYXJjaEdyYXBoLCB0cmFuc3Bvc2UpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUudHJhbnNmb3JtID0gZnVuY3Rpb24gKHRvVHJhbnNmb3JtKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciByYXdEYXRhID0gdGhpcy5YO1xuICAgICAgICBpZiAocmF3RGF0YSA9PT0gdW5kZWZpbmVkIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGRhdGEgaGFzIGJlZW4gZml0LicpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBuTmVpZ2hib3JzID0gTWF0aC5mbG9vcih0aGlzLm5OZWlnaGJvcnMgKiB0aGlzLnRyYW5zZm9ybVF1ZXVlU2l6ZSk7XG4gICAgICAgIG5OZWlnaGJvcnMgPSBNYXRoLm1pbihyYXdEYXRhLmxlbmd0aCwgbk5laWdoYm9ycyk7XG4gICAgICAgIHZhciBpbml0ID0gbm5EZXNjZW50LmluaXRpYWxpemVTZWFyY2godGhpcy5ycEZvcmVzdCwgcmF3RGF0YSwgdG9UcmFuc2Zvcm0sIG5OZWlnaGJvcnMsIHRoaXMuaW5pdEZyb21SYW5kb20sIHRoaXMuaW5pdEZyb21UcmVlLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzLnNlYXJjaChyYXdEYXRhLCB0aGlzLnNlYXJjaEdyYXBoLCBpbml0LCB0b1RyYW5zZm9ybSk7XG4gICAgICAgIHZhciBfYSA9IGhlYXAuZGVoZWFwU29ydChyZXN1bHQpLCBpbmRpY2VzID0gX2EuaW5kaWNlcywgZGlzdGFuY2VzID0gX2Eud2VpZ2h0cztcbiAgICAgICAgaW5kaWNlcyA9IGluZGljZXMubWFwKGZ1bmN0aW9uICh4KSB7IHJldHVybiB4LnNsaWNlKDAsIF90aGlzLm5OZWlnaGJvcnMpOyB9KTtcbiAgICAgICAgZGlzdGFuY2VzID0gZGlzdGFuY2VzLm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5zbGljZSgwLCBfdGhpcy5uTmVpZ2hib3JzKTsgfSk7XG4gICAgICAgIHZhciBhZGp1c3RlZExvY2FsQ29ubmVjdGl2aXR5ID0gTWF0aC5tYXgoMCwgdGhpcy5sb2NhbENvbm5lY3Rpdml0eSAtIDEpO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLnNtb290aEtOTkRpc3RhbmNlKGRpc3RhbmNlcywgdGhpcy5uTmVpZ2hib3JzLCBhZGp1c3RlZExvY2FsQ29ubmVjdGl2aXR5KSwgc2lnbWFzID0gX2Iuc2lnbWFzLCByaG9zID0gX2IucmhvcztcbiAgICAgICAgdmFyIF9jID0gdGhpcy5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyhpbmRpY2VzLCBkaXN0YW5jZXMsIHNpZ21hcywgcmhvcyksIHJvd3MgPSBfYy5yb3dzLCBjb2xzID0gX2MuY29scywgdmFscyA9IF9jLnZhbHM7XG4gICAgICAgIHZhciBzaXplID0gW3RvVHJhbnNmb3JtLmxlbmd0aCwgcmF3RGF0YS5sZW5ndGhdO1xuICAgICAgICB2YXIgZ3JhcGggPSBuZXcgbWF0cml4LlNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBzaXplKTtcbiAgICAgICAgdmFyIG5vcm1lZCA9IG1hdHJpeC5ub3JtYWxpemUoZ3JhcGgsIFwibDFcIik7XG4gICAgICAgIHZhciBjc3JNYXRyaXggPSBtYXRyaXguZ2V0Q1NSKG5vcm1lZCk7XG4gICAgICAgIHZhciBuUG9pbnRzID0gdG9UcmFuc2Zvcm0ubGVuZ3RoO1xuICAgICAgICB2YXIgZUluZGljZXMgPSB1dGlscy5yZXNoYXBlMmQoY3NyTWF0cml4LmluZGljZXMsIG5Qb2ludHMsIHRoaXMubk5laWdoYm9ycyk7XG4gICAgICAgIHZhciBlV2VpZ2h0cyA9IHV0aWxzLnJlc2hhcGUyZChjc3JNYXRyaXgudmFsdWVzLCBuUG9pbnRzLCB0aGlzLm5OZWlnaGJvcnMpO1xuICAgICAgICB2YXIgZW1iZWRkaW5nID0gaW5pdFRyYW5zZm9ybShlSW5kaWNlcywgZVdlaWdodHMsIHRoaXMuZW1iZWRkaW5nKTtcbiAgICAgICAgdmFyIG5FcG9jaHMgPSB0aGlzLm5FcG9jaHNcbiAgICAgICAgICAgID8gdGhpcy5uRXBvY2hzIC8gM1xuICAgICAgICAgICAgOiBncmFwaC5uUm93cyA8PSAxMDAwMFxuICAgICAgICAgICAgICAgID8gMTAwXG4gICAgICAgICAgICAgICAgOiAzMDtcbiAgICAgICAgdmFyIGdyYXBoTWF4ID0gZ3JhcGhcbiAgICAgICAgICAgIC5nZXRWYWx1ZXMoKVxuICAgICAgICAgICAgLnJlZHVjZShmdW5jdGlvbiAobWF4LCB2YWwpIHsgcmV0dXJuICh2YWwgPiBtYXggPyB2YWwgOiBtYXgpOyB9LCAwKTtcbiAgICAgICAgZ3JhcGggPSBncmFwaC5tYXAoZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiAodmFsdWUgPCBncmFwaE1heCAvIG5FcG9jaHMgPyAwIDogdmFsdWUpOyB9KTtcbiAgICAgICAgZ3JhcGggPSBtYXRyaXguZWxpbWluYXRlWmVyb3MoZ3JhcGgpO1xuICAgICAgICB2YXIgZXBvY2hzUGVyU2FtcGxlID0gdGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKGdyYXBoLmdldFZhbHVlcygpLCBuRXBvY2hzKTtcbiAgICAgICAgdmFyIGhlYWQgPSBncmFwaC5nZXRSb3dzKCk7XG4gICAgICAgIHZhciB0YWlsID0gZ3JhcGguZ2V0Q29scygpO1xuICAgICAgICB0aGlzLmFzc2lnbk9wdGltaXphdGlvblN0YXRlUGFyYW1ldGVycyh7XG4gICAgICAgICAgICBoZWFkRW1iZWRkaW5nOiBlbWJlZGRpbmcsXG4gICAgICAgICAgICB0YWlsRW1iZWRkaW5nOiB0aGlzLmVtYmVkZGluZyxcbiAgICAgICAgICAgIGhlYWQ6IGhlYWQsXG4gICAgICAgICAgICB0YWlsOiB0YWlsLFxuICAgICAgICAgICAgY3VycmVudEVwb2NoOiAwLFxuICAgICAgICAgICAgbkVwb2NoczogbkVwb2NocyxcbiAgICAgICAgICAgIG5WZXJ0aWNlczogZ3JhcGguZ2V0RGltcygpWzFdLFxuICAgICAgICAgICAgZXBvY2hzUGVyU2FtcGxlOiBlcG9jaHNQZXJTYW1wbGUsXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnByZXBhcmVGb3JPcHRpbWl6YXRpb25Mb29wKCk7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGltaXplTGF5b3V0KCk7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5wcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgWSA9IF9hLlksIFggPSBfYS5YO1xuICAgICAgICBpZiAoWSkge1xuICAgICAgICAgICAgaWYgKFkubGVuZ3RoICE9PSBYLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTGVuZ3RoIG9mIFggYW5kIHkgbXVzdCBiZSBlcXVhbCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudGFyZ2V0TWV0cmljID09PSBcImNhdGVnb3JpY2FsXCIpIHtcbiAgICAgICAgICAgICAgICB2YXIgbHQgPSB0aGlzLnRhcmdldFdlaWdodCA8IDEuMDtcbiAgICAgICAgICAgICAgICB2YXIgZmFyRGlzdCA9IGx0ID8gMi41ICogKDEuMCAvICgxLjAgLSB0aGlzLnRhcmdldFdlaWdodCkpIDogMS4wZTEyO1xuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGggPSB0aGlzLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbih0aGlzLmdyYXBoLCBZLCBmYXJEaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuc3RlcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRFcG9jaCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICBpZiAoY3VycmVudEVwb2NoIDwgdGhpcy5nZXRORXBvY2hzKCkpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW1pemVMYXlvdXRTdGVwKGN1cnJlbnRFcG9jaCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuZ2V0RW1iZWRkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbWJlZGRpbmc7XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5uZWFyZXN0TmVpZ2hib3JzID0gZnVuY3Rpb24gKFgpIHtcbiAgICAgICAgdmFyIF9hID0gdGhpcywgZGlzdGFuY2VGbiA9IF9hLmRpc3RhbmNlRm4sIG5OZWlnaGJvcnMgPSBfYS5uTmVpZ2hib3JzO1xuICAgICAgICB2YXIgbG9nMiA9IGZ1bmN0aW9uIChuKSB7IHJldHVybiBNYXRoLmxvZyhuKSAvIE1hdGgubG9nKDIpOyB9O1xuICAgICAgICB2YXIgbWV0cmljTk5EZXNjZW50ID0gbm5EZXNjZW50Lm1ha2VOTkRlc2NlbnQoZGlzdGFuY2VGbiwgdGhpcy5yYW5kb20pO1xuICAgICAgICB2YXIgcm91bmQgPSBmdW5jdGlvbiAobikge1xuICAgICAgICAgICAgcmV0dXJuIG4gPT09IDAuNSA/IDAgOiBNYXRoLnJvdW5kKG4pO1xuICAgICAgICB9O1xuICAgICAgICB2YXIgblRyZWVzID0gNSArIE1hdGguZmxvb3Iocm91bmQoTWF0aC5wb3coWC5sZW5ndGgsIDAuNSkgLyAyMC4wKSk7XG4gICAgICAgIHZhciBuSXRlcnMgPSBNYXRoLm1heCg1LCBNYXRoLmZsb29yKE1hdGgucm91bmQobG9nMihYLmxlbmd0aCkpKSk7XG4gICAgICAgIHRoaXMucnBGb3Jlc3QgPSB0cmVlLm1ha2VGb3Jlc3QoWCwgbk5laWdoYm9ycywgblRyZWVzLCB0aGlzLnJhbmRvbSk7XG4gICAgICAgIHZhciBsZWFmQXJyYXkgPSB0cmVlLm1ha2VMZWFmQXJyYXkodGhpcy5ycEZvcmVzdCk7XG4gICAgICAgIHZhciBfYiA9IG1ldHJpY05ORGVzY2VudChYLCBsZWFmQXJyYXksIG5OZWlnaGJvcnMsIG5JdGVycyksIGluZGljZXMgPSBfYi5pbmRpY2VzLCB3ZWlnaHRzID0gX2Iud2VpZ2h0cztcbiAgICAgICAgcmV0dXJuIHsga25uSW5kaWNlczogaW5kaWNlcywga25uRGlzdGFuY2VzOiB3ZWlnaHRzIH07XG4gICAgfTtcbiAgICBVTUFQLnByb3RvdHlwZS5mdXp6eVNpbXBsaWNpYWxTZXQgPSBmdW5jdGlvbiAoWCwgbk5laWdoYm9ycywgc2V0T3BNaXhSYXRpbykge1xuICAgICAgICBpZiAoc2V0T3BNaXhSYXRpbyA9PT0gdm9pZCAwKSB7IHNldE9wTWl4UmF0aW8gPSAxLjA7IH1cbiAgICAgICAgdmFyIF9hID0gdGhpcywgX2IgPSBfYS5rbm5JbmRpY2VzLCBrbm5JbmRpY2VzID0gX2IgPT09IHZvaWQgMCA/IFtdIDogX2IsIF9jID0gX2Eua25uRGlzdGFuY2VzLCBrbm5EaXN0YW5jZXMgPSBfYyA9PT0gdm9pZCAwID8gW10gOiBfYywgbG9jYWxDb25uZWN0aXZpdHkgPSBfYS5sb2NhbENvbm5lY3Rpdml0eTtcbiAgICAgICAgdmFyIF9kID0gdGhpcy5zbW9vdGhLTk5EaXN0YW5jZShrbm5EaXN0YW5jZXMsIG5OZWlnaGJvcnMsIGxvY2FsQ29ubmVjdGl2aXR5KSwgc2lnbWFzID0gX2Quc2lnbWFzLCByaG9zID0gX2QucmhvcztcbiAgICAgICAgdmFyIF9lID0gdGhpcy5jb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3Rocyhrbm5JbmRpY2VzLCBrbm5EaXN0YW5jZXMsIHNpZ21hcywgcmhvcyksIHJvd3MgPSBfZS5yb3dzLCBjb2xzID0gX2UuY29scywgdmFscyA9IF9lLnZhbHM7XG4gICAgICAgIHZhciBzaXplID0gW1gubGVuZ3RoLCBYLmxlbmd0aF07XG4gICAgICAgIHZhciBzcGFyc2VNYXRyaXggPSBuZXcgbWF0cml4LlNwYXJzZU1hdHJpeChyb3dzLCBjb2xzLCB2YWxzLCBzaXplKTtcbiAgICAgICAgdmFyIHRyYW5zcG9zZSA9IG1hdHJpeC50cmFuc3Bvc2Uoc3BhcnNlTWF0cml4KTtcbiAgICAgICAgdmFyIHByb2RNYXRyaXggPSBtYXRyaXgucGFpcndpc2VNdWx0aXBseShzcGFyc2VNYXRyaXgsIHRyYW5zcG9zZSk7XG4gICAgICAgIHZhciBhID0gbWF0cml4LnN1YnRyYWN0KG1hdHJpeC5hZGQoc3BhcnNlTWF0cml4LCB0cmFuc3Bvc2UpLCBwcm9kTWF0cml4KTtcbiAgICAgICAgdmFyIGIgPSBtYXRyaXgubXVsdGlwbHlTY2FsYXIoYSwgc2V0T3BNaXhSYXRpbyk7XG4gICAgICAgIHZhciBjID0gbWF0cml4Lm11bHRpcGx5U2NhbGFyKHByb2RNYXRyaXgsIDEuMCAtIHNldE9wTWl4UmF0aW8pO1xuICAgICAgICB2YXIgcmVzdWx0ID0gbWF0cml4LmFkZChiLCBjKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmNhdGVnb3JpY2FsU2ltcGxpY2lhbFNldEludGVyc2VjdGlvbiA9IGZ1bmN0aW9uIChzaW1wbGljaWFsU2V0LCB0YXJnZXQsIGZhckRpc3QsIHVua25vd25EaXN0KSB7XG4gICAgICAgIGlmICh1bmtub3duRGlzdCA9PT0gdm9pZCAwKSB7IHVua25vd25EaXN0ID0gMS4wOyB9XG4gICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBmYXN0SW50ZXJzZWN0aW9uKHNpbXBsaWNpYWxTZXQsIHRhcmdldCwgdW5rbm93bkRpc3QsIGZhckRpc3QpO1xuICAgICAgICBpbnRlcnNlY3Rpb24gPSBtYXRyaXguZWxpbWluYXRlWmVyb3MoaW50ZXJzZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHJlc2V0TG9jYWxDb25uZWN0aXZpdHkoaW50ZXJzZWN0aW9uKTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLnNtb290aEtOTkRpc3RhbmNlID0gZnVuY3Rpb24gKGRpc3RhbmNlcywgaywgbG9jYWxDb25uZWN0aXZpdHksIG5JdGVyLCBiYW5kd2lkdGgpIHtcbiAgICAgICAgaWYgKGxvY2FsQ29ubmVjdGl2aXR5ID09PSB2b2lkIDApIHsgbG9jYWxDb25uZWN0aXZpdHkgPSAxLjA7IH1cbiAgICAgICAgaWYgKG5JdGVyID09PSB2b2lkIDApIHsgbkl0ZXIgPSA2NDsgfVxuICAgICAgICBpZiAoYmFuZHdpZHRoID09PSB2b2lkIDApIHsgYmFuZHdpZHRoID0gMS4wOyB9XG4gICAgICAgIHZhciB0YXJnZXQgPSAoTWF0aC5sb2coaykgLyBNYXRoLmxvZygyKSkgKiBiYW5kd2lkdGg7XG4gICAgICAgIHZhciByaG8gPSB1dGlscy56ZXJvcyhkaXN0YW5jZXMubGVuZ3RoKTtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHV0aWxzLnplcm9zKGRpc3RhbmNlcy5sZW5ndGgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3RhbmNlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGxvID0gMC4wO1xuICAgICAgICAgICAgdmFyIGhpID0gSW5maW5pdHk7XG4gICAgICAgICAgICB2YXIgbWlkID0gMS4wO1xuICAgICAgICAgICAgdmFyIGl0aERpc3RhbmNlcyA9IGRpc3RhbmNlc1tpXTtcbiAgICAgICAgICAgIHZhciBub25aZXJvRGlzdHMgPSBpdGhEaXN0YW5jZXMuZmlsdGVyKGZ1bmN0aW9uIChkKSB7IHJldHVybiBkID4gMC4wOyB9KTtcbiAgICAgICAgICAgIGlmIChub25aZXJvRGlzdHMubGVuZ3RoID49IGxvY2FsQ29ubmVjdGl2aXR5KSB7XG4gICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gTWF0aC5mbG9vcihsb2NhbENvbm5lY3Rpdml0eSk7XG4gICAgICAgICAgICAgICAgdmFyIGludGVycG9sYXRpb24gPSBsb2NhbENvbm5lY3Rpdml0eSAtIGluZGV4O1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgcmhvW2ldID0gbm9uWmVyb0Rpc3RzW2luZGV4IC0gMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnBvbGF0aW9uID4gU01PT1RIX0tfVE9MRVJBTkNFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByaG9baV0gKz1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnBvbGF0aW9uICogKG5vblplcm9EaXN0c1tpbmRleF0gLSBub25aZXJvRGlzdHNbaW5kZXggLSAxXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJob1tpXSA9IGludGVycG9sYXRpb24gKiBub25aZXJvRGlzdHNbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAobm9uWmVyb0Rpc3RzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICByaG9baV0gPSB1dGlscy5tYXgobm9uWmVyb0Rpc3RzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbkl0ZXI7IG4rKykge1xuICAgICAgICAgICAgICAgIHZhciBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAxOyBqIDwgZGlzdGFuY2VzW2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gZGlzdGFuY2VzW2ldW2pdIC0gcmhvW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gTWF0aC5leHAoLShkIC8gbWlkKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwc3VtICs9IDEuMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocHN1bSAtIHRhcmdldCkgPCBTTU9PVEhfS19UT0xFUkFOQ0UpIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwc3VtID4gdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIGhpID0gbWlkO1xuICAgICAgICAgICAgICAgICAgICBtaWQgPSAobG8gKyBoaSkgLyAyLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBsbyA9IG1pZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhpID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWlkICo9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtaWQgPSAobG8gKyBoaSkgLyAyLjA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBtaWQ7XG4gICAgICAgICAgICBpZiAocmhvW2ldID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1lYW5JdGhEaXN0YW5jZXMgPSB1dGlscy5tZWFuKGl0aERpc3RhbmNlcyk7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFtpXSA8IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuSXRoRGlzdGFuY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtpXSA9IE1JTl9LX0RJU1RfU0NBTEUgKiBtZWFuSXRoRGlzdGFuY2VzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhciBtZWFuRGlzdGFuY2VzID0gdXRpbHMubWVhbihkaXN0YW5jZXMubWFwKHV0aWxzLm1lYW4pKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0W2ldIDwgTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5EaXN0YW5jZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gTUlOX0tfRElTVF9TQ0FMRSAqIG1lYW5EaXN0YW5jZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHNpZ21hczogcmVzdWx0LCByaG9zOiByaG8gfTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmNvbXB1dGVNZW1iZXJzaGlwU3RyZW5ndGhzID0gZnVuY3Rpb24gKGtubkluZGljZXMsIGtubkRpc3RhbmNlcywgc2lnbWFzLCByaG9zKSB7XG4gICAgICAgIHZhciBuU2FtcGxlcyA9IGtubkluZGljZXMubGVuZ3RoO1xuICAgICAgICB2YXIgbk5laWdoYm9ycyA9IGtubkluZGljZXNbMF0ubGVuZ3RoO1xuICAgICAgICB2YXIgcm93cyA9IHV0aWxzLnplcm9zKG5TYW1wbGVzICogbk5laWdoYm9ycyk7XG4gICAgICAgIHZhciBjb2xzID0gdXRpbHMuemVyb3MoblNhbXBsZXMgKiBuTmVpZ2hib3JzKTtcbiAgICAgICAgdmFyIHZhbHMgPSB1dGlscy56ZXJvcyhuU2FtcGxlcyAqIG5OZWlnaGJvcnMpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5TYW1wbGVzOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbk5laWdoYm9yczsgaisrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHZhbCA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKGtubkluZGljZXNbaV1bal0gPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoa25uSW5kaWNlc1tpXVtqXSA9PT0gaSkge1xuICAgICAgICAgICAgICAgICAgICB2YWwgPSAwLjA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGtubkRpc3RhbmNlc1tpXVtqXSAtIHJob3NbaV0gPD0gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IDEuMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguZXhwKC0oKGtubkRpc3RhbmNlc1tpXVtqXSAtIHJob3NbaV0pIC8gc2lnbWFzW2ldKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJvd3NbaSAqIG5OZWlnaGJvcnMgKyBqXSA9IGk7XG4gICAgICAgICAgICAgICAgY29sc1tpICogbk5laWdoYm9ycyArIGpdID0ga25uSW5kaWNlc1tpXVtqXTtcbiAgICAgICAgICAgICAgICB2YWxzW2kgKiBuTmVpZ2hib3JzICsgal0gPSB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcm93czogcm93cywgY29sczogY29scywgdmFsczogdmFscyB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuaW5pdGlhbGl6ZVNpbXBsaWNpYWxTZXRFbWJlZGRpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHZhciBuRXBvY2hzID0gdGhpcy5nZXRORXBvY2hzKCk7XG4gICAgICAgIHZhciBuQ29tcG9uZW50cyA9IHRoaXMubkNvbXBvbmVudHM7XG4gICAgICAgIHZhciBncmFwaFZhbHVlcyA9IHRoaXMuZ3JhcGguZ2V0VmFsdWVzKCk7XG4gICAgICAgIHZhciBncmFwaE1heCA9IDA7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZ3JhcGhWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGdyYXBoVmFsdWVzW2ldO1xuICAgICAgICAgICAgaWYgKGdyYXBoTWF4IDwgZ3JhcGhWYWx1ZXNbaV0pIHtcbiAgICAgICAgICAgICAgICBncmFwaE1heCA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGgubWFwKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlIDwgZ3JhcGhNYXggLyBuRXBvY2hzKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVtYmVkZGluZyA9IHV0aWxzLnplcm9zKGdyYXBoLm5Sb3dzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHV0aWxzLnplcm9zKG5Db21wb25lbnRzKS5tYXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1dGlscy50YXVSYW5kKF90aGlzLnJhbmRvbSkgKiAyMCArIC0xMDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIHdlaWdodHMgPSBbXTtcbiAgICAgICAgdmFyIGhlYWQgPSBbXTtcbiAgICAgICAgdmFyIHRhaWwgPSBbXTtcbiAgICAgICAgdmFyIHJvd0NvbFZhbHVlcyA9IGdyYXBoLmdldEFsbCgpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJvd0NvbFZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdmFyIGVudHJ5ID0gcm93Q29sVmFsdWVzW2ldO1xuICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgd2VpZ2h0cy5wdXNoKGVudHJ5LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB0YWlsLnB1c2goZW50cnkucm93KTtcbiAgICAgICAgICAgICAgICBoZWFkLnB1c2goZW50cnkuY29sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB2YXIgZXBvY2hzUGVyU2FtcGxlID0gdGhpcy5tYWtlRXBvY2hzUGVyU2FtcGxlKHdlaWdodHMsIG5FcG9jaHMpO1xuICAgICAgICByZXR1cm4geyBoZWFkOiBoZWFkLCB0YWlsOiB0YWlsLCBlcG9jaHNQZXJTYW1wbGU6IGVwb2Noc1BlclNhbXBsZSB9O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUubWFrZUVwb2Noc1BlclNhbXBsZSA9IGZ1bmN0aW9uICh3ZWlnaHRzLCBuRXBvY2hzKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSB1dGlscy5maWxsZWQod2VpZ2h0cy5sZW5ndGgsIC0xLjApO1xuICAgICAgICB2YXIgbWF4ID0gdXRpbHMubWF4KHdlaWdodHMpO1xuICAgICAgICB2YXIgblNhbXBsZXMgPSB3ZWlnaHRzLm1hcChmdW5jdGlvbiAodykgeyByZXR1cm4gKHcgLyBtYXgpICogbkVwb2NoczsgfSk7XG4gICAgICAgIG5TYW1wbGVzLmZvckVhY2goZnVuY3Rpb24gKG4sIGkpIHtcbiAgICAgICAgICAgIGlmIChuID4gMClcbiAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBuRXBvY2hzIC8gblNhbXBsZXNbaV07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgc3RhdGUpO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUucHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfYSA9IHRoaXMsIHJlcHVsc2lvblN0cmVuZ3RoID0gX2EucmVwdWxzaW9uU3RyZW5ndGgsIGxlYXJuaW5nUmF0ZSA9IF9hLmxlYXJuaW5nUmF0ZSwgbmVnYXRpdmVTYW1wbGVSYXRlID0gX2EubmVnYXRpdmVTYW1wbGVSYXRlO1xuICAgICAgICB2YXIgX2IgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLCBlcG9jaHNQZXJTYW1wbGUgPSBfYi5lcG9jaHNQZXJTYW1wbGUsIGhlYWRFbWJlZGRpbmcgPSBfYi5oZWFkRW1iZWRkaW5nLCB0YWlsRW1iZWRkaW5nID0gX2IudGFpbEVtYmVkZGluZztcbiAgICAgICAgdmFyIGRpbSA9IGhlYWRFbWJlZGRpbmdbMF0ubGVuZ3RoO1xuICAgICAgICB2YXIgbW92ZU90aGVyID0gaGVhZEVtYmVkZGluZy5sZW5ndGggPT09IHRhaWxFbWJlZGRpbmcubGVuZ3RoO1xuICAgICAgICB2YXIgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUgPSBlcG9jaHNQZXJTYW1wbGUubWFwKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlIC8gbmVnYXRpdmVTYW1wbGVSYXRlOyB9KTtcbiAgICAgICAgdmFyIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUgPSBfX3NwcmVhZChlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSk7XG4gICAgICAgIHZhciBlcG9jaE9mTmV4dFNhbXBsZSA9IF9fc3ByZWFkKGVwb2Noc1BlclNhbXBsZSk7XG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0U2FtcGxlOiBlcG9jaE9mTmV4dFNhbXBsZSxcbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGU6IGVwb2NoT2ZOZXh0TmVnYXRpdmVTYW1wbGUsXG4gICAgICAgICAgICBlcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZTogZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUsXG4gICAgICAgICAgICBtb3ZlT3RoZXI6IG1vdmVPdGhlcixcbiAgICAgICAgICAgIGluaXRpYWxBbHBoYTogbGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgYWxwaGE6IGxlYXJuaW5nUmF0ZSxcbiAgICAgICAgICAgIGdhbW1hOiByZXB1bHNpb25TdHJlbmd0aCxcbiAgICAgICAgICAgIGRpbTogZGltLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmluaXRpYWxpemVPcHRpbWl6YXRpb24gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBoZWFkRW1iZWRkaW5nID0gdGhpcy5lbWJlZGRpbmc7XG4gICAgICAgIHZhciB0YWlsRW1iZWRkaW5nID0gdGhpcy5lbWJlZGRpbmc7XG4gICAgICAgIHZhciBfYSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIGhlYWQgPSBfYS5oZWFkLCB0YWlsID0gX2EudGFpbCwgZXBvY2hzUGVyU2FtcGxlID0gX2EuZXBvY2hzUGVyU2FtcGxlO1xuICAgICAgICB2YXIgbkVwb2NocyA9IHRoaXMuZ2V0TkVwb2NocygpO1xuICAgICAgICB2YXIgblZlcnRpY2VzID0gdGhpcy5ncmFwaC5uQ29scztcbiAgICAgICAgdmFyIF9iID0gZmluZEFCUGFyYW1zKHRoaXMuc3ByZWFkLCB0aGlzLm1pbkRpc3QpLCBhID0gX2IuYSwgYiA9IF9iLmI7XG4gICAgICAgIHRoaXMuYXNzaWduT3B0aW1pemF0aW9uU3RhdGVQYXJhbWV0ZXJzKHtcbiAgICAgICAgICAgIGhlYWRFbWJlZGRpbmc6IGhlYWRFbWJlZGRpbmcsXG4gICAgICAgICAgICB0YWlsRW1iZWRkaW5nOiB0YWlsRW1iZWRkaW5nLFxuICAgICAgICAgICAgaGVhZDogaGVhZCxcbiAgICAgICAgICAgIHRhaWw6IHRhaWwsXG4gICAgICAgICAgICBlcG9jaHNQZXJTYW1wbGU6IGVwb2Noc1BlclNhbXBsZSxcbiAgICAgICAgICAgIGE6IGEsXG4gICAgICAgICAgICBiOiBiLFxuICAgICAgICAgICAgbkVwb2NoczogbkVwb2NocyxcbiAgICAgICAgICAgIG5WZXJ0aWNlczogblZlcnRpY2VzLFxuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm9wdGltaXplTGF5b3V0U3RlcCA9IGZ1bmN0aW9uIChuKSB7XG4gICAgICAgIHZhciBvcHRpbWl6YXRpb25TdGF0ZSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGU7XG4gICAgICAgIHZhciBoZWFkID0gb3B0aW1pemF0aW9uU3RhdGUuaGVhZCwgdGFpbCA9IG9wdGltaXphdGlvblN0YXRlLnRhaWwsIGhlYWRFbWJlZGRpbmcgPSBvcHRpbWl6YXRpb25TdGF0ZS5oZWFkRW1iZWRkaW5nLCB0YWlsRW1iZWRkaW5nID0gb3B0aW1pemF0aW9uU3RhdGUudGFpbEVtYmVkZGluZywgZXBvY2hzUGVyU2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hzUGVyU2FtcGxlLCBlcG9jaE9mTmV4dFNhbXBsZSA9IG9wdGltaXphdGlvblN0YXRlLmVwb2NoT2ZOZXh0U2FtcGxlLCBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlID0gb3B0aW1pemF0aW9uU3RhdGUuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSwgZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUgPSBvcHRpbWl6YXRpb25TdGF0ZS5lcG9jaHNQZXJOZWdhdGl2ZVNhbXBsZSwgbW92ZU90aGVyID0gb3B0aW1pemF0aW9uU3RhdGUubW92ZU90aGVyLCBpbml0aWFsQWxwaGEgPSBvcHRpbWl6YXRpb25TdGF0ZS5pbml0aWFsQWxwaGEsIGFscGhhID0gb3B0aW1pemF0aW9uU3RhdGUuYWxwaGEsIGdhbW1hID0gb3B0aW1pemF0aW9uU3RhdGUuZ2FtbWEsIGEgPSBvcHRpbWl6YXRpb25TdGF0ZS5hLCBiID0gb3B0aW1pemF0aW9uU3RhdGUuYiwgZGltID0gb3B0aW1pemF0aW9uU3RhdGUuZGltLCBuRXBvY2hzID0gb3B0aW1pemF0aW9uU3RhdGUubkVwb2NocywgblZlcnRpY2VzID0gb3B0aW1pemF0aW9uU3RhdGUublZlcnRpY2VzO1xuICAgICAgICB2YXIgY2xpcFZhbHVlID0gNC4wO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwb2Noc1BlclNhbXBsZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGVwb2NoT2ZOZXh0U2FtcGxlW2ldID4gbikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGogPSBoZWFkW2ldO1xuICAgICAgICAgICAgdmFyIGsgPSB0YWlsW2ldO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnQgPSBoZWFkRW1iZWRkaW5nW2pdO1xuICAgICAgICAgICAgdmFyIG90aGVyID0gdGFpbEVtYmVkZGluZ1trXTtcbiAgICAgICAgICAgIHZhciBkaXN0U3F1YXJlZCA9IHJEaXN0KGN1cnJlbnQsIG90aGVyKTtcbiAgICAgICAgICAgIHZhciBncmFkQ29lZmYgPSAwO1xuICAgICAgICAgICAgaWYgKGRpc3RTcXVhcmVkID4gMCkge1xuICAgICAgICAgICAgICAgIGdyYWRDb2VmZiA9IC0yLjAgKiBhICogYiAqIE1hdGgucG93KGRpc3RTcXVhcmVkLCBiIC0gMS4wKTtcbiAgICAgICAgICAgICAgICBncmFkQ29lZmYgLz0gYSAqIE1hdGgucG93KGRpc3RTcXVhcmVkLCBiKSArIDEuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgZ3JhZEQgPSBjbGlwKGdyYWRDb2VmZiAqIChjdXJyZW50W2RdIC0gb3RoZXJbZF0pLCBjbGlwVmFsdWUpO1xuICAgICAgICAgICAgICAgIGN1cnJlbnRbZF0gKz0gZ3JhZEQgKiBhbHBoYTtcbiAgICAgICAgICAgICAgICBpZiAobW92ZU90aGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIG90aGVyW2RdICs9IC1ncmFkRCAqIGFscGhhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVwb2NoT2ZOZXh0U2FtcGxlW2ldICs9IGVwb2Noc1BlclNhbXBsZVtpXTtcbiAgICAgICAgICAgIHZhciBuTmVnU2FtcGxlcyA9IE1hdGguZmxvb3IoKG4gLSBlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlW2ldKSAvIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlW2ldKTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgbk5lZ1NhbXBsZXM7IHArKykge1xuICAgICAgICAgICAgICAgIHZhciBrXzEgPSB1dGlscy50YXVSYW5kSW50KG5WZXJ0aWNlcywgdGhpcy5yYW5kb20pO1xuICAgICAgICAgICAgICAgIHZhciBvdGhlcl8xID0gdGFpbEVtYmVkZGluZ1trXzFdO1xuICAgICAgICAgICAgICAgIHZhciBkaXN0U3F1YXJlZF8xID0gckRpc3QoY3VycmVudCwgb3RoZXJfMSk7XG4gICAgICAgICAgICAgICAgdmFyIGdyYWRDb2VmZl8xID0gMC4wO1xuICAgICAgICAgICAgICAgIGlmIChkaXN0U3F1YXJlZF8xID4gMC4wKSB7XG4gICAgICAgICAgICAgICAgICAgIGdyYWRDb2VmZl8xID0gMi4wICogZ2FtbWEgKiBiO1xuICAgICAgICAgICAgICAgICAgICBncmFkQ29lZmZfMSAvPVxuICAgICAgICAgICAgICAgICAgICAgICAgKDAuMDAxICsgZGlzdFNxdWFyZWRfMSkgKiAoYSAqIE1hdGgucG93KGRpc3RTcXVhcmVkXzEsIGIpICsgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGogPT09IGtfMSkge1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgZ3JhZEQgPSA0LjA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChncmFkQ29lZmZfMSA+IDAuMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ3JhZEQgPSBjbGlwKGdyYWRDb2VmZl8xICogKGN1cnJlbnRbZF0gLSBvdGhlcl8xW2RdKSwgY2xpcFZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50W2RdICs9IGdyYWREICogYWxwaGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZVtpXSArPSBuTmVnU2FtcGxlcyAqIGVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlW2ldO1xuICAgICAgICB9XG4gICAgICAgIG9wdGltaXphdGlvblN0YXRlLmFscGhhID0gaW5pdGlhbEFscGhhICogKDEuMCAtIG4gLyBuRXBvY2hzKTtcbiAgICAgICAgb3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoICs9IDE7XG4gICAgICAgIHJldHVybiBoZWFkRW1iZWRkaW5nO1xuICAgIH07XG4gICAgVU1BUC5wcm90b3R5cGUub3B0aW1pemVMYXlvdXRBc3luYyA9IGZ1bmN0aW9uIChlcG9jaENhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChlcG9jaENhbGxiYWNrID09PSB2b2lkIDApIHsgZXBvY2hDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH07IH1cbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICAgIHZhciBzdGVwID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gX19hd2FpdGVyKF90aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBfYSwgbkVwb2NocywgY3VycmVudEVwb2NoLCBlcG9jaENvbXBsZXRlZCwgc2hvdWxkU3RvcCwgaXNGaW5pc2hlZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX19nZW5lcmF0b3IodGhpcywgZnVuY3Rpb24gKF9iKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfYSA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUsIG5FcG9jaHMgPSBfYS5uRXBvY2hzLCBjdXJyZW50RXBvY2ggPSBfYS5jdXJyZW50RXBvY2g7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtYmVkZGluZyA9IHRoaXMub3B0aW1pemVMYXlvdXRTdGVwKGN1cnJlbnRFcG9jaCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcG9jaENvbXBsZXRlZCA9IHRoaXMub3B0aW1pemF0aW9uU3RhdGUuY3VycmVudEVwb2NoO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkU3RvcCA9IGVwb2NoQ2FsbGJhY2soZXBvY2hDb21wbGV0ZWQpID09PSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRmluaXNoZWQgPSBlcG9jaENvbXBsZXRlZCA9PT0gbkVwb2NocztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkU3RvcCAmJiAhaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeyByZXR1cm4gc3RlcCgpOyB9LCAwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbMiwgcmVzb2x2ZShpc0ZpbmlzaGVkKV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyXTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pOyB9O1xuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IHJldHVybiBzdGVwKCk7IH0sIDApO1xuICAgICAgICB9KTtcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLm9wdGltaXplTGF5b3V0ID0gZnVuY3Rpb24gKGVwb2NoQ2FsbGJhY2spIHtcbiAgICAgICAgaWYgKGVwb2NoQ2FsbGJhY2sgPT09IHZvaWQgMCkgeyBlcG9jaENhbGxiYWNrID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZTsgfTsgfVxuICAgICAgICB2YXIgaXNGaW5pc2hlZCA9IGZhbHNlO1xuICAgICAgICB2YXIgZW1iZWRkaW5nID0gW107XG4gICAgICAgIHdoaWxlICghaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5vcHRpbWl6YXRpb25TdGF0ZSwgbkVwb2NocyA9IF9hLm5FcG9jaHMsIGN1cnJlbnRFcG9jaCA9IF9hLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgIGVtYmVkZGluZyA9IHRoaXMub3B0aW1pemVMYXlvdXRTdGVwKGN1cnJlbnRFcG9jaCk7XG4gICAgICAgICAgICB2YXIgZXBvY2hDb21wbGV0ZWQgPSB0aGlzLm9wdGltaXphdGlvblN0YXRlLmN1cnJlbnRFcG9jaDtcbiAgICAgICAgICAgIHZhciBzaG91bGRTdG9wID0gZXBvY2hDYWxsYmFjayhlcG9jaENvbXBsZXRlZCkgPT09IGZhbHNlO1xuICAgICAgICAgICAgaXNGaW5pc2hlZCA9IGVwb2NoQ29tcGxldGVkID09PSBuRXBvY2hzIHx8IHNob3VsZFN0b3A7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGVtYmVkZGluZztcbiAgICB9O1xuICAgIFVNQVAucHJvdG90eXBlLmdldE5FcG9jaHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBncmFwaCA9IHRoaXMuZ3JhcGg7XG4gICAgICAgIGlmICh0aGlzLm5FcG9jaHMgPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5uRXBvY2hzO1xuICAgICAgICB9XG4gICAgICAgIHZhciBsZW5ndGggPSBncmFwaC5uUm93cztcbiAgICAgICAgaWYgKGxlbmd0aCA8PSAyNTAwKSB7XG4gICAgICAgICAgICByZXR1cm4gNTAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSA1MDAwKSB7XG4gICAgICAgICAgICByZXR1cm4gNDAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlbmd0aCA8PSA3NTAwKSB7XG4gICAgICAgICAgICByZXR1cm4gMzAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIDIwMDtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFVNQVA7XG59KCkpO1xuZXhwb3J0cy5VTUFQID0gVU1BUDtcbmZ1bmN0aW9uIGV1Y2xpZGVhbih4LCB5KSB7XG4gICAgdmFyIHJlc3VsdCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB4Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJlc3VsdCArPSBNYXRoLnBvdygoeFtpXSAtIHlbaV0pLCAyKTtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguc3FydChyZXN1bHQpO1xufVxuZXhwb3J0cy5ldWNsaWRlYW4gPSBldWNsaWRlYW47XG5mdW5jdGlvbiBjb3NpbmUoeCwgeSkge1xuICAgIHZhciByZXN1bHQgPSAwLjA7XG4gICAgdmFyIG5vcm1YID0gMC4wO1xuICAgIHZhciBub3JtWSA9IDAuMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHgubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgcmVzdWx0ICs9IHhbaV0gKiB5W2ldO1xuICAgICAgICBub3JtWCArPSBNYXRoLnBvdyh4W2ldLCAyKTtcbiAgICAgICAgbm9ybVkgKz0gTWF0aC5wb3coeVtpXSwgMik7XG4gICAgfVxuICAgIGlmIChub3JtWCA9PT0gMCAmJiBub3JtWSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgZWxzZSBpZiAobm9ybVggPT09IDAgfHwgbm9ybVkgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIDEuMDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiAxLjAgLSByZXN1bHQgLyBNYXRoLnNxcnQobm9ybVggKiBub3JtWSk7XG4gICAgfVxufVxuZXhwb3J0cy5jb3NpbmUgPSBjb3NpbmU7XG52YXIgT3B0aW1pemF0aW9uU3RhdGUgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIE9wdGltaXphdGlvblN0YXRlKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRFcG9jaCA9IDA7XG4gICAgICAgIHRoaXMuaGVhZEVtYmVkZGluZyA9IFtdO1xuICAgICAgICB0aGlzLnRhaWxFbWJlZGRpbmcgPSBbXTtcbiAgICAgICAgdGhpcy5oZWFkID0gW107XG4gICAgICAgIHRoaXMudGFpbCA9IFtdO1xuICAgICAgICB0aGlzLmVwb2Noc1BlclNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2NoT2ZOZXh0U2FtcGxlID0gW107XG4gICAgICAgIHRoaXMuZXBvY2hPZk5leHROZWdhdGl2ZVNhbXBsZSA9IFtdO1xuICAgICAgICB0aGlzLmVwb2Noc1Blck5lZ2F0aXZlU2FtcGxlID0gW107XG4gICAgICAgIHRoaXMubW92ZU90aGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbml0aWFsQWxwaGEgPSAxLjA7XG4gICAgICAgIHRoaXMuYWxwaGEgPSAxLjA7XG4gICAgICAgIHRoaXMuZ2FtbWEgPSAxLjA7XG4gICAgICAgIHRoaXMuYSA9IDEuNTc2OTQzNDYwMzExMzA3NztcbiAgICAgICAgdGhpcy5iID0gMC44OTUwNjA4Nzc5MTA5NzMzO1xuICAgICAgICB0aGlzLmRpbSA9IDI7XG4gICAgICAgIHRoaXMubkVwb2NocyA9IDUwMDtcbiAgICAgICAgdGhpcy5uVmVydGljZXMgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gT3B0aW1pemF0aW9uU3RhdGU7XG59KCkpO1xuZnVuY3Rpb24gY2xpcCh4LCBjbGlwVmFsdWUpIHtcbiAgICBpZiAoeCA+IGNsaXBWYWx1ZSlcbiAgICAgICAgcmV0dXJuIGNsaXBWYWx1ZTtcbiAgICBlbHNlIGlmICh4IDwgLWNsaXBWYWx1ZSlcbiAgICAgICAgcmV0dXJuIC1jbGlwVmFsdWU7XG4gICAgZWxzZVxuICAgICAgICByZXR1cm4geDtcbn1cbmZ1bmN0aW9uIHJEaXN0KHgsIHkpIHtcbiAgICB2YXIgcmVzdWx0ID0gMC4wO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeC5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgKz0gTWF0aC5wb3coeFtpXSAtIHlbaV0sIDIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gZmluZEFCUGFyYW1zKHNwcmVhZCwgbWluRGlzdCkge1xuICAgIHZhciBjdXJ2ZSA9IGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgX2IgPSBfX3JlYWQoX2EsIDIpLCBhID0gX2JbMF0sIGIgPSBfYlsxXTtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gMS4wIC8gKDEuMCArIGEgKiBNYXRoLnBvdyh4LCAoMiAqIGIpKSk7XG4gICAgICAgIH07XG4gICAgfTtcbiAgICB2YXIgeHYgPSB1dGlsc1xuICAgICAgICAubGluZWFyKDAsIHNwcmVhZCAqIDMsIDMwMClcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodmFsKSB7IHJldHVybiAodmFsIDwgbWluRGlzdCA/IDEuMCA6IHZhbCk7IH0pO1xuICAgIHZhciB5diA9IHV0aWxzLnplcm9zKHh2Lmxlbmd0aCkubWFwKGZ1bmN0aW9uICh2YWwsIGluZGV4KSB7XG4gICAgICAgIHZhciBndGUgPSB4dltpbmRleF0gPj0gbWluRGlzdDtcbiAgICAgICAgcmV0dXJuIGd0ZSA/IE1hdGguZXhwKC0oeHZbaW5kZXhdIC0gbWluRGlzdCkgLyBzcHJlYWQpIDogdmFsO1xuICAgIH0pO1xuICAgIHZhciBpbml0aWFsVmFsdWVzID0gWzAuNSwgMC41XTtcbiAgICB2YXIgZGF0YSA9IHsgeDogeHYsIHk6IHl2IH07XG4gICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIGRhbXBpbmc6IDEuNSxcbiAgICAgICAgaW5pdGlhbFZhbHVlczogaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgZ3JhZGllbnREaWZmZXJlbmNlOiAxMGUtMixcbiAgICAgICAgbWF4SXRlcmF0aW9uczogMTAwLFxuICAgICAgICBlcnJvclRvbGVyYW5jZTogMTBlLTMsXG4gICAgfTtcbiAgICB2YXIgcGFyYW1ldGVyVmFsdWVzID0gbWxfbGV2ZW5iZXJnX21hcnF1YXJkdF8xLmRlZmF1bHQoZGF0YSwgY3VydmUsIG9wdGlvbnMpLnBhcmFtZXRlclZhbHVlcztcbiAgICB2YXIgX2EgPSBfX3JlYWQocGFyYW1ldGVyVmFsdWVzLCAyKSwgYSA9IF9hWzBdLCBiID0gX2FbMV07XG4gICAgcmV0dXJuIHsgYTogYSwgYjogYiB9O1xufVxuZXhwb3J0cy5maW5kQUJQYXJhbXMgPSBmaW5kQUJQYXJhbXM7XG5mdW5jdGlvbiBmYXN0SW50ZXJzZWN0aW9uKGdyYXBoLCB0YXJnZXQsIHVua25vd25EaXN0LCBmYXJEaXN0KSB7XG4gICAgaWYgKHVua25vd25EaXN0ID09PSB2b2lkIDApIHsgdW5rbm93bkRpc3QgPSAxLjA7IH1cbiAgICBpZiAoZmFyRGlzdCA9PT0gdm9pZCAwKSB7IGZhckRpc3QgPSA1LjA7IH1cbiAgICByZXR1cm4gZ3JhcGgubWFwKGZ1bmN0aW9uICh2YWx1ZSwgcm93LCBjb2wpIHtcbiAgICAgICAgaWYgKHRhcmdldFtyb3ddID09PSAtMSB8fCB0YXJnZXRbY29sXSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZSAqIE1hdGguZXhwKC11bmtub3duRGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodGFyZ2V0W3Jvd10gIT09IHRhcmdldFtjb2xdKSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUgKiBNYXRoLmV4cCgtZmFyRGlzdCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cbmV4cG9ydHMuZmFzdEludGVyc2VjdGlvbiA9IGZhc3RJbnRlcnNlY3Rpb247XG5mdW5jdGlvbiByZXNldExvY2FsQ29ubmVjdGl2aXR5KHNpbXBsaWNpYWxTZXQpIHtcbiAgICBzaW1wbGljaWFsU2V0ID0gbWF0cml4Lm5vcm1hbGl6ZShzaW1wbGljaWFsU2V0LCBcIm1heFwiKTtcbiAgICB2YXIgdHJhbnNwb3NlID0gbWF0cml4LnRyYW5zcG9zZShzaW1wbGljaWFsU2V0KTtcbiAgICB2YXIgcHJvZE1hdHJpeCA9IG1hdHJpeC5wYWlyd2lzZU11bHRpcGx5KHRyYW5zcG9zZSwgc2ltcGxpY2lhbFNldCk7XG4gICAgc2ltcGxpY2lhbFNldCA9IG1hdHJpeC5hZGQoc2ltcGxpY2lhbFNldCwgbWF0cml4LnN1YnRyYWN0KHRyYW5zcG9zZSwgcHJvZE1hdHJpeCkpO1xuICAgIHJldHVybiBtYXRyaXguZWxpbWluYXRlWmVyb3Moc2ltcGxpY2lhbFNldCk7XG59XG5leHBvcnRzLnJlc2V0TG9jYWxDb25uZWN0aXZpdHkgPSByZXNldExvY2FsQ29ubmVjdGl2aXR5O1xuZnVuY3Rpb24gaW5pdFRyYW5zZm9ybShpbmRpY2VzLCB3ZWlnaHRzLCBlbWJlZGRpbmcpIHtcbiAgICB2YXIgcmVzdWx0ID0gdXRpbHNcbiAgICAgICAgLnplcm9zKGluZGljZXMubGVuZ3RoKVxuICAgICAgICAubWFwKGZ1bmN0aW9uICh6KSB7IHJldHVybiB1dGlscy56ZXJvcyhlbWJlZGRpbmdbMF0ubGVuZ3RoKTsgfSk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgaW5kaWNlc1swXS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgZm9yICh2YXIgZCA9IDA7IGQgPCBlbWJlZGRpbmdbMF0ubGVuZ3RoOyBkKyspIHtcbiAgICAgICAgICAgICAgICB2YXIgYSA9IGluZGljZXNbaV1bal07XG4gICAgICAgICAgICAgICAgcmVzdWx0W2ldW2RdICs9IHdlaWdodHNbaV1bal0gKiBlbWJlZGRpbmdbYV1bZF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmV4cG9ydHMuaW5pdFRyYW5zZm9ybSA9IGluaXRUcmFuc2Zvcm07XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX3ZhbHVlcyA9ICh0aGlzICYmIHRoaXMuX192YWx1ZXMpIHx8IGZ1bmN0aW9uIChvKSB7XG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdLCBpID0gMDtcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xuICAgICAgICB9XG4gICAgfTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5mdW5jdGlvbiB0YXVSYW5kSW50KG4sIHJhbmRvbSkge1xuICAgIHJldHVybiBNYXRoLmZsb29yKHJhbmRvbSgpICogbik7XG59XG5leHBvcnRzLnRhdVJhbmRJbnQgPSB0YXVSYW5kSW50O1xuZnVuY3Rpb24gdGF1UmFuZChyYW5kb20pIHtcbiAgICByZXR1cm4gcmFuZG9tKCk7XG59XG5leHBvcnRzLnRhdVJhbmQgPSB0YXVSYW5kO1xuZnVuY3Rpb24gbm9ybSh2ZWMpIHtcbiAgICB2YXIgZV8xLCBfYTtcbiAgICB2YXIgcmVzdWx0ID0gMDtcbiAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciB2ZWNfMSA9IF9fdmFsdWVzKHZlYyksIHZlY18xXzEgPSB2ZWNfMS5uZXh0KCk7ICF2ZWNfMV8xLmRvbmU7IHZlY18xXzEgPSB2ZWNfMS5uZXh0KCkpIHtcbiAgICAgICAgICAgIHZhciBpdGVtID0gdmVjXzFfMS52YWx1ZTtcbiAgICAgICAgICAgIHJlc3VsdCArPSBNYXRoLnBvdyhpdGVtLCAyKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBjYXRjaCAoZV8xXzEpIHsgZV8xID0geyBlcnJvcjogZV8xXzEgfTsgfVxuICAgIGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHZlY18xXzEgJiYgIXZlY18xXzEuZG9uZSAmJiAoX2EgPSB2ZWNfMS5yZXR1cm4pKSBfYS5jYWxsKHZlY18xKTtcbiAgICAgICAgfVxuICAgICAgICBmaW5hbGx5IHsgaWYgKGVfMSkgdGhyb3cgZV8xLmVycm9yOyB9XG4gICAgfVxuICAgIHJldHVybiBNYXRoLnNxcnQocmVzdWx0KTtcbn1cbmV4cG9ydHMubm9ybSA9IG5vcm07XG5mdW5jdGlvbiBlbXB0eShuKSB7XG4gICAgdmFyIG91dHB1dCA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIG91dHB1dC5wdXNoKHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIHJldHVybiBvdXRwdXQ7XG59XG5leHBvcnRzLmVtcHR5ID0gZW1wdHk7XG5mdW5jdGlvbiByYW5nZShuKSB7XG4gICAgcmV0dXJuIGVtcHR5KG4pLm1hcChmdW5jdGlvbiAoXywgaSkgeyByZXR1cm4gaTsgfSk7XG59XG5leHBvcnRzLnJhbmdlID0gcmFuZ2U7XG5mdW5jdGlvbiBmaWxsZWQobiwgdikge1xuICAgIHJldHVybiBlbXB0eShuKS5tYXAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdjsgfSk7XG59XG5leHBvcnRzLmZpbGxlZCA9IGZpbGxlZDtcbmZ1bmN0aW9uIHplcm9zKG4pIHtcbiAgICByZXR1cm4gZmlsbGVkKG4sIDApO1xufVxuZXhwb3J0cy56ZXJvcyA9IHplcm9zO1xuZnVuY3Rpb24gb25lcyhuKSB7XG4gICAgcmV0dXJuIGZpbGxlZChuLCAxKTtcbn1cbmV4cG9ydHMub25lcyA9IG9uZXM7XG5mdW5jdGlvbiBsaW5lYXIoYSwgYiwgbGVuKSB7XG4gICAgcmV0dXJuIGVtcHR5KGxlbikubWFwKGZ1bmN0aW9uIChfLCBpKSB7XG4gICAgICAgIHJldHVybiBhICsgaSAqICgoYiAtIGEpIC8gKGxlbiAtIDEpKTtcbiAgICB9KTtcbn1cbmV4cG9ydHMubGluZWFyID0gbGluZWFyO1xuZnVuY3Rpb24gc3VtKGlucHV0KSB7XG4gICAgcmV0dXJuIGlucHV0LnJlZHVjZShmdW5jdGlvbiAoc3VtLCB2YWwpIHsgcmV0dXJuIHN1bSArIHZhbDsgfSk7XG59XG5leHBvcnRzLnN1bSA9IHN1bTtcbmZ1bmN0aW9uIG1lYW4oaW5wdXQpIHtcbiAgICByZXR1cm4gc3VtKGlucHV0KSAvIGlucHV0Lmxlbmd0aDtcbn1cbmV4cG9ydHMubWVhbiA9IG1lYW47XG5mdW5jdGlvbiBtYXgoaW5wdXQpIHtcbiAgICB2YXIgbWF4ID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG1heCA9IGlucHV0W2ldID4gbWF4ID8gaW5wdXRbaV0gOiBtYXg7XG4gICAgfVxuICAgIHJldHVybiBtYXg7XG59XG5leHBvcnRzLm1heCA9IG1heDtcbmZ1bmN0aW9uIG1heDJkKGlucHV0KSB7XG4gICAgdmFyIG1heCA9IDA7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGlucHV0W2ldLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICBtYXggPSBpbnB1dFtpXVtqXSA+IG1heCA/IGlucHV0W2ldW2pdIDogbWF4O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtYXg7XG59XG5leHBvcnRzLm1heDJkID0gbWF4MmQ7XG5mdW5jdGlvbiByZWplY3Rpb25TYW1wbGUoblNhbXBsZXMsIHBvb2xTaXplLCByYW5kb20pIHtcbiAgICB2YXIgcmVzdWx0ID0gemVyb3MoblNhbXBsZXMpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgblNhbXBsZXM7IGkrKykge1xuICAgICAgICB2YXIgcmVqZWN0U2FtcGxlID0gdHJ1ZTtcbiAgICAgICAgd2hpbGUgKHJlamVjdFNhbXBsZSkge1xuICAgICAgICAgICAgdmFyIGogPSB0YXVSYW5kSW50KHBvb2xTaXplLCByYW5kb20pO1xuICAgICAgICAgICAgdmFyIGJyb2tlbiA9IGZhbHNlO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBpOyBrKyspIHtcbiAgICAgICAgICAgICAgICBpZiAoaiA9PT0gcmVzdWx0W2tdKSB7XG4gICAgICAgICAgICAgICAgICAgIGJyb2tlbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghYnJva2VuKSB7XG4gICAgICAgICAgICAgICAgcmVqZWN0U2FtcGxlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHRbaV0gPSBqO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5leHBvcnRzLnJlamVjdGlvblNhbXBsZSA9IHJlamVjdGlvblNhbXBsZTtcbmZ1bmN0aW9uIHJlc2hhcGUyZCh4LCBhLCBiKSB7XG4gICAgdmFyIHJvd3MgPSBbXTtcbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgaWYgKHgubGVuZ3RoICE9PSBhICogYikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FycmF5IGRpbWVuc2lvbnMgbXVzdCBtYXRjaCBpbnB1dCBsZW5ndGguJyk7XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYTsgaSsrKSB7XG4gICAgICAgIHZhciBjb2wgPSBbXTtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBiOyBqKyspIHtcbiAgICAgICAgICAgIGNvbC5wdXNoKHhbaW5kZXhdKTtcbiAgICAgICAgICAgIGluZGV4ICs9IDE7XG4gICAgICAgIH1cbiAgICAgICAgcm93cy5wdXNoKGNvbCk7XG4gICAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIHJldHVybiByb3dzO1xufVxuZXhwb3J0cy5yZXNoYXBlMmQgPSByZXNoYXBlMmQ7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNDc4XSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oNzE2OCkpKVxuXHRfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKF9fd2VicGFja19leHBvcnRzX18pO1xuXHRyZXR1cm4gX193ZWJwYWNrX2V4cG9ydHNfXztcbn07XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZiA9IHt9O1xuLy8gVGhpcyBmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIGVudHJ5IGNodW5rLlxuLy8gVGhlIGNodW5rIGxvYWRpbmcgZnVuY3Rpb24gZm9yIGFkZGl0aW9uYWwgY2h1bmtzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmUgPSAoY2h1bmtJZCkgPT4ge1xuXHRyZXR1cm4gUHJvbWlzZS5hbGwoT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5mKS5yZWR1Y2UoKHByb21pc2VzLCBrZXkpID0+IHtcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmZba2V5XShjaHVua0lkLCBwcm9taXNlcyk7XG5cdFx0cmV0dXJuIHByb21pc2VzO1xuXHR9LCBbXSkpO1xufTsiLCIvLyBUaGlzIGZ1bmN0aW9uIGFsbG93IHRvIHJlZmVyZW5jZSBhc3luYyBjaHVua3MgYW5kIHNpYmxpbmcgY2h1bmtzIGZvciB0aGUgZW50cnlwb2ludFxuX193ZWJwYWNrX3JlcXVpcmVfXy51ID0gKGNodW5rSWQpID0+IHtcblx0Ly8gcmV0dXJuIHVybCBmb3IgZmlsZW5hbWVzIGJhc2VkIG9uIHRlbXBsYXRlXG5cdHJldHVybiBcIlwiICsgY2h1bmtJZCArIFwiLmpzXCI7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIi8vIG5vIGJhc2VVUklcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBjaHVua3Ncbi8vIFwiMVwiIG1lYW5zIFwiYWxyZWFkeSBsb2FkZWRcIlxudmFyIGluc3RhbGxlZENodW5rcyA9IHtcblx0MTY4OiAxXG59O1xuXG4vLyBpbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmdcbnZhciBpbnN0YWxsQ2h1bmsgPSAoZGF0YSkgPT4ge1xuXHR2YXIgW2NodW5rSWRzLCBtb3JlTW9kdWxlcywgcnVudGltZV0gPSBkYXRhO1xuXHRmb3IodmFyIG1vZHVsZUlkIGluIG1vcmVNb2R1bGVzKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKG1vcmVNb2R1bGVzLCBtb2R1bGVJZCkpIHtcblx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG5cdFx0fVxuXHR9XG5cdGlmKHJ1bnRpbWUpIHJ1bnRpbWUoX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cdHdoaWxlKGNodW5rSWRzLmxlbmd0aClcblx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZHMucG9wKCldID0gMTtcblx0cGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24oZGF0YSk7XG59O1xuX193ZWJwYWNrX3JlcXVpcmVfXy5mLmkgPSAoY2h1bmtJZCwgcHJvbWlzZXMpID0+IHtcblx0Ly8gXCIxXCIgaXMgdGhlIHNpZ25hbCBmb3IgXCJhbHJlYWR5IGxvYWRlZFwiXG5cdGlmKCFpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF0pIHtcblx0XHRpZih0cnVlKSB7IC8vIGFsbCBjaHVua3MgaGF2ZSBKU1xuXHRcdFx0aW1wb3J0U2NyaXB0cyhfX3dlYnBhY2tfcmVxdWlyZV9fLnAgKyBfX3dlYnBhY2tfcmVxdWlyZV9fLnUoY2h1bmtJZCkpO1xuXHRcdH1cblx0fVxufTtcblxudmFyIGNodW5rTG9hZGluZ0dsb2JhbCA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtwZXB0aWRlc1wiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtwZXB0aWRlc1wiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0IiwiU3RyaW5nTWV0cmljc05hbWVzIiwiVmVjdG9yTWV0cmljc05hbWVzIiwiQml0QXJyYXlNZXRyaWNzTmFtZXMiLCJEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cyIsInJhbmRvbUZsb2F0IiwicmFuZ2UiLCJNYXRoIiwicmFuZG9tIiwiZmxvb3IiLCJhc3NlcnQiLCJjb25kaXRpb24iLCJtZXNzYWdlIiwiRXJyb3IiLCJpbml0Q29vcmRpbmF0ZXMiLCJkaW1lbnNpb24xIiwiZGltZW5zaW9uMiIsImZpbGwiLCJBcnJheSIsIm1hcCIsInZlY3RvckFkZCIsInAiLCJxIiwibXVsdGlwbGllciIsIm5JdGVtcyIsImxlbmd0aCIsInRvdGFsIiwiaSIsImZpbGxSYW5kb21NYXRyaXgiLCJzY2FsZSIsIm1hdHJpeCIsImoiLCJjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSIsInNxZGlmZlN1bW0iLCJ2IiwiaXRlbXNTdW0iLCJ2ZWN0b3JTcXVhcmUiLCJzcXJ0IiwiY2FsY05vcm1hbGl6ZWREaXN0YW5jZU1hdHJpeCIsImRhdGEiLCJkaXN0YW5jZSIsIm1heCIsIk51bWJlciIsIk1JTl9WQUxVRSIsIm1pbiIsIk1BWF9WQUxVRSIsImQiLCJTUEVCYXNlIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiX2EiLCJfYiIsIl9jIiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJ0aGlzIiwic3RlcHMiLCJjeWNsZXMiLCJjdXRvZmYiLCJsYW1iZGEiLCJkbGFtYmRhIiwibGFtYmRhMiIsImRsYW1iZGEyIiwiZXBzaWxvbiIsImRpc3RhbmNlRnVuY3Rpb24iLCJpbml0RGlzdGFuY2UiLCJ2ZWN0b3JzIiwiY2FsY0Rpc3RhbmNlTWF0cml4IiwiY2FsY0Rpc3RhbmNlIiwiaW5kZXgxIiwiaW5kZXgyIiwiZW1iZWQiLCJjb29yZGluYXRlcyIsImRpbWVuc2lvbiIsImN5Y2xlIiwic3RlcCIsInJvd2kiLCJyb3dqIiwiciIsImRpZmZJSiIsIlBTUEVCYXNlIiwiT3JpZ2luYWxTUEUiLCJzdXBlciIsInJhZGl1c1BlcmNlbnQiLCJtYXhEaXN0YW5jZSIsIm1heERpc3RhbmNlU3RlcHMiLCJuIiwicmFkaXVzIiwidmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsInN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJzMSIsInMyIiwiZGlzdCIsImJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIkF2YWlsYWJsZU1ldHJpY3MiLCJNZXRyaWNUb0RhdGFUeXBlIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsInJldCIsImtleSIsInZhbCIsIk1lYXN1cmUiLCJtZXRob2QiLCJkYXRhVHlwZSIsImdldE1lYXN1cmUiLCJvcHRzIiwiZGljdCIsImhhc093blByb3BlcnR5IiwibmFtZSIsInN0YXRpYyIsImF2YWlsYWJsZU1lYXN1cmVzIiwiQml0QXJyYXkiLCJhcmciLCJkZWZhdWx0VmFsdWUiLCJfbGVuZ3RoIiwiX3ZlcnNpb24iLCJfdXBkYXRlTGV2ZWwiLCJfc2VsZWN0ZWRDb3VudCIsIl9zZWxlY3RlZENvdW50VmVyc2lvbiIsIl9zZWxlY3RlZEluZGV4ZXNWZXJzaW9uIiwiX3ZlcnNpb25lZE5hbWUiLCJfdmVyc2lvbmVkTmFtZVZlcnNpb24iLCJTSFJJTktfVEhSRVNIT0xEIiwiYnVmZiIsIl9jcmVhdGVCdWZmZXIiLCJfZGF0YSIsIlVpbnQzMkFycmF5IiwiZ2V0UmF3RGF0YSIsImFzc3VyZUdvZXoiLCJudW0iLCJhcmdOYW1lIiwiYXNzdXJlSW5SYW5nZSIsInZhbHVlIiwiY29weSIsInNyYyIsImRzdCIsImNvdW50IiwiY29weUZyb20iLCJvdGhlciIsImxlbmd0aEluSW50cyIsImJ1ZmZlciIsInZlcnNpb24iLCJpbmNyZW1lbnRWZXJzaW9uIiwibm90aWZ5IiwidmVyc2lvbmVkTmFtZSIsInNlbGYiLCJzZXRMZW5ndGgiLCJuSW50c05lZWRlZCIsIm5ld0RhdGEiLCJzZXQxIiwic2V0MiIsInRlbXAiLCJsZW4iLCJ2YWx1ZXMiLCJmbGFnIiwic2V0Qml0IiwicyIsImZyb21TZXEiLCJjaGFyQXQiLCJieXRlcyIsIm51bTEiLCJudW0yIiwidG9TdHJpbmciLCJjb3VudEJpdHMiLCJlcXVhbHMiLCJnZXRCaXQiLCJjbG9uZSIsImJpdEFycmF5IiwiZnJvbSIsImluaXQiLCJzZXRBbGwiLCJpbnZlcnQiLCJmbGFncyIsInNldEluZGV4ZXMiLCJpbmRleGVzIiwiY2xlYXIiLCJzZXRGYXN0IiwiZXZlcnlJbmRleCIsImluZGV4IiwiYW55SW5kZXgiLCJzZXRXaGVyZSIsImNoZWNrIiwiYWxsb3dDbGVhciIsImdldFJhbmdlIiwidG8iLCJhcnIiLCJwdXNoIiwiZnJvbVZhbHVlcyIsImdldFJhbmdlQXNMaXN0Iiwic2V0UmFuZ2UiLCJzdGFydCIsImVuZCIsInNldFRydWUiLCJzZXRGYWxzZSIsInNldFJhbmRvbSIsImsiLCJhbmQiLCJhbmROb3QiLCJub3RBbmQiLCJub3QiLCJvciIsInhvciIsImluc2VydEF0IiwicG9zIiwib2xkbGVuZ3RoIiwicmVtb3ZlQXQiLCJjb250YWlucyIsInJlbW92ZUJ5TWFzayIsIm1hc2siLCJkc3RJZHgiLCJzcmNJZHgiLCJmaW5kTmV4dCIsImJpdCIsInRydWVDb3VudCIsImZhbHNlQ291bnQiLCJfb25CaXRDb3VudCIsInJlbWFpbmluZ0JpdHMiLCJjb3VudFdoZXJlIiwicmVzdWx0IiwiYW5kV2l0aENvdW50Qml0cyIsInNlY29uZCIsImFsbFRydWUiLCJhbGxGYWxzZSIsImFueVRydWUiLCJhbnlGYWxzZSIsInVudXNlZEJpdHMiLCJudW1JbnRzIiwiX2ZpcnN0T25CaXQiLCJmaW5kUHJldiIsIl9sYXN0T25CaXQiLCJEaW1SZWR1Y3Rpb25NZXRob2RzIiwiSW50OEFycmF5IiwiUmVkdWNlciIsIkF2YWlsYWJsZVJlZHVjZXJzIiwiZGlzdGFuY2VGbiIsIl8iLCJ1c2luZ0Rpc3RhbmNlTWF0cml4IiwicHJlQ2FsY3VsYXRlRGlzdGFuY2VNYXRyaXgiLCJkaXN0YW5jZU1hdHJpeCIsIkZsb2F0MzJBcnJheSIsIl9lbmNvZGVkRGlzdGFuY2VNYXRyaXgiLCJiaW5kIiwiX2VuY29kZWREaXN0YW5jZSIsIm5OZWlnaGJvcnMiLCJyZWR1Y2VyIiwidSIsImEiLCJiIiwiX2VuY29kZSIsInRyYW5zZm9ybSIsImVtYmVkZGluZyIsImZpdCIsImFzc2lnbiIsIml0ZXJhdGlvbnMiLCJpbml0RGF0YURpc3QiLCJnZXRTb2x1dGlvbiIsImVtYiIsIkRpbWVuc2lvbmFsaXR5UmVkdWNlciIsIm1ldHJpYyIsIm1lYXN1cmUiLCJzcGVjT3B0aW9ucyIsIm5FcG9jaHMiLCJ1bmRlZmluZWQiLCJ0cmFuc3Bvc2UiLCJ0eXBlTmFtZSIsImF2YWlsYWJsZU1ldGhvZHMiLCJhdmFpbGFibGVNZXRyaWNzIiwiYW5zIiwiZm9yRWFjaCIsIm9iaiIsImFycmF5Iiwib25tZXNzYWdlIiwiY29sdW1uRGF0YSIsIm9uTWVzc2FnZSIsImUiLCJlcnJvciIsInBvc3RNZXNzYWdlIiwiZXhwb3J0cyIsInRzbmVfMSIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIlRTTkUiLCJvcHQiLCJyZXR1cm5WIiwidlZhbHVlIiwiaXRlciIsInBlcnBsZXhpdHkiLCJnZXRvcHQiLCJkaW0iLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJnYXVzc1JhbmRvbSIsImMiLCJsb2ciLCJyYW5kbiIsIm11Iiwic3RkIiwiemVyb3MiLCJpc05hTiIsIkFycmF5QnVmZmVyIiwiRmxvYXQ2NEFycmF5IiwicmFuZG4yZCIsInVzZXMiLCJ4IiwieGhlcmUiLCJMMiIsIngxIiwieDIiLCJEIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZDJwIiwidG9sIiwibmYiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsImNvbnNvbGUiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJnc3VtIiwicHJlbXVsdCIsInByb3RvdHlwZSIsImlzQW55QXJyYXkiLCJvYmplY3QiLCJjYWxsIiwiZW5kc1dpdGgiLCJlcnJvckNhbGN1bGF0aW9uIiwicGFyYW1ldGVycyIsInBhcmFtZXRlcml6ZWRGdW5jdGlvbiIsImZ1bmMiLCJ5IiwidGFnIiwiaW5jbHVkZXMiLCJyZXNjYWxlIiwiaW5wdXQiLCJvdXRwdXQiLCJhcmd1bWVudHMiLCJUeXBlRXJyb3IiLCJjdXJyZW50TWluIiwiX29wdGlvbnMkZnJvbUluZGV4IiwiZnJvbUluZGV4IiwiX29wdGlvbnMkdG9JbmRleCIsInRvSW5kZXgiLCJpc0ludGVnZXIiLCJtaW5WYWx1ZSIsImN1cnJlbnRNYXgiLCJtYXhWYWx1ZSIsIlJhbmdlRXJyb3IiLCJfb3B0aW9ucyRtaW4iLCJhdXRvTWluTWF4IiwiX29wdGlvbnMkbWF4IiwiZmFjdG9yIiwiaW5kZW50IiwicmVwZWF0IiwiaW5kZW50RGF0YSIsImluc3BlY3RNYXRyaXhXaXRoT3B0aW9ucyIsIm1heFJvd3MiLCJtYXhDb2x1bW5zIiwibWF4TnVtU2l6ZSIsInBhZE1pbnVzIiwicm93cyIsImNvbHVtbnMiLCJtYXhJIiwibWF4SiIsImxvb3AiLCJsaW5lIiwiZm9ybWF0TnVtYmVyIiwiam9pbiIsImluc3BlY3REYXRhIiwiZm9ybWF0TnVtYmVyMiIsInBhZEVuZCIsInN0ciIsImZpeCIsInRvRml4ZWQiLCJzdGFydHNXaXRoIiwidG9FeHBvbmVudGlhbCIsInNsaWNlIiwiY2hlY2tSb3dJbmRleCIsIm91dGVyIiwiY2hlY2tDb2x1bW5JbmRleCIsImNoZWNrUm93VmVjdG9yIiwidmVjdG9yIiwidG8xREFycmF5IiwiY2hlY2tDb2x1bW5WZWN0b3IiLCJjaGVja1JhbmdlIiwic3RhcnRSb3ciLCJlbmRSb3ciLCJzdGFydENvbHVtbiIsImVuZENvbHVtbiIsImNoZWNrTnVtYmVyIiwibmV3QXJyYXkiLCJjaGVja05vbkVtcHR5IiwiaXNFbXB0eSIsIkFic3RyYWN0TWF0cml4IiwibmV3Um93cyIsIm5ld0NvbHVtbnMiLCJuZXdNYXRyaXgiLCJNYXRyaXgiLCJyb3ciLCJjb2x1bW4iLCJzZXQiLCJpbnRlcnZhbCIsInJvdW5kIiwibCIsIm1hdHJpeDEiLCJtYXRyaXgyIiwiY2hlY2tNYXRyaXgiLCJpc01hdHJpeCIsImtsYXNzIiwic2l6ZSIsImFwcGx5IiwiY2FsbGJhY2siLCJ0bzJEQXJyYXkiLCJ0b0pTT04iLCJpc1Jvd1ZlY3RvciIsImlzQ29sdW1uVmVjdG9yIiwiaXNWZWN0b3IiLCJpc1NxdWFyZSIsImlzU3ltbWV0cmljIiwiaXNFY2hlbG9uRm9ybSIsInByZXZpb3VzQ29sdW1uIiwiY2hlY2tlZCIsImlzUmVkdWNlZEVjaGVsb25Gb3JtIiwiZWNoZWxvbkZvcm0iLCJoIiwiaU1heCIsInN3YXBSb3dzIiwidG1wIiwicmVkdWNlZEVjaGVsb25Gb3JtIiwibSIsIm1heFJvdyIsInBpdm90Iiwic2V0U3ViTWF0cml4IiwibmVnIiwibXVsUyIsImdldFJvdyIsImdldFJvd1ZlY3RvciIsInJvd1ZlY3RvciIsInNldFJvdyIsInJvdzEiLCJyb3cyIiwiZ2V0Q29sdW1uIiwiZ2V0Q29sdW1uVmVjdG9yIiwiY29sdW1uVmVjdG9yIiwic2V0Q29sdW1uIiwic3dhcENvbHVtbnMiLCJjb2x1bW4xIiwiY29sdW1uMiIsImFkZFJvd1ZlY3RvciIsInN1YlJvd1ZlY3RvciIsIm11bFJvd1ZlY3RvciIsImRpdlJvd1ZlY3RvciIsImFkZENvbHVtblZlY3RvciIsInN1YkNvbHVtblZlY3RvciIsIm11bENvbHVtblZlY3RvciIsImRpdkNvbHVtblZlY3RvciIsIm11bFJvdyIsIm11bENvbHVtbiIsImJ5IiwiTmFOIiwiTkVHQVRJVkVfSU5GSU5JVFkiLCJtYXhJbmRleCIsImlkeCIsIlBPU0lUSVZFX0lORklOSVRZIiwibWluSW5kZXgiLCJtYXhSb3dJbmRleCIsIm1pblJvdyIsIm1pblJvd0luZGV4IiwibWF4Q29sdW1uIiwibWF4Q29sdW1uSW5kZXgiLCJtaW5Db2x1bW4iLCJtaW5Db2x1bW5JbmRleCIsImRpYWciLCJub3JtIiwidHlwZSIsImN1bXVsYXRpdmVTdW0iLCJzdW0iLCJkb3QiLCJ2ZWN0b3IyIiwidmVjdG9yMSIsIm1tdWwiLCJCY29saiIsInN0cmFzc2VuMngyIiwiYTExIiwiYjExIiwiYTEyIiwiYjEyIiwiYTIxIiwiYjIxIiwiYTIyIiwiYjIyIiwibTEiLCJtMiIsIm0zIiwibTQiLCJtNSIsImMwMCIsImMwMSIsImMxMCIsImMxMSIsInN0cmFzc2VuM3gzIiwiYTAwIiwiYTAxIiwiYTAyIiwiYTEwIiwiYTIwIiwiYjAwIiwiYjAxIiwiYjAyIiwiYjEwIiwiYjIwIiwibTYiLCJtNyIsIm04IiwibTkiLCJtMTIiLCJtMTMiLCJtMTQiLCJtMTUiLCJtMTYiLCJtMTciLCJtMTgiLCJjMDIiLCJjMTIiLCJjMjAiLCJjMjEiLCJjMjIiLCJtbXVsU3RyYXNzZW4iLCJyMSIsImMxIiwicjIiLCJjMiIsIm1hdCIsImNvbHMiLCJyZXN1bHRhdCIsIndhcm4iLCJibG9ja011bHQiLCJoYWxmUm93cyIsInBhcnNlSW50IiwiaGFsZkNvbHMiLCJzdWJNYXRyaXgiLCJhZGQiLCJzdWIiLCJzY2FsZVJvd3MiLCJpc0Zpbml0ZSIsInNjYWxlQ29sdW1ucyIsImZsaXBSb3dzIiwibWlkZGxlIiwiY2VpbCIsImZpcnN0IiwibGFzdCIsImZsaXBDb2x1bW5zIiwia3JvbmVja2VyUHJvZHVjdCIsImtyb25lY2tlclN1bSIsIkF4SSIsImV5ZSIsIkl4QiIsInNvcnRSb3dzIiwiY29tcGFyZUZ1bmN0aW9uIiwiY29tcGFyZU51bWJlcnMiLCJzb3J0Iiwic29ydENvbHVtbnMiLCJzdWJNYXRyaXhSb3ciLCJpbmRpY2VzIiwic3ViTWF0cml4Q29sdW1uIiwic2VsZWN0aW9uIiwicm93SW5kaWNlcyIsImNvbHVtbkluZGljZXMiLCJjaGVja1Jvd0luZGljZXMiLCJjaGVja0NvbHVtbkluZGljZXMiLCJyb3dJbmRleCIsImNvbHVtbkluZGV4IiwidHJhY2UiLCJzdW1CeVJvdyIsInN1bUJ5Q29sdW1uIiwic3VtQWxsIiwicHJvZHVjdCIsInByb2R1Y3RCeVJvdyIsInByb2R1Y3RCeUNvbHVtbiIsInByb2R1Y3RBbGwiLCJtZWFuIiwidmFyaWFuY2UiLCJ1bmJpYXNlZCIsInN1bTEiLCJzdW0yIiwidmFyaWFuY2VCeVJvdyIsInZhcmlhbmNlQnlDb2x1bW4iLCJ2YXJpYW5jZUFsbCIsInN0YW5kYXJkRGV2aWF0aW9uIiwiY2VudGVyIiwiY2VudGVyQnlSb3ciLCJjZW50ZXJCeUNvbHVtbiIsImNlbnRlckFsbCIsInBvdyIsImdldFNjYWxlQnlSb3ciLCJzY2FsZUJ5Um93IiwiZ2V0U2NhbGVCeUNvbHVtbiIsInNjYWxlQnlDb2x1bW4iLCJkaXZpZGVyIiwiZ2V0U2NhbGVBbGwiLCJzY2FsZUFsbCIsIlN5bWJvbCIsImZvciIsInJhbmQiLCJyYW5kb21JbnQiLCJyYW5kSW50IiwiZGlhZ29uYWwiLCJpZGVudGl0eSIsIm5lZ2F0ZSIsInRlbnNvclByb2R1Y3QiLCJuUm93cyIsIm5Db2x1bW5zIiwiYXJyYXlEYXRhIiwiZXZlcnkiLCJlbGVtZW50IiwicmVtb3ZlUm93Iiwic3BsaWNlIiwiYWRkUm93IiwicmVtb3ZlQ29sdW1uIiwibmV3Um93IiwiYWRkQ29sdW1uIiwiYWRkUyIsImFkZE0iLCJzdWJTIiwic3ViTSIsInN1YnRyYWN0Iiwic3VidHJhY3RTIiwic3VidHJhY3RNIiwibXVsIiwibXVsTSIsIm11bHRpcGx5IiwibXVsdGlwbHlTIiwibXVsdGlwbHlNIiwiZGl2IiwiZGl2UyIsImRpdk0iLCJkaXZpZGUiLCJkaXZpZGVTIiwiZGl2aWRlTSIsIm1vZCIsIm1vZFMiLCJtb2RNIiwibW9kdWx1cyIsIm1vZHVsdXNTIiwibW9kdWx1c00iLCJhbmRTIiwiYW5kTSIsIm9yUyIsIm9yTSIsInhvclMiLCJ4b3JNIiwibGVmdFNoaWZ0IiwibGVmdFNoaWZ0UyIsImxlZnRTaGlmdE0iLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0Iiwic2lnblByb3BhZ2F0aW5nUmlnaHRTaGlmdFMiLCJzaWduUHJvcGFnYXRpbmdSaWdodFNoaWZ0TSIsInJpZ2h0U2hpZnQiLCJyaWdodFNoaWZ0UyIsInJpZ2h0U2hpZnRNIiwiemVyb0ZpbGxSaWdodFNoaWZ0IiwiemVyb0ZpbGxSaWdodFNoaWZ0UyIsInplcm9GaWxsUmlnaHRTaGlmdE0iLCJhY29zIiwiYWNvc2giLCJhc2luIiwiYXNpbmgiLCJhdGFuIiwiYXRhbmgiLCJjYnJ0IiwiY2x6MzIiLCJjb3MiLCJjb3NoIiwiZXhwbTEiLCJmcm91bmQiLCJsb2cxcCIsImxvZzEwIiwibG9nMiIsInNpbiIsInNpbmgiLCJ0YW4iLCJ0YW5oIiwidHJ1bmMiLCJhcmcwIiwicG93UyIsInBvd00iLCJpbnN0YWxsTWF0aE9wZXJhdGlvbnMiLCJXcmFwcGVyTWF0cml4MkQiLCJMdURlY29tcG9zaXRpb24iLCJ0IiwiTFVjb2xqIiwia21heCIsImx1IiwicGl2b3RWZWN0b3IiLCJwaXZvdFNpZ24iLCJMVSIsImlzU2luZ3VsYXIiLCJjb2wiLCJzb2x2ZSIsImRldGVybWluYW50IiwibG93ZXJUcmlhbmd1bGFyTWF0cml4IiwidXBwZXJUcmlhbmd1bGFyTWF0cml4IiwicGl2b3RQZXJtdXRhdGlvblZlY3RvciIsImh5cG90ZW51c2UiLCJRckRlY29tcG9zaXRpb24iLCJxciIsInJkaWFnIiwibnJtIiwiUVIiLCJSZGlhZyIsImlzRnVsbFJhbmsiLCJvcnRob2dvbmFsTWF0cml4IiwiU2luZ3VsYXJWYWx1ZURlY29tcG9zaXRpb24iLCJjb21wdXRlTGVmdFNpbmd1bGFyVmVjdG9ycyIsImNvbXB1dGVSaWdodFNpbmd1bGFyVmVjdG9ycyIsImF1dG9UcmFuc3Bvc2UiLCJ3YW50dSIsIkJvb2xlYW4iLCJ3YW50diIsInN3YXBwZWQiLCJhdXgiLCJudSIsIm5pIiwiVSIsIlYiLCJ3b3JrIiwic2kiLCJuY3QiLCJucnQiLCJtcmMiLCJwcCIsImVwcyIsIkVQU0lMT04iLCJrYXNlIiwiYWxwaGEiLCJrcyIsImYiLCJjcyIsInNuIiwic3AiLCJzcG0xIiwiZXBtMSIsInNrIiwiZWsiLCJzaGlmdCIsImciLCJ0aHJlc2hvbGQiLCJzY29scyIsIkxzIiwicmlnaHRTaW5ndWxhclZlY3RvcnMiLCJWTCIsInZyb3dzIiwidXJvd3MiLCJWTFUiLCJzb2x2ZUZvckRpYWdvbmFsIiwiaW52ZXJzZSIsInZjb2xzIiwidWNvbHMiLCJub3JtMiIsInJhbmsiLCJpaSIsImxlZnRTaW5ndWxhclZlY3RvcnMiLCJkaWFnb25hbE1hdHJpeCIsInBhcmFtcyIsImRhbXBpbmciLCJncmFkaWVudERpZmZlcmVuY2UiLCJldmFsdWF0ZWREYXRhIiwiZ3JhZGllbnRGdW5jIiwicGFyYW1GdW5jdGlvbiIsInBhcmFtIiwiYXV4UGFyYW1zIiwiZnVuY1BhcmFtIiwicG9pbnQiLCJncmFkaWVudEZ1bmN0aW9uIiwibWF0cml4RnVuYyIsIm1hdHJpeEZ1bmN0aW9uIiwiaW52ZXJzZU1hdHJpeCIsInVzZVNWRCIsImxlZnRIYW5kU2lkZSIsInJpZ2h0SGFuZFNpZGUiLCJsZXZlbmJlcmdNYXJxdWFyZHQiLCJtYXhJdGVyYXRpb25zIiwiZXJyb3JUb2xlcmFuY2UiLCJtaW5WYWx1ZXMiLCJtYXhWYWx1ZXMiLCJpbml0aWFsVmFsdWVzIiwicGFyTGVuIiwiTUFYX1NBRkVfSU5URUdFUiIsIk1JTl9TQUZFX0lOVEVHRVIiLCJpdGVyYXRpb24iLCJjb252ZXJnZWQiLCJwYXJhbWV0ZXJWYWx1ZXMiLCJwYXJhbWV0ZXJFcnJvciIsIl9faW1wb3J0U3RhciIsIl9fZXNNb2R1bGUiLCJ1dGlscyIsIm1ha2VIZWFwIiwiblBvaW50cyIsIm1ha2VBcnJheXMiLCJmaWxsVmFsdWUiLCJlbXB0eSIsImZpbGxlZCIsImhlYXAiLCJoZWFwUHVzaCIsIndlaWdodCIsIndlaWdodHMiLCJ1bmNoZWNrZWRIZWFwUHVzaCIsImlzTmV3IiwiaVN3YXAiLCJpYzEiLCJpYzIiLCJoZWFwU2hhcGUyIiwic2lmdERvd24iLCJoZWFwMSIsImhlYXAyIiwiY2VpbGluZyIsImVsdCIsImxlZnRDaGlsZCIsInJpZ2h0Q2hpbGQiLCJzd2FwIiwidGVtcDEiLCJ0ZW1wMiIsInJlamVjdGlvblNhbXBsZSIsIm5TYW1wbGVzIiwicG9vbFNpemUiLCJyZWplY3RTYW1wbGUiLCJ0YXVSYW5kSW50IiwiYnJva2VuIiwiYnVpbGRDYW5kaWRhdGVzIiwiY3VycmVudEdyYXBoIiwiblZlcnRpY2VzIiwibWF4Q2FuZGlkYXRlcyIsImNhbmRpZGF0ZU5laWdoYm9ycyIsImlzbiIsInRhdVJhbmQiLCJkZWhlYXBTb3J0IiwiaW5kSGVhcCIsImRpc3RIZWFwIiwiaW5kSGVhcEluZGV4IiwiZGlzdEhlYXBJbmRleCIsInNtYWxsZXN0RmxhZ2dlZCIsImluZCIsIm1pbkRpc3QiLCJyZXN1bHRJbmRleCIsInVtYXBfMSIsIlVNQVAiLCJfX3JlYWQiLCJvIiwiaXRlcmF0b3IiLCJhciIsIl9fdmFsdWVzIiwiU3BhcnNlTWF0cml4IiwiZGltcyIsImVudHJpZXMiLCJNYXAiLCJuQ29scyIsImNoZWNrRGltcyIsIm1ha2VLZXkiLCJoYXMiLCJnZXRBbGwiLCJvcmRlcmVkIiwicm93Q29sVmFsdWVzIiwiZ2V0RGltcyIsImdldFJvd3MiLCJnZXRDb2xzIiwiZ2V0VmFsdWVzIiwiZm4iLCJ2YWxzIiwidG9BcnJheSIsIl90aGlzIiwicGFpcndpc2VNdWx0aXBseSIsImVsZW1lbnRXaXNlIiwibWF4aW11bSIsIm11bHRpcGx5U2NhbGFyIiwic2NhbGFyIiwiZWxpbWluYXRlWmVyb3MiLCJ6ZXJvSW5kaWNlcyIsIlNldCIsInJlbW92ZUJ5WmVyb0luZGV4IiwibmV4dFZhbHVlcyIsImZpbHRlciIsIm5leHRSb3dzIiwibmV4dENvbHMiLCJub3JtYWxpemUiLCJub3JtVHlwZSIsImVfMSIsIm5vcm1GbiIsIm5vcm1GbnMiLCJjb2xzQnlSb3ciLCJuZXh0TWF0cml4IiwiX2xvb3BfMSIsImVfMV8xIiwicmV0dXJuIiwieHMiLCJvcCIsInZpc2l0ZWQiLCJvcGVyYXRlIiwibmV4dFZhbHVlIiwidmFsdWVzQSIsInJvd3NBIiwiY29sc0EiLCJ2YWx1ZXNCIiwicm93c0IiLCJjb2xzQiIsImdldENTUiIsImluZHB0ciIsImN1cnJlbnRSb3ciLCJ0cmVlIiwibWFrZU5ORGVzY2VudCIsImxlYWZBcnJheSIsIm5JdGVycyIsImRlbHRhIiwicmhvIiwicnBUcmVlSW5pdCIsImNqIiwiY2siLCJtYWtlSW5pdGlhbGl6YXRpb25zIiwiaW5pdEZyb21SYW5kb20iLCJxdWVyeVBvaW50cyIsIl9oZWFwIiwiaW5pdEZyb21UcmVlIiwiX3RyZWUiLCJzZWFyY2hGbGF0VHJlZSIsIm1ha2VJbml0aWFsaXplZE5OU2VhcmNoIiwiZ3JhcGgiLCJpbml0aWFsaXphdGlvbiIsInRyaWVkIiwidmVydGV4IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZXNfMSIsImNhbmRpZGF0ZXNfMV8xIiwiY2FuZGlkYXRlIiwiaW5pdGlhbGl6ZVNlYXJjaCIsImZvcmVzdCIsImVfMiIsInJlc3VsdHMiLCJmb3Jlc3RfMSIsImZvcmVzdF8xXzEiLCJlXzJfMSIsIl9fc3ByZWFkIiwiY29uY2F0IiwiRmxhdFRyZWUiLCJoeXBlcnBsYW5lcyIsIm9mZnNldHMiLCJjaGlsZHJlbiIsIm1ha2VFdWNsaWRlYW5UcmVlIiwibGVhZlNpemUiLCJzcGxpdFJlc3VsdHMiLCJsZWZ0SW5kZXgiLCJyaWdodEluZGV4IiwibGVmdCIsInJpZ2h0IiwiaHlwZXJwbGFuZU9mZnNldCIsImh5cGVycGxhbmVWZWN0b3IiLCJuTGVmdCIsIm5SaWdodCIsInNpZGUiLCJtYXJnaW4iLCJpbmRpY2VzTGVmdCIsImluZGljZXNSaWdodCIsImh5cGVycGxhbmUiLCJvZmZzZXQiLCJldWNsaWRlYW5SYW5kb21Qcm9qZWN0aW9uU3BsaXQiLCJpc0xlYWYiLCJyZWN1cnNpdmVGbGF0dGVuIiwibm9kZU51bSIsImxlYWZOdW0iLCJvbGROb2RlTnVtIiwicmVzIiwibnVtTm9kZXMiLCJudW1MZWF2ZXMiLCJzZWxlY3RTaWRlIiwibWFrZUZvcmVzdCIsIm5UcmVlcyIsIm1ha2VUcmVlIiwibk5vZGVzIiwibkxlYXZlcyIsImZsYXR0ZW5UcmVlIiwibWFrZUxlYWZBcnJheSIsInJwRm9yZXN0IiwicnBGb3Jlc3RfMSIsInJwRm9yZXN0XzFfMSIsIm5vZGUiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwicmVqZWN0ZWQiLCJ0aGVuIiwiX19nZW5lcmF0b3IiLCJib2R5IiwibGFiZWwiLCJzZW50IiwidHJ5cyIsIm9wcyIsInZlcmIiLCJwb3AiLCJfX2ltcG9ydERlZmF1bHQiLCJubkRlc2NlbnQiLCJtbF9sZXZlbmJlcmdfbWFycXVhcmR0XzEiLCJTTU9PVEhfS19UT0xFUkFOQ0UiLCJNSU5fS19ESVNUX1NDQUxFIiwibGVhcm5pbmdSYXRlIiwibG9jYWxDb25uZWN0aXZpdHkiLCJuQ29tcG9uZW50cyIsIm5lZ2F0aXZlU2FtcGxlUmF0ZSIsInJlcHVsc2lvblN0cmVuZ3RoIiwic2V0T3BNaXhSYXRpbyIsInNwcmVhZCIsInRyYW5zZm9ybVF1ZXVlU2l6ZSIsInRhcmdldE1ldHJpYyIsInRhcmdldFdlaWdodCIsInRhcmdldE5OZWlnaGJvcnMiLCJldWNsaWRlYW4iLCJpc0luaXRpYWxpemVkIiwib3B0aW1pemF0aW9uU3RhdGUiLCJPcHRpbWl6YXRpb25TdGF0ZSIsInNldFBhcmFtIiwiaW5pdGlhbGl6ZUZpdCIsIm9wdGltaXplTGF5b3V0IiwiZml0QXN5bmMiLCJvcHRpbWl6ZUxheW91dEFzeW5jIiwic2V0U3VwZXJ2aXNlZFByb2plY3Rpb24iLCJzZXRQcmVjb21wdXRlZEtOTiIsImtubkluZGljZXMiLCJrbm5EaXN0YW5jZXMiLCJnZXRORXBvY2hzIiwia25uUmVzdWx0cyIsIm5lYXJlc3ROZWlnaGJvcnMiLCJmdXp6eVNpbXBsaWNpYWxTZXQiLCJtYWtlU2VhcmNoRm5zIiwic2VhcmNoR3JhcGgiLCJtYWtlU2VhcmNoR3JhcGgiLCJwcm9jZXNzR3JhcGhGb3JTdXBlcnZpc2VkUHJvamVjdGlvbiIsImluaXRpYWxpemVTaW1wbGljaWFsU2V0RW1iZWRkaW5nIiwiaGVhZCIsInRhaWwiLCJlcG9jaHNQZXJTYW1wbGUiLCJpbml0aWFsaXplT3B0aW1pemF0aW9uIiwicHJlcGFyZUZvck9wdGltaXphdGlvbkxvb3AiLCJzZWFyY2giLCJrbm4iLCJkaXN0YW5jZXMiLCJuZWlnaGJvciIsInRvVHJhbnNmb3JtIiwicmF3RGF0YSIsImFkanVzdGVkTG9jYWxDb25uZWN0aXZpdHkiLCJzbW9vdGhLTk5EaXN0YW5jZSIsInNpZ21hcyIsInJob3MiLCJjb21wdXRlTWVtYmVyc2hpcFN0cmVuZ3RocyIsIm5vcm1lZCIsImNzck1hdHJpeCIsImluaXRUcmFuc2Zvcm0iLCJyZXNoYXBlMmQiLCJncmFwaE1heCIsIm1ha2VFcG9jaHNQZXJTYW1wbGUiLCJhc3NpZ25PcHRpbWl6YXRpb25TdGF0ZVBhcmFtZXRlcnMiLCJoZWFkRW1iZWRkaW5nIiwidGFpbEVtYmVkZGluZyIsImN1cnJlbnRFcG9jaCIsImZhckRpc3QiLCJjYXRlZ29yaWNhbFNpbXBsaWNpYWxTZXRJbnRlcnNlY3Rpb24iLCJvcHRpbWl6ZUxheW91dFN0ZXAiLCJnZXRFbWJlZGRpbmciLCJtZXRyaWNOTkRlc2NlbnQiLCJzcGFyc2VNYXRyaXgiLCJwcm9kTWF0cml4Iiwic2ltcGxpY2lhbFNldCIsInRhcmdldCIsInVua25vd25EaXN0IiwiaW50ZXJzZWN0aW9uIiwiZmFzdEludGVyc2VjdGlvbiIsInJlc2V0TG9jYWxDb25uZWN0aXZpdHkiLCJuSXRlciIsImJhbmR3aWR0aCIsImxvIiwiaGkiLCJtaWQiLCJpdGhEaXN0YW5jZXMiLCJub25aZXJvRGlzdHMiLCJpbnRlcnBvbGF0aW9uIiwibWVhbkl0aERpc3RhbmNlcyIsIm1lYW5EaXN0YW5jZXMiLCJncmFwaFZhbHVlcyIsImVudHJ5IiwidyIsInN0YXRlIiwibW92ZU90aGVyIiwiZXBvY2hzUGVyTmVnYXRpdmVTYW1wbGUiLCJlcG9jaE9mTmV4dE5lZ2F0aXZlU2FtcGxlIiwiZXBvY2hPZk5leHRTYW1wbGUiLCJpbml0aWFsQWxwaGEiLCJnYW1tYSIsImZpbmRBQlBhcmFtcyIsImN1cnJlbnQiLCJkaXN0U3F1YXJlZCIsInJEaXN0IiwiZ3JhZENvZWZmIiwiZ3JhZEQiLCJjbGlwIiwibk5lZ1NhbXBsZXMiLCJrXzEiLCJvdGhlcl8xIiwiZGlzdFNxdWFyZWRfMSIsImdyYWRDb2VmZl8xIiwiZXBvY2hDYWxsYmFjayIsImVwb2NoQ29tcGxldGVkIiwic2hvdWxkU3RvcCIsImlzRmluaXNoZWQiLCJzZXRUaW1lb3V0IiwiZXJyIiwiY29zaW5lIiwibm9ybVgiLCJub3JtWSIsImNsaXBWYWx1ZSIsInh2IiwibGluZWFyIiwieXYiLCJkZWZhdWx0IiwieiIsInZlYyIsInZlY18xIiwidmVjXzFfMSIsIml0ZW0iLCJvbmVzIiwibWF4MmQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJjaHVua0lkcyIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiZGVmaW5pdGlvbiIsImNodW5rSWQiLCJhbGwiLCJwcm9taXNlcyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsInByb3AiLCJ0b1N0cmluZ1RhZyIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsIm1vcmVNb2R1bGVzIiwicnVudGltZSJdLCJzb3VyY2VSb290IjoiIn0=